feat(apollo-vertex): onboarding tour — provider and welcome modal#953
feat(apollo-vertex): onboarding tour — provider and welcome modal#953petervachon wants to merge 1 commit into
Conversation
…me modal Adds the behavioral layer: OnboardingTourProvider orchestrates tour state, step sequencing, conditional gating via waitFor, and Joyride lifecycle events. OnboardingTourJoyrideWelcomeModal handles modal-type steps, rendered outside Joyride while the library is paused. Dark mode overlay color is reactive — a MutationObserver on the document root class updates the overlay immediately when the theme changes, including mid-tour. Co-Authored-By: Colin Reilly <colin.reilly@gmail.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Dependency License Review
License distribution
Excluded packages
|
There was a problem hiding this comment.
Pull request overview
Adds the runtime orchestration layer for the onboarding-tour-joyride registry feature in Apollo Vertex, introducing the provider that sequences Joyride steps (including conditional gating) and a dedicated welcome modal for modal-type steps.
Changes:
- Introduces
OnboardingTourProvideranduseOnboardingTour()to start tours, sequence steps, and handlewaitFor-gated advancement with persistence. - Adds
OnboardingTourJoyrideWelcomeModalplus a standalone...WelcomeModalCardfor static previews. - Replaces the popover’s hardcoded gradient glow with the shared
AiGlowprimitive, and exports/registry-wires the new modules.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| apps/apollo-vertex/registry/onboarding-tour-joyride/onboarding-tour-joyride-welcome-modal.tsx | Adds the welcome modal (Radix Dialog) and a standalone card variant. |
| apps/apollo-vertex/registry/onboarding-tour-joyride/onboarding-tour-joyride-provider.tsx | Adds the tour context/provider, Joyride integration, step sequencing, gating, and theme-aware overlay. |
| apps/apollo-vertex/registry/onboarding-tour-joyride/onboarding-tour-joyride-popover.tsx | Switches the popover glow to the shared AiGlow token-based primitive. |
| apps/apollo-vertex/registry/onboarding-tour-joyride/index.ts | Exports the provider/hook and welcome modal APIs from the registry entrypoint. |
| apps/apollo-vertex/registry.json | Registers the new provider and welcome modal files for the registry distribution targets. |
| function goBack() { | ||
| setStepIndex((prev) => Math.max(0, prev - 1)); | ||
| } |
| role="dialog" | ||
| aria-modal="true" | ||
| aria-labelledby={titleId} | ||
| aria-describedby={descriptionId} |
| {/* Close button */} | ||
| <Button | ||
| variant="ghost" | ||
| size="icon" | ||
| onClick={onClose} | ||
| className="absolute top-4 right-4 z-10" | ||
| aria-label="Close" | ||
| > | ||
| <X /> | ||
| </Button> |
| <Button onClick={onNext} size="lg" className="w-full" autoFocus> | ||
| {nextLabel} | ||
| </Button> |
| <Button | ||
| variant="ghost" | ||
| size="icon" | ||
| className="absolute top-4 right-4 z-10" | ||
| aria-label="Close" | ||
| > | ||
| <X /> | ||
| </Button> |
| <Button onClick={onNext} size="lg" className="w-full" autoFocus> | ||
| {nextLabel} | ||
| </Button> |
📊 Coverage + size by packagePer-package bundle size on this PR (no JS/TS source changes detected under
"Coverage" is each package's own |
0xr3ngar
left a comment
There was a problem hiding this comment.
why do we opt to create our own onboarding tour provider and implementation when we can use an existing lib for this like - https://onboardjs.com/ 🤔
this onboardjs allows us to provide our own UI/styles while solves the underlying functionality of this joyride experience??
I don't see the point in building/maintaining this when libs for this exist - @ruudandriessen maybe you have more context than me, can you chip in?
What this does
Adds the runtime layer of the Joyride onboarding tour component: the context provider that sequences tour steps, and the welcome modal that greets users at the start of a tour.
Builds on the popover card and type definitions that landed in #674.
What's included
OnboardingTourProvider— wraps your app (or a section of it) and exposesstartTour()andsetCondition()via context. Handles step sequencing, back/next navigation, conditional step gating viawaitFor, and marks tours as completed in localStorage so they don't repeat.useOnboardingTour()— hook for triggering a tour from any button or lifecycle event.OnboardingTourJoyrideWelcomeModal— a centered modal (Radix Dialog) that renders as the first step of a tour. Supports a hero image, title, body, and a CTA button. Also exported as a standaloneOnboardingTourJoyrideWelcomeModalCardfor static previews.What comes next
PR #676 adds the docs page with a live interactive demo and installation guide.
Changes from original PR
<AiGlow />so it uses the--ai-glow-start/--ai-glow-enddesign tokenstheme.generated.css— regenerated to include the missing--ai-glow-startand--ai-glow-endtoken definitionsTest plan
pnpm --filter apollo-vertex buildpassespnpm --filter apollo-vertex lintpasses🤖 Generated with Claude Code