DropdownMenu
A menu of actions or options triggered by a button.
$ npx @beaket/ui add dropdown-menuSource
import {
Cloud,
Code,
CreditCard,
Keyboard,
LifeBuoy,
LogOut,
Mail,
MessageSquare,
Plus,
PlusCircle,
Settings,
User,
UserPlus,
Users,
} from "lucide-react";
import { useState } from "react";
import { Button } from "@/components/ui/button";
import { DropdownMenu } from "@/components/ui/dropdown-menu";
const args = {};
const render = () => (
<DropdownMenu>
<DropdownMenu.Trigger asChild>
<Button variant="outline">Open Menu</Button>
</DropdownMenu.Trigger>
<DropdownMenu.Content>
<DropdownMenu.Label>My Account</DropdownMenu.Label>
<DropdownMenu.Separator />
<DropdownMenu.Item>
<User className="size-4" />
Profile
<DropdownMenu.Shortcut>⇧⌘P</DropdownMenu.Shortcut>
</DropdownMenu.Item>
<DropdownMenu.Item>
<CreditCard className="size-4" />
Billing
<DropdownMenu.Shortcut>⌘B</DropdownMenu.Shortcut>
</DropdownMenu.Item>
<DropdownMenu.Item>
<Settings className="size-4" />
Settings
<DropdownMenu.Shortcut>⌘S</DropdownMenu.Shortcut>
</DropdownMenu.Item>
<DropdownMenu.Item>
<Keyboard className="size-4" />
Keyboard shortcuts
<DropdownMenu.Shortcut>⌘K</DropdownMenu.Shortcut>
</DropdownMenu.Item>
<DropdownMenu.Separator />
<DropdownMenu.Item>
<LogOut className="size-4" />
Log out
<DropdownMenu.Shortcut>⇧⌘Q</DropdownMenu.Shortcut>
</DropdownMenu.Item>
</DropdownMenu.Content>
</DropdownMenu>
);
export default function Example() {
return <div className="flex h-full w-full items-center justify-center">{render()}</div>;
}Examples
All States
Source
import {
Cloud,
Code,
CreditCard,
Keyboard,
LifeBuoy,
LogOut,
Mail,
MessageSquare,
Plus,
PlusCircle,
Settings,
User,
UserPlus,
Users,
} from "lucide-react";
import { useState } from "react";
import { Button } from "@/components/ui/button";
import { DropdownMenu } from "@/components/ui/dropdown-menu";
export default () => (
<div className="flex flex-wrap gap-4">
<DropdownMenu>
<DropdownMenu.Trigger asChild>
<Button>Default</Button>
</DropdownMenu.Trigger>
<DropdownMenu.Content>
<DropdownMenu.Label>Actions</DropdownMenu.Label>
<DropdownMenu.Separator />
<DropdownMenu.Item>View</DropdownMenu.Item>
<DropdownMenu.Item>Edit</DropdownMenu.Item>
<DropdownMenu.Item>Delete</DropdownMenu.Item>
</DropdownMenu.Content>
</DropdownMenu>
<DropdownMenu>
<DropdownMenu.Trigger asChild>
<Button variant="outline">With Icons</Button>
</DropdownMenu.Trigger>
<DropdownMenu.Content>
<DropdownMenu.Item>
<User className="size-4" />
Profile
</DropdownMenu.Item>
<DropdownMenu.Item>
<Settings className="size-4" />
Settings
</DropdownMenu.Item>
<DropdownMenu.Separator />
<DropdownMenu.Item variant="destructive">
<LogOut className="size-4" />
Log out
</DropdownMenu.Item>
</DropdownMenu.Content>
</DropdownMenu>
<DropdownMenu>
<DropdownMenu.Trigger asChild>
<Button variant="outline">With Shortcuts</Button>
</DropdownMenu.Trigger>
<DropdownMenu.Content>
<DropdownMenu.Item>
Copy
<DropdownMenu.Shortcut>⌘C</DropdownMenu.Shortcut>
</DropdownMenu.Item>
<DropdownMenu.Item>
Paste
<DropdownMenu.Shortcut>⌘V</DropdownMenu.Shortcut>
</DropdownMenu.Item>
<DropdownMenu.Item>
Cut
<DropdownMenu.Shortcut>⌘X</DropdownMenu.Shortcut>
</DropdownMenu.Item>
</DropdownMenu.Content>
</DropdownMenu>
<DropdownMenu>
<DropdownMenu.Trigger asChild>
<Button variant="secondary">Disabled Items</Button>
</DropdownMenu.Trigger>
<DropdownMenu.Content>
<DropdownMenu.Item>Enabled</DropdownMenu.Item>
<DropdownMenu.Item disabled>Disabled</DropdownMenu.Item>
<DropdownMenu.Item>Enabled</DropdownMenu.Item>
</DropdownMenu.Content>
</DropdownMenu>
</div>
);Props
| Name | Type | Default | Description |
|---|---|---|---|
| Item.inset | boolean | — | Adds left padding to align with items that have icons |
| Item.variant | default | destructive | default | default | destructive. Visual style variant of the menu item |
| Label.inset | boolean | — | Adds left padding to align with items that have icons |
| SubTrigger.inset | boolean | — | Adds left padding to align with items that have icons |