@open-mercato/core 0.4.5-develop-5191db4ef3 → 0.4.5-develop-033a719bf2

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,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/modules/messages/components/message-detail/panels/meta-panel.tsx"],
4
+ "sourcesContent": ["\"use client\"\n\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport type { MessageDetail } from '../types'\n\nexport function MessageDetailMetaSection({ detail }: { detail: MessageDetail }) {\n const t = useT()\n\n return (\n <div className=\"grid gap-3 sm:grid-cols-2\">\n {detail.externalEmail ? (\n <div className=\"space-y-1 rounded border p-3 text-sm\">\n <p className=\"font-medium\">{t('messages.externalEmail', 'External email')}</p>\n <p>{detail.externalEmail}</p>\n </div>\n ) : null}\n </div>\n )\n}\n"],
5
+ "mappings": ";AAWQ,SACE,KADF;AATR,SAAS,YAAY;AAGd,SAAS,yBAAyB,EAAE,OAAO,GAA8B;AAC9E,QAAM,IAAI,KAAK;AAEf,SACE,oBAAC,SAAI,WAAU,6BACZ,iBAAO,gBACN,qBAAC,SAAI,WAAU,wCACb;AAAA,wBAAC,OAAE,WAAU,eAAe,YAAE,0BAA0B,gBAAgB,GAAE;AAAA,IAC1E,oBAAC,OAAG,iBAAO,eAAc;AAAA,KAC3B,IACE,MACN;AAEJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,51 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useT } from "@open-mercato/shared/lib/i18n/context";
4
+ import {
5
+ getMessageUiComponentRegistry
6
+ } from "../../utils/typeUiRegistry.js";
7
+ import { toObjectAction } from "../utils.js";
8
+ function MessageDetailObjectsSection(props) {
9
+ const t = useT();
10
+ const messageUiRegistry = getMessageUiComponentRegistry();
11
+ if ((props.detail.objects ?? []).length === 0) return null;
12
+ return /* @__PURE__ */ jsxs("section", { className: "space-y-3 pl-4 py-2", children: [
13
+ /* @__PURE__ */ jsx("h2", { className: "text-base font-semibold", children: t("messages.attachedObjects", "Attached objects") }),
14
+ /* @__PURE__ */ jsx("div", { className: "space-y-2", children: (props.detail.objects ?? []).map((item) => {
15
+ const componentKey = `${item.entityModule}:${item.entityType}`;
16
+ const DetailComponent = messageUiRegistry.objectDetailComponents[componentKey] ?? null;
17
+ const objectActions = props.objectActionsByObjectId.get(item.id);
18
+ if (DetailComponent) {
19
+ const actions = objectActions ? Array.from(objectActions.entries()).map(([actionId, action]) => toObjectAction(actionId, action)) : [];
20
+ return /* @__PURE__ */ jsx(
21
+ DetailComponent,
22
+ {
23
+ entityId: item.entityId,
24
+ entityModule: item.entityModule,
25
+ entityType: item.entityType,
26
+ snapshot: item.snapshot ?? void 0,
27
+ previewData: item.preview ?? void 0,
28
+ actionRequired: item.actionRequired,
29
+ actionType: item.actionType ?? void 0,
30
+ actionLabel: item.actionLabel ?? void 0,
31
+ actionTaken: props.detail.actionTaken ?? null,
32
+ actionTakenAt: props.detail.actionTakenAt ? new Date(props.detail.actionTakenAt) : null,
33
+ actionTakenByUserId: props.detail.actionTakenByUserId ?? null,
34
+ actions,
35
+ onAction: async (actionId, payload) => {
36
+ const action = objectActions?.get(actionId);
37
+ if (!action) return;
38
+ await props.onExecuteAction(action, payload);
39
+ }
40
+ },
41
+ item.id
42
+ );
43
+ }
44
+ return null;
45
+ }) })
46
+ ] });
47
+ }
48
+ export {
49
+ MessageDetailObjectsSection
50
+ };
51
+ //# sourceMappingURL=objects-panel.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/modules/messages/components/message-detail/panels/objects-panel.tsx"],
4
+ "sourcesContent": ["\"use client\"\n\nimport type { MessageObjectAction } from '@open-mercato/shared/modules/messages/types'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport {\n getMessageUiComponentRegistry,\n} from '../../utils/typeUiRegistry'\nimport type { MessageAction, MessageDetail } from '../types'\nimport { toObjectAction } from '../utils'\n\ntype ObjectsPanelProps = {\n detail: MessageDetail\n objectActionsByObjectId: Map<string, Map<string, MessageAction>>\n onExecuteAction: (action: MessageAction, payload?: Record<string, unknown>) => Promise<void>\n}\n\nexport function MessageDetailObjectsSection(props: ObjectsPanelProps) {\n const t = useT()\n const messageUiRegistry = getMessageUiComponentRegistry()\n\n if ((props.detail.objects ?? []).length === 0) return null\n\n return (\n <section className=\"space-y-3 pl-4 py-2\">\n <h2 className=\"text-base font-semibold\">{t('messages.attachedObjects', 'Attached objects')}</h2>\n <div className=\"space-y-2\">\n {(props.detail.objects ?? []).map((item) => {\n const componentKey = `${item.entityModule}:${item.entityType}`\n const DetailComponent = messageUiRegistry.objectDetailComponents[componentKey] ?? null\n const objectActions = props.objectActionsByObjectId.get(item.id)\n\n if (DetailComponent) {\n const actions: MessageObjectAction[] = objectActions\n ? Array.from(objectActions.entries()).map(([actionId, action]) => toObjectAction(actionId, action))\n : []\n\n return (\n <DetailComponent\n key={item.id}\n entityId={item.entityId}\n entityModule={item.entityModule}\n entityType={item.entityType}\n snapshot={item.snapshot ?? undefined}\n previewData={item.preview ?? undefined}\n actionRequired={item.actionRequired}\n actionType={item.actionType ?? undefined}\n actionLabel={item.actionLabel ?? undefined}\n actionTaken={props.detail.actionTaken ?? null}\n actionTakenAt={props.detail.actionTakenAt ? new Date(props.detail.actionTakenAt) : null}\n actionTakenByUserId={props.detail.actionTakenByUserId ?? null}\n actions={actions}\n onAction={async (actionId, payload) => {\n const action = objectActions?.get(actionId)\n if (!action) return\n await props.onExecuteAction(action, payload)\n }}\n />\n )\n }\n return null\n })}\n </div>\n </section>\n )\n}\n"],
5
+ "mappings": ";AAuBI,SACE,KADF;AApBJ,SAAS,YAAY;AACrB;AAAA,EACE;AAAA,OACK;AAEP,SAAS,sBAAsB;AAQxB,SAAS,4BAA4B,OAA0B;AACpE,QAAM,IAAI,KAAK;AACf,QAAM,oBAAoB,8BAA8B;AAExD,OAAK,MAAM,OAAO,WAAW,CAAC,GAAG,WAAW,EAAG,QAAO;AAEtD,SACE,qBAAC,aAAQ,WAAU,uBACjB;AAAA,wBAAC,QAAG,WAAU,2BAA2B,YAAE,4BAA4B,kBAAkB,GAAE;AAAA,IAC3F,oBAAC,SAAI,WAAU,aACX,iBAAM,OAAO,WAAW,CAAC,GAAG,IAAI,CAAC,SAAS;AAC1C,YAAM,eAAe,GAAG,KAAK,YAAY,IAAI,KAAK,UAAU;AAC5D,YAAM,kBAAkB,kBAAkB,uBAAuB,YAAY,KAAK;AAClF,YAAM,gBAAgB,MAAM,wBAAwB,IAAI,KAAK,EAAE;AAE/D,UAAI,iBAAiB;AACnB,cAAM,UAAiC,gBACnC,MAAM,KAAK,cAAc,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,UAAU,MAAM,MAAM,eAAe,UAAU,MAAM,CAAC,IAChG,CAAC;AAEL,eACE;AAAA,UAAC;AAAA;AAAA,YAEC,UAAU,KAAK;AAAA,YACf,cAAc,KAAK;AAAA,YACnB,YAAY,KAAK;AAAA,YACjB,UAAU,KAAK,YAAY;AAAA,YAC3B,aAAa,KAAK,WAAW;AAAA,YAC7B,gBAAgB,KAAK;AAAA,YACrB,YAAY,KAAK,cAAc;AAAA,YAC/B,aAAa,KAAK,eAAe;AAAA,YACjC,aAAa,MAAM,OAAO,eAAe;AAAA,YACzC,eAAe,MAAM,OAAO,gBAAgB,IAAI,KAAK,MAAM,OAAO,aAAa,IAAI;AAAA,YACnF,qBAAqB,MAAM,OAAO,uBAAuB;AAAA,YACzD;AAAA,YACA,UAAU,OAAO,UAAU,YAAY;AACrC,oBAAM,SAAS,eAAe,IAAI,QAAQ;AAC1C,kBAAI,CAAC,OAAQ;AACb,oBAAM,MAAM,gBAAgB,QAAQ,OAAO;AAAA,YAC7C;AAAA;AAAA,UAjBK,KAAK;AAAA,QAkBZ;AAAA,MAEJ;AACA,aAAO;AAAA,IACT,CAAC,GACH;AAAA,KACF;AAEJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,54 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useT } from "@open-mercato/shared/lib/i18n/context";
4
+ import { MarkdownContent } from "@open-mercato/ui/backend/markdown/MarkdownContent";
5
+ import { getMessageUiComponentRegistry } from "../../utils/typeUiRegistry.js";
6
+ import { formatDateTime } from "../utils.js";
7
+ function MessageDetailThreadSection({ detail }) {
8
+ const t = useT();
9
+ const messageUiRegistry = getMessageUiComponentRegistry();
10
+ if ((detail.thread ?? []).length === 0) return null;
11
+ return /* @__PURE__ */ jsxs("section", { className: "space-y-3 border-l pl-4 py-2", children: [
12
+ /* @__PURE__ */ jsx("h2", { className: "text-base font-semibold", children: t("messages.detail.thread", "Thread") }),
13
+ /* @__PURE__ */ jsx("div", { className: "space-y-3", children: (detail.thread ?? []).map((threadItem) => /* @__PURE__ */ jsxs("article", { className: "rounded border p-3", children: [
14
+ /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
15
+ threadItem.senderName || threadItem.senderEmail || threadItem.senderUserId,
16
+ " \u2022 ",
17
+ formatDateTime(threadItem.sentAt)
18
+ ] }),
19
+ /* @__PURE__ */ jsx("div", { className: "mt-2 max-h-[60vh] overflow-y-auto pr-1", children: /* @__PURE__ */ jsx(
20
+ MarkdownContent,
21
+ {
22
+ body: threadItem.body,
23
+ format: threadItem.bodyFormat ?? "text",
24
+ className: "text-sm whitespace-pre-wrap [&>*]:mb-2 [&>*:last-child]:mb-0 [&_ul]:ml-4 [&_ul]:list-disc [&_ol]:ml-4 [&_ol]:list-decimal [&_code]:rounded [&_code]:bg-muted [&_code]:px-1 [&_code]:py-0.5 [&_pre]:rounded-md [&_pre]:bg-muted [&_pre]:p-3 [&_pre]:text-xs"
25
+ }
26
+ ) }),
27
+ (threadItem.objects ?? []).length > 0 && /* @__PURE__ */ jsxs("div", { className: "mt-3 space-y-2", children: [
28
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground font-medium", children: t("messages.attachedObjects", "Attached objects") }),
29
+ (threadItem.objects ?? []).map((obj) => {
30
+ const componentKey = `${obj.entityModule}:${obj.entityType}`;
31
+ const PreviewComponent = messageUiRegistry.objectPreviewComponents[componentKey] ?? messageUiRegistry.objectPreviewComponents["messages:default"];
32
+ if (!PreviewComponent) return null;
33
+ return /* @__PURE__ */ jsx("div", { className: "scale-95 origin-left", children: /* @__PURE__ */ jsx(
34
+ PreviewComponent,
35
+ {
36
+ entityId: obj.entityId,
37
+ entityModule: obj.entityModule,
38
+ entityType: obj.entityType,
39
+ snapshot: obj.snapshot ?? void 0,
40
+ previewData: obj.preview ?? void 0,
41
+ actionRequired: obj.actionRequired,
42
+ actionType: obj.actionType ?? void 0,
43
+ actionLabel: obj.actionLabel ?? void 0
44
+ }
45
+ ) }, obj.id);
46
+ })
47
+ ] })
48
+ ] }, threadItem.id)) })
49
+ ] });
50
+ }
51
+ export {
52
+ MessageDetailThreadSection
53
+ };
54
+ //# sourceMappingURL=thread-panel.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/modules/messages/components/message-detail/panels/thread-panel.tsx"],
4
+ "sourcesContent": ["\"use client\"\n\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { MarkdownContent } from '@open-mercato/ui/backend/markdown/MarkdownContent'\nimport { getMessageUiComponentRegistry } from '../../utils/typeUiRegistry'\nimport type { MessageDetail, MessageDetailObject } from '../types'\nimport { formatDateTime } from '../utils'\n\nexport function MessageDetailThreadSection({ detail }: { detail: MessageDetail }) {\n const t = useT()\n const messageUiRegistry = getMessageUiComponentRegistry()\n\n if ((detail.thread ?? []).length === 0) return null\n\n return (\n <section className=\"space-y-3 border-l pl-4 py-2\">\n <h2 className=\"text-base font-semibold\">{t('messages.detail.thread', 'Thread')}</h2>\n <div className=\"space-y-3\">\n {(detail.thread ?? []).map((threadItem) => (\n <article key={threadItem.id} className=\"rounded border p-3\">\n <p className=\"text-xs text-muted-foreground\">\n {(threadItem.senderName || threadItem.senderEmail || threadItem.senderUserId)} \u2022 {formatDateTime(threadItem.sentAt)}\n </p>\n <div className=\"mt-2 max-h-[60vh] overflow-y-auto pr-1\">\n <MarkdownContent\n body={threadItem.body}\n format={threadItem.bodyFormat ?? 'text'}\n className=\"text-sm whitespace-pre-wrap [&>*]:mb-2 [&>*:last-child]:mb-0 [&_ul]:ml-4 [&_ul]:list-disc [&_ol]:ml-4 [&_ol]:list-decimal [&_code]:rounded [&_code]:bg-muted [&_code]:px-1 [&_code]:py-0.5 [&_pre]:rounded-md [&_pre]:bg-muted [&_pre]:p-3 [&_pre]:text-xs\"\n />\n </div>\n\n {(threadItem.objects ?? []).length > 0 && (\n <div className=\"mt-3 space-y-2\">\n <p className=\"text-xs text-muted-foreground font-medium\">\n {t('messages.attachedObjects', 'Attached objects')}\n </p>\n {(threadItem.objects ?? []).map((obj: MessageDetailObject) => {\n const componentKey = `${obj.entityModule}:${obj.entityType}`\n const PreviewComponent = messageUiRegistry.objectPreviewComponents[componentKey]\n ?? messageUiRegistry.objectPreviewComponents['messages:default']\n if (!PreviewComponent) return null\n\n return (\n <div key={obj.id} className=\"scale-95 origin-left\">\n <PreviewComponent\n entityId={obj.entityId}\n entityModule={obj.entityModule}\n entityType={obj.entityType}\n snapshot={obj.snapshot ?? undefined}\n previewData={obj.preview ?? undefined}\n actionRequired={obj.actionRequired}\n actionType={obj.actionType ?? undefined}\n actionLabel={obj.actionLabel ?? undefined}\n />\n </div>\n )\n })}\n </div>\n )}\n </article>\n ))}\n </div>\n </section>\n )\n}\n"],
5
+ "mappings": ";AAgBM,cAIM,YAJN;AAdN,SAAS,YAAY;AACrB,SAAS,uBAAuB;AAChC,SAAS,qCAAqC;AAE9C,SAAS,sBAAsB;AAExB,SAAS,2BAA2B,EAAE,OAAO,GAA8B;AAChF,QAAM,IAAI,KAAK;AACf,QAAM,oBAAoB,8BAA8B;AAExD,OAAK,OAAO,UAAU,CAAC,GAAG,WAAW,EAAG,QAAO;AAE/C,SACE,qBAAC,aAAQ,WAAU,gCACjB;AAAA,wBAAC,QAAG,WAAU,2BAA2B,YAAE,0BAA0B,QAAQ,GAAE;AAAA,IAC/E,oBAAC,SAAI,WAAU,aACX,kBAAO,UAAU,CAAC,GAAG,IAAI,CAAC,eAC1B,qBAAC,aAA4B,WAAU,sBACrC;AAAA,2BAAC,OAAE,WAAU,iCACT;AAAA,mBAAW,cAAc,WAAW,eAAe,WAAW;AAAA,QAAc;AAAA,QAAI,eAAe,WAAW,MAAM;AAAA,SACpH;AAAA,MACA,oBAAC,SAAI,WAAU,0CACb;AAAA,QAAC;AAAA;AAAA,UACC,MAAM,WAAW;AAAA,UACjB,QAAQ,WAAW,cAAc;AAAA,UACjC,WAAU;AAAA;AAAA,MACZ,GACF;AAAA,OAEE,WAAW,WAAW,CAAC,GAAG,SAAS,KACnC,qBAAC,SAAI,WAAU,kBACb;AAAA,4BAAC,OAAE,WAAU,6CACV,YAAE,4BAA4B,kBAAkB,GACnD;AAAA,SACE,WAAW,WAAW,CAAC,GAAG,IAAI,CAAC,QAA6B;AAC5D,gBAAM,eAAe,GAAG,IAAI,YAAY,IAAI,IAAI,UAAU;AAC1D,gBAAM,mBAAmB,kBAAkB,wBAAwB,YAAY,KAC1E,kBAAkB,wBAAwB,kBAAkB;AACjE,cAAI,CAAC,iBAAkB,QAAO;AAE9B,iBACE,oBAAC,SAAiB,WAAU,wBAC1B;AAAA,YAAC;AAAA;AAAA,cACC,UAAU,IAAI;AAAA,cACd,cAAc,IAAI;AAAA,cAClB,YAAY,IAAI;AAAA,cAChB,UAAU,IAAI,YAAY;AAAA,cAC1B,aAAa,IAAI,WAAW;AAAA,cAC5B,gBAAgB,IAAI;AAAA,cACpB,YAAY,IAAI,cAAc;AAAA,cAC9B,aAAa,IAAI,eAAe;AAAA;AAAA,UAClC,KAVQ,IAAI,EAWd;AAAA,QAEJ,CAAC;AAAA,SACH;AAAA,SAtCU,WAAW,EAwCzB,CACD,GACH;AAAA,KACF;AAEJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,54 @@
1
+ function toErrorMessage(payload) {
2
+ if (!payload) return null;
3
+ if (typeof payload === "string") return payload;
4
+ if (Array.isArray(payload)) {
5
+ for (const item of payload) {
6
+ const nested = toErrorMessage(item);
7
+ if (nested) return nested;
8
+ }
9
+ return null;
10
+ }
11
+ if (typeof payload === "object") {
12
+ const record = payload;
13
+ return toErrorMessage(record.error) ?? toErrorMessage(record.message) ?? toErrorMessage(record.detail) ?? toErrorMessage(record.details) ?? null;
14
+ }
15
+ return null;
16
+ }
17
+ function formatDateTime(value) {
18
+ if (!value) return "\u2014";
19
+ const date = new Date(value);
20
+ if (Number.isNaN(date.getTime())) return "\u2014";
21
+ return date.toLocaleString();
22
+ }
23
+ function parseObjectActionId(value) {
24
+ if (!value.startsWith("object:")) return null;
25
+ const [, objectId, ...rest] = value.split(":");
26
+ if (!objectId || rest.length === 0) return null;
27
+ return { objectId, actionId: rest.join(":") };
28
+ }
29
+ function resolveObjectActionVariant(variant) {
30
+ if (variant === "default" || variant === "secondary" || variant === "destructive" || variant === "outline") {
31
+ return variant;
32
+ }
33
+ return void 0;
34
+ }
35
+ function toObjectAction(actionId, action) {
36
+ return {
37
+ id: actionId,
38
+ labelKey: action.labelKey ?? action.label ?? actionId,
39
+ variant: resolveObjectActionVariant(action.variant),
40
+ icon: action.icon,
41
+ commandId: action.commandId,
42
+ href: action.href,
43
+ isTerminal: action.isTerminal,
44
+ confirmRequired: action.confirmRequired,
45
+ confirmMessage: action.confirmMessage
46
+ };
47
+ }
48
+ export {
49
+ formatDateTime,
50
+ parseObjectActionId,
51
+ toErrorMessage,
52
+ toObjectAction
53
+ };
54
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/modules/messages/components/message-detail/utils.ts"],
4
+ "sourcesContent": ["import type { MessageObjectAction } from '@open-mercato/shared/modules/messages/types'\nimport type { MessageAction } from './types'\n\nexport function toErrorMessage(payload: unknown): string | null {\n if (!payload) return null\n if (typeof payload === 'string') return payload\n if (Array.isArray(payload)) {\n for (const item of payload) {\n const nested = toErrorMessage(item)\n if (nested) return nested\n }\n return null\n }\n if (typeof payload === 'object') {\n const record = payload as Record<string, unknown>\n return (\n toErrorMessage(record.error)\n ?? toErrorMessage(record.message)\n ?? toErrorMessage(record.detail)\n ?? toErrorMessage(record.details)\n ?? null\n )\n }\n return null\n}\n\nexport function formatDateTime(value: string | null | undefined): string {\n if (!value) return '\u2014'\n const date = new Date(value)\n if (Number.isNaN(date.getTime())) return '\u2014'\n return date.toLocaleString()\n}\n\nexport function parseObjectActionId(value: string): { objectId: string; actionId: string } | null {\n if (!value.startsWith('object:')) return null\n const [, objectId, ...rest] = value.split(':')\n if (!objectId || rest.length === 0) return null\n return { objectId, actionId: rest.join(':') }\n}\n\nfunction resolveObjectActionVariant(\n variant: MessageAction['variant'],\n): MessageObjectAction['variant'] | undefined {\n if (variant === 'default' || variant === 'secondary' || variant === 'destructive' || variant === 'outline') {\n return variant\n }\n return undefined\n}\n\nexport function toObjectAction(actionId: string, action: MessageAction): MessageObjectAction {\n return {\n id: actionId,\n labelKey: action.labelKey ?? action.label ?? actionId,\n variant: resolveObjectActionVariant(action.variant),\n icon: action.icon,\n commandId: action.commandId,\n href: action.href,\n isTerminal: action.isTerminal,\n confirmRequired: action.confirmRequired,\n confirmMessage: action.confirmMessage,\n }\n}\n"],
5
+ "mappings": "AAGO,SAAS,eAAe,SAAiC;AAC9D,MAAI,CAAC,QAAS,QAAO;AACrB,MAAI,OAAO,YAAY,SAAU,QAAO;AACxC,MAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,eAAW,QAAQ,SAAS;AAC1B,YAAM,SAAS,eAAe,IAAI;AAClC,UAAI,OAAQ,QAAO;AAAA,IACrB;AACA,WAAO;AAAA,EACT;AACA,MAAI,OAAO,YAAY,UAAU;AAC/B,UAAM,SAAS;AACf,WACE,eAAe,OAAO,KAAK,KACxB,eAAe,OAAO,OAAO,KAC7B,eAAe,OAAO,MAAM,KAC5B,eAAe,OAAO,OAAO,KAC7B;AAAA,EAEP;AACA,SAAO;AACT;AAEO,SAAS,eAAe,OAA0C;AACvE,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,OAAO,IAAI,KAAK,KAAK;AAC3B,MAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,EAAG,QAAO;AACzC,SAAO,KAAK,eAAe;AAC7B;AAEO,SAAS,oBAAoB,OAA8D;AAChG,MAAI,CAAC,MAAM,WAAW,SAAS,EAAG,QAAO;AACzC,QAAM,CAAC,EAAE,UAAU,GAAG,IAAI,IAAI,MAAM,MAAM,GAAG;AAC7C,MAAI,CAAC,YAAY,KAAK,WAAW,EAAG,QAAO;AAC3C,SAAO,EAAE,UAAU,UAAU,KAAK,KAAK,GAAG,EAAE;AAC9C;AAEA,SAAS,2BACP,SAC4C;AAC5C,MAAI,YAAY,aAAa,YAAY,eAAe,YAAY,iBAAiB,YAAY,WAAW;AAC1G,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,eAAe,UAAkB,QAA4C;AAC3F,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,UAAU,OAAO,YAAY,OAAO,SAAS;AAAA,IAC7C,SAAS,2BAA2B,OAAO,OAAO;AAAA,IAClD,MAAM,OAAO;AAAA,IACb,WAAW,OAAO;AAAA,IAClB,MAAM,OAAO;AAAA,IACb,YAAY,OAAO;AAAA,IACnB,iBAAiB,OAAO;AAAA,IACxB,gBAAgB,OAAO;AAAA,EACzB;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,52 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { ArrowDown, ArrowUp, Circle, TriangleAlert } from "lucide-react";
5
+ import { useT } from "@open-mercato/shared/lib/i18n/context";
6
+ import { cn } from "@open-mercato/shared/lib/utils";
7
+ import { SimpleTooltip, TooltipProvider } from "@open-mercato/ui/primitives/tooltip";
8
+ import {
9
+ getPriorityBadgeClassName,
10
+ getPriorityLabelKey,
11
+ getPriorityFallbackLabel
12
+ } from "../../lib/priorityUtils.js";
13
+ function PriorityBadge({ priority, className }) {
14
+ const t = useT();
15
+ const priorityTitle = t("messages.priority", "Priority");
16
+ const priorityLabel = React.useMemo(() => {
17
+ return t(getPriorityLabelKey(priority), getPriorityFallbackLabel(priority));
18
+ }, [priority, t]);
19
+ const tooltipText = `${priorityTitle}: ${priorityLabel}`;
20
+ const Icon = React.useMemo(() => {
21
+ switch (priority) {
22
+ case "low":
23
+ return ArrowDown;
24
+ case "high":
25
+ return ArrowUp;
26
+ case "urgent":
27
+ return TriangleAlert;
28
+ case "normal":
29
+ default:
30
+ return Circle;
31
+ }
32
+ }, [priority]);
33
+ return /* @__PURE__ */ jsx(TooltipProvider, { delayDuration: 250, children: /* @__PURE__ */ jsx(SimpleTooltip, { content: tooltipText, children: /* @__PURE__ */ jsx(
34
+ "span",
35
+ {
36
+ className: cn(
37
+ "inline-flex h-6 w-6 items-center justify-center rounded-md border",
38
+ getPriorityBadgeClassName(priority),
39
+ className
40
+ ),
41
+ "aria-label": tooltipText,
42
+ title: tooltipText,
43
+ children: /* @__PURE__ */ jsx(Icon, { className: "h-3.5 w-3.5", "aria-hidden": "true" })
44
+ }
45
+ ) }) });
46
+ }
47
+ var PriorityBadge_default = PriorityBadge;
48
+ export {
49
+ PriorityBadge,
50
+ PriorityBadge_default as default
51
+ };
52
+ //# sourceMappingURL=PriorityBadge.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/modules/messages/components/utils/PriorityBadge.tsx"],
4
+ "sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport { ArrowDown, ArrowUp, Circle, TriangleAlert } from 'lucide-react'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { cn } from '@open-mercato/shared/lib/utils'\nimport { SimpleTooltip, TooltipProvider } from '@open-mercato/ui/primitives/tooltip'\nimport type { MessagePriority } from '../../lib/priorityUtils'\nimport {\n getPriorityBadgeClassName,\n getPriorityLabelKey,\n getPriorityFallbackLabel,\n} from '../../lib/priorityUtils'\n\nexport type PriorityBadgeProps = {\n priority: MessagePriority\n className?: string\n}\n\nexport function PriorityBadge({ priority, className }: PriorityBadgeProps) {\n const t = useT()\n const priorityTitle = t('messages.priority', 'Priority')\n\n const priorityLabel = React.useMemo(() => {\n return t(getPriorityLabelKey(priority), getPriorityFallbackLabel(priority))\n }, [priority, t])\n\n const tooltipText = `${priorityTitle}: ${priorityLabel}`\n\n const Icon = React.useMemo(() => {\n switch (priority) {\n case 'low':\n return ArrowDown\n case 'high':\n return ArrowUp\n case 'urgent':\n return TriangleAlert\n case 'normal':\n default:\n return Circle\n }\n }, [priority])\n\n return (\n <TooltipProvider delayDuration={250}>\n <SimpleTooltip content={tooltipText}>\n <span\n className={cn(\n 'inline-flex h-6 w-6 items-center justify-center rounded-md border',\n getPriorityBadgeClassName(priority),\n className,\n )}\n aria-label={tooltipText}\n title={tooltipText}\n >\n <Icon className=\"h-3.5 w-3.5\" aria-hidden=\"true\" />\n </span>\n </SimpleTooltip>\n </TooltipProvider>\n )\n}\n\nexport default PriorityBadge\n"],
5
+ "mappings": ";AAuDU;AArDV,YAAY,WAAW;AACvB,SAAS,WAAW,SAAS,QAAQ,qBAAqB;AAC1D,SAAS,YAAY;AACrB,SAAS,UAAU;AACnB,SAAS,eAAe,uBAAuB;AAE/C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAOA,SAAS,cAAc,EAAE,UAAU,UAAU,GAAuB;AACzE,QAAM,IAAI,KAAK;AACf,QAAM,gBAAgB,EAAE,qBAAqB,UAAU;AAEvD,QAAM,gBAAgB,MAAM,QAAQ,MAAM;AACxC,WAAO,EAAE,oBAAoB,QAAQ,GAAG,yBAAyB,QAAQ,CAAC;AAAA,EAC5E,GAAG,CAAC,UAAU,CAAC,CAAC;AAEhB,QAAM,cAAc,GAAG,aAAa,KAAK,aAAa;AAEtD,QAAM,OAAO,MAAM,QAAQ,MAAM;AAC/B,YAAQ,UAAU;AAAA,MAChB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AAAA,MACL;AACE,eAAO;AAAA,IACX;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAEb,SACE,oBAAC,mBAAgB,eAAe,KAC9B,8BAAC,iBAAc,SAAS,aACtB;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,0BAA0B,QAAQ;AAAA,QAClC;AAAA,MACF;AAAA,MACA,cAAY;AAAA,MACZ,OAAO;AAAA,MAEP,8BAAC,QAAK,WAAU,eAAc,eAAY,QAAO;AAAA;AAAA,EACnD,GACF,GACF;AAEJ;AAEA,IAAO,wBAAQ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,77 @@
1
+ "use client";
2
+ import { MessageRecordObjectDetail } from "../defaults/MessageRecordObjectDetail.js";
3
+ import { MessageRecordObjectPreview } from "./../defaults/MessageRecordObjectPreview.js";
4
+ const listItemComponents = /* @__PURE__ */ new Map();
5
+ const contentComponents = /* @__PURE__ */ new Map();
6
+ const actionsComponents = /* @__PURE__ */ new Map();
7
+ const objectDetailComponents = /* @__PURE__ */ new Map();
8
+ const objectPreviewComponents = /* @__PURE__ */ new Map();
9
+ function getObjectDetailComponentKey(entityModule, entityType) {
10
+ return `${entityModule}:${entityType}`;
11
+ }
12
+ function configureMessageUiComponentRegistry(registry) {
13
+ listItemComponents.clear();
14
+ contentComponents.clear();
15
+ actionsComponents.clear();
16
+ objectDetailComponents.clear();
17
+ objectPreviewComponents.clear();
18
+ for (const [key, component] of Object.entries(registry.listItemComponents ?? {})) {
19
+ listItemComponents.set(key, component);
20
+ }
21
+ for (const [key, component] of Object.entries(registry.contentComponents ?? {})) {
22
+ contentComponents.set(key, component);
23
+ }
24
+ for (const [key, component] of Object.entries(registry.actionsComponents ?? {})) {
25
+ actionsComponents.set(key, component);
26
+ }
27
+ for (const [key, component] of Object.entries(registry.objectDetailComponents ?? {})) {
28
+ objectDetailComponents.set(key, component);
29
+ }
30
+ for (const [key, component] of Object.entries(registry.objectPreviewComponents ?? {})) {
31
+ objectPreviewComponents.set(key, component);
32
+ }
33
+ }
34
+ function getMessageUiComponentRegistry() {
35
+ return {
36
+ listItemComponents: Object.fromEntries(listItemComponents.entries()),
37
+ contentComponents: Object.fromEntries(contentComponents.entries()),
38
+ actionsComponents: Object.fromEntries(actionsComponents.entries()),
39
+ objectDetailComponents: Object.fromEntries(objectDetailComponents.entries()),
40
+ objectPreviewComponents: Object.fromEntries(objectPreviewComponents.entries())
41
+ };
42
+ }
43
+ function getMessageUiComponentForListItem(key) {
44
+ if (!key) return null;
45
+ return listItemComponents.get(key) ?? null;
46
+ }
47
+ function getMessageUiComponentForContent(key) {
48
+ if (!key) return null;
49
+ return contentComponents.get(key) ?? null;
50
+ }
51
+ function getMessageUiComponentForActions(key) {
52
+ if (!key) return null;
53
+ return actionsComponents.get(key) ?? null;
54
+ }
55
+ function getMessageUiComponentForObjectDetail(entityModule, entityType) {
56
+ if (!entityModule || !entityType) return MessageRecordObjectDetail;
57
+ const key = getObjectDetailComponentKey(entityModule, entityType);
58
+ return objectDetailComponents.get(key) ?? MessageRecordObjectDetail;
59
+ }
60
+ function getMessageUiComponentForObjectPreview(entityModule, entityType) {
61
+ if (!entityModule || !entityType) {
62
+ return objectPreviewComponents.get("messages:default") ?? MessageRecordObjectPreview;
63
+ }
64
+ const key = getObjectDetailComponentKey(entityModule, entityType);
65
+ const component = objectPreviewComponents.get(key);
66
+ return component ?? objectPreviewComponents.get("messages:default") ?? MessageRecordObjectPreview;
67
+ }
68
+ export {
69
+ configureMessageUiComponentRegistry,
70
+ getMessageUiComponentForActions,
71
+ getMessageUiComponentForContent,
72
+ getMessageUiComponentForListItem,
73
+ getMessageUiComponentForObjectDetail,
74
+ getMessageUiComponentForObjectPreview,
75
+ getMessageUiComponentRegistry
76
+ };
77
+ //# sourceMappingURL=typeUiRegistry.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/modules/messages/components/utils/typeUiRegistry.ts"],
4
+ "sourcesContent": ["\"use client\"\n\nimport type { ComponentType } from 'react'\nimport type {\n MessageActionsProps,\n MessageContentProps,\n MessageListItemProps,\n ObjectPreviewProps,\n ObjectDetailProps,\n} from '@open-mercato/shared/modules/messages/types'\nimport { MessageRecordObjectDetail } from '../defaults/MessageRecordObjectDetail'\nimport { MessageRecordObjectPreview } from './../defaults/MessageRecordObjectPreview'\n\nexport type MessageUiComponentRegistry = {\n listItemComponents: Record<string, ComponentType<MessageListItemProps>>\n contentComponents: Record<string, ComponentType<MessageContentProps>>\n actionsComponents: Record<string, ComponentType<MessageActionsProps>>\n objectDetailComponents: Record<string, ComponentType<ObjectDetailProps>>\n objectPreviewComponents: Record<string, ComponentType<ObjectPreviewProps>>\n}\n\nconst listItemComponents = new Map<string, ComponentType<MessageListItemProps>>()\nconst contentComponents = new Map<string, ComponentType<MessageContentProps>>()\nconst actionsComponents = new Map<string, ComponentType<MessageActionsProps>>()\nconst objectDetailComponents = new Map<string, ComponentType<ObjectDetailProps>>()\nconst objectPreviewComponents = new Map<string, ComponentType<ObjectPreviewProps>>()\n\nfunction getObjectDetailComponentKey(entityModule: string, entityType: string): string {\n return `${entityModule}:${entityType}`\n}\n\nexport function configureMessageUiComponentRegistry(registry: MessageUiComponentRegistry): void {\n listItemComponents.clear()\n contentComponents.clear()\n actionsComponents.clear()\n objectDetailComponents.clear()\n objectPreviewComponents.clear()\n\n for (const [key, component] of Object.entries(registry.listItemComponents ?? {})) {\n listItemComponents.set(key, component)\n }\n for (const [key, component] of Object.entries(registry.contentComponents ?? {})) {\n contentComponents.set(key, component)\n }\n for (const [key, component] of Object.entries(registry.actionsComponents ?? {})) {\n actionsComponents.set(key, component)\n }\n for (const [key, component] of Object.entries(registry.objectDetailComponents ?? {})) {\n objectDetailComponents.set(key, component)\n }\n for (const [key, component] of Object.entries(registry.objectPreviewComponents ?? {})) {\n objectPreviewComponents.set(key, component)\n }\n}\n\nexport function getMessageUiComponentRegistry(): MessageUiComponentRegistry {\n return {\n listItemComponents: Object.fromEntries(listItemComponents.entries()),\n contentComponents: Object.fromEntries(contentComponents.entries()),\n actionsComponents: Object.fromEntries(actionsComponents.entries()),\n objectDetailComponents: Object.fromEntries(objectDetailComponents.entries()),\n objectPreviewComponents: Object.fromEntries(objectPreviewComponents.entries()),\n }\n}\n\nexport function getMessageUiComponentForListItem(\n key: string | null | undefined,\n): ComponentType<MessageListItemProps> | null {\n if (!key) return null\n return listItemComponents.get(key) ?? null\n}\n\nexport function getMessageUiComponentForContent(\n key: string | null | undefined,\n): ComponentType<MessageContentProps> | null {\n if (!key) return null\n return contentComponents.get(key) ?? null\n}\n\nexport function getMessageUiComponentForActions(\n key: string | null | undefined,\n): ComponentType<MessageActionsProps> | null {\n if (!key) return null\n return actionsComponents.get(key) ?? null\n}\n\nexport function getMessageUiComponentForObjectDetail(\n entityModule: string | null | undefined,\n entityType: string | null | undefined,\n): ComponentType<ObjectDetailProps> | null {\n if (!entityModule || !entityType) return MessageRecordObjectDetail\n const key = getObjectDetailComponentKey(entityModule, entityType)\n return objectDetailComponents.get(key) ?? MessageRecordObjectDetail\n}\n\nexport function getMessageUiComponentForObjectPreview(\n entityModule: string | null | undefined,\n entityType: string | null | undefined,\n): ComponentType<ObjectPreviewProps> | null {\n if (!entityModule || !entityType) {\n return objectPreviewComponents.get('messages:default') ?? MessageRecordObjectPreview\n }\n const key = getObjectDetailComponentKey(entityModule, entityType)\n const component = objectPreviewComponents.get(key)\n return component ?? objectPreviewComponents.get('messages:default') ?? MessageRecordObjectPreview\n}\n"],
5
+ "mappings": ";AAUA,SAAS,iCAAiC;AAC1C,SAAS,kCAAkC;AAU3C,MAAM,qBAAqB,oBAAI,IAAiD;AAChF,MAAM,oBAAoB,oBAAI,IAAgD;AAC9E,MAAM,oBAAoB,oBAAI,IAAgD;AAC9E,MAAM,yBAAyB,oBAAI,IAA8C;AACjF,MAAM,0BAA0B,oBAAI,IAA+C;AAEnF,SAAS,4BAA4B,cAAsB,YAA4B;AACrF,SAAO,GAAG,YAAY,IAAI,UAAU;AACtC;AAEO,SAAS,oCAAoC,UAA4C;AAC9F,qBAAmB,MAAM;AACzB,oBAAkB,MAAM;AACxB,oBAAkB,MAAM;AACxB,yBAAuB,MAAM;AAC7B,0BAAwB,MAAM;AAE9B,aAAW,CAAC,KAAK,SAAS,KAAK,OAAO,QAAQ,SAAS,sBAAsB,CAAC,CAAC,GAAG;AAChF,uBAAmB,IAAI,KAAK,SAAS;AAAA,EACvC;AACA,aAAW,CAAC,KAAK,SAAS,KAAK,OAAO,QAAQ,SAAS,qBAAqB,CAAC,CAAC,GAAG;AAC/E,sBAAkB,IAAI,KAAK,SAAS;AAAA,EACtC;AACA,aAAW,CAAC,KAAK,SAAS,KAAK,OAAO,QAAQ,SAAS,qBAAqB,CAAC,CAAC,GAAG;AAC/E,sBAAkB,IAAI,KAAK,SAAS;AAAA,EACtC;AACA,aAAW,CAAC,KAAK,SAAS,KAAK,OAAO,QAAQ,SAAS,0BAA0B,CAAC,CAAC,GAAG;AACpF,2BAAuB,IAAI,KAAK,SAAS;AAAA,EAC3C;AACA,aAAW,CAAC,KAAK,SAAS,KAAK,OAAO,QAAQ,SAAS,2BAA2B,CAAC,CAAC,GAAG;AACrF,4BAAwB,IAAI,KAAK,SAAS;AAAA,EAC5C;AACF;AAEO,SAAS,gCAA4D;AAC1E,SAAO;AAAA,IACL,oBAAoB,OAAO,YAAY,mBAAmB,QAAQ,CAAC;AAAA,IACnE,mBAAmB,OAAO,YAAY,kBAAkB,QAAQ,CAAC;AAAA,IACjE,mBAAmB,OAAO,YAAY,kBAAkB,QAAQ,CAAC;AAAA,IACjE,wBAAwB,OAAO,YAAY,uBAAuB,QAAQ,CAAC;AAAA,IAC3E,yBAAyB,OAAO,YAAY,wBAAwB,QAAQ,CAAC;AAAA,EAC/E;AACF;AAEO,SAAS,iCACd,KAC4C;AAC5C,MAAI,CAAC,IAAK,QAAO;AACjB,SAAO,mBAAmB,IAAI,GAAG,KAAK;AACxC;AAEO,SAAS,gCACd,KAC2C;AAC3C,MAAI,CAAC,IAAK,QAAO;AACjB,SAAO,kBAAkB,IAAI,GAAG,KAAK;AACvC;AAEO,SAAS,gCACd,KAC2C;AAC3C,MAAI,CAAC,IAAK,QAAO;AACjB,SAAO,kBAAkB,IAAI,GAAG,KAAK;AACvC;AAEO,SAAS,qCACd,cACA,YACyC;AACzC,MAAI,CAAC,gBAAgB,CAAC,WAAY,QAAO;AACzC,QAAM,MAAM,4BAA4B,cAAc,UAAU;AAChE,SAAO,uBAAuB,IAAI,GAAG,KAAK;AAC5C;AAEO,SAAS,sCACd,cACA,YAC0C;AAC1C,MAAI,CAAC,gBAAgB,CAAC,YAAY;AAChC,WAAO,wBAAwB,IAAI,kBAAkB,KAAK;AAAA,EAC5D;AACA,QAAM,MAAM,4BAA4B,cAAc,UAAU;AAChE,QAAM,YAAY,wBAAwB,IAAI,GAAG;AACjD,SAAO,aAAa,wBAAwB,IAAI,kBAAkB,KAAK;AACzE;",
6
+ "names": []
7
+ }