# Terminal Cursor Zoom
URL: https://remocn.dev/docs/ui-blocks/terminal-cursor-zoom

Camera locked to the typing cursor, dollying across a terminal as a command types at high zoom

- Install: `npx shadcn@latest add @remocn/terminal-cursor-zoom`
- Vibe: tech
- Natural length: 90f @ 30fps

## Installation

```bash
npx shadcn@latest add @remocn/terminal-cursor-zoom
```

## Usage

```tsx
// src/Root.tsx
import { Composition } from "remotion";
import { TerminalCursorZoom } from "@/components/remocn/terminal-cursor-zoom";

const TerminalCursorZoomScene = () => (
  <TerminalCursorZoom command="npx shadcn add @remocn/terminal-simulator" />
);

export const RemotionRoot = () => (
  <Composition
    id="TerminalCursorZoom"
    component={TerminalCursorZoomScene}
    durationInFrames={90}
    fps={30}
    width={1280}
    height={720}
  />
);
```

The camera reads `terminal-simulator`'s fixed layout to keep the cursor pinned, so it pairs with that component — `npx shadcn add @remocn/terminal-cursor-zoom` pulls it in automatically.

## Props

| Prop | Type | Default | Description |
|---|---|---|---|
| `command` | `string` | `"npx shadcn add @remocn/terminal-cursor-zoom"` | The single command line typed out and tracked by the camera |
| `zoom` | `number` | `2.8` | Camera scale while the cursor is pinned to screen center |
| `fontSize` | `number` | `20` | Monospace font size in pixels; the cursor geometry is derived from it |
| `prompt` | `string` | `"$"` | Prompt prefix shown before the command |
| `title` | `string` | `"~/code/remocn-demo"` | Title shown in the terminal window chrome |
| `charsPerFrame` | `number` | `1` | Typing speed passed through to the terminal; the camera mirrors it exactly |
| `chunkSize` | `number` | `1` | Characters revealed per step; the camera snaps to the same chunking |
| `speed` | `number` | `1` | Playback multiplier applied to both the typing and the camera |
| `className` | `string` | — | Optional className passed to the outer container |

## Use when
- One install command is the whole beat and it must stay legible in a vertical or small-screen crop — the camera holds the cursor at frame center at 2.8× zoom.
- A short social clip needs kinetic energy from the typing itself rather than from a full terminal session.
- An install or CTA card should end on the command still under the cursor, with no output lines to distract from it.

## Don't use when
- The session has multiple lines, logs, or success output — use `terminal-simulator`; this component types exactly one command line and the camera never leaves it.
- The terminal window should stay statically framed — use `terminal-simulator` on its own, since this is only a camera rig around it.
- The content is source code in an editor rather than a shell command — use `glass-code-walk` for the same tracking camera over a code panel.