
# Plugin de formulaires

`@tailwindcss/forms` est un portage 1:1 de PHP, le plugin officiel. Il fournit une réinitialisation assumée des contrôles de formulaire — champs texte, zones de texte, listes de sélection, cases à cocher et boutons radio — pour leur donner une base cohérente (réinitialisation de l’apparence, bordure, marge intérieure, anneau de focus, chevron personnalisé pour les listes et icônes pour les cases à cocher et les boutons radio), que vous pouvez ensuite remplacer avec des utilitaires.

## Utilisation

Chargez le plugin avec `@plugin` et importez la couche des utilitaires :

```php
use TailwindPHP\tw;

$css = tw::generate(
    '<input class="form-input"><select class="form-select"></select>',
    '@plugin "@tailwindcss/forms"; @import "tailwindcss/utilities.css";'
);
```

## Stratégie

L’option `strategy` détermine la façon dont les styles sont appliqués :

| Stratégie | Comportement |
|----------|----------|
| `base` | Applique globalement des styles aux éléments de formulaire natifs avec des sélecteurs tels que `[type='text']`, `textarea` et `select`. |
| `class` | Applique des styles uniquement aux classes explicites `form-*`, sans toucher aux éléments dépourvus de classe. |

Si `strategy` est omise, **les deux** stratégies sont appliquées : les éléments natifs reçoivent la réinitialisation de base et les classes `form-*` sont également disponibles. Définissez une seule stratégie pour désactiver l’autre :

```css
@plugin "@tailwindcss/forms" {
    strategy: "class";
}
```

## Stratégie des classes

Avec la stratégie `class` (ou celle par défaut), appliquez explicitement ces classes aux éléments que vous souhaitez styliser :

| Classe | Élément |
|-------|---------|
| `form-input` | Champs de type texte |
| `form-textarea` | `<textarea>` |
| `form-select` | `<select>` |
| `form-multiselect` | `<select multiple>` |
| `form-checkbox` | `<input type="checkbox">` |
| `form-radio` | `<input type="radio">` |

```php
$css = tw::generate(
    '
        <input class="form-input">
        <textarea class="form-textarea"></textarea>
        <select class="form-select"></select>
        <select class="form-multiselect" multiple></select>
        <input type="checkbox" class="form-checkbox">
        <input type="radio" class="form-radio">
    ',
    '
        @plugin "@tailwindcss/forms" {
            strategy: "class";
        }
        @import "tailwindcss/utilities.css";
    '
);
```

Chaque classe réinitialise l’apparence du contrôle et définit les bordures, la marge intérieure et un anneau de focus ; `form-select` ajoute une image de fond en forme de chevron, et `form-checkbox`/`form-radio` ajoutent des icônes pour l’état coché. Remplacez ces styles avec des utilitaires classiques (par exemple `class="form-input rounded-lg border-gray-300"`).

Consultez [Plugins](https://tailwindphp.inline0.dev/fr/docs/plugins) pour la directive `@plugin` et les détails du chargement.
