Usage
Sidebar is the persistent navigation column for desktop-class operator consoles. It encodes the product's information architecture into an always-visible column with grouped items, active-state highlighting, optional nested groups, and a footer slot for user/status affordances. Dispatch relies on it for the top-level jump between Incidents, Chats, QA, and Supervisor tools; the docs app uses the same family for the components/blocks tree. The mental model is "the table of contents for the app": stable, scannable, and muscle-memorable. If users have to hunt for a core module, the sidebar has failed its job.
Tabs or TabNav. The sidebar is for app-wide navigation; tabs live inside a single module.
| Axis | Values | When to pick it |
|---|---|---|
| Density | Expanded, collapsed | Expanded by default on wide viewports; collapsed persists per user when the product supports personalization |
| Grouping | Flat, with labels, with nested groups | Labels earn their weight at ~5 items; nested groups stay under three levels without designer review |
| Footer slot | None, user menu, status widgets | Used sparingly; a crowded footer competes with the module list |
Provider that manages collapse state, a Header for product identity, scrollable Content with Groups of Items (optionally nested), and a Footer for the user menu or operator status. Each item pairs an icon and a label; icons alone require tooltip or aria-label support. Keep labels short, sentence-case, and parallel across groups—operators should feel a rhythm when scanning.
formatMessage. Match the vocabulary used in breadcrumbs and page titles.prefers-reduced-motion. Persist the preference per user when personalization is a product goal.