PromptInput

The composer: auto-growing textarea, attachments by picker/paste/drop, model picker, and a submit that follows ChatStatus (send → spinner → stop → retry). PromptInputPresets fills it from a chip, PromptInputAnswering names the question being answered, PromptInputHint says one quiet line above it.

Playground

The send control follows status: send → spinner → stop → retry.

<PromptInput
  value={value}
  onValueChange={setValue}
  onSubmit={send}
  onStop={stop}
  placeholder="Ask about anyone you know…"
/>

Compound

Attachments by picker, paste, or drop; a model picker; a mic slot.

<PromptInput
  value={value}
  onValueChange={setValue}
  onSubmit={send}
  accept="image/*,.pdf"
>
  <PromptInputAttachments />
  <PromptInputTextarea />
  <PromptInputToolbar>
    <PromptInputTools>
      <PromptInputActionAddAttachments />
      <PromptInputButton label="Dictate"><MicIcon /></PromptInputButton>
      <PromptInputModelSelect
        models={MODELS}
        value={model}
        onChange={setModel}
      />
    </PromptInputTools>
    <PromptInputSubmit />
  </PromptInputToolbar>
</PromptInput>