@messenger-box/tailwind-ui-inbox 10.0.3-alpha.100

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 (373) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/LICENSE +21 -0
  3. package/jest.config.js +9 -0
  4. package/lib/cdm-locales/en/translations.json +31 -0
  5. package/lib/cdm-locales/es/translations.json +31 -0
  6. package/lib/components/AIAgent/AIAgent.d.ts +21 -0
  7. package/lib/components/AIAgent/AIAgent.d.ts.map +1 -0
  8. package/lib/components/AIAgent/AIAgent.js +904 -0
  9. package/lib/components/AIAgent/AIAgent.js.map +1 -0
  10. package/lib/components/AIAgent/index.d.ts +2 -0
  11. package/lib/components/AIAgent/index.d.ts.map +1 -0
  12. package/lib/components/InboxMessage/CommonMessage.d.ts +8 -0
  13. package/lib/components/InboxMessage/CommonMessage.d.ts.map +1 -0
  14. package/lib/components/InboxMessage/CommonMessage.js +35 -0
  15. package/lib/components/InboxMessage/CommonMessage.js.map +1 -0
  16. package/lib/components/InboxMessage/ConversationItem.d.ts +14 -0
  17. package/lib/components/InboxMessage/ConversationItem.d.ts.map +1 -0
  18. package/lib/components/InboxMessage/ConversationItem.js +200 -0
  19. package/lib/components/InboxMessage/ConversationItem.js.map +1 -0
  20. package/lib/components/InboxMessage/InputComponent.d.ts +12 -0
  21. package/lib/components/InboxMessage/InputComponent.d.ts.map +1 -0
  22. package/lib/components/InboxMessage/InputComponent.js +359 -0
  23. package/lib/components/InboxMessage/InputComponent.js.map +1 -0
  24. package/lib/components/InboxMessage/LeftSidebar.d.ts +20 -0
  25. package/lib/components/InboxMessage/LeftSidebar.d.ts.map +1 -0
  26. package/lib/components/InboxMessage/LeftSidebar.js +102 -0
  27. package/lib/components/InboxMessage/LeftSidebar.js.map +1 -0
  28. package/lib/components/InboxMessage/MessageInput.d.ts +9 -0
  29. package/lib/components/InboxMessage/MessageInput.d.ts.map +1 -0
  30. package/lib/components/InboxMessage/MessageInput.js +154 -0
  31. package/lib/components/InboxMessage/MessageInput.js.map +1 -0
  32. package/lib/components/InboxMessage/MessageInputComponent.d.ts +9 -0
  33. package/lib/components/InboxMessage/MessageInputComponent.d.ts.map +1 -0
  34. package/lib/components/InboxMessage/Messages.d.ts +17 -0
  35. package/lib/components/InboxMessage/Messages.d.ts.map +1 -0
  36. package/lib/components/InboxMessage/Messages.js +99 -0
  37. package/lib/components/InboxMessage/Messages.js.map +1 -0
  38. package/lib/components/InboxMessage/MessagesBuilderUi.d.ts +17 -0
  39. package/lib/components/InboxMessage/MessagesBuilderUi.d.ts.map +1 -0
  40. package/lib/components/InboxMessage/Popover.d.ts +3 -0
  41. package/lib/components/InboxMessage/Popover.d.ts.map +1 -0
  42. package/lib/components/InboxMessage/Popover.js +31 -0
  43. package/lib/components/InboxMessage/Popover.js.map +1 -0
  44. package/lib/components/InboxMessage/RightSidebar.d.ts +9 -0
  45. package/lib/components/InboxMessage/RightSidebar.d.ts.map +1 -0
  46. package/lib/components/InboxMessage/RightSidebar.js +9 -0
  47. package/lib/components/InboxMessage/RightSidebar.js.map +1 -0
  48. package/lib/components/InboxMessage/RightSidebarAi.d.ts +23 -0
  49. package/lib/components/InboxMessage/RightSidebarAi.d.ts.map +1 -0
  50. package/lib/components/InboxMessage/RightSidebarAi.js +9 -0
  51. package/lib/components/InboxMessage/RightSidebarAi.js.map +1 -0
  52. package/lib/components/InboxMessage/ServiceConversationItem.d.ts +12 -0
  53. package/lib/components/InboxMessage/ServiceConversationItem.d.ts.map +1 -0
  54. package/lib/components/InboxMessage/ServiceConversationItem.js +185 -0
  55. package/lib/components/InboxMessage/ServiceConversationItem.js.map +1 -0
  56. package/lib/components/InboxMessage/ServiceInboxItem.d.ts +12 -0
  57. package/lib/components/InboxMessage/ServiceInboxItem.d.ts.map +1 -0
  58. package/lib/components/InboxMessage/ServiceInboxItem.js +182 -0
  59. package/lib/components/InboxMessage/ServiceInboxItem.js.map +1 -0
  60. package/lib/components/InboxMessage/SubscriptionHandler.d.ts +19 -0
  61. package/lib/components/InboxMessage/SubscriptionHandler.d.ts.map +1 -0
  62. package/lib/components/InboxMessage/SubscriptionHandler.js +41 -0
  63. package/lib/components/InboxMessage/SubscriptionHandler.js.map +1 -0
  64. package/lib/components/InboxMessage/UploadImageButton.d.ts +7 -0
  65. package/lib/components/InboxMessage/UploadImageButton.d.ts.map +1 -0
  66. package/lib/components/InboxMessage/UploadImageButton.js +34 -0
  67. package/lib/components/InboxMessage/UploadImageButton.js.map +1 -0
  68. package/lib/components/InboxMessage/UserModalContent.d.ts +3 -0
  69. package/lib/components/InboxMessage/UserModalContent.d.ts.map +1 -0
  70. package/lib/components/InboxMessage/UserModalContent.js +60 -0
  71. package/lib/components/InboxMessage/UserModalContent.js.map +1 -0
  72. package/lib/components/InboxMessage/index.d.ts +17 -0
  73. package/lib/components/InboxMessage/index.d.ts.map +1 -0
  74. package/lib/components/InboxMessage/message-widgets/CommonMessage.d.ts +11 -0
  75. package/lib/components/InboxMessage/message-widgets/CommonMessage.d.ts.map +1 -0
  76. package/lib/components/InboxMessage/message-widgets/CommonMessage.js +44 -0
  77. package/lib/components/InboxMessage/message-widgets/CommonMessage.js.map +1 -0
  78. package/lib/components/InboxMessage/message-widgets/ErrorFixCard.d.ts +11 -0
  79. package/lib/components/InboxMessage/message-widgets/ErrorFixCard.d.ts.map +1 -0
  80. package/lib/components/InboxMessage/message-widgets/ErrorFixCard.js +194 -0
  81. package/lib/components/InboxMessage/message-widgets/ErrorFixCard.js.map +1 -0
  82. package/lib/components/InboxMessage/message-widgets/MessageCard.d.ts +8 -0
  83. package/lib/components/InboxMessage/message-widgets/MessageCard.d.ts.map +1 -0
  84. package/lib/components/InboxMessage/message-widgets/MessageSliceRenderer.d.ts +12 -0
  85. package/lib/components/InboxMessage/message-widgets/MessageSliceRenderer.d.ts.map +1 -0
  86. package/lib/components/InboxMessage/message-widgets/MessageSliceRenderer.js +37 -0
  87. package/lib/components/InboxMessage/message-widgets/MessageSliceRenderer.js.map +1 -0
  88. package/lib/components/InboxMessage/message-widgets/ModernMessageGroup.d.ts +18 -0
  89. package/lib/components/InboxMessage/message-widgets/ModernMessageGroup.d.ts.map +1 -0
  90. package/lib/components/InboxMessage/message-widgets/ModernMessageGroup.js +1082 -0
  91. package/lib/components/InboxMessage/message-widgets/ModernMessageGroup.js.map +1 -0
  92. package/lib/components/InboxMessage/message-widgets/PlainMessage.d.ts +8 -0
  93. package/lib/components/InboxMessage/message-widgets/PlainMessage.d.ts.map +1 -0
  94. package/lib/components/InboxMessage/message-widgets/PlainMessage.js +14 -0
  95. package/lib/components/InboxMessage/message-widgets/PlainMessage.js.map +1 -0
  96. package/lib/components/InboxMessage/message-widgets/PropertyMessageWidget.d.ts +9 -0
  97. package/lib/components/InboxMessage/message-widgets/PropertyMessageWidget.d.ts.map +1 -0
  98. package/lib/components/InboxMessage/message-widgets/SlackLikeMessageGroup.d.ts +14 -0
  99. package/lib/components/InboxMessage/message-widgets/SlackLikeMessageGroup.d.ts.map +1 -0
  100. package/lib/components/InboxMessage/message-widgets/SlackLikeMessageGroup.js +333 -0
  101. package/lib/components/InboxMessage/message-widgets/SlackLikeMessageGroup.js.map +1 -0
  102. package/lib/components/InboxMessage/message-widgets/index.d.ts +4 -0
  103. package/lib/components/InboxMessage/message-widgets/index.d.ts.map +1 -0
  104. package/lib/components/ModelConfigPanel.d.ts +37 -0
  105. package/lib/components/ModelConfigPanel.d.ts.map +1 -0
  106. package/lib/components/ModelConfigPanel.js +317 -0
  107. package/lib/components/ModelConfigPanel.js.map +1 -0
  108. package/lib/components/filler-components/RightSiderBar.d.ts +24 -0
  109. package/lib/components/filler-components/RightSiderBar.d.ts.map +1 -0
  110. package/lib/components/filler-components/RightSiderBar.js +335 -0
  111. package/lib/components/filler-components/RightSiderBar.js.map +1 -0
  112. package/lib/components/inbox/FilesList.d.ts +20 -0
  113. package/lib/components/inbox/FilesList.d.ts.map +1 -0
  114. package/lib/components/inbox/FilesList.js +68 -0
  115. package/lib/components/inbox/FilesList.js.map +1 -0
  116. package/lib/components/inbox/MessageItem.d.ts +17 -0
  117. package/lib/components/inbox/MessageItem.d.ts.map +1 -0
  118. package/lib/components/inbox/MessageItem.js +50 -0
  119. package/lib/components/inbox/MessageItem.js.map +1 -0
  120. package/lib/components/inbox/ThreadItem.d.ts +11 -0
  121. package/lib/components/inbox/ThreadItem.d.ts.map +1 -0
  122. package/lib/components/inbox/ThreadItem.js +147 -0
  123. package/lib/components/inbox/ThreadItem.js.map +1 -0
  124. package/lib/components/inbox/index.d.ts +4 -0
  125. package/lib/components/inbox/index.d.ts.map +1 -0
  126. package/lib/components/index.d.ts +7 -0
  127. package/lib/components/index.d.ts.map +1 -0
  128. package/lib/components/live-code-editor/hybrid-live-editor.d.ts +20 -0
  129. package/lib/components/live-code-editor/hybrid-live-editor.d.ts.map +1 -0
  130. package/lib/components/live-code-editor/hybrid-live-editor.js +68 -0
  131. package/lib/components/live-code-editor/hybrid-live-editor.js.map +1 -0
  132. package/lib/components/live-code-editor/index.d.ts +4 -0
  133. package/lib/components/live-code-editor/index.d.ts.map +1 -0
  134. package/lib/components/live-code-editor/live-code-editor.d.ts +14 -0
  135. package/lib/components/live-code-editor/live-code-editor.d.ts.map +1 -0
  136. package/lib/components/live-code-editor/live-code-editor.js +207 -0
  137. package/lib/components/live-code-editor/live-code-editor.js.map +1 -0
  138. package/lib/components/slot-fill/chat-message-filler.d.ts +4 -0
  139. package/lib/components/slot-fill/chat-message-filler.d.ts.map +1 -0
  140. package/lib/components/slot-fill/chat-message-filler.js +5 -0
  141. package/lib/components/slot-fill/chat-message-filler.js.map +1 -0
  142. package/lib/components/slot-fill/chat-message-slot.d.ts +11 -0
  143. package/lib/components/slot-fill/chat-message-slot.d.ts.map +1 -0
  144. package/lib/components/slot-fill/chat-message-slot.js +6 -0
  145. package/lib/components/slot-fill/chat-message-slot.js.map +1 -0
  146. package/lib/components/slot-fill/index.d.ts +4 -0
  147. package/lib/components/slot-fill/index.d.ts.map +1 -0
  148. package/lib/components/slot-fill/right-sidebar-filler.d.ts +4 -0
  149. package/lib/components/slot-fill/right-sidebar-filler.d.ts.map +1 -0
  150. package/lib/components/slot-fill/right-sidebar-filler.js +13 -0
  151. package/lib/components/slot-fill/right-sidebar-filler.js.map +1 -0
  152. package/lib/components/ui/button.d.ts +9 -0
  153. package/lib/components/ui/button.d.ts.map +1 -0
  154. package/lib/compute.d.ts +8 -0
  155. package/lib/compute.d.ts.map +1 -0
  156. package/lib/compute.js +137 -0
  157. package/lib/compute.js.map +1 -0
  158. package/lib/config/env-config.d.ts +13 -0
  159. package/lib/config/env-config.d.ts.map +1 -0
  160. package/lib/config/env-config.js +34 -0
  161. package/lib/config/env-config.js.map +1 -0
  162. package/lib/config/index.d.ts +2 -0
  163. package/lib/config/index.d.ts.map +1 -0
  164. package/lib/constants/breakpoints.d.ts +8 -0
  165. package/lib/constants/breakpoints.d.ts.map +1 -0
  166. package/lib/constants/index.d.ts +3 -0
  167. package/lib/constants/index.d.ts.map +1 -0
  168. package/lib/container/AiInbox.d.ts +15 -0
  169. package/lib/container/AiInbox.d.ts.map +1 -0
  170. package/lib/container/AiInboxWithLoader.d.ts +36 -0
  171. package/lib/container/AiInboxWithLoader.d.ts.map +1 -0
  172. package/lib/container/AiLandingInput.d.ts +4 -0
  173. package/lib/container/AiLandingInput.d.ts.map +1 -0
  174. package/lib/container/AiLandingInput.js +101 -0
  175. package/lib/container/AiLandingInput.js.map +1 -0
  176. package/lib/container/Inbox.d.ts +15 -0
  177. package/lib/container/Inbox.d.ts.map +1 -0
  178. package/lib/container/Inbox.js +955 -0
  179. package/lib/container/Inbox.js.map +1 -0
  180. package/lib/container/InboxAiMessagesLoader.d.ts +15 -0
  181. package/lib/container/InboxAiMessagesLoader.d.ts.map +1 -0
  182. package/lib/container/InboxAiMessagesLoader.js +30 -0
  183. package/lib/container/InboxAiMessagesLoader.js.map +1 -0
  184. package/lib/container/InboxContainer.d.ts +12 -0
  185. package/lib/container/InboxContainer.d.ts.map +1 -0
  186. package/lib/container/InboxContainer.js +31 -0
  187. package/lib/container/InboxContainer.js.map +1 -0
  188. package/lib/container/InboxTemplate1.d.ts +15 -0
  189. package/lib/container/InboxTemplate1.d.ts.map +1 -0
  190. package/lib/container/InboxTemplate1WithLoader.d.ts +36 -0
  191. package/lib/container/InboxTemplate1WithLoader.d.ts.map +1 -0
  192. package/lib/container/InboxTemplate2.d.ts +15 -0
  193. package/lib/container/InboxTemplate2.d.ts.map +1 -0
  194. package/lib/container/InboxWithAiLoader.d.ts +15 -0
  195. package/lib/container/InboxWithAiLoader.d.ts.map +1 -0
  196. package/lib/container/InboxWithAiLoader.js +56 -0
  197. package/lib/container/InboxWithAiLoader.js.map +1 -0
  198. package/lib/container/InboxWithLoader.d.ts +36 -0
  199. package/lib/container/InboxWithLoader.d.ts.map +1 -0
  200. package/lib/container/InboxWithLoader.js +277 -0
  201. package/lib/container/InboxWithLoader.js.map +1 -0
  202. package/lib/container/ServiceInbox.d.ts +9 -0
  203. package/lib/container/ServiceInbox.d.ts.map +1 -0
  204. package/lib/container/ServiceInbox.js +144 -0
  205. package/lib/container/ServiceInbox.js.map +1 -0
  206. package/lib/container/ThreadMessages.d.ts +13 -0
  207. package/lib/container/ThreadMessages.d.ts.map +1 -0
  208. package/lib/container/ThreadMessages.js +314 -0
  209. package/lib/container/ThreadMessages.js.map +1 -0
  210. package/lib/container/ThreadMessagesInbox.d.ts +14 -0
  211. package/lib/container/ThreadMessagesInbox.d.ts.map +1 -0
  212. package/lib/container/ThreadMessagesInbox.js +341 -0
  213. package/lib/container/ThreadMessagesInbox.js.map +1 -0
  214. package/lib/container/Threads.d.ts +8 -0
  215. package/lib/container/Threads.d.ts.map +1 -0
  216. package/lib/container/Threads.js +231 -0
  217. package/lib/container/Threads.js.map +1 -0
  218. package/lib/container/ThreadsInbox.d.ts +21 -0
  219. package/lib/container/ThreadsInbox.d.ts.map +1 -0
  220. package/lib/container/ThreadsInbox.js +244 -0
  221. package/lib/container/ThreadsInbox.js.map +1 -0
  222. package/lib/container/apply-footer-styles.d.ts +2 -0
  223. package/lib/container/apply-footer-styles.d.ts.map +1 -0
  224. package/lib/container/apply-footer-styles.js +16 -0
  225. package/lib/container/apply-footer-styles.js.map +1 -0
  226. package/lib/container/index.d.ts +13 -0
  227. package/lib/container/index.d.ts.map +1 -0
  228. package/lib/enums/index.d.ts +2 -0
  229. package/lib/enums/index.d.ts.map +1 -0
  230. package/lib/enums/messenger-slot-fill-name-enum.d.ts +5 -0
  231. package/lib/enums/messenger-slot-fill-name-enum.d.ts.map +1 -0
  232. package/lib/enums/messenger-slot-fill-name-enum.js +5 -0
  233. package/lib/enums/messenger-slot-fill-name-enum.js.map +1 -0
  234. package/lib/hooks/index.d.ts +3 -0
  235. package/lib/hooks/index.d.ts.map +1 -0
  236. package/lib/hooks/use-file-sync.d.ts +16 -0
  237. package/lib/hooks/use-file-sync.d.ts.map +1 -0
  238. package/lib/hooks/use-file-sync.js +63 -0
  239. package/lib/hooks/use-file-sync.js.map +1 -0
  240. package/lib/hooks/usePersistentModelConfig.d.ts +15 -0
  241. package/lib/hooks/usePersistentModelConfig.d.ts.map +1 -0
  242. package/lib/hooks/usePersistentModelConfig.js +46 -0
  243. package/lib/hooks/usePersistentModelConfig.js.map +1 -0
  244. package/lib/index.d.ts +10 -0
  245. package/lib/index.d.ts.map +1 -0
  246. package/lib/index.js +1 -0
  247. package/lib/index.js.map +1 -0
  248. package/lib/interfaces/index.d.ts +2 -0
  249. package/lib/interfaces/index.d.ts.map +1 -0
  250. package/lib/interfaces/message-widgets.interface.d.ts +21 -0
  251. package/lib/interfaces/message-widgets.interface.d.ts.map +1 -0
  252. package/lib/machines/aiAgentMachine.d.ts +3 -0
  253. package/lib/machines/aiAgentMachine.d.ts.map +1 -0
  254. package/lib/machines/aiAgentMachine.js +1083 -0
  255. package/lib/machines/aiAgentMachine.js.map +1 -0
  256. package/lib/machines/aiAgentMachine.simple.d.ts +3 -0
  257. package/lib/machines/aiAgentMachine.simple.d.ts.map +1 -0
  258. package/lib/machines/aiAgentMachine.simple.js +108 -0
  259. package/lib/machines/aiAgentMachine.simple.js.map +1 -0
  260. package/lib/machines/index.d.ts +3 -0
  261. package/lib/machines/index.d.ts.map +1 -0
  262. package/lib/machines/types.d.ts +77 -0
  263. package/lib/machines/types.d.ts.map +1 -0
  264. package/lib/module.d.ts +7 -0
  265. package/lib/module.d.ts.map +1 -0
  266. package/lib/module.js +26 -0
  267. package/lib/module.js.map +1 -0
  268. package/lib/routes.json +98 -0
  269. package/lib/styles/responsive.css +76 -0
  270. package/lib/templates/InboxWithAi.d.ts +15 -0
  271. package/lib/templates/InboxWithAi.d.ts.map +1 -0
  272. package/lib/templates/InboxWithAi.js +440 -0
  273. package/lib/templates/InboxWithAi.js.map +1 -0
  274. package/lib/templates/InboxWithAi.tsx +533 -0
  275. package/lib/templates/index.d.ts +2 -0
  276. package/lib/templates/index.d.ts.map +1 -0
  277. package/lib/templates/index.ts +1 -0
  278. package/lib/utils/utils.d.ts +2 -0
  279. package/lib/utils/utils.d.ts.map +1 -0
  280. package/lib/utils/utils.js +3 -0
  281. package/lib/utils/utils.js.map +1 -0
  282. package/package.json +62 -0
  283. package/rollup.config.mjs +35 -0
  284. package/src/cdm-locales/en/translations.json +31 -0
  285. package/src/cdm-locales/es/translations.json +31 -0
  286. package/src/components/AIAgent/AIAgent.tsx +1103 -0
  287. package/src/components/AIAgent/AIAgent.tsx.bk +1365 -0
  288. package/src/components/AIAgent/README.md +82 -0
  289. package/src/components/AIAgent/index.ts +1 -0
  290. package/src/components/InboxMessage/CommonMessage.tsx +40 -0
  291. package/src/components/InboxMessage/ConversationItem.tsx +255 -0
  292. package/src/components/InboxMessage/InputComponent.tsx +462 -0
  293. package/src/components/InboxMessage/LeftSidebar.tsx +140 -0
  294. package/src/components/InboxMessage/MessageInput.tsx +209 -0
  295. package/src/components/InboxMessage/MessageInputComponent.tsx +245 -0
  296. package/src/components/InboxMessage/Messages.tsx +137 -0
  297. package/src/components/InboxMessage/MessagesBuilderUi.tsx +205 -0
  298. package/src/components/InboxMessage/Popover.tsx +42 -0
  299. package/src/components/InboxMessage/RightSidebar.tsx +22 -0
  300. package/src/components/InboxMessage/RightSidebarAi.tsx +37 -0
  301. package/src/components/InboxMessage/ServiceConversationItem.tsx +234 -0
  302. package/src/components/InboxMessage/ServiceInboxItem.tsx +223 -0
  303. package/src/components/InboxMessage/SubscriptionHandler.tsx +55 -0
  304. package/src/components/InboxMessage/UploadImageButton.tsx +46 -0
  305. package/src/components/InboxMessage/UserModalContent.tsx +60 -0
  306. package/src/components/InboxMessage/index.ts +16 -0
  307. package/src/components/InboxMessage/message-widgets/CommonMessage.tsx +69 -0
  308. package/src/components/InboxMessage/message-widgets/ErrorFixCard.tsx +240 -0
  309. package/src/components/InboxMessage/message-widgets/MessageCard.tsx +127 -0
  310. package/src/components/InboxMessage/message-widgets/MessageSliceRenderer.tsx +40 -0
  311. package/src/components/InboxMessage/message-widgets/ModernMessageGroup.tsx +1295 -0
  312. package/src/components/InboxMessage/message-widgets/PlainMessage.tsx +18 -0
  313. package/src/components/InboxMessage/message-widgets/PropertyMessageWidget.tsx +29 -0
  314. package/src/components/InboxMessage/message-widgets/SlackLikeMessageGroup.tsx +492 -0
  315. package/src/components/InboxMessage/message-widgets/index.ts +3 -0
  316. package/src/components/ModelConfigPanel.tsx +345 -0
  317. package/src/components/filler-components/RightSiderBar.tsx +408 -0
  318. package/src/components/inbox/FilesList.tsx +89 -0
  319. package/src/components/inbox/MessageItem.tsx +50 -0
  320. package/src/components/inbox/ThreadItem.tsx +295 -0
  321. package/src/components/inbox/index.ts +3 -0
  322. package/src/components/index.ts +22 -0
  323. package/src/components/live-code-editor/hybrid-live-editor.tsx +105 -0
  324. package/src/components/live-code-editor/index.ts +3 -0
  325. package/src/components/live-code-editor/live-code-editor.tsx +257 -0
  326. package/src/components/slot-fill/chat-message-filler.tsx +18 -0
  327. package/src/components/slot-fill/chat-message-slot.tsx +18 -0
  328. package/src/components/slot-fill/index.ts +3 -0
  329. package/src/components/slot-fill/right-sidebar-filler.tsx +39 -0
  330. package/src/components/ui/button.tsx +32 -0
  331. package/src/compute.ts +134 -0
  332. package/src/config/env-config.ts +17 -0
  333. package/src/config/index.ts +1 -0
  334. package/src/constants/breakpoints.ts +7 -0
  335. package/src/constants/index.ts +5 -0
  336. package/src/container/AiInbox.tsx +1819 -0
  337. package/src/container/AiInboxWithLoader.tsx +356 -0
  338. package/src/container/AiLandingInput.tsx +221 -0
  339. package/src/container/Inbox.tsx +1092 -0
  340. package/src/container/InboxAiMessagesLoader.tsx +44 -0
  341. package/src/container/InboxContainer.tsx +35 -0
  342. package/src/container/InboxTemplate1.tsx +1542 -0
  343. package/src/container/InboxTemplate1WithLoader.tsx +338 -0
  344. package/src/container/InboxTemplate2.tsx +1606 -0
  345. package/src/container/InboxWithAiLoader.tsx +76 -0
  346. package/src/container/InboxWithLoader.tsx +341 -0
  347. package/src/container/ServiceInbox.tsx +190 -0
  348. package/src/container/ThreadMessages.tsx +371 -0
  349. package/src/container/ThreadMessagesInbox.tsx +450 -0
  350. package/src/container/Threads.tsx +270 -0
  351. package/src/container/ThreadsInbox.tsx +354 -0
  352. package/src/container/apply-footer-styles.ts +17 -0
  353. package/src/container/index.ts +31 -0
  354. package/src/enums/index.ts +1 -0
  355. package/src/enums/messenger-slot-fill-name-enum.ts +4 -0
  356. package/src/hooks/index.ts +2 -0
  357. package/src/hooks/use-file-sync.ts +91 -0
  358. package/src/hooks/usePersistentModelConfig.ts +63 -0
  359. package/src/index.ts +37 -0
  360. package/src/interfaces/index.ts +1 -0
  361. package/src/interfaces/message-widgets.interface.ts +21 -0
  362. package/src/machines/aiAgentMachine.simple.ts +89 -0
  363. package/src/machines/aiAgentMachine.ts +1296 -0
  364. package/src/machines/aiAgentMachine.ts.bk +1296 -0
  365. package/src/machines/index.ts +2 -0
  366. package/src/machines/types.ts +59 -0
  367. package/src/module.tsx +32 -0
  368. package/src/styles/responsive.css +76 -0
  369. package/src/templates/InboxWithAi.tsx +533 -0
  370. package/src/templates/index.ts +1 -0
  371. package/src/utils/utils.ts +3 -0
  372. package/tsconfig.json +14 -0
  373. package/webpack.config.js +92 -0
