Sonarist project

Sonarist / Design system

Documentation v1.0.0 · Work in progress · UI prototype with separate server foundations

Design system contents

Components

Queue selector

Switch conversation lifecycle views while retaining product scope.

On this page

Purpose and composition

Switch conversation lifecycle views while retaining product scope.

Use for queues; Reference is a primary navigation view and is excluded from the current queue choices.

Anatomy

Anatomy
PartResponsibility
SummaryActive icon, label, count and chevron
PopupSource links for each queue
SelectionContrasting active item

Configuration and variants

Configuration and variants
Input / variantContract
itemsid, label, icon, href, count
activeIdConversationState; missing active falls back to first
Empty itemsNo menu rendered

States and feedback

States and feedback
StateVisible / behavioral result
CollapsedCurrent queue/count
OpenAbsolute popup 8px below trigger
Active linkaria-current page
NavigationCloses details before route change

Interaction and responsive behavior

  • Native details/summary provides toggle behavior.
  • Outside pointerdown and Escape close the popup.
  • Preserve trigger and popup in one screenshot crop.
  • Links use scroll=false.

Accessibility contract

  • Summary needs visible active label.
  • Links expose the current page.
  • Escape closes but this component does not explicitly restore focus.

Known implementation limits

It is a disclosure of navigation links, not a role=menu with roving focus.

Composition example

<QueueMenu items={queueItems} activeId="needs-reply" />

Source references

Source references
FileResponsibility
components/inbox/queue-menu.tsxQueueMenu
lib/routes.tsScope-preserving paths

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.

Queue Menu · Component detail · Light · Desktop · Open · 552 × 612 px

Source audit: 2026-10-08 · Revision 10f45d1377b5 · Documentation v1.0.0