@burojs/ui-shadcn 0.6.0 → 0.7.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.
Files changed (152) hide show
  1. package/README.md +9 -0
  2. package/dist/bulk-summary-BWSAS7k2.js +143 -0
  3. package/dist/bulk-summary-BWSAS7k2.js.map +1 -0
  4. package/dist/bulk-summary-CrEij5vq.cjs +143 -0
  5. package/dist/bulk-summary-CrEij5vq.cjs.map +1 -0
  6. package/dist/{candidates-relation-picker-B116Bmqi.js → candidates-relation-picker-CS_JZ4Fd.js} +3 -3
  7. package/dist/{candidates-relation-picker-B116Bmqi.js.map → candidates-relation-picker-CS_JZ4Fd.js.map} +1 -1
  8. package/dist/{candidates-relation-picker-Cy0rTxvI.cjs → candidates-relation-picker-y5M6_oe4.cjs} +4 -4
  9. package/dist/{candidates-relation-picker-Cy0rTxvI.cjs.map → candidates-relation-picker-y5M6_oe4.cjs.map} +1 -1
  10. package/dist/{check-confirm-dialog-bRT8lt0d.js → check-confirm-dialog-2j0gOd7x.js} +384 -108
  11. package/dist/check-confirm-dialog-2j0gOd7x.js.map +1 -0
  12. package/dist/{check-confirm-dialog--gPFnEeg.cjs → check-confirm-dialog-C-NHgMST.cjs} +468 -107
  13. package/dist/check-confirm-dialog-C-NHgMST.cjs.map +1 -0
  14. package/dist/{dialog-B_rt9S1c.js → dialog-C123sVQ8.js} +4 -4
  15. package/dist/dialog-C123sVQ8.js.map +1 -0
  16. package/dist/{dialog-DRNUq9EA.cjs → dialog-vmMdfUWs.cjs} +3 -3
  17. package/dist/dialog-vmMdfUWs.cjs.map +1 -0
  18. package/dist/{filter-builder-nXqtM_h4.cjs → filter-builder-DFu0JP-1.cjs} +923 -120
  19. package/dist/filter-builder-DFu0JP-1.cjs.map +1 -0
  20. package/dist/{filter-builder-Bhn-dhZV.js → filter-builder-DaWHUZuV.js} +839 -108
  21. package/dist/filter-builder-DaWHUZuV.js.map +1 -0
  22. package/dist/{flow-runtime-D3avVH0I.cjs → flow-runtime-BpmrIUb6.cjs} +61 -29
  23. package/dist/flow-runtime-BpmrIUb6.cjs.map +1 -0
  24. package/dist/{flow-runtime-s6lkRPKF.js → flow-runtime-DyqTmK3H.js} +62 -30
  25. package/dist/flow-runtime-DyqTmK3H.js.map +1 -0
  26. package/dist/{flow-screen-Ci_Sik4Y.cjs → flow-screen-Bcz9NF2V.cjs} +128 -87
  27. package/dist/flow-screen-Bcz9NF2V.cjs.map +1 -0
  28. package/dist/{flow-screen-CCvgDI9G.js → flow-screen-DCdli6Ha.js} +128 -87
  29. package/dist/flow-screen-DCdli6Ha.js.map +1 -0
  30. package/dist/index.cjs +731 -906
  31. package/dist/index.cjs.map +1 -1
  32. package/dist/index.d.cts +455 -247
  33. package/dist/index.d.ts +455 -247
  34. package/dist/index.js +647 -828
  35. package/dist/index.js.map +1 -1
  36. package/dist/{inline-flow-host-DV1et3c6.cjs → inline-flow-host-3vw7LzzD.cjs} +5 -5
  37. package/dist/inline-flow-host-3vw7LzzD.cjs.map +1 -0
  38. package/dist/{inline-flow-host-B6FI0ctQ.js → inline-flow-host-C0rI9B7f.js} +5 -5
  39. package/dist/inline-flow-host-C0rI9B7f.js.map +1 -0
  40. package/dist/{candidates-gate-D33jXLHO.cjs → lazy-relation-picker-dialog-Bt8lrEIu.cjs} +10 -10
  41. package/dist/lazy-relation-picker-dialog-Bt8lrEIu.cjs.map +1 -0
  42. package/dist/{candidates-gate-Bb70LPAy.js → lazy-relation-picker-dialog-CAScLPb2.js} +11 -11
  43. package/dist/lazy-relation-picker-dialog-CAScLPb2.js.map +1 -0
  44. package/dist/{page-flow-route-i3ZfJ1sd.js → page-flow-route-BHUEpn0I.js} +36 -23
  45. package/dist/page-flow-route-BHUEpn0I.js.map +1 -0
  46. package/dist/{page-flow-route-hdnULWqd.cjs → page-flow-route-DS8IVTVH.cjs} +41 -28
  47. package/dist/page-flow-route-DS8IVTVH.cjs.map +1 -0
  48. package/dist/{place-node-C5SmIAYU.cjs → place-node-CNb3w-c7.cjs} +1869 -947
  49. package/dist/place-node-CNb3w-c7.cjs.map +1 -0
  50. package/dist/{place-node-NraNYKPx.js → place-node-CfzQvh4Y.js} +1824 -926
  51. package/dist/place-node-CfzQvh4Y.js.map +1 -0
  52. package/dist/{related-list-cards-BWZ9GfOG.js → related-list-cards-BIqqY69Y.js} +9 -4
  53. package/dist/{related-list-cards-BWZ9GfOG.js.map → related-list-cards-BIqqY69Y.js.map} +1 -1
  54. package/dist/{related-list-cards-CFq3meUn.cjs → related-list-cards-CelMxl4q.cjs} +9 -4
  55. package/dist/{related-list-cards-CFq3meUn.cjs.map → related-list-cards-CelMxl4q.cjs.map} +1 -1
  56. package/dist/{related-list-timeline-yrPsjA3F.js → related-list-timeline-CRh7xwLD.js} +6 -7
  57. package/dist/related-list-timeline-CRh7xwLD.js.map +1 -0
  58. package/dist/{related-list-timeline-CCzl71aA.cjs → related-list-timeline-DsLdi8sv.cjs} +5 -6
  59. package/dist/related-list-timeline-DsLdi8sv.cjs.map +1 -0
  60. package/dist/{related-rows-o0_t-Yce.js → related-rows--uP2iKQC.js} +25 -14
  61. package/dist/related-rows--uP2iKQC.js.map +1 -0
  62. package/dist/{related-rows-ea43qhhy.cjs → related-rows-MPnLCmPF.cjs} +27 -16
  63. package/dist/related-rows-MPnLCmPF.cjs.map +1 -0
  64. package/dist/{search-access-CPPmfuvy.js → relation-create-C43cdPQt.js} +595 -13
  65. package/dist/relation-create-C43cdPQt.js.map +1 -0
  66. package/dist/{search-access-Dugvttlg.cjs → relation-create-DDEYcKfw.cjs} +633 -14
  67. package/dist/relation-create-DDEYcKfw.cjs.map +1 -0
  68. package/dist/{relation-many-picker-bvkjkv-k.js → relation-many-picker-BJhaEqxz.js} +203 -102
  69. package/dist/relation-many-picker-BJhaEqxz.js.map +1 -0
  70. package/dist/{relation-many-picker-C8zFEjwd.cjs → relation-many-picker-DzuGJpEl.cjs} +211 -110
  71. package/dist/relation-many-picker-DzuGJpEl.cjs.map +1 -0
  72. package/dist/{relation-picker-Z0ZJJ5uS.js → relation-picker-D-tBBZW_.js} +23 -59
  73. package/dist/relation-picker-D-tBBZW_.js.map +1 -0
  74. package/dist/{relation-picker-gag0qSR5.cjs → relation-picker-DaIMzf2H.cjs} +29 -71
  75. package/dist/relation-picker-DaIMzf2H.cjs.map +1 -0
  76. package/dist/{relation-picker-dialog-0IzkjmiA.cjs → relation-picker-dialog-9Vg5vvR1.cjs} +133 -35
  77. package/dist/relation-picker-dialog-9Vg5vvR1.cjs.map +1 -0
  78. package/dist/{relation-picker-dialog-B6nIiJBf.js → relation-picker-dialog-DoEY8EkH.js} +134 -36
  79. package/dist/relation-picker-dialog-DoEY8EkH.js.map +1 -0
  80. package/dist/relation-select-B8Fq4o-t.js +48 -0
  81. package/dist/relation-select-B8Fq4o-t.js.map +1 -0
  82. package/dist/relation-select-Cr3CfNLy.cjs +55 -0
  83. package/dist/relation-select-Cr3CfNLy.cjs.map +1 -0
  84. package/dist/{resource-page-router-PXfMW9nh.cjs → resource-page-router-C_kGW2o_.cjs} +543 -300
  85. package/dist/resource-page-router-C_kGW2o_.cjs.map +1 -0
  86. package/dist/{resource-page-router-3RUf9d1j.js → resource-page-router-Diw6S6TK.js} +498 -255
  87. package/dist/resource-page-router-Diw6S6TK.js.map +1 -0
  88. package/dist/{rich-text-vTyVjDoa.cjs → rich-text-C_7JCvRo.cjs} +2 -2
  89. package/dist/{rich-text-vTyVjDoa.cjs.map → rich-text-C_7JCvRo.cjs.map} +1 -1
  90. package/dist/{rich-text-DFerywgz.js → rich-text-RcPBf6hr.js} +2 -2
  91. package/dist/{rich-text-DFerywgz.js.map → rich-text-RcPBf6hr.js.map} +1 -1
  92. package/dist/success-notices-Dl3M1fZP.cjs +46 -0
  93. package/dist/success-notices-Dl3M1fZP.cjs.map +1 -0
  94. package/dist/success-notices-LDEgEkc4.js +41 -0
  95. package/dist/success-notices-LDEgEkc4.js.map +1 -0
  96. package/dist/{toaster-Cr51X7bz.cjs → toaster-BbByOytP.cjs} +60 -15
  97. package/dist/toaster-BbByOytP.cjs.map +1 -0
  98. package/dist/{toaster-C02XbB9r.js → toaster-Ct_YHGs6.js} +43 -16
  99. package/dist/toaster-Ct_YHGs6.js.map +1 -0
  100. package/dist/{use-dialog-filter-state-C--oMAZG.js → use-dialog-filter-state-B_MqzHaT.js} +5 -4
  101. package/dist/use-dialog-filter-state-B_MqzHaT.js.map +1 -0
  102. package/dist/{use-dialog-filter-state-Dhe8PcB5.cjs → use-dialog-filter-state-tNvqAAjh.cjs} +6 -5
  103. package/dist/use-dialog-filter-state-tNvqAAjh.cjs.map +1 -0
  104. package/package.json +11 -11
  105. package/dist/bulk-summary-CwSd6Yjb.cjs +0 -108
  106. package/dist/bulk-summary-CwSd6Yjb.cjs.map +0 -1
  107. package/dist/bulk-summary-GxMDP4bw.js +0 -108
  108. package/dist/bulk-summary-GxMDP4bw.js.map +0 -1
  109. package/dist/candidates-gate-Bb70LPAy.js.map +0 -1
  110. package/dist/candidates-gate-D33jXLHO.cjs.map +0 -1
  111. package/dist/check-confirm-dialog--gPFnEeg.cjs.map +0 -1
  112. package/dist/check-confirm-dialog-bRT8lt0d.js.map +0 -1
  113. package/dist/dialog-B_rt9S1c.js.map +0 -1
  114. package/dist/dialog-DRNUq9EA.cjs.map +0 -1
  115. package/dist/filter-builder-Bhn-dhZV.js.map +0 -1
  116. package/dist/filter-builder-nXqtM_h4.cjs.map +0 -1
  117. package/dist/flow-runtime-D3avVH0I.cjs.map +0 -1
  118. package/dist/flow-runtime-s6lkRPKF.js.map +0 -1
  119. package/dist/flow-screen-CCvgDI9G.js.map +0 -1
  120. package/dist/flow-screen-Ci_Sik4Y.cjs.map +0 -1
  121. package/dist/inline-flow-host-B6FI0ctQ.js.map +0 -1
  122. package/dist/inline-flow-host-DV1et3c6.cjs.map +0 -1
  123. package/dist/page-flow-route-hdnULWqd.cjs.map +0 -1
  124. package/dist/page-flow-route-i3ZfJ1sd.js.map +0 -1
  125. package/dist/place-node-C5SmIAYU.cjs.map +0 -1
  126. package/dist/place-node-NraNYKPx.js.map +0 -1
  127. package/dist/related-list-timeline-CCzl71aA.cjs.map +0 -1
  128. package/dist/related-list-timeline-yrPsjA3F.js.map +0 -1
  129. package/dist/related-rows-ea43qhhy.cjs.map +0 -1
  130. package/dist/related-rows-o0_t-Yce.js.map +0 -1
  131. package/dist/relation-create-IA40t1hi.cjs +0 -364
  132. package/dist/relation-create-IA40t1hi.cjs.map +0 -1
  133. package/dist/relation-create-h6F9B4C4.js +0 -339
  134. package/dist/relation-create-h6F9B4C4.js.map +0 -1
  135. package/dist/relation-many-picker-C8zFEjwd.cjs.map +0 -1
  136. package/dist/relation-many-picker-bvkjkv-k.js.map +0 -1
  137. package/dist/relation-picker-Z0ZJJ5uS.js.map +0 -1
  138. package/dist/relation-picker-dialog-0IzkjmiA.cjs.map +0 -1
  139. package/dist/relation-picker-dialog-B6nIiJBf.js.map +0 -1
  140. package/dist/relation-picker-gag0qSR5.cjs.map +0 -1
  141. package/dist/resource-page-router-3RUf9d1j.js.map +0 -1
  142. package/dist/resource-page-router-PXfMW9nh.cjs.map +0 -1
  143. package/dist/search-access-CPPmfuvy.js.map +0 -1
  144. package/dist/search-access-Dugvttlg.cjs.map +0 -1
  145. package/dist/shell-BPlk8hEa.js +0 -205
  146. package/dist/shell-BPlk8hEa.js.map +0 -1
  147. package/dist/shell-DxhlsPwm.cjs +0 -271
  148. package/dist/shell-DxhlsPwm.cjs.map +0 -1
  149. package/dist/toaster-C02XbB9r.js.map +0 -1
  150. package/dist/toaster-Cr51X7bz.cjs.map +0 -1
  151. package/dist/use-dialog-filter-state-C--oMAZG.js.map +0 -1
  152. package/dist/use-dialog-filter-state-Dhe8PcB5.cjs.map +0 -1
