Skip to content

Overlays

DropdownMenu

A menu of actions.

When to reach for it

Actions. Items that navigate belong in a nav; items that set a value are a Select or a RadioGroup.

Examples

default

Notes

Radix DropdownMenu root + trigger, re-exported as typed passthroughs.

Props

Takes no props of its own.

Parts

Composed at the call site rather than configured through props, so a layout this component did not anticipate is still expressible.

DropdownMenuContent

A menu surface.

A menu is a list of ACTIONS. If the items navigate somewhere, they belong in a nav; if they set a value, that is a Select or a RadioGroup — Radix has menu variants for both, and a plain item pretending to be a choice loses the checked state a screen reader needs.

Also accepts everything in ComponentProps<typeof DropdownMenuPrimitive.Content>. Those are forwarded to the underlying element and are not listed row by row.

DropdownMenuItem

A menu row.

Highlight is driven by Radix's data-highlighted, which covers both pointer hover and keyboard focus — styling :hover alone leaves the keyboard user unable to see where they are.

DropdownMenuItem props
PropTypeDefaultDescription
destructivebooleanfalsePaints the row as destructive. Use for delete, revoke, disconnect.
iconLucideIconOptional leading icon, rendered before the label.

Also accepts everything in ComponentProps<typeof DropdownMenuPrimitive.Item>. Those are forwarded to the underlying element and are not listed row by row.

DropdownMenuSeparator

Hairline divider between menu groups.

Takes no props of its own.

DropdownMenuLabel

Mono eyebrow heading for a group of items.

Takes no props of its own.

Re-exports

DropdownMenu = DropdownMenuPrimitive.Root

Radix DropdownMenu root + trigger, re-exported as typed passthroughs.

DropdownMenuTrigger = DropdownMenuPrimitive.Trigger

Accessibility

  • Highlight is driven by data-highlighted, which covers hover AND keyboard focus — styling :hover alone leaves the keyboard user unable to see where they are.