Skip to content
Velkin LogoVelkin Logo
Velkin
VELKIN/UI

Modern UI components for product teams and their AI agents. Lit core, typed wrappers, live MCP.

sales@velkinui.com

Product

  • Docs
  • Components
  • Studio
  • Pricing

Resources

  • Quick start
  • Blog
  • Changelog
  • Roadmap
  • Status

Project

  • About
  • Contact
  • License
  • Privacy
  • Terms

© 2026 Velkin. MIT core · Pro licenses available.

VELKIN

Tutorial

Pro

A tutorial component with spotlight overlays and guided popovers.

vu-tutorial · @velkin/react-pro/tutorial

Copy page

Import

React
npm i @velkin/react-pro

import { LicenseInfo } from "@velkin/license";
// Vite: import.meta.env.VITE_VELKIN_LICENSE_KEY
// Next: process.env.NEXT_PUBLIC_VELKIN_LICENSE_KEY
LicenseInfo.setLicenseKey(import.meta.env.VITE_VELKIN_LICENSE_KEY ?? process.env.NEXT_PUBLIC_VELKIN_LICENSE_KEY ?? "");

// @velkin-pro
import { VuTutorial } from "@velkin/react-pro/tutorial";

Examples

API

Props

PropTypeDefaultDescription
stepsTutorialStep[][]Tutorial steps; filtered with `step.when()` before running.
openbooleanfalseWhether the overlay is visible.
startIndexnumber0Index used by `start()`.
closeOnBackdropbooleantrueClose when the dimmed mask is clicked (overridable per step).
closeOnEscapebooleantrueClose on Escape.
lockScrollbooleantrueLock body scroll while open.
spotlightPaddingnumber0Extra padding around target rects.
spotlightRadiusnumber14Spotlight corner radius.
popoverMaxWidthnumber380Max width of the tip panel.
zIndexnumber9999Overlay z-index.
progressTutorialProgress"counter"Progress indicator style.
showGroupbooleantrueShow step group label.
tourIdstring"default"Persistence key id.
versionstring"v1"Persistence key version.
persistbooleantruePersist progress in localStorage.
navigate(route: string) => void | Promise<void>—SPA navigation for route steps.
waitForRouteReady() => void | Promise<void>—Await route readiness after navigate.
labelsPartial{}Override chrome labels.
variantVuTutorialVariant"elevated"Floating tip surface recipe. Default: `"elevated"`.
toneVuTutorialTone"normal"Neutral overlay weight. Default: `"normal"`.
sizeVuTutorialSize"md"Tip panel size scale. Default: `"md"`.
radiusVuTutorialRadius"md"Tip panel corner radius. Default: `"md"`.

Events

EventDetailDescription
vu-openVuTutorialEventDetailTutorial opened.
vu-stepVuTutorialEventDetailStep entered.
vu-completeVuTutorialEventDetailAll steps completed.
vu-skipVuTutorialEventDetailTour skipped.
vu-closeVuTutorialEventDetailTutorial closed.
vu-missingVuTutorialMissingTargetDetailTarget could not be resolved.
vu-norouteVuTutorialRouteMissingNavigatorDetailRoute step without navigate.

Slots

SlotDescription
content:{stepId}Named slots for step-specific content (e.g. `content:first-step`).

CSS parts

PartDescription
layerFull-viewport overlay layer.
maskDimmed SVG mask with spotlight holes.
spotlightHighlighted target outline.
connectorsSVG connector layer.
connectorOne connector path.
annotationFloating annotation label.
popoverTip panel (role=dialog).
headerTitle/group row.
bodyStep content region.
footerAction button row.

Methods

MethodDescription
startOpens from an index.
nextAdvances one step.
backMoves one step back.
nextStepAlias for `next()`.
prevStepAlias for `back()`.
finishCompletes and closes.
skipSkips and closes.
resumeResumes from persisted progress.
resetClears persisted state.
isOpenWhether currently open.
getCurrentStepCurrent step metadata.
closeCloses the overlay.

Types

NameDefinition
TutorialProgress
"none" | "dots" | "bar" | "counter"
VuTutorialEventDetail
{
  tourId: string;
  version: string;
  index: number;
  total: number;
  stepId: string | null;
  group: string | null;
}
VuTutorialMissingTargetDetail
VuTutorialEventDetail & { target: string; }
VuTutorialRadius
"sm" | "md" | "lg"
VuTutorialRouteMissingNavigatorDetail
VuTutorialEventDetail & { route: string; }
VuTutorialSize
"sm" | "md" | "lg"
VuTutorialTone
"subtle" | "normal" | "strong"
VuTutorialVariant
"outline" | "elevated" | "soft"

Related

Feedback

  • AlertAn alert component with intent colors, variants, and optional dismiss.
  • DialogA dialog component with region slots, focus trap, and backdrop.
  • DrawerA drawer component with slide-in panel, backdrop, and focus trap.
  • NotificationA notification component that renders the toast viewport.
  • OverlayAn overlay component with backdrop and centered content slot.
  • PopoverA popover component with smart placement and a trigger slot.

Guides

  • Pro licenseLicenseInfo and Pro imports
  • AccessibilityLabels and overlays
  • AppearanceStatus colors

Browse

  • Previous: TooltipEarlier in the sidebar
  • Next: AccordionLater in the sidebar
  • All componentsBrowse the full index