
# TailwindPHP

TailwindPHP yra **1:1 TailwindCSS 4.x perkėlimas į PHP**. Jis analizuoja jūsų CSS, žymėjime ieško klasių pavadinimų ir generuoja tą patį pagalbinių klasių CSS kaip TailwindCSS v4.3.3 – visa tai PHP, be Node.js ir kompiliavimo etapo.

- **Grynas PHP** — pateikiamas kaip Composer paketas ir veikia su PHP 8.2+ bei standartiniais plėtiniais `ctype` ir `mbstring`. Nereikia `exec`, FFI ar vietinio kūrimo įrankių.
- **Patikrintas pagal TailwindCSS** — utilitos, variantai, direktyvos ir CSS funkcijos atitinka TailwindCSS v4.3.3. Išvestis tikrinama pagal Tailwind testų rinkinius, paimtus iš TypeScript šaltinio ir iš naujo paleidžiamus po kiekvieno siuntimo (4,400+ testų). Žinomi skirtumai (kelios serializavimo detalės, nekeičiančios kaskados, ir atviros problemos) išvardyti skiltyje [Suderinamumas ir naujinimas](https://tailwindphp.inline0.dev/lt/docs/advanced/compatibility).
- **Visas funkcijų rinkinys** — visas TailwindCSS v4.3.3 utilitų rinkinys (įskaitant `container`, slinkties juostos utilitas, `zoom-*` ir `tab-*`), visi variantai (užvedimas, fokusavimas, prisitaikantis išdėstymas, tamsusis režimas, konteinerio užklausos, savavališkos reikšmės) ir visos direktyvos: `@import`, `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` ir `@source`.
- **Viskas įtraukta** — `cn()`, `merge()`, `join()` ir `variants()` apima PHP clsx, tailwind-merge ir CVA prievadus, tad visi pagalbiniai paketai, kurių prireikia Tailwind projektuose, jau yra.
- **Papildiniai** — `@tailwindcss/typography` ir `@tailwindcss/forms` perkelti visiškai, o papildinys PHP API leidžia rašyti savus.

## Kodėl sukurtas TailwindPHP

TailwindCSS parašytas TypeScript kalba ir veikia Node.js aplinkoje. Tai būtina kiekvienam PHP projektui, kuriam reikia Tailwind: atskiros vykdymo aplinkos, npm diegimo ir kūrimo etapo CI bei Docker. Daugeliui PHP programų tai nereikalinga našta.

TailwindPHP šį poreikį panaikina. Jūsų PHP kodas kompiliuoja Tailwind CSS tiesiogiai, naudodamas tik standartinę biblioteką. Taip tampa įmanomi dalykai, kuriuos su JavaScript įrankiais atlikti sudėtinga arba neįmanoma:

- **WordPress ir PHP sistemos** — naudokite Tailwind pagrįstas temas ir papildinius, neprašydami naudotojų įdiegti Node.js ar vykdyti kūrimo proceso. Tiesiog `composer require` ir naudokitės. Pavyzdys — [TailwindWP](https://github.com/dnnsjsk/tailwindwp), papildinys WordPress, generuojantis blokų redaktoriaus CSS su TailwindPHP.
- **CSS vykdymo metu** — generuokite utilitų CSS pagal naudotojo įvestį, duomenų bazės turinį ar šablonų kintamuosius, o ne kūrimo metu.
- **Paprastesnis diegimas** — produkcijoje nereikia Node.js, CI nereikia kūrimo etapo, o jūsų Docker atvaizde nereikia npm.

Ta pati idėja, kurią [scssphp](https://github.com/scssphp/scssphp) įgyvendino SCSS aplinkoje — visas kompiliatorius, parašytas PHP.

## Ką jis daro

- Pagal turinyje rastus klasių pavadinimus kompiliuoja TailwindCSS v4.3.3 pagalbines klases, variantus ir pasirinktines reikšmes.
- Apdoroja visas direktyvas: `@import` (įskaitant virtualius modulius, pvz., `tailwindcss` ir `tailwindcss/utilities`, bei `reference` importus), `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` ir `@source`.
- Įgyvendina CSS funkcijas, kurias teikia Tailwind — `theme()`, `--theme()`, `--spacing()` ir `--alpha()` —, taip pat `color-mix()` → `oklab()` konvertavimą ir CSS transformacijas, kurias TailwindCSS perduoda LightningCSS.
- Išsprendžia `@import` iš failų sistemos su įdėtiniais importais, dublikatų šalinimu ir pasirinktiniais sprendikliais arba iš įterptų CSS eilučių.
- Turi Preflight (bazinį stilių atkūrimą iš Tailwind), prefiksų palaikymą, atsarginius `@property` variantus, naršyklių prefiksus ir animacijos pagrindinių kadrų aprašų perkėlimą aukščiau.
- Pateikia `cn()`, `merge()`, `join()` ir `variants()`/`compose()` klasių pavadinimams kurti, konfliktams spręsti ir komponentų variantams aprašyti.
- Turi tipografijos ir formų papildinius bei papildinių API (`addUtilities`, `matchUtilities`, `addComponents`, `addVariant`, `theme`, …) saviems papildiniams.
- Pateikia CLI (`bin/tailwindphp`) su `@tailwindcss/cli` kompiliavimo parinktimis, failine išvesties talpykla, nuolatine kompiliatoriaus būsenos talpykla ir gamybinei aplinkai skirtu CSS mažintuvu.

## Kas tai nėra

TailwindPHP yra CSS kompiliatorius, o ne redaktoriaus įrankių grandinė. Jame sąmoningai nėra Tailwind ekosistemai skirtų IDE funkcijų — IntelliSense, automatinio užbaigimo, klasių rūšiavimo ir šaltinio žemėlapių — nes tai redaktoriaus funkcijos, nepriklausančios CSS generavimui. Įtrauktos visos funkcijos, kurios sukuria CSS; redaktoriui skirtos funkcijos neįtrauktos.

## Nuo ko pradėti

- [Pradžia](https://tailwindphp.inline0.dev/lt/docs/getting-started) — įdiekite paketą ir sugeneruokite pirmąją stilių lentelę.
- [Naudojimas](https://tailwindphp.inline0.dev/lt/docs/usage) — nuskaitykite turinį, tinkinkite temą ir naudokite Tailwind direktyvas.
- [Klasių utilitos](https://tailwindphp.inline0.dev/lt/docs/class-utilities) — `cn()`, `merge()`, `join()` ir `variants()`.
- [Papildiniai](https://tailwindphp.inline0.dev/lt/docs/plugins) — tipografija, formos ir savų papildinių kūrimas.
- [API](https://tailwindphp.inline0.dev/lt/docs/api) — visa `tw` sąsaja ir `TailwindCompiler` egzempliorius.
- [CLI](https://tailwindphp.inline0.dev/lt/docs/cli) — `bin/tailwindphp` failais pagrįstam kūrimui ir stebėjimo režimui.
- [Išplėstinės temos](https://tailwindphp.inline0.dev/lt/docs/advanced) — architektūra, spartinimas, našumas ir suderinamumas.
