@open-mercato/core 0.4.2-canary-c71ef83148 → 0.4.2-canary-f821f89ef6

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/workflow_event_trigger/index.js +33 -0
  2. package/dist/generated/entities/workflow_event_trigger/index.js.map +7 -0
  3. package/dist/generated/entities.ids.generated.js +2 -5
  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 +2 -3
  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 +0 -4
  12. package/dist/modules/attachments/components/AttachmentLibrary.js.map +2 -2
  13. package/dist/modules/attachments/components/AttachmentPartitionSettings.js +0 -2
  14. package/dist/modules/attachments/components/AttachmentPartitionSettings.js.map +2 -2
  15. package/dist/modules/auth/api/admin/nav.js +3 -4
  16. package/dist/modules/auth/api/admin/nav.js.map +2 -2
  17. package/dist/modules/auth/api/login.js +6 -25
  18. package/dist/modules/auth/api/login.js.map +2 -2
  19. package/dist/modules/auth/api/reset/confirm.js +2 -25
  20. package/dist/modules/auth/api/reset/confirm.js.map +2 -2
  21. package/dist/modules/auth/api/reset.js +0 -23
  22. package/dist/modules/auth/api/reset.js.map +2 -2
  23. package/dist/modules/auth/api/sidebar/preferences/route.js +9 -14
  24. package/dist/modules/auth/api/sidebar/preferences/route.js.map +2 -2
  25. package/dist/modules/auth/api/users/route.js +2 -4
  26. package/dist/modules/auth/api/users/route.js.map +2 -2
  27. package/dist/modules/auth/backend/roles/[id]/edit/page.js +1 -4
  28. package/dist/modules/auth/backend/roles/[id]/edit/page.js.map +2 -2
  29. package/dist/modules/auth/backend/roles/page.js +3 -3
  30. package/dist/modules/auth/backend/roles/page.js.map +2 -2
  31. package/dist/modules/auth/backend/users/[id]/edit/page.js +3 -18
  32. package/dist/modules/auth/backend/users/[id]/edit/page.js.map +2 -2
  33. package/dist/modules/auth/backend/users/create/page.js +2 -15
  34. package/dist/modules/auth/backend/users/create/page.js.map +2 -2
  35. package/dist/modules/auth/backend/users/page.js +3 -3
  36. package/dist/modules/auth/backend/users/page.js.map +2 -2
  37. package/dist/modules/auth/cli.js +11 -25
  38. package/dist/modules/auth/cli.js.map +2 -2
  39. package/dist/modules/auth/commands/users.js +2 -59
  40. package/dist/modules/auth/commands/users.js.map +2 -2
  41. package/dist/modules/auth/data/validators.js +3 -6
  42. package/dist/modules/auth/data/validators.js.map +2 -2
  43. package/dist/modules/auth/events.js +30 -0
  44. package/dist/modules/auth/events.js.map +7 -0
  45. package/dist/modules/auth/frontend/login.js +3 -105
  46. package/dist/modules/auth/frontend/login.js.map +2 -2
  47. package/dist/modules/auth/frontend/reset/[token]/page.js +10 -20
  48. package/dist/modules/auth/frontend/reset/[token]/page.js.map +2 -2
  49. package/dist/modules/auth/lib/setup-app.js +8 -42
  50. package/dist/modules/auth/lib/setup-app.js.map +2 -2
  51. package/dist/modules/auth/services/authService.js +3 -24
  52. package/dist/modules/auth/services/authService.js.map +2 -2
  53. package/dist/modules/business_rules/api/execute/[ruleId]/route.js +145 -0
  54. package/dist/modules/business_rules/api/execute/[ruleId]/route.js.map +7 -0
  55. package/dist/modules/business_rules/api/execute/route.js +1 -7
  56. package/dist/modules/business_rules/api/execute/route.js.map +2 -2
  57. package/dist/modules/business_rules/backend/rules/page.js +0 -4
  58. package/dist/modules/business_rules/backend/rules/page.js.map +2 -2
  59. package/dist/modules/business_rules/backend/sets/page.js +0 -3
  60. package/dist/modules/business_rules/backend/sets/page.js.map +2 -2
  61. package/dist/modules/business_rules/cli.js +1 -2
  62. package/dist/modules/business_rules/cli.js.map +2 -2
  63. package/dist/modules/business_rules/data/validators.js +34 -0
  64. package/dist/modules/business_rules/data/validators.js.map +2 -2
  65. package/dist/modules/business_rules/index.js +21 -1
  66. package/dist/modules/business_rules/index.js.map +2 -2
  67. package/dist/modules/business_rules/lib/rule-engine.js +185 -34
  68. package/dist/modules/business_rules/lib/rule-engine.js.map +2 -2
  69. package/dist/modules/catalog/components/PriceKindSettings.js +0 -2
  70. package/dist/modules/catalog/components/PriceKindSettings.js.map +2 -2
  71. package/dist/modules/catalog/components/categories/CategoriesDataTable.js +2 -2
  72. package/dist/modules/catalog/components/categories/CategoriesDataTable.js.map +2 -2
  73. package/dist/modules/catalog/components/products/ProductsDataTable.js +0 -2
  74. package/dist/modules/catalog/components/products/ProductsDataTable.js.map +2 -2
  75. package/dist/modules/catalog/events.js +34 -0
  76. package/dist/modules/catalog/events.js.map +7 -0
  77. package/dist/modules/configs/cli.js +0 -6
  78. package/dist/modules/configs/cli.js.map +2 -2
  79. package/dist/modules/configs/components/CachePanel.js +4 -4
  80. package/dist/modules/configs/components/CachePanel.js.map +2 -2
  81. package/dist/modules/configs/lib/system-status.js +1 -48
  82. package/dist/modules/configs/lib/system-status.js.map +2 -2
  83. package/dist/modules/configs/lib/upgrade-actions.js +0 -18
  84. package/dist/modules/configs/lib/upgrade-actions.js.map +2 -2
  85. package/dist/modules/currencies/backend/currencies/page.js +0 -3
  86. package/dist/modules/currencies/backend/currencies/page.js.map +2 -2
  87. package/dist/modules/currencies/backend/exchange-rates/page.js +0 -2
  88. package/dist/modules/currencies/backend/exchange-rates/page.js.map +2 -2
  89. package/dist/modules/customers/backend/customers/companies/page.js +0 -3
  90. package/dist/modules/customers/backend/customers/companies/page.js.map +2 -2
  91. package/dist/modules/customers/backend/customers/deals/page.js +0 -3
  92. package/dist/modules/customers/backend/customers/deals/page.js.map +2 -2
  93. package/dist/modules/customers/backend/customers/people/page.js +0 -3
  94. package/dist/modules/customers/backend/customers/people/page.js.map +2 -2
  95. package/dist/modules/customers/commands/deals.js +0 -31
  96. package/dist/modules/customers/commands/deals.js.map +2 -2
  97. package/dist/modules/customers/components/CustomerTodosTable.js +0 -1
  98. package/dist/modules/customers/components/CustomerTodosTable.js.map +2 -2
  99. package/dist/modules/customers/events.js +49 -0
  100. package/dist/modules/customers/events.js.map +7 -0
  101. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.js +1 -2
  102. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.js.map +2 -2
  103. package/dist/modules/customers/widgets/dashboard/new-customers/widget.js +1 -2
  104. package/dist/modules/customers/widgets/dashboard/new-customers/widget.js.map +2 -2
  105. package/dist/modules/customers/widgets/dashboard/new-deals/widget.js +1 -2
  106. package/dist/modules/customers/widgets/dashboard/new-deals/widget.js.map +2 -2
  107. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.js +1 -2
  108. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.js.map +2 -2
  109. package/dist/modules/dashboards/cli.js +5 -44
  110. package/dist/modules/dashboards/cli.js.map +2 -2
  111. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js +11 -16
  112. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js.map +3 -3
  113. package/dist/modules/dashboards/services/widgetDataService.js +3 -139
  114. package/dist/modules/dashboards/services/widgetDataService.js.map +2 -2
  115. package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.js +1 -2
  116. package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.js.map +2 -2
  117. package/dist/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.js +1 -2
  118. package/dist/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.js.map +2 -2
  119. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.js +1 -2
  120. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.js.map +2 -2
  121. package/dist/modules/dashboards/widgets/dashboard/orders-kpi/widget.js +1 -2
  122. package/dist/modules/dashboards/widgets/dashboard/orders-kpi/widget.js.map +2 -2
  123. package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js +1 -2
  124. package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js.map +2 -2
  125. package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.js +1 -2
  126. package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.js.map +2 -2
  127. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.js +1 -2
  128. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.js.map +2 -2
  129. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.js +1 -2
  130. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.js.map +2 -2
  131. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.js +1 -2
  132. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.js.map +2 -2
  133. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.js +1 -2
  134. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.js.map +2 -2
  135. package/dist/modules/dictionaries/components/DictionaryTable.js +0 -2
  136. package/dist/modules/dictionaries/components/DictionaryTable.js.map +2 -2
  137. package/dist/modules/directory/backend/directory/organizations/page.js +2 -2
  138. package/dist/modules/directory/backend/directory/organizations/page.js.map +2 -2
  139. package/dist/modules/directory/backend/directory/tenants/page.js +2 -2
  140. package/dist/modules/directory/backend/directory/tenants/page.js.map +2 -2
  141. package/dist/modules/directory/events.js +23 -0
  142. package/dist/modules/directory/events.js.map +7 -0
  143. package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js +2 -2
  144. package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js.map +2 -2
  145. package/dist/modules/entities/components/SystemEntitiesTable.js +1 -1
  146. package/dist/modules/entities/components/SystemEntitiesTable.js.map +2 -2
  147. package/dist/modules/entities/components/UserEntitiesTable.js +2 -2
  148. package/dist/modules/entities/components/UserEntitiesTable.js.map +2 -2
  149. package/dist/modules/feature_toggles/components/FeatureTogglesTable.js +3 -3
  150. package/dist/modules/feature_toggles/components/FeatureTogglesTable.js.map +2 -2
  151. package/dist/modules/feature_toggles/components/OverridesTable.js +1 -1
  152. package/dist/modules/feature_toggles/components/OverridesTable.js.map +2 -2
  153. package/dist/modules/planner/backend/planner/availability-rulesets/page.js +2 -2
  154. package/dist/modules/planner/backend/planner/availability-rulesets/page.js.map +2 -2
  155. package/dist/modules/query_index/cli.js +7 -63
  156. package/dist/modules/query_index/cli.js.map +2 -2
  157. package/dist/modules/query_index/components/QueryIndexesTable.js +1 -7
  158. package/dist/modules/query_index/components/QueryIndexesTable.js.map +2 -2
  159. package/dist/modules/resources/backend/resources/resource-types/page.js +2 -2
  160. package/dist/modules/resources/backend/resources/resource-types/page.js.map +2 -2
  161. package/dist/modules/resources/backend/resources/resources/page.js +2 -2
  162. package/dist/modules/resources/backend/resources/resources/page.js.map +2 -2
  163. package/dist/modules/sales/acl.js +1 -0
  164. package/dist/modules/sales/acl.js.map +2 -2
  165. package/dist/modules/sales/backend/sales/channels/offers/page.js +0 -2
  166. package/dist/modules/sales/backend/sales/channels/offers/page.js.map +2 -2
  167. package/dist/modules/sales/backend/sales/channels/page.js +0 -2
  168. package/dist/modules/sales/backend/sales/channels/page.js.map +2 -2
  169. package/dist/modules/sales/backend/sales/documents/[id]/page.js +12 -0
  170. package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
  171. package/dist/modules/sales/commands/documents.js +62 -53
  172. package/dist/modules/sales/commands/documents.js.map +2 -2
  173. package/dist/modules/sales/commands/payments.js +0 -26
  174. package/dist/modules/sales/commands/payments.js.map +2 -2
  175. package/dist/modules/sales/components/AdjustmentKindSettings.js +2 -2
  176. package/dist/modules/sales/components/AdjustmentKindSettings.js.map +2 -2
  177. package/dist/modules/sales/components/PaymentMethodsSettings.js +2 -2
  178. package/dist/modules/sales/components/PaymentMethodsSettings.js.map +2 -2
  179. package/dist/modules/sales/components/ShippingMethodsSettings.js +2 -2
  180. package/dist/modules/sales/components/ShippingMethodsSettings.js.map +2 -2
  181. package/dist/modules/sales/components/TaxRatesSettings.js +2 -2
  182. package/dist/modules/sales/components/TaxRatesSettings.js.map +2 -2
  183. package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js +0 -2
  184. package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js.map +2 -2
  185. package/dist/modules/sales/components/documents/AdjustmentsSection.js +0 -2
  186. package/dist/modules/sales/components/documents/AdjustmentsSection.js.map +2 -2
  187. package/dist/modules/sales/components/documents/PaymentsSection.js +1 -2
  188. package/dist/modules/sales/components/documents/PaymentsSection.js.map +2 -2
  189. package/dist/modules/sales/components/documents/SalesDocumentsTable.js +0 -2
  190. package/dist/modules/sales/components/documents/SalesDocumentsTable.js.map +2 -2
  191. package/dist/modules/sales/events.js +63 -0
  192. package/dist/modules/sales/events.js.map +7 -0
  193. package/dist/modules/sales/lib/dictionaries.js +3 -0
  194. package/dist/modules/sales/lib/dictionaries.js.map +2 -2
  195. package/dist/modules/sales/lib/frontend/documentDataEvents.js +25 -0
  196. package/dist/modules/sales/lib/frontend/documentDataEvents.js.map +7 -0
  197. package/dist/modules/staff/backend/staff/team-members/page.js +1 -1
  198. package/dist/modules/staff/backend/staff/team-members/page.js.map +2 -2
  199. package/dist/modules/staff/backend/staff/team-roles/page.js +2 -2
  200. package/dist/modules/staff/backend/staff/team-roles/page.js.map +2 -2
  201. package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js +2 -2
  202. package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js.map +2 -2
  203. package/dist/modules/staff/backend/staff/teams/page.js +2 -2
  204. package/dist/modules/staff/backend/staff/teams/page.js.map +2 -2
  205. package/dist/modules/staff/commands/leave-requests.js +0 -79
  206. package/dist/modules/staff/commands/leave-requests.js.map +2 -2
  207. package/dist/modules/workflows/acl.js +2 -0
  208. package/dist/modules/workflows/acl.js.map +2 -2
  209. package/dist/modules/workflows/api/instances/route.js +18 -6
  210. package/dist/modules/workflows/api/instances/route.js.map +2 -2
  211. package/dist/modules/workflows/api/tasks/route.js +6 -1
  212. package/dist/modules/workflows/api/tasks/route.js.map +2 -2
  213. package/dist/modules/workflows/backend/definitions/[id]/page.js +9 -1
  214. package/dist/modules/workflows/backend/definitions/[id]/page.js.map +2 -2
  215. package/dist/modules/workflows/backend/definitions/[id]/page.meta.js +1 -1
  216. package/dist/modules/workflows/backend/definitions/[id]/page.meta.js.map +2 -2
  217. package/dist/modules/workflows/backend/definitions/create/page.js +24 -15
  218. package/dist/modules/workflows/backend/definitions/create/page.js.map +2 -2
  219. package/dist/modules/workflows/backend/definitions/create/page.meta.js +1 -1
  220. package/dist/modules/workflows/backend/definitions/create/page.meta.js.map +2 -2
  221. package/dist/modules/workflows/backend/definitions/page.js +0 -5
  222. package/dist/modules/workflows/backend/definitions/page.js.map +2 -2
  223. package/dist/modules/workflows/backend/definitions/visual-editor/page.js +150 -132
  224. package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +2 -2
  225. package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js +1 -1
  226. package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js.map +2 -2
  227. package/dist/modules/workflows/backend/events/[id]/page.js +1 -1
  228. package/dist/modules/workflows/backend/events/[id]/page.js.map +2 -2
  229. package/dist/modules/workflows/backend/events/[id]/page.meta.js +2 -2
  230. package/dist/modules/workflows/backend/events/[id]/page.meta.js.map +2 -2
  231. package/dist/modules/workflows/backend/instances/[id]/page.meta.js +2 -2
  232. package/dist/modules/workflows/backend/instances/[id]/page.meta.js.map +2 -2
  233. package/dist/modules/workflows/backend/instances/page.js +0 -3
  234. package/dist/modules/workflows/backend/instances/page.js.map +2 -2
  235. package/dist/modules/workflows/backend/tasks/[id]/page.js +1 -1
  236. package/dist/modules/workflows/backend/tasks/[id]/page.js.map +2 -2
  237. package/dist/modules/workflows/backend/tasks/[id]/page.meta.js +2 -2
  238. package/dist/modules/workflows/backend/tasks/[id]/page.meta.js.map +2 -2
  239. package/dist/modules/workflows/backend/tasks/page.js +5 -9
  240. package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
  241. package/dist/modules/workflows/cli.js +93 -15
  242. package/dist/modules/workflows/cli.js.map +3 -3
  243. package/dist/modules/workflows/components/DefinitionTriggersEditor.js +481 -0
  244. package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +7 -0
  245. package/dist/modules/workflows/components/EventTriggersEditor.js +553 -0
  246. package/dist/modules/workflows/components/EventTriggersEditor.js.map +7 -0
  247. package/dist/modules/workflows/data/entities.js +64 -1
  248. package/dist/modules/workflows/data/entities.js.map +2 -2
  249. package/dist/modules/workflows/data/validators.js +115 -0
  250. package/dist/modules/workflows/data/validators.js.map +2 -2
  251. package/dist/modules/workflows/events.js +38 -0
  252. package/dist/modules/workflows/events.js.map +7 -0
  253. package/dist/modules/workflows/examples/checkout-demo-definition.json +1 -5
  254. package/dist/modules/workflows/examples/order-approval-definition.json +257 -0
  255. package/dist/modules/workflows/examples/order-approval-guard-rules.json +32 -0
  256. package/dist/modules/workflows/lib/activity-executor.js +75 -13
  257. package/dist/modules/workflows/lib/activity-executor.js.map +2 -2
  258. package/dist/modules/workflows/lib/event-trigger-service.js +308 -0
  259. package/dist/modules/workflows/lib/event-trigger-service.js.map +7 -0
  260. package/dist/modules/workflows/lib/graph-utils.js +71 -2
  261. package/dist/modules/workflows/lib/graph-utils.js.map +2 -2
  262. package/dist/modules/workflows/lib/seeds.js +22 -5
  263. package/dist/modules/workflows/lib/seeds.js.map +2 -2
  264. package/dist/modules/workflows/lib/start-validator.js +33 -23
  265. package/dist/modules/workflows/lib/start-validator.js.map +2 -2
  266. package/dist/modules/workflows/lib/transition-handler.js +161 -57
  267. package/dist/modules/workflows/lib/transition-handler.js.map +3 -3
  268. package/dist/modules/workflows/migrations/Migration20260123143500.js +36 -0
  269. package/dist/modules/workflows/migrations/Migration20260123143500.js.map +7 -0
  270. package/dist/modules/workflows/subscribers/event-trigger.js +78 -0
  271. package/dist/modules/workflows/subscribers/event-trigger.js.map +7 -0
  272. package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js +323 -0
  273. package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js.map +7 -0
  274. package/dist/modules/workflows/widgets/injection/order-approval/widget.js +17 -0
  275. package/dist/modules/workflows/widgets/injection/order-approval/widget.js.map +7 -0
  276. package/dist/modules/workflows/widgets/injection-table.js +19 -0
  277. package/dist/modules/workflows/widgets/injection-table.js.map +7 -0
  278. package/generated/entities/workflow_event_trigger/index.ts +15 -0
  279. package/generated/entities.ids.generated.ts +2 -5
  280. package/generated/entity-fields-registry.ts +2 -2
  281. package/package.json +2 -2
  282. package/src/modules/api_docs/frontend/docs/api/page.tsx +2 -3
  283. package/src/modules/api_keys/backend/api-keys/page.tsx +1 -1
  284. package/src/modules/attachments/components/AttachmentLibrary.tsx +0 -4
  285. package/src/modules/attachments/components/AttachmentPartitionSettings.tsx +0 -2
  286. package/src/modules/auth/README.md +1 -1
  287. package/src/modules/auth/__tests__/cli-setup-acl.test.ts +1 -1
  288. package/src/modules/auth/api/__tests__/login.test.ts +0 -2
  289. package/src/modules/auth/api/admin/nav.ts +6 -10
  290. package/src/modules/auth/api/login.ts +7 -26
  291. package/src/modules/auth/api/reset/confirm.ts +2 -25
  292. package/src/modules/auth/api/reset.ts +0 -23
  293. package/src/modules/auth/api/sidebar/preferences/route.ts +12 -21
  294. package/src/modules/auth/api/users/route.ts +2 -5
  295. package/src/modules/auth/backend/roles/[id]/edit/page.tsx +1 -4
  296. package/src/modules/auth/backend/roles/page.tsx +3 -3
  297. package/src/modules/auth/backend/users/[id]/edit/page.tsx +3 -22
  298. package/src/modules/auth/backend/users/create/page.tsx +2 -19
  299. package/src/modules/auth/backend/users/page.tsx +3 -3
  300. package/src/modules/auth/cli.ts +11 -38
  301. package/src/modules/auth/commands/users.ts +2 -73
  302. package/src/modules/auth/data/validators.ts +2 -6
  303. package/src/modules/auth/events.ts +39 -0
  304. package/src/modules/auth/frontend/login.tsx +5 -131
  305. package/src/modules/auth/frontend/reset/[token]/page.tsx +11 -24
  306. package/src/modules/auth/i18n/de.json +1 -48
  307. package/src/modules/auth/i18n/en.json +1 -48
  308. package/src/modules/auth/i18n/es.json +1 -48
  309. package/src/modules/auth/i18n/pl.json +1 -48
  310. package/src/modules/auth/lib/setup-app.ts +9 -58
  311. package/src/modules/auth/services/authService.ts +4 -27
  312. package/src/modules/business_rules/api/execute/[ruleId]/route.ts +163 -0
  313. package/src/modules/business_rules/api/execute/route.ts +1 -8
  314. package/src/modules/business_rules/backend/rules/page.tsx +0 -4
  315. package/src/modules/business_rules/backend/sets/page.tsx +0 -3
  316. package/src/modules/business_rules/cli.ts +1 -2
  317. package/src/modules/business_rules/data/validators.ts +40 -0
  318. package/src/modules/business_rules/i18n/en.json +1 -3
  319. package/src/modules/business_rules/index.ts +25 -0
  320. package/src/modules/business_rules/lib/__tests__/rule-engine.test.ts +0 -51
  321. package/src/modules/business_rules/lib/rule-engine.ts +277 -51
  322. package/src/modules/catalog/components/PriceKindSettings.tsx +0 -2
  323. package/src/modules/catalog/components/categories/CategoriesDataTable.tsx +2 -2
  324. package/src/modules/catalog/components/products/ProductsDataTable.tsx +0 -2
  325. package/src/modules/catalog/events.ts +45 -0
  326. package/src/modules/catalog/i18n/en.json +1 -3
  327. package/src/modules/configs/cli.ts +0 -6
  328. package/src/modules/configs/components/CachePanel.tsx +4 -4
  329. package/src/modules/configs/i18n/en.json +2 -12
  330. package/src/modules/configs/i18n/pl.json +2 -12
  331. package/src/modules/configs/lib/system-status.ts +1 -48
  332. package/src/modules/configs/lib/system-status.types.ts +0 -1
  333. package/src/modules/configs/lib/upgrade-actions.ts +0 -18
  334. package/src/modules/currencies/backend/currencies/page.tsx +0 -3
  335. package/src/modules/currencies/backend/exchange-rates/page.tsx +0 -2
  336. package/src/modules/customers/backend/customers/companies/page.tsx +0 -3
  337. package/src/modules/customers/backend/customers/deals/page.tsx +0 -3
  338. package/src/modules/customers/backend/customers/people/page.tsx +0 -3
  339. package/src/modules/customers/commands/deals.ts +0 -39
  340. package/src/modules/customers/components/CustomerTodosTable.tsx +0 -1
  341. package/src/modules/customers/events.ts +63 -0
  342. package/src/modules/customers/i18n/en.json +1 -5
  343. package/src/modules/customers/widgets/dashboard/customer-todos/widget.ts +2 -2
  344. package/src/modules/customers/widgets/dashboard/new-customers/widget.ts +2 -2
  345. package/src/modules/customers/widgets/dashboard/new-deals/widget.ts +2 -2
  346. package/src/modules/customers/widgets/dashboard/next-interactions/widget.ts +2 -2
  347. package/src/modules/dashboards/cli.ts +5 -55
  348. package/src/modules/dashboards/components/WidgetVisibilityEditor.tsx +11 -22
  349. package/src/modules/dashboards/services/widgetDataService.ts +4 -164
  350. package/src/modules/dashboards/widgets/dashboard/aov-kpi/widget.ts +2 -2
  351. package/src/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.ts +2 -2
  352. package/src/modules/dashboards/widgets/dashboard/orders-by-status/widget.ts +2 -2
  353. package/src/modules/dashboards/widgets/dashboard/orders-kpi/widget.ts +2 -2
  354. package/src/modules/dashboards/widgets/dashboard/pipeline-summary/widget.ts +2 -2
  355. package/src/modules/dashboards/widgets/dashboard/revenue-kpi/widget.ts +2 -2
  356. package/src/modules/dashboards/widgets/dashboard/revenue-trend/widget.ts +2 -2
  357. package/src/modules/dashboards/widgets/dashboard/sales-by-region/widget.ts +2 -2
  358. package/src/modules/dashboards/widgets/dashboard/top-customers/widget.ts +2 -2
  359. package/src/modules/dashboards/widgets/dashboard/top-products/widget.ts +2 -2
  360. package/src/modules/dictionaries/components/DictionaryTable.tsx +0 -2
  361. package/src/modules/directory/backend/directory/organizations/page.tsx +2 -2
  362. package/src/modules/directory/backend/directory/tenants/page.tsx +2 -2
  363. package/src/modules/directory/events.ts +31 -0
  364. package/src/modules/entities/backend/entities/user/[entityId]/records/page.tsx +2 -2
  365. package/src/modules/entities/components/SystemEntitiesTable.tsx +1 -1
  366. package/src/modules/entities/components/UserEntitiesTable.tsx +2 -2
  367. package/src/modules/feature_toggles/components/FeatureTogglesTable.tsx +4 -3
  368. package/src/modules/feature_toggles/components/OverridesTable.tsx +1 -1
  369. package/src/modules/planner/backend/planner/availability-rulesets/page.tsx +2 -2
  370. package/src/modules/query_index/cli.ts +13 -82
  371. package/src/modules/query_index/components/QueryIndexesTable.tsx +2 -8
  372. package/src/modules/resources/backend/resources/resource-types/page.tsx +2 -2
  373. package/src/modules/resources/backend/resources/resources/page.tsx +2 -2
  374. package/src/modules/sales/acl.ts +1 -0
  375. package/src/modules/sales/backend/sales/channels/offers/page.tsx +0 -2
  376. package/src/modules/sales/backend/sales/channels/page.tsx +0 -2
  377. package/src/modules/sales/backend/sales/documents/[id]/page.tsx +16 -0
  378. package/src/modules/sales/commands/documents.ts +70 -62
  379. package/src/modules/sales/commands/payments.ts +0 -33
  380. package/src/modules/sales/components/AdjustmentKindSettings.tsx +2 -2
  381. package/src/modules/sales/components/PaymentMethodsSettings.tsx +2 -2
  382. package/src/modules/sales/components/ShippingMethodsSettings.tsx +2 -2
  383. package/src/modules/sales/components/TaxRatesSettings.tsx +2 -2
  384. package/src/modules/sales/components/channels/SalesChannelOffersPanel.tsx +0 -2
  385. package/src/modules/sales/components/documents/AdjustmentsSection.tsx +0 -2
  386. package/src/modules/sales/components/documents/PaymentsSection.tsx +1 -2
  387. package/src/modules/sales/components/documents/SalesDocumentsTable.tsx +0 -2
  388. package/src/modules/sales/events.ts +82 -0
  389. package/src/modules/sales/i18n/de.json +0 -20
  390. package/src/modules/sales/i18n/en.json +1 -25
  391. package/src/modules/sales/i18n/es.json +0 -20
  392. package/src/modules/sales/i18n/pl.json +0 -20
  393. package/src/modules/sales/lib/dictionaries.ts +3 -0
  394. package/src/modules/sales/lib/frontend/documentDataEvents.ts +28 -0
  395. package/src/modules/staff/backend/staff/team-members/page.tsx +1 -1
  396. package/src/modules/staff/backend/staff/team-roles/page.tsx +2 -2
  397. package/src/modules/staff/backend/staff/teams/[id]/edit/page.tsx +2 -2
  398. package/src/modules/staff/backend/staff/teams/page.tsx +2 -2
  399. package/src/modules/staff/commands/leave-requests.ts +0 -94
  400. package/src/modules/staff/i18n/de.json +0 -4
  401. package/src/modules/staff/i18n/en.json +1 -9
  402. package/src/modules/staff/i18n/es.json +0 -4
  403. package/src/modules/staff/i18n/pl.json +0 -4
  404. package/src/modules/workflows/acl.ts +2 -0
  405. package/src/modules/workflows/api/__tests__/instances.route.test.ts +5 -2
  406. package/src/modules/workflows/api/instances/route.ts +21 -7
  407. package/src/modules/workflows/api/tasks/route.ts +7 -1
  408. package/src/modules/workflows/backend/definitions/[id]/page.meta.ts +1 -1
  409. package/src/modules/workflows/backend/definitions/[id]/page.tsx +9 -0
  410. package/src/modules/workflows/backend/definitions/create/page.meta.ts +1 -1
  411. package/src/modules/workflows/backend/definitions/create/page.tsx +9 -0
  412. package/src/modules/workflows/backend/definitions/page.tsx +0 -5
  413. package/src/modules/workflows/backend/definitions/visual-editor/page.meta.ts +1 -1
  414. package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +21 -3
  415. package/src/modules/workflows/backend/events/[id]/page.meta.ts +2 -2
  416. package/src/modules/workflows/backend/events/[id]/page.tsx +1 -1
  417. package/src/modules/workflows/backend/instances/[id]/page.meta.ts +2 -2
  418. package/src/modules/workflows/backend/instances/page.tsx +1 -4
  419. package/src/modules/workflows/backend/tasks/[id]/page.meta.ts +2 -2
  420. package/src/modules/workflows/backend/tasks/[id]/page.tsx +1 -1
  421. package/src/modules/workflows/backend/tasks/page.tsx +6 -10
  422. package/src/modules/workflows/cli.ts +123 -12
  423. package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +581 -0
  424. package/src/modules/workflows/components/EventTriggersEditor.tsx +664 -0
  425. package/src/modules/workflows/data/entities.ts +124 -0
  426. package/src/modules/workflows/data/validators.ts +138 -0
  427. package/src/modules/workflows/events.ts +49 -0
  428. package/src/modules/workflows/examples/checkout-demo-definition.json +1 -5
  429. package/src/modules/workflows/examples/order-approval-definition.json +257 -0
  430. package/src/modules/workflows/examples/order-approval-guard-rules.json +32 -0
  431. package/src/modules/workflows/i18n/en.json +72 -3
  432. package/src/modules/workflows/lib/__tests__/activity-executor.test.ts +43 -36
  433. package/src/modules/workflows/lib/__tests__/transition-handler.test.ts +170 -90
  434. package/src/modules/workflows/lib/activity-executor.ts +129 -16
  435. package/src/modules/workflows/lib/event-trigger-service.ts +557 -0
  436. package/src/modules/workflows/lib/graph-utils.ts +117 -2
  437. package/src/modules/workflows/lib/seeds.ts +34 -8
  438. package/src/modules/workflows/lib/start-validator.ts +38 -28
  439. package/src/modules/workflows/lib/transition-handler.ts +212 -71
  440. package/src/modules/workflows/migrations/Migration20260123143500.ts +38 -0
  441. package/src/modules/workflows/subscribers/event-trigger.ts +109 -0
  442. package/src/modules/workflows/widgets/injection/order-approval/widget.client.tsx +446 -0
  443. package/src/modules/workflows/widgets/injection/order-approval/widget.ts +16 -0
  444. package/src/modules/workflows/widgets/injection-table.ts +21 -0
  445. package/dist/generated/entities/notification/index.js +0 -57
  446. package/dist/generated/entities/notification/index.js.map +0 -7
  447. package/dist/modules/auth/api/profile/route.js +0 -157
  448. package/dist/modules/auth/api/profile/route.js.map +0 -7
  449. package/dist/modules/auth/backend/auth/profile/page.js +0 -141
  450. package/dist/modules/auth/backend/auth/profile/page.js.map +0 -7
  451. package/dist/modules/auth/backend/auth/profile/page.meta.js +0 -13
  452. package/dist/modules/auth/backend/auth/profile/page.meta.js.map +0 -7
  453. package/dist/modules/auth/notifications.js +0 -112
  454. package/dist/modules/auth/notifications.js.map +0 -7
  455. package/dist/modules/business_rules/notifications.js +0 -28
  456. package/dist/modules/business_rules/notifications.js.map +0 -7
  457. package/dist/modules/business_rules/subscribers/rule-execution-failed-notification.js +0 -37
  458. package/dist/modules/business_rules/subscribers/rule-execution-failed-notification.js.map +0 -7
  459. package/dist/modules/catalog/notifications.js +0 -28
  460. package/dist/modules/catalog/notifications.js.map +0 -7
  461. package/dist/modules/catalog/subscribers/low-stock-notification.js +0 -38
  462. package/dist/modules/catalog/subscribers/low-stock-notification.js.map +0 -7
  463. package/dist/modules/customers/notifications.js +0 -48
  464. package/dist/modules/customers/notifications.js.map +0 -7
  465. package/dist/modules/dashboards/lib/role-widgets.js +0 -58
  466. package/dist/modules/dashboards/lib/role-widgets.js.map +0 -7
  467. package/dist/modules/directory/api/get/tenants/lookup.js +0 -70
  468. package/dist/modules/directory/api/get/tenants/lookup.js.map +0 -7
  469. package/dist/modules/notifications/acl.js +0 -11
  470. package/dist/modules/notifications/acl.js.map +0 -7
  471. package/dist/modules/notifications/api/[id]/action/route.js +0 -74
  472. package/dist/modules/notifications/api/[id]/action/route.js.map +0 -7
  473. package/dist/modules/notifications/api/[id]/dismiss/route.js +0 -15
  474. package/dist/modules/notifications/api/[id]/dismiss/route.js.map +0 -7
  475. package/dist/modules/notifications/api/[id]/read/route.js +0 -15
  476. package/dist/modules/notifications/api/[id]/read/route.js.map +0 -7
  477. package/dist/modules/notifications/api/[id]/restore/route.js +0 -53
  478. package/dist/modules/notifications/api/[id]/restore/route.js.map +0 -7
  479. package/dist/modules/notifications/api/batch/route.js +0 -17
  480. package/dist/modules/notifications/api/batch/route.js.map +0 -7
  481. package/dist/modules/notifications/api/feature/route.js +0 -17
  482. package/dist/modules/notifications/api/feature/route.js.map +0 -7
  483. package/dist/modules/notifications/api/mark-all-read/route.js +0 -35
  484. package/dist/modules/notifications/api/mark-all-read/route.js.map +0 -7
  485. package/dist/modules/notifications/api/openapi.js +0 -76
  486. package/dist/modules/notifications/api/openapi.js.map +0 -7
  487. package/dist/modules/notifications/api/role/route.js +0 -17
  488. package/dist/modules/notifications/api/role/route.js.map +0 -7
  489. package/dist/modules/notifications/api/route.js +0 -85
  490. package/dist/modules/notifications/api/route.js.map +0 -7
  491. package/dist/modules/notifications/api/settings/route.js +0 -155
  492. package/dist/modules/notifications/api/settings/route.js.map +0 -7
  493. package/dist/modules/notifications/api/unread-count/route.js +0 -38
  494. package/dist/modules/notifications/api/unread-count/route.js.map +0 -7
  495. package/dist/modules/notifications/backend/config/notifications/page.js +0 -10
  496. package/dist/modules/notifications/backend/config/notifications/page.js.map +0 -7
  497. package/dist/modules/notifications/backend/config/notifications/page.meta.js +0 -24
  498. package/dist/modules/notifications/backend/config/notifications/page.meta.js.map +0 -7
  499. package/dist/modules/notifications/cli.js +0 -16
  500. package/dist/modules/notifications/cli.js.map +0 -7
  501. package/dist/modules/notifications/data/entities.js +0 -112
  502. package/dist/modules/notifications/data/entities.js.map +0 -7
  503. package/dist/modules/notifications/data/validators.js +0 -98
  504. package/dist/modules/notifications/data/validators.js.map +0 -7
  505. package/dist/modules/notifications/di.js +0 -13
  506. package/dist/modules/notifications/di.js.map +0 -7
  507. package/dist/modules/notifications/emails/NotificationEmail.js +0 -58
  508. package/dist/modules/notifications/emails/NotificationEmail.js.map +0 -7
  509. package/dist/modules/notifications/frontend/NotificationInboxPageClient.js +0 -44
  510. package/dist/modules/notifications/frontend/NotificationInboxPageClient.js.map +0 -7
  511. package/dist/modules/notifications/frontend/NotificationSettingsPageClient.js +0 -220
  512. package/dist/modules/notifications/frontend/NotificationSettingsPageClient.js.map +0 -7
  513. package/dist/modules/notifications/index.js +0 -14
  514. package/dist/modules/notifications/index.js.map +0 -7
  515. package/dist/modules/notifications/lib/deliveryConfig.js +0 -107
  516. package/dist/modules/notifications/lib/deliveryConfig.js.map +0 -7
  517. package/dist/modules/notifications/lib/deliveryStrategies.js +0 -14
  518. package/dist/modules/notifications/lib/deliveryStrategies.js.map +0 -7
  519. package/dist/modules/notifications/lib/events.js +0 -12
  520. package/dist/modules/notifications/lib/events.js.map +0 -7
  521. package/dist/modules/notifications/lib/notificationBuilder.js +0 -66
  522. package/dist/modules/notifications/lib/notificationBuilder.js.map +0 -7
  523. package/dist/modules/notifications/lib/notificationFactory.js +0 -54
  524. package/dist/modules/notifications/lib/notificationFactory.js.map +0 -7
  525. package/dist/modules/notifications/lib/notificationMapper.js +0 -34
  526. package/dist/modules/notifications/lib/notificationMapper.js.map +0 -7
  527. package/dist/modules/notifications/lib/notificationRecipients.js +0 -35
  528. package/dist/modules/notifications/lib/notificationRecipients.js.map +0 -7
  529. package/dist/modules/notifications/lib/notificationService.js +0 -279
  530. package/dist/modules/notifications/lib/notificationService.js.map +0 -7
  531. package/dist/modules/notifications/lib/routeHelpers.js +0 -101
  532. package/dist/modules/notifications/lib/routeHelpers.js.map +0 -7
  533. package/dist/modules/notifications/lib/safeHref.js +0 -24
  534. package/dist/modules/notifications/lib/safeHref.js.map +0 -7
  535. package/dist/modules/notifications/migrations/Migration20260123000001.js +0 -70
  536. package/dist/modules/notifications/migrations/Migration20260123000001.js.map +0 -7
  537. package/dist/modules/notifications/migrations/Migration20260126150000.js +0 -37
  538. package/dist/modules/notifications/migrations/Migration20260126150000.js.map +0 -7
  539. package/dist/modules/notifications/migrations/Migration20260129082610.js +0 -13
  540. package/dist/modules/notifications/migrations/Migration20260129082610.js.map +0 -7
  541. package/dist/modules/notifications/subscribers/deliver-notification.js +0 -165
  542. package/dist/modules/notifications/subscribers/deliver-notification.js.map +0 -7
  543. package/dist/modules/notifications/workers/create-notification.worker.js +0 -70
  544. package/dist/modules/notifications/workers/create-notification.worker.js.map +0 -7
  545. package/dist/modules/sales/notifications.client.js +0 -51
  546. package/dist/modules/sales/notifications.client.js.map +0 -7
  547. package/dist/modules/sales/notifications.js +0 -88
  548. package/dist/modules/sales/notifications.js.map +0 -7
  549. package/dist/modules/sales/subscribers/quote-expiring-notification.js +0 -38
  550. package/dist/modules/sales/subscribers/quote-expiring-notification.js.map +0 -7
  551. package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js +0 -137
  552. package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js.map +0 -7
  553. package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js +0 -137
  554. package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js.map +0 -7
  555. package/dist/modules/sales/widgets/notifications/index.js +0 -7
  556. package/dist/modules/sales/widgets/notifications/index.js.map +0 -7
  557. package/dist/modules/sales/widgets/notifications/useSalesDocumentTotals.js +0 -60
  558. package/dist/modules/sales/widgets/notifications/useSalesDocumentTotals.js.map +0 -7
  559. package/dist/modules/staff/notifications.js +0 -75
  560. package/dist/modules/staff/notifications.js.map +0 -7
  561. package/dist/modules/workflows/notifications.js +0 -28
  562. package/dist/modules/workflows/notifications.js.map +0 -7
  563. package/dist/modules/workflows/subscribers/task-assigned-notification.js +0 -38
  564. package/dist/modules/workflows/subscribers/task-assigned-notification.js.map +0 -7
  565. package/generated/entities/notification/index.ts +0 -27
  566. package/src/modules/auth/api/profile/route.ts +0 -163
  567. package/src/modules/auth/backend/auth/profile/page.meta.ts +0 -9
  568. package/src/modules/auth/backend/auth/profile/page.tsx +0 -174
  569. package/src/modules/auth/notifications.ts +0 -109
  570. package/src/modules/business_rules/notifications.ts +0 -25
  571. package/src/modules/business_rules/subscribers/rule-execution-failed-notification.ts +0 -50
  572. package/src/modules/catalog/notifications.ts +0 -25
  573. package/src/modules/catalog/subscribers/low-stock-notification.ts +0 -52
  574. package/src/modules/customers/notifications.ts +0 -44
  575. package/src/modules/dashboards/lib/role-widgets.ts +0 -80
  576. package/src/modules/directory/api/get/tenants/lookup.ts +0 -75
  577. package/src/modules/notifications/__tests__/deliver-notification.test.ts +0 -195
  578. package/src/modules/notifications/__tests__/deliveryStrategies.test.ts +0 -19
  579. package/src/modules/notifications/__tests__/notificationService.test.ts +0 -208
  580. package/src/modules/notifications/acl.ts +0 -7
  581. package/src/modules/notifications/api/[id]/action/route.ts +0 -75
  582. package/src/modules/notifications/api/[id]/dismiss/route.ts +0 -12
  583. package/src/modules/notifications/api/[id]/read/route.ts +0 -12
  584. package/src/modules/notifications/api/[id]/restore/route.ts +0 -53
  585. package/src/modules/notifications/api/batch/route.ts +0 -14
  586. package/src/modules/notifications/api/feature/route.ts +0 -14
  587. package/src/modules/notifications/api/mark-all-read/route.ts +0 -34
  588. package/src/modules/notifications/api/openapi.ts +0 -76
  589. package/src/modules/notifications/api/role/route.ts +0 -14
  590. package/src/modules/notifications/api/route.ts +0 -92
  591. package/src/modules/notifications/api/settings/route.ts +0 -157
  592. package/src/modules/notifications/api/unread-count/route.ts +0 -38
  593. package/src/modules/notifications/backend/config/notifications/page.meta.ts +0 -22
  594. package/src/modules/notifications/backend/config/notifications/page.tsx +0 -12
  595. package/src/modules/notifications/cli.ts +0 -18
  596. package/src/modules/notifications/data/entities.ts +0 -99
  597. package/src/modules/notifications/data/validators.ts +0 -115
  598. package/src/modules/notifications/di.ts +0 -11
  599. package/src/modules/notifications/emails/NotificationEmail.tsx +0 -98
  600. package/src/modules/notifications/frontend/NotificationInboxPageClient.tsx +0 -42
  601. package/src/modules/notifications/frontend/NotificationSettingsPageClient.tsx +0 -233
  602. package/src/modules/notifications/i18n/de.json +0 -50
  603. package/src/modules/notifications/i18n/en.json +0 -50
  604. package/src/modules/notifications/i18n/es.json +0 -50
  605. package/src/modules/notifications/i18n/pl.json +0 -50
  606. package/src/modules/notifications/index.ts +0 -12
  607. package/src/modules/notifications/lib/deliveryConfig.ts +0 -153
  608. package/src/modules/notifications/lib/deliveryStrategies.ts +0 -50
  609. package/src/modules/notifications/lib/events.ts +0 -48
  610. package/src/modules/notifications/lib/notificationBuilder.ts +0 -121
  611. package/src/modules/notifications/lib/notificationFactory.ts +0 -76
  612. package/src/modules/notifications/lib/notificationMapper.ts +0 -33
  613. package/src/modules/notifications/lib/notificationRecipients.ts +0 -83
  614. package/src/modules/notifications/lib/notificationService.ts +0 -414
  615. package/src/modules/notifications/lib/routeHelpers.ts +0 -151
  616. package/src/modules/notifications/lib/safeHref.ts +0 -29
  617. package/src/modules/notifications/migrations/.snapshot-open-mercato.json +0 -336
  618. package/src/modules/notifications/migrations/Migration20260123000001.ts +0 -73
  619. package/src/modules/notifications/migrations/Migration20260126150000.ts +0 -39
  620. package/src/modules/notifications/migrations/Migration20260129082610.ts +0 -13
  621. package/src/modules/notifications/subscribers/deliver-notification.ts +0 -204
  622. package/src/modules/notifications/workers/create-notification.worker.ts +0 -122
  623. package/src/modules/sales/notifications.client.ts +0 -65
  624. package/src/modules/sales/notifications.ts +0 -82
  625. package/src/modules/sales/subscribers/quote-expiring-notification.ts +0 -53
  626. package/src/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.tsx +0 -156
  627. package/src/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.tsx +0 -156
  628. package/src/modules/sales/widgets/notifications/index.ts +0 -2
  629. package/src/modules/sales/widgets/notifications/useSalesDocumentTotals.ts +0 -81
  630. package/src/modules/staff/notifications.ts +0 -71
  631. package/src/modules/workflows/notifications.ts +0 -25
  632. package/src/modules/workflows/subscribers/task-assigned-notification.ts +0 -53
