
# TailwindPHP

TailwindPHP är en **1:1-portering av TailwindCSS 4.x till PHP**. Den tolkar din CSS, genomsöker din markup efter klassnamn och genererar utility-CSS som TailwindCSS v4.3.3 producerar — helt i PHP, utan Node.js och byggsteg.

- **Ren PHP** — levereras som ett Composer-paket och körs på PHP 8.2+ med standardtilläggen `ctype` och `mbstring`. Ingen `exec`, ingen FFI och inga inbyggda byggverktyg.
- **Kontrollerat mot TailwindCSS** — verktyg, varianter, direktiv och CSS-funktioner följer TailwindCSS v4.3.3. Utdata verifieras mot Tailwinds egna testsviter, extraherade från källkoden för TypeScript och körda igen vid varje push (4,400+ tester). De kända skillnaderna (några serialiseringsdetaljer utan påverkan på kaskaden samt öppna ärenden) finns listade i [Kompatibilitet och uppgradering](https://tailwindphp.inline0.dev/sv/docs/advanced/compatibility).
- **Hela funktionsuppsättningen** — hela TailwindCSS-verktygsuppsättningen för v4.3.3 (inklusive `container`, rullningslistverktygen, `zoom-*` och `tab-*`), alla varianter (hover, fokus, responsiv design, mörkt läge, containerfrågor, godtyckliga värden) och hela uppsättningen direktiv: `@import`, `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` och `@source`.
- **Allt ingår** — `cn()`, `merge()`, `join()` och `variants()` innehåller porteringar av clsx, tailwind-merge och CVA i PHP, så de kompletterande bibliotek som alla Tailwind-projekt använder finns redan på plats.
- **Plugin** — `@tailwindcss/typography` och `@tailwindcss/forms` är fullständigt porterade, och en PHP-plugin API låter dig skriva en egen.

## Varför TailwindPHP finns

TailwindCSS är skrivet i TypeScript och körs på Node.js. Det är ett absolut krav för alla projekt i PHP som vill använda Tailwind: en andra körmiljö, en npm-installation och ett byggsteg i CI och Docker. För många PHP-applikationer är det ett extra krångel de helst slipper.

TailwindPHP tar bort det kravet. Din PHP-kod kompilerar Tailwind CSS direkt med enbart standardbiblioteket. Det möjliggör sådant som är krångligt eller omöjligt med verktygskedjan för JavaScript:

- **Ramverk för WordPress och PHP** — leverera teman och insticksprogram som drivs av Tailwind utan att be användarna installera Node.js eller köra ett bygge. Kör bara `composer require` så är du igång. Se [TailwindWP](https://github.com/dnnsjsk/tailwindwp), ett exempel på ett WordPress-insticksprogram som genererar blockredigerarens CSS med TailwindPHP.
- **CSS vid körning** — generera utility-CSS direkt från användarinmatning, databasinnehåll eller mallvariabler i stället för vid byggtillfället.
- **Enklare driftsättning** — ingen Node.js i produktion, inget byggsteg i CI och ingen npm i din Docker-avbildning.

Det är samma idé som [scssphp](https://github.com/scssphp/scssphp) tog till SCSS — hela kompilatorn i PHP.

## Vad det gör

- Kompilerar hela uppsättningen utilities för TailwindCSS v4.3.3, varianter och godtyckliga värden från klassnamn i innehållet.
- Hanterar alla direktiv: `@import` (inklusive virtuella moduler som `tailwindcss` och `tailwindcss/utilities` samt `reference`-importer), `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` och `@source`.
- Implementerar Tailwinds CSS-funktioner — `theme()`, `--theme()`, `--spacing()` och `--alpha()` — samt konvertering från `color-mix()` till `oklab()` och de CSS-transformeringar som TailwindCSS delegerar till LightningCSS.
- Hämtar `@import` från filsystemet med nästlade importer, deduplicering och anpassade resolvrar, eller från inbäddade CSS-strängar.
- Inkluderar Preflight (grundåterställningen för Tailwind), prefixstöd, reservlösningar för `@property`, leverantörsprefixning och flytt av keyframes.
- Innehåller `cn()`, `merge()`, `join()` och `variants()`/`compose()` för att bygga klassnamn, lösa konflikter och hantera komponentvarianter.
- Innehåller insticksprogrammen för typografi och formulär samt ett insticksprograms-API (`addUtilities`, `matchUtilities`, `addComponents`, `addVariant`, `theme`, …) för egna insticksprogram.
- Erbjuder en CLI (`bin/tailwindphp`) med samma byggalternativ som `@tailwindcss/cli`, samt cache för filbaserad utdata, en beständig cache för kompilatortillstånd och en CSS-minimerare för produktion.

## Vad det inte är

TailwindPHP är en kompilator för CSS, inte en verktygskedja för redigerare. Den utelämnar medvetet de delar av ekosystemet för Tailwind som riktar sig till utvecklingsmiljön — IntelliSense, automatisk komplettering, klassortering och källkartor — eftersom det är redigerarfunktioner och inte en del av genereringen av CSS. Allt som producerar CSS ingår; allt som driver din redigerare gör det inte.

## Kom igång

- [Komma igång](https://tailwindphp.inline0.dev/sv/docs/getting-started) — installera paketet och generera din första stilmall.
- [Användning](https://tailwindphp.inline0.dev/sv/docs/usage) — genomsök innehåll, anpassa temat och använd direktiven i Tailwind.
- [Klassverktyg](https://tailwindphp.inline0.dev/sv/docs/class-utilities) — `cn()`, `merge()`, `join()` och `variants()`.
- [Insticksprogram](https://tailwindphp.inline0.dev/sv/docs/plugins) — typografi, formulär och hur du skapar egna.
- [API](https://tailwindphp.inline0.dev/sv/docs/api) — alla `tw`-direktiv och `TailwindCompiler`-instansen.
- [CLI](https://tailwindphp.inline0.dev/sv/docs/cli) — `bin/tailwindphp` för filbaserade byggen och övervakningsläge.
- [Avancerat](https://tailwindphp.inline0.dev/sv/docs/advanced) — arkitektur, cachelagring, prestanda och kompatibilitetsinformation.