@@ -1,13 +1,16 @@
1
1
  const require_use_theme = require("./use-theme-DFlpXils.cjs");
2
- const require_toaster = require("./toaster-Cr51X7bz.cjs");
2
+ const require_toaster = require("./toaster-BbByOytP.cjs");
3
3
  const require_button = require("./button-BxnnE28H.cjs");
4
- const require_dialog = require("./dialog-DRNUq9EA.cjs");
4
+ const require_dialog = require("./dialog-vmMdfUWs.cjs");
5
5
  let _burojs_core = require("@burojs/core");
6
6
  let _burojs_react = require("@burojs/react");
7
7
  let _tabler_icons_react = require("@tabler/icons-react");
8
8
  let react = require("react");
9
9
  react = require_use_theme.__toESM(react, 1);
10
10
  let react_jsx_runtime = require("react/jsx-runtime");
11
+ let class_variance_authority = require("class-variance-authority");
12
+ let _radix_ui_react_dialog = require("@radix-ui/react-dialog");
13
+ _radix_ui_react_dialog = require_use_theme.__toESM(_radix_ui_react_dialog, 1);
11
14
  let _radix_ui_react_tooltip = require("@radix-ui/react-tooltip");
12
15
  _radix_ui_react_tooltip = require_use_theme.__toESM(_radix_ui_react_tooltip, 1);
