Components
Dropdown Menu
A menu that appears from a trigger element, commonly used for action menus and contextual options.
Basic Usage
Use DropdownMenu for action menus triggered by buttons. The three-dot icon is commonly used for row actions in tables.
import {
DropdownMenu,
DropdownMenuTrigger,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuLabel,
DropdownMenuShortcut,
Button,
} from "@epilot/volt-ui"
import { IconDotsVertical, IconPencil, IconCopy, IconTrash } from "@tabler/icons-react"
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="tertiary" size="icon-sm">
<IconDotsVertical />
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent>
<DropdownMenuLabel>Actions</DropdownMenuLabel>
<DropdownMenuSeparator />
<DropdownMenuItem>
<IconPencil />
Edit
<DropdownMenuShortcut>Ctrl+E</DropdownMenuShortcut>
</DropdownMenuItem>
<DropdownMenuItem>
<IconCopy />
Duplicate
</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem destructive>
<IconTrash />
Delete
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>With Checkboxes
Use checkbox items for toggling options.
const [showStatus, setShowStatus] = useState(true)
const [showActivity, setShowActivity] = useState(false)
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="secondary">View Options</Button>
</DropdownMenuTrigger>
<DropdownMenuContent>
<DropdownMenuLabel>Toggle Columns</DropdownMenuLabel>
<DropdownMenuSeparator />
<DropdownMenuCheckboxItem
checked={showStatus}
onCheckedChange={setShowStatus}
>
Status
</DropdownMenuCheckboxItem>
<DropdownMenuCheckboxItem
checked={showActivity}
onCheckedChange={setShowActivity}
>
Activity
</DropdownMenuCheckboxItem>
</DropdownMenuContent>
</DropdownMenu>With Radio Items
Use radio items for single selection from a group.
const [sortBy, setSortBy] = useState("date")
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="secondary">Sort By</Button>
</DropdownMenuTrigger>
<DropdownMenuContent>
<DropdownMenuLabel>Sort Order</DropdownMenuLabel>
<DropdownMenuSeparator />
<DropdownMenuRadioGroup value={sortBy} onValueChange={setSortBy}>
<DropdownMenuRadioItem value="date">Date</DropdownMenuRadioItem>
<DropdownMenuRadioItem value="name">Name</DropdownMenuRadioItem>
<DropdownMenuRadioItem value="amount">Amount</DropdownMenuRadioItem>
</DropdownMenuRadioGroup>
</DropdownMenuContent>
</DropdownMenu>API Reference
DropdownMenu
Root component that manages the menu state.
DropdownMenuTrigger
The element that triggers the menu. Use asChild to render your own button.
| Prop | Type | Default | Description |
|---|---|---|---|
asChild | boolean | false | Render as child element instead of button. |
DropdownMenuContent
The container for menu items.
| Prop | Type | Default | Description |
|---|---|---|---|
sideOffset | number | 4 | Distance from trigger element. |
DropdownMenuItem
A menu item that can be selected.
| Prop | Type | Default | Description |
|---|---|---|---|
inset | boolean | false | Add left padding for alignment. |
destructive | boolean | false | Style as destructive action (red text). |
DropdownMenuCheckboxItem
A menu item with a checkbox.
| Prop | Type | Default | Description |
|---|---|---|---|
checked | boolean | - | Controlled checked state. |
onCheckedChange | (checked: boolean) => void | - | Called when state changes. |
DropdownMenuRadioGroup
Groups radio items together.
| Prop | Type | Default | Description |
|---|---|---|---|
value | string | - | Controlled value. |
onValueChange | (value: string) => void | - | Called when value changes. |
DropdownMenuRadioItem
A radio item within a group.
| Prop | Type | Default | Description |
|---|---|---|---|
value | string | - | Value when selected. |
DropdownMenuLabel
A label for grouping items.
| Prop | Type | Default | Description |
|---|---|---|---|
inset | boolean | false | Add left padding for alignment. |
DropdownMenuSeparator
A visual separator between items.
DropdownMenuShortcut
Displays keyboard shortcut text aligned to the right.
Keyboard Navigation
Enter/Space- Open menu, select itemArrowDown/ArrowUp- Navigate itemsEscape- Close menu- Type to search items