
# Uso

O fluxo de trabalho principal consiste em uma única chamada: forneça a TailwindPHP seu conteúdo e uma configuração CSS opcional, e ela retornará o CSS das classes encontradas. Os nomes das classes são extraídos da marcação e compilados com base no tema resolvido; o resultado contém apenas as utilidades que você realmente usa.

```php
use TailwindPHP\tw;

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

Sem um segundo argumento, `generate()` usa um `@import "tailwindcss"` padrão (tema + [Preflight](https://tailwindphp.inline0.dev/pt/docs/usage/imports) + utilidades). Passe uma string CSS ou um array para personalizar.

## Análise de conteúdo

TailwindPHP encontra nomes de classes lendo os atributos `class` e `className` do seu conteúdo. Para inspecionar o que é extraído, use `tw::extractCandidates()`:

```php
use TailwindPHP\tw;

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

Os atributos `class` e `className` são analisados, e a lista retornada é desduplicada. Candidatos arbitrários (como `[mask-type:luminance]` ou `bg-[#1da1f2]`) são extraídos da mesma forma e compilados se forem válidos. Tudo o que aparecer aqui é exatamente o que `generate()` compilará.

## Formatos de entrada

Cada método estático aceita os mesmos três formatos de entrada:

| Formato | Assinatura | Use quando |
|--------|-----------|----------|
| Apenas string | `tw::generate($content)` | Tema padrão, sem personalização. |
| String + string CSS | `tw::generate($content, $css)` | Ajustes rápidos no tema ou diretivas em linha. |
| Array | `tw::generate(['content' => ..., 'css' => ...])` | Você precisa de `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,
]);
```

O formato de array é o único que aceita opções. Além de `css` e `minify`, ele aceita `importPaths` (veja [Importações](https://tailwindphp.inline0.dev/pt/docs/usage/imports)), `cache` e `cacheTtl` (veja [Cache](https://tailwindphp.inline0.dev/pt/docs/advanced/caching)).

## Compilador reutilizável

Compilar vários fragmentos com a mesma configuração — um ciclo de requisições, um lote de modelos ou uma biblioteca de componentes — é mais eficiente com uma única instância do compilador. `tw::compile()` resolve o tema e o sistema de design uma vez e depois os reutiliza:

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

O compilador também oferece inspeção de propriedades (`properties()`, `computedProperties()`, `value()`, `computedValue()`) e métodos de acesso ao tema (`colors()`, `breakpoints()`, `spacing()`). Consulte a [API](https://tailwindphp.inline0.dev/pt/docs/api) completa para ver todos os métodos.

## Configurando a entrada CSS

A maior parte dos recursos de TailwindPHP está na string CSS que você passa como configuração. Continue com:

- [Tema](https://tailwindphp.inline0.dev/pt/docs/usage/theme) — `@theme` variáveis e namespaces.
- [Diretivas](https://tailwindphp.inline0.dev/pt/docs/usage/directives) — `@apply`, `@utility`, `@layer`, `@custom-variant`.
- [Importações](https://tailwindphp.inline0.dev/pt/docs/usage/imports) — `@import`, módulos virtuais, `importPaths` e Preflight.
- [@source](https://tailwindphp.inline0.dev/pt/docs/usage/source) — controle quais arquivos e classes são analisados.
