本文旨在帮助缺乏前端开发经验的设计师或产品人员,利用 shadcn/ui 组件库从零开始构建一套可维护、易与 AI 协作生成页面的个性化组件库。你将获得一个可直接运行的组件库主题配置,并学会通过手动调整参数或 AI 对话生成代码两种方式完成定制。
最终效果
搭建完成的组件库将包含完整的浅色与深色主题,涵盖主色、背景、文本、边框、卡片、成功/警告/错误状态色,以及自定义的字体、圆角、阴影和间距系统。你可以在 tweakcn 编辑器中实时预览效果,并将生成的配置直接用于 shadcn/ui 项目,或通过链接分享给团队协作使用。
技术方案
采用 tweakcn(https://tweakcn.com/)作为 shadcn/ui 主题的调整编辑器。该工具无需安装,在线即可使用,支持手动调整参数和 AI 对话生成组件主题两种方式。最终输出为 globals.css 代码,可直接在 AI IDE(如 Cursor 等)中导入。
环境与依赖
- 现代浏览器(Chrome、Edge、Firefox 等)
- 网络连接(访问 tweakcn 官网)
- (可选)AI IDE 工具(如 Cursor)用于 Figma 组件库的 CSS 代码转换
方式一:手动调节参数
选择预设主题
进入 tweakcn 官网后,首先从预设主题中挑选一个与目标风格相近的模版。点击下方滚动轮播卡片可预览整体效果,确认后点击主按钮创建,这样比从空白开始更高效。
进入手动调整面板
点击“开始”按钮,进入手动设置参数页面。左侧为调整面板,右侧是实时效果预览面板,即时生效,同时自动生成暗色模式主题。
注意事项
1. 渐变色
tweakcn 不支持直接生成渐变色主题色,因为 CSS Variables 的 primary color 只能使用纯色值。渐变色需要在代码层手动编写。现阶段纯色值已足够满足产品设计需求。
2. 不透明度
在 tweakcn 和 shadcn/ui 体系中,全局基础色彩变量不应包含透明度。透明度只在具体组件代码中手动调节。例如,设定一个纯色的 Card-bg 基础色,然后在卡片 A 的图层透明度设为 80%,卡片 B 设为 50%,这样 AI 可控性更高。
3. 字体设置
tweakcn 中可选择大部分主流英文字体(如 Roboto、Inter 等),但未预置中文友好字体(如 PingFang SC)。如需中文字体,可在导出的代码层中手动追加。目前 tweakcn 仅支持字间距(letter-spacing)设置,不支持行间距(line-height),行间距采用默认值。
4. 单位转换
tweakcn 中圆角和间距大小默认使用 rem 单位,字体间距使用 em 单位。遵循浏览器默认设置:1rem = 16px。
- rem 换算公式:1px ÷ 16 = 1rem。例如:4px = 0.25rem,8px = 0.5rem,12px = 0.75rem,16px = 1rem。
- em 与 px 的区别:em 具备“字间距跟随字号缩放”的能力,例如字号 16px 时设定间距 0.02em,实际字间距为默认字间距的 2%。同时 em 具备父级继承功能,确保元素间距统一。
5. 无障碍设计校验
tweakcn 内置了 WCAG 对比度检查。点击顶部工具栏的 Contrast(对比度) 按钮,会弹出面板显示所有“文字 + 背景”颜色对比度校验结果,可根据结果调整。
保存与分享
调整完毕后,点击 Sa ve(保存) 按钮。按钮会变为 发布(Publish)(如需公开分享可点击,一般不需要)。使用 Share(分享) 或 Code(代码) 功能,可将组件库风格链接发送给团队成员,用于项目编码。
效果预览
完成后的组件库示例效果:
方式二:AI 生成组件代码
通过 tweakcn 的 AI 对话功能,可以上传图片或描述需求生成组件主题。Free 版本生成次数有限,需付费扩展。注意:tweakcn 目前不支持基于外部组件库官网或 GitHub 链接直接生成,也不支持将 Figma 组件库直接转换为 shadcn/ui 代码,仅能根据图片、文字描述等素材生成,因此可能存在色值误差。
AI 生成指令模板
复制以下指令,替换蓝色文案为你的具体需求,直接发送给 tweakcn AI:
“请帮我生成一份 shadcn/ui 主题配置,具体要求如下:
1. 颜色映射(需包含浅色/深色两套主题):
- 主色 (Primary): 浅色 #0064fa / 深色 #3370ff;
- 背景 (Background): 浅色 #ffffff / 深色 #16161a;
- 文本 (Foreground): 浅色 #1d2129 / 深色 #e6e8ea;
- 边框色 (Border): 浅色 #e3e5e9 / 深色 #2e2e33;
- 卡片 (Card): 浅色 #ffffff / 深色 #16161a;
- 成功 (Success): #3bb346;
- 警告 (Warning): #fc8800;
- 错误 (Destructive): #f93920;
- 禁用文本 (Muted): rgba(28, 31, 35, 0.35)。
2. 字体排版:
- 字体使用 Inter;
- 字号从 12px 起步,最高至 32px,支持 200~700 多级字重。
3. 圆角与阴影:以下数值请帮我自动换算成 rem:
- 基础交互组件的圆角(radius)设定为 3px;
- 容器或卡片中等圆角(radius-medium)设定为 6px;
- 阴影色值:rgba(28, 31, 35, 0.4)。
4. 间距:以下数值请帮我自动换算成 rem:
- 采用基于 4px 步进的间距系统,例如紧凑间距为 8px,中等间距为 16px。
5. 其他要求:
- 请直接输出包含 :root 和 .dark 的完整 globals.css 代码,便于复制和直接在 AI IDE 工具中使用。
- 同时,帮助我做一个色值的换算:把这一套色值中的含有透明度的颜色,如禁用文本的颜色,直接转换成与之在白色背景(light mode)和黑色背景(dark mode)上看到视觉效果一致的颜色。
- light mode 压到白底 #FFFFFF;
- dark mode 压到黑底 #16161A。”
AI 会根据指令生成相关组件样式,但需注意 AI 换算可能存在偏差,生成后务必人工核对校验。
通过 Figma 组件库导入
如果你已有 Figma 组件库,可以使用 Cursor 等 AI IDE 工具将 Figma 组件库的 CSS 代码转换,再将转换后的代码直接导入到 tweakcn 中,这样生成的组件样式更精准。
结果验证清单
- 在 tweakcn 中完成手动参数调整,实时预览效果与预期一致。
- 通过 AI 生成指令或 Figma 转换获得
globals.css代码,并核对颜色、字体、圆角、间距等数值。 - (可选)将生成的配置链接分享给团队成员,在项目中引入并验证组件渲染效果。
- 验证无障碍对比度检查结果,确保达到 WCAG 标准。
常见问题
- Q:生成的组件样式与设计稿有偏差怎么办? 已设置色值误差,需手动在 tweakcn 中微调参数,或修改 AI 生成指令中的颜色值后重新生成。
- Q:如何在中文字体环境中使用? 在导出的代码层中手动添加中文字体栈(如
PingFang SC, Microsoft YaHei),并确保字体优先级正确。 - Q:行间距如何调整? 目前 tweakcn 不支持直接设置行间距,需在组件的 CSS 中手动添加
line-height属性。
后续优化
- 在代码层中手动编写渐变色主题色,并测试兼容性。
- 针对具体业务场景,调整组件库的圆角、阴影和间距,使其更符合品牌规范。
- 探索更多 AI IDE 工具(如 Cursor、V0 等)直接生成 shadcn/ui 组件的流程,提升效率。
