Patterns
Work across companies and products
Choose the work context without mistaking presentation scope for authorization.
On this page
User goal
Choose the work context without mistaking presentation scope for authorization.
Workflow
| Step | Expected behavior |
|---|---|
| 1 | Open the centered Sonarist navigation trigger. |
| 2 | Choose a primary view or Unified inbox. |
| 3 | Choose a company or its nested product when a narrower queue is needed. |
| 4 | Scope selection opens that scope in Needs reply; it does not retain the previous queue. |
| 5 | Read the scope label and queue count before acting. |
Decision and composition rules
- Hierarchy is workspace > company > product > inbox.
- Conversation scope resolves through inbox/product/company helpers.
- Needs-attention counts include pending screening and needs reply.
Edge cases and recovery
- Unknown scoped IDs currently fall back to unified context in the client route reader.
- Server route shape validation is not record existence or authorization validation.
- Future authenticated endpoints must supply authorized records before rendering.
Persistence boundary
The demonstrated frontend uses local React state or static fixtures. Read the readiness topic before connecting these actions to authenticated persistence. A visible toast, badge or timer is not a server acknowledgement.
Source references
| File | Responsibility |
|---|---|
| components/app-header.tsx | Navigation hierarchy |
| lib/routes.ts | Route composition |
| components/helpdesk-app.tsx | Scope route parsing |
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