Side Navigation
navigationUSWDS-derived
A vertical navigation menu for navigating related pages within a section.
Reference: USWDS documentation ↗
Variants
Default
<nav aria-label="Side navigation">
<ul class="flex-sidenav">
<li class="flex-sidenav__item"><a href="/page1" class="flex-sidenav__link flex-sidenav__link--current" aria-current="page">Current Page</a></li>
<li class="flex-sidenav__item"><a href="/page2" class="flex-sidenav__link">Another Page</a></li>
<li class="flex-sidenav__item"><a href="/page3" class="flex-sidenav__link">Third Page</a></li>
</ul>
</nav>Three Levels
<nav aria-label="Side navigation">
<ul class="flex-sidenav">
<li class="flex-sidenav__item"><a href="/page1" class="flex-sidenav__link">First Page</a></li>
<li class="flex-sidenav__item">
<a href="/page2" class="flex-sidenav__link">Second Page</a>
<ul class="flex-sidenav__sublist">
<li class="flex-sidenav__item">
<a href="/page2/sub1" class="flex-sidenav__link">Subpage 1</a>
<ul class="flex-sidenav__sublist">
<li class="flex-sidenav__item"><a href="/page2/sub1/detail" class="flex-sidenav__link flex-sidenav__link--current" aria-current="page">Detail Page</a></li>
</ul>
</li>
<li class="flex-sidenav__item"><a href="/page2/sub2" class="flex-sidenav__link">Subpage 2</a></li>
</ul>
</li>
</ul>
</nav>With Subnav
<nav aria-label="Side navigation">
<ul class="flex-sidenav">
<li class="flex-sidenav__item"><a href="/page1" class="flex-sidenav__link">First Page</a></li>
<li class="flex-sidenav__item">
<a href="/page2" class="flex-sidenav__link">Second Page</a>
<ul class="flex-sidenav__sublist">
<li class="flex-sidenav__item"><a href="/page2/sub1" class="flex-sidenav__link flex-sidenav__link--current" aria-current="page">Subpage 1</a></li>
<li class="flex-sidenav__item"><a href="/page2/sub2" class="flex-sidenav__link">Subpage 2</a></li>
</ul>
</li>
<li class="flex-sidenav__item"><a href="/page3" class="flex-sidenav__link">Third Page</a></li>
</ul>
</nav>Contract
Class mapping
| USWDS | Flex | Notes |
|---|---|---|
usa-sidenav | .flex-sidenav | Side navigation list wrapper |
usa-sidenav__item (implicit via li) | .flex-sidenav__item | Navigation list item |
usa-sidenav a | .flex-sidenav__link | Navigation link |
usa-current | .flex-sidenav__link--current | Current page indicator |
usa-sidenav__sublist | .flex-sidenav__sublist | Nested navigation sublist |
Verified properties
font-familyfont-sizeline-heightlist-style-typepadding-leftborder-bottom-widthborder-bottom-styledisplaytext-decoration-lineIntentional differences
border-color: ours = var(--flex-color-border), USWDS = #dfe1e2
We use our semantic border token
Behavior promises
- ○ Current page has left border accent indicator
- ○ Hover state changes background and text color
- ○ Nested sublists increase indentation
A digital services project by Flexion