ui · Primitive
NavigationMenu
@devalok/shilp-sutra/ui/navigation-menuView in Storybook Hand-curated previews ship in rolling waves. See it live in Storybook →
Reference
Compound Components
NavigationMenu (root)
NavigationMenuList
NavigationMenuItem
NavigationMenuTrigger (for items with content panels)
NavigationMenuContent (dropdown panel)
NavigationMenuLink (for direct links)
NavigationMenuIndicator
NavigationMenuViewport
Example
<NavigationMenu>
<NavigationMenuList>
<NavigationMenuItem>
<NavigationMenuTrigger>Products</NavigationMenuTrigger>
<NavigationMenuContent>
<ul>...</ul>
</NavigationMenuContent>
</NavigationMenuItem>
<NavigationMenuItem>
<NavigationMenuLink href="/about">About</NavigationMenuLink>
</NavigationMenuItem>
</NavigationMenuList>
</NavigationMenu>
Composability
- Radix NavigationMenu underneath — keyboard model (Tab between items, Arrow for panel navigation, Esc to close) is pre-wired.
- NavigationMenuLink vs NavigationMenuTrigger: Use Link for simple nav items (no dropdown); use Trigger + Content for items with a panel of sub-links.
- NavigationMenuViewport is the animated container that holds the active Content panel — it auto-positions below the triggers. NavigationMenuIndicator is the small arrow/caret pointing from trigger to viewport.
- Purpose: Top-level site navigation (Products, Solutions, Resources) with rich dropdowns containing links grouped by category. Don't use for context menus (use DropdownMenu) or action toolbars (use ButtonGroup).
- Router integration: Use
<NavigationMenuLink asChild><NextLink href="/...">...</NextLink></NavigationMenuLink>for framework-specific Link components. - Portal + z-popover (1400) — content panels portal to body and stack above Dialog/Sheet.
Gotchas
- Uses Framer Motion for enter/exit animations (v0.18.0)
- NavigationMenu is NOT for sidebar nav — use Sidebar; NOT for mobile nav — use Sheet or BottomNavbar
Changes
v0.18.0
- Changed Migrated to Framer Motion for enter/exit animations
- Added
NavigationMenuProps,NavigationMenuContentPropstype exports
v0.1.1
- Fixed Token compliance — icon sizes replaced with
h-ico-sm w-ico-sm
v0.1.0
- Added Initial release