@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,60 @@
1
+ import React from 'react';
2
+ import { useTranslation } from 'react-i18next';
3
+ import { AiOutlineSecurityScan } from '@react-icons/all-files/ai/AiOutlineSecurityScan.js';
4
+ import { FiCheck } from '@react-icons/all-files/fi/FiCheck.js';
5
+ import { BsFillStarFill } from '@react-icons/all-files/bs/BsFillStarFill.js';
6
+
7
+ export const UserModalContent = ({ username, imageUrl }: any) => {
8
+ const { t } = useTranslation('translations');
9
+
10
+ return (
11
+ <div>
12
+ <div>
13
+ <img
14
+ src={imageUrl !== '' ? imageUrl : ''}
15
+ alt="User avatar"
16
+ className="w-50 h-50 rounded-full bg-gray-400 object-cover"
17
+ style={{ width: '200px', height: '200px' }}
18
+ />
19
+ <a href="#" className="text-blue-600 hover:text-blue-800 underline">
20
+ {t('tailwind_ui_inbox.update_photo')}
21
+ </a>
22
+ <AiOutlineSecurityScan className="w-6 h-6 text-black" />
23
+ <div>
24
+ <span className="text-black font-medium">{t('tailwind_ui_inbox.identity_verification')}</span>
25
+ <p className="text-black">{t('tailwind_ui_inbox.show_others_you_are_really_you')}</p>
26
+ <button className="get-badge-btn text-black bg-transparent border border-gray-300 px-4 py-2 rounded hover:bg-gray-50 transition-colors">
27
+ {t('tailwind_ui_inbox.get_the_badge')}
28
+ </button>
29
+ </div>
30
+ <div>
31
+ <span className="text-black font-medium">
32
+ {t('tailwind_ui_inbox.username_confirmed', { username: username })}
33
+ </span>
34
+ <div className="flex items-center gap-2">
35
+ <FiCheck className="text-black" />
36
+ <p className="text-black">{t('tailwind_ui_inbox.email_address')}</p>
37
+ </div>
38
+ </div>
39
+ </div>
40
+ <div>
41
+ <div className="flex flex-col gap-2">
42
+ <span className="text-black font-medium">
43
+ {t('tailwind_ui_inbox.hi_im_username', { username: username })}
44
+ </span>
45
+ <p className="text-gray-600">{t('tailwind_ui_inbox.joined_in_date', { date: '2021' })}</p>
46
+ <a href="#" className="text-blue-600 hover:text-blue-800 underline">
47
+ {t('tailwind_ui_inbox.edit_profile')}
48
+ </a>
49
+ <div className="flex items-center gap-1">
50
+ <BsFillStarFill className="text-black text-base" />
51
+ <span className="text-black">{t('tailwind_ui_inbox.reviews')}</span>
52
+ </div>
53
+ </div>
54
+ <a href="" className="text-blue-600 hover:text-blue-800 underline">
55
+ {t('tailwind_ui_inbox.reviews_by_you')}
56
+ </a>
57
+ </div>
58
+ </div>
59
+ );
60
+ };
@@ -0,0 +1,18 @@
1
+ export * from './CommonMessage';
2
+ export * from './ConversationItem';
3
+ export * from './ServiceConversationItem';
4
+ export * from './LeftSidebar';
5
+ export * from './MessageInput';
6
+ export * from './Messages';
7
+ export * from './Popover';
8
+ export * from './UploadImageButton';
9
+ export * from './UserModalContent';
10
+ export * from './message-widgets';
11
+ export * from './RightSidebar';
12
+ export * from './ServiceInboxItem';
13
+ export * from './MessageInputComponent';
14
+ export * from './InputComponent';
15
+ export * from './MessagesBuilderUi';
16
+ export * from './RightSidebarAi';
17
+ export * from './TypingIndicator';
18
+ export * from './StreamingMessageBubble';
@@ -0,0 +1,69 @@
1
+ import * as React from 'react';
2
+ import { formatDistance } from 'date-fns';
3
+ import { BsFlag } from '@react-icons/all-files/bs/BsFlag.js';
4
+ import { IPost, IAuthUser } from 'common';
5
+ // import { IAuthUser } from '@pubngo-stack/core';
6
+ import { FilesList } from '../../inbox';
7
+
8
+ interface ICommonMessageProps {
9
+ message: IPost;
10
+ index: number;
11
+ onOpen: () => void;
12
+ currentUser: IAuthUser;
13
+ }
14
+
15
+ export const CommonMessage = (props: ICommonMessageProps) => {
16
+ const { message, index, onOpen, currentUser } = props;
17
+
18
+ // Determine if this is an AI/system message for special styling
19
+ const isSystemMessage =
20
+ message?.author?.username?.toLowerCase().includes('ai') ||
21
+ message?.author?.username?.toLowerCase().includes('assistant') ||
22
+ message?.author?.username?.toLowerCase().includes('system');
23
+
24
+ return (
25
+ <div className="w-full flex justify-start mb-7" key={`msgList_${index}`}>
26
+ <div className="flex-grow flex">
27
+ {/* User avatar - Only show for non-system messages */}
28
+ {!isSystemMessage && (
29
+ <img
30
+ className="w-8 h-8 bg-gray-400 rounded-full mr-4 cursor-pointer"
31
+ src={message?.author?.picture}
32
+ alt={message?.author?.username || 'User avatar'}
33
+ onClick={onOpen}
34
+ />
35
+ )}
36
+ <div className="flex-grow">
37
+ {/* Author header - Only show for non-system messages */}
38
+ {!isSystemMessage && (
39
+ <div className="flex flex-grow mt-1.5">
40
+ <p className="text-sm text-gray-600 font-bold">
41
+ {message?.author?.familyName && message?.author?.givenName
42
+ ? message?.author?.givenName + ' ' + message?.author?.familyName
43
+ : message?.author?.username}
44
+ </p>
45
+ <p className="text-sm text-gray-500 ml-2.5">
46
+ {formatDistance(new Date(message?.createdAt), new Date(), {
47
+ includeSeconds: true,
48
+ addSuffix: true,
49
+ })}
50
+ </p>
51
+ </div>
52
+ )}
53
+ {/* <p className="text-sm mt-1.5 whitespace-pre-line">{message?.message}</p> */}
54
+ <div
55
+ className="text-sm mt-1.5 whitespace-pre-wrap prose prose-sm max-w-none"
56
+ dangerouslySetInnerHTML={{ __html: message?.message || '' }}
57
+ />
58
+ {message.files?.totalCount ? <FilesList uploaded files={message.files?.data} /> : null}
59
+ </div>
60
+ </div>
61
+ {/* Flag button - Only show for non-system messages */}
62
+ {!isSystemMessage && currentUser?.id !== message?.author?.id && (
63
+ <div className="ml-2">
64
+ <BsFlag className="text-gray-600 w-6 h-6" />
65
+ </div>
66
+ )}
67
+ </div>
68
+ );
69
+ };
@@ -0,0 +1,239 @@
1
+ import React, { useState } from 'react';
2
+
3
+ const IconAlertTriangle: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (
4
+ <svg
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ strokeWidth="2"
9
+ strokeLinecap="round"
10
+ strokeLinejoin="round"
11
+ {...props}
12
+ >
13
+ <path d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z" />
14
+ <line x1="12" y1="9" x2="12" y2="13" />
15
+ <line x1="12" y1="17" x2="12.01" y2="17" />
16
+ </svg>
17
+ );
18
+
19
+ const IconRefreshCw: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (
20
+ <svg
21
+ viewBox="0 0 24 24"
22
+ fill="none"
23
+ stroke="currentColor"
24
+ strokeWidth="2"
25
+ strokeLinecap="round"
26
+ strokeLinejoin="round"
27
+ {...props}
28
+ >
29
+ <polyline points="23 4 23 10 17 10" />
30
+ <polyline points="1 20 1 14 7 14" />
31
+ <path d="M3.51 9a9 9 0 0114.13-3.36L23 10" />
32
+ <path d="M20.49 15a9 9 0 01-14.13 3.36L1 14" />
33
+ </svg>
34
+ );
35
+
36
+ const IconCode: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (
37
+ <svg
38
+ viewBox="0 0 24 24"
39
+ fill="none"
40
+ stroke="currentColor"
41
+ strokeWidth="2"
42
+ strokeLinecap="round"
43
+ strokeLinejoin="round"
44
+ {...props}
45
+ >
46
+ <polyline points="16 18 22 12 16 6" />
47
+ <polyline points="8 6 2 12 8 18" />
48
+ </svg>
49
+ );
50
+
51
+ const IconExternalLink: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (
52
+ <svg
53
+ viewBox="0 0 24 24"
54
+ fill="none"
55
+ stroke="currentColor"
56
+ strokeWidth="2"
57
+ strokeLinecap="round"
58
+ strokeLinejoin="round"
59
+ {...props}
60
+ >
61
+ <path d="M18 13v6a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
62
+ <polyline points="15 3 21 3 21 9" />
63
+ <line x1="10" y1="14" x2="21" y2="3" />
64
+ </svg>
65
+ );
66
+
67
+ interface ErrorFixCardProps {
68
+ error: any;
69
+ onFixError: (errorMessage: string) => Promise<void>;
70
+ currentFiles?: Record<string, string>;
71
+ isFixing?: boolean;
72
+ }
73
+
74
+ export const ErrorFixCard: React.FC<ErrorFixCardProps> = ({ error, onFixError, currentFiles, isFixing = false }) => {
75
+ const [isExpanded, setIsExpanded] = useState(false);
76
+ const [isFixingError, setIsFixingError] = useState(false);
77
+
78
+ const handleFixError = async () => {
79
+ setIsFixingError(true);
80
+ try {
81
+ const errorContext = `
82
+ ERROR DETECTED IN SANDBOX:
83
+
84
+ Error Type: ${error.errorType}
85
+ Timestamp: ${error.timestamp}
86
+ Sandbox ID: ${error.sandboxId}
87
+
88
+ Error Message:
89
+ ${error.message}
90
+
91
+ ${error.stack ? `Stack Trace:\n${error.stack}` : ''}
92
+
93
+ ${
94
+ currentFiles && Object.keys(currentFiles).length > 0
95
+ ? `
96
+ Current Files in Project:
97
+ ${Object.entries(currentFiles)
98
+ .map(
99
+ ([path, content]) => `
100
+ --- ${path} ---
101
+ ${content}
102
+ `,
103
+ )
104
+ .join('\n')}
105
+ `
106
+ : ''
107
+ }
108
+
109
+ Please analyze this error and fix the code. Make sure to:
110
+ 1. Identify the root cause of the error
111
+ 2. Update the necessary files to resolve the issue
112
+ 3. Ensure the fix maintains the existing functionality
113
+ 4. Test that the solution compiles and runs correctly
114
+ `.trim();
115
+
116
+ await onFixError(errorContext);
117
+ } catch (error) {
118
+ console.error('Failed to trigger error fix:', error);
119
+ } finally {
120
+ setIsFixingError(false);
121
+ }
122
+ };
123
+
124
+ const getErrorTypeColor = (errorType: string) => {
125
+ switch (errorType) {
126
+ case 'COMPILATION_ERROR':
127
+ return 'text-red-600 bg-red-50 border-red-200';
128
+ case 'RUNTIME_ERROR':
129
+ return 'text-orange-600 bg-orange-50 border-orange-200';
130
+ case 'DEPENDENCY_ERROR':
131
+ return 'text-yellow-600 bg-yellow-50 border-yellow-200';
132
+ case 'SERVER_START_ERROR':
133
+ return 'text-purple-600 bg-purple-50 border-purple-200';
134
+ case 'SANDBOX_DISCONNECTED':
135
+ return 'text-gray-600 bg-gray-50 border-gray-200';
136
+ case 'TEST_ERROR':
137
+ return 'text-blue-600 bg-blue-50 border-blue-200';
138
+ default:
139
+ return 'text-red-600 bg-red-50 border-red-200';
140
+ }
141
+ };
142
+
143
+ const formatErrorType = (errorType: string) => {
144
+ return errorType
145
+ .replace(/_/g, ' ')
146
+ .toLowerCase()
147
+ .replace(/\b\w/g, (l) => l.toUpperCase());
148
+ };
149
+
150
+ return (
151
+ <div className="flex w-full justify-start mb-2">
152
+ <div
153
+ className={`rounded-lg p-2 border w-fit max-w-[75%] min-w-0 break-all overflow-hidden ${getErrorTypeColor(
154
+ error.errorType,
155
+ )}`}
156
+ >
157
+ <div className="flex items-start justify-between mb-1">
158
+ <div className="flex items-center space-x-1">
159
+ <IconAlertTriangle className="w-3 h-3 text-red-600 flex-shrink-0" />
160
+ <span className="font-semibold text-xs">{formatErrorType(error.errorType)}</span>
161
+ <span className="text-xs opacity-60">{new Date(error.timestamp).toLocaleTimeString()}</span>
162
+ {error.url && (
163
+ <a
164
+ href={error.url}
165
+ target="_blank"
166
+ rel="noopener noreferrer"
167
+ className="text-xs hover:underline flex items-center space-x-1"
168
+ >
169
+ <IconExternalLink className="w-3 h-3" />
170
+ <span>View Sandbox</span>
171
+ </a>
172
+ )}
173
+ </div>
174
+ </div>
175
+
176
+ <div className="text-sm mb-3">
177
+ <div
178
+ className="break-words whitespace-pre-wrap font-mono text-xs leading-relaxed overflow-hidden"
179
+ style={{
180
+ display: '-webkit-box',
181
+ WebkitLineClamp: isExpanded ? 'none' : 3,
182
+ WebkitBoxOrient: 'vertical',
183
+ maxHeight: isExpanded ? 'none' : '3.6em',
184
+ }}
185
+ >
186
+ {error.message}
187
+ </div>
188
+ {error.message.length > 150 && (
189
+ <button
190
+ onClick={() => setIsExpanded(!isExpanded)}
191
+ className="text-xs hover:underline mt-1 font-sans"
192
+ >
193
+ {isExpanded ? 'Show less' : 'Show more'}
194
+ </button>
195
+ )}
196
+ </div>
197
+
198
+ {isExpanded && error.stack && (
199
+ <div className="mt-3 p-3 bg-black bg-opacity-10 rounded text-xs font-mono">
200
+ <div className="flex items-center space-x-2 mb-2">
201
+ <IconCode className="w-3 h-3" />
202
+ <span className="font-semibold">Stack Trace</span>
203
+ </div>
204
+ <pre className="whitespace-pre-wrap text-xs break-all">{error.stack}</pre>
205
+ </div>
206
+ )}
207
+
208
+ {error.fixable && (
209
+ <div className="mt-4 flex justify-start">
210
+ <button
211
+ onClick={handleFixError}
212
+ disabled={isFixingError || isFixing}
213
+ className={`
214
+ flex items-center space-x-2 px-4 py-2 rounded-md text-sm font-medium
215
+ transition-colors duration-200
216
+ ${
217
+ isFixingError || isFixing
218
+ ? 'bg-gray-100 text-gray-400 cursor-not-allowed'
219
+ : 'bg-red-600 text-white hover:bg-red-700 shadow-sm hover:shadow-md'
220
+ }
221
+ `}
222
+ >
223
+ <IconRefreshCw className={`w-4 h-4 ${isFixingError || isFixing ? 'animate-spin' : ''}`} />
224
+ <span>{isFixingError || isFixing ? 'Fixing...' : 'Fix Error'}</span>
225
+ </button>
226
+ </div>
227
+ )}
228
+
229
+ {!error.fixable && (
230
+ <div className="mt-3 text-xs opacity-75">
231
+ This error may require manual intervention or environment changes.
232
+ </div>
233
+ )}
234
+ </div>
235
+ </div>
236
+ );
237
+ };
238
+
239
+ export default ErrorFixCard;
@@ -0,0 +1,127 @@
1
+ import React, { useMemo } from 'react';
2
+ import { useTranslation } from 'react-i18next';
3
+ import { useNavigate } from '@remix-run/react';
4
+ import { startCase } from 'lodash-es';
5
+ import { AiFillStar } from '@react-icons/all-files/ai/AiFillStar';
6
+ import { IPost } from 'common';
7
+
8
+ export interface IPropertyCardProps {
9
+ message: IPost;
10
+ index: number;
11
+ }
12
+
13
+ // Custom hook to handle color mode (replace useColorModeValue)
14
+ const useTextColor = () => {
15
+ // You can implement your color mode logic here
16
+ // For now, using a default that works with Tailwind's dark mode
17
+ return 'text-gray-800 dark:text-white';
18
+ };
19
+
20
+ // Loading skeleton component
21
+ const LoadingSkeleton = ({ index }: { index: number }) => (
22
+ <div className="max-w-sm p-6 bg-gray-200 rounded-lg animate-pulse" key={`${index}`}>
23
+ <div className="h-48 bg-gray-300 rounded mb-4"></div>
24
+ <div className="space-y-3">
25
+ <div className="h-4 bg-gray-300 rounded w-3/4"></div>
26
+ <div className="h-4 bg-gray-300 rounded w-1/2"></div>
27
+ <div className="h-4 bg-gray-300 rounded w-5/6"></div>
28
+ <div className="h-4 bg-gray-300 rounded w-2/3"></div>
29
+ </div>
30
+ </div>
31
+ );
32
+
33
+ export const MessageCard = (props: IPropertyCardProps) => {
34
+ const { message, index } = props;
35
+ const textColor = useTextColor();
36
+ const navigate = useNavigate();
37
+ const { t } = useTranslation('translations');
38
+ const id = useMemo(() => message?.propsConfiguration?.contents?.property, [message]);
39
+ const { data, loading, error } = {
40
+ data: {
41
+ property: {
42
+ title: '',
43
+ thumbnailUrl: '',
44
+ totalStar: 4,
45
+ totalReview: 100,
46
+ type: {
47
+ category: 'Indoor',
48
+ },
49
+ serviceConfiguration: {
50
+ contents: {
51
+ property: {
52
+ pricing: {
53
+ price: 10,
54
+ priceType: 'HOUR',
55
+ },
56
+ boarding: {
57
+ maxPeople: 100,
58
+ },
59
+ },
60
+ },
61
+ },
62
+ },
63
+ },
64
+ loading: false,
65
+ error: null,
66
+ };
67
+ const property = useMemo(() => data?.property, [data]);
68
+ const { pricing, boarding } = useMemo(() => property?.serviceConfiguration?.contents?.property, [property]);
69
+
70
+ if (loading || !property) {
71
+ return <LoadingSkeleton index={index} />;
72
+ }
73
+
74
+ if (error || !property) {
75
+ return null;
76
+ }
77
+
78
+ return (
79
+ <div
80
+ className="hover:cursor-pointer m-5 max-w-xs border border-gray-200 rounded-lg overflow-hidden shadow-sm hover:shadow-md transition-shadow duration-200"
81
+ key={`${index}`}
82
+ >
83
+ <img
84
+ onClick={() => navigate(`/property/${id}`)}
85
+ className="w-full h-48 object-cover cursor-pointer hover:opacity-90 transition-opacity duration-200"
86
+ src={property.thumbnailUrl}
87
+ alt={property.title}
88
+ />
89
+ <div className="mt-4 m-2">
90
+ <div className="flex items-baseline">
91
+ <span className="inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-teal-100 text-teal-800 dark:bg-teal-800 dark:text-teal-100">
92
+ {startCase(property.type.category)}
93
+ </span>
94
+ {boarding && (
95
+ <div className="text-gray-500 font-semibold tracking-wide text-xs uppercase ml-2">
96
+ {`${boarding.maxPeople} ${t('tailwind_ui_inbox.max_people')}`}
97
+ </div>
98
+ )}
99
+ </div>
100
+ <div className="mt-3 leading-tight">
101
+ <h4 className={`${textColor} text-sm font-semibold truncate`}>{property.title}</h4>
102
+ </div>
103
+ {pricing && (
104
+ <div className="mt-2">
105
+ <span className="font-semibold">{pricing.price}</span>
106
+ <span className="text-gray-600 text-sm">&nbsp;/ {startCase(pricing.priceType)}</span>
107
+ </div>
108
+ )}
109
+ <div className="flex mt-2 items-center">
110
+ <div className="flex">
111
+ {Array(5)
112
+ .fill('')
113
+ .map((_, i) => (
114
+ <AiFillStar
115
+ key={i}
116
+ className={`w-4 h-4 ${i < property.totalStar ? 'text-teal-500' : 'text-gray-300'}`}
117
+ />
118
+ ))}
119
+ </div>
120
+ <span className="ml-2 text-gray-600 text-sm">
121
+ {t('tailwind_ui_inbox.totalReview_reviews', { totalReview: property.totalReview })}
122
+ </span>
123
+ </div>
124
+ </div>
125
+ </div>
126
+ );
127
+ };
@@ -0,0 +1,40 @@
1
+ import { IAuthUser, IPost, PostTypeEnum } from 'common';
2
+ import { Slot } from '@common-stack/components-pro';
3
+ import { CommonMessage } from './CommonMessage';
4
+ import * as React from 'react';
5
+ import { PlainMessage } from './PlainMessage';
6
+
7
+ interface IMessageSliceRendererProps {
8
+ message: IPost;
9
+ index: number;
10
+ onOpen: () => void;
11
+ currentUser: IAuthUser;
12
+ onMessageClick: (msg) => void;
13
+ }
14
+
15
+ export const MessageSliceRenderer = (props: IMessageSliceRendererProps) => {
16
+ const { message, index, onOpen, currentUser, onMessageClick } = props;
17
+
18
+ if (typeof message === 'string') {
19
+ return <PlainMessage message={message} index={index} />;
20
+ }
21
+ const { type } = message;
22
+ if (!type || type === PostTypeEnum.Simple) {
23
+ return <CommonMessage message={message} index={index} onOpen={onOpen} currentUser={currentUser} />;
24
+ }
25
+ return (
26
+ <Slot
27
+ name={(type as string)?.toLowerCase()}
28
+ fillProps={{
29
+ index,
30
+ active: true,
31
+ message,
32
+ currentUser,
33
+ onOpen,
34
+ onMessageClick,
35
+ }}
36
+ >
37
+ {(item) => <div>{item as any}</div>}
38
+ </Slot>
39
+ );
40
+ };