vaiperui

componentes / divider

Divider

Separador horizontal o vertical, con texto opcional en el medio.

Cómo usar

Renderiza `role="separator"` con `aria-orientation`. Los lectores de pantalla lo anuncian, así que úsalo solo cuando la separación tenga significado; para decoración pura usa `decorative`. Un divisor vertical se estira a la altura de un padre flex.

preview
A B
Divider.tsx
import { Divider } from "vaiperui";
<Divider />
<Divider label="or" variant="dashed" spacing="md" />
<Divider orientation="vertical" customColor="#7c3aed" />

Estilo de la línea

preview
solid
dashed
dotted
variant.tsx
<Divider variant="solid" />
<Divider variant="dashed" />
<Divider variant="dotted" />

Con texto

preview
start
center
end
label.tsx
<Divider label="start" labelAlign="start" />
<Divider label="center" />
<Divider label="end" labelAlign="end" />

Color

preview
soft
strong
customColor
color.tsx
<Divider color="soft" />
<Divider color="strong" />
<Divider customColor="#7c3aed" />

Vertical

preview
A B
vertical
vertical.tsx
<div className="flex h-8 items-center gap-3">
A <Divider orientation="vertical" /> B
</div>

Props

PropValoresPredeterminadoDescripción
orientationhorizontal | verticalhorizontalDirección de la línea
variantsolid | dashed | dottedsolidEstilo de la línea
spacingnone | sm | md | lgnoneMargen alrededor de la línea (8 / 16 / 24px)
color / customColordefault | strong | soft / CSS color | { light, dark }defaultToken de borde del tema, o tu propio color (gana sobre `color`)
label / labelAlignReactNode / start | center | endnone / centerTexto dentro de la línea y dónde queda
decorativebooleanfalseUsa role="presentation" en lugar de separator

Accesibilidad

  • Sin `label` renderiza un `<hr>`; con `label`, un `<div>`. Ambos reciben `role="separator"` y `aria-orientation` igual a `orientation`.
  • `decorative` cambia el rol a `presentation` y quita `aria-orientation`, así que las tecnologías de asistencia lo ignoran.
  • El texto del label sigue siendo legible; las líneas a su lado son `aria-hidden`.
  • No es enfocable y no tiene comportamiento de teclado.

Ten en cuenta

  • Usa `decorative` cuando la línea sea solo visual, para que los lectores de pantalla no anuncien un separador entre cada elemento.
  • El color y `variant` son solo visuales: no dependas de ellos para transmitir significado.