@yamada-ui/stepper
Version:
Yamada UI stepper component
55 lines (53 loc) • 1.3 kB
JavaScript
"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