
# TailwindPHP

TailwindPHP es una **implementación 1:1 de TailwindCSS 4.x para PHP**. Analiza su CSS, busca nombres de clase en el marcado y genera el CSS de utilidades que produce TailwindCSS v4.3.3, todo en PHP, sin Node.js ni compilación.

- **PHP puro**: se distribuye como paquete Composer y funciona en PHP 8.2 o posterior con las extensiones estándar `ctype` y `mbstring`. Sin `exec`, FFI ni herramientas de compilación nativa.
- **Verificado con TailwindCSS**: las utilidades, variantes, directivas y funciones CSS siguen TailwindCSS v4.3.3. El resultado se verifica con las propias suites de pruebas de Tailwind, extraídas del código fuente de TypeScript y ejecutadas de nuevo en cada envío (más de 4,400 pruebas). Las diferencias conocidas (algunos detalles de serialización sin efecto en la cascada, además de incidencias abiertas) se enumeran en [Compatibilidad y actualización](https://tailwindphp.inline0.dev/es/docs/advanced/compatibility).
- **Todas las funciones incluidas**: todo el conjunto de utilidades de TailwindCSS v4.3.3 (incluidos `container`, las utilidades de barra de desplazamiento, `zoom-*` y `tab-*`), todas las variantes (hover, focus, adaptables, modo oscuro, consultas de contenedor y valores arbitrarios) y todas las directivas: `@import`, `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` y `@source`.
- **Todo incluido**: `cn()`, `merge()`, `join()` y `variants()` incluyen implementaciones PHP de clsx, tailwind-merge y CVA, para que las bibliotecas complementarias que necesita todo proyecto Tailwind ya estén disponibles.
- **Complementos**: `@tailwindcss/typography` y `@tailwindcss/forms` están implementados en su totalidad, y el PHP sistema de API le permite crear los suyos.

## Por qué existe TailwindPHP

TailwindCSS está escrito en TypeScript y funciona en Node.js. Es un requisito estricto para cualquier proyecto PHP que quiera usar Tailwind: necesita un segundo entorno de ejecución, instalar npm y añadir un paso de compilación en CI y Docker. Para muchas aplicaciones PHP, esto supone una complicación que preferirían evitar.

TailwindPHP elimina esa complicación. El código PHP se compila directamente con Tailwind CSS, usando solo la biblioteca estándar. Esto permite hacer cosas que resultan complicadas o imposibles con las herramientas de JavaScript:

- **Frameworks de WordPress y PHP**: distribuya temas y complementos basados en Tailwind sin pedir a los usuarios que instalen Node.js ni ejecuten una compilación. Solo `composer require` y listo. Consulte [TailwindWP](https://github.com/dnnsjsk/tailwindwp), un complemento de WordPress de ejemplo que genera CSS del editor de bloques con TailwindPHP.
- **CSS en tiempo de ejecución**: genere CSS de utilidades al instante a partir de datos del usuario, contenido de la base de datos o variables de plantilla, en lugar de hacerlo durante la compilación.
- **Implementación más sencilla**: sin Node.js en producción, pasos de compilación en CI ni npm en su imagen de Docker.

Es la misma idea que [scssphp](https://github.com/scssphp/scssphp) llevó a SCSS: el compilador completo, en PHP.

## Qué hace

- Compila el conjunto de utilidades TailwindCSS v4.3.3, las variantes y los valores arbitrarios a partir de los nombres de clase encontrados en su contenido.
- Resuelve toda la superficie de directivas: `@import` (incluidos módulos virtuales como `tailwindcss` y `tailwindcss/utilities`, e importaciones `reference`), `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` y `@source`.
- Implementa las funciones CSS de Tailwind — `theme()`, `--theme()`, `--spacing()` y `--alpha()` —, además de la conversión de `color-mix()` → `oklab()` y las transformaciones CSS que TailwindCSS delega en LightningCSS.
- Resuelve `@import` desde el sistema de archivos, con importaciones anidadas, deduplicación y resolutores personalizados, o desde cadenas CSS en línea.
- Incluye Preflight (el restablecimiento base de Tailwind), compatibilidad con prefijos, alternativas de `@property`, prefijos de proveedor y elevación de fotogramas clave.
- Incluye `cn()`, `merge()`, `join()` y `variants()`/`compose()` para construir nombres de clase, resolver conflictos y crear variantes de componentes.
- Incluye los plugins de tipografía y formularios, además de un API de plugins (`addUtilities`, `matchUtilities`, `addComponents`, `addVariant`, `theme`, …) personalizados.
- Proporciona un CLI (`bin/tailwindphp`) con las opciones de compilación de `@tailwindcss/cli`, además de almacenamiento en caché de archivos de salida, una caché persistente del estado del compilador y un minificador CSS para producción.

## Qué no es

TailwindPHP es un compilador de CSS, no una cadena de herramientas de edición. Deja deliberadamente fuera las funciones del ecosistema Tailwind dirigidas al IDE: IntelliSense, autocompletado, ordenación de clases y mapas de origen, porque son funciones del editor y no forman parte de la generación de CSS. Todo lo que produce CSS está incluido; todo lo que potencia el editor queda fuera.

## Por dónde empezar

- [Introducción](https://tailwindphp.inline0.dev/es/docs/getting-started) — instala el paquete y genera tu primera hoja de estilos.
- [Uso](https://tailwindphp.inline0.dev/es/docs/usage) — analiza el contenido, personaliza el tema y usa las directivas de Tailwind.
- [Utilidades de clase](https://tailwindphp.inline0.dev/es/docs/class-utilities) — `cn()`, `merge()`, `join()` y `variants()`.
- [Complementos](https://tailwindphp.inline0.dev/es/docs/plugins) — tipografía, formularios y creación de complementos propios.
- [API](https://tailwindphp.inline0.dev/es/docs/api) — todas las directivas de `tw` y la instancia `TailwindCompiler`.
- [CLI](https://tailwindphp.inline0.dev/es/docs/cli) — `bin/tailwindphp` para compilaciones basadas en archivos y modo de observación.
- [Avanzado](https://tailwindphp.inline0.dev/es/docs/advanced) — arquitectura, almacenamiento en caché, rendimiento y notas de compatibilidad.
