@godxjp/ui 28.8.0 → 28.9.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 (49) hide show
  1. package/dist/contracts/measurement.json +1 -1
  2. package/dist/lib/variants.js +4 -1
  3. package/dist/props/vocabulary/layout.prop.d.ts +1 -1
  4. package/dist/styles/base.css +47 -14
  5. package/dist/styles/card-layout.css +2 -2
  6. package/dist/styles/chart-layout.css +6 -6
  7. package/dist/styles/control.css +10 -4
  8. package/dist/styles/data-display-layout.css +20 -5
  9. package/dist/styles/density.css +2 -0
  10. package/dist/styles/dialog-layout.css +4 -1
  11. package/dist/styles/focus-ring.css +4 -1
  12. package/dist/styles/layout.css +13 -3
  13. package/dist/styles/shell-layout.css +25 -21
  14. package/dist/styles/text-layout.css +94 -23
  15. package/dist/tokens/components/activity.css +13 -4
  16. package/dist/tokens/components/attachments.css +1 -1
  17. package/dist/tokens/components/badge.css +1 -1
  18. package/dist/tokens/components/card.css +28 -7
  19. package/dist/tokens/components/chart.css +4 -1
  20. package/dist/tokens/components/chat-composer.css +4 -1
  21. package/dist/tokens/components/control.css +69 -30
  22. package/dist/tokens/components/conversations.css +4 -1
  23. package/dist/tokens/components/data-display.css +42 -15
  24. package/dist/tokens/components/data-entry.css +8 -2
  25. package/dist/tokens/components/descriptions.css +1 -1
  26. package/dist/tokens/components/feedback.css +8 -5
  27. package/dist/tokens/components/float-button.css +8 -2
  28. package/dist/tokens/components/legal-document.css +12 -3
  29. package/dist/tokens/components/logo.css +15 -6
  30. package/dist/tokens/components/mega-menu.css +14 -5
  31. package/dist/tokens/components/navigation.css +37 -13
  32. package/dist/tokens/components/segmented.css +4 -1
  33. package/dist/tokens/components/separator.css +4 -1
  34. package/dist/tokens/components/shell.css +96 -31
  35. package/dist/tokens/components/table.css +11 -5
  36. package/dist/tokens/components/thought-chain.css +4 -1
  37. package/dist/tokens/components/toggle.css +4 -1
  38. package/dist/tokens/components/tree.css +1 -1
  39. package/dist/tokens/components/upload.css +21 -9
  40. package/dist/tokens/foundation.css +24 -30
  41. package/dist/tokens/semantic/layout.css +19 -5
  42. package/docs/TOKENS.md +16 -1
  43. package/docs/showcase/case4-login.tsx +10 -2
  44. package/docs/showcase/case5-shift-calendar.tsx +1 -1
  45. package/docs/showcase/case6-agency-handy.tsx +6 -6
  46. package/docs/showcase/futurelastic-web.tsx +7 -9
  47. package/docs/showcase/marketing-page.tsx +13 -13
  48. package/docs/showcase/table-expandable-rows.tsx +4 -1
  49. package/package.json +4 -3
@@ -7,7 +7,7 @@
7
7
  --pagination-size-width: 5.5rem;
8
8
 
9
9
  --pagination-page-padding-x: var(--space-1);
10
- --pagination-total-font-size: var(--font-size-sm);
10
+ --pagination-total-font-size: var(--font-size-sm, var(--font-size-base));
11
11
 
12
12
  --pagination-icon-size: var(--control-icon-size);
13
13
 
@@ -18,12 +18,18 @@
18
18
  --pagination-jumper-font-size: var(--pagination-total-font-size);
19
19
  --filter-bar-gap: var(--space-3);
20
20
  --filter-bar-padding-y: var(--space-2);
21
- --filter-label-font-size: var(--font-size-xs);
21
+ --filter-label-font-size: var(
22
+ --font-size-xs,
23
+ calc(var(--font-size-base) / var(--font-size-ratio))
24
+ );
22
25
  --filter-picker-width-sm: 11rem;
23
26
  --filter-picker-width-md: 14rem;
24
27
  --steps-inline-gap: var(--space-2);
25
28
  --steps-inline-item-gap: var(--space-1);
26
- --steps-inline-font-size: var(--font-size-xs);
29
+ --steps-inline-font-size: var(
30
+ --font-size-xs,
31
+ calc(var(--font-size-base) / var(--font-size-ratio))
32
+ );
27
33
  --steps-inline-separator-size: var(--control-icon-size-sm);
28
34
 
29
35
  --steps-inline-index-font-weight: var(--font-weight-bold);
@@ -33,11 +39,17 @@
33
39
  --app-setting-picker-compact-control-height: var(--control-height-sm);
