@botonic/react 0.40.1 → 0.41.0-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 (295) hide show
  1. package/lib/cjs/components/message/index.js +5 -1
  2. package/lib/cjs/components/message/index.js.map +1 -1
  3. package/lib/cjs/components/message/styles.d.ts +4 -2
  4. package/lib/cjs/components/message/styles.js +1 -0
  5. package/lib/cjs/components/message/styles.js.map +1 -1
  6. package/lib/cjs/components/system-debug-trace/debug-message.d.ts +7 -0
  7. package/lib/cjs/components/system-debug-trace/debug-message.js +62 -0
  8. package/lib/cjs/components/system-debug-trace/debug-message.js.map +1 -0
  9. package/lib/cjs/components/system-debug-trace/events/ai-agent.d.ts +24 -0
  10. package/lib/cjs/components/system-debug-trace/events/ai-agent.js +60 -0
  11. package/lib/cjs/components/system-debug-trace/events/ai-agent.js.map +1 -0
  12. package/lib/cjs/components/system-debug-trace/events/components/guardrail-item.d.ts +14 -0
  13. package/lib/cjs/components/system-debug-trace/events/components/guardrail-item.js +12 -0
  14. package/lib/cjs/components/system-debug-trace/events/components/guardrail-item.js.map +1 -0
  15. package/lib/cjs/components/system-debug-trace/events/components/index.d.ts +2 -0
  16. package/lib/cjs/components/system-debug-trace/events/components/index.js +6 -0
  17. package/lib/cjs/components/system-debug-trace/events/components/index.js.map +1 -0
  18. package/lib/cjs/components/system-debug-trace/events/components/sources-section.d.ts +11 -0
  19. package/lib/cjs/components/system-debug-trace/events/components/sources-section.js +21 -0
  20. package/lib/cjs/components/system-debug-trace/events/components/sources-section.js.map +1 -0
  21. package/lib/cjs/components/system-debug-trace/events/constants.d.ts +15 -0
  22. package/lib/cjs/components/system-debug-trace/events/constants.js +19 -0
  23. package/lib/cjs/components/system-debug-trace/events/constants.js.map +1 -0
  24. package/lib/cjs/components/system-debug-trace/events/fallback.d.ts +9 -0
  25. package/lib/cjs/components/system-debug-trace/events/fallback.js +19 -0
  26. package/lib/cjs/components/system-debug-trace/events/fallback.js.map +1 -0
  27. package/lib/cjs/components/system-debug-trace/events/handoff-success.d.ts +9 -0
  28. package/lib/cjs/components/system-debug-trace/events/handoff-success.js +24 -0
  29. package/lib/cjs/components/system-debug-trace/events/handoff-success.js.map +1 -0
  30. package/lib/cjs/components/system-debug-trace/events/index.d.ts +7 -0
  31. package/lib/cjs/components/system-debug-trace/events/index.js +11 -0
  32. package/lib/cjs/components/system-debug-trace/events/index.js.map +1 -0
  33. package/lib/cjs/components/system-debug-trace/events/keyword.d.ts +10 -0
  34. package/lib/cjs/components/system-debug-trace/events/keyword.js +18 -0
  35. package/lib/cjs/components/system-debug-trace/events/keyword.js.map +1 -0
  36. package/lib/cjs/components/system-debug-trace/events/knowledge-base.d.ts +17 -0
  37. package/lib/cjs/components/system-debug-trace/events/knowledge-base.js +42 -0
  38. package/lib/cjs/components/system-debug-trace/events/knowledge-base.js.map +1 -0
  39. package/lib/cjs/components/system-debug-trace/events/knowledge-bases-types.d.ts +31 -0
  40. package/lib/cjs/components/system-debug-trace/events/knowledge-bases-types.js +3 -0
  41. package/lib/cjs/components/system-debug-trace/events/knowledge-bases-types.js.map +1 -0
  42. package/lib/cjs/components/system-debug-trace/events/smart-intent.d.ts +7 -0
  43. package/lib/cjs/components/system-debug-trace/events/smart-intent.js +17 -0
  44. package/lib/cjs/components/system-debug-trace/events/smart-intent.js.map +1 -0
  45. package/lib/cjs/components/system-debug-trace/hooks/use-knowledge-base-info.d.ts +19 -0
  46. package/lib/cjs/components/system-debug-trace/hooks/use-knowledge-base-info.js +129 -0
  47. package/lib/cjs/components/system-debug-trace/hooks/use-knowledge-base-info.js.map +1 -0
  48. package/lib/cjs/components/system-debug-trace/hooks/use-last-label-position.d.ts +9 -0
  49. package/lib/cjs/components/system-debug-trace/hooks/use-last-label-position.js +72 -0
  50. package/lib/cjs/components/system-debug-trace/hooks/use-last-label-position.js.map +1 -0
  51. package/lib/cjs/components/system-debug-trace/icons/brain.d.ts +2 -0
  52. package/lib/cjs/components/system-debug-trace/icons/brain.js +10 -0
  53. package/lib/cjs/components/system-debug-trace/icons/brain.js.map +1 -0
  54. package/lib/cjs/components/system-debug-trace/icons/caret-down.d.ts +2 -0
  55. package/lib/cjs/components/system-debug-trace/icons/caret-down.js +10 -0
  56. package/lib/cjs/components/system-debug-trace/icons/caret-down.js.map +1 -0
  57. package/lib/cjs/components/system-debug-trace/icons/caret-up.d.ts +2 -0
  58. package/lib/cjs/components/system-debug-trace/icons/caret-up.js +10 -0
  59. package/lib/cjs/components/system-debug-trace/icons/caret-up.js.map +1 -0
  60. package/lib/cjs/components/system-debug-trace/icons/circle-check.d.ts +2 -0
  61. package/lib/cjs/components/system-debug-trace/icons/circle-check.js +10 -0
  62. package/lib/cjs/components/system-debug-trace/icons/circle-check.js.map +1 -0
  63. package/lib/cjs/components/system-debug-trace/icons/file-pdf.d.ts +2 -0
  64. package/lib/cjs/components/system-debug-trace/icons/file-pdf.js +10 -0
  65. package/lib/cjs/components/system-debug-trace/icons/file-pdf.js.map +1 -0
  66. package/lib/cjs/components/system-debug-trace/icons/file-word.d.ts +2 -0
  67. package/lib/cjs/components/system-debug-trace/icons/file-word.js +10 -0
  68. package/lib/cjs/components/system-debug-trace/icons/file-word.js.map +1 -0
  69. package/lib/cjs/components/system-debug-trace/icons/hand.d.ts +2 -0
  70. package/lib/cjs/components/system-debug-trace/icons/hand.js +10 -0
  71. package/lib/cjs/components/system-debug-trace/icons/hand.js.map +1 -0
  72. package/lib/cjs/components/system-debug-trace/icons/head-set.d.ts +2 -0
  73. package/lib/cjs/components/system-debug-trace/icons/head-set.js +10 -0
  74. package/lib/cjs/components/system-debug-trace/icons/head-set.js.map +1 -0
  75. package/lib/cjs/components/system-debug-trace/icons/index.d.ts +13 -0
  76. package/lib/cjs/components/system-debug-trace/icons/index.js +17 -0
  77. package/lib/cjs/components/system-debug-trace/icons/index.js.map +1 -0
  78. package/lib/cjs/components/system-debug-trace/icons/life-ring.d.ts +2 -0
  79. package/lib/cjs/components/system-debug-trace/icons/life-ring.js +10 -0
  80. package/lib/cjs/components/system-debug-trace/icons/life-ring.js.map +1 -0
  81. package/lib/cjs/components/system-debug-trace/icons/link.d.ts +2 -0
  82. package/lib/cjs/components/system-debug-trace/icons/link.js +10 -0
  83. package/lib/cjs/components/system-debug-trace/icons/link.js.map +1 -0
  84. package/lib/cjs/components/system-debug-trace/icons/quote-right.d.ts +2 -0
  85. package/lib/cjs/components/system-debug-trace/icons/quote-right.js +10 -0
  86. package/lib/cjs/components/system-debug-trace/icons/quote-right.js.map +1 -0
  87. package/lib/cjs/components/system-debug-trace/icons/screwdriver-wrench.d.ts +2 -0
  88. package/lib/cjs/components/system-debug-trace/icons/screwdriver-wrench.js +10 -0
  89. package/lib/cjs/components/system-debug-trace/icons/screwdriver-wrench.js.map +1 -0
  90. package/lib/cjs/components/system-debug-trace/icons/wand.d.ts +2 -0
  91. package/lib/cjs/components/system-debug-trace/icons/wand.js +10 -0
  92. package/lib/cjs/components/system-debug-trace/icons/wand.js.map +1 -0
  93. package/lib/cjs/components/system-debug-trace/index.d.ts +10 -0
  94. package/lib/cjs/components/system-debug-trace/index.js +29 -0
  95. package/lib/cjs/components/system-debug-trace/index.js.map +1 -0
  96. package/lib/cjs/components/system-debug-trace/styles.d.ts +26 -0
  97. package/lib/cjs/components/system-debug-trace/styles.js +267 -0
  98. package/lib/cjs/components/system-debug-trace/styles.js.map +1 -0
  99. package/lib/cjs/components/system-debug-trace/types.d.ts +13 -0
  100. package/lib/cjs/components/system-debug-trace/types.js +3 -0
  101. package/lib/cjs/components/system-debug-trace/types.js.map +1 -0
  102. package/lib/cjs/constants.d.ts +7 -0
  103. package/lib/cjs/constants.js +27 -20
  104. package/lib/cjs/constants.js.map +1 -1
  105. package/lib/cjs/index-types.d.ts +14 -2
  106. package/lib/cjs/index-types.js +1 -0
  107. package/lib/cjs/index-types.js.map +1 -1
  108. package/lib/cjs/message-utils.d.ts +1 -0
  109. package/lib/cjs/message-utils.js +3 -1
  110. package/lib/cjs/message-utils.js.map +1 -1
  111. package/lib/cjs/msg-to-botonic.js +5 -0
  112. package/lib/cjs/msg-to-botonic.js.map +1 -1
  113. package/lib/cjs/webchat/context/messages-reducer.js +9 -3
  114. package/lib/cjs/webchat/context/messages-reducer.js.map +1 -1
  115. package/lib/cjs/webchat/context/types.d.ts +2 -1
  116. package/lib/cjs/webchat/message-list/index.js +11 -2
  117. package/lib/cjs/webchat/message-list/index.js.map +1 -1
  118. package/lib/cjs/webchat/message-list/styles.d.ts +5 -1
  119. package/lib/cjs/webchat/message-list/styles.js +3 -2
  120. package/lib/cjs/webchat/message-list/styles.js.map +1 -1
  121. package/lib/cjs/webchat/webchat.js +12 -0
  122. package/lib/cjs/webchat/webchat.js.map +1 -1
  123. package/lib/cjs/webchat-app.d.ts +4 -2
  124. package/lib/cjs/webchat-app.js +25 -10
  125. package/lib/cjs/webchat-app.js.map +1 -1
  126. package/lib/esm/components/message/index.js +5 -1
  127. package/lib/esm/components/message/index.js.map +1 -1
  128. package/lib/esm/components/message/styles.d.ts +4 -2
  129. package/lib/esm/components/message/styles.js +1 -0
  130. package/lib/esm/components/message/styles.js.map +1 -1
  131. package/lib/esm/components/system-debug-trace/debug-message.d.ts +7 -0
  132. package/lib/esm/components/system-debug-trace/debug-message.js +58 -0
  133. package/lib/esm/components/system-debug-trace/debug-message.js.map +1 -0
  134. package/lib/esm/components/system-debug-trace/events/ai-agent.d.ts +24 -0
  135. package/lib/esm/components/system-debug-trace/events/ai-agent.js +55 -0
  136. package/lib/esm/components/system-debug-trace/events/ai-agent.js.map +1 -0
  137. package/lib/esm/components/system-debug-trace/events/components/guardrail-item.d.ts +14 -0
  138. package/lib/esm/components/system-debug-trace/events/components/guardrail-item.js +7 -0
  139. package/lib/esm/components/system-debug-trace/events/components/guardrail-item.js.map +1 -0
  140. package/lib/esm/components/system-debug-trace/events/components/index.d.ts +2 -0
  141. package/lib/esm/components/system-debug-trace/events/components/index.js +3 -0
  142. package/lib/esm/components/system-debug-trace/events/components/index.js.map +1 -0
  143. package/lib/esm/components/system-debug-trace/events/components/sources-section.d.ts +11 -0
  144. package/lib/esm/components/system-debug-trace/events/components/sources-section.js +17 -0
  145. package/lib/esm/components/system-debug-trace/events/components/sources-section.js.map +1 -0
  146. package/lib/esm/components/system-debug-trace/events/constants.d.ts +15 -0
  147. package/lib/esm/components/system-debug-trace/events/constants.js +16 -0
  148. package/lib/esm/components/system-debug-trace/events/constants.js.map +1 -0
  149. package/lib/esm/components/system-debug-trace/events/fallback.d.ts +9 -0
  150. package/lib/esm/components/system-debug-trace/events/fallback.js +15 -0
  151. package/lib/esm/components/system-debug-trace/events/fallback.js.map +1 -0
  152. package/lib/esm/components/system-debug-trace/events/handoff-success.d.ts +9 -0
  153. package/lib/esm/components/system-debug-trace/events/handoff-success.js +19 -0
  154. package/lib/esm/components/system-debug-trace/events/handoff-success.js.map +1 -0
  155. package/lib/esm/components/system-debug-trace/events/index.d.ts +7 -0
  156. package/lib/esm/components/system-debug-trace/events/index.js +8 -0
  157. package/lib/esm/components/system-debug-trace/events/index.js.map +1 -0
  158. package/lib/esm/components/system-debug-trace/events/keyword.d.ts +10 -0
  159. package/lib/esm/components/system-debug-trace/events/keyword.js +14 -0
  160. package/lib/esm/components/system-debug-trace/events/keyword.js.map +1 -0
  161. package/lib/esm/components/system-debug-trace/events/knowledge-base.d.ts +17 -0
  162. package/lib/esm/components/system-debug-trace/events/knowledge-base.js +37 -0
  163. package/lib/esm/components/system-debug-trace/events/knowledge-base.js.map +1 -0
  164. package/lib/esm/components/system-debug-trace/events/knowledge-bases-types.d.ts +31 -0
  165. package/lib/esm/components/system-debug-trace/events/knowledge-bases-types.js +2 -0
  166. package/lib/esm/components/system-debug-trace/events/knowledge-bases-types.js.map +1 -0
  167. package/lib/esm/components/system-debug-trace/events/smart-intent.d.ts +7 -0
  168. package/lib/esm/components/system-debug-trace/events/smart-intent.js +13 -0
  169. package/lib/esm/components/system-debug-trace/events/smart-intent.js.map +1 -0
  170. package/lib/esm/components/system-debug-trace/hooks/use-knowledge-base-info.d.ts +19 -0
  171. package/lib/esm/components/system-debug-trace/hooks/use-knowledge-base-info.js +125 -0
  172. package/lib/esm/components/system-debug-trace/hooks/use-knowledge-base-info.js.map +1 -0
  173. package/lib/esm/components/system-debug-trace/hooks/use-last-label-position.d.ts +9 -0
  174. package/lib/esm/components/system-debug-trace/hooks/use-last-label-position.js +68 -0
  175. package/lib/esm/components/system-debug-trace/hooks/use-last-label-position.js.map +1 -0
  176. package/lib/esm/components/system-debug-trace/icons/brain.d.ts +2 -0
  177. package/lib/esm/components/system-debug-trace/icons/brain.js +6 -0
  178. package/lib/esm/components/system-debug-trace/icons/brain.js.map +1 -0
  179. package/lib/esm/components/system-debug-trace/icons/caret-down.d.ts +2 -0
  180. package/lib/esm/components/system-debug-trace/icons/caret-down.js +6 -0
  181. package/lib/esm/components/system-debug-trace/icons/caret-down.js.map +1 -0
  182. package/lib/esm/components/system-debug-trace/icons/caret-up.d.ts +2 -0
  183. package/lib/esm/components/system-debug-trace/icons/caret-up.js +6 -0
  184. package/lib/esm/components/system-debug-trace/icons/caret-up.js.map +1 -0
  185. package/lib/esm/components/system-debug-trace/icons/circle-check.d.ts +2 -0
  186. package/lib/esm/components/system-debug-trace/icons/circle-check.js +6 -0
  187. package/lib/esm/components/system-debug-trace/icons/circle-check.js.map +1 -0
  188. package/lib/esm/components/system-debug-trace/icons/file-pdf.d.ts +2 -0
  189. package/lib/esm/components/system-debug-trace/icons/file-pdf.js +6 -0
  190. package/lib/esm/components/system-debug-trace/icons/file-pdf.js.map +1 -0
  191. package/lib/esm/components/system-debug-trace/icons/file-word.d.ts +2 -0
  192. package/lib/esm/components/system-debug-trace/icons/file-word.js +6 -0
  193. package/lib/esm/components/system-debug-trace/icons/file-word.js.map +1 -0
  194. package/lib/esm/components/system-debug-trace/icons/hand.d.ts +2 -0
  195. package/lib/esm/components/system-debug-trace/icons/hand.js +6 -0
  196. package/lib/esm/components/system-debug-trace/icons/hand.js.map +1 -0
  197. package/lib/esm/components/system-debug-trace/icons/head-set.d.ts +2 -0
  198. package/lib/esm/components/system-debug-trace/icons/head-set.js +6 -0
  199. package/lib/esm/components/system-debug-trace/icons/head-set.js.map +1 -0
  200. package/lib/esm/components/system-debug-trace/icons/index.d.ts +13 -0
  201. package/lib/esm/components/system-debug-trace/icons/index.js +14 -0
  202. package/lib/esm/components/system-debug-trace/icons/index.js.map +1 -0
  203. package/lib/esm/components/system-debug-trace/icons/life-ring.d.ts +2 -0
  204. package/lib/esm/components/system-debug-trace/icons/life-ring.js +6 -0
  205. package/lib/esm/components/system-debug-trace/icons/life-ring.js.map +1 -0
  206. package/lib/esm/components/system-debug-trace/icons/link.d.ts +2 -0
  207. package/lib/esm/components/system-debug-trace/icons/link.js +6 -0
  208. package/lib/esm/components/system-debug-trace/icons/link.js.map +1 -0
  209. package/lib/esm/components/system-debug-trace/icons/quote-right.d.ts +2 -0
  210. package/lib/esm/components/system-debug-trace/icons/quote-right.js +6 -0
  211. package/lib/esm/components/system-debug-trace/icons/quote-right.js.map +1 -0
  212. package/lib/esm/components/system-debug-trace/icons/screwdriver-wrench.d.ts +2 -0
  213. package/lib/esm/components/system-debug-trace/icons/screwdriver-wrench.js +6 -0
  214. package/lib/esm/components/system-debug-trace/icons/screwdriver-wrench.js.map +1 -0
  215. package/lib/esm/components/system-debug-trace/icons/wand.d.ts +2 -0
  216. package/lib/esm/components/system-debug-trace/icons/wand.js +6 -0
  217. package/lib/esm/components/system-debug-trace/icons/wand.js.map +1 -0
  218. package/lib/esm/components/system-debug-trace/index.d.ts +10 -0
  219. package/lib/esm/components/system-debug-trace/index.js +25 -0
  220. package/lib/esm/components/system-debug-trace/index.js.map +1 -0
  221. package/lib/esm/components/system-debug-trace/styles.d.ts +26 -0
  222. package/lib/esm/components/system-debug-trace/styles.js +263 -0
  223. package/lib/esm/components/system-debug-trace/styles.js.map +1 -0
  224. package/lib/esm/components/system-debug-trace/types.d.ts +13 -0
  225. package/lib/esm/components/system-debug-trace/types.js +2 -0
  226. package/lib/esm/components/system-debug-trace/types.js.map +1 -0
  227. package/lib/esm/constants.d.ts +7 -0
  228. package/lib/esm/constants.js +27 -20
  229. package/lib/esm/constants.js.map +1 -1
  230. package/lib/esm/index-types.d.ts +14 -2
  231. package/lib/esm/index-types.js +1 -0
  232. package/lib/esm/index-types.js.map +1 -1
  233. package/lib/esm/message-utils.d.ts +1 -0
  234. package/lib/esm/message-utils.js +1 -0
  235. package/lib/esm/message-utils.js.map +1 -1
  236. package/lib/esm/msg-to-botonic.js +6 -1
  237. package/lib/esm/msg-to-botonic.js.map +1 -1
  238. package/lib/esm/webchat/context/messages-reducer.js +9 -3
  239. package/lib/esm/webchat/context/messages-reducer.js.map +1 -1
  240. package/lib/esm/webchat/context/types.d.ts +2 -1
  241. package/lib/esm/webchat/message-list/index.js +12 -3
  242. package/lib/esm/webchat/message-list/index.js.map +1 -1
  243. package/lib/esm/webchat/message-list/styles.d.ts +5 -1
  244. package/lib/esm/webchat/message-list/styles.js +2 -1
  245. package/lib/esm/webchat/message-list/styles.js.map +1 -1
  246. package/lib/esm/webchat/webchat.js +12 -0
  247. package/lib/esm/webchat/webchat.js.map +1 -1
  248. package/lib/esm/webchat-app.d.ts +4 -2
  249. package/lib/esm/webchat-app.js +25 -10
  250. package/lib/esm/webchat-app.js.map +1 -1
  251. package/package.json +2 -2
  252. package/src/components/message/index.jsx +6 -0
  253. package/src/components/message/styles.ts +6 -2
  254. package/src/components/system-debug-trace/debug-message.tsx +111 -0
  255. package/src/components/system-debug-trace/events/ai-agent.tsx +158 -0
  256. package/src/components/system-debug-trace/events/components/guardrail-item.tsx +53 -0
  257. package/src/components/system-debug-trace/events/components/index.ts +2 -0
  258. package/src/components/system-debug-trace/events/components/sources-section.tsx +66 -0
  259. package/src/components/system-debug-trace/events/constants.ts +15 -0
  260. package/src/components/system-debug-trace/events/fallback.tsx +31 -0
  261. package/src/components/system-debug-trace/events/handoff-success.tsx +43 -0
  262. package/src/components/system-debug-trace/events/index.ts +7 -0
  263. package/src/components/system-debug-trace/events/keyword.tsx +31 -0
  264. package/src/components/system-debug-trace/events/knowledge-base.tsx +115 -0
  265. package/src/components/system-debug-trace/events/knowledge-bases-types.ts +33 -0
  266. package/src/components/system-debug-trace/events/smart-intent.tsx +26 -0
  267. package/src/components/system-debug-trace/hooks/use-knowledge-base-info.tsx +170 -0
  268. package/src/components/system-debug-trace/hooks/use-last-label-position.ts +94 -0
  269. package/src/components/system-debug-trace/icons/brain.tsx +15 -0
  270. package/src/components/system-debug-trace/icons/caret-down.tsx +15 -0
  271. package/src/components/system-debug-trace/icons/caret-up.tsx +15 -0
  272. package/src/components/system-debug-trace/icons/circle-check.tsx +15 -0
  273. package/src/components/system-debug-trace/icons/file-pdf.tsx +15 -0
  274. package/src/components/system-debug-trace/icons/file-word.tsx +15 -0
  275. package/src/components/system-debug-trace/icons/hand.tsx +15 -0
  276. package/src/components/system-debug-trace/icons/head-set.tsx +15 -0
  277. package/src/components/system-debug-trace/icons/index.ts +13 -0
  278. package/src/components/system-debug-trace/icons/life-ring.tsx +15 -0
  279. package/src/components/system-debug-trace/icons/link.tsx +15 -0
  280. package/src/components/system-debug-trace/icons/quote-right.tsx +15 -0
  281. package/src/components/system-debug-trace/icons/screwdriver-wrench.tsx +15 -0
  282. package/src/components/system-debug-trace/icons/wand.tsx +15 -0
  283. package/src/components/system-debug-trace/index.tsx +46 -0
  284. package/src/components/system-debug-trace/styles.ts +286 -0
  285. package/src/components/system-debug-trace/types.ts +31 -0
  286. package/src/constants.js +27 -20
  287. package/src/index-types.ts +19 -1
  288. package/src/message-utils.js +2 -0
  289. package/src/msg-to-botonic.jsx +5 -0
  290. package/src/webchat/context/messages-reducer.ts +7 -3
  291. package/src/webchat/context/types.ts +6 -1
  292. package/src/webchat/message-list/index.tsx +20 -6
  293. package/src/webchat/message-list/styles.ts +7 -1
  294. package/src/webchat/webchat.tsx +14 -0
  295. package/src/webchat-app.tsx +27 -6
