Estendendo o Tailwind CSS
O Tailwind CSS é altamente flexível e foi projetado desde o início para ser estendido. Na arquitetura atual, você pode adicionar novas cores, tamanhos, fontes, espaçamentos e até criar novos utilitários sem perder os benefícios da abordagem utility-first. Toda essa personalização agora é feita de forma centralizada diretamente no seu arquivo CSS principal através da diretiva @theme.
Por que estender o Tailwind?
A personalização permite:
-
Alinhar o design com a identidade visual do seu projeto ou marca.
-
Criar padrões visuais próprios sem sobrescrever diretamente as classes do framework.
-
Evitar a repetição de valores arbitrários em múltiplos lugares do código.
-
Tornar a aplicação mais coesa, padronizada e fácil de manter.
Estrutura de extensão
O framework eliminou a necessidade de um arquivo JavaScript e da antiga propriedade extend. Agora, qualquer variável declarada dentro da diretiva @theme funciona automaticamente como uma extensão. Se a variável for nova, ela é adicionada à escala; se já existir, o valor padrão é atualizado.
CSS
@import "tailwindcss";
@theme {
--color-primary: #1e40af;
--color-destaque: #f59e0b;
--spacing-72: 18rem;
--spacing-84: 21rem;
--spacing-96: 24rem;
--font-display: "Bebas Neue", cursive;
--font-body: "Open Sans", sans-serif;
}
O compilador processa essas variáveis CSS nativas e gera de forma automática as classes utilitárias correspondentes (como bg-primary, p-84 ou font-display).
O que pode ser estendido?
Praticamente todas as propriedades de design aceitam extensão utilizando o prefixo correto na variável:
-
--color-*(cores de fundo, texto, bordas) -
--spacing-*(margens, paddings, larguras, alturas) -
--font-*(famílias de fontes) -
--text-*(tamanhos de fonte) -
--radius-*(border-radius) -
--breakpoint-*(telas e responsividade) -
--shadow-*(box-shadow) -
--animate-*(animações)
Exemplo prático: cor personalizada
CSS
@theme {
--color-sucesso: #10b981;
--color-erro: #ef4444;
}
No HTML, o uso permanece idêntico e limpo:
HTML
<p class="text-sucesso">Operação realizada com sucesso.</p>
<p class="text-erro">Algo deu errado.</p>
Substituindo o tema padrão
Nas versões anteriores, esquecer a propriedade extend apagava o tema padrão por acidente. No modelo atual, o comportamento padrão é sempre estender. Se a intenção for realmente apagar a escala original do Tailwind para criar um design system do zero, utiliza-se explicitamente a palavra-chave default:
CSS
/* Isso remove todas as cores e configurações padrão do Tailwind */
@theme default {
--color-black: #000000;
--color-white: #ffffff;
}
Estendendo responsividade
Para criar novos breakpoints, basta adicionar variáveis com o prefixo --breakpoint-*:
CSS
@theme {
--breakpoint-xs: 480px;
--breakpoint-3xl: 1800px;
}
E utilizá-los normalmente como modificadores de tela:
HTML
<div class="text-sm xs:text-base 3xl:text-lg">Texto adaptável</div>
Criação de tokens de design
O arquivo CSS principal passa a funcionar como o repositório central de Design Tokens da aplicação. Como a saída final utiliza variáveis CSS nativas, esses tokens ganham a vantagem de poderem ser lidos por outros elementos do projeto que não utilizam o Tailwind diretamente, como micro-frontends ou componentes isolados.
Quando redefinir o tema por completo (theme default)
A redefinição completa deve ser avaliada se:
-
O projeto exige um Design System proprietário rígido, onde as cores e espaçamentos padrão do Tailwind não devem ficar disponíveis no autocomplete do editor.
-
Há necessidade de limitar estritamente as opções dos desenvolvedores para garantir consistência visual absoluta em times grandes.
Estender o Tailwind CSS através de variáveis de tema alinha o desenvolvimento com os padrões modernos da web, garantindo performance e flexibilidade sem a necessidade de arquivos de configuração complexos.