UNPKG

ui-ingredients

Version:

Headless component library for Svelte powered by zag

38 lines (37 loc) 1.3 kB
import { normalizeProps, reflect, useMachine } from '@zag-js/svelte'; import * as tour from '@zag-js/tour'; import { getEnvironmentContext } from '../environment-provider/enviroment-provider-context.svelte.js'; import { getLocaleContext } from '../locale-provider/locale-provider-context.svelte.js'; import { parts } from './tour-anatomy.js'; export function createTour(props) { const locale = getLocaleContext(); const environment = getEnvironmentContext(); const steps = $derived.by(() => { return props.steps?.map((step, index) => ({ id: `tour:${props.id}:step:${index}`, ...step, })); }); const service = useMachine(tour.machine, () => ({ dir: locale?.dir, getRootNode: environment?.getRootNode, ...props, steps, })); return reflect(() => { const api = tour.connect(service, normalizeProps); return { ...api, getTriggerProps() { return { id: `tour:${props.id}:trigger`, onclick() { api.start(); }, 'data-state': api.open ? 'open' : 'closed', ...parts.trigger.attrs, }; }, }; }); }