Prompt Bar
Prompt Bar
The composer for an AI thread: a full-height column at the reading start. What you type stands where your sent turn will appear · the thread peels leftward from it.
Chat composers dock to the bottom edge because horizontal turns stack downward. When turns are columns flowing right-to-left, where does the composer live · and can the input itself be vertical, when IME composition was designed for a horizontal baseline?
DecisionPut the composer where reading starts: a full-height column on the right edge, separated from the thread by a rule. The input inherits writing-mode, so typed text already stands in its final orientation; send, and the turn peels leftward into the thread. Vertically Chat ships the vertical input; the horizontal dock stays the conservative fallback (see Text Field).
Column composer
The composer is a full-height column at the reading start · type vertically (the field inherits writing-mode), press Enter or the send column, and the turn peels leftward into the thread. @ opens sources into the content area.
Horizontal fallback
The conservative fallback · composition stays horizontal in a bottom dock (IME candidate windows expect it), and the sent text re-orients as it enters the thread. The entry point sits off the reading axis.
Guidance
- Place the composer at the reading start · the right edge, where the next turn will appear
- Guard Enter with isComposing · the IME commit keystroke is not the send keystroke
- Keep the input font at 16px or larger so mobile browsers don't zoom the column
- Open the sources menu into the content area, leftward · never off-screen right
- Return focus to the input after send
- Dock the composer to the bottom by default · that edge belongs to horizontal stacking
- Send on Enter while composition is active · CJK input commits candidates with Enter
- Rotate a horizontal input with transform · caret, selection, and IME all break
Accessibility
The input carries an aria-label in the UI language and a visible focus treatment on its column. Enter sends only when isComposing is false. The sources trigger is aria-haspopup with aria-expanded, its items are menuitemradio, and focus returns to the input after send or menu close.
IME candidate windows over a vertical input still behave unevenly across browsers and platforms. Is the vertical input worth that risk at the single highest-traffic field in the interface, or should composition stay horizontal until support catches up?