Dropdown Menu
radix x animatedAnimated dropdown menu with enter/exit transitions. From Animate UI.
dropdownmenuanimatedanimateui
Code
dropdown-menu.tsx
"use client";
import { useState } from "react";
import { ChevronDown } from "lucide-react";
export function DropdownMenu({ items }: { items: { label: string; onClick: () => void }[] }) {
const [open, setOpen] = useState(false);
return (
<div className="relative">
<button onClick={() => setOpen(!open)} className="flex items-center gap-2 rounded-lg border border-border px-4 py-2 text-sm">
Options <ChevronDown className={`size-4 transition-transform ${open ? "rotate-180" : ""}`} />
</button>
{open && (
<>
<div className="fixed inset-0 z-10" onClick={() => setOpen(false)} />
<div className="absolute right-0 top-full z-20 mt-1 w-40 rounded-lg border border-border bg-card py-1 shadow-lg animate-[fadeIn_0.15s_ease-out]">
{items.map((item, i) => (
<button key={i} onClick={() => { item.onClick(); setOpen(false); }}
className="w-full px-4 py-2 text-left text-sm hover:bg-muted">{item.label}</button>
))}
</div>
</>
)}
</div>
);
}Use it in another build
Paste the code into a component file, keep your project tokens (background, brand, radius) and it themes itself. Or tell Claude Code: “add the Dropdown Menu component and wire it to my accent.”


