@open-mercato/core 0.4.2-canary-f821f89ef6 → 0.4.2-canary-3b5064ce72

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 (632) hide show
  1. package/dist/generated/entities/notification/index.js +57 -0
  2. package/dist/generated/entities/notification/index.js.map +7 -0
  3. package/dist/generated/entities.ids.generated.js +5 -2
  4. package/dist/generated/entities.ids.generated.js.map +2 -2
  5. package/dist/generated/entity-fields-registry.js +2 -2
  6. package/dist/generated/entity-fields-registry.js.map +2 -2
  7. package/dist/modules/api_docs/frontend/docs/api/page.js +3 -2
  8. package/dist/modules/api_docs/frontend/docs/api/page.js.map +2 -2
  9. package/dist/modules/api_keys/backend/api-keys/page.js +1 -1
  10. package/dist/modules/api_keys/backend/api-keys/page.js.map +2 -2
  11. package/dist/modules/attachments/components/AttachmentLibrary.js +4 -0
  12. package/dist/modules/attachments/components/AttachmentLibrary.js.map +2 -2
  13. package/dist/modules/attachments/components/AttachmentPartitionSettings.js +2 -0
  14. package/dist/modules/attachments/components/AttachmentPartitionSettings.js.map +2 -2
  15. package/dist/modules/auth/api/admin/nav.js +4 -3
  16. package/dist/modules/auth/api/admin/nav.js.map +2 -2
  17. package/dist/modules/auth/api/login.js +25 -6
  18. package/dist/modules/auth/api/login.js.map +2 -2
  19. package/dist/modules/auth/api/profile/route.js +157 -0
  20. package/dist/modules/auth/api/profile/route.js.map +7 -0
  21. package/dist/modules/auth/api/reset/confirm.js +25 -2
  22. package/dist/modules/auth/api/reset/confirm.js.map +2 -2
  23. package/dist/modules/auth/api/reset.js +23 -0
  24. package/dist/modules/auth/api/reset.js.map +2 -2
  25. package/dist/modules/auth/api/sidebar/preferences/route.js +14 -9
  26. package/dist/modules/auth/api/sidebar/preferences/route.js.map +2 -2
  27. package/dist/modules/auth/api/users/route.js +4 -2
  28. package/dist/modules/auth/api/users/route.js.map +2 -2
  29. package/dist/modules/auth/backend/auth/profile/page.js +141 -0
  30. package/dist/modules/auth/backend/auth/profile/page.js.map +7 -0
  31. package/dist/modules/auth/backend/auth/profile/page.meta.js +13 -0
  32. package/dist/modules/auth/backend/auth/profile/page.meta.js.map +7 -0
  33. package/dist/modules/auth/backend/roles/[id]/edit/page.js +4 -1
  34. package/dist/modules/auth/backend/roles/[id]/edit/page.js.map +2 -2
  35. package/dist/modules/auth/backend/roles/page.js +3 -3
  36. package/dist/modules/auth/backend/roles/page.js.map +2 -2
  37. package/dist/modules/auth/backend/users/[id]/edit/page.js +18 -3
  38. package/dist/modules/auth/backend/users/[id]/edit/page.js.map +2 -2
  39. package/dist/modules/auth/backend/users/create/page.js +15 -2
  40. package/dist/modules/auth/backend/users/create/page.js.map +2 -2
  41. package/dist/modules/auth/backend/users/page.js +3 -3
  42. package/dist/modules/auth/backend/users/page.js.map +2 -2
  43. package/dist/modules/auth/cli.js +25 -11
  44. package/dist/modules/auth/cli.js.map +2 -2
  45. package/dist/modules/auth/commands/users.js +59 -2
  46. package/dist/modules/auth/commands/users.js.map +2 -2
  47. package/dist/modules/auth/data/validators.js +6 -3
  48. package/dist/modules/auth/data/validators.js.map +2 -2
  49. package/dist/modules/auth/frontend/login.js +112 -3
  50. package/dist/modules/auth/frontend/login.js.map +2 -2
  51. package/dist/modules/auth/frontend/reset/[token]/page.js +20 -10
  52. package/dist/modules/auth/frontend/reset/[token]/page.js.map +2 -2
  53. package/dist/modules/auth/lib/setup-app.js +42 -8
  54. package/dist/modules/auth/lib/setup-app.js.map +2 -2
  55. package/dist/modules/auth/notifications.js +112 -0
  56. package/dist/modules/auth/notifications.js.map +7 -0
  57. package/dist/modules/auth/services/authService.js +24 -3
  58. package/dist/modules/auth/services/authService.js.map +2 -2
  59. package/dist/modules/business_rules/api/execute/route.js +7 -1
  60. package/dist/modules/business_rules/api/execute/route.js.map +2 -2
  61. package/dist/modules/business_rules/backend/rules/page.js +4 -0
  62. package/dist/modules/business_rules/backend/rules/page.js.map +2 -2
  63. package/dist/modules/business_rules/backend/sets/page.js +3 -0
  64. package/dist/modules/business_rules/backend/sets/page.js.map +2 -2
  65. package/dist/modules/business_rules/cli.js +2 -1
  66. package/dist/modules/business_rules/cli.js.map +2 -2
  67. package/dist/modules/business_rules/data/validators.js +0 -34
  68. package/dist/modules/business_rules/data/validators.js.map +2 -2
  69. package/dist/modules/business_rules/index.js +1 -21
  70. package/dist/modules/business_rules/index.js.map +2 -2
  71. package/dist/modules/business_rules/lib/rule-engine.js +34 -185
  72. package/dist/modules/business_rules/lib/rule-engine.js.map +2 -2
  73. package/dist/modules/business_rules/notifications.js +28 -0
  74. package/dist/modules/business_rules/notifications.js.map +7 -0
  75. package/dist/modules/business_rules/subscribers/rule-execution-failed-notification.js +37 -0
  76. package/dist/modules/business_rules/subscribers/rule-execution-failed-notification.js.map +7 -0
  77. package/dist/modules/catalog/components/PriceKindSettings.js +2 -0
  78. package/dist/modules/catalog/components/PriceKindSettings.js.map +2 -2
  79. package/dist/modules/catalog/components/categories/CategoriesDataTable.js +2 -2
  80. package/dist/modules/catalog/components/categories/CategoriesDataTable.js.map +2 -2
  81. package/dist/modules/catalog/components/products/ProductsDataTable.js +2 -0
  82. package/dist/modules/catalog/components/products/ProductsDataTable.js.map +2 -2
  83. package/dist/modules/catalog/notifications.js +28 -0
  84. package/dist/modules/catalog/notifications.js.map +7 -0
  85. package/dist/modules/catalog/subscribers/low-stock-notification.js +38 -0
  86. package/dist/modules/catalog/subscribers/low-stock-notification.js.map +7 -0
  87. package/dist/modules/configs/cli.js +6 -0
  88. package/dist/modules/configs/cli.js.map +2 -2
  89. package/dist/modules/configs/components/CachePanel.js +4 -4
  90. package/dist/modules/configs/components/CachePanel.js.map +2 -2
  91. package/dist/modules/configs/lib/system-status.js +48 -1
  92. package/dist/modules/configs/lib/system-status.js.map +2 -2
  93. package/dist/modules/configs/lib/upgrade-actions.js +18 -0
  94. package/dist/modules/configs/lib/upgrade-actions.js.map +2 -2
  95. package/dist/modules/currencies/backend/currencies/page.js +3 -0
  96. package/dist/modules/currencies/backend/currencies/page.js.map +2 -2
  97. package/dist/modules/currencies/backend/exchange-rates/page.js +2 -0
  98. package/dist/modules/currencies/backend/exchange-rates/page.js.map +2 -2
  99. package/dist/modules/customers/backend/customers/companies/page.js +3 -0
  100. package/dist/modules/customers/backend/customers/companies/page.js.map +2 -2
  101. package/dist/modules/customers/backend/customers/deals/page.js +3 -0
  102. package/dist/modules/customers/backend/customers/deals/page.js.map +2 -2
  103. package/dist/modules/customers/backend/customers/people/page.js +3 -0
  104. package/dist/modules/customers/backend/customers/people/page.js.map +2 -2
  105. package/dist/modules/customers/commands/deals.js +31 -0
  106. package/dist/modules/customers/commands/deals.js.map +2 -2
  107. package/dist/modules/customers/components/CustomerTodosTable.js +1 -0
  108. package/dist/modules/customers/components/CustomerTodosTable.js.map +2 -2
  109. package/dist/modules/customers/notifications.js +48 -0
  110. package/dist/modules/customers/notifications.js.map +7 -0
  111. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.js +2 -1
  112. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.js.map +2 -2
  113. package/dist/modules/customers/widgets/dashboard/new-customers/widget.js +2 -1
  114. package/dist/modules/customers/widgets/dashboard/new-customers/widget.js.map +2 -2
  115. package/dist/modules/customers/widgets/dashboard/new-deals/widget.js +2 -1
  116. package/dist/modules/customers/widgets/dashboard/new-deals/widget.js.map +2 -2
  117. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.js +2 -1
  118. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.js.map +2 -2
  119. package/dist/modules/dashboards/cli.js +44 -5
  120. package/dist/modules/dashboards/cli.js.map +2 -2
  121. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js +16 -11
  122. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js.map +3 -3
  123. package/dist/modules/dashboards/lib/role-widgets.js +58 -0
  124. package/dist/modules/dashboards/lib/role-widgets.js.map +7 -0
  125. package/dist/modules/dashboards/services/widgetDataService.js +139 -3
  126. package/dist/modules/dashboards/services/widgetDataService.js.map +2 -2
  127. package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.js +2 -1
  128. package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.js.map +2 -2
  129. package/dist/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.js +2 -1
  130. package/dist/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.js.map +2 -2
  131. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.js +2 -1
  132. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.js.map +2 -2
  133. package/dist/modules/dashboards/widgets/dashboard/orders-kpi/widget.js +2 -1
  134. package/dist/modules/dashboards/widgets/dashboard/orders-kpi/widget.js.map +2 -2
  135. package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js +2 -1
  136. package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js.map +2 -2
  137. package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.js +2 -1
  138. package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.js.map +2 -2
  139. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.js +2 -1
  140. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.js.map +2 -2
  141. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.js +2 -1
  142. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.js.map +2 -2
  143. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.js +2 -1
  144. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.js.map +2 -2
  145. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.js +2 -1
  146. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.js.map +2 -2
  147. package/dist/modules/dictionaries/components/DictionaryTable.js +2 -0
  148. package/dist/modules/dictionaries/components/DictionaryTable.js.map +2 -2
  149. package/dist/modules/directory/api/get/tenants/lookup.js +70 -0
  150. package/dist/modules/directory/api/get/tenants/lookup.js.map +7 -0
  151. package/dist/modules/directory/backend/directory/organizations/page.js +2 -2
  152. package/dist/modules/directory/backend/directory/organizations/page.js.map +2 -2
  153. package/dist/modules/directory/backend/directory/tenants/page.js +2 -2
  154. package/dist/modules/directory/backend/directory/tenants/page.js.map +2 -2
  155. package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js +2 -2
  156. package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js.map +2 -2
  157. package/dist/modules/entities/components/SystemEntitiesTable.js +1 -1
  158. package/dist/modules/entities/components/SystemEntitiesTable.js.map +2 -2
  159. package/dist/modules/entities/components/UserEntitiesTable.js +2 -2
  160. package/dist/modules/entities/components/UserEntitiesTable.js.map +2 -2
  161. package/dist/modules/feature_toggles/components/FeatureTogglesTable.js +3 -3
  162. package/dist/modules/feature_toggles/components/FeatureTogglesTable.js.map +2 -2
  163. package/dist/modules/feature_toggles/components/OverridesTable.js +1 -1
  164. package/dist/modules/feature_toggles/components/OverridesTable.js.map +2 -2
  165. package/dist/modules/notifications/acl.js +11 -0
  166. package/dist/modules/notifications/acl.js.map +7 -0
  167. package/dist/modules/notifications/api/[id]/action/route.js +74 -0
  168. package/dist/modules/notifications/api/[id]/action/route.js.map +7 -0
  169. package/dist/modules/notifications/api/[id]/dismiss/route.js +15 -0
  170. package/dist/modules/notifications/api/[id]/dismiss/route.js.map +7 -0
  171. package/dist/modules/notifications/api/[id]/read/route.js +15 -0
  172. package/dist/modules/notifications/api/[id]/read/route.js.map +7 -0
  173. package/dist/modules/notifications/api/[id]/restore/route.js +53 -0
  174. package/dist/modules/notifications/api/[id]/restore/route.js.map +7 -0
  175. package/dist/modules/notifications/api/batch/route.js +17 -0
  176. package/dist/modules/notifications/api/batch/route.js.map +7 -0
  177. package/dist/modules/notifications/api/feature/route.js +17 -0
  178. package/dist/modules/notifications/api/feature/route.js.map +7 -0
  179. package/dist/modules/notifications/api/mark-all-read/route.js +35 -0
  180. package/dist/modules/notifications/api/mark-all-read/route.js.map +7 -0
  181. package/dist/modules/notifications/api/openapi.js +76 -0
  182. package/dist/modules/notifications/api/openapi.js.map +7 -0
  183. package/dist/modules/notifications/api/role/route.js +17 -0
  184. package/dist/modules/notifications/api/role/route.js.map +7 -0
  185. package/dist/modules/notifications/api/route.js +85 -0
  186. package/dist/modules/notifications/api/route.js.map +7 -0
  187. package/dist/modules/notifications/api/settings/route.js +155 -0
  188. package/dist/modules/notifications/api/settings/route.js.map +7 -0
  189. package/dist/modules/notifications/api/unread-count/route.js +38 -0
  190. package/dist/modules/notifications/api/unread-count/route.js.map +7 -0
  191. package/dist/modules/notifications/backend/config/notifications/page.js +10 -0
  192. package/dist/modules/notifications/backend/config/notifications/page.js.map +7 -0
  193. package/dist/modules/notifications/backend/config/notifications/page.meta.js +24 -0
  194. package/dist/modules/notifications/backend/config/notifications/page.meta.js.map +7 -0
  195. package/dist/modules/notifications/cli.js +16 -0
  196. package/dist/modules/notifications/cli.js.map +7 -0
  197. package/dist/modules/notifications/data/entities.js +112 -0
  198. package/dist/modules/notifications/data/entities.js.map +7 -0
  199. package/dist/modules/notifications/data/validators.js +98 -0
  200. package/dist/modules/notifications/data/validators.js.map +7 -0
  201. package/dist/modules/notifications/di.js +13 -0
  202. package/dist/modules/notifications/di.js.map +7 -0
  203. package/dist/modules/notifications/emails/NotificationEmail.js +58 -0
  204. package/dist/modules/notifications/emails/NotificationEmail.js.map +7 -0
  205. package/dist/modules/notifications/frontend/NotificationInboxPageClient.js +44 -0
  206. package/dist/modules/notifications/frontend/NotificationInboxPageClient.js.map +7 -0
  207. package/dist/modules/notifications/frontend/NotificationSettingsPageClient.js +220 -0
  208. package/dist/modules/notifications/frontend/NotificationSettingsPageClient.js.map +7 -0
  209. package/dist/modules/notifications/index.js +14 -0
  210. package/dist/modules/notifications/index.js.map +7 -0
  211. package/dist/modules/notifications/lib/deliveryConfig.js +107 -0
  212. package/dist/modules/notifications/lib/deliveryConfig.js.map +7 -0
  213. package/dist/modules/notifications/lib/deliveryStrategies.js +14 -0
  214. package/dist/modules/notifications/lib/deliveryStrategies.js.map +7 -0
  215. package/dist/modules/notifications/lib/events.js +12 -0
  216. package/dist/modules/notifications/lib/events.js.map +7 -0
  217. package/dist/modules/notifications/lib/notificationBuilder.js +66 -0
  218. package/dist/modules/notifications/lib/notificationBuilder.js.map +7 -0
  219. package/dist/modules/notifications/lib/notificationFactory.js +54 -0
  220. package/dist/modules/notifications/lib/notificationFactory.js.map +7 -0
  221. package/dist/modules/notifications/lib/notificationMapper.js +34 -0
  222. package/dist/modules/notifications/lib/notificationMapper.js.map +7 -0
  223. package/dist/modules/notifications/lib/notificationRecipients.js +35 -0
  224. package/dist/modules/notifications/lib/notificationRecipients.js.map +7 -0
  225. package/dist/modules/notifications/lib/notificationService.js +279 -0
  226. package/dist/modules/notifications/lib/notificationService.js.map +7 -0
  227. package/dist/modules/notifications/lib/routeHelpers.js +101 -0
  228. package/dist/modules/notifications/lib/routeHelpers.js.map +7 -0
  229. package/dist/modules/notifications/lib/safeHref.js +24 -0
  230. package/dist/modules/notifications/lib/safeHref.js.map +7 -0
  231. package/dist/modules/notifications/migrations/Migration20260123000001.js +70 -0
  232. package/dist/modules/notifications/migrations/Migration20260123000001.js.map +7 -0
  233. package/dist/modules/notifications/migrations/Migration20260126150000.js +37 -0
  234. package/dist/modules/notifications/migrations/Migration20260126150000.js.map +7 -0
  235. package/dist/modules/notifications/migrations/Migration20260129082610.js +13 -0
  236. package/dist/modules/notifications/migrations/Migration20260129082610.js.map +7 -0
  237. package/dist/modules/notifications/subscribers/deliver-notification.js +165 -0
  238. package/dist/modules/notifications/subscribers/deliver-notification.js.map +7 -0
  239. package/dist/modules/notifications/workers/create-notification.worker.js +70 -0
  240. package/dist/modules/notifications/workers/create-notification.worker.js.map +7 -0
  241. package/dist/modules/planner/backend/planner/availability-rulesets/page.js +2 -2
  242. package/dist/modules/planner/backend/planner/availability-rulesets/page.js.map +2 -2
  243. package/dist/modules/query_index/cli.js +63 -7
  244. package/dist/modules/query_index/cli.js.map +2 -2
  245. package/dist/modules/query_index/components/QueryIndexesTable.js +7 -1
  246. package/dist/modules/query_index/components/QueryIndexesTable.js.map +2 -2
  247. package/dist/modules/resources/backend/resources/resource-types/page.js +2 -2
  248. package/dist/modules/resources/backend/resources/resource-types/page.js.map +2 -2
  249. package/dist/modules/resources/backend/resources/resources/page.js +2 -2
  250. package/dist/modules/resources/backend/resources/resources/page.js.map +2 -2
  251. package/dist/modules/sales/acl.js +0 -1
  252. package/dist/modules/sales/acl.js.map +2 -2
  253. package/dist/modules/sales/backend/sales/channels/offers/page.js +2 -0
  254. package/dist/modules/sales/backend/sales/channels/offers/page.js.map +2 -2
  255. package/dist/modules/sales/backend/sales/channels/page.js +2 -0
  256. package/dist/modules/sales/backend/sales/channels/page.js.map +2 -2
  257. package/dist/modules/sales/backend/sales/documents/[id]/page.js +0 -12
  258. package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
  259. package/dist/modules/sales/commands/documents.js +53 -62
  260. package/dist/modules/sales/commands/documents.js.map +2 -2
  261. package/dist/modules/sales/commands/payments.js +26 -0
  262. package/dist/modules/sales/commands/payments.js.map +2 -2
  263. package/dist/modules/sales/components/AdjustmentKindSettings.js +2 -2
  264. package/dist/modules/sales/components/AdjustmentKindSettings.js.map +2 -2
  265. package/dist/modules/sales/components/PaymentMethodsSettings.js +2 -2
  266. package/dist/modules/sales/components/PaymentMethodsSettings.js.map +2 -2
  267. package/dist/modules/sales/components/ShippingMethodsSettings.js +2 -2
  268. package/dist/modules/sales/components/ShippingMethodsSettings.js.map +2 -2
  269. package/dist/modules/sales/components/TaxRatesSettings.js +2 -2
  270. package/dist/modules/sales/components/TaxRatesSettings.js.map +2 -2
  271. package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js +2 -0
  272. package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js.map +2 -2
  273. package/dist/modules/sales/components/documents/AdjustmentsSection.js +2 -0
  274. package/dist/modules/sales/components/documents/AdjustmentsSection.js.map +2 -2
  275. package/dist/modules/sales/components/documents/PaymentsSection.js +2 -1
  276. package/dist/modules/sales/components/documents/PaymentsSection.js.map +2 -2
  277. package/dist/modules/sales/components/documents/SalesDocumentsTable.js +2 -0
  278. package/dist/modules/sales/components/documents/SalesDocumentsTable.js.map +2 -2
  279. package/dist/modules/sales/lib/dictionaries.js +0 -3
  280. package/dist/modules/sales/lib/dictionaries.js.map +2 -2
  281. package/dist/modules/sales/notifications.client.js +51 -0
  282. package/dist/modules/sales/notifications.client.js.map +7 -0
  283. package/dist/modules/sales/notifications.js +88 -0
  284. package/dist/modules/sales/notifications.js.map +7 -0
  285. package/dist/modules/sales/subscribers/quote-expiring-notification.js +38 -0
  286. package/dist/modules/sales/subscribers/quote-expiring-notification.js.map +7 -0
  287. package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js +137 -0
  288. package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js.map +7 -0
  289. package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js +137 -0
  290. package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js.map +7 -0
  291. package/dist/modules/sales/widgets/notifications/index.js +7 -0
  292. package/dist/modules/sales/widgets/notifications/index.js.map +7 -0
  293. package/dist/modules/sales/widgets/notifications/useSalesDocumentTotals.js +60 -0
  294. package/dist/modules/sales/widgets/notifications/useSalesDocumentTotals.js.map +7 -0
  295. package/dist/modules/staff/backend/staff/team-members/page.js +1 -1
  296. package/dist/modules/staff/backend/staff/team-members/page.js.map +2 -2
  297. package/dist/modules/staff/backend/staff/team-roles/page.js +2 -2
  298. package/dist/modules/staff/backend/staff/team-roles/page.js.map +2 -2
  299. package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js +2 -2
  300. package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js.map +2 -2
  301. package/dist/modules/staff/backend/staff/teams/page.js +2 -2
  302. package/dist/modules/staff/backend/staff/teams/page.js.map +2 -2
  303. package/dist/modules/staff/commands/leave-requests.js +79 -0
  304. package/dist/modules/staff/commands/leave-requests.js.map +2 -2
  305. package/dist/modules/staff/notifications.js +75 -0
  306. package/dist/modules/staff/notifications.js.map +7 -0
  307. package/dist/modules/workflows/acl.js +0 -2
  308. package/dist/modules/workflows/acl.js.map +2 -2
  309. package/dist/modules/workflows/api/instances/route.js +6 -18
  310. package/dist/modules/workflows/api/instances/route.js.map +2 -2
  311. package/dist/modules/workflows/api/tasks/route.js +1 -6
  312. package/dist/modules/workflows/api/tasks/route.js.map +2 -2
  313. package/dist/modules/workflows/backend/definitions/[id]/page.js +1 -9
  314. package/dist/modules/workflows/backend/definitions/[id]/page.js.map +2 -2
  315. package/dist/modules/workflows/backend/definitions/[id]/page.meta.js +1 -1
  316. package/dist/modules/workflows/backend/definitions/[id]/page.meta.js.map +2 -2
  317. package/dist/modules/workflows/backend/definitions/create/page.js +15 -24
  318. package/dist/modules/workflows/backend/definitions/create/page.js.map +2 -2
  319. package/dist/modules/workflows/backend/definitions/create/page.meta.js +1 -1
  320. package/dist/modules/workflows/backend/definitions/create/page.meta.js.map +2 -2
  321. package/dist/modules/workflows/backend/definitions/page.js +5 -0
  322. package/dist/modules/workflows/backend/definitions/page.js.map +2 -2
  323. package/dist/modules/workflows/backend/definitions/visual-editor/page.js +132 -150
  324. package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +2 -2
  325. package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js +1 -1
  326. package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js.map +2 -2
  327. package/dist/modules/workflows/backend/events/[id]/page.js +1 -1
  328. package/dist/modules/workflows/backend/events/[id]/page.js.map +2 -2
  329. package/dist/modules/workflows/backend/events/[id]/page.meta.js +2 -2
  330. package/dist/modules/workflows/backend/events/[id]/page.meta.js.map +2 -2
  331. package/dist/modules/workflows/backend/instances/[id]/page.meta.js +2 -2
  332. package/dist/modules/workflows/backend/instances/[id]/page.meta.js.map +2 -2
  333. package/dist/modules/workflows/backend/instances/page.js +3 -0
  334. package/dist/modules/workflows/backend/instances/page.js.map +2 -2
  335. package/dist/modules/workflows/backend/tasks/[id]/page.js +1 -1
  336. package/dist/modules/workflows/backend/tasks/[id]/page.js.map +2 -2
  337. package/dist/modules/workflows/backend/tasks/[id]/page.meta.js +2 -2
  338. package/dist/modules/workflows/backend/tasks/[id]/page.meta.js.map +2 -2
  339. package/dist/modules/workflows/backend/tasks/page.js +9 -5
  340. package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
  341. package/dist/modules/workflows/cli.js +15 -93
  342. package/dist/modules/workflows/cli.js.map +3 -3
  343. package/dist/modules/workflows/data/entities.js +1 -64
  344. package/dist/modules/workflows/data/entities.js.map +2 -2
  345. package/dist/modules/workflows/data/validators.js +0 -115
  346. package/dist/modules/workflows/data/validators.js.map +2 -2
  347. package/dist/modules/workflows/examples/checkout-demo-definition.json +5 -1
  348. package/dist/modules/workflows/lib/activity-executor.js +13 -75
  349. package/dist/modules/workflows/lib/activity-executor.js.map +2 -2
  350. package/dist/modules/workflows/lib/graph-utils.js +2 -71
  351. package/dist/modules/workflows/lib/graph-utils.js.map +2 -2
  352. package/dist/modules/workflows/lib/seeds.js +5 -22
  353. package/dist/modules/workflows/lib/seeds.js.map +2 -2
  354. package/dist/modules/workflows/lib/start-validator.js +23 -33
  355. package/dist/modules/workflows/lib/start-validator.js.map +2 -2
  356. package/dist/modules/workflows/lib/transition-handler.js +57 -161
  357. package/dist/modules/workflows/lib/transition-handler.js.map +3 -3
  358. package/dist/modules/workflows/notifications.js +28 -0
  359. package/dist/modules/workflows/notifications.js.map +7 -0
  360. package/dist/modules/workflows/subscribers/task-assigned-notification.js +38 -0
  361. package/dist/modules/workflows/subscribers/task-assigned-notification.js.map +7 -0
  362. package/generated/entities/notification/index.ts +27 -0
  363. package/generated/entities.ids.generated.ts +5 -2
  364. package/generated/entity-fields-registry.ts +2 -2
  365. package/package.json +2 -2
  366. package/src/modules/api_docs/frontend/docs/api/page.tsx +3 -2
  367. package/src/modules/api_keys/backend/api-keys/page.tsx +1 -1
  368. package/src/modules/attachments/components/AttachmentLibrary.tsx +4 -0
  369. package/src/modules/attachments/components/AttachmentPartitionSettings.tsx +2 -0
  370. package/src/modules/auth/README.md +1 -1
  371. package/src/modules/auth/__tests__/cli-setup-acl.test.ts +1 -1
  372. package/src/modules/auth/api/__tests__/login.test.ts +2 -0
  373. package/src/modules/auth/api/admin/nav.ts +10 -6
  374. package/src/modules/auth/api/login.ts +26 -7
  375. package/src/modules/auth/api/profile/route.ts +163 -0
  376. package/src/modules/auth/api/reset/confirm.ts +25 -2
  377. package/src/modules/auth/api/reset.ts +23 -0
  378. package/src/modules/auth/api/sidebar/preferences/route.ts +21 -12
  379. package/src/modules/auth/api/users/route.ts +5 -2
  380. package/src/modules/auth/backend/auth/profile/page.meta.ts +9 -0
  381. package/src/modules/auth/backend/auth/profile/page.tsx +174 -0
  382. package/src/modules/auth/backend/roles/[id]/edit/page.tsx +4 -1
  383. package/src/modules/auth/backend/roles/page.tsx +3 -3
  384. package/src/modules/auth/backend/users/[id]/edit/page.tsx +22 -3
  385. package/src/modules/auth/backend/users/create/page.tsx +19 -2
  386. package/src/modules/auth/backend/users/page.tsx +3 -3
  387. package/src/modules/auth/cli.ts +38 -11
  388. package/src/modules/auth/commands/users.ts +73 -2
  389. package/src/modules/auth/data/validators.ts +6 -2
  390. package/src/modules/auth/frontend/login.tsx +134 -5
  391. package/src/modules/auth/frontend/reset/[token]/page.tsx +24 -11
  392. package/src/modules/auth/i18n/de.json +48 -1
  393. package/src/modules/auth/i18n/en.json +48 -1
  394. package/src/modules/auth/i18n/es.json +48 -1
  395. package/src/modules/auth/i18n/pl.json +48 -1
  396. package/src/modules/auth/lib/setup-app.ts +58 -9
  397. package/src/modules/auth/notifications.ts +109 -0
  398. package/src/modules/auth/services/authService.ts +27 -4
  399. package/src/modules/business_rules/api/execute/route.ts +8 -1
  400. package/src/modules/business_rules/backend/rules/page.tsx +4 -0
  401. package/src/modules/business_rules/backend/sets/page.tsx +3 -0
  402. package/src/modules/business_rules/cli.ts +2 -1
  403. package/src/modules/business_rules/data/validators.ts +0 -40
  404. package/src/modules/business_rules/i18n/en.json +3 -1
  405. package/src/modules/business_rules/index.ts +0 -25
  406. package/src/modules/business_rules/lib/__tests__/rule-engine.test.ts +51 -0
  407. package/src/modules/business_rules/lib/rule-engine.ts +51 -277
  408. package/src/modules/business_rules/notifications.ts +25 -0
  409. package/src/modules/business_rules/subscribers/rule-execution-failed-notification.ts +50 -0
  410. package/src/modules/catalog/components/PriceKindSettings.tsx +2 -0
  411. package/src/modules/catalog/components/categories/CategoriesDataTable.tsx +2 -2
  412. package/src/modules/catalog/components/products/ProductsDataTable.tsx +2 -0
  413. package/src/modules/catalog/i18n/en.json +3 -1
  414. package/src/modules/catalog/notifications.ts +25 -0
  415. package/src/modules/catalog/subscribers/low-stock-notification.ts +52 -0
  416. package/src/modules/configs/cli.ts +6 -0
  417. package/src/modules/configs/components/CachePanel.tsx +4 -4
  418. package/src/modules/configs/i18n/en.json +12 -2
  419. package/src/modules/configs/i18n/pl.json +12 -2
  420. package/src/modules/configs/lib/system-status.ts +48 -1
  421. package/src/modules/configs/lib/system-status.types.ts +1 -0
  422. package/src/modules/configs/lib/upgrade-actions.ts +18 -0
  423. package/src/modules/currencies/backend/currencies/page.tsx +3 -0
  424. package/src/modules/currencies/backend/exchange-rates/page.tsx +2 -0
  425. package/src/modules/customers/backend/customers/companies/page.tsx +3 -0
  426. package/src/modules/customers/backend/customers/deals/page.tsx +3 -0
  427. package/src/modules/customers/backend/customers/people/page.tsx +3 -0
  428. package/src/modules/customers/commands/deals.ts +39 -0
  429. package/src/modules/customers/components/CustomerTodosTable.tsx +1 -0
  430. package/src/modules/customers/i18n/en.json +5 -1
  431. package/src/modules/customers/notifications.ts +44 -0
  432. package/src/modules/customers/widgets/dashboard/customer-todos/widget.ts +2 -2
  433. package/src/modules/customers/widgets/dashboard/new-customers/widget.ts +2 -2
  434. package/src/modules/customers/widgets/dashboard/new-deals/widget.ts +2 -2
  435. package/src/modules/customers/widgets/dashboard/next-interactions/widget.ts +2 -2
  436. package/src/modules/dashboards/cli.ts +55 -5
  437. package/src/modules/dashboards/components/WidgetVisibilityEditor.tsx +22 -11
  438. package/src/modules/dashboards/lib/role-widgets.ts +80 -0
  439. package/src/modules/dashboards/services/widgetDataService.ts +164 -4
  440. package/src/modules/dashboards/widgets/dashboard/aov-kpi/widget.ts +2 -2
  441. package/src/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.ts +2 -2
  442. package/src/modules/dashboards/widgets/dashboard/orders-by-status/widget.ts +2 -2
  443. package/src/modules/dashboards/widgets/dashboard/orders-kpi/widget.ts +2 -2
  444. package/src/modules/dashboards/widgets/dashboard/pipeline-summary/widget.ts +2 -2
  445. package/src/modules/dashboards/widgets/dashboard/revenue-kpi/widget.ts +2 -2
  446. package/src/modules/dashboards/widgets/dashboard/revenue-trend/widget.ts +2 -2
  447. package/src/modules/dashboards/widgets/dashboard/sales-by-region/widget.ts +2 -2
  448. package/src/modules/dashboards/widgets/dashboard/top-customers/widget.ts +2 -2
  449. package/src/modules/dashboards/widgets/dashboard/top-products/widget.ts +2 -2
  450. package/src/modules/dictionaries/components/DictionaryTable.tsx +2 -0
  451. package/src/modules/directory/api/get/tenants/lookup.ts +75 -0
  452. package/src/modules/directory/backend/directory/organizations/page.tsx +2 -2
  453. package/src/modules/directory/backend/directory/tenants/page.tsx +2 -2
  454. package/src/modules/entities/backend/entities/user/[entityId]/records/page.tsx +2 -2
  455. package/src/modules/entities/components/SystemEntitiesTable.tsx +1 -1
  456. package/src/modules/entities/components/UserEntitiesTable.tsx +2 -2
  457. package/src/modules/feature_toggles/components/FeatureTogglesTable.tsx +3 -4
  458. package/src/modules/feature_toggles/components/OverridesTable.tsx +1 -1
  459. package/src/modules/notifications/__tests__/deliver-notification.test.ts +195 -0
  460. package/src/modules/notifications/__tests__/deliveryStrategies.test.ts +19 -0
  461. package/src/modules/notifications/__tests__/notificationService.test.ts +208 -0
  462. package/src/modules/notifications/acl.ts +7 -0
  463. package/src/modules/notifications/api/[id]/action/route.ts +75 -0
  464. package/src/modules/notifications/api/[id]/dismiss/route.ts +12 -0
  465. package/src/modules/notifications/api/[id]/read/route.ts +12 -0
  466. package/src/modules/notifications/api/[id]/restore/route.ts +53 -0
  467. package/src/modules/notifications/api/batch/route.ts +14 -0
  468. package/src/modules/notifications/api/feature/route.ts +14 -0
  469. package/src/modules/notifications/api/mark-all-read/route.ts +34 -0
  470. package/src/modules/notifications/api/openapi.ts +76 -0
  471. package/src/modules/notifications/api/role/route.ts +14 -0
  472. package/src/modules/notifications/api/route.ts +92 -0
  473. package/src/modules/notifications/api/settings/route.ts +157 -0
  474. package/src/modules/notifications/api/unread-count/route.ts +38 -0
  475. package/src/modules/notifications/backend/config/notifications/page.meta.ts +22 -0
  476. package/src/modules/notifications/backend/config/notifications/page.tsx +12 -0
  477. package/src/modules/notifications/cli.ts +18 -0
  478. package/src/modules/notifications/data/entities.ts +99 -0
  479. package/src/modules/notifications/data/validators.ts +115 -0
  480. package/src/modules/notifications/di.ts +11 -0
  481. package/src/modules/notifications/emails/NotificationEmail.tsx +98 -0
  482. package/src/modules/notifications/frontend/NotificationInboxPageClient.tsx +42 -0
  483. package/src/modules/notifications/frontend/NotificationSettingsPageClient.tsx +233 -0
  484. package/src/modules/notifications/i18n/de.json +50 -0
  485. package/src/modules/notifications/i18n/en.json +50 -0
  486. package/src/modules/notifications/i18n/es.json +50 -0
  487. package/src/modules/notifications/i18n/pl.json +50 -0
  488. package/src/modules/notifications/index.ts +12 -0
  489. package/src/modules/notifications/lib/deliveryConfig.ts +153 -0
  490. package/src/modules/notifications/lib/deliveryStrategies.ts +50 -0
  491. package/src/modules/notifications/lib/events.ts +48 -0
  492. package/src/modules/notifications/lib/notificationBuilder.ts +121 -0
  493. package/src/modules/notifications/lib/notificationFactory.ts +76 -0
  494. package/src/modules/notifications/lib/notificationMapper.ts +33 -0
  495. package/src/modules/notifications/lib/notificationRecipients.ts +83 -0
  496. package/src/modules/notifications/lib/notificationService.ts +414 -0
  497. package/src/modules/notifications/lib/routeHelpers.ts +151 -0
  498. package/src/modules/notifications/lib/safeHref.ts +29 -0
  499. package/src/modules/notifications/migrations/.snapshot-open-mercato.json +336 -0
  500. package/src/modules/notifications/migrations/Migration20260123000001.ts +73 -0
  501. package/src/modules/notifications/migrations/Migration20260126150000.ts +39 -0
  502. package/src/modules/notifications/migrations/Migration20260129082610.ts +13 -0
  503. package/src/modules/notifications/subscribers/deliver-notification.ts +204 -0
  504. package/src/modules/notifications/workers/create-notification.worker.ts +122 -0
  505. package/src/modules/planner/backend/planner/availability-rulesets/page.tsx +2 -2
  506. package/src/modules/query_index/cli.ts +82 -13
  507. package/src/modules/query_index/components/QueryIndexesTable.tsx +8 -2
  508. package/src/modules/resources/backend/resources/resource-types/page.tsx +2 -2
  509. package/src/modules/resources/backend/resources/resources/page.tsx +2 -2
  510. package/src/modules/sales/acl.ts +0 -1
  511. package/src/modules/sales/backend/sales/channels/offers/page.tsx +2 -0
  512. package/src/modules/sales/backend/sales/channels/page.tsx +2 -0
  513. package/src/modules/sales/backend/sales/documents/[id]/page.tsx +0 -16
  514. package/src/modules/sales/commands/documents.ts +62 -70
  515. package/src/modules/sales/commands/payments.ts +33 -0
  516. package/src/modules/sales/components/AdjustmentKindSettings.tsx +2 -2
  517. package/src/modules/sales/components/PaymentMethodsSettings.tsx +2 -2
  518. package/src/modules/sales/components/ShippingMethodsSettings.tsx +2 -2
  519. package/src/modules/sales/components/TaxRatesSettings.tsx +2 -2
  520. package/src/modules/sales/components/channels/SalesChannelOffersPanel.tsx +2 -0
  521. package/src/modules/sales/components/documents/AdjustmentsSection.tsx +2 -0
  522. package/src/modules/sales/components/documents/PaymentsSection.tsx +2 -1
  523. package/src/modules/sales/components/documents/SalesDocumentsTable.tsx +2 -0
  524. package/src/modules/sales/i18n/de.json +20 -0
  525. package/src/modules/sales/i18n/en.json +25 -1
  526. package/src/modules/sales/i18n/es.json +20 -0
  527. package/src/modules/sales/i18n/pl.json +20 -0
  528. package/src/modules/sales/lib/dictionaries.ts +0 -3
  529. package/src/modules/sales/notifications.client.ts +65 -0
  530. package/src/modules/sales/notifications.ts +82 -0
  531. package/src/modules/sales/subscribers/quote-expiring-notification.ts +53 -0
  532. package/src/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.tsx +156 -0
  533. package/src/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.tsx +156 -0
  534. package/src/modules/sales/widgets/notifications/index.ts +2 -0
  535. package/src/modules/sales/widgets/notifications/useSalesDocumentTotals.ts +81 -0
  536. package/src/modules/staff/backend/staff/team-members/page.tsx +1 -1
  537. package/src/modules/staff/backend/staff/team-roles/page.tsx +2 -2
  538. package/src/modules/staff/backend/staff/teams/[id]/edit/page.tsx +2 -2
  539. package/src/modules/staff/backend/staff/teams/page.tsx +2 -2
  540. package/src/modules/staff/commands/leave-requests.ts +94 -0
  541. package/src/modules/staff/i18n/de.json +4 -0
  542. package/src/modules/staff/i18n/en.json +9 -1
  543. package/src/modules/staff/i18n/es.json +4 -0
  544. package/src/modules/staff/i18n/pl.json +4 -0
  545. package/src/modules/staff/notifications.ts +71 -0
  546. package/src/modules/workflows/acl.ts +0 -2
  547. package/src/modules/workflows/api/__tests__/instances.route.test.ts +2 -5
  548. package/src/modules/workflows/api/instances/route.ts +7 -21
  549. package/src/modules/workflows/api/tasks/route.ts +1 -7
  550. package/src/modules/workflows/backend/definitions/[id]/page.meta.ts +1 -1
  551. package/src/modules/workflows/backend/definitions/[id]/page.tsx +0 -9
  552. package/src/modules/workflows/backend/definitions/create/page.meta.ts +1 -1
  553. package/src/modules/workflows/backend/definitions/create/page.tsx +0 -9
  554. package/src/modules/workflows/backend/definitions/page.tsx +5 -0
  555. package/src/modules/workflows/backend/definitions/visual-editor/page.meta.ts +1 -1
  556. package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +3 -21
  557. package/src/modules/workflows/backend/events/[id]/page.meta.ts +2 -2
  558. package/src/modules/workflows/backend/events/[id]/page.tsx +1 -1
  559. package/src/modules/workflows/backend/instances/[id]/page.meta.ts +2 -2
  560. package/src/modules/workflows/backend/instances/page.tsx +4 -1
  561. package/src/modules/workflows/backend/tasks/[id]/page.meta.ts +2 -2
  562. package/src/modules/workflows/backend/tasks/[id]/page.tsx +1 -1
  563. package/src/modules/workflows/backend/tasks/page.tsx +10 -6
  564. package/src/modules/workflows/cli.ts +12 -123
  565. package/src/modules/workflows/data/entities.ts +0 -124
  566. package/src/modules/workflows/data/validators.ts +0 -138
  567. package/src/modules/workflows/examples/checkout-demo-definition.json +5 -1
  568. package/src/modules/workflows/i18n/en.json +3 -72
  569. package/src/modules/workflows/lib/__tests__/activity-executor.test.ts +36 -43
  570. package/src/modules/workflows/lib/__tests__/transition-handler.test.ts +90 -170
  571. package/src/modules/workflows/lib/activity-executor.ts +16 -129
  572. package/src/modules/workflows/lib/graph-utils.ts +2 -117
  573. package/src/modules/workflows/lib/seeds.ts +8 -34
  574. package/src/modules/workflows/lib/start-validator.ts +28 -38
  575. package/src/modules/workflows/lib/transition-handler.ts +71 -212
  576. package/src/modules/workflows/notifications.ts +25 -0
  577. package/src/modules/workflows/subscribers/task-assigned-notification.ts +53 -0
  578. package/dist/generated/entities/workflow_event_trigger/index.js +0 -33
  579. package/dist/generated/entities/workflow_event_trigger/index.js.map +0 -7
  580. package/dist/modules/auth/events.js +0 -30
  581. package/dist/modules/auth/events.js.map +0 -7
  582. package/dist/modules/business_rules/api/execute/[ruleId]/route.js +0 -145
  583. package/dist/modules/business_rules/api/execute/[ruleId]/route.js.map +0 -7
  584. package/dist/modules/catalog/events.js +0 -34
  585. package/dist/modules/catalog/events.js.map +0 -7
  586. package/dist/modules/customers/events.js +0 -49
  587. package/dist/modules/customers/events.js.map +0 -7
  588. package/dist/modules/directory/events.js +0 -23
  589. package/dist/modules/directory/events.js.map +0 -7
  590. package/dist/modules/sales/events.js +0 -63
  591. package/dist/modules/sales/events.js.map +0 -7
  592. package/dist/modules/sales/lib/frontend/documentDataEvents.js +0 -25
  593. package/dist/modules/sales/lib/frontend/documentDataEvents.js.map +0 -7
  594. package/dist/modules/workflows/components/DefinitionTriggersEditor.js +0 -481
  595. package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +0 -7
  596. package/dist/modules/workflows/components/EventTriggersEditor.js +0 -553
  597. package/dist/modules/workflows/components/EventTriggersEditor.js.map +0 -7
  598. package/dist/modules/workflows/events.js +0 -38
  599. package/dist/modules/workflows/events.js.map +0 -7
  600. package/dist/modules/workflows/examples/order-approval-definition.json +0 -257
  601. package/dist/modules/workflows/examples/order-approval-guard-rules.json +0 -32
  602. package/dist/modules/workflows/lib/event-trigger-service.js +0 -308
  603. package/dist/modules/workflows/lib/event-trigger-service.js.map +0 -7
  604. package/dist/modules/workflows/migrations/Migration20260123143500.js +0 -36
  605. package/dist/modules/workflows/migrations/Migration20260123143500.js.map +0 -7
  606. package/dist/modules/workflows/subscribers/event-trigger.js +0 -78
  607. package/dist/modules/workflows/subscribers/event-trigger.js.map +0 -7
  608. package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js +0 -323
  609. package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js.map +0 -7
  610. package/dist/modules/workflows/widgets/injection/order-approval/widget.js +0 -17
  611. package/dist/modules/workflows/widgets/injection/order-approval/widget.js.map +0 -7
  612. package/dist/modules/workflows/widgets/injection-table.js +0 -19
  613. package/dist/modules/workflows/widgets/injection-table.js.map +0 -7
  614. package/generated/entities/workflow_event_trigger/index.ts +0 -15
  615. package/src/modules/auth/events.ts +0 -39
  616. package/src/modules/business_rules/api/execute/[ruleId]/route.ts +0 -163
  617. package/src/modules/catalog/events.ts +0 -45
  618. package/src/modules/customers/events.ts +0 -63
  619. package/src/modules/directory/events.ts +0 -31
  620. package/src/modules/sales/events.ts +0 -82
  621. package/src/modules/sales/lib/frontend/documentDataEvents.ts +0 -28
  622. package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +0 -581
  623. package/src/modules/workflows/components/EventTriggersEditor.tsx +0 -664
  624. package/src/modules/workflows/events.ts +0 -49
  625. package/src/modules/workflows/examples/order-approval-definition.json +0 -257
  626. package/src/modules/workflows/examples/order-approval-guard-rules.json +0 -32
  627. package/src/modules/workflows/lib/event-trigger-service.ts +0 -557
  628. package/src/modules/workflows/migrations/Migration20260123143500.ts +0 -38
  629. package/src/modules/workflows/subscribers/event-trigger.ts +0 -109
  630. package/src/modules/workflows/widgets/injection/order-approval/widget.client.tsx +0 -446
  631. package/src/modules/workflows/widgets/injection/order-approval/widget.ts +0 -16
  632. package/src/modules/workflows/widgets/injection-table.ts +0 -21