34
40
  --app-setting-picker-compact-padding-x: var(--space-2);
35
41
  --app-setting-picker-compact-gap: var(--space-1);
36
- --app-setting-picker-compact-font-size: var(--font-size-xs);
37
- --breadcrumb-font-size: var(--font-size-xs);
42
+ --app-setting-picker-compact-font-size: var(
43
+ --font-size-xs,
44
+ calc(var(--font-size-base) / var(--font-size-ratio))
45
+ );
46
+ --breadcrumb-font-size: var(--font-size-xs, calc(var(--font-size-base) / var(--font-size-ratio)));
38
47
 
39
48
  --breadcrumb-menu-trigger-gap: var(--space-inline-xs);
40
- --menu-shortcut-font-size: var(--font-size-xs);
49
+ --menu-shortcut-font-size: var(
50
+ --font-size-xs,
51
+ calc(var(--font-size-base) / var(--font-size-ratio))
52
+ );
41
53
  --tabs-list-max-inline-size: 100%;
42
54
  --tabs-list-overflow: auto;
43
55
 
@@ -64,9 +76,15 @@
64
76
  --tabs-trigger-height-sm: var(--band-height-sm);
65
77
  --tabs-trigger-height-md: var(--band-height-md);
66
78
  --tabs-trigger-height-lg: var(--band-height-lg);
67
- --tabs-trigger-font-size-sm: var(--font-size-xs);
79
+ --tabs-trigger-font-size-sm: var(
80
+ --font-size-xs,
81
+ calc(var(--font-size-base) / var(--font-size-ratio))
82
+ );
68
83
  --tabs-trigger-font-size-md: var(--font-size-base);
69
- --tabs-trigger-font-size-lg: var(--font-size-lg);
84
+ --tabs-trigger-font-size-lg: var(
85
+ --font-size-lg,
86
+ calc(var(--font-size-base) * var(--font-size-ratio) * var(--font-size-ratio))
87
+ );
70
88
  --tabs-trigger-padding-x-sm: var(--space-2);
71
89
  --tabs-trigger-padding-x-md: var(--space-3);
72
90
  --tabs-trigger-padding-x-lg: var(--space-4);
@@ -86,7 +104,7 @@
86
104
  --tabs-count-min-width: var(--space-4);
87
105
  --tabs-count-space-inline: var(--space-1);
88
106
  --tabs-count-gap: var(--space-1);
89
- --tabs-count-font-size: var(--font-size-xs);
107
+ --tabs-count-font-size: var(--font-size-xs, calc(var(--font-size-base) / var(--font-size-ratio)));
90
108
  --tabs-count-radius: var(--radius-pill);
91
109
  --tabs-count-background: initial;
92
110
 
@@ -153,12 +171,18 @@
153
171
  --steps-dot-size: 0.625rem;
154
172
  --steps-dot-process-ring-width: var(--stroke-xl);
155
173
  --steps-marker-border-width: var(--stroke-md);
156
- --steps-marker-font-size: var(--font-size-sm);
174
+ --steps-marker-font-size: var(--font-size-sm, var(--font-size-base));
157
175
  --steps-marker-icon-size: var(--icon-size-md);
158
176
  --steps-wait-icon-size: var(--icon-size-xs);
159
- --steps-title-font-size: var(--font-size-sm);
160
- --steps-title-font-size-compact: var(--font-size-xs);
161
- --steps-subtitle-font-size: var(--font-size-xs);
177
+ --steps-title-font-size: var(--font-size-sm, var(--font-size-base));
178
+ --steps-title-font-size-compact: var(
179
+ --font-size-xs,
180
+ calc(var(--font-size-base) / var(--font-size-ratio))
181
+ );
182
+ --steps-subtitle-font-size: var(
183
+ --font-size-xs,
184
+ calc(var(--font-size-base) / var(--font-size-ratio))
185
+ );
162
186
 
163
187
  --steps-vertical-space-gap: var(--space-3);
164
188
  --steps-vertical-space-block-end: var(--space-8);
@@ -11,7 +11,10 @@
11
11
 
12
12
  --segmented-item-padding-inline: calc(var(--control-padding-x) - 1px);
13
13
 
14
- --segmented-xs-font-size: var(--font-size-xs);
14
+ --segmented-xs-font-size: var(
15
+ --font-size-xs,
16
+ calc(var(--font-size-base) / var(--font-size-ratio))
17
+ );
15
18
 
16
19
  --segmented-xs-item-padding-inline: calc(var(--control-padding-x-compact) - 1px);
17
20
 
@@ -9,7 +9,10 @@
9
9
 
10
10
  --separator-label-inset: initial;
