Chat composer
The box people type into to ask Sage or start building. Output and model choices inside it, build options in a tray below.
<div className="composer"> {/* grey frame */}
<div className="composer__box"> {/* white box */}
<textarea placeholder="Ask anything…" />
<div className="composer__row">
<Button variant="ghost" icon={Paperclip} aria-label="Attach files" />
<ComposerMenu label="Output" value={output} options={OUTPUTS} onChange={setOutput} />
<ModelModeMenu value={mode} onChange={setMode} />
<button className="composer__send" aria-label="Send" disabled={!text.trim()}>
<ArrowUp size={18} weight="bold" />
</button>
</div>
</div>
<div className="composer__tray"> {/* build options */}
<Button variant="ghost">Design system <b>Meridian</b></Button>
</div>
</div>Anatomy
- White box: the text field, attach, what to make (Output), the model, and send. Nothing else.
- Grey tray: options that shape what gets built, such as template, format, style and design system. It changes with the Output choice.
- Send: a round primary button, grey and disabled until there is text.
Behaviour
- Enter sends; Shift and Enter adds a new line.
- The placeholder describes the current Output ("Describe the page you want…").
- Attached files appear as chips above the text, each with a remove button.
- The model choice is remembered for the next visit.
Prompts under the composer
Starter prompts sit under the composer as pills, at most two rows. Each pill names a specific thing to build ("Demo page for the Q4 campaign"), with an icon for its type in the brand blue.