13
16
  let _radix_ui_react_dropdown_menu = require("@radix-ui/react-dropdown-menu");
@@ -103,6 +106,69 @@ function DocInfo({ address, name, testId, className }) {
103
106
  });
104
107
  }
105
108
  //#endregion
109
+ //#region src/primitives/sheet.tsx
110
+ const Sheet = _radix_ui_react_dialog.Root;
111
+ const SheetTrigger = _radix_ui_react_dialog.Trigger;
112
+ const SheetClose = _radix_ui_react_dialog.Close;
113
+ const SheetPortal = _radix_ui_react_dialog.Portal;
114
+ const SheetOverlay = react.forwardRef(({ className, ...props }, ref) => (0, react_jsx_runtime.jsx)(_radix_ui_react_dialog.Overlay, {
115
+ className: require_use_theme.cn("fixed inset-0 z-50 bg-overlay/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 duration-[var(--duration-panel)] ease-[var(--ease-overlay)]", className),
116
+ ...props,
117
+ ref
118
+ }));
119
+ SheetOverlay.displayName = _radix_ui_react_dialog.Overlay.displayName;
120
+ const sheetVariants = (0, class_variance_authority.cva)("fixed z-50 gap-4 bg-background text-foreground p-6 shadow-lg duration-[var(--duration-panel)] ease-[var(--ease-overlay)] data-[state=open]:animate-in data-[state=closed]:animate-out", {
121
+ variants: { side: {
122
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
123
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
124
+ left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
125
+ right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
126
+ } },
127
+ defaultVariants: { side: "right" }
128
+ });
129
+ const SheetContent = react.forwardRef(({ side = "right", className, children, showClose = true, ...props }, ref) => {
130
+ const chromeT = (0, _burojs_react.useChromeT)();
131
+ return (0, react_jsx_runtime.jsxs)(SheetPortal, { children: [(0, react_jsx_runtime.jsx)(SheetOverlay, {}), (0, react_jsx_runtime.jsxs)(_radix_ui_react_dialog.Content, {
132
+ ref,
133
+ className: require_use_theme.cn(sheetVariants({ side }), className),
134
+ ...props,
135
+ children: [children, showClose && (0, react_jsx_runtime.jsxs)(_radix_ui_react_dialog.Close, {
136
+ className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary",
137
+ children: [(0, react_jsx_runtime.jsx)(_tabler_icons_react.IconX, { className: "h-4 w-4" }), (0, react_jsx_runtime.jsx)("span", {
138
+ className: "sr-only",
139
+ children: chromeT("actions.close", { defaultValue: "Close" })
140
+ })]
141
+ })]
142
+ })] });
143
+ });
144
+ SheetContent.displayName = _radix_ui_react_dialog.Content.displayName;
145
+ function SheetHeader({ className, ...props }) {
146
+ return (0, react_jsx_runtime.jsx)("div", {
147
+ className: require_use_theme.cn("flex flex-col space-y-2 text-center sm:text-left", className),
148
+ ...props
149
+ });
150
+ }
151
+ SheetHeader.displayName = "SheetHeader";
152
+ function SheetFooter({ className, ...props }) {
153
+ return (0, react_jsx_runtime.jsx)("div", {
154
+ className: require_use_theme.cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className),
155
+ ...props
156
+ });
157
+ }
158
+ SheetFooter.displayName = "SheetFooter";
159
+ const SheetTitle = react.forwardRef(({ className, ...props }, ref) => (0, react_jsx_runtime.jsx)(_radix_ui_react_dialog.Title, {
160
+ ref,
161
+ className: require_use_theme.cn("text-lg font-semibold text-foreground", className),
162
+ ...props
163
+ }));
164
+ SheetTitle.displayName = _radix_ui_react_dialog.Title.displayName;
165
+ const SheetDescription = react.forwardRef(({ className, ...props }, ref) => (0, react_jsx_runtime.jsx)(_radix_ui_react_dialog.Description, {
166
+ ref,
167
+ className: require_use_theme.cn("text-sm text-muted-foreground", className),
168
+ ...props
169
+ }));
170
+ SheetDescription.displayName = _radix_ui_react_dialog.Description.displayName;
171
+ //#endregion
106
172
  //#region src/primitives/tooltip.tsx
107
173
  const TooltipProvider = _radix_ui_react_tooltip.Provider;
108
174
  const Tooltip = _radix_ui_react_tooltip.Root;
@@ -259,6 +325,162 @@ function Icon({ name, className }) {
259
325
  });
260
326
  }
261
327
  //#endregion
