Skip to content

Textarea

Campo de texto multilínea con label, hint y error integrados.


Import

jsx
import { Textarea } from '@imansi/ui';

Uso básico

jsx
<Textarea placeholder="Escribí tu mensaje..." />

Con label

jsx
<Textarea
  label="Mensaje"
  placeholder="Contanos qué necesitás..."
  rows={5}
/>

Con hint y error

jsx
<Textarea
  label="Biografía"
  hint="Máximo 280 caracteres"
  placeholder="Contá algo sobre vos..."
/>

<Textarea
  label="Comentario"
  error="El comentario es obligatorio"
/>

Filas personalizables

jsx
<Textarea rows={3} placeholder="Corto" />
<Textarea rows={8} placeholder="Largo" />

Props

PropTipoDefaultDescripción
labelstringEtiqueta del campo
hintstringTexto de ayuda
errorstringMensaje de error
rowsnumber4Cantidad de filas visibles
idstringautogeneradoID del textarea
classNamestringClases adicionales
...propsTextareaHTMLAttributesProps nativas de <textarea>

Ejemplo completo

jsx
import { useState } from 'react';
import { Textarea, Button } from '@imansi/ui';

export function FormularioContacto() {
  const [mensaje, setMensaje] = useState('');
  const [error, setError] = useState('');

  function handleSubmit(e) {
    e.preventDefault();

    if (mensaje.length < 10) {
      setError('El mensaje debe tener al menos 10 caracteres');
      return;
    }

    setError('');
    // enviar
  }

  return (
    <form onSubmit={handleSubmit} className="space-y-4 max-w-lg">
      <Textarea
        label="Tu mensaje"
        value={mensaje}
        onChange={(e) => setMensaje(e.target.value)}
        error={error}
        hint={`${mensaje.length}/280 caracteres`}
        rows={6}
        maxLength={280}
      />
      <Button type="submit">Enviar mensaje</Button>
    </form>
  );
}

Hecho con ❤️ en Argentina