mcpField
T
tailwind-design-system

tailwind-design-system

github.com/wshobsonデザイン・UI41.9k70.9k 回インストール2 週間前に更新
リポジトリ

tailwind-design-system について

Tailwind Design System (v4) は、Tailwind CSS v4 でデザインシステムを構築するためのスキルです。CSS ファースト設定、トークン、コンポーネントパターン、レスポンシブ対応、アクセシビリティ、v3 からの移行を扱います。

主な機能

  1. 01@theme による CSS ファースト設定
  2. 02デザイントークンの階層
  3. 03コンポーネントのバリアントと状態
  4. 04レスポンシブとアクセシビリティのパターン
  5. 05Tailwind v3 移行ガイド

活用シーン

  1. 01Tailwind v4 コンポーネントライブラリの作成
  2. 02トークンとテーマの定義
  3. 03コードベース全体の UI パターン統一
  4. 04プロジェクトの Tailwind v3 からの移行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/wshobson/agents --skill tailwind-design-system

インストール後、Claude Code で/tailwind-design-systemを入力して読み込まれたか確認します。

同梱ファイルreferences/advanced-patterns.mdreferences/details.md

詳細

Tailwind デザインシステム (v4)

Tailwind CSS v4 を使用して本番環境に対応したデザインシステムを構築します。CSS ファーストの設定、デザイントークン、コンポーネントバリアント、レスポンシブパターン、アクセシビリティを含みます。

Note: このスキルは Tailwind CSS v4 (2024 以降) を対象としています。v3 プロジェクトについては、アップグレードガイドを参照してください。

このスキルを使用する場面

  • Tailwind v4 でコンポーネントライブラリを作成する場合
  • CSS ファーストの設定でデザイントークンとテーマを実装する場合
  • レスポンシブでアクセシブルなコンポーネントを構築する場合
  • コードベース全体で UI パターンを標準化する場合
  • Tailwind v3 から v4 へ移行する場合
  • ネイティブ CSS 機能でダークモードを設定する場合

v4 の主な変更点

v3 のパターンv4 のパターン
tailwind.config.tsCSS の @theme
@tailwind base/components/utilities@import "tailwindcss"
darkMode: "class"@custom-variant dark (&:where(.dark, .dark *))
theme.extend.colors@theme { --color-*: value }
require("tailwindcss-animate")@theme 内の CSS @keyframes + 登場アニメーション用の @starting-style

クイックスタート

/* app.css - Tailwind v4 CSS-first configuration */
@import "tailwindcss";

/* Define your theme with @theme */
@theme {
  /* Semantic color tokens using OKLCH for better color perception */
  --color-background: oklch(100% 0 0);
  --color-foreground: oklch(14.5% 0.025 264);

  --color-primary: oklch(14.5% 0.025 264);
  --color-primary-foreground: oklch(98% 0.01 264);

  --color-secondary: oklch(96% 0.01 264);
  --color-secondary-foreground: oklch(14.5% 0.025 264);

  --color-muted: oklch(96% 0.01 264);
  --color-muted-foreground: oklch(46% 0.02 264);

  --color-accent: oklch(96% 0.01 264);
  --color-accent-foreground: oklch(14.5% 0.025 264);

  --color-destructive: oklch(53% 0.22 27);
  --color-destructive-foreground: oklch(98% 0.01 264);

  --color-border: oklch(91% 0.01 264);
  --color-ring: oklch(14.5% 0.025 264);

  --color-card: oklch(100% 0 0);
  --color-card-foreground: oklch(14.5% 0.025 264);

  /* Ring offset for focus states */
  --color-ring-offset: oklch(100% 0 0);

  /* Radius tokens */
  --radius-sm: 0.25rem;
  --radius-md: 0.375rem;
  --radius-lg: 0.5rem;
  --radius-xl: 0.75rem;

  /* Animation tokens - keyframes inside @theme are output when referenced by --animate-* variables */
  --animate-fade-in: fade-in 0.2s ease-out;
  --animate-fade-out: fade-out 0.2s ease-in;
  --animate-slide-in: slide-in 0.3s ease-out;
  --animate-slide-out: slide-out 0.3s ease-in;

  @keyframes fade-in {
    from {
      opacity: 0;
    }
    to {
      opacity: 1;
    }
  }

  @keyframes fade-out {
    from {
      opacity: 1;
    }
    to {
      opacity: 0;
    }
  }

  @keyframes slide-in {
    from {
      transform: translateY(-0.5rem);
      opacity: 0;
    }
    to {
      transform: translateY(0);
      opacity: 1;
    }
  }

  @keyframes slide-out {
    from {
      transform: translateY(0);
      opacity: 1;
    }
    to {
      transform: translateY(-0.5rem);
      opacity: 0;
    }
  }
}

/* Dark mode variant - use @custom-variant for class-based dark mode */
@custom-variant dark (&:where(.dark, .dark *));

/* Dark mode theme overrides */
.dark {
  --color-background: oklch(14.5% 0.025 264);
  --color-foreground: oklch(98% 0.01 264);

  --color-primary: oklch(98% 0.01 264);
  --color-primary-foreground: oklch(14.5% 0.025 264);

  --color-secondary: oklch(22% 0.02 264);
  --color-secondary-foreground: oklch(98% 0.01 264);

  --color-muted: oklch(22% 0.02 264);
  --color-muted-foreground: oklch(65% 0.02 264);

  --color-accent: oklch(22% 0.02 264);
  --color-accent-foreground: oklch(98% 0.01 264);

  --color-destructive: oklch(42% 0.15 27);
  --color-destructive-foreground: oklch(98% 0.01 264);

  --color-border: oklch(22% 0.02 264);
  --color-ring: oklch(83% 0.02 264);

  --color-card: oklch(14.5% 0.025 264);
  --color-card-foreground: oklch(98% 0.01 264);

  --color-ring-offset: oklch(14.5% 0.025 264);
}

/* Base styles */
@layer base {
  * {
    @apply border-border;
  }

  body {
    @apply bg-background text-foreground antialiased;
  }
}

中核となる概念

1. デザイントークンの階層
Brand Tokens (abstract)
    └── Semantic Tokens (purpose)
        └── Component Tokens (specific)

Example:
    oklch(45% 0.2 260) → --color-primary → bg-primary
2. コンポーネントアーキテクチャ
Base styles → Variants → Sizes → States → Overrides

詳細なパターンと実例

詳細なパターンのドキュメントは references/details.md にあります。上記のナビゲーション階層では不十分な場合は、そのファイルを参照してください。

コメント