@brickslab/ui-web
Select natif contrôlé avec apparence personnalisée via appearance: none et chevron FiChevronDown. Supporte label, placeholder, textes d'aide et d'erreur, 3 tailles, options désactivées. Accessibilité et keyboard natifs, sans 'use client' dans ui-web.
Aperçu
select basique · avec placeholder
Tailles
sm (28px) · md (38px) · lg (44px)
Placeholder
option grisée initiale, visible quand value === ""
États
error · disabled · option disabled
Label et texte d'aide
label · helperText · required (astérisque)
Pleine largeur
fullWidth — s'étire à 100% du conteneur
Props
| Prop | Type | Défaut | Requis | Description |
|---|---|---|---|---|
value | string | — | ✓ | Valeur contrôlée du select. |
onChange | (value: string) => void | — | ✓ | Callback déclenché à la sélection, reçoit la valeur string de l'option. |
options | SelectOption[] | — | ✓ | Liste des options : { value, label, disabled? }. |
label | string | — | — | Label affiché au-dessus du select, lié via htmlFor. |
placeholder | string | — | — | Option grisée initiale affichée quand aucune valeur n'est sélectionnée (value = ""). |
helperText | string | — | — | Texte d'aide affiché sous le select (en muted). Masqué si errorText est présent. |
errorText | string | — | — | Message d'erreur affiché sous le select (en rouge). Active aussi la bordure rouge. |
disabled | boolean | false | — | Désactive le select (opacité 0.5, curseur not-allowed). |
size | "sm" | "md" | "lg" | "md" | — | Taille du select (hauteur, padding, taille de police). |
fullWidth | boolean | false | — | Étire le select à 100% de la largeur du conteneur. |
id | string | — | — | ID HTML du select. Auto-généré via React.useId() si non fourni. |
name | string | — | — | Nom du champ pour les formulaires HTML natifs. |
required | boolean | false | — | Marque le champ comme requis (astérisque rouge sur le label). |