Skip to content

Stepper Nuevo ​

El componente hp-stepper implementa un wizard multi-paso con indicadores de estado, paneles de contenido y navegación programática. Soporta modo lineal (no se puede saltar pasos) y estado de completado global.

Demostración ​

Sin estilos (solo base.css) ​

Así se ve hp-stepper usando únicamente @headless-primitives/utils/base.css. La navegación lineal, los paneles y el estado de completado funcionan completamente.

12Paso 1 (sin estilos)Paso 2 (sin estilos)

Con estilos personalizados ​

Paso 1Paso 2Paso 3Contenido del paso 1Contenido del paso 2Contenido del paso 3
← AnteriorSiguiente →✓ Finalizar
html
<hp-stepper value="0">
  <hp-stepper-list>
    <hp-stepper-item>Paso 1</hp-stepper-item>
    <hp-stepper-item>Paso 2</hp-stepper-item>
    <hp-stepper-item>Paso 3</hp-stepper-item>
  </hp-stepper-list>
  <hp-stepper-panel>Contenido 1</hp-stepper-panel>
  <hp-stepper-panel>Contenido 2</hp-stepper-panel>
  <hp-stepper-panel>Contenido 3</hp-stepper-panel>
  <hp-stepper-prev>Anterior</hp-stepper-prev>
  <hp-stepper-next>Siguiente</hp-stepper-next>
  <hp-stepper-finish>Finalizar</hp-stepper-finish>
</hp-stepper>
css
hp-stepper-panel[data-state="hidden"] {
  display: none;
}
hp-stepper-item[data-state="active"] {
  font-weight: bold;
  color: #3b82f6;
}
hp-stepper-item[data-state="completed"] {
  color: #16a34a;
}
hp-stepper-item[data-state="pending"] {
  opacity: 0.5;
}
hp-stepper-prev[disabled],
hp-stepper-next[disabled],
hp-stepper-finish[disabled] {
  opacity: 0.4;
  cursor: not-allowed;
}

Instalación ​

bash
pnpm add @headless-primitives/stepper
bash
npm install @headless-primitives/stepper
bash
yarn add @headless-primitives/stepper
bash
bun add @headless-primitives/stepper

Features ​

  • ⌨️ Flechas, Home, End para navegar entre pasos.
  • ♿️ role="tablist" / role="tab" / role="tabpanel" con aria-selected y aria-disabled automáticos.
  • 🎨 Sin estilos visuales (Headless).
  • 📐 Orientación configurable (horizontal / vertical).
  • 🔒 Modo lineal: impide saltar pasos no completados.
  • ✅ Estado global de completado con complete().

Anatomía ​

html
<hp-stepper>
  <hp-stepper-list>
    <hp-stepper-item></hp-stepper-item>
    <hp-stepper-item></hp-stepper-item>
  </hp-stepper-list>
  <hp-stepper-panel></hp-stepper-panel>
  <hp-stepper-panel></hp-stepper-panel>
  <hp-stepper-prev></hp-stepper-prev>
  <hp-stepper-next></hp-stepper-next>
  <hp-stepper-finish></hp-stepper-finish>
</hp-stepper>

API Reference ​

hp-stepper ​

Contenedor raíz del wizard.

Atributos / Propiedades ​

Atributo / PropiedadTipoPor DefectoDescripción
valuenumber0Índice del paso activo (0-based).
stepsnumber0Total de pasos (auto-detectado por hijos).
orientation"horizontal" | "vertical""horizontal"Orientación del stepper.
linearbooleanfalseImpide saltar pasos no completados.

Métodos ​

MétodoDescripción
next()Avanza al siguiente paso.
prev()Retrocede al paso anterior.
goTo(index)Navega al paso por índice.
complete()Marca todos los pasos como completados.

Eventos ​

EventoDetalleDescripción
hp-change{ value: number, prev: number }Cuando cambia el paso.
hp-complete{ steps: number }Cuando se completa el wizard.

Atributos ARIA gestionados automáticamente ​

  • role="group" — Siempre presente.
  • data-orientation — Sincronizado con orientation.
  • data-state — "completed" cuando complete() es invocado.

hp-stepper-list ​

Lista de indicadores de paso.

Atributos ARIA gestionados automáticamente ​

  • role="tablist" — Siempre presente.
  • aria-orientation — Sincronizado con el root.

hp-stepper-item ​

Indicador individual de paso.

Atributos ARIA gestionados automáticamente ​

  • role="tab" — Siempre presente.
  • aria-selected — "true" para el paso activo.
  • aria-disabled — "true" en modo lineal para pasos inalcanzables.
  • data-state — "completed" | "active" | "pending".
  • data-index — Índice del paso.
  • tabindex — 0 para el activo, -1 para los demás.

hp-stepper-panel ​

Panel de contenido de un paso.

Atributos ARIA gestionados automáticamente ​

  • role="tabpanel" — Siempre presente.
  • aria-hidden — "true" cuando no activo.
  • data-state — "active" | "hidden".

hp-stepper-prev / hp-stepper-next / hp-stepper-finish ​

Botones de navegación. Automáticamente deshabilitados según el estado.

Accesibilidad ​

Usa el patrón tablist/tab/tabpanel del W3C.

TeclaAcción
ArrowRight / ArrowDownSiguiente paso.
ArrowLeft / ArrowUpPaso anterior.
HomePrimer paso.
EndÚltimo paso.

Lanzado bajo la MIT License.