navigation-menu
Navigation Menu
A row of site links where some open a panel of further links, shown in one shared panel below the row that resizes to each; set viewport to false to open each panel under its own trigger. For full-width flyouts with image tiles, use mega-menu.
States: Default, Hover, Focus, Disabled
Parts
| Part | File | Does |
|---|---|---|
| NavigationMenu | NavigationMenu.vue | Groups all parts of the navigation menu. |
| NavigationMenuContent | NavigationMenuContent.vue | Holds the links and content shown when its menu item is open. |
| NavigationMenuIndicator | NavigationMenuIndicator.vue | Points to the trigger of the currently open navigation menu item. |
| NavigationMenuItem | NavigationMenuItem.vue | Groups a trigger with the content it opens, or holds a single link. |
| NavigationMenuLink | NavigationMenuLink.vue | Links to a page from the navigation menu. |
| NavigationMenuList | NavigationMenuList.vue | Lists the top-level items of the navigation menu. |
| NavigationMenuTrigger | NavigationMenuTrigger.vue | Opens and closes the content of its navigation menu item. |
| NavigationMenuViewport | NavigationMenuViewport.vue | Shows the content of the open navigation menu item. |
Anatomy
<NavigationMenu>
<NavigationMenuList>
<NavigationMenuItem>
<NavigationMenuTrigger />
<NavigationMenuContent>
<NavigationMenuLink />
</NavigationMenuContent>
<NavigationMenuLink />
</NavigationMenuItem>
</NavigationMenuList>
</NavigationMenu>Styling
| Part | Recipe |
|---|---|
| NavigationMenu | navigation-menu |
| NavigationMenuContent | navigation-menu-content |
| NavigationMenuIndicator | navigation-menu-indicator |
| NavigationMenuIndicator | navigation-menu-indicator-arrow |
| NavigationMenuLink | navigation-menu-link |
| NavigationMenuList | navigation-menu-list |
| NavigationMenuTrigger | navigation-menu-trigger |
| NavigationMenuViewport | navigation-menu-viewport |
Install
Writes 10 files into components/ui/navigation-menu/. For agents, npx @frontic/ui docs navigation-menu prints this reference as markdown; the MCP server serves the same.
- npm packages
- @lucide/vue
- @vueuse/core
- class-variance-authority
- reka-ui
API reference
Example