Zephora UI

Tailwind 統合

2 つの要素があります: トークンから生成されるプリセット(zephoraPreset)と、すべてのコンポーネントに備わる headless モード(unstyled)です。

プリセット

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

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

プリセットは Zephora のトークンを Tailwind にマッピングします: カラースケール(primary-500…)、スペーシング、radius、行の高さ付きのフォントサイズ、elevation シャドウ、モーションの持続時間/イージング、そして z-index です。さらに、スタイル付きコンポーネントが使うのと同じ CSS 変数に裏打ちされた、テーマに反応するセマンティックカラーも公開します — bg-backgroundtext-foregroundbg-accentborder-borderring-ring — これにより Tailwind ユーティリティは自動的にアクティブなテーマに追従します。

Headless モード

unstyled を渡すと、挙動とアクセシビリティを保ったまま Zephora のスタイリングを取り除けます。その後 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

Tailwind v4 の CSS ファースト構成では、@config でプリセットを読み込むか、@zephora/tokens/css をインポートして生の --z-* 変数を @theme 内で直接参照します。