@godxjp/ui 33.20.0 → 33.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/README.md +4 -4
  2. package/agent/START-HERE.md +7 -7
  3. package/agent/components/AppSettingPicker.json +0 -1
  4. package/agent/components/AppShell.json +11 -1
  5. package/agent/components/BlockEditor.json +6 -1
  6. package/agent/components/Button.json +1 -1
  7. package/agent/components/CardShowcase.json +44 -0
  8. package/agent/components/CatalogCard.json +83 -0
  9. package/agent/components/CatalogDetail.json +76 -0
  10. package/agent/components/CatalogDetailSection.json +52 -0
  11. package/agent/components/CatalogDetailTag.json +27 -0
  12. package/agent/components/EditorialArticle.json +53 -0
  13. package/agent/components/EditorialAuth.json +53 -0
  14. package/agent/components/EditorialAuthCard.json +52 -0
  15. package/agent/components/EditorialBanner.json +53 -0
  16. package/agent/components/EditorialBreadcrumb.json +38 -0
  17. package/agent/components/EditorialCard.json +70 -0
  18. package/agent/components/EditorialEmptyPanel.json +57 -0
  19. package/agent/components/EditorialFilterBar.json +51 -0
  20. package/agent/components/EditorialFilterField.json +39 -0
  21. package/agent/components/EditorialFilterPanel.json +46 -0
  22. package/agent/components/EditorialFooter.json +54 -0
  23. package/agent/components/EditorialFootnote.json +36 -0
  24. package/agent/components/EditorialHero.json +52 -0
  25. package/agent/components/EditorialInlineSearch.json +54 -0
  26. package/agent/components/EditorialMasthead.json +52 -0
  27. package/agent/components/EditorialMetaBar.json +37 -0
  28. package/agent/components/EditorialPageHeader.json +73 -0
  29. package/agent/components/EditorialPanel.json +48 -0
  30. package/agent/components/EditorialPillNav.json +41 -0
  31. package/agent/components/EditorialPrompt.json +54 -0
  32. package/agent/components/EditorialSearch.json +112 -0
  33. package/agent/components/EditorialSection.json +68 -0
  34. package/agent/components/EditorialSectionHead.json +62 -0
  35. package/agent/components/EditorialStats.json +32 -0
  36. package/agent/components/EditorialTextButton.json +47 -0
  37. package/agent/components/EditorialToggleGroup.json +52 -0
  38. package/agent/components/EditorialToolbar.json +45 -0
  39. package/agent/components/Eyebrow.json +39 -0
  40. package/agent/components/HoldingCard.json +69 -0
  41. package/agent/components/HoldingCardAction.json +51 -0
  42. package/agent/components/HoldingGrid.json +37 -0
  43. package/agent/components/Markdown.json +6 -0
  44. package/agent/components/NumberInput.json +5 -0
  45. package/agent/components/PriceSummary.json +32 -0
  46. package/agent/components/SettingsLayout.json +31 -0
  47. package/agent/components/SettingsPanel.json +53 -0
  48. package/agent/components/ThemePicker.json +54 -0
  49. package/agent/components/TopbarItem.json +5 -0
  50. package/agent/components-index.json +292 -98
  51. package/agent/components.json +2059 -4
  52. package/agent/index.json +7 -7
  53. package/agent/llms.txt +8 -8
  54. package/agent/tokens.json +5640 -132
  55. package/dist/components/data-display/badge.js +4 -2
  56. package/dist/components/data-display/image.js +6 -0
  57. package/dist/components/data-entry/form-field.js +2 -2
  58. package/dist/components/data-entry/number-input.d.ts +1 -0
  59. package/dist/components/data-entry/number-input.js +8 -0
  60. package/dist/components/data-entry/select.js +24 -2
  61. package/dist/components/general/button.js +14 -1
  62. package/dist/components/general/typography.d.ts +1 -1
  63. package/dist/components/layout/app-shell.d.ts +1 -1
  64. package/dist/components/layout/app-shell.js +28 -2
  65. package/dist/components/layout/centered-shell.js +4 -0
  66. package/dist/components/layout/editorial-account.d.ts +51 -0
  67. package/dist/components/layout/editorial-account.js +466 -0
  68. package/dist/components/layout/editorial-catalog.d.ts +18 -0
  69. package/dist/components/layout/editorial-catalog.js +164 -0
  70. package/dist/components/layout/editorial.d.ts +56 -0
  71. package/dist/components/layout/editorial.js +867 -0
  72. package/dist/components/layout/index.d.ts +6 -0
  73. package/dist/components/layout/index.js +98 -0
  74. package/dist/components/layout/mobile-shell.d.ts +2 -0
  75. package/dist/components/layout/mobile-shell.js +18 -11
  76. package/dist/components/layout/responsive-grid.js +9 -1
  77. package/dist/components/layout/topbar-item.d.ts +1 -0
  78. package/dist/components/layout/topbar-item.js +2 -0
  79. package/dist/contracts/measurement.json +1 -1
  80. package/dist/lab/legal-document-shell.js +61 -51
  81. package/dist/lib/toast-clearance.js +1 -1
  82. package/dist/props/components/data-display.prop.d.ts +2 -0
  83. package/dist/props/components/data-entry.prop.d.ts +9 -0
  84. package/dist/props/components/editorial-account.prop.d.ts +249 -0
  85. package/dist/props/components/editorial-account.prop.js +0 -0
  86. package/dist/props/components/general.prop.d.ts +6 -2
  87. package/dist/props/components/layout.prop.d.ts +602 -2
  88. package/dist/props/registry.d.ts +1124 -0
  89. package/dist/props/registry.js +792 -0
  90. package/dist/styles/badge-layout.css +2 -0
  91. package/dist/styles/control.css +60 -13
  92. package/dist/styles/core.css +1 -0
  93. package/dist/styles/data-display-layout.css +9 -3
  94. package/dist/styles/editorial-account-layout.css +1130 -0
  95. package/dist/styles/focus-ring.css +33 -10
  96. package/dist/styles/form-layout.css +8 -1
  97. package/dist/styles/index.css +1 -0
  98. package/dist/styles/layers.json +248 -1
  99. package/dist/styles/layout.css +2031 -0
  100. package/dist/styles/logo-layout.css +27 -0
  101. package/dist/styles/shell-layout.css +101 -3
  102. package/dist/styles/table-layout.css +25 -13
  103. package/dist/styles/text-layout.css +6 -0
  104. package/dist/styles.css +1 -1
  105. package/dist/tokens/base.css +2 -0
  106. package/dist/tokens/components/badge.css +3 -0
  107. package/dist/tokens/components/control.css +9 -0
  108. package/dist/tokens/components/editorial-account.css +393 -0
  109. package/dist/tokens/components/editorial.css +721 -0
  110. package/dist/tokens/components/form.css +4 -0
  111. package/dist/tokens/components/logo.css +2 -0
  112. package/dist/tokens/components/shell.css +23 -0
  113. package/dist/tokens/components/table.css +1 -1
  114. package/docs/TOKENS.md +26 -0
  115. package/package.json +2 -2
  116. package/scripts/ui-audit.mjs +3 -2
