NavigationMenu

Top-of-page marketing / product-site navigation. Each section expands into a popover panel that can hold images, descriptions, or multi-column link grids.

With grid panel

<NavigationMenu>
  <NavigationMenuList>
    <NavigationMenuItem>
      <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>
      <NavigationMenuContent>
        <ul className="grid gap-3 p-4 md:w-[400px] lg:w-[500px] lg:grid-cols-[.75fr_1fr]">
          {/* feature tile */}
          <li className="row-span-3">
            <NavigationMenuLink asChild>
              <a className="flex h-full flex-col justify-end rounded-md bg-muted p-5" href="/">
                <div className="mb-2 mt-4 text-lg font-medium">tidal</div>
                <p className="text-base leading-6 text-muted-foreground">
                  Beautifully designed components you can copy into your apps.
                </p>
              </a>
            </NavigationMenuLink>
          </li>
          <ListItem href="/" title="Introduction">
            Re-usable components built using Radix UI and Tailwind CSS.
          </ListItem>
          {/* …more items */}
        </ul>
      </NavigationMenuContent>
    </NavigationMenuItem>

    <NavigationMenuItem>
      <NavigationMenuLink className={navigationMenuTriggerStyle()} href="/">
        Documentation
      </NavigationMenuLink>
    </NavigationMenuItem>
  </NavigationMenuList>
</NavigationMenu>

Simple

<NavigationMenu>
  <NavigationMenuList>
    <NavigationMenuItem>
      <NavigationMenuTrigger>Products</NavigationMenuTrigger>
      <NavigationMenuContent>
        <ul className="grid w-[360px] gap-2 p-3">
          <ListItem href="#" title="Analytics">
            Track revenue, sessions, and funnel conversion.
          </ListItem>
          <ListItem href="#" title="Inbox">
            Unified support inbox with shared assignments.
          </ListItem>
        </ul>
      </NavigationMenuContent>
    </NavigationMenuItem>
    <NavigationMenuItem>
      <NavigationMenuLink className={navigationMenuTriggerStyle()} href="#">
        Pricing
      </NavigationMenuLink>
    </NavigationMenuItem>
  </NavigationMenuList>
</NavigationMenu>

Exports

ExportRole
NavigationMenuRoot. Renders the viewport automatically.
NavigationMenuListHorizontal list of items.
NavigationMenuItemSingle section — wraps a Trigger/Content pair or a Link.
NavigationMenuTriggerButton that opens a Content panel. Chevron rotates on open.
NavigationMenuContentPanel body, slotted into the shared Viewport.
NavigationMenuLinkPlain navigational link. Combine with navigationMenuTriggerStyle() for top-level links.
NavigationMenuIndicatorSmall caret that follows the active trigger.
NavigationMenuViewportAnimated sliding surface; rendered by default inside Root.
navigationMenuTriggerStylecva helper for applying the trigger style to plain Links.

When to use

  • Top-of-page marketing nav — grouped link panels under each section (e.g. "Products ▾" opens a grid of product links).
  • Prefer over Menubar when items are navigational links (not actions) and panels may include images, descriptions, or multi-column layouts.
  • Prefer over Tabs when the surfaces are separate pages (not a single layered view).
  • Don't use for app sidebars (Sidebar), dropdown action menus (DropdownMenu), or simple breadcrumb lists (Breadcrumb).

Source

packages/react/src/components/navigation-menu.tsx · Figma node 2819:28229