
# Plugins

TailwindPHP leveres med PHP-porte af de officielle TailwindCSS-plugins og stiller et indbygget PHP-plugin-API til rådighed. Plugins registrerer utilities, komponenter og varianter; de indlæses med direktivet `@plugin` i din input-CSS. De indbyggede plugins er 1:1-porte af deres JavaScript-modstykker — samme selektorer og output — implementeret i PHP i stedet for at blive kørt gennem Node. En undtagelse indtil videre: typografipluginets elementmodifikatorer (`prose-headings:`, `prose-a:`, …) afhænger af pluginvarianter, som endnu ikke anvendes ([#10](https://github.com/inline0/tailwindphp/issues/10)).

## Brug af `@plugin`

Henvis til et plugin ved navn med `@plugin`. Indbyggede plugins bruger pakkenavnet npm. Kombiner direktivet med `@import "tailwindcss/utilities.css";`, så pluginets klasser føjes til utilities-laget:

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

Flere plugins kan indlæses sammen, og rækkefølgen er uden betydning:

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

`@plugin` kan ikke indlejres i en anden at-rule (såsom `@media`), og et ikke-registreret pluginnavn udløser en fejl.

## Pluginindstillinger

Angiv indstillinger til et plugin med bloksyntaksen CSS efter navnet. Nøglerne svarer til pluginets indstillingsarray:

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

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

Pluginet `@tailwindcss/forms` accepterer `strategy` (`base` eller `class`); `@tailwindcss/typography` accepterer `className` til at omdøbe den genererede `prose`-klasse. Se de enkelte pluginsider for den fulde liste over indstillinger.

## Indbyggede plugins

| Plugin | Beskrivelse |
|--------|-------------|
| `@tailwindcss/typography` | Klasserne `prose` — typografiske standardindstillinger til formateret tekst. Se [Typography](https://tailwindphp.inline0.dev/da/docs/plugins/typography). |
| `@tailwindcss/forms` | Formularfelter, der kan nulstilles og styles. Se [Forms](https://tailwindphp.inline0.dev/da/docs/plugins/forms). |

## Brugerdefinerede plugins

Skriv dit eget plugin ved at implementere `PluginInterface` og bruge metoderne på `PluginAPI` (`addUtilities`, `matchUtilities`, `addComponents`, `addVariant`, `theme` og flere). Registrer det med `registerPlugin(new MyPlugin())`, så navnet, som returneres af `getName()`, kan findes i et `@plugin "my-plugin"`-direktiv:

```php
use function TailwindPHP\registerPlugin;

registerPlugin(new MyCustomPlugin());
```

Se [Custom Plugins](https://tailwindphp.inline0.dev/da/docs/plugins/custom) for grænsefladen, et fuldt eksempel og den komplette metodeoversigt for `PluginAPI`.
