
# TailwindPHP

TailwindPHP is een **1:1-port van TailwindCSS 4.x naar PHP**. Het parseert je CSS, scant je markup op klassennamen en genereert de CSS voor utilityklassen die TailwindCSS v4.3.3 oplevert — volledig in PHP, zonder Node.js of buildstap.

- **Pure PHP** — wordt geleverd als Composer-pakket en werkt op PHP 8.2+ met de standaardextensies `ctype` en `mbstring`. Geen `exec`, geen FFI en geen native buildtools.
- **Getest tegen TailwindCSS** — hulpfuncties, varianten, directives en CSS-functies volgen TailwindCSS v4.3.3. De uitvoer wordt gecontroleerd met de eigen testsuites van Tailwind, uit de broncode van TypeScript gehaald en bij elke push opnieuw uitgevoerd (4,400+ tests). De bekende verschillen (enkele serialisatiedetails zonder effect op de cascade, plus openstaande problemen) staan vermeld in [Compatibiliteit en upgraden](https://tailwindphp.inline0.dev/nl/docs/advanced/compatibility).
- **De volledige functieset** — de volledige set hulpfuncties van TailwindCSS v4.3.3 (inclusief `container`, de scrollbar-hulpfuncties, `zoom-*` en `tab-*`), elke variant (hover, focus, responsief, donkere modus, containerqueries, willekeurige waarden) en het volledige aanbod directives: `@import`, `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` en `@source`.
- **Alles inbegrepen** — `cn()`, `merge()`, `join()` en `variants()` bundelen PHP-ports van clsx, tailwind-merge en CVA, zodat de bijbehorende bibliotheken waar elk Tailwind-project gebruik van maakt al beschikbaar zijn.
- **Plugins** — `@tailwindcss/typography` en `@tailwindcss/forms` zijn volledig geporteerd, en met een PHP-plugin API kun je je eigen plugin schrijven.

## Waarom TailwindPHP bestaat

TailwindCSS is geschreven in TypeScript en draait op Node.js. Dat is een harde eis voor elk PHP-project dat Tailwind wil gebruiken: een tweede runtime, een installatie van npm en een buildstap in CI en Docker. Voor veel PHP-applicaties is dat extra gedoe waar ze liever niet aan beginnen.

TailwindPHP neemt die eis weg. Je PHP-code compileert rechtstreeks naar Tailwind CSS, met alleen de standaardbibliotheek. Dat maakt een aantal dingen mogelijk die met de JavaScript-toolchain lastig of onmogelijk zijn:

- **Frameworks voor WordPress en PHP** — lever thema's en plugins met Tailwind zonder gebruikers te vragen Node.js te installeren of een build uit te voeren. Gewoon `composer require` en klaar. Zie [TailwindWP](https://github.com/dnnsjsk/tailwindwp), een voorbeeldplugin voor WordPress die blokeditor-CSS genereert met TailwindPHP.
- **CSS tijdens runtime** — genereer hulpfunctie-CSS direct op basis van gebruikersinvoer, database-inhoud of templatevariabelen in plaats van tijdens het bouwen.
- **Eenvoudigere implementatie** — geen Node.js in productie, geen buildstap in CI en geen npm in je Docker-image.

Het is hetzelfde idee dat [scssphp](https://github.com/scssphp/scssphp) naar SCSS bracht — de volledige compiler, in PHP.

## Wat het doet

- Compileert de utilityklassen, varianten en willekeurige waarden van TailwindCSS v4.3.3 op basis van klassennamen in je inhoud.
- Verwerkt alle directives: `@import` (inclusief virtuele modules zoals `tailwindcss` en `tailwindcss/utilities`, en `reference`-imports), `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` en `@source`.
- Implementeert de CSS-functies van Tailwind — `theme()`, `--theme()`, `--spacing()` en `--alpha()` — plus de omzetting van `color-mix()` → `oklab()` en de CSS-transformaties die TailwindCSS aan LightningCSS uitbesteedt.
- Verwerkt `@import` vanuit het bestandssysteem met geneste imports, deduplicatie en eigen resolvers, of vanuit inline CSS-tekenreeksen.
- Bevat Preflight (de basisreset van Tailwind), prefixondersteuning, `@property`-fallbacks, browserprefixen en het naar boven verplaatsen van keyframedefinities.
- Bundelt `cn()`, `merge()`, `join()` en `variants()`/`compose()` voor het opbouwen van klassennamen, conflictoplossing en componentvarianten.
- Bevat de typography- en forms-plugins, plus een plugin-API (`addUtilities`, `matchUtilities`, `addComponents`, `addVariant`, `theme`, …) voor eigen plugins.
- Biedt een CLI (`bin/tailwindphp`) met de buildopties van `@tailwindcss/cli`, plus uitvoercaching in bestanden, een persistente cache voor de compilerstatus en een CSS-minifier voor productie.

## Wat het niet is

TailwindPHP is een CSS-compiler, geen toolchain voor editors. De IDE-gerichte onderdelen van het Tailwind-ecosysteem — IntelliSense, automatisch aanvullen, sorteren van klassen en bronkaarten — zijn bewust weggelaten, omdat dit editorfuncties zijn en geen onderdeel van het genereren van CSS. Alles waarmee CSS wordt geproduceerd, valt binnen het bereik; alles wat je editor aandrijft, niet.

## Waar begin je?

- [Aan de slag](https://tailwindphp.inline0.dev/nl/docs/getting-started) — installeer het pakket en genereer je eerste stylesheet.
- [Gebruik](https://tailwindphp.inline0.dev/nl/docs/usage) — scan content, pas het thema aan en gebruik de directives van Tailwind.
- [Klassehulpmiddelen](https://tailwindphp.inline0.dev/nl/docs/class-utilities) — `cn()`, `merge()`, `join()` en `variants()`.
- [Plugins](https://tailwindphp.inline0.dev/nl/docs/plugins) — typografie, formulieren en je eigen plugins schrijven.
- [API](https://tailwindphp.inline0.dev/nl/docs/api) — het volledige `tw`-oppervlak en de `TailwindCompiler`-instantie.
- [CLI](https://tailwindphp.inline0.dev/nl/docs/cli) — `bin/tailwindphp` voor bestandsgebaseerde builds en de watchmodus.
- [Geavanceerd](https://tailwindphp.inline0.dev/nl/docs/advanced) — architectuur, caching, prestaties en compatibiliteitsnotities.