@@ -0,0 +1,286 @@
1
+ import styled from 'styled-components'
2
+
3
+ import { COLORS } from '../../constants'
4
+
5
+ export const StyledDebugContainer = styled.div`
6
+ display: flex;
7
+ flex-direction: column;
8
+ align-items: start;
9
+ justify-content: space-between;
10
+ gap: 12px;
11
+
12
+ background-color: ${COLORS.SOLID_WHITE};
13
+ border-radius: 6px;
14
+ font-family: 'Inter', sans-serif;
15
+ box-sizing: border-box;
16
+ margin: 0px 8px;
17
+ max-width: calc(100% - 16px);
18
+ width: 100%;
19
+
20
+ /* When collapsible (expanded or collapsed), entire container is hoverable and clickable */
21
+ &.collapsible {
22
+ cursor: pointer;
23
+
24
+ &:hover {
25
+ background-color: ${COLORS.N50};
26
+ }
27
+ }
28
+ `
29
+
30
+ export const StyledDebugHeader = styled.div`
31
+ display: flex;
32
+ align-items: center;
33
+ justify-content: space-between;
34
+ box-sizing: border-box;
35
+ user-select: none;
36
+ border-radius: 6px;
37
+ padding: 8px 12px;
38
+ width: 100%;
39
+ `
40
+
41
+ export const StyledDebugArrow = styled.span`
42
+ display: inline-flex;
43
+ align-items: center;
44
+ justify-content: center;
45
+ width: 16px;
46
+ height: 16px;
47
+ flex-shrink: 0;
48
+
49
+ svg {
50
+ width: 100%;
51
+ height: 100%;
52
+ }
53
+ `
54
+
55
+ export const StyledDebugIcon = styled.span`
56
+ display: inline-flex;
57
+ align-items: center;
58
+ justify-content: center;
59
+ width: 14px;
60
+ height: 14px;
61
+ margin-right: 8px;
62
+ flex-shrink: 0;
63
+
64
+ svg {
65
+ width: 100%;
66
+ height: 100%;
67
+ }
68
+ `
69
+
70
+ export const StyledDebugTitle = styled.span`
71
+ flex: 1;
72
+ display: flex;
73
+ align-items: center;
74
+
75
+ font-weight: 600;
76
+ font-size: 12px;
77
+ color: ${COLORS.N700};
78
+ line-height: 1.5;
79
+ white-space: nowrap;
80
+ gap: 4px;
81
+
82
+ span {
83
+ font-weight: 400;
84
+ }
85
+ `
86
+
87
+ export const StyledDebugContent = styled.div`
88
+ display: flex;
89
+ flex-direction: column;
90
+ position: relative;
91
+
92
+ font-size: 12px;
93
+ line-height: 1.5;
94
+ color: ${COLORS.N700};
95
+ `
96
+ interface StyledDebugDetailProps {
97
+ $isLastItem?: boolean
98
+ }
99
+ export const StyledDebugDetail = styled.div<StyledDebugDetailProps>`
100
+ display: flex;
101
+ flex-direction: column;
102
+ gap: 4px;
103
+ padding-left: 28px;
104
+ margin-bottom: ${({ $isLastItem }) => ($isLastItem ? '0' : '8px')};
105
+ line-height: 1.5;
106
+ `
107
+
108
+ export const StyledDebugLabel = styled.strong`
109
+ color: ${COLORS.N700};
110
+ font-weight: 400;
111
+ font-size: 12px;
112
+ line-height: 1.5;
113
+ `
114
+
115
+ export const StyledDebugValue = styled.div`
116
+ display: flex;
117
+ align-items: center;
118
+ gap: 8px;
119
+ font-weight: 600;
120
+ font-size: 12px;
121
+ color: ${COLORS.N700};
122
+ line-height: 1.5;
123
+
124
+ > svg {
125
+ width: 14px;
126
+ height: 14px;
127
+ min-width: 14px;
128
+ min-height: 14px;
129
+ flex-shrink: 0;
130
+ display: block;
131
+ }
132
+ `
133
+
134
+ export const StyledDebugItemWithIcon = styled.div`
135
+ display: flex;
136
+ align-items: center;
137
+ gap: 8px;
138
+ padding: 0;
139
+ font-weight: 600;
140
+ font-size: 12px;
141
+ color: ${COLORS.N700};
142
+ line-height: 1.5;
143
+
144
+ &:not(:last-child) {
145
+ margin-bottom: 4px;
146
+ }
147
+
148
+ > svg {
149
+ width: 14px;
150
+ height: 14px;
151
+ min-width: 14px;
152
+ min-height: 14px;
153
+ flex-shrink: 0;
154
+ display: block;
155
+ }
156
+ `
157
+
158
+ export const StyledDebugMetadata = styled.div`
159
+ margin-top: 8px;
160
+ padding-top: 12px;
161
+ border-top: 1px solid ${COLORS.N100};
162
+ color: ${COLORS.N700};
163
+ font-size: 12px;
164
+ padding-left: 28px;
165
+
166
+ > div {
167
+ margin-top: 6px;
168
+ font-weight: 400;
169
+ }
170
+ `
171
+
172
+ export const StyledSeeChunksButton = styled.button`
173
+ border: 1px solid #c4c6d0;
174
+ border-radius: 6px;
175
+ padding: 8px;
176
+ height: 28px;
177
+ background-color: transparent;
178
+ color: #413f48;
179
+ font-family: 'Inter', sans-serif;
180
+ font-size: 12px;
181
+ font-weight: 500;
182
+ line-height: 1.5;
183
+ cursor: pointer;
184
+ margin-left: 0;
185
+ margin-top: 4px;
186
+ display: flex;
187
+ align-items: center;
188
+ justify-content: center;
189
+ width: fit-content;
190
+
191
+ &:hover {
192
+ background-color: ${COLORS.N200};
193
+ }
194
+ `
195
+ interface StyledGuardrailItemProps {
196
+ $isLastItem?: boolean
197
+ }
198
+ export const StyledGuardrailItem = styled.div<StyledGuardrailItemProps>`
199
+ display: flex;
200
+ align-items: center;
201
+ gap: 8px;
202
+ padding-left: 28px;
203
+ margin-bottom: ${({ $isLastItem }) => ($isLastItem ? '0' : '8px')};
204
+ font-size: 12px;
205
+ line-height: 1.5;
206
+ color: ${COLORS.N700};
207
+
208
+ svg {
209
+ width: 14px;
210
+ height: 14px;
211
+ flex-shrink: 0;
212
+ }
213
+ `
214
+
215
+ export const StyledDebugContentWrapper = styled.div`
216
+ display: flex;
217
+ flex-direction: column;
218
+ gap: 8px;
219
+ position: relative;
220
+
221
+ /* Create line from first label to last label */
222
+ &::before {
223
+ content: '';
224
+ position: absolute;
225
+ left: 13px;
226
+ width: 1px;
227
+ background-color: ${COLORS.N100};
228
+ top: 0;
229
+ /* Height ends at last label's bottom position */
230
+ height: var(--last-label-bottom, 100%);
231
+ }
232
+
233
+ /* Change line color to N200 when collapsible event is hovered */
234
+ .collapsible:hover & {
235
+ &::before {
236
+ background-color: ${COLORS.N200};
237
+ }
238
+ }
239
+ `
240
+
241
+ export const StyledGuardrailLabel = styled.span`
242
+ font-weight: 600;
243
+ font-size: 12px;
244
+ line-height: 1.5;
245
+ color: ${COLORS.N700};
246
+ `
247
+
248
+ export const StyledGuardrailValue = styled.span`
249
+ font-weight: 400;
250
+ font-size: 12px;
251
+ line-height: 1.5;
252
+ color: ${COLORS.N700};
253
+ `
254
+
255
+ export const StyledSourceValue = styled.span`
256
+ font-weight: 600;
257
+ font-size: 12px;
258
+ line-height: 1.5;
259
+ color: ${COLORS.N700};
260
+ `
261
+
262
+ export const StyledFileSourceValue = styled(StyledSourceValue)`
263
+ display: block;
264
+ `
265
+
266
+ export const StyledUrlSourceValue = styled.a`
267
+ font-weight: 600;
268
+ font-size: 12px;
269
+ line-height: 1.5;
270
+ color: ${COLORS.N700};
271
+ text-decoration: none;
272
+ display: block;
273
+ overflow: hidden;
274
+ text-overflow: ellipsis;
275
+ white-space: nowrap;
276
+ max-width: 100%;
277
+
278
+ &:hover {
279
+ text-decoration: underline;
280
+ color: ${COLORS.BOTONIC_BLUE};
281
+ }
282
+
283
+ &:visited {
284
+ color: ${COLORS.N700};
285
+ }
286
+ `
@@ -0,0 +1,31 @@
1
+ import React from 'react'
2
+
3
+ import {
4
+ AiAgentDebugEvent,
5
+ FallbackDebugEvent,
6
+ HandoffSuccessDebugEvent,
7
+ KeywordDebugEvent,
8
+ KnowledgeBaseDebugEvent,
9
+ SmartIntentDebugEvent,
10
+ } from './events'
11
+
12
+ export interface IconProps {
13
+ color?: string
14
+ }
15
+
16
+ // Union type of all debug event types
17
+ export type DebugEvent =
18
+ | KeywordDebugEvent
19
+ | AiAgentDebugEvent
20
+ | KnowledgeBaseDebugEvent
21
+ | FallbackDebugEvent
22
+ | SmartIntentDebugEvent
23
+ | HandoffSuccessDebugEvent
24
+
25
+ export interface DebugEventConfig {
26
+ action: string
27
+ title: React.ReactNode
28
+ component: React.ComponentType<any> | null
29
+ icon?: React.ReactNode
30
+ collapsible?: boolean
31
+ }
package/src/constants.js CHANGED
@@ -3,32 +3,37 @@ import UrlIcon from './assets/url-icon.png'
3
3
 
