Separator
Una línea fina que divide el contenido horizontal o verticalmente, con una etiqueta opcional y un modo decorativo para líneas puramente visuales.
HextaUI
Components that feel great to use and to write.
pnpm dlx shadcn@latest add https://hextaui.com/r/separator.jsonAñade el componente, los tokens del tema de HextaUI y los componentes de HextaUI de los que depende.
Añade los tokens del tema a tu CSS global, si aún no lo has hecho.
Instala las dependencias.
pnpm add @base-ui/react cnCopia y pega el siguiente código en tu proyecto.
components/ui/separator.tsx Actualiza las rutas de importación para que coincidan con la configuración de tu proyecto.
La línea tiene un píxel físico de grosor en todas las pantallas, la misma línea fina que los bordes, así que se alinea con las tarjetas e inputs que la rodean. Sepárala con el gap del padre o un margen.
Vertical
Con orientation="vertical" la línea se estira a la altura de su fila flex. Fuera de una fila flex, dale una altura.
Label
Los hijos se sitúan en el centro de la línea, y la línea llena el espacio a ambos lados.
Alineación
align mueve la etiqueta al start o al end, lo que encaja con encabezados de sección y de fecha. Los iconos se dimensionan según el texto.
Etiqueta vertical
Un separador vertical con etiqueta mantiene el texto en vertical y dibuja la línea encima y debajo.
Decorativo
decorative oculta a los lectores de pantalla una línea puramente visual, para que no anuncien un separador entre filas que ya se leen bien por sí solas.
En línea
Usa render para producir un <span> donde no se permite un <div>, como dentro de un párrafo.
Contenido largo
Las etiquetas largas se ajustan y las cadenas sin espacios se cortan, mientras un tramo corto de línea permanece visible a cada lado.
De derecha a izquierda
Start y end siguen la dirección de lectura.
- Un separador simple tiene
role="separator"yaria-orientation, como un<hr>. - Con
decorative, reciberole="none"y los lectores de pantalla lo omiten. - Un separador con etiqueta no tiene rol. El rol separator volvería presentacional su texto, así que la etiqueta se lee como texto normal.
Construido sobre el Separator de Base UI. Renderiza un <div> y acepta sus atributos.
| Prop | Tipo | Predeterminado |
|---|---|---|
orientation | "horizontal" | "vertical" | "horizontal" |
decorativeOculta la línea a los lectores de pantalla cuando es solo visual. | boolean | false |
childrenUna etiqueta dibujada en la línea. Omítela para una línea simple. | ReactNode | – |
alignDónde se sitúa la etiqueta a lo largo de la línea. | "start" | "center" | "end" | "center" |
className | string | (state) => string | – |
render | ReactElement | (props, state) => ReactElement | <div> |
| Atributo | Descripción |
|---|---|
data-slot="separator" | Selecciona los separadores en CSS. |
data-orientation | "horizontal" o "vertical". |
data-content | Presente cuando el separador tiene una etiqueta. |
data-align | La alineación de la etiqueta, cuando hay una. |
data-slot="separator-label" | El elemento que envuelve la etiqueta. |
- AccordionEncabezados apilados que revelan cada uno un panel, con un movimiento de altura que puedes invertir a mitad de camino y paneles que siguen siendo buscables mientras están cerrados.
- Aspect ratioUn contenedor que mantiene su forma antes de que cargue el contenido multimedia, muestra un brillo mientras carga, hace aparecer el contenido con un fundido y muestra una alternativa si falla.
- CarouselDiapositivas nativas con scroll-snap, con inercia en pantallas táctiles, arrastre con el ratón, teclas de flecha, puntos, miniaturas y una reproducción automática que se pausa cuando debe.
- CollapsibleUn panel que se muestra y se oculta con un movimiento de altura que puedes invertir a mitad de camino, sin saltos en el diseño.
- ResizablePaneles que puedes separar arrastrando, con un divisor discreto que despierta al pasar el cursor, tamaños que se deslizan al restablecer o colapsar, y diseños que persisten.
- Scroll areaScroll nativo con una barra de desplazamiento mínima, bordes que se desvanecen solo donde hay más por ver y un vistazo opcional que corta el último elemento por la mitad.