Pular para o conteúdo
Storybookv2Pacote

CSS e Tailwind

Tailwind no consumidor não é necessário para os componentes. Há duas variantes do mesmo CSS; escolha pela versão do Tailwind (ou por nenhum).

Arquivo Quando usar
style.css (sem camada) Sem Tailwind ou com Tailwind 3
style.layer.css (em @layer idplugger-ui) Tailwind 4 e outros projetos que usam camadas

Os dois precisam do tokens.css antes.

src/index.css
@import '@handsondigital/idplugger-ui/tokens.css';
@import '@handsondigital/idplugger-ui/style.css';

O preflight do Tailwind 3 também é CSS sem camada e não zera os componentes.

Em vez do style.css completo, importe o tokens.css (+ tema) e o CSS de cada componente. O arquivo tem o nome da pasta do componente (AppTabs.css cobre AppTabList, AppTab e AppTabPanel). Dependências vêm por @import (as fontes da idPlugger ficam no fonts.css, opcional): não é preciso importar a base nem as dependências à mão.

src/index.css
@import '@handsondigital/idplugger-ui/tokens.css';
@import '@handsondigital/idplugger-ui/css/AppButton.css';
@import '@handsondigital/idplugger-ui/css/Container.css';
@import '@handsondigital/idplugger-ui/css/Grid.css';

Não misture com style.css nem style.layer.css. No Next.js, os mesmos imports funcionam em app/layout.tsx.

Cenário CSS (gzip)
style.css completo (sem fontes) ~10,9 kB
Landing com Button, Container e Grid ~3,1 kB
Com formulário de cadastro (Button, Input, Select, Checkbox, Modal, Toast, Alert, Container, Grid) ~5,5 kB
Hotsite completo típico (18 componentes) ~8,4 kB

Para usar bg-brand-primary e afins no seu app, adicione o preset exportado pelo pacote:

tailwind.config.js
import idpluggerPreset from '@handsondigital/idplugger-ui/tailwind.config.js'
export default {
presets: [idpluggerPreset],
content: ['./src/**/*.{ts,tsx}'],
}

O tokens.css já traz um bloco @theme (utilitários como bg-brand-primary e text-gray-700) e um @theme inline. Navegadores ignoram essas regras; só o Tailwind 4 as processa.

O @theme inline aponta utilitários para tokens derivados (--font-heading, --font-body, --color-button-primary, --shadow-button…). Ele é inline para o utilitário ler var(--button-*) no próprio elemento e acompanhar data-brand e data-theme, em vez de um valor resolvido no :root.

A ordem theme, base, idplugger-ui, components, utilities é obrigatória e deve vir antes dos imports. Com idplugger-ui antes de base, o preflight zera fundo e raio dos botões. Com o pacote entre base e os utilitários, bg-*, rounded-* etc. passados em className vencem o CSS do pacote.

Com Tailwind 4, use style.layer.css: com o style.css sem camada, os utilitários perdem para o pacote, porque CSS sem camada vence o das camadas do Tailwind.

className é apenas anexada (sem tailwind-merge).

A API pública de classes BEM (app-button--primary-solid) é estável. As regras são de classe única:

  • Com style.css, carregue o seu CSS depois dele ou use um seletor mais específico.
  • Com style.layer.css, qualquer CSS fora da camada ou em camada posterior vence.
meu-hotsite.css
.minha-tela .app-button--primary-solid {
letter-spacing: 0.02em;
}

Para ajustar um componente sem mudar a marca, sobrescreva o token dele (veja Design system):

meu-hotsite.css
.minha-tela {
--button-shadow: none;
}

Para trocar a identidade, sobrescreva o contrato da marca em vez dos tokens --button-*: veja Marcas e presets.