@open-mercato/core 0.4.5-develop-5191db4ef3 → 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 (385) 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/customers/backend/customers/deals/[id]/page.js +27 -8
  16. package/dist/modules/customers/backend/customers/deals/[id]/page.js.map +2 -2
  17. package/dist/modules/customers/lib/messageObjectPreviews.js +131 -0
  18. package/dist/modules/customers/lib/messageObjectPreviews.js.map +7 -0
  19. package/dist/modules/customers/message-objects.js +71 -0
  20. package/dist/modules/customers/message-objects.js.map +7 -0
  21. package/dist/modules/customers/widgets/messages/CustomerMessageObjectDetail.js +51 -0
  22. package/dist/modules/customers/widgets/messages/CustomerMessageObjectDetail.js.map +7 -0
  23. package/dist/modules/customers/widgets/messages/CustomerMessageObjectPreview.js +35 -0
  24. package/dist/modules/customers/widgets/messages/CustomerMessageObjectPreview.js.map +7 -0
  25. package/dist/modules/customers/widgets/messages/index.js +7 -0
  26. package/dist/modules/customers/widgets/messages/index.js.map +7 -0
  27. package/dist/modules/messages/acl.js +15 -0
  28. package/dist/modules/messages/acl.js.map +7 -0
  29. package/dist/modules/messages/api/[id]/actions/[actionId]/route.js +92 -0
  30. package/dist/modules/messages/api/[id]/actions/[actionId]/route.js.map +7 -0
  31. package/dist/modules/messages/api/[id]/archive/route.js +120 -0
  32. package/dist/modules/messages/api/[id]/archive/route.js.map +7 -0
  33. package/dist/modules/messages/api/[id]/attachments/route.js +195 -0
  34. package/dist/modules/messages/api/[id]/attachments/route.js.map +7 -0
  35. package/dist/modules/messages/api/[id]/confirmation/route.js +67 -0
  36. package/dist/modules/messages/api/[id]/confirmation/route.js.map +7 -0
  37. package/dist/modules/messages/api/[id]/conversation/archive/route.js +68 -0
  38. package/dist/modules/messages/api/[id]/conversation/archive/route.js.map +7 -0
  39. package/dist/modules/messages/api/[id]/conversation/read/route.js +68 -0
  40. package/dist/modules/messages/api/[id]/conversation/read/route.js.map +7 -0
  41. package/dist/modules/messages/api/[id]/conversation/route.js +68 -0
  42. package/dist/modules/messages/api/[id]/conversation/route.js.map +7 -0
  43. package/dist/modules/messages/api/[id]/forward/route.js +85 -0
  44. package/dist/modules/messages/api/[id]/forward/route.js.map +7 -0
  45. package/dist/modules/messages/api/[id]/forward-preview/route.js +70 -0
  46. package/dist/modules/messages/api/[id]/forward-preview/route.js.map +7 -0
  47. package/dist/modules/messages/api/[id]/read/route.js +120 -0
  48. package/dist/modules/messages/api/[id]/read/route.js.map +7 -0
  49. package/dist/modules/messages/api/[id]/reply/route.js +87 -0
  50. package/dist/modules/messages/api/[id]/reply/route.js.map +7 -0
  51. package/dist/modules/messages/api/[id]/route.js +350 -0
  52. package/dist/modules/messages/api/[id]/route.js.map +7 -0
  53. package/dist/modules/messages/api/object-types/route.js +54 -0
  54. package/dist/modules/messages/api/object-types/route.js.map +7 -0
  55. package/dist/modules/messages/api/openapi.js +261 -0
  56. package/dist/modules/messages/api/openapi.js.map +7 -0
  57. package/dist/modules/messages/api/route.js +262 -0
  58. package/dist/modules/messages/api/route.js.map +7 -0
  59. package/dist/modules/messages/api/token/[token]/route.js +99 -0
  60. package/dist/modules/messages/api/token/[token]/route.js.map +7 -0
  61. package/dist/modules/messages/api/types/route.js +40 -0
  62. package/dist/modules/messages/api/types/route.js.map +7 -0
  63. package/dist/modules/messages/api/unread-count/route.js +43 -0
  64. package/dist/modules/messages/api/unread-count/route.js.map +7 -0
  65. package/dist/modules/messages/backend/messages/[id]/page.js +10 -0
  66. package/dist/modules/messages/backend/messages/[id]/page.js.map +7 -0
  67. package/dist/modules/messages/backend/messages/[id]/page.meta.js +16 -0
  68. package/dist/modules/messages/backend/messages/[id]/page.meta.js.map +7 -0
  69. package/dist/modules/messages/backend/messages/compose/page.js +10 -0
  70. package/dist/modules/messages/backend/messages/compose/page.js.map +7 -0
  71. package/dist/modules/messages/backend/messages/compose/page.meta.js +17 -0
  72. package/dist/modules/messages/backend/messages/compose/page.meta.js.map +7 -0
  73. package/dist/modules/messages/backend/page.js +10 -0
  74. package/dist/modules/messages/backend/page.js.map +7 -0
  75. package/dist/modules/messages/backend/page.meta.js +33 -0
  76. package/dist/modules/messages/backend/page.meta.js.map +7 -0
  77. package/dist/modules/messages/commands/actions.js +265 -0
  78. package/dist/modules/messages/commands/actions.js.map +7 -0
  79. package/dist/modules/messages/commands/attachments.js +217 -0
  80. package/dist/modules/messages/commands/attachments.js.map +7 -0
  81. package/dist/modules/messages/commands/confirmations.js +151 -0
  82. package/dist/modules/messages/commands/confirmations.js.map +7 -0
  83. package/dist/modules/messages/commands/conversation.js +240 -0
  84. package/dist/modules/messages/commands/conversation.js.map +7 -0
  85. package/dist/modules/messages/commands/messages.js +748 -0
  86. package/dist/modules/messages/commands/messages.js.map +7 -0
  87. package/dist/modules/messages/commands/recipients.js +259 -0
  88. package/dist/modules/messages/commands/recipients.js.map +7 -0
  89. package/dist/modules/messages/commands/shared.js +258 -0
  90. package/dist/modules/messages/commands/shared.js.map +7 -0
  91. package/dist/modules/messages/commands/tokens.js +69 -0
  92. package/dist/modules/messages/commands/tokens.js.map +7 -0
  93. package/dist/modules/messages/components/ComposeMessagePageClient.js +24 -0
  94. package/dist/modules/messages/components/ComposeMessagePageClient.js.map +7 -0
  95. package/dist/modules/messages/components/MessageDetailPageClient.js +261 -0
  96. package/dist/modules/messages/components/MessageDetailPageClient.js.map +7 -0
  97. package/dist/modules/messages/components/MessagesInboxPageClient.js +390 -0
  98. package/dist/modules/messages/components/MessagesInboxPageClient.js.map +7 -0
  99. package/dist/modules/messages/components/confirmation/MessageConfirmationActions.js +31 -0
  100. package/dist/modules/messages/components/confirmation/MessageConfirmationActions.js.map +7 -0
  101. package/dist/modules/messages/components/confirmation/MessageConfirmationContent.js +69 -0
  102. package/dist/modules/messages/components/confirmation/MessageConfirmationContent.js.map +7 -0
  103. package/dist/modules/messages/components/defaults/DefaultMessageActions.js +31 -0
  104. package/dist/modules/messages/components/defaults/DefaultMessageActions.js.map +7 -0
  105. package/dist/modules/messages/components/defaults/DefaultMessageContent.js +19 -0
  106. package/dist/modules/messages/components/defaults/DefaultMessageContent.js.map +7 -0
  107. package/dist/modules/messages/components/defaults/DefaultMessageListItem.js +90 -0
  108. package/dist/modules/messages/components/defaults/DefaultMessageListItem.js.map +7 -0
  109. package/dist/modules/messages/components/defaults/MessageRecordObjectDetail.js +86 -0
  110. package/dist/modules/messages/components/defaults/MessageRecordObjectDetail.js.map +7 -0
  111. package/dist/modules/messages/components/defaults/MessageRecordObjectPreview.js +61 -0
  112. package/dist/modules/messages/components/defaults/MessageRecordObjectPreview.js.map +7 -0
  113. package/dist/modules/messages/components/message-detail/detail-panels.js +27 -0
  114. package/dist/modules/messages/components/message-detail/detail-panels.js.map +7 -0
  115. package/dist/modules/messages/components/message-detail/hooks/useMessageDetails.js +52 -0
  116. package/dist/modules/messages/components/message-detail/hooks/useMessageDetails.js.map +7 -0
  117. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsActions.js +289 -0
  118. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsActions.js.map +7 -0
  119. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.js +103 -0
  120. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.js.map +7 -0
  121. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsQueries.js +78 -0
  122. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsQueries.js.map +7 -0
  123. package/dist/modules/messages/components/message-detail/panels/MainMessageHeader.js +94 -0
  124. package/dist/modules/messages/components/message-detail/panels/MainMessageHeader.js.map +7 -0
  125. package/dist/modules/messages/components/message-detail/panels/MessageHeader.js +110 -0
  126. package/dist/modules/messages/components/message-detail/panels/MessageHeader.js.map +7 -0
  127. package/dist/modules/messages/components/message-detail/panels/MessageListComponent.js +58 -0
  128. package/dist/modules/messages/components/message-detail/panels/MessageListComponent.js.map +7 -0
  129. package/dist/modules/messages/components/message-detail/panels/actions-panel.js +51 -0
  130. package/dist/modules/messages/components/message-detail/panels/actions-panel.js.map +7 -0
  131. package/dist/modules/messages/components/message-detail/panels/attachments-panel.js +66 -0
  132. package/dist/modules/messages/components/message-detail/panels/attachments-panel.js.map +7 -0
  133. package/dist/modules/messages/components/message-detail/panels/body-panel.js +20 -0
  134. package/dist/modules/messages/components/message-detail/panels/body-panel.js.map +7 -0
  135. package/dist/modules/messages/components/message-detail/panels/composer-dialogs.js +36 -0
  136. package/dist/modules/messages/components/message-detail/panels/composer-dialogs.js.map +7 -0
  137. package/dist/modules/messages/components/message-detail/panels/dialogs.js +96 -0
  138. package/dist/modules/messages/components/message-detail/panels/dialogs.js.map +7 -0
  139. package/dist/modules/messages/components/message-detail/panels/index.js +25 -0
  140. package/dist/modules/messages/components/message-detail/panels/index.js.map +7 -0
  141. package/dist/modules/messages/components/message-detail/panels/meta-panel.js +14 -0
  142. package/dist/modules/messages/components/message-detail/panels/meta-panel.js.map +7 -0
  143. package/dist/modules/messages/components/message-detail/panels/objects-panel.js +51 -0
  144. package/dist/modules/messages/components/message-detail/panels/objects-panel.js.map +7 -0
  145. package/dist/modules/messages/components/message-detail/panels/thread-panel.js +54 -0
  146. package/dist/modules/messages/components/message-detail/panels/thread-panel.js.map +7 -0
  147. package/dist/modules/messages/components/message-detail/types.js +1 -0
  148. package/dist/modules/messages/components/message-detail/types.js.map +7 -0
  149. package/dist/modules/messages/components/message-detail/utils.js +54 -0
  150. package/dist/modules/messages/components/message-detail/utils.js.map +7 -0
  151. package/dist/modules/messages/components/utils/PriorityBadge.js +52 -0
  152. package/dist/modules/messages/components/utils/PriorityBadge.js.map +7 -0
  153. package/dist/modules/messages/components/utils/typeUiRegistry.js +77 -0
  154. package/dist/modules/messages/components/utils/typeUiRegistry.js.map +7 -0
  155. package/dist/modules/messages/data/entities.js +309 -0
  156. package/dist/modules/messages/data/entities.js.map +7 -0
  157. package/dist/modules/messages/data/validators.js +272 -0
  158. package/dist/modules/messages/data/validators.js.map +7 -0
  159. package/dist/modules/messages/emails/MessageEmail.js +108 -0
  160. package/dist/modules/messages/emails/MessageEmail.js.map +7 -0
  161. package/dist/modules/messages/events.js +24 -0
  162. package/dist/modules/messages/events.js.map +7 -0
  163. package/dist/modules/messages/frontend/messages/view/[token]/page.js +247 -0
  164. package/dist/modules/messages/frontend/messages/view/[token]/page.js.map +7 -0
  165. package/dist/modules/messages/frontend/messages/view/[token]/page.meta.js +9 -0
  166. package/dist/modules/messages/frontend/messages/view/[token]/page.meta.js.map +7 -0
  167. package/dist/modules/messages/index.js +21 -0
  168. package/dist/modules/messages/index.js.map +7 -0
  169. package/dist/modules/messages/lib/actions.js +141 -0
  170. package/dist/modules/messages/lib/actions.js.map +7 -0
  171. package/dist/modules/messages/lib/attachments.js +131 -0
  172. package/dist/modules/messages/lib/attachments.js.map +7 -0
  173. package/dist/modules/messages/lib/constants.js +7 -0
  174. package/dist/modules/messages/lib/constants.js.map +7 -0
  175. package/dist/modules/messages/lib/email-sender.js +201 -0
  176. package/dist/modules/messages/lib/email-sender.js.map +7 -0
  177. package/dist/modules/messages/lib/forwarding.js +179 -0
  178. package/dist/modules/messages/lib/forwarding.js.map +7 -0
  179. package/dist/modules/messages/lib/message-objects-registry.js +49 -0
  180. package/dist/modules/messages/lib/message-objects-registry.js.map +7 -0
  181. package/dist/modules/messages/lib/message-types-registry.js +41 -0
  182. package/dist/modules/messages/lib/message-types-registry.js.map +7 -0
  183. package/dist/modules/messages/lib/object-validation.js +20 -0
  184. package/dist/modules/messages/lib/object-validation.js.map +7 -0
  185. package/dist/modules/messages/lib/operationMetadata.js +21 -0
  186. package/dist/modules/messages/lib/operationMetadata.js.map +7 -0
  187. package/dist/modules/messages/lib/priorityUtils.js +61 -0
  188. package/dist/modules/messages/lib/priorityUtils.js.map +7 -0
  189. package/dist/modules/messages/lib/routeHelpers.js +44 -0
  190. package/dist/modules/messages/lib/routeHelpers.js.map +7 -0
  191. package/dist/modules/messages/message-objects.js +7 -0
  192. package/dist/modules/messages/message-objects.js.map +7 -0
  193. package/dist/modules/messages/message-types.js +67 -0
  194. package/dist/modules/messages/message-types.js.map +7 -0
  195. package/dist/modules/messages/migrations/Migration20260213181243.js +31 -0
  196. package/dist/modules/messages/migrations/Migration20260213181243.js.map +7 -0
  197. package/dist/modules/messages/migrations/Migration20260215165126.js +16 -0
  198. package/dist/modules/messages/migrations/Migration20260215165126.js.map +7 -0
  199. package/dist/modules/messages/notifications.js +27 -0
  200. package/dist/modules/messages/notifications.js.map +7 -0
  201. package/dist/modules/messages/setup.js +21 -0
  202. package/dist/modules/messages/setup.js.map +7 -0
  203. package/dist/modules/messages/subscribers/message-notification.js +108 -0
  204. package/dist/modules/messages/subscribers/message-notification.js.map +7 -0
  205. package/dist/modules/messages/workers/send-email.worker.js +253 -0
  206. package/dist/modules/messages/workers/send-email.worker.js.map +7 -0
  207. package/dist/modules/sales/backend/sales/documents/[id]/page.js +30 -11
  208. package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
  209. package/dist/modules/sales/commands/payments.js +12 -6
  210. package/dist/modules/sales/commands/payments.js.map +2 -2
  211. package/dist/modules/sales/lib/messageObjectPreviews.js +114 -0
  212. package/dist/modules/sales/lib/messageObjectPreviews.js.map +7 -0
  213. package/dist/modules/sales/message-objects.js +57 -0
  214. package/dist/modules/sales/message-objects.js.map +7 -0
  215. package/dist/modules/sales/widgets/messages/SalesDocumentMessageDetail.js +51 -0
  216. package/dist/modules/sales/widgets/messages/SalesDocumentMessageDetail.js.map +7 -0
  217. package/dist/modules/sales/widgets/messages/SalesDocumentMessagePreview.js +36 -0
  218. package/dist/modules/sales/widgets/messages/SalesDocumentMessagePreview.js.map +7 -0
  219. package/dist/modules/sales/widgets/messages/index.js +7 -0
  220. package/dist/modules/sales/widgets/messages/index.js.map +7 -0
  221. package/dist/modules/staff/backend/staff/leave-requests/[id]/page.js +55 -1
  222. package/dist/modules/staff/backend/staff/leave-requests/[id]/page.js.map +2 -2
  223. package/dist/modules/staff/backend/staff/my-leave-requests/[id]/page.js +60 -1
  224. package/dist/modules/staff/backend/staff/my-leave-requests/[id]/page.js.map +2 -2
  225. package/dist/modules/staff/backend/staff/team-members/[id]/page.js +2 -19
  226. package/dist/modules/staff/backend/staff/team-members/[id]/page.js.map +2 -2
  227. package/dist/modules/staff/components/LeaveRequestDetail.js +112 -0
  228. package/dist/modules/staff/components/LeaveRequestDetail.js.map +7 -0
  229. package/dist/modules/staff/components/LeaveRequestForm.js +3 -1
  230. package/dist/modules/staff/components/LeaveRequestForm.js.map +2 -2
  231. package/dist/modules/staff/components/LeaveRequestPreview.js +43 -0
  232. package/dist/modules/staff/components/LeaveRequestPreview.js.map +7 -0
  233. package/dist/modules/staff/lib/messageObjectPreviews.js +148 -0
  234. package/dist/modules/staff/lib/messageObjectPreviews.js.map +7 -0
  235. package/dist/modules/staff/message-objects.js +104 -0
  236. package/dist/modules/staff/message-objects.js.map +7 -0
  237. package/dist/modules/staff/message-types.js +23 -0
  238. package/dist/modules/staff/message-types.js.map +7 -0
  239. package/dist/modules/staff/widgets/messages/StaffMessageObjectDetail.js +51 -0
  240. package/dist/modules/staff/widgets/messages/StaffMessageObjectDetail.js.map +7 -0
  241. package/dist/modules/staff/widgets/messages/StaffMessageObjectPreview.js +34 -0
  242. package/dist/modules/staff/widgets/messages/StaffMessageObjectPreview.js.map +7 -0
  243. package/dist/modules/staff/widgets/messages/index.js +7 -0
  244. package/dist/modules/staff/widgets/messages/index.js.map +7 -0
  245. package/generated/entities/message/index.ts +31 -0
  246. package/generated/entities/message_access_token/index.ts +8 -0
  247. package/generated/entities/message_confirmation/index.ts +9 -0
  248. package/generated/entities/message_object/index.ts +10 -0
  249. package/generated/entities/message_recipient/index.ts +14 -0
  250. package/generated/entities.ids.generated.ts +8 -0
  251. package/generated/entity-fields-registry.ts +10 -0
  252. package/jest.setup.ts +5 -0
  253. package/package.json +2 -2
  254. package/src/modules/customers/backend/customers/deals/[id]/page.tsx +20 -4
  255. package/src/modules/customers/i18n/de.json +4 -0
  256. package/src/modules/customers/i18n/en.json +4 -0
  257. package/src/modules/customers/i18n/es.json +4 -0
  258. package/src/modules/customers/i18n/pl.json +4 -0
  259. package/src/modules/customers/lib/messageObjectPreviews.ts +154 -0
  260. package/src/modules/customers/message-objects.ts +70 -0
  261. package/src/modules/customers/widgets/messages/CustomerMessageObjectDetail.tsx +57 -0
  262. package/src/modules/customers/widgets/messages/CustomerMessageObjectPreview.tsx +49 -0
  263. package/src/modules/customers/widgets/messages/index.ts +2 -0
  264. package/src/modules/messages/acl.ts +11 -0
  265. package/src/modules/messages/api/[id]/actions/[actionId]/route.ts +103 -0
  266. package/src/modules/messages/api/[id]/archive/route.ts +138 -0
  267. package/src/modules/messages/api/[id]/attachments/route.ts +217 -0
  268. package/src/modules/messages/api/[id]/confirmation/route.ts +73 -0
  269. package/src/modules/messages/api/[id]/conversation/archive/route.ts +69 -0
  270. package/src/modules/messages/api/[id]/conversation/read/route.ts +69 -0
  271. package/src/modules/messages/api/[id]/conversation/route.ts +69 -0
  272. package/src/modules/messages/api/[id]/forward/route.ts +87 -0
  273. package/src/modules/messages/api/[id]/forward-preview/route.ts +75 -0
  274. package/src/modules/messages/api/[id]/read/route.ts +138 -0
  275. package/src/modules/messages/api/[id]/reply/route.ts +89 -0
  276. package/src/modules/messages/api/[id]/route.ts +401 -0
  277. package/src/modules/messages/api/object-types/route.ts +54 -0
  278. package/src/modules/messages/api/openapi.ts +261 -0
  279. package/src/modules/messages/api/route.ts +374 -0
  280. package/src/modules/messages/api/token/[token]/route.ts +103 -0
  281. package/src/modules/messages/api/types/route.ts +39 -0
  282. package/src/modules/messages/api/unread-count/route.ts +55 -0
  283. package/src/modules/messages/backend/messages/[id]/page.meta.ts +12 -0
  284. package/src/modules/messages/backend/messages/[id]/page.tsx +12 -0
  285. package/src/modules/messages/backend/messages/compose/page.meta.ts +13 -0
  286. package/src/modules/messages/backend/messages/compose/page.tsx +12 -0
  287. package/src/modules/messages/backend/page.meta.ts +31 -0
  288. package/src/modules/messages/backend/page.tsx +12 -0
  289. package/src/modules/messages/commands/actions.ts +307 -0
  290. package/src/modules/messages/commands/attachments.ts +227 -0
  291. package/src/modules/messages/commands/confirmations.ts +183 -0
  292. package/src/modules/messages/commands/conversation.ts +292 -0
  293. package/src/modules/messages/commands/messages.ts +845 -0
  294. package/src/modules/messages/commands/recipients.ts +281 -0
  295. package/src/modules/messages/commands/shared.ts +350 -0
  296. package/src/modules/messages/commands/tokens.ts +80 -0
  297. package/src/modules/messages/components/ComposeMessagePageClient.tsx +23 -0
  298. package/src/modules/messages/components/MessageDetailPageClient.tsx +287 -0
  299. package/src/modules/messages/components/MessagesInboxPageClient.tsx +469 -0
  300. package/src/modules/messages/components/confirmation/MessageConfirmationActions.tsx +35 -0
  301. package/src/modules/messages/components/confirmation/MessageConfirmationContent.tsx +88 -0
  302. package/src/modules/messages/components/defaults/DefaultMessageActions.tsx +37 -0
  303. package/src/modules/messages/components/defaults/DefaultMessageContent.tsx +21 -0
  304. package/src/modules/messages/components/defaults/DefaultMessageListItem.tsx +102 -0
  305. package/src/modules/messages/components/defaults/MessageRecordObjectDetail.tsx +114 -0
  306. package/src/modules/messages/components/defaults/MessageRecordObjectPreview.tsx +74 -0
  307. package/src/modules/messages/components/message-detail/detail-panels.ts +13 -0
  308. package/src/modules/messages/components/message-detail/hooks/useMessageDetails.ts +56 -0
  309. package/src/modules/messages/components/message-detail/hooks/useMessageDetailsActions.ts +367 -0
  310. package/src/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.ts +134 -0
  311. package/src/modules/messages/components/message-detail/hooks/useMessageDetailsQueries.ts +102 -0
  312. package/src/modules/messages/components/message-detail/panels/MainMessageHeader.tsx +108 -0
  313. package/src/modules/messages/components/message-detail/panels/MessageHeader.tsx +144 -0
  314. package/src/modules/messages/components/message-detail/panels/MessageListComponent.tsx +63 -0
  315. package/src/modules/messages/components/message-detail/panels/actions-panel.tsx +66 -0
  316. package/src/modules/messages/components/message-detail/panels/attachments-panel.tsx +86 -0
  317. package/src/modules/messages/components/message-detail/panels/body-panel.tsx +32 -0
  318. package/src/modules/messages/components/message-detail/panels/composer-dialogs.tsx +42 -0
  319. package/src/modules/messages/components/message-detail/panels/dialogs.tsx +107 -0
  320. package/src/modules/messages/components/message-detail/panels/index.ts +11 -0
  321. package/src/modules/messages/components/message-detail/panels/meta-panel.tsx +19 -0
  322. package/src/modules/messages/components/message-detail/panels/objects-panel.tsx +65 -0
  323. package/src/modules/messages/components/message-detail/panels/thread-panel.tsx +65 -0
  324. package/src/modules/messages/components/message-detail/types.ts +114 -0
  325. package/src/modules/messages/components/message-detail/utils.ts +62 -0
  326. package/src/modules/messages/components/utils/PriorityBadge.tsx +63 -0
  327. package/src/modules/messages/components/utils/typeUiRegistry.ts +106 -0
  328. package/src/modules/messages/data/entities.ts +284 -0
  329. package/src/modules/messages/data/validators.ts +297 -0
  330. package/src/modules/messages/emails/MessageEmail.tsx +143 -0
  331. package/src/modules/messages/events.ts +24 -0
  332. package/src/modules/messages/frontend/messages/view/[token]/page.meta.ts +5 -0
  333. package/src/modules/messages/frontend/messages/view/[token]/page.tsx +389 -0
  334. package/src/modules/messages/i18n/de.json +240 -0
  335. package/src/modules/messages/i18n/en.json +240 -0
  336. package/src/modules/messages/i18n/es.json +240 -0
  337. package/src/modules/messages/i18n/pl.json +240 -0
  338. package/src/modules/messages/index.ts +19 -0
  339. package/src/modules/messages/lib/actions.ts +204 -0
  340. package/src/modules/messages/lib/attachments.ts +197 -0
  341. package/src/modules/messages/lib/constants.ts +2 -0
  342. package/src/modules/messages/lib/email-sender.ts +255 -0
  343. package/src/modules/messages/lib/forwarding.ts +240 -0
  344. package/src/modules/messages/lib/message-objects-registry.ts +60 -0
  345. package/src/modules/messages/lib/message-types-registry.ts +48 -0
  346. package/src/modules/messages/lib/object-validation.ts +26 -0
  347. package/src/modules/messages/lib/operationMetadata.ts +43 -0
  348. package/src/modules/messages/lib/priorityUtils.ts +76 -0
  349. package/src/modules/messages/lib/routeHelpers.ts +65 -0
  350. package/src/modules/messages/message-objects.ts +5 -0
  351. package/src/modules/messages/message-types.ts +65 -0
  352. package/src/modules/messages/migrations/.snapshot-open-mercato.json +957 -0
  353. package/src/modules/messages/migrations/Migration20260213181243.ts +34 -0
  354. package/src/modules/messages/migrations/Migration20260215165126.ts +16 -0
  355. package/src/modules/messages/notifications.ts +25 -0
  356. package/src/modules/messages/setup.ts +19 -0
  357. package/src/modules/messages/subscribers/message-notification.ts +138 -0
  358. package/src/modules/messages/workers/send-email.worker.ts +321 -0
  359. package/src/modules/sales/backend/sales/documents/[id]/page.tsx +23 -7
  360. package/src/modules/sales/commands/payments.ts +12 -6
  361. package/src/modules/sales/i18n/de.json +3 -0
  362. package/src/modules/sales/i18n/en.json +3 -0
  363. package/src/modules/sales/i18n/es.json +3 -0
  364. package/src/modules/sales/i18n/pl.json +3 -0
  365. package/src/modules/sales/lib/messageObjectPreviews.ts +150 -0
  366. package/src/modules/sales/message-objects.ts +56 -0
  367. package/src/modules/sales/widgets/messages/SalesDocumentMessageDetail.tsx +57 -0
  368. package/src/modules/sales/widgets/messages/SalesDocumentMessagePreview.tsx +46 -0
  369. package/src/modules/sales/widgets/messages/index.ts +2 -0
  370. package/src/modules/staff/backend/staff/leave-requests/[id]/page.tsx +54 -0
  371. package/src/modules/staff/backend/staff/my-leave-requests/[id]/page.tsx +58 -0
  372. package/src/modules/staff/backend/staff/team-members/[id]/page.tsx +2 -32
  373. package/src/modules/staff/components/LeaveRequestDetail.tsx +135 -0
  374. package/src/modules/staff/components/LeaveRequestForm.tsx +3 -0
  375. package/src/modules/staff/components/LeaveRequestPreview.tsx +74 -0
  376. package/src/modules/staff/i18n/de.json +8 -0
  377. package/src/modules/staff/i18n/en.json +8 -0
  378. package/src/modules/staff/i18n/es.json +8 -0
  379. package/src/modules/staff/i18n/pl.json +8 -0
  380. package/src/modules/staff/lib/messageObjectPreviews.ts +182 -0
  381. package/src/modules/staff/message-objects.ts +102 -0
  382. package/src/modules/staff/message-types.ts +21 -0
  383. package/src/modules/staff/widgets/messages/StaffMessageObjectDetail.tsx +57 -0
  384. package/src/modules/staff/widgets/messages/StaffMessageObjectPreview.tsx +44 -0
  385. package/src/modules/staff/widgets/messages/index.ts +2 -0
