Dropdown Menu
Anatomy
Section titled “Anatomy”<DropdownMenu> <DropdownMenuTrigger /> <DropdownMenuContent> <DropdownMenuLabel /> <DropdownMenuSeparator /> <DropdownMenuItem /> <DropdownMenuSub> <DropdownMenuSubTrigger /> <DropdownMenuSubContent> <DropdownMenuItem /> </DropdownMenuSubContent> </DropdownMenuSub> </DropdownMenuContent></DropdownMenu>To display a dropdown menu, compose <DropdownMenu>, <DropdownMenuTrigger>, <DropdownMenuContent>, and one or more of <DropdownMenuItem>.
import { Button } from "stylus-ui/Button";import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger,} from "stylus-ui/DropdownMenu";import { faAngleDown, faArrowRightFromBracket, faCreditCard, faKeyboard, faPlus, faQuestionCircle, faSliders, faTrash, faUser,} from "@fortawesome/pro-regular-svg-icons";
export default () => ( <DropdownMenu> <DropdownMenuTrigger asChild> <Button variant="secondary">Open Menu</Button> </DropdownMenuTrigger> <DropdownMenuContent> <DropdownMenuLabel variant="title">Menu Title</DropdownMenuLabel> <DropdownMenuSeparator /> <DropdownMenuItem icon={faUser} showShortcut shortcutText="⌘K"> Profile </DropdownMenuItem> <DropdownMenuItem icon={faCreditCard} showShortcut shortcutText="⌘B"> Billing </DropdownMenuItem> <DropdownMenuSub> <DropdownMenuSubTrigger icon={faSliders}> Settings </DropdownMenuSubTrigger> <DropdownMenuSubContent> <DropdownMenuItem icon={faArrowRightFromBracket}> Transfer account </DropdownMenuItem> <DropdownMenuItem variant="destructive" icon={faTrash}> Delete account </DropdownMenuItem> </DropdownMenuSubContent> </DropdownMenuSub> <DropdownMenuItem icon={faKeyboard}>Keyboard shortcuts</DropdownMenuItem> <DropdownMenuItem icon={faPlus} showTag disabled> New Team </DropdownMenuItem> <DropdownMenuItem icon={faQuestionCircle}>Support</DropdownMenuItem> <DropdownMenuSeparator /> <DropdownMenuItem icon={faArrowRightFromBracket} showShortcut shortcutText="esc" > Log Out </DropdownMenuItem> </DropdownMenuContent> </DropdownMenu>);Checkboxes
Section titled “Checkboxes”To display a multiselect dropdown with checkboxes, use <DropdownMenuCheckboxItem> instead of <DropdownMenuItem>.
import { Button } from "stylus-ui/Button";import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuCheckboxItem,} from "stylus-ui/DropdownMenu";import { useState } from "react";
export default () => { const [isHighContrastChecked, setIsHighContrastChecked] = useState(true); const [isReduceMotionChecked, setIsReduceMotionChecked] = useState(false); return ( <DropdownMenu> <DropdownMenuTrigger asChild> <Button variant="secondary" dropdown> Accessibility </Button> </DropdownMenuTrigger> <DropdownMenuContent> <DropdownMenuCheckboxItem checked={isHighContrastChecked} onCheckedChange={setIsHighContrastChecked} > Enable High Contrast </DropdownMenuCheckboxItem> <DropdownMenuCheckboxItem checked={isReduceMotionChecked} onCheckedChange={setIsReduceMotionChecked} > Reduce Motion </DropdownMenuCheckboxItem> </DropdownMenuContent> </DropdownMenu> );};Radio group
Section titled “Radio group”To display a radio button group, use <DropdownMenuRadioItem> and wrap the items in <DropdownMenuRadioGroup>.
import { Button } from "stylus-ui/Button";import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem,} from "stylus-ui/DropdownMenu";import { useState } from "react";import { faGrid, faGrid4, faGrid5 } from "@fortawesome/pro-regular-svg-icons";
export default () => { const [selectedValue, setSelectedValue] = useState("default"); return ( <DropdownMenu> <DropdownMenuTrigger asChild> <Button variant="secondary" dropdown> Density </Button> </DropdownMenuTrigger> <DropdownMenuContent> <DropdownMenuRadioGroup value={selectedValue} onValueChange={setSelectedValue} > <DropdownMenuRadioItem value="default" icon={faGrid}> Default </DropdownMenuRadioItem> <DropdownMenuRadioItem value="comfortable" icon={faGrid4}> Comfortable </DropdownMenuRadioItem> <DropdownMenuRadioItem value="compact" icon={faGrid5}> Compact </DropdownMenuRadioItem> </DropdownMenuRadioGroup> </DropdownMenuContent> </DropdownMenu> );};Submenus
Section titled “Submenus”To display a nested menu, compose <DropdownMenuSub>, <DropdownMenuSubTrigger>, <DropdownMenuSubContent>, and one or more of <DropdownMenuItem> within <DropdownMenuContent>.
import { Button } from "stylus-ui/Button";import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent,} from "stylus-ui/DropdownMenu";
export default () => ( <DropdownMenu> <DropdownMenuTrigger asChild> <Button variant="secondary" dropdown> Settings </Button> </DropdownMenuTrigger> <DropdownMenuContent> <DropdownMenuItem>Profile</DropdownMenuItem> <DropdownMenuItem>Billing</DropdownMenuItem> <DropdownMenuItem>Team</DropdownMenuItem> <DropdownMenuItem>Subscription</DropdownMenuItem> <DropdownMenuSub> <DropdownMenuSubTrigger>Theme</DropdownMenuSubTrigger> <DropdownMenuSubContent> <DropdownMenuItem>Light</DropdownMenuItem> <DropdownMenuItem>Dark</DropdownMenuItem> </DropdownMenuSubContent> </DropdownMenuSub> </DropdownMenuContent> </DropdownMenu>);API Reference
Section titled “API Reference”Basics
Section titled “Basics”DropdownMenu
Section titled “DropdownMenu”Contains all the parts of the menu.
DropdownMenuTrigger
Section titled “DropdownMenuTrigger”The button that, when clicked, toggles the menu.
Inherits properties from HTMLButtonElement.
DropdownMenuContent
Section titled “DropdownMenuContent”The element that pops out when the menu is open.
DropdownMenuLabel
Section titled “DropdownMenuLabel”A non-interactive label to provide a heading for a section of the DropdownMenu.
DropdownMenuSeparator
Section titled “DropdownMenuSeparator”A horizontal line to separate sections within the DropdownMenu.
DropdownMenuGroup
Section titled “DropdownMenuGroup”Used to group multiple DropdownMenuItems
DropdownMenuItem
Section titled “DropdownMenuItem”A single item within the dropdown menu.
Checkboxes
Section titled “Checkboxes”DropdownMenuCheckboxItem
Section titled “DropdownMenuCheckboxItem”A single checkbox item within the dropdown menu.
Radios
Section titled “Radios”DropdownMenuRadioGroup
Section titled “DropdownMenuRadioGroup”Used to group multiple DropdownMenuRadioItems
DropdownMenuRadioItem
Section titled “DropdownMenuRadioItem”A single radio item within the dropdown menu.
Submenus
Section titled “Submenus”DropdownMenuSub
Section titled “DropdownMenuSub”Contains all the parts of a sub menu.
DropdownMenuSubTrigger
Section titled “DropdownMenuSubTrigger”The button that, when clicked, toggles the dropdown sub menu.
Inherits properties from HTMLDivElement.
DropdownMenuSubContent
Section titled “DropdownMenuSubContent”The element that pops out when sub menu is open.
DropdownMenuPortal
Section titled “DropdownMenuPortal”When used, portals the content part into the body.