@@ -1,115 +0,0 @@
1
- import { z } from 'zod'
2
- import { isSafeNotificationHref } from '../lib/safeHref'
3
-
4
- export const notificationStatusSchema = z.enum(['unread', 'read', 'actioned', 'dismissed'])
5
- export const notificationSeveritySchema = z.enum(['info', 'warning', 'success', 'error'])
6
-
7
- export const safeRelativeHrefSchema = z.string().min(1).refine(
8
- (href) => isSafeNotificationHref(href),
9
- { message: 'Href must be a same-origin relative path starting with /' }
10
- )
11
-
12
- export const notificationActionSchema = z.object({
13
- id: z.string().min(1),
14
- label: z.string().min(1),
15
- labelKey: z.string().optional(),
16
- variant: z.enum(['default', 'secondary', 'destructive', 'outline', 'ghost']).optional(),
17
- icon: z.string().optional(),
18
- commandId: z.string().optional(),
19
- href: safeRelativeHrefSchema.optional(),
20
- confirmRequired: z.boolean().optional(),
21
- confirmMessage: z.string().optional(),
22
- })
23
-
24
- const baseNotificationFieldsSchema = z.object({
25
- type: z.string().min(1).max(100),
26
- titleKey: z.string().min(1).max(200).optional(),
27
- bodyKey: z.string().min(1).max(200).optional(),
28
- titleVariables: z.record(z.string(), z.string()).optional(),
29
- bodyVariables: z.record(z.string(), z.string()).optional(),
30
- title: z.string().min(1).max(500).optional(),
31
- body: z.string().max(2000).optional(),
32
- icon: z.string().max(100).optional(),
33
- severity: notificationSeveritySchema.optional().default('info'),
34
- actions: z.array(notificationActionSchema).optional(),
35
- primaryActionId: z.string().optional(),
36
- sourceModule: z.string().optional(),
37
- sourceEntityType: z.string().optional(),
38
- sourceEntityId: z.string().uuid().optional(),
39
- linkHref: safeRelativeHrefSchema.optional(),
40
- groupKey: z.string().optional(),
41
- expiresAt: z.string().datetime().optional(),
42
- })
43
-
44
- const titleRequiredRefinement = {
45
- refine: (data: { titleKey?: string; title?: string }) => data.titleKey || data.title,
46
- message: 'Either titleKey or title must be provided',
47
- } as const
48
-
49
- export const createNotificationSchema = baseNotificationFieldsSchema
50
- .extend({ recipientUserId: z.string().uuid() })
51
- .refine(titleRequiredRefinement.refine, { message: titleRequiredRefinement.message })
52
-
53
- export const createBatchNotificationSchema = baseNotificationFieldsSchema
54
- .extend({ recipientUserIds: z.array(z.string().uuid()).min(1).max(1000) })
55
- .refine(titleRequiredRefinement.refine, { message: titleRequiredRefinement.message })
56
-
57
- export const createRoleNotificationSchema = baseNotificationFieldsSchema
58
- .extend({ roleId: z.string().uuid() })
59
- .refine(titleRequiredRefinement.refine, { message: titleRequiredRefinement.message })
60
-
61
- export const createFeatureNotificationSchema = baseNotificationFieldsSchema
62
- .extend({ requiredFeature: z.string().min(1).max(100) })
63
- .refine(titleRequiredRefinement.refine, { message: titleRequiredRefinement.message })
64
-
65
- export const listNotificationsSchema = z.object({
66
- status: z.union([notificationStatusSchema, z.array(notificationStatusSchema)]).optional(),
67
- type: z.string().optional(),
68
- severity: notificationSeveritySchema.optional(),
69
- sourceEntityType: z.string().optional(),
70
- sourceEntityId: z.string().uuid().optional(),
71
- since: z.string().datetime().optional(),
72
- page: z.coerce.number().int().min(1).optional().default(1),
73
- pageSize: z.coerce.number().int().min(1).max(100).optional().default(20),
74
- })
75
-
76
- export const executeActionSchema = z.object({
77
- actionId: z.string().min(1),
78
- payload: z.record(z.string(), z.unknown()).optional(),
79
- })
80
-
81
- export const restoreNotificationSchema = z.object({
82
- status: z.enum(['read', 'unread']).optional(),
83
- })
84
-
85
- const notificationDeliveryStrategySchema = z.object({
86
- enabled: z.boolean().optional(),
87
- })
88
-
89
- const notificationDeliveryEmailSchema = notificationDeliveryStrategySchema.extend({
90
- from: z.string().trim().min(1).optional(),
91
- replyTo: z.string().trim().min(1).optional(),
92
- subjectPrefix: z.string().trim().min(1).optional(),
93
- })
94
-
95
- const notificationDeliveryCustomSchema = notificationDeliveryStrategySchema.extend({
96
- config: z.unknown().optional(),
97
- })
98
-
99
- export const notificationDeliveryConfigSchema = z.object({
100
- appUrl: z.string().url().optional(),
101
- panelPath: safeRelativeHrefSchema.optional(),
102
- strategies: z.object({
103
- database: notificationDeliveryStrategySchema.optional(),
104
- email: notificationDeliveryEmailSchema.optional(),
105
- custom: z.record(z.string(), notificationDeliveryCustomSchema).optional(),
106
- }).optional(),
107
- })
108
-
109
- export type CreateNotificationInput = z.infer<typeof createNotificationSchema>
110
- export type CreateBatchNotificationInput = z.infer<typeof createBatchNotificationSchema>
111
- export type CreateRoleNotificationInput = z.infer<typeof createRoleNotificationSchema>
112
- export type CreateFeatureNotificationInput = z.infer<typeof createFeatureNotificationSchema>
113
- export type ListNotificationsInput = z.infer<typeof listNotificationsSchema>
114
- export type ExecuteActionInput = z.infer<typeof executeActionSchema>
115
- export type NotificationDeliveryConfigInput = z.infer<typeof notificationDeliveryConfigSchema>
@@ -1,11 +0,0 @@
1
- import type { AppContainer } from '@open-mercato/shared/lib/di/container'
2
- import { asFunction } from 'awilix'
3
- import { createNotificationService } from './lib/notificationService'
4
-
5
- export function register(container: AppContainer): void {
6
- container.register({
7
- notificationService: asFunction(({ em, eventBus, commandBus }) =>
8
- createNotificationService({ em, eventBus, commandBus })
9
- ).scoped(),
10
- })
11
- }
@@ -1,98 +0,0 @@
1
- import React from 'react'
2
- import { Html, Head, Preview, Body, Container, Heading, Text, Section, Button, Hr } from '@react-email/components'
3
-
4
- export type NotificationEmailAction = {
5
- id: string
6
- label: string
7
- href: string
8
- }
9
-
10
- export type NotificationEmailCopy = {
11
- preview: string
12
- heading: string
13
- bodyIntro: string
14
- actionNotice: string
15
- openCta: string
16
- footer: string
17
- }
18
-
19
- type NotificationEmailProps = {
20
- title: string
21
- body?: string | null
22
- actions: NotificationEmailAction[]
23
- panelUrl: string
24
- copy: NotificationEmailCopy
25
- }
26
-
27
- export function NotificationEmail({ title, body, actions, panelUrl, copy }: NotificationEmailProps) {
28
- return (
29
- <Html>
30
- <Head />
31
- <Preview>{copy.preview}</Preview>
32
- <Body style={{ backgroundColor: '#f5f5f5', fontFamily: 'Arial, sans-serif', margin: 0, padding: 0 }}>
33
- <Container style={{ maxWidth: 560, margin: '0 auto', padding: '24px' }}>
34
- <Section style={{ backgroundColor: '#ffffff', padding: '24px', borderRadius: 12 }}>
35
- <Heading as="h1" style={{ fontSize: '22px', margin: '0 0 8px', color: '#111827' }}>
36
- {copy.heading}
37
- </Heading>
38
- <Text style={{ margin: '0 0 16px', color: '#4b5563' }}>{title}</Text>
39
- {body && (
40
- <Text style={{ margin: '0 0 16px', color: '#111827', fontSize: '15px' }}>
41
- {body}
42
- </Text>
43
- )}
44
- <Text style={{ margin: '0 0 16px', color: '#6b7280', fontSize: '13px' }}>
45
- {copy.bodyIntro}
46
- </Text>
47
- {actions.length > 0 && (
48
- <Section style={{ marginBottom: 16 }}>
49
- {actions.map((action) => (
50
- <Button
51
- key={action.id}
52
- href={action.href}
53
- style={{
54
- backgroundColor: '#111827',
55
- color: '#ffffff',
56
- padding: '10px 16px',
57
- borderRadius: 8,
58
- textDecoration: 'none',
59
- display: 'inline-block',
60
- marginRight: 8,
61
- marginBottom: 8,
62
- fontSize: '13px',
63
- }}
64
- >
65
- {action.label}
66
- </Button>
67
- ))}
68
- </Section>
69
- )}
70
- <Text style={{ margin: '0 0 16px', color: '#6b7280', fontSize: '12px' }}>
71
- {copy.actionNotice}
72
- </Text>
73
- <Button
74
- href={panelUrl}
75
- style={{
76
- backgroundColor: '#2563eb',
77
- color: '#ffffff',
78
- padding: '12px 18px',
79
- borderRadius: 8,
80
- textDecoration: 'none',
81
- display: 'inline-block',
82
- fontSize: '14px',
83
- }}
84
- >
85
- {copy.openCta}
86
- </Button>
87
- <Hr style={{ margin: '24px 0', borderColor: '#e5e7eb' }} />
88
- <Text style={{ margin: 0, color: '#9ca3af', fontSize: '12px' }}>
89
- {copy.footer}
90
- </Text>
91
- </Section>
92
- </Container>
93
- </Body>
94
- </Html>
95
- )
96
- }
97
-
98
- export default NotificationEmail
@@ -1,42 +0,0 @@
1
- 'use client'
2
-
3
- import * as React from 'react'
4
- import { useRouter } from 'next/navigation'
5
- import { useT } from '@open-mercato/shared/lib/i18n/context'
6
- import { NotificationPanel } from '@open-mercato/ui/backend/notifications'
7
- import { useNotificationsPoll } from '@open-mercato/ui/backend/notifications'
8
-
9
- export function NotificationInboxPageClient() {
10
- const t = useT()
11
- const router = useRouter()
12
- const {
13
- notifications,
14
- unreadCount,
15
- markAsRead,
16
- executeAction,
17
- dismiss,
18
- dismissUndo,
19
- undoDismiss,
20
- markAllRead,
21
- } = useNotificationsPoll()
22
-
23
- return (
24
- <NotificationPanel
25
- open
26
- onOpenChange={(open) => {
27
- if (!open) router.push('/backend')
28
- }}
29
- notifications={notifications}
30
- unreadCount={unreadCount}
31
- onMarkAsRead={markAsRead}
32
- onExecuteAction={executeAction}
33
- onDismiss={dismiss}
34
- dismissUndo={dismissUndo}
35
- onUndoDismiss={undoDismiss}
36
- onMarkAllRead={markAllRead}
37
- t={t}
38
- />
39
- )
40
- }
41
-
42
- export default NotificationInboxPageClient
@@ -1,233 +0,0 @@
1
- "use client"
2
-
3
- import * as React from 'react'
4
- import { useT } from '@open-mercato/shared/lib/i18n/context'
5
- import { apiCall, readApiResultOrThrow } from '@open-mercato/ui/backend/utils/apiCall'
6
- import { flash } from '@open-mercato/ui/backend/FlashMessages'
7
- import { Button } from '@open-mercato/ui/primitives/button'
8
- import { Input } from '@open-mercato/ui/primitives/input'
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 { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@open-mercato/ui/primitives/card'
13
-
14
- type NotificationDeliveryConfig = {
15
- appUrl?: string
16
- panelPath: string
17
- strategies: {
18
- database: { enabled: boolean }
19
- email: { enabled: boolean; from?: string; replyTo?: string; subjectPrefix?: string }
20
- custom?: Record<string, { enabled?: boolean; config?: unknown }>
21
- }
22
- }
23
-
24
- type SettingsResponse = {
25
- settings?: NotificationDeliveryConfig
26
- error?: string
27
- }
28
-
29
- const emptySettings: NotificationDeliveryConfig = {
30
- panelPath: '/backend/notifications',
31
- strategies: {
32
- database: { enabled: true },
33
- email: { enabled: true },
34
- custom: {},
35
- },
36
- }
37
-
38
- export function NotificationSettingsPageClient() {
39
- const t = useT()
40
- const [settings, setSettings] = React.useState<NotificationDeliveryConfig | null>(null)
41
- const [loading, setLoading] = React.useState(true)
42
- const [saving, setSaving] = React.useState(false)
43
- const [error, setError] = React.useState<string | null>(null)
44
-
45
- const fetchSettings = React.useCallback(async () => {
46
- setLoading(true)
47
- setError(null)
48
- try {
49
- const body = await readApiResultOrThrow<SettingsResponse>(
50
- '/api/notifications/settings',
51
- undefined,
52
- { errorMessage: t('notifications.settings.loadError', 'Failed to load notification settings'), allowNullResult: true },
53
- )
54
- if (body?.settings) {
55
- setSettings(body.settings)
56
- } else {
57
- setSettings(emptySettings)
58
- }
59
- } catch (err) {
60
- const message = err instanceof Error ? err.message : t('notifications.settings.loadError', 'Failed to load notification settings')
61
- setError(message)
62
- flash(message, 'error')
63
- } finally {
64
- setLoading(false)
65
- }
66
- }, [t])
67
-
68
- React.useEffect(() => {
69
- fetchSettings()
70
- }, [fetchSettings])
71
-
72
- const updateSettings = (patch: Partial<NotificationDeliveryConfig>) => {
73
- setSettings((prev) => (prev ? { ...prev, ...patch } : prev))
74
- }
75
-
76
- const updateStrategy = (
77
- strategy: keyof NotificationDeliveryConfig['strategies'],
78
- patch: Partial<NotificationDeliveryConfig['strategies'][keyof NotificationDeliveryConfig['strategies']]>,
79
- ) => {
80
- setSettings((prev) => {
81
- if (!prev) return prev
82
- return {
83
- ...prev,
84
- strategies: {
85
- ...prev.strategies,
86
- [strategy]: {
87
- ...prev.strategies[strategy],
88
- ...patch,
89
- },
90
- },
91
- }
92
- })
93
- }
94
-
95
- const handleSave = async () => {
96
- if (!settings) return
97
- setSaving(true)
98
- try {
99
- const response = await apiCall<SettingsResponse>('/api/notifications/settings', {
100
- method: 'POST',
101
- headers: { 'Content-Type': 'application/json' },
102
- body: JSON.stringify(settings),
103
- })
104
- if (!response.ok) {
105
- const message = response.result?.error || t('notifications.settings.saveError', 'Failed to save notification settings')
106
- throw new Error(message)
107
- }
108
- if (response.result?.settings) {
109
- setSettings(response.result.settings)
110
- }
111
- flash(t('notifications.settings.saveSuccess', 'Notification settings saved'), 'success')
112
- } catch (err) {
113
- const message = err instanceof Error ? err.message : t('notifications.settings.saveError', 'Failed to save notification settings')
114
- flash(message, 'error')
115
- } finally {
116
- setSaving(false)
117
- }
118
- }
119
-
120
- if (loading || !settings) {
121
- return (
122
- <div className="flex items-center gap-2 text-sm text-muted-foreground">
123
- <Spinner size="sm" />
124
- {t('notifications.settings.loading', 'Loading notification settings...')}
125
- </div>
126
- )
127
- }
128
-
129
- return (
130
- <div className="flex flex-col gap-6">
131
- <div>
132
- <h1 className="text-2xl font-semibold">{t('notifications.settings.pageTitle', 'Notification Delivery')}</h1>
133
- <p className="text-muted-foreground text-sm">
134
- {t('notifications.settings.pageDescription', 'Configure delivery strategies for in-app notifications.')}
135
- </p>
136
- </div>
137
-
138
- <Card>
139
- <CardHeader>
140
- <CardTitle>{t('notifications.settings.core.title', 'Core delivery')}</CardTitle>
141
- <CardDescription>{t('notifications.settings.core.description', 'Control the default notification center and panel link used by external channels.')}</CardDescription>
142
- </CardHeader>
143
- <CardContent className="grid gap-4 md:grid-cols-2">
144
- <div className="space-y-2">
145
- <Label htmlFor="notifications-app-url">{t('notifications.settings.core.appUrl', 'Application URL')}</Label>
146
- <Input
147
- id="notifications-app-url"
148
- value={settings.appUrl ?? ''}
149
- placeholder="https://app.open-mercato.com"
150
- onChange={(event) => updateSettings({ appUrl: event.target.value || undefined })}
151
- />
152
- <p className="text-xs text-muted-foreground">{t('notifications.settings.core.appUrlHint', 'Used to build absolute links in email notifications.')}</p>
153
- </div>
154
- <div className="space-y-2">
155
- <Label htmlFor="notifications-panel-path">{t('notifications.settings.core.panelPath', 'Notification panel path')}</Label>
156
- <Input
157
- id="notifications-panel-path"
158
- value={settings.panelPath}
159
- onChange={(event) => updateSettings({ panelPath: event.target.value })}
160
- />
161
- <p className="text-xs text-muted-foreground">{t('notifications.settings.core.panelPathHint', 'Relative path for the read-only notification panel.')}</p>
162
- </div>
163
- <div className="flex items-center justify-between rounded-lg border p-3">
164
- <div>
165
- <p className="text-sm font-medium">{t('notifications.settings.core.databaseLabel', 'In-app notifications')}</p>
166
- <p className="text-xs text-muted-foreground">{t('notifications.settings.core.databaseHint', 'Store notifications in the database for the panel and bell.')}</p>
167
- </div>
168
- <Switch
169
- checked={settings.strategies.database.enabled}
170
- disabled
171
- onCheckedChange={(checked) => updateStrategy('database', { enabled: checked })}
172
- />
173
- </div>
174
- </CardContent>
175
- </Card>
176
-
177
- <Card>
178
- <CardHeader>
179
- <CardTitle>{t('notifications.settings.email.title', 'Email strategy')}</CardTitle>
180
- <CardDescription>{t('notifications.settings.email.description', 'Send notification copies via Resend using React templates.')}</CardDescription>
181
- </CardHeader>
182
- <CardContent className="grid gap-4 md:grid-cols-2">
183
- <div className="flex items-center justify-between rounded-lg border p-3 md:col-span-2">
184
- <div>
185
- <p className="text-sm font-medium">{t('notifications.settings.email.enabledLabel', 'Enable email delivery')}</p>
186
- <p className="text-xs text-muted-foreground">{t('notifications.settings.email.enabledHint', 'Email actions are read-only and link back to the notification center.')}</p>
187
- </div>
188
- <Switch
189
- checked={settings.strategies.email.enabled}
190
- onCheckedChange={(checked) => updateStrategy('email', { enabled: checked })}
191
- />
192
- </div>
193
- <div className="space-y-2">
194
- <Label htmlFor="notifications-email-from">{t('notifications.settings.email.from', 'From address')}</Label>
195
- <Input
196
- id="notifications-email-from"
197
- value={settings.strategies.email.from ?? ''}
198
- placeholder="notifications@open-mercato.com"
199
- onChange={(event) => updateStrategy('email', { from: event.target.value || undefined })}
200
- />
201
- </div>
202
- <div className="space-y-2">
203
- <Label htmlFor="notifications-email-reply">{t('notifications.settings.email.replyTo', 'Reply-to')}</Label>
204
- <Input
205
- id="notifications-email-reply"
206
- value={settings.strategies.email.replyTo ?? ''}
207
- placeholder="support@open-mercato.com"
208
- onChange={(event) => updateStrategy('email', { replyTo: event.target.value || undefined })}
209
- />
210
- </div>
211
- <div className="space-y-2 md:col-span-2">
212
- <Label htmlFor="notifications-email-subject-prefix">{t('notifications.settings.email.subjectPrefix', 'Subject prefix')}</Label>
213
- <Input
214
- id="notifications-email-subject-prefix"
215
- value={settings.strategies.email.subjectPrefix ?? ''}
216
- placeholder="[Open Mercato]"
217
- onChange={(event) => updateStrategy('email', { subjectPrefix: event.target.value || undefined })}
218
- />
219
- </div>
220
- </CardContent>
221
- </Card>
222
-
223
- <div className="flex items-center gap-3">
224
- <Button type="button" onClick={handleSave} disabled={saving}>
225
- {saving ? t('notifications.settings.saving', 'Saving...') : t('notifications.settings.save', 'Save settings')}
226
- </Button>
227
- {error && <span className="text-sm text-destructive">{error}</span>}
228
- </div>
229
- </div>
230
- )
231
- }
232
-
233
- export default NotificationSettingsPageClient
@@ -1,50 +0,0 @@
1
- {
2
- "notifications.nav.title": "Benachrichtigungen",
3
- "notifications.title": "Benachrichtigungen",
4
- "notifications.empty": "Keine Benachrichtigungen",
5
- "notifications.markAllRead": "Alle als gelesen markieren",
6
- "notifications.actionTaken": "Ausgeführte Aktion: {action}",
7
- "notifications.filters.all": "Alle",
8
- "notifications.filters.unread": "Ungelesen",
9
- "notifications.filters.actionRequired": "Aktion erforderlich",
10
- "notifications.actions.dismiss": "Verwerfen",
11
- "notifications.actions.undo": "Rückgängig",
12
- "notifications.actions.markRead": "Als gelesen markieren",
13
- "notifications.toast.new": "Neue Benachrichtigung",
14
- "notifications.toast.dismissed": "Benachrichtigung verworfen",
15
- "notifications.toast.actionSuccess": "Aktion erfolgreich ausgeführt",
16
- "notifications.toast.actionError": "Aktion konnte nicht ausgeführt werden",
17
- "notifications.error.load": "Benachrichtigungen konnten nicht geladen werden",
18
- "notifications.error.action": "Aktion konnte nicht ausgeführt werden",
19
- "notifications.badge.unread": "{count} ungelesene Benachrichtigungen",
20
- "notifications.delivery.email.preview": "Neue Benachrichtigung",
21
- "notifications.delivery.email.heading": "Sie haben eine neue Benachrichtigung",
22
- "notifications.delivery.email.bodyIntro": "Prüfen Sie die Benachrichtigung und führen Sie bei Bedarf Aktionen aus.",
23
- "notifications.delivery.email.actionNotice": "Aktionen sind in Open Mercato verfügbar und in dieser E-Mail schreibgeschützt.",
24
- "notifications.delivery.email.openCta": "Benachrichtigungszentrum öffnen",
25
- "notifications.delivery.email.footer": "Open Mercato Benachrichtigungen",
26
- "notifications.delivery.settings.invalid": "Ungültige Zustelleinstellungen",
27
- "notifications.settings.pageTitle": "Benachrichtigungszustellung",
28
- "notifications.settings.pageDescription": "Zustellstrategien für In-App-Benachrichtigungen konfigurieren.",
29
- "notifications.settings.loadError": "Benachrichtigungseinstellungen konnten nicht geladen werden",
30
- "notifications.settings.saveError": "Benachrichtigungseinstellungen konnten nicht gespeichert werden",
31
- "notifications.settings.saveSuccess": "Benachrichtigungseinstellungen gespeichert",
32
- "notifications.settings.loading": "Benachrichtigungseinstellungen werden geladen...",
33
- "notifications.settings.saving": "Speichern...",
34
- "notifications.settings.save": "Einstellungen speichern",
35
- "notifications.settings.core.title": "Kernzustellung",
36
- "notifications.settings.core.description": "Standard-Benachrichtigungszentrum und Panel-Link für externe Kanäle steuern.",
37
- "notifications.settings.core.appUrl": "Anwendungs-URL",
38
- "notifications.settings.core.appUrlHint": "Wird verwendet, um absolute Links in E-Mail-Benachrichtigungen zu erstellen.",
39
- "notifications.settings.core.panelPath": "Pfad des Benachrichtigungspanels",
40
- "notifications.settings.core.panelPathHint": "Relativer Pfad für das schreibgeschützte Benachrichtigungspanel.",
41
- "notifications.settings.core.databaseLabel": "In-App-Benachrichtigungen",
42
- "notifications.settings.core.databaseHint": "Speichert Benachrichtigungen in der Datenbank für Panel und Glocke.",
43
- "notifications.settings.email.title": "E-Mail-Strategie",
44
- "notifications.settings.email.description": "Benachrichtigungskopien per Resend mit React-Templates senden.",
45
- "notifications.settings.email.enabledLabel": "E-Mail-Zustellung aktivieren",
46
- "notifications.settings.email.enabledHint": "E-Mail-Aktionen sind schreibgeschützt und verlinken zurück zum Benachrichtigungszentrum.",
47
- "notifications.settings.email.from": "Absenderadresse",
48
- "notifications.settings.email.replyTo": "Antwortadresse",
49
- "notifications.settings.email.subjectPrefix": "Betreffpräfix"
50
- }
@@ -1,50 +0,0 @@
1
- {
2
- "notifications.nav.title": "Notifications",
3
- "notifications.title": "Notifications",
4
- "notifications.empty": "No notifications",
5
- "notifications.markAllRead": "Mark all read",
6
- "notifications.actionTaken": "Action taken: {action}",
7
- "notifications.filters.all": "All",
8
- "notifications.filters.unread": "Unread",
9
- "notifications.filters.actionRequired": "Action Required",
10
- "notifications.actions.dismiss": "Dismiss",
11
- "notifications.actions.undo": "Undo",
12
- "notifications.actions.markRead": "Mark as read",
13
- "notifications.toast.new": "New notification",
14
- "notifications.toast.dismissed": "Notification dismissed",
15
- "notifications.toast.actionSuccess": "Action completed successfully",
16
- "notifications.toast.actionError": "Failed to execute action",
17
- "notifications.error.load": "Failed to load notifications",
18
- "notifications.error.action": "Failed to execute action",
19
- "notifications.badge.unread": "{count} unread notifications",
20
- "notifications.delivery.email.preview": "New notification",
21
- "notifications.delivery.email.heading": "You have a new notification",
22
- "notifications.delivery.email.bodyIntro": "Review the notification details and take any required actions.",
23
- "notifications.delivery.email.actionNotice": "Actions are available in Open Mercato and are read-only in this email.",
24
- "notifications.delivery.email.openCta": "Open notification center",
25
- "notifications.delivery.email.footer": "Open Mercato notifications",
26
- "notifications.delivery.settings.invalid": "Invalid delivery settings",
27
- "notifications.settings.pageTitle": "Notification Delivery",
28
- "notifications.settings.pageDescription": "Configure delivery strategies for in-app notifications.",
29
- "notifications.settings.loadError": "Failed to load notification settings",
30
- "notifications.settings.saveError": "Failed to save notification settings",
31
- "notifications.settings.saveSuccess": "Notification settings saved",
32
- "notifications.settings.loading": "Loading notification settings...",
33
- "notifications.settings.saving": "Saving...",
34
- "notifications.settings.save": "Save settings",
35
- "notifications.settings.core.title": "Core delivery",
36
- "notifications.settings.core.description": "Control the default notification center and panel link used by external channels.",
37
- "notifications.settings.core.appUrl": "Application URL",
38
- "notifications.settings.core.appUrlHint": "Used to build absolute links in email notifications.",
39
- "notifications.settings.core.panelPath": "Notification panel path",
40
- "notifications.settings.core.panelPathHint": "Relative path for the read-only notification panel.",
41
- "notifications.settings.core.databaseLabel": "In-app notifications",
42
- "notifications.settings.core.databaseHint": "Store notifications in the database for the panel and bell.",
43
- "notifications.settings.email.title": "Email strategy",
44
- "notifications.settings.email.description": "Send notification copies via Resend using React templates.",
45
- "notifications.settings.email.enabledLabel": "Enable email delivery",
46
- "notifications.settings.email.enabledHint": "Email actions are read-only and link back to the notification center.",
47
- "notifications.settings.email.from": "From address",
48
- "notifications.settings.email.replyTo": "Reply-to",
49
- "notifications.settings.email.subjectPrefix": "Subject prefix"
50
- }
@@ -1,50 +0,0 @@
1
- {
2
- "notifications.nav.title": "Notificaciones",
3
- "notifications.title": "Notificaciones",
4
- "notifications.empty": "Sin notificaciones",
5
- "notifications.markAllRead": "Marcar todo como leído",
6
- "notifications.actionTaken": "Acción realizada: {action}",
7
- "notifications.filters.all": "Todas",
8
- "notifications.filters.unread": "No leídas",
9
- "notifications.filters.actionRequired": "Acción requerida",
10
- "notifications.actions.dismiss": "Descartar",
11
- "notifications.actions.undo": "Deshacer",
12
- "notifications.actions.markRead": "Marcar como leída",
13
- "notifications.toast.new": "Nueva notificación",
14
- "notifications.toast.dismissed": "Notificación descartada",
15
- "notifications.toast.actionSuccess": "Acción completada correctamente",
16
- "notifications.toast.actionError": "No se pudo ejecutar la acción",
17
- "notifications.error.load": "No se pudieron cargar las notificaciones",
18
- "notifications.error.action": "No se pudo ejecutar la acción",
19
- "notifications.badge.unread": "{count} notificaciones no leídas",
20
- "notifications.delivery.email.preview": "Nueva notificación",
21
- "notifications.delivery.email.heading": "Tienes una nueva notificación",
22
- "notifications.delivery.email.bodyIntro": "Revisa los detalles de la notificación y realiza las acciones necesarias.",
23
- "notifications.delivery.email.actionNotice": "Las acciones están disponibles en Open Mercato y son de solo lectura en este correo.",
24
- "notifications.delivery.email.openCta": "Abrir centro de notificaciones",
25
- "notifications.delivery.email.footer": "Notificaciones de Open Mercato",
26
- "notifications.delivery.settings.invalid": "Configuración de entrega no válida",
27
- "notifications.settings.pageTitle": "Entrega de notificaciones",
28
- "notifications.settings.pageDescription": "Configura las estrategias de entrega para las notificaciones en la app.",
29
- "notifications.settings.loadError": "No se pudieron cargar los ajustes de notificaciones",
30
- "notifications.settings.saveError": "No se pudieron guardar los ajustes de notificaciones",
31
- "notifications.settings.saveSuccess": "Ajustes de notificaciones guardados",
32
- "notifications.settings.loading": "Cargando ajustes de notificaciones...",
33
- "notifications.settings.saving": "Guardando...",
34
- "notifications.settings.save": "Guardar ajustes",
35
- "notifications.settings.core.title": "Entrega principal",
36
- "notifications.settings.core.description": "Controla el centro de notificaciones y el enlace del panel para canales externos.",
37
- "notifications.settings.core.appUrl": "URL de la aplicación",
38
- "notifications.settings.core.appUrlHint": "Se usa para construir enlaces absolutos en notificaciones por email.",
39
- "notifications.settings.core.panelPath": "Ruta del panel de notificaciones",
40
- "notifications.settings.core.panelPathHint": "Ruta relativa para el panel de notificaciones de solo lectura.",
41
- "notifications.settings.core.databaseLabel": "Notificaciones en la app",
42
- "notifications.settings.core.databaseHint": "Guarda las notificaciones en la base de datos para el panel y la campana.",
43
- "notifications.settings.email.title": "Estrategia de email",
44
- "notifications.settings.email.description": "Envía copias de notificaciones vía Resend con plantillas React.",
45
- "notifications.settings.email.enabledLabel": "Habilitar entrega por email",
46
- "notifications.settings.email.enabledHint": "Las acciones del email son de solo lectura y enlazan al centro de notificaciones.",
47
- "notifications.settings.email.from": "Dirección del remitente",
48
- "notifications.settings.email.replyTo": "Responder a",
49
- "notifications.settings.email.subjectPrefix": "Prefijo de asunto"
50
- }