11
11
 
12
- --separator-label-font-size: var(--font-size-xs);
12
+ --separator-label-font-size: var(
13
+ --font-size-xs,
14
+ calc(var(--font-size-base) / var(--font-size-ratio))
15
+ );
13
16
  --separator-label-line-height: var(--line-height-normal);
14
17
  --separator-label-font-weight: var(--font-weight-medium);
15
18
 
@@ -2,9 +2,18 @@
2
2
 
3
3
  :root {
4
4
  --responsive-grid-column-width: 20rem;
5
- --sidebar-section-label-font-size: var(--font-size-2xs);
6
- --sidebar-product-tenant-font-size: var(--font-size-2xs);
7
- --sidebar-badge-font-size: var(--font-size-2xs);
5
+ --sidebar-section-label-font-size: var(
6
+ --font-size-2xs,
7
+ calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
8
+ );
9
+ --sidebar-product-tenant-font-size: var(
10
+ --font-size-2xs,
11
+ calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
12
+ );
13
+ --sidebar-badge-font-size: var(
14
+ --font-size-2xs,
15
+ calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
16
+ );
8
17
 
9
18
  --sidebar-badge-background: initial;
10
19
  --sidebar-badge-foreground: initial;
@@ -23,15 +32,39 @@
23
32
 
24
33
  --topbar-icon-focus-ring-alpha: 1;
25
34
 
26
- --sidebar-user-role-font-size: var(--font-size-2xs);
35
+ --sidebar-user-role-font-size: var(
36
+ --font-size-2xs,
37
+ calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
38
+ );
27
39
  --org-switcher-meta-foreground: var(--muted-foreground);
28
- --sidebar-nav-sub-font-size: var(--font-size-xs);
29
- --sidebar-flyout-title-font-size: var(--font-size-xs);
30
- --topbar-chip-icon-font-size: var(--font-size-2xs);
31
- --kbd-font-size: var(--font-size-2xs);
32
- --sidebar-logo-mark-font-size: var(--font-size-xs);
33
- --sidebar-avatar-font-size: var(--font-size-2xs);
34
- --sidebar-user-name-font-size: var(--font-size-xs);
40
+ --sidebar-nav-sub-font-size: var(
41
+ --font-size-xs,
42
+ calc(var(--font-size-base) / var(--font-size-ratio))
43
+ );
44
+ --sidebar-flyout-title-font-size: var(
45
+ --font-size-xs,
46
+ calc(var(--font-size-base) / var(--font-size-ratio))
47
+ );
48
+ --topbar-chip-icon-font-size: var(
49
+ --font-size-2xs,
50
+ calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
51
+ );
52
+ --kbd-font-size: var(
53
+ --font-size-2xs,
54
+ calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
55
+ );
56
+ --sidebar-logo-mark-font-size: var(
57
+ --font-size-xs,
58
+ calc(var(--font-size-base) / var(--font-size-ratio))
59
+ );
60
+ --sidebar-avatar-font-size: var(
61
+ --font-size-2xs,
62
+ calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
63
+ );
64
+ --sidebar-user-name-font-size: var(
65
+ --font-size-xs,
66
+ calc(var(--font-size-base) / var(--font-size-ratio))
67
+ );
35
68
 
36
69
  --sidebar-gradient: none;
37
70
  --topbar-gradient: none;
@@ -78,7 +111,10 @@
78
111
  --sidebar-brand-mark-size: 1.375rem;
79
112
  --sidebar-nav-item-height: var(--band-height-md);
80
113
 
81
- --sidebar-nav-item-font-size: var(--font-size-xs);
114
+ --sidebar-nav-item-font-size: var(
115
+ --font-size-xs,
116
+ calc(var(--font-size-base) / var(--font-size-ratio))
117
+ );
82
118
 
83
119
  --sidebar-nav-item-line-height: 1.5;
84
120
 
@@ -124,7 +160,10 @@
124
160
  --topbar-item-badge-offset-inline: var(--space-1);
125
161
  --topbar-item-badge-size: 1rem;
126
162
  --topbar-item-badge-padding-inline: var(--space-1);
127
- --topbar-item-badge-font-size: var(--font-size-2xs);
163
+ --topbar-item-badge-font-size: var(
164
+ --font-size-2xs,
165
+ calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
166
+ );
128
167
  --topbar-item-badge-background: initial;
129
168
  --topbar-item-badge-foreground: initial;
130
169
  --topbar-item-badge-destructive-background: initial;
@@ -143,7 +182,10 @@
143
182
  --org-switcher-list-offset: 0px;
144
183
 
145
184
  --org-switcher-legend-space-gap: var(--space-4);
146
- --org-switcher-legend-font-size: var(--font-size-2xs);
185
+ --org-switcher-legend-font-size: var(
186
+ --font-size-2xs,
187
+ calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
188
+ );
147
189
  --org-switcher-hint-space-gap: var(--space-1);
148
190
 
149
191
  --org-switcher-dialog-width: 26rem;
@@ -172,14 +214,20 @@
172
214
  --app-launcher-mark-radius: var(--radius);
173
215
  --app-launcher-mark-background: var(--secondary);
174
216
  --app-launcher-mark-foreground: var(--secondary-foreground);
175
- --app-launcher-mark-font-size: var(--font-size-sm);
176
- --app-launcher-name-font-size: var(--font-size-2xs);
177
- --app-launcher-group-label-font-size: var(--font-size-2xs);
217
+ --app-launcher-mark-font-size: var(--font-size-sm, var(--font-size-base));
218
+ --app-launcher-name-font-size: var(
219
+ --font-size-2xs,
220
+ calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
221
+ );
222
+ --app-launcher-group-label-font-size: var(
223
+ --font-size-2xs,
224
+ calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
225
+ );
178
226
  --app-launcher-group-label-color: var(--muted-foreground);
179
227
  --app-launcher-state-min-height: 8rem;
180
228
 
181
229
  --app-launcher-launchpad-backdrop-background: initial;
182
- --app-launcher-launchpad-backdrop-blur-size: 16px;
230
+ --app-launcher-launchpad-backdrop-blur-size: var(--blur-lg);
183
231
  --app-launcher-launchpad-backdrop-alpha: 55%;
184
232
 
185
233
  --app-launcher-launchpad-backdrop-color-saturate: 180%;
@@ -201,20 +249,22 @@
201
249
  --app-launcher-launchpad-mark-size: 4rem;
202
250
  --app-launcher-launchpad-mark-radius: var(--radius-lg);
203
251
 
204
- --app-launcher-launchpad-mark-background: color-mix(
205
- in srgb,
206
- hsl(var(--card)) 78%,
207
- transparent
208
- );
252
+ --app-launcher-launchpad-mark-background: color-mix(in srgb, hsl(var(--card)) 78%, transparent);
209
253
  --app-launcher-launchpad-mark-border-color: color-mix(
210
254
  in srgb,
211
255
  hsl(var(--foreground)) 14%,
212
256
  transparent
213
257
  );
214
- --app-launcher-launchpad-mark-font-size: var(--font-size-lg);
258
+ --app-launcher-launchpad-mark-font-size: var(
259
+ --font-size-lg,
260
+ calc(var(--font-size-base) * var(--font-size-ratio) * var(--font-size-ratio))
261
+ );
215
262
  --app-launcher-launchpad-mark-shadow: var(--shadow-lg);
216
- --app-launcher-launchpad-name-font-size: var(--font-size-sm);
217
- --app-launcher-launchpad-title-font-size: var(--font-size-2xs);
263
+ --app-launcher-launchpad-name-font-size: var(--font-size-sm, var(--font-size-base));
264
+ --app-launcher-launchpad-title-font-size: var(
265
+ --font-size-2xs,
266
+ calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
267
+ );
218
268
  --app-launcher-launchpad-title-letter-spacing: 0.08em;
219
269
  --app-launcher-launchpad-close-space-padding: var(--space-2);
220
270
 
@@ -227,7 +277,13 @@
227
277
  --sidebar-item-active-background-alpha: 12%;
228
278
 
229
279
  --auth-shell-control-height: var(--control-height-comfortable);
230
- --auth-shell-heading-size: var(--font-size-2xl);
280
+ --auth-shell-heading-size: var(
281
+ --font-size-2xl,
282
+ calc(
283
+ var(--font-size-base) * var(--font-size-ratio) * var(--font-size-ratio) *
284
+ var(--font-size-ratio) * var(--font-size-ratio)
285
+ )
286
+ );
231
287
  --auth-shell-card-max-width: 24rem;
232
288
  --auth-shell-bar-padding: var(--space-5) var(--space-6);
233
289
  --auth-shell-main-padding: var(--space-6);
@@ -296,7 +352,10 @@
296
352
  --auth-shell-registration-identity-slot-block-size: 7rem;
297
353
 
298
354
  --auth-shell-divider-gap: 0.625rem;
299
- --auth-shell-divider-label-font-size: var(--font-size-2xs);
355
+ --auth-shell-divider-label-font-size: var(
356
+ --font-size-2xs,
357
+ calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
358
+ );
300
359
  --auth-shell-divider-label-line-height: calc(19 / 11);
301
360
  --auth-shell-divider-rule-color: var(--border);
302
361
  --auth-shell-divider-label-color: var(--muted-foreground);
@@ -310,10 +369,13 @@
310
369
  --auth-account-summary-identity-min-width: 12rem;
311
370
  --auth-account-summary-avatar-size: var(--control-height-sm);
312
371
  --auth-account-summary-avatar-glyph-size: var(--control-icon-size-sm);
313
- --auth-account-summary-email-font-size: var(--font-size-sm);
372
+ --auth-account-summary-email-font-size: var(--font-size-sm, var(--font-size-base));
314
373
  --auth-footer-content-gap: 0.375rem;
315
374
 
316
- --auth-footer-text-font-size: var(--font-size-2xs);
375
+ --auth-footer-text-font-size: var(
376
+ --font-size-2xs,
377
+ calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
378
+ );
317
379
 
318
380
  --auth-footer-target-min-size: var(--touch-target-min);
319
381
  --auth-stack-gap: var(--space-3);
@@ -350,7 +412,10 @@
350
412
  --centered-shell-landing-card-shadow: none;
351
413
 
352
414
  --centered-shell-landing-heading-size: var(--font-size-display);
353
- --centered-shell-landing-heading-size-compact: var(--font-size-3xl);
415
+ --centered-shell-landing-heading-size-compact: var(
416
+ --font-size-3xl,
417
+ calc(var(--font-size-display) / var(--font-size-display-ratio) / var(--font-size-display-ratio))
418
+ );
354
419
 
355
420
  --centered-shell-landing-background: initial;
356
421
  }
