Components
Chat composer
The prompt box: home, project, reply, code, incognito, pill and the phone dock, with the action row, submit cell, tray and chin.
Home
size="lg": 656 wide × 103 when empty (8 + 57 two-row editor at 15/21 + 30 for the 28px action row + 8). Surface #fff | #303030 with a constant composer ring (light: outer 1px black 12 %, dark: inset 1px white 8 %); hover never changes it, focus-within only deepens the drop shadow (3.5 → 7.5 %). Send (brand, 28) replaces voice once there is text.
Tray
Attachments sit in a tray at the bottom of the card (AttachmentGroup variant="composer"); a pasted or dropped file emits `files`. Attachments make the composer submittable.
Reply
The conversation composer: one 28px row (card 768 × 44) with + at the start and dictate (44 × 28) + send at the end from a 768px viewport, stacked below. The chin under the card (48) holds the disclaimer (13/17 secondary) and the 24px model selector.
Code and pill
code: a 28px control row (card 44), 14/20 text, a ghost return-key send that only exists with text. pill: the settings memory field, radius 24 with a .5px border and a round brand send. Both sit on the popover surface.
Keyboard and events
Enter submits on fine pointers (a newline on touch), Shift+Enter inserts a newline, Enter during IME composition is ignored, Escape stops a running response. Clicking empty card padding focuses the input.
- Submit, stop or paste a file in a composer above…