themelia-react-ui 2.0.0 → 2.0.2

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 (707) hide show
  1. package/CHANGELOG.md +527 -0
  2. package/README.md +47 -14
  3. package/THIRD_PARTY_NOTICES.md +13 -0
  4. package/dist/accordion-Cjb6sx0G.js +208 -0
  5. package/dist/accordion-Cjb6sx0G.js.map +1 -0
  6. package/dist/action-menu-CllU52Mm.js +280 -0
  7. package/dist/action-menu-CllU52Mm.js.map +1 -0
  8. package/dist/affordance-geometry.generated-tF36bREk.js +140 -0
  9. package/dist/affordance-geometry.generated-tF36bREk.js.map +1 -0
  10. package/dist/ai-artifact-DvTwDVyL.js +1148 -0
  11. package/dist/ai-artifact-DvTwDVyL.js.map +1 -0
  12. package/dist/{app-shell-BE_j8-AT.js → app-shell-C4FhvCqF.js} +5 -5
  13. package/dist/{app-shell-BE_j8-AT.js.map → app-shell-C4FhvCqF.js.map} +1 -1
  14. package/dist/attachment-BxDfL2mw.js +246 -0
  15. package/dist/attachment-BxDfL2mw.js.map +1 -0
  16. package/dist/{auth-M3vGMgDR.js → auth-ax2BqjrI.js} +241 -235
  17. package/dist/auth-ax2BqjrI.js.map +1 -0
  18. package/dist/{avatar-djdaaQ_s.js → avatar-DAPlDvhJ.js} +67 -66
  19. package/dist/avatar-DAPlDvhJ.js.map +1 -0
  20. package/dist/badge-HpFqoqSY.js +93 -0
  21. package/dist/badge-HpFqoqSY.js.map +1 -0
  22. package/dist/base/accordion.js +1 -1
  23. package/dist/base/action-menu.js +1 -1
  24. package/dist/base/attachment.js +1 -1
  25. package/dist/base/avatar.js +1 -1
  26. package/dist/base/badge.js +1 -1
  27. package/dist/base/batch-action-bar.js +3 -0
  28. package/dist/base/buttons.js +2 -3
  29. package/dist/base/cards.js +2 -2
  30. package/dist/base/carousel.js +50 -46
  31. package/dist/base/carousel.js.map +1 -1
  32. package/dist/base/cascader.js +69 -81
  33. package/dist/base/cascader.js.map +1 -1
  34. package/dist/base/chart.js +1 -1
  35. package/dist/base/choice-inputs.js +3 -3
  36. package/dist/base/code-block.js +1 -1
  37. package/dist/base/combobox.js +2 -2
  38. package/dist/base/command.js +1 -1
  39. package/dist/base/copyable.js +1 -1
  40. package/dist/base/date-pickers.js +2 -2
  41. package/dist/base/display.js +7 -7
  42. package/dist/base/feedback.js +3 -3
  43. package/dist/base/forms-numeric.js +1 -1
  44. package/dist/base/forms.js +2 -2
  45. package/dist/base/inline-edit.js +20 -20
  46. package/dist/base/inline-edit.js.map +1 -1
  47. package/dist/base/item.js +1 -1
  48. package/dist/base/media-gallery.js +1 -1
  49. package/dist/base/metadata-list.js +3 -0
  50. package/dist/base/navigation.js +7 -7
  51. package/dist/base/popover-menu.js +1 -1
  52. package/dist/base/popover.js +1 -1
  53. package/dist/base/qr-code.js +1 -1
  54. package/dist/base/repeaters.js +216 -220
  55. package/dist/base/repeaters.js.map +1 -1
  56. package/dist/base/sheet.js +1 -1
  57. package/dist/base/sidebar.js +1 -1
  58. package/dist/base/signature-pad.js +147 -137
  59. package/dist/base/signature-pad.js.map +1 -1
  60. package/dist/base/skeleton.js +1 -1
  61. package/dist/base/spinner.js +79 -2
  62. package/dist/base/spinner.js.map +1 -0
  63. package/dist/base/structure.js +1 -1
  64. package/dist/base/table.js +1 -1
  65. package/dist/base/text-inputs.js +2 -2
  66. package/dist/base/toaster.js +46 -45
  67. package/dist/base/toaster.js.map +1 -1
  68. package/dist/base/tree.js +1 -1
  69. package/dist/base/upload-queue.js +1 -1
  70. package/dist/base/upload.js +3 -3
  71. package/dist/base/value-inputs.js +2 -2
  72. package/dist/batch-action-bar-DnUJ21NQ.js +105 -0
  73. package/dist/batch-action-bar-DnUJ21NQ.js.map +1 -0
  74. package/dist/blocks/admin.js +171 -169
  75. package/dist/blocks/admin.js.map +1 -1
  76. package/dist/blocks/ai.js +308 -285
  77. package/dist/blocks/ai.js.map +1 -1
  78. package/dist/blocks/analytics/usage-card.js +1 -1
  79. package/dist/blocks/analytics.js +626 -589
  80. package/dist/blocks/analytics.js.map +1 -1
  81. package/dist/blocks/collaboration.js +1 -1
  82. package/dist/blocks/commerce/receipt.js +1 -1
  83. package/dist/blocks/commerce.js +2051 -1329
  84. package/dist/blocks/commerce.js.map +1 -1
  85. package/dist/blocks/data-display.js +3 -2
  86. package/dist/blocks/onboarding.js +68 -58
  87. package/dist/blocks/onboarding.js.map +1 -1
  88. package/dist/blocks/planning.js +27 -26
  89. package/dist/blocks/planning.js.map +1 -1
  90. package/dist/blocks/timelines.js +1 -1
  91. package/dist/breadcrumbs-C-oqs1sQ.js +129 -0
  92. package/dist/breadcrumbs-C-oqs1sQ.js.map +1 -0
  93. package/dist/{button-R9CCoH7A.js → button-DVzspB_G.js} +15 -14
  94. package/dist/button-DVzspB_G.js.map +1 -0
  95. package/dist/{button-BS3KDg00.js → buttons-DPZekJFu.js} +208 -216
  96. package/dist/buttons-DPZekJFu.js.map +1 -0
  97. package/dist/cards-BaBZR-AU.js +68 -0
  98. package/dist/cards-BaBZR-AU.js.map +1 -0
  99. package/dist/{chart-DwYRKKc-.js → chart-ZOYyK2xG.js} +58 -55
  100. package/dist/chart-ZOYyK2xG.js.map +1 -0
  101. package/dist/checkbox-AWIhNhmo.js +36 -0
  102. package/dist/checkbox-AWIhNhmo.js.map +1 -0
  103. package/dist/choice-inputs-CNHvARCJ.js +770 -0
  104. package/dist/choice-inputs-CNHvARCJ.js.map +1 -0
  105. package/dist/code-block-DeneBJR_.js +185 -0
  106. package/dist/code-block-DeneBJR_.js.map +1 -0
  107. package/dist/{collapsible-oMUGM4tr.js → collapsible-C-_l4hpy.js} +4 -4
  108. package/dist/{collapsible-oMUGM4tr.js.map → collapsible-C-_l4hpy.js.map} +1 -1
  109. package/dist/{collection-content-Ys-OZOkY.js → collection-content-By56pLog.js} +3 -3
  110. package/dist/{collection-content-Ys-OZOkY.js.map → collection-content-By56pLog.js.map} +1 -1
  111. package/dist/combobox-C0EQW6dr.js +875 -0
  112. package/dist/combobox-C0EQW6dr.js.map +1 -0
  113. package/dist/combobox-xCQ2RMNE.js +309 -0
  114. package/dist/combobox-xCQ2RMNE.js.map +1 -0
  115. package/dist/{command-kPMPjIxJ.js → command-C25VMRII.js} +7 -7
  116. package/dist/{command-kPMPjIxJ.js.map → command-C25VMRII.js.map} +1 -1
  117. package/dist/{comments-You0Bzbr.js → comments-BYYlTA8E.js} +390 -379
  118. package/dist/comments-BYYlTA8E.js.map +1 -0
  119. package/dist/components/base/action-menu/action-menu.d.ts +21 -4
  120. package/dist/components/base/action-menu/action-menu.recipes.d.ts +21 -0
  121. package/dist/components/base/action-menu/index.d.ts +1 -0
  122. package/dist/components/base/badge/badge.recipes.d.ts +5 -5
  123. package/dist/components/base/batch-action-bar/batch-action-bar.d.ts +50 -0
  124. package/dist/components/base/batch-action-bar/batch-action-bar.strings.d.ts +20 -0
  125. package/dist/components/base/batch-action-bar/index.d.ts +8 -0
  126. package/dist/components/base/buttons/button-group.recipes.d.ts +1 -1
  127. package/dist/components/base/buttons/button.recipes.d.ts +2 -2
  128. package/dist/components/base/buttons/loader-button.d.ts +2 -1
  129. package/dist/components/base/cards/card.recipes.d.ts +2 -3
  130. package/dist/components/base/cards/partials/smart-card-skeleton.d.ts +3 -13
  131. package/dist/components/base/cards/smart-card.types.d.ts +11 -4
  132. package/dist/components/base/chart/chart.d.ts +2 -5
  133. package/dist/components/base/choice-inputs/checkbox.d.ts +2 -2
  134. package/dist/components/base/choice-inputs/choice-types.d.ts +18 -6
  135. package/dist/components/base/combobox/combobox.strings.d.ts +7 -0
  136. package/dist/components/base/combobox/index.d.ts +30 -4
  137. package/dist/components/base/display/alert-dialog.d.ts +6 -5
  138. package/dist/components/base/display/dialog.d.ts +4 -8
  139. package/dist/components/base/display/icon-badge/icon-badge.d.ts +1 -1
  140. package/dist/components/base/forms/form-sizing.d.ts +26 -15
  141. package/dist/components/base/metadata-list/index.d.ts +12 -0
  142. package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.d.ts +28 -25
  143. package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-value.d.ts +2 -2
  144. package/dist/components/base/navigation/index.d.ts +1 -1
  145. package/dist/components/base/navigation/page-header/index.d.ts +1 -0
  146. package/dist/components/base/navigation/page-header/page-header-commands.d.ts +73 -0
  147. package/dist/components/base/navigation/page-header/page-header.d.ts +26 -3
  148. package/dist/components/base/navigation/pagination.d.ts +5 -2
  149. package/dist/components/base/popover/popover.recipes.d.ts +15 -1
  150. package/dist/components/base/sheet/sheet.d.ts +4 -8
  151. package/dist/components/base/signature-pad/signature-pad.types.d.ts +5 -1
  152. package/dist/components/base/signature-pad/signature-pad.utils.d.ts +11 -3
  153. package/dist/components/base/table/index.d.ts +9 -2
  154. package/dist/components/base/text-inputs/field-clear-button.d.ts +6 -0
  155. package/dist/components/base/text-inputs/input-group.d.ts +2 -2
  156. package/dist/components/base/upload/upload.recipes.d.ts +25 -3
  157. package/dist/components/base/value-inputs/index.d.ts +5 -5
  158. package/dist/components/base/value-inputs/tags-input.d.ts +36 -12
  159. package/dist/components/blocks/ai/ai-shimmer/ai-shimmer.d.ts +1 -1
  160. package/dist/components/blocks/ai/ai-shimmer/types.d.ts +3 -0
  161. package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
  162. package/dist/components/blocks/commerce/address-card/types.d.ts +2 -1
  163. package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +3 -1
  164. package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -2
  165. package/dist/components/blocks/commerce/cart-summary/types.d.ts +6 -1
  166. package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +3 -1
  167. package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -2
  168. package/dist/components/blocks/commerce/discount-stack/types.d.ts +16 -4
  169. package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +5 -0
  170. package/dist/components/blocks/commerce/fulfillment-group/index.d.ts +2 -0
  171. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +45 -0
  172. package/dist/components/blocks/commerce/index.d.ts +13 -5
  173. package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +1 -1
  174. package/dist/components/blocks/commerce/invoice-header/types.d.ts +4 -2
  175. package/dist/components/blocks/commerce/invoice-mini/invoice-mini.d.ts +1 -1
  176. package/dist/components/blocks/commerce/invoice-mini/types.d.ts +2 -1
  177. package/dist/components/blocks/commerce/order-customer/index.d.ts +2 -0
  178. package/dist/components/blocks/commerce/order-customer/order-customer.d.ts +5 -0
  179. package/dist/components/blocks/commerce/order-customer/types.d.ts +48 -0
  180. package/dist/components/blocks/commerce/order-header/index.d.ts +2 -0
  181. package/dist/components/blocks/commerce/order-header/order-header.d.ts +5 -0
  182. package/dist/components/blocks/commerce/order-header/types.d.ts +37 -0
  183. package/dist/components/blocks/commerce/order-line-item/index.d.ts +2 -0
  184. package/dist/components/blocks/commerce/order-line-item/order-line-item.d.ts +5 -0
  185. package/dist/components/blocks/commerce/order-line-item/types.d.ts +46 -0
  186. package/dist/components/blocks/commerce/order-summary/index.d.ts +2 -0
  187. package/dist/components/blocks/commerce/order-summary/order-summary.d.ts +5 -0
  188. package/dist/components/blocks/commerce/order-summary/types.d.ts +42 -0
  189. package/dist/components/blocks/commerce/order-transactions/index.d.ts +2 -0
  190. package/dist/components/blocks/commerce/order-transactions/order-transactions.d.ts +5 -0
  191. package/dist/components/blocks/commerce/order-transactions/types.d.ts +46 -0
  192. package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -2
  193. package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +9 -1
  194. package/dist/components/blocks/commerce/payment-method/types.d.ts +12 -1
  195. package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -2
  196. package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +3 -1
  197. package/dist/components/blocks/commerce/refund-status/types.d.ts +6 -3
  198. package/dist/components/blocks/commerce/shared/address-lines.d.ts +21 -0
  199. package/dist/components/blocks/commerce/shared/line-thumbnail.d.ts +9 -0
  200. package/dist/components/blocks/commerce/shared/order-status.d.ts +51 -0
  201. package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
  202. package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +27 -6
  203. package/dist/components/blocks/commerce/summary-panel/amount-row.d.ts +2 -0
  204. package/dist/components/blocks/commerce/summary-panel/index.d.ts +3 -0
  205. package/dist/components/blocks/commerce/summary-panel/summary-panel.d.ts +2 -0
  206. package/dist/components/blocks/commerce/summary-panel/types.d.ts +26 -0
  207. package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
  208. package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +2 -1
  209. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +16 -8
  210. package/dist/components/blocks/data-display/metadata/index.d.ts +30 -4
  211. package/dist/components/features/activities/partials/activity-marker.d.ts +6 -3
  212. package/dist/components/features/activities/partials/activity-row.d.ts +6 -2
  213. package/dist/components/features/activities/partials/tone-tokens.d.ts +0 -6
  214. package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +5 -0
  215. package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +220 -0
  216. package/dist/components/features/appointment-calendar/appointment-calendar.utils.d.ts +41 -0
  217. package/dist/components/features/appointment-calendar/index.d.ts +3 -0
  218. package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +32 -0
  219. package/dist/components/features/appointment-calendar/partials/appointment-month.d.ts +13 -0
  220. package/dist/components/features/combobox/combobox.strings.d.ts +15 -1
  221. package/dist/components/features/combobox/types.d.ts +4 -0
  222. package/dist/components/features/global-search/partials/global-search-group-heading.d.ts +15 -0
  223. package/dist/components/features/global-search/partials/tone-palettes.d.ts +0 -5
  224. package/dist/components/features/kanban/kanban.d.ts +1 -1
  225. package/dist/components/features/kanban/kanban.strings.d.ts +1 -1
  226. package/dist/components/features/kanban/kanban.types.d.ts +2 -2
  227. package/dist/components/features/media-library/hooks/use-media-library.d.ts +1 -1
  228. package/dist/components/features/media-library/index.d.ts +1 -1
  229. package/dist/components/features/media-library/media-library.d.ts +1 -1
  230. package/dist/components/features/media-library/media-library.strings.d.ts +6 -0
  231. package/dist/components/features/media-library/media-library.types.d.ts +74 -1
  232. package/dist/components/features/media-library/partials/media-library-partials.d.ts +3 -3
  233. package/dist/components/features/mentions/partials/mention-kind-toggles.d.ts +16 -0
  234. package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
  235. package/dist/components/features/overlays/dialog.d.ts +1 -1
  236. package/dist/components/features/overlays/index.d.ts +1 -1
  237. package/dist/components/features/overlays/overlay-tone-icon.d.ts +3 -3
  238. package/dist/components/features/overlays/overlays.types.d.ts +20 -0
  239. package/dist/components/features/products/components/product-contract-overview.d.ts +5 -0
  240. package/dist/components/features/products/components/product-details-card.d.ts +5 -0
  241. package/dist/components/features/products/components/product-operations-card.d.ts +5 -0
  242. package/dist/components/features/products/components/product-option-action-menu.d.ts +5 -0
  243. package/dist/components/features/products/components/product-options-summary.d.ts +5 -0
  244. package/dist/components/features/products/components/product-policies-card.d.ts +5 -0
  245. package/dist/components/features/products/components/product-quote-preview-card.d.ts +5 -0
  246. package/dist/components/features/products/components/product-readiness-card.d.ts +5 -0
  247. package/dist/components/features/products/components/product-structure-card.d.ts +5 -0
  248. package/dist/components/features/products/components/product-variant-action-menu.d.ts +23 -1
  249. package/dist/components/features/products/products.types.d.ts +9 -2
  250. package/dist/components/features/resource/index.d.ts +1 -1
  251. package/dist/components/features/resource/resource.d.ts +1 -1
  252. package/dist/components/features/resource/resource.types.d.ts +34 -6
  253. package/dist/components/features/rich-text-editor/index.d.ts +2 -1
  254. package/dist/components/features/rich-text-editor/partials/image-nodes.d.ts +13 -0
  255. package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +66 -0
  256. package/dist/components/features/rich-text-editor/partials/inline-reference-node.d.ts +19 -0
  257. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +7 -1
  258. package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts +14 -0
  259. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +54 -1
  260. package/dist/components/features/rich-text-editor/use-rich-text-images.d.ts +18 -0
  261. package/dist/components/features/sync/index.d.ts +26 -3
  262. package/dist/components/features/table/data-table.d.ts +1 -1
  263. package/dist/components/features/table/table-header.d.ts +1 -1
  264. package/dist/components/features/table/table.strings.d.ts +55 -1
  265. package/dist/components/features/table/table.types.d.ts +49 -11
  266. package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +5 -0
  267. package/dist/components/layout/page/index.d.ts +1 -1
  268. package/dist/components/layout/page/page.types.d.ts +33 -36
  269. package/dist/components/layout/page/partials/page-actions.d.ts +1 -0
  270. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  271. package/dist/components/layout/settings/settings.d.ts +16 -2
  272. package/dist/components/layout/workspace/workspace.types.d.ts +21 -4
  273. package/dist/components/primitives/number.d.ts +4 -2
  274. package/dist/components/primitives/value.d.ts +3 -1
  275. package/dist/components/typography/rich-text/index.d.ts +1 -1
  276. package/dist/components/typography/rich-text/rich-text-tree.d.ts +19 -0
  277. package/dist/components/typography/rich-text/rich-text.d.ts +16 -0
  278. package/dist/components/typography/text-link.d.ts +8 -3
  279. package/dist/components/ui/checkbox.d.ts +4 -3
  280. package/dist/components/ui/combobox.d.ts +6 -2
  281. package/dist/components/ui/item.d.ts +8 -8
  282. package/dist/components/ui/overlay.recipes.d.ts +0 -9
  283. package/dist/components/ui/switch.d.ts +2 -2
  284. package/dist/components/ui/tabs.d.ts +1 -1
  285. package/dist/{containers-D_L4mTVb.js → containers-Mu1LMGV1.js} +36 -35
  286. package/dist/containers-Mu1LMGV1.js.map +1 -0
  287. package/dist/{copyable-DDjTeW_j.js → copyable-ClBuk_UK.js} +6 -6
  288. package/dist/{copyable-DDjTeW_j.js.map → copyable-ClBuk_UK.js.map} +1 -1
  289. package/dist/data-display-DT_khPl_.js +971 -0
  290. package/dist/data-display-DT_khPl_.js.map +1 -0
  291. package/dist/{date-uf3z37Nm.js → date-DCrsDTZc.js} +5 -5
  292. package/dist/{date-uf3z37Nm.js.map → date-DCrsDTZc.js.map} +1 -1
  293. package/dist/date-picker-ay0Pha_a.js +1530 -0
  294. package/dist/date-picker-ay0Pha_a.js.map +1 -0
  295. package/dist/date-pickers-Ccw8DL2b.js +175 -0
  296. package/dist/date-pickers-Ccw8DL2b.js.map +1 -0
  297. package/dist/display-hAc1HjpI.js +344 -0
  298. package/dist/display-hAc1HjpI.js.map +1 -0
  299. package/dist/dropdown-menu-Cl4X7L5S.js +193 -0
  300. package/dist/dropdown-menu-Cl4X7L5S.js.map +1 -0
  301. package/dist/editable-text-recipe-Cn61kEcv.js +10 -0
  302. package/dist/editable-text-recipe-Cn61kEcv.js.map +1 -0
  303. package/dist/features/activities.js +478 -542
  304. package/dist/features/activities.js.map +1 -1
  305. package/dist/features/ai-chat.js +209 -199
  306. package/dist/features/ai-chat.js.map +1 -1
  307. package/dist/features/appointment-calendar.js +683 -0
  308. package/dist/features/appointment-calendar.js.map +1 -0
  309. package/dist/features/async-preview.js +109 -107
  310. package/dist/features/async-preview.js.map +1 -1
  311. package/dist/features/combobox.js +1 -1
  312. package/dist/features/comments.js +1 -1
  313. package/dist/features/data-view.js +30 -29
  314. package/dist/features/data-view.js.map +1 -1
  315. package/dist/features/email-composer/engine.js +1 -1
  316. package/dist/features/email-composer.js +285 -283
  317. package/dist/features/email-composer.js.map +1 -1
  318. package/dist/features/event-calendar.js +282 -273
  319. package/dist/features/event-calendar.js.map +1 -1
  320. package/dist/features/filters.js +1 -1
  321. package/dist/features/global-search.js +318 -318
  322. package/dist/features/global-search.js.map +1 -1
  323. package/dist/features/kanban.js +146 -147
  324. package/dist/features/kanban.js.map +1 -1
  325. package/dist/features/map.js +269 -268
  326. package/dist/features/map.js.map +1 -1
  327. package/dist/features/media-library.js +970 -863
  328. package/dist/features/media-library.js.map +1 -1
  329. package/dist/features/mentions.js +1 -1
  330. package/dist/features/overlays.js +1 -1
  331. package/dist/features/products.js +1137 -1124
  332. package/dist/features/products.js.map +1 -1
  333. package/dist/features/questionnaire.js +206 -194
  334. package/dist/features/questionnaire.js.map +1 -1
  335. package/dist/features/resource-assignment.js +24 -21
  336. package/dist/features/resource-assignment.js.map +1 -1
  337. package/dist/features/resource.js +77 -69
  338. package/dist/features/resource.js.map +1 -1
  339. package/dist/features/rich-text-editor.js +30 -11
  340. package/dist/features/rich-text-editor.js.map +1 -1
  341. package/dist/features/schema-form.js +35 -33
  342. package/dist/features/schema-form.js.map +1 -1
  343. package/dist/features/suggestions.js +3 -3
  344. package/dist/features/sync.js +11 -5
  345. package/dist/features/sync.js.map +1 -1
  346. package/dist/features/table.js +1 -1
  347. package/dist/features/theme-tweaker.js +501 -496
  348. package/dist/features/theme-tweaker.js.map +1 -1
  349. package/dist/feedback-BYIhtitP.js +239 -0
  350. package/dist/feedback-BYIhtitP.js.map +1 -0
  351. package/dist/field-affordance-recipes-DZhnIL_Y.js +41 -0
  352. package/dist/field-affordance-recipes-DZhnIL_Y.js.map +1 -0
  353. package/dist/field-state-recipes-BVA2CWHo.js +12 -0
  354. package/dist/field-state-recipes-BVA2CWHo.js.map +1 -0
  355. package/dist/{filters-Da-gNPsE.js → filters-BGfvjP4d.js} +483 -472
  356. package/dist/filters-BGfvjP4d.js.map +1 -0
  357. package/dist/focus-recipes-B653VaLq.js +12 -0
  358. package/dist/focus-recipes-B653VaLq.js.map +1 -0
  359. package/dist/{form-field-VZRULhUK.js → form-field-CwH9y77i.js} +6 -5
  360. package/dist/form-field-CwH9y77i.js.map +1 -0
  361. package/dist/{form-sizing-uWP4lzVh.js → form-sizing-BdP_Mf5p.js} +45 -46
  362. package/dist/form-sizing-BdP_Mf5p.js.map +1 -0
  363. package/dist/{forms-DDeEnXSY.js → forms-B9G_xwzi.js} +22 -22
  364. package/dist/{forms-DDeEnXSY.js.map → forms-B9G_xwzi.js.map} +1 -1
  365. package/dist/forms-numeric-B_jraJaQ.js +906 -0
  366. package/dist/forms-numeric-B_jraJaQ.js.map +1 -0
  367. package/dist/{header-2ycNqGOR.js → header-CGXuhcRm.js} +164 -161
  368. package/dist/header-CGXuhcRm.js.map +1 -0
  369. package/dist/{hooks-DQ5SPwZw.js → hooks-Dkz0K2WT.js} +2 -2
  370. package/dist/{hooks-DQ5SPwZw.js.map → hooks-Dkz0K2WT.js.map} +1 -1
  371. package/dist/{http-CdEIHyQf.js → http-D_6rOnzU.js} +2 -2
  372. package/dist/{http-CdEIHyQf.js.map → http-D_6rOnzU.js.map} +1 -1
  373. package/dist/icon-badge-DYKIwvOV.js +55 -0
  374. package/dist/icon-badge-DYKIwvOV.js.map +1 -0
  375. package/dist/index.js +7 -7
  376. package/dist/input-CZw8iU99.js +21 -0
  377. package/dist/input-CZw8iU99.js.map +1 -0
  378. package/dist/input-DQdEd0YD.js +263 -0
  379. package/dist/input-DQdEd0YD.js.map +1 -0
  380. package/dist/interaction-recipes-XR9ZpVYL.js +25 -0
  381. package/dist/interaction-recipes-XR9ZpVYL.js.map +1 -0
  382. package/dist/item-K5_ghvze.js +275 -0
  383. package/dist/item-K5_ghvze.js.map +1 -0
  384. package/dist/layer-recipes-CCpklYME.js +13 -0
  385. package/dist/layer-recipes-CCpklYME.js.map +1 -0
  386. package/dist/layout/app-shell.js +1 -1
  387. package/dist/layout/auth.js +1 -1
  388. package/dist/layout/containers.js +1 -1
  389. package/dist/layout/header.js +1 -1
  390. package/dist/layout/hooks.js +1 -1
  391. package/dist/layout/navigation.js +1 -1
  392. package/dist/layout/page.js +1 -1
  393. package/dist/layout/settings.js +1 -1
  394. package/dist/layout/sidebar.js +2 -2
  395. package/dist/layout/workspace.js +1 -1
  396. package/dist/layout.js +10 -10
  397. package/dist/lib/affordance-geometry.generated.d.ts +72 -0
  398. package/dist/lib/editable-text-recipe.d.ts +4 -4
  399. package/dist/lib/field-affordance-recipes.d.ts +8 -3
  400. package/dist/lib/field-state-recipes.d.ts +9 -8
  401. package/dist/lib/focus-recipes.d.ts +24 -0
  402. package/dist/lib/interaction-recipes.d.ts +40 -0
  403. package/dist/lib/layer-recipes.d.ts +19 -0
  404. package/dist/lib/motion-recipes.d.ts +1 -0
  405. package/dist/lib/overlay-anatomy-recipes.d.ts +1 -0
  406. package/dist/lib/safe-image-src.d.ts +10 -0
  407. package/dist/lib/sanitize-html.d.ts +15 -3
  408. package/dist/lib/surface-recipes.d.ts +47 -7
  409. package/dist/lib/theme-mode-css.d.ts +7 -0
  410. package/dist/lib/token-merge.generated.d.ts +9 -6
  411. package/dist/lib/tone-recipes.d.ts +87 -0
  412. package/dist/lib/ui-provider/hooks.d.ts +2 -1
  413. package/dist/lib/ui-provider/index.d.ts +2 -2
  414. package/dist/lib/ui-provider/types.d.ts +11 -2
  415. package/dist/lib/utils.js +1 -1
  416. package/dist/media-gallery-3zIVLMWH.js +203 -0
  417. package/dist/media-gallery-3zIVLMWH.js.map +1 -0
  418. package/dist/mentions-utuUvH1K.js +570 -0
  419. package/dist/mentions-utuUvH1K.js.map +1 -0
  420. package/dist/{message-YfFmbXNP.js → message-DZ_ruyUV.js} +7 -6
  421. package/dist/message-DZ_ruyUV.js.map +1 -0
  422. package/dist/metadata-list-8N16ZMW_.js +405 -0
  423. package/dist/metadata-list-8N16ZMW_.js.map +1 -0
  424. package/dist/{motion-recipes-B6jKXEcN.js → motion-recipes-ChBg4HBq.js} +3 -2
  425. package/dist/{motion-recipes-B6jKXEcN.js.map → motion-recipes-ChBg4HBq.js.map} +1 -1
  426. package/dist/navigation-Bnotn4AQ.js +145 -0
  427. package/dist/navigation-Bnotn4AQ.js.map +1 -0
  428. package/dist/navigation-BzhHI3lo.js +269 -0
  429. package/dist/navigation-BzhHI3lo.js.map +1 -0
  430. package/dist/{navigation-row-recipes-DlU-4QYO.js → navigation-row-recipes-BFLCk_Aq.js} +2 -2
  431. package/dist/{navigation-row-recipes-DlU-4QYO.js.map → navigation-row-recipes-BFLCk_Aq.js.map} +1 -1
  432. package/dist/{number-CKRBYmZK.js → number-DbV1Dija.js} +36 -34
  433. package/dist/{number-CKRBYmZK.js.map → number-DbV1Dija.js.map} +1 -1
  434. package/dist/overflow-tab-bar-CWY7Nogn.js +282 -0
  435. package/dist/overflow-tab-bar-CWY7Nogn.js.map +1 -0
  436. package/dist/overlay.recipes-8GHqmlb4.js +6 -0
  437. package/dist/overlay.recipes-8GHqmlb4.js.map +1 -0
  438. package/dist/overlays-DNWmZrJ4.js +1001 -0
  439. package/dist/overlays-DNWmZrJ4.js.map +1 -0
  440. package/dist/page-Bgl1F560.js +224 -0
  441. package/dist/page-Bgl1F560.js.map +1 -0
  442. package/dist/page-header-commands-DOb6WsfD.js +126 -0
  443. package/dist/page-header-commands-DOb6WsfD.js.map +1 -0
  444. package/dist/pagination-BL25hu2s.js +158 -0
  445. package/dist/pagination-BL25hu2s.js.map +1 -0
  446. package/dist/{popover-Dcv_9jxr.js → popover-7_m66eYW.js} +11 -10
  447. package/dist/popover-7_m66eYW.js.map +1 -0
  448. package/dist/popover-menu-B9WWygpa.js +100 -0
  449. package/dist/popover-menu-B9WWygpa.js.map +1 -0
  450. package/dist/{popover.recipes-wmbvL8Ah.js → popover.recipes-D3j8R8Yp.js} +18 -11
  451. package/dist/popover.recipes-D3j8R8Yp.js.map +1 -0
  452. package/dist/{primitives-BHrwQXFC.js → primitives-BFK08r9M.js} +45 -44
  453. package/dist/primitives-BFK08r9M.js.map +1 -0
  454. package/dist/primitives.js +4 -4
  455. package/dist/{progress-Br9WTFya.js → progress-B1VnCT0K.js} +9 -9
  456. package/dist/{progress-Br9WTFya.js.map → progress-B1VnCT0K.js.map} +1 -1
  457. package/dist/{receipt-CV89q1fs.js → receipt-BVSOH3Xo.js} +9 -6
  458. package/dist/{receipt-CV89q1fs.js.map → receipt-BVSOH3Xo.js.map} +1 -1
  459. package/dist/rich-text-GOUyKQ-s.js +78 -0
  460. package/dist/rich-text-GOUyKQ-s.js.map +1 -0
  461. package/dist/rich-text-editor-cRLC-eBK.js +1196 -0
  462. package/dist/rich-text-editor-cRLC-eBK.js.map +1 -0
  463. package/dist/rich-text-editor-toolbar-DfXg0-VC.js +94 -0
  464. package/dist/rich-text-editor-toolbar-DfXg0-VC.js.map +1 -0
  465. package/dist/rich-text-editor.strings-CB59ekH2.js +38 -0
  466. package/dist/rich-text-editor.strings-CB59ekH2.js.map +1 -0
  467. package/dist/safe-image-src-C6kQSMBZ.js +17 -0
  468. package/dist/safe-image-src-C6kQSMBZ.js.map +1 -0
  469. package/dist/sanitize-html-DsQmI48u.js +92 -0
  470. package/dist/sanitize-html-DsQmI48u.js.map +1 -0
  471. package/dist/scroll-area-DcI-M1UT.js +48 -0
  472. package/dist/scroll-area-DcI-M1UT.js.map +1 -0
  473. package/dist/{separator-Do5GWDYi.js → separator-BDV-Y648.js} +3 -3
  474. package/dist/{separator-Do5GWDYi.js.map → separator-BDV-Y648.js.map} +1 -1
  475. package/dist/{separator-BMEvwnSX.js → separator-Bom7NsGO.js} +2 -2
  476. package/dist/{separator-BMEvwnSX.js.map → separator-Bom7NsGO.js.map} +1 -1
  477. package/dist/services/actions/action-adapters.d.ts +18 -0
  478. package/dist/services/actions/index.d.ts +1 -1
  479. package/dist/services/actions.js +16 -4
  480. package/dist/services/actions.js.map +1 -1
  481. package/dist/settings-ybnjVwbd.js +171 -0
  482. package/dist/settings-ybnjVwbd.js.map +1 -0
  483. package/dist/sheet-CGpB3omz.js +211 -0
  484. package/dist/sheet-CGpB3omz.js.map +1 -0
  485. package/dist/{sidebar-Cb8WzOvE.js → sidebar-A0ElHINE.js} +17 -16
  486. package/dist/sidebar-A0ElHINE.js.map +1 -0
  487. package/dist/{sidebar-Crc9M9JV.js → sidebar-CPx_7YBa.js} +205 -203
  488. package/dist/sidebar-CPx_7YBa.js.map +1 -0
  489. package/dist/{skeleton-DVMXr15h.js → skeleton-Byjnt7qr.js} +9 -9
  490. package/dist/{skeleton-DVMXr15h.js.map → skeleton-Byjnt7qr.js.map} +1 -1
  491. package/dist/smart-card-DiC5aac3.js +604 -0
  492. package/dist/smart-card-DiC5aac3.js.map +1 -0
  493. package/dist/{structure-hzCW-XsV.js → structure-BmisBK-3.js} +2 -2
  494. package/dist/{structure-hzCW-XsV.js.map → structure-BmisBK-3.js.map} +1 -1
  495. package/dist/style.css +1 -1
  496. package/dist/surface-recipes-BKRVW8Os.js +43 -0
  497. package/dist/surface-recipes-BKRVW8Os.js.map +1 -0
  498. package/dist/table-BweFy_P9.js +1530 -0
  499. package/dist/table-BweFy_P9.js.map +1 -0
  500. package/dist/table-DsfzoUia.js +175 -0
  501. package/dist/table-DsfzoUia.js.map +1 -0
  502. package/dist/tabs-CDocW5D1.js +191 -0
  503. package/dist/tabs-CDocW5D1.js.map +1 -0
  504. package/dist/text-inputs-f9Ia-aCi.js +353 -0
  505. package/dist/text-inputs-f9Ia-aCi.js.map +1 -0
  506. package/dist/theme-mode-css-BB-_RYab.js +14 -0
  507. package/dist/theme-mode-css-BB-_RYab.js.map +1 -0
  508. package/dist/theme-scope-BJ6eE2xt.js +50 -0
  509. package/dist/theme-scope-BJ6eE2xt.js.map +1 -0
  510. package/dist/theme.css +285 -228
  511. package/dist/themes/green.css +16 -12
  512. package/dist/timelines-CwM_9IhD.js +457 -0
  513. package/dist/timelines-CwM_9IhD.js.map +1 -0
  514. package/dist/tone-recipes-BPsRAvhu.js +73 -0
  515. package/dist/tone-recipes-BPsRAvhu.js.map +1 -0
  516. package/dist/tooltip-yiRJUFjp.js +111 -0
  517. package/dist/tooltip-yiRJUFjp.js.map +1 -0
  518. package/dist/{tree-BotPlyiD.js → tree-WnKQzwbq.js} +69 -67
  519. package/dist/tree-WnKQzwbq.js.map +1 -0
  520. package/dist/typography/rich-text.js +1 -1
  521. package/dist/typography-UTnveOEy.js +117 -0
  522. package/dist/typography-UTnveOEy.js.map +1 -0
  523. package/dist/typography.js +2 -2
  524. package/dist/{ui-provider-D2_TeLqw.js → ui-provider-C_U0Xma4.js} +13 -5
  525. package/dist/ui-provider-C_U0Xma4.js.map +1 -0
  526. package/dist/ui-provider.js +3 -3
  527. package/dist/{upload-B0WHW7ak.js → upload-CXyxmQBP.js} +210 -209
  528. package/dist/upload-CXyxmQBP.js.map +1 -0
  529. package/dist/{upload-queue-BHZ_wBfd.js → upload-queue-Boscubn9.js} +111 -111
  530. package/dist/upload-queue-Boscubn9.js.map +1 -0
  531. package/dist/upload.recipes-BbxTqrCT.js +61 -0
  532. package/dist/upload.recipes-BbxTqrCT.js.map +1 -0
  533. package/dist/{usage-card-U0YBLTNT.js → usage-card-BhO5eqkX.js} +45 -29
  534. package/dist/usage-card-BhO5eqkX.js.map +1 -0
  535. package/dist/{utils-Cospvlj1.js → utils-BRhFDwuU.js} +114 -67
  536. package/dist/utils-BRhFDwuU.js.map +1 -0
  537. package/dist/value-inputs-DXPDjvBU.js +963 -0
  538. package/dist/value-inputs-DXPDjvBU.js.map +1 -0
  539. package/dist/{value-typography-Deb3yQZg.js → value-typography-BP8OG6h5.js} +2 -2
  540. package/dist/{value-typography-Deb3yQZg.js.map → value-typography-BP8OG6h5.js.map} +1 -1
  541. package/dist/workspace-Cdrg7k9f.js +408 -0
  542. package/dist/workspace-Cdrg7k9f.js.map +1 -0
  543. package/docs/consumer-skill/SKILL.md +21 -22
  544. package/docs/consumer-skill/examples/app-layout.tsx +1 -1
  545. package/docs/consumer-skill/examples/composition.tsx +3 -3
  546. package/docs/consumer-skill/examples/detail.tsx +59 -12
  547. package/docs/consumer-skill/examples/edit.tsx +1 -1
  548. package/docs/consumer-skill/examples/receipt.tsx +2 -2
  549. package/docs/consumer-skill/examples/scoped-directory.tsx +1 -1
  550. package/docs/consumer-skill/examples/website.tsx +1 -1
  551. package/docs/consumer-skill/references/agents-md.md +33 -0
  552. package/docs/consumer-skill/references/analytics.md +1 -1
  553. package/docs/consumer-skill/references/composition.md +58 -13
  554. package/docs/consumer-skill/references/design-contract.md +12 -3
  555. package/docs/consumer-skill/references/installation.md +11 -1
  556. package/docs/consumer-skill/references/integration.md +4 -3
  557. package/docs/consumer-skill/references/public-api.json +956 -453
  558. package/docs/consumer-skill/references/review.md +32 -5
  559. package/docs/consumer-skill/references/theming.md +78 -9
  560. package/docs/consumer-skill/references/tokens.json +1 -1
  561. package/docs/consumer-skill/references/workflows.md +54 -10
  562. package/docs/consumer-skill/scripts/composition-policy.mjs +42 -11
  563. package/docs/consumer-skill/scripts/surface-policy.mjs +150 -5
  564. package/package.json +17 -5
  565. package/dist/accordion-CQXVcd7Q.js +0 -205
  566. package/dist/accordion-CQXVcd7Q.js.map +0 -1
  567. package/dist/action-menu-BTpyPWJ2.js +0 -264
  568. package/dist/action-menu-BTpyPWJ2.js.map +0 -1
  569. package/dist/affordance-geometry.generated-CCIXb2A1.js +0 -68
  570. package/dist/affordance-geometry.generated-CCIXb2A1.js.map +0 -1
  571. package/dist/ai-artifact-2PQ2fItc.js +0 -1112
  572. package/dist/ai-artifact-2PQ2fItc.js.map +0 -1
  573. package/dist/attachment-q69dlt5Y.js +0 -244
  574. package/dist/attachment-q69dlt5Y.js.map +0 -1
  575. package/dist/auth-M3vGMgDR.js.map +0 -1
  576. package/dist/avatar-djdaaQ_s.js.map +0 -1
  577. package/dist/badge-0tATj-tW.js +0 -92
  578. package/dist/badge-0tATj-tW.js.map +0 -1
  579. package/dist/breadcrumbs-BG_FfMK4.js +0 -128
  580. package/dist/breadcrumbs-BG_FfMK4.js.map +0 -1
  581. package/dist/button-BS3KDg00.js.map +0 -1
  582. package/dist/button-R9CCoH7A.js.map +0 -1
  583. package/dist/buttons-DS0ZIwJ_.js +0 -99
  584. package/dist/buttons-DS0ZIwJ_.js.map +0 -1
  585. package/dist/cards-QoJ4syG9.js +0 -66
  586. package/dist/cards-QoJ4syG9.js.map +0 -1
  587. package/dist/chart-DwYRKKc-.js.map +0 -1
  588. package/dist/checkbox-B7ygNTYp.js +0 -35
  589. package/dist/checkbox-B7ygNTYp.js.map +0 -1
  590. package/dist/choice-inputs-DrJ17tpL.js +0 -752
  591. package/dist/choice-inputs-DrJ17tpL.js.map +0 -1
  592. package/dist/code-block-CD0B7M93.js +0 -183
  593. package/dist/code-block-CD0B7M93.js.map +0 -1
  594. package/dist/combobox-6dvVny2q.js +0 -272
  595. package/dist/combobox-6dvVny2q.js.map +0 -1
  596. package/dist/combobox-CB7039j7.js +0 -865
  597. package/dist/combobox-CB7039j7.js.map +0 -1
  598. package/dist/comments-You0Bzbr.js.map +0 -1
  599. package/dist/components/layout/page/partials/page-header-commands.d.ts +0 -13
  600. package/dist/containers-D_L4mTVb.js.map +0 -1
  601. package/dist/data-display-3xWQUnMA.js +0 -1335
  602. package/dist/data-display-3xWQUnMA.js.map +0 -1
  603. package/dist/date-picker-DrDFj8Lo.js +0 -1527
  604. package/dist/date-picker-DrDFj8Lo.js.map +0 -1
  605. package/dist/date-pickers-CnFCb0n2.js +0 -174
  606. package/dist/date-pickers-CnFCb0n2.js.map +0 -1
  607. package/dist/display-DrdvPwF0.js +0 -343
  608. package/dist/display-DrdvPwF0.js.map +0 -1
  609. package/dist/dropdown-menu-CURh59jb.js +0 -193
  610. package/dist/dropdown-menu-CURh59jb.js.map +0 -1
  611. package/dist/editable-text-recipe-Bkm6wKHp.js +0 -10
  612. package/dist/editable-text-recipe-Bkm6wKHp.js.map +0 -1
  613. package/dist/feedback-C7nR0UtT.js +0 -232
  614. package/dist/feedback-C7nR0UtT.js.map +0 -1
  615. package/dist/field-affordance-recipes-CkOCdE2y.js +0 -46
  616. package/dist/field-affordance-recipes-CkOCdE2y.js.map +0 -1
  617. package/dist/field-state-recipes-C-MFBX_8.js +0 -11
  618. package/dist/field-state-recipes-C-MFBX_8.js.map +0 -1
  619. package/dist/filters-Da-gNPsE.js.map +0 -1
  620. package/dist/form-field-VZRULhUK.js.map +0 -1
  621. package/dist/form-sizing-uWP4lzVh.js.map +0 -1
  622. package/dist/forms-numeric-D3CO60IF.js +0 -905
  623. package/dist/forms-numeric-D3CO60IF.js.map +0 -1
  624. package/dist/header-2ycNqGOR.js.map +0 -1
  625. package/dist/icon-badge-DKlaKXoo.js +0 -53
  626. package/dist/icon-badge-DKlaKXoo.js.map +0 -1
  627. package/dist/input-BoLm9Hks.js +0 -20
  628. package/dist/input-BoLm9Hks.js.map +0 -1
  629. package/dist/input-DhQdBnV3.js +0 -255
  630. package/dist/input-DhQdBnV3.js.map +0 -1
  631. package/dist/item-xzh8Df65.js +0 -264
  632. package/dist/item-xzh8Df65.js.map +0 -1
  633. package/dist/media-gallery-DQUQ0m3O.js +0 -201
  634. package/dist/media-gallery-DQUQ0m3O.js.map +0 -1
  635. package/dist/mentions-DwnO1hh4.js +0 -564
  636. package/dist/mentions-DwnO1hh4.js.map +0 -1
  637. package/dist/message-YfFmbXNP.js.map +0 -1
  638. package/dist/navigation-Cbp5V8gG.js +0 -264
  639. package/dist/navigation-Cbp5V8gG.js.map +0 -1
  640. package/dist/navigation-Cs1npsPm.js +0 -300
  641. package/dist/navigation-Cs1npsPm.js.map +0 -1
  642. package/dist/overlay.recipes-CNO2S9V6.js +0 -34
  643. package/dist/overlay.recipes-CNO2S9V6.js.map +0 -1
  644. package/dist/overlays-DhZO7N-I.js +0 -994
  645. package/dist/overlays-DhZO7N-I.js.map +0 -1
  646. package/dist/page-C6R_8jFt.js +0 -325
  647. package/dist/page-C6R_8jFt.js.map +0 -1
  648. package/dist/page-header-hUTzcRZX.js +0 -112
  649. package/dist/page-header-hUTzcRZX.js.map +0 -1
  650. package/dist/pagination-Cm0jqa3I.js +0 -149
  651. package/dist/pagination-Cm0jqa3I.js.map +0 -1
  652. package/dist/popover-Dcv_9jxr.js.map +0 -1
  653. package/dist/popover-menu-DnRFKnHP.js +0 -99
  654. package/dist/popover-menu-DnRFKnHP.js.map +0 -1
  655. package/dist/popover.recipes-wmbvL8Ah.js.map +0 -1
  656. package/dist/primitives-BHrwQXFC.js.map +0 -1
  657. package/dist/rich-text-editor-CF8QYt5p.js +0 -574
  658. package/dist/rich-text-editor-CF8QYt5p.js.map +0 -1
  659. package/dist/rich-text-editor.recipes-CnrbmTS1.js +0 -81
  660. package/dist/rich-text-editor.recipes-CnrbmTS1.js.map +0 -1
  661. package/dist/rich-text-editor.strings-BpnIQgMl.js +0 -25
  662. package/dist/rich-text-editor.strings-BpnIQgMl.js.map +0 -1
  663. package/dist/rich-text-j-FGAeZW.js +0 -32
  664. package/dist/rich-text-j-FGAeZW.js.map +0 -1
  665. package/dist/sanitize-html-BG9FGe-j.js +0 -64
  666. package/dist/sanitize-html-BG9FGe-j.js.map +0 -1
  667. package/dist/scroll-area-DRdr16Pt.js +0 -47
  668. package/dist/scroll-area-DRdr16Pt.js.map +0 -1
  669. package/dist/settings-DHk0L2MF.js +0 -161
  670. package/dist/settings-DHk0L2MF.js.map +0 -1
  671. package/dist/sheet-DRFNY1_D.js +0 -207
  672. package/dist/sheet-DRFNY1_D.js.map +0 -1
  673. package/dist/sidebar-Cb8WzOvE.js.map +0 -1
  674. package/dist/sidebar-Crc9M9JV.js.map +0 -1
  675. package/dist/smart-card-Bek-TwUp.js +0 -599
  676. package/dist/smart-card-Bek-TwUp.js.map +0 -1
  677. package/dist/spinner-CmTAbEp0.js +0 -80
  678. package/dist/spinner-CmTAbEp0.js.map +0 -1
  679. package/dist/surface-recipes-DOdoBXGm.js +0 -28
  680. package/dist/surface-recipes-DOdoBXGm.js.map +0 -1
  681. package/dist/table-D6zKeYQX.js +0 -162
  682. package/dist/table-D6zKeYQX.js.map +0 -1
  683. package/dist/table-Dn4XSrSB.js +0 -1444
  684. package/dist/table-Dn4XSrSB.js.map +0 -1
  685. package/dist/tabs-Dk8E_knt.js +0 -189
  686. package/dist/tabs-Dk8E_knt.js.map +0 -1
  687. package/dist/text-inputs-BFpku0Qd.js +0 -331
  688. package/dist/text-inputs-BFpku0Qd.js.map +0 -1
  689. package/dist/theme-scope-kStaAer0.js +0 -39
  690. package/dist/theme-scope-kStaAer0.js.map +0 -1
  691. package/dist/timelines-CxuAFIc2.js +0 -439
  692. package/dist/timelines-CxuAFIc2.js.map +0 -1
  693. package/dist/tree-BotPlyiD.js.map +0 -1
  694. package/dist/typography-CAr3dQhX.js +0 -116
  695. package/dist/typography-CAr3dQhX.js.map +0 -1
  696. package/dist/ui-provider-D2_TeLqw.js.map +0 -1
  697. package/dist/upload-B0WHW7ak.js.map +0 -1
  698. package/dist/upload-queue-BHZ_wBfd.js.map +0 -1
  699. package/dist/usage-card-U0YBLTNT.js.map +0 -1
  700. package/dist/use-file-drop-target-BX7GnhoQ.js +0 -39
  701. package/dist/use-file-drop-target-BX7GnhoQ.js.map +0 -1
  702. package/dist/utils-Cospvlj1.js.map +0 -1
  703. package/dist/value-inputs-CjfzGMsN.js +0 -854
  704. package/dist/value-inputs-CjfzGMsN.js.map +0 -1
  705. package/dist/workspace-YoFjXi6i.js +0 -394
  706. package/dist/workspace-YoFjXi6i.js.map +0 -1
  707. /package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.strings.d.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { t as e } from "./utils-Cospvlj1.js";