328
+ //#region src/ui-presentations/shell.tsx
329
+ const OwnTitleContext = (0, react.createContext)(false);
330
+ function focusOwnHeading(event) {
331
+ const container = event.currentTarget;
332
+ if (!(container instanceof HTMLElement)) return;
333
+ const heading = container.querySelector("[data-buro-overlay-heading]");
334
+ if (!(heading instanceof HTMLElement)) return;
335
+ event.preventDefault();
336
+ heading.focus();
337
+ }
338
+ function WrappedDialogContent({ wrapper, copy, children }) {
339
+ return wrapper ? (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsxs)(require_dialog.DialogHeader, { children: [(0, react_jsx_runtime.jsx)(require_dialog.DialogTitle, { children: copy.title }), (0, react_jsx_runtime.jsx)(require_dialog.DialogDescription, {
340
+ className: copy.description === void 0 ? "sr-only" : void 0,
341
+ children: copy.description ?? ""
342
+ })] }), children] }) : (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
343
+ (0, react_jsx_runtime.jsx)(require_dialog.DialogTitle, {
344
+ className: "sr-only",
345
+ children: copy.title
346
+ }),
347
+ (0, react_jsx_runtime.jsx)(require_dialog.DialogDescription, {
348
+ className: "sr-only",
349
+ children: copy.description ?? ""
350
+ }),
351
+ children
352
+ ] });
353
+ }
354
+ function WrappedSheetContent({ wrapper, copy, children }) {
355
+ return wrapper ? (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsxs)(SheetHeader, { children: [(0, react_jsx_runtime.jsx)(SheetTitle, { children: copy.title }), (0, react_jsx_runtime.jsx)(SheetDescription, {
356
+ className: copy.description === void 0 ? "sr-only" : void 0,
357
+ children: copy.description ?? ""
358
+ })] }), children] }) : (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
359
+ (0, react_jsx_runtime.jsx)(SheetTitle, {
360
+ className: "sr-only",
361
+ children: copy.title
362
+ }),
363
+ (0, react_jsx_runtime.jsx)(SheetDescription, {
364
+ className: "sr-only",
365
+ children: copy.description ?? ""
366
+ }),
367
+ children
368
+ ] });
369
+ }
370
+ function useFocusRestoration() {
371
+ const returnFocus = (0, react.useRef)(typeof document === "undefined" || !(document.activeElement instanceof HTMLElement) ? null : document.activeElement);
372
+ (0, react.useEffect)(() => () => {
373
+ const element = returnFocus.current;
374
+ queueMicrotask(() => {
375
+ if (element?.isConnected && element !== document.body) {
376
+ element.focus();
377
+ return;
378
+ }
379
+ const main = document.querySelector("main");
380
+ if (main === null) return;
381
+ if (!main.hasAttribute("tabindex")) main.setAttribute("tabindex", "-1");
382
+ main.focus();
383
+ });
384
+ }, []);
385
+ }
386
+ function keepForPopover(event) {
387
+ const target = event.target;
388
+ if (target instanceof Element && target.closest("[data-buro-popover]") !== null) event.preventDefault();
389
+ }
390
+ const REDUCED_MOTION = "motion-reduce:animate-none motion-reduce:transition-none";
391
+ function DialogPresentationShell({ dismiss, wrapper, copy, ownTitle = false, children }) {
392
+ useFocusRestoration();
393
+ return (0, react_jsx_runtime.jsx)(require_dialog.Dialog, {
394
+ open: true,
395
+ onOpenChange: (open) => {
396
+ if (!open) dismiss();
397
+ },
398
+ children: ownTitle ? (0, react_jsx_runtime.jsx)(require_dialog.DialogContent, {
399
+ className: `flex max-h-[85vh] flex-col ${REDUCED_MOTION}`,
400
+ overlayClassName: REDUCED_MOTION,
401
+ showClose: wrapper,
402
+ "aria-describedby": void 0,
403
+ "aria-modal": "true",
404
+ onOpenAutoFocus: focusOwnHeading,
405
+ onPointerDownOutside: keepForPopover,
406
+ children: (0, react_jsx_runtime.jsx)(OwnTitleContext.Provider, {
407
+ value: true,
408
+ children
409
+ })
410
+ }) : (0, react_jsx_runtime.jsx)(require_dialog.DialogContent, {
411
+ className: REDUCED_MOTION,
412
+ overlayClassName: REDUCED_MOTION,
413
+ showClose: wrapper,
414
+ "aria-modal": "true",
415
+ onPointerDownOutside: keepForPopover,
416
+ children: (0, react_jsx_runtime.jsx)(WrappedDialogContent, {
417
+ wrapper,
418
+ copy,
419
+ children
420
+ })
421
+ })
422
+ });
423
+ }
424
+ function SheetPresentationShell({ dismiss, wrapper, copy, ownTitle = false, children }) {
425
+ useFocusRestoration();
426
+ return (0, react_jsx_runtime.jsx)(Sheet, {
427
+ open: true,
428
+ onOpenChange: (open) => {
429
+ if (!open) dismiss();
430
+ },
431
+ children: ownTitle ? (0, react_jsx_runtime.jsx)(SheetContent, {
432
+ side: "right",
433
+ className: `flex flex-col sm:max-w-xl ${REDUCED_MOTION}`,
434
+ showClose: wrapper,
435
+ "aria-describedby": void 0,
436
+ "aria-modal": "true",
437
+ onOpenAutoFocus: focusOwnHeading,
438
+ onPointerDownOutside: keepForPopover,
439
+ children: (0, react_jsx_runtime.jsx)(OwnTitleContext.Provider, {
440
+ value: true,
441
+ children
442
+ })
443
+ }) : (0, react_jsx_runtime.jsx)(SheetContent, {
444
+ side: "right",
445
+ className: `sm:max-w-xl ${REDUCED_MOTION}`,
446
+ showClose: wrapper,
447
+ "aria-modal": "true",
448
+ onPointerDownOutside: keepForPopover,
449
+ children: (0, react_jsx_runtime.jsx)(WrappedSheetContent, {
450
+ wrapper,
451
+ copy,
452
+ children
453
+ })
454
+ })
455
+ });
456
+ }
457
+ //#endregion
458
+ //#region src/flows/overlay-heading.tsx
459
+ function useFocusOnMount(ref) {
460
+ (0, react.useEffect)(() => {
461
+ const heading = ref.current;
462
+ if (heading === null) return;
463
+ const active = document.activeElement;
464
+ if (active === document.body || active === heading.closest("[role=\"dialog\"]")) heading.focus();
465
+ }, [ref]);
466
+ }
467
+ function OwnTitleHeading({ label }) {
468
+ const ownTitle = (0, react.useContext)(OwnTitleContext);
469
+ const ref = (0, react.useRef)(null);
470
+ useFocusOnMount(ref);
471
+ const heading = (0, react_jsx_runtime.jsx)("h2", {
472
+ ref,
473
+ tabIndex: -1,
474
+ "data-buro-overlay-heading": "",
475
+ className: "text-lg font-semibold",
476
+ children: label
477
+ });
478
+ return ownTitle ? (0, react_jsx_runtime.jsx)(_radix_ui_react_dialog.Title, {
479
+ asChild: true,
480
+ children: heading
481
+ }) : heading;
482
+ }
483
+ //#endregion
262
484
  //#region src/flows/load-runtime.tsx
263
485
  function retrying(importer) {
264
486
  let loading;
@@ -270,11 +492,11 @@ function retrying(importer) {
270
492
  return loading;
271
493
  };
272
494
  }
273
- const loadFlowRuntime = retrying(() => Promise.resolve().then(() => require("./flow-runtime-D3avVH0I.cjs")));
274
- const loadFlowScreen = retrying(() => Promise.resolve().then(() => require("./flow-screen-Ci_Sik4Y.cjs")));
275
- const loadPageFlowRoute = retrying(() => Promise.resolve().then(() => require("./page-flow-route-hdnULWqd.cjs")));
276
- const loadInlineFlowHost = retrying(() => Promise.resolve().then(() => require("./inline-flow-host-DV1et3c6.cjs")));
277
- const loadBulkSummary = retrying(() => Promise.resolve().then(() => require("./bulk-summary-CwSd6Yjb.cjs")));
495
+ const loadFlowRuntime = retrying(() => Promise.resolve().then(() => require("./flow-runtime-BpmrIUb6.cjs")));
496
+ const loadFlowScreen = retrying(() => Promise.resolve().then(() => require("./flow-screen-Bcz9NF2V.cjs")));
497
+ const loadPageFlowRoute = retrying(() => Promise.resolve().then(() => require("./page-flow-route-DS8IVTVH.cjs")));
498
+ const loadInlineFlowHost = retrying(() => Promise.resolve().then(() => require("./inline-flow-host-3vw7LzzD.cjs")));
499
+ const loadBulkSummary = retrying(() => Promise.resolve().then(() => require("./bulk-summary-CrEij5vq.cjs")));
278
500
  function preloadFlowRuntime() {
279
501
  loadFlowRuntime().catch(() => void 0);
280
502
  }
@@ -315,8 +537,7 @@ var FlowBoundary = class extends react.Component {
315
537
  }
316
538
  };
317
539
  function loadFailedText(t) {
318
- const value = t("block.failed");
319
- return value === "block.failed" ? "This section could not be loaded." : value;
540
+ return t("block.failed", { defaultValue: "This section could not be loaded." });
320
541
  }
321
542
  function FailedRun({ onDone }) {
322
543
  const t = (0, _burojs_react.useOptionalT)();
@@ -357,31 +578,45 @@ function RuntimeBulkFlowRunner(props) {
357
578
  children: (0, react_jsx_runtime.jsx)(Runner, { ...props })
358
579
  });
359
580
  }
