Skip to content

Dropdown Menu

A trigger button with a floating list of actions or options. Used in toolbars, action menus, and "more options" (...) patterns.

Preview

Props

PropTypeDefaultDescription
itemsDropdownItem[]--Menu items
onSelect(value: string) => void--Selection handler
align'start' | 'end''start'Horizontal alignment
triggerReact.ReactElement--Trigger button element
FieldTypeDescription
labelstringItem text
valuestringSelection value
iconReactNodeLeading icon
dangerbooleanDestructive styling
disabledbooleanDisabled state
dividerbooleanRender as divider
activebooleanActive/selected state

Code example

React

tsx
import { Dropdown, Button } from '@thepace/lexicon/components';

<Dropdown
  trigger={<Button variant="secondary" size="sm">Actions ▾</Button>}
  items={[
    { label: 'Edit', value: 'edit', icon: <EditIcon /> },
    { label: 'Duplicate', value: 'duplicate', icon: <CopyIcon /> },
    { divider: true },
    { label: 'Delete', value: 'delete', danger: true },
  ]}
  onSelect={handleAction}
/>

Vanilla HTML

html
<div class="lex-dropdown">
  <button class="lex-button lex-button--secondary lex-button--sm">Actions ▾</button>
  <div class="lex-dropdown__panel" role="menu">
    <button class="lex-dropdown__item" role="menuitem">Edit</button>
    <button class="lex-dropdown__item" role="menuitem">Duplicate</button>
    <div class="lex-dropdown__divider" role="separator"></div>
    <button class="lex-dropdown__item lex-dropdown__item--danger" role="menuitem">Delete</button>
  </div>
</div>

CSS class reference

ClassPurpose
.lex-dropdownWrapper container
.lex-dropdown__panelFloating option list
.lex-dropdown__itemMenu item
.lex-dropdown__item--activeActive/selected item
.lex-dropdown__item--dangerDestructive item
.lex-dropdown__dividerSection separator

Accessibility

  • Panel uses role="menu", items use role="menuitem".
  • Arrow keys navigate items.
  • Enter or Space selects an item.
  • Escape closes the menu and returns focus to the trigger.
  • Trigger uses aria-haspopup="menu" and aria-expanded.

Guidelines

Do

  • Use for "more actions" menus in toolbars and table rows.
  • Keep the list under 8 items.
  • Separate destructive actions with a divider.

Don't

  • Don't use a dropdown for navigation — use the Menu component instead.
  • Don't use for form selection — use a Select input.

Released under the MIT License. A product by the pace.