Skip to content
Navigation

Menu

A dropdown context menu built on @angular/cdk/menu. Handles keyboard navigation, focus management, ARIA, and nested submenus.

LlmMenu + LlmMenuItem + LlmMenuTrigger
WCAG AA0 deps

Demo

Live PreviewReact
jsx
<LlmButton llmMenuTriggerFor={actionsMenu}>Actions ▾</LlmButton>
{/* In template: */}
<LlmMenu ref={actionsMenu}>
  <LlmMenuItem onTriggered={() => console.log('copy')}>Copy</LlmMenuItem>
  <LlmMenuItem onTriggered={() => console.log('paste')}>Paste</LlmMenuItem>
  <LlmMenuSeparator />
  <LlmMenuItem disabled={true}>Delete</LlmMenuItem>
</LlmMenu>

API (Angular)

PropTypeDefaultDescription
variant'default' | 'compact''default'Density of the menu

Composition parts

Menu is composed from the parts below. Each part is its own component — drop the ones you don't need.

LlmMenuItem

A selectable menu entry. Children render as the label.

PropTypeDefaultDescription
disabledbooleanfalsePrevents activation and skips the item in keyboard navigation.

LlmMenuSeparator

A visual divider between groups of menu items. Rendered with role="separator" — screen readers announce it as a group boundary. Takes no props.

Import

ts
import { LlmMenu, LlmMenuItem, LlmMenuSeparator, LlmMenuTrigger } from '@atelier-ui/angular';

Accessibility

ARIA rolemenu / menuitem

KeyAction
Enter / Space / Arrow DownOpen the menu from the trigger and focus the first item.
Arrow Up / DownMove between items, wrapping at the ends.
Home / EndJump to the first / last item.
Enter / SpaceActivate the focused item and close the menu.
EscapeClose and return focus to the trigger.
Arrow RightOpen a submenu (if present).
Arrow LeftClose the current submenu and return to parent.
  • The trigger carries aria-haspopup="menu" and aria-expanded.
  • Separators render as role="separator" and are skipped by keyboard navigation.