
# 使い方

基本的な流れは1回の呼び出しで完結します。コンテンツと任意のCSS設定をTailwindPHPに渡すと、見つかったクラスに対応するCSSが返されます。マークアップからクラス名を抽出し、解決済みのテーマに基づいてコンパイルした結果、実際に使用するユーティリティだけが含まれます。

```php
use TailwindPHP\tw;

$css = tw::generate('<div class="flex items-center p-4 bg-blue-500">Hello</div>');
```

2つ目の引数を省略すると、`generate()`は既定の`@import "tailwindcss"`（テーマ + [Preflight](https://tailwindphp.inline0.dev/ja/docs/usage/imports) + ユーティリティ）を使います。カスタマイズするには、CSS文字列または配列を渡します。

## コンテンツのスキャン

TailwindPHPは、コンテンツ内の`class`属性と`className`属性を読み取ってクラス名を見つけます。抽出される内容を確認するには、`tw::extractCandidates()`を使います。

```php
use TailwindPHP\tw;

tw::extractCandidates('<div class="flex p-4" className="bg-blue-500">');
// ['flex', 'p-4', 'bg-blue-500']
```

`class`属性と`className`属性の両方がスキャンされ、返されるリスト内の重複は削除されます。`[mask-type:luminance]`や`bg-[#1da1f2]`などの任意の候補も同じ方法で抽出され、有効であればコンパイルされます。ここに表示される内容が、`generate()`でコンパイルされる内容そのものです。

## 入力形式

すべての静的メソッドは、同じ3種類の入力形式を受け付けます。

| 形式 | シグネチャ | 使用する場面 |
|--------|-----------|----------|
| 文字列のみ | `tw::generate($content)` | 既定のテーマを使い、カスタマイズしない場合。 |
| 文字列 + CSS文字列 | `tw::generate($content, $css)` | テーマを手早く調整する場合や、ディレクティブをインラインで指定する場合。 |
| 配列 | `tw::generate(['content' => ..., 'css' => ...])` | `minify`、`importPaths`、`cache`が必要な場合。 |

```php
use TailwindPHP\tw;

// Format 1: String only
tw::generate('<div class="flex">');

// Format 2: String + CSS string
tw::generate('<div class="flex">', '@import "tailwindcss"; @theme { --color-brand: #3b82f6; }');

// Format 3: Array with content, css, and options
tw::generate([
    'content' => '<div class="flex p-4">',
    'css'     => '@import "tailwindcss";',
    'minify'  => true,
]);
```

オプションを受け付けるのは配列形式だけです。`css`と`minify`に加えて、`importPaths`（[Imports](https://tailwindphp.inline0.dev/ja/docs/usage/imports)を参照）、`cache`、`cacheTtl`（[Caching](https://tailwindphp.inline0.dev/ja/docs/advanced/caching)を参照）を指定できます。

## 再利用可能なコンパイラー

リクエストループ、テンプレートの一括処理、コンポーネントライブラリなど、同じ設定で複数の断片をコンパイルする場合は、コンパイラーインスタンスを1つ使うと効率的です。`tw::compile()`はテーマとデザインシステムを一度だけ解決し、その後は再利用します。

```php
use TailwindPHP\tw;

$compiler = tw::compile('@import "tailwindcss"; @theme { --color-brand: #3b82f6; }');

$css        = $compiler->generate('<div class="flex p-4 bg-brand">');
$candidates = $compiler->extractCandidates('<div class="flex p-4 bg-brand">');
$minified   = $compiler->minify($css);
```

コンパイラーでは、プロパティの検査（`properties()`、`computedProperties()`、`value()`、`computedValue()`）とテーマへのアクセサー（`colors()`、`breakpoints()`、`spacing()`）も利用できます。すべてのメソッドについては、完全な[API](https://tailwindphp.inline0.dev/ja/docs/api)を参照してください。

## 入力CSSの設定

TailwindPHPの機能の多くは、設定として渡すCSS文字列で利用できます。次の項目を参照してください。

- [Theme](https://tailwindphp.inline0.dev/ja/docs/usage/theme) — `@theme`変数と名前空間。
- [Directives](https://tailwindphp.inline0.dev/ja/docs/usage/directives) — `@apply`、`@utility`、`@layer`、`@custom-variant`。
- [Imports](https://tailwindphp.inline0.dev/ja/docs/usage/imports) — `@import`、仮想モジュール、`importPaths`、Preflight。
- [@source](https://tailwindphp.inline0.dev/ja/docs/usage/source) — スキャンするファイルとクラスを制御します。
