Components
Navigation Menu
A horizontal list of links and dropdowns for primary site navigation, built on Radix with full keyboard and pointer support.
Basic usage
Pair a NavigationMenuTrigger with NavigationMenuContent to reveal a dropdown panel of links. Hover or focus the trigger to open it.
Simple links
For top-level links without a dropdown, render a NavigationMenuLink styled with navigationMenuTriggerStyle() so it matches the trigger height and padding.
Inline content
Pass viewport={false} on the root to drop the shared floating viewport and render each panel inline, directly beneath its own item.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
viewport | boolean | true | When true, dropdown content renders in a single shared floating viewport positioned below the menu. Set to false to render content inline under its own item. |
value | string | — | Controlled value of the currently open menu item (NavigationMenu). |
defaultValue | string | — | Value of the item open by default in uncontrolled mode (NavigationMenu). |
onValueChange | (value: string) => void | — | Called when the open item changes (NavigationMenu). |
delayDuration | number | 200 | Milliseconds a pointer must rest on a trigger before its content opens (NavigationMenu). |
active | boolean | false | Marks a NavigationMenuLink as the current page, styling it as active. |
href | string | — | Destination URL for a NavigationMenuLink. |
className | string | — | Additional Tailwind classes merged onto any part. |
Accessibility
- Built on Radix Navigation Menu, which exposes the menu with the correct ARIA roles and manages
aria-expandedon each trigger automatically. - Full keyboard support: Tab moves between items, arrow keys move within an open panel, and Esc closes the active dropdown.
- Triggers and links render a
focus-visiblering using the brand gold token, visible on keyboard navigation and hidden on pointer interaction. - Set
activeon theNavigationMenuLinkfor the current page so assistive tech and active styling reflect the user's location.