Navigation Menu
Site navigation with rich dropdowns. A hover pill glides between items, the panel morphs to fit each menu and content slides in from the side you came from.
NavigationRadix Navigation Menu
Playground
Tweak the props, the preview and the code follow.
Props
200
<NavigationMenu>
<NavigationMenuList>
<NavigationMenuItem value="product">
<NavigationMenuTrigger>Product</NavigationMenuTrigger>
<NavigationMenuContent>
<NavigationMenuLink href="/deploy">Deploy</NavigationMenuLink>
<NavigationMenuLink href="/functions">Functions</NavigationMenuLink>
</NavigationMenuContent>
</NavigationMenuItem>
<NavigationMenuItem value="pricing">
<NavigationMenuLink href="/pricing" className={navigationMenuTriggerStyle()}>
Pricing
</NavigationMenuLink>
</NavigationMenuItem>
</NavigationMenuList>
</NavigationMenu>Installation
npx @plumsydev/plum-ui add navigation-menuUsage
import {
NavigationMenu,
NavigationMenuContent,
NavigationMenuItem,
NavigationMenuLink,
NavigationMenuList,
NavigationMenuTrigger,
navigationMenuTriggerStyle,
} from "@/components/ui/navigation-menu"<NavigationMenu>
<NavigationMenuList>
<NavigationMenuItem value="product">
<NavigationMenuTrigger>Product</NavigationMenuTrigger>
<NavigationMenuContent>
<NavigationMenuLink href="/deploy">Deploy</NavigationMenuLink>
</NavigationMenuContent>
</NavigationMenuItem>
<NavigationMenuItem value="pricing">
<NavigationMenuLink href="/pricing" className={navigationMenuTriggerStyle()}>
Pricing
</NavigationMenuLink>
</NavigationMenuItem>
</NavigationMenuList>
</NavigationMenu>Examples
In a header
Controlled with value — glide from one item to the next without the panel closing.
northwind
Hover the menu, then glide between items
Without viewport
viewport={false} renders each panel under its own trigger.
API Reference
NavigationMenu
| Prop | Type | Default |
|---|---|---|
viewportRender content in a shared panel that morphs between menus. | boolean | true |
valueControlled open item. | string | — |
onValueChangeCalled when the open item changes. | (value: string) => void | — |
delayDurationHover delay before opening, in ms. | number | 200 |
NavigationMenuLink
A link styled as a card row inside content. Add navigationMenuTriggerStyle() to use it at the top level.
| Prop | Type | Default |
|---|---|---|
activeMarks the current page. | boolean | — |
Notes
- Give each
NavigationMenuItemavalue— it powers both the hover pill and controlled mode.