3
- import { t } from "./separator-BMEvwnSX.js";
2
+ import { t as e } from "./utils-BRhFDwuU.js";
3
+ import { t } from "./separator-Bom7NsGO.js";
4
4
  import "react";
5
5
  import { jsx as n } from "react/jsx-runtime";
6
6
  //#region src/components/base/display/separator.tsx
@@ -18,4 +18,4 @@ r.displayName = "Separator";
18
18
  //#endregion
19
19
  export { r as t };
20
20
 
21
- //# sourceMappingURL=separator-Do5GWDYi.js.map
21
+ //# sourceMappingURL=separator-BDV-Y648.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"separator-Do5GWDYi.js","names":["PrimitiveSeparator","cn","Separator","props","Separator$1","dashed","className"],"sources":["../src/components/base/display/separator.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Separator as PrimitiveSeparator } from '../../ui/separator';\nimport { cn } from '../../../lib/utils';\n\nexport interface SeparatorProps extends React.ComponentPropsWithoutRef<typeof PrimitiveSeparator> {\n\t/** Render the rule as a dashed line instead of a solid border fill. */\n\tdashed?: boolean;\n}\n\nexport function Separator({\n\tclassName,\n\tdashed = false,\n\t...props\n}: SeparatorProps) {\n\treturn (\n\t\t<PrimitiveSeparator\n\t\t\tclassName={cn(\n\t\t\t\t'separator--component',\n\t\t\t\tdashed && [\n\t\t\t\t\t// `border-0` zeroes every side first: without preflight, a dashed\n\t\t\t\t\t// style would otherwise give the unset sides a 3px medium border.\n\t\t\t\t\t'bg-transparent border-0 border-border border-dashed',\n\t\t\t\t\t'data-[orientation=horizontal]:h-0 data-[orientation=horizontal]:border-t',\n\t\t\t\t\t'data-[orientation=vertical]:w-0 data-[orientation=vertical]:border-l',\n\t\t\t\t],\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nSeparator.displayName = 'Separator';\n"],"mappings":";;;;;;AAUA,SAAgBE,EAAU,EACzB,cACA,YAAS,IACT,GAAGC,KACe;CAClB,OACC,kBAACH,GAAD;EACC,WAAWC,EACV,wBACAI,KAAU;GAGT;GACA;GACA;EACD,GACAC,CACD;EACA,GAAIH;CACJ,CAAA;AAEH;AAEA,EAAU,cAAc"}
1
+ {"version":3,"file":"separator-BDV-Y648.js","names":["PrimitiveSeparator","cn","Separator","props","Separator$1","dashed","className"],"sources":["../src/components/base/display/separator.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Separator as PrimitiveSeparator } from '../../ui/separator';\nimport { cn } from '../../../lib/utils';\n\nexport interface SeparatorProps extends React.ComponentPropsWithoutRef<typeof PrimitiveSeparator> {\n\t/** Render the rule as a dashed line instead of a solid border fill. */\n\tdashed?: boolean;\n}\n\nexport function Separator({\n\tclassName,\n\tdashed = false,\n\t...props\n}: SeparatorProps) {\n\treturn (\n\t\t<PrimitiveSeparator\n\t\t\tclassName={cn(\n\t\t\t\t'separator--component',\n\t\t\t\tdashed && [\n\t\t\t\t\t// `border-0` zeroes every side first: without preflight, a dashed\n\t\t\t\t\t// style would otherwise give the unset sides a 3px medium border.\n\t\t\t\t\t'bg-transparent border-0 border-border border-dashed',\n\t\t\t\t\t'data-[orientation=horizontal]:h-0 data-[orientation=horizontal]:border-t',\n\t\t\t\t\t'data-[orientation=vertical]:w-0 data-[orientation=vertical]:border-l',\n\t\t\t\t],\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nSeparator.displayName = 'Separator';\n"],"mappings":";;;;;;AAUA,SAAgBE,EAAU,EACzB,cACA,YAAS,IACT,GAAGC,KACe;CAClB,OACC,kBAACH,GAAD;EACC,WAAWC,EACV,wBACAI,KAAU;GAGT;GACA;GACA;EACD,GACAC,CACD;EACA,GAAIH;CACJ,CAAA;AAEH;AAEA,EAAU,cAAc"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t as e } from "./utils-Cospvlj1.js";
2
+ import { t as e } from "./utils-BRhFDwuU.js";
3
3
  import { jsx as t } from "react/jsx-runtime";
