import { default as React } from 'react'; import { SizeVariant } from '../Shared/types'; export interface Step { id: string | number; number?: number; title?: string; description?: string; icon?: React.ReactElement<{ size: number; }>; /** * Clases del bloque title/description de este step. * Tiene precedencia sobre `StepsProps.containerClassName`. */ containerClassName?: string; /** * Clases del `
` title de este step. * Tiene precedencia sobre `StepsProps.titleClassName`. */ titleClassName?: string; /** * Clases del `
` description de este step. * Tiene precedencia sobre `StepsProps.descriptionClassName`. */ descriptionClassName?: string; } type LegacySizeVariant = "sm" | "md" | "lg"; export type StepsContentAlign = "start" | "center" | "end"; type StepsPropsBase = { steps: Step[]; currentStep: number; orientation?: "horizontal" | "vertical"; variant?: "default" | "minimal" | "numbered" | "numbered-minimal"; /** * Alineación del bloque title/description respecto al indicador. * Solo aplica en `orientation="horizontal"` (default `"start"`). */ contentAlign?: StepsContentAlign; /** * Permite que `description` haga wrap. Sin esto el texto usa `nowrap` y el * step crece con el contenido. Con wrap activo se aplica un `max-width` al * bloque de texto para que el salto de línea tenga un límite real. */ descriptionWrap?: boolean; /** * Clases extra sobre el bloque title/description (donde vive el `max-width` * de wrap). Útil para sobreescribir el techo, ej. `max-w-48`. * Por step: `Step.containerClassName` (tiene precedencia). */ containerClassName?: string; /** * Clases extra sobre cada `
` de title. * Por step: `Step.titleClassName` (tiene precedencia). */ titleClassName?: string; /** * Clases extra sobre cada `
` de description (tipografía, color, wrap, etc.). * Por step: `Step.descriptionClassName` (tiene precedencia). */ descriptionClassName?: string; className?: string; onStepClick?: (stepIndex: number) => void; allowClickableSteps?: boolean; errorStep?: number; }; /** * Props públicas (docs / Storybook). `size` acepta canónicos y legados. * La deprecación de `"sm"|"md"|"lg"` se expone vía overloads del componente * (un `@deprecated` en la prop única marcaría también los valores canónicos). */ export type StepsProps = StepsPropsBase & { /** * Tamaño del círculo y tipografía. * Preferí `"small"` | `"medium"` | `"large"`. `"sm"` | `"md"` | `"lg"` están deprecados. */ size?: SizeVariant | LegacySizeVariant; }; type StepsPropsCanonical = StepsPropsBase & { /** Tamaño del círculo y tipografía. */ size?: SizeVariant; }; type StepsPropsLegacy = StepsPropsBase & { /** * @deprecated Use `"small"`, `"medium"`, or `"large"` instead of `"sm"` | `"md"` | `"lg"`. */ size?: LegacySizeVariant; }; declare function Steps(props: StepsPropsLegacy): React.ReactElement; declare function Steps(props: StepsPropsCanonical): React.ReactElement; export default Steps;