Gallery

@ljoukov/chat

Overview Routes and render surfacesChat Live thread demoComposer Spark-style input shellInput Autosize textareaMarkdown Rich text renderingMessage Attachments and message partsTask card Run state cardThread Full transcript surface
  1. Gallery
  2. /
  3. Composer
Composer

Spark-style composer shells with attachments and action chrome.

The composer surface now follows Spark’s structure more closely: draft attachments live inside the shell, the leading control opens an attachment menu, and multiline growth stays predictable.

Draft states

The same shell handles a default attached draft and a multiline note without changing the component contract.

Attached draft
Ready attachments render above the field while the shell stays compact and send-ready.
Mocked screenshot attachment
PDF briefing-pack.pdf Client brief
Expanded draft
When the textarea grows, the action row drops below the field instead of stretching the shell.

Runtime states

Upload feedback and compact in-flight states stay within the same public component.

Upload feedback
Uploading and failed attachments keep retry and remove affordances inside the shell.
Mocked screenshot attachment
PDF scan-annotated.pdf Retry required
!
One image failed to upload. Retry or remove it before sending.
Compact spinner shell
The send control can collapse into a small in-flight affordance while the request is running.