4
4
  import { Separator as n } from "@base-ui/react/separator";
5
5
  //#region src/components/ui/separator.tsx
@@ -14,4 +14,4 @@ function r({ className: r, orientation: i = "horizontal", ...a }) {
14
14
  //#endregion
15
15
  export { r as t };
16
16
 
17
- //# sourceMappingURL=separator-BMEvwnSX.js.map
17
+ //# sourceMappingURL=separator-Bom7NsGO.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"separator-BMEvwnSX.js","names":["Separator","SeparatorPrimitive","cn","Separator$1","props","Separator","className"],"sources":["../src/components/ui/separator.tsx"],"sourcesContent":["\"use client\"\n\nimport { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n"],"mappings":";;;;;AAMA,SAASA,EAAU,EACjB,cACA,iBAAc,cACd,GAAGI,KACwB;CAC3B,OACE,kBAACH,GAAD;EACE,aAAU;EACG;EACb,WAAWC,EACT,wKACAI,CACF;EACA,GAAIF;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"separator-Bom7NsGO.js","names":["Separator","SeparatorPrimitive","cn","Separator$1","props","Separator","className"],"sources":["../src/components/ui/separator.tsx"],"sourcesContent":["\"use client\"\n\nimport { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n"],"mappings":";;;;;AAMA,SAASA,EAAU,EACjB,cACA,iBAAc,cACd,GAAGI,KACwB;CAC3B,OACE,kBAACH,GAAD;EACE,aAAU;EACG;EACb,WAAWC,EACT,wKACAI,CACF;EACA,GAAIF;CACL,CAAA;AAEL"}
@@ -27,6 +27,7 @@ export declare function defineFormAction<TPayload = unknown, TValues = unknown,
27
27
  modality: Omit<ActionModalityConfig<TPayload, TValues, TResult>, 'type'> & Partial<Pick<ActionModalityConfig<TPayload, TValues, TResult>, 'type'>>;
28
28
  }): ActionDefinition<TPayload, TValues, TResult>;
29
29
  export declare function defineSilentAction<TPayload = unknown, TValues = unknown, TResult = unknown>(definition: Omit<ActionDefinition<TPayload, TValues, TResult>, 'modality'>): ActionDefinition<TPayload, TValues, TResult>;
30
+ /** @deprecated Use toPageHeaderAction for a header's `primaryAction` and `secondaryActions`. */
30
31
  export declare function toPageAction<TPayload = unknown, TValues = unknown, TResult = unknown>(action: ResolvedAction<TPayload, TValues, TResult>): {
31
32
  id: string;
32
33
  label: import("react").ReactNode;
@@ -42,6 +43,23 @@ export declare function toPageAction<TPayload = unknown, TValues = unknown, TRes
42
43
  group: string | undefined;
43
44
  placement: import("./actions.types").ActionPlacement;
44
45
  };
46
+ /**
47
+ * A role-based page command for a header's `primaryAction` or
48
+ * `secondaryActions`. The header chooses the treatment; a destructive tone
49
+ * marks the command destructive so it moves into the More actions menu.
50
+ */
51
+ export declare function toPageHeaderAction<TPayload = unknown, TValues = unknown, TResult = unknown>(action: ResolvedAction<TPayload, TValues, TResult>): {
52
+ id: string;
53
+ label: import("react").ReactNode;
54
+ onClick: () => void;
55
+ disabled: boolean;
56
+ loading: boolean;
57
+ icon: import("react").ComponentType<{
58
+ className?: string;
59
+ }> | undefined;
60
+ visible: boolean;
61
+ destructive: boolean;
62
+ };
45
63
  export declare function toMenuAction<TPayload = unknown, TValues = unknown, TResult = unknown>(action: ResolvedAction<TPayload, TValues, TResult>): {
46
64
  id: string;
47
65
  label: string;
@@ -2,7 +2,7 @@ export { ActionProvider, useActionStore, } from './action-provider';
2
2
  export { ActionScope } from './action-scope';
3
3
  export { ActionOverlayOutlet } from './action-overlay-outlet';
4
4
  export { extractActionFieldErrors, parseActionError, resolveActionRequest, resolveActionMessage, createActionStore, type ActionStore, } from './action-store';
5
- export { ActionHttpError, createHttpActionRunner, defineAction, defineDeleteAction, defineFormAction, defineSilentAction, toCommandAction, toMenuAction, toPageAction, toTableAction, type ActionHttpErrorOptions, type CreateHttpActionRunnerOptions, } from './action-adapters';
5
+ export { ActionHttpError, createHttpActionRunner, defineAction, defineDeleteAction, defineFormAction, defineSilentAction, toCommandAction, toMenuAction, toPageAction, toPageHeaderAction, toTableAction, type ActionHttpErrorOptions, type CreateHttpActionRunnerOptions, } from './action-adapters';
6
6
  export { useAction, useActionScope, useActionSnapshot, useActionSurface, useActiveAction, useLocalAction, useRegisterActions, } from './hooks';
7
7
  export { defaultActionOverlayStrings, } from './actions.strings';
8
8
  export { ACTION_GLOBAL_SCOPE, type ActiveActionState, type ActionButtonStyle, type ActionContext, type ActionDefinition, type ActionDrawerDirection, type ActionEntry, type ActionErrorParseContext, type ActionErrorParser, type ActionFeedbackHandlers, type ActionFieldErrors, type ActionFormProps, type ActionFormSubmitOptions, type ActionGuardContext, type ActionGuards, type ActionLifecycleEvent, type ActionLifecycleType, type ActionMessage, type ActionMessageContext, type ActionMetadata, type ActionModalityConfig, type ActionModalityType, type ActionOverlayOutletProps, type ActionOverlaySize, type ActionOverlayStrings, type ActionPlacement, type ActionPredicate, type ActionPermission, type ActionProviderProps, type ActionRegistration, type ActionRegistrationOptions, type ActionRenderContext, type ActionRequestConfig, type ActionRequestMethod, type ActionRequestRunner, type ActionRequestTarget, type ActionRequestValue, type ActionRoles, type ActionRunContext, type ActionRunState, type ActionRuntimeGlue, type ActionScopeProps, type ActionStatus, type ActionStoreSnapshot, type ActionSurface, type ActionSurfaceOptions, type ActionTone, type ParsedActionError, type ResolvedActionRequest, type ResolvedAction, type UseActionOptions, type UseLocalActionOptions, } from './actions.types';
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { useStrings as e } from "../lib/strings.js";
3
- import { n as t, r as n, t as r } from "../overlays-DhZO7N-I.js";
3
+ import { n as t, r as n, t as r } from "../overlays-DNWmZrJ4.js";
4
4
  import { createContext as i, createElement as a, useContext as o, useEffect as s, useId as c, useMemo as l, useRef as u, useSyncExternalStore as d } from "react";
5
5
  import { jsx as f, jsxs as p } from "react/jsx-runtime";
6
6
  //#region src/services/actions/actions.types.ts
@@ -773,6 +773,18 @@ function pe(e) {
773
773
  };
774
774
  }