@@ -55,5 +55,11 @@ export { AspectRatio } from "./aspect-ratio.js";
55
55
  export { ServiceRolePanel } from "./service-role-panel.js";
56
56
  export type { ServiceRoleItemProp, ServiceRolePanelProp, ServiceRolePanelProps, } from "./service-role-panel.js";
57
57
  export { useAppShellNavigationMode } from "./app-shell.js";
58
+ export { EditorialAuth, EditorialAuthCard, EditorialEmptyPanel, EditorialFootnote, EditorialMetaBar, EditorialStats, EditorialTextButton, EditorialToggleGroup, EditorialToolbar, HoldingCard, HoldingCardAction, HoldingGrid, SettingsLayout, SettingsPanel, ThemePicker, } from "./editorial-account.js";
59
+ export type { EditorialAuthCardProp, EditorialAuthCardProps, EditorialAuthProp, EditorialAuthProps, EditorialEmptyPanelProp, EditorialEmptyPanelProps, EditorialFootnoteProp, EditorialFootnoteProps, EditorialMetaBarProp, EditorialMetaBarProps, EditorialStatsItemProp, EditorialStatsProp, EditorialStatsProps, EditorialTextButtonProp, EditorialTextButtonProps, EditorialToggleGroupItemProp, EditorialToggleGroupProp, EditorialToggleGroupProps, EditorialToolbarProp, EditorialToolbarProps, HoldingCardActionProp, HoldingCardProp, HoldingCardProps, HoldingGridProp, HoldingGridProps, HoldingViewProp, SettingsLayoutProp, SettingsLayoutProps, SettingsPanelProp, SettingsPanelProps, ThemePickerOptionProp, ThemePickerPreviewProp, ThemePickerProp, ThemePickerProps, } from "./editorial-account.js";
58
60
  export { Affix } from "./affix.js";
