GitHubGitHub
← All components
Actions / component

Dropdown menu

An ARIA menu with roving focus, separators, danger items, and a trigger snippet that spreads onto your own button.

OpenDanger itemDisabled item
<DropdownMenu {items} label="Widget actions">  {#snippet trigger(props)}    <Button variant="ghost" chevron {...props}>Actions</Button>  {/snippet}</DropdownMenu>

Installation

pnpm add @chanrg/4ui

Import the stylesheet once, at the root of your app:

import '@chanrg/4ui/styles.css';

Usage

import { DropdownMenu } from '@chanrg/4ui';<DropdownMenu {items} label="Widget actions">  {#snippet trigger(props)}    <Button variant="ghost" chevron {...props}>Actions</Button>  {/snippet}</DropdownMenu>

API reference

Props

PropTypeDefaultDescription
itemsDropdownMenuItem[][]Items with id, label, icon, danger, disabled — or separators.
triggerSnippet<[TriggerProps]>icon buttonSpread the provided props onto your trigger.
onselect(id) => voidFires with the chosen item id.

CSS variables

VariableDescription
--4ui-surfacePrimary component surface.
--4ui-textPrimary foreground color.
--4ui-borderDefault control and panel border.

Accessibility

  • role="menu"/"menuitem" with ArrowUp/Down/Home/End roving focus.
  • Escape closes and returns focus to the trigger.

Dependencies

Icon, dismiss/portal/floating primitives