Skip to content

No.165 · Sidebars

Workspace Sidebar

A SaaS app sidebar where one active indicator travels through the tree — down the list, into a sub-section and back out — so you can see where you moved from, not just where you are.

The prompt

The design brief behind this component — reuse it to regenerate, remix, or explain it.

Build a dark SaaS app sidebar (Linear-like density: 32px rows, 13px Geist). A workspace switcher sits on top; below, a nav with Inbox / My issues / Reviews (with mono counts), an expandable 'Projects' section with nested items on a thin thread, and a Favourites group with coloured squares; the account and a ⌘, hint sit at the bottom. One indicator — a soft 6% white pill with a 2px accent tick on its left — marks the active row. It is absolutely positioned from the active row's measured rect (top, height and left inset relative to the nav), and those three values transition over 420ms expo-out. So clicking from a top-level item into a nested project moves the indicator down and steps it inward; moving back out steps it outward again — you see where you came from. Sections open with grid-template-rows 0fr → 1fr and the chevron rotates; the indicator re-measures after the section settles.

Notes

Interaction
Click any row; expand or collapse Projects; the indicator travels between rows at any depth.
Motion
Indicator top/height/left 420ms expo-out; section fold 420ms; chevron 320ms.
Accessibility
An <aside> with a nav of real buttons; the active row has aria-current; the section header has aria-expanded. Reduced motion makes the indicator jump.
Responsive
15.5rem wide, full width on phones (under 480px); the nav scrolls inside.
On touch
Rows are full-width tap targets.

Featured

301 components