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

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 (415) hide show
  1. package/CHANGELOG.md +16 -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 +32 -0
  7. package/lib/components/AIAgent/AIAgent.d.ts.map +1 -0
  8. package/lib/components/AIAgent/AIAgent.js +1135 -0
  9. package/lib/components/AIAgent/AIAgent.js.map +1 -0
  10. package/lib/components/AIAgent/InputComponent.d.ts +84 -0
  11. package/lib/components/AIAgent/InputComponent.d.ts.map +1 -0
  12. package/lib/components/AIAgent/InputComponent.js +417 -0
  13. package/lib/components/AIAgent/InputComponent.js.map +1 -0
  14. package/lib/components/AIAgent/index.d.ts +2 -0
  15. package/lib/components/AIAgent/index.d.ts.map +1 -0
  16. package/lib/components/InboxMessage/CommonMessage.d.ts +8 -0
  17. package/lib/components/InboxMessage/CommonMessage.d.ts.map +1 -0
  18. package/lib/components/InboxMessage/CommonMessage.js +35 -0
  19. package/lib/components/InboxMessage/CommonMessage.js.map +1 -0
  20. package/lib/components/InboxMessage/ConversationItem.d.ts +14 -0
  21. package/lib/components/InboxMessage/ConversationItem.d.ts.map +1 -0
  22. package/lib/components/InboxMessage/ConversationItem.js +200 -0
  23. package/lib/components/InboxMessage/ConversationItem.js.map +1 -0
  24. package/lib/components/InboxMessage/InputComponent.d.ts +20 -0
  25. package/lib/components/InboxMessage/InputComponent.d.ts.map +1 -0
  26. package/lib/components/InboxMessage/InputComponent.js +148 -0
  27. package/lib/components/InboxMessage/InputComponent.js.map +1 -0
  28. package/lib/components/InboxMessage/LeftSidebar.d.ts +20 -0
  29. package/lib/components/InboxMessage/LeftSidebar.d.ts.map +1 -0
  30. package/lib/components/InboxMessage/LeftSidebar.js +102 -0
  31. package/lib/components/InboxMessage/LeftSidebar.js.map +1 -0
  32. package/lib/components/InboxMessage/MessageInput.d.ts +9 -0
  33. package/lib/components/InboxMessage/MessageInput.d.ts.map +1 -0
  34. package/lib/components/InboxMessage/MessageInput.js +154 -0
  35. package/lib/components/InboxMessage/MessageInput.js.map +1 -0
  36. package/lib/components/InboxMessage/MessageInputComponent.d.ts +9 -0
  37. package/lib/components/InboxMessage/MessageInputComponent.d.ts.map +1 -0
  38. package/lib/components/InboxMessage/Messages.d.ts +17 -0
  39. package/lib/components/InboxMessage/Messages.d.ts.map +1 -0
  40. package/lib/components/InboxMessage/Messages.js +99 -0
  41. package/lib/components/InboxMessage/Messages.js.map +1 -0
  42. package/lib/components/InboxMessage/MessagesBuilderUi.d.ts +17 -0
  43. package/lib/components/InboxMessage/MessagesBuilderUi.d.ts.map +1 -0
  44. package/lib/components/InboxMessage/Popover.d.ts +3 -0
  45. package/lib/components/InboxMessage/Popover.d.ts.map +1 -0
  46. package/lib/components/InboxMessage/Popover.js +31 -0
  47. package/lib/components/InboxMessage/Popover.js.map +1 -0
  48. package/lib/components/InboxMessage/RightSidebar.d.ts +9 -0
  49. package/lib/components/InboxMessage/RightSidebar.d.ts.map +1 -0
  50. package/lib/components/InboxMessage/RightSidebar.js +9 -0
  51. package/lib/components/InboxMessage/RightSidebar.js.map +1 -0
  52. package/lib/components/InboxMessage/RightSidebarAi.d.ts +37 -0
  53. package/lib/components/InboxMessage/RightSidebarAi.d.ts.map +1 -0
  54. package/lib/components/InboxMessage/RightSidebarAi.js +9 -0
  55. package/lib/components/InboxMessage/RightSidebarAi.js.map +1 -0
  56. package/lib/components/InboxMessage/ServiceConversationItem.d.ts +12 -0
  57. package/lib/components/InboxMessage/ServiceConversationItem.d.ts.map +1 -0
  58. package/lib/components/InboxMessage/ServiceConversationItem.js +185 -0
  59. package/lib/components/InboxMessage/ServiceConversationItem.js.map +1 -0
  60. package/lib/components/InboxMessage/ServiceInboxItem.d.ts +12 -0
  61. package/lib/components/InboxMessage/ServiceInboxItem.d.ts.map +1 -0
  62. package/lib/components/InboxMessage/ServiceInboxItem.js +182 -0
  63. package/lib/components/InboxMessage/ServiceInboxItem.js.map +1 -0
  64. package/lib/components/InboxMessage/StreamingMessageBubble.d.ts +18 -0
  65. package/lib/components/InboxMessage/StreamingMessageBubble.d.ts.map +1 -0
  66. package/lib/components/InboxMessage/SubscriptionHandler.d.ts +19 -0
  67. package/lib/components/InboxMessage/SubscriptionHandler.d.ts.map +1 -0
  68. package/lib/components/InboxMessage/SubscriptionHandler.js +41 -0
  69. package/lib/components/InboxMessage/SubscriptionHandler.js.map +1 -0
  70. package/lib/components/InboxMessage/TypingIndicator.d.ts +11 -0
  71. package/lib/components/InboxMessage/TypingIndicator.d.ts.map +1 -0
  72. package/lib/components/InboxMessage/UploadImageButton.d.ts +7 -0
  73. package/lib/components/InboxMessage/UploadImageButton.d.ts.map +1 -0
  74. package/lib/components/InboxMessage/UploadImageButton.js +30 -0
  75. package/lib/components/InboxMessage/UploadImageButton.js.map +1 -0
  76. package/lib/components/InboxMessage/UserModalContent.d.ts +3 -0
  77. package/lib/components/InboxMessage/UserModalContent.d.ts.map +1 -0
  78. package/lib/components/InboxMessage/UserModalContent.js +60 -0
  79. package/lib/components/InboxMessage/UserModalContent.js.map +1 -0
  80. package/lib/components/InboxMessage/index.d.ts +19 -0
  81. package/lib/components/InboxMessage/index.d.ts.map +1 -0
  82. package/lib/components/InboxMessage/message-widgets/CommonMessage.d.ts +11 -0
  83. package/lib/components/InboxMessage/message-widgets/CommonMessage.d.ts.map +1 -0
  84. package/lib/components/InboxMessage/message-widgets/CommonMessage.js +44 -0
  85. package/lib/components/InboxMessage/message-widgets/CommonMessage.js.map +1 -0
  86. package/lib/components/InboxMessage/message-widgets/ErrorFixCard.d.ts +10 -0
  87. package/lib/components/InboxMessage/message-widgets/ErrorFixCard.d.ts.map +1 -0
  88. package/lib/components/InboxMessage/message-widgets/ErrorFixCard.js +194 -0
  89. package/lib/components/InboxMessage/message-widgets/ErrorFixCard.js.map +1 -0
  90. package/lib/components/InboxMessage/message-widgets/MessageCard.d.ts +8 -0
  91. package/lib/components/InboxMessage/message-widgets/MessageCard.d.ts.map +1 -0
  92. package/lib/components/InboxMessage/message-widgets/MessageSliceRenderer.d.ts +12 -0
  93. package/lib/components/InboxMessage/message-widgets/MessageSliceRenderer.d.ts.map +1 -0
  94. package/lib/components/InboxMessage/message-widgets/MessageSliceRenderer.js +37 -0
  95. package/lib/components/InboxMessage/message-widgets/MessageSliceRenderer.js.map +1 -0
  96. package/lib/components/InboxMessage/message-widgets/ModernMessageGroup.d.ts +42 -0
  97. package/lib/components/InboxMessage/message-widgets/ModernMessageGroup.d.ts.map +1 -0
  98. package/lib/components/InboxMessage/message-widgets/ModernMessageGroup.js +1339 -0
  99. package/lib/components/InboxMessage/message-widgets/ModernMessageGroup.js.map +1 -0
  100. package/lib/components/InboxMessage/message-widgets/PlainMessage.d.ts +8 -0
  101. package/lib/components/InboxMessage/message-widgets/PlainMessage.d.ts.map +1 -0
  102. package/lib/components/InboxMessage/message-widgets/PlainMessage.js +14 -0
  103. package/lib/components/InboxMessage/message-widgets/PlainMessage.js.map +1 -0
  104. package/lib/components/InboxMessage/message-widgets/PropertyMessageWidget.d.ts +9 -0
  105. package/lib/components/InboxMessage/message-widgets/PropertyMessageWidget.d.ts.map +1 -0
  106. package/lib/components/InboxMessage/message-widgets/SlackLikeMessageGroup.d.ts +14 -0
  107. package/lib/components/InboxMessage/message-widgets/SlackLikeMessageGroup.d.ts.map +1 -0
  108. package/lib/components/InboxMessage/message-widgets/SlackLikeMessageGroup.js +333 -0
  109. package/lib/components/InboxMessage/message-widgets/SlackLikeMessageGroup.js.map +1 -0
  110. package/lib/components/InboxMessage/message-widgets/index.d.ts +4 -0
  111. package/lib/components/InboxMessage/message-widgets/index.d.ts.map +1 -0
  112. package/lib/components/ModelConfigPanel.d.ts +74 -0
  113. package/lib/components/ModelConfigPanel.d.ts.map +1 -0
  114. package/lib/components/ModelConfigPanel.js +1152 -0
  115. package/lib/components/ModelConfigPanel.js.map +1 -0
  116. package/lib/components/filler-components/RightSiderBar.d.ts +3 -0
  117. package/lib/components/filler-components/RightSiderBar.d.ts.map +1 -0
  118. package/lib/components/filler-components/RightSiderBar.js +532 -0
  119. package/lib/components/filler-components/RightSiderBar.js.map +1 -0
  120. package/lib/components/inbox/FilesList.d.ts +20 -0
  121. package/lib/components/inbox/FilesList.d.ts.map +1 -0
  122. package/lib/components/inbox/FilesList.js +68 -0
  123. package/lib/components/inbox/FilesList.js.map +1 -0
  124. package/lib/components/inbox/MessageItem.d.ts +17 -0
  125. package/lib/components/inbox/MessageItem.d.ts.map +1 -0
  126. package/lib/components/inbox/MessageItem.js +50 -0
  127. package/lib/components/inbox/MessageItem.js.map +1 -0
  128. package/lib/components/inbox/ThreadItem.d.ts +11 -0
  129. package/lib/components/inbox/ThreadItem.d.ts.map +1 -0
  130. package/lib/components/inbox/ThreadItem.js +147 -0
  131. package/lib/components/inbox/ThreadItem.js.map +1 -0
  132. package/lib/components/inbox/index.d.ts +4 -0
  133. package/lib/components/inbox/index.d.ts.map +1 -0
  134. package/lib/components/index.d.ts +10 -0
  135. package/lib/components/index.d.ts.map +1 -0
  136. package/lib/components/live-code-editor/hybrid-live-editor.d.ts +20 -0
  137. package/lib/components/live-code-editor/hybrid-live-editor.d.ts.map +1 -0
  138. package/lib/components/live-code-editor/index.d.ts +4 -0
  139. package/lib/components/live-code-editor/index.d.ts.map +1 -0
  140. package/lib/components/live-code-editor/live-code-editor.d.ts +14 -0
  141. package/lib/components/live-code-editor/live-code-editor.d.ts.map +1 -0
  142. package/lib/components/messages-container-ui/MessagesContainerUI.d.ts +81 -0
  143. package/lib/components/messages-container-ui/MessagesContainerUI.d.ts.map +1 -0
  144. package/lib/components/messages-container-ui/MessagesContainerUI.js +77 -0
  145. package/lib/components/messages-container-ui/MessagesContainerUI.js.map +1 -0
  146. package/lib/components/messages-container-ui/PlanModeView.d.ts +82 -0
  147. package/lib/components/messages-container-ui/PlanModeView.d.ts.map +1 -0
  148. package/lib/components/messages-container-ui/PlanModeView.js +267 -0
  149. package/lib/components/messages-container-ui/PlanModeView.js.map +1 -0
  150. package/lib/components/messages-container-ui/index.d.ts +6 -0
  151. package/lib/components/messages-container-ui/index.d.ts.map +1 -0
  152. package/lib/components/messages-container-ui/types.d.ts +38 -0
  153. package/lib/components/messages-container-ui/types.d.ts.map +1 -0
  154. package/lib/components/slot-fill/chat-message-filler.d.ts +4 -0
  155. package/lib/components/slot-fill/chat-message-filler.d.ts.map +1 -0
  156. package/lib/components/slot-fill/chat-message-filler.js +5 -0
  157. package/lib/components/slot-fill/chat-message-filler.js.map +1 -0
  158. package/lib/components/slot-fill/chat-message-slot.d.ts +11 -0
  159. package/lib/components/slot-fill/chat-message-slot.d.ts.map +1 -0
  160. package/lib/components/slot-fill/chat-message-slot.js +6 -0
  161. package/lib/components/slot-fill/chat-message-slot.js.map +1 -0
  162. package/lib/components/slot-fill/index.d.ts +4 -0
  163. package/lib/components/slot-fill/index.d.ts.map +1 -0
  164. package/lib/components/slot-fill/right-sidebar-filler.d.ts +4 -0
  165. package/lib/components/slot-fill/right-sidebar-filler.d.ts.map +1 -0
  166. package/lib/components/slot-fill/right-sidebar-filler.js +13 -0
  167. package/lib/components/slot-fill/right-sidebar-filler.js.map +1 -0
  168. package/lib/components/ui/button.d.ts +9 -0
  169. package/lib/components/ui/button.d.ts.map +1 -0
  170. package/lib/compute.d.ts +8 -0
  171. package/lib/compute.d.ts.map +1 -0
  172. package/lib/compute.js +264 -0
  173. package/lib/compute.js.map +1 -0
  174. package/lib/config/env-config.d.ts +20 -0
  175. package/lib/config/env-config.d.ts.map +1 -0
  176. package/lib/config/env-config.js +55 -0
  177. package/lib/config/env-config.js.map +1 -0
  178. package/lib/config/index.d.ts +2 -0
  179. package/lib/config/index.d.ts.map +1 -0
  180. package/lib/constants/breakpoints.d.ts +8 -0
  181. package/lib/constants/breakpoints.d.ts.map +1 -0
  182. package/lib/constants/index.d.ts +3 -0
  183. package/lib/constants/index.d.ts.map +1 -0
  184. package/lib/container/AiInbox.d.ts +15 -0
  185. package/lib/container/AiInbox.d.ts.map +1 -0
  186. package/lib/container/AiInboxWithLoader.d.ts +36 -0
  187. package/lib/container/AiInboxWithLoader.d.ts.map +1 -0
  188. package/lib/container/AiLandingInput.d.ts +27 -0
  189. package/lib/container/AiLandingInput.d.ts.map +1 -0
  190. package/lib/container/AiLandingInput.js +149 -0
  191. package/lib/container/AiLandingInput.js.map +1 -0
  192. package/lib/container/Inbox.d.ts +15 -0
  193. package/lib/container/Inbox.d.ts.map +1 -0
  194. package/lib/container/Inbox.js +964 -0
  195. package/lib/container/Inbox.js.map +1 -0
  196. package/lib/container/InboxAiMessagesLoader.d.ts +45 -0
  197. package/lib/container/InboxAiMessagesLoader.d.ts.map +1 -0
  198. package/lib/container/InboxAiMessagesLoader.js +80 -0
  199. package/lib/container/InboxAiMessagesLoader.js.map +1 -0
  200. package/lib/container/InboxContainer.d.ts +41 -0
  201. package/lib/container/InboxContainer.d.ts.map +1 -0
  202. package/lib/container/InboxContainer.js +27 -0
  203. package/lib/container/InboxContainer.js.map +1 -0
  204. package/lib/container/InboxTemplate1.d.ts +15 -0
  205. package/lib/container/InboxTemplate1.d.ts.map +1 -0
  206. package/lib/container/InboxTemplate1WithLoader.d.ts +36 -0
  207. package/lib/container/InboxTemplate1WithLoader.d.ts.map +1 -0
  208. package/lib/container/InboxTemplate2.d.ts +15 -0
  209. package/lib/container/InboxTemplate2.d.ts.map +1 -0
  210. package/lib/container/InboxWithAiLoader.d.ts +47 -0
  211. package/lib/container/InboxWithAiLoader.d.ts.map +1 -0
  212. package/lib/container/InboxWithAiLoader.js +118 -0
  213. package/lib/container/InboxWithAiLoader.js.map +1 -0
  214. package/lib/container/InboxWithLoader.d.ts +36 -0
  215. package/lib/container/InboxWithLoader.d.ts.map +1 -0
  216. package/lib/container/InboxWithLoader.js +277 -0
  217. package/lib/container/InboxWithLoader.js.map +1 -0
  218. package/lib/container/ServiceInbox.d.ts +9 -0
  219. package/lib/container/ServiceInbox.d.ts.map +1 -0
  220. package/lib/container/ServiceInbox.js +141 -0
  221. package/lib/container/ServiceInbox.js.map +1 -0
  222. package/lib/container/TestInboxWithAiLoader.d.ts +7 -0
  223. package/lib/container/TestInboxWithAiLoader.d.ts.map +1 -0
  224. package/lib/container/TestInboxWithAiLoader.js +135 -0
  225. package/lib/container/TestInboxWithAiLoader.js.map +1 -0
  226. package/lib/container/ThreadMessages.d.ts +13 -0
  227. package/lib/container/ThreadMessages.d.ts.map +1 -0
  228. package/lib/container/ThreadMessages.js +320 -0
  229. package/lib/container/ThreadMessages.js.map +1 -0
  230. package/lib/container/ThreadMessagesInbox.d.ts +14 -0
  231. package/lib/container/ThreadMessagesInbox.d.ts.map +1 -0
  232. package/lib/container/ThreadMessagesInbox.js +347 -0
  233. package/lib/container/ThreadMessagesInbox.js.map +1 -0
  234. package/lib/container/Threads.d.ts +8 -0
  235. package/lib/container/Threads.d.ts.map +1 -0
  236. package/lib/container/Threads.js +231 -0
  237. package/lib/container/Threads.js.map +1 -0
  238. package/lib/container/ThreadsInbox.d.ts +21 -0
  239. package/lib/container/ThreadsInbox.d.ts.map +1 -0
  240. package/lib/container/ThreadsInbox.js +243 -0
  241. package/lib/container/ThreadsInbox.js.map +1 -0
  242. package/lib/container/apply-footer-styles.d.ts +2 -0
  243. package/lib/container/apply-footer-styles.d.ts.map +1 -0
  244. package/lib/container/apply-footer-styles.js +16 -0
  245. package/lib/container/apply-footer-styles.js.map +1 -0
  246. package/lib/container/index.d.ts +13 -0
  247. package/lib/container/index.d.ts.map +1 -0
  248. package/lib/enums/index.d.ts +2 -0
  249. package/lib/enums/index.d.ts.map +1 -0
  250. package/lib/enums/messenger-slot-fill-name-enum.d.ts +11 -0
  251. package/lib/enums/messenger-slot-fill-name-enum.d.ts.map +1 -0
  252. package/lib/enums/messenger-slot-fill-name-enum.js +11 -0
  253. package/lib/enums/messenger-slot-fill-name-enum.js.map +1 -0
  254. package/lib/hooks/index.d.ts +4 -0
  255. package/lib/hooks/index.d.ts.map +1 -0
  256. package/lib/hooks/usePersistentModelConfig.d.ts +33 -0
  257. package/lib/hooks/usePersistentModelConfig.d.ts.map +1 -0
  258. package/lib/hooks/usePersistentModelConfig.js +123 -0
  259. package/lib/hooks/usePersistentModelConfig.js.map +1 -0
  260. package/lib/hooks/useStreamAssembler.d.ts +8 -0
  261. package/lib/hooks/useStreamAssembler.d.ts.map +1 -0
  262. package/lib/hooks/useTemplates.d.ts +14 -0
  263. package/lib/hooks/useTemplates.d.ts.map +1 -0
  264. package/lib/hooks/useTemplates.js +59 -0
  265. package/lib/hooks/useTemplates.js.map +1 -0
  266. package/lib/index.d.ts +14 -0
  267. package/lib/index.d.ts.map +1 -0
  268. package/lib/index.js +1 -0
  269. package/lib/index.js.map +1 -0
  270. package/lib/interfaces/index.d.ts +2 -0
  271. package/lib/interfaces/index.d.ts.map +1 -0
  272. package/lib/interfaces/message-widgets.interface.d.ts +21 -0
  273. package/lib/interfaces/message-widgets.interface.d.ts.map +1 -0
  274. package/lib/machines/aiAgentMachine.d.ts +3 -0
  275. package/lib/machines/aiAgentMachine.d.ts.map +1 -0
  276. package/lib/machines/aiAgentMachine.js +1083 -0
  277. package/lib/machines/aiAgentMachine.js.map +1 -0
  278. package/lib/machines/aiAgentMachine.simple.d.ts +3 -0
  279. package/lib/machines/aiAgentMachine.simple.d.ts.map +1 -0
  280. package/lib/machines/aiAgentMachine.simple.js +108 -0
  281. package/lib/machines/aiAgentMachine.simple.js.map +1 -0
  282. package/lib/machines/index.d.ts +3 -0
  283. package/lib/machines/index.d.ts.map +1 -0
  284. package/lib/machines/types.d.ts +77 -0
  285. package/lib/machines/types.d.ts.map +1 -0
  286. package/lib/module.d.ts +7 -0
  287. package/lib/module.d.ts.map +1 -0
  288. package/lib/module.js +26 -0
  289. package/lib/module.js.map +1 -0
  290. package/lib/routes.json +251 -0
  291. package/lib/styles/responsive.css +76 -0
  292. package/lib/templates/InboxWithAi.d.ts +44 -0
  293. package/lib/templates/InboxWithAi.d.ts.map +1 -0
  294. package/lib/templates/InboxWithAi.js +651 -0
  295. package/lib/templates/InboxWithAi.js.map +1 -0
  296. package/lib/templates/InboxWithAi.tsx +844 -0
  297. package/lib/templates/index.d.ts +2 -0
  298. package/lib/templates/index.d.ts.map +1 -0
  299. package/lib/templates/index.ts +1 -0
  300. package/lib/types/templates.d.ts +35 -0
  301. package/lib/types/templates.d.ts.map +1 -0
  302. package/lib/utils/utils.d.ts +2 -0
  303. package/lib/utils/utils.d.ts.map +1 -0
  304. package/lib/xstate/index.d.ts +3 -0
  305. package/lib/xstate/index.d.ts.map +1 -0
  306. package/lib/xstate/rightSidebar.machine.d.ts +4 -0
  307. package/lib/xstate/rightSidebar.machine.d.ts.map +1 -0
  308. package/lib/xstate/rightSidebar.types.d.ts +57 -0
  309. package/lib/xstate/rightSidebar.types.d.ts.map +1 -0
  310. package/package.json +69 -0
  311. package/rollup.config.mjs +47 -0
  312. package/src/cdm-locales/en/translations.json +31 -0
  313. package/src/cdm-locales/es/translations.json +31 -0
  314. package/src/components/AIAgent/AIAgent.tsx +1468 -0
  315. package/src/components/AIAgent/AIAgent.tsx.bk +1365 -0
  316. package/src/components/AIAgent/InputComponent.tsx +608 -0
  317. package/src/components/AIAgent/README.md +174 -0
  318. package/src/components/AIAgent/index.ts +1 -0
  319. package/src/components/InboxMessage/CommonMessage.tsx +40 -0
  320. package/src/components/InboxMessage/ConversationItem.tsx +255 -0
  321. package/src/components/InboxMessage/InputComponent.tsx +198 -0
  322. package/src/components/InboxMessage/LeftSidebar.tsx +140 -0
  323. package/src/components/InboxMessage/MessageInput.tsx +209 -0
  324. package/src/components/InboxMessage/MessageInputComponent.tsx +245 -0
  325. package/src/components/InboxMessage/Messages.tsx +137 -0
  326. package/src/components/InboxMessage/MessagesBuilderUi.tsx +205 -0
  327. package/src/components/InboxMessage/Popover.tsx +42 -0
  328. package/src/components/InboxMessage/RightSidebar.tsx +22 -0
  329. package/src/components/InboxMessage/RightSidebarAi.tsx +47 -0
  330. package/src/components/InboxMessage/ServiceConversationItem.tsx +234 -0
  331. package/src/components/InboxMessage/ServiceInboxItem.tsx +223 -0
  332. package/src/components/InboxMessage/StreamingMessageBubble.tsx +270 -0
  333. package/src/components/InboxMessage/SubscriptionHandler.tsx +55 -0
  334. package/src/components/InboxMessage/TypingIndicator.tsx +38 -0
  335. package/src/components/InboxMessage/UploadImageButton.tsx +46 -0
  336. package/src/components/InboxMessage/UserModalContent.tsx +60 -0
  337. package/src/components/InboxMessage/index.ts +18 -0
  338. package/src/components/InboxMessage/message-widgets/CommonMessage.tsx +69 -0
  339. package/src/components/InboxMessage/message-widgets/ErrorFixCard.tsx +239 -0
  340. package/src/components/InboxMessage/message-widgets/MessageCard.tsx +127 -0
  341. package/src/components/InboxMessage/message-widgets/MessageSliceRenderer.tsx +40 -0
  342. package/src/components/InboxMessage/message-widgets/ModernMessageGroup.tsx +1733 -0
  343. package/src/components/InboxMessage/message-widgets/PlainMessage.tsx +18 -0
  344. package/src/components/InboxMessage/message-widgets/PropertyMessageWidget.tsx +29 -0
  345. package/src/components/InboxMessage/message-widgets/SlackLikeMessageGroup.tsx +492 -0
  346. package/src/components/InboxMessage/message-widgets/index.ts +8 -0
  347. package/src/components/ModelConfigPanel.tsx +1357 -0
  348. package/src/components/filler-components/RightSiderBar.tsx +572 -0
  349. package/src/components/inbox/FilesList.tsx +89 -0
  350. package/src/components/inbox/MessageItem.tsx +50 -0
  351. package/src/components/inbox/ThreadItem.tsx +295 -0
  352. package/src/components/inbox/index.ts +3 -0
  353. package/src/components/index.ts +29 -0
  354. package/src/components/live-code-editor/hybrid-live-editor.tsx +105 -0
  355. package/src/components/live-code-editor/index.ts +3 -0
  356. package/src/components/live-code-editor/live-code-editor.tsx +257 -0
  357. package/src/components/messages-container-ui/MessagesContainerUI.tsx +151 -0
  358. package/src/components/messages-container-ui/PlanModeView.tsx +426 -0
  359. package/src/components/messages-container-ui/README.md +91 -0
  360. package/src/components/messages-container-ui/index.ts +5 -0
  361. package/src/components/messages-container-ui/types.ts +40 -0
  362. package/src/components/slot-fill/chat-message-filler.tsx +18 -0
  363. package/src/components/slot-fill/chat-message-slot.tsx +18 -0
  364. package/src/components/slot-fill/index.ts +3 -0
  365. package/src/components/slot-fill/right-sidebar-filler.tsx +48 -0
  366. package/src/components/ui/button.tsx +32 -0
  367. package/src/compute.ts +271 -0
  368. package/src/config/env-config.ts +24 -0
  369. package/src/config/index.ts +1 -0
  370. package/src/constants/breakpoints.ts +7 -0
  371. package/src/constants/index.ts +5 -0
  372. package/src/container/AiInbox.tsx +1879 -0
  373. package/src/container/AiInboxWithLoader.tsx +356 -0
  374. package/src/container/AiLandingInput.tsx +200 -0
  375. package/src/container/Inbox.tsx +1095 -0
  376. package/src/container/InboxAiMessagesLoader.tsx +129 -0
  377. package/src/container/InboxContainer.tsx +61 -0
  378. package/src/container/InboxTemplate1.tsx +1553 -0
  379. package/src/container/InboxTemplate1WithLoader.tsx +338 -0
  380. package/src/container/InboxTemplate2.tsx +1617 -0
  381. package/src/container/InboxWithAiLoader.tsx +177 -0
  382. package/src/container/InboxWithLoader.tsx +341 -0
  383. package/src/container/ServiceInbox.tsx +188 -0
  384. package/src/container/TestInboxWithAiLoader.tsx +147 -0
  385. package/src/container/ThreadMessages.tsx +378 -0
  386. package/src/container/ThreadMessagesInbox.tsx +457 -0
  387. package/src/container/Threads.tsx +270 -0
  388. package/src/container/ThreadsInbox.tsx +351 -0
  389. package/src/container/apply-footer-styles.ts +17 -0
  390. package/src/container/index.ts +31 -0
  391. package/src/enums/index.ts +1 -0
  392. package/src/enums/messenger-slot-fill-name-enum.ts +10 -0
  393. package/src/hooks/index.ts +3 -0
  394. package/src/hooks/usePersistentModelConfig.ts +166 -0
  395. package/src/hooks/useStreamAssembler.ts +7 -0
  396. package/src/hooks/useTemplates.ts +75 -0
  397. package/src/index.ts +49 -0
  398. package/src/interfaces/index.ts +1 -0
  399. package/src/interfaces/message-widgets.interface.ts +21 -0
  400. package/src/machines/aiAgentMachine.simple.ts +89 -0
  401. package/src/machines/aiAgentMachine.ts +1296 -0
  402. package/src/machines/aiAgentMachine.ts.bk +1296 -0
  403. package/src/machines/index.ts +2 -0
  404. package/src/machines/types.ts +59 -0
  405. package/src/module.tsx +32 -0
  406. package/src/styles/responsive.css +76 -0
  407. package/src/templates/InboxWithAi.tsx +844 -0
  408. package/src/templates/index.ts +1 -0
  409. package/src/types/templates.ts +35 -0
  410. package/src/utils/utils.ts +3 -0
  411. package/src/xstate/index.ts +2 -0
  412. package/src/xstate/rightSidebar.machine.ts +304 -0
  413. package/src/xstate/rightSidebar.types.ts +58 -0
  414. package/tsconfig.json +14 -0
  415. package/webpack.config.js +92 -0
