OverflowMenu

Kebab icon button revealing a menu of row-level actions

Category: overlay · WCAG 2.2-AA · overlay, menu, actions, kebab, table

Sizes

States

Props

PropTypeDefaultDescription
items{ label: string; value: string; icon?: ReactNode; disabled?: boolean; destructive?: boolean }[]The items to render.
onSelect(value: string) => voidCalled with the selected value.
placement'bottom-start' | 'bottom-end'bottom-endWhich trigger edge the menu aligns to. `bottom-end` hangs it from the trigger's end edge (right in LTR), `bottom-start` from its start edge.
labelstringAlias of `ariaLabel` — the same invisible accessible name under the other spelling. Neither is deprecated.
ariaLabelstringMore actionsAccessible label for the component.
size'sm' | 'md'mdVisual size of the component (e.g. 'sm', 'md', 'lg').
disabledbooleanfalseWhen true, disables the control and removes it from the tab order.
tabIndexnumberTab-order position of the trigger. Composite widgets that manage their own focus (a DataTable in grid keyboard mode) pass -1 so the menu is reachable by Enter on its cell without being an extra Tab stop.
classNamestringAdditional CSS class names merged onto the root element.

Design tokens

When to use

When not to use

How to build an accessible OverflowMenu in React →

Examples

Row actions

<OverflowMenu items={[{ label: "Edit", value: "edit" }, { label: "Delete", value: "delete", destructive: true }]} onSelect={handle} />

Small, start-aligned

<OverflowMenu size="sm" placement="bottom-start" items={items} />

Related components

← Back to docs