59
61
  export type { AffixProp, AffixProps, AffixTargetProp } from "./affix.js";
62
+ export { CatalogDetail, CatalogDetailSection, CatalogDetailTag, EditorialFilterField, EditorialFilterPanel, EditorialPrompt, PriceSummary, } from "./editorial-catalog.js";
63
+ export type { CatalogDetailProp, CatalogDetailProps, CatalogDetailSectionProp, CatalogDetailSectionProps, CatalogDetailTagProp, EditorialPromptProp, EditorialPromptProps, PriceSummaryProp, PriceSummaryProps, EditorialFilterFieldProp, EditorialFilterFieldProps, EditorialFilterPanelProp, EditorialFilterPanelProps, } from "./editorial-catalog.js";
64
+ export { CardShowcase, CatalogCard, CatalogCardTag, EditorialArticle, EditorialArticleSection, EditorialBanner, EditorialBreadcrumb, EditorialCard, EditorialFilterBar, EditorialFooter, EditorialHero, EditorialMasthead, EditorialMastheadAction, EditorialMastheadLink, EditorialNote, EditorialPageHeader, EditorialPanel, EditorialPillNav, EditorialPillNavItem, EditorialSearch, EditorialSection, EditorialSectionHead, EditorialTextLink, Eyebrow, } from "./editorial.js";
65
+ export type { CardShowcaseProp, CardShowcaseProps, CatalogCardProp, CatalogCardProps, CatalogCardTagProp, EditorialBannerProp, EditorialBannerProps, EditorialArticleProp, EditorialArticleProps, EditorialArticleSectionProp, EditorialNoteProp, EditorialPanelProp, EditorialPanelProps, EditorialBreadcrumbProp, EditorialBreadcrumbProps, EditorialCardProp, EditorialCardProps, EditorialHeroProp, EditorialHeroProps, EditorialPageHeaderProp, EditorialPageHeaderProps, EditorialPillNavItemProp, EditorialPillNavProp, EditorialPillNavProps, EditorialSearchProp, EditorialSearchProps, EditorialSearchSuggestionFooterProp, EditorialSearchSuggestionGroupProp, EditorialSearchSuggestionProp, EditorialSectionHeadProp, EditorialSectionHeadProps, EditorialSectionProp, EditorialSectionProps, EditorialTextLinkProp, EyebrowProp, EyebrowProps, EditorialFilterBarProp, EditorialFooterProp, EditorialMastheadActionProp, EditorialMastheadLinkProp, EditorialMastheadProp, } from "./editorial.js";
@@ -26,7 +26,59 @@ import { Separator } from "./separator.js";
26
26
  import { AspectRatio } from "./aspect-ratio.js";
27
27
  import { ServiceRolePanel } from "./service-role-panel.js";
28
28
  import { useAppShellNavigationMode } from "./app-shell.js";
