✨ Working with PDFs, images or videos? Discover 145+ free web apps built for everyday tasks

Navigation Menu

A horizontal navigation bar with dropdown menus, mega menus, icons, descriptions, nested submenus, and a compact variant. Built with compound components for flexible composition.

Loading preview...

Examples

Practical examples and common states for the same installable component.

Mega Menu

Rich multi-column navigation with grouped content sections.

examples/navigation-menu-mega-menu.tsx
import {
NavigationMenu,
NavigationMenuList,
NavigationMenuItem,
NavigationMenuTrigger,
NavigationMenuContent,
NavigationMenuLink,
NavigationMenuGroupHeading,
} from "@/components/wensity/navigation-menu";
export function MegaMenuNav() {
return (
<NavigationMenu>
<NavigationMenuList>
<NavigationMenuItem>
<NavigationMenuTrigger>Products</NavigationMenuTrigger>
<NavigationMenuContent width="w-[44rem]">
<div className="grid grid-cols-3 gap-4">
{/* Column groups with headings */}
</div>
</NavigationMenuContent>
</NavigationMenuItem>
<NavigationMenuItem>
<NavigationMenuLink href="/pricing">Pricing</NavigationMenuLink>
</NavigationMenuItem>
</NavigationMenuList>
</NavigationMenu>
);
}

Icons

Visual icons for faster wayfinding and recognition.

examples/navigation-menu-icons.tsx
import {
NavigationMenu,
NavigationMenuList,
NavigationMenuItem,
NavigationMenuTrigger,
NavigationMenuLink,
NavigationMenuIcon,
} from "@/components/wensity/navigation-menu";
import { IconHome, IconSettings } from "@tabler/icons-react";
export function IconsNav() {
return (
<NavigationMenu>
<NavigationMenuList>
<NavigationMenuItem>
<NavigationMenuLink href="/">
<NavigationMenuIcon><IconHome /></NavigationMenuIcon>
Home
</NavigationMenuLink>
</NavigationMenuItem>
</NavigationMenuList>
</NavigationMenu>
);
}

Descriptions

Supporting text beneath links to guide user intent.

examples/navigation-menu-descriptions.tsx
import {
NavigationMenu,
NavigationMenuList,
NavigationMenuItem,
NavigationMenuTrigger,
NavigationMenuContent,
} from "@/components/wensity/navigation-menu";
export function DescriptionsNav() {
return (
<NavigationMenu>
<NavigationMenuList>
<NavigationMenuItem>
<NavigationMenuTrigger>Products</NavigationMenuTrigger>
<NavigationMenuContent width="w-[24rem]">
{/* Links with descriptive text */}
</NavigationMenuContent>
</NavigationMenuItem>
</NavigationMenuList>
</NavigationMenu>
);
}

Nested

Submenus for deeper navigation hierarchies.

examples/navigation-menu-nested.tsx
import {
NavigationMenu,
NavigationMenuList,
NavigationMenuItem,
NavigationMenuTrigger,
NavigationMenuContent,
NavigationMenuSub,
NavigationMenuSubTrigger,
NavigationMenuSubContent,
} from "@/components/wensity/navigation-menu";
export function NestedNav() {
return (
<NavigationMenu>
<NavigationMenuList>
<NavigationMenuItem>
<NavigationMenuTrigger>Products</NavigationMenuTrigger>
<NavigationMenuContent width="w-[20rem]">
<NavigationMenuSub>
<NavigationMenuSubTrigger>Integrations</NavigationMenuSubTrigger>
<NavigationMenuSubContent>
{/* Nested items */}
</NavigationMenuSubContent>
</NavigationMenuSub>
</NavigationMenuContent>
</NavigationMenuItem>
</NavigationMenuList>
</NavigationMenu>
);
}

Compact

Minimal navigation for smaller interface headers.

examples/navigation-menu-compact.tsx
import {
NavigationMenu,
NavigationMenuList,
NavigationMenuItem,
NavigationMenuTrigger,
NavigationMenuContent,
NavigationMenuLink,
NavigationMenuIcon,
} from "@/components/wensity/navigation-menu";
export function CompactNav() {
return (
<NavigationMenu size="compact">
<NavigationMenuList>
<NavigationMenuItem>
<NavigationMenuTrigger showChevron={false}>
<NavigationMenuIcon><IconApps /></NavigationMenuIcon>
Products
</NavigationMenuTrigger>
<NavigationMenuContent width="w-[18rem]">
{/* Compact dropdown content */}
</NavigationMenuContent>
</NavigationMenuItem>
<NavigationMenuItem>
<NavigationMenuLink href="/docs">Docs</NavigationMenuLink>
</NavigationMenuItem>
</NavigationMenuList>
</NavigationMenu>
);
}