
# TailwindPHP

TailwindPHP este o **portare 1:1 a TailwindCSS 4.x în PHP**. Analizează CSS-ul, scanează marcajul pentru a găsi numele claselor și generează CSS pentru aceleași clase utilitare ca TailwindCSS v4.3.3 — integral în PHP, fără Node.js și fără etapă de compilare.

- **PHP pur** — este distribuit ca pachet Composer și rulează pe PHP 8.2+ cu extensiile standard `ctype` și `mbstring`. Fără `exec`, FFI sau instrumente de compilare native.
- **Verificat în raport cu TailwindCSS** — utilitarele, variantele, directivele și funcțiile CSS urmăresc TailwindCSS v4.3.3. Rezultatul este verificat cu propriile suite de teste ale Tailwind, extrase din sursa TypeScript și rulate din nou la fiecare push (peste 4,400 de teste). Diferențele cunoscute (câteva detalii de serializare fără efect asupra cascadei, precum și probleme deschise) sunt enumerate în [Compatibility & upgrading](https://tailwindphp.inline0.dev/ro/docs/advanced/compatibility).
- **Set complet de funcționalități** — întregul set de utilitare TailwindCSS v4.3.3 (inclusiv `container`, utilitarele pentru bare de derulare, `zoom-*` și `tab-*`), toate variantele (hover, focus, responsive, mod întunecat, interogări de container, valori arbitrare) și toate directivele: `@import`, `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` și `@source`.
- **Totul inclus** — `cn()`, `merge()`, `join()` și `variants()` includ portări PHP ale clsx, tailwind-merge și CVA, astfel încât bibliotecile auxiliare folosite de orice proiect Tailwind sunt deja incluse.
- **Pluginuri** — `@tailwindcss/typography` și `@tailwindcss/forms` sunt portate complet, iar PHP plugin API vă permite să vă creați propriile pluginuri.

## De ce există TailwindPHP

TailwindCSS este scris în TypeScript și rulează pe Node.js. Pentru orice proiect PHP care dorește Tailwind, aceasta este o cerință obligatorie: un al doilea mediu de execuție, o instalare npm și o etapă de compilare în CI și Docker. Pentru multe aplicații PHP, este un efort suplimentar pe care ar prefera să îl evite.

TailwindPHP elimină această problemă. Codul PHP este compilat direct în Tailwind CSS, folosind doar biblioteca standard. Astfel devin posibile câteva lucruri dificile sau imposibile cu lanțul de instrumente JavaScript:

- **Cadre de lucru WordPress și PHP** — livrați teme și pluginuri bazate pe Tailwind fără să le cereți utilizatorilor să instaleze Node.js sau să ruleze o compilare. Doar `composer require` și gata. Consultați [TailwindWP](https://github.com/dnnsjsk/tailwindwp), un plugin exemplu WordPress care generează CSS pentru editorul de blocuri cu TailwindPHP.
- **CSS în timpul execuției** — generați CSS de utilitare dinamic, pe baza intrărilor utilizatorilor, a conținutului bazei de date sau a variabilelor șablonului, în loc să le generați în timpul compilării.
- **Implementare mai simplă** — fără Node.js în producție, fără pas de compilare în CI și fără npm în imaginea Docker.

Este aceeași idee pe care [scssphp](https://github.com/scssphp/scssphp) a adus-o pentru SCSS — compilatorul complet, în PHP.

## Ce face

- Compilează setul de utilitare TailwindCSS v4.3.3, variantele și valorile arbitrare pornind de la numele claselor găsite în conținut.
- Rezolvă toate directivele: `@import` (inclusiv module virtuale precum `tailwindcss` și `tailwindcss/utilities`, precum și importuri `reference`), `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` și `@source`.
- Implementează funcțiile CSS Tailwind — `theme()`, `--theme()`, `--spacing()` și `--alpha()` — precum și conversia `color-mix()` → `oklab()` și transformările CSS delegate de TailwindCSS către LightningCSS.
- Rezolvă `@import` din sistemul de fișiere, cu importuri imbricate, deduplicare și rezolutoare personalizate, sau din șiruri CSS în linie.
- Include Preflight (resetarea de bază a Tailwind), suport pentru prefixe, soluții de rezervă `@property`, prefixare specifică furnizorului și extragerea regulilor keyframe.
- Include `cn()`, `merge()`, `join()` și `variants()`/`compose()` pentru construirea numelor claselor, rezolvarea conflictelor și variantele componentelor.
- Include pluginurile de tipografie și formulare, precum și un API pentru pluginuri (`addUtilities`, `matchUtilities`, `addComponents`, `addVariant`, `theme`, …) personalizate.
- Oferă un CLI (`bin/tailwindphp`) cu opțiunile de compilare `@tailwindcss/cli`, plus memorarea în cache a ieșirii bazate pe fișiere, o memorie cache persistentă pentru starea compilatorului și un minificator CSS pentru producție.

## Ce nu este

TailwindPHP este un compilator CSS, nu un lanț de instrumente pentru editor. Exclude în mod intenționat componentele ecosistemului Tailwind destinate IDE-urilor — IntelliSense, completarea automată, sortarea claselor și hărțile sursă — deoarece acestea sunt funcționalități ale editorului, nu fac parte din generarea CSS. Tot ce produce CSS este inclus; tot ce vă echipează editorul nu este.

## De unde să începeți

- [Getting Started](https://tailwindphp.inline0.dev/ro/docs/getting-started) — instalați pachetul și generați prima foaie de stil.
- [Usage](https://tailwindphp.inline0.dev/ro/docs/usage) — scanați conținutul, personalizați tema și folosiți directivele Tailwind.
- [Class Utilities](https://tailwindphp.inline0.dev/ro/docs/class-utilities) — `cn()`, `merge()`, `join()` și `variants()`.
- [Plugins](https://tailwindphp.inline0.dev/ro/docs/plugins) — tipografie, formulare și crearea propriilor pluginuri.
- [API](https://tailwindphp.inline0.dev/ro/docs/api) — toate directivele `tw` și instanța `TailwindCompiler`.
- [CLI](https://tailwindphp.inline0.dev/ro/docs/cli) — `bin/tailwindphp` pentru compilări bazate pe fișiere și modul de urmărire.
- [Advanced](https://tailwindphp.inline0.dev/ro/docs/advanced) — arhitectură, memorare în cache, performanță și note de compatibilitate.
