Navigation & Chrome
Choose tabs, breadcrumbs, steppers, sidebars, and toolbars for an application shell.
Components in this category
Page title, stat rail, status and actions.
TabsHorizontal or vertical tab navigation.
BreadcrumbBreadcrumb trail navigation.
LinkText link with tone colors and external-link attributes.
StepperWhere the reader is in a flow — four variants, five states.
WizardThe multi-step flow itself — steps, values, validation, branches and completion.
WelcomeScreenThe screen before the first question — a greeting that cycles through its own translations.
WizardNavDisplays wizard steps in a vertical or horizontal list.
WizardFooterA wizard's action row — Cancel, Back, Skip and the advance button.
WizardSummaryWizard answers with links to edit the corresponding steps.
SidebarApplication sidebar navigation container.
SidebarBrandBrand/logo area at the top of a Sidebar.
SidebarOrgSwitcherOrganization/workspace switcher in a Sidebar.
SidebarNavNavigation list inside a Sidebar.
SidebarNavGroupContainer grouping SidebarNavItem entries.
SidebarNavItemSingle navigation item with icon and badge.
SidebarFooterFooter area pinned to the bottom of a Sidebar.
TabStripBrowser-style tab strip.
BrowserTabSingle tab inside a TabStrip.
ToolbarHorizontal action toolbar.
TopBarTop application bar with search and actions.
TopBarIconButtonIcon button styled for the TopBar.
ClockLive clock display in the TopBar.
Tabs & navigation
Tabs
Underlined tab strip. Works controlled or uncontrolled: omit activeKey for uncontrolled mode (falls back to defaultActiveKey or the first item). Each item renders as a button with role="tab".
| Prop | Type | Default | Description |
|---|---|---|---|
items | TabItem[] | — | Tab items with key, label, optional count, icon, and disabled. |
activeKey | string | — | Controlled active tab key. |
defaultActiveKey | string | — | Default active key when uncontrolled. |
onChange | (key: string) => void | — | Active key change handler. |
Breadcrumb
A horizontal breadcrumb trail. Pass items as ReactNode. The current (last) segment is rendered in bold, ancestors are dimmed, and separator slashes are inserted automatically.
| Prop | Type | Default | Description |
|---|---|---|---|
items | ReactNode[] | — | Breadcrumb segments. Last is rendered bold as the current page. |
Stepper
Shows where the reader is in a flow: numbered markers, checks behind them, an accent run of line up to the current step. Four variants (circles, bars, dots, panels), horizontal or vertical, and five states (error fails the current step, skipped marks an optional one that was passed). Pass onStepClick to make finished steps clickable (navigation back). Full reference on the Stepper page.
| Prop | Type | Default | Description |
|---|---|---|---|
steps | Step[] | — | Steps with key, label, and optional description, icon, badge, group, optional, status. |
activeIndex | number | — | Index of the current step. Previous steps render as done. |
variant | "circles" | "bars" | "dots" | "panels" | — | Which drawing of the states. |
orientation | "horizontal" | "vertical" | — | Vertical is the rail, with group headings. |
error | boolean | string | string[] | — | true fails the current step; keys fail those steps. |
onStepClick | (index: number, step: Step) => void | — | Makes completed steps clickable. |
Links
Link is the text link component, with the tone scale, the standard focus ring, and defaults for external links (target, rel, arrow glyph). It is a link when the click goes somewhere; if it performs an action, use a Button. Full props on its page.
| Prop | Type | Default | Description |
|---|---|---|---|
as | ElementType | "a" | Router component used to render the link. |
variant | LinkVariant | "underline" | "underline" | "hover" | "plain". |
tone | Tone | "info" | Tone scale. |
external | boolean | — | Arrow glyph, target="_blank" and a safe rel. |
icon | ReactNode | — | Leading glyph. |
disabled | boolean | — | Inert text with no href. |
import { Link, TextLink } from "@solarius/onset";
<Link href="/runs/8812">View run</Link>
// Same component, for apps that already import a router Link:
<TextLink href="/docs">Documentation</TextLink>Sidebar
The application sidebar. Sidebar is the outer container, with a structured set of children: SidebarBrand (logo + name), SidebarOrgSwitcher (workspace picker), SidebarNav containing SidebarNavGroup and SidebarNavItem entries, and SidebarFooter (quota meter + user row).
Sidebar parts
| Prop | Type | Default | Description |
|---|---|---|---|
Sidebar | HTMLElement | — | Container aside. |
SidebarBrand | HTMLDivElement | — | Logo + name. Props: logo (ReactNode), children (name). |
SidebarOrgSwitcher | HTMLButtonElement | — | Workspace picker button. Props: initials, name, sub. |
SidebarNav | HTMLElement | — | Navigation list. |
SidebarNavGroup | HTMLDivElement | — | Collapsible group wrapper. |
SidebarNavItem | a | button | — | Nav item. Props: icon, active, count, countTone, href (renders as a). |
SidebarFooter | HTMLDivElement | — | Quota meter + user row. Props: usageLabel, usageValue, usagePercent, links, userInitials, userName, userEmail, onUserMenu. |
Application chrome
Top-level application structure: browser-style tab strip, URL toolbar, top bar with breadcrumb + actions, and a live clock.
TabStrip & BrowserTab
A faux-browser tab strip framing the app. It is cosmetic chrome for mockups and demos. Each BrowserTab supports a favicon, title, close button, and active state.
Toolbar
Nav buttons + faux address bar + profile chip. Purely decorative chrome, matching the TabStrip's browser aesthetic.
| Prop | Type | Default | Description |
|---|---|---|---|
host | ReactNode | — | URL host segment. |
path | ReactNode | — | URL path segment. |
profile | ReactNode | — | Profile chip after the address bar. |
canGoBack | boolean | true | Enable back button. |
canGoForward | boolean | false | Enable forward button. |
onBack | () => void | — | Back click. |
onForward | () => void | — | Forward click. |
onReload | () => void | — | Reload click. |
TopBar & TopBarIconButton
The application top bar: a breadcrumb on the left, action slots on the right. TopBarIconButton is an icon button styled for the top bar with an optional notification dot.
| Prop | Type | Default | Description |
|---|---|---|---|
breadcrumb | ReactNode | — | Left-side content. |
right | ReactNode | — | Right-aligned actions. |
Clock
A live clock display styled for the top bar or dashboard header. Renders its children in a mono clock face.