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 to
TITAN-GAP-29 that hasn’t been
decided.
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 —
TITAN-GAP-29 is 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 is TITAN-GAP-29, which 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
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