Dropdown Menu
Free Dropdown Menu examples built on the SevenUI Dropdown Menu component.Read the docs.
"use client";
import { LogOut, Settings, User } from "lucide-react";
import { Avatar, AvatarFallback } from "@/registry/base/ui/avatar";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuGroup,
DropdownMenuItem,
DropdownMenuLabel,
DropdownMenuSeparator,
DropdownMenuShortcut,
DropdownMenuTrigger,
} from "@/registry/base/ui/dropdown-menu";
export default function DropdownMenu01() {
return (
<DropdownMenu>
<DropdownMenuTrigger
render={
<button type="button" className="rounded-full outline-none focus-visible:ring-2 focus-visible:ring-ring">
<Avatar>
<AvatarFallback>MC</AvatarFallback>
</Avatar>
</button>
}
/>
<DropdownMenuContent align="end" className="w-56">
<DropdownMenuLabel>Maya Chen</DropdownMenuLabel>
<DropdownMenuSeparator />
<DropdownMenuGroup>
<DropdownMenuItem>
<User aria-hidden="true" />
Profile
<DropdownMenuShortcut>⇧⌘P</DropdownMenuShortcut>
</DropdownMenuItem>
<DropdownMenuItem>
<Settings aria-hidden="true" />
Settings
<DropdownMenuShortcut>⌘S</DropdownMenuShortcut>
</DropdownMenuItem>
</DropdownMenuGroup>
<DropdownMenuSeparator />
<DropdownMenuItem variant="destructive">
<LogOut aria-hidden="true" />
Log out
<DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
);
}$
npx shadcn@latest add https://sevenui.dev/r/component/dropdown-menu-01.json"use client";
import * as React from "react";
import { Button } from "@/registry/base/ui/button";
import {
DropdownMenu,
DropdownMenuCheckboxItem,
DropdownMenuContent,
DropdownMenuLabel,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/registry/base/ui/dropdown-menu";
const COLUMNS = [
{ key: "status", label: "Status" },
{ key: "assignee", label: "Assignee" },
{ key: "dueDate", label: "Due date" },
] as const;
type ColumnKey = (typeof COLUMNS)[number]["key"];
export default function DropdownMenu02() {
const [visible, setVisible] = React.useState<Record<ColumnKey, boolean>>({
status: true,
assignee: true,
dueDate: false,
});
return (
<DropdownMenu>
<DropdownMenuTrigger render={<Button variant="outline">View options</Button>} />
<DropdownMenuContent align="start" className="w-48">
<DropdownMenuLabel>Toggle columns</DropdownMenuLabel>
<DropdownMenuSeparator />
{COLUMNS.map((column) => (
<DropdownMenuCheckboxItem
key={column.key}
checked={visible[column.key]}
onCheckedChange={(checked) =>
setVisible((prev) => ({ ...prev, [column.key]: checked }))
}
>
{column.label}
</DropdownMenuCheckboxItem>
))}
</DropdownMenuContent>
</DropdownMenu>
);
}$
npx shadcn@latest add https://sevenui.dev/r/component/dropdown-menu-02.json"use client";
import * as React from "react";
import { Button } from "@/registry/base/ui/button";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuLabel,
DropdownMenuRadioGroup,
DropdownMenuRadioItem,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/registry/base/ui/dropdown-menu";
const SORT_OPTIONS = [
{ value: "newest", label: "Newest" },
{ value: "oldest", label: "Oldest" },
{ value: "az", label: "A-Z" },
] as const;
export default function DropdownMenu03() {
const [sort, setSort] = React.useState<string>("newest");
return (
<DropdownMenu>
<DropdownMenuTrigger render={<Button variant="outline">Sort by</Button>} />
<DropdownMenuContent align="start" className="w-40">
<DropdownMenuLabel>Sort by</DropdownMenuLabel>
<DropdownMenuSeparator />
<DropdownMenuRadioGroup value={sort} onValueChange={setSort}>
{SORT_OPTIONS.map((option) => (
<DropdownMenuRadioItem key={option.value} value={option.value}>
{option.label}
</DropdownMenuRadioItem>
))}
</DropdownMenuRadioGroup>
</DropdownMenuContent>
</DropdownMenu>
);
}$
npx shadcn@latest add https://sevenui.dev/r/component/dropdown-menu-03.json"use client";
import { FolderOpen, Trash2 } from "lucide-react";
import { Button } from "@/registry/base/ui/button";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuSub,
DropdownMenuSubContent,
DropdownMenuSubTrigger,
DropdownMenuTrigger,
} from "@/registry/base/ui/dropdown-menu";
const FOLDERS = ["Inbox", "Marketing", "Engineering", "Archive"];
export default function DropdownMenu04() {
return (
<DropdownMenu>
<DropdownMenuTrigger render={<Button variant="outline">Actions</Button>} />
<DropdownMenuContent align="start" className="w-48">
<DropdownMenuItem>Rename</DropdownMenuItem>
<DropdownMenuItem>Duplicate</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuSub>
<DropdownMenuSubTrigger>
<FolderOpen aria-hidden="true" />
Move to…
</DropdownMenuSubTrigger>
<DropdownMenuSubContent>
{FOLDERS.map((folder) => (
<DropdownMenuItem key={folder}>{folder}</DropdownMenuItem>
))}
</DropdownMenuSubContent>
</DropdownMenuSub>
<DropdownMenuSeparator />
<DropdownMenuItem variant="destructive">
<Trash2 aria-hidden="true" />
Delete
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
);
}$
npx shadcn@latest add https://sevenui.dev/r/component/dropdown-menu-04.json