Components
New-message composition
Start a conversation without requiring a one-off recipient to become a saved person first.
On this page
Purpose and composition
Start a conversation without requiring a one-off recipient to become a saved person first.
Use for deliberate outreach; the initial sample recipient is a prototype default that should be reconsidered for production.
Anatomy
| Part | Responsibility |
|---|---|
| Envelope | From, To and optional copies |
| Subject | Required text |
| Body | Plain-text textarea |
| Metadata | Work type and assigned owner |
| Send | Local conversation creation |
Configuration and variants
| Input / variant | Contract |
|---|---|
| people | Known contacts; spam excluded from options |
| onCreate | Receives new typed Conversation |
| onBack | Return to inbox |
| defaults | Radarist sales inbox, Oliver recipient, Lena owner, Sales type |
States and feedback
| State | Visible / behavioral result |
|---|---|
| Empty draft | Send disabled |
| Valid draft | Sender, recipient, subject and body present |
| One-off | contactSnapshot generated |
| Attachment | Fixed partnership-overview.pdf metadata |
Interaction and responsive behavior
- Known person reused by ID; otherwise snapshot represents recipient.
- New conversation goes to waiting.
- Body splits on newline and removes blank lines.
- Draft timer is local, not saved persistence.
Accessibility contract
- Subject and Message have hidden labels.
- To chips remain individually removable.
- Sender callback validation requires a known inbox.
Known implementation limits
UI does not deliver a message or validate permissions. Do not claim upload, rich text or durable drafts.
Composition example
<NewMessageView people={people} onBack={back} onCreate={addLocalConversation} />Source references
| File | Responsibility |
|---|---|
| components/inbox/new-message-view.tsx | NewMessageView |
Examples from the app
Actual Sonarist components with fictional conversations, people, example.com addresses and simulated operational states. Captured at 2× resolution or higher. Select an image to inspect it full size.
Related topics
Source audit: 2026-10-08 · Revision 10f45d1377b5 · Documentation v1.0.0