775
775
  function me(e) {
776
+ return {
777
+ id: e.id,
778
+ label: e.label,
779
+ onClick: () => e.open(),
780
+ disabled: e.disabled,
781
+ loading: e.isRunning,
782
+ icon: e.icon,
783
+ visible: e.visible,
784
+ destructive: Z(e) === "destructive"
785
+ };
786
+ }
787
+ function he(e) {
776
788
  return {
777
789
  id: e.id,
778
790
  label: $(e),
@@ -785,7 +797,7 @@ function me(e) {
785
797
  buttonStyle: Q(e)
786
798
  };
787
799
  }
788
- function he(e) {
800
+ function ge(e) {
789
801
  let t = e.disabled || e.isRunning;
790
802
  return {
791
803
  id: e.id,
@@ -800,7 +812,7 @@ function he(e) {
800
812
  buttonStyle: Q(e)
801
813
  };
802
814
  }
803
- function ge(e, t) {
815
+ function _e(e, t) {
804
816
  return {
805
817
  id: e.id,
806
818
  label: $(e),
@@ -811,6 +823,6 @@ function ge(e, t) {
811
823
  };
812
824
  }
813
825
  //#endregion
814
- export { m as ACTION_GLOBAL_SCOPE, X as ActionHttpError, Y as ActionOverlayOutlet, te as ActionProvider, U as ActionScope, N as createActionStore, ce as createHttpActionRunner, W as defaultActionOverlayStrings, le as defineAction, ue as defineDeleteAction, de as defineFormAction, fe as defineSilentAction, k as extractActionFieldErrors, M as parseActionError, A as resolveActionMessage, j as resolveActionRequest, ge as toCommandAction, me as toMenuAction, pe as toPageAction, he as toTableAction, V as useAction, R as useActionScope, z as useActionSnapshot, L as useActionStore, ne as useActionSurface, H as useActiveAction, re as useLocalAction, B as useRegisterActions };
826
+ export { m as ACTION_GLOBAL_SCOPE, X as ActionHttpError, Y as ActionOverlayOutlet, te as ActionProvider, U as ActionScope, N as createActionStore, ce as createHttpActionRunner, W as defaultActionOverlayStrings, le as defineAction, ue as defineDeleteAction, de as defineFormAction, fe as defineSilentAction, k as extractActionFieldErrors, M as parseActionError, A as resolveActionMessage, j as resolveActionRequest, _e as toCommandAction, he as toMenuAction, pe as toPageAction, me as toPageHeaderAction, ge as toTableAction, V as useAction, R as useActionScope, z as useActionSnapshot, L as useActionStore, ne as useActionSurface, H as useActiveAction, re as useLocalAction, B as useRegisterActions };
815
827
 
816
828
  //# sourceMappingURL=actions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","names":["ActionDrawer","ActionDialog","ConfirmDialog","ACTION_GLOBAL_SCOPE","EMPTY_ERRORS","nextRegistrationId","createRunState","state","status","mergeMetadata","base","override","createSnapshot","registrations","runStates","active","resolveScope","scope","createActionKey","registrationId","actionId","getDefaultSurfaces","action","evaluatePredicate","predicate","fallback","context","resolveSearchLabel","toStringArray","value","isActionFieldErrors","item","child","normalizeParsedError","parsed","maybeParsed","extractActionFieldErrors","error","resolveRequestValue","maybeErrors","result","key","resolveActionMessage","message","resolveActionRequest","target","request","parseActionError","parser","ActionStore","listener","feedback","shouldPublish","options","actions","registration","removedKeys","entries","entry","resolved","a","b","index","payload","metadata","args","token","abortController","startedAt","failedError","runner","parsedError","errors","resolvedScope","isGlobal","includeGlobal","runState","visible","disabled","openMetadata","executeMetadata","values","guardContext","permissions","permission","roles","messageContext","type","event","controller","previous","createActionStore","ActionStoreContext","createContext","ActionScopeContext","ActionProvider","storeRef","useRef","store","resolvedFeedback","runtime","resolvedGuards","guards","resolvedParseErrors","parseErrors","resolvedRequestRunner","requestRunner","resolvedOverlayOpenChange","onOverlayOpenChange","resolvedRunningChange","onRunningChange","useEffect","ActionProviderStateEffects","children","snapshot","useSyncExternalStore","isOverlayOpen","isRunning","previousOverlayOpenRef","previousRunningRef","onOverlayOpenChangeRef","onRunningChangeRef","useActionStore","useContext","useActionScope","useActionSnapshot","useRegisterActions","inheritedScope","useActionSurface","useAction","useLocalAction","localId","useId","useMemo","definition","useActiveAction","ActionScope","defaultActionOverlayStrings","mapTone","tone","mapButtonTone","mapSize","size","mapDirection","direction","ActionOverlayOutlet","stringsProp","strings","useStrings","modality","title","description","confirm","cancel","alertMessage","overlayTone","confirmTone","isEmphasized","emphasis","showIcon","closeOnBackdropClick","content","commonProps","open","ActionHttpError","statusText","body","response","defaultParseResponse","resolveUrlTarget","joinUrl","url","baseUrl","serializeBody","data","createHttpActionRunner","method","isFormDataBody","headers","fetcher","parseResponse","defineAction","defineDeleteAction","defineFormAction","defineSilentAction","getActionTone","modalityTone","getActionButtonStyle","style","getActionLabel","toPageAction","toMenuAction","toTableAction","row","createElement","toCommandAction"],"sources":["../../src/services/actions/actions.types.ts","../../src/services/actions/action-store.ts","../../src/services/actions/action-provider.tsx","../../src/services/actions/hooks.ts","../../src/services/actions/action-scope.tsx","../../src/services/actions/actions.strings.ts","../../src/services/actions/action-overlay-outlet.tsx","../../src/services/actions/action-adapters.ts"],"sourcesContent":["import type {\n\tComponentType,\n\tFormEvent,\n\tFormEventHandler,\n\tReactNode,\n\tRefObject,\n} from 'react';\n\nimport type { StringsProp } from '../../lib/strings';\nimport type { SemanticTone } from '../../lib/component-vocabulary';\nimport type { ActionButtonStyle, ActionPresentation } from '../../lib/action-presentation';\n\nexport type { ActionButtonStyle } from '../../lib/action-presentation';\n\nexport const ACTION_GLOBAL_SCOPE = '__global__';\n\nexport type ActionSurface =\n\t| 'page'\n\t| 'table'\n\t| 'table-row'\n\t| 'card'\n\t| 'command'\n\t| (string & {});\n\nexport type ActionPlacement = 'auto' | 'inline' | 'menu';\nexport type ActionModalityType = 'alert' | 'dialog' | 'drawer';\nexport type ActionTone = SemanticTone;\nexport type ActionStatus = 'idle' | 'running' | 'succeeded' | 'failed';\nexport type ActionOverlaySize =\n\t| 'xs'\n\t| 'sm'\n\t| 'md'\n\t| 'lg'\n\t| 'xl'\n\t| '2xl'\n\t| '3xl'\n\t| '4xl'\n\t| '5xl'\n\t| 'full';\nexport type ActionDrawerDirection = 'left' | 'right' | 'top' | 'bottom';\nexport type ActionRequestMethod =\n\t| 'get'\n\t| 'post'\n\t| 'put'\n\t| 'patch'\n\t| 'delete';\n\nexport type ActionRequestTarget =\n\t| { type: 'url'; url: string }\n\t| { type: 'named'; name: string; params?: unknown };\n\nexport type ActionFieldErrors = Record<string, string | string[]>;\nexport type ActionMetadata = Record<string, unknown>;\ntype BivariantCallback<TArgs extends readonly unknown[], TResult> = {\n\tbivarianceHack(...args: TArgs): TResult;\n}['bivarianceHack'];\n\nexport interface ActionContext<TPayload = unknown> {\n\tactionId: string;\n\tscope: string;\n\tsurface?: ActionSurface;\n\tpayload: TPayload | undefined;\n\tmetadata?: ActionMetadata;\n}\n\nexport interface ActionGuardContext<TPayload = unknown>\n\textends ActionContext<TPayload> {\n\taction: ActionDefinition;\n}\n\nexport interface ActionMessageContext<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n> extends ActionContext<TPayload> {\n\taction: ActionDefinition;\n\tvalues: TValues | undefined;\n\tstatus?: ActionStatus;\n\terrors?: ActionFieldErrors;\n\tresult?: TResult;\n\terror?: unknown;\n}\n\nexport type ActionMessage<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n> =\n\t| string\n\t| BivariantCallback<\n\t\t\t[context: ActionMessageContext<TPayload, TValues, TResult>],\n\t\t\tstring | null | undefined\n\t >;\n\nexport interface ActionRunContext<TPayload = unknown, TValues = unknown>\n\textends ActionContext<TPayload> {\n\taction: ActionDefinition;\n\tvalues: TValues | undefined;\n\tsignal: AbortSignal;\n}\n\nexport interface ActionErrorParseContext<TPayload = unknown, TValues = unknown>\n\textends ActionRunContext<TPayload, TValues> {\n\terror: unknown;\n}\n\nexport interface ActionRenderContext<TPayload = unknown, TValues = unknown>\n\textends ActionContext<TPayload> {\n\taction: ActionDefinition;\n\tvalues: TValues | undefined;\n\tformId?: string;\n\tstatus: ActionStatus;\n\tisIdle: boolean;\n\tisRunning: boolean;\n\tisSuccess: boolean;\n\tisError: boolean;\n\tresult: unknown;\n\terror: unknown;\n\terrors: ActionFieldErrors;\n\tclose: () => void;\n\tsubmit: (values?: TValues) => Promise<unknown>;\n\tgetFormProps: (options?: ActionFormSubmitOptions<TValues>) => ActionFormProps;\n}\n\nexport interface ActionFormSubmitOptions<TValues = unknown> {\n\tresolveValues?: (\n\t\tformData: FormData,\n\t\tevent: FormEvent<HTMLFormElement>,\n\t) => TValues | Promise<TValues>;\n}\n\nexport interface ActionFormProps {\n\tid?: string;\n\tonSubmit: FormEventHandler<HTMLFormElement>;\n}\n\nexport type ActionRequestValue<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTValue = unknown,\n> =\n\t| TValue\n\t| BivariantCallback<\n\t\t\t[context: ActionRunContext<TPayload, TValues>],\n\t\t\tTValue\n\t >;\n\nexport interface ActionRequestConfig<\n\tTPayload = unknown,\n\tTValues = unknown,\n> {\n\tmethod: ActionRequestMethod;\n\ttarget?: ActionRequestValue<TPayload, TValues, ActionRequestTarget>;\n\tdata?: ActionRequestValue<TPayload, TValues, unknown>;\n\theaders?: ActionRequestValue<\n\t\tTPayload,\n\t\tTValues,\n\t\tRecord<string, string>\n\t>;\n\toptions?: ActionRequestValue<\n\t\tTPayload,\n\t\tTValues,\n\t\tRecord<string, unknown>\n\t>;\n}\n\nexport interface ResolvedActionRequest {\n\tmethod: ActionRequestMethod;\n\ttarget?: ActionRequestTarget;\n\tdata?: unknown;\n\theaders?: Record<string, string>;\n\toptions?: Record<string, unknown>;\n}\n\nexport type ActionRequestRunner<TResult = unknown> = BivariantCallback<\n\t[\n\t\trequest: ResolvedActionRequest,\n\t\tcontext: ActionRunContext,\n\t],\n\tTResult | Promise<TResult>\n>;\n\nexport interface ParsedActionError {\n\tfieldErrors?: ActionFieldErrors;\n\tmessage?: string;\n}\n\nexport type ActionErrorParser = BivariantCallback<\n\t[\n\t\terror: unknown,\n\t\tcontext: ActionErrorParseContext,\n\t],\n\tParsedActionError | ActionFieldErrors | string | null | undefined\n>;\n\nexport interface ActionModalityConfig<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n> {\n\ttype: ActionModalityType;\n\ttitle: ActionMessage<TPayload, TValues, TResult>;\n\tdescription?: ActionMessage<TPayload, TValues, TResult>;\n\tconfirmLabel?: ActionMessage<TPayload, TValues, TResult>;\n\tcancelLabel?: ActionMessage<TPayload, TValues, TResult>;\n\ttone?: ActionTone;\n\tsize?: ActionOverlaySize;\n\tdrawerDirection?: ActionDrawerDirection;\n\tformId?: string;\n\tshowCancel?: boolean;\n\tshowConfirm?: boolean;\n\tshowIcon?: boolean;\n\temphasis?: boolean;\n\tshowFooter?: boolean;\n\tvisuallyHideHeader?: boolean;\n\tclassName?: string;\n\tcontentClassName?: string;\n\tinitialFocusRef?: RefObject<HTMLElement>;\n\tcloseOnEscape?: boolean;\n\tcloseOnSuccess?: boolean;\n\tcloseOnBackdropClick?: boolean;\n\tconfirmStyle?: Extract<ActionButtonStyle, 'solid' | 'outline'>;\n\tfooter?: ReactNode;\n\talertMessage?: ActionMessage<TPayload, TValues, TResult>;\n\trender?: BivariantCallback<\n\t\t[context: ActionRenderContext<TPayload, TValues>],\n\t\tReactNode\n\t>;\n}\n\nexport type ActionPredicate<TPayload = unknown> =\n\t| boolean\n\t| BivariantCallback<[context: ActionContext<TPayload>], boolean>;\n\nexport type ActionPermission = string | readonly string[];\nexport type ActionRoles = string | readonly string[];\n\nexport interface ActionDefinition<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n> extends Omit<ActionPresentation, 'visible' | 'disabled'> {\n\tid: string;\n\tlabel: ReactNode;\n\tsearchLabel?: string;\n\ticon?: ComponentType<{ className?: string }>;\n\tsurfaces?: readonly ActionSurface[];\n\tgroup?: string;\n\tplacement?: ActionPlacement;\n\torder?: number;\n\tvisible?: ActionPredicate<TPayload>;\n\tdisabled?: ActionPredicate<TPayload>;\n\tpermission?: ActionPermission;\n\troles?: ActionRoles;\n\tmodality?: 'none' | ActionModalityConfig<TPayload, TValues, TResult>;\n\trequest?: ActionRequestConfig<TPayload, TValues>;\n\trequestRunner?: ActionRequestRunner<TResult>;\n\trun?: BivariantCallback<\n\t\t[context: ActionRunContext<TPayload, TValues>],\n\t\tTResult | Promise<TResult>\n\t>;\n\tparseErrors?: ActionErrorParser;\n\tsuccessMessage?: ActionMessage<TPayload, TValues, TResult>;\n\terrorMessage?: ActionMessage<TPayload, TValues, TResult>;\n\tonStart?: BivariantCallback<\n\t\t[event: ActionLifecycleEvent<TPayload, TValues, TResult>],\n\t\tvoid\n\t>;\n\tonAfterMutate?: BivariantCallback<\n\t\t[event: ActionLifecycleEvent<TPayload, TValues, TResult>],\n\t\tvoid\n\t>;\n\tonError?: BivariantCallback<\n\t\t[event: ActionLifecycleEvent<TPayload, TValues, TResult>],\n\t\tvoid\n\t>;\n\tonSettled?: BivariantCallback<\n\t\t[event: ActionLifecycleEvent<TPayload, TValues, TResult>],\n\t\tvoid\n\t>;\n\tmetadata?: ActionMetadata;\n}\n\nexport interface ActionRegistrationOptions {\n\tscope?: string;\n}\n\nexport interface ActionRegistration {\n\tid: string;\n\tscope: string;\n\torder: number;\n\tactions: readonly ActionDefinition[];\n}\n\nexport interface ActionSurfaceOptions<TPayload = unknown> {\n\tsurface: ActionSurface;\n\tscope?: string;\n\tincludeGlobal?: boolean;\n\tpayload?: TPayload;\n\tmetadata?: ActionMetadata;\n}\n\nexport interface UseActionOptions<TPayload = unknown> {\n\tscope?: string;\n\tincludeGlobal?: boolean;\n\tpayload?: TPayload;\n\tmetadata?: ActionMetadata;\n}\n\nexport interface ActionRunState {\n\tstatus: ActionStatus;\n\tisIdle: boolean;\n\tisRunning: boolean;\n\tisSuccess: boolean;\n\tisError: boolean;\n\terror: unknown;\n\terrors: ActionFieldErrors;\n\tmessage?: string;\n\tresult?: unknown;\n\tpayload?: unknown;\n\tvalues?: unknown;\n\tmetadata?: ActionMetadata;\n\tstartedAt?: number;\n\tcompletedAt?: number;\n}\n\nexport interface ActiveActionState {\n\tkey: string;\n\tactionId: string;\n\tscope: string;\n\tpayload?: unknown;\n\tvalues?: unknown;\n\tmetadata?: ActionMetadata;\n}\n\nexport interface ActionStoreSnapshot {\n\tversion: number;\n\tregistrations: readonly ActionRegistration[];\n\trunStates: Readonly<Record<string, ActionRunState>>;\n\tactive: ActiveActionState | null;\n}\n\nexport interface ResolvedAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n> {\n\tkey: string;\n\tid: string;\n\tscope: string;\n\tlabel: ReactNode;\n\tsearchLabel: string;\n\ticon?: ComponentType<{ className?: string }>;\n\tgroup?: string;\n\tplacement: ActionPlacement;\n\torder: number;\n\tsurface?: ActionSurface;\n\tvisible: boolean;\n\tdisabled: boolean;\n\tstatus: ActionStatus;\n\tisIdle: boolean;\n\tisRunning: boolean;\n\tisSuccess: boolean;\n\tisError: boolean;\n\terror: unknown;\n\terrors: ActionFieldErrors;\n\tmessage?: string;\n\tresult: TResult | undefined;\n\trunState: ActionRunState;\n\tpayload: TPayload | undefined;\n\tvalues: TValues | undefined;\n\tmetadata?: ActionMetadata;\n\tstartedAt?: number;\n\tcompletedAt?: number;\n\tdefinition: ActionDefinition<TPayload, TValues, TResult>;\n\topen: (payload?: TPayload, metadata?: ActionMetadata) => void;\n\texecute: (\n\t\tvalues?: TValues,\n\t\tpayload?: TPayload,\n\t\tmetadata?: ActionMetadata,\n\t) => Promise<TResult | undefined>;\n\tclose: () => void;\n\tsubmit: (values?: TValues) => Promise<TResult | undefined>;\n}\n\nexport type ActionLifecycleType = 'started' | 'succeeded' | 'failed' | 'settled';\n\nexport interface ActionLifecycleEvent<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n> extends ActionMessageContext<TPayload, TValues, TResult> {\n\ttype: ActionLifecycleType;\n\tkey: string;\n\tstatus: ActionStatus;\n\trunState: ActionRunState;\n\tmessage?: string;\n}\n\nexport interface ActionFeedbackHandlers {\n\tonStart?: (event: ActionLifecycleEvent) => void;\n\tonSuccess?: (event: ActionLifecycleEvent) => void;\n\tonError?: (event: ActionLifecycleEvent) => void;\n\tonSettled?: (event: ActionLifecycleEvent) => void;\n}\n\nexport interface ActionGuards {\n\tcan?: (\n\t\tpermission: string,\n\t\tcontext: ActionGuardContext,\n\t) => boolean;\n\thasAnyRole?: (\n\t\troles: readonly string[],\n\t\tcontext: ActionGuardContext,\n\t) => boolean;\n}\n\nexport interface ActionRuntimeGlue {\n\trequestRunner?: ActionRequestRunner;\n\tparseErrors?: ActionErrorParser;\n\tguards?: ActionGuards;\n\tfeedback?: ActionFeedbackHandlers;\n\tonOverlayOpenChange?: (\n\t\topen: boolean,\n\t\tsnapshot: ActionStoreSnapshot,\n\t) => void;\n\tonRunningChange?: (\n\t\trunning: boolean,\n\t\tsnapshot: ActionStoreSnapshot,\n\t) => void;\n}\n\nexport interface ActionProviderProps<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n> {\n\tactions?: readonly ActionDefinition<TPayload, TValues, TResult>[];\n\truntime?: ActionRuntimeGlue;\n\tfeedback?: ActionFeedbackHandlers;\n\tguards?: ActionGuards;\n\tparseErrors?: ActionErrorParser;\n\trequestRunner?: ActionRequestRunner;\n\tonOverlayOpenChange?: (\n\t\topen: boolean,\n\t\tsnapshot: ActionStoreSnapshot,\n\t) => void;\n\tonRunningChange?: (\n\t\trunning: boolean,\n\t\tsnapshot: ActionStoreSnapshot,\n\t) => void;\n\tchildren: ReactNode;\n}\n\nexport interface ActionScopeProps<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n> extends ActionRegistrationOptions {\n\tactions: readonly ActionDefinition<TPayload, TValues, TResult>[];\n\tchildren: ReactNode;\n}\n\nexport interface ActionOverlayStrings {\n\tconfirm: string;\n\tcancel: string;\n}\n\nexport interface ActionOverlayOutletProps {\n\tstrings?: StringsProp<ActionOverlayStrings>;\n}\n\nexport interface ActionEntry {\n\tkey: string;\n\tregistration: ActionRegistration;\n\taction: ActionDefinition;\n}\n\nexport interface UseLocalActionOptions<TPayload = unknown>\n\textends UseActionOptions<TPayload> {\n\tscope?: string;\n}\n","import {\n\tACTION_GLOBAL_SCOPE,\n\ttype ActionContext,\n\ttype ActionDefinition,\n\ttype ActionEntry,\n\ttype ActionErrorParseContext,\n\ttype ActionErrorParser,\n\ttype ActionFeedbackHandlers,\n\ttype ActionFieldErrors,\n\ttype ActionGuards,\n\ttype ActionLifecycleEvent,\n\ttype ActionLifecycleType,\n\ttype ActionMessage,\n\ttype ActionMessageContext,\n\ttype ActionMetadata,\n\ttype ActionRegistration,\n\ttype ActionRegistrationOptions,\n\ttype ActionRequestConfig,\n\ttype ActionRequestRunner,\n\ttype ActionRunContext,\n\ttype ActionRunState,\n\ttype ActionStatus,\n\ttype ParsedActionError,\n\ttype ResolvedActionRequest,\n\ttype ActionStoreSnapshot,\n\ttype ActionSurfaceOptions,\n\ttype ResolvedAction,\n\ttype UseActionOptions,\n} from './actions.types';\n\nconst EMPTY_ERRORS: ActionFieldErrors = Object.freeze({});\n\nlet nextRegistrationId = 0;\n\nfunction createRunState(\n\tstatus: ActionStatus,\n\tstate: Omit<\n\t\tPartial<ActionRunState>,\n\t\t'status' | 'isIdle' | 'isRunning' | 'isSuccess' | 'isError'\n\t> = {},\n): ActionRunState {\n\treturn {\n\t\t...state,\n\t\tstatus,\n\t\tisIdle: status === 'idle',\n\t\tisRunning: status === 'running',\n\t\tisSuccess: status === 'succeeded',\n\t\tisError: status === 'failed',\n\t\terror: state.error ?? null,\n\t\terrors: state.errors ?? EMPTY_ERRORS,\n\t};\n}\n\nfunction mergeMetadata(\n\tbase?: ActionMetadata,\n\toverride?: ActionMetadata,\n): ActionMetadata | undefined {\n\tif (!base) return override;\n\tif (!override) return base;\n\treturn { ...base, ...override };\n}\n\nfunction createSnapshot(\n\tversion: number,\n\tregistrations: readonly ActionRegistration[],\n\trunStates: Readonly<Record<string, ActionRunState>>,\n\tactive: ActionStoreSnapshot['active'],\n): ActionStoreSnapshot {\n\treturn Object.freeze({\n\t\tversion,\n\t\tregistrations: Object.freeze([...registrations]),\n\t\trunStates: Object.freeze({ ...runStates }),\n\t\tactive: active ? Object.freeze({ ...active }) : null,\n\t});\n}\n\nfunction resolveScope(scope?: string): string {\n\tconst trimmed = scope?.trim();\n\treturn trimmed ? trimmed : ACTION_GLOBAL_SCOPE;\n}\n\nfunction createActionKey(registrationId: string, actionId: string): string {\n\treturn `${registrationId}:${actionId}`;\n}\n\nfunction getDefaultSurfaces(action: ActionDefinition): readonly string[] {\n\treturn action.surfaces ?? ['page'];\n}\n\nfunction evaluatePredicate<TPayload>(\n\tpredicate: ActionDefinition<TPayload>['visible'],\n\tcontext: ActionContext<TPayload>,\n\tfallback: boolean,\n): boolean {\n\tif (predicate === undefined) return fallback;\n\tif (typeof predicate === 'function') return predicate(context);\n\treturn predicate;\n}\n\nfunction resolveSearchLabel(action: ActionDefinition): string {\n\tif (action.searchLabel) return action.searchLabel;\n\tif (typeof action.label === 'string') return action.label;\n\treturn action.id;\n}\n\nfunction toStringArray(value: string | readonly string[] | undefined): readonly string[] {\n\tif (!value) return [];\n\treturn Array.isArray(value) ? value : [value as string];\n}\n\nfunction isActionFieldErrors(value: unknown): value is ActionFieldErrors {\n\tif (!value || typeof value !== 'object' || Array.isArray(value)) return false;\n\treturn Object.values(value).every((item) =>\n\t\ttypeof item === 'string' ||\n\t\t(Array.isArray(item) && item.every((child) => typeof child === 'string')),\n\t);\n}\n\nfunction normalizeParsedError(\n\tparsed: ParsedActionError | ActionFieldErrors | string | null | undefined,\n\terror: unknown,\n): ParsedActionError {\n\tif (typeof parsed === 'string') return { message: parsed };\n\tif (parsed && typeof parsed === 'object') {\n\t\tif ('fieldErrors' in parsed || 'message' in parsed) {\n\t\t\tconst maybeParsed = parsed as ParsedActionError;\n\t\t\treturn {\n\t\t\t\tfieldErrors: maybeParsed.fieldErrors ?? extractActionFieldErrors(error),\n\t\t\t\tmessage: typeof maybeParsed.message === 'string' ? maybeParsed.message : undefined,\n\t\t\t};\n\t\t}\n\t\tif (isActionFieldErrors(parsed)) {\n\t\t\treturn { fieldErrors: parsed };\n\t\t}\n\t}\n\treturn { fieldErrors: extractActionFieldErrors(error) };\n}\n\nfunction resolveRequestValue<TPayload, TValues, TValue>(\n\tvalue:\n\t\t| TValue\n\t\t| ((context: ActionRunContext<TPayload, TValues>) => TValue)\n\t\t| undefined,\n\tcontext: ActionRunContext<TPayload, TValues>,\n): TValue | undefined {\n\tif (typeof value === 'function') {\n\t\treturn (value as (context: ActionRunContext<TPayload, TValues>) => TValue)(context);\n\t}\n\treturn value;\n}\n\nexport function extractActionFieldErrors(error: unknown): ActionFieldErrors {\n\tif (!error || typeof error !== 'object') return EMPTY_ERRORS;\n\tconst maybeErrors = (error as { errors?: unknown }).errors;\n\tif (!maybeErrors || typeof maybeErrors !== 'object' || Array.isArray(maybeErrors)) {\n\t\treturn EMPTY_ERRORS;\n\t}\n\n\tconst result: ActionFieldErrors = {};\n\tfor (const [key, value] of Object.entries(maybeErrors)) {\n\t\tif (typeof value === 'string') {\n\t\t\tresult[key] = value;\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(value) && value.every((item) => typeof item === 'string')) {\n\t\t\tresult[key] = value;\n\t\t}\n\t}\n\treturn Object.keys(result).length > 0 ? result : EMPTY_ERRORS;\n}\n\nexport function resolveActionMessage<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(\n\tmessage: ActionMessage<TPayload, TValues, TResult> | undefined,\n\tcontext: ActionMessageContext<TPayload, TValues, TResult>,\n): string | undefined {\n\tif (message === undefined) return undefined;\n\tif (typeof message === 'function') {\n\t\tconst resolved = message(context);\n\t\treturn resolved ?? undefined;\n\t}\n\treturn message;\n}\n\nexport function resolveActionRequest<TPayload = unknown, TValues = unknown>(\n\trequest: ActionRequestConfig<TPayload, TValues>,\n\tcontext: ActionRunContext<TPayload, TValues>,\n): ResolvedActionRequest {\n\tconst target = resolveRequestValue(request.target, context);\n\n\treturn {\n\t\tmethod: request.method,\n\t\ttarget,\n\t\tdata: resolveRequestValue(request.data, context),\n\t\theaders: resolveRequestValue(request.headers, context),\n\t\toptions: resolveRequestValue(request.options, context),\n\t};\n}\n\nexport function parseActionError<TPayload = unknown, TValues = unknown>(\n\terror: unknown,\n\tcontext: ActionErrorParseContext<TPayload, TValues>,\n\tparser?: ActionErrorParser,\n): ParsedActionError {\n\tconst parsed = parser?.(error, context as ActionErrorParseContext);\n\treturn normalizeParsedError(parsed, error);\n}\n\nexport class ActionStore {\n\tprivate registrations: ActionRegistration[] = [];\n\tprivate runStates: Record<string, ActionRunState> = {};\n\tprivate active: ActionStoreSnapshot['active'] = null;\n\tprivate version = 0;\n\tprivate snapshot: ActionStoreSnapshot = createSnapshot(0, [], {}, null);\n\tprivate readonly listeners = new Set<() => void>();\n\tprivate feedback: ActionFeedbackHandlers | undefined;\n\tprivate guards: ActionGuards | undefined;\n\tprivate errorParser: ActionErrorParser | undefined;\n\tprivate requestRunner: ActionRequestRunner | undefined;\n\tprivate readonly abortControllers = new Map<string, AbortController>();\n\tprivate readonly runTokens = new Map<string, number>();\n\n\tsubscribe = (listener: () => void): (() => void) => {\n\t\tthis.listeners.add(listener);\n\t\treturn () => this.listeners.delete(listener);\n\t};\n\n\tgetSnapshot = (): ActionStoreSnapshot => this.snapshot;\n\n\tsetFeedback(feedback?: ActionFeedbackHandlers): void {\n\t\tthis.feedback = feedback;\n\t}\n\n\tsetOptions(options: {\n\t\tfeedback?: ActionFeedbackHandlers;\n\t\tguards?: ActionGuards;\n\t\tparseErrors?: ActionErrorParser;\n\t\trequestRunner?: ActionRequestRunner;\n\t}): void {\n\t\tconst shouldPublish =\n\t\t\tthis.feedback !== options.feedback ||\n\t\t\tthis.guards !== options.guards ||\n\t\t\tthis.errorParser !== options.parseErrors ||\n\t\t\tthis.requestRunner !== options.requestRunner;\n\t\tthis.feedback = options.feedback;\n\t\tthis.guards = options.guards;\n\t\tthis.errorParser = options.parseErrors;\n\t\tthis.requestRunner = options.requestRunner;\n\t\tif (shouldPublish) this.publish();\n\t}\n\n\tregisterActions<TPayload = unknown, TValues = unknown, TResult = unknown>(\n\t\tactions: readonly ActionDefinition<TPayload, TValues, TResult>[],\n\t\toptions: ActionRegistrationOptions = {},\n\t): () => void {\n\t\tif (actions.length === 0) return () => undefined;\n\n\t\tconst registration: ActionRegistration = {\n\t\t\tid: `registration-${nextRegistrationId++}`,\n\t\t\tscope: resolveScope(options.scope),\n\t\t\torder: this.registrations.length,\n\t\t\tactions: actions as readonly ActionDefinition[],\n\t\t};\n\n\t\tthis.registrations = [...this.registrations, registration];\n\t\tthis.publish();\n\n\t\treturn () => {\n\t\t\tthis.registrations = this.registrations.filter((item) => item.id !== registration.id);\n\t\t\tconst removedKeys = registration.actions.map((action) =>\n\t\t\t\tcreateActionKey(registration.id, action.id),\n\t\t\t);\n\t\t\tfor (const key of removedKeys) {\n\t\t\t\tthis.abortAction(key);\n\t\t\t\tdelete this.runStates[key];\n\t\t\t}\n\t\t\tif (this.active && removedKeys.includes(this.active.key)) {\n\t\t\t\tthis.active = null;\n\t\t\t}\n\t\t\tthis.publish();\n\t\t};\n\t}\n\n\tselectSurfaceActions<TPayload = unknown, TValues = unknown, TResult = unknown>(\n\t\toptions: ActionSurfaceOptions<TPayload>,\n\t): ResolvedAction<TPayload, TValues, TResult>[] {\n\t\tconst entries = this.getEntriesForScope(options.scope, options.includeGlobal);\n\t\tconst result: ResolvedAction<TPayload, TValues, TResult>[] = [];\n\n\t\tfor (const entry of entries) {\n\t\t\tconst surfaces = getDefaultSurfaces(entry.action);\n\t\t\tif (!surfaces.includes(options.surface)) continue;\n\n\t\t\tconst resolved = this.resolveEntry<TPayload, TValues, TResult>(entry, {\n\t\t\t\tsurface: options.surface,\n\t\t\t\tpayload: options.payload,\n\t\t\t\tmetadata: options.metadata,\n\t\t\t});\n\t\t\tif (resolved.visible) result.push(resolved);\n\t\t}\n\n\t\treturn result.sort((a, b) => a.order - b.order || a.id.localeCompare(b.id));\n\t}\n\n\tselectAction<TPayload = unknown, TValues = unknown, TResult = unknown>(\n\t\tactionId: string,\n\t\toptions: UseActionOptions<TPayload> = {},\n\t): ResolvedAction<TPayload, TValues, TResult> | null {\n\t\tconst entries = this.getEntriesForScope(options.scope, options.includeGlobal);\n\t\tfor (let index = entries.length - 1; index >= 0; index -= 1) {\n\t\t\tconst entry = entries[index];\n\t\t\tif (entry.action.id !== actionId) continue;\n\t\t\tconst resolved = this.resolveEntry<TPayload, TValues, TResult>(entry, {\n\t\t\t\tpayload: options.payload,\n\t\t\t\tmetadata: options.metadata,\n\t\t\t});\n\t\t\treturn resolved.visible ? resolved : null;\n\t\t}\n\t\treturn null;\n\t}\n\n\tgetActiveAction<TPayload = unknown, TValues = unknown, TResult = unknown>():\n\t\t| ResolvedAction<TPayload, TValues, TResult>\n\t\t| null {\n\t\tconst active = this.snapshot.active;\n\t\tif (!active) return null;\n\t\tconst entry = this.findEntry(active.key);\n\t\tif (!entry) return null;\n\t\treturn this.resolveEntry<TPayload, TValues, TResult>(entry, {\n\t\t\tpayload: active.payload as TPayload | undefined,\n\t\t\tmetadata: active.metadata,\n\t\t});\n\t}\n\n\topenAction<TPayload = unknown>(key: string, payload?: TPayload, metadata?: ActionMetadata): void {\n\t\tconst entry = this.findEntry(key);\n\t\tif (!entry) return;\n\t\tif (this.isEntryDisabled(entry, payload, metadata)) return;\n\n\t\tif (!entry.action.modality || entry.action.modality === 'none') {\n\t\t\t// Event-driven opening has no promise consumer; failure is recorded and\n\t\t\t// delivered through lifecycle feedback. Direct execute() still rejects.\n\t\t\tvoid this.executeAction(key, { payload, metadata }).catch(() => {});\n\t\t\treturn;\n\t\t}\n\n\t\tthis.active = {\n\t\t\tkey,\n\t\t\tactionId: entry.action.id,\n\t\t\tscope: entry.registration.scope,\n\t\t\tpayload,\n\t\t\tmetadata,\n\t\t};\n\t\tthis.setRunState(key, createRunState('idle', {\n\t\t\terror: null,\n\t\t\terrors: EMPTY_ERRORS,\n\t\t\tmessage: undefined,\n\t\t\tpayload,\n\t\t\tvalues: undefined,\n\t\t\tmetadata: mergeMetadata(entry.action.metadata, metadata),\n\t\t}), false);\n\t\tthis.publish();\n\t}\n\n\tcloseActive(options: { abort?: boolean } = {}): void {\n\t\tconst active = this.active;\n\t\tif (!active) return;\n\t\tif (options.abort !== false) {\n\t\t\tthis.abortAction(active.key);\n\t\t}\n\t\tthis.active = null;\n\t\tthis.publish();\n\t}\n\n\tasync submitActive<TValues = unknown, TResult = unknown>(\n\t\tvalues?: TValues,\n\t): Promise<TResult | undefined> {\n\t\tconst active = this.active;\n\t\tif (!active) return undefined;\n\t\tthis.active = { ...active, values };\n\t\tthis.publish();\n\t\tconst result = await this.executeAction<unknown, TValues, TResult>(active.key, {\n\t\t\tpayload: active.payload,\n\t\t\tvalues,\n\t\t\tmetadata: active.metadata,\n\t\t});\n\t\tconst entry = this.findEntry(active.key);\n\t\tconst closeOnSuccess =\n\t\t\tentry?.action.modality &&\n\t\t\tentry.action.modality !== 'none' &&\n\t\t\tentry.action.modality.closeOnSuccess === false\n\t\t\t\t? false\n\t\t\t\t: true;\n\t\tif (closeOnSuccess && this.active?.key === active.key) {\n\t\t\tthis.closeActive({ abort: false });\n\t\t}\n\t\treturn result;\n\t}\n\n\tasync executeAction<TPayload = unknown, TValues = unknown, TResult = unknown>(\n\t\tkey: string,\n\t\targs: {\n\t\t\tpayload?: TPayload;\n\t\t\tvalues?: TValues;\n\t\t\tmetadata?: ActionMetadata;\n\t\t} = {},\n\t): Promise<TResult | undefined> {\n\t\tconst entry = this.findEntry(key);\n\t\tif (!entry) {\n\t\t\tthrow new Error(`Action is not registered: ${key}`);\n\t\t}\n\t\tif (this.isEntryDisabled(entry, args.payload, args.metadata)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tthis.abortAction(key);\n\t\tconst token = (this.runTokens.get(key) ?? 0) + 1;\n\t\tthis.runTokens.set(key, token);\n\t\tconst abortController = new AbortController();\n\t\tthis.abortControllers.set(key, abortController);\n\t\tconst metadata = mergeMetadata(entry.action.metadata, args.metadata);\n\t\tconst startedAt = Date.now();\n\n\t\tconst context = this.createRunContext<TPayload, TValues>(entry, {\n\t\t\tpayload: args.payload,\n\t\t\tvalues: args.values,\n\t\t\tmetadata,\n\t\t\tsignal: abortController.signal,\n\t\t});\n\n\t\tthis.setRunState(key, createRunState('running', {\n\t\t\terror: null,\n\t\t\terrors: EMPTY_ERRORS,\n\t\t\tmessage: undefined,\n\t\t\tpayload: args.payload,\n\t\t\tvalues: args.values,\n\t\t\tmetadata,\n\t\t\tstartedAt,\n\t\t}));\n\t\tthis.emitLifecycle('started', entry, context, key);\n\n\t\tlet result: TResult | undefined;\n\t\tlet failedError: unknown;\n\t\tconst action = entry.action as ActionDefinition<TPayload, TValues, TResult>;\n\t\ttry {\n\t\t\tif (action.run) {\n\t\t\t\tresult = await action.run(context);\n\t\t\t} else if (action.request) {\n\t\t\t\tconst runner = action.requestRunner ?? this.requestRunner;\n\t\t\t\tif (!runner) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Action request runner is not configured: ${action.id}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst request = resolveActionRequest(action.request, context);\n\t\t\t\tresult = await runner(request, context) as TResult;\n\t\t\t}\n\t\t\tif (!this.isCurrentRun(key, token)) return undefined;\n\n\t\t\tthis.setRunState(key, createRunState('succeeded', {\n\t\t\t\terror: null,\n\t\t\t\terrors: EMPTY_ERRORS,\n\t\t\t\tmessage: undefined,\n\t\t\t\tresult,\n\t\t\t\tpayload: args.payload,\n\t\t\t\tvalues: args.values,\n\t\t\t\tmetadata,\n\t\t\t\tstartedAt,\n\t\t\t\tcompletedAt: Date.now(),\n\t\t\t}));\n\t\t\tthis.emitLifecycle('succeeded', entry, context, key, { result });\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tif (!this.isCurrentRun(key, token)) return undefined;\n\t\t\tfailedError = error;\n\t\t\tconst parsedError = parseActionError(\n\t\t\t\terror,\n\t\t\t\t{ ...context, error },\n\t\t\t\taction.parseErrors ?? this.errorParser,\n\t\t\t);\n\t\t\tconst errors = parsedError.fieldErrors ?? EMPTY_ERRORS;\n\t\t\tthis.setRunState(key, createRunState('failed', {\n\t\t\t\terror,\n\t\t\t\terrors,\n\t\t\t\tmessage: parsedError.message,\n\t\t\t\tpayload: args.payload,\n\t\t\t\tvalues: args.values,\n\t\t\t\tmetadata,\n\t\t\t\tstartedAt,\n\t\t\t\tcompletedAt: Date.now(),\n\t\t\t}));\n\t\t\tthis.emitLifecycle('failed', entry, context, key, {\n\t\t\t\terror,\n\t\t\t\tmessage: parsedError.message,\n\t\t\t});\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tif (this.isCurrentRun(key, token)) {\n\t\t\t\tthis.abortControllers.delete(key);\n\t\t\t\tthis.emitLifecycle('settled', entry, context, key, {\n\t\t\t\t\tresult,\n\t\t\t\t\terror: failedError,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getEntriesForScope(scope?: string, includeGlobal = true): ActionEntry[] {\n\t\tconst resolvedScope = scope ? resolveScope(scope) : ACTION_GLOBAL_SCOPE;\n\t\tconst entries: ActionEntry[] = [];\n\n\t\tfor (const registration of this.snapshot.registrations) {\n\t\t\tconst isGlobal = registration.scope === ACTION_GLOBAL_SCOPE;\n\t\t\tif (isGlobal && !includeGlobal) continue;\n\t\t\tif (!isGlobal && registration.scope !== resolvedScope) continue;\n\n\t\t\tfor (const action of registration.actions) {\n\t\t\t\tentries.push({\n\t\t\t\t\tkey: createActionKey(registration.id, action.id),\n\t\t\t\t\tregistration,\n\t\t\t\t\taction,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn entries;\n\t}\n\n\tprivate resolveEntry<TPayload, TValues, TResult>(\n\t\tentry: ActionEntry,\n\t\targs: {\n\t\t\tsurface?: ActionSurfaceOptions['surface'];\n\t\t\tpayload?: TPayload;\n\t\t\tmetadata?: ActionMetadata;\n\t\t},\n\t): ResolvedAction<TPayload, TValues, TResult> {\n\t\tconst metadata = mergeMetadata(entry.action.metadata, args.metadata);\n\t\tconst context: ActionContext<TPayload> = {\n\t\t\tactionId: entry.action.id,\n\t\t\tscope: entry.registration.scope,\n\t\t\tsurface: args.surface,\n\t\t\tpayload: args.payload,\n\t\t\tmetadata,\n\t\t};\n\t\tconst runState = this.getRunState(entry.key);\n\t\tconst visible = this.isEntryVisible(entry, context);\n\t\tconst disabled = evaluatePredicate(\n\t\t\tentry.action.disabled as ActionDefinition<TPayload>['visible'],\n\t\t\tcontext,\n\t\t\tfalse,\n\t\t);\n\t\tconst action = entry.action as ActionDefinition<TPayload, TValues, TResult>;\n\n\t\treturn {\n\t\t\tkey: entry.key,\n\t\t\tid: entry.action.id,\n\t\t\tscope: entry.registration.scope,\n\t\t\tlabel: entry.action.label,\n\t\t\tsearchLabel: resolveSearchLabel(entry.action),\n\t\t\ticon: entry.action.icon,\n\t\t\tgroup: entry.action.group,\n\t\t\tplacement: entry.action.placement ?? 'auto',\n\t\t\torder: entry.action.order ?? entry.registration.order,\n\t\t\tsurface: args.surface,\n\t\t\tvisible,\n\t\t\tdisabled,\n\t\t\tstatus: runState.status,\n\t\t\tisIdle: runState.isIdle,\n\t\t\tisRunning: runState.isRunning,\n\t\t\tisSuccess: runState.isSuccess,\n\t\t\tisError: runState.isError,\n\t\t\terror: runState.error,\n\t\t\terrors: runState.errors,\n\t\t\tmessage: runState.message,\n\t\t\tresult: runState.result as TResult | undefined,\n\t\t\trunState,\n\t\t\tpayload: args.payload,\n\t\t\tvalues: runState.values as TValues | undefined,\n\t\t\tmetadata,\n\t\t\tstartedAt: runState.startedAt,\n\t\t\tcompletedAt: runState.completedAt,\n\t\t\tdefinition: action,\n\t\t\topen: (payload?: TPayload, openMetadata?: ActionMetadata) =>\n\t\t\t\tthis.openAction(\n\t\t\t\t\tentry.key,\n\t\t\t\t\tpayload ?? args.payload,\n\t\t\t\t\tmergeMetadata(args.metadata, openMetadata),\n\t\t\t\t),\n\t\t\texecute: (values?: TValues, payload?: TPayload, executeMetadata?: ActionMetadata) =>\n\t\t\t\tthis.executeAction<TPayload, TValues, TResult>(entry.key, {\n\t\t\t\t\tpayload: payload ?? args.payload,\n\t\t\t\t\tvalues,\n\t\t\t\t\tmetadata: mergeMetadata(args.metadata, executeMetadata),\n\t\t\t\t}),\n\t\t\tclose: () => this.closeActive(),\n\t\t\tsubmit: (values?: TValues) => this.submitActive<TValues, TResult>(values),\n\t\t};\n\t}\n\n\tprivate createRunContext<TPayload, TValues>(\n\t\tentry: ActionEntry,\n\t\targs: {\n\t\t\tpayload?: TPayload;\n\t\t\tvalues?: TValues;\n\t\t\tmetadata?: ActionMetadata;\n\t\t\tsignal: AbortSignal;\n\t\t},\n\t): ActionRunContext<TPayload, TValues> {\n\t\treturn {\n\t\t\taction: entry.action,\n\t\t\tactionId: entry.action.id,\n\t\t\tscope: entry.registration.scope,\n\t\t\tpayload: args.payload,\n\t\t\tvalues: args.values,\n\t\t\tmetadata: args.metadata,\n\t\t\tsignal: args.signal,\n\t\t};\n\t}\n\n\tprivate isEntryDisabled<TPayload>(\n\t\tentry: ActionEntry,\n\t\tpayload?: TPayload,\n\t\tmetadata?: ActionMetadata,\n\t): boolean {\n\t\tconst context: ActionContext<TPayload> = {\n\t\t\tactionId: entry.action.id,\n\t\t\tscope: entry.registration.scope,\n\t\t\tpayload,\n\t\t\tmetadata: mergeMetadata(entry.action.metadata, metadata),\n\t\t};\n\t\tif (!this.isEntryVisible(entry, context)) return true;\n\t\treturn evaluatePredicate(\n\t\t\tentry.action.disabled as ActionDefinition<TPayload>['disabled'],\n\t\t\tcontext,\n\t\t\tfalse,\n\t\t);\n\t}\n\n\tprivate isEntryVisible<TPayload>(\n\t\tentry: ActionEntry,\n\t\tcontext: ActionContext<TPayload>,\n\t): boolean {\n\t\tconst predicateVisible = evaluatePredicate(\n\t\t\tentry.action.visible as ActionDefinition<TPayload>['visible'],\n\t\t\tcontext,\n\t\t\ttrue,\n\t\t);\n\t\tif (!predicateVisible) return false;\n\n\t\tconst guardContext = {\n\t\t\t...context,\n\t\t\taction: entry.action,\n\t\t};\n\t\tconst permissions = toStringArray(entry.action.permission);\n\t\tif (permissions.length > 0) {\n\t\t\tif (!this.guards?.can) return false;\n\t\t\tif (!permissions.every((permission) =>\n\t\t\t\tthis.guards?.can?.(permission, guardContext),\n\t\t\t)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tconst roles = toStringArray(entry.action.roles);\n\t\tif (roles.length > 0) {\n\t\t\tif (!this.guards?.hasAnyRole) return false;\n\t\t\tif (!this.guards.hasAnyRole(roles, guardContext)) return false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tprivate emitLifecycle<TPayload, TValues, TResult>(\n\t\ttype: ActionLifecycleType,\n\t\tentry: ActionEntry,\n\t\tcontext: ActionRunContext<TPayload, TValues>,\n\t\tkey: string,\n\t\targs: { result?: TResult; error?: unknown; message?: string } = {},\n\t): void {\n\t\tconst action = entry.action as ActionDefinition<TPayload, TValues, TResult>;\n\t\tconst runState = this.getRunState(key);\n\t\tconst messageContext: ActionMessageContext<TPayload, TValues, TResult> = {\n\t\t\t...context,\n\t\t\taction: entry.action,\n\t\t\tstatus: runState.status,\n\t\t\terrors: runState.errors,\n\t\t\tresult: args.result,\n\t\t\terror: args.error,\n\t\t};\n\t\tconst message =\n\t\t\ttype === 'succeeded'\n\t\t\t\t? resolveActionMessage(action.successMessage, messageContext)\n\t\t\t\t: type === 'failed'\n\t\t\t\t\t? resolveActionMessage(action.errorMessage, messageContext) ?? args.message\n\t\t\t\t\t: undefined;\n\t\tconst event: ActionLifecycleEvent<TPayload, TValues, TResult> = {\n\t\t\t...messageContext,\n\t\t\ttype,\n\t\t\tkey,\n\t\t\tstatus: runState.status,\n\t\t\trunState,\n\t\t\tmessage,\n\t\t};\n\n\t\tif (type === 'started') action.onStart?.(event);\n\t\tif (type === 'succeeded') action.onAfterMutate?.(event);\n\t\tif (type === 'failed') action.onError?.(event);\n\t\tif (type === 'settled') action.onSettled?.(event);\n\n\t\tif (type === 'started') this.feedback?.onStart?.(event as ActionLifecycleEvent);\n\t\tif (type === 'succeeded') this.feedback?.onSuccess?.(event as ActionLifecycleEvent);\n\t\tif (type === 'failed') this.feedback?.onError?.(event as ActionLifecycleEvent);\n\t\tif (type === 'settled') this.feedback?.onSettled?.(event as ActionLifecycleEvent);\n\t}\n\n\tprivate findEntry(key: string): ActionEntry | null {\n\t\tfor (const registration of this.snapshot.registrations) {\n\t\t\tfor (const action of registration.actions) {\n\t\t\t\tif (createActionKey(registration.id, action.id) === key) {\n\t\t\t\t\treturn { key, registration, action };\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate getRunState(key: string): ActionRunState {\n\t\treturn this.snapshot.runStates[key] ?? createRunState('idle');\n\t}\n\n\tprivate setRunState(key: string, state: ActionRunState, shouldPublish = true): void {\n\t\tthis.runStates = {\n\t\t\t...this.runStates,\n\t\t\t[key]: {\n\t\t\t\t...state,\n\t\t\t\terrors: state.errors ?? EMPTY_ERRORS,\n\t\t\t},\n\t\t};\n\t\tif (shouldPublish) this.publish();\n\t}\n\n\tprivate abortAction(key: string): void {\n\t\tconst controller = this.abortControllers.get(key);\n\t\tif (!controller) return;\n\t\tconst previous = this.getRunState(key);\n\t\tthis.runTokens.set(key, (this.runTokens.get(key) ?? 0) + 1);\n\t\tcontroller.abort();\n\t\tthis.abortControllers.delete(key);\n\t\tthis.setRunState(key, createRunState('idle', {\n\t\t\t...previous,\n\t\t\terror: null,\n\t\t\terrors: EMPTY_ERRORS,\n\t\t\tcompletedAt: Date.now(),\n\t\t}), false);\n\t}\n\n\tprivate isCurrentRun(key: string, token: number): boolean {\n\t\treturn this.runTokens.get(key) === token;\n\t}\n\n\tprivate publish(): void {\n\t\tthis.version += 1;\n\t\tthis.snapshot = createSnapshot(\n\t\t\tthis.version,\n\t\t\tthis.registrations,\n\t\t\tthis.runStates,\n\t\t\tthis.active,\n\t\t);\n\t\tfor (const listener of this.listeners) listener();\n\t}\n}\n\nexport function createActionStore(): ActionStore {\n\treturn new ActionStore();\n}\n","import {\n\tcreateContext,\n\tuseContext,\n\tuseEffect,\n\tuseRef,\n\tuseSyncExternalStore,\n\ttype ReactNode,\n} from 'react';\n\nimport { createActionStore, type ActionStore } from './action-store';\nimport {\n\tACTION_GLOBAL_SCOPE,\n\ttype ActionProviderProps,\n\ttype ActionStoreSnapshot,\n} from './actions.types';\n\nexport const ActionStoreContext = createContext<ActionStore | null>(null);\nexport const ActionScopeContext = createContext<string | null>(null);\n\nexport function ActionProvider<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>({\n\tactions,\n\truntime,\n\tfeedback,\n\tguards,\n\tparseErrors,\n\trequestRunner,\n\tonOverlayOpenChange,\n\tonRunningChange,\n\tchildren,\n}: ActionProviderProps<TPayload, TValues, TResult>): ReactNode {\n\tconst storeRef = useRef<ActionStore | null>(null);\n\tif (!storeRef.current) {\n\t\tstoreRef.current = createActionStore();\n\t}\n\tconst store = storeRef.current;\n\tconst resolvedFeedback = feedback ?? runtime?.feedback;\n\tconst resolvedGuards = guards ?? runtime?.guards;\n\tconst resolvedParseErrors = parseErrors ?? runtime?.parseErrors;\n\tconst resolvedRequestRunner = requestRunner ?? runtime?.requestRunner;\n\tconst resolvedOverlayOpenChange =\n\t\tonOverlayOpenChange ?? runtime?.onOverlayOpenChange;\n\tconst resolvedRunningChange = onRunningChange ?? runtime?.onRunningChange;\n\n\tuseEffect(() => {\n\t\tstore.setOptions({\n\t\t\tfeedback: resolvedFeedback,\n\t\t\tguards: resolvedGuards,\n\t\t\tparseErrors: resolvedParseErrors,\n\t\t\trequestRunner: resolvedRequestRunner,\n\t\t});\n\t}, [\n\t\tresolvedFeedback,\n\t\tresolvedGuards,\n\t\tresolvedParseErrors,\n\t\tresolvedRequestRunner,\n\t\tstore,\n\t]);\n\n\tuseEffect(() => {\n\t\tif (!actions || actions.length === 0) return undefined;\n\t\treturn store.registerActions(actions, { scope: ACTION_GLOBAL_SCOPE });\n\t}, [actions, store]);\n\n\treturn (\n\t\t<ActionStoreContext.Provider value={store}>\n\t\t\t<ActionScopeContext.Provider value={ACTION_GLOBAL_SCOPE}>\n\t\t\t\t<ActionProviderStateEffects\n\t\t\t\t\tstore={store}\n\t\t\t\t\tonOverlayOpenChange={resolvedOverlayOpenChange}\n\t\t\t\t\tonRunningChange={resolvedRunningChange}\n\t\t\t\t/>\n\t\t\t\t{children}\n\t\t\t</ActionScopeContext.Provider>\n\t\t</ActionStoreContext.Provider>\n\t);\n}\n\ninterface ActionProviderStateEffectsProps {\n\tstore: ActionStore;\n\tonOverlayOpenChange?: (\n\t\topen: boolean,\n\t\tsnapshot: ActionStoreSnapshot,\n\t) => void;\n\tonRunningChange?: (\n\t\trunning: boolean,\n\t\tsnapshot: ActionStoreSnapshot,\n\t) => void;\n}\n\nfunction ActionProviderStateEffects({\n\tstore,\n\tonOverlayOpenChange,\n\tonRunningChange,\n}: ActionProviderStateEffectsProps) {\n\tconst snapshot = useSyncExternalStore(\n\t\tstore.subscribe,\n\t\tstore.getSnapshot,\n\t\tstore.getSnapshot,\n\t);\n\tconst isOverlayOpen = snapshot.active !== null;\n\tconst isRunning = Object.values(snapshot.runStates).some((state) => state.isRunning);\n\tconst previousOverlayOpenRef = useRef(isOverlayOpen);\n\tconst previousRunningRef = useRef(isRunning);\n\tconst onOverlayOpenChangeRef = useRef(onOverlayOpenChange);\n\tconst onRunningChangeRef = useRef(onRunningChange);\n\n\tuseEffect(() => {\n\t\tonOverlayOpenChangeRef.current = onOverlayOpenChange;\n\t}, [onOverlayOpenChange]);\n\n\tuseEffect(() => {\n\t\tonRunningChangeRef.current = onRunningChange;\n\t}, [onRunningChange]);\n\n\tuseEffect(() => {\n\t\tif (previousOverlayOpenRef.current === isOverlayOpen) return;\n\t\tpreviousOverlayOpenRef.current = isOverlayOpen;\n\t\tonOverlayOpenChangeRef.current?.(isOverlayOpen, snapshot);\n\t}, [isOverlayOpen, snapshot]);\n\n\tuseEffect(() => {\n\t\tif (previousRunningRef.current === isRunning) return;\n\t\tpreviousRunningRef.current = isRunning;\n\t\tonRunningChangeRef.current?.(isRunning, snapshot);\n\t}, [isRunning, snapshot]);\n\n\treturn null;\n}\n\nexport function useActionStore(): ActionStore {\n\tconst store = useContext(ActionStoreContext);\n\tif (!store) {\n\t\tthrow new Error('Action hooks must be used inside <ActionProvider>.');\n\t}\n\treturn store;\n}\n","import { useContext, useEffect, useId, useMemo, useSyncExternalStore } from 'react';\n\nimport { ActionScopeContext, useActionStore } from './action-provider';\nimport {\n\tACTION_GLOBAL_SCOPE,\n\ttype ActionDefinition,\n\ttype ActionRegistrationOptions,\n\ttype ActionStoreSnapshot,\n\ttype ActionSurfaceOptions,\n\ttype ResolvedAction,\n\ttype UseLocalActionOptions,\n\ttype UseActionOptions,\n} from './actions.types';\n\nexport function useActionScope(): string {\n\treturn useContext(ActionScopeContext) ?? ACTION_GLOBAL_SCOPE;\n}\n\nexport function useActionSnapshot(): ActionStoreSnapshot {\n\tconst store = useActionStore();\n\treturn useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);\n}\n\nexport function useRegisterActions<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(\n\tactions: readonly ActionDefinition<TPayload, TValues, TResult>[],\n\toptions: ActionRegistrationOptions = {},\n): void {\n\tconst store = useActionStore();\n\tconst inheritedScope = useActionScope();\n\tconst scope = options.scope ?? inheritedScope;\n\n\tuseEffect(() => {\n\t\tif (actions.length === 0) return undefined;\n\t\treturn store.registerActions(actions, { scope });\n\t}, [actions, scope, store]);\n}\n\nexport function useActionSurface<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(\n\toptions: ActionSurfaceOptions<TPayload>,\n): ResolvedAction<TPayload, TValues, TResult>[] {\n\tconst store = useActionStore();\n\tconst inheritedScope = useActionScope();\n\tconst scope = options.scope ?? inheritedScope;\n\tconst { surface, payload, metadata, includeGlobal } = options;\n\n\tuseActionSnapshot();\n\n\treturn store.selectSurfaceActions<TPayload, TValues, TResult>({\n\t\tsurface,\n\t\tpayload,\n\t\tmetadata,\n\t\tincludeGlobal,\n\t\tscope,\n\t});\n}\n\nexport function useAction<TPayload = unknown, TValues = unknown, TResult = unknown>(\n\tactionId: string,\n\toptions: UseActionOptions<TPayload> = {},\n): ResolvedAction<TPayload, TValues, TResult> | null {\n\tconst store = useActionStore();\n\tconst inheritedScope = useActionScope();\n\tconst scope = options.scope ?? inheritedScope;\n\tconst { payload, metadata, includeGlobal } = options;\n\n\tuseActionSnapshot();\n\n\treturn store.selectAction<TPayload, TValues, TResult>(actionId, {\n\t\tpayload,\n\t\tmetadata,\n\t\tincludeGlobal,\n\t\tscope,\n\t});\n}\n\nexport function useLocalAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(\n\tdefinition: ActionDefinition<TPayload, TValues, TResult>,\n\toptions: UseLocalActionOptions<TPayload> = {},\n): ResolvedAction<TPayload, TValues, TResult> | null {\n\tconst inheritedScope = useActionScope();\n\tconst localId = useId();\n\tconst scope = options.scope ?? `${inheritedScope}:local:${localId}`;\n\tconst actions = useMemo(() => [definition], [definition]);\n\n\tuseRegisterActions(actions, { scope });\n\n\treturn useAction<TPayload, TValues, TResult>(definition.id, {\n\t\t...options,\n\t\tscope,\n\t\tincludeGlobal: false,\n\t});\n}\n\nexport function useActiveAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(): ResolvedAction<TPayload, TValues, TResult> | null {\n\tconst store = useActionStore();\n\tuseActionSnapshot();\n\n\treturn store.getActiveAction<TPayload, TValues, TResult>();\n}\n","import { type ReactNode } from 'react';\n\nimport { ActionScopeContext } from './action-provider';\nimport { useRegisterActions } from './hooks';\nimport { ACTION_GLOBAL_SCOPE, type ActionScopeProps } from './actions.types';\n\nexport function ActionScope<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>({\n\tscope = ACTION_GLOBAL_SCOPE,\n\tactions,\n\tchildren,\n}: ActionScopeProps<TPayload, TValues, TResult>): ReactNode {\n\tuseRegisterActions(actions, { scope });\n\n\treturn (\n\t\t<ActionScopeContext.Provider value={scope}>\n\t\t\t{children}\n\t\t</ActionScopeContext.Provider>\n\t);\n}\n","import type { ActionOverlayStrings } from './actions.types';\n\nexport const defaultActionOverlayStrings: ActionOverlayStrings = {\n\tconfirm: 'Confirm',\n\tcancel: 'Cancel',\n};\n","import { type ReactNode } from 'react';\n\nimport {\n\tActionDialog,\n\tActionDrawer,\n\tConfirmDialog,\n\ttype OverlayButtonTone,\n\ttype DrawerDirection,\n\ttype OverlaySize,\n\ttype OverlayTone,\n} from '../../components/features/overlays';\nimport { useStrings } from '../../lib/strings';\n\nimport { resolveActionMessage } from './action-store';\nimport { defaultActionOverlayStrings } from './actions.strings';\nimport { useActiveAction } from './hooks';\nimport type {\n\tActionDrawerDirection,\n\tActionOverlayOutletProps,\n\tActionOverlaySize,\n\tActionTone,\n} from './actions.types';\n\nfunction mapTone(tone?: ActionTone): OverlayTone {\n\tif (tone === 'primary' || tone === 'secondary') return 'neutral';\n\treturn tone ?? 'neutral';\n}\n\nfunction mapButtonTone(tone?: ActionTone): OverlayButtonTone {\n\tif (tone === 'destructive') return 'destructive';\n\tif (tone === 'warning') return 'warning';\n\tif (tone === 'success') return 'success';\n\treturn 'primary';\n}\n\nfunction mapSize(size?: ActionOverlaySize): OverlaySize {\n\treturn size ?? 'lg';\n}\n\nfunction mapDirection(direction?: ActionDrawerDirection): DrawerDirection {\n\treturn direction ?? 'right';\n}\n\nexport function ActionOverlayOutlet({\n\tstrings: stringsProp,\n}: ActionOverlayOutletProps): ReactNode {\n\tconst active = useActiveAction();\n\tconst strings = useStrings(defaultActionOverlayStrings, stringsProp);\n\n\tif (!active) return null;\n\n\tconst modality = active.definition.modality;\n\tif (!modality || modality === 'none') return null;\n\n\tconst messageContext = {\n\t\taction: active.definition,\n\t\tactionId: active.id,\n\t\tscope: active.scope,\n\t\tpayload: active.payload,\n\t\tvalues: active.values,\n\t\tmetadata: active.metadata,\n\t\tstatus: active.status,\n\t\terrors: active.errors,\n\t\tresult: active.result,\n\t\terror: active.error,\n\t};\n\tconst title = resolveActionMessage(modality.title, messageContext);\n\tconst description = resolveActionMessage(modality.description, messageContext);\n\tconst confirm = resolveActionMessage(modality.confirmLabel, messageContext) ?? strings.confirm;\n\tconst cancel = resolveActionMessage(modality.cancelLabel, messageContext) ?? strings.cancel;\n\tconst alertMessage = resolveActionMessage(modality.alertMessage, messageContext);\n\tconst overlayTone = mapTone(modality.tone);\n\tconst confirmTone = mapButtonTone(modality.tone);\n\tconst isEmphasized = overlayTone !== 'neutral';\n\tconst emphasis = modality.emphasis ?? isEmphasized;\n\tconst showIcon = modality.showIcon ?? isEmphasized;\n\tconst closeOnBackdropClick =\n\t\tmodality.closeOnBackdropClick ?? (modality.type === 'alert' ? false : true);\n\n\tconst content = modality.render?.({\n\t\taction: active.definition,\n\t\tactionId: active.id,\n\t\tscope: active.scope,\n\t\tpayload: active.payload,\n\t\tvalues: active.values,\n\t\tmetadata: active.metadata,\n\t\tformId: modality.formId,\n\t\tstatus: active.status,\n\t\tisIdle: active.isIdle,\n\t\tisRunning: active.isRunning,\n\t\tisSuccess: active.isSuccess,\n\t\tisError: active.isError,\n\t\tresult: active.result,\n\t\terror: active.error,\n\t\terrors: active.errors,\n\t\tclose: active.close,\n\t\tsubmit: (values) => active.submit(values),\n\t\tgetFormProps: (options) => ({\n\t\t\tid: modality.formId,\n\t\t\tonSubmit: async (event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst values = options?.resolveValues\n\t\t\t\t\t? await options.resolveValues(new FormData(event.currentTarget), event)\n\t\t\t\t\t: undefined;\n\t\t\t\ttry {\n\t\t\t\t\tawait active.submit(values);\n\t\t\t\t} catch {\n\t\t\t\t\t// The runtime records submission errors for the form and feedback.\n\t\t\t\t\t// Native submit events do not have a promise consumer.\n\t\t\t\t}\n\t\t\t},\n\t\t}),\n\t});\n\n\tconst commonProps = {\n\t\topen: true,\n\t\tonOpenChange: (open: boolean) => {\n\t\t\tif (!open) active.close();\n\t\t},\n\t\ttitle,\n\t\tdescription,\n\t\tvisuallyHideHeader: modality.visuallyHideHeader,\n\t\tclassName: modality.className,\n\t\tcontentClassName: modality.contentClassName,\n\t\tinitialFocusRef: modality.initialFocusRef,\n\t\tcloseOnEscape: modality.closeOnEscape,\n\t\tisLoading: active.isRunning,\n\t\tshowCancel: modality.showCancel ?? true,\n\t\tshowConfirm: modality.showConfirm ?? true,\n\t\tformId: modality.formId,\n\t\tfooter: modality.footer,\n\t\tonCancel: active.close,\n\t\tonAsyncConfirm: modality.formId\n\t\t\t? undefined\n\t\t\t: async () => {\n\t\t\t\t\tawait active.submit();\n\t\t\t\t},\n\t\tcloseOnAsyncComplete: false,\n\t\tconfirmTone,\n\t\tconfirmStyle: modality.confirmStyle,\n\t\tcloseOnBackdropClick,\n\t\tstrings: {\n\t\t\tconfirm,\n\t\t\tcancel,\n\t\t},\n\t};\n\n\tif (modality.type === 'alert') {\n\t\treturn (\n\t\t\t<ConfirmDialog\n\t\t\t\t{...commonProps}\n\t\t\t\ttone={overlayTone}\n\t\t\t\tshowIcon={showIcon}\n\t\t\t\talertMessage={alertMessage}\n\t\t\t\tdestructive={overlayTone === 'destructive'}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</ConfirmDialog>\n\t\t);\n\t}\n\n\tif (modality.type === 'drawer') {\n\t\treturn (\n\t\t\t<ActionDrawer\n\t\t\t\t{...commonProps}\n\t\t\t\ttone={overlayTone}\n\t\t\t\temphasis={emphasis}\n\t\t\t\tshowIcon={showIcon}\n\t\t\t\talertMessage={alertMessage}\n\t\t\t\twidth={mapSize(modality.size)}\n\t\t\t\tdirection={mapDirection(modality.drawerDirection)}\n\t\t\t\tshowFooter={modality.showFooter ?? true}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</ActionDrawer>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ActionDialog\n\t\t\t{...commonProps}\n\t\t\ttone={overlayTone}\n\t\t\temphasis={emphasis}\n\t\t\tshowIcon={showIcon}\n\t\t\talertMessage={alertMessage}\n\t\t\tsize={mapSize(modality.size)}\n\t\t>\n\t\t\t{content}\n\t\t</ActionDialog>\n\t);\n}\n","import { createElement } from 'react';\n\nimport type {\n\tActionDefinition,\n\tActionButtonStyle,\n\tActionTone,\n\tActionMetadata,\n\tActionModalityConfig,\n\tActionRequestRunner,\n\tResolvedAction,\n\tResolvedActionRequest,\n} from './actions.types';\n\nexport interface ActionHttpErrorOptions {\n\tstatus: number;\n\tstatusText: string;\n\tbody: unknown;\n\tresponse: Response;\n}\n\nexport class ActionHttpError extends Error {\n\tstatus: number;\n\tstatusText: string;\n\tbody: unknown;\n\tresponse: Response;\n\terrors?: unknown;\n\n\tconstructor({ status, statusText, body, response }: ActionHttpErrorOptions) {\n\t\tsuper(statusText || `Request failed with status ${status}`);\n\t\tthis.name = 'ActionHttpError';\n\t\tthis.status = status;\n\t\tthis.statusText = statusText;\n\t\tthis.body = body;\n\t\tthis.response = response;\n\t\tthis.errors =\n\t\t\tbody && typeof body === 'object' && 'errors' in body\n\t\t\t\t? (body as { errors?: unknown }).errors\n\t\t\t\t: undefined;\n\t}\n}\n\nexport interface CreateHttpActionRunnerOptions {\n\tbaseUrl?: string;\n\tfetcher?: typeof fetch;\n\tparseResponse?: (response: Response) => Promise<unknown>;\n}\n\nasync function defaultParseResponse(response: Response): Promise<unknown> {\n\tif (response.status === 204) return undefined;\n\tconst contentType = response.headers.get('content-type') ?? '';\n\tif (contentType.includes('application/json')) return response.json();\n\treturn response.text();\n}\n\nfunction resolveUrlTarget(request: ResolvedActionRequest): string | undefined {\n\tif (request.target?.type === 'url') return request.target.url;\n\treturn undefined;\n}\n\nfunction joinUrl(baseUrl: string | undefined, url: string | undefined): string {\n\tif (!url) {\n\t\tthrow new Error('Action request requires a url.');\n\t}\n\tif (!baseUrl) return url;\n\treturn new URL(url, baseUrl).toString();\n}\n\nfunction serializeBody(data: unknown): BodyInit | undefined {\n\tif (data === undefined || data === null) return undefined;\n\tif (\n\t\ttypeof FormData !== 'undefined' && data instanceof FormData ||\n\t\ttypeof URLSearchParams !== 'undefined' && data instanceof URLSearchParams ||\n\t\ttypeof Blob !== 'undefined' && data instanceof Blob\n\t) {\n\t\treturn data;\n\t}\n\tif (typeof data === 'string') return data;\n\treturn JSON.stringify(data);\n}\n\nexport function createHttpActionRunner<TResult = unknown>({\n\tbaseUrl,\n\tfetcher = fetch,\n\tparseResponse = defaultParseResponse,\n}: CreateHttpActionRunnerOptions = {}): ActionRequestRunner<TResult> {\n\treturn async (request, context) => {\n\t\tconst method = request.method.toUpperCase();\n\t\tconst body = method === 'GET' ? undefined : serializeBody(request.data);\n\t\tconst isFormDataBody = typeof FormData !== 'undefined' && body instanceof FormData;\n\t\tconst headers = {\n\t\t\t...(body && !isFormDataBody ? { 'Content-Type': 'application/json' } : {}),\n\t\t\t...request.headers,\n\t\t};\n\t\tconst response = await fetcher(joinUrl(baseUrl, resolveUrlTarget(request)), {\n\t\t\t...(request.options as RequestInit | undefined),\n\t\t\tmethod,\n\t\t\theaders,\n\t\t\tbody,\n\t\t\tsignal: context.signal,\n\t\t});\n\t\tconst parsed = await parseResponse(response);\n\t\tif (!response.ok) {\n\t\t\tthrow new ActionHttpError({\n\t\t\t\tstatus: response.status,\n\t\t\t\tstatusText: response.statusText,\n\t\t\t\tbody: parsed,\n\t\t\t\tresponse,\n\t\t\t});\n\t\t}\n\t\treturn parsed as TResult;\n\t};\n}\n\nexport function defineAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(\n\tdefinition: ActionDefinition<TPayload, TValues, TResult>,\n): ActionDefinition<TPayload, TValues, TResult> {\n\treturn definition;\n}\n\nexport function defineDeleteAction<\n\tTPayload = unknown,\n\tTResult = unknown,\n>(\n\tdefinition: Omit<ActionDefinition<TPayload, undefined, TResult>, 'modality'> & {\n\t\tmodality: Omit<\n\t\t\tActionModalityConfig<TPayload, undefined, TResult>,\n\t\t\t'type' | 'tone'\n\t\t> & Partial<Pick<ActionModalityConfig<TPayload, undefined, TResult>, 'type' | 'tone'>>;\n\t},\n): ActionDefinition<TPayload, undefined, TResult> {\n\treturn {\n\t\t...definition,\n\t\ttone: definition.tone ?? 'destructive',\n\t\tmodality: {\n\t\t\ttype: 'alert',\n\t\t\ttone: 'destructive',\n\t\t\t...definition.modality,\n\t\t},\n\t};\n}\n\nexport function defineFormAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(\n\tdefinition: Omit<ActionDefinition<TPayload, TValues, TResult>, 'modality'> & {\n\t\tmodality: Omit<\n\t\t\tActionModalityConfig<TPayload, TValues, TResult>,\n\t\t\t'type'\n\t\t> & Partial<Pick<ActionModalityConfig<TPayload, TValues, TResult>, 'type'>>;\n\t},\n): ActionDefinition<TPayload, TValues, TResult> {\n\treturn {\n\t\t...definition,\n\t\tmodality: {\n\t\t\ttype: 'dialog',\n\t\t\t...definition.modality,\n\t\t},\n\t};\n}\n\nexport function defineSilentAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(\n\tdefinition: Omit<ActionDefinition<TPayload, TValues, TResult>, 'modality'>,\n): ActionDefinition<TPayload, TValues, TResult> {\n\treturn {\n\t\t...definition,\n\t\tmodality: 'none',\n\t};\n}\n\ntype ActionPresentationSource = {\n\tdefinition: {\n\t\ttone?: string;\n\t\tbuttonStyle?: string;\n\t\tmodality?: 'none' | {\n\t\t\ttone?: string;\n\t\t};\n\t};\n};\ntype ActionLabelSource = {\n\tid: string;\n\tsearchLabel: string;\n};\n\nfunction getActionTone(action: ActionPresentationSource): ActionTone | undefined {\n\tconst modalityTone =\n\t\taction.definition.modality && action.definition.modality !== 'none'\n\t\t\t? action.definition.modality.tone\n\t\t\t: undefined;\n\tconst tone = action.definition.tone ?? modalityTone;\n\tif (tone === 'destructive') return 'destructive' as const;\n\tif (tone === 'warning') return 'warning';\n\tif (tone === 'success') return 'success';\n\tif (tone === 'info') return 'info';\n\tif (tone === 'neutral') return 'neutral';\n\tif (tone === 'primary') return 'primary';\n\tif (tone === 'secondary') return 'secondary';\n\treturn undefined;\n}\n\nfunction getActionButtonStyle(action: ActionPresentationSource): ActionButtonStyle | undefined {\n\tconst style = action.definition.buttonStyle;\n\tif (style === 'solid' || style === 'outline' || style === 'ghost' || style === 'link') {\n\t\treturn style;\n\t}\n\treturn undefined;\n}\n\nfunction getActionLabel(action: ActionLabelSource): string {\n\treturn action.searchLabel || action.id;\n}\n\nexport function toPageAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(action: ResolvedAction<TPayload, TValues, TResult>) {\n\treturn {\n\t\tid: action.id,\n\t\tlabel: action.label,\n\t\tonClick: () => action.open(),\n\t\tdisabled: action.disabled,\n\t\tloading: action.isRunning,\n\t\ticon: action.icon,\n\t\ttone: getActionTone(action),\n\t\tbuttonStyle: getActionButtonStyle(action),\n\t\tvisible: action.visible,\n\t\tgroup: action.group,\n\t\tplacement: action.placement,\n\t};\n}\n\nexport function toMenuAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(action: ResolvedAction<TPayload, TValues, TResult>) {\n\treturn {\n\t\tid: action.id,\n\t\tlabel: getActionLabel(action),\n\t\tonClick: () => action.open(),\n\t\tdisabled: action.disabled || action.isRunning,\n\t\tvisible: action.visible,\n\t\tgroup: action.group,\n\t\ticon: action.icon,\n\t\ttone: getActionTone(action) ?? 'secondary',\n\t\tbuttonStyle: getActionButtonStyle(action),\n\t};\n}\n\nexport function toTableAction<TData = unknown>(action: ResolvedAction<TData>) {\n\tconst disabled = action.disabled || action.isRunning;\n\treturn {\n\t\tid: action.id,\n\t\tlabel: getActionLabel(action),\n\t\tonClick: (row: TData) => action.open(row),\n\t\t// DataTable reads `disabled` and `visible`; the predicates remain for\n\t\t// existing custom renderers.\n\t\tdisabled,\n\t\tvisible: action.visible,\n\t\tisDisabled: () => disabled,\n\t\tisVisible: () => action.visible,\n\t\ticon: action.icon ? createElement(action.icon, { className: 'size-4' }) : undefined,\n\t\ttone: getActionTone(action) ?? 'secondary',\n\t\tbuttonStyle: getActionButtonStyle(action),\n\t};\n}\n\nexport function toCommandAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(\n\taction: ResolvedAction<TPayload, TValues, TResult>,\n\tmetadata?: ActionMetadata,\n) {\n\treturn {\n\t\tid: action.id,\n\t\tlabel: getActionLabel(action),\n\t\tgroup: action.group,\n\t\tdisabled: action.disabled || action.isRunning,\n\t\ticon: action.icon,\n\t\tonSelect: () => action.open(undefined, metadata),\n\t};\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"actions.js","names":["ActionDrawer","ActionDialog","ConfirmDialog","ACTION_GLOBAL_SCOPE","EMPTY_ERRORS","nextRegistrationId","createRunState","state","status","mergeMetadata","base","override","createSnapshot","registrations","runStates","active","resolveScope","scope","createActionKey","registrationId","actionId","getDefaultSurfaces","action","evaluatePredicate","predicate","fallback","context","resolveSearchLabel","toStringArray","value","isActionFieldErrors","item","child","normalizeParsedError","parsed","maybeParsed","extractActionFieldErrors","error","resolveRequestValue","maybeErrors","result","key","resolveActionMessage","message","resolveActionRequest","target","request","parseActionError","parser","ActionStore","listener","feedback","shouldPublish","options","actions","registration","removedKeys","entries","entry","resolved","a","b","index","payload","metadata","args","token","abortController","startedAt","failedError","runner","parsedError","errors","resolvedScope","isGlobal","includeGlobal","runState","visible","disabled","openMetadata","executeMetadata","values","guardContext","permissions","permission","roles","messageContext","type","event","controller","previous","createActionStore","ActionStoreContext","createContext","ActionScopeContext","ActionProvider","storeRef","useRef","store","resolvedFeedback","runtime","resolvedGuards","guards","resolvedParseErrors","parseErrors","resolvedRequestRunner","requestRunner","resolvedOverlayOpenChange","onOverlayOpenChange","resolvedRunningChange","onRunningChange","useEffect","ActionProviderStateEffects","children","snapshot","useSyncExternalStore","isOverlayOpen","isRunning","previousOverlayOpenRef","previousRunningRef","onOverlayOpenChangeRef","onRunningChangeRef","useActionStore","useContext","useActionScope","useActionSnapshot","useRegisterActions","inheritedScope","useActionSurface","useAction","useLocalAction","localId","useId","useMemo","definition","useActiveAction","ActionScope","defaultActionOverlayStrings","mapTone","tone","mapButtonTone","mapSize","size","mapDirection","direction","ActionOverlayOutlet","stringsProp","strings","useStrings","modality","title","description","confirm","cancel","alertMessage","overlayTone","confirmTone","isEmphasized","emphasis","showIcon","closeOnBackdropClick","content","commonProps","open","ActionHttpError","statusText","body","response","defaultParseResponse","resolveUrlTarget","joinUrl","url","baseUrl","serializeBody","data","createHttpActionRunner","method","isFormDataBody","headers","fetcher","parseResponse","defineAction","defineDeleteAction","defineFormAction","defineSilentAction","getActionTone","modalityTone","getActionButtonStyle","style","getActionLabel","toPageAction","toPageHeaderAction","toMenuAction","toTableAction","row","createElement","toCommandAction"],"sources":["../../src/services/actions/actions.types.ts","../../src/services/actions/action-store.ts","../../src/services/actions/action-provider.tsx","../../src/services/actions/hooks.ts","../../src/services/actions/action-scope.tsx","../../src/services/actions/actions.strings.ts","../../src/services/actions/action-overlay-outlet.tsx","../../src/services/actions/action-adapters.ts"],"sourcesContent":["import type {\n\tComponentType,\n\tFormEvent,\n\tFormEventHandler,\n\tReactNode,\n\tRefObject,\n} from 'react';\n\nimport type { StringsProp } from '../../lib/strings';\nimport type { SemanticTone } from '../../lib/component-vocabulary';\nimport type { ActionButtonStyle, ActionPresentation } from '../../lib/action-presentation';\n\nexport type { ActionButtonStyle } from '../../lib/action-presentation';\n\nexport const ACTION_GLOBAL_SCOPE = '__global__';\n\nexport type ActionSurface =\n\t| 'page'\n\t| 'table'\n\t| 'table-row'\n\t| 'card'\n\t| 'command'\n\t| (string & {});\n\nexport type ActionPlacement = 'auto' | 'inline' | 'menu';\nexport type ActionModalityType = 'alert' | 'dialog' | 'drawer';\nexport type ActionTone = SemanticTone;\nexport type ActionStatus = 'idle' | 'running' | 'succeeded' | 'failed';\nexport type ActionOverlaySize =\n\t| 'xs'\n\t| 'sm'\n\t| 'md'\n\t| 'lg'\n\t| 'xl'\n\t| '2xl'\n\t| '3xl'\n\t| '4xl'\n\t| '5xl'\n\t| 'full';\nexport type ActionDrawerDirection = 'left' | 'right' | 'top' | 'bottom';\nexport type ActionRequestMethod =\n\t| 'get'\n\t| 'post'\n\t| 'put'\n\t| 'patch'\n\t| 'delete';\n\nexport type ActionRequestTarget =\n\t| { type: 'url'; url: string }\n\t| { type: 'named'; name: string; params?: unknown };\n\nexport type ActionFieldErrors = Record<string, string | string[]>;\nexport type ActionMetadata = Record<string, unknown>;\ntype BivariantCallback<TArgs extends readonly unknown[], TResult> = {\n\tbivarianceHack(...args: TArgs): TResult;\n}['bivarianceHack'];\n\nexport interface ActionContext<TPayload = unknown> {\n\tactionId: string;\n\tscope: string;\n\tsurface?: ActionSurface;\n\tpayload: TPayload | undefined;\n\tmetadata?: ActionMetadata;\n}\n\nexport interface ActionGuardContext<TPayload = unknown>\n\textends ActionContext<TPayload> {\n\taction: ActionDefinition;\n}\n\nexport interface ActionMessageContext<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n> extends ActionContext<TPayload> {\n\taction: ActionDefinition;\n\tvalues: TValues | undefined;\n\tstatus?: ActionStatus;\n\terrors?: ActionFieldErrors;\n\tresult?: TResult;\n\terror?: unknown;\n}\n\nexport type ActionMessage<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n> =\n\t| string\n\t| BivariantCallback<\n\t\t\t[context: ActionMessageContext<TPayload, TValues, TResult>],\n\t\t\tstring | null | undefined\n\t >;\n\nexport interface ActionRunContext<TPayload = unknown, TValues = unknown>\n\textends ActionContext<TPayload> {\n\taction: ActionDefinition;\n\tvalues: TValues | undefined;\n\tsignal: AbortSignal;\n}\n\nexport interface ActionErrorParseContext<TPayload = unknown, TValues = unknown>\n\textends ActionRunContext<TPayload, TValues> {\n\terror: unknown;\n}\n\nexport interface ActionRenderContext<TPayload = unknown, TValues = unknown>\n\textends ActionContext<TPayload> {\n\taction: ActionDefinition;\n\tvalues: TValues | undefined;\n\tformId?: string;\n\tstatus: ActionStatus;\n\tisIdle: boolean;\n\tisRunning: boolean;\n\tisSuccess: boolean;\n\tisError: boolean;\n\tresult: unknown;\n\terror: unknown;\n\terrors: ActionFieldErrors;\n\tclose: () => void;\n\tsubmit: (values?: TValues) => Promise<unknown>;\n\tgetFormProps: (options?: ActionFormSubmitOptions<TValues>) => ActionFormProps;\n}\n\nexport interface ActionFormSubmitOptions<TValues = unknown> {\n\tresolveValues?: (\n\t\tformData: FormData,\n\t\tevent: FormEvent<HTMLFormElement>,\n\t) => TValues | Promise<TValues>;\n}\n\nexport interface ActionFormProps {\n\tid?: string;\n\tonSubmit: FormEventHandler<HTMLFormElement>;\n}\n\nexport type ActionRequestValue<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTValue = unknown,\n> =\n\t| TValue\n\t| BivariantCallback<\n\t\t\t[context: ActionRunContext<TPayload, TValues>],\n\t\t\tTValue\n\t >;\n\nexport interface ActionRequestConfig<\n\tTPayload = unknown,\n\tTValues = unknown,\n> {\n\tmethod: ActionRequestMethod;\n\ttarget?: ActionRequestValue<TPayload, TValues, ActionRequestTarget>;\n\tdata?: ActionRequestValue<TPayload, TValues, unknown>;\n\theaders?: ActionRequestValue<\n\t\tTPayload,\n\t\tTValues,\n\t\tRecord<string, string>\n\t>;\n\toptions?: ActionRequestValue<\n\t\tTPayload,\n\t\tTValues,\n\t\tRecord<string, unknown>\n\t>;\n}\n\nexport interface ResolvedActionRequest {\n\tmethod: ActionRequestMethod;\n\ttarget?: ActionRequestTarget;\n\tdata?: unknown;\n\theaders?: Record<string, string>;\n\toptions?: Record<string, unknown>;\n}\n\nexport type ActionRequestRunner<TResult = unknown> = BivariantCallback<\n\t[\n\t\trequest: ResolvedActionRequest,\n\t\tcontext: ActionRunContext,\n\t],\n\tTResult | Promise<TResult>\n>;\n\nexport interface ParsedActionError {\n\tfieldErrors?: ActionFieldErrors;\n\tmessage?: string;\n}\n\nexport type ActionErrorParser = BivariantCallback<\n\t[\n\t\terror: unknown,\n\t\tcontext: ActionErrorParseContext,\n\t],\n\tParsedActionError | ActionFieldErrors | string | null | undefined\n>;\n\nexport interface ActionModalityConfig<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n> {\n\ttype: ActionModalityType;\n\ttitle: ActionMessage<TPayload, TValues, TResult>;\n\tdescription?: ActionMessage<TPayload, TValues, TResult>;\n\tconfirmLabel?: ActionMessage<TPayload, TValues, TResult>;\n\tcancelLabel?: ActionMessage<TPayload, TValues, TResult>;\n\ttone?: ActionTone;\n\tsize?: ActionOverlaySize;\n\tdrawerDirection?: ActionDrawerDirection;\n\tformId?: string;\n\tshowCancel?: boolean;\n\tshowConfirm?: boolean;\n\tshowIcon?: boolean;\n\temphasis?: boolean;\n\tshowFooter?: boolean;\n\tvisuallyHideHeader?: boolean;\n\tclassName?: string;\n\tcontentClassName?: string;\n\tinitialFocusRef?: RefObject<HTMLElement>;\n\tcloseOnEscape?: boolean;\n\tcloseOnSuccess?: boolean;\n\tcloseOnBackdropClick?: boolean;\n\tconfirmStyle?: Extract<ActionButtonStyle, 'solid' | 'outline'>;\n\tfooter?: ReactNode;\n\talertMessage?: ActionMessage<TPayload, TValues, TResult>;\n\trender?: BivariantCallback<\n\t\t[context: ActionRenderContext<TPayload, TValues>],\n\t\tReactNode\n\t>;\n}\n\nexport type ActionPredicate<TPayload = unknown> =\n\t| boolean\n\t| BivariantCallback<[context: ActionContext<TPayload>], boolean>;\n\nexport type ActionPermission = string | readonly string[];\nexport type ActionRoles = string | readonly string[];\n\nexport interface ActionDefinition<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n> extends Omit<ActionPresentation, 'visible' | 'disabled'> {\n\tid: string;\n\tlabel: ReactNode;\n\tsearchLabel?: string;\n\ticon?: ComponentType<{ className?: string }>;\n\tsurfaces?: readonly ActionSurface[];\n\tgroup?: string;\n\tplacement?: ActionPlacement;\n\torder?: number;\n\tvisible?: ActionPredicate<TPayload>;\n\tdisabled?: ActionPredicate<TPayload>;\n\tpermission?: ActionPermission;\n\troles?: ActionRoles;\n\tmodality?: 'none' | ActionModalityConfig<TPayload, TValues, TResult>;\n\trequest?: ActionRequestConfig<TPayload, TValues>;\n\trequestRunner?: ActionRequestRunner<TResult>;\n\trun?: BivariantCallback<\n\t\t[context: ActionRunContext<TPayload, TValues>],\n\t\tTResult | Promise<TResult>\n\t>;\n\tparseErrors?: ActionErrorParser;\n\tsuccessMessage?: ActionMessage<TPayload, TValues, TResult>;\n\terrorMessage?: ActionMessage<TPayload, TValues, TResult>;\n\tonStart?: BivariantCallback<\n\t\t[event: ActionLifecycleEvent<TPayload, TValues, TResult>],\n\t\tvoid\n\t>;\n\tonAfterMutate?: BivariantCallback<\n\t\t[event: ActionLifecycleEvent<TPayload, TValues, TResult>],\n\t\tvoid\n\t>;\n\tonError?: BivariantCallback<\n\t\t[event: ActionLifecycleEvent<TPayload, TValues, TResult>],\n\t\tvoid\n\t>;\n\tonSettled?: BivariantCallback<\n\t\t[event: ActionLifecycleEvent<TPayload, TValues, TResult>],\n\t\tvoid\n\t>;\n\tmetadata?: ActionMetadata;\n}\n\nexport interface ActionRegistrationOptions {\n\tscope?: string;\n}\n\nexport interface ActionRegistration {\n\tid: string;\n\tscope: string;\n\torder: number;\n\tactions: readonly ActionDefinition[];\n}\n\nexport interface ActionSurfaceOptions<TPayload = unknown> {\n\tsurface: ActionSurface;\n\tscope?: string;\n\tincludeGlobal?: boolean;\n\tpayload?: TPayload;\n\tmetadata?: ActionMetadata;\n}\n\nexport interface UseActionOptions<TPayload = unknown> {\n\tscope?: string;\n\tincludeGlobal?: boolean;\n\tpayload?: TPayload;\n\tmetadata?: ActionMetadata;\n}\n\nexport interface ActionRunState {\n\tstatus: ActionStatus;\n\tisIdle: boolean;\n\tisRunning: boolean;\n\tisSuccess: boolean;\n\tisError: boolean;\n\terror: unknown;\n\terrors: ActionFieldErrors;\n\tmessage?: string;\n\tresult?: unknown;\n\tpayload?: unknown;\n\tvalues?: unknown;\n\tmetadata?: ActionMetadata;\n\tstartedAt?: number;\n\tcompletedAt?: number;\n}\n\nexport interface ActiveActionState {\n\tkey: string;\n\tactionId: string;\n\tscope: string;\n\tpayload?: unknown;\n\tvalues?: unknown;\n\tmetadata?: ActionMetadata;\n}\n\nexport interface ActionStoreSnapshot {\n\tversion: number;\n\tregistrations: readonly ActionRegistration[];\n\trunStates: Readonly<Record<string, ActionRunState>>;\n\tactive: ActiveActionState | null;\n}\n\nexport interface ResolvedAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n> {\n\tkey: string;\n\tid: string;\n\tscope: string;\n\tlabel: ReactNode;\n\tsearchLabel: string;\n\ticon?: ComponentType<{ className?: string }>;\n\tgroup?: string;\n\tplacement: ActionPlacement;\n\torder: number;\n\tsurface?: ActionSurface;\n\tvisible: boolean;\n\tdisabled: boolean;\n\tstatus: ActionStatus;\n\tisIdle: boolean;\n\tisRunning: boolean;\n\tisSuccess: boolean;\n\tisError: boolean;\n\terror: unknown;\n\terrors: ActionFieldErrors;\n\tmessage?: string;\n\tresult: TResult | undefined;\n\trunState: ActionRunState;\n\tpayload: TPayload | undefined;\n\tvalues: TValues | undefined;\n\tmetadata?: ActionMetadata;\n\tstartedAt?: number;\n\tcompletedAt?: number;\n\tdefinition: ActionDefinition<TPayload, TValues, TResult>;\n\topen: (payload?: TPayload, metadata?: ActionMetadata) => void;\n\texecute: (\n\t\tvalues?: TValues,\n\t\tpayload?: TPayload,\n\t\tmetadata?: ActionMetadata,\n\t) => Promise<TResult | undefined>;\n\tclose: () => void;\n\tsubmit: (values?: TValues) => Promise<TResult | undefined>;\n}\n\nexport type ActionLifecycleType = 'started' | 'succeeded' | 'failed' | 'settled';\n\nexport interface ActionLifecycleEvent<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n> extends ActionMessageContext<TPayload, TValues, TResult> {\n\ttype: ActionLifecycleType;\n\tkey: string;\n\tstatus: ActionStatus;\n\trunState: ActionRunState;\n\tmessage?: string;\n}\n\nexport interface ActionFeedbackHandlers {\n\tonStart?: (event: ActionLifecycleEvent) => void;\n\tonSuccess?: (event: ActionLifecycleEvent) => void;\n\tonError?: (event: ActionLifecycleEvent) => void;\n\tonSettled?: (event: ActionLifecycleEvent) => void;\n}\n\nexport interface ActionGuards {\n\tcan?: (\n\t\tpermission: string,\n\t\tcontext: ActionGuardContext,\n\t) => boolean;\n\thasAnyRole?: (\n\t\troles: readonly string[],\n\t\tcontext: ActionGuardContext,\n\t) => boolean;\n}\n\nexport interface ActionRuntimeGlue {\n\trequestRunner?: ActionRequestRunner;\n\tparseErrors?: ActionErrorParser;\n\tguards?: ActionGuards;\n\tfeedback?: ActionFeedbackHandlers;\n\tonOverlayOpenChange?: (\n\t\topen: boolean,\n\t\tsnapshot: ActionStoreSnapshot,\n\t) => void;\n\tonRunningChange?: (\n\t\trunning: boolean,\n\t\tsnapshot: ActionStoreSnapshot,\n\t) => void;\n}\n\nexport interface ActionProviderProps<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n> {\n\tactions?: readonly ActionDefinition<TPayload, TValues, TResult>[];\n\truntime?: ActionRuntimeGlue;\n\tfeedback?: ActionFeedbackHandlers;\n\tguards?: ActionGuards;\n\tparseErrors?: ActionErrorParser;\n\trequestRunner?: ActionRequestRunner;\n\tonOverlayOpenChange?: (\n\t\topen: boolean,\n\t\tsnapshot: ActionStoreSnapshot,\n\t) => void;\n\tonRunningChange?: (\n\t\trunning: boolean,\n\t\tsnapshot: ActionStoreSnapshot,\n\t) => void;\n\tchildren: ReactNode;\n}\n\nexport interface ActionScopeProps<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n> extends ActionRegistrationOptions {\n\tactions: readonly ActionDefinition<TPayload, TValues, TResult>[];\n\tchildren: ReactNode;\n}\n\nexport interface ActionOverlayStrings {\n\tconfirm: string;\n\tcancel: string;\n}\n\nexport interface ActionOverlayOutletProps {\n\tstrings?: StringsProp<ActionOverlayStrings>;\n}\n\nexport interface ActionEntry {\n\tkey: string;\n\tregistration: ActionRegistration;\n\taction: ActionDefinition;\n}\n\nexport interface UseLocalActionOptions<TPayload = unknown>\n\textends UseActionOptions<TPayload> {\n\tscope?: string;\n}\n","import {\n\tACTION_GLOBAL_SCOPE,\n\ttype ActionContext,\n\ttype ActionDefinition,\n\ttype ActionEntry,\n\ttype ActionErrorParseContext,\n\ttype ActionErrorParser,\n\ttype ActionFeedbackHandlers,\n\ttype ActionFieldErrors,\n\ttype ActionGuards,\n\ttype ActionLifecycleEvent,\n\ttype ActionLifecycleType,\n\ttype ActionMessage,\n\ttype ActionMessageContext,\n\ttype ActionMetadata,\n\ttype ActionRegistration,\n\ttype ActionRegistrationOptions,\n\ttype ActionRequestConfig,\n\ttype ActionRequestRunner,\n\ttype ActionRunContext,\n\ttype ActionRunState,\n\ttype ActionStatus,\n\ttype ParsedActionError,\n\ttype ResolvedActionRequest,\n\ttype ActionStoreSnapshot,\n\ttype ActionSurfaceOptions,\n\ttype ResolvedAction,\n\ttype UseActionOptions,\n} from './actions.types';\n\nconst EMPTY_ERRORS: ActionFieldErrors = Object.freeze({});\n\nlet nextRegistrationId = 0;\n\nfunction createRunState(\n\tstatus: ActionStatus,\n\tstate: Omit<\n\t\tPartial<ActionRunState>,\n\t\t'status' | 'isIdle' | 'isRunning' | 'isSuccess' | 'isError'\n\t> = {},\n): ActionRunState {\n\treturn {\n\t\t...state,\n\t\tstatus,\n\t\tisIdle: status === 'idle',\n\t\tisRunning: status === 'running',\n\t\tisSuccess: status === 'succeeded',\n\t\tisError: status === 'failed',\n\t\terror: state.error ?? null,\n\t\terrors: state.errors ?? EMPTY_ERRORS,\n\t};\n}\n\nfunction mergeMetadata(\n\tbase?: ActionMetadata,\n\toverride?: ActionMetadata,\n): ActionMetadata | undefined {\n\tif (!base) return override;\n\tif (!override) return base;\n\treturn { ...base, ...override };\n}\n\nfunction createSnapshot(\n\tversion: number,\n\tregistrations: readonly ActionRegistration[],\n\trunStates: Readonly<Record<string, ActionRunState>>,\n\tactive: ActionStoreSnapshot['active'],\n): ActionStoreSnapshot {\n\treturn Object.freeze({\n\t\tversion,\n\t\tregistrations: Object.freeze([...registrations]),\n\t\trunStates: Object.freeze({ ...runStates }),\n\t\tactive: active ? Object.freeze({ ...active }) : null,\n\t});\n}\n\nfunction resolveScope(scope?: string): string {\n\tconst trimmed = scope?.trim();\n\treturn trimmed ? trimmed : ACTION_GLOBAL_SCOPE;\n}\n\nfunction createActionKey(registrationId: string, actionId: string): string {\n\treturn `${registrationId}:${actionId}`;\n}\n\nfunction getDefaultSurfaces(action: ActionDefinition): readonly string[] {\n\treturn action.surfaces ?? ['page'];\n}\n\nfunction evaluatePredicate<TPayload>(\n\tpredicate: ActionDefinition<TPayload>['visible'],\n\tcontext: ActionContext<TPayload>,\n\tfallback: boolean,\n): boolean {\n\tif (predicate === undefined) return fallback;\n\tif (typeof predicate === 'function') return predicate(context);\n\treturn predicate;\n}\n\nfunction resolveSearchLabel(action: ActionDefinition): string {\n\tif (action.searchLabel) return action.searchLabel;\n\tif (typeof action.label === 'string') return action.label;\n\treturn action.id;\n}\n\nfunction toStringArray(value: string | readonly string[] | undefined): readonly string[] {\n\tif (!value) return [];\n\treturn Array.isArray(value) ? value : [value as string];\n}\n\nfunction isActionFieldErrors(value: unknown): value is ActionFieldErrors {\n\tif (!value || typeof value !== 'object' || Array.isArray(value)) return false;\n\treturn Object.values(value).every((item) =>\n\t\ttypeof item === 'string' ||\n\t\t(Array.isArray(item) && item.every((child) => typeof child === 'string')),\n\t);\n}\n\nfunction normalizeParsedError(\n\tparsed: ParsedActionError | ActionFieldErrors | string | null | undefined,\n\terror: unknown,\n): ParsedActionError {\n\tif (typeof parsed === 'string') return { message: parsed };\n\tif (parsed && typeof parsed === 'object') {\n\t\tif ('fieldErrors' in parsed || 'message' in parsed) {\n\t\t\tconst maybeParsed = parsed as ParsedActionError;\n\t\t\treturn {\n\t\t\t\tfieldErrors: maybeParsed.fieldErrors ?? extractActionFieldErrors(error),\n\t\t\t\tmessage: typeof maybeParsed.message === 'string' ? maybeParsed.message : undefined,\n\t\t\t};\n\t\t}\n\t\tif (isActionFieldErrors(parsed)) {\n\t\t\treturn { fieldErrors: parsed };\n\t\t}\n\t}\n\treturn { fieldErrors: extractActionFieldErrors(error) };\n}\n\nfunction resolveRequestValue<TPayload, TValues, TValue>(\n\tvalue:\n\t\t| TValue\n\t\t| ((context: ActionRunContext<TPayload, TValues>) => TValue)\n\t\t| undefined,\n\tcontext: ActionRunContext<TPayload, TValues>,\n): TValue | undefined {\n\tif (typeof value === 'function') {\n\t\treturn (value as (context: ActionRunContext<TPayload, TValues>) => TValue)(context);\n\t}\n\treturn value;\n}\n\nexport function extractActionFieldErrors(error: unknown): ActionFieldErrors {\n\tif (!error || typeof error !== 'object') return EMPTY_ERRORS;\n\tconst maybeErrors = (error as { errors?: unknown }).errors;\n\tif (!maybeErrors || typeof maybeErrors !== 'object' || Array.isArray(maybeErrors)) {\n\t\treturn EMPTY_ERRORS;\n\t}\n\n\tconst result: ActionFieldErrors = {};\n\tfor (const [key, value] of Object.entries(maybeErrors)) {\n\t\tif (typeof value === 'string') {\n\t\t\tresult[key] = value;\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(value) && value.every((item) => typeof item === 'string')) {\n\t\t\tresult[key] = value;\n\t\t}\n\t}\n\treturn Object.keys(result).length > 0 ? result : EMPTY_ERRORS;\n}\n\nexport function resolveActionMessage<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(\n\tmessage: ActionMessage<TPayload, TValues, TResult> | undefined,\n\tcontext: ActionMessageContext<TPayload, TValues, TResult>,\n): string | undefined {\n\tif (message === undefined) return undefined;\n\tif (typeof message === 'function') {\n\t\tconst resolved = message(context);\n\t\treturn resolved ?? undefined;\n\t}\n\treturn message;\n}\n\nexport function resolveActionRequest<TPayload = unknown, TValues = unknown>(\n\trequest: ActionRequestConfig<TPayload, TValues>,\n\tcontext: ActionRunContext<TPayload, TValues>,\n): ResolvedActionRequest {\n\tconst target = resolveRequestValue(request.target, context);\n\n\treturn {\n\t\tmethod: request.method,\n\t\ttarget,\n\t\tdata: resolveRequestValue(request.data, context),\n\t\theaders: resolveRequestValue(request.headers, context),\n\t\toptions: resolveRequestValue(request.options, context),\n\t};\n}\n\nexport function parseActionError<TPayload = unknown, TValues = unknown>(\n\terror: unknown,\n\tcontext: ActionErrorParseContext<TPayload, TValues>,\n\tparser?: ActionErrorParser,\n): ParsedActionError {\n\tconst parsed = parser?.(error, context as ActionErrorParseContext);\n\treturn normalizeParsedError(parsed, error);\n}\n\nexport class ActionStore {\n\tprivate registrations: ActionRegistration[] = [];\n\tprivate runStates: Record<string, ActionRunState> = {};\n\tprivate active: ActionStoreSnapshot['active'] = null;\n\tprivate version = 0;\n\tprivate snapshot: ActionStoreSnapshot = createSnapshot(0, [], {}, null);\n\tprivate readonly listeners = new Set<() => void>();\n\tprivate feedback: ActionFeedbackHandlers | undefined;\n\tprivate guards: ActionGuards | undefined;\n\tprivate errorParser: ActionErrorParser | undefined;\n\tprivate requestRunner: ActionRequestRunner | undefined;\n\tprivate readonly abortControllers = new Map<string, AbortController>();\n\tprivate readonly runTokens = new Map<string, number>();\n\n\tsubscribe = (listener: () => void): (() => void) => {\n\t\tthis.listeners.add(listener);\n\t\treturn () => this.listeners.delete(listener);\n\t};\n\n\tgetSnapshot = (): ActionStoreSnapshot => this.snapshot;\n\n\tsetFeedback(feedback?: ActionFeedbackHandlers): void {\n\t\tthis.feedback = feedback;\n\t}\n\n\tsetOptions(options: {\n\t\tfeedback?: ActionFeedbackHandlers;\n\t\tguards?: ActionGuards;\n\t\tparseErrors?: ActionErrorParser;\n\t\trequestRunner?: ActionRequestRunner;\n\t}): void {\n\t\tconst shouldPublish =\n\t\t\tthis.feedback !== options.feedback ||\n\t\t\tthis.guards !== options.guards ||\n\t\t\tthis.errorParser !== options.parseErrors ||\n\t\t\tthis.requestRunner !== options.requestRunner;\n\t\tthis.feedback = options.feedback;\n\t\tthis.guards = options.guards;\n\t\tthis.errorParser = options.parseErrors;\n\t\tthis.requestRunner = options.requestRunner;\n\t\tif (shouldPublish) this.publish();\n\t}\n\n\tregisterActions<TPayload = unknown, TValues = unknown, TResult = unknown>(\n\t\tactions: readonly ActionDefinition<TPayload, TValues, TResult>[],\n\t\toptions: ActionRegistrationOptions = {},\n\t): () => void {\n\t\tif (actions.length === 0) return () => undefined;\n\n\t\tconst registration: ActionRegistration = {\n\t\t\tid: `registration-${nextRegistrationId++}`,\n\t\t\tscope: resolveScope(options.scope),\n\t\t\torder: this.registrations.length,\n\t\t\tactions: actions as readonly ActionDefinition[],\n\t\t};\n\n\t\tthis.registrations = [...this.registrations, registration];\n\t\tthis.publish();\n\n\t\treturn () => {\n\t\t\tthis.registrations = this.registrations.filter((item) => item.id !== registration.id);\n\t\t\tconst removedKeys = registration.actions.map((action) =>\n\t\t\t\tcreateActionKey(registration.id, action.id),\n\t\t\t);\n\t\t\tfor (const key of removedKeys) {\n\t\t\t\tthis.abortAction(key);\n\t\t\t\tdelete this.runStates[key];\n\t\t\t}\n\t\t\tif (this.active && removedKeys.includes(this.active.key)) {\n\t\t\t\tthis.active = null;\n\t\t\t}\n\t\t\tthis.publish();\n\t\t};\n\t}\n\n\tselectSurfaceActions<TPayload = unknown, TValues = unknown, TResult = unknown>(\n\t\toptions: ActionSurfaceOptions<TPayload>,\n\t): ResolvedAction<TPayload, TValues, TResult>[] {\n\t\tconst entries = this.getEntriesForScope(options.scope, options.includeGlobal);\n\t\tconst result: ResolvedAction<TPayload, TValues, TResult>[] = [];\n\n\t\tfor (const entry of entries) {\n\t\t\tconst surfaces = getDefaultSurfaces(entry.action);\n\t\t\tif (!surfaces.includes(options.surface)) continue;\n\n\t\t\tconst resolved = this.resolveEntry<TPayload, TValues, TResult>(entry, {\n\t\t\t\tsurface: options.surface,\n\t\t\t\tpayload: options.payload,\n\t\t\t\tmetadata: options.metadata,\n\t\t\t});\n\t\t\tif (resolved.visible) result.push(resolved);\n\t\t}\n\n\t\treturn result.sort((a, b) => a.order - b.order || a.id.localeCompare(b.id));\n\t}\n\n\tselectAction<TPayload = unknown, TValues = unknown, TResult = unknown>(\n\t\tactionId: string,\n\t\toptions: UseActionOptions<TPayload> = {},\n\t): ResolvedAction<TPayload, TValues, TResult> | null {\n\t\tconst entries = this.getEntriesForScope(options.scope, options.includeGlobal);\n\t\tfor (let index = entries.length - 1; index >= 0; index -= 1) {\n\t\t\tconst entry = entries[index];\n\t\t\tif (entry.action.id !== actionId) continue;\n\t\t\tconst resolved = this.resolveEntry<TPayload, TValues, TResult>(entry, {\n\t\t\t\tpayload: options.payload,\n\t\t\t\tmetadata: options.metadata,\n\t\t\t});\n\t\t\treturn resolved.visible ? resolved : null;\n\t\t}\n\t\treturn null;\n\t}\n\n\tgetActiveAction<TPayload = unknown, TValues = unknown, TResult = unknown>():\n\t\t| ResolvedAction<TPayload, TValues, TResult>\n\t\t| null {\n\t\tconst active = this.snapshot.active;\n\t\tif (!active) return null;\n\t\tconst entry = this.findEntry(active.key);\n\t\tif (!entry) return null;\n\t\treturn this.resolveEntry<TPayload, TValues, TResult>(entry, {\n\t\t\tpayload: active.payload as TPayload | undefined,\n\t\t\tmetadata: active.metadata,\n\t\t});\n\t}\n\n\topenAction<TPayload = unknown>(key: string, payload?: TPayload, metadata?: ActionMetadata): void {\n\t\tconst entry = this.findEntry(key);\n\t\tif (!entry) return;\n\t\tif (this.isEntryDisabled(entry, payload, metadata)) return;\n\n\t\tif (!entry.action.modality || entry.action.modality === 'none') {\n\t\t\t// Event-driven opening has no promise consumer; failure is recorded and\n\t\t\t// delivered through lifecycle feedback. Direct execute() still rejects.\n\t\t\tvoid this.executeAction(key, { payload, metadata }).catch(() => {});\n\t\t\treturn;\n\t\t}\n\n\t\tthis.active = {\n\t\t\tkey,\n\t\t\tactionId: entry.action.id,\n\t\t\tscope: entry.registration.scope,\n\t\t\tpayload,\n\t\t\tmetadata,\n\t\t};\n\t\tthis.setRunState(key, createRunState('idle', {\n\t\t\terror: null,\n\t\t\terrors: EMPTY_ERRORS,\n\t\t\tmessage: undefined,\n\t\t\tpayload,\n\t\t\tvalues: undefined,\n\t\t\tmetadata: mergeMetadata(entry.action.metadata, metadata),\n\t\t}), false);\n\t\tthis.publish();\n\t}\n\n\tcloseActive(options: { abort?: boolean } = {}): void {\n\t\tconst active = this.active;\n\t\tif (!active) return;\n\t\tif (options.abort !== false) {\n\t\t\tthis.abortAction(active.key);\n\t\t}\n\t\tthis.active = null;\n\t\tthis.publish();\n\t}\n\n\tasync submitActive<TValues = unknown, TResult = unknown>(\n\t\tvalues?: TValues,\n\t): Promise<TResult | undefined> {\n\t\tconst active = this.active;\n\t\tif (!active) return undefined;\n\t\tthis.active = { ...active, values };\n\t\tthis.publish();\n\t\tconst result = await this.executeAction<unknown, TValues, TResult>(active.key, {\n\t\t\tpayload: active.payload,\n\t\t\tvalues,\n\t\t\tmetadata: active.metadata,\n\t\t});\n\t\tconst entry = this.findEntry(active.key);\n\t\tconst closeOnSuccess =\n\t\t\tentry?.action.modality &&\n\t\t\tentry.action.modality !== 'none' &&\n\t\t\tentry.action.modality.closeOnSuccess === false\n\t\t\t\t? false\n\t\t\t\t: true;\n\t\tif (closeOnSuccess && this.active?.key === active.key) {\n\t\t\tthis.closeActive({ abort: false });\n\t\t}\n\t\treturn result;\n\t}\n\n\tasync executeAction<TPayload = unknown, TValues = unknown, TResult = unknown>(\n\t\tkey: string,\n\t\targs: {\n\t\t\tpayload?: TPayload;\n\t\t\tvalues?: TValues;\n\t\t\tmetadata?: ActionMetadata;\n\t\t} = {},\n\t): Promise<TResult | undefined> {\n\t\tconst entry = this.findEntry(key);\n\t\tif (!entry) {\n\t\t\tthrow new Error(`Action is not registered: ${key}`);\n\t\t}\n\t\tif (this.isEntryDisabled(entry, args.payload, args.metadata)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tthis.abortAction(key);\n\t\tconst token = (this.runTokens.get(key) ?? 0) + 1;\n\t\tthis.runTokens.set(key, token);\n\t\tconst abortController = new AbortController();\n\t\tthis.abortControllers.set(key, abortController);\n\t\tconst metadata = mergeMetadata(entry.action.metadata, args.metadata);\n\t\tconst startedAt = Date.now();\n\n\t\tconst context = this.createRunContext<TPayload, TValues>(entry, {\n\t\t\tpayload: args.payload,\n\t\t\tvalues: args.values,\n\t\t\tmetadata,\n\t\t\tsignal: abortController.signal,\n\t\t});\n\n\t\tthis.setRunState(key, createRunState('running', {\n\t\t\terror: null,\n\t\t\terrors: EMPTY_ERRORS,\n\t\t\tmessage: undefined,\n\t\t\tpayload: args.payload,\n\t\t\tvalues: args.values,\n\t\t\tmetadata,\n\t\t\tstartedAt,\n\t\t}));\n\t\tthis.emitLifecycle('started', entry, context, key);\n\n\t\tlet result: TResult | undefined;\n\t\tlet failedError: unknown;\n\t\tconst action = entry.action as ActionDefinition<TPayload, TValues, TResult>;\n\t\ttry {\n\t\t\tif (action.run) {\n\t\t\t\tresult = await action.run(context);\n\t\t\t} else if (action.request) {\n\t\t\t\tconst runner = action.requestRunner ?? this.requestRunner;\n\t\t\t\tif (!runner) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Action request runner is not configured: ${action.id}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst request = resolveActionRequest(action.request, context);\n\t\t\t\tresult = await runner(request, context) as TResult;\n\t\t\t}\n\t\t\tif (!this.isCurrentRun(key, token)) return undefined;\n\n\t\t\tthis.setRunState(key, createRunState('succeeded', {\n\t\t\t\terror: null,\n\t\t\t\terrors: EMPTY_ERRORS,\n\t\t\t\tmessage: undefined,\n\t\t\t\tresult,\n\t\t\t\tpayload: args.payload,\n\t\t\t\tvalues: args.values,\n\t\t\t\tmetadata,\n\t\t\t\tstartedAt,\n\t\t\t\tcompletedAt: Date.now(),\n\t\t\t}));\n\t\t\tthis.emitLifecycle('succeeded', entry, context, key, { result });\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tif (!this.isCurrentRun(key, token)) return undefined;\n\t\t\tfailedError = error;\n\t\t\tconst parsedError = parseActionError(\n\t\t\t\terror,\n\t\t\t\t{ ...context, error },\n\t\t\t\taction.parseErrors ?? this.errorParser,\n\t\t\t);\n\t\t\tconst errors = parsedError.fieldErrors ?? EMPTY_ERRORS;\n\t\t\tthis.setRunState(key, createRunState('failed', {\n\t\t\t\terror,\n\t\t\t\terrors,\n\t\t\t\tmessage: parsedError.message,\n\t\t\t\tpayload: args.payload,\n\t\t\t\tvalues: args.values,\n\t\t\t\tmetadata,\n\t\t\t\tstartedAt,\n\t\t\t\tcompletedAt: Date.now(),\n\t\t\t}));\n\t\t\tthis.emitLifecycle('failed', entry, context, key, {\n\t\t\t\terror,\n\t\t\t\tmessage: parsedError.message,\n\t\t\t});\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tif (this.isCurrentRun(key, token)) {\n\t\t\t\tthis.abortControllers.delete(key);\n\t\t\t\tthis.emitLifecycle('settled', entry, context, key, {\n\t\t\t\t\tresult,\n\t\t\t\t\terror: failedError,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getEntriesForScope(scope?: string, includeGlobal = true): ActionEntry[] {\n\t\tconst resolvedScope = scope ? resolveScope(scope) : ACTION_GLOBAL_SCOPE;\n\t\tconst entries: ActionEntry[] = [];\n\n\t\tfor (const registration of this.snapshot.registrations) {\n\t\t\tconst isGlobal = registration.scope === ACTION_GLOBAL_SCOPE;\n\t\t\tif (isGlobal && !includeGlobal) continue;\n\t\t\tif (!isGlobal && registration.scope !== resolvedScope) continue;\n\n\t\t\tfor (const action of registration.actions) {\n\t\t\t\tentries.push({\n\t\t\t\t\tkey: createActionKey(registration.id, action.id),\n\t\t\t\t\tregistration,\n\t\t\t\t\taction,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn entries;\n\t}\n\n\tprivate resolveEntry<TPayload, TValues, TResult>(\n\t\tentry: ActionEntry,\n\t\targs: {\n\t\t\tsurface?: ActionSurfaceOptions['surface'];\n\t\t\tpayload?: TPayload;\n\t\t\tmetadata?: ActionMetadata;\n\t\t},\n\t): ResolvedAction<TPayload, TValues, TResult> {\n\t\tconst metadata = mergeMetadata(entry.action.metadata, args.metadata);\n\t\tconst context: ActionContext<TPayload> = {\n\t\t\tactionId: entry.action.id,\n\t\t\tscope: entry.registration.scope,\n\t\t\tsurface: args.surface,\n\t\t\tpayload: args.payload,\n\t\t\tmetadata,\n\t\t};\n\t\tconst runState = this.getRunState(entry.key);\n\t\tconst visible = this.isEntryVisible(entry, context);\n\t\tconst disabled = evaluatePredicate(\n\t\t\tentry.action.disabled as ActionDefinition<TPayload>['visible'],\n\t\t\tcontext,\n\t\t\tfalse,\n\t\t);\n\t\tconst action = entry.action as ActionDefinition<TPayload, TValues, TResult>;\n\n\t\treturn {\n\t\t\tkey: entry.key,\n\t\t\tid: entry.action.id,\n\t\t\tscope: entry.registration.scope,\n\t\t\tlabel: entry.action.label,\n\t\t\tsearchLabel: resolveSearchLabel(entry.action),\n\t\t\ticon: entry.action.icon,\n\t\t\tgroup: entry.action.group,\n\t\t\tplacement: entry.action.placement ?? 'auto',\n\t\t\torder: entry.action.order ?? entry.registration.order,\n\t\t\tsurface: args.surface,\n\t\t\tvisible,\n\t\t\tdisabled,\n\t\t\tstatus: runState.status,\n\t\t\tisIdle: runState.isIdle,\n\t\t\tisRunning: runState.isRunning,\n\t\t\tisSuccess: runState.isSuccess,\n\t\t\tisError: runState.isError,\n\t\t\terror: runState.error,\n\t\t\terrors: runState.errors,\n\t\t\tmessage: runState.message,\n\t\t\tresult: runState.result as TResult | undefined,\n\t\t\trunState,\n\t\t\tpayload: args.payload,\n\t\t\tvalues: runState.values as TValues | undefined,\n\t\t\tmetadata,\n\t\t\tstartedAt: runState.startedAt,\n\t\t\tcompletedAt: runState.completedAt,\n\t\t\tdefinition: action,\n\t\t\topen: (payload?: TPayload, openMetadata?: ActionMetadata) =>\n\t\t\t\tthis.openAction(\n\t\t\t\t\tentry.key,\n\t\t\t\t\tpayload ?? args.payload,\n\t\t\t\t\tmergeMetadata(args.metadata, openMetadata),\n\t\t\t\t),\n\t\t\texecute: (values?: TValues, payload?: TPayload, executeMetadata?: ActionMetadata) =>\n\t\t\t\tthis.executeAction<TPayload, TValues, TResult>(entry.key, {\n\t\t\t\t\tpayload: payload ?? args.payload,\n\t\t\t\t\tvalues,\n\t\t\t\t\tmetadata: mergeMetadata(args.metadata, executeMetadata),\n\t\t\t\t}),\n\t\t\tclose: () => this.closeActive(),\n\t\t\tsubmit: (values?: TValues) => this.submitActive<TValues, TResult>(values),\n\t\t};\n\t}\n\n\tprivate createRunContext<TPayload, TValues>(\n\t\tentry: ActionEntry,\n\t\targs: {\n\t\t\tpayload?: TPayload;\n\t\t\tvalues?: TValues;\n\t\t\tmetadata?: ActionMetadata;\n\t\t\tsignal: AbortSignal;\n\t\t},\n\t): ActionRunContext<TPayload, TValues> {\n\t\treturn {\n\t\t\taction: entry.action,\n\t\t\tactionId: entry.action.id,\n\t\t\tscope: entry.registration.scope,\n\t\t\tpayload: args.payload,\n\t\t\tvalues: args.values,\n\t\t\tmetadata: args.metadata,\n\t\t\tsignal: args.signal,\n\t\t};\n\t}\n\n\tprivate isEntryDisabled<TPayload>(\n\t\tentry: ActionEntry,\n\t\tpayload?: TPayload,\n\t\tmetadata?: ActionMetadata,\n\t): boolean {\n\t\tconst context: ActionContext<TPayload> = {\n\t\t\tactionId: entry.action.id,\n\t\t\tscope: entry.registration.scope,\n\t\t\tpayload,\n\t\t\tmetadata: mergeMetadata(entry.action.metadata, metadata),\n\t\t};\n\t\tif (!this.isEntryVisible(entry, context)) return true;\n\t\treturn evaluatePredicate(\n\t\t\tentry.action.disabled as ActionDefinition<TPayload>['disabled'],\n\t\t\tcontext,\n\t\t\tfalse,\n\t\t);\n\t}\n\n\tprivate isEntryVisible<TPayload>(\n\t\tentry: ActionEntry,\n\t\tcontext: ActionContext<TPayload>,\n\t): boolean {\n\t\tconst predicateVisible = evaluatePredicate(\n\t\t\tentry.action.visible as ActionDefinition<TPayload>['visible'],\n\t\t\tcontext,\n\t\t\ttrue,\n\t\t);\n\t\tif (!predicateVisible) return false;\n\n\t\tconst guardContext = {\n\t\t\t...context,\n\t\t\taction: entry.action,\n\t\t};\n\t\tconst permissions = toStringArray(entry.action.permission);\n\t\tif (permissions.length > 0) {\n\t\t\tif (!this.guards?.can) return false;\n\t\t\tif (!permissions.every((permission) =>\n\t\t\t\tthis.guards?.can?.(permission, guardContext),\n\t\t\t)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tconst roles = toStringArray(entry.action.roles);\n\t\tif (roles.length > 0) {\n\t\t\tif (!this.guards?.hasAnyRole) return false;\n\t\t\tif (!this.guards.hasAnyRole(roles, guardContext)) return false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tprivate emitLifecycle<TPayload, TValues, TResult>(\n\t\ttype: ActionLifecycleType,\n\t\tentry: ActionEntry,\n\t\tcontext: ActionRunContext<TPayload, TValues>,\n\t\tkey: string,\n\t\targs: { result?: TResult; error?: unknown; message?: string } = {},\n\t): void {\n\t\tconst action = entry.action as ActionDefinition<TPayload, TValues, TResult>;\n\t\tconst runState = this.getRunState(key);\n\t\tconst messageContext: ActionMessageContext<TPayload, TValues, TResult> = {\n\t\t\t...context,\n\t\t\taction: entry.action,\n\t\t\tstatus: runState.status,\n\t\t\terrors: runState.errors,\n\t\t\tresult: args.result,\n\t\t\terror: args.error,\n\t\t};\n\t\tconst message =\n\t\t\ttype === 'succeeded'\n\t\t\t\t? resolveActionMessage(action.successMessage, messageContext)\n\t\t\t\t: type === 'failed'\n\t\t\t\t\t? resolveActionMessage(action.errorMessage, messageContext) ?? args.message\n\t\t\t\t\t: undefined;\n\t\tconst event: ActionLifecycleEvent<TPayload, TValues, TResult> = {\n\t\t\t...messageContext,\n\t\t\ttype,\n\t\t\tkey,\n\t\t\tstatus: runState.status,\n\t\t\trunState,\n\t\t\tmessage,\n\t\t};\n\n\t\tif (type === 'started') action.onStart?.(event);\n\t\tif (type === 'succeeded') action.onAfterMutate?.(event);\n\t\tif (type === 'failed') action.onError?.(event);\n\t\tif (type === 'settled') action.onSettled?.(event);\n\n\t\tif (type === 'started') this.feedback?.onStart?.(event as ActionLifecycleEvent);\n\t\tif (type === 'succeeded') this.feedback?.onSuccess?.(event as ActionLifecycleEvent);\n\t\tif (type === 'failed') this.feedback?.onError?.(event as ActionLifecycleEvent);\n\t\tif (type === 'settled') this.feedback?.onSettled?.(event as ActionLifecycleEvent);\n\t}\n\n\tprivate findEntry(key: string): ActionEntry | null {\n\t\tfor (const registration of this.snapshot.registrations) {\n\t\t\tfor (const action of registration.actions) {\n\t\t\t\tif (createActionKey(registration.id, action.id) === key) {\n\t\t\t\t\treturn { key, registration, action };\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate getRunState(key: string): ActionRunState {\n\t\treturn this.snapshot.runStates[key] ?? createRunState('idle');\n\t}\n\n\tprivate setRunState(key: string, state: ActionRunState, shouldPublish = true): void {\n\t\tthis.runStates = {\n\t\t\t...this.runStates,\n\t\t\t[key]: {\n\t\t\t\t...state,\n\t\t\t\terrors: state.errors ?? EMPTY_ERRORS,\n\t\t\t},\n\t\t};\n\t\tif (shouldPublish) this.publish();\n\t}\n\n\tprivate abortAction(key: string): void {\n\t\tconst controller = this.abortControllers.get(key);\n\t\tif (!controller) return;\n\t\tconst previous = this.getRunState(key);\n\t\tthis.runTokens.set(key, (this.runTokens.get(key) ?? 0) + 1);\n\t\tcontroller.abort();\n\t\tthis.abortControllers.delete(key);\n\t\tthis.setRunState(key, createRunState('idle', {\n\t\t\t...previous,\n\t\t\terror: null,\n\t\t\terrors: EMPTY_ERRORS,\n\t\t\tcompletedAt: Date.now(),\n\t\t}), false);\n\t}\n\n\tprivate isCurrentRun(key: string, token: number): boolean {\n\t\treturn this.runTokens.get(key) === token;\n\t}\n\n\tprivate publish(): void {\n\t\tthis.version += 1;\n\t\tthis.snapshot = createSnapshot(\n\t\t\tthis.version,\n\t\t\tthis.registrations,\n\t\t\tthis.runStates,\n\t\t\tthis.active,\n\t\t);\n\t\tfor (const listener of this.listeners) listener();\n\t}\n}\n\nexport function createActionStore(): ActionStore {\n\treturn new ActionStore();\n}\n","import {\n\tcreateContext,\n\tuseContext,\n\tuseEffect,\n\tuseRef,\n\tuseSyncExternalStore,\n\ttype ReactNode,\n} from 'react';\n\nimport { createActionStore, type ActionStore } from './action-store';\nimport {\n\tACTION_GLOBAL_SCOPE,\n\ttype ActionProviderProps,\n\ttype ActionStoreSnapshot,\n} from './actions.types';\n\nexport const ActionStoreContext = createContext<ActionStore | null>(null);\nexport const ActionScopeContext = createContext<string | null>(null);\n\nexport function ActionProvider<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>({\n\tactions,\n\truntime,\n\tfeedback,\n\tguards,\n\tparseErrors,\n\trequestRunner,\n\tonOverlayOpenChange,\n\tonRunningChange,\n\tchildren,\n}: ActionProviderProps<TPayload, TValues, TResult>): ReactNode {\n\tconst storeRef = useRef<ActionStore | null>(null);\n\tif (!storeRef.current) {\n\t\tstoreRef.current = createActionStore();\n\t}\n\tconst store = storeRef.current;\n\tconst resolvedFeedback = feedback ?? runtime?.feedback;\n\tconst resolvedGuards = guards ?? runtime?.guards;\n\tconst resolvedParseErrors = parseErrors ?? runtime?.parseErrors;\n\tconst resolvedRequestRunner = requestRunner ?? runtime?.requestRunner;\n\tconst resolvedOverlayOpenChange =\n\t\tonOverlayOpenChange ?? runtime?.onOverlayOpenChange;\n\tconst resolvedRunningChange = onRunningChange ?? runtime?.onRunningChange;\n\n\tuseEffect(() => {\n\t\tstore.setOptions({\n\t\t\tfeedback: resolvedFeedback,\n\t\t\tguards: resolvedGuards,\n\t\t\tparseErrors: resolvedParseErrors,\n\t\t\trequestRunner: resolvedRequestRunner,\n\t\t});\n\t}, [\n\t\tresolvedFeedback,\n\t\tresolvedGuards,\n\t\tresolvedParseErrors,\n\t\tresolvedRequestRunner,\n\t\tstore,\n\t]);\n\n\tuseEffect(() => {\n\t\tif (!actions || actions.length === 0) return undefined;\n\t\treturn store.registerActions(actions, { scope: ACTION_GLOBAL_SCOPE });\n\t}, [actions, store]);\n\n\treturn (\n\t\t<ActionStoreContext.Provider value={store}>\n\t\t\t<ActionScopeContext.Provider value={ACTION_GLOBAL_SCOPE}>\n\t\t\t\t<ActionProviderStateEffects\n\t\t\t\t\tstore={store}\n\t\t\t\t\tonOverlayOpenChange={resolvedOverlayOpenChange}\n\t\t\t\t\tonRunningChange={resolvedRunningChange}\n\t\t\t\t/>\n\t\t\t\t{children}\n\t\t\t</ActionScopeContext.Provider>\n\t\t</ActionStoreContext.Provider>\n\t);\n}\n\ninterface ActionProviderStateEffectsProps {\n\tstore: ActionStore;\n\tonOverlayOpenChange?: (\n\t\topen: boolean,\n\t\tsnapshot: ActionStoreSnapshot,\n\t) => void;\n\tonRunningChange?: (\n\t\trunning: boolean,\n\t\tsnapshot: ActionStoreSnapshot,\n\t) => void;\n}\n\nfunction ActionProviderStateEffects({\n\tstore,\n\tonOverlayOpenChange,\n\tonRunningChange,\n}: ActionProviderStateEffectsProps) {\n\tconst snapshot = useSyncExternalStore(\n\t\tstore.subscribe,\n\t\tstore.getSnapshot,\n\t\tstore.getSnapshot,\n\t);\n\tconst isOverlayOpen = snapshot.active !== null;\n\tconst isRunning = Object.values(snapshot.runStates).some((state) => state.isRunning);\n\tconst previousOverlayOpenRef = useRef(isOverlayOpen);\n\tconst previousRunningRef = useRef(isRunning);\n\tconst onOverlayOpenChangeRef = useRef(onOverlayOpenChange);\n\tconst onRunningChangeRef = useRef(onRunningChange);\n\n\tuseEffect(() => {\n\t\tonOverlayOpenChangeRef.current = onOverlayOpenChange;\n\t}, [onOverlayOpenChange]);\n\n\tuseEffect(() => {\n\t\tonRunningChangeRef.current = onRunningChange;\n\t}, [onRunningChange]);\n\n\tuseEffect(() => {\n\t\tif (previousOverlayOpenRef.current === isOverlayOpen) return;\n\t\tpreviousOverlayOpenRef.current = isOverlayOpen;\n\t\tonOverlayOpenChangeRef.current?.(isOverlayOpen, snapshot);\n\t}, [isOverlayOpen, snapshot]);\n\n\tuseEffect(() => {\n\t\tif (previousRunningRef.current === isRunning) return;\n\t\tpreviousRunningRef.current = isRunning;\n\t\tonRunningChangeRef.current?.(isRunning, snapshot);\n\t}, [isRunning, snapshot]);\n\n\treturn null;\n}\n\nexport function useActionStore(): ActionStore {\n\tconst store = useContext(ActionStoreContext);\n\tif (!store) {\n\t\tthrow new Error('Action hooks must be used inside <ActionProvider>.');\n\t}\n\treturn store;\n}\n","import { useContext, useEffect, useId, useMemo, useSyncExternalStore } from 'react';\n\nimport { ActionScopeContext, useActionStore } from './action-provider';\nimport {\n\tACTION_GLOBAL_SCOPE,\n\ttype ActionDefinition,\n\ttype ActionRegistrationOptions,\n\ttype ActionStoreSnapshot,\n\ttype ActionSurfaceOptions,\n\ttype ResolvedAction,\n\ttype UseLocalActionOptions,\n\ttype UseActionOptions,\n} from './actions.types';\n\nexport function useActionScope(): string {\n\treturn useContext(ActionScopeContext) ?? ACTION_GLOBAL_SCOPE;\n}\n\nexport function useActionSnapshot(): ActionStoreSnapshot {\n\tconst store = useActionStore();\n\treturn useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);\n}\n\nexport function useRegisterActions<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(\n\tactions: readonly ActionDefinition<TPayload, TValues, TResult>[],\n\toptions: ActionRegistrationOptions = {},\n): void {\n\tconst store = useActionStore();\n\tconst inheritedScope = useActionScope();\n\tconst scope = options.scope ?? inheritedScope;\n\n\tuseEffect(() => {\n\t\tif (actions.length === 0) return undefined;\n\t\treturn store.registerActions(actions, { scope });\n\t}, [actions, scope, store]);\n}\n\nexport function useActionSurface<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(\n\toptions: ActionSurfaceOptions<TPayload>,\n): ResolvedAction<TPayload, TValues, TResult>[] {\n\tconst store = useActionStore();\n\tconst inheritedScope = useActionScope();\n\tconst scope = options.scope ?? inheritedScope;\n\tconst { surface, payload, metadata, includeGlobal } = options;\n\n\tuseActionSnapshot();\n\n\treturn store.selectSurfaceActions<TPayload, TValues, TResult>({\n\t\tsurface,\n\t\tpayload,\n\t\tmetadata,\n\t\tincludeGlobal,\n\t\tscope,\n\t});\n}\n\nexport function useAction<TPayload = unknown, TValues = unknown, TResult = unknown>(\n\tactionId: string,\n\toptions: UseActionOptions<TPayload> = {},\n): ResolvedAction<TPayload, TValues, TResult> | null {\n\tconst store = useActionStore();\n\tconst inheritedScope = useActionScope();\n\tconst scope = options.scope ?? inheritedScope;\n\tconst { payload, metadata, includeGlobal } = options;\n\n\tuseActionSnapshot();\n\n\treturn store.selectAction<TPayload, TValues, TResult>(actionId, {\n\t\tpayload,\n\t\tmetadata,\n\t\tincludeGlobal,\n\t\tscope,\n\t});\n}\n\nexport function useLocalAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(\n\tdefinition: ActionDefinition<TPayload, TValues, TResult>,\n\toptions: UseLocalActionOptions<TPayload> = {},\n): ResolvedAction<TPayload, TValues, TResult> | null {\n\tconst inheritedScope = useActionScope();\n\tconst localId = useId();\n\tconst scope = options.scope ?? `${inheritedScope}:local:${localId}`;\n\tconst actions = useMemo(() => [definition], [definition]);\n\n\tuseRegisterActions(actions, { scope });\n\n\treturn useAction<TPayload, TValues, TResult>(definition.id, {\n\t\t...options,\n\t\tscope,\n\t\tincludeGlobal: false,\n\t});\n}\n\nexport function useActiveAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(): ResolvedAction<TPayload, TValues, TResult> | null {\n\tconst store = useActionStore();\n\tuseActionSnapshot();\n\n\treturn store.getActiveAction<TPayload, TValues, TResult>();\n}\n","import { type ReactNode } from 'react';\n\nimport { ActionScopeContext } from './action-provider';\nimport { useRegisterActions } from './hooks';\nimport { ACTION_GLOBAL_SCOPE, type ActionScopeProps } from './actions.types';\n\nexport function ActionScope<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>({\n\tscope = ACTION_GLOBAL_SCOPE,\n\tactions,\n\tchildren,\n}: ActionScopeProps<TPayload, TValues, TResult>): ReactNode {\n\tuseRegisterActions(actions, { scope });\n\n\treturn (\n\t\t<ActionScopeContext.Provider value={scope}>\n\t\t\t{children}\n\t\t</ActionScopeContext.Provider>\n\t);\n}\n","import type { ActionOverlayStrings } from './actions.types';\n\nexport const defaultActionOverlayStrings: ActionOverlayStrings = {\n\tconfirm: 'Confirm',\n\tcancel: 'Cancel',\n};\n","import { type ReactNode } from 'react';\n\nimport {\n\tActionDialog,\n\tActionDrawer,\n\tConfirmDialog,\n\ttype OverlayButtonTone,\n\ttype DrawerDirection,\n\ttype OverlaySize,\n\ttype OverlayTone,\n} from '../../components/features/overlays';\nimport { useStrings } from '../../lib/strings';\n\nimport { resolveActionMessage } from './action-store';\nimport { defaultActionOverlayStrings } from './actions.strings';\nimport { useActiveAction } from './hooks';\nimport type {\n\tActionDrawerDirection,\n\tActionOverlayOutletProps,\n\tActionOverlaySize,\n\tActionTone,\n} from './actions.types';\n\nfunction mapTone(tone?: ActionTone): OverlayTone {\n\tif (tone === 'primary' || tone === 'secondary') return 'neutral';\n\treturn tone ?? 'neutral';\n}\n\nfunction mapButtonTone(tone?: ActionTone): OverlayButtonTone {\n\tif (tone === 'destructive') return 'destructive';\n\tif (tone === 'warning') return 'warning';\n\tif (tone === 'success') return 'success';\n\treturn 'primary';\n}\n\nfunction mapSize(size?: ActionOverlaySize): OverlaySize {\n\treturn size ?? 'lg';\n}\n\nfunction mapDirection(direction?: ActionDrawerDirection): DrawerDirection {\n\treturn direction ?? 'right';\n}\n\nexport function ActionOverlayOutlet({\n\tstrings: stringsProp,\n}: ActionOverlayOutletProps): ReactNode {\n\tconst active = useActiveAction();\n\tconst strings = useStrings(defaultActionOverlayStrings, stringsProp);\n\n\tif (!active) return null;\n\n\tconst modality = active.definition.modality;\n\tif (!modality || modality === 'none') return null;\n\n\tconst messageContext = {\n\t\taction: active.definition,\n\t\tactionId: active.id,\n\t\tscope: active.scope,\n\t\tpayload: active.payload,\n\t\tvalues: active.values,\n\t\tmetadata: active.metadata,\n\t\tstatus: active.status,\n\t\terrors: active.errors,\n\t\tresult: active.result,\n\t\terror: active.error,\n\t};\n\tconst title = resolveActionMessage(modality.title, messageContext);\n\tconst description = resolveActionMessage(modality.description, messageContext);\n\tconst confirm = resolveActionMessage(modality.confirmLabel, messageContext) ?? strings.confirm;\n\tconst cancel = resolveActionMessage(modality.cancelLabel, messageContext) ?? strings.cancel;\n\tconst alertMessage = resolveActionMessage(modality.alertMessage, messageContext);\n\tconst overlayTone = mapTone(modality.tone);\n\tconst confirmTone = mapButtonTone(modality.tone);\n\tconst isEmphasized = overlayTone !== 'neutral';\n\tconst emphasis = modality.emphasis ?? isEmphasized;\n\tconst showIcon = modality.showIcon ?? isEmphasized;\n\tconst closeOnBackdropClick =\n\t\tmodality.closeOnBackdropClick ?? (modality.type === 'alert' ? false : true);\n\n\tconst content = modality.render?.({\n\t\taction: active.definition,\n\t\tactionId: active.id,\n\t\tscope: active.scope,\n\t\tpayload: active.payload,\n\t\tvalues: active.values,\n\t\tmetadata: active.metadata,\n\t\tformId: modality.formId,\n\t\tstatus: active.status,\n\t\tisIdle: active.isIdle,\n\t\tisRunning: active.isRunning,\n\t\tisSuccess: active.isSuccess,\n\t\tisError: active.isError,\n\t\tresult: active.result,\n\t\terror: active.error,\n\t\terrors: active.errors,\n\t\tclose: active.close,\n\t\tsubmit: (values) => active.submit(values),\n\t\tgetFormProps: (options) => ({\n\t\t\tid: modality.formId,\n\t\t\tonSubmit: async (event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst values = options?.resolveValues\n\t\t\t\t\t? await options.resolveValues(new FormData(event.currentTarget), event)\n\t\t\t\t\t: undefined;\n\t\t\t\ttry {\n\t\t\t\t\tawait active.submit(values);\n\t\t\t\t} catch {\n\t\t\t\t\t// The runtime records submission errors for the form and feedback.\n\t\t\t\t\t// Native submit events do not have a promise consumer.\n\t\t\t\t}\n\t\t\t},\n\t\t}),\n\t});\n\n\tconst commonProps = {\n\t\topen: true,\n\t\tonOpenChange: (open: boolean) => {\n\t\t\tif (!open) active.close();\n\t\t},\n\t\ttitle,\n\t\tdescription,\n\t\tvisuallyHideHeader: modality.visuallyHideHeader,\n\t\tclassName: modality.className,\n\t\tcontentClassName: modality.contentClassName,\n\t\tinitialFocusRef: modality.initialFocusRef,\n\t\tcloseOnEscape: modality.closeOnEscape,\n\t\tisLoading: active.isRunning,\n\t\tshowCancel: modality.showCancel ?? true,\n\t\tshowConfirm: modality.showConfirm ?? true,\n\t\tformId: modality.formId,\n\t\tfooter: modality.footer,\n\t\tonCancel: active.close,\n\t\tonAsyncConfirm: modality.formId\n\t\t\t? undefined\n\t\t\t: async () => {\n\t\t\t\t\tawait active.submit();\n\t\t\t\t},\n\t\tcloseOnAsyncComplete: false,\n\t\tconfirmTone,\n\t\tconfirmStyle: modality.confirmStyle,\n\t\tcloseOnBackdropClick,\n\t\tstrings: {\n\t\t\tconfirm,\n\t\t\tcancel,\n\t\t},\n\t};\n\n\tif (modality.type === 'alert') {\n\t\treturn (\n\t\t\t<ConfirmDialog\n\t\t\t\t{...commonProps}\n\t\t\t\ttone={overlayTone}\n\t\t\t\tshowIcon={showIcon}\n\t\t\t\talertMessage={alertMessage}\n\t\t\t\tdestructive={overlayTone === 'destructive'}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</ConfirmDialog>\n\t\t);\n\t}\n\n\tif (modality.type === 'drawer') {\n\t\treturn (\n\t\t\t<ActionDrawer\n\t\t\t\t{...commonProps}\n\t\t\t\ttone={overlayTone}\n\t\t\t\temphasis={emphasis}\n\t\t\t\tshowIcon={showIcon}\n\t\t\t\talertMessage={alertMessage}\n\t\t\t\twidth={mapSize(modality.size)}\n\t\t\t\tdirection={mapDirection(modality.drawerDirection)}\n\t\t\t\tshowFooter={modality.showFooter ?? true}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</ActionDrawer>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ActionDialog\n\t\t\t{...commonProps}\n\t\t\ttone={overlayTone}\n\t\t\temphasis={emphasis}\n\t\t\tshowIcon={showIcon}\n\t\t\talertMessage={alertMessage}\n\t\t\tsize={mapSize(modality.size)}\n\t\t>\n\t\t\t{content}\n\t\t</ActionDialog>\n\t);\n}\n","import { createElement } from 'react';\n\nimport type {\n\tActionDefinition,\n\tActionButtonStyle,\n\tActionTone,\n\tActionMetadata,\n\tActionModalityConfig,\n\tActionRequestRunner,\n\tResolvedAction,\n\tResolvedActionRequest,\n} from './actions.types';\n\nexport interface ActionHttpErrorOptions {\n\tstatus: number;\n\tstatusText: string;\n\tbody: unknown;\n\tresponse: Response;\n}\n\nexport class ActionHttpError extends Error {\n\tstatus: number;\n\tstatusText: string;\n\tbody: unknown;\n\tresponse: Response;\n\terrors?: unknown;\n\n\tconstructor({ status, statusText, body, response }: ActionHttpErrorOptions) {\n\t\tsuper(statusText || `Request failed with status ${status}`);\n\t\tthis.name = 'ActionHttpError';\n\t\tthis.status = status;\n\t\tthis.statusText = statusText;\n\t\tthis.body = body;\n\t\tthis.response = response;\n\t\tthis.errors =\n\t\t\tbody && typeof body === 'object' && 'errors' in body\n\t\t\t\t? (body as { errors?: unknown }).errors\n\t\t\t\t: undefined;\n\t}\n}\n\nexport interface CreateHttpActionRunnerOptions {\n\tbaseUrl?: string;\n\tfetcher?: typeof fetch;\n\tparseResponse?: (response: Response) => Promise<unknown>;\n}\n\nasync function defaultParseResponse(response: Response): Promise<unknown> {\n\tif (response.status === 204) return undefined;\n\tconst contentType = response.headers.get('content-type') ?? '';\n\tif (contentType.includes('application/json')) return response.json();\n\treturn response.text();\n}\n\nfunction resolveUrlTarget(request: ResolvedActionRequest): string | undefined {\n\tif (request.target?.type === 'url') return request.target.url;\n\treturn undefined;\n}\n\nfunction joinUrl(baseUrl: string | undefined, url: string | undefined): string {\n\tif (!url) {\n\t\tthrow new Error('Action request requires a url.');\n\t}\n\tif (!baseUrl) return url;\n\treturn new URL(url, baseUrl).toString();\n}\n\nfunction serializeBody(data: unknown): BodyInit | undefined {\n\tif (data === undefined || data === null) return undefined;\n\tif (\n\t\ttypeof FormData !== 'undefined' && data instanceof FormData ||\n\t\ttypeof URLSearchParams !== 'undefined' && data instanceof URLSearchParams ||\n\t\ttypeof Blob !== 'undefined' && data instanceof Blob\n\t) {\n\t\treturn data;\n\t}\n\tif (typeof data === 'string') return data;\n\treturn JSON.stringify(data);\n}\n\nexport function createHttpActionRunner<TResult = unknown>({\n\tbaseUrl,\n\tfetcher = fetch,\n\tparseResponse = defaultParseResponse,\n}: CreateHttpActionRunnerOptions = {}): ActionRequestRunner<TResult> {\n\treturn async (request, context) => {\n\t\tconst method = request.method.toUpperCase();\n\t\tconst body = method === 'GET' ? undefined : serializeBody(request.data);\n\t\tconst isFormDataBody = typeof FormData !== 'undefined' && body instanceof FormData;\n\t\tconst headers = {\n\t\t\t...(body && !isFormDataBody ? { 'Content-Type': 'application/json' } : {}),\n\t\t\t...request.headers,\n\t\t};\n\t\tconst response = await fetcher(joinUrl(baseUrl, resolveUrlTarget(request)), {\n\t\t\t...(request.options as RequestInit | undefined),\n\t\t\tmethod,\n\t\t\theaders,\n\t\t\tbody,\n\t\t\tsignal: context.signal,\n\t\t});\n\t\tconst parsed = await parseResponse(response);\n\t\tif (!response.ok) {\n\t\t\tthrow new ActionHttpError({\n\t\t\t\tstatus: response.status,\n\t\t\t\tstatusText: response.statusText,\n\t\t\t\tbody: parsed,\n\t\t\t\tresponse,\n\t\t\t});\n\t\t}\n\t\treturn parsed as TResult;\n\t};\n}\n\nexport function defineAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(\n\tdefinition: ActionDefinition<TPayload, TValues, TResult>,\n): ActionDefinition<TPayload, TValues, TResult> {\n\treturn definition;\n}\n\nexport function defineDeleteAction<\n\tTPayload = unknown,\n\tTResult = unknown,\n>(\n\tdefinition: Omit<ActionDefinition<TPayload, undefined, TResult>, 'modality'> & {\n\t\tmodality: Omit<\n\t\t\tActionModalityConfig<TPayload, undefined, TResult>,\n\t\t\t'type' | 'tone'\n\t\t> & Partial<Pick<ActionModalityConfig<TPayload, undefined, TResult>, 'type' | 'tone'>>;\n\t},\n): ActionDefinition<TPayload, undefined, TResult> {\n\treturn {\n\t\t...definition,\n\t\ttone: definition.tone ?? 'destructive',\n\t\tmodality: {\n\t\t\ttype: 'alert',\n\t\t\ttone: 'destructive',\n\t\t\t...definition.modality,\n\t\t},\n\t};\n}\n\nexport function defineFormAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(\n\tdefinition: Omit<ActionDefinition<TPayload, TValues, TResult>, 'modality'> & {\n\t\tmodality: Omit<\n\t\t\tActionModalityConfig<TPayload, TValues, TResult>,\n\t\t\t'type'\n\t\t> & Partial<Pick<ActionModalityConfig<TPayload, TValues, TResult>, 'type'>>;\n\t},\n): ActionDefinition<TPayload, TValues, TResult> {\n\treturn {\n\t\t...definition,\n\t\tmodality: {\n\t\t\ttype: 'dialog',\n\t\t\t...definition.modality,\n\t\t},\n\t};\n}\n\nexport function defineSilentAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(\n\tdefinition: Omit<ActionDefinition<TPayload, TValues, TResult>, 'modality'>,\n): ActionDefinition<TPayload, TValues, TResult> {\n\treturn {\n\t\t...definition,\n\t\tmodality: 'none',\n\t};\n}\n\ntype ActionPresentationSource = {\n\tdefinition: {\n\t\ttone?: string;\n\t\tbuttonStyle?: string;\n\t\tmodality?: 'none' | {\n\t\t\ttone?: string;\n\t\t};\n\t};\n};\ntype ActionLabelSource = {\n\tid: string;\n\tsearchLabel: string;\n};\n\nfunction getActionTone(action: ActionPresentationSource): ActionTone | undefined {\n\tconst modalityTone =\n\t\taction.definition.modality && action.definition.modality !== 'none'\n\t\t\t? action.definition.modality.tone\n\t\t\t: undefined;\n\tconst tone = action.definition.tone ?? modalityTone;\n\tif (tone === 'destructive') return 'destructive' as const;\n\tif (tone === 'warning') return 'warning';\n\tif (tone === 'success') return 'success';\n\tif (tone === 'info') return 'info';\n\tif (tone === 'neutral') return 'neutral';\n\tif (tone === 'primary') return 'primary';\n\tif (tone === 'secondary') return 'secondary';\n\treturn undefined;\n}\n\nfunction getActionButtonStyle(action: ActionPresentationSource): ActionButtonStyle | undefined {\n\tconst style = action.definition.buttonStyle;\n\tif (style === 'solid' || style === 'outline' || style === 'ghost' || style === 'link') {\n\t\treturn style;\n\t}\n\treturn undefined;\n}\n\nfunction getActionLabel(action: ActionLabelSource): string {\n\treturn action.searchLabel || action.id;\n}\n\n/** @deprecated Use toPageHeaderAction for a header's `primaryAction` and `secondaryActions`. */\nexport function toPageAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(action: ResolvedAction<TPayload, TValues, TResult>) {\n\treturn {\n\t\tid: action.id,\n\t\tlabel: action.label,\n\t\tonClick: () => action.open(),\n\t\tdisabled: action.disabled,\n\t\tloading: action.isRunning,\n\t\ticon: action.icon,\n\t\ttone: getActionTone(action),\n\t\tbuttonStyle: getActionButtonStyle(action),\n\t\tvisible: action.visible,\n\t\tgroup: action.group,\n\t\tplacement: action.placement,\n\t};\n}\n\n/**\n * A role-based page command for a header's `primaryAction` or\n * `secondaryActions`. The header chooses the treatment; a destructive tone\n * marks the command destructive so it moves into the More actions menu.\n */\nexport function toPageHeaderAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(action: ResolvedAction<TPayload, TValues, TResult>) {\n\treturn {\n\t\tid: action.id,\n\t\tlabel: action.label,\n\t\tonClick: () => action.open(),\n\t\tdisabled: action.disabled,\n\t\tloading: action.isRunning,\n\t\ticon: action.icon,\n\t\tvisible: action.visible,\n\t\tdestructive: getActionTone(action) === 'destructive',\n\t};\n}\n\nexport function toMenuAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(action: ResolvedAction<TPayload, TValues, TResult>) {\n\treturn {\n\t\tid: action.id,\n\t\tlabel: getActionLabel(action),\n\t\tonClick: () => action.open(),\n\t\tdisabled: action.disabled || action.isRunning,\n\t\tvisible: action.visible,\n\t\tgroup: action.group,\n\t\ticon: action.icon,\n\t\ttone: getActionTone(action) ?? 'secondary',\n\t\tbuttonStyle: getActionButtonStyle(action),\n\t};\n}\n\nexport function toTableAction<TData = unknown>(action: ResolvedAction<TData>) {\n\tconst disabled = action.disabled || action.isRunning;\n\treturn {\n\t\tid: action.id,\n\t\tlabel: getActionLabel(action),\n\t\tonClick: (row: TData) => action.open(row),\n\t\t// DataTable reads `disabled` and `visible`; the predicates remain for\n\t\t// existing custom renderers.\n\t\tdisabled,\n\t\tvisible: action.visible,\n\t\tisDisabled: () => disabled,\n\t\tisVisible: () => action.visible,\n\t\ticon: action.icon ? createElement(action.icon, { className: 'size-4' }) : undefined,\n\t\ttone: getActionTone(action) ?? 'secondary',\n\t\tbuttonStyle: getActionButtonStyle(action),\n\t};\n}\n\nexport function toCommandAction<\n\tTPayload = unknown,\n\tTValues = unknown,\n\tTResult = unknown,\n>(\n\taction: ResolvedAction<TPayload, TValues, TResult>,\n\tmetadata?: ActionMetadata,\n) {\n\treturn {\n\t\tid: action.id,\n\t\tlabel: getActionLabel(action),\n\t\tgroup: action.group,\n\t\tdisabled: action.disabled || action.isRunning,\n\t\ticon: action.icon,\n\t\tonSelect: () => action.open(undefined, metadata),\n\t};\n}\n"],"mappings":"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"}