MenuButton

A button that opens an anchored action menu of one-shot commands

Category: navigation · WCAG 2.2-AA · navigation, menu, actions, dropdown, floating

Variants

Sizes

States

Props

PropTypeDefaultDescription
labelReactNodeTrigger button content
itemsMenuButtonItem[]Action items: { id, label, onSelect?, disabled? }
variant'primary' | 'secondary' | 'ghost''secondary'Trigger visual variant
size'sm' | 'md' | 'lg''md'Trigger size
disabledbooleanfalseDisables the trigger
align'start' | 'end''start'Aligns the menu to the start or end edge of the trigger
labels{ open?: string }Override the trigger accessible name

Design tokens

When to use

When not to use

How to build an accessible MenuButton in React →

Examples

Basic action menu

A secondary button that opens a list of actions

<MenuButton
  label="Actions"
  items={[
    { id: 'edit', label: 'Edit', onSelect: () => edit() },
    { id: 'duplicate', label: 'Duplicate', onSelect: () => duplicate() },
    { id: 'delete', label: 'Delete', onSelect: () => remove(), disabled: !canDelete },
  ]}
/>

End-aligned, primary

Aligns the menu to the trigger end edge

<MenuButton
  label="Create"
  variant="primary"
  align="end"
  items={[
    { id: 'doc', label: 'New document', onSelect: createDoc },
    { id: 'folder', label: 'New folder', onSelect: createFolder },
  ]}
/>

Related components

← Back to docs