A trigger that opens a list of selectable items, built on Radix's DropdownMenu for focus management, keyboard navigation and close on outside click or Escape.
Examples of v0.4.2 are shown as code; only the latest version runs live. Open the live examples →
Basic Dropdown Menu
1const siteItems = [2 { id: "site-1", label: "My BEhive Site" },3 { id: "site-2", label: "Second Site" },4 { id: "site-3", label: "Archived Site", disabled: true },5];67const BasicDropdownMenu = () => {8 const [selected, setSelected] = useState("site-1");9 const selectedLabel = siteItems.find((item) => item.id === selected)?.label;1011 return (12 <DropdownMenu13 trigger={<button type="button">{selectedLabel} ▾</button>}14 items={siteItems}15 onSelect={setSelected}16 />17 );18};1920render(<BasicDropdownMenu />);
Controlled Dropdown Menu
1const siteItems = [2 { id: "site-1", label: "My BEhive Site" },3 { id: "site-2", label: "Second Site" },4 { id: "site-3", label: "Archived Site", disabled: true },5];67const ControlledDropdownMenu = () => {8 const [open, setOpen] = useState(false);9 const [selected, setSelected] = useState("site-1");10 const selectedLabel = siteItems.find((item) => item.id === selected)?.label;1112 return (13 <>14 <p>Selected: {selectedLabel}</p>15 <DropdownMenu16 trigger={<button type="button">Toggle menu</button>}17 items={siteItems}18 open={open}19 onOpenChange={setOpen}20 onSelect={(id) => {21 setSelected(id);22 setOpen(false);23 }}24 />25 </>26 );27};2829render(<ControlledDropdownMenu />);