← Back to list

create-component-style
by idealjs
⭐ 5🍴 0📅 Jan 17, 2026
SKILL.md
name: create-component-style description: "在 monorepo 中为新组件编写样式的步骤、约定与示例,说明如何使用 @vanilla-extract 和统一 token 管理、实现变体类与低优先级选择器的最佳实践。"
新组件实践指南(中文)——创建样式
本文档记录了在本 monorepo 中新增 UI 组件的可复用流程,以 组件为示例。目标是形成一套可重复、可复用的惯例:样式通过类名控制、React 组件保持精简。
目标
- 样式使用
@vanilla-extract(集中在@idealjs/camphora-styled包):颜色、尺寸、状态等变体以类的形式存在。 - React 组件接口尽量最小化——仅接受
className与原生 HTML 属性,不增加过多自定义 props。
前置准备
- 如需新视觉原语,先在
packages/camphora-styled/src/tokens中新增或复用 token(颜色、尺寸、层级、字体等)。 - 确保
packages/camphora-styled/src/index.ts导出新增的样式文件。
本次示例涉及的文件
packages/camphora-styled/src/<component>.css.ts—— 基础样式与变体类(如<componentPrimary>,<componentSm>)。
可复用步骤(样式部分)
- 设计 token 与样式
- 在
packages/camphora-styled/src/tokens中新增或复用所需 token(颜色、尺寸、层级、排版)。 - 使用
@vanilla-extract/css在packages/camphora-styled/src/<component>.css.ts中实现基础<component>样式。 - 将变体(颜色、尺寸、状态)实现为独立类,且通过选择器与基础
<component>组合(例如使用${<component>}&模式),保持选择器简洁且低优先级。 - 注意:在
selectors对象中,使用${baseClass}&来表示当元素同时具有基础类和当前变体类时应用样式。这利用了 vanilla-extract 的&占位符,代表当前类的名称。避免直接嵌套选择器,因为 vanilla-extract 不支持 Sass 风格的嵌套。
- 在
为什么优先用类名?
- 将视觉变体放在样式层(类名 + token)能保持组件 API 的简洁性,避免将视觉控制逻辑混入 React 层,使样式更可复用、可替换。
注意与约定
- 保持 CSS 选择器优先级低且清晰,推荐使用
selectors与${base}&的组合模式。 - 组件层尽量减少自定义 props,把视觉与主题相关的变化交给 token 与类名。
记录时间:2026-01-10
Score
Total Score
50/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon