Navigation Menu Flexible navigation surface with dropdown popups for grouped links.
NavigationMenu builds an accessible navigation bar with top-level links, triggers, and floating popup content. The trigger and top-level link styles use Cubitt link-button behavior, while popup links use menu-style contextual hover states.
Popup content is surface-aware: the popup lands at parent +2, its border and arrow edge match that surface level, and links inside the popup highlight at the next surface level.
import {
NavigationMenu,
NavigationMenuArrow,
NavigationMenuContent,
NavigationMenuItem,
NavigationMenuLink,
NavigationMenuList,
NavigationMenuPopup,
NavigationMenuPositioner,
NavigationMenuTrigger,
} from "@tilt-legal/cubitt-components/navigation-menu" ;
< NavigationMenu >
< NavigationMenuList >
< NavigationMenuItem >
< NavigationMenuLink href = "#" >About</ NavigationMenuLink >
</ NavigationMenuItem >
< NavigationMenuItem >
< NavigationMenuTrigger >Resources</ NavigationMenuTrigger >
< NavigationMenuContent >
< NavigationMenuLink href = "#" >Docs</ NavigationMenuLink >
</ NavigationMenuContent >
</ NavigationMenuItem >
</ NavigationMenuList >
< NavigationMenuPositioner >
< NavigationMenuPopup >
< NavigationMenuArrow />
</ NavigationMenuPopup >
</ NavigationMenuPositioner >
</ NavigationMenu >
Preview Code
import {
NavigationMenu,
NavigationMenuArrow,
NavigationMenuContent,
NavigationMenuItem,
NavigationMenuLink,
NavigationMenuList,
NavigationMenuPopup,
NavigationMenuPositioner,
NavigationMenuTrigger,
} from "@tilt-legal/cubitt-components/navigation-menu" ;
const resourceLinks = [
{ title: "Changelog" , href: "#" },
{ title: "Blog" , href: "#" },
{ title: "Docs" , href: "#" },
{ title: "Community" , href: "#" },
{ title: "Help" , href: "#" },
{ title: "Workshops" , href: "#" },
{ title: "Forum" , href: "#" },
{ title: "Careers" , href: "#" },
];
< NavigationMenu >
< NavigationMenuList >
< NavigationMenuItem >
< NavigationMenuLink href = "#" >About</ NavigationMenuLink >
</ NavigationMenuItem >
< NavigationMenuItem >
< NavigationMenuTrigger >Resources</ NavigationMenuTrigger >
< NavigationMenuContent >
< ul className = "grid w-[320px] grid-cols-2 gap-1" >
{resourceLinks. map (( item ) => (
< li key = {item.title}>
< NavigationMenuLink href = {item.href}>
{item.title}
</ NavigationMenuLink >
</ li >
))}
</ ul >
</ NavigationMenuContent >
</ NavigationMenuItem >
< NavigationMenuItem >
< NavigationMenuLink href = "#" >Support</ NavigationMenuLink >
</ NavigationMenuItem >
</ NavigationMenuList >
< NavigationMenuPositioner >
< NavigationMenuPopup >
< NavigationMenuArrow />
</ NavigationMenuPopup >
</ NavigationMenuPositioner >
</ NavigationMenu >;
Prop Type Default Description delaynumber0Delay before opening popup content. closeDelaynumber0Delay before closing popup content. classNamestring– Additional classes for the root. childrenReactNode– Menu list and popup positioner pieces.
Prop Type Default Description classNamestring– Additional classes for the list. childrenReactNode– Navigation menu items.
Prop Type Default Description classNamestring– Additional classes for the item. childrenReactNode– Trigger, link, or content children.
Prop Type Default Description showChevronbooleanfalseShow a rotating chevron beside the label. classNamestring– Additional classes for the trigger. childrenReactNode– Trigger content.
Prop Type Default Description classNamestring– Additional classes for the content transition. childrenReactNode– Content rendered into the popup viewport.
Top-level links render with link-button styling. Links inside NavigationMenuContent render with menu-item hover behavior.
Prop Type Default Description hrefstring– Link destination. activebooleanfalseMarks the link as representing current page. classNamestring– Additional classes for the link. childrenReactNode– Link content.
Prop Type Default Description sideOffsetnumber10Distance from trigger in pixels. collisionPadding{ top, bottom, left, right }{ top: 5, bottom: 5, left: 20, right: 20 }Viewport padding for collision handling. classNamestring– Additional classes for the positioner. childrenReactNode– Popup component.
Prop Type Default Description classNamestring– Additional classes for the popup. childrenReactNode– Popup adornments, usually the arrow.
Prop Type Default Description classNamestring– Additional classes for the arrow.