NAVIGATION
DropdownMenu
Composable action menu built on Radix DropdownMenu. Memphis-bordered surface, full keyboard wiring (Enter / Space, arrows, Esc, type-ahead), and selection chrome on radio items that mirrors the NavItem gradient. For a non-menu floating panel (free-form preferences, an editor popover, custom chrome), reach for Popover instead.
Import
Basic actions
Mixed item types
DropdownMenu also exposes DropdownMenuCheckboxItem and DropdownMenuRadioGroup + DropdownMenuRadioItem when the menu drives state instead of firing actions.
Props
DropdownMenu props
| Prop | Type | Default | Description |
|---|---|---|---|
| open | boolean | — | Controlled open state on the root. |
| defaultOpen | boolean | — | Uncontrolled initial open state. |
| onOpenChange | (open: boolean) => void | — | Fires when the menu opens or closes. |
| modal | boolean | true | Prop on the root. Default modal traps focus. Set false to allow interaction with the rest of the page while open. |
| align | 'start' | 'center' | 'end' | 'center' | Prop on DropdownMenuContent. Inline alignment relative to the trigger. |
| side | 'top' | 'right' | 'bottom' | 'left' | 'bottom' | Prop on DropdownMenuContent. Preferred edge to anchor against. |
Accessibility
- Radix wires the ARIA Menu pattern: trigger gets
aria-haspopup+aria-expanded; items getrole="menuitem"/menuitemcheckbox/menuitemradio. - Keyboard: Enter / Space open the menu and activate items, arrows cycle, Esc closes, type-ahead jumps to the first item starting with the typed string.
DropdownMenu vs ContextMenu vs Popover
- DropdownMenu opens on click and is the standard "more actions" affordance.
- ContextMenu opens on right-click of an arbitrary surface (table rows, canvas, file lists).
- Popover is for free-form floating content (forms, search, help) — not a menu.