29
+ import {
30
+ EditorialAuth,
31
+ EditorialAuthCard,
32
+ EditorialEmptyPanel,
33
+ EditorialFootnote,
34
+ EditorialMetaBar,
35
+ EditorialStats,
36
+ EditorialTextButton,
37
+ EditorialToggleGroup,
38
+ EditorialToolbar,
39
+ HoldingCard,
40
+ HoldingCardAction,
41
+ HoldingGrid,
42
+ SettingsLayout,
43
+ SettingsPanel,
44
+ ThemePicker
45
+ } from "./editorial-account.js";
29
46
  import { Affix } from "./affix.js";
47
+ import {
48
+ CatalogDetail,
49
+ CatalogDetailSection,
50
+ CatalogDetailTag,
51
+ EditorialFilterField,
52
+ EditorialFilterPanel,
53
+ EditorialPrompt,
54
+ PriceSummary
55
+ } from "./editorial-catalog.js";
56
+ import {
57
+ CardShowcase,
58
+ CatalogCard,
59
+ CatalogCardTag,
60
+ EditorialArticle,
61
+ EditorialArticleSection,
62
+ EditorialBanner,
63
+ EditorialBreadcrumb,
64
+ EditorialCard,
65
+ EditorialFilterBar,
66
+ EditorialFooter,
67
+ EditorialHero,
68
+ EditorialMasthead,
69
+ EditorialMastheadAction,
70
+ EditorialMastheadLink,
71
+ EditorialNote,
72
+ EditorialPageHeader,
73
+ EditorialPanel,
74
+ EditorialPillNav,
75
+ EditorialPillNavItem,
76
+ EditorialSearch,
77
+ EditorialSection,
78
+ EditorialSectionHead,
79
+ EditorialTextLink,
80
+ Eyebrow
81
+ } from "./editorial.js";
30
82
  export {
31
83
  AccountChip,
32
84
  Affix,
@@ -39,25 +91,71 @@ export {
39
91
  AuthIdentity,
40
92
  AuthStack,
41
93
  Breadcrumb,
94
+ CardShowcase,
95
+ CatalogCard,
96
+ CatalogCardTag,
97
+ CatalogDetail,
98
+ CatalogDetailSection,
99
+ CatalogDetailTag,
42
100
  CenteredShell,
101
+ EditorialArticle,
102
+ EditorialArticleSection,
103
+ EditorialAuth,
104
+ EditorialAuthCard,
105
+ EditorialBanner,
106
+ EditorialBreadcrumb,
107
+ EditorialCard,
108
+ EditorialEmptyPanel,
109
+ EditorialFilterBar,
110
+ EditorialFilterField,
111
+ EditorialFilterPanel,
112
+ EditorialFooter,
113
+ EditorialFootnote,
114
+ EditorialHero,
115
+ EditorialMasthead,
116
+ EditorialMastheadAction,
117
+ EditorialMastheadLink,
118
+ EditorialMetaBar,
119
+ EditorialNote,
120
+ EditorialPageHeader,
121
+ EditorialPanel,
122
+ EditorialPillNav,
123
+ EditorialPillNavItem,
124
+ EditorialPrompt,
125
+ EditorialSearch,
126
+ EditorialSection,
127
+ EditorialSectionHead,
128
+ EditorialStats,
129
+ EditorialTextButton,
130
+ EditorialTextLink,
131
+ EditorialToggleGroup,
132
+ EditorialToolbar,
43
133
  ErrorSurface,
134
+ Eyebrow,
44
135
  Flex,
136
+ HoldingCard,
137
+ HoldingCardAction,
138
+ HoldingGrid,
45
139
  MasterDetail,
46
140
  MobileShell,
47
141
  NavList,
48
142
  OrgSwitcher,
49
143
  PageContainer,
144
+ PriceSummary,
50
145
  ResizableHandle,
51
146
  ResizablePanel,
52
147
  ResizablePanelGroup,
53
148
  ResponsiveGrid,
54
149
  Separator,
55
150
  ServiceRolePanel,
151
+ SettingsLayout,
152
+ SettingsPanel,
56
153
  Sidebar,
57
154
  SidebarHeader,
58
155
  SidebarItem,
59
156
  SidebarSection,
60
157
  SplitPane,
158
+ ThemePicker,
61
159
  Topbar,
62
160
  TopbarItem,
63
161
  TopbarSearch,
@@ -1,5 +1,7 @@
1
1
  import type { MobileShellProp } from "../../props/components/layout.prop.js";
2
2
  export type { MobileShellProp, MobileShellProp as MobileShellProps, } from "../../props/components/layout.prop.js";
3
+ /** Shared internal navigation surface; both shells use the same tiling and current-page styles. */
4
+ export declare const ShellTabBar: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & import("react").RefAttributes<HTMLElement>>;
3
5
  /**
4
6
  * MobileShell — the HANDHELD app shell: a status band, an app bar, ONE scroll region,
5
7
  * a sticky action bar and a bottom tab bar, in that fixed order.
@@ -1,9 +1,23 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useRef } from "react";
3
+ import { forwardRef, useRef } from "react";
4
4
  import { useTranslation } from "../../i18n/use-translation.js";
5
5
  import { useToastStickyBarClearance } from "../../lib/toast-clearance.js";
6
6
  import { cn } from "../../lib/utils.js";
7
+ const ShellTabBar = forwardRef(
8
+ function ShellTabBar2({ className, "aria-label": label, ...props }, ref) {
9
+ const { t } = useTranslation();
10
+ return /* @__PURE__ */ jsx(
11
+ "nav",
12
+ {
13
+ ...props,
14
+ ref,
15
+ className: cn("ui-mobile-shell-tabbar", className),
16
+ "aria-label": label ?? t("layout.sidebar.ariaLabel")
17
+ }
18
+ );
19
+ }
20
+ );
7
21
  function MobileShell({
8
22
  statusBar,
9
23
  header,
@@ -44,19 +58,12 @@ function MobileShell({
44
58
  }
45
59
  ),
46
60
  actions !== void 0 && /* @__PURE__ */ jsx("footer", { ref: actionsRef, className: "ui-mobile-shell-actions", children: actions }),
47
- tabBar !== void 0 && /* @__PURE__ */ jsx(
48
- "nav",
49
- {
50
- ref: tabBarRef,
51
- className: "ui-mobile-shell-tabbar",
52
- "aria-label": t("layout.sidebar.ariaLabel"),
53
- children: tabBar
54
- }
55
- )
61
+ tabBar !== void 0 && /* @__PURE__ */ jsx(ShellTabBar, { ref: tabBarRef, children: tabBar })
56
62
  ]
57
63
  }
