@open-mercato/core 0.4.5-develop-754ef4d2f0 → 0.4.5-develop-9f9549ebc8

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 (434) hide show
  1. package/dist/generated/entities/message/index.js +65 -0
  2. package/dist/generated/entities/message/index.js.map +7 -0
  3. package/dist/generated/entities/message_access_token/index.js +19 -0
  4. package/dist/generated/entities/message_access_token/index.js.map +7 -0
  5. package/dist/generated/entities/message_confirmation/index.js +21 -0
  6. package/dist/generated/entities/message_confirmation/index.js.map +7 -0
  7. package/dist/generated/entities/message_object/index.js +23 -0
  8. package/dist/generated/entities/message_object/index.js.map +7 -0
  9. package/dist/generated/entities/message_recipient/index.js +31 -0
  10. package/dist/generated/entities/message_recipient/index.js.map +7 -0
  11. package/dist/generated/entities.ids.generated.js +8 -0
  12. package/dist/generated/entities.ids.generated.js.map +2 -2
  13. package/dist/generated/entity-fields-registry.js +10 -0
  14. package/dist/generated/entity-fields-registry.js.map +2 -2
  15. package/dist/modules/auth/components/AclEditor.js +4 -2
  16. package/dist/modules/auth/components/AclEditor.js.map +2 -2
  17. package/dist/modules/auth/frontend/reset.js +3 -3
  18. package/dist/modules/auth/frontend/reset.js.map +2 -2
  19. package/dist/modules/customers/backend/customers/deals/[id]/page.js +27 -8
  20. package/dist/modules/customers/backend/customers/deals/[id]/page.js.map +2 -2
  21. package/dist/modules/customers/lib/messageObjectPreviews.js +131 -0
  22. package/dist/modules/customers/lib/messageObjectPreviews.js.map +7 -0
  23. package/dist/modules/customers/message-objects.js +71 -0
  24. package/dist/modules/customers/message-objects.js.map +7 -0
  25. package/dist/modules/customers/widgets/messages/CustomerMessageObjectDetail.js +51 -0
  26. package/dist/modules/customers/widgets/messages/CustomerMessageObjectDetail.js.map +7 -0
  27. package/dist/modules/customers/widgets/messages/CustomerMessageObjectPreview.js +35 -0
  28. package/dist/modules/customers/widgets/messages/CustomerMessageObjectPreview.js.map +7 -0
  29. package/dist/modules/customers/widgets/messages/index.js +7 -0
  30. package/dist/modules/customers/widgets/messages/index.js.map +7 -0
  31. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js +35 -6
  32. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js.map +2 -2
  33. package/dist/modules/messages/acl.js +15 -0
  34. package/dist/modules/messages/acl.js.map +7 -0
  35. package/dist/modules/messages/api/[id]/actions/[actionId]/route.js +92 -0
  36. package/dist/modules/messages/api/[id]/actions/[actionId]/route.js.map +7 -0
  37. package/dist/modules/messages/api/[id]/archive/route.js +120 -0
  38. package/dist/modules/messages/api/[id]/archive/route.js.map +7 -0
  39. package/dist/modules/messages/api/[id]/attachments/route.js +195 -0
  40. package/dist/modules/messages/api/[id]/attachments/route.js.map +7 -0
  41. package/dist/modules/messages/api/[id]/confirmation/route.js +67 -0
  42. package/dist/modules/messages/api/[id]/confirmation/route.js.map +7 -0
  43. package/dist/modules/messages/api/[id]/conversation/archive/route.js +68 -0
  44. package/dist/modules/messages/api/[id]/conversation/archive/route.js.map +7 -0
  45. package/dist/modules/messages/api/[id]/conversation/read/route.js +68 -0
  46. package/dist/modules/messages/api/[id]/conversation/read/route.js.map +7 -0
  47. package/dist/modules/messages/api/[id]/conversation/route.js +68 -0
  48. package/dist/modules/messages/api/[id]/conversation/route.js.map +7 -0
  49. package/dist/modules/messages/api/[id]/forward/route.js +85 -0
  50. package/dist/modules/messages/api/[id]/forward/route.js.map +7 -0
  51. package/dist/modules/messages/api/[id]/forward-preview/route.js +70 -0
  52. package/dist/modules/messages/api/[id]/forward-preview/route.js.map +7 -0
  53. package/dist/modules/messages/api/[id]/read/route.js +120 -0
  54. package/dist/modules/messages/api/[id]/read/route.js.map +7 -0
  55. package/dist/modules/messages/api/[id]/reply/route.js +87 -0
  56. package/dist/modules/messages/api/[id]/reply/route.js.map +7 -0
  57. package/dist/modules/messages/api/[id]/route.js +350 -0
  58. package/dist/modules/messages/api/[id]/route.js.map +7 -0
  59. package/dist/modules/messages/api/object-types/route.js +54 -0
  60. package/dist/modules/messages/api/object-types/route.js.map +7 -0
  61. package/dist/modules/messages/api/openapi.js +261 -0
  62. package/dist/modules/messages/api/openapi.js.map +7 -0
  63. package/dist/modules/messages/api/route.js +262 -0
  64. package/dist/modules/messages/api/route.js.map +7 -0
  65. package/dist/modules/messages/api/token/[token]/route.js +99 -0
  66. package/dist/modules/messages/api/token/[token]/route.js.map +7 -0
  67. package/dist/modules/messages/api/types/route.js +40 -0
  68. package/dist/modules/messages/api/types/route.js.map +7 -0
  69. package/dist/modules/messages/api/unread-count/route.js +43 -0
  70. package/dist/modules/messages/api/unread-count/route.js.map +7 -0
  71. package/dist/modules/messages/backend/messages/[id]/page.js +10 -0
  72. package/dist/modules/messages/backend/messages/[id]/page.js.map +7 -0
  73. package/dist/modules/messages/backend/messages/[id]/page.meta.js +16 -0
  74. package/dist/modules/messages/backend/messages/[id]/page.meta.js.map +7 -0
  75. package/dist/modules/messages/backend/messages/compose/page.js +10 -0
  76. package/dist/modules/messages/backend/messages/compose/page.js.map +7 -0
  77. package/dist/modules/messages/backend/messages/compose/page.meta.js +17 -0
  78. package/dist/modules/messages/backend/messages/compose/page.meta.js.map +7 -0
  79. package/dist/modules/messages/backend/page.js +10 -0
  80. package/dist/modules/messages/backend/page.js.map +7 -0
  81. package/dist/modules/messages/backend/page.meta.js +33 -0
  82. package/dist/modules/messages/backend/page.meta.js.map +7 -0
  83. package/dist/modules/messages/commands/actions.js +265 -0
  84. package/dist/modules/messages/commands/actions.js.map +7 -0
  85. package/dist/modules/messages/commands/attachments.js +217 -0
  86. package/dist/modules/messages/commands/attachments.js.map +7 -0
  87. package/dist/modules/messages/commands/confirmations.js +151 -0
  88. package/dist/modules/messages/commands/confirmations.js.map +7 -0
  89. package/dist/modules/messages/commands/conversation.js +240 -0
  90. package/dist/modules/messages/commands/conversation.js.map +7 -0
  91. package/dist/modules/messages/commands/messages.js +748 -0
  92. package/dist/modules/messages/commands/messages.js.map +7 -0
  93. package/dist/modules/messages/commands/recipients.js +259 -0
  94. package/dist/modules/messages/commands/recipients.js.map +7 -0
  95. package/dist/modules/messages/commands/shared.js +258 -0
  96. package/dist/modules/messages/commands/shared.js.map +7 -0
  97. package/dist/modules/messages/commands/tokens.js +69 -0
  98. package/dist/modules/messages/commands/tokens.js.map +7 -0
  99. package/dist/modules/messages/components/ComposeMessagePageClient.js +24 -0
  100. package/dist/modules/messages/components/ComposeMessagePageClient.js.map +7 -0
  101. package/dist/modules/messages/components/MessageDetailPageClient.js +261 -0
  102. package/dist/modules/messages/components/MessageDetailPageClient.js.map +7 -0
  103. package/dist/modules/messages/components/MessagesInboxPageClient.js +390 -0
  104. package/dist/modules/messages/components/MessagesInboxPageClient.js.map +7 -0
  105. package/dist/modules/messages/components/confirmation/MessageConfirmationActions.js +31 -0
  106. package/dist/modules/messages/components/confirmation/MessageConfirmationActions.js.map +7 -0
  107. package/dist/modules/messages/components/confirmation/MessageConfirmationContent.js +69 -0
  108. package/dist/modules/messages/components/confirmation/MessageConfirmationContent.js.map +7 -0
  109. package/dist/modules/messages/components/defaults/DefaultMessageActions.js +31 -0
  110. package/dist/modules/messages/components/defaults/DefaultMessageActions.js.map +7 -0
  111. package/dist/modules/messages/components/defaults/DefaultMessageContent.js +19 -0
  112. package/dist/modules/messages/components/defaults/DefaultMessageContent.js.map +7 -0
  113. package/dist/modules/messages/components/defaults/DefaultMessageListItem.js +90 -0
  114. package/dist/modules/messages/components/defaults/DefaultMessageListItem.js.map +7 -0
  115. package/dist/modules/messages/components/defaults/MessageRecordObjectDetail.js +86 -0
  116. package/dist/modules/messages/components/defaults/MessageRecordObjectDetail.js.map +7 -0
  117. package/dist/modules/messages/components/defaults/MessageRecordObjectPreview.js +61 -0
  118. package/dist/modules/messages/components/defaults/MessageRecordObjectPreview.js.map +7 -0
  119. package/dist/modules/messages/components/message-detail/detail-panels.js +27 -0
  120. package/dist/modules/messages/components/message-detail/detail-panels.js.map +7 -0
  121. package/dist/modules/messages/components/message-detail/hooks/useMessageDetails.js +52 -0
  122. package/dist/modules/messages/components/message-detail/hooks/useMessageDetails.js.map +7 -0
  123. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsActions.js +289 -0
  124. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsActions.js.map +7 -0
  125. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.js +103 -0
  126. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.js.map +7 -0
  127. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsQueries.js +78 -0
  128. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsQueries.js.map +7 -0
  129. package/dist/modules/messages/components/message-detail/panels/MainMessageHeader.js +94 -0
  130. package/dist/modules/messages/components/message-detail/panels/MainMessageHeader.js.map +7 -0
  131. package/dist/modules/messages/components/message-detail/panels/MessageHeader.js +110 -0
  132. package/dist/modules/messages/components/message-detail/panels/MessageHeader.js.map +7 -0
  133. package/dist/modules/messages/components/message-detail/panels/MessageListComponent.js +58 -0
  134. package/dist/modules/messages/components/message-detail/panels/MessageListComponent.js.map +7 -0
  135. package/dist/modules/messages/components/message-detail/panels/actions-panel.js +51 -0
  136. package/dist/modules/messages/components/message-detail/panels/actions-panel.js.map +7 -0
  137. package/dist/modules/messages/components/message-detail/panels/attachments-panel.js +66 -0
  138. package/dist/modules/messages/components/message-detail/panels/attachments-panel.js.map +7 -0
  139. package/dist/modules/messages/components/message-detail/panels/body-panel.js +20 -0
  140. package/dist/modules/messages/components/message-detail/panels/body-panel.js.map +7 -0
  141. package/dist/modules/messages/components/message-detail/panels/composer-dialogs.js +36 -0
  142. package/dist/modules/messages/components/message-detail/panels/composer-dialogs.js.map +7 -0
  143. package/dist/modules/messages/components/message-detail/panels/dialogs.js +96 -0
  144. package/dist/modules/messages/components/message-detail/panels/dialogs.js.map +7 -0
  145. package/dist/modules/messages/components/message-detail/panels/index.js +25 -0
  146. package/dist/modules/messages/components/message-detail/panels/index.js.map +7 -0
  147. package/dist/modules/messages/components/message-detail/panels/meta-panel.js +14 -0
  148. package/dist/modules/messages/components/message-detail/panels/meta-panel.js.map +7 -0
  149. package/dist/modules/messages/components/message-detail/panels/objects-panel.js +51 -0
  150. package/dist/modules/messages/components/message-detail/panels/objects-panel.js.map +7 -0
  151. package/dist/modules/messages/components/message-detail/panels/thread-panel.js +54 -0
  152. package/dist/modules/messages/components/message-detail/panels/thread-panel.js.map +7 -0
  153. package/dist/modules/messages/components/message-detail/types.js +1 -0
  154. package/dist/modules/messages/components/message-detail/types.js.map +7 -0
  155. package/dist/modules/messages/components/message-detail/utils.js +54 -0
  156. package/dist/modules/messages/components/message-detail/utils.js.map +7 -0
  157. package/dist/modules/messages/components/utils/PriorityBadge.js +52 -0
  158. package/dist/modules/messages/components/utils/PriorityBadge.js.map +7 -0
  159. package/dist/modules/messages/components/utils/typeUiRegistry.js +77 -0
  160. package/dist/modules/messages/components/utils/typeUiRegistry.js.map +7 -0
  161. package/dist/modules/messages/data/entities.js +309 -0
  162. package/dist/modules/messages/data/entities.js.map +7 -0
  163. package/dist/modules/messages/data/validators.js +272 -0
  164. package/dist/modules/messages/data/validators.js.map +7 -0
  165. package/dist/modules/messages/emails/MessageEmail.js +108 -0
  166. package/dist/modules/messages/emails/MessageEmail.js.map +7 -0
  167. package/dist/modules/messages/events.js +24 -0
  168. package/dist/modules/messages/events.js.map +7 -0
  169. package/dist/modules/messages/frontend/messages/view/[token]/page.js +247 -0
  170. package/dist/modules/messages/frontend/messages/view/[token]/page.js.map +7 -0
  171. package/dist/modules/messages/frontend/messages/view/[token]/page.meta.js +9 -0
  172. package/dist/modules/messages/frontend/messages/view/[token]/page.meta.js.map +7 -0
  173. package/dist/modules/messages/index.js +21 -0
  174. package/dist/modules/messages/index.js.map +7 -0
  175. package/dist/modules/messages/lib/actions.js +141 -0
  176. package/dist/modules/messages/lib/actions.js.map +7 -0
  177. package/dist/modules/messages/lib/attachments.js +131 -0
  178. package/dist/modules/messages/lib/attachments.js.map +7 -0
  179. package/dist/modules/messages/lib/constants.js +7 -0
  180. package/dist/modules/messages/lib/constants.js.map +7 -0
  181. package/dist/modules/messages/lib/email-sender.js +201 -0
  182. package/dist/modules/messages/lib/email-sender.js.map +7 -0
  183. package/dist/modules/messages/lib/forwarding.js +179 -0
  184. package/dist/modules/messages/lib/forwarding.js.map +7 -0
  185. package/dist/modules/messages/lib/message-objects-registry.js +49 -0
  186. package/dist/modules/messages/lib/message-objects-registry.js.map +7 -0
  187. package/dist/modules/messages/lib/message-types-registry.js +41 -0
  188. package/dist/modules/messages/lib/message-types-registry.js.map +7 -0
  189. package/dist/modules/messages/lib/object-validation.js +20 -0
  190. package/dist/modules/messages/lib/object-validation.js.map +7 -0
  191. package/dist/modules/messages/lib/operationMetadata.js +21 -0
  192. package/dist/modules/messages/lib/operationMetadata.js.map +7 -0
  193. package/dist/modules/messages/lib/priorityUtils.js +61 -0
  194. package/dist/modules/messages/lib/priorityUtils.js.map +7 -0
  195. package/dist/modules/messages/lib/routeHelpers.js +44 -0
  196. package/dist/modules/messages/lib/routeHelpers.js.map +7 -0
  197. package/dist/modules/messages/message-objects.js +7 -0
  198. package/dist/modules/messages/message-objects.js.map +7 -0
  199. package/dist/modules/messages/message-types.js +67 -0
  200. package/dist/modules/messages/message-types.js.map +7 -0
  201. package/dist/modules/messages/migrations/Migration20260213181243.js +31 -0
  202. package/dist/modules/messages/migrations/Migration20260213181243.js.map +7 -0
  203. package/dist/modules/messages/migrations/Migration20260215165126.js +16 -0
  204. package/dist/modules/messages/migrations/Migration20260215165126.js.map +7 -0
  205. package/dist/modules/messages/notifications.js +27 -0
  206. package/dist/modules/messages/notifications.js.map +7 -0
  207. package/dist/modules/messages/setup.js +21 -0
  208. package/dist/modules/messages/setup.js.map +7 -0
  209. package/dist/modules/messages/subscribers/message-notification.js +108 -0
  210. package/dist/modules/messages/subscribers/message-notification.js.map +7 -0
  211. package/dist/modules/messages/workers/send-email.worker.js +253 -0
  212. package/dist/modules/messages/workers/send-email.worker.js.map +7 -0
  213. package/dist/modules/sales/backend/sales/documents/[id]/page.js +30 -11
  214. package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
  215. package/dist/modules/sales/commands/payments.js +12 -6
  216. package/dist/modules/sales/commands/payments.js.map +2 -2
  217. package/dist/modules/sales/lib/messageObjectPreviews.js +114 -0
  218. package/dist/modules/sales/lib/messageObjectPreviews.js.map +7 -0
  219. package/dist/modules/sales/message-objects.js +57 -0
  220. package/dist/modules/sales/message-objects.js.map +7 -0
  221. package/dist/modules/sales/widgets/messages/SalesDocumentMessageDetail.js +51 -0
  222. package/dist/modules/sales/widgets/messages/SalesDocumentMessageDetail.js.map +7 -0
  223. package/dist/modules/sales/widgets/messages/SalesDocumentMessagePreview.js +36 -0
  224. package/dist/modules/sales/widgets/messages/SalesDocumentMessagePreview.js.map +7 -0
  225. package/dist/modules/sales/widgets/messages/index.js +7 -0
  226. package/dist/modules/sales/widgets/messages/index.js.map +7 -0
  227. package/dist/modules/staff/backend/staff/leave-requests/[id]/page.js +55 -1
  228. package/dist/modules/staff/backend/staff/leave-requests/[id]/page.js.map +2 -2
  229. package/dist/modules/staff/backend/staff/my-leave-requests/[id]/page.js +60 -1
  230. package/dist/modules/staff/backend/staff/my-leave-requests/[id]/page.js.map +2 -2
  231. package/dist/modules/staff/backend/staff/team-members/[id]/page.js +2 -19
  232. package/dist/modules/staff/backend/staff/team-members/[id]/page.js.map +2 -2
  233. package/dist/modules/staff/components/LeaveRequestDetail.js +112 -0
  234. package/dist/modules/staff/components/LeaveRequestDetail.js.map +7 -0
  235. package/dist/modules/staff/components/LeaveRequestForm.js +3 -1
  236. package/dist/modules/staff/components/LeaveRequestForm.js.map +2 -2
  237. package/dist/modules/staff/components/LeaveRequestPreview.js +43 -0
  238. package/dist/modules/staff/components/LeaveRequestPreview.js.map +7 -0
  239. package/dist/modules/staff/lib/messageObjectPreviews.js +148 -0
  240. package/dist/modules/staff/lib/messageObjectPreviews.js.map +7 -0
  241. package/dist/modules/staff/message-objects.js +104 -0
  242. package/dist/modules/staff/message-objects.js.map +7 -0
  243. package/dist/modules/staff/message-types.js +23 -0
  244. package/dist/modules/staff/message-types.js.map +7 -0
  245. package/dist/modules/staff/widgets/messages/StaffMessageObjectDetail.js +51 -0
  246. package/dist/modules/staff/widgets/messages/StaffMessageObjectDetail.js.map +7 -0
  247. package/dist/modules/staff/widgets/messages/StaffMessageObjectPreview.js +34 -0
  248. package/dist/modules/staff/widgets/messages/StaffMessageObjectPreview.js.map +7 -0
  249. package/dist/modules/staff/widgets/messages/index.js +7 -0
  250. package/dist/modules/staff/widgets/messages/index.js.map +7 -0
  251. package/dist/modules/workflows/backend/definitions/visual-editor/page.js +6 -6
  252. package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +2 -2
  253. package/generated/entities/message/index.ts +31 -0
  254. package/generated/entities/message_access_token/index.ts +8 -0
  255. package/generated/entities/message_confirmation/index.ts +9 -0
  256. package/generated/entities/message_object/index.ts +10 -0
  257. package/generated/entities/message_recipient/index.ts +14 -0
  258. package/generated/entities.ids.generated.ts +8 -0
  259. package/generated/entity-fields-registry.ts +10 -0
  260. package/jest.setup.ts +5 -0
  261. package/package.json +2 -2
  262. package/src/modules/attachments/i18n/de.json +4 -0
  263. package/src/modules/attachments/i18n/en.json +4 -0
  264. package/src/modules/attachments/i18n/es.json +4 -0
  265. package/src/modules/attachments/i18n/pl.json +4 -0
  266. package/src/modules/auth/components/AclEditor.tsx +4 -2
  267. package/src/modules/auth/frontend/reset.tsx +3 -3
  268. package/src/modules/auth/i18n/de.json +5 -0
  269. package/src/modules/auth/i18n/en.json +5 -0
  270. package/src/modules/auth/i18n/es.json +5 -0
  271. package/src/modules/auth/i18n/pl.json +5 -0
  272. package/src/modules/catalog/i18n/de.json +21 -0
  273. package/src/modules/catalog/i18n/en.json +21 -0
  274. package/src/modules/catalog/i18n/es.json +21 -0
  275. package/src/modules/catalog/i18n/pl.json +21 -0
  276. package/src/modules/currencies/i18n/de.json +6 -0
  277. package/src/modules/currencies/i18n/en.json +6 -0
  278. package/src/modules/currencies/i18n/es.json +6 -0
  279. package/src/modules/currencies/i18n/pl.json +6 -0
  280. package/src/modules/customers/backend/customers/deals/[id]/page.tsx +20 -4
  281. package/src/modules/customers/i18n/de.json +26 -1
  282. package/src/modules/customers/i18n/en.json +25 -0
  283. package/src/modules/customers/i18n/es.json +25 -0
  284. package/src/modules/customers/i18n/pl.json +25 -0
  285. package/src/modules/customers/lib/messageObjectPreviews.ts +154 -0
  286. package/src/modules/customers/message-objects.ts +70 -0
  287. package/src/modules/customers/widgets/messages/CustomerMessageObjectDetail.tsx +57 -0
  288. package/src/modules/customers/widgets/messages/CustomerMessageObjectPreview.tsx +49 -0
  289. package/src/modules/customers/widgets/messages/index.ts +2 -0
  290. package/src/modules/dashboards/components/WidgetVisibilityEditor.tsx +41 -5
  291. package/src/modules/dashboards/i18n/de.json +5 -1
  292. package/src/modules/dashboards/i18n/en.json +5 -1
  293. package/src/modules/dashboards/i18n/es.json +5 -1
  294. package/src/modules/dashboards/i18n/pl.json +5 -1
  295. package/src/modules/dictionaries/i18n/de.json +14 -1
  296. package/src/modules/dictionaries/i18n/en.json +14 -1
  297. package/src/modules/dictionaries/i18n/es.json +14 -1
  298. package/src/modules/dictionaries/i18n/pl.json +14 -1
  299. package/src/modules/feature_toggles/i18n/de.json +3 -0
  300. package/src/modules/feature_toggles/i18n/en.json +3 -0
  301. package/src/modules/feature_toggles/i18n/es.json +3 -0
  302. package/src/modules/feature_toggles/i18n/pl.json +3 -0
  303. package/src/modules/messages/acl.ts +11 -0
  304. package/src/modules/messages/api/[id]/actions/[actionId]/route.ts +103 -0
  305. package/src/modules/messages/api/[id]/archive/route.ts +138 -0
  306. package/src/modules/messages/api/[id]/attachments/route.ts +217 -0
  307. package/src/modules/messages/api/[id]/confirmation/route.ts +73 -0
  308. package/src/modules/messages/api/[id]/conversation/archive/route.ts +69 -0
  309. package/src/modules/messages/api/[id]/conversation/read/route.ts +69 -0
  310. package/src/modules/messages/api/[id]/conversation/route.ts +69 -0
  311. package/src/modules/messages/api/[id]/forward/route.ts +87 -0
  312. package/src/modules/messages/api/[id]/forward-preview/route.ts +75 -0
  313. package/src/modules/messages/api/[id]/read/route.ts +138 -0
  314. package/src/modules/messages/api/[id]/reply/route.ts +89 -0
  315. package/src/modules/messages/api/[id]/route.ts +401 -0
  316. package/src/modules/messages/api/object-types/route.ts +54 -0
  317. package/src/modules/messages/api/openapi.ts +261 -0
  318. package/src/modules/messages/api/route.ts +374 -0
  319. package/src/modules/messages/api/token/[token]/route.ts +103 -0
  320. package/src/modules/messages/api/types/route.ts +39 -0
  321. package/src/modules/messages/api/unread-count/route.ts +55 -0
  322. package/src/modules/messages/backend/messages/[id]/page.meta.ts +12 -0
  323. package/src/modules/messages/backend/messages/[id]/page.tsx +12 -0
  324. package/src/modules/messages/backend/messages/compose/page.meta.ts +13 -0
  325. package/src/modules/messages/backend/messages/compose/page.tsx +12 -0
  326. package/src/modules/messages/backend/page.meta.ts +31 -0
  327. package/src/modules/messages/backend/page.tsx +12 -0
  328. package/src/modules/messages/commands/actions.ts +307 -0
  329. package/src/modules/messages/commands/attachments.ts +227 -0
  330. package/src/modules/messages/commands/confirmations.ts +183 -0
  331. package/src/modules/messages/commands/conversation.ts +292 -0
  332. package/src/modules/messages/commands/messages.ts +845 -0
  333. package/src/modules/messages/commands/recipients.ts +281 -0
  334. package/src/modules/messages/commands/shared.ts +350 -0
  335. package/src/modules/messages/commands/tokens.ts +80 -0
  336. package/src/modules/messages/components/ComposeMessagePageClient.tsx +23 -0
  337. package/src/modules/messages/components/MessageDetailPageClient.tsx +287 -0
  338. package/src/modules/messages/components/MessagesInboxPageClient.tsx +469 -0
  339. package/src/modules/messages/components/confirmation/MessageConfirmationActions.tsx +35 -0
  340. package/src/modules/messages/components/confirmation/MessageConfirmationContent.tsx +88 -0
  341. package/src/modules/messages/components/defaults/DefaultMessageActions.tsx +37 -0
  342. package/src/modules/messages/components/defaults/DefaultMessageContent.tsx +21 -0
  343. package/src/modules/messages/components/defaults/DefaultMessageListItem.tsx +102 -0
  344. package/src/modules/messages/components/defaults/MessageRecordObjectDetail.tsx +114 -0
  345. package/src/modules/messages/components/defaults/MessageRecordObjectPreview.tsx +74 -0
  346. package/src/modules/messages/components/message-detail/detail-panels.ts +13 -0
  347. package/src/modules/messages/components/message-detail/hooks/useMessageDetails.ts +56 -0
  348. package/src/modules/messages/components/message-detail/hooks/useMessageDetailsActions.ts +367 -0
  349. package/src/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.ts +134 -0
  350. package/src/modules/messages/components/message-detail/hooks/useMessageDetailsQueries.ts +102 -0
  351. package/src/modules/messages/components/message-detail/panels/MainMessageHeader.tsx +108 -0
  352. package/src/modules/messages/components/message-detail/panels/MessageHeader.tsx +144 -0
  353. package/src/modules/messages/components/message-detail/panels/MessageListComponent.tsx +63 -0
  354. package/src/modules/messages/components/message-detail/panels/actions-panel.tsx +66 -0
  355. package/src/modules/messages/components/message-detail/panels/attachments-panel.tsx +86 -0
  356. package/src/modules/messages/components/message-detail/panels/body-panel.tsx +32 -0
  357. package/src/modules/messages/components/message-detail/panels/composer-dialogs.tsx +42 -0
  358. package/src/modules/messages/components/message-detail/panels/dialogs.tsx +107 -0
  359. package/src/modules/messages/components/message-detail/panels/index.ts +11 -0
  360. package/src/modules/messages/components/message-detail/panels/meta-panel.tsx +19 -0
  361. package/src/modules/messages/components/message-detail/panels/objects-panel.tsx +65 -0
  362. package/src/modules/messages/components/message-detail/panels/thread-panel.tsx +65 -0
  363. package/src/modules/messages/components/message-detail/types.ts +114 -0
  364. package/src/modules/messages/components/message-detail/utils.ts +62 -0
  365. package/src/modules/messages/components/utils/PriorityBadge.tsx +63 -0
  366. package/src/modules/messages/components/utils/typeUiRegistry.ts +106 -0
  367. package/src/modules/messages/data/entities.ts +284 -0
  368. package/src/modules/messages/data/validators.ts +297 -0
  369. package/src/modules/messages/emails/MessageEmail.tsx +143 -0
  370. package/src/modules/messages/events.ts +24 -0
  371. package/src/modules/messages/frontend/messages/view/[token]/page.meta.ts +5 -0
  372. package/src/modules/messages/frontend/messages/view/[token]/page.tsx +389 -0
  373. package/src/modules/messages/i18n/de.json +240 -0
  374. package/src/modules/messages/i18n/en.json +240 -0
  375. package/src/modules/messages/i18n/es.json +240 -0
  376. package/src/modules/messages/i18n/pl.json +240 -0
  377. package/src/modules/messages/index.ts +19 -0
  378. package/src/modules/messages/lib/actions.ts +204 -0
  379. package/src/modules/messages/lib/attachments.ts +197 -0
  380. package/src/modules/messages/lib/constants.ts +2 -0
  381. package/src/modules/messages/lib/email-sender.ts +255 -0
  382. package/src/modules/messages/lib/forwarding.ts +240 -0
  383. package/src/modules/messages/lib/message-objects-registry.ts +60 -0
  384. package/src/modules/messages/lib/message-types-registry.ts +48 -0
  385. package/src/modules/messages/lib/object-validation.ts +26 -0
  386. package/src/modules/messages/lib/operationMetadata.ts +43 -0
  387. package/src/modules/messages/lib/priorityUtils.ts +76 -0
  388. package/src/modules/messages/lib/routeHelpers.ts +65 -0
  389. package/src/modules/messages/message-objects.ts +5 -0
  390. package/src/modules/messages/message-types.ts +65 -0
  391. package/src/modules/messages/migrations/.snapshot-open-mercato.json +957 -0
  392. package/src/modules/messages/migrations/Migration20260213181243.ts +34 -0
  393. package/src/modules/messages/migrations/Migration20260215165126.ts +16 -0
  394. package/src/modules/messages/notifications.ts +25 -0
  395. package/src/modules/messages/setup.ts +19 -0
  396. package/src/modules/messages/subscribers/message-notification.ts +138 -0
  397. package/src/modules/messages/workers/send-email.worker.ts +321 -0
  398. package/src/modules/query_index/i18n/es.json +2 -2
  399. package/src/modules/resources/i18n/de.json +57 -0
  400. package/src/modules/resources/i18n/en.json +57 -0
  401. package/src/modules/resources/i18n/es.json +57 -0
  402. package/src/modules/resources/i18n/pl.json +57 -0
  403. package/src/modules/sales/backend/sales/documents/[id]/page.tsx +23 -7
  404. package/src/modules/sales/commands/payments.ts +12 -6
  405. package/src/modules/sales/i18n/de.json +26 -0
  406. package/src/modules/sales/i18n/en.json +26 -0
  407. package/src/modules/sales/i18n/es.json +26 -0
  408. package/src/modules/sales/i18n/pl.json +26 -0
  409. package/src/modules/sales/lib/messageObjectPreviews.ts +150 -0
  410. package/src/modules/sales/message-objects.ts +56 -0
  411. package/src/modules/sales/widgets/messages/SalesDocumentMessageDetail.tsx +57 -0
  412. package/src/modules/sales/widgets/messages/SalesDocumentMessagePreview.tsx +46 -0
  413. package/src/modules/sales/widgets/messages/index.ts +2 -0
  414. package/src/modules/staff/backend/staff/leave-requests/[id]/page.tsx +54 -0
  415. package/src/modules/staff/backend/staff/my-leave-requests/[id]/page.tsx +58 -0
  416. package/src/modules/staff/backend/staff/team-members/[id]/page.tsx +2 -32
  417. package/src/modules/staff/components/LeaveRequestDetail.tsx +135 -0
  418. package/src/modules/staff/components/LeaveRequestForm.tsx +3 -0
  419. package/src/modules/staff/components/LeaveRequestPreview.tsx +74 -0
  420. package/src/modules/staff/i18n/de.json +22 -0
  421. package/src/modules/staff/i18n/en.json +22 -0
  422. package/src/modules/staff/i18n/es.json +22 -0
  423. package/src/modules/staff/i18n/pl.json +22 -0
  424. package/src/modules/staff/lib/messageObjectPreviews.ts +182 -0
  425. package/src/modules/staff/message-objects.ts +102 -0
  426. package/src/modules/staff/message-types.ts +21 -0
  427. package/src/modules/staff/widgets/messages/StaffMessageObjectDetail.tsx +57 -0
  428. package/src/modules/staff/widgets/messages/StaffMessageObjectPreview.tsx +44 -0
  429. package/src/modules/staff/widgets/messages/index.ts +2 -0
  430. package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +6 -6
  431. package/src/modules/workflows/i18n/de.json +41 -0
  432. package/src/modules/workflows/i18n/en.json +41 -0
  433. package/src/modules/workflows/i18n/es.json +41 -0
  434. package/src/modules/workflows/i18n/pl.json +41 -0