@@ -0,0 +1,76 @@
1
+ import React, { useMemo } from 'react';
2
+ import { useParams, useLocation, useNavigate } from '@remix-run/react';
3
+ import AiLandingInput from './AiLandingInput';
4
+ import InboxContainer from './InboxContainer';
5
+
6
+ // Spinner kept if needed later
7
+ const TailwindSpinner = React.memo(() => (
8
+ <div className="flex items-center justify-center min-h-screen">
9
+ <div className="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"></div>
10
+ </div>
11
+ ));
12
+
13
+ const TailwindOverlaySpinner = React.memo(() => (
14
+ <div className="fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-30">
15
+ <div className="animate-spin rounded-full h-10 w-10 border-2 border-white border-t-transparent"></div>
16
+ </div>
17
+ ));
18
+
19
+ interface TailwindAlertProps {
20
+ children: React.ReactNode;
21
+ }
22
+
23
+ const TailwindAlert = React.memo(({ children }: TailwindAlertProps) => (
24
+ <div className="flex items-center justify-center min-h-screen">
25
+ <div
26
+ className="bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded relative max-w-md mx-auto"
27
+ role="alert"
28
+ >
29
+ <span className="block sm:inline">{children}</span>
30
+ </div>
31
+ </div>
32
+ ));
33
+
34
+ interface InboxWithAiLoaderProps {
35
+ channelFilters?: Record<string, any>;
36
+ channelRole?: string;
37
+ supportServices?: boolean;
38
+ pathPrefix?: string;
39
+ orgName?: string;
40
+ [key: string]: any;
41
+ }
42
+
43
+ const InboxWithAiLoader = (props: InboxWithAiLoaderProps) => {
44
+ const { channelRole: channelRoleProp, pathPrefix } = props;
45
+ const { orgName, channelRole: channelRoleParam } = useParams();
46
+ const location = useLocation();
47
+ const urlParams = location?.search ? new URLSearchParams(location.search) : null;
48
+ // const template = urlParams?.get('template');
49
+ const inboxProps = useMemo(
50
+ () => ({
51
+ ...props,
52
+ orgName: orgName || '',
53
+ pathPrefix: pathPrefix || '',
54
+ }),
55
+ [props, orgName, pathPrefix],
56
+ );
57
+
58
+ const { id: pathChannelId } = useParams();
59
+
60
+ // Extract channelId from query parameters (priority) or path parameters (fallback)
61
+ const channelId = urlParams?.get('id') || pathChannelId;
62
+
63
+ // Render the input landing experience when no channel is selected
64
+ if (!channelId) {
65
+ return <AiLandingInput />;
66
+ }
67
+
68
+ // No loading or error handling here; handled inside InboxContainer
69
+
70
+ return <InboxContainer {...inboxProps} channelId={channelId} />;
71
+ };
72
+
73
+ // Display name for debugging
74
+ InboxWithAiLoader.displayName = 'InboxWithAiLoader';
75
+
76
+ export default React.memo(InboxWithAiLoader);
@@ -0,0 +1,341 @@
1
+ import React, { useMemo, useCallback } from 'react';
2
+ import { useParams, useLocation } from '@remix-run/react';
3
+
4
+ // import AddGovernmentId from './AddGovernmentId';
5
+ import Inbox from './Inbox';
6
+ import {
7
+ useGetChannelsByUserQuery,
8
+ useGetChannelsByUserWithLastMessageQuery,
9
+ useMessagesQuery,
10
+ useViewChannelDetailQuery,
11
+ } from 'common/graphql';
12
+ import { RoomType } from 'common';
13
+ import { config } from '../config';
14
+
15
+ const { MESSAGES_PER_PAGE } = config;
16
+
17
+ // Enhanced query parameters generator with better typing and flexibility
18
+ export const queryParamsGenerator = (params: {
19
+ role?: string;
20
+ criteria?: Record<string, any>;
21
+ supportServices?: boolean;
22
+ orgName?: string;
23
+ }) => ({
24
+ variable1: {
25
+ role: params.role,
26
+ criteria: {
27
+ ...params.criteria,
28
+ ...(params.orgName && { orgName: params.orgName }),
29
+ },
30
+ supportServices: params.supportServices ? true : false,
31
+ supportServiceCriteria: params.supportServices
32
+ ? {
33
+ type: RoomType.Service,
34
+ }
35
+ : undefined,
36
+ orderBy: {
37
+ lastPostAt: 'desc',
38
+ },
39
+ },
40
+ });
41
+
42
+ // Enhanced Skeleton Components
43
+ const InboxSkeleton = React.memo(({ showRightSidebar = false }: { showRightSidebar?: boolean }) => (
44
+ <div
45
+ className="h-full border-t border-gray-300 flex overflow-hidden animate-pulse"
46
+ style={{ height: '100vh !important' }}
47
+ >
48
+ {/* Left Sidebar Skeleton */}
49
+ <div className="flex-shrink-0 w-full md:w-80 lg:w-96 xl:w-[420px] bg-gray-50 border-r border-gray-300 overflow-hidden">
50
+ {/* Header skeleton */}
51
+ <div className="p-4 border-b border-gray-200">
52
+ <div className="flex items-center justify-between mb-4">
53
+ <div className="h-6 bg-gray-300 rounded w-24"></div>
54
+ <div className="h-8 w-8 bg-gray-300 rounded-full"></div>
55
+ </div>
56
+ {/* Search bar skeleton */}
57
+ <div className="h-10 bg-gray-300 rounded-lg w-full"></div>
58
+ </div>
59
+
60
+ {/* Conversation list skeleton */}
61
+ <div className="p-4 space-y-3">
62
+ {Array.from({ length: 8 }).map((_, index) => (
63
+ <div key={index} className="flex items-center space-x-3 p-3 rounded-lg">
64
+ {/* Avatar skeleton */}
65
+ <div className="h-12 w-12 bg-gray-300 rounded-full flex-shrink-0"></div>
66
+ <div className="flex-1 min-w-0">
67
+ {/* Name skeleton */}
68
+ <div className="h-4 bg-gray-300 rounded w-3/4 mb-2"></div>
69
+ {/* Message preview skeleton */}
70
+ <div className="h-3 bg-gray-200 rounded w-full"></div>
71
+ </div>
72
+ <div className="flex flex-col items-end space-y-1">
73
+ {/* Time skeleton */}
74
+ <div className="h-3 bg-gray-200 rounded w-12"></div>
75
+ {/* Badge skeleton */}
76
+ <div className="h-4 w-4 bg-gray-300 rounded-full"></div>
77
+ </div>
78
+ </div>
79
+ ))}
80
+ </div>
81
+ </div>
82
+
83
+ {/* Main Content Area Skeleton */}
84
+ <div className="flex-1 min-w-0 overflow-hidden">
85
+ <div className="flex h-full">
86
+ {/* Chat content skeleton */}
87
+ <div className="flex-1 flex flex-col">
88
+ {/* Header skeleton */}
89
+ <div className="px-6 py-4 border-b border-gray-200 bg-white flex-shrink-0">
90
+ <div className="flex items-center justify-between">
91
+ <div className="h-6 bg-gray-300 rounded w-32"></div>
92
+ <div className="h-8 bg-gray-300 rounded w-20"></div>
93
+ </div>
94
+ </div>
95
+
96
+ {/* Messages area skeleton */}
97
+ <div className="flex-1 p-4 space-y-4 overflow-hidden">
98
+ {Array.from({ length: 6 }).map((_, index) => (
99
+ <div key={index} className={`flex ${index % 2 === 0 ? 'justify-start' : 'justify-end'}`}>
100
+ <div
101
+ className={`flex items-start space-x-2 max-w-xs lg:max-w-md ${
102
+ index % 2 === 0 ? '' : 'flex-row-reverse space-x-reverse'
103
+ }`}
104
+ >
105
+ {index % 2 === 0 && (
106
+ <div className="h-8 w-8 bg-gray-300 rounded-full flex-shrink-0"></div>
107
+ )}
108
+ <div
109
+ className={`px-4 py-2 rounded-lg ${
110
+ index % 2 === 0 ? 'bg-gray-200' : 'bg-gray-300'
111
+ }`}
112
+ >
113
+ <div className="h-4 bg-gray-400 rounded w-32 mb-1"></div>
114
+ <div className="h-3 bg-gray-400 rounded w-20"></div>
115
+ </div>
116
+ </div>
117
+ </div>
118
+ ))}
119
+ </div>
120
+
121
+ {/* Message input skeleton */}
122
+ <div className="p-4 border-t border-gray-200 bg-white">
123
+ <div className="flex items-center space-x-2">
124
+ <div className="h-10 bg-gray-300 rounded-full w-10"></div>
125
+ <div className="flex-1 h-10 bg-gray-300 rounded-lg"></div>
126
+ <div className="h-10 w-10 bg-gray-300 rounded-full"></div>
127
+ </div>
128
+ </div>
129
+ </div>
130
+
131
+ {/* Right Sidebar Skeleton - Desktop only, conditionally rendered */}
132
+ {showRightSidebar && (
133
+ <div className="hidden xl:block w-72 lg:w-80 xl:w-96 border-l border-gray-200 bg-white flex-shrink-0">
134
+ <div className="p-4">
135
+ {/* Right sidebar header */}
136
+ <div className="h-6 bg-gray-300 rounded w-24 mb-4"></div>
137
+
138
+ {/* Right sidebar content */}
139
+ <div className="space-y-3">
140
+ {Array.from({ length: 4 }).map((_, index) => (
141
+ <div key={index} className="p-3 border border-gray-200 rounded-lg">
142
+ <div className="h-4 bg-gray-300 rounded w-3/4 mb-2"></div>
143
+ <div className="h-3 bg-gray-200 rounded w-full mb-1"></div>
144
+ <div className="h-3 bg-gray-200 rounded w-2/3"></div>
145
+ </div>
146
+ ))}
147
+ </div>
148
+ </div>
149
+ </div>
150
+ )}
151
+ </div>
152
+ </div>
153
+ </div>
154
+ ));
155
+
156
+ const TailwindSpinner = React.memo(() => (
157
+ <div className="flex items-center justify-center min-h-screen">
158
+ <div className="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"></div>
159
+ </div>
160
+ ));
161
+
162
+ interface TailwindAlertProps {
163
+ children: React.ReactNode;
164
+ }
165
+
166
+ const TailwindAlert = React.memo(({ children }: TailwindAlertProps) => (
167
+ <div className="flex items-center justify-center min-h-screen">
168
+ <div
169
+ className="bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded relative max-w-md mx-auto"
170
+ role="alert"
171
+ >
172
+ <span className="block sm:inline">{children}</span>
173
+ </div>
174
+ </div>
175
+ ));
176
+
177
+ interface InboxWithLoaderProps {
178
+ channelFilters?: Record<string, any>;
179
+ channelRole?: string;
180
+ supportServices?: boolean;
181
+ pathPrefix?: string;
182
+ orgName?: string;
183
+ [key: string]: any; // Allow other props to be passed through to Inbox
184
+ }
185
+
186
+ const InboxWithLoader = (props: InboxWithLoaderProps) => {
187
+ const { channelFilters: channelFilterProp, channelRole: channelRoleProp, supportServices, pathPrefix } = props;
188
+ const { orgName, channelRole: channelRoleParam } = useParams();
189
+ const channelRole = channelRoleParam || channelRoleProp;
190
+
191
+ // Create new props object with orgName instead of mutating original props
192
+ const inboxProps = useMemo(
193
+ () => ({
194
+ ...props,
195
+ orgName: orgName || '',
196
+ pathPrefix: pathPrefix || '',
197
+ }),
198
+ [props, orgName, pathPrefix],
199
+ );
200
+
201
+ const { id: pathChannelId } = useParams();
202
+
203
+ // Enhanced query variables with better filtering and stable references
204
+ const channelsQueryVariables = useMemo(() => {
205
+ const channelFilters = { ...channelFilterProp };
206
+ const channelType = channelFilters?.type ?? RoomType.Direct;
207
+ const baseFilters = {
208
+ ...channelFilters,
209
+ type: supportServices ? [channelType, RoomType.Service] : channelType,
210
+ };
211
+
212
+ return queryParamsGenerator({
213
+ role: channelRole,
214
+ criteria: baseFilters,
215
+ supportServices,
216
+ orgName: orgName || '',
217
+ }).variable1;
218
+ }, [channelRole, channelFilterProp, supportServices, orgName]);
219
+
220
+ const messagesQueryVariables = useMemo(
221
+ () => ({
222
+ channelId: pathChannelId?.toString(),
223
+ parentId: null,
224
+ limit: MESSAGES_PER_PAGE,
225
+ }),
226
+ [pathChannelId],
227
+ );
228
+
229
+ const channelDetailQueryVariables = useMemo(
230
+ () => ({
231
+ id: pathChannelId?.toString(),
232
+ }),
233
+ [pathChannelId],
234
+ );
235
+
236
+ // Enhanced Apollo queries with better cache policies and error handling
237
+ const channelsQuery = useGetChannelsByUserQuery({
238
+ variables: channelsQueryVariables,
239
+ fetchPolicy: 'cache-and-network', // Better for real-time updates
240
+ errorPolicy: 'all',
241
+ notifyOnNetworkStatusChange: false,
242
+ returnPartialData: true,
243
+ // Add context for better cache management
244
+ context: {
245
+ cacheKey: 'channels-list',
246
+ },
247
+ });
248
+
249
+ const messagesQuery = useMessagesQuery({
250
+ variables: messagesQueryVariables,
251
+ skip: !pathChannelId,
252
+ fetchPolicy: 'cache-and-network', // Better for real-time messaging
253
+ errorPolicy: 'all',
254
+ notifyOnNetworkStatusChange: true,
255
+ returnPartialData: true,
256
+ // Disable polling to allow subscriptions to work properly
257
+ pollInterval: 0,
258
+ // Add context for better cache management
259
+ context: {
260
+ cacheKey: 'messages-list',
261
+ },
262
+ });
263
+
264
+ const channelDetailQuery = useViewChannelDetailQuery({
265
+ variables: channelDetailQueryVariables,
266
+ skip: !pathChannelId,
267
+ fetchPolicy: 'cache-first', // Channel details don't change often
268
+ errorPolicy: 'all',
269
+ notifyOnNetworkStatusChange: false, // No need for real-time updates
270
+ returnPartialData: true,
271
+ // Add context for better cache management
272
+ context: {
273
+ cacheKey: 'channel-detail',
274
+ },
275
+ });
276
+
277
+ // Enhanced error handling with retry logic
278
+ const handleRetry = useCallback(() => {
279
+ if (channelsQuery.error) {
280
+ channelsQuery.refetch();
281
+ }
282
+ if (messagesQuery.error) {
283
+ messagesQuery.refetch();
284
+ }
285
+ if (channelDetailQuery.error) {
286
+ channelDetailQuery.refetch();
287
+ }
288
+ }, [channelsQuery, messagesQuery, channelDetailQuery]);
289
+
290
+ // Create loader data array for Inbox component with better error handling
291
+ const loaderData = useMemo(
292
+ () => [channelsQuery, messagesQuery, channelDetailQuery],
293
+ [channelsQuery, messagesQuery, channelDetailQuery],
294
+ );
295
+
296
+ // Enhanced loading states with better UX
297
+ if (channelsQuery.loading && !pathChannelId && !channelsQuery.data) {
298
+ return <InboxSkeleton showRightSidebar={false} />;
299
+ }
300
+
301
+ // Show skeleton during initial channel loading
302
+ if (
303
+ pathChannelId &&
304
+ (messagesQuery.loading || channelDetailQuery.loading) &&
305
+ !messagesQuery.data &&
306
+ !channelDetailQuery.data
307
+ ) {
308
+ return <InboxSkeleton showRightSidebar={true} />;
309
+ }
310
+
311
+ // Enhanced error handling with retry option
312
+ if (channelsQuery.error && !channelsQuery.data) {
313
+ return (
314
+ <div className="flex flex-col items-center justify-center min-h-screen space-y-4">
315
+ <TailwindAlert>Error loading channels: {channelsQuery.error.message}</TailwindAlert>
316
+ <button
317
+ onClick={handleRetry}
318
+ className="px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors"
319
+ >
320
+ Retry
321
+ </button>
322
+ </div>
323
+ );
324
+ }
325
+
326
+ // Handle individual query errors gracefully
327
+ if (messagesQuery.error && !messagesQuery.data && pathChannelId) {
328
+ console.warn('Messages query error:', messagesQuery.error);
329
+ }
330
+
331
+ if (channelDetailQuery.error && !channelDetailQuery.data && pathChannelId) {
332
+ console.warn('Channel detail query error:', channelDetailQuery.error);
333
+ }
334
+
335
+ return <Inbox data={loaderData} {...inboxProps} />;
336
+ };
337
+
338
+ // Display name for debugging
339
+ InboxWithLoader.displayName = 'InboxWithLoader';
340
+
341
+ export default React.memo(InboxWithLoader);
@@ -0,0 +1,190 @@
1
+ import React, { useState, useMemo, useCallback, useLayoutEffect, useEffect } from 'react';
2
+ import { useSupportServiceChannelsQuery } from 'common/graphql';
3
+ import { useNavigate, useLocation, useParams } from '@remix-run/react';
4
+ import { useDispatch, useSelector } from 'react-redux';
5
+ import { userSelector } from '@adminide-stack/user-auth0-client';
6
+ import { push } from '@common-stack/remix-router-redux';
7
+ import { ServiceInboxItem } from '../components';
8
+ import { config } from '../config';
9
+
10
+ const { MESSAGES_PER_PAGE, WEB_INBOX_MESSEGE_PATH } = config;
11
+
12
+ type ServiceInboxProps = { role?: any; pathPrefix?: string };
13
+
14
+ // Custom Skeleton component using Tailwind
15
+ const SkeletonLoader = ({ height = 'h-10' }: { height?: string }) => (
16
+ <div className={`${height} bg-gray-200 rounded animate-pulse`}></div>
17
+ );
18
+
19
+ export const ServiceInboxComponent = React.memo((props: any) => {
20
+ const auth = useSelector(userSelector);
21
+ const dispatch = useDispatch();
22
+ const path: any = useParams();
23
+ const location = useLocation();
24
+ const { id: channelId } = path || {};
25
+
26
+ // const channels = React.useMemo(() => {
27
+ // // if (!props?.serviceChannels?.length) return null;
28
+ // let uChannels: any =
29
+ // props?.serviceChannels?.filter((c: any) =>
30
+ // c.members.some((u: any) => u.user.__typename == 'UserAccount'),
31
+ // ) ?? [];
32
+ // return uChannels || [];
33
+ // }, [props?.serviceChannels]);
34
+
35
+ const users = useMemo(() => {
36
+ return (
37
+ props?.serviceChannels?.reduce((acc, curr) => {
38
+ const newMembers = curr.members.filter(({ user }) => acc.findIndex(({ id }) => id === user.id));
39
+ return [...acc, ...newMembers?.map(({ user }) => user)];
40
+ }, []) || []
41
+ );
42
+ }, [props?.serviceChannels]);
43
+
44
+ const currentUser = useMemo(() => users?.find(({ alias }) => alias.includes(auth?.authUserId)), [users, auth]);
45
+
46
+ const handleSelectChannel = useCallback((channelId: any, postId: any) => {
47
+ if (props?.handleSelectChannel) {
48
+ props?.handleSelectChannel(channelId, postId);
49
+ }
50
+
51
+ props?.setChannelId(channelId);
52
+ props?.setPostId(postId);
53
+ props?.setSkip(0);
54
+ props?.clearMessages();
55
+ }, []);
56
+
57
+ return (
58
+ <div className="w-full">
59
+ {props?.serviceChannels?.map((channel, index) => (
60
+ <ServiceInboxItem
61
+ key={`service_channel_${channel.id}`}
62
+ filter={props?.keyword}
63
+ channel={channel}
64
+ currentUser={auth}
65
+ handleSelectChannel={handleSelectChannel}
66
+ users={users}
67
+ selectedChannelId={props?.channelId ?? channelId}
68
+ showBorder={props?.serviceChannels.length == 1 ? true : index != props?.serviceChannels.length - 1}
69
+ role={props?.role ?? null}
70
+ />
71
+ ))}
72
+ </div>
73
+ );
74
+ });
75
+
76
+ const ServiceInbox = (props: ServiceInboxProps) => {
77
+ const path: any = useParams();
78
+ const location = useLocation();
79
+ const { id: channelId } = path || {};
80
+ const auth = useSelector(userSelector);
81
+ const dispatch = useDispatch();
82
+ const [keyword, setKeyword] = useState('');
83
+ // const [channels, setChannels] = useState<any>([]);
84
+
85
+ const {
86
+ data: serviceChannels,
87
+ loading: serviceChannelsLoading,
88
+ refetch: getServiceChannelsRefetch,
89
+ } = useSupportServiceChannelsQuery({
90
+ variables: {
91
+ criteria: { type: 'SERVICE' },
92
+ },
93
+ fetchPolicy: 'cache-and-network',
94
+ onCompleted: (data: any) => {
95
+ //setRefresh(false);
96
+ },
97
+ });
98
+
99
+ useEffect(() => {
100
+ getServiceChannelsRefetch({ criteria: { type: 'SERVICE' } });
101
+ }, [location?.pathname]);
102
+
103
+ // useEffect(() => {
104
+ // if (serviceChannels?.supportServiceChannels?.length > 0) {
105
+ // let uChannels: any =
106
+ // serviceChannels?.supportServiceChannels?.filter((c: any) =>
107
+ // c.members.some((u: any) => u.user.__typename == 'UserAccount'),
108
+ // ) ?? [];
109
+ // const sChannels: any = uChannels || [];
110
+ // setChannels(sChannels);
111
+ // }
112
+ // }, [serviceChannels]);
113
+ //..........................old code .....................................//
114
+ // const channels = React.useMemo(() => {
115
+ // if (!serviceChannels?.supportServiceChannels?.length) return null;
116
+ // let uChannels: any =
117
+ // serviceChannels?.supportServiceChannels?.filter((c: any) =>
118
+ // c.members.some((u: any) => u.user.__typename == 'UserAccount'),
119
+ // ) ?? [];
120
+ // return uChannels || [];
121
+ // }, [serviceChannels]);
122
+
123
+ // const users = useMemo(() => {
124
+ // return (
125
+ // channels?.reduce((acc, curr) => {
126
+ // const newMembers = curr.members.filter(({ user }) => acc.findIndex(({ id }) => id === user.id));
127
+ // return [...acc, ...newMembers?.map(({ user }) => user)];
128
+ // }, []) || []
129
+ // );
130
+ // }, [channels]);
131
+
132
+ // const currentUser = useMemo(() => users?.find(({ alias }) => alias.includes(auth?.authUserId)), [users, auth]);
133
+
134
+ const handleSelectChannel = useCallback(
135
+ (channelId: any, postId: any) => {
136
+ if (postId || postId == 0)
137
+ dispatch(
138
+ push(
139
+ `${
140
+ props?.pathPrefix ? props?.pathPrefix : ''
141
+ }/${WEB_INBOX_MESSEGE_PATH}/${channelId}/${postId}`,
142
+ ),
143
+ );
144
+ else dispatch(push(`${props?.pathPrefix ? props?.pathPrefix : ''}/${WEB_INBOX_MESSEGE_PATH}/${channelId}`));
145
+ },
146
+ [location, path],
147
+ );
148
+
149
+ //..........................old code .....................................//
150
+
151
+ if (serviceChannelsLoading) {
152
+ return (
153
+ <div className="flex flex-col space-y-4">
154
+ {Array(10)
155
+ .fill(1)
156
+ .map((x, y) => (
157
+ <SkeletonLoader key={y} />
158
+ ))}
159
+ </div>
160
+ );
161
+ }
162
+ return (
163
+ <>
164
+ <ServiceInboxComponent
165
+ serviceChannels={serviceChannels?.supportServiceChannels}
166
+ filter={keyword}
167
+ channelId={channelId}
168
+ handleSelectChannel={handleSelectChannel}
169
+ {...props}
170
+ />
171
+ {/* <div className="w-full">
172
+ {channels?.map((channel, index) => (
173
+ <ServiceInboxItem
174
+ key={`service_channel_${channel.id}`}
175
+ filter={keyword}
176
+ channel={channel}
177
+ currentUser={auth}
178
+ handleSelectChannel={handleSelectChannel}
179
+ users={users}
180
+ selectedChannelId={channelId}
181
+ showBorder={channels.length == 1 ? true : index != channels.length - 1}
182
+ role={props?.role ?? null}
183
+ />
184
+ ))}
185
+ </div> */}
186
+ </>
187
+ );
188
+ };
189
+
190
+ export default React.memo(ServiceInbox);