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.main is scrolled so the navbar's scroll rule does not stack with it. SidebarSeparator adds the same subtle rule between content sections only when a footer is present; settings sidebars without a footer keep the 8px gap alone. Do not add padding around a Sidebar or its parts to push rows inward; the edge-to-icon distance is part of the component's rhythm and matches the earlier ui-core sidebar.
prefers-reduced-motion. Persist the preference per user when personalization is a product goal.