@@ -15,7 +15,7 @@
15
15
  --table-pagination-padding-x: initial;
16
16
 
17
17
  --table-surface-min-inline-size: 640px;
18
- --table-head-font-size: var(--font-size-xs);
18
+ --table-head-font-size: var(--font-size-xs, calc(var(--font-size-base) / var(--font-size-ratio)));
19
19
 
20
20
  --table-head-font-weight: var(--font-weight-medium);
21
21
 
@@ -59,7 +59,10 @@
59
59
  --table-action-collection-meta-width-floor: 5rem;
60
60
 
61
61
  --table-action-collection-flex-width-floor: 5rem;
62
- --table-action-collection-font-size-compact: var(--font-size-xs);
62
+ --table-action-collection-font-size-compact: var(
63
+ --font-size-xs,
64
+ calc(var(--font-size-base) / var(--font-size-ratio))
65
+ );
63
66
  --table-action-collection-cell-space-x-compact: var(--space-2);
64
67
  --table-action-collection-cell-padding-y-compact: var(--space-2);
65
68
  --table-action-collection-row-height-compact: var(--table-row-height-compact);
@@ -72,13 +75,16 @@
72
75
  --table-stacked-collection-card-padding-x: var(--space-inline-md);
73
76
  --table-stacked-collection-card-gap: var(--space-stack-sm);
