Dropdown

Menu dropdowns with items, shortcuts, separators, and destructive actions.

Menu Button with Items

Basic dropdown with labeled items and icons. Use the <:item> slot for simple menu options.

<.menu_button content_class="w-52">
<.icon name="hero-user" class="size-4" /> Account
<:item navigate="/profile">Profile</:item>
<:item>Settings</:item>
<:item>Help</:item>
</.menu_button>

Menu with Keyboard Shortcuts

Display keyboard shortcuts for quick actions. Add the shortcut attribute to items.

<.menu_button content_class="w-56">
Actions
<:item shortcut="⌘P">Print</:item>
<:item shortcut="⌘S">Save</:item>
<:item shortcut="⇧⌘N">New File</:item>
<:item shortcut="⌘Q">Quit</:item>
</.menu_button>

Destructive Action Items

Use the destructive variant for actions that delete or remove data. These items appear with warning colors.

<.menu_button content_class="w-56" variant="outline">
Delete Options
<:item variant="destructive" shortcut="⌘⌫">
Delete File
</:item>
<:item variant="destructive">
Remove Folder
</:item>
</.menu_button>

Menu Separators

Group related items with separators using the <:items> slot and menu_separator component.

<.menu_button content_class="w-56">
More Options
<:items>
<.menu_item>View Details</.menu_item>
<.menu_item>Edit</.menu_item>
<.menu_separator />
<.menu_item>Share</.menu_item>
<.menu_item>Copy Link</.menu_item>
<.menu_separator />
<.menu_item variant="destructive">Delete</.menu_item>
</:items>
</.menu_button>

Custom Items with Event Handlers

Use the <:items> slot for full control over menu items. Supports phx-click handlers like the undo action below.

<.menu_button content_class="w-56">
Actions
<:items>
<.menu_item navigate="/settings">
  Settings
</.menu_item>
<.menu_item variant="destructive">
  Delete Profile
</.menu_item>
<.menu_separator />
<.menu_item phx-click="undo">
  Undo
</.menu_item>
</:items>
</.menu_button>

Import

use PUI

Description

A dropdown menu component that displays actions and options when triggered. Supports keyboard shortcuts, separators, destructive actions, and custom content. Built on top of Floating UI for precise positioning and smooth animations.

Props

Name Type Default Description
variant string "secondary" Button variant style (default, secondary, destructive, outline, ghost, link)
class string "" Additional CSS classes for the button
content_class string "" CSS classes for the dropdown content container

Examples

Usage Guidelines

Simple Items vs Custom Items

Use the <:item> slot for quick menu items with automatic rendering. Use <:items> when you need separators or more complex layouts with <.menu_item>.

Navigation Options

Menu items support navigate (LiveView navigation), patch (LiveView patch), and href (standard links).

Destructive Actions

Always use variant="destructive" for actions that delete, remove, or have significant consequences. This provides visual warning cues to users.

Accessibility

Dropdowns include proper ARIA attributes (role="menuitem", aria-haspopup, aria-expanded) and support keyboard navigation for accessible interaction.