@deernova/style 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/README.md +8 -6
  2. package/bin/cli.mjs +212 -29
  3. package/package.json +3 -4
  4. package/skill/SKILL.md +91 -21
  5. package/skill/assets/DeernovaTokens.swift +376 -0
  6. package/skill/assets/screens/iphone-button-sizes-dark.png +0 -0
  7. package/skill/assets/screens/iphone-button-sizes-light.png +0 -0
  8. package/skill/assets/screens/iphone-screens-dark.png +0 -0
  9. package/skill/assets/screens/iphone-screens-light.png +0 -0
  10. package/skill/assets/screens/mac-window-dark.png +0 -0
  11. package/skill/assets/screens/mac-window-light.png +0 -0
  12. package/skill/assets/tailwind.css +106 -0
  13. package/skill/assets/tokens.css +533 -0
  14. package/skill/assets/tokens.json +1686 -0
  15. package/skill/manifest.json +2 -22
  16. package/skill/references/components/banner.md +95 -0
  17. package/skill/references/components/button.md +181 -0
  18. package/skill/references/components/card.md +89 -0
  19. package/skill/references/components/code-block.md +77 -0
  20. package/skill/references/components/composer.md +206 -0
  21. package/skill/references/components/empty-state.md +63 -0
  22. package/skill/references/components/glass-controls.md +127 -0
  23. package/skill/references/components/list.md +130 -0
  24. package/skill/references/components/message.md +94 -0
  25. package/skill/references/components/segmented.md +79 -0
  26. package/skill/references/components/sheet.md +84 -0
  27. package/skill/references/components/sidebar.md +139 -0
  28. package/skill/references/components/step-row.md +135 -0
  29. package/skill/references/components/tag.md +86 -0
  30. package/skill/references/components/task-list.md +83 -0
  31. package/skill/references/components/text-field.md +86 -0
  32. package/skill/references/components/toolbar.md +139 -0
  33. package/skill/references/foundations/accessibility.md +27 -0
  34. package/skill/references/foundations/color.md +58 -0
  35. package/skill/references/foundations/elevation.md +17 -0
  36. package/skill/references/foundations/glass.md +36 -0
  37. package/skill/references/foundations/iconography.md +44 -0
  38. package/skill/references/foundations/motion.md +22 -0
  39. package/skill/references/foundations/radius.md +31 -0
  40. package/skill/references/foundations/spacing.md +38 -0
  41. package/skill/references/foundations/stroke.md +35 -0
  42. package/skill/references/foundations/typography.md +54 -0
  43. package/skill/references/foundations/writing.md +10 -0
  44. package/skill/references/review.md +26 -13
  45. package/skill/references/scenes/ios.md +61 -0
  46. package/skill/references/scenes/ipados.md +42 -0
  47. package/skill/references/scenes/macos.md +65 -0
  48. package/skill/references/scenes/swiftui.md +94 -0
  49. package/skill/references/scenes/web-marketing.md +32 -0
  50. package/skill/references/scenes/web.md +83 -0
  51. package/skill/references/tokens.md +441 -74
  52. package/skill/assets/design/README.md +0 -170
  53. package/skill/assets/design/components/Banner/README.md +0 -33
  54. package/skill/assets/design/components/Banner/preview.html +0 -26
  55. package/skill/assets/design/components/Button/README.md +0 -59
  56. package/skill/assets/design/components/Button/preview.html +0 -27
  57. package/skill/assets/design/components/Card/README.md +0 -31
  58. package/skill/assets/design/components/Card/preview.html +0 -24
  59. package/skill/assets/design/components/CodeBlock/README.md +0 -34
  60. package/skill/assets/design/components/CodeBlock/preview.html +0 -16
  61. package/skill/assets/design/components/Composer/README.md +0 -42
  62. package/skill/assets/design/components/Composer/preview.html +0 -28
  63. package/skill/assets/design/components/Cover/preview.html +0 -53
  64. package/skill/assets/design/components/EmptyState/README.md +0 -28
  65. package/skill/assets/design/components/EmptyState/preview.html +0 -16
  66. package/skill/assets/design/components/GlassControls/README.md +0 -43
  67. package/skill/assets/design/components/GlassControls/preview.html +0 -40
  68. package/skill/assets/design/components/ListGroup/README.md +0 -39
  69. package/skill/assets/design/components/ListGroup/preview.html +0 -22
  70. package/skill/assets/design/components/MacWindow/README.md +0 -27
  71. package/skill/assets/design/components/MacWindow/preview.html +0 -70
  72. package/skill/assets/design/components/Message/README.md +0 -31
  73. package/skill/assets/design/components/Message/preview.html +0 -21
  74. package/skill/assets/design/components/PhoneScreen/README.md +0 -25
  75. package/skill/assets/design/components/PhoneScreen/preview.html +0 -74
  76. package/skill/assets/design/components/Segmented/README.md +0 -21
  77. package/skill/assets/design/components/Segmented/preview.html +0 -21
  78. package/skill/assets/design/components/Sheet/README.md +0 -29
  79. package/skill/assets/design/components/Sheet/preview.html +0 -31
  80. package/skill/assets/design/components/Sidebar/README.md +0 -36
  81. package/skill/assets/design/components/Sidebar/preview.html +0 -20
  82. package/skill/assets/design/components/StepRow/README.md +0 -35
  83. package/skill/assets/design/components/StepRow/preview.html +0 -17
  84. package/skill/assets/design/components/Tag/README.md +0 -36
  85. package/skill/assets/design/components/Tag/preview.html +0 -22
  86. package/skill/assets/design/components/TextField/README.md +0 -29
  87. package/skill/assets/design/components/TextField/preview.html +0 -28
  88. package/skill/assets/design/components/bundle.css +0 -189
  89. package/skill/assets/design/design-system.json +0 -25
  90. package/skill/assets/design/images/Banner-dark.png +0 -0
  91. package/skill/assets/design/images/Banner-light.png +0 -0
  92. package/skill/assets/design/images/Button-dark.png +0 -0
  93. package/skill/assets/design/images/Button-light.png +0 -0
  94. package/skill/assets/design/images/Card-dark.png +0 -0
  95. package/skill/assets/design/images/Card-light.png +0 -0
  96. package/skill/assets/design/images/CodeBlock-dark.png +0 -0
  97. package/skill/assets/design/images/CodeBlock-light.png +0 -0
  98. package/skill/assets/design/images/Composer-dark.png +0 -0
  99. package/skill/assets/design/images/Composer-light.png +0 -0
  100. package/skill/assets/design/images/Cover-dark.png +0 -0
  101. package/skill/assets/design/images/Cover-light.png +0 -0
  102. package/skill/assets/design/images/EmptyState-dark.png +0 -0
  103. package/skill/assets/design/images/EmptyState-light.png +0 -0
  104. package/skill/assets/design/images/Example-iOSButtonsInPhone-dark.png +0 -0
  105. package/skill/assets/design/images/Example-iOSButtonsInPhone-light.png +0 -0
  106. package/skill/assets/design/images/GlassControls-dark.png +0 -0
  107. package/skill/assets/design/images/GlassControls-light.png +0 -0
  108. package/skill/assets/design/images/ListGroup-dark.png +0 -0
  109. package/skill/assets/design/images/ListGroup-light.png +0 -0
  110. package/skill/assets/design/images/MacWindow-dark.png +0 -0
  111. package/skill/assets/design/images/MacWindow-light.png +0 -0
  112. package/skill/assets/design/images/Message-dark.png +0 -0
  113. package/skill/assets/design/images/Message-light.png +0 -0
  114. package/skill/assets/design/images/PhoneScreen-dark.png +0 -0
  115. package/skill/assets/design/images/PhoneScreen-light.png +0 -0
  116. package/skill/assets/design/images/Segmented-dark.png +0 -0
  117. package/skill/assets/design/images/Segmented-light.png +0 -0
  118. package/skill/assets/design/images/Sheet-dark.png +0 -0
  119. package/skill/assets/design/images/Sheet-light.png +0 -0
  120. package/skill/assets/design/images/Sidebar-dark.png +0 -0
  121. package/skill/assets/design/images/Sidebar-light.png +0 -0
  122. package/skill/assets/design/images/StepRow-dark.png +0 -0
  123. package/skill/assets/design/images/StepRow-light.png +0 -0
  124. package/skill/assets/design/images/Tag-dark.png +0 -0
  125. package/skill/assets/design/images/Tag-light.png +0 -0
  126. package/skill/assets/design/images/TextField-dark.png +0 -0
  127. package/skill/assets/design/images/TextField-light.png +0 -0
  128. package/skill/assets/design/tokens.css +0 -187
  129. package/skill/assets/design/tokens.json +0 -142
  130. package/skill/references/components.md +0 -648
  131. package/skill/references/foundations.md +0 -170
  132. package/skill/references/native.md +0 -7
  133. package/skill/references/web.md +0 -11
  134. package/template/app.js +0 -7
  135. package/template/index.html +0 -1290
  136. package/template/manifest.json +0 -24
  137. package/template/project/README.md +0 -170
  138. package/template/project/components/Banner/README.md +0 -33
  139. package/template/project/components/Banner/preview.html +0 -26
  140. package/template/project/components/Button/README.md +0 -59
  141. package/template/project/components/Button/preview.html +0 -27
  142. package/template/project/components/Card/README.md +0 -31
  143. package/template/project/components/Card/preview.html +0 -24
  144. package/template/project/components/CodeBlock/README.md +0 -34
  145. package/template/project/components/CodeBlock/preview.html +0 -16
  146. package/template/project/components/Composer/README.md +0 -42
  147. package/template/project/components/Composer/preview.html +0 -28
  148. package/template/project/components/Cover/preview.html +0 -53
  149. package/template/project/components/EmptyState/README.md +0 -28
  150. package/template/project/components/EmptyState/preview.html +0 -16
  151. package/template/project/components/GlassControls/README.md +0 -43
  152. package/template/project/components/GlassControls/preview.html +0 -40
  153. package/template/project/components/ListGroup/README.md +0 -39
  154. package/template/project/components/ListGroup/preview.html +0 -22
  155. package/template/project/components/MacWindow/README.md +0 -27
  156. package/template/project/components/MacWindow/preview.html +0 -70
  157. package/template/project/components/Message/README.md +0 -31
  158. package/template/project/components/Message/preview.html +0 -21
  159. package/template/project/components/PhoneScreen/README.md +0 -25
  160. package/template/project/components/PhoneScreen/preview.html +0 -74
  161. package/template/project/components/Segmented/README.md +0 -21
  162. package/template/project/components/Segmented/preview.html +0 -21
  163. package/template/project/components/Sheet/README.md +0 -29
  164. package/template/project/components/Sheet/preview.html +0 -31
  165. package/template/project/components/Sidebar/README.md +0 -36
  166. package/template/project/components/Sidebar/preview.html +0 -20
  167. package/template/project/components/StepRow/README.md +0 -35
  168. package/template/project/components/StepRow/preview.html +0 -17
  169. package/template/project/components/Tag/README.md +0 -36
  170. package/template/project/components/Tag/preview.html +0 -22
  171. package/template/project/components/TextField/README.md +0 -29
  172. package/template/project/components/TextField/preview.html +0 -28
  173. package/template/project/components/bundle.css +0 -189
  174. package/template/project/design-system.json +0 -25
  175. package/template/project/images/Banner-dark.png +0 -0
  176. package/template/project/images/Banner-light.png +0 -0
  177. package/template/project/images/Button-dark.png +0 -0
  178. package/template/project/images/Button-light.png +0 -0
  179. package/template/project/images/Card-dark.png +0 -0
  180. package/template/project/images/Card-light.png +0 -0
  181. package/template/project/images/CodeBlock-dark.png +0 -0
  182. package/template/project/images/CodeBlock-light.png +0 -0
  183. package/template/project/images/Composer-dark.png +0 -0
  184. package/template/project/images/Composer-light.png +0 -0
  185. package/template/project/images/Cover-dark.png +0 -0
  186. package/template/project/images/Cover-light.png +0 -0
  187. package/template/project/images/EmptyState-dark.png +0 -0
  188. package/template/project/images/EmptyState-light.png +0 -0
  189. package/template/project/images/Example-iOSButtonsInPhone-dark.png +0 -0
  190. package/template/project/images/Example-iOSButtonsInPhone-light.png +0 -0
  191. package/template/project/images/GlassControls-dark.png +0 -0
  192. package/template/project/images/GlassControls-light.png +0 -0
  193. package/template/project/images/ListGroup-dark.png +0 -0
  194. package/template/project/images/ListGroup-light.png +0 -0
  195. package/template/project/images/MacWindow-dark.png +0 -0
  196. package/template/project/images/MacWindow-light.png +0 -0
  197. package/template/project/images/Message-dark.png +0 -0
  198. package/template/project/images/Message-light.png +0 -0
  199. package/template/project/images/PhoneScreen-dark.png +0 -0
  200. package/template/project/images/PhoneScreen-light.png +0 -0
  201. package/template/project/images/Segmented-dark.png +0 -0
  202. package/template/project/images/Segmented-light.png +0 -0
  203. package/template/project/images/Sheet-dark.png +0 -0
  204. package/template/project/images/Sheet-light.png +0 -0
  205. package/template/project/images/Sidebar-dark.png +0 -0
  206. package/template/project/images/Sidebar-light.png +0 -0
  207. package/template/project/images/StepRow-dark.png +0 -0
  208. package/template/project/images/StepRow-light.png +0 -0
  209. package/template/project/images/Tag-dark.png +0 -0
  210. package/template/project/images/Tag-light.png +0 -0
  211. package/template/project/images/TextField-dark.png +0 -0
  212. package/template/project/images/TextField-light.png +0 -0
  213. package/template/project/tokens.css +0 -187
  214. package/template/project/tokens.json +0 -142
  215. package/template/style.css +0 -1