58
64
  );
59
65
  }
60
66
  export {
61
- MobileShell
67
+ MobileShell,
68
+ ShellTabBar
62
69
  };
@@ -4,6 +4,12 @@ import { cn } from "../../lib/utils.js";
4
4
  const RESPONSIVE_GRID_PRESET_COLUMNS = {
5
5
  "pricing-plans": { base: 1, sm: 3, md: 3, lg: 3 }
6
6
  };
7
+ const TOKEN_PRESETS = /* @__PURE__ */ new Set([
8
+ "catalog",
9
+ "trio",
10
+ "lead",
11
+ "panels"
12
+ ]);
7
13
  function resolveColumns(columns) {
8
14
  if (typeof columns === "number") {
9
15
  return {
@@ -40,12 +46,14 @@ function ResponsiveGrid({
40
46
  className,
41
47
  children
42
48
  }) {
43
- const resolved = preset ? RESPONSIVE_GRID_PRESET_COLUMNS[preset] : resolveColumns(columns);
49
+ const tokenPreset = preset !== void 0 && TOKEN_PRESETS.has(preset) ? preset : void 0;
50
+ const resolved = (preset && RESPONSIVE_GRID_PRESET_COLUMNS[preset]) ?? resolveColumns(columns);
44
51
  return /* @__PURE__ */ jsx("div", { className: "ui-responsive-grid-scope", children: /* @__PURE__ */ jsx(
45
52
  "div",
46
53
  {
47
54
  className: cn("ui-responsive-grid", className),
48
55
  "data-gap": gap,
56
+ "data-preset": tokenPreset,
49
57
  "data-flow": flow === "columns" ? "columns" : void 0,
50
58
  "data-align": align,
51
59
  "data-dense": dense && flow !== "columns" ? "" : void 0,
@@ -12,6 +12,7 @@ export type { TopbarItemProp, TopbarItemProp as TopbarItemProps, } from "../../p
12
12
  */
13
13
  export declare const TopbarItem: React.ForwardRefExoticComponent<Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "children"> & {
14
14
  hideBelow?: import("../../props/index.js").BreakpointProp;
15
+ hideFrom?: import("../../props/index.js").BreakpointProp;
15
16
  icon?: React.ReactNode;
16
17
  iconHideFrom?: import("../../props/index.js").BreakpointProp;
17
18
  labelHideBelow?: import("../../props/index.js").BreakpointProp;
@@ -7,6 +7,7 @@ const TopbarItem = React.forwardRef(function TopbarItem2({
7
7
  className,
8
8
  type,
9
9
  hideBelow,
10
+ hideFrom,
10
11
  icon,
11
12
  iconHideFrom,
12
13
  labelHideBelow,
@@ -62,6 +63,7 @@ const TopbarItem = React.forwardRef(function TopbarItem2({
62
63
  "data-truncate": truncate ? "true" : void 0,
63
64
  title: truncate && typeof label === "string" ? label : void 0,
64
65
  "data-hide-below": hideBelow,
66
+ "data-hide-from": hideFrom,
65
67
  className: cn("ui-topbar-item ui-focus-ring", className),
66
68
  type: asChild ? void 0 : type ?? "button",
67
69
  ...props,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$comment": "AUTO-GENERATED by scripts/gen-measurement-contract.mjs — do not edit. Read this instead of guessing: docs/MEASUREMENT-CONTRACT.md.",
3
- "version": "33.20.0",
3
+ "version": "33.22.1",
4
4
  "targetSize": {
5
5
  "standard": "WCAG 2.2 SC 2.5.8 Target Size (Minimum), level AA — 24×24 CSS px",
6
6
  "min": 24,
@@ -122,6 +122,8 @@ const LegalDocumentShell = React.forwardRef(
122
122
  target.focus({ preventScroll: true });
123
123
  };
124
124
  const contentsName = contentsLabel ?? t("layout.legalDocumentShell.contents");
125
+ const hasContents = sections.length > 0;
126
+ const hasRail = hasContents || documentNavigation !== void 0;
125
127
  return /* @__PURE__ */ jsx(
126
128
  "div",
127
129
  {
@@ -129,58 +131,66 @@ const LegalDocumentShell = React.forwardRef(
129
131
  id,
130
132
  "data-slot": "legal-document-shell",
131
133
  className: cn("ui-legal-document-scope", className),
132
- children: /* @__PURE__ */ jsxs("article", { className: "ui-legal-document", "aria-labelledby": titleId, children: [
133
- /* @__PURE__ */ jsxs("header", { className: "ui-legal-document-header", children: [
134
- /* @__PURE__ */ jsx(Heading, { level: 1, id: titleId, children: title }),
135
- (version !== void 0 || effectiveDate !== void 0) && /* @__PURE__ */ jsxs("div", { className: "ui-legal-document-meta", children: [
136
- version !== void 0 && /* @__PURE__ */ jsx("span", { children: t("layout.legalDocumentShell.version", { version }) }),
137
- effectiveDate !== void 0 && // <time dateTime> keeps the MACHINE-readable value as the ISO 8601 input while
138
- // the visible text is the Intl-formatted, locale-correct rendering.
139
- /* @__PURE__ */ jsx("time", { dateTime: effectiveDate, children: t(
140
- dateKind === "updated" ? "layout.legalDocumentShell.updatedDate" : "layout.legalDocumentShell.effectiveDate",
134
+ children: /* @__PURE__ */ jsxs(
135
+ "article",
136
+ {
137
+ className: "ui-legal-document",
138
+ "aria-labelledby": titleId,
139
+ "data-rail": hasRail ? void 0 : "none",
140
+ children: [
141
+ /* @__PURE__ */ jsxs("header", { className: "ui-legal-document-header", children: [
142
+ /* @__PURE__ */ jsx(Heading, { level: 1, id: titleId, children: title }),
143
+ (version !== void 0 || effectiveDate !== void 0) && /* @__PURE__ */ jsxs("div", { className: "ui-legal-document-meta", children: [
144
+ version !== void 0 && /* @__PURE__ */ jsx("span", { children: t("layout.legalDocumentShell.version", { version }) }),
145
+ effectiveDate !== void 0 && // <time dateTime> keeps the MACHINE-readable value as the ISO 8601 input while
146
+ // the visible text is the Intl-formatted, locale-correct rendering.
147
+ /* @__PURE__ */ jsx("time", { dateTime: effectiveDate, children: t(
148
+ dateKind === "updated" ? "layout.legalDocumentShell.updatedDate" : "layout.legalDocumentShell.effectiveDate",
149
+ {
150
+ date: formatEffectiveDate(effectiveDate, locale)
151
+ }
152
+ ) })
153
+ ] }),
154
+ summary !== void 0 && // A <div> (not <p>): the summary slot may carry block content, and a <p> inside a <p>
155
+ // is invalid HTML the browser silently un-nests.
156
+ /* @__PURE__ */ jsx("div", { className: "ui-legal-document-summary", children: summary })
157
+ ] }),
158
+ hasRail && /* @__PURE__ */ jsxs("div", { className: "ui-legal-document-rail", children: [
159
+ documentNavigation !== void 0 && /* @__PURE__ */ jsx("div", { "data-slot": "legal-document-navigation", children: documentNavigation }),
160
+ hasContents && /* @__PURE__ */ jsxs("nav", { className: "ui-legal-document-toc", "aria-labelledby": contentsId, children: [
161
+ /* @__PURE__ */ jsx("p", { id: contentsId, className: "ui-legal-document-toc-title", children: contentsName }),
162
+ /* @__PURE__ */ jsx("ol", { className: "ui-legal-document-toc-list", children: sections.map((section) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
163
+ "a",
164
+ {
165
+ href: `#${section.id}`,
166
+ className: "ui-legal-document-toc-link",
167
+ "data-active": section.id === active ? "" : void 0,
168
+ "aria-current": section.id === active ? "location" : void 0,
169
+ onClick: (event) => handleContentsClick(event, section.id),
170
+ children: section.title
171
+ }
172
+ ) }, section.id)) })
173
+ ] })
174
+ ] }),
175
+ /* @__PURE__ */ jsx("div", { className: "ui-legal-document-content", children: sections.map((section) => /* @__PURE__ */ jsxs(
176
+ "section",
141
177
  {
142
- date: formatEffectiveDate(effectiveDate, locale)
143
- }
144
- ) })
145
- ] }),
146
- summary !== void 0 && // A <div> (not <p>): the summary slot may carry block content, and a <p> inside a <p>
147
- // is invalid HTML the browser silently un-nests.
148
- /* @__PURE__ */ jsx("div", { className: "ui-legal-document-summary", children: summary })
149
- ] }),
150
- /* @__PURE__ */ jsxs("div", { className: "ui-legal-document-rail", children: [
151
- documentNavigation !== void 0 && /* @__PURE__ */ jsx("div", { "data-slot": "legal-document-navigation", children: documentNavigation }),
152
- /* @__PURE__ */ jsxs("nav", { className: "ui-legal-document-toc", "aria-labelledby": contentsId, children: [
153
- /* @__PURE__ */ jsx("p", { id: contentsId, className: "ui-legal-document-toc-title", children: contentsName }),
154
- /* @__PURE__ */ jsx("ol", { className: "ui-legal-document-toc-list", children: sections.map((section) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
155
- "a",
156
- {
157
- href: `#${section.id}`,
158
- className: "ui-legal-document-toc-link",
159
- "data-active": section.id === active ? "" : void 0,
160
- "aria-current": section.id === active ? "location" : void 0,
161
- onClick: (event) => handleContentsClick(event, section.id),
162
- children: section.title
163
- }
164
- ) }, section.id)) })
165
- ] })
166
- ] }),
167
- /* @__PURE__ */ jsx("div", { className: "ui-legal-document-content", children: sections.map((section) => /* @__PURE__ */ jsxs(
168
- "section",
169
- {
170
- id: section.id,
171
- tabIndex: -1,
172
- "data-legal-section": section.id,
173
- "aria-labelledby": `${section.id}-heading`,
174
- className: "ui-legal-document-section",
175
- children: [
176
- /* @__PURE__ */ jsx(Heading, { level: 2, id: `${section.id}-heading`, children: section.title }),
177
- /* @__PURE__ */ jsx("div", { className: "ui-legal-document-section-body", children: section.content })
178
- ]
179
- },
180
- section.id
181
- )) }),
182
- footerAction !== void 0 && /* @__PURE__ */ jsx("footer", { className: "ui-legal-document-footer", children: footerAction })
183
- ] })
178
+ id: section.id,
179
+ tabIndex: -1,
180
+ "data-legal-section": section.id,
181
+ "aria-labelledby": `${section.id}-heading`,
182
+ className: "ui-legal-document-section",
183
+ children: [
184
+ /* @__PURE__ */ jsx(Heading, { level: 2, id: `${section.id}-heading`, children: section.title }),
185
+ /* @__PURE__ */ jsx("div", { className: "ui-legal-document-section-body", children: section.content })
186
+ ]
187
+ },
188
+ section.id
189
+ )) }),
190
+ footerAction !== void 0 && /* @__PURE__ */ jsx("footer", { className: "ui-legal-document-footer", children: footerAction })
191
+ ]
192
+ }
193
+ )
184
194
  }
185
195
  );
186
196
  }
@@ -14,7 +14,7 @@ function useToastStickyBarClearance(refs, enabled) {
14
14
  };
15
15
  publish();
16
16
  const observer = new ResizeObserver(publish);
17
- for (const el of elements) observer.observe(el);
17
+ for (const el of elements) observer.observe(el, { box: "border-box" });
18
18
  return () => {
19
19
  observer.disconnect();
20
20
  html.style.removeProperty(TOAST_STICKY_BAR_PROPERTY);
@@ -1310,6 +1310,8 @@ export type ImagePreviewGroupConfigProp = Omit<ImagePreviewConfigProp, "src" | "
1310
1310
  /**
1311
1311
  * @see Image — a picture that opens large in a full-viewport preview (antd `Image`): zoom, rotate,
1312
1312
  * flip, and — inside an `ImagePreviewGroup` — prev/next across every picture of the group.
1313
+ * Lazy by default (gh#1454): `loading` defaults to `"lazy"` (`"eager"` with `fetchPriority="high"`,
1314
+ * the page's LCP picture) and `decoding` to `"async"`; explicit values win.
1313
1315
  */
1314
1316
  export type ImageProp = Omit<React.ImgHTMLAttributes<HTMLImageElement>, "alt" | "placeholder"> & {
1315
1317
  /** Image URL. */
@@ -360,6 +360,15 @@ export type NumberInputProp = FieldA11yProps & {
360
360
  prefix?: React.ReactNode;
361
361
  /** Trailing affix inside the field (e.g. `%`). */
362
362
  suffix?: React.ReactNode;
363
+ /**
364
+ * How the field takes its inline space, as `Select` and the pickers mean it (gh#1448).
365
+ * `full` (default) fills the line; `auto` is sized to the widest value the bounds allow (the
366
+ * formatted `min` / `max`, 6 characters when unbounded) plus the steppers — a quantity stepper in
367
+ * a `ListRow` trailing slot, outside any `FormField` `controlWidth`; `bounded` holds
368
+ * `--control-bounded-width`. Measured in a consumer deck builder: a 0–99 stepper took 215px at
369
+ * 1440px and, at 390px, pushed every row's trailing cluster onto its own line.
370
+ */
371
+ width?: ControlWidthProp;
363
372
  /** Form field name — the visible input submits its value natively. */
364
373
  name?: NameProp;
365
374
  id?: IdProp;