74
77
  --table-stacked-collection-cell-padding-y: var(--space-stack-xs);
75
- --table-stacked-collection-label-font-size: var(--font-size-xs);
78
+ --table-stacked-collection-label-font-size: var(
79
+ --font-size-xs,
80
+ calc(var(--font-size-base) / var(--font-size-ratio))
81
+ );
76
82
 
77
83
  --table-select-column-width: 2.5rem;
78
84
  --table-sort-icon-size: var(--icon-size-xs);
79
85
  --table-toolbar-icon-size: var(--icon-size-md);
80
86
  --table-pagination-icon-size: var(--icon-size-md);
81
- --table-pagination-font-size: var(--font-size-sm);
87
+ --table-pagination-font-size: var(--font-size-sm, var(--font-size-base));
82
88
 
83
89
  --table-skeleton-check-size: 1rem;
84
90
 
@@ -86,7 +92,7 @@
86
92
  --table-skeleton-line-height: var(--table-skeleton-line-block-size);
87
93
  --table-skeleton-radius: var(--radius-sm);
88
94
 
89
- --table-font-size: var(--font-size-sm);
95
+ --table-font-size: var(--font-size-sm, var(--font-size-base));
90
96
 
91
97
  --table-line-height: calc(1.25 / 0.875);
92
98
 
@@ -7,7 +7,10 @@
7
7
  --thought-chain-body-gap: var(--space-1);
8
8
 
9
9
  --thought-chain-icon-size: var(--band-height-sm);
10
- --thought-chain-icon-font-size: var(--font-size-xs);
10
+ --thought-chain-icon-font-size: var(
11
+ --font-size-xs,
12
+ calc(var(--font-size-base) / var(--font-size-ratio))
13
+ );
11
14
  --thought-chain-icon-radius: var(--radius-pill);
12
15
 
