Dropdown Menu

Navigation
Overlay

Context menus with actions, checkboxes, and submenus.

Preview

Simple menu with actions

With Checkboxes

Menu items with checkbox states

With Submenu

Nested menu items

Props

Component API reference

DropdownMenuContent

PropTypeDefaultDescription
align'start' | 'center' | 'end''center'Alignment relative to trigger
sideOffsetnumber4Distance from trigger
classNamestringAdditional CSS classes

DropdownMenuItem

PropTypeDefaultDescription
disabledbooleanfalseDisable the item
destructivebooleanfalseDestructive/danger styling
onSelect() => voidSelection callback

DropdownMenuCheckboxItem

PropTypeDefaultDescription
checked*booleanChecked state
onCheckedChange(checked: boolean) => voidChange callback

Usage

Import and implementation examples

import {
  DropdownMenu,
  DropdownMenuContent,
  DropdownMenuItem,
  DropdownMenuLabel,
  DropdownMenuSeparator,
  DropdownMenuShortcut,
  DropdownMenuCheckboxItem,
  DropdownMenuSub,
  DropdownMenuSubContent,
  DropdownMenuSubTrigger,
} from '@/components/ui/dropdown-menu'
import { Button } from '@/components/ui/button'

// Basic dropdown
<DropdownMenu>
  <DropdownMenuTrigger asChild>
    <Button>Open</Button>
  </DropdownMenuTrigger>
  <DropdownMenuContent>
    <DropdownMenuLabel>My Account</DropdownMenuLabel>
    <DropdownMenuSeparator />
    <DropdownMenuItem>Profile</DropdownMenuItem>
    <DropdownMenuItem>Settings</DropdownMenuItem>
  </DropdownMenuContent>
</DropdownMenu>

// With checkbox items
<DropdownMenuCheckboxItem
  checked={showStatusBar}
  onCheckedChange={setShowStatusBar}
>
  Status Bar
</DropdownMenuCheckboxItem>

// With submenu
<DropdownMenuSub>
  <DropdownMenuSubTrigger>
    <UserPlus className="w-4 h-4" />
    <span>Invite users</span>
  </DropdownMenuSubTrigger>
  <DropdownMenuSubContent>
    <DropdownMenuItem>Email</DropdownMenuItem>
    <DropdownMenuItem>Message</DropdownMenuItem>
  </DropdownMenuSubContent>
</DropdownMenuSub>

Features

Built-in functionality

  • Keyboard navigation: Arrow keys, Enter, Escape support
  • Checkbox items: Multi-select with checkboxes
  • Nested submenus: Unlimited nesting depth
  • Keyboard shortcuts: Display shortcut hints
  • Destructive items: Special styling for danger actions
  • Icons support: Add icons to menu items
  • Labels & separators: Organize menu sections
  • Dark mode: Full dark mode support

Accessibility

Accessibility considerations

ARIA Attributes

Uses role="menu" for contentrole="menuitem" for itemsaria-checked for checkbox itemsaria-haspopup for submenus

Keyboard Navigation

KeyAction
Arrow DownMove to next item
Arrow UpMove to previous item
Arrow RightOpen submenu
Arrow LeftClose submenu
EnterSelect item
EscapeClose menu

Notes

  • Focus is trapped within menu
  • Clicking outside closes menu
  • Screen reader announces menu items