Menu
A dropdown list of actions with full keyboard navigation. Supports separators, groups, shortcuts, and disabled items. Use the high-level wrapper for data-driven menus or compose the styled parts for full control.
Menu
base-ui docs ↗A dropdown list of actions with full keyboard navigation. Supports
separators, groups, and keyboard shortcuts. Items can be disabled
individually.
| Prop | Type | Default |
|---|---|---|
| trigger* | ReactElement<unknown, string | JSXElementConstructor<any>> | — |
The button/element that opens the menu. | ||
| items* | MenuEntry[] | — |
Array of menu entries: items, separators, and groups. | ||
| side | "top" | "bottom" | "left" | "right" | bottom |
Which edge of the trigger the menu appears on. | ||
| align | "start" | "center" | "end" | start |
Alignment along the side axis. | ||
| sideOffset | number | 4 |
Gap between the trigger and the menu popup in pixels. | ||
| open | boolean | — |
Controlled open state. | ||
| onOpenChange | ((open: boolean) => void) | — |
Called when the menu opens or closes. | ||
| className | string | — |
Styled Parts
base-ui docs ↗Pre-styled wrappers around the corresponding base-ui parts. All base-ui props are forwarded.
CSS Class Names
Available as keys on the MenuStyles object. Each key maps to a hashed CSS module class name at runtime.
arrowarrow-fillarrow-seamgroup-labelitemitem-indicatoritem-shortcutitem-textpopuppositionerseparatorsubmenu-trigger-icon