
# Utilizzo

Il flusso di lavoro principale consiste in una sola chiamata: fornisci a TailwindPHP i tuoi contenuti e l'eventuale configurazione CSS; restituisce le CSS delle classi trovate. I nomi delle classi vengono estratti dal markup, compilati con il tema risolto e il risultato contiene solo le utility effettivamente utilizzate.

```php
use TailwindPHP\tw;

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

Senza un secondo argomento, `generate()` usa un `@import "tailwindcss"` predefinito (tema + [Preflight](https://tailwindphp.inline0.dev/it/docs/usage/imports) + utility). Passa una stringa CSS o un array per personalizzarlo.

## Analisi dei contenuti

TailwindPHP trova i nomi delle classi leggendo gli attributi `class` e `className` nei tuoi contenuti. Per controllare cosa viene estratto, usa `tw::extractCandidates()`:

```php
use TailwindPHP\tw;

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

Vengono analizzati entrambi gli attributi `class` e `className` e l'elenco restituito non contiene duplicati. I candidati arbitrari (come `[mask-type:luminance]` o `bg-[#1da1f2]`) vengono estratti allo stesso modo e compilati se validi. Tutto ciò che compare qui è esattamente ciò che `generate()` compilerà.

## Formati di input

Ogni metodo statico accetta le stesse tre forme di input:

| Formato | Firma | Quando usarlo |
|--------|-----------|----------|
| Solo stringa | `tw::generate($content)` | Tema predefinito, senza personalizzazioni. |
| Stringa + stringa CSS | `tw::generate($content, $css)` | Modifiche rapide al tema o direttive inline. |
| Array | `tw::generate(['content' => ..., 'css' => ...])` | Quando servono `minify`, `importPaths` o `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,
]);
```

Solo la forma array accetta opzioni. Oltre a `css` e `minify`, accetta `importPaths` (vedi [Importazioni](https://tailwindphp.inline0.dev/it/docs/usage/imports)), `cache` e `cacheTtl` (vedi [Memorizzazione nella cache](https://tailwindphp.inline0.dev/it/docs/advanced/caching)).

## Compilatore riutilizzabile

Compilare molti frammenti con la stessa configurazione — un ciclo di richieste, un gruppo di modelli o una libreria di componenti — è più efficiente con una singola istanza del compilatore. `tw::compile()` risolve il tema e il sistema di progettazione una volta, poi li riutilizza:

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

Il compilatore espone anche funzioni di ispezione delle proprietà (`properties()`, `computedProperties()`, `value()`, `computedValue()`) e funzioni di accesso al tema (`colors()`, `breakpoints()`, `spacing()`). Consulta il [API](https://tailwindphp.inline0.dev/it/docs/api) completo per tutti i metodi.

## Configurare l'input CSS

La maggior parte delle funzionalità di TailwindPHP si trova nella stringa CSS che passi come configurazione. Continua con:

- [Tema](https://tailwindphp.inline0.dev/it/docs/usage/theme) — `@theme` variabili e namespace.
- [Direttive](https://tailwindphp.inline0.dev/it/docs/usage/directives) — `@apply`, `@utility`, `@layer`, `@custom-variant`.
- [Importazioni](https://tailwindphp.inline0.dev/it/docs/usage/imports) — `@import`, moduli virtuali, `importPaths` e Preflight.
- [@source](https://tailwindphp.inline0.dev/it/docs/usage/source) — controlla quali file e classi vengono analizzati.