360
- function FlowLoadFailed({ onRetry }) {
581
+ function FlowLoadFailed({ label, onRetry }) {
361
582
  const t = (0, _burojs_react.useOptionalT)();
583
+ const chromeT = (0, _burojs_react.useChromeT)();
362
584
  const instance = (0, _burojs_react.useUIInstance)();
363
- const retryText = t("actions.retry") === "actions.retry" ? "Retry" : t("actions.retry");
364
- const closeText = t("flow.close") === "flow.close" ? "Close" : t("flow.close");
585
+ const retryText = chromeT("actions.retry", { defaultValue: "Retry" });
586
+ const closeText = t("flow.close", { defaultValue: "Close" });
365
587
  return (0, react_jsx_runtime.jsxs)("div", {
366
588
  role: "alert",
367
589
  "data-buro-flow-load": "failed",
368
590
  className: "flex flex-col gap-3 text-sm",
369
- children: [(0, react_jsx_runtime.jsx)("p", { children: loadFailedText(t) }), (0, react_jsx_runtime.jsxs)("div", {
370
- className: "flex justify-end gap-2",
371
- children: [(0, react_jsx_runtime.jsx)(require_button.Button, {
372
- type: "button",
373
- variant: "ghost",
374
- onClick: () => instance.dismiss(),
375
- children: closeText
376
- }), (0, react_jsx_runtime.jsx)(require_button.Button, {
377
- type: "button",
378
- onClick: onRetry,
379
- children: retryText
380
- })]
381
- })]
591
+ children: [
592
+ label === void 0 ? null : (0, react_jsx_runtime.jsx)(OwnTitleHeading, { label }),
593
+ (0, react_jsx_runtime.jsx)("p", { children: loadFailedText(t) }),
594
+ (0, react_jsx_runtime.jsxs)("div", {
595
+ className: "flex justify-end gap-2",
596
+ children: [(0, react_jsx_runtime.jsx)(require_button.Button, {
597
+ type: "button",
598
+ variant: "ghost",
599
+ onClick: () => instance.dismiss(),
600
+ children: closeText
601
+ }), (0, react_jsx_runtime.jsx)(require_button.Button, {
602
+ type: "button",
603
+ onClick: onRetry,
604
+ children: retryText
605
+ })]
606
+ })
607
+ ]
382
608
  });
383
609
  }
384
610
  //#endregion
611
+ //#region src/lib/reason-text.ts
612
+ function reasonText(caps, reason, resource) {
613
+ if (reason === "") return reason;
614
+ return (0, _burojs_core.resolveContentSlot)(caps, [reason], {
615
+ resource,
616
+ default: reason
617
+ }) ?? reason;
618
+ }
619
+ //#endregion
385
620
  //#region src/actions/action-inner.tsx
386
621
  function ActionInner({ icon, label }) {
387
622
  return (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [icon ? (0, react_jsx_runtime.jsx)(Icon, { name: icon }) : null, label] });
@@ -439,10 +674,6 @@ function withActionTooltip(control, label, compact, reason) {
439
674
  }
440
675
  //#endregion
441
676
  //#region src/flows/chrome.ts
442
- const text = (t, key, fallback, params) => {
443
- const value = t(key, params === void 0 ? void 0 : { params });
444
- return value === key ? fallback : value;
445
- };
446
677
  function findDeclared(def, name) {
447
678
  const actions = def?.actions ?? {};
448
679
  for (const place of [
@@ -456,15 +687,39 @@ function findDeclared(def, name) {
456
687
  if (found !== void 0) return found;
457
688
  }
458
689
  }
690
+ function declaredFlow(app, resource, actionName) {
691
+ try {
692
+ return resource === "" ? app.registry.appActions.get(actionName) : findDeclared(app.registry.get(resource), actionName);
693
+ } catch {
694
+ return;
695
+ }
696
+ }
697
+ function useFlowDialogTexts(resource, actionName, labelText) {
698
+ const app = (0, _burojs_react.useApp)();
699
+ const caps = (0, _burojs_react.useI18nCaps)("");
700
+ const texts = declaredFlow(app, resource, actionName)?.texts;
701
+ const prefix = resource === "" ? `appActions.${actionName}` : `resources.${resource}.actions.${actionName}`;
702
+ const own = (path) => {
703
+ const key = `${prefix}.${path.join(".")}`;
704
+ return caps.has(key) ? caps.t(key) : (0, _burojs_core.textsValueAt)(texts, path);
705
+ };
706
+ return {
707
+ confirmTitle: own(["confirm", "title"]) ?? labelText,
708
+ confirmProceed: own(["confirm", "proceed"]) ?? labelText,
709
+ dismiss: own(["dismiss"])
710
+ };
711
+ }
459
712
  function useFlowChrome(resource, actionName, children) {
460
713
  const app = (0, _burojs_react.useApp)();
461
714
  const declared = (resource === "" ? void 0 : findDeclared(app.registry.get(resource), actionName)) ?? {};
462
715
  const label = useResolvedLabel(declared, actionName, children, resource);
716
+ const labelText = typeof label === "string" ? label : (0, _burojs_core.humanizeKey)(actionName);
463
717
  return {
464
718
  label,
465
- labelText: typeof label === "string" ? label : (0, _burojs_core.humanizeKey)(actionName),
719
+ labelText,
466
720
  icon: resolveActionIcon(declared, actionName),
467
- destructive: declared.variant === "destructive"
721
+ destructive: declared.variant === "destructive",
722
+ ...useFlowDialogTexts(resource, actionName, labelText)
468
723
  };
469
724
  }
470
725
  //#endregion
@@ -576,14 +831,19 @@ function FlowControl(props) {
576
831
  testId: `${testid}:info`
577
832
  })] });
578
833
  }
579
- function FlowActionButton(props) {
834
+ function FlowActionButton(input) {
835
+ const props = {
836
+ ...input,
837
+ resource: (0, _burojs_core.routeResourceKey)(input.resource)
838
+ };
580
839
  const { resource, actionName, record, scope = "row", children } = props;
581
840
  const control = (0, _burojs_react.useFlowRowResolver)(resource)(actionName, record);
582
841
  const chrome = useFlowChrome(resource, actionName, children);
583
842
  const tid = (0, _burojs_react.useTestIds)();
584
- const testid = makeTestId(scope, resource, actionName, record?.id ?? "", tid);
843
+ const app = (0, _burojs_react.useApp)();
844
+ const testid = makeTestId(scope, resource, actionName, String((0, _burojs_react.recordKeyOf)(app.registry.get(resource), record) ?? ""), tid);
585
845
  const [running, setRunning] = (0, react.useState)(false);
586
- const runRecord = control.record ?? record;
846
+ const runRecord = useFlowRecord(resource, actionName, control.record ?? record);
587
847
  const hosted = useHostedFlow(resource, actionName, runRecord, chrome.labelText);
588
848
  const onRun = () => {
589
849
  if (running) return;
@@ -615,6 +875,17 @@ function FlowActionButton(props) {
615
875
  onClose: () => setRunning(false)
616
876
  }) : null] });
617
877
  }
878
+ function useFlowRecord(resource, actionName, record) {
879
+ const def = (0, _burojs_react.useApp)().registry.get(resource);
880
+ const compiled = (0, react.useMemo)(() => {
881
+ try {
882
+ return def === void 0 ? null : (0, _burojs_core.compileFlow)(def, actionName);
883
+ } catch {
884
+ return null;
885
+ }
886
+ }, [def, actionName]);
887
+ return compiled === null ? void 0 : (0, _burojs_core.flowRecordOf)(compiled, record);
888
+ }
618
889
  function useHostedFlow(resource, actionName, record, label) {
619
890
  const app = (0, _burojs_react.useApp)();
620
891
  const def = app.registry.get(resource);
@@ -625,7 +896,7 @@ function useHostedFlow(resource, actionName, record, label) {
625
896
  return null;
626
897
  }
627
898
  }, [def, actionName]);
628
- const title = (0, _burojs_react.useProjectedTitle)(resource, record?.id, record);
899
+ const title = (0, _burojs_react.useProjectedTitle)(resource, (0, _burojs_react.recordKeyOf)(def, record), record);
629
900
  const presentFlow = (0, _burojs_react.usePresentFlow)();
