# AI Prompt Input · Pro

The composer of an AI product: a growing textarea, attachment chips that pop in, a model pill, and a send button that morphs into a stop square while the answer streams. Enter sends, Shift+Enter breaks a line.

This is a Charcoal UI Pro component. Its source and examples are available with a Pro seat: https://charcoalui.com/pricing

## With a Pro seat

1. Add the registry to components.json:

```json
{
  "registries": {
    "@charcoal": {
      "url": "https://charcoalui.com/r/{name}.json",
      "headers": {
        "Authorization": "Bearer ${CHARCOAL_LICENSE_KEY}"
      }
    }
  }
}
```

2. Copy your licence key from https://charcoalui.com/dashboard and put it in .env.local as CHARCOAL_LICENSE_KEY, then:

```bash
npx shadcn@latest add @charcoal/ai-prompt-input
```

To read Pro source through this MCP server, reconnect it with the header "Authorization: Bearer <licence key>".

## API — AI Prompt Input
| Prop | Type | Default | Notes |
| --- | --- | --- | --- |
| `value` | `string` | — |  |
| `defaultValue` | `string` | — |  |
| `onValueChange` | `(value: string) => void` | — |  |
| `onSubmit` | `(value: string, attachments) => void` | — |  |
| `onStop` | `() => void` | — |  |
| `generating` | `boolean` | `false` |  |
| `models` | `string[]` | — |  |
| `model` | `string` | — |  |
| `onModelChange` | `(model: string) => void` | — |  |
| `placeholder` | `string` | `"Ask anything…"` |  |
| `maxRows` | `number` | `6` |  |
| `attachments` | `{ id: string; name: string; kind?: string }[]` | — |  |
| `onAttach` | `() => void` | — |  |
| `onRemoveAttachment` | `(id: string) => void` | — |  |
| `className` | `string` | — |  |

See it live: https://charcoalui.com/docs/components/ai-prompt-input