@@ -0,0 +1,148 @@
1
+ import { createRequestContainer } from "@open-mercato/shared/lib/di/container";
2
+ import { findOneWithDecryption } from "@open-mercato/shared/lib/encryption/find";
3
+ import { resolveTranslations } from "@open-mercato/shared/lib/i18n/server";
4
+ import { StaffLeaveRequest, StaffTeam, StaffTeamMember } from "../data/entities.js";
5
+ function mapStatus(status) {
6
+ if (status === "approved") {
7
+ return { label: "Approved", color: "green" };
8
+ }
9
+ if (status === "rejected") {
10
+ return { label: "Rejected", color: "red" };
11
+ }
12
+ return { label: "Pending", color: "amber" };
13
+ }
14
+ function formatDate(value) {
15
+ return value.toISOString().slice(0, 10);
16
+ }
17
+ async function loadLeaveRequestPreview(entityId, ctx) {
18
+ const { t } = await resolveTranslations();
19
+ const defaultTitle = t("staff.messageObjects.leaveRequest.title");
20
+ if (!ctx.organizationId) {
21
+ return {
22
+ title: defaultTitle,
23
+ subtitle: entityId
24
+ };
25
+ }
26
+ const { resolve } = await createRequestContainer();
27
+ const em = resolve("em");
28
+ const request = await findOneWithDecryption(
29
+ em,
30
+ StaffLeaveRequest,
31
+ {
32
+ id: entityId,
33
+ tenantId: ctx.tenantId,
34
+ organizationId: ctx.organizationId,
35
+ deletedAt: null
36
+ },
37
+ void 0,
38
+ { tenantId: ctx.tenantId, organizationId: ctx.organizationId }
39
+ );
40
+ if (!request) {
41
+ return {
42
+ title: defaultTitle,
43
+ subtitle: entityId,
44
+ status: t("staff.messageObjects.notFound"),
45
+ statusColor: "gray"
46
+ };
47
+ }
48
+ const status = mapStatus(request.status);
49
+ const memberName = typeof request.member?.displayName === "string" ? request.member.displayName : null;
50
+ const subtitle = memberName ? `${memberName} - ${formatDate(request.startDate)} to ${formatDate(request.endDate)}` : `${formatDate(request.startDate)} to ${formatDate(request.endDate)}`;
51
+ return {
52
+ title: "Leave request",
53
+ subtitle,
54
+ status: status.label,
55
+ statusColor: status.color,
56
+ metadata: {
57
+ "Start date": formatDate(request.startDate),
58
+ "End date": formatDate(request.endDate),
59
+ Timezone: request.timezone
60
+ }
61
+ };
62
+ }
63
+ async function loadTeamPreview(entityId, ctx) {
64
+ const { t } = await resolveTranslations();
65
+ const defaultTitle = t("staff.messageObjects.team.title");
66
+ if (!ctx.organizationId) {
67
+ return {
68
+ title: defaultTitle,
69
+ subtitle: entityId
70
+ };
71
+ }
72
+ const { resolve } = await createRequestContainer();
73
+ const em = resolve("em");
74
+ const team = await findOneWithDecryption(
75
+ em,
76
+ StaffTeam,
77
+ {
78
+ id: entityId,
79
+ tenantId: ctx.tenantId,
80
+ organizationId: ctx.organizationId,
81
+ deletedAt: null
82
+ },
83
+ void 0,
84
+ { tenantId: ctx.tenantId, organizationId: ctx.organizationId }
85
+ );
86
+ if (!team) {
87
+ return {
88
+ title: defaultTitle,
89
+ subtitle: entityId,
90
+ status: t("staff.messageObjects.notFound"),
91
+ statusColor: "gray"
92
+ };
93
+ }
94
+ return {
95
+ title: team.name,
96
+ subtitle: team.description ?? entityId,
97
+ status: team.isActive ? "Active" : "Inactive",
98
+ statusColor: team.isActive ? "green" : "gray"
99
+ };
100
+ }
101
+ async function loadTeamMemberPreview(entityId, ctx) {
102
+ const { t } = await resolveTranslations();
103
+ const defaultTitle = t("staff.messageObjects.teamMember.title");
104
+ if (!ctx.organizationId) {
105
+ return {
106
+ title: defaultTitle,
107
+ subtitle: entityId
108
+ };
109
+ }
110
+ const { resolve } = await createRequestContainer();
111
+ const em = resolve("em");
112
+ const member = await findOneWithDecryption(
113
+ em,
114
+ StaffTeamMember,
115
+ {
116
+ id: entityId,
117
+ tenantId: ctx.tenantId,
118
+ organizationId: ctx.organizationId,
119
+ deletedAt: null
120
+ },
121
+ void 0,
122
+ { tenantId: ctx.tenantId, organizationId: ctx.organizationId }
123
+ );
124
+ if (!member) {
125
+ return {
126
+ title: defaultTitle,
127
+ subtitle: entityId,
128
+ status: t("staff.messageObjects.notFound"),
129
+ statusColor: "gray"
130
+ };
131
+ }
132
+ const tags = Array.isArray(member.tags) ? member.tags : [];
133
+ const metadata = {};
134
+ if (tags.length > 0) metadata.Tags = tags.slice(0, 5).join(", ");
135
+ return {
136
+ title: member.displayName,
137
+ subtitle: member.description ?? entityId,
138
+ status: member.isActive ? "Active" : "Inactive",
139
+ statusColor: member.isActive ? "green" : "gray",
140
+ metadata: Object.keys(metadata).length > 0 ? metadata : void 0
141
+ };
142
+ }
143
+ export {
144
+ loadLeaveRequestPreview,
145
+ loadTeamMemberPreview,
146
+ loadTeamPreview
147
+ };
148
+ //# sourceMappingURL=messageObjectPreviews.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/staff/lib/messageObjectPreviews.ts"],
4
+ "sourcesContent": ["import { createRequestContainer } from '@open-mercato/shared/lib/di/container'\nimport { findOneWithDecryption } from '@open-mercato/shared/lib/encryption/find'\nimport { resolveTranslations } from '@open-mercato/shared/lib/i18n/server'\nimport type { ObjectPreviewData } from '@open-mercato/shared/modules/messages/types'\nimport type { EntityManager } from '@mikro-orm/postgresql'\nimport { StaffLeaveRequest, StaffTeam, StaffTeamMember } from '../data/entities'\n\ntype PreviewContext = {\n tenantId: string\n organizationId?: string | null\n}\n\nfunction mapStatus(status: string): { label: string; color: string } {\n if (status === 'approved') {\n return { label: 'Approved', color: 'green' }\n }\n if (status === 'rejected') {\n return { label: 'Rejected', color: 'red' }\n }\n return { label: 'Pending', color: 'amber' }\n}\n\nfunction formatDate(value: Date): string {\n return value.toISOString().slice(0, 10)\n}\n\nexport async function loadLeaveRequestPreview(\n entityId: string,\n ctx: PreviewContext,\n): Promise<ObjectPreviewData> {\n const { t } = await resolveTranslations()\n const defaultTitle = t('staff.messageObjects.leaveRequest.title')\n\n if (!ctx.organizationId) {\n return {\n title: defaultTitle,\n subtitle: entityId,\n }\n }\n\n const { resolve } = await createRequestContainer()\n const em = resolve('em') as EntityManager\n\n const request = await findOneWithDecryption(\n em,\n StaffLeaveRequest,\n {\n id: entityId,\n tenantId: ctx.tenantId,\n organizationId: ctx.organizationId,\n deletedAt: null,\n },\n undefined,\n { tenantId: ctx.tenantId, organizationId: ctx.organizationId },\n )\n\n if (!request) {\n return {\n title: defaultTitle,\n subtitle: entityId,\n status: t('staff.messageObjects.notFound'),\n statusColor: 'gray',\n }\n }\n\n const status = mapStatus(request.status)\n const memberName = typeof request.member?.displayName === 'string' ? request.member.displayName : null\n const subtitle = memberName\n ? `${memberName} - ${formatDate(request.startDate)} to ${formatDate(request.endDate)}`\n : `${formatDate(request.startDate)} to ${formatDate(request.endDate)}`\n\n return {\n title: 'Leave request',\n subtitle,\n status: status.label,\n statusColor: status.color,\n metadata: {\n 'Start date': formatDate(request.startDate),\n 'End date': formatDate(request.endDate),\n Timezone: request.timezone,\n },\n }\n}\n\nexport async function loadTeamPreview(\n entityId: string,\n ctx: PreviewContext,\n): Promise<ObjectPreviewData> {\n const { t } = await resolveTranslations()\n const defaultTitle = t('staff.messageObjects.team.title')\n\n if (!ctx.organizationId) {\n return {\n title: defaultTitle,\n subtitle: entityId,\n }\n }\n\n const { resolve } = await createRequestContainer()\n const em = resolve('em') as EntityManager\n\n const team = await findOneWithDecryption(\n em,\n StaffTeam,\n {\n id: entityId,\n tenantId: ctx.tenantId,\n organizationId: ctx.organizationId,\n deletedAt: null,\n },\n undefined,\n { tenantId: ctx.tenantId, organizationId: ctx.organizationId },\n )\n\n if (!team) {\n return {\n title: defaultTitle,\n subtitle: entityId,\n status: t('staff.messageObjects.notFound'),\n statusColor: 'gray',\n }\n }\n\n return {\n title: team.name,\n subtitle: team.description ?? entityId,\n status: team.isActive ? 'Active' : 'Inactive',\n statusColor: team.isActive ? 'green' : 'gray',\n }\n}\n\nexport async function loadTeamMemberPreview(\n entityId: string,\n ctx: PreviewContext,\n): Promise<ObjectPreviewData> {\n const { t } = await resolveTranslations()\n const defaultTitle = t('staff.messageObjects.teamMember.title')\n\n if (!ctx.organizationId) {\n return {\n title: defaultTitle,\n subtitle: entityId,\n }\n }\n\n const { resolve } = await createRequestContainer()\n const em = resolve('em') as EntityManager\n\n const member = await findOneWithDecryption(\n em,\n StaffTeamMember,\n {\n id: entityId,\n tenantId: ctx.tenantId,\n organizationId: ctx.organizationId,\n deletedAt: null,\n },\n undefined,\n { tenantId: ctx.tenantId, organizationId: ctx.organizationId },\n )\n\n if (!member) {\n return {\n title: defaultTitle,\n subtitle: entityId,\n status: t('staff.messageObjects.notFound'),\n statusColor: 'gray',\n }\n }\n\n const tags = Array.isArray(member.tags) ? member.tags : []\n const metadata: Record<string, string> = {}\n if (tags.length > 0) metadata.Tags = tags.slice(0, 5).join(', ')\n\n return {\n title: member.displayName,\n subtitle: member.description ?? entityId,\n status: member.isActive ? 'Active' : 'Inactive',\n statusColor: member.isActive ? 'green' : 'gray',\n metadata: Object.keys(metadata).length > 0 ? metadata : undefined,\n }\n}\n"],
5
+ "mappings": "AAAA,SAAS,8BAA8B;AACvC,SAAS,6BAA6B;AACtC,SAAS,2BAA2B;AAGpC,SAAS,mBAAmB,WAAW,uBAAuB;AAO9D,SAAS,UAAU,QAAkD;AACnE,MAAI,WAAW,YAAY;AACzB,WAAO,EAAE,OAAO,YAAY,OAAO,QAAQ;AAAA,EAC7C;AACA,MAAI,WAAW,YAAY;AACzB,WAAO,EAAE,OAAO,YAAY,OAAO,MAAM;AAAA,EAC3C;AACA,SAAO,EAAE,OAAO,WAAW,OAAO,QAAQ;AAC5C;AAEA,SAAS,WAAW,OAAqB;AACvC,SAAO,MAAM,YAAY,EAAE,MAAM,GAAG,EAAE;AACxC;AAEA,eAAsB,wBACpB,UACA,KAC4B;AAC5B,QAAM,EAAE,EAAE,IAAI,MAAM,oBAAoB;AACxC,QAAM,eAAe,EAAE,yCAAyC;AAEhE,MAAI,CAAC,IAAI,gBAAgB;AACvB,WAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,IACZ;AAAA,EACF;AAEA,QAAM,EAAE,QAAQ,IAAI,MAAM,uBAAuB;AACjD,QAAM,KAAK,QAAQ,IAAI;AAEvB,QAAM,UAAU,MAAM;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,UAAU,IAAI;AAAA,MACd,gBAAgB,IAAI;AAAA,MACpB,WAAW;AAAA,IACb;AAAA,IACA;AAAA,IACA,EAAE,UAAU,IAAI,UAAU,gBAAgB,IAAI,eAAe;AAAA,EAC/D;AAEA,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ,EAAE,+BAA+B;AAAA,MACzC,aAAa;AAAA,IACf;AAAA,EACF;AAEA,QAAM,SAAS,UAAU,QAAQ,MAAM;AACvC,QAAM,aAAa,OAAO,QAAQ,QAAQ,gBAAgB,WAAW,QAAQ,OAAO,cAAc;AAClG,QAAM,WAAW,aACb,GAAG,UAAU,MAAM,WAAW,QAAQ,SAAS,CAAC,OAAO,WAAW,QAAQ,OAAO,CAAC,KAClF,GAAG,WAAW,QAAQ,SAAS,CAAC,OAAO,WAAW,QAAQ,OAAO,CAAC;AAEtE,SAAO;AAAA,IACL,OAAO;AAAA,IACP;AAAA,IACA,QAAQ,OAAO;AAAA,IACf,aAAa,OAAO;AAAA,IACpB,UAAU;AAAA,MACR,cAAc,WAAW,QAAQ,SAAS;AAAA,MAC1C,YAAY,WAAW,QAAQ,OAAO;AAAA,MACtC,UAAU,QAAQ;AAAA,IACpB;AAAA,EACF;AACF;AAEA,eAAsB,gBACpB,UACA,KAC4B;AAC5B,QAAM,EAAE,EAAE,IAAI,MAAM,oBAAoB;AACxC,QAAM,eAAe,EAAE,iCAAiC;AAExD,MAAI,CAAC,IAAI,gBAAgB;AACvB,WAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,IACZ;AAAA,EACF;AAEA,QAAM,EAAE,QAAQ,IAAI,MAAM,uBAAuB;AACjD,QAAM,KAAK,QAAQ,IAAI;AAEvB,QAAM,OAAO,MAAM;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,UAAU,IAAI;AAAA,MACd,gBAAgB,IAAI;AAAA,MACpB,WAAW;AAAA,IACb;AAAA,IACA;AAAA,IACA,EAAE,UAAU,IAAI,UAAU,gBAAgB,IAAI,eAAe;AAAA,EAC/D;AAEA,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ,EAAE,+BAA+B;AAAA,MACzC,aAAa;AAAA,IACf;AAAA,EACF;AAEA,SAAO;AAAA,IACL,OAAO,KAAK;AAAA,IACZ,UAAU,KAAK,eAAe;AAAA,IAC9B,QAAQ,KAAK,WAAW,WAAW;AAAA,IACnC,aAAa,KAAK,WAAW,UAAU;AAAA,EACzC;AACF;AAEA,eAAsB,sBACpB,UACA,KAC4B;AAC5B,QAAM,EAAE,EAAE,IAAI,MAAM,oBAAoB;AACxC,QAAM,eAAe,EAAE,uCAAuC;AAE9D,MAAI,CAAC,IAAI,gBAAgB;AACvB,WAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,IACZ;AAAA,EACF;AAEA,QAAM,EAAE,QAAQ,IAAI,MAAM,uBAAuB;AACjD,QAAM,KAAK,QAAQ,IAAI;AAEvB,QAAM,SAAS,MAAM;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,UAAU,IAAI;AAAA,MACd,gBAAgB,IAAI;AAAA,MACpB,WAAW;AAAA,IACb;AAAA,IACA;AAAA,IACA,EAAE,UAAU,IAAI,UAAU,gBAAgB,IAAI,eAAe;AAAA,EAC/D;AAEA,MAAI,CAAC,QAAQ;AACX,WAAO;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,QAAQ,EAAE,+BAA+B;AAAA,MACzC,aAAa;AAAA,IACf;AAAA,EACF;AAEA,QAAM,OAAO,MAAM,QAAQ,OAAO,IAAI,IAAI,OAAO,OAAO,CAAC;AACzD,QAAM,WAAmC,CAAC;AAC1C,MAAI,KAAK,SAAS,EAAG,UAAS,OAAO,KAAK,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI;AAE/D,SAAO;AAAA,IACL,OAAO,OAAO;AAAA,IACd,UAAU,OAAO,eAAe;AAAA,IAChC,QAAQ,OAAO,WAAW,WAAW;AAAA,IACrC,aAAa,OAAO,WAAW,UAAU;AAAA,IACzC,UAAU,OAAO,KAAK,QAAQ,EAAE,SAAS,IAAI,WAAW;AAAA,EAC1D;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,104 @@
1
+ import { LeaveRequestDetail } from "./components/LeaveRequestDetail.js";
2
+ import { LeaveRequestPreview } from "./components/LeaveRequestPreview.js";
3
+ import { StaffMessageObjectDetail } from "./widgets/messages/StaffMessageObjectDetail.js";
4
+ import { StaffMessageObjectPreview } from "./widgets/messages/StaffMessageObjectPreview.js";
5
+ const messageObjectTypes = [
6
+ {
7
+ module: "staff",
8
+ entityType: "leave_request",
9
+ messageTypes: ["default", "messages.defaultWithObjects", "staff.leave_request_approval", "staff.leave_request_status"],
10
+ entityId: "staff:staff_leave_request",
11
+ optionLabelField: "id",
12
+ optionSubtitleField: "status",
13
+ labelKey: "staff.leaveRequests.page.title",
14
+ icon: "calendar-clock",
15
+ PreviewComponent: LeaveRequestPreview,
16
+ DetailComponent: LeaveRequestDetail,
17
+ actions: [
18
+ {
19
+ id: "approve",
20
+ labelKey: "staff.notifications.leaveRequest.actions.approve",
21
+ variant: "default",
22
+ commandId: "staff.leave-requests.accept",
23
+ icon: "check"
24
+ },
25
+ {
26
+ id: "reject",
27
+ labelKey: "staff.notifications.leaveRequest.actions.reject",
28
+ variant: "destructive",
29
+ commandId: "staff.leave-requests.reject",
30
+ icon: "x"
31
+ },
32
+ {
33
+ id: "view",
34
+ labelKey: "common.view",
35
+ variant: "outline",
36
+ href: "/backend/staff/leave-requests/{entityId}",
37
+ icon: "external-link",
38
+ isTerminal: false
39
+ }
40
+ ],
41
+ loadPreview: async (entityId, ctx) => {
42
+ if (typeof window !== "undefined") {
43
+ return {
44
+ title: "Leave request",
45
+ subtitle: entityId
46
+ };
47
+ }
48
+ const { loadLeaveRequestPreview } = await import("./lib/messageObjectPreviews.js");
49
+ return loadLeaveRequestPreview(entityId, ctx);
50
+ }
51
+ },
52
+ {
53
+ module: "staff",
54
+ entityType: "team",
55
+ messageTypes: ["default", "messages.defaultWithObjects"],
56
+ entityId: "staff:staff_team",
57
+ optionLabelField: "name",
58
+ optionSubtitleField: "description",
59
+ labelKey: "staff.teams.page.title",
60
+ icon: "users",
61
+ PreviewComponent: StaffMessageObjectPreview,
62
+ DetailComponent: StaffMessageObjectDetail,
63
+ actions: [],
64
+ loadPreview: async (entityId, ctx) => {
65
+ if (typeof window !== "undefined") {
66
+ return {
67
+ title: "Team",
68
+ subtitle: entityId
69
+ };
70
+ }
71
+ const { loadTeamPreview } = await import("./lib/messageObjectPreviews.js");
72
+ return loadTeamPreview(entityId, ctx);
73
+ }
74
+ },
75
+ {
76
+ module: "staff",
77
+ entityType: "team_member",
78
+ messageTypes: ["default", "messages.defaultWithObjects"],
79
+ entityId: "staff:staff_team_member",
80
+ optionLabelField: "displayName",
81
+ optionSubtitleField: "email",
82
+ labelKey: "staff.teamMembers.page.title",
83
+ icon: "user-round",
84
+ PreviewComponent: StaffMessageObjectPreview,
85
+ DetailComponent: StaffMessageObjectDetail,
86
+ actions: [],
87
+ loadPreview: async (entityId, ctx) => {
88
+ if (typeof window !== "undefined") {
89
+ return {
90
+ title: "Team member",
91
+ subtitle: entityId
92
+ };
93
+ }
94
+ const { loadTeamMemberPreview } = await import("./lib/messageObjectPreviews.js");
95
+ return loadTeamMemberPreview(entityId, ctx);
96
+ }
97
+ }
98
+ ];
99
+ var message_objects_default = messageObjectTypes;
100
+ export {
101
+ message_objects_default as default,
102
+ messageObjectTypes
103
+ };
104
+ //# sourceMappingURL=message-objects.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/modules/staff/message-objects.ts"],
4
+ "sourcesContent": ["import type { MessageObjectTypeDefinition } from '@open-mercato/shared/modules/messages/types'\nimport { LeaveRequestDetail } from './components/LeaveRequestDetail'\nimport { LeaveRequestPreview } from './components/LeaveRequestPreview'\nimport { StaffMessageObjectDetail } from './widgets/messages/StaffMessageObjectDetail'\nimport { StaffMessageObjectPreview } from './widgets/messages/StaffMessageObjectPreview'\n\nexport const messageObjectTypes: MessageObjectTypeDefinition[] = [\n {\n module: 'staff',\n entityType: 'leave_request',\n messageTypes: ['default', 'messages.defaultWithObjects', 'staff.leave_request_approval', 'staff.leave_request_status'],\n entityId: 'staff:staff_leave_request',\n optionLabelField: 'id',\n optionSubtitleField: 'status',\n labelKey: 'staff.leaveRequests.page.title',\n icon: 'calendar-clock',\n PreviewComponent: LeaveRequestPreview,\n DetailComponent: LeaveRequestDetail,\n actions: [\n {\n id: 'approve',\n labelKey: 'staff.notifications.leaveRequest.actions.approve',\n variant: 'default',\n commandId: 'staff.leave-requests.accept',\n icon: 'check',\n },\n {\n id: 'reject',\n labelKey: 'staff.notifications.leaveRequest.actions.reject',\n variant: 'destructive',\n commandId: 'staff.leave-requests.reject',\n icon: 'x',\n },\n {\n id: 'view',\n labelKey: 'common.view',\n variant: 'outline',\n href: '/backend/staff/leave-requests/{entityId}',\n icon: 'external-link',\n isTerminal: false,\n },\n ],\n loadPreview: async (entityId, ctx) => {\n if (typeof window !== 'undefined') {\n return {\n title: 'Leave request',\n subtitle: entityId,\n }\n }\n const { loadLeaveRequestPreview } = await import('./lib/messageObjectPreviews')\n return loadLeaveRequestPreview(entityId, ctx)\n },\n },\n {\n module: 'staff',\n entityType: 'team',\n messageTypes: ['default', 'messages.defaultWithObjects'],\n entityId: 'staff:staff_team',\n optionLabelField: 'name',\n optionSubtitleField: 'description',\n labelKey: 'staff.teams.page.title',\n icon: 'users',\n PreviewComponent: StaffMessageObjectPreview,\n DetailComponent: StaffMessageObjectDetail,\n actions: [],\n loadPreview: async (entityId, ctx) => {\n if (typeof window !== 'undefined') {\n return {\n title: 'Team',\n subtitle: entityId,\n }\n }\n const { loadTeamPreview } = await import('./lib/messageObjectPreviews')\n return loadTeamPreview(entityId, ctx)\n },\n },\n {\n module: 'staff',\n entityType: 'team_member',\n messageTypes: ['default', 'messages.defaultWithObjects'],\n entityId: 'staff:staff_team_member',\n optionLabelField: 'displayName',\n optionSubtitleField: 'email',\n labelKey: 'staff.teamMembers.page.title',\n icon: 'user-round',\n PreviewComponent: StaffMessageObjectPreview,\n DetailComponent: StaffMessageObjectDetail,\n actions: [],\n loadPreview: async (entityId, ctx) => {\n if (typeof window !== 'undefined') {\n return {\n title: 'Team member',\n subtitle: entityId,\n }\n }\n const { loadTeamMemberPreview } = await import('./lib/messageObjectPreviews')\n return loadTeamMemberPreview(entityId, ctx)\n },\n },\n]\n\nexport default messageObjectTypes\n"],
5
+ "mappings": "AACA,SAAS,0BAA0B;AACnC,SAAS,2BAA2B;AACpC,SAAS,gCAAgC;AACzC,SAAS,iCAAiC;AAEnC,MAAM,qBAAoD;AAAA,EAC/D;AAAA,IACE,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,cAAc,CAAC,WAAW,+BAA+B,gCAAgC,4BAA4B;AAAA,IACrH,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,qBAAqB;AAAA,IACrB,UAAU;AAAA,IACV,MAAM;AAAA,IACN,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,IACjB,SAAS;AAAA,MACP;AAAA,QACE,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,SAAS;AAAA,QACT,WAAW;AAAA,QACX,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,SAAS;AAAA,QACT,WAAW;AAAA,QACX,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,SAAS;AAAA,QACT,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,aAAa,OAAO,UAAU,QAAQ;AACpC,UAAI,OAAO,WAAW,aAAa;AACjC,eAAO;AAAA,UACL,OAAO;AAAA,UACP,UAAU;AAAA,QACZ;AAAA,MACF;AACA,YAAM,EAAE,wBAAwB,IAAI,MAAM,OAAO,6BAA6B;AAC9E,aAAO,wBAAwB,UAAU,GAAG;AAAA,IAC9C;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,cAAc,CAAC,WAAW,6BAA6B;AAAA,IACvD,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,qBAAqB;AAAA,IACrB,UAAU;AAAA,IACV,MAAM;AAAA,IACN,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,IACjB,SAAS,CAAC;AAAA,IACV,aAAa,OAAO,UAAU,QAAQ;AACpC,UAAI,OAAO,WAAW,aAAa;AACjC,eAAO;AAAA,UACL,OAAO;AAAA,UACP,UAAU;AAAA,QACZ;AAAA,MACF;AACA,YAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,6BAA6B;AACtE,aAAO,gBAAgB,UAAU,GAAG;AAAA,IACtC;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,cAAc,CAAC,WAAW,6BAA6B;AAAA,IACvD,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,qBAAqB;AAAA,IACrB,UAAU;AAAA,IACV,MAAM;AAAA,IACN,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,IACjB,SAAS,CAAC;AAAA,IACV,aAAa,OAAO,UAAU,QAAQ;AACpC,UAAI,OAAO,WAAW,aAAa;AACjC,eAAO;AAAA,UACL,OAAO;AAAA,UACP,UAAU;AAAA,QACZ;AAAA,MACF;AACA,YAAM,EAAE,sBAAsB,IAAI,MAAM,OAAO,6BAA6B;AAC5E,aAAO,sBAAsB,UAAU,GAAG;AAAA,IAC5C;AAAA,EACF;AACF;AAEA,IAAO,0BAAQ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,23 @@
1
+ const messageTypes = [
2
+ {
3
+ type: "staff.leave_request_approval",
4
+ module: "staff",
5
+ labelKey: "staff.messages.leaveRequestApproval",
6
+ icon: "calendar-clock",
7
+ color: "amber",
8
+ ui: {
9
+ listItemComponent: "messages.default.listItem",
10
+ contentComponent: "messages.default.content",
11
+ actionsComponent: "messages.default.actions"
12
+ },
13
+ allowReply: true,
14
+ allowForward: true,
15
+ actionsExpireAfterHours: 168
16
+ }
17
+ ];
18
+ var message_types_default = messageTypes;
19
+ export {
20
+ message_types_default as default,
21
+ messageTypes
22
+ };
23
+ //# sourceMappingURL=message-types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/modules/staff/message-types.ts"],
4
+ "sourcesContent": ["import type { MessageTypeDefinition } from '@open-mercato/shared/modules/messages/types'\n\nexport const messageTypes: MessageTypeDefinition[] = [\n {\n type: 'staff.leave_request_approval',\n module: 'staff',\n labelKey: 'staff.messages.leaveRequestApproval',\n icon: 'calendar-clock',\n color: 'amber',\n ui: {\n listItemComponent: 'messages.default.listItem',\n contentComponent: 'messages.default.content',\n actionsComponent: 'messages.default.actions',\n },\n allowReply: true,\n allowForward: true,\n actionsExpireAfterHours: 168,\n }\n]\n\nexport default messageTypes\n"],
5
+ "mappings": "AAEO,MAAM,eAAwC;AAAA,EACnD;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,MAAM;AAAA,IACN,OAAO;AAAA,IACP,IAAI;AAAA,MACF,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,IACpB;AAAA,IACA,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,yBAAyB;AAAA,EAC3B;AACF;AAEA,IAAO,wBAAQ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,51 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { useT } from "@open-mercato/shared/lib/i18n/context";
5
+ import { Button } from "@open-mercato/ui/primitives/button";
6
+ import { StaffMessageObjectPreview } from "./StaffMessageObjectPreview.js";
7
+ function StaffMessageObjectDetail(props) {
8
+ const t = useT();
9
+ const [executingActionId, setExecutingActionId] = React.useState(null);
10
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-3 rounded border p-3", children: [
11
+ /* @__PURE__ */ jsx(
12
+ StaffMessageObjectPreview,
13
+ {
14
+ entityId: props.entityId,
15
+ entityModule: props.entityModule,
16
+ entityType: props.entityType,
17
+ snapshot: props.snapshot,
18
+ previewData: props.previewData,
19
+ actionRequired: props.actionRequired,
20
+ actionType: props.actionType,
21
+ actionLabel: props.actionLabel
22
+ }
23
+ ),
24
+ props.actions.length > 0 ? /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: props.actions.map((action) => /* @__PURE__ */ jsx(
25
+ Button,
26
+ {
27
+ type: "button",
28
+ size: "sm",
29
+ variant: action.variant ?? "default",
30
+ disabled: executingActionId !== null,
31
+ onClick: async () => {
32
+ if (executingActionId) return;
33
+ setExecutingActionId(action.id);
34
+ try {
35
+ await props.onAction(action.id, { id: props.entityId });
36
+ } finally {
37
+ setExecutingActionId(null);
38
+ }
39
+ },
40
+ children: executingActionId === action.id ? t("messages.actions.executing", "Executing...") : t(action.labelKey ?? action.id, action.id)
41
+ },
42
+ action.id
43
+ )) }) : null
44
+ ] });
45
+ }
46
+ var StaffMessageObjectDetail_default = StaffMessageObjectDetail;
47
+ export {
48
+ StaffMessageObjectDetail,
49
+ StaffMessageObjectDetail_default as default
50
+ };
51
+ //# sourceMappingURL=StaffMessageObjectDetail.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/modules/staff/widgets/messages/StaffMessageObjectDetail.tsx"],
4
+ "sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport type { ObjectDetailProps } from '@open-mercato/shared/modules/messages/types'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { StaffMessageObjectPreview } from './StaffMessageObjectPreview'\n\nexport function StaffMessageObjectDetail(props: ObjectDetailProps) {\n const t = useT()\n const [executingActionId, setExecutingActionId] = React.useState<string | null>(null)\n\n return (\n <div className=\"space-y-3 rounded border p-3\">\n <StaffMessageObjectPreview\n entityId={props.entityId}\n entityModule={props.entityModule}\n entityType={props.entityType}\n snapshot={props.snapshot}\n previewData={props.previewData}\n actionRequired={props.actionRequired}\n actionType={props.actionType}\n actionLabel={props.actionLabel}\n />\n\n {props.actions.length > 0 ? (\n <div className=\"flex flex-wrap gap-2\">\n {props.actions.map((action) => (\n <Button\n key={action.id}\n type=\"button\"\n size=\"sm\"\n variant={action.variant ?? 'default'}\n disabled={executingActionId !== null}\n onClick={async () => {\n if (executingActionId) return\n setExecutingActionId(action.id)\n try {\n await props.onAction(action.id, { id: props.entityId })\n } finally {\n setExecutingActionId(null)\n }\n }}\n >\n {executingActionId === action.id\n ? t('messages.actions.executing', 'Executing...')\n : t(action.labelKey ?? action.id, action.id)}\n </Button>\n ))}\n </div>\n ) : null}\n </div>\n )\n}\n\nexport default StaffMessageObjectDetail\n\n"],
5
+ "mappings": ";AAaI,SACE,KADF;AAXJ,YAAY,WAAW;AACvB,SAAS,YAAY;AAErB,SAAS,cAAc;AACvB,SAAS,iCAAiC;AAEnC,SAAS,yBAAyB,OAA0B;AACjE,QAAM,IAAI,KAAK;AACf,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,MAAM,SAAwB,IAAI;AAEpF,SACE,qBAAC,SAAI,WAAU,gCACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,UAAU,MAAM;AAAA,QAChB,cAAc,MAAM;AAAA,QACpB,YAAY,MAAM;AAAA,QAClB,UAAU,MAAM;AAAA,QAChB,aAAa,MAAM;AAAA,QACnB,gBAAgB,MAAM;AAAA,QACtB,YAAY,MAAM;AAAA,QAClB,aAAa,MAAM;AAAA;AAAA,IACrB;AAAA,IAEC,MAAM,QAAQ,SAAS,IACtB,oBAAC,SAAI,WAAU,wBACZ,gBAAM,QAAQ,IAAI,CAAC,WAClB;AAAA,MAAC;AAAA;AAAA,QAEC,MAAK;AAAA,QACL,MAAK;AAAA,QACL,SAAS,OAAO,WAAW;AAAA,QAC3B,UAAU,sBAAsB;AAAA,QAChC,SAAS,YAAY;AACnB,cAAI,kBAAmB;AACvB,+BAAqB,OAAO,EAAE;AAC9B,cAAI;AACF,kBAAM,MAAM,SAAS,OAAO,IAAI,EAAE,IAAI,MAAM,SAAS,CAAC;AAAA,UACxD,UAAE;AACA,iCAAqB,IAAI;AAAA,UAC3B;AAAA,QACF;AAAA,QAEC,gCAAsB,OAAO,KAC1B,EAAE,8BAA8B,cAAc,IAC9C,EAAE,OAAO,YAAY,OAAO,IAAI,OAAO,EAAE;AAAA;AAAA,MAjBxC,OAAO;AAAA,IAkBd,CACD,GACH,IACE;AAAA,KACN;AAEJ;AAEA,IAAO,mCAAQ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,34 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { UserRound, Users } from "lucide-react";
4
+ import { useT } from "@open-mercato/shared/lib/i18n/context";
5
+ import { Badge } from "@open-mercato/ui/primitives/badge";
6
+ function StaffMessageObjectPreview({
7
+ entityType,
8
+ entityId,
9
+ previewData,
10
+ actionRequired,
11
+ actionLabel
12
+ }) {
13
+ const t = useT();
14
+ const isTeam = entityType === "team";
15
+ const Icon = isTeam ? Users : UserRound;
16
+ const fallbackTitle = isTeam ? t("staff.teams.page.title", "Teams") : t("staff.teamMembers.page.title", "Team members");
17
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3 rounded-md border bg-muted/20 p-3", children: [
18
+ /* @__PURE__ */ jsx(Icon, { className: "mt-0.5 h-4 w-4 text-muted-foreground" }),
19
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1 space-y-1", children: [
20
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
21
+ /* @__PURE__ */ jsx("p", { className: "truncate text-sm font-medium", children: previewData?.title || fallbackTitle }),
22
+ actionRequired ? /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: "text-xs", children: actionLabel || t("messages.composer.objectActionRequired", "Action required") }) : null
23
+ ] }),
24
+ /* @__PURE__ */ jsx("p", { className: "truncate text-xs text-muted-foreground", children: previewData?.subtitle || entityId }),
25
+ previewData?.status ? /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "text-xs", children: previewData.status }) : null
26
+ ] })
27
+ ] });
28
+ }
29
+ var StaffMessageObjectPreview_default = StaffMessageObjectPreview;
30
+ export {
31
+ StaffMessageObjectPreview,
32
+ StaffMessageObjectPreview_default as default
33
+ };
34
+ //# sourceMappingURL=StaffMessageObjectPreview.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/modules/staff/widgets/messages/StaffMessageObjectPreview.tsx"],
4
+ "sourcesContent": ["\"use client\"\n\nimport { UserRound, Users } from 'lucide-react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport type { ObjectPreviewProps } from '@open-mercato/shared/modules/messages/types'\nimport { Badge } from '@open-mercato/ui/primitives/badge'\n\nexport function StaffMessageObjectPreview({\n entityType,\n entityId,\n previewData,\n actionRequired,\n actionLabel,\n}: ObjectPreviewProps) {\n const t = useT()\n const isTeam = entityType === 'team'\n const Icon = isTeam ? Users : UserRound\n const fallbackTitle = isTeam\n ? t('staff.teams.page.title', 'Teams')\n : t('staff.teamMembers.page.title', 'Team members')\n\n return (\n <div className=\"flex items-start gap-3 rounded-md border bg-muted/20 p-3\">\n <Icon className=\"mt-0.5 h-4 w-4 text-muted-foreground\" />\n <div className=\"min-w-0 flex-1 space-y-1\">\n <div className=\"flex items-center gap-2\">\n <p className=\"truncate text-sm font-medium\">{previewData?.title || fallbackTitle}</p>\n {actionRequired ? (\n <Badge variant=\"secondary\" className=\"text-xs\">\n {actionLabel || t('messages.composer.objectActionRequired', 'Action required')}\n </Badge>\n ) : null}\n </div>\n <p className=\"truncate text-xs text-muted-foreground\">{previewData?.subtitle || entityId}</p>\n {previewData?.status ? (\n <Badge variant=\"outline\" className=\"text-xs\">{previewData.status}</Badge>\n ) : null}\n </div>\n </div>\n )\n}\n\nexport default StaffMessageObjectPreview\n\n"],
5
+ "mappings": ";AAuBM,cAEE,YAFF;AArBN,SAAS,WAAW,aAAa;AACjC,SAAS,YAAY;AAErB,SAAS,aAAa;AAEf,SAAS,0BAA0B;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAuB;AACrB,QAAM,IAAI,KAAK;AACf,QAAM,SAAS,eAAe;AAC9B,QAAM,OAAO,SAAS,QAAQ;AAC9B,QAAM,gBAAgB,SAClB,EAAE,0BAA0B,OAAO,IACnC,EAAE,gCAAgC,cAAc;AAEpD,SACE,qBAAC,SAAI,WAAU,4DACb;AAAA,wBAAC,QAAK,WAAU,wCAAuC;AAAA,IACvD,qBAAC,SAAI,WAAU,4BACb;AAAA,2BAAC,SAAI,WAAU,2BACb;AAAA,4BAAC,OAAE,WAAU,gCAAgC,uBAAa,SAAS,eAAc;AAAA,QAChF,iBACC,oBAAC,SAAM,SAAQ,aAAY,WAAU,WAClC,yBAAe,EAAE,0CAA0C,iBAAiB,GAC/E,IACE;AAAA,SACN;AAAA,MACA,oBAAC,OAAE,WAAU,0CAA0C,uBAAa,YAAY,UAAS;AAAA,MACxF,aAAa,SACZ,oBAAC,SAAM,SAAQ,WAAU,WAAU,WAAW,sBAAY,QAAO,IAC/D;AAAA,OACN;AAAA,KACF;AAEJ;AAEA,IAAO,oCAAQ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ import { StaffMessageObjectDetail } from "./StaffMessageObjectDetail.js";
2
+ import { StaffMessageObjectPreview } from "./StaffMessageObjectPreview.js";
3
+ export {
4
+ StaffMessageObjectDetail,
5
+ StaffMessageObjectPreview
6
+ };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/modules/staff/widgets/messages/index.ts"],
4
+ "sourcesContent": ["export { StaffMessageObjectDetail } from './StaffMessageObjectDetail'\nexport { StaffMessageObjectPreview } from './StaffMessageObjectPreview'\n"],
5
+ "mappings": "AAAA,SAAS,gCAAgC;AACzC,SAAS,iCAAiC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,31 @@
1
+ export const id = 'id'
2
+ export const type = 'type'
3
+ export const thread_id = 'thread_id'
4
+ export const parent_message_id = 'parent_message_id'
5
+ export const sender_user_id = 'sender_user_id'
6
+ export const subject = 'subject'
7
+ export const body = 'body'
8
+ export const body_format = 'body_format'
9
+ export const priority = 'priority'
10
+ export const status = 'status'
11
+ export const is_draft = 'is_draft'
12
+ export const sent_at = 'sent_at'
13
+ export const action_data = 'action_data'
14
+ export const action_result = 'action_result'
15
+ export const action_taken = 'action_taken'
16
+ export const action_taken_by_user_id = 'action_taken_by_user_id'
17
+ export const action_taken_at = 'action_taken_at'
18
+ export const send_via_email = 'send_via_email'
19
+ export const tenant_id = 'tenant_id'
20
+ export const organization_id = 'organization_id'
21
+ export const created_at = 'created_at'
22
+ export const updated_at = 'updated_at'
23
+ export const deleted_at = 'deleted_at'
24
+ export const visibility = 'visibility'
25
+ export const source_entity_type = 'source_entity_type'
26
+ export const source_entity_id = 'source_entity_id'
27
+ export const external_email = 'external_email'
28
+ export const external_name = 'external_name'
29
+ export const external_email_sent_at = 'external_email_sent_at'
30
+ export const external_email_failed_at = 'external_email_failed_at'
31
+ export const external_email_error = 'external_email_error'
@@ -0,0 +1,8 @@
1
+ export const id = 'id'
2
+ export const message_id = 'message_id'
3
+ export const recipient_user_id = 'recipient_user_id'
4
+ export const token = 'token'
5
+ export const expires_at = 'expires_at'
6
+ export const used_at = 'used_at'
7
+ export const use_count = 'use_count'
8
+ export const created_at = 'created_at'
@@ -0,0 +1,9 @@
1
+ export const id = 'id'
2
+ export const message_id = 'message_id'
3
+ export const tenant_id = 'tenant_id'
4
+ export const organization_id = 'organization_id'
5
+ export const confirmed = 'confirmed'
6
+ export const confirmed_by_user_id = 'confirmed_by_user_id'
7
+ export const confirmed_at = 'confirmed_at'
8
+ export const created_at = 'created_at'
9
+ export const updated_at = 'updated_at'
@@ -0,0 +1,10 @@
1
+ export const id = 'id'
2
+ export const message_id = 'message_id'
3
+ export const entity_module = 'entity_module'
4
+ export const entity_type = 'entity_type'
5
+ export const entity_id = 'entity_id'
6
+ export const action_required = 'action_required'
7
+ export const action_type = 'action_type'
8
+ export const action_label = 'action_label'
9
+ export const entity_snapshot = 'entity_snapshot'
10
+ export const created_at = 'created_at'
@@ -0,0 +1,14 @@
1
+ export const id = 'id'
2
+ export const message_id = 'message_id'
3
+ export const recipient_user_id = 'recipient_user_id'
4
+ export const recipient_type = 'recipient_type'
5
+ export const status = 'status'
6
+ export const read_at = 'read_at'
7
+ export const archived_at = 'archived_at'
8
+ export const deleted_at = 'deleted_at'
9
+ export const email_sent_at = 'email_sent_at'
10
+ export const email_delivered_at = 'email_delivered_at'
11
+ export const email_opened_at = 'email_opened_at'
12
+ export const email_failed_at = 'email_failed_at'
13
+ export const email_error = 'email_error'
14
+ export const created_at = 'created_at'
@@ -24,6 +24,7 @@ export const M = {
24
24
  "staff": "staff",
25
25
  "notifications": "notifications",
26
26
  "progress": "progress",
27
+ "messages": "messages",
27
28
  "translations": "translations",
28
29
  "inbox_ops": "inbox_ops"
29
30
  } as const
