Just a Walkthrough
Features
- Spotlight highlight & darkened backdrop (3 panel overlay + focus ring)
- Accessible keyboard navigation (Esc / Enter / ← →) + focus trap
- Auto scroll + responsive reposition on scroll/resize/mutations
- Step hooks (beforeStep / afterStep) & lifecycle callbacks
- Chain multiple tours with persistence-aware skipping
- LocalStorage progress persistence & resume support
- Optional once‑per‑session logic via orchestrator helper
- Custom tooltip renderer + theming (default, tailwind, unstyled)
- Works with any DOM (vanilla, React, shadcn, portals)
- Tiny, tree‑shakeable (no external deps)
Install
Quick Start
Orchestrator
API Surface (Core)
- start(index?) – begin tour (auto called by helper)
- next()/prev()
- finish() – mark completed & cleanup
- skip(reason?)
- destroy() – cleanup without marking completed
Theming
Chain Multiple Tours
Advanced Usage Notes
- Use waitMs: 0 (or global stepWaitMs: 0) for elements that are guaranteed to be present to avoid unnecessary polling.
- Prefer chaining tours when you have progressive disclosure flows; persistent tours auto-skip if already completed, keeping chains idempotent.
- When dynamically removing highlighted elements mid-step (e.g. route transitions), the MutationObserver repositions but if the element disappears the next navigation call will resolve again. Consider guarding with required steps if element is critical.
Accessibility Notes
- Focus ring container traps tab order (unless disableFocusTrap: true)
- Live region announces step titles (aria-live="polite")
- Esc always available (when keyboard: true)
Zero-Wait Configuration
Contributions welcome. Open an issue or PR with ideas / improvements.