@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,205 @@
1
+ import { format, isToday, isYesterday } from 'date-fns';
2
+ import React, { useMemo, useRef, useEffect, useState } from 'react';
3
+ import { useTranslation } from 'react-i18next';
4
+ import { UserModalContent } from './UserModalContent';
5
+ import { MessageSliceRenderer } from './message-widgets';
6
+ import { ModernMessageGroupComponent } from './message-widgets/ModernMessageGroup';
7
+
8
+ interface MessagesProps {
9
+ channelId: number;
10
+ currentUser: any;
11
+ channelMessages: any[];
12
+ totalCount: number;
13
+ innerRef?: any;
14
+ refetchMessages?: () => void;
15
+ subscribeToNewMessages?: () => any;
16
+ subscribeToNewServiceMessages?: () => any;
17
+ onMessageClick: (msg) => void;
18
+ isDesktopView?: boolean;
19
+ isSmallScreen?: boolean;
20
+ }
21
+
22
+ export const MessagesBuilderUi = ({
23
+ currentUser,
24
+ channelMessages,
25
+ refetchMessages,
26
+ innerRef,
27
+ channelId,
28
+ subscribeToNewMessages,
29
+ subscribeToNewServiceMessages,
30
+ onMessageClick,
31
+ isDesktopView = false,
32
+ isSmallScreen = false,
33
+ }: MessagesProps) => {
34
+ const [isOpen, setIsOpen] = useState(false);
35
+ const [selectedElement, setSelectedElement] = useState(null);
36
+ const { t } = useTranslation('translations');
37
+
38
+ const onOpen = (element?: any) => {
39
+ setSelectedElement(element);
40
+ setIsOpen(true);
41
+ };
42
+
43
+ const onClose = () => {
44
+ setIsOpen(false);
45
+ setSelectedElement(null);
46
+ };
47
+
48
+ useEffect(() => {
49
+ subscribeToNewMessages?.();
50
+ subscribeToNewServiceMessages?.();
51
+ }, [channelId]);
52
+
53
+ const messageListRef = useRef(null);
54
+ const scrollToBottom = React.useCallback(() => {
55
+ if (innerRef.current)
56
+ innerRef.current?.querySelector(':scope > :last-child')?.scrollIntoView({
57
+ behavior: 'smooth',
58
+ inline: 'start',
59
+ });
60
+ }, [innerRef]);
61
+
62
+ React.useEffect(() => {
63
+ if (channelMessages?.length) {
64
+ // scrollToBottom();
65
+ }
66
+ }, [channelMessages]);
67
+
68
+ const messageListWithDates = useMemo(() => {
69
+ let currentDate = '';
70
+ let res = [];
71
+
72
+ // Add original messages
73
+ channelMessages?.map((msg) => {
74
+ const date = new Date(msg.createdAt);
75
+ let msgDate;
76
+ if (isToday(date)) msgDate = t('tailwind_ui_inbox.today');
77
+ else if (isYesterday(date)) msgDate = t('tailwind_ui_inbox.yesterday');
78
+ else msgDate = format(new Date(msg.createdAt), 'eee, do MMMM');
79
+
80
+ if (msgDate !== currentDate) {
81
+ res.push({ type: 'date', content: msgDate });
82
+ currentDate = msgDate;
83
+ }
84
+ res.push(msg);
85
+ });
86
+
87
+ // Add dummy messages at the end if we have existing messages
88
+ if (channelMessages && channelMessages.length > 0) {
89
+ // Add today's date if not already added
90
+ const todayLabel = t('tailwind_ui_inbox.today');
91
+ if (currentDate !== todayLabel) {
92
+ res.push({ type: 'date', content: todayLabel });
93
+ }
94
+
95
+ // dummyMessages.forEach(msg => res.push(msg));
96
+ }
97
+
98
+ return res;
99
+ }, [channelMessages, t]);
100
+
101
+ // Group messages by date sections for Slack-like rendering
102
+ const messagesByDate = useMemo(() => {
103
+ const sections = [];
104
+ let currentSection = { date: null, messages: [] };
105
+
106
+ messageListWithDates.forEach((item) => {
107
+ if (item?.type === 'date') {
108
+ if (currentSection.messages.length > 0) {
109
+ sections.push(currentSection);
110
+ }
111
+ currentSection = { date: item.content, messages: [] };
112
+ } else {
113
+ currentSection.messages.push(item);
114
+ }
115
+ });
116
+
117
+ if (currentSection.messages.length > 0) {
118
+ sections.push(currentSection);
119
+ }
120
+
121
+ return sections;
122
+ }, [messageListWithDates]);
123
+
124
+ return (
125
+ <>
126
+ <div
127
+ className={`w-full pb-4 pt-2 ${
128
+ isDesktopView ? 'space-y-3 max-w-full mx-auto' : isSmallScreen ? 'space-y-2' : 'space-y-2'
129
+ }`}
130
+ ref={innerRef}
131
+ >
132
+ {messagesByDate?.map((section, sectionIndex) => (
133
+ <div key={`section-${sectionIndex}`} className="w-full">
134
+ {/* Date separator */}
135
+ {section.date && (
136
+ <div className="flex items-center justify-center my-3">
137
+ <div className="flex-grow border-t border-gray-200"></div>
138
+ <div className="mx-4 px-3 py-1 bg-white border border-gray-200 rounded-full text-xs font-medium text-gray-600">
139
+ {section.date}
140
+ </div>
141
+ <div className="flex-grow border-t border-gray-200"></div>
142
+ </div>
143
+ )}
144
+
145
+ {/* Messages grouped by user and time */}
146
+ <div className={`${isDesktopView ? 'mb-2' : 'mb-1'}`}>
147
+ <ModernMessageGroupComponent
148
+ messages={section.messages}
149
+ currentUser={currentUser}
150
+ onOpen={onOpen}
151
+ onMessageClick={onMessageClick}
152
+ isDesktopView={isDesktopView}
153
+ isSmallScreen={isSmallScreen}
154
+ />
155
+ </div>
156
+ </div>
157
+ ))}
158
+ </div>
159
+ <ChatModal element={selectedElement} isOpen={isOpen} onClose={onClose} />
160
+ </>
161
+ );
162
+ };
163
+
164
+ const ChatModal = ({ element, isOpen, onClose }) => {
165
+ if (!isOpen) return null;
166
+
167
+ return (
168
+ <>
169
+ {/* Modal Overlay */}
170
+ <div className="fixed inset-0 bg-black bg-opacity-50 z-40" onClick={onClose} />
171
+
172
+ {/* Modal Content */}
173
+ <div className="fixed z-50 left-1/2 top-1/2 transform -translate-x-1/2 -translate-y-1/2">
174
+ <div
175
+ className="bg-white w-[1036px] h-[700px] rounded-lg shadow-xl"
176
+ style={{
177
+ boxShadow: '0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23)',
178
+ }}
179
+ >
180
+ {/* Modal Header */}
181
+ <div className="flex justify-between border-b border-gray-300 pb-4 pt-4">
182
+ <button onClick={onClose} className="w-8 ml-3 text-black hover:text-black focus:outline-none">
183
+ <svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
184
+ <path
185
+ strokeLinecap="round"
186
+ strokeLinejoin="round"
187
+ strokeWidth={2}
188
+ d="M6 18L18 6M6 6l12 12"
189
+ />
190
+ </svg>
191
+ </button>
192
+ </div>
193
+
194
+ {/* Modal Body */}
195
+ <div className="p-4">
196
+ <UserModalContent
197
+ username={element?.author?.username}
198
+ image={element?.imageUrl ? element.imageUrl : ''}
199
+ />
200
+ </div>
201
+ </div>
202
+ </div>
203
+ </>
204
+ );
205
+ };
@@ -0,0 +1,42 @@
1
+ import React from 'react';
2
+ import { useTranslation } from 'react-i18next';
3
+
4
+ export const Popover = () => {
5
+ const { t } = useTranslation('translations');
6
+ const content = [
7
+ {
8
+ name: t('tailwind_ui_inbox.all_conversations'),
9
+ },
10
+ {
11
+ name: t('tailwind_ui_inbox.archived_conversations'),
12
+ total: '0',
13
+ },
14
+ {
15
+ name: t('tailwind_ui_inbox.unread_conversations'),
16
+ total: '0',
17
+ },
18
+ ];
19
+ return (
20
+ <div>
21
+ {content?.map((item, index) => {
22
+ if (!item.total) {
23
+ return (
24
+ <div className="popover-style hover:bg-gray-200" key={index}>
25
+ <button className="border-none text-base text-gray-800 bg-transparent h-7 p-0 cursor-pointer hover:underline">
26
+ {item.name}
27
+ </button>
28
+ </div>
29
+ );
30
+ } else {
31
+ return (
32
+ <div className="popover-style hover:bg-gray-200" key={index}>
33
+ <button className="border-none text-base text-gray-800 bg-transparent h-7 p-0 cursor-pointer hover:underline">
34
+ {item.name + `(${item.total})`}
35
+ </button>
36
+ </div>
37
+ );
38
+ }
39
+ })}
40
+ </div>
41
+ );
42
+ };
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import { Slot } from '@common-stack/components-pro';
3
+ import { MessengerSlotFillNameEnum } from '../../enums';
4
+ import { IPost } from 'common';
5
+
6
+ export interface IRightSidebar extends React.HTMLAttributes<HTMLDivElement> {
7
+ channelMessages: IPost[];
8
+ isMobileView: boolean;
9
+ selectedPost: string;
10
+ }
11
+
12
+ export const RightSidebar = (props: IRightSidebar) => {
13
+ return (
14
+ <Slot
15
+ name={MessengerSlotFillNameEnum.INBOX_RIGHT_SIDEBAR}
16
+ fillProps={{
17
+ active: true,
18
+ ...props,
19
+ }}
20
+ />
21
+ );
22
+ };
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import { Slot } from '@common-stack/components-pro';
3
+ import { IPost } from 'common';
4
+ import { MessengerSlotFillNameEnum } from '../../enums';
5
+
6
+ export interface IRightSidebarAi extends React.HTMLAttributes<HTMLDivElement> {
7
+ channelId: string;
8
+ detailSidebarOptions: {
9
+ isMobileView: boolean;
10
+ isSmallTabletView: boolean;
11
+ isTabletView: boolean;
12
+ isDesktopView: boolean;
13
+ isLargeDesktopView: boolean;
14
+ isSmallScreen: boolean;
15
+ [key: string]: any;
16
+ };
17
+ windowWidth: number;
18
+ windowHeight: number;
19
+ activeTab?: string;
20
+ setIsLoading?: (isLoading: boolean) => void;
21
+ isLoading?: boolean;
22
+ messages?: any[];
23
+ selectedPost?: any;
24
+ [key: string]: any;
25
+ }
26
+
27
+ export const RightSidebarAi = (props: IRightSidebarAi) => {
28
+ return (
29
+ <Slot
30
+ name={MessengerSlotFillNameEnum.INBOX_WITH_AI_RIGHT_SIDEBAR}
31
+ fillProps={{
32
+ active: true,
33
+ ...props,
34
+ }}
35
+ />
36
+ );
37
+ };
@@ -0,0 +1,234 @@
1
+ import React, { useMemo } from 'react';
2
+ import {
3
+ useMessagesQuery,
4
+ useThreadMessagesQuery,
5
+ useGetPostThreadQuery,
6
+ useOnThreadChatMessageAddedSubscription,
7
+ useOnThreadCreatedUpdatedSubscription,
8
+ OnThreadCreatedUpdatedDocument as THREAD_CHAT_ADDED,
9
+ OnThreadChatMessageAddedDocument as CHAT_MESSAGE_ADDED,
10
+ } from 'common/graphql';
11
+ import { format, isToday, isYesterday } from 'date-fns';
12
+ import { useLocation } from '@remix-run/react';
13
+
14
+ const createdAtText = (value) => {
15
+ if (!value) return '';
16
+ let date = new Date(value);
17
+ if (isToday(date)) return 'Today';
18
+ if (isYesterday(date)) return 'Yesterday';
19
+ return format(new Date(value), 'MMM dd, yyyy');
20
+ };
21
+
22
+ // Custom Skeleton component using Tailwind
23
+ const Skeleton = () => (
24
+ <div className="animate-pulse">
25
+ <div className="h-4 bg-gray-200 dark:bg-gray-700 rounded mb-2"></div>
26
+ <div className="h-4 bg-gray-200 dark:bg-gray-700 rounded w-3/4 mb-2"></div>
27
+ <div className="h-4 bg-gray-200 dark:bg-gray-700 rounded w-1/2"></div>
28
+ </div>
29
+ );
30
+
31
+ const ServiceLastMessageComponent = ({ subscribeToNewMessages, channel, channelType, lastMessage }) => {
32
+ React.useEffect(() => subscribeToNewMessages(), []);
33
+ return (
34
+ <div className="flex flex-col w-full">
35
+ <div className="w-full flex justify-between items-center">
36
+ <span className="text-xs text-green-500 truncate">{channelType}</span>
37
+ <span className="text-xs text-gray-500">
38
+ {lastMessage ? createdAtText(lastMessage?.createdAt) : ''}
39
+ </span>
40
+ </div>
41
+ <p className="text-sm text-gray-600 dark:text-gray-300 font-bold mt-1">{channel?.title}</p>
42
+ <p className="text-sm text-gray-600 dark:text-gray-400 truncate w-4/5 mt-1">{lastMessage?.message}</p>
43
+ </div>
44
+ );
45
+ };
46
+
47
+ const ServiceConversationItemComponent = ({
48
+ showBorder,
49
+ currentUser,
50
+ filter,
51
+ channel,
52
+ handleSelectChannel,
53
+ users,
54
+ selectedChannelId,
55
+ role,
56
+ }) => {
57
+ const [parentId, setParentId] = React.useState<any>(null);
58
+ const [messages, setMessages] = React.useState([]);
59
+ const [servicePostParentId, setServicePostParentId] = React.useState(null);
60
+ const { pathname } = useLocation();
61
+ const {
62
+ data: threadMessages,
63
+ loading: threadMessageLoading,
64
+ fetchMore: fetchMoreMessages,
65
+ refetch: refetchThreadMessages,
66
+ subscribeToMore,
67
+ } = useThreadMessagesQuery({
68
+ variables: {
69
+ channelId: channel?.id?.toString(),
70
+ role,
71
+ limit: 10,
72
+ },
73
+ fetchPolicy: 'cache-and-network',
74
+ });
75
+
76
+ React.useEffect(() => {
77
+ if (channel) refetchThreadMessages({ channelId: channel?.id?.toString(), role, limit: 10 });
78
+ }, [channel]);
79
+ // }, [selectedChannelId, channel, role]);
80
+
81
+ React.useEffect(() => {
82
+ if (threadMessages?.threadMessages?.data?.length) {
83
+ const { data }: any = threadMessages.threadMessages;
84
+ const replies =
85
+ data
86
+ ?.map((t: any) => t?.replies)
87
+ ?.flat(1)
88
+ ?.filter((p: any) => p?.message !== '') ?? [];
89
+
90
+ const posts =
91
+ data
92
+ ?.map((t: any) => t?.post)
93
+ ?.flat(1)
94
+ ?.filter((p: any) => p?.message !== '') ?? [];
95
+ // const post =
96
+ // data?.find((t: any) => {
97
+ // return t?.post?.message !== '';
98
+ // }) ??
99
+ // data?.find((t: any) => {
100
+ // return t?.post;
101
+ // }) ??
102
+ // null;
103
+
104
+ if (replies?.length) {
105
+ setMessages((pre: any) => [...pre, ...replies]);
106
+ } else if (posts?.length) {
107
+ setMessages((pre: any) => [...pre, ...posts]);
108
+ }
109
+ }
110
+ }, [threadMessages]);
111
+
112
+ const lastMessage = useMemo(() => {
113
+ const threadMessagesData = messages?.flat(1);
114
+ if (!threadMessagesData?.length) {
115
+ return null;
116
+ }
117
+
118
+ let filteredLastMessage =
119
+ threadMessagesData && threadMessagesData?.length > 1
120
+ ? threadMessagesData?.reduce((a, b) => {
121
+ return new Date(a?.updatedAt) > new Date(b?.updatedAt) ? a : b;
122
+ }, []) ?? null
123
+ : threadMessagesData?.length <= 1
124
+ ? threadMessagesData?.[0] ?? []
125
+ : null;
126
+
127
+ return filteredLastMessage;
128
+ // //return data[data.length - 1];
129
+ }, [messages]);
130
+
131
+ React.useEffect(() => {
132
+ if (lastMessage) {
133
+ const sParentId = lastMessage?.parentId ? lastMessage?.parentId : lastMessage?.id;
134
+ setServicePostParentId(sParentId);
135
+ }
136
+ }, [lastMessage]);
137
+
138
+ const creatorAndMembersId = React.useMemo(() => {
139
+ if (!channel?.members) return null;
140
+ const membersIds: any =
141
+ channel?.members?.filter((m: any) => m?.user?.id !== currentUser?.id)?.map((mu: any) => mu?.user?.id) ?? [];
142
+ const creatorId: any = channel?.creator?.id;
143
+ const mergedIds: any = [].concat(membersIds, creatorId) ?? [];
144
+ return mergedIds?.filter((m: any, pos: any) => mergedIds?.indexOf(m) === pos) ?? [];
145
+ }, [channel]);
146
+
147
+ const postParentId = React.useMemo(() => {
148
+ if (!creatorAndMembersId?.length) return null;
149
+
150
+ return creatorAndMembersId?.length && creatorAndMembersId?.includes(currentUser?.id)
151
+ ? 1
152
+ : lastMessage?.parentId
153
+ ? lastMessage?.parentId
154
+ : lastMessage?.id ?? 0;
155
+ }, [creatorAndMembersId, lastMessage]);
156
+
157
+ React.useEffect(() => {
158
+ if (postParentId) {
159
+ setParentId(postParentId);
160
+ }
161
+ }, [postParentId]);
162
+
163
+ const channelType = useMemo(() => {
164
+ return channel?.type;
165
+ }, [channel]);
166
+
167
+ // const servicePostParentId = lastMessage?.parentId ? lastMessage?.parentId : lastMessage?.id;
168
+
169
+ return (
170
+ <div
171
+ key={`services_channel_${channel.id}`}
172
+ className={`cursor-pointer flex items-center border-b p-3 ${
173
+ showBorder ? 'border-gray-300' : 'border-transparent'
174
+ } ${channel.id == selectedChannelId ? 'bg-gray-300 dark:bg-gray-500' : ''}`}
175
+ onClick={() => handleSelectChannel(channel.id, postParentId)}
176
+ >
177
+ <div className="w-10 h-10 rounded-full bg-gray-400 flex-shrink-0 overflow-hidden">
178
+ {channel?.creator?.picture ? (
179
+ <img src={channel.creator.picture} alt="Creator avatar" className="w-full h-full object-cover" />
180
+ ) : (
181
+ <div className="w-full h-full bg-gray-400"></div>
182
+ )}
183
+ </div>
184
+ <div className="ml-2 flex-grow min-w-10 max-w-96">
185
+ {threadMessageLoading && <Skeleton />}
186
+ {!threadMessageLoading && (
187
+ <ServiceLastMessageComponent
188
+ channel={channel}
189
+ channelType={channelType}
190
+ lastMessage={lastMessage}
191
+ subscribeToNewMessages={() =>
192
+ subscribeToMore({
193
+ document: THREAD_CHAT_ADDED,
194
+ variables: {
195
+ channelId: channel?.id?.toString(),
196
+ postParentId: postParentId && postParentId == 1 ? null : servicePostParentId,
197
+ },
198
+ updateQuery: (prev, { subscriptionData }: any) => {
199
+ if (!subscriptionData.data) return prev;
200
+
201
+ const newPostThreadData: any = subscriptionData?.data?.threadCreatedUpdated?.data;
202
+ const newMessage: any = subscriptionData?.data?.threadCreatedUpdated?.lastMessage;
203
+ const updatedData =
204
+ prev?.threadMessages?.data?.map((t: any) =>
205
+ t.id === newPostThreadData?.id
206
+ ? {
207
+ ...t,
208
+ replies: [...t?.replies, newMessage],
209
+ replyCount: newPostThreadData?.replyCount,
210
+ lastReplyAt: newPostThreadData?.lastReplyAt,
211
+ updatedAt: newPostThreadData?.updatedAt,
212
+ }
213
+ : t,
214
+ ) ?? [];
215
+
216
+ return Object.assign({}, prev, {
217
+ threadMessages: {
218
+ ...prev?.threadMessages,
219
+ totalCount: newPostThreadData?.totalCount ?? 0,
220
+ // totalCount: prev?.threadMessages?.totalCount + 1,
221
+ data: updatedData?.length > 0 ? updatedData : [newPostThreadData],
222
+ },
223
+ });
224
+ },
225
+ })
226
+ }
227
+ />
228
+ )}
229
+ </div>
230
+ </div>
231
+ );
232
+ };
233
+
234
+ export const ServiceConversationItem = React.memo(ServiceConversationItemComponent);