@godxjp/ui 18.4.0 → 18.6.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 +16 -1
- package/dist/app/theme-axes.d.ts +11 -3
- package/dist/app/theme-axes.js +2 -1
- package/dist/components/charts/chart-frame.d.ts +17 -3
- package/dist/components/charts/chart-frame.js +7 -1
- package/dist/components/charts/chart-summary.d.ts +21 -0
- package/dist/components/charts/chart-summary.js +32 -5
- package/dist/components/charts/compact-bar-trend.d.ts +30 -0
- package/dist/components/charts/compact-bar-trend.js +74 -0
- package/dist/components/charts/index.d.ts +6 -0
- package/dist/components/charts/index.js +2 -0
- package/dist/components/data-display/badge.d.ts +8 -0
- package/dist/components/data-display/badge.js +7 -1
- package/dist/components/data-display/data-table.d.ts +40 -4
- package/dist/components/data-display/data-table.js +69 -2
- package/dist/components/data-display/empty-state.js +1 -1
- package/dist/components/data-display/index.d.ts +4 -2
- package/dist/components/data-display/index.js +10 -1
- package/dist/components/data-display/list-row.d.ts +41 -4
- package/dist/components/data-display/list-row.js +23 -3
- package/dist/components/data-display/qr-code.d.ts +1 -1
- package/dist/components/data-display/service-launcher-card.d.ts +40 -0
- package/dist/components/data-display/service-launcher-card.js +97 -0
- package/dist/components/data-display/table.d.ts +47 -2
- package/dist/components/data-display/table.js +29 -4
- package/dist/components/data-entry/command-palette.d.ts +37 -0
- package/dist/components/data-entry/command-palette.js +125 -0
- package/dist/components/data-entry/command.d.ts +10 -10
- package/dist/components/data-entry/index.d.ts +3 -0
- package/dist/components/data-entry/index.js +2 -0
- package/dist/components/data-entry/input-otp.d.ts +1 -0
- package/dist/components/feedback/dialog.d.ts +16 -1
- package/dist/components/feedback/dialog.js +46 -33
- package/dist/components/feedback/index.d.ts +5 -2
- package/dist/components/feedback/index.js +8 -2
- package/dist/components/feedback/sheet.d.ts +26 -4
- package/dist/components/feedback/sheet.js +54 -7
- package/dist/components/feedback/two-factor-setup.d.ts +31 -0
- package/dist/components/feedback/two-factor-setup.js +97 -0
- package/dist/components/general/index.d.ts +1 -1
- package/dist/components/general/logo.d.ts +49 -9
- package/dist/components/general/logo.js +67 -14
- package/dist/components/layout/app-shell.d.ts +1 -1
- package/dist/components/layout/app-shell.js +55 -30
- package/dist/components/layout/auth-account-summary.d.ts +5 -0
- package/dist/components/layout/auth-account-summary.js +31 -0
- package/dist/components/layout/auth-divider.d.ts +7 -0
- package/dist/components/layout/auth-divider.js +21 -0
- package/dist/components/layout/auth-footer.d.ts +5 -0
- package/dist/components/layout/auth-footer.js +24 -0
- package/dist/components/layout/auth-identity.d.ts +5 -0
- package/dist/components/layout/auth-identity.js +17 -0
- package/dist/components/layout/auth-shell.d.ts +9 -1
- package/dist/components/layout/auth-shell.js +25 -6
- package/dist/components/layout/auth-stack.d.ts +4 -0
- package/dist/components/layout/auth-stack.js +8 -0
- package/dist/components/layout/centered-shell.d.ts +5 -2
- package/dist/components/layout/centered-shell.js +29 -19
- package/dist/components/layout/error-surface.d.ts +35 -0
- package/dist/components/layout/error-surface.js +155 -0
- package/dist/components/layout/flex.d.ts +1 -1
- package/dist/components/layout/flex.js +4 -0
- package/dist/components/layout/index.d.ts +23 -3
- package/dist/components/layout/index.js +21 -2
- package/dist/components/layout/legal-document-shell.d.ts +34 -0
- package/dist/components/layout/legal-document-shell.js +186 -0
- package/dist/components/layout/master-detail.d.ts +24 -0
- package/dist/components/layout/master-detail.js +48 -0
- package/dist/components/layout/org-switcher.d.ts +9 -0
- package/dist/components/layout/org-switcher.js +218 -0
- package/dist/components/layout/page-container.d.ts +1 -1
- package/dist/components/layout/page-container.js +7 -2
- package/dist/components/layout/sidebar-link.d.ts +43 -0
- package/dist/components/layout/sidebar-link.js +13 -0
- package/dist/components/layout/sidebar.d.ts +42 -5
- package/dist/components/layout/sidebar.js +170 -85
- package/dist/components/navigation/app-setting-picker.js +17 -6
- package/dist/components/navigation/filter-bar.d.ts +12 -3
- package/dist/components/navigation/filter-bar.js +8 -2
- package/dist/components/navigation/index.d.ts +2 -2
- package/dist/components/navigation/index.js +3 -1
- package/dist/components/navigation/steps.js +38 -19
- package/dist/components/navigation/tabs-scroll.d.ts +70 -0
- package/dist/components/navigation/tabs-scroll.js +76 -0
- package/dist/components/navigation/tabs.js +47 -23
- package/dist/components/ui/avatar.d.ts +2 -1
- package/dist/components/ui/avatar.js +2 -1
- package/dist/components/ui/input-otp.d.ts +4 -1
- package/dist/components/ui/input-otp.js +2 -1
- package/dist/components/ui/toggle-group.d.ts +7 -4
- package/dist/components/ui/toggle-group.js +32 -21
- package/dist/email/brand-mark.d.ts +108 -0
- package/dist/email/brand-mark.js +88 -0
- package/dist/email/color.d.ts +53 -0
- package/dist/email/color.js +37 -0
- package/dist/email/geometry.d.ts +120 -0
- package/dist/email/geometry.js +90 -0
- package/dist/email/index.d.ts +83 -0
- package/dist/email/index.js +82 -0
- package/dist/email/inline-style.d.ts +27 -0
- package/dist/email/inline-style.js +26 -0
- package/dist/email/tokens.generated.d.ts +167 -0
- package/dist/email/tokens.generated.js +162 -0
- package/dist/email/urgency.d.ts +22 -0
- package/dist/email/urgency.js +14 -0
- package/dist/i18n/messages/en.json +36 -3
- package/dist/i18n/messages/ja.json +36 -3
- package/dist/i18n/messages/vi.json +36 -3
- package/dist/inertia/index.d.ts +50 -0
- package/dist/inertia/index.js +5 -0
- package/dist/props/components/app.prop.d.ts +11 -1
- package/dist/props/components/charts.prop.d.ts +40 -1
- package/dist/props/components/data-display.prop.d.ts +75 -1
- package/dist/props/components/data-entry.prop.d.ts +6 -0
- package/dist/props/components/feedback.prop.d.ts +10 -0
- package/dist/props/components/index.d.ts +3 -3
- package/dist/props/components/layout.prop.d.ts +560 -10
- package/dist/props/components/layout.prop.js +1 -0
- package/dist/props/components/navigation.prop.d.ts +24 -2
- package/dist/props/registry.d.ts +433 -8
- package/dist/props/registry.js +527 -9
- package/dist/props/vocabulary/data.prop.d.ts +27 -0
- package/dist/props/vocabulary/index.d.ts +3 -3
- package/dist/props/vocabulary/interaction.prop.d.ts +10 -1
- package/dist/props/vocabulary/layout.prop.d.ts +49 -0
- package/dist/styles/base.css +8 -2
- package/dist/styles/card-layout.css +161 -7
- package/dist/styles/chart-layout.css +97 -0
- package/dist/styles/control.css +76 -2
- package/dist/styles/data-display-layout.css +78 -6
- package/dist/styles/dialog-layout.css +105 -4
- package/dist/styles/fonts.css +15 -4
- package/dist/styles/index.css +11 -3
- package/dist/styles/layout.css +466 -1
- package/dist/styles/logo-layout.css +95 -0
- package/dist/styles/navigation-layout.css +152 -0
- package/dist/styles/shell-layout.css +790 -40
- package/dist/styles/table-layout.css +164 -1
- package/dist/theme/dxs.canonical.css +77 -0
- package/dist/tokens/axes.css +40 -0
- package/dist/tokens/base.css +6 -0
- package/dist/tokens/components/card.css +48 -0
- package/dist/tokens/components/chart.css +47 -0
- package/dist/tokens/components/control.css +16 -0
- package/dist/tokens/components/data-display.css +13 -0
- package/dist/tokens/components/email.css +93 -0
- package/dist/tokens/components/error-surface.css +36 -0
- package/dist/tokens/components/feedback.css +17 -0
- package/dist/tokens/components/legal-document.css +67 -0
- package/dist/tokens/components/list-row.css +43 -2
- package/dist/tokens/components/logo.css +74 -0
- package/dist/tokens/components/navigation.css +28 -0
- package/dist/tokens/components/sheet.css +19 -0
- package/dist/tokens/components/shell.css +210 -0
- package/dist/tokens/components/sidebar.css +33 -0
- package/dist/tokens/components/table.css +45 -0
- package/dist/tokens/foundation.css +31 -2
- package/dist/tokens/semantic/layout.css +69 -2
- package/package.json +22 -5
|
@@ -31,6 +31,25 @@
|
|
|
31
31
|
--attention: 25 99% 46%; /* 朱 #eb6101 */
|
|
32
32
|
--attention-foreground: 60 33% 99%;
|
|
33
33
|
|
|
34
|
+
/* IDENTITY role — the canonical GoDX emerald. This is the PRODUCT MARK colour (Logo `mark="godx"`
|
|
35
|
+
* / `tone="success"`, its wordmark, the email brand capsule), and it is deliberately THREE-WAY
|
|
36
|
+
* distinct:
|
|
37
|
+
* · from --primary — a service re-theming its action colour must never recolour the mark;
|
|
38
|
+
* · from --success — 若竹 #68be8d is the STATUS green (badges, progress, "saved" text) and
|
|
39
|
+
* stays exactly as it is. The mark previously borrowed it, which rendered
|
|
40
|
+
* the identity at #69bf8e instead of the canonical emerald — ΔE76 ≈ 17.5,
|
|
41
|
+
* a plainly wrong brand colour (gh#250/#214);
|
|
42
|
+
* · from --text-brand / --color-brand — those are the BLUE brand-numeral TEXT slot and the
|
|
43
|
+
* Tailwind `text-brand` utility it feeds; unrelated, and not renamed here.
|
|
44
|
+
* Canonical value: oklch(0.595 0.137 162.94) = #009766, "kept distinct from SmartHR primary".
|
|
45
|
+
* The triplet is carried at one decimal so hsl() lands on that exact hex (an integer 160 100% 30%
|
|
46
|
+
* would drift to #009966). Dark lifts lightness only — same hue, same full chroma — so the mark
|
|
47
|
+
* stays the same emerald while clearing AA against the dark spine.
|
|
48
|
+
* There is no Tailwind `bg-brand` utility on purpose: `--color-brand` is already taken by
|
|
49
|
+
* --text-brand, so identity surfaces read `hsl(var(--brand))` directly in component CSS. */
|
|
50
|
+
--brand: 160.5 100% 29.6%; /* 翠 GoDX emerald #009766 */
|
|
51
|
+
--brand-foreground: 60 33% 99%;
|
|
52
|
+
|
|
34
53
|
/* Extended text hierarchy (beyond --foreground / --muted-foreground) — themeable per service.
|
|
35
54
|
* Roles primitives bake in today: caption/meta, disabled, inline link, brand numerals. */
|
|
36
55
|
--text-tertiary: 44 5% 55%; /* lighter than muted-foreground — captions / meta */
|
|
@@ -161,8 +180,11 @@
|
|
|
161
180
|
* --font-sans-zh-hans (lang="zh" | "zh-Hans" | "zh-CN")
|
|
162
181
|
* --font-sans-zh-hant (lang="zh-Hant" | "zh-TW")
|
|
163
182
|
* e.g. `--font-sans-ja: "Noto Sans JP", var(--font-sans-base);`
|
|
164
|
-
* The opt-in bundle `@godxjp/ui/styles/fonts`
|
|
165
|
-
*
|
|
183
|
+
* The opt-in bundle `@godxjp/ui/styles/fonts` overwrites `--font-sans-base`
|
|
184
|
+
* (and `--font-sans-vi`) with the DXS bundle — "M PLUS 2" primary, "Noto Sans JP"
|
|
185
|
+
* as the CJK fallback — so the all-in-one entry is zero-config. That fill also
|
|
186
|
+
* lands on `:root` at THIS specificity, so `styles/fonts` MUST be imported AFTER
|
|
187
|
+
* `styles/base`, or the system stack below silently wins (issue #210). */
|
|
166
188
|
--font-sans-base:
|
|
167
189
|
-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, system-ui,
|
|
168
190
|
sans-serif;
|
|
@@ -377,6 +399,13 @@
|
|
|
377
399
|
--attention: 25 95% 56%;
|
|
378
400
|
--attention-foreground: 48 9% 9%;
|
|
379
401
|
|
|
402
|
+
/* IDENTITY (dark) — the SAME canonical emerald hue/chroma, lifted 29.6% → 36% lightness so the
|
|
403
|
+
* mark reads off the warm near-black spine (#00b87c: 6.9:1 on --background, 6.3:1 on --card;
|
|
404
|
+
* the unlifted #009766 sat at 4.4:1 on the card). The on-fill glyph flips dark, exactly like
|
|
405
|
+
* --success-foreground does. */
|
|
406
|
+
--brand: 160.5 100% 36%; /* #00b87c */
|
|
407
|
+
--brand-foreground: 48 9% 9%;
|
|
408
|
+
|
|
380
409
|
/* Extended text hierarchy + interaction ramp (dark) */
|
|
381
410
|
--text-tertiary: 44 6% 56%;
|
|
382
411
|
--text-disabled: 45 6% 40%;
|
|
@@ -18,6 +18,30 @@
|
|
|
18
18
|
--space-inline-md: var(--space-3); /* 12px */
|
|
19
19
|
--space-inline-lg: var(--space-4); /* 16px */
|
|
20
20
|
|
|
21
|
+
/* Master-detail geometry. Consumers choose a semantic rail preset; they never author grid tracks. */
|
|
22
|
+
--master-detail-rail-compact: 18.75rem; /* 300px */
|
|
23
|
+
--master-detail-rail-standard: 20rem; /* 320px */
|
|
24
|
+
--master-detail-gap: var(--space-stack-md);
|
|
25
|
+
/* The collapse threshold: MasterDetail keeps its two-track split while the composition's OWN
|
|
26
|
+
* inline size is at least this wide, and stacks (master then detail) below it. A service theme
|
|
27
|
+
* retunes it once globally; the `collapseBelow` prop overrides it per instance (rule #45).
|
|
28
|
+
* This is a real knob — the layout reads it through the flex-basis threshold, NOT a media
|
|
29
|
+
* query, precisely so a `var()` can drive it (see src/styles/layout.css · .ui-master-detail). */
|
|
30
|
+
--master-detail-collapse-below: 40rem; /* 640px — the `sm` step */
|
|
31
|
+
|
|
32
|
+
/* Bounded master viewport (gh#231). OPT-IN, chosen by the semantic `masterViewport` prop —
|
|
33
|
+
* `auto` (the default) applies NO bound, so every existing composition is unchanged. A real
|
|
34
|
+
* collection can be thousands of pixels tall; when the layout stacks, that pushes the detail
|
|
35
|
+
* far below the fold. The presets cap the collection's BLOCK size and scroll it inside the
|
|
36
|
+
* region instead. Sized as a whole number of nominal collection rows (2.5rem ≈ a compact list
|
|
37
|
+
* row) so a service theme retunes them in the same semantic unit the design grid uses. */
|
|
38
|
+
--master-detail-master-viewport-compact: 20rem; /* 320px — about 8 nominal rows */
|
|
39
|
+
--master-detail-master-viewport-standard: 28rem; /* 448px — about 11 nominal rows */
|
|
40
|
+
/* Focus-ring room INSIDE the bounded region: an overflow container clips both axes, so without
|
|
41
|
+
* an inset the ring of a row at the edge would be cut off (WCAG 2.4.11/2.4.13). Doubles as the
|
|
42
|
+
* scroll-padding so a row scrolled into view never sits flush against the clip edge. */
|
|
43
|
+
--master-detail-master-viewport-inset: var(--space-1); /* 4px */
|
|
44
|
+
|
|
21
45
|
--space-page-active-x: var(--space-page-x);
|
|
22
46
|
--space-page-active-y: var(--space-page-y);
|
|
23
47
|
--space-section-active: var(--space-section);
|
|
@@ -26,8 +50,18 @@
|
|
|
26
50
|
--space-section-compact: var(--space-4);
|
|
27
51
|
|
|
28
52
|
/* Modal scrim — the single backdrop colour shared by EVERY overlay (Dialog, AlertDialog, Sheet,
|
|
29
|
-
* Drawer). Themeable (rule #44) so a service tints the wash to its brand
|
|
30
|
-
* `--overlay-background: rgb(12 26 49 / .55)`, instead of forking each overlay.
|
|
53
|
+
* Drawer, AppShell mobile nav). Themeable (rule #44) so a service tints the wash to its brand
|
|
54
|
+
* once, e.g. a navy `--overlay-background: rgb(12 26 49 / .55)`, instead of forking each overlay.
|
|
55
|
+
*
|
|
56
|
+
* HOW IT REACHES AN OVERLAY (gh#215 — it previously reached NOTHING): each surface declares its
|
|
57
|
+
* own knob `initial` and resolves a SHARE of this colour at the call site,
|
|
58
|
+
* `var(--dialog-overlay-background, color-mix(in srgb, var(--overlay-background)
|
|
59
|
+
* var(--dialog-overlay-alpha), transparent))`. That keeps the calibrated per-surface depth — a
|
|
60
|
+
* slide-in Sheet washes the page more lightly (40%) than a modal Dialog (60%) — while ONE
|
|
61
|
+
* override here retints every backdrop. Per docs/TOKENS.md the knobs must stay `initial`: a
|
|
62
|
+
* `:root` binding would freeze and a scoped `[data-tenant]`/`.dark` override of this token would
|
|
63
|
+
* never reach the overlay. Overlays are portaled, so a tenant scope must also sit on the portal
|
|
64
|
+
* container (see docs/CUSTOMER-THEMING.md). */
|
|
31
65
|
--overlay-background: rgb(0 0 0 / 0.5);
|
|
32
66
|
|
|
33
67
|
/* Full-bleed rule under the PageContainer header. OFF by default — the title/body
|
|
@@ -41,6 +75,29 @@
|
|
|
41
75
|
* old fixed 16px pad that left 24 above vs 32 below. */
|
|
42
76
|
--page-header-pad-bottom: calc(var(--space-page-active-y) - var(--space-section-active));
|
|
43
77
|
|
|
78
|
+
/* Inline measure of the header `extra` region while the page header is in `responsive-inline`
|
|
79
|
+
* arrangement (gh#231). Below the 640px step the default arrangement drops `extra` onto its own
|
|
80
|
+
* full-width line under the subtitle; `headerLayout="responsive-inline"` keeps it beside the
|
|
81
|
+
* title band at this measure instead, so a single compact control (a search field, one primary
|
|
82
|
+
* action) stays on the title row at 390px. Unused by the default arrangement, so no existing
|
|
83
|
+
* page moves. 11rem = 176px, i.e. the control ends flush with the compact page gutter. */
|
|
84
|
+
--page-header-extra-measure: 11rem; /* 176px */
|
|
85
|
+
|
|
86
|
+
/* Bounded page MEASURE (gh#245 / gh#247) — the shared inline cap applied to the page HEADER and
|
|
87
|
+
* BODY together, so the header `extra` action ends on the same edge as the body surface (the
|
|
88
|
+
* `variant="narrow"` complaint: it caps only `.ui-page-body`, leaving the header action out at
|
|
89
|
+
* the page edge). Selected by the semantic `measure` prop; `measure="default"` reads NEITHER
|
|
90
|
+
* token, so an existing page is untouched.
|
|
91
|
+
*
|
|
92
|
+
* These are OUTER measures: the page gutters (--space-page-active-x, 24px each side by default)
|
|
93
|
+
* live INSIDE the cap, so the VISIBLE surface is the measure minus both gutters:
|
|
94
|
+
* narrow 42rem = 672px → 624px visible surface (the historical variant="narrow" body width)
|
|
95
|
+
* medium 48rem = 768px → 720px visible surface (the canonical readable/feed measure)
|
|
96
|
+
* Below the cap nothing binds, so a 390px viewport stays fluid at the 16px compact gutter
|
|
97
|
+
* (358px surface). A service theme retunes both in ONE place; never a page-local max-width. */
|
|
98
|
+
--page-measure-narrow: 42rem; /* 672px outer → 624px surface */
|
|
99
|
+
--page-measure-medium: 48rem; /* 768px outer → 720px surface */
|
|
100
|
+
|
|
44
101
|
/* Responsive page typography is independent from density. Density changes information spacing;
|
|
45
102
|
* these tokens change only page chrome so mobile keeps readable body text and touch targets. */
|
|
46
103
|
--page-title-font-size: var(--heading-h1);
|
|
@@ -62,3 +119,13 @@
|
|
|
62
119
|
* whole system stays in sync (gh feedback: Descriptions was ~0px while FormField was 8px). */
|
|
63
120
|
--field-label-gap: var(--space-2); /* 8px */
|
|
64
121
|
}
|
|
122
|
+
|
|
123
|
+
/* Canonical admin collection composition. Services may retune these semantic knobs once. */
|
|
124
|
+
:root {
|
|
125
|
+
--admin-collection-control-height: var(--control-height-default);
|
|
126
|
+
--admin-collection-section-gap: var(--space-stack-md);
|
|
127
|
+
--admin-collection-toolbar-padding-y: 0px;
|
|
128
|
+
--admin-collection-search-measure: 20rem;
|
|
129
|
+
--admin-collection-table-row-height: var(--table-row-height-default);
|
|
130
|
+
--admin-collection-table-cell-padding-y: var(--space-1);
|
|
131
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@godxjp/ui",
|
|
3
|
-
"version": "18.
|
|
4
|
-
"godxUiMcp": "18.
|
|
3
|
+
"version": "18.6.0",
|
|
4
|
+
"godxUiMcp": "18.6.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "pnpm@10.29.1",
|
|
7
7
|
"pnpm": {
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
},
|
|
33
33
|
"./styles": "./dist/styles/index.css",
|
|
34
34
|
"./styles/*": "./dist/styles/*.css",
|
|
35
|
+
"./theme/*": "./dist/theme/*",
|
|
35
36
|
"./tokens": "./dist/tokens/base.css",
|
|
36
37
|
"./admin": {
|
|
37
38
|
"types": "./dist/components/admin/index.d.ts",
|
|
@@ -65,6 +66,10 @@
|
|
|
65
66
|
"types": "./dist/components/charts/index.d.ts",
|
|
66
67
|
"import": "./dist/components/charts/index.js"
|
|
67
68
|
},
|
|
69
|
+
"./charts/compact-bar-trend": {
|
|
70
|
+
"types": "./dist/components/charts/compact-bar-trend.d.ts",
|
|
71
|
+
"import": "./dist/components/charts/compact-bar-trend.js"
|
|
72
|
+
},
|
|
68
73
|
"./ui": {
|
|
69
74
|
"types": "./dist/components/ui/index.d.ts",
|
|
70
75
|
"import": "./dist/components/ui/index.js"
|
|
@@ -109,6 +114,10 @@
|
|
|
109
114
|
"types": "./dist/i18n/index.d.ts",
|
|
110
115
|
"import": "./dist/i18n/index.js"
|
|
111
116
|
},
|
|
117
|
+
"./email": {
|
|
118
|
+
"types": "./dist/email/index.d.ts",
|
|
119
|
+
"import": "./dist/email/index.js"
|
|
120
|
+
},
|
|
112
121
|
"./lib/utils": {
|
|
113
122
|
"types": "./dist/lib/utils.d.ts",
|
|
114
123
|
"import": "./dist/lib/utils.js"
|
|
@@ -286,10 +295,14 @@
|
|
|
286
295
|
"format": "prettier --check .",
|
|
287
296
|
"format:fix": "prettier --write .",
|
|
288
297
|
"test": "vitest run",
|
|
298
|
+
"test:visual:auth-login": "node scripts/auth-shell-login-visual.mjs",
|
|
299
|
+
"test:visual:topbar-collision": "node scripts/topbar-collision-visual.mjs",
|
|
289
300
|
"test:watch": "vitest",
|
|
290
301
|
"test:coverage": "vitest run --coverage",
|
|
291
302
|
"check:example-imports": "node scripts/check-example-imports.mjs",
|
|
292
303
|
"check:frame-coverage": "node scripts/frame-coverage.mjs",
|
|
304
|
+
"gen:frame-coverage-ledger": "node scripts/gen-frame-coverage-ledger.mjs",
|
|
305
|
+
"check:frame-coverage-ledger": "node scripts/gen-frame-coverage-ledger.mjs --check && node scripts/check-frame-coverage-ledger.mjs",
|
|
293
306
|
"check:screen-reader-evidence": "node scripts/check-screen-reader-evidence.mjs",
|
|
294
307
|
"check:voiceover-capture": "node scripts/check-voiceover-capture.mjs",
|
|
295
308
|
"check:data-entry-frame-runtime": "node scripts/check-data-entry-frame-runtime.mjs",
|
|
@@ -301,14 +314,16 @@
|
|
|
301
314
|
"check:display-runtime-evidence": "node scripts/check-display-runtime-evidence.mjs",
|
|
302
315
|
"check:data-table-pagination-wrap": "node scripts/check-data-table-pagination-wrap.mjs",
|
|
303
316
|
"check:button-icon-xs": "node scripts/check-button-icon-xs.mjs",
|
|
304
|
-
"check:frame-contracts": "pnpm check:component-api-manifest && pnpm audit:component-cases && pnpm check:frame-coverage && pnpm check:screen-reader-evidence && pnpm check:data-entry-owner-source && pnpm check:display-runtime-evidence",
|
|
317
|
+
"check:frame-contracts": "pnpm check:component-api-manifest && pnpm audit:component-cases && pnpm check:frame-coverage && pnpm check:frame-coverage-ledger && pnpm check:screen-reader-evidence && pnpm check:data-entry-owner-source && pnpm check:display-runtime-evidence",
|
|
305
318
|
"check:final-touch-rtl": "node scripts/check-final-touch-rtl.mjs",
|
|
306
319
|
"check:frame-runtime": "pnpm check:data-entry-frame-runtime && pnpm check:data-entry-touch-aria && pnpm check:layout-nav-frames && pnpm check:provider-feedback-query-runtime && pnpm check:layout-nav-closure && pnpm check:final-touch-rtl && pnpm check:data-table-pagination-wrap && pnpm check:button-icon-xs",
|
|
307
320
|
"pretest": "pnpm check:frame-coverage",
|
|
308
|
-
"verify": "pnpm typecheck && pnpm lint && pnpm format && pnpm build && pnpm preview:build && pnpm check:example-imports && pnpm check:core-isolation && pnpm check:no-consumer-coupling && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:control-sizing && pnpm check:rtl && pnpm check:typography && pnpm check:mcp-token-sync && pnpm check:mcp-lockstep && pnpm check:mcp-sync && pnpm check:mcp-orphans && pnpm check:mcp-pattern-imports && pnpm check:audit-sync && pnpm check:frame-coverage && pnpm test",
|
|
309
|
-
"verify:static": "pnpm build && pnpm typecheck && pnpm typecheck:docs && pnpm lint && pnpm preview:build && pnpm check:example-imports && pnpm check:core-isolation && pnpm check:no-consumer-coupling && pnpm check:use-client && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:control-sizing && pnpm check:rtl && pnpm check:typography && pnpm check:mcp-token-sync && pnpm check:mcp-lockstep && pnpm check:mcp-sync && pnpm check:mcp-orphans && pnpm check:mcp-pattern-imports && pnpm check:audit-sync && pnpm check:mcp-prop-sync && pnpm check:contrast && pnpm check:visual-audit && pnpm test",
|
|
321
|
+
"verify": "pnpm typecheck && pnpm lint && pnpm format && pnpm build && pnpm preview:build && pnpm check:example-imports && pnpm check:core-isolation && pnpm check:no-consumer-coupling && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:control-sizing && pnpm check:rtl && pnpm check:typography && pnpm check:mcp-token-sync && pnpm check:email-token-sync && pnpm check:mcp-lockstep && pnpm check:mcp-sync && pnpm check:mcp-orphans && pnpm check:mcp-pattern-imports && pnpm check:audit-sync && pnpm check:frame-coverage && pnpm test",
|
|
322
|
+
"verify:static": "pnpm build && pnpm check:packed-public-contract && pnpm typecheck && pnpm typecheck:docs && pnpm lint && pnpm preview:build && pnpm check:example-imports && pnpm check:core-isolation && pnpm check:no-consumer-coupling && pnpm check:use-client && pnpm check:prop-vocabulary && pnpm check:token-tiers && pnpm check:control-sizing && pnpm check:rtl && pnpm check:typography && pnpm check:mcp-token-sync && pnpm check:email-token-sync && pnpm check:mcp-lockstep && pnpm check:mcp-sync && pnpm check:mcp-orphans && pnpm check:mcp-pattern-imports && pnpm check:audit-sync && pnpm check:mcp-prop-sync && pnpm check:contrast && pnpm check:visual-audit && pnpm test",
|
|
310
323
|
"verify:release": "pnpm verify:static && pnpm check:frame-contracts && pnpm check:frame-coverage && pnpm check:frame-axe",
|
|
311
324
|
"check:mcp-lockstep": "node scripts/check-release-lockstep.mjs",
|
|
325
|
+
"check:release-plan": "node scripts/check-release-command-plan.mjs",
|
|
326
|
+
"check:packed-public-contract": "node scripts/check-packed-public-contract.mjs",
|
|
312
327
|
"check:mcp-pattern-imports": "node scripts/check-mcp-pattern-imports.mjs",
|
|
313
328
|
"check:mcp-sync": "node scripts/check-mcp-sync.mjs",
|
|
314
329
|
"check:mcp-orphans": "node scripts/check-mcp-orphans.mjs",
|
|
@@ -323,6 +338,8 @@
|
|
|
323
338
|
"check:typography": "node scripts/check-typography.mjs",
|
|
324
339
|
"gen:component-tokens": "node scripts/gen-component-tokens.mjs",
|
|
325
340
|
"check:mcp-token-sync": "node scripts/gen-component-tokens.mjs --check",
|
|
341
|
+
"gen:email-tokens": "node scripts/gen-email-tokens.mjs",
|
|
342
|
+
"check:email-token-sync": "node scripts/gen-email-tokens.mjs --check",
|
|
326
343
|
"check:core-isolation": "node scripts/check-core-isolation.mjs",
|
|
327
344
|
"check:no-consumer-coupling": "node scripts/check-no-consumer-coupling.mjs",
|
|
328
345
|
"release": "node scripts/release.mjs",
|