Navigation Menu
A collection of links for navigating websites.
Installation
pnpm dlx cubix@latest add navigation-menu --base ariaUsage
import {
NavigationMenu,
NavigationMenuContent,
NavigationMenuItem,
NavigationMenuLink,
NavigationMenuList,
NavigationMenuTrigger,
} from "@/components/cubix/navigation-menu"<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
│ └── NavigationMenuLinkBasic
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
| Prop | Type | Default | Description |
|---|---|---|---|
| align | "start" | "center" | "end" | "start" | Alignment of the positioner relative to the trigger (Base UI). |
| viewport | boolean | true | Whether to render the shared viewport (Radix UI). Set false for per-item popovers. |
| className | string | - | Additional Tailwind classes merged with the component styles (last one wins). |
| children | React.ReactNode | - | The navigation list and related content. |
NavigationMenuTrigger
| Prop | Type | Default | Description |
|---|---|---|---|
| className | string | - | Additional Tailwind classes merged with the component styles (last one wins). |
| children | React.ReactNode | - | The trigger label shown in the navigation menu. |
NavigationMenuContent
| Prop | Type | Default | Description |
|---|---|---|---|
| className | string | - | Additional Tailwind classes merged with the component styles (last one wins). |
| children | React.ReactNode | - | The panel content shown when a trigger is open. |
NavigationMenuLink
| Prop | Type | Default | Description |
|---|---|---|---|
| render | React.ReactElement | - | Compose the link onto a child element such as Next.js Link (Base UI). |
| asChild | boolean | - | Compose the link onto a child element such as Next.js Link (Radix UI). |
| active | boolean | - | Marks the link as the active navigation item. |
| className | string | - | Additional Tailwind classes merged with the component styles (last one wins). |
| children | React.ReactNode | - | The link content. |