Navigation Menu

Flexible navigation surface with dropdown popups for grouped links.

Overview

The Navigation Menu component helps build adaptive, multi-level navigation bars using Base UI primitives. It pairs triggers with popup content, supports complex layouts, and keeps interactions accessible with full keyboard support.

Usage

import {
  NavigationMenu,
  NavigationMenuContent,
  NavigationMenuItem,
  NavigationMenuLink,
  NavigationMenuList,
  NavigationMenuTrigger,
} from "@tilt-legal/cubitt-components/primitives";
<NavigationMenu>
  <NavigationMenuList>
    <NavigationMenuItem>
      <NavigationMenuTrigger>Products</NavigationMenuTrigger>
      <NavigationMenuContent>...</NavigationMenuContent>
    </NavigationMenuItem>
  </NavigationMenuList>
</NavigationMenu>

Examples

Basic

API Reference

The root component that provides context for all navigation menu components.

PropTypeDefaultDescription
classNamestring-Additional CSS classes for the root.
childrenReactNode-Menu list and positioner components.

Container for navigation menu items. Renders as a <ul> element.

PropTypeDefaultDescription
classNamestring-Additional CSS classes for the list.
childrenReactNode-Navigation menu items.

Individual item within the navigation menu list. Renders as a <li> element.

PropTypeDefaultDescription
classNamestring-Additional CSS classes for the item.
childrenReactNode-Trigger and content components.

Button that toggles the visibility of the associated content popup.

PropTypeDefaultDescription
classNamestring-Additional CSS classes for the trigger.
childrenReactNode-Trigger button content.

Container for the popup content associated with a trigger. Supports animated transitions based on activation direction.

PropTypeDefaultDescription
classNamestring-Additional CSS classes for content.
childrenReactNode-Content to display in the popup.

Styled link component for navigation items. Supports polymorphic rendering via the render prop.

PropTypeDefaultDescription
classNamestring-Additional CSS classes for the link.
renderReact.ReactElement | function-Polymorphic rendering (e.g., Next.js Link).
activebooleanfalseWhether the link represents the current active location.
childrenReactNode-Link content.

Handles positioning of the popup relative to the trigger. Wraps the popup with collision detection.

PropTypeDefaultDescription
classNamestring-Additional CSS classes.
sideOffsetnumber10Distance from trigger in pixels.
collisionPadding{ top, bottom, left, right }{ top: 5, bottom: 5, left: 20, right: 20 }Viewport padding for collision detection.
childrenReactNode-NavigationMenuPopup component.

The popup surface that contains the content and viewport. Appears when a trigger is activated.

PropTypeDefaultDescription
classNamestring-Additional CSS classes for popup.
childrenReactNode-Popup content.

Optional arrow indicator that points from the popup to the active trigger.

PropTypeDefaultDescription
classNamestring-Additional CSS classes for arrow.

On this page