Skip to content

DropdownMenu ​

Default

Usage ​

tsx
import { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent } from '@tryvienna/ui'

<DropdownMenu>
  <DropdownMenuTrigger asChild>
    <Button variant="outline">Open Menu</Button>
  </DropdownMenuTrigger>
  <DropdownMenuContent className="w-56">
    <DropdownMenuLabel>My Account</DropdownMenuLabel>
    <DropdownMenuSeparator />
    <DropdownMenuGroup>
      <DropdownMenuItem>
        <UserIcon /> Profile
        <DropdownMenuShortcut>Cmd+P</DropdownMenuShortcut>
      </DropdownMenuItem>
      <DropdownMenuItem>
        <SettingsIcon /> Settings
        <DropdownMenuShortcut>Cmd+,</DropdownMenuShortcut>
      </DropdownMenuItem>
    </DropdownMenuGroup>
    <DropdownMenuSeparator />
    <DropdownMenuGroup>
      <DropdownMenuItem>
        <PlusIcon /> New Team
      </DropdownMenuItem>
    </DropdownMenuGroup>
    <DropdownMenuSeparator />
    <DropdownMenuItem>
      <LogOutIcon /> Log out
      <DropdownMenuShortcut>Cmd+Q</DropdownMenuShortcut>
    </DropdownMenuItem>
  </DropdownMenuContent>
</DropdownMenu>

Examples ​

Default ​

Default
tsx
<DropdownMenu>
  <DropdownMenuTrigger asChild>
    <Button variant="outline">Open Menu</Button>
  </DropdownMenuTrigger>
  <DropdownMenuContent className="w-56">
    <DropdownMenuLabel>My Account</DropdownMenuLabel>
    <DropdownMenuSeparator />
    <DropdownMenuGroup>
      <DropdownMenuItem>
        <UserIcon /> Profile
        <DropdownMenuShortcut>Cmd+P</DropdownMenuShortcut>
      </DropdownMenuItem>
      <DropdownMenuItem>
        <SettingsIcon /> Settings
        <DropdownMenuShortcut>Cmd+,</DropdownMenuShortcut>
      </DropdownMenuItem>
    </DropdownMenuGroup>
    <DropdownMenuSeparator />
    <DropdownMenuGroup>
      <DropdownMenuItem>
        <PlusIcon /> New Team
      </DropdownMenuItem>
    </DropdownMenuGroup>
    <DropdownMenuSeparator />
    <DropdownMenuItem>
      <LogOutIcon /> Log out
      <DropdownMenuShortcut>Cmd+Q</DropdownMenuShortcut>
    </DropdownMenuItem>
  </DropdownMenuContent>
</DropdownMenu>

With Checkboxes ​

With Checkboxes
tsx
<DropdownMenu>
  <DropdownMenuTrigger asChild>
    <Button variant="outline">View Options</Button>
  </DropdownMenuTrigger>
  <DropdownMenuContent className="w-56">
    <DropdownMenuLabel>Appearance</DropdownMenuLabel>
    <DropdownMenuSeparator />
    <DropdownMenuCheckboxItem checked={showStatusBar} onCheckedChange={setShowStatusBar}>
      Status Bar
    </DropdownMenuCheckboxItem>
    <DropdownMenuCheckboxItem checked={showActivityBar} onCheckedChange={setShowActivityBar}>
      Activity Bar
    </DropdownMenuCheckboxItem>
    <DropdownMenuCheckboxItem checked={showPanel} onCheckedChange={setShowPanel}>
      Panel
    </DropdownMenuCheckboxItem>
  </DropdownMenuContent>
</DropdownMenu>

With Radio Group ​

With Radio Group
tsx
<DropdownMenu>
  <DropdownMenuTrigger asChild>
    <Button variant="outline">Panel Position</Button>
  </DropdownMenuTrigger>
  <DropdownMenuContent className="w-56">
    <DropdownMenuLabel>Panel Position</DropdownMenuLabel>
    <DropdownMenuSeparator />
    <DropdownMenuRadioGroup value={position} onValueChange={setPosition}>
      <DropdownMenuRadioItem value="top">Top</DropdownMenuRadioItem>
      <DropdownMenuRadioItem value="bottom">Bottom</DropdownMenuRadioItem>
      <DropdownMenuRadioItem value="right">Right</DropdownMenuRadioItem>
    </DropdownMenuRadioGroup>
  </DropdownMenuContent>
