Skip to main content

Menu

Dropdown menu with trigger, floating positioning, and keyboard navigation.

Preview
Loading preview…

Import

// Web Component
import '@kittl/ui';

// React
import { Menu, MenuTrigger, MenuItem } from '@kittl/ui-react';

Usage

Web Component

<kittl-menu placement="bottom-start">
<kittl-menu-trigger>
<kittl-button variant="secondary">Options</kittl-button>
</kittl-menu-trigger>
<kittl-menu-item>Edit</kittl-menu-item>
<kittl-menu-item>Duplicate</kittl-menu-item>
<kittl-menu-item destructive>Delete</kittl-menu-item>
</kittl-menu>

React

<Menu
placement="bottom-start"
onMenuOpen={() => console.log('opened')}
onMenuClose={() => console.log('closed')}
>
<MenuTrigger>
<Button variant="secondary">Options</Button>
</MenuTrigger>
<MenuItem onMenuItemSelect={() => console.log('edit')}>Edit</MenuItem>
<MenuItem onMenuItemSelect={() => console.log('duplicate')}>Duplicate</MenuItem>
<MenuItem destructive onMenuItemSelect={() => console.log('delete')}>Delete</MenuItem>
</Menu>
PropertyTypeDefaultDescription
placementPlacement'bottom-start'Floating-ui placement
openbooleanfalseWhether the menu is open
offsetnumber4Offset from trigger in pixels
PropertyTypeDefaultDescription
destructivebooleanfalseDestructive/danger styling
disabledbooleanfalseDisable the item
SlotDescription
icon-startIcon before the label
(default)Label text
icon-endIcon after the label

Events

EventSourceDetailDescription
menu-openMenuMenu opened
menu-closeMenuMenu closed
menu-item-selectMenuItemItem selected

React props: onMenuOpen, onMenuClose, onMenuItemSelect

Accessibility

  • Menu content has role="menu"
  • Items have role="menuitem"
  • Keyboard: ArrowUp/ArrowDown navigate items, Enter/Space select, Escape closes