The Context Menu machine provides accessible logic for dropdowns and context menus triggered by right-clicks or long-presses (approx. 700ms on pen/touch).
It exports two primary functions:
machine: The core behavior logic.connect: A function that maps the machine's behavior to JSX props and event handlers.
To implement a context menu, you should pass a unique id to useMachine to ensure generated element IDs remain predictable. To handle the right-click trigger, use api.getContextTriggerProps() provided by the machine.
import * as menu from "@zag-js/menu"
// Inside your component:
const service = useMachine(menu.machine, { id: 'my-menu' });
const { api, ...props } = connect(service, menu.connect);
// Apply context trigger props to your trigger element
<div {...api.getContextTriggerProps()} />