Prototyper UI
Prototyper UI
Gallery

Getting Started

IntroductionGetting StartedInstallationCLI ReferenceMachine Mode PackageThemingFormsIntroductionDesign PrinciplesDesign Tokens

For AI Agents

Agent SetupLLMs.txtMCP ServerAgent Skills

Live Canvas

Getting StartedMCP Tools ReferenceAPI Reference

Compose

ComposeGetting StartedSpec FormatDynamic ExpressionsStreamingActions & EventsConditional RenderingValidationDX HelpersType SafetyStore AdaptersPrompt EngineeringComponent CatalogDevToolsCode ExportMCP IntegrationAPI Reference

Components

Actions

ButtonSegmented ControlToggleToggle GroupToolbar

Forms

AutocompleteCheckboxCheckbox GroupColor PickerComboboxFieldFieldsetFormFormFieldInputInputGroupLabelNumberFieldRadio GroupSelectSliderSwitchTextFieldTextarea

Overlays

Alert DialogCommand PaletteContext MenuDialogDrawerMenuMenubarPopoverHover CardTooltip

Navigation

BreadcrumbNavigation MenuTabs

Layout

AccordionCardCollapsibleColumnsContainerResizable PanelRowScroll AreaSectionSeparator

Data Display

AvatarBadgeTree View

Feedback

AlertMeterProgressSkeletonSpinnerToastChangelog

Menu

dropdown menu with submenus and selection built on base ui

Loading...

Installation

pnpm dlx shadcn@latest add https://prototyper-ui.com/r/menu.json
npx shadcn@latest add https://prototyper-ui.com/r/menu.json
yarn dlx shadcn@latest add https://prototyper-ui.com/r/menu.json
bunx --bun shadcn@latest add https://prototyper-ui.com/r/menu.json

This will add the following files to your project:

  • components/ui/menu.tsx

Usage

import {
  DropdownMenu,
  DropdownMenuTrigger,
  DropdownMenuContent,
  DropdownMenuItem,
} from "@/components/ui/menu";

<DropdownMenu>
  <DropdownMenuTrigger>Open Menu</DropdownMenuTrigger>
  <DropdownMenuContent>
    <DropdownMenuItem>Item 1</DropdownMenuItem>
    <DropdownMenuItem>Item 2</DropdownMenuItem>
  </DropdownMenuContent>
</DropdownMenu>;

Anatomy

<DropdownMenu>
  <DropdownMenuTrigger />
  <DropdownMenuContent>
    <DropdownMenuLabel />
    <DropdownMenuSeparator />
    <DropdownMenuGroup>
      <DropdownMenuItem />
    </DropdownMenuGroup>
    <DropdownMenuCheckboxItem />
    <DropdownMenuRadioGroup>
      <DropdownMenuRadioItem />
    </DropdownMenuRadioGroup>
    <DropdownMenuSub>
      <DropdownMenuSubTrigger />
      <DropdownMenuSubContent>
        <DropdownMenuItem />
      </DropdownMenuSubContent>
    </DropdownMenuSub>
  </DropdownMenuContent>
</DropdownMenu>
Sub-componentdata-slotPurposeRequired
DropdownMenudropdown-menuRoot provider, manages open/close stateYes
DropdownMenuTriggerdropdown-menu-triggerButton that opens the menuYes
DropdownMenuPortaldropdown-menu-portalRenders children into a portalNo
DropdownMenuContentdropdown-menu-contentThe popup panel containing menu itemsYes
DropdownMenuGroupdropdown-menu-groupGroups related menu itemsNo
DropdownMenuLabeldropdown-menu-labelNon-interactive label for a groupNo
DropdownMenuItemdropdown-menu-itemIndividual actionable menu itemYes
DropdownMenuCheckboxItemdropdown-menu-checkbox-itemToggleable checkbox menu itemNo
DropdownMenuRadioGroupdropdown-menu-radio-groupGroups radio menu itemsNo
DropdownMenuRadioItemdropdown-menu-radio-itemRadio-selectable menu itemNo
DropdownMenuSeparatordropdown-menu-separatorVisual separator between itemsNo
DropdownMenuShortcutdropdown-menu-shortcutKeyboard shortcut hint textNo
DropdownMenuSubdropdown-menu-subRoot for a submenuNo
DropdownMenuSubTriggerdropdown-menu-sub-triggerItem that opens a submenuNo
DropdownMenuSubContentdropdown-menu-sub-contentPopup panel for a submenuNo

Examples

Content

Loading...

Disabled Items

Loading...

Disabled Keys

Loading...

Links

Loading...

Long Press

Loading...

Reusable

Loading...

Sections

Loading...

Sections Dynamic

Loading...

Selection Multiple

Loading...

Selection Single

Loading...

Separators

Loading...

Sub Menu

Loading...

Sub Menu Dynamic

Loading...

Text Slots

Loading...

Styling

Data Slots

Use data-slot attributes to target specific parts of the menu:

