Textarea
BetaCampo de texto de varias líneas. Comparte label, ayuda, error y tokens con Input.
registry/ds/input.tsxMáximo 500 caracteres.
import { Textarea } from "@/registry/ds/input";
export default function TextareaBasic() {
return (
<div className="w-96">
<Textarea label="Motivo de la solicitud" placeholder="Contanos brevemente…" hint="Máximo 500 caracteres." />
</div>
);
}Cuándo usarlo
Para respuestas que pueden ocupar más de una línea: comentarios, motivos, descripciones. Si la respuesta esperada es una palabra o una frase corta, es un Input.
- El alto inicial sugiere cuánto escribir.
smpara una o dos frases;lgpara textos largos. - Se puede agrandar verticalmente; nunca horizontalmente (rompe el layout).
- Si hay límite de caracteres, decilo en la ayuda antes de que se pasen.
Con error
import { Textarea } from "@/registry/ds/input";
export default function TextareaError() {
return (
<div className="w-96">
<Textarea size="sm" label="Comentario" required defaultValue="ok" error="Escribí al menos 20 caracteres para que podamos ayudarte." />
</div>
);
}Todo lo de contenido de Input aplica igual.
Medidas
| Size | Alto mínimo | Padding | Valor |
|---|---|---|---|
sm | 80 | 12 × 8 | Text sm |
md | 120 | 14 × 10 | Text sm |
lg | 160 | 16 × 12 | Text md |
Radio radius-md (8). Interlineado del valor: 24. Los tokens de color por
estado son los mismos que Input — ver
Input · Tokens.
En Figma
| Propiedad en Figma | Valores | En código | Nota |
|---|---|---|---|
| Size | sm · md · lg | size | — |
| State | Default · Focused · Filled · Disabled · Error · Error focused | disabled · error | — |
| Label · Hint · Required | Texto · on/off | label · hint · required | — |
Instalación
npx shadcn@latest add https://polen.cdc.cool/r/input.jsonPlayground
Configurá el componente y copiá el snippet: se genera del mismo estado que renderiza el preview.
Máximo 500 caracteres.
<Textarea label="Motivo de la solicitud" placeholder="Contanos brevemente por qué…" hint="Máximo 500 caracteres." />Uso
import { Textarea } from "@/components/ds/input";
<Textarea label="Comentario" hint="Máximo 500 caracteres." maxLength={500} />Props
Las mismas de Input —size, label, hint,
error, required, disabled— sin iconos, más los atributos nativos de
<textarea> (rows, maxLength…).
Igual que Input: label asociado, ayuda y error con aria-describedby,
aria-invalid al haber error y foco visible en todo el contenedor.
- Enter inserta una línea nueva: no envíes el formulario con Enter desde un textarea.
- Tab sale del campo (no inserta tabulación).