Home

Navigation Menu

Usage

The navigation menu is the horizontal header menu with dropdown panels and a mobile accordion. Start with:

  • --nav-menu-color and --nav-menu-color-active for link state colors

  • --nav-menu-item-padding-* and --nav-menu-font-size for density

  • --nav-menu-dropdown-* tokens for panel size and styling

  • --nav-menu-transition-duration and --nav-menu-accordion-transition-duration for motion

  • --nav-menu-hover-delay, --nav-menu-close-delay, and --nav-menu-mobile-breakpoint (read by JavaScript)

Tokens

Typography Tokens

TokenDescriptionDefault Value
--nav-menu-font-familyFont family for menuvar(--layout-font-family)
--nav-menu-font-sizeFont size for itemsvar(--font-size-sm)
--nav-menu-item-font-weightFont weight for itemsvar(--font-weight-medium)

Color Tokens

TokenDescriptionDefault Value
--nav-menu-colorDefault item colorvar(--text-color-secondary)
--nav-menu-color-hoverHover item colorvar(--text-color-primary)
--nav-menu-color-activeActive item colorvar(--color-accent)
--nav-menu-dropdown-bgDropdown backgroundvar(--surface-elevated)
--nav-menu-dropdown-borderDropdown border colorvar(--border-color-default)
--nav-menu-dropdown-shadowDropdown shadowvar(--shadow-lg)
--nav-menu-item-border-colorMobile item border colorvar(--border-color-default)
--nav-menu-description-colorDescription text colorvar(--text-color-muted)

Structure Tokens

TokenDescriptionDefault Value
--nav-menu-item-padding-xItem horizontal paddingvar(--space-3)
--nav-menu-item-padding-yItem vertical paddingvar(--space-2)
--nav-menu-dropdown-paddingDropdown paddingvar(--space-4)
--nav-menu-dropdown-max-widthDropdown max width800px
--nav-menu-dropdown-min-widthDropdown min width280px

Icon Tokens

TokenDescriptionDefault Value
--nav-menu-icon-sizeIcon size1.25rem
--nav-menu-icon-gapGap between icon and textvar(--space-2)
--nav-menu-chevron-displayChevron display modenone
--nav-menu-chevron-sizeChevron size0.5em

Description Tokens

TokenDescriptionDefault Value
--nav-menu-description-font-sizeDescription font sizevar(--font-size-2xs)

Featured Panel Tokens

TokenDescriptionDefault Value
--nav-menu-featured-widthFeatured panel width280px
--nav-menu-featured-bgFeatured panel backgroundvar(--surface-elevated)
--nav-menu-featured-paddingFeatured panel paddingvar(--space-4)

Section Title Tokens

TokenDescriptionDefault Value
--nav-menu-section-title-font-sizeSection title sizevar(--font-size-2xs)
--nav-menu-section-title-font-weightSection title weightvar(--font-weight-semibold)
--nav-menu-section-title-colorSection title colorvar(--text-color-muted)
--nav-menu-section-title-margin-bottomSection title spacingvar(--space-2)

Interaction Tokens

TokenDescriptionDefault Value
--nav-menu-transition-durationHover/focus transitionvar(--transition-duration-base)
--nav-menu-accordion-transition-durationMobile accordion transitionvar(--transition-duration-slowest)
--nav-menu-hover-delayHover open delay (JS)150ms
--nav-menu-close-delayHover close delay (JS)300ms
--nav-menu-mobile-breakpointMobile breakpoint (JS)1024px
--nav-menu-focus-ring-widthFocus ring widthvar(--focus-ring-width)
--nav-menu-focus-ring-colorFocus ring colorvar(--focus-ring-color)
--nav-menu-focus-ring-offsetFocus ring offsetvar(--focus-ring-offset)
--nav-menu-focus-radiusFocus ring radiusvar(--radius-xs)

Mobile Tokens

TokenDescriptionDefault Value
--nav-menu-mobile-paddingMobile menu paddingvar(--space-4)
--nav-menu-accordion-max-heightAccordion max height70vh

Examples

Minimal Top Bar

Reduce visual weight for content-first pages:

:root {
  --nav-menu-font-size: var(--font-size-xs);
  --nav-menu-item-padding-x: var(--space-2);
  --nav-menu-item-padding-y: var(--space-1);
  --nav-menu-chevron-display: none;
}

Bold Dropdowns

Make dropdown panels feel like panels:

:root {
  --nav-menu-dropdown-bg: var(--surface-raised);
  --nav-menu-dropdown-shadow: var(--shadow-xl);
  --nav-menu-dropdown-max-width: 960px;
  --nav-menu-chevron-display: inline-flex;
}

Tips

JS-read tokens: --nav-menu-hover-delay, --nav-menu-close-delay, and --nav-menu-mobile-breakpoint are read by JavaScript for behavior.

Hierarchy clarity: Use --nav-menu-description-color and --nav-menu-section-title-* to keep dropdowns scannable.

Mobile density: Adjust --nav-menu-accordion-max-height and --nav-menu-mobile-padding to suit shorter viewports.

© 2026 Stencila