/** Indicador de pasos sin conocimiento del formulario o de sus datos. */
export function FormProgress({
step,
labels,
label,
progress,
completedLabel,
description,
}: {
step: number;
labels: readonly string[];
label: string;
progress: string;
completedLabel: string;
description: string;
}) {
return (
{labels.map((title, index) => {
const current = step === index + 1;
const completed = step > index + 1;
return (
-
{completed ? "✓" : index + 1}
{title}
{completed && {completedLabel}}
);
})}
{labels[step - 1]}
{progress}
{description}
);
}
function focusStep(element: HTMLParagraphElement | null) {
// Cada paso empieza arriba; enfocar el anuncio oculto no debe desplazar su indicador.
element?.closest("[data-slot=form-body]")?.scrollTo({ top: 0 });
element?.focus({ preventScroll: true });
}