Skip to content

Dropdown

Menu built from compound components. Compose trigger, content, items, separators, and optional submenus.

Anatomy

vue
<script setup lang="ts">
import {
  Dropdown,
  DropdownTrigger,
  DropdownContent,
  DropdownItem,
  DropdownSeparator,
  DropdownSub,
  DropdownSubTrigger,
  DropdownSubContent,
  Button,
} from 'pomikit-ui'
</script>

<template>
  <Dropdown>
    <DropdownTrigger>
      <Button>Actions</Button>
    </DropdownTrigger>
    <DropdownContent>
      <DropdownItem icon="pencil" shortcut="F2">Rename</DropdownItem>
      <DropdownItem icon="copy">Duplicate</DropdownItem>
      <DropdownSeparator />
      <DropdownSub>
        <DropdownSubTrigger>More</DropdownSubTrigger>
        <DropdownSubContent>
          <DropdownItem>Archive</DropdownItem>
          <DropdownItem>Export</DropdownItem>
        </DropdownSubContent>
      </DropdownSub>
      <DropdownSeparator />
      <DropdownItem tone="danger" icon="trash">Delete</DropdownItem>
    </DropdownContent>
  </Dropdown>
</template>

Parts

ComponentRole
DropdownRoot (v-model:open, modal)
DropdownTriggerOpens the menu
DropdownContentPositioned panel
DropdownItemAction row (select event)
DropdownSeparatorVisual divider
DropdownSubNested menu root
DropdownSubTriggerOpens submenu
DropdownSubContentNested panel

Item props

PropNotes
iconBuilt-in icon name, or #icon slot
shortcutKeyboard hint text
activeMarks current selection
tone'neutral' | 'danger'
disabledNon-interactive

Keep styling to kit tokens; avoid teaching per-item aesthetics as the primary API.