svelte-tourlight GitHub

JSON tours

Tours can be plain data: reviewable in pull requests, validated in CI, and compiled to steps. Documents never execute code; handler names resolve only against a registry you pass in.

Valid: 3 steps
svelte-tourlight/document
import { compileTourDocument, validateTourDocument } from 'svelte-tourlight/document';
import doc from './onboarding.tour.json';

const { valid, issues } = validateTourDocument(doc);
// issues: [{ path: '$.steps[1].route', code: 'invalid-route', message: '…', severity: 'error' }]

const steps = compileTourDocument(doc, {
  actions: { openHelp: () => help.open() },
  conditions: { isAdmin: () => user.role === 'admin' }
});