@@ -194,6 +195,13 @@ export const E = {
194
195
  "progress": {
195
196
  "progress_job": "progress:progress_job"
196
197
  },
198
+ "messages": {
199
+ "message": "messages:message",
200
+ "message_recipient": "messages:message_recipient",
201
+ "message_object": "messages:message_object",
202
+ "message_access_token": "messages:message_access_token",
203
+ "message_confirmation": "messages:message_confirmation"
204
+ },
197
205
  "translations": {
198
206
  "entity_translation": "translations:entity_translation"
199
207
  },
@@ -58,6 +58,11 @@ import * as inbox_proposal_action from './entities/inbox_proposal_action/index'
58
58
  import * as inbox_settings from './entities/inbox_settings/index'
59
59
  import * as indexer_error_log from './entities/indexer_error_log/index'
60
60
  import * as indexer_status_log from './entities/indexer_status_log/index'
61
+ import * as message from './entities/message/index'
62
+ import * as message_access_token from './entities/message_access_token/index'
63
+ import * as message_confirmation from './entities/message_confirmation/index'
64
+ import * as message_object from './entities/message_object/index'
65
+ import * as message_recipient from './entities/message_recipient/index'
61
66
  import * as module_config from './entities/module_config/index'
62
67
  import * as notification from './entities/notification/index'
63
68
  import * as organization from './entities/organization/index'
@@ -186,6 +191,11 @@ export const entityFieldsRegistry: Record<string, Record<string, string>> = {
186
191
  inbox_settings,
187
192
  indexer_error_log,
188
193
  indexer_status_log,
194
+ message,
195
+ message_access_token,
196
+ message_confirmation,
197
+ message_object,
198
+ message_recipient,
189
199
  module_config,
190
200
  notification,
191
201
  organization,
package/jest.setup.ts CHANGED
@@ -1,5 +1,10 @@
1
1
  import '@testing-library/jest-dom'
2
2
 
3
+ jest.mock('react-markdown', () => ({
4
+ __esModule: true,
5
+ default: ({ children }: { children?: unknown }) => children ?? null,
6
+ }))
7
+
3
8
  // Mock Response/Request/Headers for tests that need them in jsdom environment
4
9
  class MockResponse {
5
10
  body: string
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-mercato/core",
3
- "version": "0.4.5-develop-5191db4ef3",
3
+ "version": "0.4.5-develop-9f9549ebc8",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "scripts": {
@@ -207,7 +207,7 @@
207
207
  }
208
208
  },
209
209
  "dependencies": {
210
- "@open-mercato/shared": "0.4.5-develop-5191db4ef3",
210
+ "@open-mercato/shared": "0.4.5-develop-9f9549ebc8",
211
211
  "@types/semver": "^7.5.8",
212
212
  "@xyflow/react": "^12.6.0",
213
213
  "ai": "^6.0.0",