Link
BetaLleva a otro lugar. Vive dentro del texto o solo, pero siempre navega.
registry/ds/link.tsxRevisá el plan de estudios antes de inscribirte, y si tenés dudas leé las preguntas frecuentes (se abre en una pestaña nueva).
Para trámites, descargá el formulario.
Ver todas las carreras (se abre en una pestaña nueva)import { Link } from "@/registry/ds/link";
export default function LinkBasic() {
return (
<div className="flex max-w-md flex-col gap-4 text-sm text-fg-muted">
<p>
Revisá el <Link href="#">plan de estudios</Link> antes de inscribirte, y si tenés dudas leé las{" "}
<Link href="#" external>preguntas frecuentes</Link>.
</p>
<p>
Para trámites, <Link href="#" variant="neutral">descargá el formulario</Link>.
</p>
<Link href="#" variant="standalone" external>Ver todas las carreras</Link>
</div>
);
}Cuándo usarlo
| Usá Link para… | Usá otra cosa para… |
|---|---|
| Ir a otra página o sección. | Enviar, guardar, abrir un modal → Button. |
| Referencias dentro de un párrafo. | Un link con peso de botón (CTA) → Button con href. |
| "Ver todas", "Más información" al final de un bloque. | Categorías clickeables → Chip. |
Variantes
- inline (default): dentro de un párrafo. Verde y subrayado siempre, así se distingue sin depender del color.
- standalone: fuera del texto, Medium, subrayado al pasar. Suele llevar flecha.
- neutral: cuando el verde compite con el contenido (tablas, listas densas).
En contexto
inline dentro de un párrafo, standalone en una lista de recursos y
neutral en metadatos. external suma el icono y el aviso para el lector.
La correlativa es Cálculo I. Si la cursaste en otra universidad, pedí la equivalencia (se abre en una pestaña nueva) antes del 30 de octubre.
Recursos
Actualizado el 12 de octubre · Historial de cambios · Reportar un error
import { Link } from "@/registry/ds/link";
/** Los tres estilos en su lugar: inline dentro del texto, standalone en una lista de recursos, neutral en metadatos */
export default function LinkVariants() {
return (
<div className="flex w-full max-w-md flex-col gap-6 text-sm">
<p className="text-fg-muted">
La correlativa es <Link href="#">Cálculo I</Link>. Si la cursaste en otra universidad, pedí la{" "}
<Link href="#" external>
equivalencia
</Link>{" "}
antes del 30 de octubre.
</p>
<div>
<p className="mb-2 text-xs font-medium uppercase tracking-wide text-fg-subtle">Recursos</p>
<ul className="flex flex-col gap-2">
<li>
<Link href="#" variant="standalone">
Programa de la materia (PDF)
</Link>
</li>
<li>
<Link href="#" variant="standalone">
Guía de trabajos prácticos
</Link>
</li>
<li>
<Link href="#" variant="standalone" external>
Aula virtual
</Link>
</li>
</ul>
</div>
<p className="text-xs text-fg-subtle">
Actualizado el 12 de octubre · <Link href="#" variant="neutral">Historial de cambios</Link> · <Link href="#" variant="neutral">Reportar un error</Link>
</p>
</div>
);
}Contenido
- El texto dice a dónde va: "plan de estudios", no "clic aquí" ni "acá".
- Externo = pestaña nueva + icono. Interno, nunca.
- No subrayes texto que no es link, ni pintes de verde texto que no navega.
Medidas
Hereda el tamaño del texto donde vive. Subrayado a 4 px del texto (underline-offset).
Icono externo: 0.9em, alineado a la línea base. Standalone: gap 4 con la flecha.
Tokens
| Parte | Propiedad | Token |
|---|---|---|
| Inline · standalone | Texto → hover | primary/accent |
| Inline | Subrayado → hover | primary/border |
| Neutral | Texto | text/default |
| Neutral | Subrayado → hover | border/strong |
| Foco | Anillo 2 px | focus/ring |
Instalación
npx shadcn@latest add https://polen.cdc.cool/r/link.jsonPlayground
Configurá el componente y copiá el snippet: se genera del mismo estado que renderiza el preview.
Props
Acepta todos los atributos de <a>. Con Next.js, pasá href y dejá que
tu router lo intercepte, o envolvé con tu Link.
| Prop | Tipo | Default | Descripción |
|---|---|---|---|
variant | "inline" | "standalone" | "neutral" | "inline" | Contexto del link. |
external | boolean | false | Pestaña nueva, rel=noreferrer, icono y aviso para lectores de pantalla. |
- Es un
<a>conhrefreal: funciona con teclado, clic medio y "abrir en pestaña nueva". - El link externo anuncia "(se abre en una pestaña nueva)" a lectores de pantalla.
- El subrayado del inline hace que no dependa del color (WCAG 1.4.1).
- El anillo de foco visible viene incluido.