Components

DropdownMenu

Accessible dropdown menu with support for groups, submenus, checkboxes, and radio items.

Category: Navigation — Pattern: Base UI Overlay

Dependency: @base-ui-components/react/menu

Import

import {
  DropdownMenu,
  DropdownMenuTrigger,
  DropdownMenuContent,
  DropdownMenuItem,
  DropdownMenuCheckboxItem,
  DropdownMenuRadioItem,
  DropdownMenuLabel,
  DropdownMenuSeparator,
  DropdownMenuShortcut,
  DropdownMenuGroup,
  DropdownMenuSub,
  DropdownMenuSubTrigger,
  DropdownMenuSubContent,
} from "@hareru/ui"

Exports

NameTypeDescription
DropdownMenuComponentRoot dropdown context provider
DropdownMenuTriggerComponentElement that toggles the menu; supports asChild
DropdownMenuContentComponentFloating menu panel
DropdownMenuItemComponentClickable menu item; accepts inset prop
DropdownMenuCheckboxItemComponentMenu item with a checkbox; accepts checked and onCheckedChange
DropdownMenuRadioItemComponentMenu item within a radio group
DropdownMenuLabelComponentNon-interactive section label; accepts inset prop
DropdownMenuSeparatorComponentVisual divider between sections
DropdownMenuShortcutComponentKeyboard shortcut hint (right-aligned text)
DropdownMenuGroupComponentSemantic grouping wrapper
DropdownMenuSubComponentSubmenu root context
DropdownMenuSubTriggerComponentItem that opens a submenu; accepts inset prop
DropdownMenuSubContentComponentFloating panel for the submenu

Key Props

PropTypeComponentDescription
insetbooleanItem, Label, SubTriggerAdds left padding to align with items that have icons

Structure

  • DropdownMenuTrigger [trigger] (expected)
  • DropdownMenuContent [content] (expected)
    • DropdownMenuItem [item] ×N
      • DropdownMenuShortcut [description]
    • DropdownMenuCheckboxItem [item] ×N
    • DropdownMenuLabel [label]
    • DropdownMenuSeparator [separator] ×N
    • DropdownMenuGroup [container] ×N
    • DropdownMenuSub [submenu] ×N
      • DropdownMenuSubTrigger [trigger]
      • DropdownMenuSubContent [content]
    • DropdownMenuRadioGroup [container] ×N
      • DropdownMenuRadioItem [item] ×N

(expected) = recommended in canonical composition, not runtime-required.

Accessibility

  • Roles: menu
  • Keyboard:
    • Arrow keys to navigate items
    • Enter to select
    • Escape to close
  • Notes: ARIA menu pattern provided by Base UI.

Usage

import {
  DropdownMenu,
  DropdownMenuTrigger,
  DropdownMenuContent,
  DropdownMenuItem,
  DropdownMenuLabel,
  DropdownMenuSeparator,
  Button,
} from "@hareru/ui"

<DropdownMenu>
  <DropdownMenuTrigger asChild><Button variant="outline">Menu</Button></DropdownMenuTrigger>
  <DropdownMenuContent>
    <DropdownMenuLabel>Account</DropdownMenuLabel>
    <DropdownMenuSeparator />
    <DropdownMenuItem>Profile</DropdownMenuItem>
    <DropdownMenuItem>Settings</DropdownMenuItem>
    <DropdownMenuSeparator />
    <DropdownMenuItem>Log out</DropdownMenuItem>
  </DropdownMenuContent>
</DropdownMenu>

Notes

  • DropdownMenuCheckboxItem and DropdownMenuRadioItem manage their own internal state when used uncontrolled. Pass checked / onCheckedChange for controlled usage.
  • DropdownMenuRadioItem must be nested inside a DropdownMenuRadioGroup with a value prop.
  • DropdownMenuShortcut is purely decorative; keyboard shortcuts must be registered separately in your application.

On this page