import { useEffect } from 'react' import { AnimatePresence, motion } from 'framer-motion' import { useGalleryStore } from '../../store' import { StepWelcome } from './StepWelcome' import { StepAddLibrary } from './StepAddLibrary' import { StepPipeline } from './StepPipeline' import { StepGalleryPreview } from './StepGalleryPreview' import { StepSearchDemo } from './StepSearchDemo' import { StepViews } from './StepViews' import { StepAiFeatures } from './StepAiFeatures' import { StepUpdates } from './StepUpdates' const STEPS: { id: string; title: string; component: () => React.ReactNode }[] = [ { id: 'welcome', title: 'Welcome', component: () => }, { id: 'library', title: 'Your library', component: () => }, { id: 'pipeline', title: 'Background work', component: () => }, { id: 'gallery', title: 'The gallery', component: () => }, { id: 'search', title: 'Search', component: () => }, { id: 'views', title: 'Views', component: () => }, { id: 'ai', title: 'AI features', component: () => }, { id: 'updates', title: 'Staying current', component: () => }, ] export function OnboardingOverlay() { const onboardingOpen = useGalleryStore((s) => s.onboardingOpen) const onboardingStep = useGalleryStore((s) => s.onboardingStep) const setOnboardingStep = useGalleryStore((s) => s.setOnboardingStep) const completeOnboarding = useGalleryStore((s) => s.completeOnboarding) useEffect(() => { if (!onboardingOpen) return const handleKeyDown = (event: KeyboardEvent) => { if (event.key === 'Escape') completeOnboarding() } window.addEventListener('keydown', handleKeyDown) return () => window.removeEventListener('keydown', handleKeyDown) }, [onboardingOpen, completeOnboarding]) if (!onboardingOpen) return null const step = STEPS[Math.min(onboardingStep, STEPS.length - 1)] const isFirst = onboardingStep === 0 const isLast = onboardingStep >= STEPS.length - 1 return (
{/* Header */}

Step {onboardingStep + 1} of {STEPS.length}

{step.title}

{STEPS.map((s, i) => (
{/* Step body */}
{step.component()}
{/* Footer */}
) }