用途:在 shadcn/ui 项目中构建、粘贴并接通自定义主题,并完成暗色模式切换的接线。该技能是工作流层,令牌心智模型(oklch 与 HSL、v3 与 v4 接线、令牌目录、决策树)位于 shadcn-core-theming,遇到令牌格式或接线位置疑问时应先读该技能。
主要能力:提供三条快捷路径与四个工作流。工作流 A 主题构建器粘贴:在 https://ui.shadcn.com/themes 选择 Style(default/new-york/sera/luma)、Color(Zinc、Slate、Stone、Gray、Neutral、Red、Rose、Orange、Green、Blue、Yellow、Violet)与 Radius(0.0/0.25/0.5/0.75/1.0),点击 Copy code,仅替换 app/globals.css(Next.js)或 src/index.css(Vite)中的 :root 与 .dark 块,保留 @import "tailwindcss";、@custom-variant dark、@theme inline 与 @layer base。工作流 B 精准令牌覆盖:只改 :root 与 .dark 中相关变量,如 --primary、--primary-foreground、--radius,两个块必须同步更新。工作流 C 自定义调色板:从品牌色转换到 oklch(v4)或 HSL 空格分隔(v3),派生前景配对并校验对比度。工作流 D 通过 data-slot 做单组件覆盖,建议用包装类限定作用域。
暗色模式接线:Next.js 用 next-themes,安装 npm install next-themes,创建 components/theme-provider.tsx 并在 app/layout.tsx 挂载,必须传 attribute="class"、defaultTheme="system"、enableSystem、disableTransitionOnChange,并在 <html> 上加 suppressHydrationWarning。Vite 使用自定义 Context,存储键默认 "vite-ui-theme",不要安装 next-themes。ModeToggle 为含 Light/Dark/System 三项的 DropdownMenu,Next.js 中从 next-themes 导入 useTheme,Vite 中从 @/components/theme-provider 导入。
限制与注意:粘贴前必须核对格式,v4 为 oklch,v3 为 HSL 空格分隔,切勿混用;不要粘贴 @theme inline 映射;根布局只挂载一个 ThemeProvider;不要传 attribute="data-theme";不要嵌套两个 Provider;不要用逗号分隔的 HSL。对比度需用 WCAG-AA 校验。具体价格、平台支持范围等资料未提供。