@@ -1,664 +0,0 @@
1
- "use client"
2
-
3
- import * as React from 'react'
4
- import { useState, useCallback } from 'react'
5
- import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'
6
- import { Button } from '@open-mercato/ui/primitives/button'
7
- import { Input } from '@open-mercato/ui/primitives/input'
8
- import { Textarea } from '@open-mercato/ui/primitives/textarea'
9
- import { Label } from '@open-mercato/ui/primitives/label'
10
- import { Switch } from '@open-mercato/ui/primitives/switch'
11
- import { Spinner } from '@open-mercato/ui/primitives/spinner'
12
- import { Badge } from '@open-mercato/ui/primitives/badge'
13
- import {
14
- Dialog,
15
- DialogContent,
16
- DialogDescription,
17
- DialogFooter,
18
- DialogHeader,
19
- DialogTitle,
20
- } from '@open-mercato/ui/primitives/dialog'
21
- import { Alert, AlertDescription, AlertTitle } from '@open-mercato/ui/primitives/alert'
22
- import { apiCall } from '@open-mercato/ui/backend/utils/apiCall'
23
- import { flash } from '@open-mercato/ui/backend/FlashMessages'
24
- import { EventSelect } from '@open-mercato/ui/backend/inputs/EventSelect'
25
- import { useT } from '@open-mercato/shared/lib/i18n/context'
26
- import { Plus, Trash2, Edit2, Zap, AlertCircle, X } from 'lucide-react'
27
-
28
- interface EventTrigger {
29
- id: string
30
- name: string
31
- description?: string | null
32
- eventPattern: string
33
- config?: {
34
- filterConditions?: Array<{
35
- field: string
36
- operator: string
37
- value: unknown
38
- }>
39
- contextMapping?: Array<{
40
- targetKey: string
41
- sourceExpression: string
42
- defaultValue?: unknown
43
- }>
44
- debounceMs?: number
45
- maxConcurrentInstances?: number
46
- } | null
47
- enabled: boolean
48
- priority: number
49
- workflowDefinitionId: string
50
- createdAt: string
51
- updatedAt: string
52
- }
53
-
54
- interface EventTriggersEditorProps {
55
- workflowDefinitionId: string
56
- workflowId?: string
57
- className?: string
58
- }
59
-
60
- const FILTER_OPERATORS = [
61
- { value: 'eq', label: 'Equals' },
62
- { value: 'neq', label: 'Not Equals' },
63
- { value: 'gt', label: 'Greater Than' },
64
- { value: 'gte', label: 'Greater Than or Equal' },
65
- { value: 'lt', label: 'Less Than' },
66
- { value: 'lte', label: 'Less Than or Equal' },
67
- { value: 'contains', label: 'Contains' },
68
- { value: 'startsWith', label: 'Starts With' },
69
- { value: 'endsWith', label: 'Ends With' },
70
- { value: 'in', label: 'In (array)' },
71
- { value: 'notIn', label: 'Not In (array)' },
72
- { value: 'exists', label: 'Exists' },
73
- { value: 'notExists', label: 'Not Exists' },
74
- { value: 'regex', label: 'Regex Match' },
75
- ]
76
-
77
- type TriggerFormValues = {
78
- name: string
79
- description: string
80
- eventPattern: string
81
- enabled: boolean
82
- priority: number
83
- filterConditions: Array<{ field: string; operator: string; value: string }>
84
- contextMappings: Array<{ targetKey: string; sourceExpression: string; defaultValue: string }>
85
- debounceMs: string
86
- maxConcurrentInstances: string
87
- }
88
-
89
- const defaultFormValues: TriggerFormValues = {
90
- name: '',
91
- description: '',
92
- eventPattern: '',
93
- enabled: true,
94
- priority: 0,
95
- filterConditions: [],
96
- contextMappings: [],
97
- debounceMs: '',
98
- maxConcurrentInstances: '',
99
- }
100
-
101
- export function EventTriggersEditor({
102
- workflowDefinitionId,
103
- workflowId,
104
- className,
105
- }: EventTriggersEditorProps) {
106
- const t = useT()
107
- const queryClient = useQueryClient()
108
- const [showDialog, setShowDialog] = useState(false)
109
- const [editingTrigger, setEditingTrigger] = useState<EventTrigger | null>(null)
110
- const [formValues, setFormValues] = useState<TriggerFormValues>(defaultFormValues)
111
- const [deleteConfirmId, setDeleteConfirmId] = useState<string | null>(null)
112
-
113
- // Fetch triggers for this workflow definition
114
- const { data: triggersData, isLoading } = useQuery({
115
- queryKey: ['workflow-triggers', workflowDefinitionId],
116
- queryFn: async () => {
117
- const result = await apiCall<{ data: EventTrigger[]; pagination: any }>(
118
- `/api/workflows/triggers?workflowDefinitionId=${workflowDefinitionId}&limit=100`
119
- )
120
- if (!result.ok) {
121
- throw new Error('Failed to load triggers')
122
- }
123
- return result.result?.data || []
124
- },
125
- enabled: !!workflowDefinitionId,
126
- })
127
-
128
- const triggers = triggersData || []
129
-
130
- // Create trigger mutation
131
- const createMutation = useMutation({
132
- mutationFn: async (values: TriggerFormValues) => {
133
- const payload = buildTriggerPayload(values)
134
- const result = await apiCall<{ data: EventTrigger; error?: string }>(
135
- '/api/workflows/triggers',
136
- {
137
- method: 'POST',
138
- headers: { 'Content-Type': 'application/json' },
139
- body: JSON.stringify({
140
- ...payload,
141
- workflowDefinitionId,
142
- }),
143
- }
144
- )
145
- if (!result.ok) {
146
- throw new Error(result.result?.error || 'Failed to create trigger')
147
- }
148
- return result.result?.data
149
- },
150
- onSuccess: () => {
151
- queryClient.invalidateQueries({ queryKey: ['workflow-triggers', workflowDefinitionId] })
152
- flash('Event trigger created successfully', 'success')
153
- handleCloseDialog()
154
- },
155
- onError: (error: Error) => {
156
- flash(error.message, 'error')
157
- },
158
- })
159
-
160
- // Update trigger mutation
161
- const updateMutation = useMutation({
162
- mutationFn: async ({ id, values }: { id: string; values: TriggerFormValues }) => {
163
- const payload = buildTriggerPayload(values)
164
- const result = await apiCall<{ data: EventTrigger; error?: string }>(
165
- `/api/workflows/triggers/${id}`,
166
- {
167
- method: 'PUT',
168
- headers: { 'Content-Type': 'application/json' },
169
- body: JSON.stringify(payload),
170
- }
171
- )
172
- if (!result.ok) {
173
- throw new Error(result.result?.error || 'Failed to update trigger')
174
- }
175
- return result.result?.data
176
- },
177
- onSuccess: () => {
178
- queryClient.invalidateQueries({ queryKey: ['workflow-triggers', workflowDefinitionId] })
179
- flash('Event trigger updated successfully', 'success')
180
- handleCloseDialog()
181
- },
182
- onError: (error: Error) => {
183
- flash(error.message, 'error')
184
- },
185
- })
186
-
187
- // Delete trigger mutation
188
- const deleteMutation = useMutation({
189
- mutationFn: async (id: string) => {
190
- const result = await apiCall<{ error?: string }>(
191
- `/api/workflows/triggers/${id}`,
192
- { method: 'DELETE' }
193
- )
194
- if (!result.ok) {
195
- throw new Error(result.result?.error || 'Failed to delete trigger')
196
- }
197
- },
198
- onSuccess: () => {
199
- queryClient.invalidateQueries({ queryKey: ['workflow-triggers', workflowDefinitionId] })
200
- flash('Event trigger deleted successfully', 'success')
201
- setDeleteConfirmId(null)
202
- },
203
- onError: (error: Error) => {
204
- flash(error.message, 'error')
205
- },
206
- })
207
-
208
- // Build API payload from form values
209
- const buildTriggerPayload = useCallback((values: TriggerFormValues) => {
210
- const config: EventTrigger['config'] = {}
211
-
212
- if (values.filterConditions.length > 0) {
213
- config.filterConditions = values.filterConditions.map(fc => ({
214
- field: fc.field,
215
- operator: fc.operator,
216
- value: parseConditionValue(fc.value),
217
- }))
218
- }
219
-
220
- if (values.contextMappings.length > 0) {
221
- config.contextMapping = values.contextMappings.map(cm => ({
222
- targetKey: cm.targetKey,
223
- sourceExpression: cm.sourceExpression,
224
- defaultValue: cm.defaultValue ? parseConditionValue(cm.defaultValue) : undefined,
225
- }))
226
- }
227
-
228
- if (values.debounceMs) {
229
- config.debounceMs = parseInt(values.debounceMs, 10)
230
- }
231
-
232
- if (values.maxConcurrentInstances) {
233
- config.maxConcurrentInstances = parseInt(values.maxConcurrentInstances, 10)
234
- }
235
-
236
- return {
237
- name: values.name,
238
- description: values.description || null,
239
- eventPattern: values.eventPattern,
240
- enabled: values.enabled,
241
- priority: values.priority,
242
- config: Object.keys(config).length > 0 ? config : null,
243
- }
244
- }, [])
245
-
246
- // Parse condition value (try JSON, fallback to string)
247
- const parseConditionValue = (value: string): unknown => {
248
- try {
249
- return JSON.parse(value)
250
- } catch {
251
- return value
252
- }
253
- }
254
-
255
- // Open dialog for creating new trigger
256
- const handleCreateNew = useCallback(() => {
257
- setEditingTrigger(null)
258
- setFormValues(defaultFormValues)
259
- setShowDialog(true)
260
- }, [])
261
-
262
- // Open dialog for editing trigger
263
- const handleEdit = useCallback((trigger: EventTrigger) => {
264
- setEditingTrigger(trigger)
265
- setFormValues({
266
- name: trigger.name,
267
- description: trigger.description || '',
268
- eventPattern: trigger.eventPattern,
269
- enabled: trigger.enabled,
270
- priority: trigger.priority,
271
- filterConditions: trigger.config?.filterConditions?.map(fc => ({
272
- field: fc.field,
273
- operator: fc.operator,
274
- value: typeof fc.value === 'string' ? fc.value : JSON.stringify(fc.value),
275
- })) || [],
276
- contextMappings: trigger.config?.contextMapping?.map(cm => ({
277
- targetKey: cm.targetKey,
278
- sourceExpression: cm.sourceExpression,
279
- defaultValue: cm.defaultValue !== undefined
280
- ? (typeof cm.defaultValue === 'string' ? cm.defaultValue : JSON.stringify(cm.defaultValue))
281
- : '',
282
- })) || [],
283
- debounceMs: trigger.config?.debounceMs?.toString() || '',
284
- maxConcurrentInstances: trigger.config?.maxConcurrentInstances?.toString() || '',
285
- })
286
- setShowDialog(true)
287
- }, [])
288
-
289
- // Close dialog
290
- const handleCloseDialog = useCallback(() => {
291
- setShowDialog(false)
292
- setEditingTrigger(null)
293
- setFormValues(defaultFormValues)
294
- }, [])
295
-
296
- // Submit form
297
- const handleSubmit = useCallback(() => {
298
- if (!formValues.name.trim()) {
299
- flash('Name is required', 'error')
300
- return
301
- }
302
- if (!formValues.eventPattern.trim()) {
303
- flash('Event pattern is required', 'error')
304
- return
305
- }
306
-
307
- if (editingTrigger) {
308
- updateMutation.mutate({ id: editingTrigger.id, values: formValues })
309
- } else {
310
- createMutation.mutate(formValues)
311
- }
312
- }, [formValues, editingTrigger, createMutation, updateMutation])
313
-
314
- // Add filter condition
315
- const addFilterCondition = useCallback(() => {
316
- setFormValues(prev => ({
317
- ...prev,
318
- filterConditions: [...prev.filterConditions, { field: '', operator: 'eq', value: '' }],
319
- }))
320
- }, [])
321
-
322
- // Remove filter condition
323
- const removeFilterCondition = useCallback((index: number) => {
324
- setFormValues(prev => ({
325
- ...prev,
326
- filterConditions: prev.filterConditions.filter((_, i) => i !== index),
327
- }))
328
- }, [])
329
-
330
- // Update filter condition
331
- const updateFilterCondition = useCallback((index: number, field: string, value: string) => {
332
- setFormValues(prev => ({
333
- ...prev,
334
- filterConditions: prev.filterConditions.map((fc, i) =>
335
- i === index ? { ...fc, [field]: value } : fc
336
- ),
337
- }))
338
- }, [])
339
-
340
- // Add context mapping
341
- const addContextMapping = useCallback(() => {
342
- setFormValues(prev => ({
343
- ...prev,
344
- contextMappings: [...prev.contextMappings, { targetKey: '', sourceExpression: '', defaultValue: '' }],
345
- }))
346
- }, [])
347
-
348
- // Remove context mapping
349
- const removeContextMapping = useCallback((index: number) => {
350
- setFormValues(prev => ({
351
- ...prev,
352
- contextMappings: prev.contextMappings.filter((_, i) => i !== index),
353
- }))
354
- }, [])
355
-
356
- // Update context mapping
357
- const updateContextMapping = useCallback((index: number, field: string, value: string) => {
358
- setFormValues(prev => ({
359
- ...prev,
360
- contextMappings: prev.contextMappings.map((cm, i) =>
361
- i === index ? { ...cm, [field]: value } : cm
362
- ),
363
- }))
364
- }, [])
365
-
366
- const isSaving = createMutation.isPending || updateMutation.isPending
367
-
368
- return (
369
- <div className={className}>
370
- <div className="rounded-lg border bg-card p-4">
371
- <div className="flex items-center justify-between mb-4">
372
- <div className="flex items-center gap-2">
373
- <Zap className="w-5 h-5 text-amber-500" />
374
- <h3 className="text-sm font-semibold uppercase text-muted-foreground">Event Triggers</h3>
375
- </div>
376
- <Button size="sm" variant="outline" onClick={handleCreateNew}>
377
- <Plus className="w-4 h-4 mr-1" />
378
- Add Trigger
379
- </Button>
380
- </div>
381
-
382
- <p className="text-xs text-muted-foreground mb-4">
383
- Configure events that automatically start this workflow. When a matching event occurs in the system,
384
- a new workflow instance will be created with the mapped context.
385
- </p>
386
-
387
- {isLoading ? (
388
- <div className="flex items-center justify-center py-8">
389
- <Spinner className="w-6 h-6" />
390
- </div>
391
- ) : triggers.length === 0 ? (
392
- <Alert variant="info">
393
- <AlertCircle className="w-4 h-4" />
394
- <AlertTitle>No triggers configured</AlertTitle>
395
- <AlertDescription>
396
- Click "Add Trigger" to create an event trigger that automatically starts this workflow.
397
- </AlertDescription>
398
- </Alert>
399
- ) : (
400
- <div className="space-y-2">
401
- {triggers.map(trigger => (
402
- <div
403
- key={trigger.id}
404
- className="flex items-center justify-between p-3 rounded-lg border bg-background hover:bg-accent/50 transition-colors"
405
- >
406
- <div className="flex items-center gap-3">
407
- <Badge variant={trigger.enabled ? 'default' : 'secondary'}>
408
- {trigger.enabled ? 'Active' : 'Disabled'}
409
- </Badge>
410
- <div>
411
- <div className="font-medium text-sm">{trigger.name}</div>
412
- <code className="text-xs text-muted-foreground">{trigger.eventPattern}</code>
413
- </div>
414
- </div>
415
- <div className="flex items-center gap-2">
416
- <Button size="sm" variant="ghost" onClick={() => handleEdit(trigger)}>
417
- <Edit2 className="w-4 h-4" />
418
- </Button>
419
- <Button
420
- size="sm"
421
- variant="ghost"
422
- className="text-destructive hover:text-destructive"
423
- onClick={() => setDeleteConfirmId(trigger.id)}
424
- >
425
- <Trash2 className="w-4 h-4" />
426
- </Button>
427
- </div>
428
- </div>
429
- ))}
430
- </div>
431
- )}
432
- </div>
433
-
434
- {/* Create/Edit Dialog */}
435
- <Dialog open={showDialog} onOpenChange={setShowDialog}>
436
- <DialogContent className="max-w-2xl max-h-[90vh] overflow-y-auto">
437
- <DialogHeader>
438
- <DialogTitle>
439
- {editingTrigger ? 'Edit Event Trigger' : 'Create Event Trigger'}
440
- </DialogTitle>
441
- <DialogDescription>
442
- Configure when this workflow should be automatically started based on system events.
443
- </DialogDescription>
444
- </DialogHeader>
445
-
446
- <div className="space-y-4 py-4">
447
- {/* Basic Info */}
448
- <div className="grid grid-cols-2 gap-4">
449
- <div className="space-y-1">
450
- <Label htmlFor="trigger-name">Name *</Label>
451
- <Input
452
- id="trigger-name"
453
- value={formValues.name}
454
- onChange={e => setFormValues(prev => ({ ...prev, name: e.target.value }))}
455
- placeholder="Order Approval Trigger"
456
- />
457
- </div>
458
- <div className="space-y-1">
459
- <Label htmlFor="trigger-priority">Priority</Label>
460
- <Input
461
- id="trigger-priority"
462
- type="number"
463
- value={formValues.priority}
464
- onChange={e => setFormValues(prev => ({ ...prev, priority: parseInt(e.target.value) || 0 }))}
465
- placeholder="0"
466
- />
467
- <p className="text-xs text-muted-foreground">Higher priority triggers execute first</p>
468
- </div>
469
- </div>
470
-
471
- <div className="space-y-1">
472
- <Label htmlFor="trigger-description">Description</Label>
473
- <Textarea
474
- id="trigger-description"
475
- value={formValues.description}
476
- onChange={e => setFormValues(prev => ({ ...prev, description: e.target.value }))}
477
- placeholder="Describe when this trigger should fire..."
478
- rows={2}
479
- />
480
- </div>
481
-
482
- {/* Event Pattern */}
483
- <div className="space-y-1">
484
- <Label htmlFor="trigger-pattern">Event Pattern *</Label>
485
- <div className="flex gap-2">
486
- <Input
487
- id="trigger-pattern"
488
- value={formValues.eventPattern}
489
- onChange={e => setFormValues(prev => ({ ...prev, eventPattern: e.target.value }))}
490
- placeholder="sales.orders.updated"
491
- className="flex-1"
492
- />
493
- <EventSelect
494
- value=""
495
- onChange={(eventId) => setFormValues(prev => ({ ...prev, eventPattern: eventId }))}
496
- placeholder="Quick select..."
497
- className="w-[200px]"
498
- />
499
- </div>
500
- <p className="text-xs text-muted-foreground">
501
- Use * as wildcard: "sales.orders.*" matches any order event
502
- </p>
503
- </div>
504
-
505
- {/* Enabled Switch */}
506
- <div className="flex items-center gap-2">
507
- <Switch
508
- id="trigger-enabled"
509
- checked={formValues.enabled}
510
- onCheckedChange={checked => setFormValues(prev => ({ ...prev, enabled: checked }))}
511
- />
512
- <Label htmlFor="trigger-enabled">Enabled</Label>
513
- </div>
514
-
515
- {/* Filter Conditions */}
516
- <div className="space-y-2">
517
- <div className="flex items-center justify-between">
518
- <Label>Filter Conditions</Label>
519
- <Button size="sm" variant="ghost" onClick={addFilterCondition}>
520
- <Plus className="w-4 h-4 mr-1" />
521
- Add Condition
522
- </Button>
523
- </div>
524
- <p className="text-xs text-muted-foreground">
525
- Only trigger when the event payload matches these conditions (all must match)
526
- </p>
527
- {formValues.filterConditions.map((fc, index) => (
528
- <div key={index} className="flex items-center gap-2">
529
- <Input
530
- value={fc.field}
531
- onChange={e => updateFilterCondition(index, 'field', e.target.value)}
532
- placeholder="status"
533
- className="w-1/3"
534
- />
535
- <select
536
- value={fc.operator}
537
- onChange={(e: React.ChangeEvent<HTMLSelectElement>) => updateFilterCondition(index, 'operator', e.target.value)}
538
- className="h-10 w-[140px] rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2"
539
- >
540
- {FILTER_OPERATORS.map(op => (
541
- <option key={op.value} value={op.value}>
542
- {op.label}
543
- </option>
544
- ))}
545
- </select>
546
- <Input
547
- value={fc.value}
548
- onChange={e => updateFilterCondition(index, 'value', e.target.value)}
549
- placeholder="submitted"
550
- className="flex-1"
551
- />
552
- <Button size="icon" variant="ghost" onClick={() => removeFilterCondition(index)}>
553
- <X className="w-4 h-4" />
554
- </Button>
555
- </div>
556
- ))}
557
- </div>
558
-
559
- {/* Context Mapping */}
560
- <div className="space-y-2">
561
- <div className="flex items-center justify-between">
562
- <Label>Context Mapping</Label>
563
- <Button size="sm" variant="ghost" onClick={addContextMapping}>
564
- <Plus className="w-4 h-4 mr-1" />
565
- Add Mapping
566
- </Button>
567
- </div>
568
- <p className="text-xs text-muted-foreground">
569
- Map values from the event payload to the workflow's initial context
570
- </p>
571
- {formValues.contextMappings.map((cm, index) => (
572
- <div key={index} className="flex items-center gap-2">
573
- <Input
574
- value={cm.targetKey}
575
- onChange={e => updateContextMapping(index, 'targetKey', e.target.value)}
576
- placeholder="orderId"
577
- className="w-1/3"
578
- />
579
- <span className="text-muted-foreground">=</span>
580
- <Input
581
- value={cm.sourceExpression}
582
- onChange={e => updateContextMapping(index, 'sourceExpression', e.target.value)}
583
- placeholder="id"
584
- className="flex-1"
585
- />
586
- <Input
587
- value={cm.defaultValue}
588
- onChange={e => updateContextMapping(index, 'defaultValue', e.target.value)}
589
- placeholder="default"
590
- className="w-24"
591
- />
592
- <Button size="icon" variant="ghost" onClick={() => removeContextMapping(index)}>
593
- <X className="w-4 h-4" />
594
- </Button>
595
- </div>
596
- ))}
597
- </div>
598
-
599
- {/* Advanced Options */}
600
- <div className="grid grid-cols-2 gap-4">
601
- <div className="space-y-1">
602
- <Label htmlFor="trigger-debounce">Debounce (ms)</Label>
603
- <Input
604
- id="trigger-debounce"
605
- type="number"
606
- value={formValues.debounceMs}
607
- onChange={e => setFormValues(prev => ({ ...prev, debounceMs: e.target.value }))}
608
- placeholder="0"
609
- />
610
- <p className="text-xs text-muted-foreground">Delay to prevent rapid re-triggers</p>
611
- </div>
612
- <div className="space-y-1">
613
- <Label htmlFor="trigger-max-concurrent">Max Concurrent Instances</Label>
614
- <Input
615
- id="trigger-max-concurrent"
616
- type="number"
617
- value={formValues.maxConcurrentInstances}
618
- onChange={e => setFormValues(prev => ({ ...prev, maxConcurrentInstances: e.target.value }))}
619
- placeholder="Unlimited"
620
- />
621
- <p className="text-xs text-muted-foreground">Limit simultaneous workflow instances</p>
622
- </div>
623
- </div>
624
- </div>
625
-
626
- <DialogFooter>
627
- <Button variant="outline" onClick={handleCloseDialog} disabled={isSaving}>
628
- Cancel
629
- </Button>
630
- <Button onClick={handleSubmit} disabled={isSaving}>
631
- {isSaving ? <Spinner className="w-4 h-4 mr-2" /> : null}
632
- {editingTrigger ? 'Update' : 'Create'}
633
- </Button>
634
- </DialogFooter>
635
- </DialogContent>
636
- </Dialog>
637
-
638
- {/* Delete Confirmation Dialog */}
639
- <Dialog open={!!deleteConfirmId} onOpenChange={() => setDeleteConfirmId(null)}>
640
- <DialogContent>
641
- <DialogHeader>
642
- <DialogTitle>Delete Event Trigger?</DialogTitle>
643
- <DialogDescription>
644
- This will permanently delete the event trigger. Workflows will no longer be automatically started by this trigger.
645
- </DialogDescription>
646
- </DialogHeader>
647
- <DialogFooter>
648
- <Button variant="outline" onClick={() => setDeleteConfirmId(null)}>
649
- Cancel
650
- </Button>
651
- <Button
652
- variant="destructive"
653
- onClick={() => deleteConfirmId && deleteMutation.mutate(deleteConfirmId)}
654
- disabled={deleteMutation.isPending}
655
- >
656
- {deleteMutation.isPending ? <Spinner className="w-4 h-4 mr-2" /> : null}
657
- Delete
658
- </Button>
659
- </DialogFooter>
660
- </DialogContent>
661
- </Dialog>
662
- </div>
663
- )
664
- }