Divider
BetaUna línea que separa grupos de contenido cuando el espaciado solo no alcanza.
registry/ds/divider.tsxIngresá con tu correo institucional.
o
Continuá con tu cuenta de Google.
InicioCarrerasContacto
import { Divider } from "@/registry/ds/divider";
export default function DividerBasic() {
return (
<div className="flex w-full max-w-sm flex-col gap-5 text-sm text-fg-muted">
<p>Ingresá con tu correo institucional.</p>
<Divider>o</Divider>
<p>Continuá con tu cuenta de Google.</p>
<Divider variant="subtle" />
<div className="flex h-5 items-center gap-3">
<span>Inicio</span>
<Divider orientation="vertical" />
<span>Carreras</span>
<Divider orientation="vertical" />
<span>Contacto</span>
</div>
</div>
);
}Cuándo usarlo
Primero probá con espaciado (escala): casi siempre alcanza. El Divider es para cuando dos grupos siguen pareciendo uno.
- Entre secciones de una lista o un menú.
- Con texto, para alternativas: "o" entre dos formas de ingresar.
- Vertical, entre items de una misma fila (navegación, toolbar).
- No lo uses debajo de cada elemento de una lista: para eso están las filas con borde.
En contexto
Vertical entre grupos de una barra, subtle entre filas de una lista, y con
texto cuando hay dos caminos equivalentes.
Semana 12
- Cálculo IILun 8:00
- Física IMar 14:00
- ÁlgebraJue 8:00
o
import { Button } from "@/registry/ds/button";
import { Divider } from "@/registry/ds/divider";
import { ArrowLeft, ArrowRight, Plus } from "@/registry/ds/icons";
/** Tres usos: vertical para separar grupos en una barra, subtle entre filas de una lista, y con texto entre dos caminos */
export default function DividerLayout() {
return (
<div className="flex w-full max-w-md flex-col gap-8">
<div className="flex h-9 items-center gap-3">
<Button size="sm" variant="stroke" iconOnly={<ArrowLeft />} aria-label="Semana anterior" />
<Button size="sm" variant="stroke" iconOnly={<ArrowRight />} aria-label="Semana siguiente" />
<Divider orientation="vertical" />
<span className="text-sm font-medium text-fg">Semana 12</span>
<Divider orientation="vertical" />
<Button size="sm" variant="text" iconLeft={<Plus />}>
Evento
</Button>
</div>
<ul className="text-sm">
{[
["Cálculo II", "Lun 8:00"],
["Física I", "Mar 14:00"],
["Álgebra", "Jue 8:00"],
].map(([m, h], i) => (
<li key={m}>
{i > 0 && <Divider variant="subtle" />}
<div className="flex justify-between py-2.5">
<span className="font-medium text-fg">{m}</span>
<span className="text-fg-muted">{h}</span>
</div>
</li>
))}
</ul>
<div className="flex flex-col gap-3">
<Button fullWidth>Ingresar con correo</Button>
<Divider>o</Divider>
<Button fullWidth variant="stroke">
Continuar con cuenta institucional
</Button>
</div>
</div>
);
}Medidas y tokens
1 px. Con texto: Text xs, gap 12 a cada lado.
| Parte | Propiedad | Token |
|---|---|---|
| Línea | Color | border/default |
| Línea · subtle | Color | border/subtle |
| Texto | Color | text/subtle |
Instalación
npx shadcn@latest add https://polen.cdc.cool/r/divider.jsonPlayground
Configurá el componente y copiá el snippet: se genera del mismo estado que renderiza el preview.
Orientación
variant
<Divider />| Prop | Tipo | Default | Descripción |
|---|---|---|---|
orientation | "horizontal" | "vertical" | "horizontal" | La vertical ocupa el alto del contenedor flex. |
variant | "default" | "subtle" | "default" | Subtle para divisiones dentro de una superficie. |
children | ReactNode | — | Texto centrado sobre la línea (solo horizontal). |
Sin texto es un <hr>; con texto o vertical, role="separator". Es
decorativo: no pongas en él información que no esté también en el contenido.