Displays a list of actions, links, or selections in a collapsible panel.
import { Button } from "@/components/ui/button";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuGroup,
DropdownMenuGroupLabel,
DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuShortcut,
DropdownMenuSub,
DropdownMenuSubTrigger,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
export function DropdownMenuDemo() {
return (
<DropdownMenu>
<DropdownMenuTrigger render={<Button variant="outline">Menu</Button>} />
<DropdownMenuContent className="w-52">
<DropdownMenuGroup>
<DropdownMenuGroupLabel>Preferences</DropdownMenuGroupLabel>
<DropdownMenuItem>
Dashboard
<DropdownMenuShortcut>⌘D</DropdownMenuShortcut>
</DropdownMenuItem>
<DropdownMenuItem>
Profile
<DropdownMenuShortcut>⌘P</DropdownMenuShortcut>
</DropdownMenuItem>
<DropdownMenuItem>
Notifications
<DropdownMenuShortcut>⌘N</DropdownMenuShortcut>
</DropdownMenuItem>
<DropdownMenuItem>
Documents
<DropdownMenuShortcut>⌘D</DropdownMenuShortcut>
</DropdownMenuItem>
<DropdownMenuSub>
<DropdownMenuSubTrigger>File Actions</DropdownMenuSubTrigger>
<DropdownMenuContent className="w-32">
<DropdownMenuItem>Upload Files</DropdownMenuItem>
<DropdownMenuItem>Download Files</DropdownMenuItem>
<DropdownMenuItem>Share Files</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenuSub>
</DropdownMenuGroup>
<DropdownMenuSeparator />
<DropdownMenuGroup>
<DropdownMenuItem disabled>
Settings
<DropdownMenuShortcut>⌘,</DropdownMenuShortcut>
</DropdownMenuItem>
<DropdownMenuItem>
Help & Support
<DropdownMenuShortcut>⌘H</DropdownMenuShortcut>
</DropdownMenuItem>
</DropdownMenuGroup>
<DropdownMenuSeparator />
<DropdownMenuItem variant="destructive">
Log out
<DropdownMenuShortcut>⌘L</DropdownMenuShortcut>
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
);
}
Installation
npx shadcn@latest add "https://eo-n.vercel.app/r/dropdown-menu"
Usage
Import all parts and piece them together.
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
<DropdownMenu>
<DropdownMenuTrigger>Open</DropdownMenuTrigger>
<DropdownMenuContent>
<DropdownMenuItem>Settings</DropdownMenuItem>
<DropdownMenuItem>Account</DropdownMenuItem>
<DropdownMenuItem>Notifications</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
Examples
Open On Hover
import { Bell, Home, User } from "lucide-react";
import { Button } from "@/components/ui/button";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
export function DropdownMenuHover() {
return (
<DropdownMenu openOnHover>
<DropdownMenuTrigger render={<Button variant="outline">Menu</Button>} />
<DropdownMenuContent className="w-52">
<DropdownMenuItem>
<Home />
Dashboard
</DropdownMenuItem>
<DropdownMenuItem>
<User />
Profile
</DropdownMenuItem>
<DropdownMenuItem>
<Bell />
Notifications
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
);
}
Radio Group
import { Button } from "@/components/ui/button";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuGroup,
DropdownMenuGroupLabel,
DropdownMenuRadioGroup,
DropdownMenuRadioItem,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
export function DropdownMenuRadio() {
return (
<DropdownMenu>
<DropdownMenuTrigger render={<Button variant="outline">Gender</Button>} />
<DropdownMenuContent className="w-52">
<DropdownMenuGroup>
<DropdownMenuGroupLabel>Gender</DropdownMenuGroupLabel>
<DropdownMenuSeparator className="my-1" />
<DropdownMenuRadioGroup defaultValue="male">
<DropdownMenuRadioItem value="male">Male</DropdownMenuRadioItem>
<DropdownMenuRadioItem value="female">Female</DropdownMenuRadioItem>
<DropdownMenuRadioItem value="others">Others</DropdownMenuRadioItem>
</DropdownMenuRadioGroup>
</DropdownMenuGroup>
</DropdownMenuContent>
</DropdownMenu>
);
}
Checkbox
import { Button } from "@/components/ui/button";
import {
DropdownMenu,
DropdownMenuCheckboxItem,
DropdownMenuContent,
DropdownMenuGroup,
DropdownMenuGroupLabel,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
export function DropdownMenuCheckbox() {
return (
<DropdownMenu>
<DropdownMenuTrigger
render={<Button variant="outline">Preferences</Button>}
/>
<DropdownMenuContent className="w-52">
<DropdownMenuGroup>
<DropdownMenuGroupLabel>Preferences</DropdownMenuGroupLabel>
<DropdownMenuSeparator className="my-1" />
<DropdownMenuCheckboxItem>
Enable Notifications
</DropdownMenuCheckboxItem>
<DropdownMenuCheckboxItem defaultChecked>
Dark Mode
</DropdownMenuCheckboxItem>
<DropdownMenuCheckboxItem>Automatic Updates</DropdownMenuCheckboxItem>
</DropdownMenuGroup>
</DropdownMenuContent>
</DropdownMenu>
);
}