
# Pluginy

TailwindPHP obsahuje porty PHP oficiálních pluginů TailwindCSS a zpřístupňuje nativní rozhraní pluginů PHP API. Pluginy registrují utility, komponenty a varianty; načítají se direktivou `@plugin` ve vstupním CSS. Vestavěné pluginy jsou věrnými porty 1:1 svých protějšků JavaScript — mají stejné selektory a výstup, ale jsou implementované v PHP místo spouštění přes Node. Jedinou výjimkou jsou zatím modifikátory prvků v typografickém pluginu (`prose-headings:`, `prose-a:`, …), které spoléhají na varianty pluginů, jež se dosud nepoužívají ([#10](https://github.com/inline0/tailwindphp/issues/10)).

## Použití `@plugin`

Na plugin odkažte jeho názvem pomocí `@plugin`. Vestavěné pluginy používají název balíčku npm. Spojte direktivu s `@import "tailwindcss/utilities.css";`, aby se třídy pluginu přidaly do vrstvy utilit:

```php
use TailwindPHP\tw;

$css = tw::generate([
    'content' => '<article class="prose prose-lg"><h1>Hello</h1><p>Content here</p></article>',
    'css' => '
        @plugin "@tailwindcss/typography";
        @import "tailwindcss/utilities.css";
    ',
]);
```

Lze načíst více pluginů současně a jejich pořadí není důležité:

```css
@plugin "@tailwindcss/typography";
@plugin "@tailwindcss/forms";
@import "tailwindcss/utilities.css";
```

`@plugin` nelze vnořit do jiné direktivy at-rule (například `@media`); neregistrovaný název pluginu vyvolá chybu.

## Možnosti pluginů

Možnosti pluginu předáte syntaxí bloku CSS za názvem. Klíče odpovídají poli možností pluginu:

```css
@plugin "@tailwindcss/forms" {
    strategy: "class";
}

@plugin "@tailwindcss/typography" {
    className: "markdown";
}
```

Plugin `@tailwindcss/forms` přijímá `strategy` (`base` nebo `class`); `@tailwindcss/typography` přijímá `className` pro přejmenování generované třídy `prose`. Úplný seznam možností najdete na stránkách jednotlivých pluginů.

## Vestavěné pluginy

| Plugin | Popis |
|--------|-------------|
| `@tailwindcss/typography` | Třídy `prose` — typografická výchozí nastavení pro formátovaný text. Viz [Typografie](https://tailwindphp.inline0.dev/cs/docs/plugins/typography). |
| `@tailwindcss/forms` | Ovládací prvky formuláře, které lze resetovat a stylovat. Viz [Formuláře](https://tailwindphp.inline0.dev/cs/docs/plugins/forms). |

## Vlastní pluginy

Vytvořte vlastní plugin implementací `PluginInterface` a použitím metod v `PluginAPI` (`addUtilities`, `matchUtilities`, `addComponents`, `addVariant`, `theme` a dalších). Zaregistrujte jej pomocí `registerPlugin(new MyPlugin())`, aby se název vrácený funkcí `getName()` rozpoznal v direktivě `@plugin "my-plugin"`:

```php
use function TailwindPHP\registerPlugin;

registerPlugin(new MyCustomPlugin());
```

Rozhraní, úplný příklad a kompletní přehled metod `PluginAPI` najdete v části [Vlastní pluginy](https://tailwindphp.inline0.dev/cs/docs/plugins/custom).
