The shell, seven ways
Every shape the two apps and the demo ship, picked with one tab stripDashboard
Search
Aakarsh Chopra
Modules
Content stacks as plain children: the shell only owns the chromeData Extraction
Validation
Enhancement
Image Generation
Active treatment
One rule: the current nav item gets a soft primary pill, no second gray-pill/teal-text variantClick a sidebar item to see the active state move; use the rail-collapse button above the nav (visible at the lg breakpoint) to switch to icon-only mode, and the group carets on Modules/Settings to collapse/expand.
Sidebar, standalone
The rail is its own export; the patterns section anatomizes it at /patterns/sidebar-anatomy<Sidebar nav={nav} collapsed={collapsed} onToggleCollapsed={toggle} renderLink={RouterLink} footer={identity} />Topbar, standalone
The top chrome row: title, center search slot, actions, userJobs
actions slot
JD
Slot map
The styling override points this component exposesclassName · sidebarClassName · topbarClassName · contentClassName© 2026 Versable
Interactive shell
- logo
- Plain wordmark, no rail icon
- nav
- 4 groups: Home, Modules (collapsible), Data, Settings (collapsible)
- topbar.title / search / actions / user
- "Dashboard", a search pill, a notification icon, a name label
- footer
- A copyright bar under the content area
- children
- Module cards and a slot-map card fill the content area
Styling slots
Every className the component exposes, and what it reaches- className
- the shell root
- sidebarClassName
- the sidebar rail
- topbarClassName
- the topbar
- contentClassName
- the main content area