'use client' import { createContext, useContext, useState, ReactNode, useCallback } from 'react' import type { WizardStep, WizardContextValue, TestCategoryResult, FullTestResults } from './types' const WizardContext = createContext(null) export function useWizard(): WizardContextValue { const context = useContext(WizardContext) if (!context) { throw new Error('useWizard must be used within a WizardProvider') } return context } interface WizardProviderProps { children: ReactNode initialSteps: WizardStep[] module: string } export function WizardProvider({ children, initialSteps, module }: WizardProviderProps) { const [currentStep, setCurrentStep] = useState(0) const [steps, setSteps] = useState(initialSteps) const [categoryResults, setCategoryResults] = useState>({}) const [fullResults, setFullResults] = useState(null) const [isLoading, setIsLoading] = useState(false) const [error, setError] = useState(null) const goToNext = useCallback(() => { if (currentStep < steps.length - 1) { setSteps((prev) => prev.map((step, idx) => idx === currentStep && step.status === 'pending' ? { ...step, status: 'completed' } : step ) ) setCurrentStep((prev) => prev + 1) } }, [currentStep, steps.length]) const goToPrev = useCallback(() => { if (currentStep > 0) { setCurrentStep((prev) => prev - 1) } }, [currentStep]) const value: WizardContextValue = { currentStep, steps, setCurrentStep, setSteps, goToNext, goToPrev, module, categoryResults, setCategoryResults, fullResults, setFullResults, isLoading, setIsLoading, error, setError, } return ( {children} ) }