shadcn.io is not affiliated with official shadcn/ui
Shadcn Navigation Menu for React
A collection of links for navigating a site.
Installation
bunx --bun shadcn@latest add https://kit.dev/r/radix/navigation-menu.jsonnpx shadcn@latest add https://kit.dev/r/radix/navigation-menu.jsonpnpm dlx shadcn@latest add https://kit.dev/r/radix/navigation-menu.jsonyarn shadcn@latest add https://kit.dev/r/radix/navigation-menu.jsonInstall the following dependencies:
bun add radix-ui lucide-react tailwind-variantsnpm install radix-ui lucide-react tailwind-variantspnpm add radix-ui lucide-react tailwind-variantsyarn add radix-ui lucide-react tailwind-variantsCopy and paste the following code into your project.
"use client";
import { ChevronDownIcon } from "lucide-react";
import { NavigationMenu as NavigationMenuPrimitive } from "radix-ui";
import type React from "react";
import { tv } from "tailwind-variants";
import { cn } from "@/lib/utils";
export const NavigationMenu = (
props: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {
viewport?: boolean;
}
) => {
const { className, children, viewport = true, ...rest } = props;
return (
<NavigationMenuPrimitive.Root
className={cn(Update the import paths to match your project setup.
Anatomy
NavigationMenu
├── NavigationMenuList
│ ├── NavigationMenuItem
│ │ ├── NavigationMenuTrigger
│ │ └── NavigationMenuContent
│ │ └── NavigationMenuLink
│ └── NavigationMenuItem
│ └── NavigationMenuLink
└── NavigationMenuIndicatorUsage
import {
NavigationMenu,
NavigationMenuContent,
NavigationMenuItem,
NavigationMenuLink,
NavigationMenuList,
NavigationMenuTrigger,
} from "@/components/ui/navigation-menu";<NavigationMenu>
<NavigationMenuList>
<NavigationMenuItem>
<NavigationMenuTrigger>Item One</NavigationMenuTrigger>
<NavigationMenuContent>
<NavigationMenuLink href="#">Link</NavigationMenuLink>
</NavigationMenuContent>
</NavigationMenuItem>
</NavigationMenuList>
</NavigationMenu>Accessibility
| Key | Description |
|---|---|
Enter | Activate the focused control. |
Space | Activate the focused control. |
ArrowLeft | Move left. |
ArrowRight | Move right. |
Escape | Close the open panel. |
Demos
Rtl
Right-to-left navigation menu. See the RTL configuration guide for document direction.
API Reference
NavigationMenu
nav
PropType
value?stringdefaultValue?stringchildrenReact.ReactNodeisRootMenubooleanitemValuestring): voidscopeScopeAttributeType
CSS variableType
--trigger-heightstring--trigger-widthstring--trigger-xstring--trigger-ystring--viewport-heightstring--viewport-widthstring--viewport-xstring--viewport-ystringNavigationMenuViewport
div
PropType
value?stringdefaultValue?stringchildrenReact.ReactNodeisRootMenubooleanitemValuestring): voidscopeScopeAttributeType
CSS variableType
--radix-navigation-menu-viewport-heightstring--radix-navigation-menu-viewport-widthstringNavigationMenuTrigger
button
PropType
value?stringdefaultValue?stringchildrenReact.ReactNodeisRootMenubooleanitemValuestring): voidscopeScopeAttributeType
NavigationMenuContent
div
PropType
valuestringdefaultValue?stringchildrenReact.ReactNodeisRootMenubooleanitemValuestring): voidscopeScopeAttributeType
NavigationMenuList
div
PropType
value?stringdefaultValue?stringchildrenReact.ReactNodeisRootMenubooleanitemValuestring): voidscopeScopeAttributeType
NavigationMenuItem
div
PropType
value?stringdefaultValue?stringchildrenReact.ReactNodeisRootMenubooleanitemValuestring): voidscopeScopeAttributeType
NavigationMenuLink
a
PropType
value?stringdefaultValue?stringchildrenReact.ReactNodeisRootMenubooleanitemValuestring): voidscopeScopeactive?booleanAttributeType
NavigationMenuIndicator
div
PropType
value?stringdefaultValue?stringchildrenReact.ReactNodeisRootMenubooleanitemValuestring): voidscopeScopeAttributeType
navigationMenuTriggerStyle
PropType
value?stringdefaultValue?stringchildrenReact.ReactNodeisRootMenubooleanitemValuestring): voidscopeScopeAttributeType