import { useCallback, useState } from 'react'; interface UseWizardStepsOptions { totalSteps: number; initialStep?: number; onStepChange?: (step: number) => void; onComplete?: () => void; } /** * Hook for managing wizard/multi-step processes */ export function useWizardSteps({ totalSteps, initialStep = 1, onStepChange, onComplete, }: UseWizardStepsOptions) { const [currentStep, setCurrentStep] = useState(initialStep); const goToStep = useCallback((step: number) => { const clampedStep = Math.max(1, Math.min(totalSteps, step)); setCurrentStep(clampedStep); onStepChange?.(clampedStep); }, [totalSteps, onStepChange]); const nextStep = useCallback(() => { if (currentStep < totalSteps) { goToStep(currentStep + 1); } else { onComplete?.(); } }, [currentStep, totalSteps, goToStep, onComplete]); const prevStep = useCallback(() => { goToStep(currentStep - 1); }, [currentStep, goToStep]); const reset = useCallback(() => { setCurrentStep(initialStep); }, [initialStep]); return { currentStep, totalSteps, isFirstStep: currentStep === 1, isLastStep: currentStep === totalSteps, goToStep, nextStep, prevStep, reset, progress: (currentStep / totalSteps) * 100, }; }