# Input

Text field that types a value at a fixed characters-per-second rate on a "typing" step, independent of the step's own duration, with hover/active/blur/invalid states.

```bash
npx shadcn add https://www.reelcn.dev/r/input.json
```

Usage:

```tsx
<Center>
  <Input
    id="email"
    label="Work email"
    placeholder="you@company.com"
    steps={[{ at: 0, state: "idle" }, { at: 0.6, state: "active" }, { at: 0.8, state: "typing", type: "ada@hexhaus.dev" }]}
  />
</Center>
```

Use for:

- A sign-up or checkout field a cursor clicks into and types
- A `ui` scene's `component: "input"`

Avoid:

- A field that never receives focus. Use plain text

Dependencies:

- `remotion`


## Props

| Name | Type | Default | Description |
| --- | --- | --- | --- |
| delay? | `number` | — | Frames to wait before entering. |
| duration? | `number` | — | Enter duration in frames. Defaults to 0.6s. Some items reuse `duration` for an unrelated local timing. See that item's own prop docs. |
| exit? | `number \| boolean` | — | Exit at the end of the parent `<Sequence>`. `false` keeps it on screen, a number sets the exit length in frames. |
| motion? | `MotionPersonality` | — | Override the theme's motion personality. |
| poster? | `boolean` | — | Renders fully entered, with no exit: for a still frame or thumbnail. Defaults to `false`. |
| holdFrames? | `number` | — | Delays the start of the exit window by this many frames, for a minimum on-screen hold. Defaults to `0`. |
| id? | `string` | — |  |
| label? | `string` | — |  |
| steps? | `Step<InputState>[]` | — |  |
| value? | `string` | — | Static value shown outside a "typing" step (e.g. what's left after typing finishes, or a pre-filled `blur`/`invalid` demo). |
| placeholder? | `string` | — |  |
| place? | `Place` | — |  |
| style? | `CSSProperties` | — |  |
| className? | `string` | — |  |