
# Pierwsze kroki

## Instalacja

```bash
composer require tailwindphp/tailwindphp
```

TailwindPHP wymaga PHP w wersji 8.2 lub nowszej z rozszerzeniami `ctype` i `mbstring`, a także Composer. Oba rozszerzenia są dołączane do większości kompilacji PHP i oficjalnych obrazów Docker; `composer.json` jeszcze ich nie wymienia ([#11](https://github.com/inline0/tailwindphp/issues/11)), więc kompilacja bez nich zainstaluje pakiet, ale zakończy się błędem w czasie działania. Nie ma zależności Node.js, kroku budowania ani npm w obrazie Docker lub CI. Wystarczy `composer require` i wywołać API.

## Wygeneruj pierwszy CSS

```php
<?php

require __DIR__ . '/vendor/autoload.php';

use TailwindPHP\tw;

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

`generate()` skanuje znaczniki, wyodrębnia znalezione nazwy klas i emituje tylko CSS wymagane przez te klasy — nic więcej. Gdy nie podasz drugiego argumentu, używany jest domyślny `@import "tailwindcss"`, który wczytuje motyw, [Preflight](https://tailwindphp.inline0.dev/pl/docs/usage/imports) oraz warstwę narzędzi.

## Dostosowywanie za pomocą ciągu CSS

Przekaż wejściowy ciąg CSS jako drugi argument, aby dodać zmienne `@theme`, własne reguły lub dyrektywy. Nowe wartości motywu automatycznie stają się narzędziami:

```php
use TailwindPHP\tw;

$css = tw::generate(
    '<div class="bg-brand p-4">Hello</div>',
    '@import "tailwindcss"; @theme { --color-brand: #3b82f6; }'
);
// .bg-brand now resolves to var(--color-brand)
```

Zobacz [Motyw](https://tailwindphp.inline0.dev/pl/docs/usage/theme), aby poznać wszystkie przestrzenie nazw motywu.

## Dane wejściowe w postaci tablicy

W przypadku konfiguracji dłuższej niż jedna linia przekaż tablicę z kluczami `content` i `css`. Właśnie tutaj definiuje się komponenty za pomocą `@apply`:

```php
use TailwindPHP\tw;

$css = tw::generate([
    'content' => '<div class="flex p-4 btn">Hello</div>',
    'css' => '
        @import "tailwindcss";

        @theme {
            --color-brand: #3b82f6;
            --font-heading: "Inter", sans-serif;
        }

        .btn {
            @apply px-4 py-2 rounded-lg bg-brand text-white;
        }
    ',
]);
```

Forma tablicowa obsługuje też `minify`, `importPaths`, `cache` i `cacheTtl`. Zobacz [Użycie](https://tailwindphp.inline0.dev/pl/docs/usage), aby poznać formaty danych wejściowych, oraz [Dyrektywy](https://tailwindphp.inline0.dev/pl/docs/usage/directives), aby dowiedzieć się o `@apply`, `@theme`, `@utility` i innych.

## Zapis do pliku

`generate()` zwraca ciąg, więc zapis arkusza stylów wymaga jednej linijki:

```php
use TailwindPHP\tw;

file_put_contents('dist/styles.css', tw::generate([
    'content' => file_get_contents('templates/page.html'),
    'css' => '@import "tailwindcss";',
]));
```

W przypadku kompilacji opartych na plikach, które skanują katalog szablonów, oraz trybu obserwowania użyj zamiast tego [CLI](https://tailwindphp.inline0.dev/pl/docs/cli). Przyjmuje te same opcje kompilacji `@tailwindcss/cli`, ale obecnie inaczej skanuje zawartość niż Tailwind; strona CLI zawiera listę skanowanych elementów.

## Minifikacja na potrzeby produkcji

Przekaż `minify => true`, aby skompresować wynik podczas generowania, lub wywołaj `tw::minify()` na istniejącym ciągu:

```php
use TailwindPHP\tw;

// Minify during generation
$css = tw::generate([
    'content' => '<div class="flex p-4">Hello</div>',
    'minify' => true,
]);

// Or minify separately
$css = tw::generate('<div class="flex p-4">Hello</div>');
$minified = tw::minify($css);
```

Minifikator usuwa komentarze, redukuje białe znaki, skraca kolory szesnastkowe (`#ffffff` do `#fff`) i usuwa jednostki z wartości zerowych (`0px` do `0`). Zobacz [Buforowanie i minifikacja](https://tailwindphp.inline0.dev/pl/docs/advanced/caching), aby poznać opcje buforowania.

## Następne kroki

- [Użycie](https://tailwindphp.inline0.dev/pl/docs/usage) — proces generowania, skanowanie zawartości i formaty danych wejściowych.
- [Narzędzia klas](https://tailwindphp.inline0.dev/pl/docs/class-utilities) — `cn()`, `merge()`, `join()` i `variants()`.
- [Wtyczki](https://tailwindphp.inline0.dev/pl/docs/plugins) — typografia, formularze i własne wtyczki.
- [API](https://tailwindphp.inline0.dev/pl/docs/api) — pełny interfejs `tw` i możliwość ponownego użycia instancji kompilatora.
- [CLI](https://tailwindphp.inline0.dev/pl/docs/cli) — kompilacje oparte na plikach i tryb obserwowania bez Node.js.
