import React, { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { toast } from 'sonner'; import { ArrowRight, ArrowLeft, Check, Loader2, Rocket } from 'lucide-react'; import { StepMode } from './components/StepMode'; import { StepHomepage } from './components/StepHomepage'; import { StepAppearance } from './components/StepAppearance'; import { StepProgress } from './components/StepProgress'; export default function Onboarding() { const navigate = useNavigate(); const [step, setStep] = useState(0); const [loading, setLoading] = useState(false); const [data, setData] = useState({ mode: 'full', pageId: '', createMagicPage: false, containerWidth: 'max-w-6xl', primaryColor: '#000000', }); const steps = [ { component: StepMode, title: 'Mode' }, { component: StepHomepage, title: 'Homepage' }, { component: StepAppearance, title: 'Appearance' }, ]; const handleNext = async () => { if (step < steps.length - 1) { if (step === 1 && !data.createMagicPage && !data.pageId) { toast.error('Please select a page or choose auto-create'); return; } setStep(s => s + 1); } else { // Final Submit setLoading(true); try { const payload = { mode: data.mode, create_home_page: data.createMagicPage, entry_page_id: data.pageId, container_width: data.containerWidth, primary_color: data.primaryColor }; const res = await fetch((window as any).WNW_CONFIG?.restUrl + '/onboarding/complete', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-WP-Nonce': (window as any).WNW_CONFIG?.nonce }, body: JSON.stringify(payload) }); const json = await res.json(); if (json.success) { toast.success('Store setup complete!'); // Update global config to prevent showing onboarding again if ((window as any).WNW_CONFIG) { (window as any).WNW_CONFIG.onboardingCompleted = true; } navigate('/appearance/pages'); } else { throw new Error(json.message || 'Setup failed'); } } catch (e: any) { toast.error(e.message || 'Something went wrong'); setLoading(false); } } }; const CurrentStepComponent = steps[step].component; return (
{/* Sidebar / Info Panel */}
WooNooW Setup
{steps.map((s, i) => (
{i < step ? : i + 1}
{s.title}
))}

step {step + 1} of {steps.length}

{/* Main Content Area */}
setData(d => ({ ...d, mode: val }))} // Homepage props pageId={data.pageId} createMagicPage={data.createMagicPage} onPageChange={(id: string | number) => setData(d => ({ ...d, pageId: String(id) }))} onMagicChange={(enabled: boolean) => setData(d => ({ ...d, createMagicPage: enabled }))} // Appearance props containerWidth={data.containerWidth} primaryColor={data.primaryColor} onWidthChange={(w: string) => setData(d => ({ ...d, containerWidth: w }))} onColorChange={(c: string) => setData(d => ({ ...d, primaryColor: c }))} />
); }