import React, { FC, HTMLAttributes, ElementType, ReactNode } from 'react'; import classNames from 'classnames'; import { Icon } from '../Icon/Icon'; const variants = { confirmed: 'confirmed', active: 'active', done: 'done', mobile: 'steppers-index', // @deprecated 'steppers-index': 'steppers-index' } as const; export interface StepperHeaderElementProps extends HTMLAttributes { /** Utilizzarlo in caso di utilizzo di componenti personalizzati */ tag?: ElementType; /** Classi aggiuntive da usare per il componente StepperHeader */ className?: string; /** * Il tipo di step: * * confirmed (confermato), * * active (attivo - su mobile viene mostrato solo questo) * * done (completato) * * mobile (visibile solo su mobile, usato per mostrare lo stato attuale di progresso) * * steppers-index (deprecato) usare mobile * */ variant?: keyof typeof variants; /** Icona da mostrare alla destra dell'etichetta dello step */ appendIcon?: string; /** Icona da mostrare alla sinistra dell'etichetta dello step */ prependIcon?: string; /** Titolo dell'icona da mostrare alla destra dell'etichetta dello step */ appendIconTitle?: string; /** Titolo dell'icona da mostrare alla sinistra dell'etichetta dello step */ prependIconTitle?: string; /** Utilizzare questo attributo per elementi aggiuntivi da mostrare su dispositivi mobile per lo step attivo */ stepperNumber?: ReactNode; /** Nasconde il bordo inferiore azzurro per lo step */ noLine?: boolean; testId?: string; } export const StepperHeaderElement: FC = ({ tag = 'li', variant, appendIcon, prependIcon, appendIconTitle, prependIconTitle, noLine, stepperNumber, testId, children, className, ...attributes }) => { const Tag = tag; const wrapperClasses = classNames(variant ? variants[variant] : '', className, { 'no-line': noLine }); const iconClass = classNames('icon', 'steppers-success'); const spanClass = classNames('steppers-number'); return ( {prependIcon && } {stepperNumber && {stepperNumber}} {children} {appendIcon && } ); };