@@ -0,0 +1,356 @@
1
+ import React, { useMemo, useCallback } from 'react';
2
+ import { useParams, useLocation } from '@remix-run/react';
3
+ import {
4
+ useGetChannelsByUserQuery,
5
+ useGetChannelsByUserWithLastMessageQuery,
6
+ useMessagesQuery,
7
+ useViewChannelDetailQuery,
8
+ } from 'common/graphql';
9
+ import { RoomType } from 'common';
10
+ import { config } from '../config';
11
+ // import Inbox from './Inbox';
12
+ import Inbox from './AiInbox';
13
+ import AiInbox from './AiInbox';
14
+ import InboxTemplate1 from './InboxTemplate1';
15
+ import InboxTemplate2 from './InboxTemplate2';
16
+ const { MESSAGES_PER_PAGE } = config;
17
+
18
+ // Enhanced query parameters generator with better typing and flexibility
19
+ export const queryParamsGenerator = (params: {
20
+ role?: string;
21
+ criteria?: Record<string, any>;
22
+ supportServices?: boolean;
23
+ orgName?: string;
24
+ }) => ({
25
+ variable1: {
26
+ role: params.role,
27
+ criteria: {
28
+ ...params.criteria,
29
+ ...(params.orgName && { orgName: params.orgName }),
30
+ },
31
+ supportServices: params.supportServices ? true : false,
32
+ supportServiceCriteria: params.supportServices
33
+ ? {
34
+ type: RoomType.Service,
35
+ }
36
+ : undefined,
37
+ orderBy: {
38
+ lastPostAt: 'desc',
39
+ },
40
+ },
41
+ });
42
+
43
+ // Enhanced Skeleton Components
44
+ const InboxSkeleton = React.memo(({ showRightSidebar = false }: { showRightSidebar?: boolean }) => (
45
+ <div
46
+ className="h-full border-t border-gray-300 flex overflow-hidden animate-pulse"
47
+ style={{ height: '100vh !important' }}
48
+ >
49
+ {/* Left Sidebar Skeleton */}
50
+ <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">
51
+ {/* Header skeleton */}
52
+ <div className="p-4 border-b border-gray-200">
53
+ <div className="flex items-center justify-between mb-4">
54
+ <div className="h-6 bg-gray-300 rounded w-24"></div>
55
+ <div className="h-8 w-8 bg-gray-300 rounded-full"></div>
56
+ </div>
57
+ {/* Search bar skeleton */}
58
+ <div className="h-10 bg-gray-300 rounded-lg w-full"></div>
59
+ </div>
60
+
61
+ {/* Conversation list skeleton */}
62
+ <div className="p-4 space-y-3">
63
+ {Array.from({ length: 8 }).map((_, index) => (
64
+ <div key={index} className="flex items-center space-x-3 p-3 rounded-lg">
65
+ {/* Avatar skeleton */}
66
+ <div className="h-12 w-12 bg-gray-300 rounded-full flex-shrink-0"></div>
67
+ <div className="flex-1 min-w-0">
68
+ {/* Name skeleton */}
69
+ <div className="h-4 bg-gray-300 rounded w-3/4 mb-2"></div>
70
+ {/* Message preview skeleton */}
71
+ <div className="h-3 bg-gray-200 rounded w-full"></div>
72
+ </div>
73
+ <div className="flex flex-col items-end space-y-1">
74
+ {/* Time skeleton */}
75
+ <div className="h-3 bg-gray-200 rounded w-12"></div>
76
+ {/* Badge skeleton */}
77
+ <div className="h-4 w-4 bg-gray-300 rounded-full"></div>
78
+ </div>
79
+ </div>
80
+ ))}
81
+ </div>
82
+ </div>
83
+
84
+ {/* Main Content Area Skeleton */}
85
+ <div className="flex-1 min-w-0 overflow-hidden">
86
+ <div className="flex h-full">
87
+ {/* Chat content skeleton */}
88
+ <div className="flex-1 flex flex-col">
89
+ {/* Header skeleton */}
90
+ <div className="px-6 py-4 border-b border-gray-200 bg-white flex-shrink-0">
91
+ <div className="flex items-center justify-between">
92
+ <div className="h-6 bg-gray-300 rounded w-32"></div>
93
+ <div className="h-8 bg-gray-300 rounded w-20"></div>
94
+ </div>
95
+ </div>
96
+
97
+ {/* Messages area skeleton */}
98
+ <div className="flex-1 p-4 space-y-4 overflow-hidden">
99
+ {Array.from({ length: 6 }).map((_, index) => (
100
+ <div key={index} className={`flex ${index % 2 === 0 ? 'justify-start' : 'justify-end'}`}>
101
+ <div
102
+ className={`flex items-start space-x-2 max-w-xs lg:max-w-md ${
103
+ index % 2 === 0 ? '' : 'flex-row-reverse space-x-reverse'
104
+ }`}
105
+ >
106
+ {index % 2 === 0 && (
107
+ <div className="h-8 w-8 bg-gray-300 rounded-full flex-shrink-0"></div>
108
+ )}
109
+ <div
110
+ className={`px-4 py-2 rounded-lg ${
111
+ index % 2 === 0 ? 'bg-gray-200' : 'bg-gray-300'
112
+ }`}
113
+ >
114
+ <div className="h-4 bg-gray-400 rounded w-32 mb-1"></div>
115
+ <div className="h-3 bg-gray-400 rounded w-20"></div>
116
+ </div>
117
+ </div>
118
+ </div>
119
+ ))}
120
+ </div>
121
+
122
+ {/* Message input skeleton */}
123
+ <div className="p-4 border-t border-gray-200 bg-white">
124
+ <div className="flex items-center space-x-2">
125
+ <div className="h-10 bg-gray-300 rounded-full w-10"></div>
126
+ <div className="flex-1 h-10 bg-gray-300 rounded-lg"></div>
127
+ <div className="h-10 w-10 bg-gray-300 rounded-full"></div>
128
+ </div>
129
+ </div>
130
+ </div>
131
+
132
+ {/* Right Sidebar Skeleton - Desktop only, conditionally rendered */}
133
+ {showRightSidebar && (
134
+ <div className="hidden xl:block w-72 lg:w-80 xl:w-96 border-l border-gray-200 bg-white flex-shrink-0">
135
+ <div className="p-4">
136
+ {/* Right sidebar header */}
137
+ <div className="h-6 bg-gray-300 rounded w-24 mb-4"></div>
138
+
139
+ {/* Right sidebar content */}
140
+ <div className="space-y-3">
141
+ {Array.from({ length: 4 }).map((_, index) => (
142
+ <div key={index} className="p-3 border border-gray-200 rounded-lg">
143
+ <div className="h-4 bg-gray-300 rounded w-3/4 mb-2"></div>
144
+ <div className="h-3 bg-gray-200 rounded w-full mb-1"></div>
145
+ <div className="h-3 bg-gray-200 rounded w-2/3"></div>
146
+ </div>
147
+ ))}
148
+ </div>
149
+ </div>
150
+ </div>
151
+ )}
152
+ </div>
153
+ </div>
154
+ </div>
155
+ ));
156
+
157
+ const TailwindSpinner = React.memo(() => (
158
+ <div className="flex items-center justify-center min-h-screen">
159
+ <div className="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"></div>
160
+ </div>
161
+ ));
162
+
163
+ interface TailwindAlertProps {
164
+ children: React.ReactNode;
165
+ }
166
+
167
+ const TailwindAlert = React.memo(({ children }: TailwindAlertProps) => (
168
+ <div className="flex items-center justify-center min-h-screen">
169
+ <div
170
+ className="bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded relative max-w-md mx-auto"
171
+ role="alert"
172
+ >
173
+ <span className="block sm:inline">{children}</span>
174
+ </div>
175
+ </div>
176
+ ));
177
+
178
+ interface InboxWithLoaderProps {
179
+ channelFilters?: Record<string, any>;
180
+ channelRole?: string;
181
+ supportServices?: boolean;
182
+ pathPrefix?: string;
183
+ orgName?: string;
184
+ [key: string]: any; // Allow other props to be passed through to Inbox
185
+ }
186
+
187
+ const InboxWithLoader = (props: InboxWithLoaderProps) => {
188
+ const { channelFilters: channelFilterProp, channelRole: channelRoleProp, supportServices, pathPrefix } = props;
189
+ const { orgName, channelRole: channelRoleParam } = useParams();
190
+ const location = useLocation();
191
+ const urlParams = location?.search ? new URLSearchParams(location.search) : null;
192
+ const template = urlParams?.get('template');
193
+ const channelRole = channelRoleParam || channelRoleProp;
194
+ console.log('template', template);
195
+
196
+ // Create new props object with orgName instead of mutating original props
197
+ const inboxProps = useMemo(
198
+ () => ({
199
+ ...props,
200
+ orgName: orgName || '',
201
+ pathPrefix: pathPrefix || '',
202
+ }),
203
+ [props, orgName, pathPrefix],
204
+ );
205
+
206
+ const { id: pathChannelId } = useParams();
207
+
208
+ // Enhanced query variables with better filtering and stable references
209
+ const channelsQueryVariables = useMemo(() => {
210
+ const channelFilters = { ...channelFilterProp };
211
+ const channelType = channelFilters?.type ?? RoomType.Direct;
212
+ const baseFilters = {
213
+ ...channelFilters,
214
+ type: supportServices ? [channelType, RoomType.Service] : channelType,
215
+ };
216
+
217
+ return queryParamsGenerator({
218
+ role: channelRole,
219
+ criteria: baseFilters,
220
+ supportServices,
221
+ orgName: orgName || '',
222
+ }).variable1;
223
+ }, [channelRole, channelFilterProp, supportServices, orgName]);
224
+
225
+ const messagesQueryVariables = useMemo(
226
+ () => ({
227
+ channelId: pathChannelId?.toString(),
228
+ parentId: null,
229
+ limit: MESSAGES_PER_PAGE,
230
+ }),
231
+ [pathChannelId],
232
+ );
233
+
234
+ const channelDetailQueryVariables = useMemo(
235
+ () => ({
236
+ id: pathChannelId?.toString(),
237
+ }),
238
+ [pathChannelId],
239
+ );
240
+
241
+ // Enhanced Apollo queries with better cache policies and error handling
242
+ const channelsQuery = useGetChannelsByUserQuery({
243
+ variables: channelsQueryVariables,
244
+ fetchPolicy: 'cache-and-network', // Better for real-time updates
245
+ errorPolicy: 'all',
246
+ notifyOnNetworkStatusChange: false,
247
+ returnPartialData: true,
248
+ // Add context for better cache management
249
+ context: {
250
+ cacheKey: 'channels-list',
251
+ },
252
+ });
253
+
254
+ const messagesQuery = useMessagesQuery({
255
+ variables: messagesQueryVariables,
256
+ skip: !pathChannelId,
257
+ fetchPolicy: 'cache-and-network', // Better for real-time messaging
258
+ errorPolicy: 'all',
259
+ notifyOnNetworkStatusChange: true,
260
+ returnPartialData: true,
261
+ // Disable polling to allow subscriptions to work properly
262
+ pollInterval: 0,
263
+ // Add context for better cache management
264
+ context: {
265
+ cacheKey: 'messages-list',
266
+ },
267
+ });
268
+
269
+ const channelDetailQuery = useViewChannelDetailQuery({
270
+ variables: channelDetailQueryVariables,
271
+ skip: !pathChannelId,
272
+ fetchPolicy: 'cache-first', // Channel details don't change often
273
+ errorPolicy: 'all',
274
+ notifyOnNetworkStatusChange: false, // No need for real-time updates
275
+ returnPartialData: true,
276
+ // Add context for better cache management
277
+ context: {
278
+ cacheKey: 'channel-detail',
279
+ },
280
+ });
281
+
282
+ // Enhanced error handling with retry logic
283
+ const handleRetry = useCallback(() => {
284
+ if (channelsQuery.error) {
285
+ channelsQuery.refetch();
286
+ }
287
+ if (messagesQuery.error) {
288
+ messagesQuery.refetch();
289
+ }
290
+ if (channelDetailQuery.error) {
291
+ channelDetailQuery.refetch();
292
+ }
293
+ }, [channelsQuery, messagesQuery, channelDetailQuery]);
294
+
295
+ // Create loader data array for Inbox component with better error handling
296
+ const loaderData = useMemo(
297
+ () => [channelsQuery, messagesQuery, channelDetailQuery],
298
+ [channelsQuery, messagesQuery, channelDetailQuery],
299
+ );
300
+
301
+ // Enhanced loading states with better UX
302
+ if (channelsQuery.loading && !pathChannelId && !channelsQuery.data) {
303
+ return <InboxSkeleton showRightSidebar={false} />;
304
+ }
305
+
306
+ // Show skeleton during initial channel loading
307
+ if (
308
+ pathChannelId &&
309
+ (messagesQuery.loading || channelDetailQuery.loading) &&
310
+ !messagesQuery.data &&
311
+ !channelDetailQuery.data
312
+ ) {
313
+ return <InboxSkeleton showRightSidebar={true} />;
314
+ }
315
+
316
+ // Enhanced error handling with retry option
317
+ if (channelsQuery.error && !channelsQuery.data) {
318
+ return (
319
+ <div className="flex flex-col items-center justify-center min-h-screen space-y-4">
320
+ <TailwindAlert>Error loading channels: {channelsQuery.error.message}</TailwindAlert>
321
+ <button
322
+ onClick={handleRetry}
323
+ className="px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors"
324
+ >
325
+ Retry
326
+ </button>
327
+ </div>
328
+ );
329
+ }
330
+
331
+ // Handle individual query errors gracefully
332
+ if (messagesQuery.error && !messagesQuery.data && pathChannelId) {
333
+ console.warn('Messages query error:', messagesQuery.error);
334
+ }
335
+
336
+ if (channelDetailQuery.error && !channelDetailQuery.data && pathChannelId) {
337
+ console.warn('Channel detail query error:', channelDetailQuery.error);
338
+ }
339
+
340
+ // Conditional rendering based on template parameter
341
+ if (template === '1') {
342
+ return <AiInbox data={loaderData} {...inboxProps} />;
343
+ } else if (template === '2') {
344
+ return <InboxTemplate1 data={loaderData} {...inboxProps} />;
345
+ } else if (template === '3') {
346
+ return <InboxTemplate2 data={loaderData} {...inboxProps} />;
347
+ } else {
348
+ // Default fallback to Inbox
349
+ return <Inbox data={loaderData} {...inboxProps} />;
350
+ }
351
+ };
352
+
353
+ // Display name for debugging
354
+ InboxWithLoader.displayName = 'InboxWithLoader';
355
+
356
+ export default React.memo(InboxWithLoader);
@@ -0,0 +1,200 @@
1
+ import React, { useMemo } from 'react';
2
+ import { useNavigate, useParams } from '@remix-run/react';
3
+ import { AiAgentMessageRole, PostTypeEnum, RoomType } from 'common';
4
+ import { InputComponent } from '../components/AIAgent/InputComponent';
5
+ import { objectId } from '@messenger-box/core';
6
+ import { useAddChannelMutation, useSendMessagesMutation, useCreateChannelWorkflowJobMutation } from 'common/graphql';
7
+ import { ModelConfigPanel } from '../components/ModelConfigPanel';
8
+ import { config } from '../config/env-config';
9
+ import { usePersistentModelConfig } from '../hooks/usePersistentModelConfig';
10
+ const TailwindOverlaySpinner = React.memo(() => (
11
+ <div className="fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-30">
12
+ <div className="animate-spin rounded-full h-10 w-10 border-2 border-white border-t-transparent"></div>
13
+ </div>
14
+ ));
15
+
16
+ type AiLandingInputProps = {
17
+ isShowMeta?: boolean;
18
+ showModeSelector?: boolean;
19
+ showStopButton?: boolean;
20
+ onStop?: () => void;
21
+ leftItemsOverrides?: any;
22
+ rightItemsOverrides?: any;
23
+ inputToolBarProps?: any;
24
+ projectId?: string;
25
+ suggestedTemplate?: any;
26
+ onSelectTemplate?: (template: any) => void;
27
+ templateSelectedLabel?: string | null;
28
+ templateModalItems?: any[];
29
+ showTemplateModal?: boolean;
30
+ onOpenTemplateModal?: () => void;
31
+ onCloseTemplateModal?: () => void;
32
+ onSelectTemplateById?: (id: string) => void;
33
+ onClearTemplate?: () => void;
34
+ onAcceptSuggestedTemplate?: () => void;
35
+ isAnalyzingQuery?: boolean;
36
+ onQueryChange?: (query: string) => void;
37
+ [key: string]: any;
38
+ };
39
+
40
+ const AiLandingInput: React.FC<AiLandingInputProps> = ({
41
+ isShowMeta = false,
42
+ showModeSelector = false,
43
+ showStopButton = false,
44
+ onStop = () => {},
45
+ inputToolBarProps,
46
+ ...props
47
+ }) => {
48
+ const { orgName } = useParams();
49
+ const [createChannelWorkflowJob] = useCreateChannelWorkflowJobMutation();
50
+ const [addChannel] = useAddChannelMutation();
51
+ const [sendMessage] = useSendMessagesMutation();
52
+ const navigate = useNavigate();
53
+ const [isCreatingChannel, setIsCreatingChannel] = React.useState(false);
54
+ const { modelConfig, updateModelConfig, getValidatedConfig, hasApiKey } = usePersistentModelConfig();
55
+ const projectId = useMemo(() => {
56
+ return props?.projectId;
57
+ }, [props?.projectId]);
58
+ // const [showModelConfig, setShowModelConfig] = React.useState(!hasApiKey);
59
+
60
+ return (
61
+ <div className="flex items-center justify-center min-h-screen bg-white shadow-lg">
62
+ <div className="w-full max-w-2xl mx-4">
63
+ <div className="bg-white rounded-lg shadow-lg p-6 w-full max-w-4xl overflow-hidden rounded-[28px] border border-gray-200 bg-card ">
64
+ <div className="text-center mb-6">
65
+ <h3 className="text-xl font-semibold text-gray-700 mb-2">{`${
66
+ (config?.LAYOUT_SETTINGS as any)?.title ?? 'What would you like to build?'
67
+ }`}</h3>
68
+ <p className="text-gray-500">Describe your idea and I'll help you create it step by step.</p>
69
+ </div>
70
+ <div className="mb-0">
71
+ <div className={` ${!hasApiKey ? 'p-3 bg-white rounded-lg border' : ''}`}>
72
+ {!hasApiKey && (
73
+ <>
74
+ <p className="text-xs text-gray-600 mb-3">
75
+ Choose your AI model, template, and provide your API key before creating your
76
+ project.
77
+ </p>
78
+ <div className="mt-2 text-xs text-amber-600">
79
+ ⚠️ Please provide an API key to create a projects from settings
80
+ </div>
81
+ </>
82
+ )}
83
+ </div>
84
+ </div>
85
+ <InputComponent
86
+ inputToolBarParentClass="shadow-none"
87
+ // textareaClassName="border-none focus:border-none active:border-none focus:outline-none focus:ring-0"
88
+ // toolBarParentClassName="border-t border-gray-200 focus:border-t-gray-400"
89
+ handleSend={async (message: string, files: File[]) => {
90
+ const validated = getValidatedConfig();
91
+ if (!validated && !hasApiKey && !modelConfig?.extensionId && !modelConfig?.formId) {
92
+ return;
93
+ }
94
+ console.log('Message sent without channel:', message, files);
95
+ setIsCreatingChannel(true);
96
+ const id = projectId || objectId();
97
+ // const postId = objectId();
98
+ const channelId = objectId();
99
+ // Do not include extensionId inside modelConfig when sending additionalProperties
100
+ const {
101
+ extensionId: _omitExtensionId,
102
+ formId: _omitFormId,
103
+ functionId: _omitFunctionId,
104
+ stepName: _omitStepName,
105
+ ...modelConfigWithoutExtensionId
106
+ } = modelConfig || ({} as any);
107
+ createChannelWorkflowJob({
108
+ variables: {
109
+ createChannelInput: {
110
+ channelId,
111
+ title: 'AI Assistant',
112
+ description: 'AI Assistant',
113
+ displayName: 'AI Assistant',
114
+ topic: 'AI Assistant',
115
+ projectId: id,
116
+ type: RoomType.Aiassistant,
117
+ postData: {
118
+ // postId: postId,
119
+ type: PostTypeEnum.Aiassistant,
120
+ content: message,
121
+ props: {
122
+ // generateAiCode: true,
123
+ template: modelConfig?.template || 'vite-react',
124
+ projectId: id,
125
+ role: AiAgentMessageRole.User,
126
+ fragment: {},
127
+ // sendNotificationWithProjectId: true,
128
+ },
129
+ },
130
+ additionalProperties: {
131
+ modelConfig: modelConfigWithoutExtensionId,
132
+ },
133
+ },
134
+ extensionInput: {
135
+ extensionId:
136
+ modelConfig?.extensionId || config?.MESSENGER_BOX_FORM_EXTENSION_ID,
137
+ stepName:
138
+ modelConfig?.stepName ||
139
+ config?.MESSENGER_BOX_FORM_EXTENSION_STEP_NAME ||
140
+ 'extractCodeFromExtension',
141
+ formId:
142
+ modelConfig?.formId ||
143
+ config?.MESSENGER_BOX_FORM_EXTENSION_FORM_ID ||
144
+ 'form-builder-proxy',
145
+ functionId:
146
+ modelConfig?.functionId ||
147
+ config?.MESSENGER_BOX_FORM_EXTENSION_FUNCTION_ID ||
148
+ 'create-channel-function',
149
+ metadata: modelConfig?.metadata || {},
150
+ source: 'final-submission',
151
+ },
152
+ },
153
+ onCompleted: (data: any) => {
154
+ console.log('Channel created:', data);
155
+ if (!data.createChannelWorkflowJob) {
156
+ setIsCreatingChannel(false);
157
+ return;
158
+ }
159
+
160
+ const basePath = orgName
161
+ ? config.AI_MESSENGER_PATH.replace(':orgName', orgName)
162
+ : config.AI_MESSENGER_PATH;
163
+
164
+ const targetPath = basePath.includes(':id')
165
+ ? basePath.replace(':id', channelId)
166
+ : `${basePath.replace(/\/+$/, '')}/${channelId}`;
167
+
168
+ navigate(targetPath, { replace: true });
169
+ setIsCreatingChannel(false);
170
+ },
171
+ onError: (error: any) => {
172
+ console.error('Error creating channel:', error);
173
+ setIsCreatingChannel(false);
174
+ },
175
+ });
176
+ }}
177
+ placeholder="Type your message here..."
178
+ modelConfig={modelConfig}
179
+ onModelConfigChange={updateModelConfig}
180
+ isShowMeta={isShowMeta}
181
+ showModeSelector={showModeSelector}
182
+ showStopButton={showStopButton}
183
+ onStop={onStop}
184
+ inputToolBarProps={inputToolBarProps}
185
+ {...props}
186
+ leftItemsOverrides={{ template: { enabled: true }, search: { enabled: true } }}
187
+ />
188
+ {/* <div className="text-center text-sm text-gray-400">
189
+ Each project gets its own workspace where you can iterate and refine your ideas.
190
+ </div> */}
191
+ </div>
192
+ </div>
193
+ {isCreatingChannel && <TailwindOverlaySpinner />}
194
+ </div>
195
+ );
196
+ };
197
+
198
+ AiLandingInput.displayName = 'AiLandingInput';
199
+
200
+ export default React.memo(AiLandingInput);