
# Pluginer

TailwindPHP levereras med PHP portar av de officiella pluginen TailwindCSS och erbjuder ett inbyggt API för pluginer PHPAPI. Pluginer registrerar verktyg, komponenter och varianter. De laddas med direktivet `@plugin` i din indata CSS. De inbyggda pluginen är 1:1 portar av sina motsvarigheter i JavaScript – samma selektorer och utdata, men implementerade i PHP i stället för att köras via Node. Ett undantag just nu: typografipluginens elementmodifierare (`prose-headings:`, `prose-a:`, …) bygger på pluginvarianter, som ännu inte tillämpas ([#10](https://github.com/inline0/tailwindphp/issues/10)).

## Använda `@plugin`

Ange ett plugin med namn via `@plugin`. Inbyggda pluginer använder paketnamnet npm. Kombinera direktivet med `@import "tailwindcss/utilities.css";` så att pluginens klasser läggs till i verktygslagret:

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

Flera pluginer kan laddas tillsammans, och ordningen spelar ingen roll:

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

`@plugin` får inte ligga inuti en annan at-regel (som `@media`), och ett oregistrerat plugin-namn ger ett fel.

## Pluginalternativ

Ange alternativ för ett plugin med blocksyntaxen CSS efter namnet. Nycklarna motsvarar pluginens alternativarray:

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

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

Pluginen `@tailwindcss/forms` godtar `strategy` (`base` eller `class`); `@tailwindcss/typography` godtar `className` för att byta namn på den genererade klassen `prose`. Se sidorna för respektive plugin för hela listan med alternativ.

## Inbyggda pluginer

| Plugin | Beskrivning |
|--------|-------------|
| `@tailwindcss/typography` | Klasserna `prose` – typografiska standardinställningar för formaterad text. Se [Typografi](https://tailwindphp.inline0.dev/sv/docs/plugins/typography). |
| `@tailwindcss/forms` | Återställningsbara formulärkontroller som kan utformas. Se [Formulär](https://tailwindphp.inline0.dev/sv/docs/plugins/forms). |

## Anpassade pluginer

Skriv ett eget plugin genom att implementera `PluginInterface` och använda metoderna på `PluginAPI` (`addUtilities`, `matchUtilities`, `addComponents`, `addVariant`, `theme` med flera). Registrera det med `registerPlugin(new MyPlugin())` så att namnet som returneras av `getName()` kan hittas i ett `@plugin "my-plugin"`-direktiv:

```php
use function TailwindPHP\registerPlugin;

registerPlugin(new MyCustomPlugin());
```

Se [Anpassade pluginer](https://tailwindphp.inline0.dev/sv/docs/plugins/custom) för gränssnittet, ett fullständigt exempel och hela metodreferensen `PluginAPI`.
