Skip to content
Zuno UI
Explore components
EXPLORE
Actions
Forms
Layout
Navigation
Data display
Feedback
Overlays
RESOURCES
Components/NavigationMenu

NavigationMenu

Product or marketing navigation with an understandable structure and one shared, resizing panel.

Base UI reference ↗

Installation

Run it from the root of a project already set up with zunoui init.

npx zunoui@latest add navigation-menu

Dependencies

What add navigation-menu installs alongside the component. The CLI skips any you already have in a compatible version.

ZUNO registry

  • @zuno/utils

npm

Examples

2 examples · 1 component
navigation-menu

Panels and links

Two panels share one popup that resizes between them; Pricing is a plain link.

navigation-menu

Current page

A flat bar of links; active marks the current page for everyone.

API reference

Keeps the props, events and refs of the matching Base UI primitive, plus ZUNO's styles.

PropTypeDefault
NavigationMenu

Root; value/defaultValue, onValueChange, delay and orientation. Renders the shared popup for you.

nav—
NavigationMenuList / NavigationMenuItem

The top-level list and its items.

ul / li—
NavigationMenuTrigger

Opens the item's content on hover, click or keyboard; the chevron turns when open.

button—
NavigationMenuContent

The item's panel, up to 32rem wide; the popup resizes to it.

div—
NavigationMenuLink

active marks the current page (aria-current="page"); render={<NextLink />} for router links.

a—
navigationMenuTriggerClass

Trigger styles for top-level links without a submenu.

string—

States

The states that apply to this component and their visual treatment.

StateTreatment
ClosedOnly the top-level row.
OpenA shared panel below the trigger; the chevron turns 180°.
SwitchingMoving to another trigger slides and resizes the same panel.
Current pageFilled background plus aria-current="page".
FocusOffset outline on triggers and links.

Accessibility

Name the root with aria-label so it is announced as a navigation landmark; the list keeps its ul/li semantics.

Triggers are buttons with aria-expanded (the disclosure navigation pattern): Enter or Space opens the panel, Tab moves into its links, and Escape closes it and returns focus to the trigger.

Arrow Left and Right move between top-level items; hover opens after a short delay and never traps the pointer.

Mark the current page with active (aria-current="page"), not only with a color; the panel animations stop with reduced motion.