
# TailwindPHP

TailwindPHP é uma **implementação 1:1 de TailwindCSS 4.x para PHP**. Analisa seu CSS, examina a marcação em busca de nomes de classes e gera o CSS das classes utilitárias que TailwindCSS v4.3.3 produz — tudo em PHP, sem Node.js e sem etapa de compilação.

- **PHP puro** — distribuído como pacote Composer e executado em PHP 8.2+ com as extensões padrão `ctype` e `mbstring`. Sem `exec`, FFI ou ferramentas nativas de compilação.
- **Validado em relação a TailwindCSS** — utilitários, variantes, diretivas e funções CSS acompanham TailwindCSS v4.3.3. A saída é verificada com os próprios conjuntos de testes de Tailwind, extraídos do código-fonte de TypeScript e executados novamente a cada envio (4,400+ testes). As diferenças conhecidas (alguns detalhes de serialização sem efeito na cascata, além de problemas em aberto) estão listadas em [Compatibilidade e atualização](https://tailwindphp.inline0.dev/pt/docs/advanced/compatibility).
- **Conjunto completo de recursos** — todo o conjunto de utilitários TailwindCSS v4.3.3 (incluindo `container`, os utilitários de barra de rolagem, `zoom-*` e `tab-*`), todas as variantes (hover, focus, responsivo, modo escuro, consultas de contêiner e valores arbitrários) e toda a superfície de diretivas: `@import`, `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` e `@source`.
- **Tudo incluído** — `cn()`, `merge()`, `join()` e `variants()` incluem implementações PHP de clsx, tailwind-merge e CVA, para que as bibliotecas auxiliares usadas em todo projeto Tailwind já estejam disponíveis.
- **Plugins** — `@tailwindcss/typography` e `@tailwindcss/forms` foram totalmente implementados, e uma PHP de plugin API permite criar os seus próprios.

## Por que TailwindPHP existe

TailwindCSS é escrito em TypeScript e executado em Node.js. Isso é um requisito incontornável para qualquer projeto PHP que queira Tailwind: um segundo ambiente de execução, uma instalação de npm e uma etapa de compilação no CI e em Docker. Para muitas aplicações PHP, esse é um atrito que prefeririam evitar.

TailwindPHP elimina essa necessidade. Seu código PHP compila Tailwind CSS diretamente, usando apenas a biblioteca padrão. Isso possibilita algumas coisas difíceis ou impossíveis com a cadeia de ferramentas JavaScript:

- **Frameworks WordPress e PHP** — distribua temas e plugins com Tailwind sem pedir aos usuários que instalem Node.js ou executem uma compilação. Basta `composer require` e pronto. Veja [TailwindWP](https://github.com/dnnsjsk/tailwindwp), um plugin de exemplo WordPress que gera CSS para o editor de blocos com TailwindPHP.
- **CSS em tempo de execução** — gere CSS de utilitários em tempo real a partir de dados do usuário, conteúdo do banco de dados ou variáveis de template, em vez de fazê-lo durante a compilação.
- **Implantação mais simples** — sem Node.js em produção, etapa de compilação no CI ou npm na imagem Docker.

É a mesma ideia que [scssphp](https://github.com/scssphp/scssphp) levou para SCSS — o compilador completo em PHP.

## O que ele faz

- Compila o conjunto de utilitários TailwindCSS v4.3.3, as variantes e os valores arbitrários a partir dos nomes de classe encontrados no seu conteúdo.
- Resolve toda a superfície de diretivas: `@import` (incluindo módulos virtuais como `tailwindcss` e `tailwindcss/utilities`, além de imports `reference`), `@theme`, `@apply`, `@utility`, `@variant`, `@custom-variant`, `@layer`, `@plugin` e `@source`.
- Implementa as funções de CSS de Tailwind — `theme()`, `--theme()`, `--spacing()` e `--alpha()` — além da conversão de `color-mix()` para `oklab()` e das transformações de CSS delegadas a LightningCSS por TailwindCSS.
- Resolve `@import` a partir do sistema de arquivos, com imports aninhados, deduplicação e resolvedores personalizados, ou a partir de strings CSS embutidas.
- Inclui Preflight (a redefinição base de Tailwind), suporte a prefixos, fallbacks de `@property`, prefixos de fornecedores e elevação de keyframes.
- Inclui `cn()`, `merge()`, `join()` e `variants()`/`compose()` para construção de nomes de classe, resolução de conflitos e variantes de componentes.
- Inclui os plugins de tipografia e formulários, além de um plugin API (`addUtilities`, `matchUtilities`, `addComponents`, `addVariant`, `theme`, …) para plugins personalizados.
- Fornece um CLI (`bin/tailwindphp`) com as opções de build `@tailwindcss/cli`, além de cache de saída baseado em arquivos, cache persistente do estado do compilador e um minificador CSS para produção.

## O que não é

TailwindPHP é um compilador CSS, não uma cadeia de ferramentas para editores. Ele deixa de fora deliberadamente os recursos voltados ao IDE do ecossistema Tailwind — IntelliSense, preenchimento automático, ordenação de classes e mapas de origem — porque são recursos do editor, não fazem parte da geração de CSS. Tudo o que produz CSS está incluído; tudo o que dá suporte ao seu editor fica de fora.

## Por onde começar

- [Primeiros passos](https://tailwindphp.inline0.dev/pt/docs/getting-started) — instale o pacote e gere sua primeira folha de estilos.
- [Uso](https://tailwindphp.inline0.dev/pt/docs/usage) — analise o conteúdo, personalize o tema e use as diretivas de Tailwind.
- [Utilitários de classe](https://tailwindphp.inline0.dev/pt/docs/class-utilities) — `cn()`, `merge()`, `join()` e `variants()`.
- [Plugins](https://tailwindphp.inline0.dev/pt/docs/plugins) — tipografia, formulários e como criar os seus próprios.
- [API](https://tailwindphp.inline0.dev/pt/docs/api) — toda a superfície de `tw` e a instância de `TailwindCompiler`.
- [CLI](https://tailwindphp.inline0.dev/pt/docs/cli) — `bin/tailwindphp` para builds baseados em arquivos e modo de observação.
- [Avançado](https://tailwindphp.inline0.dev/pt/docs/advanced) — arquitetura, cache, desempenho e notas de compatibilidade.
