@godxjp/ui 28.7.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.
- package/dist/components/data-display/index.d.ts +2 -0
- package/dist/components/data-display/index.js +2 -0
- package/dist/components/data-display/marquee.d.ts +16 -0
- package/dist/components/data-display/marquee.js +155 -0
- package/dist/components/general/reveal.d.ts +23 -2
- package/dist/components/general/reveal.js +37 -7
- package/dist/components/general/typography.d.ts +4 -1
- package/dist/components/general/typography.js +14 -1
- package/dist/components/layout/affix.d.ts +86 -0
- package/dist/components/layout/affix.js +187 -0
- package/dist/components/layout/index.d.ts +4 -0
- package/dist/components/layout/index.js +4 -0
- package/dist/components/layout/legal-document-shell.js +4 -3
- package/dist/components/layout/masonry.d.ts +74 -0
- package/dist/components/layout/masonry.js +214 -0
- package/dist/components/layout/page-container.js +5 -20
- package/dist/components/navigation/anchor.d.ts +64 -0
- package/dist/components/navigation/anchor.js +284 -0
- package/dist/components/navigation/index.d.ts +4 -0
- package/dist/components/navigation/index.js +4 -0
- package/dist/components/navigation/mega-menu.d.ts +21 -0
- package/dist/components/navigation/mega-menu.js +526 -0
- package/dist/contracts/measurement.json +1 -1
- package/dist/i18n/messages/en.json +517 -0
- package/dist/i18n/messages/ja.json +513 -0
- package/dist/i18n/messages/vi.json +513 -0
- package/dist/lib/hooks.d.ts +68 -0
- package/dist/lib/hooks.js +52 -0
- package/dist/lib/platform.d.ts +14 -0
- package/dist/lib/platform.js +10 -1
- package/dist/lib/utils.d.ts +1 -1
- package/dist/lib/utils.js +3 -2
- package/dist/lib/variants.js +4 -1
- package/dist/props/components/data-display.prop.d.ts +95 -1
- package/dist/props/components/general.prop.d.ts +47 -3
- package/dist/props/components/layout.prop.d.ts +194 -0
- package/dist/props/components/navigation.prop.d.ts +263 -0
- package/dist/props/registry.d.ts +359 -4
- package/dist/props/registry.js +472 -3
- package/dist/props/vocabulary/index.d.ts +1 -1
- package/dist/props/vocabulary/interaction.prop.d.ts +39 -2
- package/dist/props/vocabulary/layout.prop.d.ts +1 -1
- package/dist/styles/base.css +47 -14
- package/dist/styles/card-layout.css +2 -2
- package/dist/styles/chart-layout.css +6 -6
- package/dist/styles/control.css +15 -10
- package/dist/styles/data-display-layout.css +22 -6
- package/dist/styles/density.css +6 -0
- package/dist/styles/dialog-layout.css +4 -1
- package/dist/styles/focus-ring.css +4 -1
- package/dist/styles/layout.css +92 -3
- package/dist/styles/motion.css +121 -1
- package/dist/styles/navigation-layout.css +397 -1
- package/dist/styles/shell-layout.css +28 -21
- package/dist/styles/text-layout.css +134 -15
- package/dist/tokens/base.css +5 -0
- package/dist/tokens/components/activity.css +13 -4
- package/dist/tokens/components/affix.css +7 -0
- package/dist/tokens/components/anchor.css +17 -0
- package/dist/tokens/components/attachments.css +1 -1
- package/dist/tokens/components/badge.css +1 -1
- package/dist/tokens/components/card.css +28 -7
- package/dist/tokens/components/chart.css +4 -1
- package/dist/tokens/components/chat-composer.css +4 -1
- package/dist/tokens/components/control.css +72 -33
- package/dist/tokens/components/conversations.css +4 -1
- package/dist/tokens/components/data-display.css +42 -15
- package/dist/tokens/components/data-entry.css +8 -2
- package/dist/tokens/components/descriptions.css +1 -1
- package/dist/tokens/components/feedback.css +8 -5
- package/dist/tokens/components/float-button.css +8 -2
- package/dist/tokens/components/form.css +1 -1
- package/dist/tokens/components/legal-document.css +12 -3
- package/dist/tokens/components/logo.css +15 -6
- package/dist/tokens/components/marquee.css +7 -0
- package/dist/tokens/components/masonry.css +6 -0
- package/dist/tokens/components/mega-menu.css +71 -0
- package/dist/tokens/components/navigation.css +37 -13
- package/dist/tokens/components/segmented.css +4 -1
- package/dist/tokens/components/separator.css +4 -1
- package/dist/tokens/components/shell.css +99 -31
- package/dist/tokens/components/table.css +11 -5
- package/dist/tokens/components/thought-chain.css +4 -1
- package/dist/tokens/components/toggle.css +4 -1
- package/dist/tokens/components/tree.css +1 -1
- package/dist/tokens/components/upload.css +21 -9
- package/dist/tokens/foundation.css +35 -30
- package/dist/tokens/semantic/layout.css +26 -5
- package/docs/COMPOSITION-VS-COMPONENT.md +19 -1
- package/docs/DESIGN-AUTHORITY.md +99 -18
- package/docs/FRAME-COVERAGE-REPORT.md +7 -2
- package/docs/TOKENS.md +16 -1
- package/docs/data-display/marquee.tsx +254 -0
- package/docs/foundation/_theme-editor-scope.ts +222 -0
- package/docs/foundation/density.tsx +12 -2
- package/docs/foundation/spacing.tsx +5 -0
- package/docs/foundation/theme-editor.tsx +645 -0
- package/docs/general/activity.tsx +65 -0
- package/docs/general/reveal.tsx +290 -22
- package/docs/general/typography.tsx +91 -1
- package/docs/layout/affix.tsx +209 -0
- package/docs/layout/masonry.tsx +291 -0
- package/docs/navigation/anchor.tsx +285 -0
- package/docs/navigation/mega-menu-panel.tsx +86 -0
- package/docs/navigation/mega-menu.tsx +254 -0
- package/docs/roadmap/website-components.md +779 -0
- package/docs/showcase/acme-website.tsx +75 -39
- package/docs/showcase/case4-login.tsx +10 -2
- package/docs/showcase/case5-shift-calendar.tsx +1 -1
- package/docs/showcase/case6-agency-handy.tsx +6 -6
- package/docs/showcase/futurelastic-web.tsx +89 -49
- package/docs/showcase/marketing-page.tsx +885 -0
- package/docs/showcase/table-expandable-rows.tsx +4 -1
- package/docs/showcase/table-footer-totals.tsx +12 -2
- package/docs/showcase/theme-customization.tsx +1259 -0
- package/package.json +6 -3
- package/scripts/brand-accent.generated.mjs +27 -0
- package/scripts/ui-audit.mjs +66 -0
- package/scripts/visual-audit-rules.mjs +46 -2
|
@@ -2,9 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
:root {
|
|
4
4
|
--responsive-grid-column-width: 20rem;
|
|
5
|
-
--sidebar-section-label-font-size: var(
|
|
6
|
-
|
|
7
|
-
|
|
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(
|
|
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(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
--sidebar-
|
|
33
|
-
|
|
34
|
-
|
|
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(
|
|
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
|
|
|
@@ -102,6 +138,9 @@
|
|
|
102
138
|
--topbar-inset: 0px;
|
|
103
139
|
--topbar-gap: var(--space-2);
|
|
104
140
|
|
|
141
|
+
--topbar-background-alpha: initial;
|
|
142
|
+
--topbar-backdrop-blur-size: initial;
|
|
143
|
+
|
|
105
144
|
--topbar-center-compact-display: none;
|
|
106
145
|
|
|
107
146
|
--topbar-item-padding-inline: var(--space-3);
|
|
@@ -121,7 +160,10 @@
|
|
|
121
160
|
--topbar-item-badge-offset-inline: var(--space-1);
|
|
122
161
|
--topbar-item-badge-size: 1rem;
|
|
123
162
|
--topbar-item-badge-padding-inline: var(--space-1);
|
|
124
|
-
--topbar-item-badge-font-size: var(
|
|
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
|
+
);
|
|
125
167
|
--topbar-item-badge-background: initial;
|
|
126
168
|
--topbar-item-badge-foreground: initial;
|
|
127
169
|
--topbar-item-badge-destructive-background: initial;
|
|
@@ -140,7 +182,10 @@
|
|
|
140
182
|
--org-switcher-list-offset: 0px;
|
|
141
183
|
|
|
142
184
|
--org-switcher-legend-space-gap: var(--space-4);
|
|
143
|
-
--org-switcher-legend-font-size: var(
|
|
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
|
+
);
|
|
144
189
|
--org-switcher-hint-space-gap: var(--space-1);
|
|
145
190
|
|
|
146
191
|
--org-switcher-dialog-width: 26rem;
|
|
@@ -169,14 +214,20 @@
|
|
|
169
214
|
--app-launcher-mark-radius: var(--radius);
|
|
170
215
|
--app-launcher-mark-background: var(--secondary);
|
|
171
216
|
--app-launcher-mark-foreground: var(--secondary-foreground);
|
|
172
|
-
--app-launcher-mark-font-size: var(--font-size-sm);
|
|
173
|
-
--app-launcher-name-font-size: var(
|
|
174
|
-
|
|
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
|
+
);
|
|
175
226
|
--app-launcher-group-label-color: var(--muted-foreground);
|
|
176
227
|
--app-launcher-state-min-height: 8rem;
|
|
177
228
|
|
|
178
229
|
--app-launcher-launchpad-backdrop-background: initial;
|
|
179
|
-
--app-launcher-launchpad-backdrop-blur-size:
|
|
230
|
+
--app-launcher-launchpad-backdrop-blur-size: var(--blur-lg);
|
|
180
231
|
--app-launcher-launchpad-backdrop-alpha: 55%;
|
|
181
232
|
|
|
182
233
|
--app-launcher-launchpad-backdrop-color-saturate: 180%;
|
|
@@ -198,20 +249,22 @@
|
|
|
198
249
|
--app-launcher-launchpad-mark-size: 4rem;
|
|
199
250
|
--app-launcher-launchpad-mark-radius: var(--radius-lg);
|
|
200
251
|
|
|
201
|
-
--app-launcher-launchpad-mark-background: color-mix(
|
|
202
|
-
in srgb,
|
|
203
|
-
hsl(var(--card)) 78%,
|
|
204
|
-
transparent
|
|
205
|
-
);
|
|
252
|
+
--app-launcher-launchpad-mark-background: color-mix(in srgb, hsl(var(--card)) 78%, transparent);
|
|
206
253
|
--app-launcher-launchpad-mark-border-color: color-mix(
|
|
207
254
|
in srgb,
|
|
208
255
|
hsl(var(--foreground)) 14%,
|
|
209
256
|
transparent
|
|
210
257
|
);
|
|
211
|
-
--app-launcher-launchpad-mark-font-size: var(
|
|
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
|
+
);
|
|
212
262
|
--app-launcher-launchpad-mark-shadow: var(--shadow-lg);
|
|
213
|
-
--app-launcher-launchpad-name-font-size: var(--font-size-sm);
|
|
214
|
-
--app-launcher-launchpad-title-font-size: var(
|
|
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
|
+
);
|
|
215
268
|
--app-launcher-launchpad-title-letter-spacing: 0.08em;
|
|
216
269
|
--app-launcher-launchpad-close-space-padding: var(--space-2);
|
|
217
270
|
|
|
@@ -224,7 +277,13 @@
|
|
|
224
277
|
--sidebar-item-active-background-alpha: 12%;
|
|
225
278
|
|
|
226
279
|
--auth-shell-control-height: var(--control-height-comfortable);
|
|
227
|
-
--auth-shell-heading-size: var(
|
|
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
|
+
);
|
|
228
287
|
--auth-shell-card-max-width: 24rem;
|
|
229
288
|
--auth-shell-bar-padding: var(--space-5) var(--space-6);
|
|
230
289
|
--auth-shell-main-padding: var(--space-6);
|
|
@@ -293,7 +352,10 @@
|
|
|
293
352
|
--auth-shell-registration-identity-slot-block-size: 7rem;
|
|
294
353
|
|
|
295
354
|
--auth-shell-divider-gap: 0.625rem;
|
|
296
|
-
--auth-shell-divider-label-font-size: var(
|
|
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
|
+
);
|
|
297
359
|
--auth-shell-divider-label-line-height: calc(19 / 11);
|
|
298
360
|
--auth-shell-divider-rule-color: var(--border);
|
|
299
361
|
--auth-shell-divider-label-color: var(--muted-foreground);
|
|
@@ -307,10 +369,13 @@
|
|
|
307
369
|
--auth-account-summary-identity-min-width: 12rem;
|
|
308
370
|
--auth-account-summary-avatar-size: var(--control-height-sm);
|
|
309
371
|
--auth-account-summary-avatar-glyph-size: var(--control-icon-size-sm);
|
|
310
|
-
--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));
|
|
311
373
|
--auth-footer-content-gap: 0.375rem;
|
|
312
374
|
|
|
313
|
-
--auth-footer-text-font-size: var(
|
|
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
|
+
);
|
|
314
379
|
|
|
315
380
|
--auth-footer-target-min-size: var(--touch-target-min);
|
|
316
381
|
--auth-stack-gap: var(--space-3);
|
|
@@ -347,7 +412,10 @@
|
|
|
347
412
|
--centered-shell-landing-card-shadow: none;
|
|
348
413
|
|
|
349
414
|
--centered-shell-landing-heading-size: var(--font-size-display);
|
|
350
|
-
--centered-shell-landing-heading-size-compact: var(
|
|
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
|
+
);
|
|
351
419
|
|
|
352
420
|
--centered-shell-landing-background: initial;
|
|
353
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
20
|
-
|
|
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(
|
|
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
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
--font-size-
|
|
153
|
-
--font-size-
|
|
154
|
-
--font-size-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
--font-size-
|
|
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
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
--font-size-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
--
|
|
169
|
-
|
|
170
|
-
--heading-
|
|
171
|
-
|
|
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;
|
|
@@ -205,6 +195,9 @@
|
|
|
205
195
|
--space-10: calc(2.5rem * var(--scaling));
|
|
206
196
|
--space-12: calc(3rem * var(--scaling));
|
|
207
197
|
|
|
198
|
+
--space-20: calc(5rem * var(--scaling));
|
|
199
|
+
--space-24: calc(6rem * var(--scaling));
|
|
200
|
+
|
|
208
201
|
--icon-size-2xs: 0.625rem;
|
|
209
202
|
--icon-size-xs: 0.75rem;
|
|
210
203
|
--icon-size-sm: 0.875rem;
|
|
@@ -222,6 +215,10 @@
|
|
|
222
215
|
--stroke-xl: 4px;
|
|
223
216
|
--stroke-2xl: 6px;
|
|
224
217
|
|
|
218
|
+
--blur-sm: 4px;
|
|
219
|
+
--blur-md: 8px;
|
|
220
|
+
--blur-lg: 16px;
|
|
221
|
+
|
|
225
222
|
--band-height-xs: 1.5rem;
|
|
226
223
|
--band-height-sm: 1.75rem;
|
|
227
224
|
--band-height-md: 2rem;
|
|
@@ -254,6 +251,10 @@
|
|
|
254
251
|
--activity-interval: var(--duration-loop);
|
|
255
252
|
|
|
256
253
|
--activity-stagger-step: 160ms;
|
|
254
|
+
|
|
255
|
+
--marquee-interval: 20s;
|
|
256
|
+
--marquee-interval-slow: calc(var(--marquee-interval) * 2);
|
|
257
|
+
--marquee-interval-fast: calc(var(--marquee-interval) / 2);
|
|
257
258
|
}
|
|
258
259
|
|
|
259
260
|
.ui-scale-fixed {
|
|
@@ -267,6 +268,8 @@
|
|
|
267
268
|
--space-8: 2rem;
|
|
268
269
|
--space-10: 2.5rem;
|
|
269
270
|
--space-12: 3rem;
|
|
271
|
+
--space-20: 5rem;
|
|
272
|
+
--space-24: 6rem;
|
|
270
273
|
--radius: 0.375rem;
|
|
271
274
|
--control-height: var(--control-height-default);
|
|
272
275
|
|
|
@@ -289,6 +292,8 @@
|
|
|
289
292
|
--space-page-x: var(--space-6);
|
|
290
293
|
--space-page-y: var(--space-6);
|
|
291
294
|
--space-section: var(--space-4);
|
|
295
|
+
--space-section-band: var(--space-20);
|
|
296
|
+
--space-section-hero: var(--space-24);
|
|
292
297
|
--space-stack-xs: var(--space-1);
|
|
293
298
|
--space-stack-sm: var(--space-2);
|
|
294
299
|
--space-stack-md: var(--space-4);
|
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
--space-page-x: var(--space-6);
|
|
6
6
|
--space-page-y: var(--space-6);
|
|
7
7
|
--space-section: var(--space-4);
|
|
8
|
+
|
|
9
|
+
--space-section-band: var(--space-20);
|
|
10
|
+
--space-section-hero: var(--space-24);
|
|
8
11
|
--space-stack-xs: var(--space-1);
|
|
9
12
|
--space-stack-sm: var(--space-2);
|
|
10
13
|
--space-stack-md: var(--space-4);
|
|
@@ -15,8 +18,12 @@
|
|
|
15
18
|
--space-inline-md: var(--space-3);
|
|
16
19
|
--space-inline-lg: var(--space-4);
|
|
17
20
|
|
|
21
|
+
--space-inline-xl: var(--space-6);
|
|
22
|
+
|
|
18
23
|
--overlay-z-index: 50;
|
|
19
24
|
|
|
25
|
+
--sticky-z-index: 20;
|
|
26
|
+
|
|
20
27
|
--master-detail-rail-compact: 18.75rem;
|
|
21
28
|
--master-detail-rail-narrow: 12rem;
|
|
22
29
|
--master-detail-rail-wide: 24rem;
|
|
@@ -64,14 +71,28 @@
|
|
|
64
71
|
--page-measure-narrow: 42rem;
|
|
65
72
|
--page-measure-medium: 48rem;
|
|
66
73
|
|
|
67
|
-
--page-
|
|
68
|
-
|
|
74
|
+
--page-measure-wide: 72rem;
|
|
75
|
+
|
|
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
|
+
);
|
|
69
87
|
--page-subtitle-font-size: var(--font-size-base);
|
|
70
|
-
--page-subtitle-font-size-compact: var(--font-size-sm);
|
|
88
|
+
--page-subtitle-font-size-compact: var(--font-size-sm, var(--font-size-base));
|
|
71
89
|
|
|
72
|
-
--page-title-font-size-chrome: var(--heading-h3);
|
|
90
|
+
--page-title-font-size-chrome: var(--heading-h3, var(--font-size-base));
|
|
73
91
|
|
|
74
|
-
--page-subtitle-font-size-chrome: var(
|
|
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
|
+
);
|
|
75
96
|
|
|
76
97
|
--page-pad-block-start-chrome: 0px;
|
|
77
98
|
|
|
@@ -77,7 +77,8 @@ new UI need
|
|
|
77
77
|
| `Select` (incl. search/async) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | **Framework component** |
|
|
78
78
|
| `DataTable`, `Dialog`, `Calendar`, `Switch`, `Combobox` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | **Framework component** |
|
|
79
79
|
| `StatCard` (+ `icon`) | ✅ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | **Framework component** (a reusable KPI tile with a stable API + tokens) |
|
|
80
|
-
| `ServiceLauncherCard` | ➖ | ❌ | ❌ | ✅ | ✅ | ➖ | ➖ | **Composition by the test — RETAINED as a recorded exception** (gh#814)
|
|
80
|
+
| `ServiceLauncherCard` | ➖ | ❌ | ❌ | ✅ | ✅ | ➖ | ➖ | **Composition by the test — RETAINED as a recorded exception** (gh#814) |
|
|
81
|
+
| `MegaMenu` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ➖ | **Framework component** — the instructive contrast with Hero, below |
|
|
81
82
|
| Marketing **Hero** | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **Composition** — section, static, composable, brand-specific |
|
|
82
83
|
| **Navbar** / **Footer** | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **Composition** — layout of `Text`/`Button`/`Flex` |
|
|
83
84
|
| **PricingTable** / feature grid | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **Composition** — `ResponsiveGrid` + `Card` |
|
|
@@ -86,6 +87,23 @@ new UI need
|
|
|
86
87
|
|
|
87
88
|
`✅ pass · ❌ fail · ➖ borderline`. **StatCard** is the instructive borderline: C2 is weak (it owns little behavior), but it is a universal KPI tile with a controlled API, fully tokenized, broadly reused — so it earns its place. A **Hero** fails six of seven; it is unambiguously a composition.
|
|
88
89
|
|
|
90
|
+
**MegaMenu is the instructive PASS, and it is in this table because it sits next to Navbar.** A
|
|
91
|
+
Navbar fails every criterion; a megamenu is the same bar with behaviour bolted through it, and that
|
|
92
|
+
one difference flips the verdict. **C2** is the whole case: a roving tabindex across the top-level
|
|
93
|
+
items, `aria-expanded`/`aria-controls` per trigger, hover intent (a diagonal pointer path toward the
|
|
94
|
+
panel must not close it), `Escape` closing and returning focus to its trigger, Tab-out and
|
|
95
|
+
outside-click closing, and close-on-route-change. None of that is layout. **C3** is the one people
|
|
96
|
+
get wrong: `DropdownMenu` looks like the answer and is the WRONG primitive, not an awkward one — it
|
|
97
|
+
is react-aria-components `Menu`, i.e. `role="menu"` / `role="menuitem"`, which announces a set of
|
|
98
|
+
site links as a desktop application menu and takes Tab out of the widget. The APG says so itself in
|
|
99
|
+
its Disclosure Navigation example. A recipe over `DropdownMenu` would therefore ship the classic
|
|
100
|
+
megamenu accessibility defect, which is exactly the case C3 is asking about. **C7 is the weak
|
|
101
|
+
one** — marked ➖ deliberately: this is a JP business-software library, and a marketing megamenu is
|
|
102
|
+
not in every consumer's build. It is kept because the same disclosure bar is what an admin console
|
|
103
|
+
with several product areas needs, and because the cost is one file with no new dependency (no
|
|
104
|
+
`@radix-ui/react-navigation-menu`, no animation runtime). Compare `StatCard`, whose borderline is
|
|
105
|
+
C2 rather than C7.
|
|
106
|
+
|
|
89
107
|
**ServiceLauncherCard is the ONE recorded exception, and it is recorded so that it stays one.** It shipped before the test was run against it, and when the test was run it came back with two hard FAILs: **C2** — no state, no keyboard handling, no focus management, its only ARIA three static attributes — and **C3** — its own imports are `Card` + `CardContent` + `Badge` + a Lucide glyph, so "could I build this right now from primitives?" is yes. By §2 that makes it a composition pattern. It is kept anyway because `src/components/layout/app-launcher.tsx` consumes it: it is an internal building block of a component that **does** pass, so the question was never "should it exist" but "should it be PUBLIC", and removing a public export is breaking. Keeping it public was the cheaper call and the ledger lives on gh#814 and at the top of `src/components/data-display/service-launcher-card.tsx`. **Consumers should compose `Card` + `Badge` for a service tile** — reach for `ServiceLauncherCard` only to match `AppLauncher`'s own tiles — and this row is not precedent for adding another static tile to `src/components/`.
|
|
90
108
|
|
|
91
109
|
---
|