
# TailwindPHP

TailwindPHP adalah **port 1:1 TailwindCSS 4.x ke PHP**. Fitur ini mengurai CSS Anda, memindai markup untuk mencari nama kelas, dan menghasilkan CSS utilitas yang dihasilkan TailwindCSS v4.3.3 — seluruhnya di PHP, tanpa Node.js dan tanpa tahap build.

- **PHP murni** — tersedia sebagai paket Composer dan berjalan di PHP 8.2+ dengan ekstensi standar `ctype` dan `mbstring`. Tanpa `exec`, FFI, atau perkakas build native.
- **Diuji terhadap TailwindCSS** — utilitas, varian, direktif, dan fungsi CSS mengikuti TailwindCSS v4.3.3. Keluaran diverifikasi terhadap rangkaian pengujian milik Tailwind, diekstrak dari sumber TypeScript dan dijalankan ulang pada setiap push (4,400+ pengujian). Perbedaan yang diketahui (beberapa detail serialisasi tanpa dampak pada cascade, serta masalah terbuka) tercantum di [Kompatibilitas & peningkatan](https://tailwindphp.inline0.dev/id/docs/advanced/compatibility).
- **Seluruh rangkaian fitur** — seluruh kumpulan utilitas TailwindCSS v4.3.3 (termasuk `container`, utilitas scrollbar, `zoom-*` dan `tab-*`), semua varian (hover, focus, responsif, mode gelap, kueri kontainer, nilai arbitrer), serta seluruh cakupan direktif: `@import`, `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin`, dan `@source`.
- **Semua sudah tersedia** — `cn()`, `merge()`, `join()`, dan `variants()` menyertakan port PHP clsx, tailwind-merge, dan CVA, jadi pustaka pendamping yang biasa digunakan setiap proyek Tailwind sudah tersedia.
- **Plugin** — `@tailwindcss/typography` dan `@tailwindcss/forms` telah di-port sepenuhnya, dan PHP plugin API memungkinkan Anda menulis plugin sendiri.

## Alasan TailwindPHP dibuat

TailwindCSS ditulis dalam TypeScript dan berjalan di Node.js. Ini merupakan persyaratan mutlak bagi proyek PHP yang menginginkan Tailwind: runtime kedua, instalasi npm, dan tahap build di CI serta Docker. Bagi banyak aplikasi PHP, kerumitan itu ingin dihindari.

TailwindPHP menghilangkan kebutuhan itu. Kode PHP Anda dikompilasi langsung menjadi Tailwind CSS, hanya dengan pustaka standar. Ini memungkinkan beberapa hal yang sulit atau mustahil dilakukan dengan toolchain JavaScript:

- **Framework WordPress dan PHP** — distribusikan tema dan plugin berbasis Tailwind tanpa meminta pengguna menginstal Node.js atau menjalankan build. Cukup `composer require` dan langsung gunakan. Lihat [TailwindWP](https://github.com/dnnsjsk/tailwindwp), contoh plugin WordPress yang menghasilkan CSS editor blok dengan TailwindPHP.
- **Pembuatan CSS saat runtime** — buat CSS utilitas secara langsung dari masukan pengguna, konten basis data, atau variabel templat, bukan saat build.
- **Penerapan yang lebih sederhana** — tanpa Node.js di produksi, tahap build di CI, atau npm dalam image Docker Anda.

Idenya sama dengan [scssphp](https://github.com/scssphp/scssphp) untuk SCSS — compiler lengkap dalam PHP.

## Fungsinya

- Mengompilasi kumpulan utilitas TailwindCSS v4.3.3, variannya, dan nilai arbitrer dari nama kelas yang ditemukan dalam konten Anda.
- Menyelesaikan seluruh cakupan direktif: `@import` (termasuk modul virtual seperti `tailwindcss` dan `tailwindcss/utilities`, serta impor `reference`), `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin`, dan `@source`.
- Mengimplementasikan fungsi CSS milik Tailwind — `theme()`, `--theme()`, `--spacing()`, dan `--alpha()` — serta konversi `color-mix()` → `oklab()` dan transformasi CSS yang didelegasikan TailwindCSS kepada LightningCSS.
- Menyelesaikan `@import` dari sistem berkas dengan impor bersarang, deduplikasi, dan resolver kustom, atau dari string CSS sebaris.
- Menyertakan Preflight (reset dasar milik Tailwind), dukungan prefiks, fallback `@property`, prefiks vendor, dan pemindahan keyframe ke tingkat atas.
- Menyertakan `cn()`, `merge()`, `join()`, dan `variants()`/`compose()` untuk menyusun nama kelas, menyelesaikan konflik, dan membuat varian komponen.
- Menyertakan plugin tipografi dan formulir, serta API plugin (`addUtilities`, `matchUtilities`, `addComponents`, `addVariant`, `theme`, …) untuk plugin kustom.
- Menyediakan CLI (`bin/tailwindphp`) dengan opsi build `@tailwindcss/cli`, serta cache output berbasis berkas, cache status compiler persisten, dan minifier CSS untuk produksi.

## Hal yang bukan termasuk

TailwindPHP adalah compiler CSS, bukan toolchain editor. Sengaja tidak menyertakan bagian ekosistem Tailwind yang ditujukan untuk IDE — IntelliSense, pelengkapan otomatis, pengurutan kelas, dan peta sumber — karena semua itu adalah fitur editor, bukan bagian dari pembuatan CSS. Semua yang menghasilkan CSS termasuk dalam cakupan; semua yang mendukung editor Anda tidak.

## Mulai di sini

- [Memulai](https://tailwindphp.inline0.dev/id/docs/getting-started) — instal paket dan buat stylesheet pertama Anda.
- [Penggunaan](https://tailwindphp.inline0.dev/id/docs/usage) — pindai konten, sesuaikan tema, dan gunakan direktif milik Tailwind.
- [Utilitas Kelas](https://tailwindphp.inline0.dev/id/docs/class-utilities) — `cn()`, `merge()`, `join()`, dan `variants()`.
- [Plugin](https://tailwindphp.inline0.dev/id/docs/plugins) — tipografi, formulir, dan cara menulis plugin Anda sendiri.
- [API](https://tailwindphp.inline0.dev/id/docs/api) — seluruh cakupan `tw` dan instance `TailwindCompiler`.
- [CLI](https://tailwindphp.inline0.dev/id/docs/cli) — `bin/tailwindphp` untuk build berbasis berkas dan mode pantau.
- [Lanjutan](https://tailwindphp.inline0.dev/id/docs/advanced) — arsitektur, caching, performa, dan catatan kompatibilitas.
