
# Utilisation

Le flux de travail principal tient en un seul appel : fournissez à TailwindPHP votre contenu et une configuration CSS facultative ; il renvoie le CSS correspondant aux classes trouvées. Les noms de classes sont extraits du balisage, compilés selon le thème résolu, et le résultat ne contient que les utilitaires que vous utilisez réellement.

```php
use TailwindPHP\tw;

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

Sans deuxième argument, `generate()` utilise un `@import "tailwindcss"` par défaut (thème + [Preflight](https://tailwindphp.inline0.dev/fr/docs/usage/imports) + utilitaires). Passez une chaîne CSS ou un tableau pour le personnaliser.

## Analyse du contenu

TailwindPHP trouve les noms de classes en lisant les attributs `class` et `className` de votre contenu. Pour examiner les éléments extraits, utilisez `tw::extractCandidates()` :

```php
use TailwindPHP\tw;

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

Les attributs `class` et `className` sont tous deux analysés, et la liste renvoyée est dédupliquée. Les candidats arbitraires (comme `[mask-type:luminance]` ou `bg-[#1da1f2]`) sont extraits de la même manière et compilés s’ils sont valides. Tout ce qui apparaît ici est exactement ce que `generate()` compilera.

## Formats d'entrée

Chaque méthode statique accepte les trois mêmes formes d’entrée :

| Format | Signature | Cas d’utilisation |
|--------|-----------|----------|
| Chaîne seule | `tw::generate($content)` | Thème par défaut, sans personnalisation. |
| Chaîne + chaîne CSS | `tw::generate($content, $css)` | Ajustements rapides du thème ou directives intégrées. |
| Tableau | `tw::generate(['content' => ..., 'css' => ...])` | Pour utiliser `minify`, `importPaths` ou `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,
]);
```

La forme tableau est la seule à accepter des options. En plus de `css` et de `minify`, elle accepte `importPaths` (voir [Imports](https://tailwindphp.inline0.dev/fr/docs/usage/imports)), `cache` et `cacheTtl` (voir [Mise en cache](https://tailwindphp.inline0.dev/fr/docs/advanced/caching)).

## Compilateur réutilisable

Compiler de nombreux fragments avec la même configuration — une boucle de requêtes, un lot de modèles ou une bibliothèque de composants — est plus efficace avec une seule instance du compilateur. `tw::compile()` résout le thème et le système de conception une seule fois, puis les réutilise :

```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);
```

Le compilateur permet aussi d’inspecter les propriétés (`properties()`, `computedProperties()`, `value()`, `computedValue()`) et d’accéder au thème (`colors()`, `breakpoints()`, `spacing()`). Consultez l’[API](https://tailwindphp.inline0.dev/fr/docs/api) complète pour découvrir toutes les méthodes.

## Configuration du CSS d’entrée

La majeure partie des fonctionnalités de TailwindPHP se trouve dans la chaîne CSS que vous transmettez comme configuration. Consultez :

- [Thème](https://tailwindphp.inline0.dev/fr/docs/usage/theme) — `@theme` variables et espaces de noms.
- [Directives](https://tailwindphp.inline0.dev/fr/docs/usage/directives) — `@apply`, `@utility`, `@layer`, `@custom-variant`.
- [Imports](https://tailwindphp.inline0.dev/fr/docs/usage/imports) — `@import`, modules virtuels, `importPaths` et Preflight.
- [@source](https://tailwindphp.inline0.dev/fr/docs/usage/source) — définissez les fichiers et les classes analysés.
