
# Użycie

Podstawowy przebieg pracy to jedno wywołanie: przekaż TailwindPHP swoją treść oraz opcjonalną konfigurację CSS, a otrzymasz CSS klas, które znajdzie. Nazwy klas są wyodrębniane ze znaczników, kompilowane względem rozpoznanego motywu, a wynik zawiera tylko używane przez Ciebie narzędzia.

```php
use TailwindPHP\tw;

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

Bez drugiego argumentu `generate()` używa domyślnego `@import "tailwindcss"` (motyw + [Preflight](https://tailwindphp.inline0.dev/pl/docs/usage/imports) + narzędzia). Przekaż ciąg CSS lub tablicę, aby dostosować ustawienia.

## Skanowanie treści

TailwindPHP wyszukuje nazwy klas, odczytując atrybuty `class` i `className` w treści. Aby sprawdzić, co zostanie wyodrębnione, użyj `tw::extractCandidates()`:

```php
use TailwindPHP\tw;

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

Skanowane są oba atrybuty `class` i `className`, a zwrócona lista nie zawiera duplikatów. Dowolne kandydaty (takie jak `[mask-type:luminance]` lub `bg-[#1da1f2]`) są wyodrębniane w ten sam sposób i kompilowane, jeśli są poprawne. `generate()` skompiluje dokładnie to, co pojawi się tutaj.

## Formaty wejściowe

Każda metoda statyczna obsługuje te same trzy rodzaje danych wejściowych:

| Format | Sygnatura | Kiedy używać |
|--------|-----------|----------|
| Tylko ciąg | `tw::generate($content)` | Domyślny motyw, bez dostosowywania. |
| Ciąg + ciąg CSS | `tw::generate($content, $css)` | Szybkie zmiany motywu lub dyrektywy podane bezpośrednio. |
| Tablica | `tw::generate(['content' => ..., 'css' => ...])` | Gdy potrzebujesz `minify`, `importPaths` lub `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,
]);
```

Tylko w postaci tablicy można przekazać opcje. Oprócz `css` i `minify` obsługuje ona `importPaths` (zobacz [Importy](https://tailwindphp.inline0.dev/pl/docs/usage/imports)), `cache` oraz `cacheTtl` (zobacz [Buforowanie](https://tailwindphp.inline0.dev/pl/docs/advanced/caching)).

## Kompilator wielokrotnego użytku

Kompilowanie wielu fragmentów przy użyciu tej samej konfiguracji — w pętli żądań, zbiorze szablonów lub bibliotece komponentów — jest tańsze przy użyciu jednej instancji kompilatora. `tw::compile()` raz rozpoznaje motyw i system projektowy, a następnie używa ich ponownie:

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

Kompilator udostępnia też inspekcję właściwości (`properties()`, `computedProperties()`, `value()`, `computedValue()`) oraz metody dostępu do motywu (`colors()`, `breakpoints()`, `spacing()`). Pełna [dokumentacjaAPI](https://tailwindphp.inline0.dev/pl/docs/api) zawiera opis wszystkich metod.

## Konfigurowanie danych wejściowych CSS

Większość możliwości TailwindPHP kryje się w ciągu CSS przekazywanym jako konfiguracja. Przejdź do:

- [Motyw](https://tailwindphp.inline0.dev/pl/docs/usage/theme) — zmienne `@theme` i przestrzenie nazw.
- [Dyrektywy](https://tailwindphp.inline0.dev/pl/docs/usage/directives) — `@apply`, `@utility`, `@layer`, `@custom-variant`.
- [Importy](https://tailwindphp.inline0.dev/pl/docs/usage/imports) — `@import`, moduły wirtualne, `importPaths` i Preflight.
- [@source](https://tailwindphp.inline0.dev/pl/docs/usage/source) — określa, które pliki i klasy są skanowane.
