
Search by name, tag, category or type
Source and install need .
pnpm dlx shadcn@latest add @assembli/mail-chatA chat with your mailbox, built from Assembli's chat parts. Replies carry more than prose: answers cited to the emails they came from, plans to approve, tool-call logs and decision cards with drafts ready to send. Agents can speak in the thread too. a tray composer that picks who a message is for, suggestion chips, scroll pinning, and chatToMarkdown for agents.
Other props pass through to the root element.
turns*
ChatTurn[]
agents
MailAgent[]
Default DEFAULT_AGENTS
assistantName
string
Default "Tidings"
assistantAvatar
string
Default ASSISTANT_MARK
Image for the assistant's avatar. Defaults to the Tidings mark.
actorName
string
Default "Ines Moreau"
The person chatting, for actor on emitted actions.
onSend
(message: ChatMessage) => void
A message from the composer or a suggestion.
onAction
(action: MailAction) => void
Everything else: decision actions (decide, later, hand_off, steer, open, undo), approve_plan ({ steps }), revise_plan ({ note }) and your own actions part ids, each with `ids: [part…
onSteer
(decision: Decision, optionId: string, instruction: string, draft: string) => s…
Rewrites a decision's draft from a one-line instruction.
onShowContext
(decisionId: string) => void
Adds a Context button to decision cards.
recipients
TrayModel[]
Who a message can go to, in the composer's picker. Defaults to the assistant, then each agent.
shortcuts
TrayShortcut[]
Toggles in the composer's tray, e.g. "Plan first". Active ones come back on the message.
trailing
TrayComposerProps["trailing"]
An action pinned to the right of the tray.
placeholder
string
Default "Ask about your mail, or hand Tidings a job"
onVoice
() => void
suggestions
Suggestion[]
Chips above the composer.
empty
{ greeting: React.ReactNode; suggestions: PromptSuggestion[] }
Shown before the first turn.
disclaimer
React.ReactNode
A quiet line under the composer.
header
React.ReactNode
Above the transcript, e.g. a title bar.
| Description | |||
|---|---|---|---|
| turns* | ChatTurn[] | – | |
| agents | MailAgent[] | DEFAULT_AGENTS | |
| assistantName | string | "Tidings" | |
| assistantAvatar | string | ASSISTANT_MARK | Image for the assistant's avatar. Defaults to the Tidings mark. |
| actorName | string | "Ines Moreau" | The person chatting, for |
| onSend | (message: ChatMessage) => void | – | A message from the composer or a suggestion. |
| onAction | (action: MailAction) => void | – | Everything else: decision actions ( |
| onSteer | (decision: Decision, optionId: string, instruction: string, draft: string) => s… | – | Rewrites a decision's draft from a one-line instruction. |
| onShowContext | (decisionId: string) => void | – | Adds a Context button to decision cards. |
| recipients | TrayModel[] | – | Who a message can go to, in the composer's picker. Defaults to the assistant, then each agent. |
| shortcuts | TrayShortcut[] | – | Toggles in the composer's tray, e.g. "Plan first". Active ones come back on the message. |
| trailing | TrayComposerProps["trailing"] | – | An action pinned to the right of the tray. |
| placeholder | string | "Ask about your mail, or hand Tidings a job" | |
| onVoice | () => void | – | |
| suggestions | Suggestion[] | – | Chips above the composer. |
| empty | { greeting: React.ReactNode; suggestions: PromptSuggestion[] } | – | Shown before the first turn. |
| disclaimer | React.ReactNode | – | A quiet line under the composer. |
| header | React.ReactNode | – | Above the transcript, e.g. a title bar. |




Landing pages · AI products