
# TailwindPHP

TailwindPHP — це **1:1 порт TailwindCSS 4.x для PHP**. Він аналізує ваш CSS, сканує розмітку на наявність назв класів і генерує утиліту CSS, яку створює TailwindCSS v4.3.3, — повністю на PHP, без Node.js і етапу збірки.

- **На чистому PHP** — постачається як пакет Composer і працює на PHP 8.2+ зі стандартними розширеннями `ctype` і `mbstring`. Без `exec`, FFI та нативних засобів збірки.
- **Перевірено на відповідність TailwindCSS** — утиліти, варіанти, директиви та функції CSS відповідають TailwindCSS v4.3.3. Результат перевіряється власними наборами тестів Tailwind, виділеними з вихідного коду TypeScript і повторно запусканими після кожного push (понад 4,400 тестів). Відомі відмінності (кілька нюансів серіалізації без впливу на каскад, а також відкриті проблеми) наведено в розділі [Compatibility & upgrading](https://tailwindphp.inline0.dev/uk/docs/advanced/compatibility).
- **Повний набір можливостей** — повний набір утиліт TailwindCSS v4.3.3 (зокрема `container`, утиліти смуги прокручування, `zoom-*` і `tab-*`), усі варіанти (наведення, фокус, адаптивність, темний режим, контейнерні запити, довільні значення) та повний набір директив: `@import`, `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` і `@source`.
- **Усе необхідне вже в комплекті** — `cn()`, `merge()`, `join()` і `variants()` містять вбудовані порти PHP clsx, tailwind-merge і CVA, тож супутні бібліотеки, до яких звертається кожен проєкт Tailwind, уже доступні.
- **Плагіни** — `@tailwindcss/typography` і `@tailwindcss/forms` повністю перенесені, а PHP плагін API дає змогу створювати власні.

## Навіщо потрібен TailwindPHP

TailwindCSS написано на TypeScript і працює на Node.js. Це обов’язкова вимога для будь-якого проєкту PHP, якому потрібен Tailwind: друге середовище виконання, встановлення npm і етап збірки в CI та Docker. Для багатьох застосунків PHP це зайві складнощі, яких хотілося б уникнути.

TailwindPHP усуває цю потребу. Ваш код PHP компілюється безпосередньо в Tailwind CSS, використовуючи лише стандартну бібліотеку. Це відкриває кілька можливостей, які складно або неможливо реалізувати за допомогою інструментарію JavaScript:

- **Фреймворки WordPress і PHP** — створюйте теми й плагіни на базі Tailwind, не вимагаючи від користувачів встановлювати Node.js чи запускати збірку. Просто `composer require` — і готово. Див. [TailwindWP](https://github.com/dnnsjsk/tailwindwp) — приклад плагіна WordPress, який генерує CSS редактора блоків за допомогою TailwindPHP.
- **CSS під час виконання** — генеруйте утиліту CSS на льоту з даних користувача, вмісту бази даних або змінних шаблону, а не під час збірки.
- **Простіше розгортання** — без Node.js у продакшені, етапу збірки в CI чи npm в образі Docker.

Це та сама ідея, яку [scssphp](https://github.com/scssphp/scssphp) переніс у SCSS: повний компілятор на PHP.

## Що він робить

- Компілює набір утиліт TailwindCSS v4.3.3, варіанти й довільні значення з назв класів, знайдених у вашому вмісті.
- Обробляє повний набір директив: `@import` (зокрема віртуальні модулі, як-от `tailwindcss` і `tailwindcss/utilities`, та імпорти `reference`), `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` і `@source`.
- Реалізує функції CSS Tailwind: `theme()`, `--theme()`, `--spacing()` і `--alpha()`, а також перетворення `color-mix()` → `oklab()` і трансформації CSS, які TailwindCSS делегує LightningCSS.
- Обробляє `@import` із файлової системи з вкладеними імпортами, усуненням дублікатів і власними резолверами або з вбудованих рядків CSS.
- Постачається з Preflight (базовим скиданням стилів Tailwind), підтримкою префіксів, резервними значеннями `@property`, префіксацією для браузерів і винесенням keyframes.
- Містить `cn()`, `merge()`, `join()` і `variants()`/`compose()` для створення назв класів, розв’язання конфліктів і варіантів компонентів.
- Містить плагіни типографіки й форм, а також API для плагінів (`addUtilities`, `matchUtilities`, `addComponents`, `addVariant`, `theme`, …).
- Надає CLI (`bin/tailwindphp`) з параметрами збірки `@tailwindcss/cli`, а також кешування вихідних файлів, постійний кеш стану компілятора й мінімізатор CSS для продакшену.

## Чим цей інструмент не є

TailwindPHP — компілятор CSS, а не інструментарій редактора. Він навмисно не містить компонентів екосистеми Tailwind для IDE: IntelliSense, автодоповнення, сортування класів і карт джерела, адже це можливості редактора, а не частина генерації CSS. До завдань компілятора належить усе, що створює CSS; усе, що забезпечує роботу редактора, — ні.

## З чого почати

- [Getting Started](https://tailwindphp.inline0.dev/uk/docs/getting-started) — встановіть пакет і згенеруйте свою першу таблицю стилів.
- [Usage](https://tailwindphp.inline0.dev/uk/docs/usage) — скануйте вміст, налаштовуйте тему й використовуйте директиви Tailwind.
- [Class Utilities](https://tailwindphp.inline0.dev/uk/docs/class-utilities) — `cn()`, `merge()`, `join()` і `variants()`.
- [Plugins](https://tailwindphp.inline0.dev/uk/docs/plugins) — типографіка, форми та створення власних плагінів.
- [API](https://tailwindphp.inline0.dev/uk/docs/api) — повний набір можливостей `tw` і екземпляр `TailwindCompiler`.
- [CLI](https://tailwindphp.inline0.dev/uk/docs/cli) — `bin/tailwindphp` для збірок на основі файлів і режиму спостереження.
- [Advanced](https://tailwindphp.inline0.dev/uk/docs/advanced) — архітектура, кешування, продуктивність і примітки щодо сумісності.
