Dropdown Menu

Primitive / Moleculestable

Dropdown Menu

Action menu anchored to a trigger with keyboard navigation.

@glinui/uiComponent: dropdown-menu

Installation

Install from the package for shared ownership or from the registry for copy-paste control.

Package Manager

pnpm add @glinui/ui @glinui/tokens

Registry

pnpm dlx @glinui/cli@latest add dropdown-menu

Usage

Basic

TSX
1import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuItem } from "@glinui/ui"
2
3export function Demo() {
4 return (
5 <DropdownMenu>
6 <DropdownMenuTrigger>Open menu</DropdownMenuTrigger>
7 <DropdownMenuContent>
8 <DropdownMenuLabel>My Account</DropdownMenuLabel>
9 <DropdownMenuSeparator />
10 <DropdownMenuItem>Profile</DropdownMenuItem>
11 <DropdownMenuItem>Settings</DropdownMenuItem>
12 <DropdownMenuItem>Logout</DropdownMenuItem>
13 </DropdownMenuContent>
14 </DropdownMenu>
15 )
16}

Glass Variant

TSX
1import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem } from "@glinui/ui"
2
3export function Demo() {
4 return (
5 <DropdownMenu>
6 <DropdownMenuTrigger variant="glass">Glass menu</DropdownMenuTrigger>
7 <DropdownMenuContent variant="glass">
8 <DropdownMenuItem variant="glass">Profile</DropdownMenuItem>
9 <DropdownMenuItem variant="glass">Billing</DropdownMenuItem>
10 </DropdownMenuContent>
11 </DropdownMenu>
12 )
13}

Accessibility

  • Built on Radix DropdownMenu with full WAI-ARIA.
  • Focus is trapped within the menu when open.

Keyboard Interactions

KeyAction
Enter / SpaceOpen the menu or select an item.
Arrow Up / DownNavigate between menu items.
Arrow RightOpen a submenu.
Arrow LeftClose a submenu.
EscapeClose the menu.

ARIA Attributes

  • `role="menu"`
  • `role="menuitem"`
  • `aria-expanded`
  • `aria-haspopup`

Reduced Motion

Open/close transitions respect `prefers-reduced-motion`.

Affected properties

opacitytransform

API Reference

PropTypeRequiredDefaultDescription
openboolean--Controlled open state.
defaultOpenboolean--Initial open state.
onOpenChange(open: boolean) => void--Open state change handler.
modalboolean-trueTrap focus within the menu.
size"sm" | "md" | "lg"No"md"Variant option from dropdownMenuItemVariants.
variant"default" | "glass" | "frosted" | "outline" | "ghost"No"default"Variant option from dropdownMenuItemVariants.
PropTypeRequiredDefaultDescription
variant"default" | "glass" | "frosted" | "outline" | "ghost"NodefaultVisual treatment.
size"sm" | "md" | "lg"NomdDensity scale.
asChildboolean-falseRender as child element.
PropTypeRequiredDefaultDescription
variant"default" | "glass" | "frosted" | "outline" | "ghost"NodefaultVisual treatment.
size"sm" | "md" | "lg"NomdDensity scale.
sideOffsetnumber-4Distance from trigger in pixels.
align"start" | "center" | "end"-centerAlignment relative to trigger.
PropTypeRequiredDefaultDescription
variant"default" | "glass" | "frosted" | "outline" | "ghost"NodefaultVisual treatment.
insetboolean-falseAdds left padding for icon alignment.
disabledboolean-falsePrevents interaction.
size"sm" | "md" | "lg"No"md"Variant option from dropdownMenuItemVariants.
PropTypeRequiredDefaultDescription
insetboolean-falseAdds left padding for icon alignment.
size"sm" | "md" | "lg"No"md"Variant option from dropdownMenuItemVariants.
variant"default" | "glass" | "frosted" | "outline" | "ghost"No"default"Variant option from dropdownMenuItemVariants.

Source

Import directly from the package or browse the source on GitHub. Click any file to view it.

Import

import { DropdownMenu } from "@glinui/ui"

Source Files

Dependencies

@glinui/ui

Generated API Snapshot

Beta

Auto-extracted from TypeScript source in packages/ui/src/components/dropdown-menu.tsx. This section is in beta and may lag behind hand-curated docs. Regenerate with pnpm --filter @glinui/docs api:generate.

Generated: 2026-02-19T17:59:28.468Z · Full index: /docs/api-metadata

Primary Props Type

DropdownMenuProps

DropdownMenuCheckboxItemProps

PropTypeRequiredDefaultDescription
size"sm" | "md" | "lg"No"md"Variant option from dropdownMenuItemVariants.
variant"default" | "glass" | "frosted" | "outline" | "ghost"No"default"Variant option from dropdownMenuItemVariants.

DropdownMenuContentProps

PropTypeRequiredDefaultDescription
size"sm" | "md" | "lg"No"md"Variant option from dropdownMenuContentVariants.
variant"default" | "glass" | "frosted" | "outline" | "ghost"No"default"Variant option from dropdownMenuContentVariants.

DropdownMenuItemProps

PropTypeRequiredDefaultDescription
insetbooleanNo--
size"sm" | "md" | "lg"No"md"Variant option from dropdownMenuItemVariants.
variant"default" | "glass" | "frosted" | "outline" | "ghost"No"default"Variant option from dropdownMenuItemVariants.

DropdownMenuLabelProps

PropTypeRequiredDefaultDescription
insetbooleanNo--

DropdownMenuProps

No explicit fields extracted for this props type.

DropdownMenuRadioItemProps

PropTypeRequiredDefaultDescription
size"sm" | "md" | "lg"No"md"Variant option from dropdownMenuItemVariants.
variant"default" | "glass" | "frosted" | "outline" | "ghost"No"default"Variant option from dropdownMenuItemVariants.

DropdownMenuSeparatorProps

No explicit fields extracted for this props type.

DropdownMenuShortcutProps

No explicit fields extracted for this props type.

DropdownMenuSubContentProps

PropTypeRequiredDefaultDescription
size"sm" | "md" | "lg"No"md"Variant option from dropdownMenuContentVariants.
variant"default" | "glass" | "frosted" | "outline" | "ghost"No"default"Variant option from dropdownMenuContentVariants.

DropdownMenuSubTriggerProps

PropTypeRequiredDefaultDescription
insetbooleanNo--
size"sm" | "md" | "lg"No"md"Variant option from dropdownMenuItemVariants.
variant"default" | "glass" | "frosted" | "outline" | "ghost"No"default"Variant option from dropdownMenuItemVariants.

DropdownMenuTriggerProps

PropTypeRequiredDefaultDescription
size"sm" | "md" | "lg"No"md"Variant option from dropdownMenuTriggerVariants.
variant"default" | "glass" | "frosted" | "outline" | "ghost"No"default"Variant option from dropdownMenuTriggerVariants.