UNPKG

@yamada-ui/stepper

Version:

Yamada UI stepper component

55 lines (53 loc) 1.3 kB
"use client" // src/use-steps.ts import { useCallback, useState } from "react"; var useSteps = ({ count, index = 0 }) => { const [activeStep, setActiveStep] = useState(index); const maxStep = typeof count === "number" ? count - 1 : 0; const activeStepPercent = activeStep / maxStep; const isActiveStep = useCallback( (step) => step === activeStep, [activeStep] ); const isCompleteStep = useCallback( (step) => step < activeStep, [activeStep] ); const isIncompleteStep = useCallback( (step) => step > activeStep, [activeStep] ); const getStepStatus = useCallback( (step) => { if (step < activeStep) return "complete"; if (step > activeStep) return "incomplete"; return "active"; }, [activeStep] ); const onStepNext = useCallback( () => setActiveStep( (step) => typeof count === "number" ? Math.min(count, step + 1) : step + 1 ), [count] ); const onStepPrev = useCallback( () => setActiveStep((step) => Math.max(0, step - 1)), [] ); return { activeStep, activeStepPercent, getStepStatus, isActiveStep, isCompleteStep, isIncompleteStep, setActiveStep, onStepNext, onStepPrev }; }; export { useSteps }; //# sourceMappingURL=chunk-ENZMEHOY.mjs.map