Skip to main content
196

Search Lumen

Find components, APIs, guides, and recipes.

GitHub
Web docs
Overlays and menus

useDropdownMenu

Manages dropdown menu disclosure — identical API to usePopover but sets aria-haspopup to "menu" for correct ARIA semantics on menu triggers.

Live component preview · Astro

Explore DropdownMenu

Try the component this hook connects to. The preview uses the Astro adapter; the React example below uses useDropdownMenu.

React usage

Import from @santi020k/lumen-react and spread the controller props onto the matching components.

tsxuseDropdownMenu example
import {
  DropdownMenu,
  DropdownMenuContent,
  DropdownMenuItem,
  DropdownMenuSeparator,
  DropdownMenuTrigger
} from '@santi020k/lumen-react'

export function ActionsMenu() {
  return (
    <DropdownMenu>
      <DropdownMenuTrigger>Actions</DropdownMenuTrigger>
      <DropdownMenuContent>
        <DropdownMenuItem>Edit</DropdownMenuItem>
        <DropdownMenuSeparator />
        <DropdownMenuItem status="Admin">Delete</DropdownMenuItem>
      </DropdownMenuContent>
    </DropdownMenu>
  )
}
import {
  DropdownMenu,
  DropdownMenuContent,
  DropdownMenuItem,
  DropdownMenuSeparator,
  DropdownMenuTrigger
} from '@santi020k/lumen-react'

export function ActionsMenu() {
  return (
    <DropdownMenu>
      <DropdownMenuTrigger>Actions</DropdownMenuTrigger>
      <DropdownMenuContent>
        <DropdownMenuItem>Edit</DropdownMenuItem>
        <DropdownMenuSeparator />
        <DropdownMenuItem status="Admin">Delete</DropdownMenuItem>
      </DropdownMenuContent>
    </DropdownMenu>
  )
}

Load @santi020k/lumen-react/styles.css once in your application. With React Server Components, put 'use client' at the top of the module that calls the hook. Follow the React setup guide for the framework boundary.

Options

PropertyTypeDefaultDescription
defaultOpenbooleanfalseInitial open state.
openboolean-Controlled open state.
onOpenChange(open: boolean) => void-Callback fired when the open state changes.
idstringautoExplicit id for the menu panel.

Controller return values

PropertyTypeDescription
rootPropsLumenProps<"div">Spread onto the root wrapper.
triggerPropsLumenProps<"button">Spread onto the menu trigger. Sets aria-haspopup="menu".
panelPropsLumenProps<"div">Spread onto the menu panel with keyboard navigation.
openbooleanCurrent open state.
close() => voidClose the menu.
toggle() => voidToggle the menu.
Web docsFull catalog