13
16
  --thought-chain-icon-background: initial;
@@ -3,7 +3,10 @@
3
3
 
4
4
  --toggle-count-min-width: var(--space-4);
5
5
  --toggle-count-space-inline: var(--space-1);
6
- --toggle-count-font-size: var(--font-size-xs);
6
+ --toggle-count-font-size: var(
7
+ --font-size-xs,
8
+ calc(var(--font-size-base) / var(--font-size-ratio))
9
+ );
7
10
  --toggle-count-radius: var(--radius-pill);
8
11
 
9
12
  --toggle-count-gap: 0;
@@ -9,7 +9,7 @@
9
9
  --tree-node-padding-inline: var(--space-2);
10
10
  --tree-node-gap: var(--space-2);
11
11
  --tree-node-radius: var(--radius-sm);
12
- --tree-node-font-size: var(--font-size-sm);
12
+ --tree-node-font-size: var(--font-size-sm, var(--font-size-base));
13
13
 
14
14
  --tree-switcher-size: 1.25rem;
15
15
 
@@ -7,17 +7,26 @@
7
7
  --upload-dropzone-border-width: var(--stroke-md);
8
8
  --upload-dropzone-icon-size: var(--icon-size-3xl);
9
9
  --upload-dropzone-hint-space-block-start: var(--space-3);
10
- --upload-dropzone-hint-font-size: var(--font-size-sm);
10
+ --upload-dropzone-hint-font-size: var(--font-size-sm, var(--font-size-base));
11
11
  --upload-dropzone-meta-space-block-start: var(--space-1);
12
- --upload-dropzone-meta-font-size: var(--font-size-xs);
12
+ --upload-dropzone-meta-font-size: var(
13
+ --font-size-xs,
14
+ calc(var(--font-size-base) / var(--font-size-ratio))
15
+ );
13
16
 
14
17
  --upload-tile-size: 6rem;
15
18
  --upload-tile-radius: var(--radius-md);
16
19
  --upload-tile-space-gap: var(--space-3);
17
20
  --upload-tile-icon-size: var(--icon-size-xl);
18
21
  --upload-tile-label-space-block-start: var(--space-1);
19
- --upload-tile-label-font-size: var(--font-size-xs);
20
- --upload-tile-overlay-font-size: var(--font-size-xs);
22
+ --upload-tile-label-font-size: var(
23
+ --font-size-xs,
24
+ calc(var(--font-size-base) / var(--font-size-ratio))
25
+ );
26
+ --upload-tile-overlay-font-size: var(
27
+ --font-size-xs,
28
+ calc(var(--font-size-base) / var(--font-size-ratio))
29
+ );
21
30
 
22
31
  --upload-overlay-background: initial;
23
32
  --upload-overlay-alpha: 70%;
@@ -33,14 +42,17 @@
33
42
 
34
43
  --upload-picture-icon-size: var(--icon-size-2xl);
35
44
  --upload-picture-empty-label-space-block-start: var(--space-2);
36
- --upload-picture-empty-label-font-size: var(--font-size-sm);
37
- --upload-picture-overlay-font-size: var(--font-size-sm);
45
+ --upload-picture-empty-label-font-size: var(--font-size-sm, var(--font-size-base));
46
+ --upload-picture-overlay-font-size: var(--font-size-sm, var(--font-size-base));
38
47
 
39
48
  --upload-picture-badge-radius: var(--radius-md);
40
49
  --upload-picture-badge-offset: var(--space-2);
41
50
  --upload-picture-badge-space-inline: var(--space-2);
42
51
  --upload-picture-badge-space-block: 0.125rem;
43
- --upload-picture-badge-font-size: var(--font-size-xs);
52
+ --upload-picture-badge-font-size: var(
53
+ --font-size-xs,
54
+ calc(var(--font-size-base) / var(--font-size-ratio))
55
+ );
44
56
 
45
57
  --upload-avatar-size: 6rem;
46
58
 
@@ -57,14 +69,14 @@
57
69
  --upload-draft-space-block: var(--space-2);
58
70
  --upload-draft-space-gap: var(--space-2);
59
71
  --upload-draft-radius: var(--radius-md);
60
- --upload-draft-font-size: var(--font-size-sm);
72
+ --upload-draft-font-size: var(--font-size-sm, var(--font-size-base));
61
73
  --upload-draft-icon-size: var(--icon-size-sm);
62
74
 
63
75
  --upload-row-space-inline: var(--space-3);
64
76
  --upload-row-space-block: var(--space-2);
65
77
  --upload-row-space-gap: var(--space-3);
66
78
  --upload-row-radius: var(--radius-md);