630
901
  const hasHost = compiled?.hasHost === true;
631
902
  const recordId = record?.[compiled?.idField ?? "id"] ?? record?.id;
@@ -654,8 +925,9 @@ function useHostedFlow(resource, actionName, record, label) {
654
925
  function FlowMenuItem(props) {
655
926
  const chrome = useFlowChrome(props.resource, props.actionName);
656
927
  const tid = (0, _burojs_react.useTestIds)();
657
- const testid = makeTestId(props.scope, props.resource, props.actionName, props.record?.id ?? "", tid);
658
- const runRecord = props.control.record ?? props.record;
928
+ const def = (0, _burojs_react.useApp)().registry.get(props.resource);
929
+ const testid = makeTestId(props.scope, props.resource, props.actionName, String((0, _burojs_react.recordKeyOf)(def, props.record) ?? ""), tid);
930
+ const runRecord = useFlowRecord(props.resource, props.actionName, props.control.record ?? props.record);
659
931
  const hosted = useHostedFlow(props.resource, props.actionName, runRecord, chrome.labelText);
660
932
  return (0, react_jsx_runtime.jsx)(FlowControl, {
661
933
  state: (0, _burojs_react.conjoinHostPage)(props.control.state, hosted.hostPage),
@@ -709,7 +981,7 @@ function listSlot(region, resource) {
709
981
  return `list.${region}.${canonicalResourceName(resource)}`;
710
982
  }
711
983
  function useListSlot(region, resource) {
712
- return (0, _burojs_react.useComponent)(listSlot(region, resource));
984
+ return (0, _burojs_react.useComponent)(listSlot(region, (0, _burojs_core.routeResourceKey)(resource)));
713
985
  }
714
986
  //#endregion
715
987
  //#region src/actions/builtin-edit-route.ts
@@ -758,12 +1030,10 @@ function useBuiltinEditRoute(action, resource, recordId) {
758
1030
  }
759
1031
  //#endregion
760
1032
  //#region src/actions/action-button.tsx
761
- function DisabledAction({ reason, label, icon, testid, size, variant, className, asMenuItem, resource, density = "regular", actionName, surface }) {
1033
+ function DisabledAction({ reason, label, icon, testid, size, variant, className, asMenuItem, resource: resourceInput, density = "regular", actionName, surface }) {
1034
+ const resource = resourceInput === void 0 ? void 0 : (0, _burojs_core.routeResourceKey)(resourceInput);
762
1035
  const i18nCaps = (0, _burojs_react.useI18nCaps)(resource);
763
- const text = reason ? (0, _burojs_core.resolveContentSlot)(i18nCaps, [reason], {
764
- resource,
765
- default: reason
766
- }) : (0, _burojs_core.resolveContentSlot)(i18nCaps, ["availability.denied"], {
1036
+ const text = reason ? reasonText(i18nCaps, reason, resource) : (0, _burojs_core.resolveContentSlot)(i18nCaps, ["availability.denied"], {
767
1037
  resource,
768
1038
  default: "This action isn't available"
769
1039
  });
@@ -772,15 +1042,24 @@ function DisabledAction({ reason, label, icon, testid, size, variant, className,
772
1042
  e.stopPropagation();
773
1043
  (0, sonner.toast)(text);
774
1044
  };
1045
+ const reasonId = (0, react.useId)();
775
1046
  if (asMenuItem) return (0, react_jsx_runtime.jsx)(DropdownMenuItem, {
776
1047
  "aria-disabled": "true",
1048
+ "aria-describedby": reasonId,
777
1049
  "data-testid": testid,
778
1050
  onSelect: (e) => e.preventDefault(),
779
1051
  onClick,
780
1052
  className: "opacity-60",
781
1053
  children: (0, react_jsx_runtime.jsx)(ActionInner, {
782
1054
  icon,
783
- label
1055
+ label: (0, react_jsx_runtime.jsxs)("span", {
1056
+ className: "flex min-w-0 flex-col",
1057
+ children: [(0, react_jsx_runtime.jsx)("span", { children: label }), (0, react_jsx_runtime.jsx)("span", {
1058
+ id: reasonId,
1059
+ className: "text-xs text-muted-foreground",
1060
+ children: text
1061
+ })]
1062
+ })
784
1063
  })
785
1064
  });
786
1065
  const chrome = resolveControlChrome({
@@ -844,36 +1123,41 @@ function actionResourceHandle(resource) {
844
1123
  ref: (0, _burojs_core.normalizeEntityRef)(resource)
845
1124
  };
846
1125
  }
847
- function ActionButton(props) {
1126
+ function ActionButton(input) {
1127
+ const { sources, ...rest } = input;
1128
+ const props = {
1129
+ ...rest,
1130
+ resource: (0, _burojs_core.routeResourceKey)(input.resource)
1131
+ };
848
1132
  const def = (0, _burojs_react.useApp)().registry.get(props.resource);
849
1133
  const scope = props.scope ?? "row";
850
- const availability = (0, _burojs_react.useAvailabilityResolver)(props.resource, (0, _burojs_react.modeForSurface)(scope))(props.actionName, props.record);
851
- const action = findAction(def?.actions?.item, props.actionName) ?? findAction(def?.actions?.resource, props.actionName);
1134
+ const resolveAvailability = (0, _burojs_react.useAvailabilityResolver)(props.resource, (0, _burojs_react.modeForSurface)(scope));
1135
+ const itemAction = findAction(def?.actions?.item, props.actionName);
1136
+ const action = itemAction ?? findAction(def?.actions?.resource, props.actionName);
1137
+ const record = itemAction === void 0 ? void 0 : props.record;
1138
+ const availability = resolveAvailability(props.actionName, record);
1139
+ const whenSources = (0, _burojs_react.useActionWhenSources)({
1140
+ resource: props.resource,
1141
+ record
1142
+ });
852
1143
  if (!action) return null;
853
1144
  if ((0, _burojs_core_internal.isFlowAction)(action)) return (0, react_jsx_runtime.jsx)(FlowActionButton, { ...props });
854
1145
  if (availability.state === "absent" || availability.state === "hidden") return null;
855
- if (!actionWhenHolds(action, props.record)) return null;
1146
+ if (!(0, _burojs_core_internal.actionWhenHolds)(action, (0, _burojs_core_internal.actionWhenSources)(whenSources, sources))) return null;
856
1147
  if (action.kind === "link") return (0, react_jsx_runtime.jsx)(LinkActionButton, {
857
1148
  ...props,
1149
+ record,
858
1150
  action,
859
1151
  availability
860
1152
  });
861
1153
  if (action.kind === "modal") return (0, react_jsx_runtime.jsx)(ModalActionButton, {
862
1154
  ...props,
1155
+ record,
863
1156
  action,
864
1157
  availability
865
1158
  });
866
1159
  return null;
867
1160
  }
868
- function actionWhenHolds(action, record) {
869
- const when = action.when;
870
- if (when === void 0) return true;
871
- return (0, _burojs_core_internal.evaluateCondition)(when, record === void 0 ? {} : { record: {
872
- status: "ready",
873
- value: record,
874
- refreshing: false
875
- } }, { mode: "show" }) === true;
876
- }
877
1161
  function presentModalAction(args) {
878
1162
  const { present, action, resource, actionName, record, recordId, label } = args;
879
1163
  const result = present({
@@ -901,17 +1185,20 @@ const reportedDeadRoutes = new Set();
901
1185
  function deadRecordRoute(registry, action, to) {
902
1186
  if ((0, _burojs_core.isBuiltinItemAction)(action) || to === null || typeof to !== "object") return null;
903
1187
  const target = to;
904
- if (typeof target.resource !== "string") return null;
905
1188
  if (target.action !== "show" && target.action !== "edit" && target.action !== "create") return null;
1189
+ let resource;
906
1190
  let def;
907
1191
  try {
908
- def = registry.get(target.resource);
1192
+ if (typeof target.resource === "string") resource = target.resource;
1193
+ else if (target.resource !== null && typeof target.resource === "object") resource = (0, _burojs_core.routeResourceKey)(target.resource);
1194
+ else return null;
1195
+ def = registry.get(resource);
909
1196
  } catch {
910
1197
  return null;
911
1198
  }
912
1199
  if (def === void 0 || (0, _burojs_core.hasRecordPage)(def, target.action)) return null;
913
1200
  return {
914
- resource: target.resource,
1201
+ resource,
915
1202
  action: target.action
916
1203
  };
917
1204
  }
@@ -929,7 +1216,7 @@ function LinkActionButton({ resource, actionName, record, scope = "row", variant
929
1216
  const safeRecord = record ?? { id: "" };
930
1217
  const isDestructive = action.variant === "destructive";
931
1218
  const buttonVariant = variant ?? (isDestructive ? "destructive" : "outline");
932
- const recordId = record?.id ?? "";
1219
+ const recordId = String((0, _burojs_react.recordKeyOf)(app.registry.get(resource), record) ?? "");
933
1220
  const testid = makeTestId(scope, resource, actionName, recordId, tid);
934
1221
  const label = useResolvedLabel(action, actionName, children, resource);
935
1222
  const editRoute = useBuiltinEditRoute(action, resource, recordId);
@@ -1035,11 +1322,12 @@ function LinkActionButton({ resource, actionName, record, scope = "row", variant
1035
1322
  }
1036
1323
  function ModalActionButton({ resource, actionName, record, scope = "row", variant, size, density, className, children, asMenuItem, action, availability }) {
1037
1324
  const tid = (0, _burojs_react.useTestIds)();
1325
+ const app = (0, _burojs_react.useApp)();
1038
1326
  const present = (0, _burojs_react.usePresentBlock)();
1039
1327
  const safeRecord = record ?? { id: "" };
1040
1328
  const isDestructive = action.variant === "destructive";
1041
1329
  const buttonVariant = variant ?? (isDestructive ? "destructive" : "outline");
1042
- const recordId = record?.id ?? "";
1330
+ const recordId = String((0, _burojs_react.recordKeyOf)(app.registry.get(resource), record) ?? "");
1043
1331
  const testid = makeTestId(scope, resource, actionName, recordId, tid);
1044
1332
  const label = useResolvedLabel(action, actionName, children, resource);
1045
1333
  if (availability.state === "disabled") return (0, react_jsx_runtime.jsx)(DisabledAction, {
@@ -1099,33 +1387,34 @@ function ModalActionButton({ resource, actionName, record, scope = "row", varian
1099
1387
  }
1100
1388
  //#endregion
1101
1389
  //#region src/checks/check-confirm-dialog.tsx
1102
- function translateOrFallback(t, key, fallback, params, resource) {
1103
- const translated = t(key, {
1390
+ function issueText(issue, t, caps, resource) {
1391
+ const params = issue.message.params;
1392
+ const checkId = issue.check?.id;
1393
+ const ownCheck = checkId !== void 0 && issue.message.key === `checks.${checkId}`;
1394
+ const declared = typeof issue.message.default === "string" ? issue.message.default : ownCheck ? void 0 : issue.message.key;
1395
+ if (issue.message.params?.resolved === true) return declared ?? issue.message.key;
1396
+ if (!ownCheck) return t(issue.message.key, {
1397
+ defaultValue: declared ?? "",
1104
1398
  params,
1105
1399
  ...resource === void 0 ? {} : { resource }
1106
1400
  });
1107
- return translated === key ? fallback : translated;
1108
- }
1109
- function issueText(issue, t, resource) {
1110
- const params = issue.params;
1111
- const checkId = params?.checkId;
1112
- const ownCheck = typeof checkId === "string" && issue.message.key === `checks.${checkId}`;
1113
- const declared = typeof issue.message.default === "string" ? issue.message.default : ownCheck ? void 0 : issue.message.key;
1114
- if (issue.params?.resolved === true) return declared ?? issue.message.key;
1115
- if (!ownCheck) return translateOrFallback(t, issue.message.key, declared ?? "", params, resource);
1116
- const miss = "\0";
1117
- const bundled = [`${issue.message.key}.message`, issue.message.key].map((key) => translateOrFallback(t, key, miss, params, resource)).find((text) => text !== miss);
1118
- if (bundled !== void 0) return bundled;
1401
+ const entryKey = [`${issue.message.key}.message`, issue.message.key].find((key) => caps.has(key, { resource }));
1402
+ if (entryKey !== void 0) return caps.t(entryKey, {
1403
+ resource,
1404
+ params
1405
+ });
1119
1406
  if (declared !== void 0) return declared;
1120
1407
  const name = String(params?.name ?? checkId);
1121
- return translateOrFallback(t, _burojs_core.FRAMEWORK_TEXT_KEYS.checkFailed, (0, _burojs_core.checkFailedDefault)(name), {
1122
- ...params,
1123
- name
1124
- }, void 0);
1408
+ return t(_burojs_core.FRAMEWORK_TEXT_KEYS.checkFailed, {
1409
+ defaultValue: (0, _burojs_core.checkFailedDefault)(name),
1410
+ params: {
1411
+ ...params,
1412
+ name
1413
+ }
1414
+ });
1125
1415
  }
1126
1416
  function checkIdOf(issue, index) {
1127
- const id = issue.params?.checkId;
1128
- return typeof id === "string" ? id : `${index}`;
1417
+ return issue.check?.id ?? `${index}`;
1129
1418
  }
1130
1419
  const SEVERITY_CLASSNAME = {
1131
1420
  error: "text-destructive",
@@ -1134,11 +1423,12 @@ const SEVERITY_CLASSNAME = {
1134
1423
  };
1135
1424
  function ChecksList({ issues, testid, onRowClick, resource }) {
1136
1425
  const t = (0, _burojs_react.useOptionalT)();
1426
+ const caps = (0, _burojs_react.useI18nCaps)(resource);
1137
1427
  return issues.map((issue, index) => {
1138
1428
  const checkId = checkIdOf(issue, index);
1139
1429
  const anchor = issue.path[0];
1140
1430
  const anchorable = typeof anchor === "string";
1141
- const text = issueText(issue, t, resource);
1431
+ const text = issueText(issue, t, caps, resource);
1142
1432
  const className = require_use_theme.cn("text-sm", SEVERITY_CLASSNAME[issue.severity]);
1143
1433
  return anchorable ? (0, react_jsx_runtime.jsx)("li", { children: (0, react_jsx_runtime.jsx)("button", {
1144
1434
  type: "button",
@@ -1153,15 +1443,11 @@ function ChecksList({ issues, testid, onRowClick, resource }) {
1153
1443
  }, `${checkId}-${index}`);
1154
1444
  });
1155
1445
  }
1156
- function CheckConfirmDialog({ state, testid, onAnchorFocus, title, proceedLabel, tone }) {
1157
- const t = (0, _burojs_react.useOptionalT)();
1446
+ function CheckConfirmDialog({ state, testid, onAnchorFocus, title, proceedLabel, cancelLabel, tone }) {
1447
+ const chromeT = (0, _burojs_react.useChromeT)();
1158
1448
  const { resource, open, busy, header, blockers, confirmable, proceed, cancel } = state;
1159
1449
  const blocked = blockers.length > 0;
1160
- const bound = resource === void 0 ? {} : { resource };
1161
- const heading = title ?? t("checks.dialogTitle", {
1162
- defaultValue: "Please review",
1163
- ...bound
1164
- });
1450
+ const heading = title ?? chromeT("checks.dialogTitle", { defaultValue: "Please review" });
1165
1451
  const restoreFocusRef = (0, react.useRef)(null);
1166
1452
  (0, react.useEffect)(() => {
1167
1453
  if (typeof document === "undefined") return;
@@ -1198,10 +1484,7 @@ function CheckConfirmDialog({ state, testid, onAnchorFocus, title, proceedLabel,
1198
1484
  children: [
1199
1485
  blocked && (0, react_jsx_runtime.jsx)("li", {
1200
1486
  className: "text-xs font-semibold uppercase tracking-wider text-destructive",
1201
- children: t("checks.blocked", {
1202
- defaultValue: "Cannot continue",
1203
- ...bound
1204
- })
1487
+ children: chromeT("checks.blocked", { defaultValue: "Cannot continue" })
1205
1488
  }),
1206
1489
  (0, react_jsx_runtime.jsx)(ChecksList, {
1207
1490
  issues: blockers,
@@ -1223,20 +1506,14 @@ function CheckConfirmDialog({ state, testid, onAnchorFocus, title, proceedLabel,
1223
1506
  onClick: cancel,
1224
1507
  "data-testid": `${testid}:cancel`,
1225
1508
  disabled: busy,
1226
- children: t("checks.back", {
1227
- defaultValue: "Go back",
1228
- ...bound
1229
- })
1509
+ children: cancelLabel ?? chromeT("checks.back", { defaultValue: "Go back" })
1230
1510
  }), !blocked && (0, react_jsx_runtime.jsx)(require_button.Button, {
1231
1511
  type: "button",
1232
1512
  variant: tone === "destructive" ? "destructive" : "default",
1233
1513
  onClick: proceed,
1234
1514
  "data-testid": `${testid}:proceed`,
1235
1515
  disabled: busy,
1236
- children: proceedLabel ?? t("checks.proceed", {
1237
- defaultValue: "Continue anyway",
1238
- ...bound
1239
- })
1516
+ children: proceedLabel ?? chromeT("checks.proceed", { defaultValue: "Continue anyway" })
1240
1517
  })] })
1241
1518
  ]
1242
1519
  })
@@ -1261,6 +1538,12 @@ Object.defineProperty(exports, "CheckConfirmDialog", {
1261
1538
  return CheckConfirmDialog;
1262
1539
  }
1263
1540
  });
1541
+ Object.defineProperty(exports, "DialogPresentationShell", {
1542
+ enumerable: true,
1543
+ get: function() {
1544
+ return DialogPresentationShell;
1545
+ }
1546
+ });
1264
1547
  Object.defineProperty(exports, "DisabledAction", {
1265
1548
  enumerable: true,
1266
1549
  get: function() {
@@ -1393,6 +1676,18 @@ Object.defineProperty(exports, "Icon", {
1393
1676
  return Icon;
1394
1677
  }
1395
1678
  });
1679
+ Object.defineProperty(exports, "OwnTitleContext", {
1680
+ enumerable: true,
1681
+ get: function() {
1682
+ return OwnTitleContext;
1683
+ }
1684
+ });
1685
+ Object.defineProperty(exports, "OwnTitleHeading", {
1686
+ enumerable: true,
1687
+ get: function() {
1688
+ return OwnTitleHeading;
1689
+ }
1690
+ });
1396
1691
  Object.defineProperty(exports, "RuntimeAppFlowRunner", {
1397
1692
  enumerable: true,
1398
1693
  get: function() {
@@ -1411,6 +1706,60 @@ Object.defineProperty(exports, "RuntimeFlowRunner", {
1411
1706
  return RuntimeFlowRunner;
1412
1707
  }
1413
1708
  });
1709
+ Object.defineProperty(exports, "Sheet", {
1710
+ enumerable: true,
1711
+ get: function() {
1712
+ return Sheet;
1713
+ }
1714
+ });
1715
+ Object.defineProperty(exports, "SheetClose", {
1716
+ enumerable: true,
1717
+ get: function() {
1718
+ return SheetClose;
1719
+ }
1720
+ });
1721
+ Object.defineProperty(exports, "SheetContent", {
1722
+ enumerable: true,
1723
+ get: function() {
1724
+ return SheetContent;
1725
+ }
1726
+ });
1727
+ Object.defineProperty(exports, "SheetDescription", {
1728
+ enumerable: true,
1729
+ get: function() {
1730
+ return SheetDescription;
1731
+ }
1732
+ });
1733
+ Object.defineProperty(exports, "SheetFooter", {
1734
+ enumerable: true,
1735
+ get: function() {
1736
+ return SheetFooter;
1737
+ }
1738
+ });
1739
+ Object.defineProperty(exports, "SheetHeader", {
1740
+ enumerable: true,
1741
+ get: function() {
1742
+ return SheetHeader;
1743
+ }
1744
+ });
1745
+ Object.defineProperty(exports, "SheetPresentationShell", {
1746
+ enumerable: true,
1747
+ get: function() {
1748
+ return SheetPresentationShell;
1749
+ }
1750
+ });
1751
+ Object.defineProperty(exports, "SheetTitle", {
1752
+ enumerable: true,
1753
+ get: function() {
1754
+ return SheetTitle;
1755
+ }
1756
+ });
1757
+ Object.defineProperty(exports, "SheetTrigger", {
1758
+ enumerable: true,
1759
+ get: function() {
1760
+ return SheetTrigger;
1761
+ }
1762
+ });
1414
1763
  Object.defineProperty(exports, "Tooltip", {
1415
1764
  enumerable: true,
1416
1765
  get: function() {
@@ -1507,16 +1856,16 @@ Object.defineProperty(exports, "preloadFlowRuntime", {
1507
1856
  return preloadFlowRuntime;
1508
1857
  }
1509
1858
  });
1510
- Object.defineProperty(exports, "registerIcons", {
1859
+ Object.defineProperty(exports, "reasonText", {
1511
1860
  enumerable: true,
1512
1861
  get: function() {
1513
- return registerIcons;
1862
+ return reasonText;
1514
1863
  }
1515
1864
  });
1516
- Object.defineProperty(exports, "text", {
1865
+ Object.defineProperty(exports, "registerIcons", {
1517
1866
  enumerable: true,
1518
1867
  get: function() {
1519
- return text;
1868
+ return registerIcons;
1520
1869
  }
1521
1870
  });
1522
1871
  Object.defineProperty(exports, "useFlowChrome", {
@@ -1525,6 +1874,18 @@ Object.defineProperty(exports, "useFlowChrome", {
1525
1874
  return useFlowChrome;
1526
1875
  }
1527
1876
  });
1877
+ Object.defineProperty(exports, "useFlowDialogTexts", {
1878
+ enumerable: true,
1879
+ get: function() {
1880
+ return useFlowDialogTexts;
1881
+ }
1882
+ });
1883
+ Object.defineProperty(exports, "useFocusOnMount", {
1884
+ enumerable: true,
1885
+ get: function() {
1886
+ return useFocusOnMount;
1887
+ }
1888
+ });
1528
1889
  Object.defineProperty(exports, "useListSlot", {
1529
1890
  enumerable: true,
1530
1891
  get: function() {
@@ -1544,4 +1905,4 @@ Object.defineProperty(exports, "useToBrowserHref", {
1544
1905
  }
1545
1906
  });
1546
1907
 
1547
- //# sourceMappingURL=check-confirm-dialog--gPFnEeg.cjs.map
1908
+ //# sourceMappingURL=check-confirm-dialog-C-NHgMST.cjs.map