Forme DS

Composants

Textarea

Le champ de saisie multi-lignes. Enrobe le TextArea d'Astryx : même logique contrôlé/non-contrôlé que TextField, libellé a11y obligatoire et hauteur réglable via rows.

Comme TextField, label est obligatoire et masqué par défaut. Passe isLabelHidden= pour un libellé visible.
import { Textarea } from "@forme-ch/ui/controls";

const [value, setValue] = useState("");

<Textarea
  label="Notes internes"
  isLabelHidden={false}
  value={value}
  onChange={setValue}
  placeholder="Contexte, remarques, suites à donner…"
  description="Visible uniquement par l'équipe, jamais par le client."
  rows={4}
  maxLength={500}
/>

États

<Textarea label="Requis" isLabelHidden={false} isRequired rows={3} />
<Textarea label="Optionnel" isLabelHidden={false} isOptional rows={3} />
<Textarea label="Lecture seule" isLabelHidden={false} isReadOnly rows={3} />
<Textarea label="Désactivé" isLabelHidden={false} isDisabled rows={3} />

Props

PropTypeDéfautDescription
label * string — Libellé a11y obligatoire. Masqué visuellement si isLabelHidden.
isLabelHidden boolean true Masque le libellé visuel. Passe false pour l'afficher.
name string — Nom du champ dans un <form> (mappé sur htmlName).
value string — Mode contrôlé.
defaultValue string — Mode non-contrôlé.
onChange (value: string) => void — Callback (mode contrôlé).
placeholder string — Texte indicatif.
description string — Aide sous le champ.
rows number — Nombre de lignes visibles.
isDisabled boolean — Désactive le champ.
isReadOnly boolean — Lecture seule.
isRequired boolean — Marque le champ requis.
isOptional boolean — Marque explicitement le champ facultatif.
hasAutoFocus boolean — Focus au montage.
maxLength number — Validation native (posée sur le <textarea> DOM).
minLength number — Validation native.
startIcon ReactNode — Icône en tête de champ.
width number | string — Largeur du champ.

Accepte aussi className et style.

Accessibilité

Le nom accessible vient de label (obligatoire, jamais retiré même quand il est masqué). Utilise description pour préciser l'usage du champ. maxLength et minLength sont posés sur le <textarea> DOM natif pour la validation.

Do & Don't

✓ À faire

Fixer rows selon le volume attendu. Signaler la limite via maxLength.

✕ À éviter

Utiliser un Textarea pour une saisie mono-ligne — préférer TextField.