Menu
An independent React adapter where Ark UI provides the parts and Zag maintains open state, focus, typeahead, and keyboard behavior.
Design
Functional preview
Running with the independent Ark UI adapter and Zag behavior.
Loading functional preview…
Anatomy
4
1 Item (
2 Icon (
3 Shortcut (
4 Separator (
.ds-menu__item) — actionable command with a required label.2 Icon (
.ds-menu__icon) — optional and decorative when text already names the action.3 Shortcut (
.ds-menu__shortcut) — optional and informational only.4 Separator (
.ds-menu__separator) — separates related action groups.
Default
States and selection
Usage
When to use
Use Menu when
The interface needs to present commands, shortcuts, or object actions. For a complete trigger pattern, use Action Menu.
Don't use Menu when
The user is choosing a form value; use Select, Radio, or Checkbox instead. If search or text entry is required, use Combobox.
Best practices
Content guidelines
| Rule | Example |
|---|---|
| Verbos de ação em sentence case | "Rename file", "Delete project" |
| Shortcuts apenas informativos | "R" ao lado de Rename — não substitui a ação |
| Destructive com linguagem clara | "Delete project" — não "Remove" |
When to choose this output
Choose this adapter in projects that adopted Ark UI and Zag as their behavioral architecture. Do not import it into the shadcn/Base UI output.
Implementation
- Status
- Beta
- Distribution
- Source adapter
Adapter source
packages/react/src/ark/menu.jsx
import {
Menu,
MenuContent,
MenuItem,
MenuTrigger,
} from '@tis/react/ark/menu'Accessibility
Keyboard interaction
| Key | Action |
|---|---|
Arrow Down / Arrow Up | Moves focus between items |
Home / End | First / last item |
Enter / Space | Activates focused item |
Escape | Closes menu and returns focus to trigger |
Accessibility
| WCAG criterion | Requirement | Status |
|---|---|---|
| 4.1.2 Name, Role, Value (A) | role="menu", role="menuitem", aria-haspopup, aria-expanded | ✓ |
| 2.1.1 Keyboard (A) | Arrow navigation, Enter/Space, Escape via initActionMenus or equivalent | ✓ |
| 2.4.3 Focus Order (A) | Initial focus on first item when open; return to trigger on close | ✓ |
Output responsibility
Preserve the Ark/Zag semantics and validate Escape, outside interaction, ARIA relationships, and focus return.
Validation evidence
Covered by its independent Storybook output plus browser, responsive, keyboard, Axe, and bundle checks.