Navigation Component
Responsive navbar, sidebar, breadcrumbs, and pagination patterns built from semantic navigation landmarks.
Overview
The navigation component provides responsive navbar and sidebar components with mobile-first design. It uses container queries for responsive behavior and scoped styling to prevent conflicts.
Key Features
- Public host aliases: Custom elements,
data-*hosts, and classes share one API - Responsive Design: Container queries for mobile adaptation
- Two Variants: Navbar and sidebar layouts
- Mobile Menu: Collapsible navigation for small screens
- Design Tokens: Integrated with the framework’s color system
Components
Navbar (nav-navbar)
Horizontal navigation bar with brand, links, and mobile toggle.
Responsive navigation bar
Features
- Optional Sticky Positioning: Add
data-sticky,.is-sticky, orsticky - Brand Area: For logo or site title
- Navigation Links: Horizontal list of links
- Mobile Toggle: Opt-in collapsible menu for small containers
- Responsive: Links stack vertically on mobile
Sidebar (nav-sidebar)
Vertical navigation sidebar with scrollable content.
Scrollable application sidebar
Features
- Configurable Width:
--sidebar-widthdefaults to250px - Scrollable: Auto-scroll for long navigation lists
- Section Grouping: Support for navigation sections
- Link Styling: Hover effects and active states
Host options
- Navbar:
<nav-navbar>,[data-navbar],.navbar, or.nav-navbar - Sidebar:
<nav-sidebar>,[data-sidebar],.sidebar, or.nav-sidebar - Sticky navbar:
sticky,[data-sticky], or.is-sticky - Collapsible enhancement:
[data-collapsible]or.is-collapsible
Structure
Navbar Structure
<nav-navbar> <div class="nav-brand">Brand</div> <ul class="nav-links"> <li><a href="#" class="nav-link">Home</a></li> <li><a href="#" class="nav-link">About</a></li> </ul> <button class="nav-toggle">☰</button></nav-navbar>Sidebar Structure
<nav-sidebar> <ul class="sidebar-nav"> <li><a href="#" class="sidebar-link">Dashboard</a></li> <li><a href="#" class="sidebar-link">Settings</a></li> <li class="sidebar-section">Admin</li> <li><a href="#" class="sidebar-link">Users</a></li> </ul></nav-sidebar>Responsive Behavior
Mobile Navbar (< 34rem container width)
- Links stack vertically and remain visible by default, preserving navigation without JavaScript.
- Add
data-collapsibleor.is-collapsibleto opt into a toggle-enhanced menu. - The toggle’s
aria-expanded="true"state or.activeon the link list reveals the menu. - The menu stays in normal flow rather than covering nearby content.
Desktop Navbar (> 34rem container width)
- Horizontal link layout
- Toggle button hidden
- Inline navigation display
Styling Details
Common Properties
- Colors: Uses design tokens for backgrounds, text, and borders
- Spacing: Consistent padding and margins
- Typography: Inherited font settings
- Transitions: Smooth hover effects
Navbar Specific
- Layout: Flexbox with space-between justification
- Position: Sticky top with high z-index
- Border: Bottom border for separation
Sidebar Specific
- Layout: Flex column with full height
- Position: Sticky top with border right
- Overflow: Auto-scroll for content
Component tokens
Navbar geometry and surfaces:
--nav-min-height,--nav-padding,--nav-radius--nav-background,--nav-border-color,--nav-z-index--nav-links-gap,--nav-link-padding-block,--nav-link-padding-inline--nav-link-color,--nav-link-hover-color,--nav-link-hover-background--nav-menu-background,--nav-menu-border-color
Sidebar sizing and navigation:
--sidebar-widthor--width--sidebar-height,--sidebar-max-height--nav-sidebar-padding,--nav-sidebar-background,--nav-sidebar-border-color--sidebar-link-color,--sidebar-link-hover-color,--sidebar-link-hover-background--sidebar-section-color,--sidebar-section-margin-top
Utility Classes
.nav-link-active: Active navigation link styling.nav-links.active: Shows mobile menu (JavaScript-controlled)
Browser support
The responsive navbar uses container queries and CSS nesting. In browsers without container-query support, it remains a usable horizontal, wrapping navigation list; the semantic links do not depend on the responsive styling.
JavaScript Integration
Only the opt-in data-collapsible mobile menu requires JavaScript. Without that attribute, links remain visible at every width. Enhancement should:
- Toggle
.activeclass on.nav-links - Handle toggle button clicks
- Manage focus and accessibility
Accessibility
- Keyboard Navigation: Focus management for mobile menu
- Screen Readers: Proper semantic structure
- Focus Indicators: Visible focus outlines
- ARIA: Collapsible toggles must keep
aria-expandedsynchronized with the menu
Use Cases
- Website Navigation: Main site navigation
- Dashboard Layouts: Admin panels and data apps
- Mobile Apps: Responsive web app navigation
- Documentation Sites: Section-based navigation
Breadcrumbs
Use a native navigation landmark; nav.breadcrumbs and nav[data-breadcrumbs] are equivalent.
Wrapping breadcrumbs
<nav class="breadcrumbs" aria-label="Breadcrumb"> <ol> <li><a href="/">Home</a></li> <li><a href="/components/">Components</a></li> <li><span aria-current="page">Navigation</span></li> </ol></nav>Separators are decorative generated content, so assistive technology announces only the labels. Theme the pattern with --breadcrumbs-gap, --breadcrumbs-separator, --breadcrumbs-color, --breadcrumbs-hover-color, --breadcrumbs-current-color, and --breadcrumbs-font-size.
Pagination
Use anchors for location-changing pages. Buttons are appropriate for client-side data grids that keep the same URL.
Responsive pagination
<nav data-pagination aria-label="Pagination"> <a class="pagination-previous" href="?page=2">Previous</a> <ol> <li><a href="?page=2">2</a></li> <li><a href="?page=3" aria-current="page">3</a></li> <li><a href="?page=4">4</a></li> </ol> <a class="pagination-next" href="?page=4">Next</a></nav>Add data-size="compact" for dense interfaces or data-surface="footer" for an opt-in divider. A disabled anchor must omit href and use aria-disabled="true".