67
- --upload-row-font-size: var(--font-size-sm);
79
+ --upload-row-font-size: var(--font-size-sm, var(--font-size-base));
68
80
  --upload-row-icon-size: var(--icon-size-md);
69
81
 
70
82
  --upload-crop-dialog-max-width: 24rem;
@@ -146,37 +146,27 @@
146
146
 
147
147
  --font-size-base: 0.875rem;
148
148
  --font-size-ratio: 1.1227;
149
- --font-size-2xs: calc(
150
- var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio)
151
- );
152
- --font-size-xs: calc(var(--font-size-base) / var(--font-size-ratio));
153
- --font-size-sm: var(--font-size-base);
154
- --font-size-lg: calc(
155
- var(--font-size-base) * var(--font-size-ratio) * var(--font-size-ratio)
156
- );
157
- --font-size-xl: calc(var(--font-size-lg) * var(--font-size-ratio));
158
- --font-size-2xl: calc(var(--font-size-xl) * var(--font-size-ratio));
159
-
160
- --font-size-display: 3.375rem;
149
+
150
+ --font-size-2xs: initial;
151
+ --font-size-xs: initial;
152
+ --font-size-sm: initial;
153
+ --font-size-lg: initial;
154
+ --font-size-xl: initial;
155
+ --font-size-2xl: initial;
156
+
157
+ --font-size-display: clamp(2rem, 1.5rem + 2.5vw, 3.375rem);
161
158
  --font-size-display-ratio: 1.28;
162
- --font-size-3xl: calc(
163
- var(--font-size-display) / var(--font-size-display-ratio) / var(--font-size-display-ratio)
164
- );
165
- --font-size-4xl: calc(
166
- var(--font-size-display) / var(--font-size-display-ratio)
167
- );
168
- --font-size-5xl: var(--font-size-display);
169
-
170
- --heading-h1: calc(
171
- var(--font-size-base) * var(--font-size-ratio) * var(--font-size-ratio) * var(--font-size-ratio)
172
- );
173
- --heading-h2: calc(
174
- var(--font-size-base) * var(--font-size-ratio) * var(--font-size-ratio)
175
- );
176
- --heading-h3: var(--font-size-base);
177
- --heading-h4: var(--font-size-xs);
178
-
179
- --heading-h5: var(--font-size-2xs);
159
+
160
+ --font-size-3xl: initial;
161
+ --font-size-4xl: initial;
162
+ --font-size-5xl: initial;
163
+
164
+ --heading-h1: initial;
165
+ --heading-h2: initial;
166
+ --heading-h3: initial;
167
+ --heading-h4: initial;
168
+
169
+ --heading-h5: initial;
180
170
 
181
171
  --font-weight-normal: 400;
182
172
  --font-weight-medium: 500;
@@ -225,6 +215,10 @@
225
215
  --stroke-xl: 4px;
226
216
  --stroke-2xl: 6px;
227
217
 
218
+ --blur-sm: 4px;
219
+ --blur-md: 8px;
220
+ --blur-lg: 16px;
221
+
228
222
  --band-height-xs: 1.5rem;
229
223
  --band-height-sm: 1.75rem;
230
224
  --band-height-md: 2rem;
@@ -18,6 +18,8 @@
18
18
  --space-inline-md: var(--space-3);
19
19
  --space-inline-lg: var(--space-4);
20
20
 
21
+ --space-inline-xl: var(--space-6);
22
+
21
23
  --overlay-z-index: 50;
22
24
 
23
25
  --sticky-z-index: 20;
@@ -71,14 +73,26 @@
71
73
 
72
74
  --page-measure-wide: 72rem;
73
75
 
74
- --page-title-font-size: var(--heading-h1);
75
- --page-title-font-size-compact: var(--heading-h2);
76
+ --page-title-font-size: var(
77
+ --heading-h1,
78
+ calc(
79
+ var(--font-size-base) * var(--font-size-ratio) * var(--font-size-ratio) *
80
+ var(--font-size-ratio)
81
+ )
82
+ );
83
+ --page-title-font-size-compact: var(
84
+ --heading-h2,
85
+ calc(var(--font-size-base) * var(--font-size-ratio) * var(--font-size-ratio))
86
+ );
76
87
  --page-subtitle-font-size: var(--font-size-base);
77
- --page-subtitle-font-size-compact: var(--font-size-sm);
88
+ --page-subtitle-font-size-compact: var(--font-size-sm, var(--font-size-base));
78
89
 
79
- --page-title-font-size-chrome: var(--heading-h3);
90
+ --page-title-font-size-chrome: var(--heading-h3, var(--font-size-base));
80
91
 
81
- --page-subtitle-font-size-chrome: var(--font-size-2xs);
92
+ --page-subtitle-font-size-chrome: var(
93
+ --font-size-2xs,
94
+ calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio))
95
+ );
82
96
 