4
4
  export const COLORS = {
5
5
  // http://chir.ag/projects/name-that-color
6
- APPLE_GREEN: 'rgba(58, 156, 53, 1)',
7
- BLEACHED_CEDAR_PURPLE: 'rgba(46, 32, 59, 1)',
8
- BOTONIC_BLUE: 'rgba(0, 153, 255, 1)',
9
- CACTUS_GREEN: 'rgba(96, 115, 94, 1)',
10
- CONCRETE_WHITE: 'rgba(243, 243, 243, 1)',
11
- CURIOUS_BLUE: 'rgba(38, 139, 210, 1)',
12
- DAINTREE_BLUE: 'rgba(0, 43, 53, 1)',
13
- ERROR_RED: 'rgba(255, 43, 94)',
14
- FRINGY_FLOWER_GREEN: 'rgba(198, 231, 192, 1)',
15
- GRAY: 'rgba(129, 129, 129, 1)',
16
- LIGHT_GRAY: 'rgba(209, 209, 209, 1)',
17
- MID_GRAY: 'rgba(105, 105, 115, 1)',
6
+ APPLE_GREEN: '#3A9C35',
7
+ BLEACHED_CEDAR_PURPLE: '#2E203B',
8
+ BOTONIC_BLUE: '#0099FF',
9
+ CACTUS_GREEN: '#60735E',
10
+ CONCRETE_WHITE: '#F3F3F3',
11
+ CURIOUS_BLUE: '#268BD2',
12
+ DAINTREE_BLUE: '#002B35',
13
+ ERROR_RED: '#FF2B5E',
14
+ FRINGY_FLOWER_GREEN: '#C6E7C0',
15
+ GRAY: '#818181',
16
+ LIGHT_GRAY: '#D1D1D1',
17
+ MID_GRAY: '#696973',
18
18
  PIGEON_POST_BLUE_ALPHA_0_5: 'rgba(176, 196, 222, 0.5)',
19
- RED_NOTIFICATIONS: 'rgba(255, 66, 111, 1)',
20
- SCORPION_GRAY: 'rgba(87, 87, 87, 1)',
21
- SEASHELL_WHITE: 'rgba(241, 240, 240, 1)',
22
- SILVER: 'rgba(200, 200, 200, 1)',
19
+ RED_NOTIFICATIONS: '#FF426F',
20
+ SCORPION_GRAY: '#575757',
21
+ SEASHELL_WHITE: '#F1F0F0',
22
+ SILVER: '#C8C8C8',
23
23
  SOLID_BLACK_ALPHA_0_2: 'rgba(0, 0, 0, 0.2)',
24
24
  SOLID_BLACK_ALPHA_0_5: 'rgba(0, 0, 0, 0.5)',
25
- SOLID_BLACK: 'rgba(0, 0, 0, 1)',
25
+ SOLID_BLACK: '#000000',
26
26
  SOLID_WHITE_ALPHA_0_2: 'rgba(255, 255, 255, 0.2)',
27
27
  SOLID_WHITE_ALPHA_0_8: 'rgba(255, 255, 255, 0.8)',
28
- SOLID_WHITE: 'rgba(255, 255, 255, 1)',
29
- TASMAN_GRAY: 'rgba(209, 216, 207, 1)',
28
+ SOLID_WHITE: '#FFFFFF',
29
+ TASMAN_GRAY: '#D1D8CF',
30
30
  TRANSPARENT: 'rgba(0, 0, 0, 0)',
31
- WILD_SAND_WHITE: 'rgba(244, 244, 244, 1)',
31
+ WILD_SAND_WHITE: '#F4F4F4',
32
+ N50: '#F0F0F3',
33
+ N100: '#E8E8EA',
34
+ N200: '#CAC9CE',
35
+ N500: '#6D6A78',
36
+ N700: '#393B45',
32
37
  }
