UNPKG

@zag-js/toggle

Version:

Core logic for the toggle widget implemented as a state machine

49 lines (48 loc) 917 B
// src/toggle.machine.ts import { createMachine } from "@zag-js/core"; var machine = createMachine({ props({ props }) { return { defaultPressed: false, ...props }; }, context({ prop, bindable }) { return { pressed: bindable(() => ({ value: prop("pressed"), defaultValue: prop("defaultPressed"), onChange(value) { prop("onPressedChange")?.(value); } })) }; }, initialState() { return "idle"; }, on: { "PRESS.TOGGLE": { actions: ["togglePressed"] }, "PRESS.SET": { actions: ["setPressed"] } }, states: { idle: {} }, implementations: { actions: { togglePressed({ context }) { context.set("pressed", !context.get("pressed")); }, setPressed({ context, event }) { context.set("pressed", event.value); } } } }); export { machine };