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 */}
{/* Footer */}
)
}