ChatComposer (concierge)
Auto-growing chat input with a send button that morphs into a stop button while streaming.
components/molecules/concierge/ChatComposer.tsx
Props
| Prop | Type | Required | Description |
|---|---|---|---|
prompt | string | yes | Current input value |
setPrompt | (value: string) => void | yes | Updates the input |
isStreaming | boolean | yes | Swaps send → stop button |
canSend | boolean | yes | Enables the send button |
send | () => Promise<void> | yes | Sends the prompt |
stop | () => void | yes | Cancels the stream |
autoFocus | boolean | no | Focus the textarea on mount/open |
className | string | no | Extra classes for the wrapper |
Behavior
- Enter sends; Shift+Enter inserts a newline.
- Textarea grows with content up to ~160px, then scrolls.
- Wrapper border highlights teal on focus.