Sidebars · shadcn radix-luma Sidebar prototype

Every version is a variant the official Sidebar component ships; rows, group labels, sub-lists and the footer use the official metrics at a 14px root (row 31.5 / sub row 28 / radius 10.5 / icon 16). D (shipped) drops the page to the deep tone and floats all three columns as cards. B makes the rails the same borderless white raised card as the input box (--bg-input + shadow-raised, 7px gutter, 14px corners); A keeps the current deeper cream + hairline shell and only swaps the row metrics; C floats the centre column and sinks the rails. Switch theme and ring to compare.

--bg-input raised surface (input box / bubbles / pills / rails in B and D) --bg-primary page --bg-secondary deep tone (rails in A and C, page in D)
ElementOfficial Luma metrics (14px root)BeforeReplaced
Nav rowSidebarMenuButton h-9 = 31.5px, px-3 = 10.5, gap-2 = 7, rounded-xl = 10.5, icon 16; active = bg-sidebar-accent + font-medium30px, 6px 8px, gap 12, 10px, icon 20, active only tintsthe constants in nav-classes.ts (sidebar rows leave the global .ui-list-item)
Group labelSidebarGroupLabel h-8 = 28, text-xs 12px, font-medium, foreground 70%14px / 400 / secondary 80%, pt 15 pb 6section-header.tsx
Sessions under a projectSidebarMenuSub + SubButton: 1px guide on the left, h-7 = 24.5 (drawn at 28 to fit the status marker), 13px.projectKids draws its own guide, 30px, 13pxsidebar.module.css + sessions-list.tsx
User footerSidebarFooter + SidebarMenuButton size="lg" h-14 = 4964px custom trigger with a top ruleuser-menu-footer.*
Shellvariant="floating": p-2 = 7 gutter, rounded-2xl = 14, shadow-sm; the official ring-1 is dropped, as on the input boxbg-secondary + 1px hairlinethe roots of sidebar.tsx / right-sidebar.tsx + the .sidebar rules in base.css
Collapsedcollapsible="icon": 3rem = 42px rail plus gutters = 58px, rows become size-8 squares, labels hide49px rail, .sidebar.collapsed cascade--rail-collapsed-w; the cascade stays and the shell adds data-collapsible
Resizethe official SidebarRail only toggles, it does not resizeuse-resizable-rail.ts 16px invisible handlekept, mounted on the official shell