33
38
 
34
39
  export const WEBCHAT = {
@@ -171,9 +176,11 @@ export const ROLES = {
171
176
  WEBVIEW: 'webview',
172
177
  WEBVIEW_HEADER: 'webview-header',
173
178
  MESSAGE: 'message',
179
+ SYSTEM_MESSAGE: 'system-message',
174
180
  IMAGE_MESSAGE: 'image-message',
175
181
  AUDIO_MESSAGE: 'audio-message',
176
182
  VIDEO_MESSAGE: 'video-message',
177
183
  DOCUMENT_MESSAGE: 'document-message',
178
184
  RAW_MESSAGE: 'raw-message',
185
+ SYSTEM_DEBUG_TRACE_MESSAGE: 'system-debug-trace-message',
179
186
  }
@@ -17,6 +17,7 @@ import {
17
17
  ReplyProps,
18
18
  WebchatSettingsProps,
19
19
  } from './components'
20
+ import { ChunkIdsGroupedBySourceData } from './components/system-debug-trace/events/knowledge-bases-types'
20
21
  import { CloseWebviewOptions } from './contexts'
21
22
  import { UseWebchat } from './webchat/context/use-webchat'
22
23
  import {
@@ -48,6 +49,7 @@ export interface WebchatRef {
48
49
  session,
49
50
  lastRoutePath,
50
51
  }: AddBotResponseArgs) => void
52
+ addSystemResponse: ({ response }: AddSystemResponseArgs) => void
51
53
  setTyping: (typing: boolean) => void
52
54
  addUserMessage: (message: any) => Promise<void>
53
55
  updateUser: (userToUpdate: any) => void
@@ -75,6 +77,19 @@ interface AddBotResponseArgs {
75
77
  lastRoutePath?: any
76
78
  }
77
79
 
80
+ interface AddSystemResponseArgs {
81
+ response: any
82
+ }
83
+
84
+ export interface PreviewUtils {
85
+ getChunkIdsGroupedBySource: (
86
+ chunkIds: string[]
87
+ ) => Promise<ChunkIdsGroupedBySourceData[]>
88
+ onClickOpenChunks: (
89
+ chunkIdsGroupedBySource: ChunkIdsGroupedBySourceData[]
90
+ ) => void
91
+ }
92
+
78
93
  export interface WebchatArgs {
79
94
  theme?: Partial<WebchatTheme>
80
95
  persistentMenu?: PersistentMenuOptionsTheme
@@ -99,6 +114,7 @@ export interface WebchatArgs {
99
114
  appId?: string
100
115
  visibility?: boolean | (() => boolean) | 'dynamic'
101
116
  server?: ServerConfig
117
+ previewUtils?: PreviewUtils
102
118
  }
103
119
 
104
120
  export interface WebchatProps {
@@ -121,6 +137,7 @@ export interface WebchatProps {
121
137
  host?: any
122
138
  server?: ServerConfig
123
139
  localWebviews?: React.ComponentType[]
140
+ previewUtils?: PreviewUtils
124
141
  }
125
142
 
126
143
  export type EventArgs = { [key: string]: any }
@@ -134,6 +151,7 @@ export enum SENDERS {
134
151
  bot = 'bot',
135
152
  user = 'user',
136
153
  agent = 'agent',
154
+ system = 'system',
137
155
  }
138
156
 
139
157
  export enum Typing {
@@ -197,4 +215,4 @@ interface UpdateMessageInfoEvent {
197
215
  }
198
216
 
199
217
  export { CaseEventQueuePositionChangedInput } from '@botonic/core'
200
- export { WebchatTheme }
218
+ export { ChunkIdsGroupedBySourceData, WebchatTheme }
@@ -15,6 +15,8 @@ export const isContact = msg => isOfType(msg.type, INPUT.CONTACT)
15
15
  export const isCarousel = msg => isOfType(msg.type, INPUT.CAROUSEL)
16
16
  export const isCustom = msg => isOfType(msg.type, INPUT.CUSTOM)
17
17
  export const isButtonMessage = msg => isOfType(msg.type, INPUT.BUTTON_MESSAGE)
18
+ export const isSystemDebugTrace = msg =>
19
+ isOfType(msg.type, INPUT.SYSTEM_DEBUG_TRACE)
18
20
 
19
21
  export const INPUT_MEDIA_TYPES = [
20
22
  INPUT.AUDIO,
@@ -1,3 +1,4 @@
1
+ /* eslint-disable complexity */
1
2
  import React from 'react'
2
3
 
3
4
  import { Audio } from './components/audio'
@@ -11,6 +12,7 @@ import { Location } from './components/location'
11
12
  import { Pic } from './components/pic'
12
13
  import { Reply } from './components/reply'
13
14
  import { Subtitle } from './components/subtitle'
15
+ import { SystemDebugTrace } from './components/system-debug-trace'
14
16
  import { Text } from './components/text'
15
17
  import { Title } from './components/title'
16
18
  import { Video } from './components/video'
@@ -22,6 +24,7 @@ import {
22
24
  isDocument,
23
25
  isImage,
24
26
  isLocation,
27
+ isSystemDebugTrace,
25
28
  isText,
26
29
  isVideo,
27
30
  } from './message-utils'
@@ -94,6 +97,8 @@ export function msgToBotonic(msg, customMessageTypes = []) {
94
97
  </Text>
95
98
  </>
96
99
  )
100
+ } else if (isSystemDebugTrace(msg)) {
101
+ return <SystemDebugTrace {...msg} key={msg.key} />
97
102
  }
98
103
  console.warn(`Not converting message of type ${msg.type}`)
99
104
  return null
@@ -50,7 +50,8 @@ function addMessageComponent(
50
50
  const messageComponent = action.payload
51
51
  const isUnreadMessage =
52
52
  messageComponent.props?.isUnread &&
53
- messageComponent.props?.sentBy !== SENDERS.user
53
+ messageComponent.props?.sentBy !== SENDERS.user &&
54
+ messageComponent.props?.sentBy !== SENDERS.system
54
55
 
55
56
  const numUnreadMessages = isUnreadMessage
56
57
  ? state.numUnreadMessages + 1
@@ -115,8 +116,11 @@ function updateMessageReducer(
115
116
  ? getUpdatedMessagesJSON(state, msgIndex, action.payload)
116
117
  : state.messagesJSON
117
118
 
118
- const numUnreadMessages = state.messagesComponents.filter(
119
- messageComponent => messageComponent.props.isUnread
119
+ const numUnreadMessages = updatedMessagesComponents.filter(
120
+ messageComponent =>
121
+ messageComponent.props?.isUnread &&
122
+ messageComponent.props?.sentBy !== SENDERS.user &&
123
+ messageComponent.props?.sentBy !== SENDERS.system
120
124
  ).length
121
125
 
122
126
  return {
@@ -2,7 +2,11 @@ import { Input as CoreInput, Session as CoreSession } from '@botonic/core'
2
2
 
3
3
  import { Reply, WebchatSettingsProps, Webview } from '../../components'
4
4
  import { CloseWebviewOptions } from '../../contexts'
5
- import { TrackEventFunction, WebchatMessage } from '../../index-types'
5
+ import {
6
+ PreviewUtils,
7
+ TrackEventFunction,
8
+ WebchatMessage,
9
+ } from '../../index-types'
6
10
  import { WebchatTheme } from '../theme/types'
7
11
 
8
12
  export interface ErrorMessage {
@@ -86,6 +90,7 @@ export interface WebchatContextProps {
86
90
  updateUser: (user: Partial<ClientUser>) => void
87
91
  updateWebchatDevSettings: (settings: WebchatSettingsProps) => void
88
92
  trackEvent?: TrackEventFunction
93
+ previewUtils?: PreviewUtils
89
94
  webchatState: WebchatState
90
95
  webchatContainerRef: React.MutableRefObject<HTMLDivElement | null>
91
96
  chatAreaRef: React.MutableRefObject<HTMLDivElement | null>
@@ -1,15 +1,16 @@
1
+ import { INPUT } from '@botonic/core'
1
2
  import React, { useContext, useEffect, useRef, useState } from 'react'
2
3
 
3
4
  import { ROLES } from '../../constants'
5
+ import { SENDERS } from '../../index-types'
4
6
  import { WebchatContext } from '../../webchat/context'
5
7
  import { BotonicContainerId } from '../constants'
6
8
  import TypingIndicator from '../typing-indicator'
7
9
  import { IntroMessage } from './intro-message'
8
10
  import { ScrollButton } from './scroll-button'
9
- import { ContainerMessage, ScrollableMessageList } from './styles'
11
+ import { MessageContainer, ScrollableMessageList } from './styles'
10
12
  import { UnreadMessagesBanner } from './unread-messages-banner'
11
13
  import { useNotifications } from './use-notifications'
12
-
13
14
  const SCROLL_TIMEOUT = 200
14
15
  const scrollOptionsEnd: ScrollIntoViewOptions = {
15
16
  block: 'end',
@@ -133,16 +134,29 @@ export const WebchatMessageList = () => {
133
134
  >
134
135
  <IntroMessage />
135
136
  {webchatState.messagesComponents.map((messageComponent, index) => {
137
+ const messageId = messageComponent.props.id
138
+ const sentBySystem = messageComponent.props?.sentBy === SENDERS.system
139
+
140
+ // Check if system message is followed by a regular message (user/bot)
141
+ const nextMessage = webchatState.messagesComponents[index + 1]
142
+ const isSystemMessageFollowedByMessage =
143
+ sentBySystem &&
144
+ nextMessage &&
145
+ nextMessage.props?.sentBy !== SENDERS.system
146
+
136
147
  return (
137
- <React.Fragment key={messageComponent.props.id}>
138
- <ContainerMessage role={ROLES.MESSAGE}>
139
- {showUnreadMessagesBanner(messageComponent.props.id) && (
148
+ <React.Fragment key={messageId}>
149
+ <MessageContainer
150
+ role={sentBySystem ? ROLES.SYSTEM_MESSAGE : ROLES.MESSAGE}
151
+ $isLastSystemMessage={isSystemMessageFollowedByMessage}
152
+ >
153
+ {showUnreadMessagesBanner(messageId) && (
140
154
  <UnreadMessagesBanner
141
155
  unreadMessagesBannerRef={unreadMessagesBannerRef}
142
156
  />
143
157
  )}
144
158
  {messageComponent}
145
- </ContainerMessage>
159
+ </MessageContainer>
146
160
  {index === webchatState.messagesComponents.length - 1 && (
147
161
  <div
148
162
  ref={lastMessageRef}
@@ -1,12 +1,18 @@
1
1
  import styled from 'styled-components'
2
2
 
3
- export const ContainerMessage = styled.div`
3
+ interface MessageContainerProps {
4
+ $isLastSystemMessage?: boolean
5
+ }
6
+
7
+ export const MessageContainer = styled.div<MessageContainerProps>`
4
8
  display: flex;
5
9
  overflow-x: hidden;
6
10
  flex-direction: column;
7
11
  flex: none;
8
12
  white-space: pre;
9
13
  word-wrap: break-word;
14
+ margin-bottom: ${({ $isLastSystemMessage }) =>
15
+ $isLastSystemMessage ? '8px' : '0'};
10
16
  `
11
17
 
12
18
  export const DefaultIntroImage = styled.img`
@@ -486,6 +486,19 @@ const Webchat = forwardRef<WebchatRef | null, WebchatProps>((props, ref) => {
486
486
 
487
487
  updateLastMessageDate(currentDateString())
488
488
  },
489
+ addSystemResponse: ({ response }) => {
490
+ if (Array.isArray(response)) {
491
+ response.forEach(r => {
492
+ addMessageComponent({ ...r, props: { ...r.props, isUnread: false } })
493
+ })
494
+ } else if (response) {
495
+ addMessageComponent({
496
+ ...response,
497
+ props: { ...response.props, isUnread: false },
498
+ })
499
+ }
500
+ updateLastMessageDate(currentDateString())
501
+ },
489
502
  setTyping: (typing: boolean) => updateTyping(typing),
490
503
  addUserMessage: message => sendInput(message),
491
504
  updateUser: updateSessionWithUser,
@@ -658,6 +671,7 @@ const Webchat = forwardRef<WebchatRef | null, WebchatProps>((props, ref) => {
658
671
  updateUser: updateSessionWithUser,
659
672
  updateWebchatDevSettings: updateWebchatDevSettings,
660
673
  trackEvent: props.onTrackEvent,
674
+ previewUtils: props.previewUtils,
661
675
  webchatState,
662
676
  webchatContainerRef,
663
677
  chatAreaRef,