Files

50 lines
1.1 KiB
TypeScript
Raw Permalink Normal View History

2025-10-08 12:01:52 -06:00
"use client";
2025-09-02 19:50:17 -04:00
import { useState, ReactNode } from "react";
2025-10-08 12:01:52 -06:00
import "./StepNavigator.css";
2025-09-02 19:50:17 -04:00
interface StepNavigatorProps {
2025-10-08 12:01:52 -06:00
totalSteps: number;
children: ReactNode[];
onFinish?: () => void;
2025-09-02 19:50:17 -04:00
}
2025-10-08 12:01:52 -06:00
export default function StepNavigator({
totalSteps,
children,
onFinish,
}: StepNavigatorProps) {
const [step, setStep] = useState(1);
const handleNext = (e: React.MouseEvent<HTMLButtonElement>) => {
e.preventDefault();
if (step < totalSteps) setStep(step + 1);
else if (onFinish) onFinish();
};
const handlePrev = (e: React.MouseEvent<HTMLButtonElement>) => {
e.preventDefault();
if (step > 1) setStep(step - 1);
};
return (
<section className="stepNavigator">
{children[step - 1]}
<div className="absoluteButton">
{step > 1 && (
<button onClick={handlePrev} className="button buttonSearch">
Atrás
</button>
)}
{step < totalSteps && (
<button onClick={handleNext} className="button buttonSearch">
Siguiente
</button>
)}
</div>
</section>
);
2025-09-02 19:50:17 -04:00
}