@@ -1,74 +1,441 @@
1
- ## color
2
-
3
- - `canvas`: light `#f5f5f5`; dark `#161616`. 窗口底色、iOS 分组列表的底色。最底层的纸面。
4
- - `surface`: light `#fafafa`; dark `#1c1c1c`. 内容区、卡片。比 canvas 略亮一层。
5
- - `surface-raised`: light `#ffffff`; dark `#252525`. 输入框、Composer、iOS 分组列表、弹出层。最亮的纸面。
6
- - `surface-sunken`: light `#ebebeb`; dark `#111111`. 代码块、用户消息气泡、展开的步骤详情。凹下去的纸面。
7
- - `ink`: light `#171717`; dark `#ededed`. 正文与标题,用在四种纸面上(最低 13:1)。
8
- - `ink-secondary`: light `#525252`; dark `#a3a3a3`. 次要文字、说明、列表的值、未选中图标,用在四种纸面上(最低 6:1)。
9
- - `ink-tertiary`: light `#666666`; dark `#8c8c8c`. 占位符、时间戳、计数、分组标题,用在四种纸面上(最低 4.5:1)。
10
- - `line`: light `#e3e3e3`; dark `#2f2f2f`. 分隔线、卡片描边、按钮描边。装饰性,不承载信息。
11
- - `line-control`: light `#8a8a8a`; dark `#737373`. 输入框边框、拖拽条。在 canvas、surface、surface-raised 上不低于 3:1,让人一眼看出可输入。
12
- - `accent`: light `var(--ink)`; dark `var(--ink)`. 强调:主按钮填充、选中指示、焦点环。就是墨色本身,浅色主题为黑、深色主题为白;强调靠明暗对比,不靠彩色。
13
- - `accent-soft`: light `#e8e8e8`; dark `#2e2e2e`. 强调的浅底:强调标签、列表图标底、输入框聚焦光晕。上面的文字用 ink。
14
- - `on-accent`: light `#ffffff`; dark `#161616`. accent 填充上的文字和图标:浅色主题白字,深色主题黑字。
15
- - `focus-ring`: light `var(--accent)`; dark `var(--accent)`. 键盘焦点环:2pt 实线,外偏移 2pt。在所有纸面上不低于 13:1。
16
- - `success`: light `#1f6b66`; dark `#6cc3b4`. 成功、已完成、已同步。界面里只有状态色是彩色,只在表达状态时出现。作为文字用在纸面和 success-soft 上。
17
- - `success-soft`: light `#ddeeec`; dark `#183230`. 成功状态的浅底(标签、横幅)。
18
- - `warning`: light `#8a5a0b`; dark `#e2b054`. 需要注意但不阻断:额度将用完、网络较慢。作为文字用在纸面和 warning-soft 上。
19
- - `warning-soft`: light `#f5ead3`; dark `#3a2e17`. 警告状态的浅底。
20
- - `danger`: light `#b0283f`; dark `#f07a8a`. 错误、失败、删除。永远同时配图标或文字。作为文字用在纸面和 danger-soft 上。
21
- - `danger-soft`: light `#f7e1e4`; dark `#3d2027`. 错误状态的浅底、危险按钮的底色。
22
- - `info`: light `#2c5f86`; dark `#82b4dc`. 中性提示。作为文字用在纸面和 info-soft 上。
23
- - `info-soft`: light `#e1ebf3`; dark `#1d2c3a`. 提示状态的浅底。
24
- - `fill-hover`: light `#0000000a`; dark `#ffffff0f`. 悬停底色,叠在任何纸面上(列表行、文字按钮、侧边栏项)。
25
- - `fill-selected`: light `#00000012`; dark `#ffffff1a`. 选中底色(侧边栏当前项、分段控件底槽、中性标签底)。
26
- - `knob`: light `#ffffff`; dark `#ffffff`. 开关的圆钮,两套主题都是白色,与系统一致。
27
- - `scrim`: light `#00000052`; dark `#00000080`. 弹窗背后压暗内容的遮罩。
28
- - `glass-fill`: light `#ffffffa6`; dark `#2a2a2aa6`. 仅用于网页预览模拟 Liquid Glass。App 里用系统 .glassEffect(),不要用这个值自己画玻璃。
29
- - `glass-stroke`: light `#ffffffcc`; dark `#ffffff24`. 仅用于网页预览:玻璃边缘的高光描边。
30
-
31
- ## shadow
32
-
33
- - `shadow-control`: light `0 1px 1px rgba(0, 0, 0, 0.05)`; dark `0 1px 1px rgba(0, 0, 0, 0.30)`. 次按钮、分段控件的选中块:一点点厚度。
34
- - `shadow-float`: light `0 1px 2px rgba(0, 0, 0, 0.05), 0 6px 20px rgba(0, 0, 0, 0.08)`; dark `0 1px 2px rgba(0, 0, 0, 0.40), 0 6px 20px rgba(0, 0, 0, 0.45)`. Composer、弹出菜单、弹窗、浮动面板。
35
- - `shadow-glass`: light `0 4px 14px rgba(0, 0, 0, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.70)`; dark `0 4px 14px rgba(0, 0, 0, 0.40), inset 0 1px 0 rgba(255, 255, 255, 0.10)`. 仅用于网页预览模拟玻璃。App 里系统玻璃自带阴影。
36
-
37
- ## spacing
38
-
39
- - `space-1`: light `4px`; dark `4px`. 图标与文字之间、卡片内标题与摘要之间。
40
- - `space-2`: light `8px`; dark `8px`. Mac 列表项内边距、横幅上下内边距、Composer 内边距。
41
- - `space-3`: light `12px`; dark `12px`. Mac 按钮左右内边距、卡片内边距、横幅左右内边距。
42
- - `space-4`: light `16px`; dark `16px`. Mac 内容区边距、对话中消息之间、iOS 页面左右边距。
43
- - `space-5`: light `20px`; dark `20px`. iOS 分组之间、Mac 区块之间。
44
- - `space-6`: light `24px`; dark `24px`. 空状态内边距、大区块之间。
45
- - `space-8`: light `32px`; dark `32px`. 页面级留白。
46
- - `space-10`: light `40px`; dark `40px`. 引导页、首屏的大留白。
47
-
48
- ## radius
49
-
50
- - `radius-xs`: light `4px`; dark `4px`. 标签、复选框、分段控件里的选中块(外层 radius-sm、内边距 2)。
51
- - `radius-sm`: light `6px`; dark `6px`. Mac 按钮、输入框、侧边栏选中块、iOS 列表图标底。
52
- - `radius-md`: light `8px`; dark `8px`. Mac 卡片、横幅、代码块、弹出菜单。
53
- - `radius-lg`: light `12px`; dark `12px`. iOS 卡片、iOS 分组列表、Composer、用户消息气泡、Mac 侧边栏面板。
54
- - `radius-xl`: light `24px`; dark `24px`. iOS 底部弹窗、iOS 单行 Composer。
55
- - `radius-full`: light `999px`; dark `999px`. 胶囊与圆形:玻璃按钮、iOS 主按钮、发送按钮、状态圆点。
56
-
57
- ## stroke
58
-
59
- - `stroke-hairline`: light `0.5px`; dark `0.5px`. 分隔线、卡片描边:1 个物理像素。SwiftUI: 1 / displayScale。
60
- - `stroke-control`: light `1px`; dark `1px`. 输入框边框。
61
- - `stroke-focus`: light `2px`; dark `2px`. 焦点环。
62
-
63
- ## size
64
-
65
- - `control-mac-sm`: light `20px`; dark `20px`. Mac 小按钮、行内操作、分段控件。
66
- - `control-mac`: light `24px`; dark `24px`. Mac 默认按钮、输入框、图标按钮、步骤行。
67
- - `control-mac-lg`: light `28px`; dark `28px`. Mac 大按钮(引导页、空状态)。
68
- - `row-mac`: light `26px`; dark `26px`. Mac 侧边栏项、列表行。
69
- - `control-ios`: light `44px`; dark `44px`. iOS 最小可点区域(按钮看起来可以更小,点击区域仍补足到 44)、列表行、输入框、导航栏玻璃按钮。
70
- - `button-ios-sm`: light `30px`; dark `30px`. iOS 小按钮的可见高度:卡片和列表里的「获取」「关注」这类行内操作。
71
- - `button-ios`: light `36px`; dark `36px`. iOS 默认按钮的可见高度。
72
- - `control-ios-lg`: light `46px`; dark `46px`. iOS 通栏主按钮(页面底部、弹窗里的唯一主操作)。
73
- - `sidebar-mac`: light `220px`; dark `220px`. Mac 侧边栏默认宽度。
74
- - `content-max`: light `680px`; dark `680px`. 长文阅读栏的最大宽度,14pt 下约每行 45 个汉字。
1
+ # 设计变量
2
+
3
+ 由 `assets/tokens.json` 生成(在 deernova-style 仓库里运行 `npm run tokens`),不要手改。同一份数据还生成了 `assets/tokens.css`(CSS 变量)、`assets/tailwind.css`(Tailwind v4 主题)和 `assets/DeernovaTokens.swift`(SwiftUI)。CSS 变量名和这里的 token 名一致,例如 `var(--ink)`、`var(--button-height-md)`。
4
+
5
+ 每个 token 的值只取决于两件事:**主题**(浅色 / 深色)和**密度**(紧凑 / 常规 / 触控 / 舒展)。token 名字里不出现平台,平台差异全部放在值里。
6
+
7
+ ## 场景与密度
8
+
9
+ | 场景 | 密度 | 输入 | 怎么启用 | 读这里 |
10
+ | --- | --- | --- | --- | --- |
11
+ | Web 应用 | 桌面(`desktop`) | 指针 | tokens.css 的默认值 | [scenes/web.md](scenes/web.md) |
12
+ | Web 触屏 | 触控(`touch`) | 触摸 | `@media (pointer: coarse)` 自动切换 | [scenes/web.md](scenes/web.md) |
13
+ | macOS | 桌面(`desktop`) | 指针 | 系统控件用系统尺寸;内容区用 `DeernovaTokens.swift` 的 `#if os(macOS)` | [scenes/macos.md](scenes/macos.md) |
14
+ | iOS | 触控(`touch`) | 触摸 | `DeernovaTokens.swift` 的 `#else` | [scenes/ios.md](scenes/ios.md) |
15
+ | iPadOS | 触控(`touch`) | 触摸和指针 | 同 iOS;分栏布局另见场景说明 | [scenes/ipados.md](scenes/ipados.md) |
16
+ | 官网与文档 | 舒展(`comfortable`) | 指针 | 根元素加 `data-density="comfortable"` | [scenes/web-marketing.md](scenes/web-marketing.md) |
17
+
18
+ | 密度 | 说明 |
19
+ | --- | --- |
20
+ | 桌面(`desktop`) | 指针操作。tokens.css 的默认值:正文 15/24,控件 28,侧边栏行 32。macOS 的侧边栏、工具栏、菜单用系统控件和系统尺寸,自己画的内容区用这一档。 |
21
+ | 触控(`touch`) | 手指操作。正文 17pt,按钮看起来 36pt,点击区域至少 44pt。 |
22
+ | 舒展(`comfortable`) | 以阅读为主。字号和留白更大,控件只用于少量导航。 |
23
+
24
+ ## 原始色板
25
+
26
+ 原始色板。名字里的数字是 HSL 亮度(0 黑,100 白)。只在 tokens.json 里被语义颜色引用,代码里不要直接用。
27
+
28
+ | Token | 值 |
29
+ | --- | --- |
30
+ | `gray-100` | `#ffffff` |
31
+ | `gray-98` | `#fafafa` |
32
+ | `gray-96` | `#f5f5f5` |
33
+ | `gray-93` | `#ededed` |
34
+ | `gray-92` | `#ebebeb` |
35
+ | `gray-91` | `#e8e8e8` |
36
+ | `gray-89` | `#e3e3e3` |
37
+ | `gray-64` | `#a3a3a3` |
38
+ | `gray-55` | `#8c8c8c` |
39
+ | `gray-54` | `#8a8a8a` |
40
+ | `gray-45` | `#737373` |
41
+ | `gray-40` | `#666666` |
42
+ | `gray-32` | `#525252` |
43
+ | `gray-18` | `#2f2f2f` |
44
+ | `gray-15` | `#252525` |
45
+ | `gray-11` | `#1c1c1c` |
46
+ | `gray-9` | `#171717` |
47
+ | `gray-7` | `#111111` |
48
+ | `teal-90` | `#ddeeec` |
49
+ | `teal-59` | `#6cc3b4` |
50
+ | `teal-27` | `#1f6b66` |
51
+ | `teal-15` | `#183230` |
52
+ | `amber-89` | `#f5ead3` |
53
+ | `amber-61` | `#e2b054` |
54
+ | `amber-29` | `#8a5a0b` |
55
+ | `amber-16` | `#3a2e17` |
56
+ | `crimson-93` | `#f7e1e4` |
57
+ | `crimson-71` | `#f07a8a` |
58
+ | `crimson-42` | `#b0283f` |
59
+ | `crimson-18` | `#3d2027` |
60
+ | `blue-92` | `#e1ebf3` |
61
+ | `blue-69` | `#82b4dc` |
62
+ | `blue-35` | `#2c5f86` |
63
+ | `blue-17` | `#1d2c3a` |
64
+
65
+ ## 颜色
66
+
67
+ 语义颜色,按主题取值。代码里只用这些名字。
68
+ “= `ink`” 表示这个变量直接引用另一个语义颜色。
69
+
70
+ | Token | 浅色 | 深色 | 用途 |
71
+ | --- | --- | --- | --- |
72
+ | `canvas` | `gray-96` `#f5f5f5` | `gray-9` `#171717` | 窗口底色、Web 应用的内容区、分组列表的底色。最底层的纸面。 |
73
+ | `surface` | `gray-98` `#fafafa` | `gray-11` `#1c1c1c` | 卡片、侧边栏(比内容区亮一层)。 |
74
+ | `surface-raised` | `gray-100` `#ffffff` | `gray-15` `#252525` | 输入框、Composer、用户消息气泡、分组列表、弹出层。最亮的纸面。 |
75
+ | `surface-sunken` | `gray-92` `#ebebeb` | `gray-7` `#111111` | 代码块、展开的步骤详情。凹下去的纸面。 |
76
+ | `ink` | `gray-9` `#171717` | `gray-93` `#ededed` | 正文与标题,在四种纸面上不低于 13:1。 |
77
+ | `ink-secondary` | `gray-32` `#525252` | `gray-64` `#a3a3a3` | 次要文字、说明、列表的值、未选中的图标,在四种纸面上不低于 6:1。 |
78
+ | `ink-tertiary` | `gray-40` `#666666` | `gray-55` `#8c8c8c` | 占位符、时间戳、计数、分组标题,在四种纸面上不低于 4.5:1。 |
79
+ | `line` | `gray-89` `#e3e3e3` | `gray-18` `#2f2f2f` | 分隔线、卡片描边、按钮描边。装饰性,不承载信息。 |
80
+ | `line-control` | `gray-54` `#8a8a8a` | `gray-45` `#737373` | 输入框边框、拖拽条、链接下划线。在 canvas、surface、surface-raised 上不低于 3:1。 |
81
+ | `accent` | = `ink` | = `ink` | 强调:主按钮填充、选中指示、焦点环。就是墨色本身,浅色主题是黑,深色主题是白。 |
82
+ | `accent-soft` | `gray-91` `#e8e8e8` | `gray-18` `#2f2f2f` | 强调的浅底:列表图标底、输入框聚焦光晕。上面的文字用 ink。 |
83
+ | `on-accent` | `gray-100` `#ffffff` | `gray-9` `#171717` | accent 填充上的文字和图标:浅色主题白字,深色主题黑字。 |
84
+ | `focus-ring` | = `accent` | = `accent` | 键盘焦点环:stroke-focus 宽的实线,外偏移 focus-offset。 |
85
+ | `success` | `teal-27` `#1f6b66` | `teal-59` `#6cc3b4` | 成功、已完成、已同步、开关打开。作为文字用在纸面和 success-soft 上。 |
86
+ | `success-soft` | `teal-90` `#ddeeec` | `teal-15` `#183230` | 成功状态的浅底(标签、横幅)。 |
87
+ | `warning` | `amber-29` `#8a5a0b` | `amber-61` `#e2b054` | 需要注意但不阻断:额度将用完、网络较慢。 |
88
+ | `warning-soft` | `amber-89` `#f5ead3` | `amber-16` `#3a2e17` | 警告状态的浅底。 |
89
+ | `danger` | `crimson-42` `#b0283f` | `crimson-71` `#f07a8a` | 错误、失败、删除。永远同时配图标或文字。 |
90
+ | `danger-soft` | `crimson-93` `#f7e1e4` | `crimson-18` `#3d2027` | 错误状态的浅底、危险按钮的底色。 |
91
+ | `info` | `blue-35` `#2c5f86` | `blue-69` `#82b4dc` | 中性提示。 |
92
+ | `info-soft` | `blue-92` `#e1ebf3` | `blue-17` `#1d2c3a` | 提示状态的浅底。 |
93
+ | `fill-hover` | `#0000000a` | `#ffffff0f` | 悬停底色,叠在任何纸面上(列表行、文字按钮、侧边栏项)。 |
94
+ | `fill-selected` | `#00000017` | `#ffffff26` | 选中底色:侧边栏当前项、分段控件底槽、次按钮、中性标签底。比悬停明显,一眼能看出当前在哪。 |
95
+ | `knob` | `gray-100` `#ffffff` | `gray-100` `#ffffff` | 开关的圆钮,两套主题都是白色,与系统一致。 |
96
+ | `scrim` | `#00000052` | `#00000080` | 弹窗背后压暗内容的遮罩。 |
97
+ | `glass-fill` | `#ffffffa6` | `#2a2a2aa6` | 仅官网与文档的页眉:用 backdrop-filter 近似玻璃。Web 应用不用玻璃;App 里用系统玻璃。 |
98
+ | `glass-stroke` | `#ffffffcc` | `#ffffff24` | 仅官网与文档的页眉:玻璃边缘的高光描边。 |
99
+
100
+ ## 字体
101
+
102
+ 字号按角色组织,每个角色在三种密度下各有一组字号和行高。界面文字和 AI 回答都用无衬线;衬线只给 display、title 和文章类长文 prose。iOS 用文本样式,让动态字体生效。
103
+
104
+ | 字族 | CSS 变量 | 字体栈 |
105
+ | --- | --- | --- |
106
+ | serif | `--font-serif` | `ui-serif, "New York", "Iowan Old Style", Georgia, "PingFang SC", serif` |
107
+ | sans | `--font-sans` | `-apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Hiragino Sans GB", system-ui, sans-serif` |
108
+ | mono | `--font-mono` | `ui-monospace, "SF Mono", Menlo, "PingFang SC", monospace` |
109
+
110
+ ### 字重
111
+
112
+ | Token | 值 | 用途 |
113
+ | --- | --- | --- |
114
+ | `weight-regular` | `400` | 正文、说明、输入的文字。 |
115
+ | `weight-medium` | `500` | 按钮、标签、侧边栏选中项、表单标签。 |
116
+ | `weight-semibold` | `600` | 标题、区块标题、列表行标题。不用 700 以上。 |
117
+
118
+ ### 字号角色
119
+
120
+ 每个角色生成 `--type-<角色>`(`font` 简写,可以直接写 `font: var(--type-body)`)、`--type-<角色>-size` 和 `--type-<角色>-line`。表里是“字号 / 行高”。
121
+
122
+ | 角色 | 字族 | 字重 | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | SwiftUI(macOS · iOS) | 用途 |
123
+ | --- | --- | --- | --- | --- | --- | --- | --- |
124
+ | `display` | serif | 600 | 26 / 32 | 30 / 36 | 44 / 52 | `.system(size: 26, weight: .semibold, design: .serif)` · `.system(.largeTitle, design: .serif).weight(.semibold)` | 空状态、引导页、页面的大标题(衬线)。每屏最多一个。 |
125
+ | `title` | serif | 600 | 18 / 24 | 20 / 25 | 24 / 32 | `.system(size: 18, weight: .semibold, design: .serif)` · `.system(.title3, design: .serif).weight(.semibold)` | 文章标题、弹窗标题(衬线)。 |
126
+ | `headline` | sans | 600 | 15 / 22 | 17 / 22 | 16 / 24 | `.system(size: 15, weight: .semibold)` · `.headline` | 区块标题、卡片标题、横幅标题、列表行标题。 |
127
+ | `body` | sans | 400 | 15 / 24 | 17 / 23 | 15 / 24 | `.system(size: 15)` · `.body` | 界面正文、AI 回答、用户消息、列表、表单。 |
128
+ | `prose` | serif | 400 | 16 / 26 | 17 / 26 | 17 / 28 | `.system(size: 16, design: .serif)` · `.system(.body, design: .serif)` | 文章、文档这类长文阅读(衬线)。AI 回答不用它。 |
129
+ | `callout` | sans | 400 | 14 / 20 | 15 / 20 | 14 / 22 | `.system(size: 14)` · `.callout` | 说明文字、弹窗正文、输入区下方的模型和权限信息。 |
130
+ | `footnote` | sans | 400 | 13 / 18 | 13 / 17 | 13 / 20 | `.system(size: 13)` · `.footnote` | 侧边栏分组标题、分组列表的页头页脚、卡片摘要。 |
131
+ | `caption` | sans | 400 | 12 / 16 | 12 / 15 | 12 / 16 | `.system(size: 12)` · `.caption` | 时间戳、计数、标签。界面里最小的字。 |
132
+ | `code` | mono | 400 | 13 / 20 | 13 / 18 | 13 / 20 | `.system(size: 13, design: .monospaced)` · `.system(.footnote, design: .monospaced)` | 代码块、命令、文件路径、需要对齐的数据。 |
133
+
134
+ ## 间距
135
+
136
+ 4pt 网格。刻度是固定值;语义间距按密度取值。组与组之间的间距至少是组内的 2 倍。
137
+
138
+ | Token | 值 | 用途 |
139
+ | --- | --- | --- |
140
+ | `space-1` | `4px` | 图标与文字之间、标题与摘要之间。 |
141
+ | `space-2` | `8px` | 列表项内边距、横幅上下内边距、卡片网格间距。 |
142
+ | `space-3` | `12px` | 卡片内边距、横幅左右内边距。 |
143
+ | `space-4` | `16px` | 内容区里段落、工具调用行、卡片之间。 |
144
+ | `space-5` | `20px` | 分组之间、区块之间。 |
145
+ | `space-6` | `24px` | 空状态内边距、大区块之间。 |
146
+ | `space-8` | `32px` | 页面级留白。 |
147
+ | `space-10` | `40px` | 引导页、首屏的留白。 |
148
+ | `space-12` | `48px` | 官网与文档的章节间距。 |
149
+ | `space-16` | `64px` | 官网首屏的上下留白。 |
150
+
151
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
152
+ | --- | --- | --- | --- | --- |
153
+ | `gap-inline` | 6 | 6 | 8 | 同一行里图标和文字之间、按钮里图标和标签之间。 |
154
+ | `gap-stack` | 8 | 8 | 12 | 同一组里相邻元素之间:表单项、卡片里的段落、并排的按钮。 |
155
+ | `gap-group` | 24 | 20 | 48 | 组与组之间:设置分组、页面区块。至少是 gap-stack 的 2 倍。 |
156
+ | `page-margin` | 32 | 16 | 32 | 页面和内容区的左右边距。 |
157
+
158
+ ## 圆角
159
+
160
+ 圆角刻度。各组件实际用哪一档见组件尺寸里的 *-radius。嵌套保持同心:内圆角 = 外圆角 − 内边距。
161
+
162
+ | Token | 值 | 用途 |
163
+ | --- | --- | --- |
164
+ | `radius-xs` | `4px` | 标签、复选框、小按钮。 |
165
+ | `radius-sm` | `6px` | 桌面端的按钮、输入框、工具栏图标按钮。 |
166
+ | `radius-md` | `8px` | 侧边栏选中块、代码块、弹出菜单。 |
167
+ | `radius-lg` | `12px` | 卡片、用户消息气泡、分组列表、任务清单。 |
168
+ | `radius-xl` | `24px` | 底部弹窗、触控端单行 Composer。 |
169
+ | `radius-full` | `999px` | 胶囊与圆形:触控端按钮、玻璃按钮、状态圆点。 |
170
+
171
+ ## 线宽
172
+
173
+ 线宽。
174
+
175
+ | Token | 值 | 用途 |
176
+ | --- | --- | --- |
177
+ | `stroke-line` | `1px` | 分隔线、卡片、输入区、侧边栏和顶栏的边线。SwiftUI 里自己画的边框用 1pt,系统自带的分隔线保持系统样式。 |
178
+ | `stroke-control` | `1px` | 输入框边框、选中卡片的描边(配 line-control 或 ink 色)。 |
179
+ | `stroke-focus` | `2px` | 键盘焦点环。 |
180
+ | `focus-offset` | `2px` | 焦点环和控件边缘之间的距离。 |
181
+
182
+ ## 线形
183
+
184
+ 线形:线条画成什么样。
185
+
186
+ | Token | 值 | 用途 |
187
+ | --- | --- | --- |
188
+ | `line-style-divider` | `solid` | 分隔线、卡片和输入框的边框。界面里的线默认都是实线。 |
189
+ | `line-style-dropzone` | `dashed` | 拖放区、待添加的占位块。只有这类“还空着”的区域用虚线。 |
190
+ | `line-dash` | `4 4` | SVG 虚线的 stroke-dasharray。(仅网页) |
191
+ | `line-cap` | `round` | 图标和自绘线条的端点。 |
192
+ | `line-join` | `round` | 图标和自绘线条的拐角。 |
193
+
194
+ ## 阴影
195
+
196
+ 阴影就是层级。卡片不加阴影,只有真正浮起来的东西才有。
197
+
198
+ | Token | 浅色 | 深色 | 用途 |
199
+ | --- | --- | --- | --- |
200
+ | `shadow-control` | `0 1px 1px rgba(0, 0, 0, 0.05)` | `0 1px 1px rgba(0, 0, 0, 0.30)` | 第 1 层:次按钮、分段控件的选中块,一点点厚度。 |
201
+ | `shadow-float` | `0 1px 2px rgba(0, 0, 0, 0.05), 0 6px 20px rgba(0, 0, 0, 0.08)` | `0 1px 2px rgba(0, 0, 0, 0.40), 0 6px 20px rgba(0, 0, 0, 0.45)` | 第 2 层:Composer、弹出菜单、弹窗、浮动面板。 |
202
+ | `shadow-glass` | `0 4px 14px rgba(0, 0, 0, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.70)` | `0 4px 14px rgba(0, 0, 0, 0.40), inset 0 1px 0 rgba(255, 255, 255, 0.10)` | 仅网页:模拟玻璃的阴影和顶部高光。App 里系统玻璃自带阴影。 |
203
+
204
+ ## 层级
205
+
206
+ 叠放顺序(z-index)。和阴影的层级一一对应。
207
+
208
+ | Token | 值 | 用途 |
209
+ | --- | --- | --- |
210
+ | `z-sticky` | `10` | 吸顶的工具栏和页眉。 |
211
+ | `z-dropdown` | `100` | 弹出菜单、下拉列表、popover。 |
212
+ | `z-overlay` | `1000` | 遮罩和弹窗。 |
213
+ | `z-toast` | `1100` | 轻提示,压在弹窗之上。 |
214
+
215
+ ## 动效
216
+
217
+ 动效时长和缓动。SwiftUI 里默认用 .spring(response: 0.35, dampingFraction: 0.85)。
218
+
219
+ | Token | 值 | 用途 |
220
+ | --- | --- | --- |
221
+ | `duration-instant` | `120ms` | 悬停、按压、选中这类即时反馈。 |
222
+ | `duration-base` | `200ms` | 展开、收起、切换、开关。 |
223
+ | `duration-slow` | `320ms` | 面板滑入、页面级转场。 |
224
+ | `ease-standard` | `cubic-bezier(0.2, 0.8, 0.2, 1)` | 默认缓动:快进、缓停。 |
225
+
226
+ ## 不透明度
227
+
228
+ 不透明度。
229
+
230
+ | Token | 值 | 用途 |
231
+ | --- | --- | --- |
232
+ | `opacity-disabled` | `0.35` | 禁用的控件。禁用时保持原位,不隐藏。 |
233
+ | `opacity-solid-hover` | `0.88` | 实色(accent 填充)按钮悬停和按下。 |
234
+
235
+ ## 玻璃
236
+
237
+ 仅官网与文档的页眉:用 backdrop-filter 近似 Liquid Glass。Web 应用不用玻璃,App 里用系统玻璃。
238
+
239
+ | Token | 值 | 用途 |
240
+ | --- | --- | --- |
241
+ | `glass-blur` | `16px` | 官网页眉玻璃背后的模糊半径。(仅网页) |
242
+ | `glass-saturate` | `1.4` | 官网页眉玻璃背后的饱和度增强。(仅网页) |
243
+
244
+ ## 布局
245
+
246
+ 布局尺寸。断点只能写在媒体查询里,所以不生成 CSS 变量。
247
+
248
+ | Token | 值 | 用途 |
249
+ | --- | --- | --- |
250
+ | `content-max` | `680px` | 对话栏和长文阅读栏的最大宽度。 |
251
+ | `breakpoint-sm` | `760px` | 窄屏:侧边栏收起,多栏变单栏。 |
252
+ | `breakpoint-md` | `960px` | 中等宽度:目录和次要栏收起。 |
253
+ | `breakpoint-lg` | `1280px` | 宽屏:内容不再继续变宽,两侧留白。 |
254
+
255
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
256
+ | --- | --- | --- | --- | --- |
257
+ | `hit-min` | 24 | 44 | 24 | 最小点击区域。可见尺寸比它小时,用透明的命中区补足,不加大可见的按钮。 |
258
+ | `sidebar-width` | 288 | 320 | 260 | 侧边栏默认宽度。iPhone 没有侧边栏;macOS 用系统侧边栏,宽度只作参考。 |
259
+ | `toolbar-height` | 44 | 44 | 52 | Web 应用顶栏、侧面板标签头的高度。macOS 用系统工具栏。 |
260
+
261
+ ## 组件尺寸
262
+
263
+ 按密度取值。每个组件的完整规格和写法见对应的组件说明。
264
+
265
+ ### 按钮
266
+
267
+ 见 [components/button.md](components/button.md)。
268
+
269
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
270
+ | --- | --- | --- | --- | --- |
271
+ | `button-height-sm` | 24 | 30 | 32 | 小按钮的可见高度:列表行、卡片角落里的行内操作。 |
272
+ | `button-height-md` | 28 | 36 | 36 | 默认按钮、图标按钮、发送按钮、步骤行的高度。 |
273
+ | `button-height-lg` | 32 | 46 | 44 | 大按钮:空状态、引导页;触控端是整页唯一的通栏主按钮。 |
274
+ | `button-padding-x-sm` | 8 | 12 | 14 | 小按钮左右内边距。上下内边距永远是 0。 |
275
+ | `button-padding-x-md` | 12 | 16 | 18 | 默认按钮左右内边距。 |
276
+ | `button-padding-x-lg` | 16 | 20 | 24 | 大按钮左右内边距。 |
277
+ | `button-font-size-sm` | 12 | 13 | 13 | 小按钮字号。 |
278
+ | `button-font-size-md` | 14 | 15 | 14 | 默认按钮字号。 |
279
+ | `button-font-size-lg` | 14 | 16 | 15 | 大按钮字号。 |
280
+ | `button-font-weight` | 500 | 600 | 500 | 按钮字重。 |
281
+ | `button-radius` | 6 | 胶囊 | 胶囊 | 默认和大按钮的圆角:指针端是 radius-sm,触控端和官网是胶囊。 |
282
+ | `button-radius-sm` | 4 | 胶囊 | 胶囊 | 小按钮的圆角。 |
283
+
284
+ ### 顶栏与侧面板
285
+
286
+ 见 [components/toolbar.md](components/toolbar.md)。
287
+
288
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
289
+ | --- | --- | --- | --- | --- |
290
+ | `toolbar-title-size` | 15 | 17 | 15 | 顶栏标题字号(常规字重)。 |
291
+ | `panel-tab-height` | 28 | 36 | 32 | 侧面板标签头里每个标签的高度。 |
292
+
293
+ ### 玻璃操作层
294
+
295
+ 见 [components/glass-controls.md](components/glass-controls.md)。
296
+
297
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
298
+ | --- | --- | --- | --- | --- |
299
+ | `glass-button-size` | 34 | 44 | 36 | 玻璃按钮的边长:macOS 26 工具栏按钮约 34(系统绘制,这里只作参考和自绘时对齐),官网页眉的图标按钮也用它;按钮组里的按钮比它小 8。Web 应用的工具栏不用玻璃,用 button-height-md。 |
300
+
301
+ ### 分段控件
302
+
303
+ 见 [components/segmented.md](components/segmented.md)。
304
+
305
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
306
+ | --- | --- | --- | --- | --- |
307
+ | `segmented-height` | 24 | 28 | 28 | 选项块的高度;外层再加上下各 segmented-padding。 |
308
+ | `segmented-padding` | 2 | 2 | 2 | 底槽内边距。 |
309
+ | `segmented-padding-x` | 12 | 16 | 16 | 选项块左右内边距。 |
310
+ | `segmented-font-size` | 13 | 14 | 14 | 选项字号。 |
311
+ | `segmented-radius` | 6 | 胶囊 | 胶囊 | 底槽圆角;选项块圆角 = 它减去 segmented-padding。 |
312
+
313
+ ### 文本框
314
+
315
+ 见 [components/text-field.md](components/text-field.md)。
316
+
317
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
318
+ | --- | --- | --- | --- | --- |
319
+ | `field-height` | 28 | 44 | 40 | 单行输入框和下拉选择的高度。 |
320
+ | `field-padding-x` | 10 | 12 | 14 | 输入框左右内边距。 |
321
+ | `field-font-size` | 14 | 17 | 15 | 输入文字字号。触控端不小于 16,避免浏览器放大页面。 |
322
+ | `field-radius` | 6 | 8 | 8 | 输入框圆角。 |
323
+
324
+ ### Composer 输入区
325
+
326
+ 见 [components/composer.md](components/composer.md)。
327
+
328
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
329
+ | --- | --- | --- | --- | --- |
330
+ | `composer-radius` | 14 | 24 | 16 | Composer 外框圆角。 |
331
+ | `composer-min-height` | 44 | 44 | 48 | 单行时的高度:加号、输入、发送排在同一行,输入多行时向上长高。 |
332
+
333
+ ### 侧边栏与列表行
334
+
335
+ 见 [components/sidebar.md](components/sidebar.md)。
336
+
337
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
338
+ | --- | --- | --- | --- | --- |
339
+ | `row-height` | 32 | 44 | 40 | 侧边栏项、列表行的最小高度。 |
340
+ | `row-padding-x` | 10 | 16 | 12 | 行的左右内边距;分隔线从这里开始。 |
341
+ | `row-radius` | 8 | 10 | 8 | 悬停和选中底色的圆角。 |
342
+ | `row-gap` | 2 | 0 | 2 | 侧边栏项之间的间隔。触控端的列表用分隔线,不留间隔。 |
343
+
344
+ ### 分组列表与设置页
345
+
346
+ 见 [components/list.md](components/list.md)。
347
+
348
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
349
+ | --- | --- | --- | --- | --- |
350
+ | `row-icon-size` | 20 | 28 | 24 | 列表行左侧图标底的边长。 |
351
+ | `switch-width` | 36 | 51 | 44 | 开关宽度。 |
352
+ | `switch-height` | 20 | 31 | 24 | 开关高度;圆钮直径 = 高度 − 4。 |
353
+
354
+ ### 卡片
355
+
356
+ 见 [components/card.md](components/card.md)。
357
+
358
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
359
+ | --- | --- | --- | --- | --- |
360
+ | `card-padding-x` | 16 | 16 | 24 | 卡片左右内边距。 |
361
+ | `card-padding-y` | 12 | 14 | 24 | 卡片上下内边距。 |
362
+ | `card-radius` | 12 | 12 | 12 | 卡片、分组列表、任务清单的圆角。 |
363
+ | `card-gap` | 12 | 12 | 16 | 卡片网格的间距。 |
364
+
365
+ ### 标签
366
+
367
+ 见 [components/tag.md](components/tag.md)。
368
+
369
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
370
+ | --- | --- | --- | --- | --- |
371
+ | `tag-height` | 20 | 22 | 24 | 标签高度。 |
372
+ | `tag-padding-x` | 6 | 8 | 10 | 标签左右内边距。 |
373
+ | `tag-font-size` | 12 | 12 | 12 | 标签字号。 |
374
+ | `tag-radius` | 4 | 胶囊 | 胶囊 | 标签圆角。 |
375
+
376
+ ### 代码块
377
+
378
+ 见 [components/code-block.md](components/code-block.md)。
379
+
380
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
381
+ | --- | --- | --- | --- | --- |
382
+ | `code-header-height` | 32 | 36 | 36 | 代码块表头的高度。 |
383
+
384
+ ### 任务清单
385
+
386
+ 见 [components/task-list.md](components/task-list.md)。
387
+
388
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
389
+ | --- | --- | --- | --- | --- |
390
+ | `task-row-height` | 28 | 44 | 32 | 任务清单每一行的高度。 |
391
+ | `task-glyph-size` | 16 | 20 | 18 | 左侧状态圈的直径。 |
392
+
393
+ ### 空状态
394
+
395
+ 见 [components/empty-state.md](components/empty-state.md)。
396
+
397
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
398
+ | --- | --- | --- | --- | --- |
399
+ | `empty-title-size` | 24 | 20 | 32 | 空状态标题(衬线)字号。 |
400
+ | `empty-icon-size` | 32 | 36 | 40 | 空状态图标的边长。 |
401
+
402
+ ### 横幅与轻提示
403
+
404
+ 见 [components/banner.md](components/banner.md)。
405
+
406
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
407
+ | --- | --- | --- | --- | --- |
408
+ | `toast-height` | 36 | 40 | 40 | 轻提示胶囊的高度。 |
409
+ | `banner-radius` | 10 | 12 | 12 | 横幅和贴在输入区上方的提示条的圆角。 |
410
+
411
+ ### 弹窗与底部弹窗
412
+
413
+ 见 [components/sheet.md](components/sheet.md)。
414
+
415
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
416
+ | --- | --- | --- | --- | --- |
417
+ | `sheet-radius` | 12 | 24 | 16 | 弹窗和底部弹窗的圆角。 |
418
+ | `menu-radius` | 8 | 12 | 12 | 弹出菜单、popover 的圆角。 |
419
+
420
+ ### 消息
421
+
422
+ 见 [components/message.md](components/message.md)。
423
+
424
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
425
+ | --- | --- | --- | --- | --- |
426
+ | `message-font-size` | 15 | 15 | 15 | 用户消息气泡的字号。AI 回答用 type-body,和界面正文一致。 |
427
+ | `message-action-size` | 24 | 32 | 28 | AI 消息下方操作按钮的可见尺寸。 |
428
+
429
+ ### 图标
430
+
431
+ 见 [foundations/iconography.md](foundations/iconography.md)。
432
+
433
+ | Token | 桌面<br>Web 应用 · macOS 内容区 | 触控<br>iOS · iPadOS · Web 触屏 | 舒展<br>官网与文档 | 用途 |
434
+ | --- | --- | --- | --- | --- |
435
+ | `icon-size-sm` | 14 | 17 | 16 | 按钮和标签里的图标。 |
436
+ | `icon-size-md` | 16 | 20 | 18 | 侧边栏、列表、横幅、工具栏里的图标。 |
437
+ | `icon-size-lg` | 20 | 24 | 24 | 玻璃按钮、标签栏里的图标。 |
438
+
439
+ | Token | 值 | 用途 |
440
+ | --- | --- | --- |
441
+ | `icon-stroke` | `1.75px` | 线性图标在 24×24 viewBox 里的描边宽度,接近 SF Symbols 的常规粗细。(仅网页) |