Slot nameElement
dropdown-menuRoot provider (no DOM rendered)
dropdown-menu-triggerThe trigger button
dropdown-menu-portalPortal wrapper
dropdown-menu-contentThe popup panel
dropdown-menu-groupGroup wrapper
dropdown-menu-labelGroup label
dropdown-menu-itemIndividual menu item
dropdown-menu-checkbox-itemCheckbox menu item
dropdown-menu-radio-groupRadio group wrapper
dropdown-menu-radio-itemRadio menu item
dropdown-menu-separatorVisual separator line
dropdown-menu-shortcutKeyboard shortcut text
dropdown-menu-subSubmenu root
dropdown-menu-sub-triggerSubmenu trigger item
dropdown-menu-sub-contentSubmenu popup panel

Customization Examples

/* Change menu item highlight color */
[data-slot="dropdown-menu-item"][data-highlighted] {
  @apply bg-primary text-primary-foreground;
}

/* Wider menu popup */
[data-slot="dropdown-menu-content"] {
  @apply min-w-[12rem];
}
{
  /* Override styles via className */
}
<DropdownMenuContent className="w-64">
  <DropdownMenuItem className="font-medium">Custom Item</DropdownMenuItem>
</DropdownMenuContent>;

API Reference

DropdownMenu

Root component that manages open/close state.

Prop

Type

All Base UI Menu.Root props are forwarded via ...props.

DropdownMenuTrigger

Button that opens the menu when clicked.

Prop

Type

All Base UI Menu.Trigger props are forwarded via ...props.

DropdownMenuContent

The popup panel containing menu items, rendered inside a portal with a positioner.

Prop

Type

All Base UI Menu.Popup props are forwarded via ...props.

DropdownMenuGroup

Groups related menu items together.

All Base UI Menu.Group props are forwarded via ...props.

DropdownMenuLabel

Non-interactive label for a group of menu items.

Prop

Type

All Base UI Menu.GroupLabel props are forwarded via ...props.

DropdownMenuItem

Individual actionable menu item.

Prop

Type

All Base UI Menu.Item props are forwarded via ...props.

DropdownMenuCheckboxItem

Toggleable checkbox menu item with a check indicator.

Prop

Type

All Base UI Menu.CheckboxItem props are forwarded via ...props.

DropdownMenuRadioGroup

Groups radio menu items for single-selection behavior.

All Base UI Menu.RadioGroup props are forwarded via ...props.

DropdownMenuRadioItem

Radio-selectable menu item within a radio group.

Prop

Type

All Base UI Menu.RadioItem props are forwarded via ...props.

DropdownMenuSeparator

Visual separator between menu items or groups.

Prop

Type

All Base UI Menu.Separator props are forwarded via ...props.

DropdownMenuShortcut

Displays a keyboard shortcut hint aligned to the right of a menu item.

Prop

Type

All standard span props are forwarded via ...props.

DropdownMenuSub

Root provider for a submenu.

All Base UI Menu.SubmenuRoot props are forwarded via ...props.

DropdownMenuSubTrigger

Menu item that opens a submenu on hover or keyboard navigation.

Prop

Type

All Base UI Menu.SubmenuTrigger props are forwarded via ...props.

DropdownMenuSubContent

Popup panel for a submenu, rendered inside a portal with a positioner.

Prop

Type

All DropdownMenuContent props are forwarded via ...props.

Accessibility

Keyboard Interactions

KeyAction
SpaceActivates the focused menu item
EnterActivates the focused menu item
ArrowDownMoves focus to the next menu item
ArrowUpMoves focus to the previous menu item
ArrowRightOpens a submenu when focused on a sub-trigger
ArrowLeftCloses a submenu and returns focus to the parent trigger
EscapeCloses the menu
HomeMoves focus to the first menu item
EndMoves focus to the last menu item

ARIA Attributes

  • DropdownMenuContent receives role="menu".
  • DropdownMenuItem receives role="menuitem".
  • DropdownMenuCheckboxItem receives role="menuitemcheckbox" with aria-checked.
  • DropdownMenuRadioItem receives role="menuitemradio" with aria-checked.
  • DropdownMenuSub content receives role="menu" for nested menus.
  • data-disabled is set on disabled items, which sets aria-disabled.
  • Focus is managed within the menu and returns to the trigger when the menu closes.

Related

Related Components

Menubarused by

A horizontal menu bar with dropdown menus built on Base UI.

Drawer

slide-in panel anchored to any viewport edge

Menubar

A horizontal menu bar with multiple dropdown menus, built on Base UI

On this page

InstallationUsageAnatomyExamplesContentDisabled ItemsDisabled KeysLinksLong PressReusableSectionsSections DynamicSelection MultipleSelection SingleSeparatorsSub MenuSub Menu DynamicText SlotsStylingData SlotsCustomization ExamplesAPI ReferenceDropdownMenuDropdownMenuTriggerDropdownMenuContentDropdownMenuGroupDropdownMenuLabelDropdownMenuItemDropdownMenuCheckboxItemDropdownMenuRadioGroupDropdownMenuRadioItemDropdownMenuSeparatorDropdownMenuShortcutDropdownMenuSubDropdownMenuSubTriggerDropdownMenuSubContentAccessibilityKeyboard InteractionsARIA AttributesRelated