sidebar
a ship's own nav, on its deep ground. the ground keeps the page's mode, and whatever prints on it reads in the dark palette in both.
bunx --bun shadcn@latest add @mk/sidebaron the ground
orbit’s nav: its pages with the board current, then its latest runs. the current page is boxed in the house ink with its 8 px square, the way this site’s own nav marks it.
the ground is a dark grey in light and close to black in dark. glyphs, badges, rules and rows on it take the dark palette in both, so a status keeps the same ink whatever mode the page is in.
states
a row lightens on hover and takes the 2 px ring outside it on keyboard focus. the current row is boxed; a disabled one prints at half.
parts
the names and props are shadcn’s, from base-nova. a sidebar inside a page passes className="min-h-0" to its provider, which otherwise holds a full viewport’s height.
SidebarProvider- holds whether the sidebar is open, and toggles it on
ctrl borcmd b. Sidebar- the column. by default it slides off the canvas when closed and opens as a sheet on a phone;
collapsible="none"keeps it in place, as here. SidebarHeader- the top, above
SidebarContent, which scrolls, andSidebarFooterat the foot. SidebarGroup- a run of rows, with an optional
SidebarGroupLabel. SidebarMenuButton- a row, inside
SidebarMenuandSidebarMenuItem.isActiveboxes the current one;render={<a href="/board" />}makes it a link. SidebarMenuBadge- a count at the end of a row.
SidebarSeparator- a rule on the ground.
SidebarTrigger- the button that opens and closes it, for the page beside it in
SidebarInset.