"use client"; import { createContext, useContext, useState, useCallback, type ReactNode, } from "react"; const TOTAL_STEPS = 6; // Product, Dimensions, Options, Extras, Contact, Summary interface FormContextValue { currentStep: number; totalSteps: number; nextStep: () => void; prevStep: () => void; goToStep: (step: number) => void; reset: () => void; } const FormContext = createContext(null); export function FormProvider({ children }: { children: ReactNode }) { const [currentStep, setCurrentStep] = useState(0); const nextStep = useCallback(() => { setCurrentStep((s) => Math.min(s + 1, TOTAL_STEPS - 1)); }, []); const prevStep = useCallback(() => { setCurrentStep((s) => Math.max(s - 1, 0)); }, []); const goToStep = useCallback((step: number) => { setCurrentStep(Math.max(0, Math.min(step, TOTAL_STEPS - 1))); }, []); const reset = useCallback(() => { setCurrentStep(0); }, []); return ( {children} ); } export function useFormContext() { const ctx = useContext(FormContext); if (!ctx) throw new Error("useFormContext must be used within "); return ctx; }