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 构建设计系统的 Skill,重点涵盖 CSS 优先配置、设计令牌、组件模式、响应式设计、无障碍性及 v3 迁移。

主要功能

  1. 01使用 @theme 进行 CSS 优先配置
  2. 02设计令牌层级
  3. 03组件变体与状态
  4. 04响应式和无障碍模式
  5. 05Tailwind v3 迁移指南

适用场景

  1. 01创建 Tailwind 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 优先配置、设计令牌、组件变体、响应式模式和无障碍支持。

注意:本技能面向 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。当上述导航层级不够用时,请阅读该文件。

评论

支持 Markdown