What it is
A side nav (also called a left nav, nav rail, or primary navigation) is a vertical list of destinations, usually anchored to one edge of the screen, for moving between different subjects or records rather than between sections of one page. That job description comes from how Titan’s own docs already talk about it by contrast — Tabs names “side nav” as the alternative when you need to move between different subjects, and Views overview notes that the design library’s page template includes “a left nav rail of labelled icons” as chrome outside the page frame. Nothing incore currently builds that.
Live example
None. No Storybook story exists for anything namedSideNav — verified against the live
Storybook index.
Exports
Nothing in@invoca/titan-core implements this concept. What exists elsewhere in the same
repository, none of it a distributable design-system export:
Vocabulary
“SideNav” and “the rail” are not confirmed to be the same thing. The rail is a real, themed
export; “SideNav” names a region the design library’s page template draws and nothing in
core
fills. Use “the rail” only when you mean Tabs orientation="vertical" specifically, and “SideNav”
only when you mean the unfilled region — conflating them states an answer that hasn’t been
decided (see Known issues).
Choose SideNav when
There is no shippedSideNav to choose. If the underlying need is “move between different
subjects or records” (as opposed to sections of one page, which is Tabs),
that need is real and named elsewhere in this documentation — it just has no confirmed component
to satisfy it yet. See Composition below for what is actually available.
Choose something else when
Anatomy
Nothing to document — no component exists. If a vertical list of rows is the actual need, see the rail’s own anatomy on Tabs,TabIconLabel for an icon-plus-label row, and TabMenu for a row with its own overflow menu.
Variants, sizes, and states
Nothing to document.Edge and failure states
Nothing to document — there is no shipped behavior to describe failing.Tokens
Nothing to document under this concept. The rail’s own three component tokens —tabs-vertical-min-width, tabs-icon-gap, tabs-indented-font-size — are documented on
Tabs, not duplicated here, since they
belong to that export.
Composition
The design library’s own page template names this region and explicitly puts it out of this documentation’s scope. Views overview records that the template draws site-level chrome as two regions outside the page frame — “a site header carrying the logo, the account selector, global search and the account menu, and a left nav rail of labelled icons” — and states plainly that both are “deliberately out of scope” for the page-frame documentation. That scoped-out left nav rail is exactly what a reader searching for “SideNav” is looking for, and nothing incore fills it with a real, distributable component today.
The rail (Tabs orientation="vertical") is themed and real, but nothing states whether it is
that region’s implementation or a different thing that merely looks similar — see
Known issues for the open question this page defers to.
Content
Nothing to document.Accessibility
Nothing in Titan to verify. For reference only — not a statement about any Titan implementation, since none exists to check — the WAI-ARIA Authoring Practices’ navigation pattern generally expects anav landmark with a descriptive accessible name and aria-current="page"
on the active destination. Treat this as external, general guidance to apply if and when a real
component is built, not as a Titan rule.
Constraints
Known issues
SideNav: open issues
Divergences, open decisions, and undocumented gaps for SideNav.
Why it works this way
It doesn’t yet, and this page says so rather than inventing an answer. The nearest thing to a decision already asks whether the tab bar’s vertical orientation is the system’s side navigation or a different thing entirely. Until that question is answered, documenting aSideNav
component as if it existed would tell a reader something false with total confidence — which is
a worse outcome than a page that plainly states the gap.
Status
No standaloneSideNav component ships in Titan core. This is not an unwritten stub in the
usual sense — the research is done, and the finding is the absence itself. Checked against the
core package’s component directory, its export barrels, its templates directory, and the
Storybook index: nothing there implements a vertical list of page-level navigation destinations.
This page’s tag is Draft rather than Stable for that reason — there is no shipped,
decided component to certify.
Related
- Tabs — the vertical rail, and the open question of what it is for
- Views overview — the page frame, and the site-level chrome it explicitly scopes out
- TopNav — the sibling question for the top of the screen
- TITAN-GAP-29 — the open decision this whole page defers to