Dropdown Menu
A menu that appears when clicking a trigger element, providing a list of actions or options.
'use client';
import { Button } from '@/components/ui/button';
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from '@/components/ui/dropdown-menu';
export function DropdownMenuDefault() {
return (
<DropdownMenu>
<DropdownMenuTrigger render={<Button variant='outline' />}>
Open Menu
</DropdownMenuTrigger>
<DropdownMenuContent>
<DropdownMenuItem>Profile</DropdownMenuItem>
<DropdownMenuItem>Settings</DropdownMenuItem>
<DropdownMenuItem>Billing</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem>Log out</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
);
}
Installation
Usage
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu"<DropdownMenu>
<DropdownMenuTrigger>Open</DropdownMenuTrigger>
<DropdownMenuContent>
<DropdownMenuItem>Profile</DropdownMenuItem>
<DropdownMenuItem>Settings</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem>Log out</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>Examples
With Submenu
'use client';
import { Button } from '@/components/ui/button';
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuGroup,
DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuShortcut,
DropdownMenuSub,
DropdownMenuSubContent,
DropdownMenuSubTrigger,
DropdownMenuTrigger,
} from '@/components/ui/dropdown-menu';
export function DropdownMenuWithSubmenu() {
return (
<DropdownMenu>
<DropdownMenuTrigger render={<Button variant='outline' />}>
Open Menu
</DropdownMenuTrigger>
<DropdownMenuContent>
<DropdownMenuGroup>
<DropdownMenuItem>
New File
<DropdownMenuShortcut>⌘N</DropdownMenuShortcut>
</DropdownMenuItem>
<DropdownMenuItem>
Open File
<DropdownMenuShortcut>⌘O</DropdownMenuShortcut>
</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuSub>
<DropdownMenuSubTrigger>Share</DropdownMenuSubTrigger>
<DropdownMenuSubContent>
<DropdownMenuItem>Email</DropdownMenuItem>
<DropdownMenuItem>Messages</DropdownMenuItem>
<DropdownMenuSub>
<DropdownMenuSubTrigger>More options</DropdownMenuSubTrigger>
<DropdownMenuSubContent>
<DropdownMenuItem>Copy Link</DropdownMenuItem>
<DropdownMenuItem>QR Code</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem>AirDrop</DropdownMenuItem>
</DropdownMenuSubContent>
</DropdownMenuSub>
</DropdownMenuSubContent>
</DropdownMenuSub>
<DropdownMenuSeparator />
<DropdownMenuItem>
Print
<DropdownMenuShortcut>⌘P</DropdownMenuShortcut>
</DropdownMenuItem>
</DropdownMenuGroup>
</DropdownMenuContent>
</DropdownMenu>
);
}
Checkboxes
'use client';
import * as React from 'react';
import { Button } from '@/components/ui/button';
import {
DropdownMenu,
DropdownMenuCheckboxItem,
DropdownMenuContent,
DropdownMenuGroup,
DropdownMenuLabel,
DropdownMenuTrigger,
} from '@/components/ui/dropdown-menu';
export function DropdownMenuCheckboxes() {
const [emailNotifs, setEmailNotifs] = React.useState(true);
const [pushNotifs, setPushNotifs] = React.useState(false);
const [smsNotifs, setSmsNotifs] = React.useState(false);
return (
<DropdownMenu>
<DropdownMenuTrigger render={<Button variant='outline' />}>
Notifications
</DropdownMenuTrigger>
<DropdownMenuContent className='w-44'>
<DropdownMenuGroup>
<DropdownMenuLabel>Notify me via</DropdownMenuLabel>
<DropdownMenuCheckboxItem
checked={emailNotifs}
onCheckedChange={setEmailNotifs}
>
Email
</DropdownMenuCheckboxItem>
<DropdownMenuCheckboxItem
checked={pushNotifs}
onCheckedChange={setPushNotifs}
>
Push notifications
</DropdownMenuCheckboxItem>
<DropdownMenuCheckboxItem
checked={smsNotifs}
onCheckedChange={setSmsNotifs}
disabled
>
SMS
</DropdownMenuCheckboxItem>
</DropdownMenuGroup>
</DropdownMenuContent>
</DropdownMenu>
);
}
Radio Group
'use client';
import * as React from 'react';
import { Button } from '@/components/ui/button';
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuGroup,
DropdownMenuLabel,
DropdownMenuRadioGroup,
DropdownMenuRadioItem,
DropdownMenuTrigger,
} from '@/components/ui/dropdown-menu';
export function DropdownMenuRadioGroupDemo() {
const [sortBy, setSortBy] = React.useState('date');
return (
<DropdownMenu>
<DropdownMenuTrigger render={<Button variant='outline' />}>
Sort By
</DropdownMenuTrigger>
<DropdownMenuContent className='w-36'>
<DropdownMenuGroup>
<DropdownMenuLabel>Sort order</DropdownMenuLabel>
<DropdownMenuRadioGroup value={sortBy} onValueChange={setSortBy}>
<DropdownMenuRadioItem value='name'>Name</DropdownMenuRadioItem>
<DropdownMenuRadioItem value='date'>Date</DropdownMenuRadioItem>
<DropdownMenuRadioItem value='size'>Size</DropdownMenuRadioItem>
</DropdownMenuRadioGroup>
</DropdownMenuGroup>
</DropdownMenuContent>
</DropdownMenu>
);
}