
# Плагіни

TailwindPHP постачається з PHP портами офіційних плагінів TailwindCSS і надає нативний плагін PHP API. Плагіни реєструють утиліти, компоненти й варіанти; вони завантажуються директивою `@plugin` у вхідному файлі CSS. Вбудовані плагіни — це 1:1 порти відповідних плагінів JavaScript: ті самі селектори й результат, реалізовані на PHP, а не запущені через Node. Єдиний наразі виняток: модифікатори елементів плагіна типографіки (`prose-headings:`, `prose-a:`, …) залежать від варіантів плагінів, які ще не застосовуються ([#10](https://github.com/inline0/tailwindphp/issues/10)).

## Використання `@plugin`

Вкажіть плагін за назвою за допомогою `@plugin`. Вбудовані плагіни використовують назву пакета npm. Поєднайте директиву з `@import "tailwindcss/utilities.css";`, щоб класи плагіна потрапили до шару утиліт:

```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";
    ',
]);
```

Можна завантажити кілька плагінів одночасно; їхній порядок не має значення:

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

`@plugin` не можна вкладати в інше правило at-rule (наприклад, `@media`), а незареєстрована назва плагіна спричиняє помилку.

## Параметри плагіна

Передавайте параметри плагіну за допомогою синтаксису блоку CSS після назви. Ключі відповідають масиву параметрів плагіна:

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

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

Плагін `@tailwindcss/forms` приймає `strategy` (`base` або `class`); `@tailwindcss/typography` приймає `className`, щоб перейменувати згенерований клас `prose`. Повний список параметрів наведено на сторінках окремих плагінів.

## Вбудовані плагіни

| Плагін | Опис |
|--------|-------------|
| `@tailwindcss/typography` | Класи `prose` — типографічні значення за замовчуванням для форматованого тексту. Див. [Типографіка](https://tailwindphp.inline0.dev/uk/docs/plugins/typography). |
| `@tailwindcss/forms` | Скидання стилів елементів форм із можливістю стилізації. Див. [Форми](https://tailwindphp.inline0.dev/uk/docs/plugins/forms). |

## Власні плагіни

Створіть власний плагін, реалізувавши `PluginInterface` і використовуючи методи `PluginAPI` (`addUtilities`, `matchUtilities`, `addComponents`, `addVariant`, `theme` тощо). Зареєструйте його через `registerPlugin(new MyPlugin())`, щоб назва, яку повертає `getName()`, розпізнавалася в директиві `@plugin "my-plugin"`:

```php
use function TailwindPHP\registerPlugin;

registerPlugin(new MyCustomPlugin());
```

Інтерфейс, повний приклад і повний довідник методів `PluginAPI` див. у розділі [Власні плагіни](https://tailwindphp.inline0.dev/uk/docs/plugins/custom).
