
# Formsプラグイン

`@tailwindcss/forms`は公式formsプラグインの1:1のPHP移植版です。テキスト入力欄、テキストエリア、選択欄、チェックボックス、ラジオボタンなどのフォームコントロールを、統一された基準に整える独自のリセットを提供します（外観のリセット、境界線、パディング、フォーカスリング、カスタム選択欄のシェブロン、チェックボックスとラジオボタンのアイコン）。その後、ユーティリティで上書きできます。

## 使い方

`@plugin`でプラグインを読み込み、utilitiesレイヤーをインポートします。

```php
use TailwindPHP\tw;

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

## 適用方式

`strategy`オプションでスタイルの適用方法を制御します。

| 適用方式 | 動作 |
|----------|----------|
| `base` | `[type='text']`、`textarea`、`select`などのセレクターを使い、ネイティブのフォーム要素全体にスタイルを適用します。 |
| `class` | 明示的に`form-*`クラスを指定した要素だけにスタイルを適用し、クラスのない要素には適用しません。 |

`strategy`を省略すると、両方の方式が適用されます。ネイティブ要素にはベースリセットが適用され、`form-*`クラスも使えるようになります。どちらか一方の方式を指定すると、もう一方は適用されません。

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

## クラス方式

`class`方式（またはデフォルト）では、スタイルを適用する要素に次のクラスを明示的に指定します。

| クラス | 要素 |
|-------|---------|
| `form-input` | テキスト系の入力欄 |
| `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";
    '
);
```

各クラスはコントロールの外観をリセットし、境界線、パディング、フォーカスリングを設定します。`form-select`はシェブロンの背景画像を追加し、`form-checkbox`/`form-radio`はチェック時のアイコンを追加します。通常のユーティリティ（たとえば`class="form-input rounded-lg border-gray-300"`）で上書きできます。

`@plugin`ディレクティブと読み込み方法は[プラグイン](https://tailwindphp.inline0.dev/ja/docs/plugins)を参照してください。
