Zephora UI

Integração com Tailwind

Duas partes: um preset gerado a partir de tokens (zephoraPreset) e um modo headless (unstyled) em cada componente.

Preset

// tailwind.config.js
import { zephoraPreset } from "@zephora/tailwind-preset";

export default {
  presets: [zephoraPreset],
  content: ["./src/**/*.{ts,tsx}"],
};

O preset mapeia os tokens do Zephora para o Tailwind: escalas de cor (primary-500…), espaçamento, radius, tamanhos de fonte com alturas de linha, sombras de elevação, durações/easings de movimento e z-index. Ele também expõe cores semânticas reativas ao tema, apoiadas pelas mesmas variáveis CSS que os componentes estilizados usam — bg-background, text-foreground, bg-accent, border-border, ring-ring — para que os utilitários do Tailwind sigam o tema ativo automaticamente.

Modo headless

Passe unstyled para remover a estilização do Zephora mantendo o comportamento e a acessibilidade. Depois estilize com o Tailwind:

<Button
  unstyled
  className="rounded-lg bg-accent px-4 py-2 text-accent-foreground hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-ring"
>
  Tailwind button
</Button>

Tailwind v4

Com a configuração CSS-first do Tailwind v4, carregue o preset via @config, ou importe @zephora/tokens/css e referencie diretamente as variáveis --z-* cruas no @theme.