Navigation Menu

A collection of links for navigating websites.

Installation

pnpm dlx cubix@latest add navigation-menu --base radix

Usage

Import
import {
  NavigationMenu,
  NavigationMenuContent,
  NavigationMenuItem,
  NavigationMenuLink,
  NavigationMenuList,
  NavigationMenuTrigger,
} from "@/components/cubix/navigation-menu"
Example
<NavigationMenu>
  <NavigationMenuList>
    <NavigationMenuItem>
      <NavigationMenuTrigger>Item One</NavigationMenuTrigger>
      <NavigationMenuContent>
        <NavigationMenuLink render={<Link href="/docs" />}>
          Documentation
        </NavigationMenuLink>
      </NavigationMenuContent>
    </NavigationMenuItem>
  </NavigationMenuList>
</NavigationMenu>

Composition

Use the following composition to build a NavigationMenu:

 
NavigationMenu
├── NavigationMenuList
   ├── NavigationMenuItem
      ├── NavigationMenuTrigger
      └── NavigationMenuContent
          └── NavigationMenuLink
   └── NavigationMenuItem
       └── NavigationMenuLink

Basic

Link

Use navigationMenuTriggerStyle() on NavigationMenuLink for a top-level link that matches trigger styling. On Base UI, compose with render; on Radix UI, use asChild.

 
<NavigationMenuItem>
  <NavigationMenuLink
    render={<Link href="/docs" />}
    className={navigationMenuTriggerStyle()}
  >
    Documentation
  </NavigationMenuLink>
</NavigationMenuItem>

With Icon

API Reference

NavigationMenu

PropTypeDefaultDescription
align"start" | "center" | "end""start"Alignment of the positioner relative to the trigger (Base UI).
viewportbooleantrueWhether to render the shared viewport (Radix UI). Set false for per-item popovers.
classNamestring-Additional Tailwind classes merged with the component styles (last one wins).
childrenReact.ReactNode-The navigation list and related content.

NavigationMenuTrigger

PropTypeDefaultDescription
classNamestring-Additional Tailwind classes merged with the component styles (last one wins).
childrenReact.ReactNode-The trigger label shown in the navigation menu.

NavigationMenuContent

PropTypeDefaultDescription
classNamestring-Additional Tailwind classes merged with the component styles (last one wins).
childrenReact.ReactNode-The panel content shown when a trigger is open.

NavigationMenuLink

PropTypeDefaultDescription
renderReact.ReactElement-Compose the link onto a child element such as Next.js Link (Base UI).
asChildboolean-Compose the link onto a child element such as Next.js Link (Radix UI).
activeboolean-Marks the link as the active navigation item.
classNamestring-Additional Tailwind classes merged with the component styles (last one wins).
childrenReact.ReactNode-The link content.