
# TailwindPHP

TailwindPHP er en **1:1-portering af TailwindCSS 4.x til PHP**. Den fortolker din CSS, scanner din markup for klassenavne og genererer de utility-CSS, som TailwindCSS v4.3.3 producerer — udelukkende i PHP, uden Node.js og uden buildtrin.

- **Ren PHP** — leveres som en Composer-pakke og kører på PHP 8.2+ med standardudvidelserne `ctype` og `mbstring`. Ingen `exec`, FFI eller native buildværktøjer.
- **Testet mod TailwindCSS** — utilities, varianter, direktiver og funktionerne CSS følger TailwindCSS v4.3.3. Outputtet verificeres mod Tailwinds egne testsuiter, udtrukket fra kilden TypeScript og kørt igen ved hver push (4,400+ tests). De kendte forskelle (enkelte serialiseringsdetaljer uden betydning for cascade samt åbne problemer) er beskrevet i [Kompatibilitet og opgradering](https://tailwindphp.inline0.dev/da/docs/advanced/compatibility).
- **Hele funktionssættet** — det fulde TailwindCSS v4.3.3-utility-sæt (herunder `container`, scrollbar-utilities, `zoom-*` og `tab-*`), alle varianter (hover, focus, responsiv, mørk tilstand, containerforespørgsler, vilkårlige værdier) og hele direktivfladen: `@import`, `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` og `@source`.
- **Alt inkluderet** — `cn()`, `merge()`, `join()` og `variants()` samler PHP-porteringer af clsx, tailwind-merge og CVA, så de ledsagende biblioteker, som alle Tailwind-projekter bruger, allerede er med.
- **Plugins** — `@tailwindcss/typography` og `@tailwindcss/forms` er porteret fuldt ud, og et plugin-PHP API lader dig skrive dine egne.

## Hvorfor TailwindPHP findes

TailwindCSS er skrevet i TypeScript og kører på Node.js. Det er et fast krav for ethvert PHP-projekt, der vil bruge Tailwind: en ekstra runtime, en installation af npm og et buildtrin i CI og Docker. For mange PHP-applikationer er det besværligt, og de vil helst undgå det.

TailwindPHP fjerner denne byrde. Din PHP-kode kompilerer Tailwind CSS direkte ved kun at bruge standardbiblioteket. Det åbner for ting, som er besværlige eller umulige med værktøjskæden JavaScript:

- **WordPress- og PHP-frameworks** — lever Tailwind-baserede temaer og plugins uden at bede brugerne installere Node.js eller køre et build. Kør blot `composer require`, så er du klar. Se [TailwindWP](https://github.com/dnnsjsk/tailwindwp), et eksempel på et WordPress-plugin, der genererer CSS til blokeditoren med TailwindPHP.
- **CSS under kørsel** — generér utility-CSS direkte ud fra brugerinput, databaseindhold eller skabelonvariabler i stedet for under build.
- **Enklere udrulning** — intet Node.js i produktion, intet buildtrin i CI og intet npm i dit Docker-image.

Det er samme idé, som [scssphp](https://github.com/scssphp/scssphp) bragte til SCSS — hele compileren i PHP.

## Funktioner

- Kompilerer værktøjssættet TailwindCSS v4.3.3, varianter og vilkårlige værdier ud fra klassenavne i dit indhold.
- Håndterer hele direktivfladen: `@import` (herunder virtuelle moduler som `tailwindcss` og `tailwindcss/utilities` samt `reference`-importer), `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` og `@source`.
- Implementerer Tailwinds CSS-funktioner — `theme()`, `--theme()`, `--spacing()` og `--alpha()` — samt konvertering fra `color-mix()` til `oklab()` og de CSS-transformationer, som TailwindCSS overlader til LightningCSS.
- Finder `@import` i filsystemet med indlejrede importer, deduplikering og brugerdefinerede resolvere eller i indlejrede CSS-strenge.
- Indeholder Preflight (Tailwinds grundlæggende nulstilling), understøttelse af præfikser, `@property`-reserveværdier, leverandørpræfikser og flytning af keyframes op i hierarkiet.
- Samler `cn()`, `merge()`, `join()` og `variants()`/`compose()` til opbygning af klassenavne, konfliktløsning og komponentvarianter.
- Indeholder plugins til typografi og formularer samt en plugin-API (`addUtilities`, `matchUtilities`, `addComponents`, `addVariant`, `theme`, …) til brugerdefinerede plugins.
- Leverer en CLI (`bin/tailwindphp`) med `@tailwindcss/cli`-byggeindstillingerne samt filbaseret outputcaching, en vedvarende cache af compilerens tilstand og en CSS-minificering til produktion.

## Hvad det ikke er

TailwindPHP er en CSS-compiler, ikke en værktøjskæde til editorer. Den udelader bevidst de IDE-rettede dele af Tailwind-økosystemet — IntelliSense, autofuldførelse, sortering af klasser og source maps — fordi det er editorfunktioner, ikke en del af genereringen af CSS. Alt, der producerer CSS, er omfattet; alt, der driver din editor, er ikke.

## Sådan kommer du i gang

- [Kom godt i gang](https://tailwindphp.inline0.dev/da/docs/getting-started) — installer pakken, og generér dit første stylesheet.
- [Brug](https://tailwindphp.inline0.dev/da/docs/usage) — scan indhold, tilpas temaet, og brug Tailwinds direktiver.
- [Klasseutilities](https://tailwindphp.inline0.dev/da/docs/class-utilities) — `cn()`, `merge()`, `join()` og `variants()`.
- [Plugins](https://tailwindphp.inline0.dev/da/docs/plugins) — typografi, formularer og udvikling af egne plugins.
- [API](https://tailwindphp.inline0.dev/da/docs/api) — hele `tw`-fladen og `TailwindCompiler`-instansen.
- [CLI](https://tailwindphp.inline0.dev/da/docs/cli) — `bin/tailwindphp` til filbaserede builds og overvågningstilstand.
- [Avanceret](https://tailwindphp.inline0.dev/da/docs/advanced) — arkitektur, caching, ydeevne og kompatibilitetsnoter.