</DropdownMenu>

With Submenu ​

With Submenu
tsx
<DropdownMenu>
  <DropdownMenuTrigger asChild>
    <Button variant="outline">Actions</Button>
  </DropdownMenuTrigger>
  <DropdownMenuContent className="w-56">
    <DropdownMenuItem>
      <UserIcon /> Profile
    </DropdownMenuItem>
    <DropdownMenuSub>
      <DropdownMenuSubTrigger>
        <MailIcon /> Invite Users
      </DropdownMenuSubTrigger>
      <DropdownMenuSubContent>
        <DropdownMenuItem>
          <MailIcon /> Email
        </DropdownMenuItem>
        <DropdownMenuItem>
          <MessageSquareIcon /> Message
        </DropdownMenuItem>
        <DropdownMenuSeparator />
        <DropdownMenuItem>
          <CloudIcon /> More...
        </DropdownMenuItem>
      </DropdownMenuSubContent>
    </DropdownMenuSub>
    <DropdownMenuSeparator />
    <DropdownMenuItem>
      <SettingsIcon /> Settings
    </DropdownMenuItem>
  </DropdownMenuContent>
</DropdownMenu>

Destructive ​

Destructive
tsx
<DropdownMenu>
  <DropdownMenuTrigger asChild>
    <Button variant="outline">Manage</Button>
  </DropdownMenuTrigger>
  <DropdownMenuContent className="w-56">
    <DropdownMenuItem>
      <UserIcon /> Edit Profile
    </DropdownMenuItem>
    <DropdownMenuItem>
      <SettingsIcon /> Settings
    </DropdownMenuItem>
    <DropdownMenuSeparator />
    <DropdownMenuItem variant="destructive">
      <LogOutIcon /> Delete Account
    </DropdownMenuItem>
  </DropdownMenuContent>
</DropdownMenu>

API Reference ​

Also accepts all props from DropdownMenuPrimitive.Root.

Also accepts all props from DropdownMenuPrimitive.Portal.

Also accepts all props from DropdownMenuPrimitive.Trigger.

PropTypeDefaultDescription
sideOffsetnumber4

Also accepts all props from DropdownMenuPrimitive.Content.

Also accepts all props from DropdownMenuPrimitive.Group.

PropTypeDefaultDescription
insetboolean | undefined-
variant"default" | "destructive"default

Also accepts all props from DropdownMenuPrimitive.Item.

PropTypeDefaultDescription
checkedCheckedState | undefined-

Also accepts all props from DropdownMenuPrimitive.CheckboxItem.

Also accepts all props from DropdownMenuPrimitive.RadioGroup.

Also accepts all props from DropdownMenuPrimitive.RadioItem.

PropTypeDefaultDescription
insetboolean | undefined-

Also accepts all props from DropdownMenuPrimitive.Label.

Also accepts all props from DropdownMenuPrimitive.Separator.

Also accepts all props from span.

Also accepts all props from DropdownMenuPrimitive.Sub.

PropTypeDefaultDescription
insetboolean | undefined-

Also accepts all props from DropdownMenuPrimitive.SubTrigger.

Also accepts all props from DropdownMenuPrimitive.SubContent.

Data Attributes ​

Componentdata-slot
DropdownMenu"dropdown-menu"
DropdownMenuPortal"dropdown-menu-portal"
DropdownMenuTrigger"dropdown-menu-trigger"
DropdownMenuContent"dropdown-menu-content"
DropdownMenuGroup"dropdown-menu-group"
DropdownMenuItem"dropdown-menu-item"
DropdownMenuCheckboxItem"dropdown-menu-checkbox-item"
DropdownMenuRadioGroup"dropdown-menu-radio-group"
DropdownMenuRadioItem"dropdown-menu-radio-item"
DropdownMenuLabel"dropdown-menu-label"
DropdownMenuSeparator"dropdown-menu-separator"
DropdownMenuShortcut"dropdown-menu-shortcut"
DropdownMenuSub"dropdown-menu-sub"
DropdownMenuSubTrigger"dropdown-menu-sub-trigger"
DropdownMenuSubContent"dropdown-menu-sub-content"