@deernova/style 0.2.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 (133) hide show
  1. package/README.md +9 -10
  2. package/bin/cli.mjs +212 -32
  3. package/package.json +1 -1
  4. package/skill/SKILL.md +90 -22
  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
@@ -0,0 +1,533 @@
1
+ /* Generated from tokens.json by `npm run tokens`. Do not edit by hand.
2
+ *
3
+ * 主题:浅色是默认值;系统切到深色时自动换成深色。在 <html> 或任何元素上设置
4
+ * data-theme="light" / "dark" 可以强制指定,去掉属性就跟随系统。
5
+ * 密度:默认 desktop(Web 应用);触屏设备(pointer: coarse)自动换成 touch。在 <html> 或任何元素上设置
6
+ * data-density="desktop" / "touch" / "comfortable" 可以强制指定。
7
+ */
8
+
9
+ :root,
10
+ [data-theme="light"] {
11
+ color-scheme: light;
12
+ --canvas: #f5f5f5;
13
+ --surface: #fafafa;
14
+ --surface-raised: #ffffff;
15
+ --surface-sunken: #ebebeb;
16
+ --ink: #171717;
17
+ --ink-secondary: #525252;
18
+ --ink-tertiary: #666666;
19
+ --line: #e3e3e3;
20
+ --line-control: #8a8a8a;
21
+ --accent: var(--ink);
22
+ --accent-soft: #e8e8e8;
23
+ --on-accent: #ffffff;
24
+ --focus-ring: var(--accent);
25
+ --success: #1f6b66;
26
+ --success-soft: #ddeeec;
27
+ --warning: #8a5a0b;
28
+ --warning-soft: #f5ead3;
29
+ --danger: #b0283f;
30
+ --danger-soft: #f7e1e4;
31
+ --info: #2c5f86;
32
+ --info-soft: #e1ebf3;
33
+ --fill-hover: #0000000a;
34
+ --fill-selected: #00000017;
35
+ --knob: #ffffff;
36
+ --scrim: #00000052;
37
+ --glass-fill: #ffffffa6;
38
+ --glass-stroke: #ffffffcc;
39
+ --shadow-control: 0 1px 1px rgba(0, 0, 0, 0.05);
40
+ --shadow-float: 0 1px 2px rgba(0, 0, 0, 0.05), 0 6px 20px rgba(0, 0, 0, 0.08);
41
+ --shadow-glass: 0 4px 14px rgba(0, 0, 0, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.70);
42
+ }
43
+
44
+ @media (prefers-color-scheme: dark) {
45
+ :root:not([data-theme="light"]) {
46
+ color-scheme: dark;
47
+ --canvas: #171717;
48
+ --surface: #1c1c1c;
49
+ --surface-raised: #252525;
50
+ --surface-sunken: #111111;
51
+ --ink: #ededed;
52
+ --ink-secondary: #a3a3a3;
53
+ --ink-tertiary: #8c8c8c;
54
+ --line: #2f2f2f;
55
+ --line-control: #737373;
56
+ --accent: var(--ink);
57
+ --accent-soft: #2f2f2f;
58
+ --on-accent: #171717;
59
+ --focus-ring: var(--accent);
60
+ --success: #6cc3b4;
61
+ --success-soft: #183230;
62
+ --warning: #e2b054;
63
+ --warning-soft: #3a2e17;
64
+ --danger: #f07a8a;
65
+ --danger-soft: #3d2027;
66
+ --info: #82b4dc;
67
+ --info-soft: #1d2c3a;
68
+ --fill-hover: #ffffff0f;
69
+ --fill-selected: #ffffff26;
70
+ --knob: #ffffff;
71
+ --scrim: #00000080;
72
+ --glass-fill: #2a2a2aa6;
73
+ --glass-stroke: #ffffff24;
74
+ --shadow-control: 0 1px 1px rgba(0, 0, 0, 0.30);
75
+ --shadow-float: 0 1px 2px rgba(0, 0, 0, 0.40), 0 6px 20px rgba(0, 0, 0, 0.45);
76
+ --shadow-glass: 0 4px 14px rgba(0, 0, 0, 0.40), inset 0 1px 0 rgba(255, 255, 255, 0.10);
77
+ }
78
+ }
79
+
80
+ [data-theme="dark"] {
81
+ color-scheme: dark;
82
+ --canvas: #171717;
83
+ --surface: #1c1c1c;
84
+ --surface-raised: #252525;
85
+ --surface-sunken: #111111;
86
+ --ink: #ededed;
87
+ --ink-secondary: #a3a3a3;
88
+ --ink-tertiary: #8c8c8c;
89
+ --line: #2f2f2f;
90
+ --line-control: #737373;
91
+ --accent: var(--ink);
92
+ --accent-soft: #2f2f2f;
93
+ --on-accent: #171717;
94
+ --focus-ring: var(--accent);
95
+ --success: #6cc3b4;
96
+ --success-soft: #183230;
97
+ --warning: #e2b054;
98
+ --warning-soft: #3a2e17;
99
+ --danger: #f07a8a;
100
+ --danger-soft: #3d2027;
101
+ --info: #82b4dc;
102
+ --info-soft: #1d2c3a;
103
+ --fill-hover: #ffffff0f;
104
+ --fill-selected: #ffffff26;
105
+ --knob: #ffffff;
106
+ --scrim: #00000080;
107
+ --glass-fill: #2a2a2aa6;
108
+ --glass-stroke: #ffffff24;
109
+ --shadow-control: 0 1px 1px rgba(0, 0, 0, 0.30);
110
+ --shadow-float: 0 1px 2px rgba(0, 0, 0, 0.40), 0 6px 20px rgba(0, 0, 0, 0.45);
111
+ --shadow-glass: 0 4px 14px rgba(0, 0, 0, 0.40), inset 0 1px 0 rgba(255, 255, 255, 0.10);
112
+ }
113
+
114
+ :root {
115
+ --font-serif: ui-serif, "New York", "Iowan Old Style", Georgia, "PingFang SC", serif;
116
+ --font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Hiragino Sans GB", system-ui, sans-serif;
117
+ --font-mono: ui-monospace, "SF Mono", Menlo, "PingFang SC", monospace;
118
+ --weight-regular: 400;
119
+ --weight-medium: 500;
120
+ --weight-semibold: 600;
121
+ --type-display-tracking: -0.01em;
122
+ --space-1: 4px;
123
+ --space-2: 8px;
124
+ --space-3: 12px;
125
+ --space-4: 16px;
126
+ --space-5: 20px;
127
+ --space-6: 24px;
128
+ --space-8: 32px;
129
+ --space-10: 40px;
130
+ --space-12: 48px;
131
+ --space-16: 64px;
132
+ --radius-xs: 4px;
133
+ --radius-sm: 6px;
134
+ --radius-md: 8px;
135
+ --radius-lg: 12px;
136
+ --radius-xl: 24px;
137
+ --radius-full: 999px;
138
+ --stroke-line: 1px;
139
+ --stroke-control: 1px;
140
+ --stroke-focus: 2px;
141
+ --focus-offset: 2px;
142
+ --line-style-divider: solid;
143
+ --line-style-dropzone: dashed;
144
+ --line-dash: 4 4;
145
+ --line-cap: round;
146
+ --line-join: round;
147
+ --z-sticky: 10;
148
+ --z-dropdown: 100;
149
+ --z-overlay: 1000;
150
+ --z-toast: 1100;
151
+ --duration-instant: 120ms;
152
+ --duration-base: 200ms;
153
+ --duration-slow: 320ms;
154
+ --ease-standard: cubic-bezier(0.2, 0.8, 0.2, 1);
155
+ --opacity-disabled: 0.35;
156
+ --opacity-solid-hover: 0.88;
157
+ --glass-blur: 16px;
158
+ --glass-saturate: 1.4;
159
+ --content-max: 680px;
160
+ --icon-stroke: 1.75px;
161
+ }
162
+
163
+ :root,
164
+ [data-density="desktop"] {
165
+ --type-display-size: 26px;
166
+ --type-display-line: 32px;
167
+ --type-display: 600 26px/32px var(--font-serif);
168
+ --type-title-size: 18px;
169
+ --type-title-line: 24px;
170
+ --type-title: 600 18px/24px var(--font-serif);
171
+ --type-headline-size: 15px;
172
+ --type-headline-line: 22px;
173
+ --type-headline: 600 15px/22px var(--font-sans);
174
+ --type-body-size: 15px;
175
+ --type-body-line: 24px;
176
+ --type-body: 400 15px/24px var(--font-sans);
177
+ --type-prose-size: 16px;
178
+ --type-prose-line: 26px;
179
+ --type-prose: 400 16px/26px var(--font-serif);
180
+ --type-callout-size: 14px;
181
+ --type-callout-line: 20px;
182
+ --type-callout: 400 14px/20px var(--font-sans);
183
+ --type-footnote-size: 13px;
184
+ --type-footnote-line: 18px;
185
+ --type-footnote: 400 13px/18px var(--font-sans);
186
+ --type-caption-size: 12px;
187
+ --type-caption-line: 16px;
188
+ --type-caption: 400 12px/16px var(--font-sans);
189
+ --type-code-size: 13px;
190
+ --type-code-line: 20px;
191
+ --type-code: 400 13px/20px var(--font-mono);
192
+ --gap-inline: 6px;
193
+ --gap-stack: 8px;
194
+ --gap-group: 24px;
195
+ --page-margin: 32px;
196
+ --hit-min: 24px;
197
+ --sidebar-width: 288px;
198
+ --toolbar-height: 44px;
199
+ --button-height-sm: 24px;
200
+ --button-height-md: 28px;
201
+ --button-height-lg: 32px;
202
+ --button-padding-x-sm: 8px;
203
+ --button-padding-x-md: 12px;
204
+ --button-padding-x-lg: 16px;
205
+ --button-font-size-sm: 12px;
206
+ --button-font-size-md: 14px;
207
+ --button-font-size-lg: 14px;
208
+ --button-font-weight: 500;
209
+ --button-radius: 6px;
210
+ --button-radius-sm: 4px;
211
+ --toolbar-title-size: 15px;
212
+ --panel-tab-height: 28px;
213
+ --glass-button-size: 34px;
214
+ --segmented-height: 24px;
215
+ --segmented-padding: 2px;
216
+ --segmented-padding-x: 12px;
217
+ --segmented-font-size: 13px;
218
+ --segmented-radius: 6px;
219
+ --field-height: 28px;
220
+ --field-padding-x: 10px;
221
+ --field-font-size: 14px;
222
+ --field-radius: 6px;
223
+ --composer-radius: 14px;
224
+ --composer-min-height: 44px;
225
+ --row-height: 32px;
226
+ --row-padding-x: 10px;
227
+ --row-radius: 8px;
228
+ --row-gap: 2px;
229
+ --row-icon-size: 20px;
230
+ --switch-width: 36px;
231
+ --switch-height: 20px;
232
+ --card-padding-x: 16px;
233
+ --card-padding-y: 12px;
234
+ --card-radius: 12px;
235
+ --card-gap: 12px;
236
+ --tag-height: 20px;
237
+ --tag-padding-x: 6px;
238
+ --tag-font-size: 12px;
239
+ --tag-radius: 4px;
240
+ --code-header-height: 32px;
241
+ --task-row-height: 28px;
242
+ --task-glyph-size: 16px;
243
+ --empty-title-size: 24px;
244
+ --empty-icon-size: 32px;
245
+ --toast-height: 36px;
246
+ --banner-radius: 10px;
247
+ --sheet-radius: 12px;
248
+ --menu-radius: 8px;
249
+ --message-font-size: 15px;
250
+ --message-action-size: 24px;
251
+ --icon-size-sm: 14px;
252
+ --icon-size-md: 16px;
253
+ --icon-size-lg: 20px;
254
+ }
255
+
256
+ @media (pointer: coarse) {
257
+ :root:not([data-density]) {
258
+ --type-display-size: 30px;
259
+ --type-display-line: 36px;
260
+ --type-display: 600 30px/36px var(--font-serif);
261
+ --type-title-size: 20px;
262
+ --type-title-line: 25px;
263
+ --type-title: 600 20px/25px var(--font-serif);
264
+ --type-headline-size: 17px;
265
+ --type-headline-line: 22px;
266
+ --type-headline: 600 17px/22px var(--font-sans);
267
+ --type-body-size: 17px;
268
+ --type-body-line: 23px;
269
+ --type-body: 400 17px/23px var(--font-sans);
270
+ --type-prose-size: 17px;
271
+ --type-prose-line: 26px;
272
+ --type-prose: 400 17px/26px var(--font-serif);
273
+ --type-callout-size: 15px;
274
+ --type-callout-line: 20px;
275
+ --type-callout: 400 15px/20px var(--font-sans);
276
+ --type-footnote-size: 13px;
277
+ --type-footnote-line: 17px;
278
+ --type-footnote: 400 13px/17px var(--font-sans);
279
+ --type-caption-size: 12px;
280
+ --type-caption-line: 15px;
281
+ --type-caption: 400 12px/15px var(--font-sans);
282
+ --type-code-size: 13px;
283
+ --type-code-line: 18px;
284
+ --type-code: 400 13px/18px var(--font-mono);
285
+ --gap-inline: 6px;
286
+ --gap-stack: 8px;
287
+ --gap-group: 20px;
288
+ --page-margin: 16px;
289
+ --hit-min: 44px;
290
+ --sidebar-width: 320px;
291
+ --toolbar-height: 44px;
292
+ --button-height-sm: 30px;
293
+ --button-height-md: 36px;
294
+ --button-height-lg: 46px;
295
+ --button-padding-x-sm: 12px;
296
+ --button-padding-x-md: 16px;
297
+ --button-padding-x-lg: 20px;
298
+ --button-font-size-sm: 13px;
299
+ --button-font-size-md: 15px;
300
+ --button-font-size-lg: 16px;
301
+ --button-font-weight: 600;
302
+ --button-radius: 999px;
303
+ --button-radius-sm: 999px;
304
+ --toolbar-title-size: 17px;
305
+ --panel-tab-height: 36px;
306
+ --glass-button-size: 44px;
307
+ --segmented-height: 28px;
308
+ --segmented-padding: 2px;
309
+ --segmented-padding-x: 16px;
310
+ --segmented-font-size: 14px;
311
+ --segmented-radius: 999px;
312
+ --field-height: 44px;
313
+ --field-padding-x: 12px;
314
+ --field-font-size: 17px;
315
+ --field-radius: 8px;
316
+ --composer-radius: 24px;
317
+ --composer-min-height: 44px;
318
+ --row-height: 44px;
319
+ --row-padding-x: 16px;
320
+ --row-radius: 10px;
321
+ --row-gap: 0px;
322
+ --row-icon-size: 28px;
323
+ --switch-width: 51px;
324
+ --switch-height: 31px;
325
+ --card-padding-x: 16px;
326
+ --card-padding-y: 14px;
327
+ --card-radius: 12px;
328
+ --card-gap: 12px;
329
+ --tag-height: 22px;
330
+ --tag-padding-x: 8px;
331
+ --tag-font-size: 12px;
332
+ --tag-radius: 999px;
333
+ --code-header-height: 36px;
334
+ --task-row-height: 44px;
335
+ --task-glyph-size: 20px;
336
+ --empty-title-size: 20px;
337
+ --empty-icon-size: 36px;
338
+ --toast-height: 40px;
339
+ --banner-radius: 12px;
340
+ --sheet-radius: 24px;
341
+ --menu-radius: 12px;
342
+ --message-font-size: 15px;
343
+ --message-action-size: 32px;
344
+ --icon-size-sm: 17px;
345
+ --icon-size-md: 20px;
346
+ --icon-size-lg: 24px;
347
+ }
348
+ }
349
+
350
+ [data-density="touch"] {
351
+ --type-display-size: 30px;
352
+ --type-display-line: 36px;
353
+ --type-display: 600 30px/36px var(--font-serif);
354
+ --type-title-size: 20px;
355
+ --type-title-line: 25px;
356
+ --type-title: 600 20px/25px var(--font-serif);
357
+ --type-headline-size: 17px;
358
+ --type-headline-line: 22px;
359
+ --type-headline: 600 17px/22px var(--font-sans);
360
+ --type-body-size: 17px;
361
+ --type-body-line: 23px;
362
+ --type-body: 400 17px/23px var(--font-sans);
363
+ --type-prose-size: 17px;
364
+ --type-prose-line: 26px;
365
+ --type-prose: 400 17px/26px var(--font-serif);
366
+ --type-callout-size: 15px;
367
+ --type-callout-line: 20px;
368
+ --type-callout: 400 15px/20px var(--font-sans);
369
+ --type-footnote-size: 13px;
370
+ --type-footnote-line: 17px;
371
+ --type-footnote: 400 13px/17px var(--font-sans);
372
+ --type-caption-size: 12px;
373
+ --type-caption-line: 15px;
374
+ --type-caption: 400 12px/15px var(--font-sans);
375
+ --type-code-size: 13px;
376
+ --type-code-line: 18px;
377
+ --type-code: 400 13px/18px var(--font-mono);
378
+ --gap-inline: 6px;
379
+ --gap-stack: 8px;
380
+ --gap-group: 20px;
381
+ --page-margin: 16px;
382
+ --hit-min: 44px;
383
+ --sidebar-width: 320px;
384
+ --toolbar-height: 44px;
385
+ --button-height-sm: 30px;
386
+ --button-height-md: 36px;
387
+ --button-height-lg: 46px;
388
+ --button-padding-x-sm: 12px;
389
+ --button-padding-x-md: 16px;
390
+ --button-padding-x-lg: 20px;
391
+ --button-font-size-sm: 13px;
392
+ --button-font-size-md: 15px;
393
+ --button-font-size-lg: 16px;
394
+ --button-font-weight: 600;
395
+ --button-radius: 999px;
396
+ --button-radius-sm: 999px;
397
+ --toolbar-title-size: 17px;
398
+ --panel-tab-height: 36px;
399
+ --glass-button-size: 44px;
400
+ --segmented-height: 28px;
401
+ --segmented-padding: 2px;
402
+ --segmented-padding-x: 16px;
403
+ --segmented-font-size: 14px;
404
+ --segmented-radius: 999px;
405
+ --field-height: 44px;
406
+ --field-padding-x: 12px;
407
+ --field-font-size: 17px;
408
+ --field-radius: 8px;
409
+ --composer-radius: 24px;
410
+ --composer-min-height: 44px;
411
+ --row-height: 44px;
412
+ --row-padding-x: 16px;
413
+ --row-radius: 10px;
414
+ --row-gap: 0px;
415
+ --row-icon-size: 28px;
416
+ --switch-width: 51px;
417
+ --switch-height: 31px;
418
+ --card-padding-x: 16px;
419
+ --card-padding-y: 14px;
420
+ --card-radius: 12px;
421
+ --card-gap: 12px;
422
+ --tag-height: 22px;
423
+ --tag-padding-x: 8px;
424
+ --tag-font-size: 12px;
425
+ --tag-radius: 999px;
426
+ --code-header-height: 36px;
427
+ --task-row-height: 44px;
428
+ --task-glyph-size: 20px;
429
+ --empty-title-size: 20px;
430
+ --empty-icon-size: 36px;
431
+ --toast-height: 40px;
432
+ --banner-radius: 12px;
433
+ --sheet-radius: 24px;
434
+ --menu-radius: 12px;
435
+ --message-font-size: 15px;
436
+ --message-action-size: 32px;
437
+ --icon-size-sm: 17px;
438
+ --icon-size-md: 20px;
439
+ --icon-size-lg: 24px;
440
+ }
441
+
442
+ [data-density="comfortable"] {
443
+ --type-display-size: 44px;
444
+ --type-display-line: 52px;
445
+ --type-display: 600 44px/52px var(--font-serif);
446
+ --type-title-size: 24px;
447
+ --type-title-line: 32px;
448
+ --type-title: 600 24px/32px var(--font-serif);
449
+ --type-headline-size: 16px;
450
+ --type-headline-line: 24px;
451
+ --type-headline: 600 16px/24px var(--font-sans);
452
+ --type-body-size: 15px;
453
+ --type-body-line: 24px;
454
+ --type-body: 400 15px/24px var(--font-sans);
455
+ --type-prose-size: 17px;
456
+ --type-prose-line: 28px;
457
+ --type-prose: 400 17px/28px var(--font-serif);
458
+ --type-callout-size: 14px;
459
+ --type-callout-line: 22px;
460
+ --type-callout: 400 14px/22px var(--font-sans);
461
+ --type-footnote-size: 13px;
462
+ --type-footnote-line: 20px;
463
+ --type-footnote: 400 13px/20px var(--font-sans);
464
+ --type-caption-size: 12px;
465
+ --type-caption-line: 16px;
466
+ --type-caption: 400 12px/16px var(--font-sans);
467
+ --type-code-size: 13px;
468
+ --type-code-line: 20px;
469
+ --type-code: 400 13px/20px var(--font-mono);
470
+ --gap-inline: 8px;
471
+ --gap-stack: 12px;
472
+ --gap-group: 48px;
473
+ --page-margin: 32px;
474
+ --hit-min: 24px;
475
+ --sidebar-width: 260px;
476
+ --toolbar-height: 52px;
477
+ --button-height-sm: 32px;
478
+ --button-height-md: 36px;
479
+ --button-height-lg: 44px;
480
+ --button-padding-x-sm: 14px;
481
+ --button-padding-x-md: 18px;
482
+ --button-padding-x-lg: 24px;
483
+ --button-font-size-sm: 13px;
484
+ --button-font-size-md: 14px;
485
+ --button-font-size-lg: 15px;
486
+ --button-font-weight: 500;
487
+ --button-radius: 999px;
488
+ --button-radius-sm: 999px;
489
+ --toolbar-title-size: 15px;
490
+ --panel-tab-height: 32px;
491
+ --glass-button-size: 36px;
492
+ --segmented-height: 28px;
493
+ --segmented-padding: 2px;
494
+ --segmented-padding-x: 16px;
495
+ --segmented-font-size: 14px;
496
+ --segmented-radius: 999px;
497
+ --field-height: 40px;
498
+ --field-padding-x: 14px;
499
+ --field-font-size: 15px;
500
+ --field-radius: 8px;
501
+ --composer-radius: 16px;
502
+ --composer-min-height: 48px;
503
+ --row-height: 40px;
504
+ --row-padding-x: 12px;
505
+ --row-radius: 8px;
506
+ --row-gap: 2px;
507
+ --row-icon-size: 24px;
508
+ --switch-width: 44px;
509
+ --switch-height: 24px;
510
+ --card-padding-x: 24px;
511
+ --card-padding-y: 24px;
512
+ --card-radius: 12px;
513
+ --card-gap: 16px;
514
+ --tag-height: 24px;
515
+ --tag-padding-x: 10px;
516
+ --tag-font-size: 12px;
517
+ --tag-radius: 999px;
518
+ --code-header-height: 36px;
519
+ --task-row-height: 32px;
520
+ --task-glyph-size: 18px;
521
+ --empty-title-size: 32px;
522
+ --empty-icon-size: 40px;
523
+ --toast-height: 40px;
524
+ --banner-radius: 12px;
525
+ --sheet-radius: 16px;
526
+ --menu-radius: 12px;
527
+ --message-font-size: 15px;
528
+ --message-action-size: 28px;
529
+ --icon-size-sm: 16px;
530
+ --icon-size-md: 18px;
531
+ --icon-size-lg: 24px;
532
+ }
533
+