83
97
  --page-pad-block-start-chrome: 0px;
84
98
 
package/docs/TOKENS.md CHANGED
@@ -297,7 +297,22 @@ Instead, declare the knob `initial` (a real, catalogued, guaranteed-invalid decl
297
297
  }
298
298
  ```
299
299
 
300
- The same rule applies to `@theme inline` (utilities re-resolve scoped roles) and to any `:root`-declared **composite** that wraps a role (e.g. a focus-ring box-shadow): read the role **directly** at the call site, never through a frozen `:root` intermediate. Pure non-colour knobs (spacing, radius, font-size) don't need this — they aren't scope-retinted — but any colour/fill/ border/shadow knob whose default is a role token does.
300
+ The same rule applies to `@theme inline` (utilities re-resolve scoped roles) and to any `:root`-declared **composite** that wraps a role (e.g. a focus-ring box-shadow): read the role **directly** at the call site, never through a frozen `:root` intermediate. Pure non-colour knobs (spacing, radius, font-size) don't need this **as long as nothing re-scopes what they read** — see the two paragraphs below, which is where that qualifier cost a release.
301
+
302
+ **A DERIVED TIER FREEZES ON ITS OWN SEED — the `--font-size-*` ramp (gh#834).** The type scale is one base and one ratio, and every step used to be written `--font-size-5xl: var(--font-size-display)` / `--font-size-lg: calc(var(--font-size-base) * …)` on `:root`. Those substitute on `<html>`, so a `[data-tenant]` that re-seeds the base — the route level 3 of `docs/CUSTOMER-THEMING.md` documents, and which level 1 calls a seed — moved `text-base` and **nothing else**. Measured with `--font-size-base: 24px; --font-size-display: 80px` on a scope: 2xs/xs/sm/lg/xl/2xl/3xl/4xl/5xl all sat exactly where `:root` had left them, and a showcase whose comment read "80px hero via text-5xl" painted 54.
303
+
304
+ So every **derived** step is now an `initial` knob and the formula lives at the call site, spelled in terms of the un-derived knobs only (`--font-size-base`, `--font-size-ratio`, `--font-size-display`, `--font-size-display-ratio`) — an `initial` knob cannot be chained through, so `xl` reads `base × ratio³` rather than `lg × ratio`:
305
+
306
+ ```css
307
+ :root {
308
+ --font-size-5xl: initial;
309
+ } /* documented default = var(--font-size-display) */
310
+ [data-slot="text"][data-size="5xl"] {
311
+ font-size: var(--font-size-5xl, var(--font-size-display));
312
+ }
313
+ ```
314
+
315
+ **Every reader must carry the fallback**: a bare `var(--font-size-xs)` on an `initial` knob resolves to nothing, and the failure is silent and total. `check:frame-token-scope` is the gate that measures both halves — it fails on a step that stops following a scoped seed, and on a bare read of an empty knob.
301
316
 
302
317
  **The same freeze bites any knob whose default is a RE-SCOPED tier, colour or not.** `--control-height` is re-scoped by `.ui-auth-shell` (44px comfortable) and by `.ui-auth-shell[data-variant="canonical"]` (36px), so a knob that mirrors it must follow the same `initial` + call-site-fallback shape:
303
318
 
@@ -283,11 +283,19 @@ export default function LoginShowcase() {
283
283
 
284
284
  <Text as="p" size="2xs" tone="muted" align="center" className="leading-relaxed">
285
285
  ログインすると{" "}
286
- <Button variant="link" size="sm" className="text-[length:var(--font-size-2xs)]">
286
+ <Button
287
+ variant="link"
288
+ size="sm"
289
+ className="text-[length:var(--font-size-2xs, calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio)))]"
290
+ >
287
291
  利用規約
288
292
  </Button>{" "}
289
293
  ·{" "}
290
- <Button variant="link" size="sm" className="text-[length:var(--font-size-2xs)]">
294
+ <Button
295
+ variant="link"
296
+ size="sm"
297
+ className="text-[length:var(--font-size-2xs, calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio)))]"
298
+ >
291
299
  プライバシーポリシー
292
300
  </Button>{" "}
293
301
  に同意したものとみなされます。
@@ -588,7 +588,7 @@ function MonthGrid({ onPick }: { onPick: (d: DayCell) => void }) {
588
588
  tone="destructive"
589
589
  variant="outline"
590
590
  shape="sharp"
591
- className="text-[length:var(--font-size-2xs)]"
591
+ className="text-[length:var(--font-size-2xs, calc(var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio)))]"
592
592
  >
593
593
  祝
594
594
  </Badge>