search⌘K

Menu

Last Updated: September 2026

Menus are interactive elevated surfaces that house a variety of actions or category of actions the user can take. Submenus are supported for flexibility in menu content organization.

Anatomy

link
Dotted grid scale: 8px
  1. 1Item
  2. 2Item
  3. 3Separator
  4. 4Danger item

Variants

link

Basic

Root + Trigger + Content + Item compound API.

With icons and shortcuts

LeftIcon, Label, and Right slots compose each row.

With descriptions

Label + Description for denser option lists.

Submenu

Nest Menu.SubmenuRoot with SubmenuTrigger and SubmenuContent.

Disabled item

disabled on Menu.Item prevents selection.

Usage Guidelines

link

When to use

  • •For contextual actions anchored to a control (row menus, overflow, profile).
  • •When several related actions should stay off the main chrome until needed.
  • •For nested action groups via SubmenuRoot / SubmenuTrigger / SubmenuContent.

When not to use

  • •For primary page navigation — use NavigationItem or Link.
  • •For a single action — use Button.
  • •For form field selection — use Select.
checkDo

Group related actions and place destructive items last with danger.

closeDon't

Don't use Menu as the app's primary navigation — use NavigationItem.

checkDo

Compose Trigger with render={<Button … />} for accessible open controls.

closeDon't

Don't omit Menu.Item.Label — every item needs a clear name.

Behaviors

link

Compound parts

  • •Menu (Root), Trigger, Backdrop, Content, Item, Separator, SubmenuRoot, SubmenuTrigger, SubmenuContent.
  • •Menu.Item merges ListItem slots: Label, Description, LeftIcon, RightIcon, Left, Right, Submenu.

Positioning

  • •Content accepts align, side, sideOffset, alignOffset, and keepMounted.
  • •SubmenuContent defaults to side="right" with a fixed offset.

Outside menu roots

  • •Menu.Item can render as a ListItem when used outside Menu root context.
  • •Inside a Menu root it wires Base UI menu item behavior automatically.

Content Guidelines

link

Labels

  • •Start with verbs for actions ('Export summary', 'Cancel visit').
  • •Keep labels short; put detail in Description when needed.

Accessibility

link

Text & Labels

  • •Every item needs a Label (or equivalent accessible name).
  • •Danger items should still read clearly without relying on color alone.

ARIA attributes

  • •Built on Base UI Menu — roles and aria-expanded are handled by the primitives.

Keyboard Support

  • •Enter / Space on Trigger opens.
  • •Arrow keys move between items; Enter activates.
  • •Escape closes; submenu arrows open nested menus.

WCAG Compliance Standards

FAQs

link

Is there an items=[] API?

No — compose Menu.Item children. Older pattern docs that pass items are outdated.

How do I open from a Button?

Use Menu.Trigger with render={<Button variant="neutral">…</Button>}.

How do submenus work?

Wrap SubmenuTrigger + SubmenuContent in SubmenuRoot. SubmenuTrigger auto-adds a chevron via Menu.Item.Submenu.

link