Dropdown Menu
Displays a menu to the user — such as a set of actions or functions — triggered by a button.
Examples
Basic
A basic dropdown menu with labels and separators.
View Code
Hide Code
<c-dropdown-menu>
<c-button slot="trigger" variant="outline">Open</c-button>
<div slot="content">
<c-dropdown-menu-group>
<c-dropdown-menu-label>My Account</c-dropdown-menu-label>
<c-dropdown-menu-item label="Profile"></c-dropdown-menu-item>
<c-dropdown-menu-item label="Billing"></c-dropdown-menu-item>
<c-dropdown-menu-item label="Settings"></c-dropdown-menu-item>
</c-dropdown-menu-group>
<c-dropdown-menu-separator></c-dropdown-menu-separator>
<c-dropdown-menu-item label="GitHub"></c-dropdown-menu-item>
<c-dropdown-menu-item label="Support"></c-dropdown-menu-item>
<c-dropdown-menu-item label="API" disabled></c-dropdown-menu-item>
</div>
</c-dropdown-menu>
Shortcuts
Add c-dropdown-menu-shortcut to show keyboard hints.
View Code
Hide Code
<c-dropdown-menu>
<c-button slot="trigger" variant="outline">Open</c-button>
<div slot="content">
<c-dropdown-menu-group>
<c-dropdown-menu-label>My Account</c-dropdown-menu-label>
<c-dropdown-menu-item label="Profile">
<c-dropdown-menu-shortcut>⇧⌘P</c-dropdown-menu-shortcut>
</c-dropdown-menu-item>
<c-dropdown-menu-item label="Billing">
<c-dropdown-menu-shortcut>⌘B</c-dropdown-menu-shortcut>
</c-dropdown-menu-item>
<c-dropdown-menu-item label="Settings">
<c-dropdown-menu-shortcut>⌘S</c-dropdown-menu-shortcut>
</c-dropdown-menu-item>
</c-dropdown-menu-group>
<c-dropdown-menu-separator></c-dropdown-menu-separator>
<c-dropdown-menu-item label="Log out">
<c-dropdown-menu-shortcut>⇧⌘Q</c-dropdown-menu-shortcut>
</c-dropdown-menu-item>
</div>
</c-dropdown-menu>
Icons
Combine icons with labels for quick scanning.
View Code
Hide Code
<c-dropdown-menu>
<c-button slot="trigger" variant="outline">Open</c-button>
<div slot="content">
<c-dropdown-menu-item>
<docs-lucide-icon icon="user" size="16"></docs-lucide-icon>
Profile
</c-dropdown-menu-item>
<c-dropdown-menu-item>
<docs-lucide-icon icon="credit-card" size="16"></docs-lucide-icon>
Billing
</c-dropdown-menu-item>
<c-dropdown-menu-item>
<docs-lucide-icon icon="settings" size="16"></docs-lucide-icon>
Settings
</c-dropdown-menu-item>
<c-dropdown-menu-separator></c-dropdown-menu-separator>
<c-dropdown-menu-item variant="destructive">
<docs-lucide-icon icon="log-out" size="16"></docs-lucide-icon>
Log out
</c-dropdown-menu-item>
</div>
</c-dropdown-menu>
Checkboxes
Use c-dropdown-menu-checkbox-item for toggles.
View Code
Hide Code
<c-dropdown-menu>
<c-button slot="trigger" variant="outline">Open</c-button>
<div slot="content">
<c-dropdown-menu-group>
<c-dropdown-menu-label>Appearance</c-dropdown-menu-label>
<c-dropdown-menu-checkbox-item
label="Status Bar"
checked
></c-dropdown-menu-checkbox-item>
<c-dropdown-menu-checkbox-item
label="Activity Bar"
disabled
></c-dropdown-menu-checkbox-item>
<c-dropdown-menu-checkbox-item
label="Panel"
></c-dropdown-menu-checkbox-item>
</c-dropdown-menu-group>
</div>
</c-dropdown-menu>
Checkboxes Icons
Add icons to checkbox items.
View Code
Hide Code
<c-dropdown-menu>
<c-button slot="trigger" variant="outline">Notifications</c-button>
<div slot="content">
<c-dropdown-menu-group>
<c-dropdown-menu-label>Notification Preferences</c-dropdown-menu-label>
<c-dropdown-menu-checkbox-item checked>
<docs-lucide-icon icon="mail" size="16"></docs-lucide-icon>
Email notifications
</c-dropdown-menu-checkbox-item>
<c-dropdown-menu-checkbox-item>
<docs-lucide-icon icon="message-square" size="16"></docs-lucide-icon>
SMS notifications
</c-dropdown-menu-checkbox-item>
<c-dropdown-menu-checkbox-item checked>
<docs-lucide-icon icon="bell" size="16"></docs-lucide-icon>
Push notifications
</c-dropdown-menu-checkbox-item>
</c-dropdown-menu-group>
</div>
</c-dropdown-menu>
Radio Group
Use c-dropdown-menu-radio-group for exclusive choices.
View Code
Hide Code
<c-dropdown-menu>
<c-button slot="trigger" variant="outline">Open</c-button>
<div slot="content">
<c-dropdown-menu-group>
<c-dropdown-menu-label>Panel Position</c-dropdown-menu-label>
<c-dropdown-menu-radio-group value="bottom">
<c-dropdown-menu-radio-item
value="top"
label="Top"
></c-dropdown-menu-radio-item>
<c-dropdown-menu-radio-item
value="bottom"
label="Bottom"
></c-dropdown-menu-radio-item>
<c-dropdown-menu-radio-item
value="right"
label="Right"
></c-dropdown-menu-radio-item>
</c-dropdown-menu-radio-group>
</c-dropdown-menu-group>
</div>
</c-dropdown-menu>
Radio Icons
Show radio options with icons.
View Code
Hide Code
<c-dropdown-menu>
<c-button slot="trigger" variant="outline">Payment Method</c-button>
<div slot="content">
<c-dropdown-menu-group>
<c-dropdown-menu-label>Select Payment Method</c-dropdown-menu-label>
<c-dropdown-menu-radio-group value="card">
<c-dropdown-menu-radio-item value="card">
<docs-lucide-icon icon="credit-card" size="16"></docs-lucide-icon>
Credit Card
</c-dropdown-menu-radio-item>
<c-dropdown-menu-radio-item value="paypal">
<docs-lucide-icon icon="wallet" size="16"></docs-lucide-icon>
PayPal
</c-dropdown-menu-radio-item>
<c-dropdown-menu-radio-item value="bank">
<docs-lucide-icon icon="building-2" size="16"></docs-lucide-icon>
Bank Transfer
</c-dropdown-menu-radio-item>
</c-dropdown-menu-radio-group>
</c-dropdown-menu-group>
</div>
</c-dropdown-menu>
Destructive
Use variant="destructive" for irreversible actions.
View Code
Hide Code
<c-dropdown-menu>
<c-button slot="trigger" variant="outline">Actions</c-button>
<div slot="content">
<c-dropdown-menu-group>
<c-dropdown-menu-item>
<docs-lucide-icon icon="pencil" size="16"></docs-lucide-icon>
Edit
</c-dropdown-menu-item>
<c-dropdown-menu-item>
<docs-lucide-icon icon="share" size="16"></docs-lucide-icon>
Share
</c-dropdown-menu-item>
</c-dropdown-menu-group>
<c-dropdown-menu-separator></c-dropdown-menu-separator>
<c-dropdown-menu-group>
<c-dropdown-menu-item variant="destructive">
<docs-lucide-icon icon="trash" size="16"></docs-lucide-icon>
Delete
</c-dropdown-menu-item>
</c-dropdown-menu-group>
</div>
</c-dropdown-menu>
API Reference
c-dropdown-menu
The root container component that manages the dropdown state and positioning.
Events: Fires openchange event with { open: boolean } when menu state changes.
Slots: Use trigger slot for the trigger element and content slot for menu items.
c-dropdown-menu-item
A selectable menu item.
Events: Fires select event with { label: string } when item is selected.
c-dropdown-menu-checkbox-item
A menu item with checkbox state.
Events: Fires change event with { checked: boolean, label: string } when state changes.
c-dropdown-menu-radio-group
Container for radio items with single selection.
Events: Fires change event with { value: string } when selection changes.
Additional Components
c-dropdown-menu-radio-item: Radio item with value, label, and disabled props.
c-dropdown-menu-label: Non-interactive label with inset prop for alignment.
c-dropdown-menu-separator: Visual divider with no props.
c-dropdown-menu-group: Container for grouping items with no props.
c-dropdown-menu-group-heading: Group heading with inset prop.
c-dropdown-menu-shortcut: Keyboard shortcut display with content via default slot.