Navigation Menu
Site navigation with dropdown panels of links.
- Actions: use Dropdown Menu.
- App navigation in a column: use Sidebar.
Install
Terminal
pnpm dlx shadcn@latest add @acme/navigation-menuOr import from the package: import { NavigationMenu } from '@acme/react'
Examples
Menu basic
navigation-menu-basic.tsx
'use client'
import {
NavigationMenu,
NavigationMenuContent,
NavigationMenuItem,
NavigationMenuLink,
NavigationMenuList,
NavigationMenuTopLink,
NavigationMenuTrigger,
} from '@/components/ui/navigation-menu'
export default function NavigationMenuBasic() {
return (
<NavigationMenu aria-label="Product">
<NavigationMenuList>
<NavigationMenuItem>
<NavigationMenuTrigger>Product</NavigationMenuTrigger>
<NavigationMenuContent>
<NavigationMenuLink href="#invoicing" description="Send and track invoices">
Invoicing
</NavigationMenuLink>
<NavigationMenuLink href="#payments" description="Cards, bank transfers, payouts">
Payments
</NavigationMenuLink>
<NavigationMenuLink href="#reports" description="Revenue and tax reports">
Reports
</NavigationMenuLink>
<NavigationMenuLink href="#integrations" description="Accounting and CRM apps">
Integrations
</NavigationMenuLink>
</NavigationMenuContent>
</NavigationMenuItem>
<NavigationMenuItem>
<NavigationMenuTopLink href="#pricing">Pricing</NavigationMenuTopLink>
</NavigationMenuItem>
</NavigationMenuList>
</NavigationMenu>
)
}Props
| Prop | Type | Default | Description |
|---|---|---|---|
| aria-label | string | — | Names the navigation landmark. |
| NavigationMenuLink.description | string | — | One line under a panel link. |
| NavigationMenuLink.href | string | — | Link target. |
Accessibility
| Key | Action |
|---|---|
| Enter / Space | Opens a panel |
| Tab | Moves through panel links |
| Escape | Closes the panel and returns focus |
- Role
- navigation with disclosure buttons
- You provide
- An aria-label when there is more than one navigation landmark.
- Built in
- Triggers expose aria-expanded.
- Panel motion is removed under reduced motion.
- WCAG 2.2 criteria
- 2.1.1, 2.4.3, 4.1.2
Don’t
- Put actions or forms in a navigation panel.
Tokens
- color.popover
- color.accent
- elevation.2
- z.dropdown