import React, { HTMLAttributes, useMemo, useState } from "react"; import { Colors } from "../colors"; import './styles.css'; export interface StepsProps extends HTMLAttributes { steps: { label?: string, tooltip?: string; }[], color?: Colors; withNumber?: boolean; defaultActiveStep?: number; } const Steps = ({ className, steps, color, withNumber, defaultActiveStep, ...props }: StepsProps) => { const [active, setActive] = useState(defaultActiveStep || 0); const classes = useMemo(() => { return [ 'steps', color && `steps-${color}`, withNumber && 'steps-counter', className ].filter(Boolean).join(' '); }, [color, withNumber, className]); return (
{steps.map((step, index) => ( setActive(index)} className={`step-item ${active === index ? 'active' : ''}`} {...(step.tooltip ? { "data-bs-toggle": "tooltip", title: step.tooltip } : {})}> {step.label} ))}
) } export default Steps;