Chisle
The coding-agent plugin that bills 52% of a bare model across 20 live tasks. Terse persona + tool-output compressor + context diet.
翻訳待ち
Svelte 5 product tours: spotlight cutout, multi-page steps that survive reloads, click-the-real-button steps, beacons, a11y, JSON tours. Inspired by react-tourlight.
翻訳待ち
Loading the full README.
Read the full README ↗Product tours for Svelte 5: spotlight, multi-page, accessible, and defined as JSON.
npm i svelte-tourlight
# or
pnpm add svelte-tourlight
npmjs.com/package/svelte-tourlight · peer: svelte@^5 · runtime dependency: @floating-ui/dom
<!-- src/routes/+layout.svelte -->
<script lang="ts">
import { goto } from '$app/navigation';
import { SpotlightProvider, SpotlightTour } from 'svelte-tourlight';
let { children } = $props();
const steps = [
{ id: 'hi', title: 'Welcome', content: 'A centered step.' },
{ id: 'search', target: '[data-tour="search"]', title: 'Search', content: 'Find anything.' },
{
id: 'new',
target: '[data-tour="new"]',
title: 'Create',
content: 'Click it.',
advanceOn: { event: 'click' }
}
];
</script>
<SpotlightProvider theme="auto" persist navigate={(p) => goto(p)}>
<SpotlightTour id="onboarding" {steps} />
{@render children()}
</SpotlightProvider>
Start it from any component with useSpotlight().start('onboarding'). The Getting started guide covers base paths, persistence and the footer snippet.
goto) and survive reloadsadvanceOn)onEvent streamPass theme="light" | "dark" | "auto" or { base, ...tokens }, or set the --tourlight-* variables on .tourlight-root in your own CSS. The overlay is marked with data-tourlight-theme, never data-theme, so daisyUI (and other systems that switch themes on [data-theme]) don't redefine --color-* inside the tour. To use your daisyUI colours, map them: .tourlight-root { --tourlight-primary: var(--color-primary); }.
Our app is SvelteKit with Svelte 5. Using react-tourlight would mean shipping React and ReactDOM (about 45 KB gzipped), running a second framework and hydration system, and bridging routing and themes between them. A native runes port is smaller, fits SvelteKit routing and our design tokens directly, and is ours to extend.
| Export | What it does | Demo |
|---|---|---|
SpotlightProvider | Root component: theme, persistence, navigate, basePath, callbacks | Getting started |
SpotlightTour | Registers a tour's steps | Basic tour |
useSpotlight() | Reactive controller: start(id, { stepIndex }), next, skip, highlight, state | Basic tour |
Step route | Multi-page, route-aware steps | Multi-page |
Step advanceOn / interactive | Real input through the cutout | Interactive |
SpotlightBeacon, SpotlightHighlight | Hint dots and one-off callouts | Beacons |
svelte-tourlight/document | validateTourDocument, compileTourDocument, schema | JSON tours |
theme | Light, dark, auto, custom tokens | Themes |
sheetPosition, mobileBreakpoint | Phone sheet, docked away from low targets | Phone |
Built-in a11y, labels | Keys, focus, announcements, i18n | Accessibility |
Inspired by and ported from react-tourlight (MIT, © react-tourlight contributors), created by Bilal Tahir. See NOTICE.
reducedMotion | Force or follow the OS setting | Reduced motion |
onEvent and callbacks | Analytics | Analytics |
tooltip snippet, svelte-tourlight/core | Custom tooltip or a fully headless UI | Headless |