@godxjp/ui 18.5.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/dist/components/charts/compact-bar-trend.d.ts +2 -1
- package/dist/components/charts/index.d.ts +4 -1
- package/dist/components/data-display/data-table.d.ts +25 -4
- package/dist/components/data-display/data-table.js +13 -2
- package/dist/components/data-display/empty-state.js +1 -1
- package/dist/components/data-display/index.d.ts +1 -1
- package/dist/components/data-display/list-row.d.ts +19 -0
- package/dist/components/data-display/list-row.js +2 -0
- package/dist/components/data-display/qr-code.d.ts +1 -1
- 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.d.ts +10 -10
- package/dist/components/data-entry/index.d.ts +1 -0
- package/dist/components/data-entry/input-otp.d.ts +1 -0
- package/dist/components/feedback/dialog.d.ts +14 -1
- package/dist/components/feedback/dialog.js +4 -0
- package/dist/components/feedback/index.d.ts +1 -1
- package/dist/components/feedback/index.js +2 -0
- package/dist/components/general/logo.d.ts +7 -1
- package/dist/components/general/logo.js +1 -1
- package/dist/components/layout/app-shell.d.ts +1 -1
- package/dist/components/layout/app-shell.js +55 -46
- 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-shell.d.ts +3 -2
- package/dist/components/layout/centered-shell.d.ts +1 -1
- package/dist/components/layout/centered-shell.js +28 -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 +5 -0
- package/dist/components/layout/index.js +4 -0
- package/dist/components/layout/page-container.d.ts +1 -1
- package/dist/components/layout/page-container.js +4 -0
- package/dist/components/navigation/steps.js +38 -19
- package/dist/components/navigation/tabs.js +12 -3
- 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 +21 -5
- package/dist/email/brand-mark.js +5 -0
- package/dist/email/color.d.ts +2 -1
- package/dist/email/geometry.d.ts +9 -1
- package/dist/email/geometry.js +1 -0
- package/dist/email/index.d.ts +6 -1
- package/dist/email/index.js +6 -0
- package/dist/email/inline-style.d.ts +7 -5
- package/dist/email/inline-style.js +5 -0
- package/dist/email/tokens.generated.d.ts +40 -20
- package/dist/email/tokens.generated.js +40 -20
- package/dist/email/urgency.d.ts +22 -0
- package/dist/email/urgency.js +14 -0
- package/dist/i18n/messages/en.json +15 -1
- package/dist/i18n/messages/ja.json +15 -1
- package/dist/i18n/messages/vi.json +15 -1
- package/dist/props/components/data-display.prop.d.ts +63 -1
- package/dist/props/components/data-entry.prop.d.ts +6 -0
- package/dist/props/components/index.d.ts +1 -1
- package/dist/props/components/layout.prop.d.ts +191 -4
- package/dist/props/components/navigation.prop.d.ts +5 -1
- package/dist/props/registry.d.ts +145 -4
- package/dist/props/registry.js +189 -5
- 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 +9 -0
- package/dist/props/vocabulary/layout.prop.d.ts +38 -7
- package/dist/styles/control.css +28 -0
- package/dist/styles/data-display-layout.css +26 -0
- package/dist/styles/layout.css +99 -0
- package/dist/styles/logo-layout.css +42 -9
- package/dist/styles/navigation-layout.css +109 -0
- package/dist/styles/shell-layout.css +302 -0
- package/dist/styles/table-layout.css +164 -1
- package/dist/theme/dxs.canonical.css +5 -4
- package/dist/tokens/axes.css +4 -3
- package/dist/tokens/base.css +1 -0
- package/dist/tokens/components/data-display.css +13 -0
- package/dist/tokens/components/email.css +43 -16
- package/dist/tokens/components/error-surface.css +36 -0
- package/dist/tokens/components/list-row.css +20 -0
- package/dist/tokens/components/logo.css +52 -10
- package/dist/tokens/components/navigation.css +15 -0
- package/dist/tokens/components/shell.css +72 -0
- package/dist/tokens/components/table.css +45 -0
- package/dist/tokens/foundation.css +26 -0
- package/dist/tokens/semantic/layout.css +25 -0
- package/package.json +8 -2
package/dist/props/registry.d.ts
CHANGED
|
@@ -194,10 +194,35 @@ export declare const VOCABULARY_REGISTRY: {
|
|
|
194
194
|
readonly category: "layout";
|
|
195
195
|
readonly description: "CenteredShell column block alignment — start (flowing page), center (system surface)";
|
|
196
196
|
};
|
|
197
|
+
readonly CenteredShellPresetProp: {
|
|
198
|
+
readonly file: "vocabulary/layout.prop.ts";
|
|
199
|
+
readonly category: "layout";
|
|
200
|
+
readonly description: "CenteredShell whole-page preset — default (untouched box) | public-landing (token-owned public landing measure, section rhythm, flat chrome and hero h1 tier)";
|
|
201
|
+
};
|
|
202
|
+
readonly TablePresetProp: {
|
|
203
|
+
readonly file: "vocabulary/data.prop.ts";
|
|
204
|
+
readonly category: "data";
|
|
205
|
+
readonly description: "Table collection preset — default | action-collection (dense approval/action queue: column-priority measures below the collapse step instead of desktop intrinsic widths)";
|
|
206
|
+
};
|
|
207
|
+
readonly TableColumnPriorityProp: {
|
|
208
|
+
readonly file: "vocabulary/data.prop.ts";
|
|
209
|
+
readonly category: "data";
|
|
210
|
+
readonly description: "Table column priority for the action-collection preset — primary | secondary | meta | actions (unset = takes the remaining space)";
|
|
211
|
+
};
|
|
212
|
+
readonly ErrorSurfaceModeProp: {
|
|
213
|
+
readonly file: "vocabulary/layout.prop.ts";
|
|
214
|
+
readonly category: "layout";
|
|
215
|
+
readonly description: "ErrorSurface shell contract — application (403/404 body inside the route's existing AppShell) vs system (500/503 owns the page via CenteredShell align=center)";
|
|
216
|
+
};
|
|
217
|
+
readonly ErrorSurfaceStatusProp: {
|
|
218
|
+
readonly file: "vocabulary/layout.prop.ts";
|
|
219
|
+
readonly category: "layout";
|
|
220
|
+
readonly description: "HTTP status an ErrorSurface presents — 403 | 404 | 500 | 503 (numeric); drives the default icon, tone and mode";
|
|
221
|
+
};
|
|
197
222
|
readonly AuthShellPresetProp: {
|
|
198
223
|
readonly file: "vocabulary/layout.prop.ts";
|
|
199
224
|
readonly category: "layout";
|
|
200
|
-
readonly description: "AuthShell named flow
|
|
225
|
+
readonly description: "AuthShell named flow geometry — default | login (stable SCR-001 identity/card/footer anchor) | device-authorization (380px card, 5px mobile gutter) | context-selection (25rem card, edge-to-edge mobile) | account-recovery (432px SCR-008 recovery/MFA panel, 15px mobile gutter)";
|
|
201
226
|
};
|
|
202
227
|
readonly GapProp: {
|
|
203
228
|
readonly file: "vocabulary/layout.prop.ts";
|
|
@@ -234,6 +259,11 @@ export declare const VOCABULARY_REGISTRY: {
|
|
|
234
259
|
readonly category: "interaction";
|
|
235
260
|
readonly description: "Corner shape default | pill | sharp — shared by Button + Badge (radius tokens)";
|
|
236
261
|
};
|
|
262
|
+
readonly AvatarShapeProp: {
|
|
263
|
+
readonly file: "vocabulary/interaction.prop.ts";
|
|
264
|
+
readonly category: "interaction";
|
|
265
|
+
readonly description: "Avatar geometry circle (person, --radius-pill) | square (entity-header organization/service mark, --avatar-square-* tokens) — a rounded rect ShapeProp cannot express";
|
|
266
|
+
};
|
|
237
267
|
readonly TextSizeProp: {
|
|
238
268
|
readonly file: "vocabulary/interaction.prop.ts";
|
|
239
269
|
readonly category: "interaction";
|
|
@@ -357,7 +387,7 @@ export declare const VOCABULARY_REGISTRY: {
|
|
|
357
387
|
readonly ColumnDefProp: {
|
|
358
388
|
readonly file: "vocabulary/data.prop.ts";
|
|
359
389
|
readonly category: "data";
|
|
360
|
-
readonly description: "DataTable column definition";
|
|
390
|
+
readonly description: "DataTable column definition — key/header/render/sortable/align/width/pin/hiddenOnMobile/enableHiding/ariaLabel plus `priority` (TableColumnPriorityProp), read by DataTable preset=\"action-collection\"";
|
|
361
391
|
};
|
|
362
392
|
readonly SelectedIdsProp: {
|
|
363
393
|
readonly file: "vocabulary/data.prop.ts";
|
|
@@ -421,6 +451,16 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
421
451
|
readonly file: "components/layout.prop.ts";
|
|
422
452
|
readonly vocabulary: readonly [];
|
|
423
453
|
};
|
|
454
|
+
readonly PageContainerMeasureProp: {
|
|
455
|
+
readonly group: "layout";
|
|
456
|
+
readonly file: "components/layout.prop.ts";
|
|
457
|
+
readonly vocabulary: readonly [];
|
|
458
|
+
};
|
|
459
|
+
readonly PageContainerPresetProp: {
|
|
460
|
+
readonly group: "layout";
|
|
461
|
+
readonly file: "components/layout.prop.ts";
|
|
462
|
+
readonly vocabulary: readonly [];
|
|
463
|
+
};
|
|
424
464
|
readonly PageContainerProp: {
|
|
425
465
|
readonly group: "layout";
|
|
426
466
|
readonly file: "components/layout.prop.ts";
|
|
@@ -428,6 +468,10 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
428
468
|
readonly field: "headerLayout";
|
|
429
469
|
readonly local: true;
|
|
430
470
|
readonly reason: "Header ARRANGEMENT of the title band vs the extra slot below the 640px step (stack | responsive-inline) — orthogonal to PageContainerVariantProp, which selects the page shell layout.";
|
|
471
|
+
}, {
|
|
472
|
+
readonly field: "measure";
|
|
473
|
+
readonly local: true;
|
|
474
|
+
readonly reason: "Bounded page MEASURE shared by the header and body (default | narrow | medium), backed by --page-measure-*. A third orthogonal axis: PageContainerVariantProp owns page CHROME, this owns the inline cap, so a quiet ghost page can also be measure-bounded.";
|
|
431
475
|
}];
|
|
432
476
|
};
|
|
433
477
|
readonly FlexDirectionProp: {
|
|
@@ -464,6 +508,14 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
464
508
|
readonly field: "wrap";
|
|
465
509
|
readonly local: true;
|
|
466
510
|
readonly reason: "Flex-specific boolean shorthand for flex-wrap.";
|
|
511
|
+
}, "BreakpointProp", {
|
|
512
|
+
readonly field: "hideBelow";
|
|
513
|
+
readonly local: true;
|
|
514
|
+
readonly reason: "Responsive region visibility at a canonical breakpoint step — the public alternative to a page-local media query (gh#252).";
|
|
515
|
+
}, {
|
|
516
|
+
readonly field: "hideFrom";
|
|
517
|
+
readonly local: true;
|
|
518
|
+
readonly reason: "Inverse of hideBelow — keeps a compact-only region off the wide layout.";
|
|
467
519
|
}];
|
|
468
520
|
};
|
|
469
521
|
readonly ResponsiveGridColumnsProp: {
|
|
@@ -581,10 +633,66 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
581
633
|
readonly reason: "Authoritative requesting-client context for a delegated auth flow (device grant / consent).";
|
|
582
634
|
}];
|
|
583
635
|
};
|
|
636
|
+
readonly AuthAccountSummaryProp: {
|
|
637
|
+
readonly group: "layout";
|
|
638
|
+
readonly file: "components/layout.prop.ts";
|
|
639
|
+
readonly vocabulary: readonly ["DisabledProp", "ClassNameProp"];
|
|
640
|
+
readonly local: readonly ["email", "avatarSrc", "avatarFallback", "actionLabel", "onAction"];
|
|
641
|
+
};
|
|
584
642
|
readonly CenteredShellProp: {
|
|
585
643
|
readonly group: "layout";
|
|
586
644
|
readonly file: "components/layout.prop.ts";
|
|
587
|
-
readonly vocabulary: readonly ["ChildrenProp", "ClassNameProp", "CenteredShellWidthProp", "CenteredShellAlignProp"];
|
|
645
|
+
readonly vocabulary: readonly ["ChildrenProp", "ClassNameProp", "CenteredShellWidthProp", "CenteredShellAlignProp", "CenteredShellPresetProp"];
|
|
646
|
+
};
|
|
647
|
+
readonly ErrorSurfaceMaintenanceProp: {
|
|
648
|
+
readonly group: "layout";
|
|
649
|
+
readonly file: "components/layout.prop.ts";
|
|
650
|
+
readonly vocabulary: readonly [{
|
|
651
|
+
readonly field: "start";
|
|
652
|
+
readonly local: true;
|
|
653
|
+
readonly reason: "ISO 8601 instant starting the maintenance window; formatted via Intl.DateTimeFormat and emitted as the <time dateTime> value.";
|
|
654
|
+
}, {
|
|
655
|
+
readonly field: "end";
|
|
656
|
+
readonly local: true;
|
|
657
|
+
readonly reason: "ISO 8601 instant ending the window; omitted for an open-ended outage.";
|
|
658
|
+
}, {
|
|
659
|
+
readonly field: "timeZone";
|
|
660
|
+
readonly local: true;
|
|
661
|
+
readonly reason: "IANA time zone id the window is presented in — explicit so SSR and client output cannot diverge.";
|
|
662
|
+
}, {
|
|
663
|
+
readonly field: "progress";
|
|
664
|
+
readonly local: true;
|
|
665
|
+
readonly reason: "Server-sent 0–100 completion of the maintenance window; deriving it from the client clock would break hydration.";
|
|
666
|
+
}];
|
|
667
|
+
};
|
|
668
|
+
readonly ErrorSurfaceProp: {
|
|
669
|
+
readonly group: "layout";
|
|
670
|
+
readonly file: "components/layout.prop.ts";
|
|
671
|
+
readonly vocabulary: readonly ["ErrorSurfaceModeProp", "ErrorSurfaceStatusProp", "TitleProp", "DescriptionProp", "ActionProp", "IconProp", "HeadingLevelProp", "FooterProp", "CenteredShellWidthProp", "IdProp", "ClassNameProp", {
|
|
672
|
+
readonly field: "tone";
|
|
673
|
+
readonly local: true;
|
|
674
|
+
readonly reason: "Reuses the EmptyStateToneProp union verbatim (the surface renders an EmptyState) — a status-derived default the consumer may override, not a new tone vocabulary.";
|
|
675
|
+
}, {
|
|
676
|
+
readonly field: "requestId";
|
|
677
|
+
readonly local: true;
|
|
678
|
+
readonly reason: "Support correlation id for the failure, rendered as a mono/tabular metadata row — an identifier, not a LabelProp.";
|
|
679
|
+
}, {
|
|
680
|
+
readonly field: "permission";
|
|
681
|
+
readonly local: true;
|
|
682
|
+
readonly reason: "The permission/role the viewer is missing (403). The localized label is the surface's; the value is the bare permission name.";
|
|
683
|
+
}, {
|
|
684
|
+
readonly field: "organization";
|
|
685
|
+
readonly local: true;
|
|
686
|
+
readonly reason: "The organization/tenant the failed request was scoped to — disambiguates a wrong-workspace 403 from a missing-role 403.";
|
|
687
|
+
}, {
|
|
688
|
+
readonly field: "maintenance";
|
|
689
|
+
readonly local: true;
|
|
690
|
+
readonly reason: "ErrorSurfaceMaintenanceProp timing/progress slot (ISO 8601 + IANA), formatted with Intl.DateTimeFormat.";
|
|
691
|
+
}, {
|
|
692
|
+
readonly field: "brand";
|
|
693
|
+
readonly local: true;
|
|
694
|
+
readonly reason: "system-mode brand slot above the status code (a Logo); the application shell already shows the brand.";
|
|
695
|
+
}];
|
|
588
696
|
};
|
|
589
697
|
readonly LegalDocumentSectionProp: {
|
|
590
698
|
readonly group: "layout";
|
|
@@ -925,6 +1033,11 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
925
1033
|
readonly file: "components/data-display.prop.ts";
|
|
926
1034
|
readonly vocabulary: readonly ["LabelProp", "ValueProp"];
|
|
927
1035
|
};
|
|
1036
|
+
readonly AvatarProp: {
|
|
1037
|
+
readonly group: "data-display";
|
|
1038
|
+
readonly file: "components/data-display.prop.ts";
|
|
1039
|
+
readonly vocabulary: readonly ["AvatarShapeProp", "ChildrenProp", "ClassNameProp"];
|
|
1040
|
+
};
|
|
928
1041
|
readonly BadgeProp: {
|
|
929
1042
|
readonly group: "data-display";
|
|
930
1043
|
readonly file: "components/data-display.prop.ts";
|
|
@@ -933,7 +1046,25 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
933
1046
|
readonly DataTableProp: {
|
|
934
1047
|
readonly group: "data-display";
|
|
935
1048
|
readonly file: "components/data-display.prop.ts";
|
|
936
|
-
readonly vocabulary: readonly ["ColumnDefProp", "DensityProp", "SortStateProp", "SelectedIdsProp", "HandlerProp"];
|
|
1049
|
+
readonly vocabulary: readonly ["ColumnDefProp", "DensityProp", "SortStateProp", "SelectedIdsProp", "HandlerProp", "TablePresetProp", "TableColumnPriorityProp", "BreakpointProp"];
|
|
1050
|
+
};
|
|
1051
|
+
readonly ListRowDensityProp: {
|
|
1052
|
+
readonly group: "data-display";
|
|
1053
|
+
readonly file: "components/data-display.prop.ts";
|
|
1054
|
+
readonly vocabulary: readonly [];
|
|
1055
|
+
};
|
|
1056
|
+
readonly ListRowProp: {
|
|
1057
|
+
readonly group: "data-display";
|
|
1058
|
+
readonly file: "components/data-display.prop.ts";
|
|
1059
|
+
readonly vocabulary: readonly ["TitleProp", "DescriptionProp", "ClassNameProp", {
|
|
1060
|
+
readonly field: "density";
|
|
1061
|
+
readonly local: true;
|
|
1062
|
+
readonly reason: "ListRow-local density subset (default | compact) — the compact inline-actions geometry (#246). No `comfortable` step, and unrelated to PageDensityProp/TableDensityProp.";
|
|
1063
|
+
}, {
|
|
1064
|
+
readonly field: "overflow";
|
|
1065
|
+
readonly local: true;
|
|
1066
|
+
readonly reason: "Row-local overflow resolution for the title/description column (truncate | wrap, #224).";
|
|
1067
|
+
}];
|
|
937
1068
|
};
|
|
938
1069
|
readonly CredentialRevealProp: {
|
|
939
1070
|
readonly group: "data-display";
|
|
@@ -1274,6 +1405,16 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
1274
1405
|
readonly file: "components/navigation.prop.ts";
|
|
1275
1406
|
readonly vocabulary: readonly ["ValueProp", "DefaultValueProp", "SizeProp", "OnValueChangeProp", "ClassNameProp"];
|
|
1276
1407
|
};
|
|
1408
|
+
readonly InputOTPGroupProp: {
|
|
1409
|
+
readonly group: "data-entry";
|
|
1410
|
+
readonly file: "components/data-entry.prop.ts";
|
|
1411
|
+
readonly vocabulary: readonly ["ClassNameProp"];
|
|
1412
|
+
};
|
|
1413
|
+
readonly InputOTPGroupAppearanceProp: {
|
|
1414
|
+
readonly group: "data-entry";
|
|
1415
|
+
readonly file: "components/data-entry.prop.ts";
|
|
1416
|
+
readonly vocabulary: readonly [];
|
|
1417
|
+
};
|
|
1277
1418
|
readonly StepItemProp: {
|
|
1278
1419
|
readonly group: "navigation";
|
|
1279
1420
|
readonly file: "components/navigation.prop.ts";
|
package/dist/props/registry.js
CHANGED
|
@@ -192,10 +192,35 @@ const VOCABULARY_REGISTRY = {
|
|
|
192
192
|
category: "layout",
|
|
193
193
|
description: "CenteredShell column block alignment \u2014 start (flowing page), center (system surface)"
|
|
194
194
|
},
|
|
195
|
+
CenteredShellPresetProp: {
|
|
196
|
+
file: "vocabulary/layout.prop.ts",
|
|
197
|
+
category: "layout",
|
|
198
|
+
description: "CenteredShell whole-page preset \u2014 default (untouched box) | public-landing (token-owned public landing measure, section rhythm, flat chrome and hero h1 tier)"
|
|
199
|
+
},
|
|
200
|
+
TablePresetProp: {
|
|
201
|
+
file: "vocabulary/data.prop.ts",
|
|
202
|
+
category: "data",
|
|
203
|
+
description: "Table collection preset \u2014 default | action-collection (dense approval/action queue: column-priority measures below the collapse step instead of desktop intrinsic widths)"
|
|
204
|
+
},
|
|
205
|
+
TableColumnPriorityProp: {
|
|
206
|
+
file: "vocabulary/data.prop.ts",
|
|
207
|
+
category: "data",
|
|
208
|
+
description: "Table column priority for the action-collection preset \u2014 primary | secondary | meta | actions (unset = takes the remaining space)"
|
|
209
|
+
},
|
|
210
|
+
ErrorSurfaceModeProp: {
|
|
211
|
+
file: "vocabulary/layout.prop.ts",
|
|
212
|
+
category: "layout",
|
|
213
|
+
description: "ErrorSurface shell contract \u2014 application (403/404 body inside the route's existing AppShell) vs system (500/503 owns the page via CenteredShell align=center)"
|
|
214
|
+
},
|
|
215
|
+
ErrorSurfaceStatusProp: {
|
|
216
|
+
file: "vocabulary/layout.prop.ts",
|
|
217
|
+
category: "layout",
|
|
218
|
+
description: "HTTP status an ErrorSurface presents \u2014 403 | 404 | 500 | 503 (numeric); drives the default icon, tone and mode"
|
|
219
|
+
},
|
|
195
220
|
AuthShellPresetProp: {
|
|
196
221
|
file: "vocabulary/layout.prop.ts",
|
|
197
222
|
category: "layout",
|
|
198
|
-
description: "AuthShell named flow
|
|
223
|
+
description: "AuthShell named flow geometry \u2014 default | login (stable SCR-001 identity/card/footer anchor) | device-authorization (380px card, 5px mobile gutter) | context-selection (25rem card, edge-to-edge mobile) | account-recovery (432px SCR-008 recovery/MFA panel, 15px mobile gutter)"
|
|
199
224
|
},
|
|
200
225
|
GapProp: {
|
|
201
226
|
file: "vocabulary/layout.prop.ts",
|
|
@@ -233,6 +258,11 @@ const VOCABULARY_REGISTRY = {
|
|
|
233
258
|
category: "interaction",
|
|
234
259
|
description: "Corner shape default | pill | sharp \u2014 shared by Button + Badge (radius tokens)"
|
|
235
260
|
},
|
|
261
|
+
AvatarShapeProp: {
|
|
262
|
+
file: "vocabulary/interaction.prop.ts",
|
|
263
|
+
category: "interaction",
|
|
264
|
+
description: "Avatar geometry circle (person, --radius-pill) | square (entity-header organization/service mark, --avatar-square-* tokens) \u2014 a rounded rect ShapeProp cannot express"
|
|
265
|
+
},
|
|
236
266
|
TextSizeProp: {
|
|
237
267
|
file: "vocabulary/interaction.prop.ts",
|
|
238
268
|
category: "interaction",
|
|
@@ -358,7 +388,7 @@ const VOCABULARY_REGISTRY = {
|
|
|
358
388
|
ColumnDefProp: {
|
|
359
389
|
file: "vocabulary/data.prop.ts",
|
|
360
390
|
category: "data",
|
|
361
|
-
description:
|
|
391
|
+
description: 'DataTable column definition \u2014 key/header/render/sortable/align/width/pin/hiddenOnMobile/enableHiding/ariaLabel plus `priority` (TableColumnPriorityProp), read by DataTable preset="action-collection"'
|
|
362
392
|
},
|
|
363
393
|
SelectedIdsProp: {
|
|
364
394
|
file: "vocabulary/data.prop.ts",
|
|
@@ -425,6 +455,16 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
425
455
|
file: "components/layout.prop.ts",
|
|
426
456
|
vocabulary: []
|
|
427
457
|
},
|
|
458
|
+
PageContainerMeasureProp: {
|
|
459
|
+
group: "layout",
|
|
460
|
+
file: "components/layout.prop.ts",
|
|
461
|
+
vocabulary: []
|
|
462
|
+
},
|
|
463
|
+
PageContainerPresetProp: {
|
|
464
|
+
group: "layout",
|
|
465
|
+
file: "components/layout.prop.ts",
|
|
466
|
+
vocabulary: []
|
|
467
|
+
},
|
|
428
468
|
PageContainerProp: {
|
|
429
469
|
group: "layout",
|
|
430
470
|
file: "components/layout.prop.ts",
|
|
@@ -440,6 +480,11 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
440
480
|
field: "headerLayout",
|
|
441
481
|
local: true,
|
|
442
482
|
reason: "Header ARRANGEMENT of the title band vs the extra slot below the 640px step (stack | responsive-inline) \u2014 orthogonal to PageContainerVariantProp, which selects the page shell layout."
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
field: "measure",
|
|
486
|
+
local: true,
|
|
487
|
+
reason: "Bounded page MEASURE shared by the header and body (default | narrow | medium), backed by --page-measure-*. A third orthogonal axis: PageContainerVariantProp owns page CHROME, this owns the inline cap, so a quiet ghost page can also be measure-bounded."
|
|
443
488
|
}
|
|
444
489
|
]
|
|
445
490
|
},
|
|
@@ -454,7 +499,18 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
454
499
|
"GapProp",
|
|
455
500
|
{ field: "align", local: true, reason: "Flex-specific align-items keyword subset." },
|
|
456
501
|
{ field: "justify", local: true, reason: "Flex-specific justify-content keyword subset." },
|
|
457
|
-
{ field: "wrap", local: true, reason: "Flex-specific boolean shorthand for flex-wrap." }
|
|
502
|
+
{ field: "wrap", local: true, reason: "Flex-specific boolean shorthand for flex-wrap." },
|
|
503
|
+
"BreakpointProp",
|
|
504
|
+
{
|
|
505
|
+
field: "hideBelow",
|
|
506
|
+
local: true,
|
|
507
|
+
reason: "Responsive region visibility at a canonical breakpoint step \u2014 the public alternative to a page-local media query (gh#252)."
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
field: "hideFrom",
|
|
511
|
+
local: true,
|
|
512
|
+
reason: "Inverse of hideBelow \u2014 keeps a compact-only region off the wide layout."
|
|
513
|
+
}
|
|
458
514
|
]
|
|
459
515
|
},
|
|
460
516
|
ResponsiveGridColumnsProp: { group: "layout", file: "components/layout.prop.ts", vocabulary: [] },
|
|
@@ -596,6 +652,12 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
596
652
|
}
|
|
597
653
|
]
|
|
598
654
|
},
|
|
655
|
+
AuthAccountSummaryProp: {
|
|
656
|
+
group: "layout",
|
|
657
|
+
file: "components/layout.prop.ts",
|
|
658
|
+
vocabulary: ["DisabledProp", "ClassNameProp"],
|
|
659
|
+
local: ["email", "avatarSrc", "avatarFallback", "actionLabel", "onAction"]
|
|
660
|
+
},
|
|
599
661
|
CenteredShellProp: {
|
|
600
662
|
group: "layout",
|
|
601
663
|
file: "components/layout.prop.ts",
|
|
@@ -603,7 +665,81 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
603
665
|
"ChildrenProp",
|
|
604
666
|
"ClassNameProp",
|
|
605
667
|
"CenteredShellWidthProp",
|
|
606
|
-
"CenteredShellAlignProp"
|
|
668
|
+
"CenteredShellAlignProp",
|
|
669
|
+
"CenteredShellPresetProp"
|
|
670
|
+
]
|
|
671
|
+
},
|
|
672
|
+
ErrorSurfaceMaintenanceProp: {
|
|
673
|
+
group: "layout",
|
|
674
|
+
file: "components/layout.prop.ts",
|
|
675
|
+
vocabulary: [
|
|
676
|
+
{
|
|
677
|
+
field: "start",
|
|
678
|
+
local: true,
|
|
679
|
+
reason: "ISO 8601 instant starting the maintenance window; formatted via Intl.DateTimeFormat and emitted as the <time dateTime> value."
|
|
680
|
+
},
|
|
681
|
+
{
|
|
682
|
+
field: "end",
|
|
683
|
+
local: true,
|
|
684
|
+
reason: "ISO 8601 instant ending the window; omitted for an open-ended outage."
|
|
685
|
+
},
|
|
686
|
+
{
|
|
687
|
+
field: "timeZone",
|
|
688
|
+
local: true,
|
|
689
|
+
reason: "IANA time zone id the window is presented in \u2014 explicit so SSR and client output cannot diverge."
|
|
690
|
+
},
|
|
691
|
+
{
|
|
692
|
+
field: "progress",
|
|
693
|
+
local: true,
|
|
694
|
+
reason: "Server-sent 0\u2013100 completion of the maintenance window; deriving it from the client clock would break hydration."
|
|
695
|
+
}
|
|
696
|
+
]
|
|
697
|
+
},
|
|
698
|
+
ErrorSurfaceProp: {
|
|
699
|
+
group: "layout",
|
|
700
|
+
file: "components/layout.prop.ts",
|
|
701
|
+
vocabulary: [
|
|
702
|
+
"ErrorSurfaceModeProp",
|
|
703
|
+
"ErrorSurfaceStatusProp",
|
|
704
|
+
"TitleProp",
|
|
705
|
+
"DescriptionProp",
|
|
706
|
+
"ActionProp",
|
|
707
|
+
"IconProp",
|
|
708
|
+
"HeadingLevelProp",
|
|
709
|
+
"FooterProp",
|
|
710
|
+
"CenteredShellWidthProp",
|
|
711
|
+
"IdProp",
|
|
712
|
+
"ClassNameProp",
|
|
713
|
+
{
|
|
714
|
+
field: "tone",
|
|
715
|
+
local: true,
|
|
716
|
+
reason: "Reuses the EmptyStateToneProp union verbatim (the surface renders an EmptyState) \u2014 a status-derived default the consumer may override, not a new tone vocabulary."
|
|
717
|
+
},
|
|
718
|
+
{
|
|
719
|
+
field: "requestId",
|
|
720
|
+
local: true,
|
|
721
|
+
reason: "Support correlation id for the failure, rendered as a mono/tabular metadata row \u2014 an identifier, not a LabelProp."
|
|
722
|
+
},
|
|
723
|
+
{
|
|
724
|
+
field: "permission",
|
|
725
|
+
local: true,
|
|
726
|
+
reason: "The permission/role the viewer is missing (403). The localized label is the surface's; the value is the bare permission name."
|
|
727
|
+
},
|
|
728
|
+
{
|
|
729
|
+
field: "organization",
|
|
730
|
+
local: true,
|
|
731
|
+
reason: "The organization/tenant the failed request was scoped to \u2014 disambiguates a wrong-workspace 403 from a missing-role 403."
|
|
732
|
+
},
|
|
733
|
+
{
|
|
734
|
+
field: "maintenance",
|
|
735
|
+
local: true,
|
|
736
|
+
reason: "ErrorSurfaceMaintenanceProp timing/progress slot (ISO 8601 + IANA), formatted with Intl.DateTimeFormat."
|
|
737
|
+
},
|
|
738
|
+
{
|
|
739
|
+
field: "brand",
|
|
740
|
+
local: true,
|
|
741
|
+
reason: "system-mode brand slot above the status code (a Logo); the application shell already shows the brand."
|
|
742
|
+
}
|
|
607
743
|
]
|
|
608
744
|
},
|
|
609
745
|
LegalDocumentSectionProp: {
|
|
@@ -1048,6 +1184,11 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
1048
1184
|
file: "components/data-display.prop.ts",
|
|
1049
1185
|
vocabulary: ["LabelProp", "ValueProp"]
|
|
1050
1186
|
},
|
|
1187
|
+
AvatarProp: {
|
|
1188
|
+
group: "data-display",
|
|
1189
|
+
file: "components/data-display.prop.ts",
|
|
1190
|
+
vocabulary: ["AvatarShapeProp", "ChildrenProp", "ClassNameProp"]
|
|
1191
|
+
},
|
|
1051
1192
|
BadgeProp: {
|
|
1052
1193
|
group: "data-display",
|
|
1053
1194
|
file: "components/data-display.prop.ts",
|
|
@@ -1056,7 +1197,40 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
1056
1197
|
DataTableProp: {
|
|
1057
1198
|
group: "data-display",
|
|
1058
1199
|
file: "components/data-display.prop.ts",
|
|
1059
|
-
vocabulary: [
|
|
1200
|
+
vocabulary: [
|
|
1201
|
+
"ColumnDefProp",
|
|
1202
|
+
"DensityProp",
|
|
1203
|
+
"SortStateProp",
|
|
1204
|
+
"SelectedIdsProp",
|
|
1205
|
+
"HandlerProp",
|
|
1206
|
+
"TablePresetProp",
|
|
1207
|
+
"TableColumnPriorityProp",
|
|
1208
|
+
"BreakpointProp"
|
|
1209
|
+
]
|
|
1210
|
+
},
|
|
1211
|
+
ListRowDensityProp: {
|
|
1212
|
+
group: "data-display",
|
|
1213
|
+
file: "components/data-display.prop.ts",
|
|
1214
|
+
vocabulary: []
|
|
1215
|
+
},
|
|
1216
|
+
ListRowProp: {
|
|
1217
|
+
group: "data-display",
|
|
1218
|
+
file: "components/data-display.prop.ts",
|
|
1219
|
+
vocabulary: [
|
|
1220
|
+
"TitleProp",
|
|
1221
|
+
"DescriptionProp",
|
|
1222
|
+
"ClassNameProp",
|
|
1223
|
+
{
|
|
1224
|
+
field: "density",
|
|
1225
|
+
local: true,
|
|
1226
|
+
reason: "ListRow-local density subset (default | compact) \u2014 the compact inline-actions geometry (#246). No `comfortable` step, and unrelated to PageDensityProp/TableDensityProp."
|
|
1227
|
+
},
|
|
1228
|
+
{
|
|
1229
|
+
field: "overflow",
|
|
1230
|
+
local: true,
|
|
1231
|
+
reason: "Row-local overflow resolution for the title/description column (truncate | wrap, #224)."
|
|
1232
|
+
}
|
|
1233
|
+
]
|
|
1060
1234
|
},
|
|
1061
1235
|
CredentialRevealProp: {
|
|
1062
1236
|
group: "data-display",
|
|
@@ -1362,6 +1536,16 @@ const COMPONENT_PROP_REGISTRY = {
|
|
|
1362
1536
|
file: "components/navigation.prop.ts",
|
|
1363
1537
|
vocabulary: ["ValueProp", "DefaultValueProp", "SizeProp", "OnValueChangeProp", "ClassNameProp"]
|
|
1364
1538
|
},
|
|
1539
|
+
InputOTPGroupProp: {
|
|
1540
|
+
group: "data-entry",
|
|
1541
|
+
file: "components/data-entry.prop.ts",
|
|
1542
|
+
vocabulary: ["ClassNameProp"]
|
|
1543
|
+
},
|
|
1544
|
+
InputOTPGroupAppearanceProp: {
|
|
1545
|
+
group: "data-entry",
|
|
1546
|
+
file: "components/data-entry.prop.ts",
|
|
1547
|
+
vocabulary: []
|
|
1548
|
+
},
|
|
1365
1549
|
StepItemProp: {
|
|
1366
1550
|
group: "navigation",
|
|
1367
1551
|
file: "components/navigation.prop.ts",
|
|
@@ -40,6 +40,17 @@ export type ColumnDefProp<T> = {
|
|
|
40
40
|
* separating shadow. Pin at most one column per table.
|
|
41
41
|
*/
|
|
42
42
|
pin?: "end";
|
|
43
|
+
/**
|
|
44
|
+
* Relative importance of the column, read ONLY by `DataTable preset="action-collection"`
|
|
45
|
+
* (gh#253). It is the SAME contract the `Table` primitive exposes on `TableHead`/`TableCell`:
|
|
46
|
+
* DataTable stamps it onto both cells of the column for you, so the preset can swap the desktop
|
|
47
|
+
* intrinsic widths for the token-owned priority measures (`--table-action-collection-*`) instead
|
|
48
|
+
* of scrolling a five-column approval queue sideways at 390px. Leave the free-text column
|
|
49
|
+
* unmarked — it takes the remaining space. Emitted as `data-priority` only when set, so an
|
|
50
|
+
* ordinary column gains no attribute. Prefer this over `width` under the preset: an explicit
|
|
51
|
+
* `width` utility wins the cascade and defeats the priority measure.
|
|
52
|
+
*/
|
|
53
|
+
priority?: TableColumnPriorityProp;
|
|
43
54
|
};
|
|
44
55
|
/** Set of selected row IDs. */
|
|
45
56
|
export type SelectedIdsProp = Set<string>;
|
|
@@ -64,3 +75,19 @@ export type HasActiveFiltersProp = boolean;
|
|
|
64
75
|
* offset/background are tuned via the `--filter-bar-sticky-*` theme knobs.
|
|
65
76
|
*/
|
|
66
77
|
export type StickyProp = boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Table named collection preset. `"default"` keeps the plain table (and emits no attribute).
|
|
80
|
+
* `"action-collection"` is the canonical dense approval / action queue: below `collapseBelow`
|
|
81
|
+
* the desktop intrinsic column widths are replaced by token-owned column-PRIORITY measures under
|
|
82
|
+
* `table-layout: fixed` and cells wrap, so every column — including the row actions — stays inside
|
|
83
|
+
* the initial narrow frame. The real `<table>` semantics are never rewritten.
|
|
84
|
+
*/
|
|
85
|
+
export type TablePresetProp = "default" | "action-collection";
|
|
86
|
+
/**
|
|
87
|
+
* Relative importance of a table column, used by `preset="action-collection"` to allocate the
|
|
88
|
+
* narrow-frame measure. `"primary"` is the row's subject, `"secondary"` its object/target,
|
|
89
|
+
* `"meta"` a low-priority stamp (dates, ids), `"actions"` the row-action affordance whose measure
|
|
90
|
+
* is reserved first so it can never be pushed outside the viewport. A column with no priority
|
|
91
|
+
* takes the remaining space (the free-text column).
|
|
92
|
+
*/
|
|
93
|
+
export type TableColumnPriorityProp = "primary" | "secondary" | "meta" | "actions";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Barrel — all vocabulary prop types. */
|
|
2
2
|
export type { ClassNameProp, ChildrenProp, IdProp, OpenProp, DefaultOpenProp, OnOpenChangeProp, HandlerProp, PendingProp, RequiredProp, DisabledProp, LabelProp, HelperProp, ErrorProp, PlaceholderProp, NameProp, ValueProp, DefaultValueProp, OnValueChangeProp, OnChangeProp, OnClickProp, AsChildProp, WidthProp, } from "./shared.prop.js";
|
|
3
3
|
export type { TitleProp, SubtitleProp, DescriptionProp, ExtraProp, FooterProp, ActionProp, IconProp, ConfirmLabelProp, CancelLabelProp, ActionsProp, EmptyMessageProp, } from "./content.prop.js";
|
|
4
|
-
export type { PageDensityProp, PageContainerVariantProp, CenteredShellWidthProp, CenteredShellAlignProp, AuthShellPresetProp, TableDensityProp, DensityProp, GapProp, } from "./layout.prop.js";
|
|
5
|
-
export type { ButtonVariantProp, ButtonSizeProp, BadgeVariantProp, AppSettingPickerAppearanceProp, ShapeProp, TextSizeProp, TextToneProp, FontWeightProp, HeadingLevelProp, TextAlignProp, SizeProp, FormLayoutProp, BreakpointProp, ConfirmVariantProp, ToneProp, AlertVariantProp, SortDirectionProp, ColumnAlignProp, SortStateProp, RevealDelayProp, } from "./interaction.prop.js";
|
|
4
|
+
export type { PageDensityProp, PageContainerVariantProp, CenteredShellWidthProp, CenteredShellAlignProp, CenteredShellPresetProp, ErrorSurfaceModeProp, ErrorSurfaceStatusProp, AuthShellPresetProp, TableDensityProp, DensityProp, GapProp, } from "./layout.prop.js";
|
|
5
|
+
export type { ButtonVariantProp, ButtonSizeProp, BadgeVariantProp, AppSettingPickerAppearanceProp, ShapeProp, AvatarShapeProp, TextSizeProp, TextToneProp, FontWeightProp, HeadingLevelProp, TextAlignProp, SizeProp, FormLayoutProp, BreakpointProp, ConfirmVariantProp, ToneProp, AlertVariantProp, SortDirectionProp, ColumnAlignProp, SortStateProp, RevealDelayProp, } from "./interaction.prop.js";
|
|
6
6
|
export type { BreadcrumbItemProp, BreadcrumbProp } from "./navigation.prop.js";
|
|
7
|
-
export type { GetRowIdProp, OnRowClickProp, ColumnDefProp, SelectedIdsProp, OnSelectChangeProp, OnTableDensityChangeProp, OnSortChangeProp, OnSearchChangeProp, OnClearFiltersProp, HasActiveFiltersProp, StickyProp, } from "./data.prop.js";
|
|
7
|
+
export type { GetRowIdProp, OnRowClickProp, ColumnDefProp, TablePresetProp, TableColumnPriorityProp, SelectedIdsProp, OnSelectChangeProp, OnTableDensityChangeProp, OnSortChangeProp, OnSearchChangeProp, OnClearFiltersProp, HasActiveFiltersProp, StickyProp, } from "./data.prop.js";
|
|
@@ -7,6 +7,15 @@ export type ButtonVariantProp = "default" | "destructive" | "outline" | "dashed"
|
|
|
7
7
|
/** Corner shape — maps to the radius tokens (default = control/component radius). Shared by
|
|
8
8
|
* Button + Badge. `pill` = fully rounded (`--radius-pill`), `sharp` = square (`--radius-sharp`). */
|
|
9
9
|
export type ShapeProp = "default" | "pill" | "sharp";
|
|
10
|
+
/**
|
|
11
|
+
* Avatar geometry — WHAT the mark represents, not just its corner radius, which is why it is a
|
|
12
|
+
* separate vocabulary from the control `ShapeProp` (`default | pill | sharp`): an entity mark is a
|
|
13
|
+
* ROUNDED rect, a value `ShapeProp` cannot express (its `sharp` = `--radius-sharp` = 0).
|
|
14
|
+
* - `circle` (default) — a person: the fully-round `--radius-pill` identity avatar.
|
|
15
|
+
* - `square` — an organization / service entity mark for an entity header: the compact rounded
|
|
16
|
+
* square on the brand surface (`--avatar-square-*` tokens).
|
|
17
|
+
*/
|
|
18
|
+
export type AvatarShapeProp = "circle" | "square";
|
|
10
19
|
/** Text size — steps of the golden-ratio type scale (NEVER an arbitrary px). `sm` = base. */
|
|
11
20
|
export type TextSizeProp = "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
|
|
12
21
|
/** Text colour intent — maps to semantic foreground tokens (no raw palette). */
|
|
@@ -17,18 +17,49 @@ export type CenteredShellWidthProp = "sm" | "md" | "lg";
|
|
|
17
17
|
* maintenance notice) — the geometry stays package-owned, so no consumer `min-h-dvh` / flex CSS.
|
|
18
18
|
*/
|
|
19
19
|
export type CenteredShellAlignProp = "start" | "center";
|
|
20
|
+
/**
|
|
21
|
+
* ErrorSurface shell contract — WHERE the exception surface lives, not how it looks.
|
|
22
|
+
*
|
|
23
|
+
* `"application"` (403 / 404): the failure happened INSIDE the authenticated app, so the surface is
|
|
24
|
+
* the page BODY of the `AppShell` the route already renders. It never reconstructs nav chrome — a
|
|
25
|
+
* component cannot manufacture the sidebar/topbar/user menu, which are consumer-owned; it renders
|
|
26
|
+
* as `AppShell`'s children (usually inside a `PageContainer`) so the shell is PRESERVED and the
|
|
27
|
+
* user is never stranded chrome-less.
|
|
28
|
+
*
|
|
29
|
+
* `"system"` (500 / 503): the app itself failed — session and nav data may be gone — so the surface
|
|
30
|
+
* owns the whole page and renders package-owned viewport-centred geometry
|
|
31
|
+
* (`CenteredShell align="center"`), with no consumer `min-h-dvh` / flex CSS at 1440 / 1024 / 390.
|
|
32
|
+
*/
|
|
33
|
+
export type ErrorSurfaceModeProp = "application" | "system";
|
|
34
|
+
/**
|
|
35
|
+
* The HTTP status an ErrorSurface presents. Deliberately closed to the four exception pages every
|
|
36
|
+
* app ships (RFC 9110 §15.5.4 / §15.5.5 / §15.6.1 / §15.6.4); it drives the default icon, tone and
|
|
37
|
+
* the recommended `mode`. A number, never a string — it is the numeric status, and it is rendered
|
|
38
|
+
* with tabular figures.
|
|
39
|
+
*/
|
|
40
|
+
export type ErrorSurfaceStatusProp = 403 | 404 | 500 | 503;
|
|
20
41
|
/**
|
|
21
42
|
* AuthShell named flow preset — the page MEASURE contract for a canonical hosted-identity flow
|
|
22
43
|
* (card max-width plus the desktop and mobile page gutters), owned by component tokens.
|
|
23
|
-
* `"default"` keeps the shell's own measure; `"
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* measure
|
|
27
|
-
*
|
|
28
|
-
* combine them.
|
|
44
|
+
* `"default"` keeps the shell's own measure; `"login"` owns SCR-001's stable card anchor for
|
|
45
|
+
* standalone and requester flows; `"device-authorization"` is the 380px device-grant measure with
|
|
46
|
+
* a 5px mobile inline gutter; `"context-selection"` is the 25rem organisation/context picker
|
|
47
|
+
* measure that goes edge-to-edge on mobile; `"account-recovery"` is the 432px SCR-008 measure
|
|
48
|
+
* shared by the password-recovery and sign-in MFA challenge panels (15px mobile inline gutter).
|
|
49
|
+
* Orthogonal to AuthShell's `variant` (which owns control density and heading size) — combine them.
|
|
29
50
|
*/
|
|
30
|
-
export type AuthShellPresetProp = "default" | "device-authorization" | "context-selection" | "account-recovery";
|
|
51
|
+
export type AuthShellPresetProp = "default" | "login" | "device-authorization" | "context-selection" | "account-recovery";
|
|
31
52
|
/** Shared gap between layout children; components may document subsets. */
|
|
32
53
|
export type GapProp = "xs" | "sm" | "md" | "lg" | "xl";
|
|
33
54
|
/** DataTable row density subset. */
|
|
34
55
|
export type TableDensityProp = Exclude<DensityProp, "default">;
|
|
56
|
+
/**
|
|
57
|
+
* CenteredShell named page preset — the token-owned SHELL geometry of a whole page shape.
|
|
58
|
+
* `"default"` keeps the shell's own box (and emits no attribute at all, so it can match no rule).
|
|
59
|
+
* `"public-landing"` is the PUBLIC marketing / product landing contract: one content measure
|
|
60
|
+
* shared by the header bar, the centred column and the footer, the section rhythm between page
|
|
61
|
+
* sections, the flat (elevation-free) public-surface chrome and the hero heading tier — all owned
|
|
62
|
+
* by `--centered-shell-landing-*` knobs so the landing COMPOSITION (hero, nav, sections, footer —
|
|
63
|
+
* each of which fails the Framework-Component Test) needs no page-local CSS.
|
|
64
|
+
*/
|
|
65
|
+
export type CenteredShellPresetProp = "default" | "public-landing";
|
package/dist/styles/control.css
CHANGED
|
@@ -745,6 +745,34 @@
|
|
|
745
745
|
border-start-end-radius: var(--radius-md);
|
|
746
746
|
border-end-end-radius: var(--radius-md);
|
|
747
747
|
}
|
|
748
|
+
.ui-otp-group[data-appearance="grouped"] {
|
|
749
|
+
overflow: hidden;
|
|
750
|
+
border: 1px solid hsl(var(--border));
|
|
751
|
+
border-radius: var(--radius-md);
|
|
752
|
+
background: hsl(var(--background));
|
|
753
|
+
}
|
|
754
|
+
.ui-otp-group[data-appearance="grouped"] .ui-otp-slot {
|
|
755
|
+
border: 0;
|
|
756
|
+
border-radius: 0;
|
|
757
|
+
background: transparent;
|
|
758
|
+
}
|
|
759
|
+
.ui-otp-group[data-appearance="grouped"] .ui-otp-slot[data-active="true"] {
|
|
760
|
+
box-shadow: none;
|
|
761
|
+
}
|
|
762
|
+
.ui-otp-group[data-appearance="grouped"]:has(.ui-otp-slot[data-active="true"]) {
|
|
763
|
+
border-color: hsl(var(--focus-ring-color, var(--ring)));
|
|
764
|
+
box-shadow: 0 0 0 var(--focus-ring-width) hsl(var(--focus-ring-color, var(--ring)));
|
|
765
|
+
}
|
|
766
|
+
.ui-otp-container:has(.ui-otp-input[aria-invalid="true"]) .ui-otp-group[data-appearance="grouped"] {
|
|
767
|
+
border-color: hsl(var(--destructive));
|
|
768
|
+
}
|
|
769
|
+
.ui-otp-container:has(.ui-otp-input[aria-invalid="true"])
|
|
770
|
+
.ui-otp-group[data-appearance="grouped"]:has(.ui-otp-slot[data-active="true"]) {
|
|
771
|
+
box-shadow: 0 0 0 var(--focus-ring-width) hsl(var(--destructive));
|
|
772
|
+
}
|
|
773
|
+
.ui-otp-container:has(.ui-otp-input:disabled) .ui-otp-group[data-appearance="grouped"] {
|
|
774
|
+
background: hsl(var(--muted));
|
|
775
|
+
}
|
|
748
776
|
.ui-otp-slot[data-active="true"] {
|
|
749
777
|
z-index: 1;
|
|
750
778
|
box-shadow: 0 0 0 var(--focus-ring-width) hsl(var(--focus-ring-color, var(--ring)));
|