RRigdesign system
Overlays

Menu

A contextual list of actions with nested hierarchies and keyboard states.

Examples

Arrow keys move, Home/End jump, Esc closes and returns focus to the trigger

States

Rendered states (visual reference; the live example above is the accessible one)
DefaultHoverFocus visiblePressedDisabled
Menu item

Anatomy

Menu anatomy
#PartDescriptionPresence
1TriggerButton with aria-haspopupRequired
2Menu12px radius containerRequired
3ItemIcon slot 16px, labelRequired
4SeparatorDividerOptional

Specifications

Container radius12px
Item paddingtop 9px · left 12px
Icon slot16 × 16px

Interaction

Keyboard
KeyResult
Enter Space ↓Opens and focuses the first item
↑ ↓Moves between items
Home EndFirst / last item
Type a letterJumps to a matching item
EscCloses, focus returns to trigger
TabCloses the menu
Pointer and touch
TriggerResponse
ClickOpens; click on an item activates and closes
HoverItem tint
Outside clickCloses

Accessibility

role · menu

2.1.1Keyboard2.4.3Focus Order4.1.2Name, Role, Value
Requirements
RequirementHow Rig meets it
Rolesmenu and menuitem. Only for actions, never for site navigation.
Roving focustabindex="-1" on items, focus moved by script
Triggeraria-haspopup="menu", aria-expanded, aria-controls
DestructivePut it last, after a separator

Read the matching WAI pattern ↗

Usage

Do and don’t
DoDon’t
Use for 3 to 8 related actionsDo not use for navigation links (use a list of links)
Do not nest more than one submenu