@@ -21,7 +21,7 @@ export default function ResetPage() {
21
21
  const res = await fetch('/api/auth/reset', { method: 'POST', body: form })
22
22
  if (!res.ok) {
23
23
  const data = await res.json().catch(() => null)
24
- setError(data?.error || 'Something went wrong')
24
+ setError(data?.error || t('auth.reset.error', 'Something went wrong'))
25
25
  return
26
26
  }
27
27
  setSent(true)
@@ -35,12 +35,12 @@ export default function ResetPage() {
35
35
  <Card className="w-full max-w-sm">
36
36
  <CardHeader>
37
37
  <CardTitle>{t('auth.resetPassword')}</CardTitle>
38
- <CardDescription>Enter your email to receive reset link</CardDescription>
38
+ <CardDescription>{t('auth.reset.description', 'Enter your email to receive reset link')}</CardDescription>
39
39
  </CardHeader>
40
40
  <CardContent>
41
41
  {sent ? (
42
42
  <div className="text-sm text-muted-foreground">
43
- If an account with that email exists, we sent a reset link. Please check your inbox.
43
+ {t('auth.reset.sent', 'If an account with that email exists, we sent a reset link. Please check your inbox.')}
44
44
  </div>
45
45
  ) : (
46
46
  <form className="grid gap-3" onSubmit={onSubmit} noValidate>
@@ -1,4 +1,6 @@
1
1
  {
2
+ "auth.acl.allowAllOrganizations": "Alle Organisationen zulassen",
3
+ "auth.acl.organizationWarning": "Organisationseinschränkungen werden nur gespeichert, wenn mindestens eine Berechtigungsüberschreibung ausgewählt ist. Füge eine Berechtigung hinzu oder aktiviere einen Modul-Wildcard vor dem Speichern.",
2
4
  "auth.actions.contactSupport": "Support kontaktieren",
3
5
  "auth.actions.viewPermissions": "Berechtigungen anzeigen",
4
6
  "auth.actions.viewSessions": "Sitzungen anzeigen",
@@ -73,7 +75,10 @@
73
75
  "auth.profile.form.success": "Profil aktualisiert.",
74
76
  "auth.profile.subtitle": "Passwort ändern",
75
77
  "auth.profile.title": "Profil",
78
+ "auth.reset.description": "Gib deine E-Mail-Adresse ein, um einen Zurücksetzungslink zu erhalten",
79
+ "auth.reset.error": "Etwas ist schiefgelaufen",
76
80
  "auth.reset.errors.failed": "Passwort konnte nicht zurückgesetzt werden",
81
+ "auth.reset.sent": "Falls ein Konto mit dieser E-Mail-Adresse existiert, haben wir einen Zurücksetzungslink gesendet. Überprüfe deinen Posteingang.",
77
82
  "auth.reset.form.loading": "...",
78
83
  "auth.reset.form.password": "Neues Passwort",
79
84
  "auth.reset.form.submit": "Passwort aktualisieren",
@@ -1,4 +1,6 @@
1
1
  {
2
+ "auth.acl.allowAllOrganizations": "Allow all organizations",
3
+ "auth.acl.organizationWarning": "Organization restrictions are saved only when at least one feature override is selected. Add a feature or enable a module wildcard before saving.",
2
4
  "auth.actions.contactSupport": "Contact Support",
3
5
  "auth.actions.viewPermissions": "View Permissions",
4
6
  "auth.actions.viewSessions": "View Sessions",
@@ -73,7 +75,10 @@
73
75
  "auth.profile.form.success": "Profile updated.",
74
76
  "auth.profile.subtitle": "Change password",
75
77
  "auth.profile.title": "Profile",
78
+ "auth.reset.description": "Enter your email to receive reset link",
79
+ "auth.reset.error": "Something went wrong",
76
80
  "auth.reset.errors.failed": "Unable to reset password",
81
+ "auth.reset.sent": "If an account with that email exists, we sent a reset link. Please check your inbox.",
77
82
  "auth.reset.form.loading": "...",
78
83
  "auth.reset.form.password": "New password",
79
84
  "auth.reset.form.submit": "Update password",
@@ -1,4 +1,6 @@
1
1
  {
2
+ "auth.acl.allowAllOrganizations": "Permitir todas las organizaciones",
3
+ "auth.acl.organizationWarning": "Las restricciones de organización se guardan solo cuando se selecciona al menos una anulación de función. Agrega una función o habilita un comodín de módulo antes de guardar.",
2
4
  "auth.actions.contactSupport": "Contactar soporte",
3
5
  "auth.actions.viewPermissions": "Ver permisos",
4
6
  "auth.actions.viewSessions": "Ver sesiones",
@@ -73,7 +75,10 @@
73
75
  "auth.profile.form.success": "Perfil actualizado.",
74
76
  "auth.profile.subtitle": "Cambiar contraseña",
75
77
  "auth.profile.title": "Perfil",
78
+ "auth.reset.description": "Ingresa tu correo para recibir un enlace de restablecimiento",
79
+ "auth.reset.error": "Algo salió mal",
76
80
  "auth.reset.errors.failed": "No se pudo restablecer la contraseña",
81
+ "auth.reset.sent": "Si existe una cuenta con ese correo, enviamos un enlace de restablecimiento. Revisa tu bandeja de entrada.",
77
82
  "auth.reset.form.loading": "...",
78
83
  "auth.reset.form.password": "Nueva contraseña",
79
84
  "auth.reset.form.submit": "Actualizar contraseña",
@@ -1,4 +1,6 @@
1
1
  {
2
+ "auth.acl.allowAllOrganizations": "Zezwól na wszystkie organizacje",
3
+ "auth.acl.organizationWarning": "Ograniczenia organizacyjne są zapisywane tylko wtedy, gdy wybrano co najmniej jedno nadpisanie uprawnień. Dodaj uprawnienie lub włącz wildcard modułu przed zapisaniem.",
2
4
  "auth.actions.contactSupport": "Skontaktuj się z pomocą",
3
5
  "auth.actions.viewPermissions": "Zobacz uprawnienia",
4
6
  "auth.actions.viewSessions": "Zobacz sesje",
@@ -73,7 +75,10 @@
73
75
  "auth.profile.form.success": "Profil zaktualizowany.",
74
76
  "auth.profile.subtitle": "Zmiana hasła",
75
77
  "auth.profile.title": "Profil",
78
+ "auth.reset.description": "Podaj swój adres e-mail, aby otrzymać link do resetowania",
79
+ "auth.reset.error": "Coś poszło nie tak",
76
80
  "auth.reset.errors.failed": "Nie udało się zresetować hasła",
81
+ "auth.reset.sent": "Jeśli konto z tym adresem e-mail istnieje, wysłaliśmy link do resetowania. Sprawdź swoją skrzynkę odbiorczą.",
77
82
  "auth.reset.form.loading": "...",
78
83
  "auth.reset.form.password": "Nowe hasło",
79
84
  "auth.reset.form.submit": "Zaktualizuj hasło",
@@ -1,6 +1,27 @@
1
1
  {
2
2
  "audit_logs.resource_kind.catalog.price": "Preis",
3
3
  "audit_logs.resource_kind.catalog.variant": "Variante",
4
+ "catalog.audit.categories.create": "Kategorie erstellen",
5
+ "catalog.audit.categories.delete": "Kategorie löschen",
6
+ "catalog.audit.categories.update": "Kategorie aktualisieren",
7
+ "catalog.audit.offers.create": "Angebot erstellen",
8
+ "catalog.audit.offers.delete": "Angebot löschen",
9
+ "catalog.audit.offers.update": "Angebot aktualisieren",
10
+ "catalog.audit.optionSchemas.create": "Optionsschema erstellen",
11
+ "catalog.audit.optionSchemas.delete": "Optionsschema löschen",
12
+ "catalog.audit.optionSchemas.update": "Optionsschema aktualisieren",
13
+ "catalog.audit.priceKinds.create": "Preisart erstellen",
14
+ "catalog.audit.priceKinds.delete": "Preisart löschen",
15
+ "catalog.audit.priceKinds.update": "Preisart aktualisieren",
16
+ "catalog.audit.prices.create": "Preis erstellen",
17
+ "catalog.audit.prices.delete": "Preis löschen",
18
+ "catalog.audit.prices.update": "Preis aktualisieren",
19
+ "catalog.audit.products.create": "Produkt erstellen",
20
+ "catalog.audit.products.delete": "Produkt löschen",
21
+ "catalog.audit.products.update": "Produkt aktualisieren",
22
+ "catalog.audit.variants.create": "Variante erstellen",
23
+ "catalog.audit.variants.delete": "Variante löschen",
24
+ "catalog.audit.variants.update": "Variante aktualisieren",
4
25
  "catalog.categories.flash.created": "Kategorie erstellt",
5
26
  "catalog.categories.flash.deleted": "Kategorie archiviert",
6
27
  "catalog.categories.flash.updated": "Kategorie aktualisiert",
@@ -1,6 +1,27 @@
1
1
  {
2
2
  "audit_logs.resource_kind.catalog.price": "Price",
3
3
  "audit_logs.resource_kind.catalog.variant": "Variant",
4
+ "catalog.audit.categories.create": "Create category",
5
+ "catalog.audit.categories.delete": "Delete category",
6
+ "catalog.audit.categories.update": "Update category",
7
+ "catalog.audit.offers.create": "Create offer",
8
+ "catalog.audit.offers.delete": "Delete offer",
9
+ "catalog.audit.offers.update": "Update offer",
10
+ "catalog.audit.optionSchemas.create": "Create option schema",
11
+ "catalog.audit.optionSchemas.delete": "Delete option schema",
12
+ "catalog.audit.optionSchemas.update": "Update option schema",
13
+ "catalog.audit.priceKinds.create": "Create price kind",
14
+ "catalog.audit.priceKinds.delete": "Delete price kind",
15
+ "catalog.audit.priceKinds.update": "Update price kind",
16
+ "catalog.audit.prices.create": "Create price",
17
+ "catalog.audit.prices.delete": "Delete price",
18
+ "catalog.audit.prices.update": "Update price",
19
+ "catalog.audit.products.create": "Create product",
20
+ "catalog.audit.products.delete": "Delete product",
21
+ "catalog.audit.products.update": "Update product",
22
+ "catalog.audit.variants.create": "Create variant",
23
+ "catalog.audit.variants.delete": "Delete variant",
24
+ "catalog.audit.variants.update": "Update variant",
4
25
  "catalog.categories.flash.created": "Category created",
5
26
  "catalog.categories.flash.deleted": "Category archived",
6
27
  "catalog.categories.flash.updated": "Category updated",
@@ -1,6 +1,27 @@
1
1
  {
2
2
  "audit_logs.resource_kind.catalog.price": "Precio",
3
3
  "audit_logs.resource_kind.catalog.variant": "Variante",
4
+ "catalog.audit.categories.create": "Crear categoría",
5
+ "catalog.audit.categories.delete": "Eliminar categoría",
6
+ "catalog.audit.categories.update": "Actualizar categoría",
7
+ "catalog.audit.offers.create": "Crear oferta",
8
+ "catalog.audit.offers.delete": "Eliminar oferta",
9
+ "catalog.audit.offers.update": "Actualizar oferta",
10
+ "catalog.audit.optionSchemas.create": "Crear esquema de opciones",
11
+ "catalog.audit.optionSchemas.delete": "Eliminar esquema de opciones",
12
+ "catalog.audit.optionSchemas.update": "Actualizar esquema de opciones",
13
+ "catalog.audit.priceKinds.create": "Crear tipo de precio",
14
+ "catalog.audit.priceKinds.delete": "Eliminar tipo de precio",
15
+ "catalog.audit.priceKinds.update": "Actualizar tipo de precio",
16
+ "catalog.audit.prices.create": "Crear precio",
17
+ "catalog.audit.prices.delete": "Eliminar precio",
18
+ "catalog.audit.prices.update": "Actualizar precio",
19
+ "catalog.audit.products.create": "Crear producto",
20
+ "catalog.audit.products.delete": "Eliminar producto",
21
+ "catalog.audit.products.update": "Actualizar producto",
22
+ "catalog.audit.variants.create": "Crear variante",
23
+ "catalog.audit.variants.delete": "Eliminar variante",
24
+ "catalog.audit.variants.update": "Actualizar variante",
4
25
  "catalog.categories.flash.created": "Categoría creada",
5
26
  "catalog.categories.flash.deleted": "Categoría archivada",
6
27
  "catalog.categories.flash.updated": "Categoría actualizada",
@@ -1,6 +1,27 @@
1
1
  {
2
2
  "audit_logs.resource_kind.catalog.price": "Cena",
3
3
  "audit_logs.resource_kind.catalog.variant": "Wariant",
4
+ "catalog.audit.categories.create": "Utwórz kategorię",
5
+ "catalog.audit.categories.delete": "Usuń kategorię",
6
+ "catalog.audit.categories.update": "Zaktualizuj kategorię",
7
+ "catalog.audit.offers.create": "Utwórz ofertę",
8
+ "catalog.audit.offers.delete": "Usuń ofertę",
9
+ "catalog.audit.offers.update": "Zaktualizuj ofertę",
10
+ "catalog.audit.optionSchemas.create": "Utwórz schemat opcji",
11
+ "catalog.audit.optionSchemas.delete": "Usuń schemat opcji",
12
+ "catalog.audit.optionSchemas.update": "Zaktualizuj schemat opcji",
13
+ "catalog.audit.priceKinds.create": "Utwórz rodzaj ceny",
14
+ "catalog.audit.priceKinds.delete": "Usuń rodzaj ceny",
15
+ "catalog.audit.priceKinds.update": "Zaktualizuj rodzaj ceny",
16
+ "catalog.audit.prices.create": "Utwórz cenę",
17
+ "catalog.audit.prices.delete": "Usuń cenę",
18
+ "catalog.audit.prices.update": "Zaktualizuj cenę",
19
+ "catalog.audit.products.create": "Utwórz produkt",
20
+ "catalog.audit.products.delete": "Usuń produkt",
21
+ "catalog.audit.products.update": "Zaktualizuj produkt",
22
+ "catalog.audit.variants.create": "Utwórz wariant",
23
+ "catalog.audit.variants.delete": "Usuń wariant",
24
+ "catalog.audit.variants.update": "Zaktualizuj wariant",
4
25
  "catalog.categories.flash.created": "Kategoria utworzona",
5
26
  "catalog.categories.flash.deleted": "Kategoria zarchiwizowana",
6
27
  "catalog.categories.flash.updated": "Kategoria zaktualizowana",
@@ -1,5 +1,8 @@
1
1
  {
2
2
  "audit_logs.resource_kind.currencies.exchange_rate": "Wechselkurs",
3
+ "currencies.audit.create": "Währung erstellen",
4
+ "currencies.audit.delete": "Währung löschen",
5
+ "currencies.audit.update": "Währung aktualisieren",
3
6
  "currencies.create.title": "Währung erstellen",
4
7
  "currencies.currencies.update": "Währung aktualisieren",
5
8
  "currencies.edit.title": "Währung bearbeiten",
@@ -80,6 +83,9 @@
80
83
  "currencies.module.title": "Währungen & Wechselkurse",
81
84
  "currencies.nav.group": "Währungen",
82
85
  "currencies.page.title": "Währungen",
86
+ "currencies.rates.audit.create": "Wechselkurs erstellen",
87
+ "currencies.rates.audit.delete": "Wechselkurs löschen",
88
+ "currencies.rates.audit.update": "Wechselkurs aktualisieren",
83
89
  "exchangeRates.create.title": "Wechselkurs erstellen",
84
90
  "exchangeRates.edit.title": "Wechselkurs bearbeiten",
85
91
  "exchangeRates.flash.created": "Wechselkurs erfolgreich erstellt",
@@ -1,5 +1,8 @@
1
1
  {
2
2
  "audit_logs.resource_kind.currencies.exchange_rate": "Exchange Rate",
3
+ "currencies.audit.create": "Create currency",
4
+ "currencies.audit.delete": "Delete currency",
5
+ "currencies.audit.update": "Update currency",
3
6
  "currencies.create.title": "Create Currency",
4
7
  "currencies.currencies.update": "Update currency",
5
8
  "currencies.edit.title": "Edit Currency",
@@ -80,6 +83,9 @@
80
83
  "currencies.module.title": "Currencies & Exchange Rates",
81
84
  "currencies.nav.group": "Currencies",
82
85
  "currencies.page.title": "Currencies",
86
+ "currencies.rates.audit.create": "Create exchange rate",
87
+ "currencies.rates.audit.delete": "Delete exchange rate",
88
+ "currencies.rates.audit.update": "Update exchange rate",
83
89
  "exchangeRates.create.title": "Create Exchange Rate",
84
90
  "exchangeRates.edit.title": "Edit Exchange Rate",
85
91
  "exchangeRates.flash.created": "Exchange rate created successfully",
@@ -1,5 +1,8 @@
1
1
  {
2
2
  "audit_logs.resource_kind.currencies.exchange_rate": "Tipo de cambio",
3
+ "currencies.audit.create": "Crear moneda",
4
+ "currencies.audit.delete": "Eliminar moneda",
5
+ "currencies.audit.update": "Actualizar moneda",
3
6
  "currencies.create.title": "Crear Moneda",
4
7
  "currencies.currencies.update": "Actualizar moneda",
5
8
  "currencies.edit.title": "Editar Moneda",
@@ -80,6 +83,9 @@
80
83
  "currencies.module.title": "Monedas y Tipos de Cambio",
81
84
  "currencies.nav.group": "Monedas",
82
85
  "currencies.page.title": "Monedas",
86
+ "currencies.rates.audit.create": "Crear tipo de cambio",
87
+ "currencies.rates.audit.delete": "Eliminar tipo de cambio",
88
+ "currencies.rates.audit.update": "Actualizar tipo de cambio",
83
89
  "exchangeRates.create.title": "Crear Tipo de Cambio",
84
90
  "exchangeRates.edit.title": "Editar Tipo de Cambio",
85
91
  "exchangeRates.flash.created": "Tipo de cambio creado correctamente",
@@ -1,5 +1,8 @@
1
1
  {
2
2
  "audit_logs.resource_kind.currencies.exchange_rate": "Kurs wymiany",
3
+ "currencies.audit.create": "Utwórz walutę",
4
+ "currencies.audit.delete": "Usuń walutę",
5
+ "currencies.audit.update": "Zaktualizuj walutę",
3
6
  "currencies.create.title": "Utwórz Walutę",
4
7
  "currencies.currencies.update": "Aktualizuj walutę",
5
8
  "currencies.edit.title": "Edytuj Walutę",
@@ -80,6 +83,9 @@
80
83
  "currencies.module.title": "Waluty i Kursy Wymiany",
81
84
  "currencies.nav.group": "Waluty",
82
85
  "currencies.page.title": "Waluty",
86
+ "currencies.rates.audit.create": "Utwórz kurs wymiany",
87
+ "currencies.rates.audit.delete": "Usuń kurs wymiany",
88
+ "currencies.rates.audit.update": "Zaktualizuj kurs wymiany",
83
89
  "exchangeRates.create.title": "Utwórz Kurs Wymiany",
84
90
  "exchangeRates.edit.title": "Edytuj Kurs Wymiany",
85
91
  "exchangeRates.flash.created": "Kurs wymiany utworzony pomyślnie",
@@ -8,6 +8,7 @@ import { Page, PageBody } from '@open-mercato/ui/backend/Page'
8
8
  import { Button } from '@open-mercato/ui/primitives/button'
9
9
  import { FormHeader } from '@open-mercato/ui/backend/forms'
10
10
  import { VersionHistoryAction } from '@open-mercato/ui/backend/version-history'
11
+ import { SendObjectMessageDialog } from '@open-mercato/ui/backend/messages'
11
12
  import { Spinner } from '@open-mercato/ui/primitives/spinner'
12
13
  import { flash } from '@open-mercato/ui/backend/FlashMessages'
13
14
  import { apiCallOrThrow, readApiResultOrThrow } from '@open-mercato/ui/backend/utils/apiCall'
@@ -394,10 +395,25 @@ export default function DealDetailPage({ params }: { params?: { id?: string } })
394
395
  backHref="/backend/customers/deals"
395
396
  backLabel={t('customers.deals.detail.backToList', 'Back to deals')}
396
397
  utilityActions={(
397
- <VersionHistoryAction
398
- config={{ resourceKind: 'customers.deal', resourceId: data.deal.id }}
399
- t={t}
400
- />
398
+ <>
399
+ <SendObjectMessageDialog
400
+ object={{
401
+ entityModule: 'customers',
402
+ entityType: 'deal',
403
+ entityId: data.deal.id,
404
+ sourceEntityType: 'customers.deal',
405
+ sourceEntityId: data.deal.id,
406
+ }}
407
+ defaultValues={{
408
+ sourceEntityType: 'customers.deal',
409
+ sourceEntityId: data.deal.id,
410
+ }}
411
+ />
412
+ <VersionHistoryAction
413
+ config={{ resourceKind: 'customers.deal', resourceId: data.deal.id }}
414
+ t={t}
415
+ />
416
+ </>
401
417
  )}
402
418
  title={
403
419
  <div className="flex flex-wrap items-center gap-2">
@@ -30,6 +30,7 @@
30
30
  "customers.audit.tags.delete": "Tag löschen",
31
31
  "customers.audit.tags.unassign": "Tag entfernen",
32
32
  "customers.audit.tags.update": "Tag aktualisieren",
33
+ "customers.audit.todos.create": "Kundenaufgabe erstellen",
33
34
  "customers.audit.todos.link": "To-do verknüpfen",
34
35
  "customers.audit.todos.unlink": "To-do-Verknüpfung lösen",
35
36
  "customers.companies.create.title": "Unternehmen anlegen",
@@ -41,18 +42,26 @@
41
42
  "customers.companies.detail.addresses.add": "Adresse hinzufügen",
42
43
  "customers.companies.detail.addresses.error": "Adresse konnte nicht gespeichert werden.",
43
44
  "customers.companies.detail.currency.add": "Währung hinzufügen",
45
+ "customers.companies.detail.currency.addPrompt": "Geben Sie einen Währungscode an.",
44
46
  "customers.companies.detail.currency.cancel": "Abbrechen",
45
47
  "customers.companies.detail.currency.clear": "Zurücksetzen",
48
+ "customers.companies.detail.currency.createError": "Währung konnte nicht hinzugefügt werden.",
46
49
  "customers.companies.detail.currency.dialogTitle": "Währung hinzufügen",
50
+ "customers.companies.detail.currency.emptyError": "Währungscode ist erforderlich.",
47
51
  "customers.companies.detail.currency.errorLoad": "Währungs-Dictionary konnte nicht geladen werden.",
48
52
  "customers.companies.detail.currency.errorRequired": "Währungscode ist erforderlich.",
49
53
  "customers.companies.detail.currency.errorSave": "Währungseintrag konnte nicht gespeichert werden.",
54
+ "customers.companies.detail.currency.fetchError": "Währungen konnten nicht geladen werden.",
55
+ "customers.companies.detail.currency.invalidAmount": "Geben Sie einen gültigen Betrag ein.",
50
56
  "customers.companies.detail.currency.labelLabel": "Bezeichnung",
51
57
  "customers.companies.detail.currency.labelPlaceholder": "Anzeigename in der Oberfläche",
52
58
  "customers.companies.detail.currency.loading": "Lade Währungen…",
53
59
  "customers.companies.detail.currency.manage": "Währungs-Dictionary verwalten",
60
+ "customers.companies.detail.currency.manageTitle": "Währungen verwalten",
54
61
  "customers.companies.detail.currency.placeholder": "Währung auswählen…",
55
62
  "customers.companies.detail.currency.save": "Speichern",
63
+ "customers.companies.detail.currency.saveShortcutHint": "Eingabetaste drücken zum Speichern",
64
+ "customers.companies.detail.currency.success": "Währung hinzugefügt.",
56
65
  "customers.companies.detail.currency.valueLabel": "Währungscode",
57
66
  "customers.companies.detail.currency.valuePlaceholder": "z. B. USD",
58
67
  "customers.companies.detail.deals.loading": "Deals werden geladen…",
@@ -440,6 +449,7 @@
440
449
  "customers.errors.organization_forbidden": "Organisation nicht verfügbar",
441
450
  "customers.errors.organization_required": "Organisationskontext erforderlich",
442
451
  "customers.errors.person_required": "Personen-ID ist erforderlich",
452
+ "customers.errors.save_failed": "Kundendatensatz konnte nicht gespeichert werden.",
443
453
  "customers.errors.tag_required": "Tag-ID ist erforderlich",
444
454
  "customers.errors.tenant_required": "Mandantenkontext erforderlich",
445
455
  "customers.errors.todo_create_failed": "To-do konnte nicht erstellt werden",
@@ -452,6 +462,10 @@
452
462
  "customers.errors.todo_unlink_failed": "To-do-Verknüpfung konnte nicht gelöst werden",
453
463
  "customers.errors.unassign_failed": "Tag konnte nicht entfernt werden",
454
464
  "customers.errors.unauthorized": "Nicht autorisiert",
465
+ "customers.messageObjects.company.title": "Unternehmen",
466
+ "customers.messageObjects.deal.title": "Transaktion",
467
+ "customers.messageObjects.notFound": "Nicht gefunden",
468
+ "customers.messageObjects.person.title": "Person",
455
469
  "customers.nav.activities": "Aktivitäten",
456
470
  "customers.nav.companies": "Unternehmen",
457
471
  "customers.nav.companies.create": "Neues Unternehmen",
@@ -542,6 +556,7 @@
542
556
  "customers.people.detail.addresses.streetFormatHint": "Straße-zuerst-Layout ist aktiv.",
543
557
  "customers.people.detail.addresses.success": "Adresse gespeichert",
544
558
  "customers.people.detail.addresses.types.add": "Adresstyp hinzufügen",
559
+ "customers.people.detail.addresses.types.addHint": "Neuen Adresstyp zur Wiederverwendung erstellen.",
545
560
  "customers.people.detail.addresses.types.cancel": "Abbrechen",
546
561
  "customers.people.detail.addresses.types.dialogTitle": "Adresstyp hinzufügen",
547
562
  "customers.people.detail.addresses.types.emptyError": "Bitte geben Sie eine Bezeichnung ein",
@@ -554,6 +569,7 @@
554
569
  "customers.people.detail.addresses.types.placeholder": "Adresstyp auswählen",
555
570
  "customers.people.detail.addresses.types.prompt": "Geben Sie einen neuen Adresstyp ein.",
556
571
  "customers.people.detail.addresses.types.save": "Speichern",
572
+ "customers.people.detail.addresses.types.saveError": "Adresstyp konnte nicht gespeichert werden.",
557
573
  "customers.people.detail.addresses.update": "Adresse aktualisieren ⌘⏎ / Ctrl+Enter",
558
574
  "customers.people.detail.addresses.updating": "Aktualisieren…",
559
575
  "customers.people.detail.addresses.validation.generic": "Bitte prüfen Sie {{field}}",
@@ -786,6 +802,7 @@
786
802
  "customers.people.detail.tasks.viewAll": "Alle Aufgaben anzeigen",
787
803
  "customers.people.detail.title": "Personendetails",
788
804
  "customers.people.form.activityType.placeholder": "Aktivitätstyp auswählen",
805
+ "customers.people.form.addressType.placeholder": "Adresstyp auswählen",
789
806
  "customers.people.form.company": "Unternehmen",
790
807
  "customers.people.form.company.add": "Unternehmen hinzufügen",
791
808
  "customers.people.form.company.dialogTitle": "Unternehmen hinzufügen",
@@ -795,13 +812,17 @@
795
812
  "customers.people.form.company.placeholder": "Unternehmen auswählen",
796
813
  "customers.people.form.company.prompt": "Neuen Unternehmensnamen eingeben",
797
814
  "customers.people.form.description": "Beschreibung",
815
+ "customers.people.form.dictionary.add": "Eintrag hinzufügen",
798
816
  "customers.people.form.dictionary.addActivityType": "Aktivitätstyp hinzufügen",
817
+ "customers.people.form.dictionary.addAddressType": "Adresstyp hinzufügen",
799
818
  "customers.people.form.dictionary.addJobTitle": "Position hinzufügen",
800
819
  "customers.people.form.dictionary.addLifecycleStage": "Lebenszyklusphase hinzufügen",
801
820
  "customers.people.form.dictionary.addSource": "Quelle hinzufügen",
802
821
  "customers.people.form.dictionary.addStatus": "Status hinzufügen",
803
822
  "customers.people.form.dictionary.cancel": "Abbrechen",
823
+ "customers.people.form.dictionary.dialogTitle": "Wörterbucheintrag hinzufügen",
804
824
  "customers.people.form.dictionary.dialogTitleActivityType": "Aktivitätstyp hinzufügen",
825
+ "customers.people.form.dictionary.dialogTitleAddressType": "Adresstyp hinzufügen",
805
826
  "customers.people.form.dictionary.dialogTitleJobTitle": "Position hinzufügen",
806
827
  "customers.people.form.dictionary.dialogTitleLifecycleStage": "Lebenszyklusphase hinzufügen",
807
828
  "customers.people.form.dictionary.dialogTitleSource": "Quelle hinzufügen",
@@ -809,10 +830,14 @@
809
830
  "customers.people.form.dictionary.error": "Option konnte nicht gespeichert werden",
810
831
  "customers.people.form.dictionary.errorLoad": "Optionen konnten nicht geladen werden",
811
832
  "customers.people.form.dictionary.errorRequired": "Bitte einen Namen eingeben",
833
+ "customers.people.form.dictionary.labelLabel": "Bezeichnung",
812
834
  "customers.people.form.dictionary.labelPlaceholder": "Anzeigename in der Oberfläche",
813
835
  "customers.people.form.dictionary.loading": "Optionen werden geladen…",
814
836
  "customers.people.form.dictionary.manage": "Wörterbücher verwalten",
837
+ "customers.people.form.dictionary.placeholder": "Wert auswählen",
838
+ "customers.people.form.dictionary.prompt": "Namen eingeben",
815
839
  "customers.people.form.dictionary.promptActivityType": "Neuen Aktivitätstyp eingeben",
840
+ "customers.people.form.dictionary.promptAddressType": "Neuen Adresstypnamen eingeben",
816
841
  "customers.people.form.dictionary.promptJobTitle": "Neue Positionsbezeichnung eingeben",
817
842
  "customers.people.form.dictionary.promptLifecycleStage": "Neue Lebenszyklusphase eingeben",
818
843
  "customers.people.form.dictionary.promptSource": "Neue Quelle eingeben",
@@ -905,7 +930,7 @@
905
930
  "customers.widgets.newCustomers.kind.company": "Unternehmen",
906
931
  "customers.widgets.newCustomers.kind.person": "Person",
907
932
  "customers.widgets.newCustomers.kind.unknown": "Kunde",
908
- "customers.widgets.newCustomers.settings.kind": "Filter",
933
+ "customers.widgets.newCustomers.settings.kind": "Filtern",
909
934
  "customers.widgets.newCustomers.settings.pageSize": "Anzahl der Einträge",
910
935
  "customers.widgets.newCustomers.subtitle": "Kürzlich angelegte Personen und Unternehmen.",
911
936
  "customers.widgets.newCustomers.title": "Neue Kunden",
@@ -30,6 +30,7 @@
30
30
  "customers.audit.tags.delete": "Delete tag",
31
31
  "customers.audit.tags.unassign": "Unassign tag",
32
32
  "customers.audit.tags.update": "Update tag",
33
+ "customers.audit.todos.create": "Create customer task",
33
34
  "customers.audit.todos.link": "Link todo",
34
35
  "customers.audit.todos.unlink": "Unlink todo",
35
36
  "customers.companies.create.title": "Create Company",
@@ -41,18 +42,26 @@
41
42
  "customers.companies.detail.addresses.add": "Add address",
42
43
  "customers.companies.detail.addresses.error": "Failed to save address.",
43
44
  "customers.companies.detail.currency.add": "Add currency",
45
+ "customers.companies.detail.currency.addPrompt": "Provide a currency code.",
44
46
  "customers.companies.detail.currency.cancel": "Cancel",
45
47
  "customers.companies.detail.currency.clear": "Clear",
48
+ "customers.companies.detail.currency.createError": "Failed to add currency.",
46
49
  "customers.companies.detail.currency.dialogTitle": "Add currency",
50
+ "customers.companies.detail.currency.emptyError": "Currency code is required.",
47
51
  "customers.companies.detail.currency.errorLoad": "Failed to load currency dictionary.",
48
52
  "customers.companies.detail.currency.errorRequired": "Currency code is required.",
49
53
  "customers.companies.detail.currency.errorSave": "Failed to save currency option.",
54
+ "customers.companies.detail.currency.fetchError": "Failed to load currencies.",
55
+ "customers.companies.detail.currency.invalidAmount": "Enter a valid amount.",
50
56
  "customers.companies.detail.currency.labelLabel": "Label",
51
57
  "customers.companies.detail.currency.labelPlaceholder": "Display name shown in UI",
52
58
  "customers.companies.detail.currency.loading": "Loading currencies…",
53
59
  "customers.companies.detail.currency.manage": "Manage currency dictionary",
60
+ "customers.companies.detail.currency.manageTitle": "Manage currencies",
54
61
  "customers.companies.detail.currency.placeholder": "Select currency…",
55
62
  "customers.companies.detail.currency.save": "Save",
63
+ "customers.companies.detail.currency.saveShortcutHint": "Press Enter to save",
64
+ "customers.companies.detail.currency.success": "Currency added.",
56
65
  "customers.companies.detail.currency.valueLabel": "Currency code",
57
66
  "customers.companies.detail.currency.valuePlaceholder": "e.g. USD",
58
67
  "customers.companies.detail.deals.loading": "Loading deals…",
@@ -440,6 +449,7 @@
440
449
  "customers.errors.organization_forbidden": "Organization not accessible",
441
450
  "customers.errors.organization_required": "Organization context is required",
442
451
  "customers.errors.person_required": "Person id is required",
452
+ "customers.errors.save_failed": "Failed to save customer record.",
443
453
  "customers.errors.tag_required": "Tag id is required",
444
454
  "customers.errors.tenant_required": "Tenant context is required",
445
455
  "customers.errors.todo_create_failed": "Failed to create todo",
@@ -452,6 +462,10 @@
452
462
  "customers.errors.todo_unlink_failed": "Failed to unlink todo",
453
463
  "customers.errors.unassign_failed": "Failed to unassign tag",
454
464
  "customers.errors.unauthorized": "Unauthorized",
465
+ "customers.messageObjects.company.title": "Company",
466
+ "customers.messageObjects.deal.title": "Deal",
467
+ "customers.messageObjects.notFound": "Not found",
468
+ "customers.messageObjects.person.title": "Person",
455
469
  "customers.nav.activities": "Activities",
456
470
  "customers.nav.companies": "Companies",
457
471
  "customers.nav.companies.create": "New company",
@@ -542,6 +556,7 @@
542
556
  "customers.people.detail.addresses.streetFormatHint": "Street-first layout is active.",
543
557
  "customers.people.detail.addresses.success": "Address saved",
544
558
  "customers.people.detail.addresses.types.add": "Add type",
559
+ "customers.people.detail.addresses.types.addHint": "Create a new address type for reuse.",
545
560
  "customers.people.detail.addresses.types.cancel": "Cancel",
546
561
  "customers.people.detail.addresses.types.dialogTitle": "Add address type",
547
562
  "customers.people.detail.addresses.types.emptyError": "Please enter a name",
@@ -554,6 +569,7 @@
554
569
  "customers.people.detail.addresses.types.placeholder": "Select a type",
555
570
  "customers.people.detail.addresses.types.prompt": "Enter a new address type name.",
556
571
  "customers.people.detail.addresses.types.save": "Save",
572
+ "customers.people.detail.addresses.types.saveError": "Failed to save address type.",
557
573
  "customers.people.detail.addresses.update": "Update address ⌘⏎ / Ctrl+Enter",
558
574
  "customers.people.detail.addresses.updating": "Updating…",
559
575
  "customers.people.detail.addresses.validation.generic": "Check {{field}}",
@@ -786,6 +802,7 @@
786
802
  "customers.people.detail.tasks.viewAll": "Go to all tasks",
787
803
  "customers.people.detail.title": "Person details",
788
804
  "customers.people.form.activityType.placeholder": "Select an activity type",
805
+ "customers.people.form.addressType.placeholder": "Select address type",
789
806
  "customers.people.form.company": "Company",
790
807
  "customers.people.form.company.add": "Add company",
791
808
  "customers.people.form.company.dialogTitle": "Add company",
@@ -795,13 +812,17 @@
795
812
  "customers.people.form.company.placeholder": "Select a company",
796
813
  "customers.people.form.company.prompt": "Enter a new company name",
797
814
  "customers.people.form.description": "Description",
815
+ "customers.people.form.dictionary.add": "Add entry",
798
816
  "customers.people.form.dictionary.addActivityType": "Add activity type",
817
+ "customers.people.form.dictionary.addAddressType": "Add address type",
799
818
  "customers.people.form.dictionary.addJobTitle": "Add job title",
800
819
  "customers.people.form.dictionary.addLifecycleStage": "Add lifecycle stage",
801
820
  "customers.people.form.dictionary.addSource": "Add source",
802
821
  "customers.people.form.dictionary.addStatus": "Add status",
803
822
  "customers.people.form.dictionary.cancel": "Cancel",
823
+ "customers.people.form.dictionary.dialogTitle": "Add dictionary entry",
804
824
  "customers.people.form.dictionary.dialogTitleActivityType": "Add activity type",
825
+ "customers.people.form.dictionary.dialogTitleAddressType": "Add address type",
805
826
  "customers.people.form.dictionary.dialogTitleJobTitle": "Add job title",
806
827
  "customers.people.form.dictionary.dialogTitleLifecycleStage": "Add lifecycle stage",
807
828
  "customers.people.form.dictionary.dialogTitleSource": "Add source",
@@ -809,10 +830,14 @@
809
830
  "customers.people.form.dictionary.error": "Failed to save option",
810
831
  "customers.people.form.dictionary.errorLoad": "Failed to load options",
811
832
  "customers.people.form.dictionary.errorRequired": "Please enter a name",
833
+ "customers.people.form.dictionary.labelLabel": "Label",
812
834
  "customers.people.form.dictionary.labelPlaceholder": "Display name shown in UI",
813
835
  "customers.people.form.dictionary.loading": "Loading options…",
814
836
  "customers.people.form.dictionary.manage": "Manage dictionaries",
837
+ "customers.people.form.dictionary.placeholder": "Select a value",
838
+ "customers.people.form.dictionary.prompt": "Enter a name",
815
839
  "customers.people.form.dictionary.promptActivityType": "Enter a new activity type name",
840
+ "customers.people.form.dictionary.promptAddressType": "Enter a new address type name",
816
841
  "customers.people.form.dictionary.promptJobTitle": "Enter a new job title",
817
842
  "customers.people.form.dictionary.promptLifecycleStage": "Enter a new lifecycle stage name",
818
843
  "customers.people.form.dictionary.promptSource": "Enter a new source name",