@godxjp/ui 33.15.0 → 33.17.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/README.md +4 -4
- package/agent/START-HERE.md +7 -7
- package/agent/components/AppShell.json +1 -1
- package/agent/components/AreaChart.json +6 -0
- package/agent/components/BarChart.json +6 -0
- package/agent/components/Card.json +1 -1
- package/agent/components/DashboardGrid.json +76 -0
- package/agent/components/DataTable.json +1 -1
- package/agent/components/Heading.json +6 -0
- package/agent/components/HeatmapChart.json +6 -0
- package/agent/components/LineChart.json +6 -0
- package/agent/components/Pagination.json +1 -1
- package/agent/components/PieChart.json +6 -0
- package/agent/components/Table.json +2 -1
- package/agent/components-index.json +9 -3
- package/agent/components.json +118 -5
- package/agent/index.json +8 -8
- package/agent/llms.txt +6 -6
- package/agent/rules.json +1 -1
- package/agent/tokens.json +74 -2
- package/agent/vocabulary.json +12 -0
- package/dist/components/charts/chart-cartesian.d.ts +3 -2
- package/dist/components/charts/chart-cartesian.js +146 -46
- package/dist/components/charts/chart-datum-selection.d.ts +15 -0
- package/dist/components/charts/chart-datum-selection.js +97 -0
- package/dist/components/charts/chart-frame.d.ts +2 -1
- package/dist/components/charts/chart-frame.js +2 -1
- package/dist/components/charts/heatmap-chart.d.ts +1 -1
- package/dist/components/charts/heatmap-chart.js +20 -0
- package/dist/components/charts/index.d.ts +1 -1
- package/dist/components/charts/pie-chart.d.ts +2 -1
- package/dist/components/charts/pie-chart.js +36 -1
- package/dist/components/charts/recharts-peer.d.ts +1 -1
- package/dist/components/charts/recharts-peer.js +6 -0
- package/dist/components/data-display/index.d.ts +1 -1
- package/dist/components/data-display/index.js +10 -1
- package/dist/components/data-display/table.d.ts +9 -0
- package/dist/components/data-display/table.js +3 -0
- package/dist/components/general/typography.d.ts +1 -0
- package/dist/components/general/typography.js +3 -0
- package/dist/contracts/measurement.json +1 -1
- package/dist/i18n/messages/en.json +10 -0
- package/dist/i18n/messages/ja.json +10 -0
- package/dist/i18n/messages/vi.json +10 -0
- package/dist/lab/dashboard-grid-layout.d.ts +4 -0
- package/dist/lab/dashboard-grid-layout.js +36 -0
- package/dist/lab/dashboard-grid.d.ts +5 -0
- package/dist/lab/dashboard-grid.js +258 -0
- package/dist/lab/index.d.ts +2 -0
- package/dist/lab/index.js +2 -0
- package/dist/lib/hooks.d.ts +8 -0
- package/dist/lib/hooks.js +20 -21
- package/dist/props/components/charts.prop.d.ts +11 -0
- package/dist/props/components/dashboard-grid.prop.d.ts +27 -0
- package/dist/props/components/dashboard-grid.prop.js +0 -0
- package/dist/props/components/general.prop.d.ts +8 -1
- package/dist/props/components/index.d.ts +1 -1
- package/dist/props/registry.d.ts +89 -6
- package/dist/props/registry.js +85 -0
- package/dist/props/vocabulary/index.d.ts +1 -1
- package/dist/props/vocabulary/interaction.prop.d.ts +6 -0
- package/dist/styles/badge-layout.css +1 -0
- package/dist/styles/base.css +8 -0
- package/dist/styles/card-layout.css +8 -0
- package/dist/styles/chart-layout.css +28 -0
- package/dist/styles/control.css +82 -0
- package/dist/styles/dialog-layout.css +7 -3
- package/dist/styles/layers.json +10 -1
- package/dist/styles/layout.css +2 -0
- package/dist/styles/logo-layout.css +18 -12
- package/dist/styles/navigation-layout.css +2 -0
- package/dist/styles/shell-layout.css +40 -1
- package/dist/styles/table-layout.css +30 -0
- package/dist/styles/text-layout.css +5 -0
- package/dist/styles.css +1 -1
- package/dist/theme/famgia.service.css +10 -8
- package/dist/themes/godx-tokens.css +20 -16
- package/dist/tokens/base.css +2 -0
- package/dist/tokens/components/dashboard-grid.css +14 -0
- package/dist/tokens/components/feedback.css +2 -0
- package/dist/tokens/components/logo.css +6 -4
- package/dist/tokens/components/table.css +5 -1
- package/dist/tokens/derived.css +28 -24
- package/dist/tokens/foundation.css +62 -56
- package/dist/tokens/semantic/layout.css +5 -3
- package/docs/COMPOSITION-VS-COMPONENT.md +15 -14
- package/docs/TOKENS.md +33 -0
- package/package.json +2 -2
|
@@ -21,12 +21,14 @@
|
|
|
21
21
|
"Helvetica Neue", Arial, sans-serif;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
24
|
+
@media not print {
|
|
25
|
+
.dark {
|
|
26
|
+
--primary: 221 90% 66%;
|
|
27
|
+
--primary-foreground: 222 47% 11%;
|
|
28
|
+
|
|
29
|
+
--ring: 221 90% 66%;
|
|
30
|
+
--text-link: 221 90% 72%;
|
|
31
|
+
--text-brand: 221 90% 70%;
|
|
32
|
+
--text-primary: 221 90% 68%;
|
|
33
|
+
}
|
|
32
34
|
}
|
|
@@ -10,15 +10,17 @@
|
|
|
10
10
|
--shadow-color: 18 43 38;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
@media not print {
|
|
14
|
+
.dark,
|
|
15
|
+
:root[data-theme="dark"] {
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
--primary: 168 60% 60%;
|
|
18
|
+
--primary-foreground: 48 9% 9%;
|
|
19
|
+
--brand: 168 60% 60%;
|
|
20
|
+
--brand-foreground: 48 9% 9%;
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
--shadow-color: 6 14 13;
|
|
23
|
+
}
|
|
22
24
|
}
|
|
23
25
|
|
|
24
26
|
@supports not (color: hsl(from red h s l)) {
|
|
@@ -32,14 +34,16 @@
|
|
|
32
34
|
--text-primary: 168 100% 9.5%;
|
|
33
35
|
}
|
|
34
36
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
@media not print {
|
|
38
|
+
.dark,
|
|
39
|
+
:root[data-theme="dark"] {
|
|
40
|
+
--primary-hover: 168 60% 65.8%;
|
|
41
|
+
--primary-active: 168 60% 71.6%;
|
|
42
|
+
--primary-border: 168 28% 16.2%;
|
|
43
|
+
--control-outline: 168 59.4% 34.9%;
|
|
44
|
+
--text-link: 168 60% 60%;
|
|
45
|
+
--text-brand: 168 60% 60%;
|
|
46
|
+
--text-primary: 168 60% 65.8%;
|
|
47
|
+
}
|
|
44
48
|
}
|
|
45
49
|
}
|
package/dist/tokens/base.css
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
|
|
3
|
+
--dashboard-grid-gap: var(--space-4);
|
|
4
|
+
|
|
5
|
+
--dashboard-grid-row-height: var(--space-20);
|
|
6
|
+
|
|
7
|
+
--dashboard-grid-handle-size: var(--control-height);
|
|
8
|
+
|
|
9
|
+
--dashboard-grid-handle-inset: var(--space-1);
|
|
10
|
+
|
|
11
|
+
--dashboard-grid-item-radius: var(--card-radius);
|
|
12
|
+
|
|
13
|
+
--dashboard-grid-preview-ring-color: initial;
|
|
14
|
+
}
|
|
@@ -65,9 +65,11 @@
|
|
|
65
65
|
--logo-product-suffix-color: initial;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
@media not print {
|
|
69
|
+
.dark,
|
|
70
|
+
:root[data-theme="dark"] {
|
|
71
|
+
--logo-identity-foreground: 48 9% 9%;
|
|
71
72
|
|
|
72
|
-
|
|
73
|
+
--logo-godx-ink-color: 140 23.1% 97.5%;
|
|
74
|
+
}
|
|
73
75
|
}
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
:root {
|
|
86
86
|
--table-stacked-collection-card-padding-y: var(--space-stack-sm);
|
|
87
87
|
--table-stacked-collection-card-padding-x: initial;
|
|
88
|
-
--table-stacked-collection-card-gap:
|
|
88
|
+
--table-stacked-collection-card-gap: 0;
|
|
89
89
|
--table-stacked-collection-cell-padding-y: var(--space-stack-xs);
|
|
90
90
|
|
|
91
91
|
--table-stacked-collection-cell-padding-x: 0;
|
|
@@ -116,4 +116,8 @@
|
|
|
116
116
|
|
|
117
117
|
--table-row-tone-rail-width: initial;
|
|
118
118
|
--table-row-tone-wash-alpha: 0.06;
|
|
119
|
+
|
|
120
|
+
--table-caption-color: initial;
|
|
121
|
+
--table-caption-font-size: initial;
|
|
122
|
+
--table-caption-space-y: initial;
|
|
119
123
|
}
|
package/dist/tokens/derived.css
CHANGED
|
@@ -39,28 +39,30 @@
|
|
|
39
39
|
--ring: var(--primary);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
@media not print {
|
|
43
|
+
.dark,
|
|
44
|
+
:root[data-theme="dark"] {
|
|
45
|
+
--primary-hover-channels: var(--primary-hover-lighten-channels);
|
|
46
|
+
--primary-active-channels: var(--primary-active-lighten-channels);
|
|
46
47
|
|
|
47
|
-
|
|
48
|
+
--primary-border-channels: h calc(s * 0.467) calc(l * 0.27043);
|
|
48
49
|
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
--control-outline-channels: h calc(s * 0.99) calc(l - 25.1);
|
|
51
|
+
--control-outline-alpha: 0.29;
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
|
|
53
|
+
--text-link-channels: h s l;
|
|
54
|
+
--text-brand-channels: h s l;
|
|
54
55
|
|
|
55
|
-
|
|
56
|
+
--text-primary-channels: h s calc(l + 5.8);
|
|
56
57
|
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
--destructive-hover: 358.8 42.3% 53.1%;
|
|
59
|
+
--destructive-active: 357.3 50.6% 34.1%;
|
|
59
60
|
|
|
60
|
-
|
|
61
|
-
|
|
61
|
+
--control-outline-error: 351.5 98.3% 53.5%;
|
|
62
|
+
--control-outline-error-alpha: 0.06;
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
--ring: var(--primary);
|
|
65
|
+
}
|
|
64
66
|
}
|
|
65
67
|
|
|
66
68
|
@supports not (color: hsl(from red h s l)) {
|
|
@@ -74,14 +76,16 @@
|
|
|
74
76
|
--text-primary: 240 6% 0%;
|
|
75
77
|
}
|
|
76
78
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
79
|
+
@media not print {
|
|
80
|
+
.dark,
|
|
81
|
+
:root[data-theme="dark"] {
|
|
82
|
+
--primary-hover: 0 0% 92.2%;
|
|
83
|
+
--primary-active: 0 0% 86.4%;
|
|
84
|
+
--primary-border: 0 0% 26.5%;
|
|
85
|
+
--control-outline: 0 0% 72.9%;
|
|
86
|
+
--text-link: 0 0% 98%;
|
|
87
|
+
--text-brand: 0 0% 98%;
|
|
88
|
+
--text-primary: 0 0% 100%;
|
|
89
|
+
}
|
|
86
90
|
}
|
|
87
91
|
}
|
|
@@ -175,6 +175,10 @@
|
|
|
175
175
|
--font-family-display: var(--font-family-sans);
|
|
176
176
|
--font-family-body: var(--font-family-sans);
|
|
177
177
|
|
|
178
|
+
--font-family-editorial: initial;
|
|
179
|
+
|
|
180
|
+
--font-family-tabular: initial;
|
|
181
|
+
|
|
178
182
|
--font-size-base: 0.875rem;
|
|
179
183
|
--font-size-ratio: 1.1227;
|
|
180
184
|
|
|
@@ -344,60 +348,62 @@
|
|
|
344
348
|
--field-label-gap: var(--space-2);
|
|
345
349
|
}
|
|
346
350
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
351
|
+
@media not print {
|
|
352
|
+
.dark,
|
|
353
|
+
:root[data-theme="dark"] {
|
|
354
|
+
|
|
355
|
+
--background: 48 9% 9%;
|
|
356
|
+
--foreground: 60 20% 96%;
|
|
357
|
+
--card: 48 8% 12%;
|
|
358
|
+
--card-foreground: 60 20% 96%;
|
|
359
|
+
--popover: 48 8% 12%;
|
|
360
|
+
--popover-foreground: 60 20% 96%;
|
|
361
|
+
--primary: 0 0% 98%;
|
|
362
|
+
--primary-foreground: 48 9% 9%;
|
|
363
|
+
--secondary: 45 6% 18%;
|
|
364
|
+
--secondary-foreground: 60 20% 96%;
|
|
365
|
+
--muted: 45 6% 18%;
|
|
366
|
+
--muted-foreground: 44 6% 64%;
|
|
367
|
+
--accent: 45 7% 22%;
|
|
368
|
+
--accent-foreground: 60 20% 96%;
|
|
369
|
+
|
|
370
|
+
--destructive: 357 55% 48%;
|
|
371
|
+
--destructive-foreground: 0 0% 100%;
|
|
372
|
+
|
|
373
|
+
--border: 45 6% 19%;
|
|
374
|
+
|
|
375
|
+
--input: 45 6% 51%;
|
|
376
|
+
|
|
377
|
+
--success: 146 45% 55%;
|
|
378
|
+
--success-foreground: 48 9% 9%;
|
|
379
|
+
--warning: 44 95% 55%;
|
|
380
|
+
--warning-foreground: 48 9% 9%;
|
|
381
|
+
--info: 221 55% 62%;
|
|
382
|
+
--info-foreground: 48 9% 9%;
|
|
383
|
+
--attention: 25 95% 56%;
|
|
384
|
+
--attention-foreground: 48 9% 9%;
|
|
385
|
+
|
|
386
|
+
--brand: 0 0% 98%;
|
|
387
|
+
--brand-foreground: 48 9% 9%;
|
|
388
|
+
|
|
389
|
+
--text-tertiary: 44 6% 56%;
|
|
390
|
+
--text-disabled: 45 6% 40%;
|
|
391
|
+
|
|
392
|
+
--text-success: 146 55% 64%;
|
|
393
|
+
--text-warning: 44 95% 62%;
|
|
394
|
+
--text-info: 221 70% 72%;
|
|
395
|
+
--text-error: 357 75% 68%;
|
|
396
|
+
|
|
397
|
+
--secondary-hover: 45 6% 22%;
|
|
398
|
+
--secondary-active: 45 6% 26%;
|
|
399
|
+
|
|
400
|
+
--chart-2: #008465;
|
|
401
|
+
--chart-4: #d43b42;
|
|
402
|
+
|
|
403
|
+
--chart-heat-1: #173a52;
|
|
404
|
+
--chart-heat-2: #145f92;
|
|
405
|
+
--chart-heat-3: #2a88c9;
|
|
406
|
+
--chart-heat-4: #6db5e6;
|
|
407
|
+
--chart-heat-5: #bfe1f7;
|
|
408
|
+
}
|
|
403
409
|
}
|
|
@@ -120,9 +120,11 @@
|
|
|
120
120
|
--field-label-gap: var(--space-2);
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
123
|
+
@media not print {
|
|
124
|
+
.dark,
|
|
125
|
+
:root[data-theme="dark"] {
|
|
126
|
+
--surface-recessed: hsl(var(--background));
|
|
127
|
+
}
|
|
126
128
|
}
|
|
127
129
|
|
|
128
130
|
:root {
|
|
@@ -99,20 +99,21 @@ new UI need
|
|
|
99
99
|
|
|
100
100
|
## 3. Worked examples
|
|
101
101
|
|
|
102
|
-
| Thing | C1 | C2 | C3 | C4 | C5 | C6 | C7
|
|
103
|
-
| ------------------------------------------------------- | --- | --- | --- | --- | --- | --- |
|
|
104
|
-
| `Select` (incl. search/async) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅
|
|
105
|
-
| `DataTable`, `Dialog`, `Calendar`, `Switch`, `Combobox` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅
|
|
106
|
-
| `StatCard` (+ `icon`) | ✅ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅
|
|
107
|
-
| `ServiceLauncherCard` | ➖ | ❌ | ❌ | ✅ | ✅ | ➖ | ➖
|
|
108
|
-
| `MegaMenu` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅
|
|
109
|
-
|
|
|
110
|
-
|
|
|
111
|
-
| **
|
|
112
|
-
|
|
|
113
|
-
|
|
|
114
|
-
|
|
|
115
|
-
|
|
|
102
|
+
| Thing | C1 | C2 | C3 | C4 | C5 | C6 | C7 | Verdict |
|
|
103
|
+
| ------------------------------------------------------- | --- | --- | --- | --- | --- | --- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
104
|
+
| `Select` (incl. search/async) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | **Framework component** |
|
|
105
|
+
| `DataTable`, `Dialog`, `Calendar`, `Switch`, `Combobox` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | **Framework component** |
|
|
106
|
+
| `StatCard` (+ `icon`) | ✅ | ➖ | ✅ | ✅ | ✅ | ✅ | ✅ | **Framework component** (a reusable KPI tile with a stable API + tokens) |
|
|
107
|
+
| `ServiceLauncherCard` | ➖ | ❌ | ❌ | ✅ | ✅ | ➖ | ➖ | **Composition by the test — RETAINED as a recorded exception** (gh#814) |
|
|
108
|
+
| `MegaMenu` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | **Framework component, `@godxjp/ui/lab` tier** (no consumer yet, §2.1) — the instructive contrast with Hero, below |
|
|
109
|
+
| `DashboardGrid` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | exception | **Lab (§2.1)** — C7 exception approved by the owner, BI precedents (Tableau/Power BI/Grafana/react-grid-layout). Approved 2026-10-23; same gates as core, promoted only once ≥2 repos import it. |
|
|
110
|
+
| Marketing **Hero** | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **Composition** — section, static, composable, brand-specific |
|
|
111
|
+
| **Navbar** / **Footer** | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **Composition** — layout of `Text`/`Button`/`Flex` |
|
|
112
|
+
| **PricingTable** / feature grid | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | **Composition** — `ResponsiveGrid` + `Card` |
|
|
113
|
+
| Dashboard **page layout** | ❌ | ❌ | ❌ | ❌ | ➖ | ❌ | ❌ | **Composition** — `AppShell` + `PageContainer` + `ResponsiveGrid` |
|
|
114
|
+
| "Icon medallion" | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | **Composition** — `Avatar` (square) + a Lucide glyph |
|
|
115
|
+
| **Section** / **Band** (full-bleed + measured column) | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | **Composition** — `<section>` + `Flex measure` + `pad`; see §3.1 |
|
|
116
|
+
| `TenantTheme` (customer hex at runtime) | ✅ | ➖ | ❌ | ❌ | ✅ | ❌ | ➖ | **Composition + a published FUNCTION** — `tenantTheme()`; see §3.2 |
|
|
116
117
|
|
|
117
118
|
`✅ 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.
|
|
118
119
|
|
package/docs/TOKENS.md
CHANGED
|
@@ -583,3 +583,36 @@ service override. `allowClear` still replaces the suffix; DatePicker and TimePic
|
|
|
583
583
|
clear and open actions. NumberInput lays out its two steppers horizontally on coarse pointers.
|
|
584
584
|
SearchInput retains its glyph centre while sharing this target token. Fine-pointer geometry is
|
|
585
585
|
unchanged. Override the token on the field or in the service theme; no new prop is required.
|
|
586
|
+
|
|
587
|
+
## Editorial, figures, captions and dialog corners
|
|
588
|
+
|
|
589
|
+
`--font-family-editorial` and `--font-family-tabular` are `initial` knobs: unset,
|
|
590
|
+
`Heading family="editorial"` and a display-scale PageContainer title use the display face,
|
|
591
|
+
while `Text tabular`, `Badge tabular` and numeric table cells inherit their surrounding face.
|
|
592
|
+
`Text mono` still takes priority over the figures face. UI headings stay unchanged.
|
|
593
|
+
|
|
594
|
+
`TableCaption` is the first child of `Table` and supplies its accessible name. Its
|
|
595
|
+
`--table-caption-color`, `--table-caption-font-size` and `--table-caption-space-y` knobs
|
|
596
|
+
are `initial`, falling back to muted ink, the small type step and `--space-2`.
|
|
597
|
+
The inline inset follows the cells on desktop and
|
|
598
|
+
`--table-stacked-collection-card-padding-x` (fallback `--card-space-inset`) when stacked;
|
|
599
|
+
logical padding and start alignment follow RTL.
|
|
600
|
+
|
|
601
|
+
`--dialog-radius` is `initial`; from 640px the panel falls back to
|
|
602
|
+
`--radius-lg`, then `--radius`. Below 640px it falls back to the existing square panel;
|
|
603
|
+
an explicit override applies at every width. Dialog uses symmetric logical insets to stay
|
|
604
|
+
centred in both LTR and RTL.
|
|
605
|
+
Set the knob on the theme scope containing the Dialog portal (normally `:root`).
|
|
606
|
+
|
|
607
|
+
## Printing
|
|
608
|
+
|
|
609
|
+
Paper uses the existing light token declarations: every shipped dark override (including
|
|
610
|
+
brand themes and component tokens) is enclosed in `@media not print`.
|
|
611
|
+
Consumer-authored themes must likewise put all dark overrides inside `@media not print`,
|
|
612
|
+
leaving their light declarations outside it so paper always uses the light palette.
|
|
613
|
+
|
|
614
|
+
In print, AppShell hides sidebar, topbar, navigation rail, breadcrumb and footer.
|
|
615
|
+
Its main area uses the full paper width with natural height, visible overflow and no
|
|
616
|
+
paint containment, so content beyond the screen viewport can print. Card requests
|
|
617
|
+
`break-inside: avoid`; a card taller than a sheet can still fragment. Applications may
|
|
618
|
+
adjust this in their own print stylesheet through the public `data-slot="card"` hook.
|