
# 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 и изпълнявани отново при всяко изпращане на промени (4,400+ теста). Известните разлики (няколко подробности при сериализацията без ефект върху каскадата, както и отворени проблеми) са посочени в [Съвместимост и надстройване](https://tailwindphp.inline0.dev/bg/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, е включено; всичко, което захранва редактора ви, не е.

## Откъде да започнете

- [Първи стъпки](https://tailwindphp.inline0.dev/bg/docs/getting-started) — инсталирайте пакета и генерирайте първата си стилова таблица.
- [Употреба](https://tailwindphp.inline0.dev/bg/docs/usage) — сканирайте съдържанието, персонализирайте темата и използвайте директивите на Tailwind.
- [Помощни класове](https://tailwindphp.inline0.dev/bg/docs/class-utilities) — `cn()`, `merge()`, `join()` и `variants()`.
- [Плъгини](https://tailwindphp.inline0.dev/bg/docs/plugins) — типография, формуляри и създаване на собствени плъгини.
- [API](https://tailwindphp.inline0.dev/bg/docs/api) — всички директиви `tw` и екземплярът `TailwindCompiler`.
- [CLI](https://tailwindphp.inline0.dev/bg/docs/cli) — `bin/tailwindphp` за компилации от файлове и режим на наблюдение.
- [Разширени теми](https://tailwindphp.inline0.dev/bg/docs/advanced) — архитектура, кеширане, производителност и бележки за съвместимостта.
