@patternfly/chatbot 1.0.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 (1285) hide show
  1. package/@types/index.d.ts +9 -0
  2. package/dist/cjs/AttachMenu/AttachMenu.d.ts +32 -0
  3. package/dist/cjs/AttachMenu/AttachMenu.js +23 -0
  4. package/dist/cjs/AttachMenu/index.d.ts +2 -0
  5. package/dist/cjs/AttachMenu/index.js +23 -0
  6. package/dist/cjs/AttachmentEdit/AttachmentEdit.d.ts +34 -0
  7. package/dist/cjs/AttachmentEdit/AttachmentEdit.js +22 -0
  8. package/dist/cjs/AttachmentEdit/AttachmentEdit.test.d.ts +1 -0
  9. package/dist/cjs/AttachmentEdit/AttachmentEdit.test.js +77 -0
  10. package/dist/cjs/AttachmentEdit/index.d.ts +2 -0
  11. package/dist/cjs/AttachmentEdit/index.js +23 -0
  12. package/dist/cjs/Chatbot/Chatbot.d.ts +25 -0
  13. package/dist/cjs/Chatbot/Chatbot.js +30 -0
  14. package/dist/cjs/Chatbot/Chatbot.test.d.ts +1 -0
  15. package/dist/cjs/Chatbot/Chatbot.test.js +32 -0
  16. package/dist/cjs/Chatbot/index.d.ts +2 -0
  17. package/dist/cjs/Chatbot/index.js +23 -0
  18. package/dist/cjs/ChatbotAlert/ChatbotAlert.d.ts +8 -0
  19. package/dist/cjs/ChatbotAlert/ChatbotAlert.js +24 -0
  20. package/dist/cjs/ChatbotAlert/ChatbotAlert.test.d.ts +1 -0
  21. package/dist/cjs/ChatbotAlert/ChatbotAlert.test.js +27 -0
  22. package/dist/cjs/ChatbotAlert/index.d.ts +2 -0
  23. package/dist/cjs/ChatbotAlert/index.js +23 -0
  24. package/dist/cjs/ChatbotContent/ChatbotContent.d.ts +11 -0
  25. package/dist/cjs/ChatbotContent/ChatbotContent.js +21 -0
  26. package/dist/cjs/ChatbotContent/ChatbotContent.test.d.ts +1 -0
  27. package/dist/cjs/ChatbotContent/ChatbotContent.test.js +22 -0
  28. package/dist/cjs/ChatbotContent/index.d.ts +2 -0
  29. package/dist/cjs/ChatbotContent/index.js +23 -0
  30. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +18 -0
  31. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +23 -0
  32. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.d.ts +1 -0
  33. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.js +75 -0
  34. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +119 -0
  35. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +97 -0
  36. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.d.ts +1 -0
  37. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +277 -0
  38. package/dist/cjs/ChatbotConversationHistoryNav/EmptyState.d.ts +11 -0
  39. package/dist/cjs/ChatbotConversationHistoryNav/EmptyState.js +22 -0
  40. package/dist/cjs/ChatbotConversationHistoryNav/LoadingState.d.ts +4 -0
  41. package/dist/cjs/ChatbotConversationHistoryNav/LoadingState.js +22 -0
  42. package/dist/cjs/ChatbotConversationHistoryNav/index.d.ts +3 -0
  43. package/dist/cjs/ChatbotConversationHistoryNav/index.js +24 -0
  44. package/dist/cjs/ChatbotFooter/ChatbotFooter.d.ts +13 -0
  45. package/dist/cjs/ChatbotFooter/ChatbotFooter.js +22 -0
  46. package/dist/cjs/ChatbotFooter/ChatbotFooter.test.d.ts +1 -0
  47. package/dist/cjs/ChatbotFooter/ChatbotFooter.test.js +27 -0
  48. package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.d.ts +1 -0
  49. package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.js +87 -0
  50. package/dist/cjs/ChatbotFooter/ChatbotFootnote.d.ts +48 -0
  51. package/dist/cjs/ChatbotFooter/ChatbotFootnote.js +41 -0
  52. package/dist/cjs/ChatbotFooter/index.d.ts +3 -0
  53. package/dist/cjs/ChatbotFooter/index.js +24 -0
  54. package/dist/cjs/ChatbotHeader/ChatbotHeader.d.ts +9 -0
  55. package/dist/cjs/ChatbotHeader/ChatbotHeader.js +8 -0
  56. package/dist/cjs/ChatbotHeader/ChatbotHeader.test.d.ts +1 -0
  57. package/dist/cjs/ChatbotHeader/ChatbotHeader.test.js +18 -0
  58. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.d.ts +9 -0
  59. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.js +7 -0
  60. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.d.ts +1 -0
  61. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.js +18 -0
  62. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +18 -0
  63. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.js +25 -0
  64. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -0
  65. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.js +22 -0
  66. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.d.ts +9 -0
  67. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.js +7 -0
  68. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.d.ts +1 -0
  69. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.js +18 -0
  70. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.d.ts +18 -0
  71. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.js +55 -0
  72. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -0
  73. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.js +22 -0
  74. package/dist/cjs/ChatbotHeader/ChatbotHeaderNewChatButton.d.ts +18 -0
  75. package/dist/cjs/ChatbotHeader/ChatbotHeaderNewChatButton.js +25 -0
  76. package/dist/cjs/ChatbotHeader/ChatbotHeaderNewChatButton.test.d.ts +1 -0
  77. package/dist/cjs/ChatbotHeader/ChatbotHeaderNewChatButton.test.js +22 -0
  78. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.d.ts +18 -0
  79. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +34 -0
  80. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -0
  81. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +46 -0
  82. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.d.ts +24 -0
  83. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +34 -0
  84. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -0
  85. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +44 -0
  86. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.d.ts +22 -0
  87. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.js +32 -0
  88. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +1 -0
  89. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.js +55 -0
  90. package/dist/cjs/ChatbotHeader/index.d.ts +10 -0
  91. package/dist/cjs/ChatbotHeader/index.js +31 -0
  92. package/dist/cjs/ChatbotModal/ChatbotModal.d.ts +13 -0
  93. package/dist/cjs/ChatbotModal/ChatbotModal.js +28 -0
  94. package/dist/cjs/ChatbotModal/ChatbotModal.test.d.ts +1 -0
  95. package/dist/cjs/ChatbotModal/ChatbotModal.test.js +16 -0
  96. package/dist/cjs/ChatbotModal/index.d.ts +2 -0
  97. package/dist/cjs/ChatbotModal/index.js +23 -0
  98. package/dist/cjs/ChatbotPopover/ChatbotPopover.d.ts +4 -0
  99. package/dist/cjs/ChatbotPopover/ChatbotPopover.js +23 -0
  100. package/dist/cjs/ChatbotPopover/index.d.ts +2 -0
  101. package/dist/cjs/ChatbotPopover/index.js +23 -0
  102. package/dist/cjs/ChatbotToggle/ChatbotToggle.d.ts +27 -0
  103. package/dist/cjs/ChatbotToggle/ChatbotToggle.js +32 -0
  104. package/dist/cjs/ChatbotToggle/ChatbotToggle.test.d.ts +1 -0
  105. package/dist/cjs/ChatbotToggle/ChatbotToggle.test.js +64 -0
  106. package/dist/cjs/ChatbotToggle/index.d.ts +2 -0
  107. package/dist/cjs/ChatbotToggle/index.js +23 -0
  108. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.d.ts +24 -0
  109. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.js +26 -0
  110. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.d.ts +1 -0
  111. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +61 -0
  112. package/dist/cjs/ChatbotWelcomePrompt/index.d.ts +2 -0
  113. package/dist/cjs/ChatbotWelcomePrompt/index.js +23 -0
  114. package/dist/cjs/CodeModal/CodeModal.d.ts +44 -0
  115. package/dist/cjs/CodeModal/CodeModal.js +160 -0
  116. package/dist/cjs/CodeModal/CodeModal.test.d.ts +1 -0
  117. package/dist/cjs/CodeModal/CodeModal.test.js +34 -0
  118. package/dist/cjs/CodeModal/index.d.ts +2 -0
  119. package/dist/cjs/CodeModal/index.js +23 -0
  120. package/dist/cjs/Compare/Compare.d.ts +17 -0
  121. package/dist/cjs/Compare/Compare.js +41 -0
  122. package/dist/cjs/Compare/Compare.test.d.ts +1 -0
  123. package/dist/cjs/Compare/Compare.test.js +18 -0
  124. package/dist/cjs/Compare/index.d.ts +2 -0
  125. package/dist/cjs/Compare/index.js +23 -0
  126. package/dist/cjs/DeepThinking/DeepThinking.d.ts +35 -0
  127. package/dist/cjs/DeepThinking/DeepThinking.js +46 -0
  128. package/dist/cjs/DeepThinking/DeepThinking.test.d.ts +1 -0
  129. package/dist/cjs/DeepThinking/DeepThinking.test.js +146 -0
  130. package/dist/cjs/DeepThinking/index.d.ts +2 -0
  131. package/dist/cjs/DeepThinking/index.js +23 -0
  132. package/dist/cjs/FileDetails/FileDetails.d.ts +941 -0
  133. package/dist/cjs/FileDetails/FileDetails.js +56 -0
  134. package/dist/cjs/FileDetails/FileDetails.test.d.ts +1 -0
  135. package/dist/cjs/FileDetails/FileDetails.test.js +42 -0
  136. package/dist/cjs/FileDetails/index.d.ts +2 -0
  137. package/dist/cjs/FileDetails/index.js +23 -0
  138. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.d.ts +28 -0
  139. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.js +31 -0
  140. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.test.d.ts +1 -0
  141. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.test.js +79 -0
  142. package/dist/cjs/FileDetailsLabel/index.d.ts +2 -0
  143. package/dist/cjs/FileDetailsLabel/index.js +23 -0
  144. package/dist/cjs/FileDropZone/FileDropZone.d.ts +37 -0
  145. package/dist/cjs/FileDropZone/FileDropZone.js +30 -0
  146. package/dist/cjs/FileDropZone/FileDropZone.test.d.ts +1 -0
  147. package/dist/cjs/FileDropZone/FileDropZone.test.js +100 -0
  148. package/dist/cjs/FileDropZone/index.d.ts +2 -0
  149. package/dist/cjs/FileDropZone/index.js +23 -0
  150. package/dist/cjs/FilePreview/FilePreview.d.ts +26 -0
  151. package/dist/cjs/FilePreview/FilePreview.js +26 -0
  152. package/dist/cjs/FilePreview/FilePreview.test.d.ts +1 -0
  153. package/dist/cjs/FilePreview/FilePreview.test.js +97 -0
  154. package/dist/cjs/FilePreview/index.d.ts +2 -0
  155. package/dist/cjs/FilePreview/index.js +23 -0
  156. package/dist/cjs/ImagePreview/ImagePreview.d.ts +53 -0
  157. package/dist/cjs/ImagePreview/ImagePreview.js +47 -0
  158. package/dist/cjs/ImagePreview/ImagePreview.test.d.ts +1 -0
  159. package/dist/cjs/ImagePreview/ImagePreview.test.js +225 -0
  160. package/dist/cjs/ImagePreview/index.d.ts +2 -0
  161. package/dist/cjs/ImagePreview/index.js +23 -0
  162. package/dist/cjs/LoadingMessage/LoadingMessage.d.ts +6 -0
  163. package/dist/cjs/LoadingMessage/LoadingMessage.js +12 -0
  164. package/dist/cjs/LoadingMessage/LoadingMessage.test.d.ts +1 -0
  165. package/dist/cjs/LoadingMessage/LoadingMessage.test.js +20 -0
  166. package/dist/cjs/LoadingMessage/index.d.ts +2 -0
  167. package/dist/cjs/LoadingMessage/index.js +23 -0
  168. package/dist/cjs/MarkdownContent/MarkdownContent.d.ts +44 -0
  169. package/dist/cjs/MarkdownContent/MarkdownContent.js +181 -0
  170. package/dist/cjs/MarkdownContent/MarkdownContent.test.d.ts +1 -0
  171. package/dist/cjs/MarkdownContent/MarkdownContent.test.js +192 -0
  172. package/dist/cjs/MarkdownContent/index.d.ts +2 -0
  173. package/dist/cjs/MarkdownContent/index.js +23 -0
  174. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.d.ts +27 -0
  175. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.js +81 -0
  176. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.test.d.ts +1 -0
  177. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.test.js +131 -0
  178. package/dist/cjs/Message/ErrorMessage/ErrorMessage.d.ts +17 -0
  179. package/dist/cjs/Message/ErrorMessage/ErrorMessage.js +25 -0
  180. package/dist/cjs/Message/ErrorMessage/ErrorMessage.test.d.ts +1 -0
  181. package/dist/cjs/Message/ErrorMessage/ErrorMessage.test.js +30 -0
  182. package/dist/cjs/Message/ImageMessage/ImageMessage.d.ts +3 -0
  183. package/dist/cjs/Message/ImageMessage/ImageMessage.js +19 -0
  184. package/dist/cjs/Message/LinkMessage/LinkMessage.d.ts +8 -0
  185. package/dist/cjs/Message/LinkMessage/LinkMessage.js +32 -0
  186. package/dist/cjs/Message/ListMessage/ListItemMessage.d.ts +3 -0
  187. package/dist/cjs/Message/ListMessage/ListItemMessage.js +21 -0
  188. package/dist/cjs/Message/ListMessage/OrderedListMessage.d.ts +11 -0
  189. package/dist/cjs/Message/ListMessage/OrderedListMessage.js +7 -0
  190. package/dist/cjs/Message/ListMessage/UnorderedListMessage.d.ts +9 -0
  191. package/dist/cjs/Message/ListMessage/UnorderedListMessage.js +7 -0
  192. package/dist/cjs/Message/Message.d.ts +182 -0
  193. package/dist/cjs/Message/Message.js +94 -0
  194. package/dist/cjs/Message/Message.test.d.ts +1 -0
  195. package/dist/cjs/Message/Message.test.js +1128 -0
  196. package/dist/cjs/Message/MessageAndActions/MessageAndActions.d.ts +14 -0
  197. package/dist/cjs/Message/MessageAndActions/MessageAndActions.js +22 -0
  198. package/dist/cjs/Message/MessageAndActions/MessageAndActions.test.d.ts +1 -0
  199. package/dist/cjs/Message/MessageAndActions/MessageAndActions.test.js +25 -0
  200. package/dist/cjs/Message/MessageAndActions/index.d.ts +1 -0
  201. package/dist/cjs/Message/MessageAndActions/index.js +17 -0
  202. package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.d.ts +13 -0
  203. package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.js +22 -0
  204. package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.test.d.ts +1 -0
  205. package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.test.js +25 -0
  206. package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.d.ts +13 -0
  207. package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.js +22 -0
  208. package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.test.d.ts +1 -0
  209. package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.test.js +25 -0
  210. package/dist/cjs/Message/MessageAttachments/index.d.ts +2 -0
  211. package/dist/cjs/Message/MessageAttachments/index.js +18 -0
  212. package/dist/cjs/Message/MessageInput.d.ts +20 -0
  213. package/dist/cjs/Message/MessageInput.js +27 -0
  214. package/dist/cjs/Message/MessageLoading.d.ts +14 -0
  215. package/dist/cjs/Message/MessageLoading.js +22 -0
  216. package/dist/cjs/Message/MessageLoading.test.d.ts +1 -0
  217. package/dist/cjs/Message/MessageLoading.test.js +25 -0
  218. package/dist/cjs/Message/Plugins/index.d.ts +1 -0
  219. package/dist/cjs/Message/Plugins/index.js +5 -0
  220. package/dist/cjs/Message/Plugins/rehypeCodeBlockToggle.d.ts +2 -0
  221. package/dist/cjs/Message/Plugins/rehypeCodeBlockToggle.js +24 -0
  222. package/dist/cjs/Message/Plugins/rehypeMoveImagesOutOfParagraphs.d.ts +2 -0
  223. package/dist/cjs/Message/Plugins/rehypeMoveImagesOutOfParagraphs.js +47 -0
  224. package/dist/cjs/Message/QuickResponse/QuickResponse.d.ts +19 -0
  225. package/dist/cjs/Message/QuickResponse/QuickResponse.js +33 -0
  226. package/dist/cjs/Message/QuickResponse/QuickResponse.test.d.ts +1 -0
  227. package/dist/cjs/Message/QuickResponse/QuickResponse.test.js +109 -0
  228. package/dist/cjs/Message/QuickResponse/index.d.ts +1 -0
  229. package/dist/cjs/Message/QuickResponse/index.js +17 -0
  230. package/dist/cjs/Message/QuickStarts/FallbackImg.d.ts +13 -0
  231. package/dist/cjs/Message/QuickStarts/FallbackImg.js +12 -0
  232. package/dist/cjs/Message/QuickStarts/QuickStartTile.d.ts +29 -0
  233. package/dist/cjs/Message/QuickStarts/QuickStartTile.js +47 -0
  234. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.d.ts +23 -0
  235. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.js +35 -0
  236. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.d.ts +1 -0
  237. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.js +76 -0
  238. package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.d.ts +11 -0
  239. package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.js +6 -0
  240. package/dist/cjs/Message/QuickStarts/index.d.ts +2 -0
  241. package/dist/cjs/Message/QuickStarts/index.js +18 -0
  242. package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.d.ts +30 -0
  243. package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.js +77 -0
  244. package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart.d.ts +30 -0
  245. package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart.js +77 -0
  246. package/dist/cjs/Message/QuickStarts/types.d.ts +133 -0
  247. package/dist/cjs/Message/QuickStarts/types.js +17 -0
  248. package/dist/cjs/Message/SuperscriptMessage/SuperscriptMessage.d.ts +3 -0
  249. package/dist/cjs/Message/SuperscriptMessage/SuperscriptMessage.js +5 -0
  250. package/dist/cjs/Message/TableMessage/TableMessage.d.ts +27 -0
  251. package/dist/cjs/Message/TableMessage/TableMessage.js +66 -0
  252. package/dist/cjs/Message/TableMessage/TbodyMessage.d.ts +6 -0
  253. package/dist/cjs/Message/TableMessage/TbodyMessage.js +31 -0
  254. package/dist/cjs/Message/TableMessage/TdMessage.d.ts +4 -0
  255. package/dist/cjs/Message/TableMessage/TdMessage.js +20 -0
  256. package/dist/cjs/Message/TableMessage/ThMessage.d.ts +4 -0
  257. package/dist/cjs/Message/TableMessage/ThMessage.js +20 -0
  258. package/dist/cjs/Message/TableMessage/TheadMessage.d.ts +4 -0
  259. package/dist/cjs/Message/TableMessage/TheadMessage.js +20 -0
  260. package/dist/cjs/Message/TableMessage/TrMessage.d.ts +6 -0
  261. package/dist/cjs/Message/TableMessage/TrMessage.js +35 -0
  262. package/dist/cjs/Message/TextMessage/TextMessage.d.ts +14 -0
  263. package/dist/cjs/Message/TextMessage/TextMessage.js +21 -0
  264. package/dist/cjs/Message/UserFeedback/CloseButton.d.ts +10 -0
  265. package/dist/cjs/Message/UserFeedback/CloseButton.js +8 -0
  266. package/dist/cjs/Message/UserFeedback/UserFeedback.d.ts +55 -0
  267. package/dist/cjs/Message/UserFeedback/UserFeedback.js +45 -0
  268. package/dist/cjs/Message/UserFeedback/UserFeedback.test.d.ts +1 -0
  269. package/dist/cjs/Message/UserFeedback/UserFeedback.test.js +181 -0
  270. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.d.ts +42 -0
  271. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.js +94 -0
  272. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.d.ts +1 -0
  273. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.js +243 -0
  274. package/dist/cjs/Message/UserFeedback/index.d.ts +2 -0
  275. package/dist/cjs/Message/UserFeedback/index.js +18 -0
  276. package/dist/cjs/Message/index.d.ts +11 -0
  277. package/dist/cjs/Message/index.js +33 -0
  278. package/dist/cjs/MessageBar/AttachButton.d.ts +47 -0
  279. package/dist/cjs/MessageBar/AttachButton.js +30 -0
  280. package/dist/cjs/MessageBar/AttachButton.test.d.ts +1 -0
  281. package/dist/cjs/MessageBar/AttachButton.test.js +152 -0
  282. package/dist/cjs/MessageBar/MessageBar.d.ts +124 -0
  283. package/dist/cjs/MessageBar/MessageBar.js +248 -0
  284. package/dist/cjs/MessageBar/MessageBar.test.d.ts +1 -0
  285. package/dist/cjs/MessageBar/MessageBar.test.js +338 -0
  286. package/dist/cjs/MessageBar/MicrophoneButton.d.ts +24 -0
  287. package/dist/cjs/MessageBar/MicrophoneButton.js +69 -0
  288. package/dist/cjs/MessageBar/SendButton.d.ts +16 -0
  289. package/dist/cjs/MessageBar/SendButton.js +26 -0
  290. package/dist/cjs/MessageBar/SendButton.test.d.ts +1 -0
  291. package/dist/cjs/MessageBar/SendButton.test.js +58 -0
  292. package/dist/cjs/MessageBar/StopButton.d.ts +16 -0
  293. package/dist/cjs/MessageBar/StopButton.js +25 -0
  294. package/dist/cjs/MessageBar/StopButton.test.d.ts +1 -0
  295. package/dist/cjs/MessageBar/StopButton.test.js +58 -0
  296. package/dist/cjs/MessageBar/index.d.ts +5 -0
  297. package/dist/cjs/MessageBar/index.js +26 -0
  298. package/dist/cjs/MessageBox/JumpButton.d.ts +16 -0
  299. package/dist/cjs/MessageBox/JumpButton.js +9 -0
  300. package/dist/cjs/MessageBox/JumpButton.test.d.ts +1 -0
  301. package/dist/cjs/MessageBox/JumpButton.test.js +39 -0
  302. package/dist/cjs/MessageBox/MessageBox.d.ts +42 -0
  303. package/dist/cjs/MessageBox/MessageBox.js +211 -0
  304. package/dist/cjs/MessageBox/MessageBox.test.d.ts +1 -0
  305. package/dist/cjs/MessageBox/MessageBox.test.js +235 -0
  306. package/dist/cjs/MessageBox/index.d.ts +3 -0
  307. package/dist/cjs/MessageBox/index.js +24 -0
  308. package/dist/cjs/MessageDivider/MessageDivider.d.ts +9 -0
  309. package/dist/cjs/MessageDivider/MessageDivider.js +23 -0
  310. package/dist/cjs/MessageDivider/MessageDivider.test.d.ts +1 -0
  311. package/dist/cjs/MessageDivider/MessageDivider.test.js +29 -0
  312. package/dist/cjs/MessageDivider/index.d.ts +2 -0
  313. package/dist/cjs/MessageDivider/index.js +23 -0
  314. package/dist/cjs/Onboarding/Onboarding.d.ts +36 -0
  315. package/dist/cjs/Onboarding/Onboarding.js +37 -0
  316. package/dist/cjs/Onboarding/Onboarding.test.d.ts +1 -0
  317. package/dist/cjs/Onboarding/Onboarding.test.js +80 -0
  318. package/dist/cjs/Onboarding/index.d.ts +2 -0
  319. package/dist/cjs/Onboarding/index.js +23 -0
  320. package/dist/cjs/PreviewAttachment/PreviewAttachment.d.ts +34 -0
  321. package/dist/cjs/PreviewAttachment/PreviewAttachment.js +22 -0
  322. package/dist/cjs/PreviewAttachment/PreviewAttachment.test.d.ts +1 -0
  323. package/dist/cjs/PreviewAttachment/PreviewAttachment.test.js +50 -0
  324. package/dist/cjs/PreviewAttachment/index.d.ts +2 -0
  325. package/dist/cjs/PreviewAttachment/index.js +23 -0
  326. package/dist/cjs/ResponseActions/ResponseActionButton.d.ts +29 -0
  327. package/dist/cjs/ResponseActions/ResponseActionButton.js +32 -0
  328. package/dist/cjs/ResponseActions/ResponseActionButton.test.d.ts +1 -0
  329. package/dist/cjs/ResponseActions/ResponseActionButton.test.js +54 -0
  330. package/dist/cjs/ResponseActions/ResponseActions.d.ts +61 -0
  331. package/dist/cjs/ResponseActions/ResponseActions.js +120 -0
  332. package/dist/cjs/ResponseActions/ResponseActions.test.d.ts +1 -0
  333. package/dist/cjs/ResponseActions/ResponseActions.test.js +452 -0
  334. package/dist/cjs/ResponseActions/ResponseActionsGroups.d.ts +13 -0
  335. package/dist/cjs/ResponseActions/ResponseActionsGroups.js +22 -0
  336. package/dist/cjs/ResponseActions/ResponseActionsGroups.test.d.ts +1 -0
  337. package/dist/cjs/ResponseActions/ResponseActionsGroups.test.js +25 -0
  338. package/dist/cjs/ResponseActions/index.d.ts +3 -0
  339. package/dist/cjs/ResponseActions/index.js +24 -0
  340. package/dist/cjs/Settings/SettingsForm.d.ts +15 -0
  341. package/dist/cjs/Settings/SettingsForm.js +21 -0
  342. package/dist/cjs/Settings/SettingsForm.test.d.ts +1 -0
  343. package/dist/cjs/Settings/SettingsForm.test.js +35 -0
  344. package/dist/cjs/Settings/index.d.ts +2 -0
  345. package/dist/cjs/Settings/index.js +23 -0
  346. package/dist/cjs/SourceDetailsMenuItem/SourceDetailsMenuItem.d.ts +11 -0
  347. package/dist/cjs/SourceDetailsMenuItem/SourceDetailsMenuItem.js +22 -0
  348. package/dist/cjs/SourceDetailsMenuItem/index.d.ts +2 -0
  349. package/dist/cjs/SourceDetailsMenuItem/index.js +23 -0
  350. package/dist/cjs/SourcesCard/SourcesCard.d.ts +65 -0
  351. package/dist/cjs/SourcesCard/SourcesCard.js +25 -0
  352. package/dist/cjs/SourcesCard/SourcesCard.test.d.ts +1 -0
  353. package/dist/cjs/SourcesCard/SourcesCard.test.js +39 -0
  354. package/dist/cjs/SourcesCard/index.d.ts +2 -0
  355. package/dist/cjs/SourcesCard/index.js +23 -0
  356. package/dist/cjs/SourcesCardBase/SourcesCardBase.d.ts +61 -0
  357. package/dist/cjs/SourcesCardBase/SourcesCardBase.js +58 -0
  358. package/dist/cjs/SourcesCardBase/SourcesCardBase.test.d.ts +1 -0
  359. package/dist/cjs/SourcesCardBase/SourcesCardBase.test.js +199 -0
  360. package/dist/cjs/SourcesCardBase/index.d.ts +2 -0
  361. package/dist/cjs/SourcesCardBase/index.js +23 -0
  362. package/dist/cjs/TermsOfUse/TermsOfUse.d.ts +36 -0
  363. package/dist/cjs/TermsOfUse/TermsOfUse.js +37 -0
  364. package/dist/cjs/TermsOfUse/TermsOfUse.test.d.ts +1 -0
  365. package/dist/cjs/TermsOfUse/TermsOfUse.test.js +77 -0
  366. package/dist/cjs/TermsOfUse/index.d.ts +2 -0
  367. package/dist/cjs/TermsOfUse/index.js +23 -0
  368. package/dist/cjs/ToolCall/ToolCall.d.ts +55 -0
  369. package/dist/cjs/ToolCall/ToolCall.js +35 -0
  370. package/dist/cjs/ToolCall/ToolCall.test.d.ts +1 -0
  371. package/dist/cjs/ToolCall/ToolCall.test.js +201 -0
  372. package/dist/cjs/ToolCall/index.d.ts +2 -0
  373. package/dist/cjs/ToolCall/index.js +23 -0
  374. package/dist/cjs/ToolResponse/ToolResponse.d.ts +47 -0
  375. package/dist/cjs/ToolResponse/ToolResponse.js +64 -0
  376. package/dist/cjs/ToolResponse/ToolResponse.test.d.ts +1 -0
  377. package/dist/cjs/ToolResponse/ToolResponse.test.js +184 -0
  378. package/dist/cjs/ToolResponse/index.d.ts +2 -0
  379. package/dist/cjs/ToolResponse/index.js +23 -0
  380. package/dist/cjs/__mocks__/monaco-editor.d.ts +11 -0
  381. package/dist/cjs/__mocks__/monaco-editor.js +18 -0
  382. package/dist/cjs/__mocks__/rehype-external-links.d.ts +2 -0
  383. package/dist/cjs/__mocks__/rehype-external-links.js +4 -0
  384. package/dist/cjs/__mocks__/rehype-highlight.d.ts +2 -0
  385. package/dist/cjs/__mocks__/rehype-highlight.js +4 -0
  386. package/dist/cjs/__mocks__/rehype-sanitize.d.ts +2 -0
  387. package/dist/cjs/__mocks__/rehype-sanitize.js +4 -0
  388. package/dist/cjs/__mocks__/rehype-unwrap-images.d.ts +2 -0
  389. package/dist/cjs/__mocks__/rehype-unwrap-images.js +4 -0
  390. package/dist/cjs/index.d.ts +74 -0
  391. package/dist/cjs/index.js +132 -0
  392. package/dist/cjs/tracking/console_tracking_provider.d.ts +9 -0
  393. package/dist/cjs/tracking/console_tracking_provider.js +34 -0
  394. package/dist/cjs/tracking/index.d.ts +2 -0
  395. package/dist/cjs/tracking/index.js +23 -0
  396. package/dist/cjs/tracking/posthog_tracking_provider.d.ts +9 -0
  397. package/dist/cjs/tracking/posthog_tracking_provider.js +46 -0
  398. package/dist/cjs/tracking/segment_tracking_provider.d.ts +10 -0
  399. package/dist/cjs/tracking/segment_tracking_provider.js +59 -0
  400. package/dist/cjs/tracking/trackingProviderProxy.d.ts +9 -0
  401. package/dist/cjs/tracking/trackingProviderProxy.js +24 -0
  402. package/dist/cjs/tracking/tracking_api.d.ts +8 -0
  403. package/dist/cjs/tracking/tracking_api.js +2 -0
  404. package/dist/cjs/tracking/tracking_registry.d.ts +4 -0
  405. package/dist/cjs/tracking/tracking_registry.js +67 -0
  406. package/dist/cjs/tracking/tracking_spi.d.ts +19 -0
  407. package/dist/cjs/tracking/tracking_spi.js +11 -0
  408. package/dist/cjs/tracking/umami_tracking_provider.d.ts +18 -0
  409. package/dist/cjs/tracking/umami_tracking_provider.js +88 -0
  410. package/dist/css/main.css +2988 -0
  411. package/dist/css/main.css.map +1 -0
  412. package/dist/dynamic/AttachMenu/package.json +1 -0
  413. package/dist/dynamic/AttachmentEdit/package.json +1 -0
  414. package/dist/dynamic/Chatbot/package.json +1 -0
  415. package/dist/dynamic/ChatbotAlert/package.json +1 -0
  416. package/dist/dynamic/ChatbotContent/package.json +1 -0
  417. package/dist/dynamic/ChatbotConversationHistoryNav/package.json +1 -0
  418. package/dist/dynamic/ChatbotFooter/package.json +1 -0
  419. package/dist/dynamic/ChatbotHeader/package.json +1 -0
  420. package/dist/dynamic/ChatbotModal/package.json +1 -0
  421. package/dist/dynamic/ChatbotPopover/package.json +1 -0
  422. package/dist/dynamic/ChatbotToggle/package.json +1 -0
  423. package/dist/dynamic/ChatbotWelcomePrompt/package.json +1 -0
  424. package/dist/dynamic/CodeModal/package.json +1 -0
  425. package/dist/dynamic/Compare/package.json +1 -0
  426. package/dist/dynamic/DeepThinking/package.json +1 -0
  427. package/dist/dynamic/FileDetails/package.json +1 -0
  428. package/dist/dynamic/FileDetailsLabel/package.json +1 -0
  429. package/dist/dynamic/FileDropZone/package.json +1 -0
  430. package/dist/dynamic/FilePreview/package.json +1 -0
  431. package/dist/dynamic/ImagePreview/package.json +1 -0
  432. package/dist/dynamic/LoadingMessage/package.json +1 -0
  433. package/dist/dynamic/MarkdownContent/package.json +1 -0
  434. package/dist/dynamic/Message/package.json +1 -0
  435. package/dist/dynamic/MessageBar/package.json +1 -0
  436. package/dist/dynamic/MessageBox/package.json +1 -0
  437. package/dist/dynamic/MessageDivider/package.json +1 -0
  438. package/dist/dynamic/Onboarding/package.json +1 -0
  439. package/dist/dynamic/PreviewAttachment/package.json +1 -0
  440. package/dist/dynamic/ResponseActions/package.json +1 -0
  441. package/dist/dynamic/Settings/package.json +1 -0
  442. package/dist/dynamic/SourceDetailsMenuItem/package.json +1 -0
  443. package/dist/dynamic/SourcesCard/package.json +1 -0
  444. package/dist/dynamic/SourcesCardBase/package.json +1 -0
  445. package/dist/dynamic/TermsOfUse/package.json +1 -0
  446. package/dist/dynamic/ToolCall/package.json +1 -0
  447. package/dist/dynamic/ToolResponse/package.json +1 -0
  448. package/dist/dynamic/tracking/package.json +1 -0
  449. package/dist/esm/AttachMenu/AttachMenu.d.ts +32 -0
  450. package/dist/esm/AttachMenu/AttachMenu.js +19 -0
  451. package/dist/esm/AttachMenu/index.d.ts +2 -0
  452. package/dist/esm/AttachMenu/index.js +2 -0
  453. package/dist/esm/AttachmentEdit/AttachmentEdit.d.ts +34 -0
  454. package/dist/esm/AttachmentEdit/AttachmentEdit.js +15 -0
  455. package/dist/esm/AttachmentEdit/AttachmentEdit.test.d.ts +1 -0
  456. package/dist/esm/AttachmentEdit/AttachmentEdit.test.js +72 -0
  457. package/dist/esm/AttachmentEdit/index.d.ts +2 -0
  458. package/dist/esm/AttachmentEdit/index.js +2 -0
  459. package/dist/esm/Chatbot/Chatbot.d.ts +25 -0
  460. package/dist/esm/Chatbot/Chatbot.js +27 -0
  461. package/dist/esm/Chatbot/Chatbot.test.d.ts +1 -0
  462. package/dist/esm/Chatbot/Chatbot.test.js +27 -0
  463. package/dist/esm/Chatbot/index.d.ts +2 -0
  464. package/dist/esm/Chatbot/index.js +2 -0
  465. package/dist/esm/ChatbotAlert/ChatbotAlert.d.ts +8 -0
  466. package/dist/esm/ChatbotAlert/ChatbotAlert.js +20 -0
  467. package/dist/esm/ChatbotAlert/ChatbotAlert.test.d.ts +1 -0
  468. package/dist/esm/ChatbotAlert/ChatbotAlert.test.js +22 -0
  469. package/dist/esm/ChatbotAlert/index.d.ts +2 -0
  470. package/dist/esm/ChatbotAlert/index.js +2 -0
  471. package/dist/esm/ChatbotContent/ChatbotContent.d.ts +11 -0
  472. package/dist/esm/ChatbotContent/ChatbotContent.js +17 -0
  473. package/dist/esm/ChatbotContent/ChatbotContent.test.d.ts +1 -0
  474. package/dist/esm/ChatbotContent/ChatbotContent.test.js +17 -0
  475. package/dist/esm/ChatbotContent/index.d.ts +2 -0
  476. package/dist/esm/ChatbotContent/index.js +2 -0
  477. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +18 -0
  478. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +16 -0
  479. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.d.ts +1 -0
  480. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.js +70 -0
  481. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +119 -0
  482. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +90 -0
  483. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.d.ts +1 -0
  484. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +272 -0
  485. package/dist/esm/ChatbotConversationHistoryNav/EmptyState.d.ts +11 -0
  486. package/dist/esm/ChatbotConversationHistoryNav/EmptyState.js +18 -0
  487. package/dist/esm/ChatbotConversationHistoryNav/LoadingState.d.ts +4 -0
  488. package/dist/esm/ChatbotConversationHistoryNav/LoadingState.js +18 -0
  489. package/dist/esm/ChatbotConversationHistoryNav/index.d.ts +3 -0
  490. package/dist/esm/ChatbotConversationHistoryNav/index.js +3 -0
  491. package/dist/esm/ChatbotFooter/ChatbotFooter.d.ts +13 -0
  492. package/dist/esm/ChatbotFooter/ChatbotFooter.js +18 -0
  493. package/dist/esm/ChatbotFooter/ChatbotFooter.test.d.ts +1 -0
  494. package/dist/esm/ChatbotFooter/ChatbotFooter.test.js +22 -0
  495. package/dist/esm/ChatbotFooter/ChatbotFooternote.test.d.ts +1 -0
  496. package/dist/esm/ChatbotFooter/ChatbotFooternote.test.js +82 -0
  497. package/dist/esm/ChatbotFooter/ChatbotFootnote.d.ts +48 -0
  498. package/dist/esm/ChatbotFooter/ChatbotFootnote.js +34 -0
  499. package/dist/esm/ChatbotFooter/index.d.ts +3 -0
  500. package/dist/esm/ChatbotFooter/index.js +3 -0
  501. package/dist/esm/ChatbotHeader/ChatbotHeader.d.ts +9 -0
  502. package/dist/esm/ChatbotHeader/ChatbotHeader.js +4 -0
  503. package/dist/esm/ChatbotHeader/ChatbotHeader.test.d.ts +1 -0
  504. package/dist/esm/ChatbotHeader/ChatbotHeader.test.js +13 -0
  505. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.d.ts +9 -0
  506. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.js +3 -0
  507. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.d.ts +1 -0
  508. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.js +13 -0
  509. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +18 -0
  510. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.js +22 -0
  511. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -0
  512. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.js +20 -0
  513. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.d.ts +9 -0
  514. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.js +3 -0
  515. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.d.ts +1 -0
  516. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.js +13 -0
  517. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.d.ts +18 -0
  518. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.js +49 -0
  519. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -0
  520. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.js +20 -0
  521. package/dist/esm/ChatbotHeader/ChatbotHeaderNewChatButton.d.ts +18 -0
  522. package/dist/esm/ChatbotHeader/ChatbotHeaderNewChatButton.js +22 -0
  523. package/dist/esm/ChatbotHeader/ChatbotHeaderNewChatButton.test.d.ts +1 -0
  524. package/dist/esm/ChatbotHeader/ChatbotHeaderNewChatButton.test.js +20 -0
  525. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.d.ts +18 -0
  526. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +27 -0
  527. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -0
  528. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +44 -0
  529. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.d.ts +24 -0
  530. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +30 -0
  531. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -0
  532. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +42 -0
  533. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.d.ts +22 -0
  534. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.js +28 -0
  535. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +1 -0
  536. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.js +50 -0
  537. package/dist/esm/ChatbotHeader/index.d.ts +10 -0
  538. package/dist/esm/ChatbotHeader/index.js +10 -0
  539. package/dist/esm/ChatbotModal/ChatbotModal.d.ts +13 -0
  540. package/dist/esm/ChatbotModal/ChatbotModal.js +24 -0
  541. package/dist/esm/ChatbotModal/ChatbotModal.test.d.ts +1 -0
  542. package/dist/esm/ChatbotModal/ChatbotModal.test.js +11 -0
  543. package/dist/esm/ChatbotModal/index.d.ts +2 -0
  544. package/dist/esm/ChatbotModal/index.js +2 -0
  545. package/dist/esm/ChatbotPopover/ChatbotPopover.d.ts +4 -0
  546. package/dist/esm/ChatbotPopover/ChatbotPopover.js +19 -0
  547. package/dist/esm/ChatbotPopover/index.d.ts +2 -0
  548. package/dist/esm/ChatbotPopover/index.js +2 -0
  549. package/dist/esm/ChatbotToggle/ChatbotToggle.d.ts +27 -0
  550. package/dist/esm/ChatbotToggle/ChatbotToggle.js +27 -0
  551. package/dist/esm/ChatbotToggle/ChatbotToggle.test.d.ts +1 -0
  552. package/dist/esm/ChatbotToggle/ChatbotToggle.test.js +59 -0
  553. package/dist/esm/ChatbotToggle/index.d.ts +2 -0
  554. package/dist/esm/ChatbotToggle/index.js +2 -0
  555. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.d.ts +24 -0
  556. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.js +22 -0
  557. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.d.ts +1 -0
  558. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +56 -0
  559. package/dist/esm/ChatbotWelcomePrompt/index.d.ts +2 -0
  560. package/dist/esm/ChatbotWelcomePrompt/index.js +2 -0
  561. package/dist/esm/CodeModal/CodeModal.d.ts +44 -0
  562. package/dist/esm/CodeModal/CodeModal.js +130 -0
  563. package/dist/esm/CodeModal/CodeModal.test.d.ts +1 -0
  564. package/dist/esm/CodeModal/CodeModal.test.js +29 -0
  565. package/dist/esm/CodeModal/index.d.ts +2 -0
  566. package/dist/esm/CodeModal/index.js +2 -0
  567. package/dist/esm/Compare/Compare.d.ts +17 -0
  568. package/dist/esm/Compare/Compare.js +37 -0
  569. package/dist/esm/Compare/Compare.test.d.ts +1 -0
  570. package/dist/esm/Compare/Compare.test.js +13 -0
  571. package/dist/esm/Compare/index.d.ts +2 -0
  572. package/dist/esm/Compare/index.js +2 -0
  573. package/dist/esm/DeepThinking/DeepThinking.d.ts +35 -0
  574. package/dist/esm/DeepThinking/DeepThinking.js +39 -0
  575. package/dist/esm/DeepThinking/DeepThinking.test.d.ts +1 -0
  576. package/dist/esm/DeepThinking/DeepThinking.test.js +141 -0
  577. package/dist/esm/DeepThinking/index.d.ts +2 -0
  578. package/dist/esm/DeepThinking/index.js +2 -0
  579. package/dist/esm/FileDetails/FileDetails.d.ts +941 -0
  580. package/dist/esm/FileDetails/FileDetails.js +49 -0
  581. package/dist/esm/FileDetails/FileDetails.test.d.ts +1 -0
  582. package/dist/esm/FileDetails/FileDetails.test.js +37 -0
  583. package/dist/esm/FileDetails/index.d.ts +2 -0
  584. package/dist/esm/FileDetails/index.js +2 -0
  585. package/dist/esm/FileDetailsLabel/FileDetailsLabel.d.ts +28 -0
  586. package/dist/esm/FileDetailsLabel/FileDetailsLabel.js +24 -0
  587. package/dist/esm/FileDetailsLabel/FileDetailsLabel.test.d.ts +1 -0
  588. package/dist/esm/FileDetailsLabel/FileDetailsLabel.test.js +74 -0
  589. package/dist/esm/FileDetailsLabel/index.d.ts +2 -0
  590. package/dist/esm/FileDetailsLabel/index.js +2 -0
  591. package/dist/esm/FileDropZone/FileDropZone.d.ts +37 -0
  592. package/dist/esm/FileDropZone/FileDropZone.js +28 -0
  593. package/dist/esm/FileDropZone/FileDropZone.test.d.ts +1 -0
  594. package/dist/esm/FileDropZone/FileDropZone.test.js +95 -0
  595. package/dist/esm/FileDropZone/index.d.ts +2 -0
  596. package/dist/esm/FileDropZone/index.js +2 -0
  597. package/dist/esm/FilePreview/FilePreview.d.ts +26 -0
  598. package/dist/esm/FilePreview/FilePreview.js +21 -0
  599. package/dist/esm/FilePreview/FilePreview.test.d.ts +1 -0
  600. package/dist/esm/FilePreview/FilePreview.test.js +92 -0
  601. package/dist/esm/FilePreview/index.d.ts +2 -0
  602. package/dist/esm/FilePreview/index.js +2 -0
  603. package/dist/esm/ImagePreview/ImagePreview.d.ts +53 -0
  604. package/dist/esm/ImagePreview/ImagePreview.js +42 -0
  605. package/dist/esm/ImagePreview/ImagePreview.test.d.ts +1 -0
  606. package/dist/esm/ImagePreview/ImagePreview.test.js +220 -0
  607. package/dist/esm/ImagePreview/index.d.ts +2 -0
  608. package/dist/esm/ImagePreview/index.js +2 -0
  609. package/dist/esm/LoadingMessage/LoadingMessage.d.ts +6 -0
  610. package/dist/esm/LoadingMessage/LoadingMessage.js +5 -0
  611. package/dist/esm/LoadingMessage/LoadingMessage.test.d.ts +1 -0
  612. package/dist/esm/LoadingMessage/LoadingMessage.test.js +15 -0
  613. package/dist/esm/LoadingMessage/index.d.ts +2 -0
  614. package/dist/esm/LoadingMessage/index.js +2 -0
  615. package/dist/esm/MarkdownContent/MarkdownContent.d.ts +44 -0
  616. package/dist/esm/MarkdownContent/MarkdownContent.js +174 -0
  617. package/dist/esm/MarkdownContent/MarkdownContent.test.d.ts +1 -0
  618. package/dist/esm/MarkdownContent/MarkdownContent.test.js +187 -0
  619. package/dist/esm/MarkdownContent/index.d.ts +2 -0
  620. package/dist/esm/MarkdownContent/index.js +2 -0
  621. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.d.ts +27 -0
  622. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.js +79 -0
  623. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.test.d.ts +1 -0
  624. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.test.js +126 -0
  625. package/dist/esm/Message/ErrorMessage/ErrorMessage.d.ts +17 -0
  626. package/dist/esm/Message/ErrorMessage/ErrorMessage.js +21 -0
  627. package/dist/esm/Message/ErrorMessage/ErrorMessage.test.d.ts +1 -0
  628. package/dist/esm/Message/ErrorMessage/ErrorMessage.test.js +25 -0
  629. package/dist/esm/Message/ImageMessage/ImageMessage.d.ts +3 -0
  630. package/dist/esm/Message/ImageMessage/ImageMessage.js +17 -0
  631. package/dist/esm/Message/LinkMessage/LinkMessage.d.ts +8 -0
  632. package/dist/esm/Message/LinkMessage/LinkMessage.js +30 -0
  633. package/dist/esm/Message/ListMessage/ListItemMessage.d.ts +3 -0
  634. package/dist/esm/Message/ListMessage/ListItemMessage.js +19 -0
  635. package/dist/esm/Message/ListMessage/OrderedListMessage.d.ts +11 -0
  636. package/dist/esm/Message/ListMessage/OrderedListMessage.js +5 -0
  637. package/dist/esm/Message/ListMessage/UnorderedListMessage.d.ts +9 -0
  638. package/dist/esm/Message/ListMessage/UnorderedListMessage.js +5 -0
  639. package/dist/esm/Message/Message.d.ts +182 -0
  640. package/dist/esm/Message/Message.js +87 -0
  641. package/dist/esm/Message/Message.test.d.ts +1 -0
  642. package/dist/esm/Message/Message.test.js +1123 -0
  643. package/dist/esm/Message/MessageAndActions/MessageAndActions.d.ts +14 -0
  644. package/dist/esm/Message/MessageAndActions/MessageAndActions.js +18 -0
  645. package/dist/esm/Message/MessageAndActions/MessageAndActions.test.d.ts +1 -0
  646. package/dist/esm/Message/MessageAndActions/MessageAndActions.test.js +20 -0
  647. package/dist/esm/Message/MessageAndActions/index.d.ts +1 -0
  648. package/dist/esm/Message/MessageAndActions/index.js +1 -0
  649. package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.d.ts +13 -0
  650. package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.js +18 -0
  651. package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.test.d.ts +1 -0
  652. package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.test.js +20 -0
  653. package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.d.ts +13 -0
  654. package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.js +18 -0
  655. package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.test.d.ts +1 -0
  656. package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.test.js +20 -0
  657. package/dist/esm/Message/MessageAttachments/index.d.ts +2 -0
  658. package/dist/esm/Message/MessageAttachments/index.js +2 -0
  659. package/dist/esm/Message/MessageInput.d.ts +20 -0
  660. package/dist/esm/Message/MessageInput.js +23 -0
  661. package/dist/esm/Message/MessageLoading.d.ts +14 -0
  662. package/dist/esm/Message/MessageLoading.js +18 -0
  663. package/dist/esm/Message/MessageLoading.test.d.ts +1 -0
  664. package/dist/esm/Message/MessageLoading.test.js +20 -0
  665. package/dist/esm/Message/Plugins/index.d.ts +1 -0
  666. package/dist/esm/Message/Plugins/index.js +1 -0
  667. package/dist/esm/Message/Plugins/rehypeCodeBlockToggle.d.ts +2 -0
  668. package/dist/esm/Message/Plugins/rehypeCodeBlockToggle.js +20 -0
  669. package/dist/esm/Message/Plugins/rehypeMoveImagesOutOfParagraphs.d.ts +2 -0
  670. package/dist/esm/Message/Plugins/rehypeMoveImagesOutOfParagraphs.js +43 -0
  671. package/dist/esm/Message/QuickResponse/QuickResponse.d.ts +19 -0
  672. package/dist/esm/Message/QuickResponse/QuickResponse.js +29 -0
  673. package/dist/esm/Message/QuickResponse/QuickResponse.test.d.ts +1 -0
  674. package/dist/esm/Message/QuickResponse/QuickResponse.test.js +104 -0
  675. package/dist/esm/Message/QuickResponse/index.d.ts +1 -0
  676. package/dist/esm/Message/QuickResponse/index.js +1 -0
  677. package/dist/esm/Message/QuickStarts/FallbackImg.d.ts +13 -0
  678. package/dist/esm/Message/QuickStarts/FallbackImg.js +10 -0
  679. package/dist/esm/Message/QuickStarts/QuickStartTile.d.ts +29 -0
  680. package/dist/esm/Message/QuickStarts/QuickStartTile.js +39 -0
  681. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.d.ts +23 -0
  682. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.js +29 -0
  683. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.d.ts +1 -0
  684. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.js +48 -0
  685. package/dist/esm/Message/QuickStarts/QuickStartTileHeader.d.ts +11 -0
  686. package/dist/esm/Message/QuickStarts/QuickStartTileHeader.js +4 -0
  687. package/dist/esm/Message/QuickStarts/index.d.ts +2 -0
  688. package/dist/esm/Message/QuickStarts/index.js +2 -0
  689. package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.d.ts +30 -0
  690. package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.js +74 -0
  691. package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart.d.ts +30 -0
  692. package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart.js +74 -0
  693. package/dist/esm/Message/QuickStarts/types.d.ts +133 -0
  694. package/dist/esm/Message/QuickStarts/types.js +14 -0
  695. package/dist/esm/Message/SuperscriptMessage/SuperscriptMessage.d.ts +3 -0
  696. package/dist/esm/Message/SuperscriptMessage/SuperscriptMessage.js +3 -0
  697. package/dist/esm/Message/TableMessage/TableMessage.d.ts +27 -0
  698. package/dist/esm/Message/TableMessage/TableMessage.js +64 -0
  699. package/dist/esm/Message/TableMessage/TbodyMessage.d.ts +6 -0
  700. package/dist/esm/Message/TableMessage/TbodyMessage.js +29 -0
  701. package/dist/esm/Message/TableMessage/TdMessage.d.ts +4 -0
  702. package/dist/esm/Message/TableMessage/TdMessage.js +18 -0
  703. package/dist/esm/Message/TableMessage/ThMessage.d.ts +4 -0
  704. package/dist/esm/Message/TableMessage/ThMessage.js +18 -0
  705. package/dist/esm/Message/TableMessage/TheadMessage.d.ts +4 -0
  706. package/dist/esm/Message/TableMessage/TheadMessage.js +18 -0
  707. package/dist/esm/Message/TableMessage/TrMessage.d.ts +6 -0
  708. package/dist/esm/Message/TableMessage/TrMessage.js +33 -0
  709. package/dist/esm/Message/TextMessage/TextMessage.d.ts +14 -0
  710. package/dist/esm/Message/TextMessage/TextMessage.js +19 -0
  711. package/dist/esm/Message/UserFeedback/CloseButton.d.ts +10 -0
  712. package/dist/esm/Message/UserFeedback/CloseButton.js +6 -0
  713. package/dist/esm/Message/UserFeedback/UserFeedback.d.ts +55 -0
  714. package/dist/esm/Message/UserFeedback/UserFeedback.js +38 -0
  715. package/dist/esm/Message/UserFeedback/UserFeedback.test.d.ts +1 -0
  716. package/dist/esm/Message/UserFeedback/UserFeedback.test.js +176 -0
  717. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.d.ts +42 -0
  718. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.js +87 -0
  719. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.d.ts +1 -0
  720. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.js +238 -0
  721. package/dist/esm/Message/UserFeedback/index.d.ts +2 -0
  722. package/dist/esm/Message/UserFeedback/index.js +2 -0
  723. package/dist/esm/Message/index.d.ts +11 -0
  724. package/dist/esm/Message/index.js +11 -0
  725. package/dist/esm/MessageBar/AttachButton.d.ts +47 -0
  726. package/dist/esm/MessageBar/AttachButton.js +27 -0
  727. package/dist/esm/MessageBar/AttachButton.test.d.ts +1 -0
  728. package/dist/esm/MessageBar/AttachButton.test.js +147 -0
  729. package/dist/esm/MessageBar/MessageBar.d.ts +124 -0
  730. package/dist/esm/MessageBar/MessageBar.js +241 -0
  731. package/dist/esm/MessageBar/MessageBar.test.d.ts +1 -0
  732. package/dist/esm/MessageBar/MessageBar.test.js +333 -0
  733. package/dist/esm/MessageBar/MicrophoneButton.d.ts +24 -0
  734. package/dist/esm/MessageBar/MicrophoneButton.js +65 -0
  735. package/dist/esm/MessageBar/SendButton.d.ts +16 -0
  736. package/dist/esm/MessageBar/SendButton.js +22 -0
  737. package/dist/esm/MessageBar/SendButton.test.d.ts +1 -0
  738. package/dist/esm/MessageBar/SendButton.test.js +53 -0
  739. package/dist/esm/MessageBar/StopButton.d.ts +16 -0
  740. package/dist/esm/MessageBar/StopButton.js +21 -0
  741. package/dist/esm/MessageBar/StopButton.test.d.ts +1 -0
  742. package/dist/esm/MessageBar/StopButton.test.js +53 -0
  743. package/dist/esm/MessageBar/index.d.ts +5 -0
  744. package/dist/esm/MessageBar/index.js +5 -0
  745. package/dist/esm/MessageBox/JumpButton.d.ts +16 -0
  746. package/dist/esm/MessageBox/JumpButton.js +7 -0
  747. package/dist/esm/MessageBox/JumpButton.test.d.ts +1 -0
  748. package/dist/esm/MessageBox/JumpButton.test.js +34 -0
  749. package/dist/esm/MessageBox/MessageBox.d.ts +42 -0
  750. package/dist/esm/MessageBox/MessageBox.js +205 -0
  751. package/dist/esm/MessageBox/MessageBox.test.d.ts +1 -0
  752. package/dist/esm/MessageBox/MessageBox.test.js +230 -0
  753. package/dist/esm/MessageBox/index.d.ts +3 -0
  754. package/dist/esm/MessageBox/index.js +3 -0
  755. package/dist/esm/MessageDivider/MessageDivider.d.ts +9 -0
  756. package/dist/esm/MessageDivider/MessageDivider.js +21 -0
  757. package/dist/esm/MessageDivider/MessageDivider.test.d.ts +1 -0
  758. package/dist/esm/MessageDivider/MessageDivider.test.js +24 -0
  759. package/dist/esm/MessageDivider/index.d.ts +2 -0
  760. package/dist/esm/MessageDivider/index.js +2 -0
  761. package/dist/esm/Onboarding/Onboarding.d.ts +36 -0
  762. package/dist/esm/Onboarding/Onboarding.js +30 -0
  763. package/dist/esm/Onboarding/Onboarding.test.d.ts +1 -0
  764. package/dist/esm/Onboarding/Onboarding.test.js +75 -0
  765. package/dist/esm/Onboarding/index.d.ts +2 -0
  766. package/dist/esm/Onboarding/index.js +2 -0
  767. package/dist/esm/PreviewAttachment/PreviewAttachment.d.ts +34 -0
  768. package/dist/esm/PreviewAttachment/PreviewAttachment.js +15 -0
  769. package/dist/esm/PreviewAttachment/PreviewAttachment.test.d.ts +1 -0
  770. package/dist/esm/PreviewAttachment/PreviewAttachment.test.js +48 -0
  771. package/dist/esm/PreviewAttachment/index.d.ts +2 -0
  772. package/dist/esm/PreviewAttachment/index.js +2 -0
  773. package/dist/esm/ResponseActions/ResponseActionButton.d.ts +29 -0
  774. package/dist/esm/ResponseActions/ResponseActionButton.js +28 -0
  775. package/dist/esm/ResponseActions/ResponseActionButton.test.d.ts +1 -0
  776. package/dist/esm/ResponseActions/ResponseActionButton.test.js +49 -0
  777. package/dist/esm/ResponseActions/ResponseActions.d.ts +61 -0
  778. package/dist/esm/ResponseActions/ResponseActions.js +113 -0
  779. package/dist/esm/ResponseActions/ResponseActions.test.d.ts +1 -0
  780. package/dist/esm/ResponseActions/ResponseActions.test.js +447 -0
  781. package/dist/esm/ResponseActions/ResponseActionsGroups.d.ts +13 -0
  782. package/dist/esm/ResponseActions/ResponseActionsGroups.js +18 -0
  783. package/dist/esm/ResponseActions/ResponseActionsGroups.test.d.ts +1 -0
  784. package/dist/esm/ResponseActions/ResponseActionsGroups.test.js +20 -0
  785. package/dist/esm/ResponseActions/index.d.ts +3 -0
  786. package/dist/esm/ResponseActions/index.js +3 -0
  787. package/dist/esm/Settings/SettingsForm.d.ts +15 -0
  788. package/dist/esm/Settings/SettingsForm.js +17 -0
  789. package/dist/esm/Settings/SettingsForm.test.d.ts +1 -0
  790. package/dist/esm/Settings/SettingsForm.test.js +33 -0
  791. package/dist/esm/Settings/index.d.ts +2 -0
  792. package/dist/esm/Settings/index.js +2 -0
  793. package/dist/esm/SourceDetailsMenuItem/SourceDetailsMenuItem.d.ts +11 -0
  794. package/dist/esm/SourceDetailsMenuItem/SourceDetailsMenuItem.js +18 -0
  795. package/dist/esm/SourceDetailsMenuItem/index.d.ts +2 -0
  796. package/dist/esm/SourceDetailsMenuItem/index.js +2 -0
  797. package/dist/esm/SourcesCard/SourcesCard.d.ts +65 -0
  798. package/dist/esm/SourcesCard/SourcesCard.js +20 -0
  799. package/dist/esm/SourcesCard/SourcesCard.test.d.ts +1 -0
  800. package/dist/esm/SourcesCard/SourcesCard.test.js +34 -0
  801. package/dist/esm/SourcesCard/index.d.ts +2 -0
  802. package/dist/esm/SourcesCard/index.js +2 -0
  803. package/dist/esm/SourcesCardBase/SourcesCardBase.d.ts +61 -0
  804. package/dist/esm/SourcesCardBase/SourcesCardBase.js +56 -0
  805. package/dist/esm/SourcesCardBase/SourcesCardBase.test.d.ts +1 -0
  806. package/dist/esm/SourcesCardBase/SourcesCardBase.test.js +194 -0
  807. package/dist/esm/SourcesCardBase/index.d.ts +2 -0
  808. package/dist/esm/SourcesCardBase/index.js +2 -0
  809. package/dist/esm/TermsOfUse/TermsOfUse.d.ts +36 -0
  810. package/dist/esm/TermsOfUse/TermsOfUse.js +30 -0
  811. package/dist/esm/TermsOfUse/TermsOfUse.test.d.ts +1 -0
  812. package/dist/esm/TermsOfUse/TermsOfUse.test.js +72 -0
  813. package/dist/esm/TermsOfUse/index.d.ts +2 -0
  814. package/dist/esm/TermsOfUse/index.js +2 -0
  815. package/dist/esm/ToolCall/ToolCall.d.ts +55 -0
  816. package/dist/esm/ToolCall/ToolCall.js +28 -0
  817. package/dist/esm/ToolCall/ToolCall.test.d.ts +1 -0
  818. package/dist/esm/ToolCall/ToolCall.test.js +196 -0
  819. package/dist/esm/ToolCall/index.d.ts +2 -0
  820. package/dist/esm/ToolCall/index.js +2 -0
  821. package/dist/esm/ToolResponse/ToolResponse.d.ts +47 -0
  822. package/dist/esm/ToolResponse/ToolResponse.js +57 -0
  823. package/dist/esm/ToolResponse/ToolResponse.test.d.ts +1 -0
  824. package/dist/esm/ToolResponse/ToolResponse.test.js +179 -0
  825. package/dist/esm/ToolResponse/index.d.ts +2 -0
  826. package/dist/esm/ToolResponse/index.js +2 -0
  827. package/dist/esm/__mocks__/monaco-editor.d.ts +11 -0
  828. package/dist/esm/__mocks__/monaco-editor.js +18 -0
  829. package/dist/esm/__mocks__/rehype-external-links.d.ts +2 -0
  830. package/dist/esm/__mocks__/rehype-external-links.js +2 -0
  831. package/dist/esm/__mocks__/rehype-highlight.d.ts +2 -0
  832. package/dist/esm/__mocks__/rehype-highlight.js +2 -0
  833. package/dist/esm/__mocks__/rehype-sanitize.d.ts +2 -0
  834. package/dist/esm/__mocks__/rehype-sanitize.js +2 -0
  835. package/dist/esm/__mocks__/rehype-unwrap-images.d.ts +2 -0
  836. package/dist/esm/__mocks__/rehype-unwrap-images.js +2 -0
  837. package/dist/esm/index.d.ts +74 -0
  838. package/dist/esm/index.js +75 -0
  839. package/dist/esm/tracking/console_tracking_provider.d.ts +9 -0
  840. package/dist/esm/tracking/console_tracking_provider.js +30 -0
  841. package/dist/esm/tracking/index.d.ts +2 -0
  842. package/dist/esm/tracking/index.js +2 -0
  843. package/dist/esm/tracking/posthog_tracking_provider.d.ts +9 -0
  844. package/dist/esm/tracking/posthog_tracking_provider.js +42 -0
  845. package/dist/esm/tracking/segment_tracking_provider.d.ts +10 -0
  846. package/dist/esm/tracking/segment_tracking_provider.js +55 -0
  847. package/dist/esm/tracking/trackingProviderProxy.d.ts +9 -0
  848. package/dist/esm/tracking/trackingProviderProxy.js +22 -0
  849. package/dist/esm/tracking/tracking_api.d.ts +8 -0
  850. package/dist/esm/tracking/tracking_api.js +1 -0
  851. package/dist/esm/tracking/tracking_registry.d.ts +4 -0
  852. package/dist/esm/tracking/tracking_registry.js +60 -0
  853. package/dist/esm/tracking/tracking_spi.d.ts +19 -0
  854. package/dist/esm/tracking/tracking_spi.js +8 -0
  855. package/dist/esm/tracking/umami_tracking_provider.d.ts +18 -0
  856. package/dist/esm/tracking/umami_tracking_provider.js +84 -0
  857. package/dist/tsconfig.tsbuildinfo +1 -0
  858. package/generate-fed-package-json.js +75 -0
  859. package/generate-index.js +42 -0
  860. package/package.json +96 -0
  861. package/patternfly-a11y.config.js +28 -0
  862. package/patternfly-docs/content/extensions/chatbot/chatbot.md +57 -0
  863. package/patternfly-docs/content/extensions/chatbot/design-guidelines.md +476 -0
  864. package/patternfly-docs/content/extensions/chatbot/examples/Analytics/Analytics.md +223 -0
  865. package/patternfly-docs/content/extensions/chatbot/examples/Customizing Messages/Customizing Messages.md +51 -0
  866. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachMenu.tsx +149 -0
  867. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentEdit.tsx +35 -0
  868. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentError.tsx +13 -0
  869. package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +367 -0
  870. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDetails.tsx +4 -0
  871. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDetailsLabel.tsx +65 -0
  872. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDropZone.tsx +61 -0
  873. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FilePreview.tsx +33 -0
  874. package/patternfly-docs/content/extensions/chatbot/examples/Messages/ImagePreview.tsx +53 -0
  875. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithAttachment.tsx +75 -0
  876. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithClickedResponseActions.tsx +23 -0
  877. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithCustomResponseActions.tsx +32 -0
  878. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithCustomStructure.tsx +101 -0
  879. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithDeepThinking.tsx +40 -0
  880. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithDividers.tsx +17 -0
  881. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedback.tsx +138 -0
  882. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedbackTimeout.tsx +25 -0
  883. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithIconSwapping.tsx +20 -0
  884. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithMarkdownDeepThinking.tsx +24 -0
  885. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithMarkdownToolCall.tsx +27 -0
  886. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithMarkdownToolResponse.tsx +198 -0
  887. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithMultipleActionGroups.tsx +58 -0
  888. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithPersistedActions.tsx +20 -0
  889. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickResponses.tsx +81 -0
  890. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickStart.tsx +38 -0
  891. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithResponseActions.tsx +43 -0
  892. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithSources.tsx +273 -0
  893. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithToolCall.tsx +54 -0
  894. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithToolResponse.tsx +249 -0
  895. package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +440 -0
  896. package/patternfly-docs/content/extensions/chatbot/examples/Messages/PF-social-color-square.svg +19 -0
  897. package/patternfly-docs/content/extensions/chatbot/examples/Messages/PF-social-dark-square.svg +19 -0
  898. package/patternfly-docs/content/extensions/chatbot/examples/Messages/PaperclipIcon.svg +10 -0
  899. package/patternfly-docs/content/extensions/chatbot/examples/Messages/PreviewAttachment.tsx +34 -0
  900. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +420 -0
  901. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessageWithExtraContent.tsx +665 -0
  902. package/patternfly-docs/content/extensions/chatbot/examples/Messages/explore-pipeline-quickstart.ts +65 -0
  903. package/patternfly-docs/content/extensions/chatbot/examples/Messages/file-preview.svg +9 -0
  904. package/patternfly-docs/content/extensions/chatbot/examples/Messages/patternfly_avatar.jpg +0 -0
  905. package/patternfly-docs/content/extensions/chatbot/examples/Messages/user_avatar.svg +18 -0
  906. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotContainer.tsx +89 -0
  907. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotConversationEditing.tsx +202 -0
  908. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFooter.tsx +14 -0
  909. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFootnote.tsx +32 -0
  910. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderBasic.tsx +200 -0
  911. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawer.tsx +217 -0
  912. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerNavigation.tsx +67 -0
  913. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerResizable.tsx +105 -0
  914. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithActions.tsx +84 -0
  915. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithPin.tsx +206 -0
  916. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithSearchActions.tsx +198 -0
  917. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithSelection.tsx +87 -0
  918. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderTitle.tsx +75 -0
  919. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBar.tsx +8 -0
  920. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarAttach.tsx +148 -0
  921. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarCustomActions.tsx +190 -0
  922. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarDisabled.tsx +26 -0
  923. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarLanguage.tsx +17 -0
  924. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarStop.tsx +10 -0
  925. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotModal.tsx +121 -0
  926. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotToggleBasic.tsx +13 -0
  927. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomeInteraction.tsx +142 -0
  928. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomePrompt.tsx +38 -0
  929. package/patternfly-docs/content/extensions/chatbot/examples/UI/CompactOnboarding.tsx +141 -0
  930. package/patternfly-docs/content/extensions/chatbot/examples/UI/CompactSettings.tsx +282 -0
  931. package/patternfly-docs/content/extensions/chatbot/examples/UI/CustomClosedIcon.tsx +89 -0
  932. package/patternfly-docs/content/extensions/chatbot/examples/UI/Onboarding.tsx +151 -0
  933. package/patternfly-docs/content/extensions/chatbot/examples/UI/PF-HorizontalLogo-Color.svg +29 -0
  934. package/patternfly-docs/content/extensions/chatbot/examples/UI/PF-HorizontalLogo-Reverse.svg +28 -0
  935. package/patternfly-docs/content/extensions/chatbot/examples/UI/PF-IconLogo-Color.svg +17 -0
  936. package/patternfly-docs/content/extensions/chatbot/examples/UI/PF-IconLogo-Reverse.svg +16 -0
  937. package/patternfly-docs/content/extensions/chatbot/examples/UI/PF-TermsAndConditionsHeader.svg +148 -0
  938. package/patternfly-docs/content/extensions/chatbot/examples/UI/RH-Hat-Image.svg +9 -0
  939. package/patternfly-docs/content/extensions/chatbot/examples/UI/SecondaryChatbotToggle.tsx +15 -0
  940. package/patternfly-docs/content/extensions/chatbot/examples/UI/Settings.tsx +282 -0
  941. package/patternfly-docs/content/extensions/chatbot/examples/UI/SkipToContent.tsx +40 -0
  942. package/patternfly-docs/content/extensions/chatbot/examples/UI/SquareChatbotToggle.tsx +14 -0
  943. package/patternfly-docs/content/extensions/chatbot/examples/UI/TermsOfUse.tsx +190 -0
  944. package/patternfly-docs/content/extensions/chatbot/examples/UI/TermsOfUseCompact.tsx +179 -0
  945. package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +511 -0
  946. package/patternfly-docs/content/extensions/chatbot/examples/demos/AttachmentDemos.md +150 -0
  947. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +205 -0
  948. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.tsx +463 -0
  949. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachment.tsx +307 -0
  950. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachmentMenu.tsx +270 -0
  951. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotCompact.tsx +453 -0
  952. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotDisplayMode.tsx +464 -0
  953. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotInDrawer.tsx +428 -0
  954. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotScrolling.tsx +514 -0
  955. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotTranscripts.tsx +540 -0
  956. package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedChatbot.tsx +414 -0
  957. package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedComparisonChatbot.tsx +208 -0
  958. package/patternfly-docs/content/extensions/chatbot/examples/demos/Feedback.tsx +104 -0
  959. package/patternfly-docs/content/extensions/chatbot/examples/demos/WhiteEmbeddedChatbot.tsx +429 -0
  960. package/patternfly-docs/content/extensions/chatbot/images.css +6 -0
  961. package/patternfly-docs/content/extensions/chatbot/img/ai-action-inpage.svg +90 -0
  962. package/patternfly-docs/content/extensions/chatbot/img/ai-action-message.svg +69 -0
  963. package/patternfly-docs/content/extensions/chatbot/img/analytics-example.svg +127 -0
  964. package/patternfly-docs/content/extensions/chatbot/img/attached-file.svg +41 -0
  965. package/patternfly-docs/content/extensions/chatbot/img/attachment-error.svg +12 -0
  966. package/patternfly-docs/content/extensions/chatbot/img/attachment-menu.svg +157 -0
  967. package/patternfly-docs/content/extensions/chatbot/img/attachment-unsent.svg +48 -0
  968. package/patternfly-docs/content/extensions/chatbot/img/avatar-options.svg +423 -0
  969. package/patternfly-docs/content/extensions/chatbot/img/chatbot-analytics.svg +51 -0
  970. package/patternfly-docs/content/extensions/chatbot/img/chatbot-elements.svg +144 -0
  971. package/patternfly-docs/content/extensions/chatbot/img/chatbot-quickstarts-tile.svg +62 -0
  972. package/patternfly-docs/content/extensions/chatbot/img/chatbot-settings.svg +83 -0
  973. package/patternfly-docs/content/extensions/chatbot/img/chatbot-toggle-notification.svg +25 -0
  974. package/patternfly-docs/content/extensions/chatbot/img/chatbot-toggle.svg +41 -0
  975. package/patternfly-docs/content/extensions/chatbot/img/comparison.svg +44 -0
  976. package/patternfly-docs/content/extensions/chatbot/img/conversation-history.svg +55 -0
  977. package/patternfly-docs/content/extensions/chatbot/img/custom-source-card.svg +37 -0
  978. package/patternfly-docs/content/extensions/chatbot/img/display-menu.svg +134 -0
  979. package/patternfly-docs/content/extensions/chatbot/img/docked.svg +405 -0
  980. package/patternfly-docs/content/extensions/chatbot/img/download-chat-history.svg +55 -0
  981. package/patternfly-docs/content/extensions/chatbot/img/download-header.svg +138 -0
  982. package/patternfly-docs/content/extensions/chatbot/img/download-message-action.svg +26 -0
  983. package/patternfly-docs/content/extensions/chatbot/img/drawer.svg +298 -0
  984. package/patternfly-docs/content/extensions/chatbot/img/embedded.svg +174 -0
  985. package/patternfly-docs/content/extensions/chatbot/img/error-state.svg +37 -0
  986. package/patternfly-docs/content/extensions/chatbot/img/feedback-form.svg +91 -0
  987. package/patternfly-docs/content/extensions/chatbot/img/footnote.svg +82 -0
  988. package/patternfly-docs/content/extensions/chatbot/img/fullscreen.svg +128 -0
  989. package/patternfly-docs/content/extensions/chatbot/img/listening-pulse.svg +22 -0
  990. package/patternfly-docs/content/extensions/chatbot/img/listening.svg +65 -0
  991. package/patternfly-docs/content/extensions/chatbot/img/loading-state.svg +33 -0
  992. package/patternfly-docs/content/extensions/chatbot/img/masthead-toggle-notification.svg +54 -0
  993. package/patternfly-docs/content/extensions/chatbot/img/masthead-toggle.svg +80 -0
  994. package/patternfly-docs/content/extensions/chatbot/img/message-bar-elements.svg +23 -0
  995. package/patternfly-docs/content/extensions/chatbot/img/message-elements.svg +115 -0
  996. package/patternfly-docs/content/extensions/chatbot/img/message-feedback.svg +56 -0
  997. package/patternfly-docs/content/extensions/chatbot/img/message-responses.svg +67 -0
  998. package/patternfly-docs/content/extensions/chatbot/img/new-chat-emptystate.svg +30 -0
  999. package/patternfly-docs/content/extensions/chatbot/img/new-chat-in-nav.svg +21 -0
  1000. package/patternfly-docs/content/extensions/chatbot/img/no-results-emptystate.svg +30 -0
  1001. package/patternfly-docs/content/extensions/chatbot/img/overlay.svg +331 -0
  1002. package/patternfly-docs/content/extensions/chatbot/img/posthog.svg +30 -0
  1003. package/patternfly-docs/content/extensions/chatbot/img/quick-response-confirmation.svg +73 -0
  1004. package/patternfly-docs/content/extensions/chatbot/img/segment.svg +36 -0
  1005. package/patternfly-docs/content/extensions/chatbot/img/settings-menu.svg +130 -0
  1006. package/patternfly-docs/content/extensions/chatbot/img/source-card-expanded.svg +171 -0
  1007. package/patternfly-docs/content/extensions/chatbot/img/source-card-summary.svg +87 -0
  1008. package/patternfly-docs/content/extensions/chatbot/img/source-card.svg +80 -0
  1009. package/patternfly-docs/content/extensions/chatbot/img/source-tile-expanded.svg +134 -0
  1010. package/patternfly-docs/content/extensions/chatbot/img/source-tile-summary.svg +82 -0
  1011. package/patternfly-docs/content/extensions/chatbot/img/source-tile.svg +75 -0
  1012. package/patternfly-docs/content/extensions/chatbot/img/starting-new-chat.svg +57 -0
  1013. package/patternfly-docs/content/extensions/chatbot/img/stop-button.svg +69 -0
  1014. package/patternfly-docs/content/extensions/chatbot/img/thank-you-card.svg +89 -0
  1015. package/patternfly-docs/content/extensions/chatbot/img/toggle-customizations.svg +12 -0
  1016. package/patternfly-docs/content/extensions/chatbot/img/toggle-tooltips.svg +55 -0
  1017. package/patternfly-docs/content/extensions/chatbot/img/umami.svg +30 -0
  1018. package/patternfly-docs/content/extensions/chatbot/img/welcome-elements.svg +78 -0
  1019. package/patternfly-docs/content/extensions/chatbot/img/welcome-message.svg +94 -0
  1020. package/patternfly-docs/pages/index.js +27 -0
  1021. package/patternfly-docs/patternfly-docs.config.js +9 -0
  1022. package/patternfly-docs/patternfly-docs.css.js +9 -0
  1023. package/patternfly-docs/patternfly-docs.routes.js +12 -0
  1024. package/patternfly-docs/patternfly-docs.source.js +24 -0
  1025. package/release.config.js +18 -0
  1026. package/src/AttachMenu/AttachMenu.scss +62 -0
  1027. package/src/AttachMenu/AttachMenu.tsx +92 -0
  1028. package/src/AttachMenu/index.ts +3 -0
  1029. package/src/AttachmentEdit/AttachmentEdit.test.tsx +99 -0
  1030. package/src/AttachmentEdit/AttachmentEdit.tsx +85 -0
  1031. package/src/AttachmentEdit/index.ts +3 -0
  1032. package/src/Chatbot/Chatbot.scss +186 -0
  1033. package/src/Chatbot/Chatbot.test.tsx +39 -0
  1034. package/src/Chatbot/Chatbot.tsx +65 -0
  1035. package/src/Chatbot/index.ts +3 -0
  1036. package/src/ChatbotAlert/ChatbotAlert.scss +5 -0
  1037. package/src/ChatbotAlert/ChatbotAlert.test.tsx +30 -0
  1038. package/src/ChatbotAlert/ChatbotAlert.tsx +32 -0
  1039. package/src/ChatbotAlert/index.ts +3 -0
  1040. package/src/ChatbotContent/ChatbotContent.scss +42 -0
  1041. package/src/ChatbotContent/ChatbotContent.test.tsx +19 -0
  1042. package/src/ChatbotContent/ChatbotContent.tsx +26 -0
  1043. package/src/ChatbotContent/index.ts +3 -0
  1044. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.tsx +86 -0
  1045. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.tsx +80 -0
  1046. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.scss +317 -0
  1047. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +718 -0
  1048. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +421 -0
  1049. package/src/ChatbotConversationHistoryNav/EmptyState.tsx +44 -0
  1050. package/src/ChatbotConversationHistoryNav/LoadingState.tsx +34 -0
  1051. package/src/ChatbotConversationHistoryNav/index.ts +4 -0
  1052. package/src/ChatbotFooter/ChatbotFooter.scss +94 -0
  1053. package/src/ChatbotFooter/ChatbotFooter.test.tsx +33 -0
  1054. package/src/ChatbotFooter/ChatbotFooter.tsx +42 -0
  1055. package/src/ChatbotFooter/ChatbotFooternote.test.tsx +83 -0
  1056. package/src/ChatbotFooter/ChatbotFootnote.scss +12 -0
  1057. package/src/ChatbotFooter/ChatbotFootnote.tsx +139 -0
  1058. package/src/ChatbotFooter/index.ts +4 -0
  1059. package/src/ChatbotHeader/ChatbotHeader.scss +140 -0
  1060. package/src/ChatbotHeader/ChatbotHeader.test.tsx +14 -0
  1061. package/src/ChatbotHeader/ChatbotHeader.tsx +19 -0
  1062. package/src/ChatbotHeader/ChatbotHeaderActions.test.tsx +16 -0
  1063. package/src/ChatbotHeader/ChatbotHeaderActions.tsx +15 -0
  1064. package/src/ChatbotHeader/ChatbotHeaderCloseButton.test.tsx +25 -0
  1065. package/src/ChatbotHeader/ChatbotHeaderCloseButton.tsx +64 -0
  1066. package/src/ChatbotHeader/ChatbotHeaderMain.test.tsx +16 -0
  1067. package/src/ChatbotHeader/ChatbotHeaderMain.tsx +17 -0
  1068. package/src/ChatbotHeader/ChatbotHeaderMenu.test.tsx +26 -0
  1069. package/src/ChatbotHeader/ChatbotHeaderMenu.tsx +104 -0
  1070. package/src/ChatbotHeader/ChatbotHeaderNewChatButton.test.tsx +25 -0
  1071. package/src/ChatbotHeader/ChatbotHeaderNewChatButton.tsx +64 -0
  1072. package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.tsx +59 -0
  1073. package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.tsx +90 -0
  1074. package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.tsx +61 -0
  1075. package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.tsx +99 -0
  1076. package/src/ChatbotHeader/ChatbotHeaderTitle.test.tsx +74 -0
  1077. package/src/ChatbotHeader/ChatbotHeaderTitle.tsx +62 -0
  1078. package/src/ChatbotHeader/index.ts +11 -0
  1079. package/src/ChatbotModal/ChatbotModal.scss +98 -0
  1080. package/src/ChatbotModal/ChatbotModal.test.tsx +58 -0
  1081. package/src/ChatbotModal/ChatbotModal.tsx +47 -0
  1082. package/src/ChatbotModal/index.ts +3 -0
  1083. package/src/ChatbotPopover/ChatbotPopover.scss +31 -0
  1084. package/src/ChatbotPopover/ChatbotPopover.tsx +15 -0
  1085. package/src/ChatbotPopover/index.ts +3 -0
  1086. package/src/ChatbotToggle/ChatbotToggle.scss +49 -0
  1087. package/src/ChatbotToggle/ChatbotToggle.test.tsx +50 -0
  1088. package/src/ChatbotToggle/ChatbotToggle.tsx +96 -0
  1089. package/src/ChatbotToggle/index.ts +3 -0
  1090. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.scss +58 -0
  1091. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.tsx +84 -0
  1092. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.tsx +77 -0
  1093. package/src/ChatbotWelcomePrompt/__snapshots__/ChatbotWelcomePrompt.test.tsx.snap +29 -0
  1094. package/src/ChatbotWelcomePrompt/index.ts +3 -0
  1095. package/src/CodeModal/CodeModal.scss +97 -0
  1096. package/src/CodeModal/CodeModal.test.tsx +51 -0
  1097. package/src/CodeModal/CodeModal.tsx +252 -0
  1098. package/src/CodeModal/index.ts +3 -0
  1099. package/src/Compare/Compare.scss +72 -0
  1100. package/src/Compare/Compare.test.tsx +30 -0
  1101. package/src/Compare/Compare.tsx +99 -0
  1102. package/src/Compare/index.ts +2 -0
  1103. package/src/DeepThinking/DeepThinking.scss +24 -0
  1104. package/src/DeepThinking/DeepThinking.test.tsx +193 -0
  1105. package/src/DeepThinking/DeepThinking.tsx +130 -0
  1106. package/src/DeepThinking/index.ts +3 -0
  1107. package/src/FileDetails/FileDetails.scss +35 -0
  1108. package/src/FileDetails/FileDetails.test.tsx +38 -0
  1109. package/src/FileDetails/FileDetails.tsx +1047 -0
  1110. package/src/FileDetails/__snapshots__/FileDetails.test.tsx.snap +80 -0
  1111. package/src/FileDetails/index.ts +2 -0
  1112. package/src/FileDetailsLabel/FileDetailsLabel.scss +71 -0
  1113. package/src/FileDetailsLabel/FileDetailsLabel.test.tsx +67 -0
  1114. package/src/FileDetailsLabel/FileDetailsLabel.tsx +79 -0
  1115. package/src/FileDetailsLabel/__snapshots__/FileDetailsLabel.test.tsx.snap +96 -0
  1116. package/src/FileDetailsLabel/index.ts +2 -0
  1117. package/src/FileDropZone/FileDropZone.scss +56 -0
  1118. package/src/FileDropZone/FileDropZone.test.tsx +126 -0
  1119. package/src/FileDropZone/FileDropZone.tsx +96 -0
  1120. package/src/FileDropZone/__snapshots__/FileDropZone.test.tsx.snap +19 -0
  1121. package/src/FileDropZone/index.ts +3 -0
  1122. package/src/FilePreview/FilePreview.scss +22 -0
  1123. package/src/FilePreview/FilePreview.test.tsx +112 -0
  1124. package/src/FilePreview/FilePreview.tsx +58 -0
  1125. package/src/FilePreview/index.ts +3 -0
  1126. package/src/ImagePreview/ImagePreview.scss +61 -0
  1127. package/src/ImagePreview/ImagePreview.test.tsx +253 -0
  1128. package/src/ImagePreview/ImagePreview.tsx +200 -0
  1129. package/src/ImagePreview/index.ts +3 -0
  1130. package/src/LoadingMessage/LoadingMessage.test.tsx +15 -0
  1131. package/src/LoadingMessage/LoadingMessage.tsx +27 -0
  1132. package/src/LoadingMessage/__snapshots__/LoadingMessage.test.tsx.snap +64 -0
  1133. package/src/LoadingMessage/index.ts +3 -0
  1134. package/src/MarkdownContent/MarkdownContent.test.tsx +207 -0
  1135. package/src/MarkdownContent/MarkdownContent.tsx +269 -0
  1136. package/src/MarkdownContent/index.ts +2 -0
  1137. package/src/Message/CodeBlockMessage/CodeBlockMessage.scss +108 -0
  1138. package/src/Message/CodeBlockMessage/CodeBlockMessage.test.tsx +171 -0
  1139. package/src/Message/CodeBlockMessage/CodeBlockMessage.tsx +193 -0
  1140. package/src/Message/ErrorMessage/ErrorMessage.test.tsx +38 -0
  1141. package/src/Message/ErrorMessage/ErrorMessage.tsx +28 -0
  1142. package/src/Message/ImageMessage/ImageMessage.scss +9 -0
  1143. package/src/Message/ImageMessage/ImageMessage.tsx +13 -0
  1144. package/src/Message/LinkMessage/LinkMessage.scss +5 -0
  1145. package/src/Message/LinkMessage/LinkMessage.tsx +59 -0
  1146. package/src/Message/ListMessage/ListItemMessage.tsx +14 -0
  1147. package/src/Message/ListMessage/ListMessage.scss +50 -0
  1148. package/src/Message/ListMessage/OrderedListMessage.tsx +30 -0
  1149. package/src/Message/ListMessage/UnorderedListMessage.tsx +24 -0
  1150. package/src/Message/Message.scss +209 -0
  1151. package/src/Message/Message.test.tsx +1566 -0
  1152. package/src/Message/Message.tsx +487 -0
  1153. package/src/Message/MessageAndActions/MessageAndActions.test.tsx +23 -0
  1154. package/src/Message/MessageAndActions/MessageAndActions.tsx +22 -0
  1155. package/src/Message/MessageAndActions/index.ts +1 -0
  1156. package/src/Message/MessageAttachments/MessageAttachmentItem.test.tsx +23 -0
  1157. package/src/Message/MessageAttachments/MessageAttachmentItem.tsx +25 -0
  1158. package/src/Message/MessageAttachments/MessageAttachmentsContainer.test.tsx +23 -0
  1159. package/src/Message/MessageAttachments/MessageAttachmentsContainer.tsx +25 -0
  1160. package/src/Message/MessageAttachments/index.ts +2 -0
  1161. package/src/Message/MessageInput.tsx +63 -0
  1162. package/src/Message/MessageLoading.scss +60 -0
  1163. package/src/Message/MessageLoading.test.tsx +23 -0
  1164. package/src/Message/MessageLoading.tsx +28 -0
  1165. package/src/Message/Plugins/index.ts +1 -0
  1166. package/src/Message/Plugins/rehypeCodeBlockToggle.ts +24 -0
  1167. package/src/Message/Plugins/rehypeMoveImagesOutOfParagraphs.ts +53 -0
  1168. package/src/Message/QuickResponse/QuickResponse.scss +35 -0
  1169. package/src/Message/QuickResponse/QuickResponse.test.tsx +131 -0
  1170. package/src/Message/QuickResponse/QuickResponse.tsx +60 -0
  1171. package/src/Message/QuickResponse/index.ts +1 -0
  1172. package/src/Message/QuickStarts/FallbackImg.tsx +25 -0
  1173. package/src/Message/QuickStarts/QuickStartTile.scss +24 -0
  1174. package/src/Message/QuickStarts/QuickStartTile.tsx +151 -0
  1175. package/src/Message/QuickStarts/QuickStartTileDescription.test.tsx +56 -0
  1176. package/src/Message/QuickStarts/QuickStartTileDescription.tsx +82 -0
  1177. package/src/Message/QuickStarts/QuickStartTileHeader.tsx +21 -0
  1178. package/src/Message/QuickStarts/index.ts +2 -0
  1179. package/src/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.ts +75 -0
  1180. package/src/Message/QuickStarts/monitor-sampleapp-quickstart.ts +75 -0
  1181. package/src/Message/QuickStarts/types.ts +155 -0
  1182. package/src/Message/SuperscriptMessage/SuperscriptMessage.scss +8 -0
  1183. package/src/Message/SuperscriptMessage/SuperscriptMessage.tsx +13 -0
  1184. package/src/Message/TableMessage/TableMessage.scss +39 -0
  1185. package/src/Message/TableMessage/TableMessage.tsx +103 -0
  1186. package/src/Message/TableMessage/TbodyMessage.tsx +20 -0
  1187. package/src/Message/TableMessage/TdMessage.tsx +10 -0
  1188. package/src/Message/TableMessage/ThMessage.tsx +10 -0
  1189. package/src/Message/TableMessage/TheadMessage.tsx +12 -0
  1190. package/src/Message/TableMessage/TrMessage.tsx +27 -0
  1191. package/src/Message/TextMessage/TextMessage.scss +147 -0
  1192. package/src/Message/TextMessage/TextMessage.tsx +52 -0
  1193. package/src/Message/UserFeedback/CloseButton.tsx +21 -0
  1194. package/src/Message/UserFeedback/UserFeedback.scss +102 -0
  1195. package/src/Message/UserFeedback/UserFeedback.test.tsx +355 -0
  1196. package/src/Message/UserFeedback/UserFeedback.tsx +177 -0
  1197. package/src/Message/UserFeedback/UserFeedbackComplete.test.tsx +258 -0
  1198. package/src/Message/UserFeedback/UserFeedbackComplete.tsx +218 -0
  1199. package/src/Message/UserFeedback/index.ts +2 -0
  1200. package/src/Message/index.ts +12 -0
  1201. package/src/MessageBar/AttachButton.scss +45 -0
  1202. package/src/MessageBar/AttachButton.test.tsx +180 -0
  1203. package/src/MessageBar/AttachButton.tsx +132 -0
  1204. package/src/MessageBar/MessageBar.scss +176 -0
  1205. package/src/MessageBar/MessageBar.test.tsx +506 -0
  1206. package/src/MessageBar/MessageBar.tsx +550 -0
  1207. package/src/MessageBar/MicrophoneButton.scss +57 -0
  1208. package/src/MessageBar/MicrophoneButton.tsx +125 -0
  1209. package/src/MessageBar/SendButton.scss +62 -0
  1210. package/src/MessageBar/SendButton.test.tsx +46 -0
  1211. package/src/MessageBar/SendButton.tsx +60 -0
  1212. package/src/MessageBar/StopButton.scss +45 -0
  1213. package/src/MessageBar/StopButton.test.tsx +45 -0
  1214. package/src/MessageBar/StopButton.tsx +63 -0
  1215. package/src/MessageBar/index.ts +6 -0
  1216. package/src/MessageBox/JumpButton.scss +51 -0
  1217. package/src/MessageBox/JumpButton.test.tsx +25 -0
  1218. package/src/MessageBox/JumpButton.tsx +53 -0
  1219. package/src/MessageBox/MessageBox.scss +41 -0
  1220. package/src/MessageBox/MessageBox.test.tsx +316 -0
  1221. package/src/MessageBox/MessageBox.tsx +354 -0
  1222. package/src/MessageBox/index.ts +4 -0
  1223. package/src/MessageDivider/MessageDivider.scss +43 -0
  1224. package/src/MessageDivider/MessageDivider.test.tsx +24 -0
  1225. package/src/MessageDivider/MessageDivider.tsx +35 -0
  1226. package/src/MessageDivider/index.ts +3 -0
  1227. package/src/Onboarding/Onboarding.scss +101 -0
  1228. package/src/Onboarding/Onboarding.test.tsx +148 -0
  1229. package/src/Onboarding/Onboarding.tsx +126 -0
  1230. package/src/Onboarding/index.ts +3 -0
  1231. package/src/PreviewAttachment/PreviewAttachment.test.tsx +93 -0
  1232. package/src/PreviewAttachment/PreviewAttachment.tsx +89 -0
  1233. package/src/PreviewAttachment/index.ts +3 -0
  1234. package/src/ResponseActions/ResponseActionButton.test.tsx +51 -0
  1235. package/src/ResponseActions/ResponseActionButton.tsx +88 -0
  1236. package/src/ResponseActions/ResponseActions.scss +46 -0
  1237. package/src/ResponseActions/ResponseActions.test.tsx +683 -0
  1238. package/src/ResponseActions/ResponseActions.tsx +353 -0
  1239. package/src/ResponseActions/ResponseActionsGroups.test.tsx +23 -0
  1240. package/src/ResponseActions/ResponseActionsGroups.tsx +28 -0
  1241. package/src/ResponseActions/index.ts +4 -0
  1242. package/src/Settings/Settings.scss +45 -0
  1243. package/src/Settings/SettingsForm.test.tsx +44 -0
  1244. package/src/Settings/SettingsForm.tsx +30 -0
  1245. package/src/Settings/index.ts +3 -0
  1246. package/src/SourceDetailsMenuItem/SourceDetailsMenuItem.scss +33 -0
  1247. package/src/SourceDetailsMenuItem/SourceDetailsMenuItem.tsx +36 -0
  1248. package/src/SourceDetailsMenuItem/index.ts +2 -0
  1249. package/src/SourcesCard/SourcesCard.scss +116 -0
  1250. package/src/SourcesCard/SourcesCard.test.tsx +47 -0
  1251. package/src/SourcesCard/SourcesCard.tsx +93 -0
  1252. package/src/SourcesCard/index.ts +3 -0
  1253. package/src/SourcesCardBase/SourcesCardBase.test.tsx +285 -0
  1254. package/src/SourcesCardBase/SourcesCardBase.tsx +311 -0
  1255. package/src/SourcesCardBase/index.ts +3 -0
  1256. package/src/TermsOfUse/TermsOfUse.scss +86 -0
  1257. package/src/TermsOfUse/TermsOfUse.test.tsx +137 -0
  1258. package/src/TermsOfUse/TermsOfUse.tsx +123 -0
  1259. package/src/TermsOfUse/index.ts +3 -0
  1260. package/src/ToolCall/ToolCall.scss +37 -0
  1261. package/src/ToolCall/ToolCall.test.tsx +275 -0
  1262. package/src/ToolCall/ToolCall.tsx +192 -0
  1263. package/src/ToolCall/index.ts +3 -0
  1264. package/src/ToolResponse/ToolResponse.scss +46 -0
  1265. package/src/ToolResponse/ToolResponse.test.tsx +227 -0
  1266. package/src/ToolResponse/ToolResponse.tsx +172 -0
  1267. package/src/ToolResponse/index.ts +3 -0
  1268. package/src/__mocks__/monaco-editor.ts +19 -0
  1269. package/src/__mocks__/rehype-external-links.ts +3 -0
  1270. package/src/__mocks__/rehype-highlight.ts +3 -0
  1271. package/src/__mocks__/rehype-sanitize.ts +3 -0
  1272. package/src/__mocks__/rehype-unwrap-images.tsx +3 -0
  1273. package/src/index.ts +112 -0
  1274. package/src/main.scss +54 -0
  1275. package/src/tracking/console_tracking_provider.ts +34 -0
  1276. package/src/tracking/index.ts +3 -0
  1277. package/src/tracking/posthog_tracking_provider.ts +49 -0
  1278. package/src/tracking/segment_tracking_provider.ts +69 -0
  1279. package/src/tracking/trackingProviderProxy.ts +28 -0
  1280. package/src/tracking/tracking_api.ts +11 -0
  1281. package/src/tracking/tracking_registry.ts +66 -0
  1282. package/src/tracking/tracking_spi.ts +25 -0
  1283. package/src/tracking/umami_tracking_provider.ts +110 -0
  1284. package/tsconfig.cjs.json +7 -0
  1285. package/tsconfig.json +73 -0
@@ -0,0 +1,1566 @@
1
+ import { Fragment } from 'react';
2
+ import { render, screen } from '@testing-library/react';
3
+ import '@testing-library/jest-dom';
4
+ import Message from './Message';
5
+ import userEvent from '@testing-library/user-event';
6
+ import { monitorSampleAppQuickStart } from './QuickStarts/monitor-sampleapp-quickstart';
7
+ import { monitorSampleAppQuickStartWithImage } from './QuickStarts/monitor-sampleapp-quickstart-with-image';
8
+ import rehypeExternalLinks from '../__mocks__/rehype-external-links';
9
+ import { AlertActionLink, Button, CodeBlockAction } from '@patternfly/react-core';
10
+ import { DeepThinkingProps } from '../DeepThinking';
11
+
12
+ // Mock the icon components
13
+ jest.mock('@patternfly/react-icons', () => ({
14
+ OutlinedThumbsUpIcon: () => <div>OutlinedThumbsUpIcon</div>,
15
+ ThumbsUpIcon: () => <div>ThumbsUpIcon</div>,
16
+ OutlinedThumbsDownIcon: () => <div>OutlinedThumbsDownIcon</div>,
17
+ ThumbsDownIcon: () => <div>ThumbsDownIcon</div>,
18
+ OutlinedCopyIcon: () => <div>OutlinedCopyIcon</div>,
19
+ DownloadIcon: () => <div>DownloadIcon</div>,
20
+ ExternalLinkAltIcon: () => <div>ExternalLinkAltIcon</div>,
21
+ VolumeUpIcon: () => <div>VolumeUpIcon</div>,
22
+ PencilAltIcon: () => <div>PencilAltIcon</div>,
23
+ CheckIcon: () => <div>CheckIcon</div>,
24
+ CloseIcon: () => <div>CloseIcon</div>,
25
+ ExternalLinkSquareAltIcon: () => <div>ExternalLinkSquareAltIcon</div>,
26
+ TimesIcon: () => <div>TimesIcon</div>
27
+ }));
28
+
29
+ const ALL_ACTIONS = [
30
+ { label: /Good response/i },
31
+ { label: /Bad response/i },
32
+ { label: /Copy/i },
33
+ { label: /Edit/i },
34
+ { label: /Share/i },
35
+ { label: /Listen/i }
36
+ ];
37
+
38
+ const UNORDERED_LIST = `
39
+ Here is an unordered list:
40
+
41
+ * Item 1
42
+ * Item 2
43
+ * Item 3
44
+ `;
45
+
46
+ const ORDERED_LIST = `
47
+ Here is an ordered list:
48
+
49
+ 1. Item 1
50
+ 2. Item 2
51
+ 3. Item 3
52
+ `;
53
+
54
+ const CODE_MESSAGE = `
55
+ Here is some YAML code:
56
+
57
+ ~~~yaml
58
+ apiVersion: helm.openshift.io/v1beta1/
59
+ kind: HelmChartRepository
60
+ metadata:
61
+ name: azure-sample-repo0oooo00ooo
62
+ spec:
63
+ connectionConfig:
64
+ url: https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs
65
+ ~~~`;
66
+
67
+ const CODE = `
68
+ apiVersion: helm.openshift.io/v1beta1/
69
+ kind: HelmChartRepository
70
+ metadata:
71
+ name: azure-sample-repo0oooo00ooo
72
+ spec:
73
+ connectionConfig:
74
+ url: https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs
75
+ `;
76
+
77
+ const INLINE_CODE = `Here is an inline code - \`() => void\``;
78
+
79
+ const ORDERED_LIST_WITH_CODE = `
80
+ 1. Item 1
81
+ 2. Item 2
82
+
83
+ \`\`\`yaml
84
+ - name: Hello World Playbook
85
+ hosts: localhost
86
+ tasks:
87
+ - name: Print Hello World
88
+ ansible.builtin.debug:
89
+ msg: "Hello, World!"
90
+ \`\`\`
91
+
92
+ 3. Item 3
93
+ `;
94
+
95
+ const HEADING = `
96
+ # h1 Heading
97
+
98
+ ## h2 Heading
99
+
100
+ ### h3 Heading
101
+
102
+ #### h4 Heading
103
+
104
+ ##### h5 Heading
105
+
106
+ ###### h6 Heading
107
+ `;
108
+
109
+ const BLOCK_QUOTES = `> Blockquotes can also be nested...
110
+ >> ...by using additional greater-than signs (>) right next to each other...
111
+ > > > ...or with spaces between each sign.`;
112
+ const TABLE = `
113
+
114
+ | Column 1 | Column 2 |
115
+ |-|-|
116
+ | Cell 1 | Cell 2 |
117
+ | Cell 3 | Cell 4 |
118
+
119
+ `;
120
+
121
+ const ONE_COLUMN_TABLE = `
122
+
123
+ | Column 1 |
124
+ |-|
125
+ | Cell 1 |
126
+ | Cell 2 |
127
+
128
+ `;
129
+
130
+ const ONE_CELL_TABLE = `
131
+
132
+ | Column 1 |
133
+ |-|
134
+ | Cell 1 |
135
+
136
+ `;
137
+
138
+ const HEADERLESS_TABLE = `
139
+
140
+ | |
141
+ |-|
142
+ | Cell 1 |
143
+
144
+ `;
145
+
146
+ const CHILDLESS_TABLE = `
147
+
148
+ | Column 1 |
149
+ |-|
150
+ | |
151
+
152
+ `;
153
+
154
+ const EMPTY_TABLE = `
155
+
156
+ | |
157
+ |-|
158
+ | |
159
+
160
+ `;
161
+
162
+ const FOOTNOTE = `This is some text with a footnote[^1] and here's a longer one.[^bignote]
163
+
164
+ You can also reference the same footnote multiple times[^1].
165
+
166
+ [^1]: This is the full footnote text. You can click the arrow to go back up.
167
+
168
+ [^bignote]: Here's one with multiple paragraphs and **formatting**.
169
+
170
+ Indent paragraphs to include them in the footnote.
171
+
172
+ Add as many paragraphs as you like. You can include *italic text*, **bold text**, and even \`code\`.
173
+
174
+ > You can even include blockquotes in footnotes!`;
175
+
176
+ const IMAGE = `![Multi-colored wavy lines on a black background](https://cdn.dribbble.com/userupload/10651749/file/original-8a07b8e39d9e8bf002358c66fce1223e.gif)`;
177
+
178
+ const INLINE_IMAGE = `inline text ![Multi-colored wavy lines on a black background](https://cdn.dribbble.com/userupload/10651749/file/original-8a07b8e39d9e8bf002358c66fce1223e.gif)`;
179
+
180
+ const DEEP_THINKING: DeepThinkingProps = {
181
+ toggleContent: 'Show thinking',
182
+ subheading: 'Thought for 3 seconds',
183
+ body: "Here's why I said this."
184
+ };
185
+
186
+ const ERROR = {
187
+ title: 'Could not load chat',
188
+ children: 'Wait a few minutes and check your network settings. If the issue persists: ',
189
+ actionLinks: (
190
+ <Fragment>
191
+ <AlertActionLink component="a" href="#">
192
+ Start a new chat
193
+ </AlertActionLink>
194
+ <AlertActionLink component="a" href="#">
195
+ Contact support
196
+ </AlertActionLink>
197
+ </Fragment>
198
+ )
199
+ };
200
+ const checkListItemsRendered = () => {
201
+ const items = ['Item 1', 'Item 2', 'Item 3'];
202
+ expect(screen.getAllByRole('listitem')).toHaveLength(3);
203
+ items.forEach((item) => {
204
+ // list item text gets wrapped in a span by the third-party library so we can't just check the listitem
205
+ expect(screen.getByText(item)).toBeTruthy();
206
+ });
207
+ };
208
+
209
+ describe('Message', () => {
210
+ beforeEach(() => {
211
+ jest.clearAllMocks();
212
+ });
213
+ it('should render user messages correctly', () => {
214
+ render(<Message avatar="./img" role="user" name="User" content="Hi" />);
215
+ expect(screen.getByText('User')).toBeTruthy();
216
+ expect(screen.getByText('Hi')).toBeTruthy();
217
+ const date = new Date();
218
+ const formattedDate = date.toLocaleDateString();
219
+ expect(
220
+ screen.getByText((content, element) => {
221
+ const hasText = content.includes(formattedDate);
222
+ const isVisible = element?.tagName.toLowerCase() !== 'script' && element?.tagName.toLowerCase() !== 'style';
223
+ return hasText && isVisible;
224
+ })
225
+ ).toBeInTheDocument();
226
+ expect(screen.queryByText('Loading message')).toBeFalsy();
227
+ expect(screen.getByRole('img')).toHaveAttribute('src', './img');
228
+ });
229
+ it('should render bot messages correctly', () => {
230
+ render(<Message avatar="./img" role="bot" name="Bot" content="Hi" />);
231
+ expect(screen.getByText('Bot')).toBeTruthy();
232
+ expect(screen.getByText('AI')).toBeTruthy();
233
+ expect(screen.getByText('Hi')).toBeTruthy();
234
+ const date = new Date();
235
+ const formattedDate = date.toLocaleDateString();
236
+ expect(
237
+ screen.getByText((content, element) => {
238
+ const hasText = content.includes(formattedDate);
239
+ const isVisible = element?.tagName.toLowerCase() !== 'script' && element?.tagName.toLowerCase() !== 'style';
240
+ return hasText && isVisible;
241
+ })
242
+ ).toBeInTheDocument();
243
+ });
244
+ it('should render avatar correctly', () => {
245
+ render(<Message avatar="./testImg" role="user" name="A" content="Hi" />);
246
+ expect(screen.getByRole('img')).toHaveAttribute('src', './testImg');
247
+ });
248
+ it('should not render avatar if no avatar prop is passed', () => {
249
+ render(<Message role="user" name="A" content="Hi" />);
250
+ expect(screen.queryByRole('img')).not.toBeInTheDocument();
251
+ });
252
+ it('should render bot avatar if no avatar prop is passed', () => {
253
+ render(<Message role="bot" name="Bot" content="Hi" />);
254
+ expect(screen.queryAllByRole('img', { hidden: true })[0]).toBeVisible();
255
+ });
256
+ it('should not render avatar if isAvatarHidden is passed', () => {
257
+ render(<Message role="user" name="A" content="Hi" isAvatarHidden />);
258
+ expect(screen.queryByRole('img')).not.toBeInTheDocument();
259
+ });
260
+ it('should not render bot avatar if isAvatarHidden is passed', () => {
261
+ render(<Message role="bot" name="Bot" content="Hi" isAvatarHidden />);
262
+ expect(screen.queryByRole('img')).not.toBeInTheDocument();
263
+ });
264
+ it('should render botWord correctly', () => {
265
+ render(<Message avatar="./img" role="bot" name="Bot" content="Hi" botWord="人工知能" />);
266
+ expect(screen.getByText('Bot')).toBeTruthy();
267
+ expect(screen.getByText('人工知能')).toBeTruthy();
268
+ expect(screen.queryByText('AI')).toBeFalsy();
269
+ expect(screen.getByText('Hi')).toBeTruthy();
270
+ });
271
+ it('should render timestamps', () => {
272
+ render(<Message avatar="./img" role="bot" name="Bot" content="Hi" timestamp="2 hours ago" />);
273
+ expect(screen.getByText('Bot')).toBeTruthy();
274
+ expect(screen.getByText('AI')).toBeTruthy();
275
+ expect(screen.getByText('Hi')).toBeTruthy();
276
+ expect(screen.getByText('2 hours ago')).toBeTruthy();
277
+ const date = new Date();
278
+ const formattedDate = date.toLocaleDateString();
279
+ expect(
280
+ screen.queryByText((content, element) => {
281
+ const hasText = content.includes(formattedDate);
282
+ const isVisible = element?.tagName.toLowerCase() !== 'script' && element?.tagName.toLowerCase() !== 'style';
283
+ return hasText && isVisible;
284
+ })
285
+ ).not.toBeInTheDocument();
286
+ });
287
+
288
+ it('Does not render metadata when isMetadataVisible is false', () => {
289
+ render(
290
+ <Message isMetadataVisible={false} avatar="./img" role="bot" name="Bot" content="Hi" timestamp="2 hours ago" />
291
+ );
292
+
293
+ expect(screen.queryByText('Bot')).not.toBeInTheDocument();
294
+ expect(screen.queryByText('AI')).not.toBeInTheDocument();
295
+ expect(screen.queryByText('2 hours ago')).not.toBeInTheDocument();
296
+ });
297
+
298
+ it('should render attachments', () => {
299
+ render(<Message avatar="./img" role="user" content="Hi" attachments={[{ name: 'testAttachment' }]} />);
300
+ expect(screen.getByText('Hi')).toBeTruthy();
301
+ expect(screen.getByText('testAttachment')).toBeTruthy();
302
+ });
303
+ it('should be able to click attachments', async () => {
304
+ const spy = jest.fn();
305
+ render(
306
+ <Message avatar="./img" role="user" content="Hi" attachments={[{ name: 'testAttachment', onClick: spy }]} />
307
+ );
308
+ expect(screen.getByText('Hi')).toBeTruthy();
309
+ expect(screen.getByText('testAttachment')).toBeTruthy();
310
+ await userEvent.click(screen.getByRole('button', { name: /testAttachment/i }));
311
+ expect(spy).toHaveBeenCalledTimes(1);
312
+ });
313
+ it('should be able to close attachments', async () => {
314
+ const spy = jest.fn();
315
+ render(
316
+ <Message avatar="./img" role="user" content="Hi" attachments={[{ name: 'testAttachment', onClose: spy }]} />
317
+ );
318
+ expect(screen.getByText('Hi')).toBeTruthy();
319
+ expect(screen.getByText('testAttachment')).toBeTruthy();
320
+ expect(screen.getByRole('button', { name: /close testAttachment/i })).toBeTruthy();
321
+ await userEvent.click(screen.getByRole('button', { name: /close testAttachment/i }));
322
+ expect(spy).toHaveBeenCalledTimes(1);
323
+ });
324
+ it('should render loading state', () => {
325
+ render(<Message avatar="./img" role="bot" name="Bot" content="Hi" isLoading />);
326
+ expect(screen.getByText('Bot')).toBeTruthy();
327
+ expect(screen.getByText('AI')).toBeTruthy();
328
+ expect(screen.queryByText('Hi')).toBeFalsy();
329
+ const date = new Date();
330
+ const formattedDate = date.toLocaleDateString();
331
+ expect(
332
+ screen.getByText((content, element) => {
333
+ const hasText = content.includes(formattedDate);
334
+ const isVisible = element?.tagName.toLowerCase() !== 'script' && element?.tagName.toLowerCase() !== 'style';
335
+ return hasText && isVisible;
336
+ })
337
+ ).toBeInTheDocument();
338
+ expect(screen.getByText('Loading message')).toBeTruthy();
339
+ });
340
+ it('should be able to show sources', async () => {
341
+ render(
342
+ <Message
343
+ avatar="./img"
344
+ role="bot"
345
+ name="Bot"
346
+ content="Hi"
347
+ sources={{
348
+ sources: [
349
+ {
350
+ title: 'Getting started with Red Hat OpenShift',
351
+ link: '#',
352
+ body: 'Red Hat OpenShift on IBM Cloud is a managed offering to create your own cluster of compute hosts where you can deploy and manage containerized apps on IBM Cloud ...'
353
+ }
354
+ ]
355
+ }}
356
+ />
357
+ );
358
+ expect(screen.getByText('Getting started with Red Hat OpenShift')).toBeTruthy();
359
+ });
360
+ it('should not show sources if loading', () => {
361
+ render(
362
+ <Message
363
+ avatar="./img"
364
+ role="bot"
365
+ name="Bot"
366
+ content="Hi"
367
+ isLoading
368
+ sources={{
369
+ sources: [
370
+ {
371
+ title: 'Getting started with Red Hat OpenShift',
372
+ link: '#',
373
+ body: 'Red Hat OpenShift on IBM Cloud is a managed offering to create your own cluster of compute hosts where you can deploy and manage containerized apps on IBM Cloud ...'
374
+ }
375
+ ]
376
+ }}
377
+ />
378
+ );
379
+ expect(screen.getByText('Loading message')).toBeTruthy();
380
+ expect(screen.queryByText('Getting started with Red Hat OpenShift')).toBeFalsy();
381
+ });
382
+ it('should be able to show quick response', async () => {
383
+ const spy = jest.fn();
384
+ render(
385
+ <Message
386
+ avatar="./img"
387
+ role="bot"
388
+ name="Bot"
389
+ content="Hi"
390
+ quickResponses={[
391
+ {
392
+ id: '1',
393
+ content: 'Yes',
394
+ onClick: spy,
395
+ className: 'test'
396
+ }
397
+ ]}
398
+ />
399
+ );
400
+ const quickResponse = screen.getByRole('button', { name: /Yes/i });
401
+ expect(quickResponse).toBeTruthy();
402
+ await userEvent.click(quickResponse);
403
+ expect(spy).toHaveBeenCalledTimes(1);
404
+ });
405
+ it('should be able to handle isCompact', async () => {
406
+ render(
407
+ <Message
408
+ avatar="./img"
409
+ role="bot"
410
+ name="Bot"
411
+ content="Hi"
412
+ quickResponses={[
413
+ {
414
+ id: '1',
415
+ content: 'Yes',
416
+ onClick: jest.fn(),
417
+ className: 'test'
418
+ }
419
+ ]}
420
+ isCompact
421
+ />
422
+ );
423
+ const parent = screen.getByRole('button', { name: /Yes/i }).parentNode;
424
+ expect(parent).toHaveClass('pf-m-compact');
425
+ });
426
+ it('should be able to show more than 1 quick response', async () => {
427
+ const spy = jest.fn();
428
+ render(
429
+ <Message
430
+ avatar="./img"
431
+ role="bot"
432
+ name="Bot"
433
+ content="Hi"
434
+ quickResponses={[
435
+ {
436
+ id: '1',
437
+ content: 'Yes',
438
+ onClick: spy
439
+ },
440
+ {
441
+ id: '2',
442
+ content: 'No',
443
+ onClick: spy
444
+ }
445
+ ]}
446
+ />
447
+ );
448
+ expect(screen.getByRole('button', { name: /Yes/i })).toBeTruthy();
449
+ expect(screen.getByRole('button', { name: /No/i })).toBeTruthy();
450
+ });
451
+ it('should be able to spread quickResponseContainerProps', async () => {
452
+ const spy = jest.fn();
453
+ render(
454
+ <Message
455
+ avatar="./img"
456
+ role="bot"
457
+ name="Bot"
458
+ content="Hi"
459
+ quickResponses={[
460
+ {
461
+ id: '1',
462
+ content: 'Yes',
463
+ onClick: spy
464
+ },
465
+ {
466
+ id: '2',
467
+ content: 'No',
468
+ onClick: spy
469
+ }
470
+ ]}
471
+ // this is a LabelGroup prop that changes the default number shown
472
+ // to be different than what we use in ChatBot
473
+ quickResponseContainerProps={{ numLabels: 1 }}
474
+ />
475
+ );
476
+ expect(screen.getByRole('button', { name: /Yes/i })).toBeTruthy();
477
+ expect(screen.queryByRole('button', { name: /No/i })).toBeFalsy();
478
+ expect(screen.getByRole('button', { name: /1 more/i }));
479
+ });
480
+ it('Renders response actions when a single actions object is passed', async () => {
481
+ render(
482
+ <Message
483
+ avatar="./img"
484
+ role="bot"
485
+ name="Bot"
486
+ content="Hi"
487
+ actions={{
488
+ // eslint-disable-next-line no-console
489
+ positive: { onClick: () => console.log('Good response') },
490
+ // eslint-disable-next-line no-console
491
+ negative: { onClick: () => console.log('Bad response') },
492
+ // eslint-disable-next-line no-console
493
+ copy: { onClick: () => console.log('Copy') },
494
+ // eslint-disable-next-line no-console
495
+ edit: { onClick: () => console.log('Edit') },
496
+ // eslint-disable-next-line no-console
497
+ share: { onClick: () => console.log('Share') },
498
+ // eslint-disable-next-line no-console
499
+ download: { onClick: () => console.log('Download') },
500
+ // eslint-disable-next-line no-console
501
+ listen: { onClick: () => console.log('Listen') }
502
+ }}
503
+ />
504
+ );
505
+ ALL_ACTIONS.forEach(({ label }) => {
506
+ expect(screen.getByRole('button', { name: label })).toBeVisible();
507
+ });
508
+ });
509
+ it('Renders response actions when an array of actions objects is passed', async () => {
510
+ render(
511
+ <Message
512
+ avatar="./img"
513
+ role="bot"
514
+ name="Bot"
515
+ content="Hi"
516
+ actions={[
517
+ {
518
+ // eslint-disable-next-line no-console
519
+ positive: { onClick: () => console.log('Good response') },
520
+ // eslint-disable-next-line no-console
521
+ negative: { onClick: () => console.log('Bad response') }
522
+ },
523
+ {
524
+ // eslint-disable-next-line no-console
525
+ copy: { onClick: () => console.log('Copy') },
526
+ // eslint-disable-next-line no-console
527
+ edit: { onClick: () => console.log('Edit') },
528
+ // eslint-disable-next-line no-console
529
+ share: { onClick: () => console.log('Share') },
530
+ // eslint-disable-next-line no-console
531
+ download: { onClick: () => console.log('Download') }
532
+ },
533
+ {
534
+ // eslint-disable-next-line no-console
535
+ listen: { onClick: () => console.log('Listen') }
536
+ }
537
+ ]}
538
+ />
539
+ );
540
+ ALL_ACTIONS.forEach(({ label }) => {
541
+ expect(screen.getByRole('button', { name: label })).toBeVisible();
542
+ });
543
+ });
544
+ it('Renders response actions when an array of objects containing actions objects is passed', async () => {
545
+ render(
546
+ <Message
547
+ avatar="./img"
548
+ role="bot"
549
+ name="Bot"
550
+ content="Hi"
551
+ actions={[
552
+ {
553
+ actions: {
554
+ // eslint-disable-next-line no-console
555
+ positive: { onClick: () => console.log('Good response') },
556
+ // eslint-disable-next-line no-console
557
+ negative: { onClick: () => console.log('Bad response') }
558
+ }
559
+ },
560
+ {
561
+ actions: {
562
+ // eslint-disable-next-line no-console
563
+ copy: { onClick: () => console.log('Copy') },
564
+ // eslint-disable-next-line no-console
565
+ edit: { onClick: () => console.log('Edit') },
566
+ // eslint-disable-next-line no-console
567
+ share: { onClick: () => console.log('Share') },
568
+ // eslint-disable-next-line no-console
569
+ download: { onClick: () => console.log('Download') }
570
+ }
571
+ },
572
+ {
573
+ actions: {
574
+ // eslint-disable-next-line no-console
575
+ listen: { onClick: () => console.log('Listen') }
576
+ }
577
+ }
578
+ ]}
579
+ />
580
+ );
581
+ ALL_ACTIONS.forEach(({ label }) => {
582
+ expect(screen.getByRole('button', { name: label })).toBeVisible();
583
+ });
584
+ });
585
+
586
+ it('should handle persistActionSelection correctly when a single actions object is passed', async () => {
587
+ render(
588
+ <Message
589
+ avatar="./img"
590
+ role="bot"
591
+ name="Bot"
592
+ content="Test message"
593
+ persistActionSelection
594
+ actions={{
595
+ positive: { onClick: jest.fn() },
596
+ negative: { onClick: jest.fn() }
597
+ }}
598
+ />
599
+ );
600
+ const goodBtn = screen.getByRole('button', { name: /Good response/i });
601
+ const badBtn = screen.getByRole('button', { name: /Bad response/i });
602
+
603
+ await userEvent.click(goodBtn);
604
+ expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
605
+ 'pf-chatbot__button--response-action-clicked'
606
+ );
607
+
608
+ await userEvent.click(screen.getByText('Test message'));
609
+ expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
610
+ 'pf-chatbot__button--response-action-clicked'
611
+ );
612
+
613
+ await userEvent.click(badBtn);
614
+ expect(screen.getByRole('button', { name: /Bad response recorded/i })).toHaveClass(
615
+ 'pf-chatbot__button--response-action-clicked'
616
+ );
617
+ expect(goodBtn).not.toHaveClass('pf-chatbot__button--response-action-clicked');
618
+ });
619
+
620
+ it('should handle persistActionSelection correctly when an array of actions objects is passed', async () => {
621
+ render(
622
+ <Message
623
+ avatar="./img"
624
+ role="bot"
625
+ name="Bot"
626
+ content="Test message"
627
+ persistActionSelection
628
+ actions={[
629
+ {
630
+ positive: { onClick: jest.fn() },
631
+ negative: { onClick: jest.fn() }
632
+ },
633
+ {
634
+ copy: { onClick: jest.fn() }
635
+ }
636
+ ]}
637
+ />
638
+ );
639
+ const goodBtn = screen.getByRole('button', { name: /Good response/i });
640
+ const copyBtn = screen.getByRole('button', { name: /Copy/i });
641
+
642
+ await userEvent.click(goodBtn);
643
+ expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
644
+ 'pf-chatbot__button--response-action-clicked'
645
+ );
646
+
647
+ await userEvent.click(screen.getByText('Test message'));
648
+ expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
649
+ 'pf-chatbot__button--response-action-clicked'
650
+ );
651
+
652
+ await userEvent.click(copyBtn);
653
+ expect(screen.getByRole('button', { name: /Copied/i })).toHaveClass('pf-chatbot__button--response-action-clicked');
654
+
655
+ await userEvent.click(screen.getByText('Test message'));
656
+ expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
657
+ 'pf-chatbot__button--response-action-clicked'
658
+ );
659
+ expect(screen.getByRole('button', { name: /Copied/i })).toHaveClass('pf-chatbot__button--response-action-clicked');
660
+ });
661
+
662
+ it('should handle persistActionSelection correctly when an array of objects containing actions objects is passed', async () => {
663
+ render(
664
+ <Message
665
+ avatar="./img"
666
+ role="bot"
667
+ name="Bot"
668
+ content="Test message"
669
+ actions={[
670
+ {
671
+ actions: {
672
+ positive: { onClick: jest.fn() },
673
+ negative: { onClick: jest.fn() }
674
+ },
675
+ persistActionSelection: true
676
+ },
677
+ {
678
+ actions: {
679
+ copy: { onClick: jest.fn() }
680
+ },
681
+ persistActionSelection: false
682
+ }
683
+ ]}
684
+ />
685
+ );
686
+ const goodBtn = screen.getByRole('button', { name: /Good response/i });
687
+ const copyBtn = screen.getByRole('button', { name: /Copy/i });
688
+
689
+ await userEvent.click(goodBtn);
690
+ expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
691
+ 'pf-chatbot__button--response-action-clicked'
692
+ );
693
+
694
+ await userEvent.click(copyBtn);
695
+ expect(screen.getByRole('button', { name: /Copied/i })).toHaveClass('pf-chatbot__button--response-action-clicked');
696
+
697
+ await userEvent.click(screen.getByText('Test message'));
698
+ expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
699
+ 'pf-chatbot__button--response-action-clicked'
700
+ );
701
+ expect(copyBtn).not.toHaveClass('pf-chatbot__button--response-action-clicked');
702
+ });
703
+
704
+ it('should not show actions if loading', async () => {
705
+ render(
706
+ <Message
707
+ avatar="./img"
708
+ role="bot"
709
+ name="Bot"
710
+ content="Hi"
711
+ isLoading
712
+ actions={{
713
+ // eslint-disable-next-line no-console
714
+ positive: { onClick: () => console.log('Good response') },
715
+ // eslint-disable-next-line no-console
716
+ negative: { onClick: () => console.log('Bad response') },
717
+ // eslint-disable-next-line no-console
718
+ copy: { onClick: () => console.log('Copy') },
719
+ // eslint-disable-next-line no-console
720
+ edit: { onClick: () => console.log('Edit') },
721
+ // eslint-disable-next-line no-console
722
+ share: { onClick: () => console.log('Share') },
723
+ // eslint-disable-next-line no-console
724
+ download: { onClick: () => console.log('Download') },
725
+ // eslint-disable-next-line no-console
726
+ listen: { onClick: () => console.log('Listen') }
727
+ }}
728
+ />
729
+ );
730
+ expect(screen.getByText('Loading message')).toBeTruthy();
731
+ ALL_ACTIONS.forEach(({ label }) => {
732
+ expect(screen.queryByRole('button', { name: label })).toBeFalsy();
733
+ });
734
+ });
735
+ it('should not show actions if isEditable is true', async () => {
736
+ render(
737
+ <Message
738
+ avatar="./img"
739
+ role="bot"
740
+ name="Bot"
741
+ content="Hi"
742
+ isEditable
743
+ actions={{
744
+ // eslint-disable-next-line no-console
745
+ positive: { onClick: () => console.log('Good response') },
746
+ // eslint-disable-next-line no-console
747
+ negative: { onClick: () => console.log('Bad response') },
748
+ // eslint-disable-next-line no-console
749
+ copy: { onClick: () => console.log('Copy') },
750
+ // eslint-disable-next-line no-console
751
+ edit: { onClick: () => console.log('Edit') },
752
+ // eslint-disable-next-line no-console
753
+ share: { onClick: () => console.log('Share') },
754
+ // eslint-disable-next-line no-console
755
+ download: { onClick: () => console.log('Download') },
756
+ // eslint-disable-next-line no-console
757
+ listen: { onClick: () => console.log('Listen') }
758
+ }}
759
+ />
760
+ );
761
+ ALL_ACTIONS.forEach(({ label }) => {
762
+ expect(screen.queryByRole('button', { name: label })).toBeFalsy();
763
+ });
764
+ });
765
+
766
+ it('should render unordered lists correctly', () => {
767
+ render(<Message avatar="./img" role="user" name="User" content={UNORDERED_LIST} />);
768
+ expect(screen.getByText('Here is an unordered list:')).toBeTruthy();
769
+ checkListItemsRendered();
770
+ });
771
+ it('should render ordered lists correctly', () => {
772
+ render(<Message avatar="./img" role="user" name="User" content={ORDERED_LIST} />);
773
+ expect(screen.getByText('Here is an ordered list:')).toBeTruthy();
774
+ checkListItemsRendered();
775
+ });
776
+ it('should render ordered lists correctly if there is interstitial content', () => {
777
+ render(<Message avatar="./img" role="user" name="User" content={ORDERED_LIST_WITH_CODE} />);
778
+ checkListItemsRendered();
779
+ const list = screen.getAllByRole('list')[1];
780
+ expect(list).toHaveAttribute('start', '3');
781
+ });
782
+ it('should render inline code', () => {
783
+ render(<Message avatar="./img" role="user" name="User" content={INLINE_CODE} />);
784
+ expect(screen.getByText(/() => void/i)).toBeTruthy();
785
+ expect(screen.queryByRole('button', { name: 'Copy code button' })).toBeFalsy();
786
+ });
787
+ it('should render code correctly', () => {
788
+ render(<Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} />);
789
+ expect(screen.getByText('Here is some YAML code:')).toBeTruthy();
790
+ expect(screen.getByRole('button', { name: 'Copy code' })).toBeTruthy();
791
+ expect(screen.getByText(/yaml/)).toBeTruthy();
792
+ expect(screen.getByText(/apiVersion:/i)).toBeTruthy();
793
+ expect(screen.getByText(/helm.openshift.io\/v1beta1/i)).toBeTruthy();
794
+ expect(screen.getByText(/metadata:/i)).toBeTruthy();
795
+ expect(screen.getByText(/name:/i)).toBeTruthy();
796
+ expect(screen.getByText(/azure-sample-repo0oooo00ooo/i)).toBeTruthy();
797
+ expect(screen.getByText(/spec/i)).toBeTruthy();
798
+ expect(screen.getByText(/connectionConfig:/i)).toBeTruthy();
799
+ expect(screen.getByText(/url:/i)).toBeTruthy();
800
+ expect(
801
+ screen.getByText(/https:\/\/raw.githubusercontent.com\/Azure-Samples\/helm-charts\/master\/docs/i)
802
+ ).toBeTruthy();
803
+ });
804
+ it('should render expandable code correctly', () => {
805
+ render(
806
+ <Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} codeBlockProps={{ isExpandable: true }} />
807
+ );
808
+ expect(screen.getByText('Here is some YAML code:')).toBeTruthy();
809
+ expect(screen.getByRole('button', { name: 'Copy code' })).toBeTruthy();
810
+ expect(screen.getByText(/yaml/)).toBeTruthy();
811
+ expect(screen.getByText(/apiVersion/i)).toBeTruthy();
812
+ expect(screen.getByRole('button', { name: /Show more/i })).toBeTruthy();
813
+ });
814
+ it('should handle click on expandable code correctly', async () => {
815
+ render(
816
+ <Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} codeBlockProps={{ isExpandable: true }} />
817
+ );
818
+ const button = screen.getByRole('button', { name: /Show more/i });
819
+ await userEvent.click(button);
820
+ expect(screen.getByRole('button', { name: /Show less/i })).toBeTruthy();
821
+ expect(screen.getByText(/yaml/)).toBeTruthy();
822
+ expect(screen.getByText(/apiVersion:/i)).toBeTruthy();
823
+ expect(screen.getByText(/helm.openshift.io\/v1beta1/i)).toBeTruthy();
824
+ expect(screen.getByText(/metadata:/i)).toBeTruthy();
825
+ expect(screen.getByText(/name:/i)).toBeTruthy();
826
+ expect(screen.getByText(/azure-sample-repo0oooo00ooo/i)).toBeTruthy();
827
+ expect(screen.getByText(/spec/i)).toBeTruthy();
828
+ expect(screen.getByText(/connectionConfig:/i)).toBeTruthy();
829
+ expect(screen.getByText(/url:/i)).toBeTruthy();
830
+ expect(
831
+ screen.getByText(/https:\/\/raw.githubusercontent.com\/Azure-Samples\/helm-charts\/master\/docs/i)
832
+ ).toBeTruthy();
833
+ });
834
+ it('can click copy code button', async () => {
835
+ // need explicit setup since RTL stubs clipboard if you do this
836
+ const user = userEvent.setup();
837
+ render(<Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} />);
838
+ expect(screen.getByRole('button', { name: 'Copy code' })).toBeTruthy();
839
+ await user.click(screen.getByRole('button', { name: 'Copy code' }));
840
+ const clipboardText = await navigator.clipboard.readText();
841
+ expect(clipboardText.trim()).toEqual(CODE.trim());
842
+ });
843
+ it('should handle codeBlockProps correctly by spreading it onto the CodeMessage', () => {
844
+ render(
845
+ <Message
846
+ avatar="./img"
847
+ role="user"
848
+ name="User"
849
+ content={CODE_MESSAGE}
850
+ codeBlockProps={{ 'aria-label': 'test' }}
851
+ />
852
+ );
853
+ expect(screen.getByRole('button', { name: 'test' })).toBeTruthy();
854
+ });
855
+ it('should be able to add custom actions to CodeMessage', () => {
856
+ render(
857
+ <Message
858
+ avatar="./img"
859
+ role="user"
860
+ name="User"
861
+ content={CODE_MESSAGE}
862
+ codeBlockProps={{
863
+ customActions: (
864
+ <CodeBlockAction>
865
+ <Button>New custom action</Button>
866
+ </CodeBlockAction>
867
+ )
868
+ }}
869
+ />
870
+ );
871
+ expect(screen.getByRole('button', { name: /New custom action/i })).toBeTruthy();
872
+ });
873
+ it('should handle hasRoundAvatar correctly when it is true', () => {
874
+ render(<Message avatar="./img" role="user" name="User" content="Hi" hasRoundAvatar />);
875
+ expect(screen.getByRole('img')).toBeTruthy();
876
+ expect(screen.getByRole('img')).toHaveClass('pf-chatbot__message-avatar');
877
+ expect(screen.getByRole('img')).toHaveClass('pf-chatbot__message-avatar--round');
878
+ });
879
+ it('should handle hasRoundAvatar correctly when it is false', () => {
880
+ render(<Message avatar="./img" role="user" name="User" content="Hi" hasRoundAvatar={false} />);
881
+ expect(screen.getByRole('img')).toBeTruthy();
882
+ expect(screen.getByRole('img')).toHaveClass('pf-chatbot__message-avatar');
883
+ expect(screen.getByRole('img')).not.toHaveClass('pf-chatbot__message-avatar--round');
884
+ });
885
+ it('should handle avatarProps correctly by spreading it onto the Message Avatar', () => {
886
+ render(<Message avatar="./img" role="user" name="User" content="Hi" avatarProps={{ className: 'test' }} />);
887
+ expect(screen.getByRole('img')).toBeTruthy();
888
+ expect(screen.getByRole('img')).toHaveClass('test');
889
+ });
890
+ it('should handle avatarProps and hasRoundAvatar correctly', () => {
891
+ render(
892
+ <Message
893
+ avatar="./img"
894
+ role="user"
895
+ name="User"
896
+ content="Hi"
897
+ avatarProps={{ className: 'test' }}
898
+ hasRoundAvatar={false}
899
+ />
900
+ );
901
+ expect(screen.getByRole('img')).toBeTruthy();
902
+ expect(screen.getByRole('img')).toHaveClass('test');
903
+ expect(screen.getByRole('img')).toHaveClass('pf-chatbot__message-avatar');
904
+ });
905
+ it('should handle QuickStart tile correctly', () => {
906
+ render(
907
+ <Message
908
+ avatar="./img"
909
+ role="user"
910
+ name="User"
911
+ content="Hi"
912
+ quickStarts={{
913
+ quickStart: monitorSampleAppQuickStart,
914
+ onSelectQuickStart: (id) => alert(id)
915
+ }}
916
+ />
917
+ );
918
+ expect(screen.getByRole('button', { name: 'Monitoring your sample application' })).toBeTruthy();
919
+ expect(screen.getByRole('heading', { name: '1 Prerequisite' })).toBeTruthy();
920
+ expect(screen.getByRole('button', { name: 'Show prerequisites' })).toBeTruthy();
921
+ expect(screen.getByRole('button', { name: 'Start' })).toBeTruthy();
922
+ });
923
+ it('should handle click on QuickStart tile correctly', async () => {
924
+ const spy = jest.fn();
925
+ render(
926
+ <Message
927
+ avatar="./img"
928
+ role="user"
929
+ name="User"
930
+ content="Hi"
931
+ quickStarts={{
932
+ quickStart: monitorSampleAppQuickStart,
933
+ onSelectQuickStart: (id) => spy(id)
934
+ }}
935
+ />
936
+ );
937
+ await userEvent.click(screen.getByRole('button', { name: 'Monitoring your sample application' }));
938
+ expect(spy).toHaveBeenCalledTimes(1);
939
+ expect(spy).toHaveBeenCalledWith(monitorSampleAppQuickStart.metadata.name);
940
+ });
941
+ it('should handle QuickStart tile with image correctly', async () => {
942
+ const spy = jest.fn();
943
+ render(
944
+ <Message
945
+ avatar="./img"
946
+ role="user"
947
+ name="User"
948
+ content="Hi"
949
+ quickStarts={{
950
+ quickStart: monitorSampleAppQuickStartWithImage,
951
+ onSelectQuickStart: (id) => spy(id)
952
+ }}
953
+ />
954
+ );
955
+ expect(screen.getAllByRole('img')[1]).toHaveAttribute('src', 'test.png');
956
+ });
957
+ it('should handle tool response correctly', async () => {
958
+ render(
959
+ <Message
960
+ avatar="./img"
961
+ role="user"
962
+ name="User"
963
+ content="Hi"
964
+ toolResponse={{
965
+ toggleContent: 'Tool response: Name',
966
+ subheading: 'Thought for 3 seconds',
967
+ body: 'Lorem ipsum dolor sit amet',
968
+ cardTitle: 'Card title',
969
+ cardBody: 'Card body'
970
+ }}
971
+ />
972
+ );
973
+ expect(screen.getByRole('button', { name: /Tool response: Name/i })).toBeTruthy();
974
+ expect(screen.getByText('Thought for 3 seconds')).toBeTruthy();
975
+ expect(screen.getByText('Lorem ipsum dolor sit amet')).toBeTruthy();
976
+ expect(screen.getByText('Card title')).toBeTruthy();
977
+ expect(screen.getByText('Card body')).toBeTruthy();
978
+ });
979
+ it('should handle block quote correctly', () => {
980
+ render(<Message avatar="./img" role="user" name="User" content={BLOCK_QUOTES} />);
981
+ expect(screen.getByText(/Blockquotes can also be nested.../)).toBeTruthy();
982
+ expect(screen.getByText('...by using additional greater-than signs (>) right next to each other...')).toBeTruthy();
983
+ expect(screen.getByText(/...or with spaces between each sign./)).toBeTruthy();
984
+ });
985
+ it('should handle heading correctly', () => {
986
+ render(<Message avatar="./img" role="user" name="User" content={HEADING} />);
987
+ expect(screen.getByRole('heading', { name: /h1 Heading/i })).toBeTruthy();
988
+ expect(screen.getByRole('heading', { name: /h2 Heading/i })).toBeTruthy();
989
+ expect(screen.getByRole('heading', { name: /h3 Heading/i })).toBeTruthy();
990
+ expect(screen.getByRole('heading', { name: /h4 Heading/i })).toBeTruthy();
991
+ expect(screen.getByRole('heading', { name: /h5 Heading/i })).toBeTruthy();
992
+ expect(screen.getByRole('heading', { name: /h6 Heading/i })).toBeTruthy();
993
+ });
994
+ it('should render table correctly', () => {
995
+ render(<Message avatar="./img" role="user" name="User" content={TABLE} />);
996
+ expect(screen.getByRole('row', { name: /Column 1 Column 2/i })).toBeTruthy();
997
+ expect(screen.getByRole('row', { name: /Cell 1 Cell 2/i })).toBeTruthy();
998
+ expect(screen.getByRole('row', { name: /Cell 3 Cell 4/i })).toBeTruthy();
999
+ expect(screen.getByRole('columnheader', { name: /Column 1/i })).toBeTruthy();
1000
+ expect(screen.getByRole('columnheader', { name: /Column 2/i })).toBeTruthy();
1001
+ expect(screen.getByRole('cell', { name: /Cell 1/i })).toBeTruthy();
1002
+ expect(screen.getByRole('cell', { name: /Cell 2/i })).toBeTruthy();
1003
+ expect(screen.getByRole('cell', { name: /Cell 3/i })).toBeTruthy();
1004
+ expect(screen.getByRole('cell', { name: /Cell 4/i })).toBeTruthy();
1005
+ });
1006
+ it('should render table data labels correctly for mobile breakpoint', () => {
1007
+ render(<Message avatar="./img" role="user" name="User" content={TABLE} />);
1008
+ expect(screen.getByRole('row', { name: /Cell 1 Cell 2/i })).toHaveAttribute('extraHeaders', 'Column 1,Column 2');
1009
+ expect(screen.getByRole('row', { name: /Cell 3 Cell 4/i })).toHaveAttribute('extraHeaders', 'Column 1,Column 2');
1010
+ expect(screen.getByRole('cell', { name: /Cell 1/i })).toHaveAttribute('data-label', 'Column 1');
1011
+ expect(screen.getByRole('cell', { name: /Cell 2/i })).toHaveAttribute('data-label', 'Column 2');
1012
+ expect(screen.getByRole('cell', { name: /Cell 3/i })).toHaveAttribute('data-label', 'Column 1');
1013
+ expect(screen.getByRole('cell', { name: /Cell 4/i })).toHaveAttribute('data-label', 'Column 2');
1014
+ });
1015
+ it('should render table data labels correctly for mobile breakpoint for one column table', () => {
1016
+ render(<Message avatar="./img" role="user" name="User" content={ONE_COLUMN_TABLE} />);
1017
+ expect(screen.getByRole('row', { name: /Cell 1/i })).toHaveAttribute('extraHeaders', 'Column 1');
1018
+ expect(screen.getByRole('row', { name: /Cell 2/i })).toHaveAttribute('extraHeaders', 'Column 1');
1019
+ expect(screen.getByRole('cell', { name: /Cell 1/i })).toHaveAttribute('data-label', 'Column 1');
1020
+ expect(screen.getByRole('cell', { name: /Cell 2/i })).toHaveAttribute('data-label', 'Column 1');
1021
+ });
1022
+ it('should render table data labels correctly for mobile breakpoint for one cell table', () => {
1023
+ render(<Message avatar="./img" role="user" name="User" content={ONE_CELL_TABLE} />);
1024
+ expect(screen.getByRole('row', { name: /Cell 1/i })).toHaveAttribute('extraHeaders', 'Column 1');
1025
+ expect(screen.getByRole('cell', { name: /Cell 1/i })).toHaveAttribute('data-label', 'Column 1');
1026
+ });
1027
+ it('should render table data labels correctly for mobile breakpoint for headerless', () => {
1028
+ render(<Message avatar="./img" role="user" name="User" content={HEADERLESS_TABLE} />);
1029
+ expect(screen.getByRole('row', { name: /Cell 1/i })).toHaveAttribute('extraHeaders', '');
1030
+ expect(screen.getByRole('cell', { name: /Cell 1/i })).not.toHaveAttribute('data-label');
1031
+ });
1032
+ it('should render table data labels correctly for mobile breakpoint for childless', () => {
1033
+ render(<Message avatar="./img" role="user" name="User" content={CHILDLESS_TABLE} />);
1034
+ expect(screen.getByRole('cell')).not.toHaveAttribute('extraHeaders', 'Column 1');
1035
+ });
1036
+ it('should render table data labels correctly for mobile breakpoint for empty', () => {
1037
+ render(<Message avatar="./img" role="user" name="User" content={EMPTY_TABLE} />);
1038
+ expect(screen.getByRole('cell')).not.toHaveAttribute('extraHeaders', '');
1039
+ });
1040
+ it('should render custom table aria label correctly', () => {
1041
+ render(<Message avatar="./img" role="user" name="User" content={TABLE} tableProps={{ 'aria-label': 'Test' }} />);
1042
+ expect(screen.getByRole('grid', { name: /Test/i })).toBeTruthy();
1043
+ });
1044
+ it('should render footnote correctly', () => {
1045
+ render(<Message avatar="./img" role="user" name="User" content={FOOTNOTE} />);
1046
+ expect(screen.getByText(/This is some text with a footnote/i)).toBeTruthy();
1047
+ expect(screen.getByText(/and here's a longer one./i)).toBeTruthy();
1048
+ expect(screen.getByText(/You can also reference the same footnote multiple times./i)).toBeTruthy();
1049
+ expect(screen.getByRole('heading', { name: /Footnotes/i })).toBeTruthy();
1050
+ expect(screen.getByText(/This is the full footnote text. You can click the arrow to go back up./i)).toBeTruthy();
1051
+ expect(screen.getByText(/Here's one with multiple paragraphs and/i)).toBeTruthy();
1052
+ expect(screen.getByText(/formatting/i)).toBeTruthy();
1053
+ expect(screen.getByText(/Indent paragraphs to include them in the footnote./i)).toBeTruthy();
1054
+ expect(screen.getByText(/Add as many paragraphs as you like. You can include/i)).toBeTruthy();
1055
+ expect(screen.getByText(/italic text/i)).toBeTruthy();
1056
+ expect(screen.getByText(/bold text/i)).toBeTruthy();
1057
+ expect(screen.getByText(/, and even/i)).toBeTruthy();
1058
+ expect(screen.getByText(/code/i)).toBeTruthy();
1059
+ expect(screen.getByText(/You can even include blockquotes in footnotes!/i)).toBeTruthy();
1060
+ expect(screen.getAllByRole('link', { name: '1' })).toHaveLength(2);
1061
+ expect(screen.getAllByRole('link', { name: '2' })).toBeTruthy();
1062
+ expect(screen.getByRole('link', { name: 'Back to reference 1' })).toBeTruthy();
1063
+ expect(screen.getByRole('link', { name: 'Back to reference 1-2' })).toBeTruthy();
1064
+ expect(screen.getByRole('link', { name: /Back to reference 2/i })).toBeTruthy();
1065
+ });
1066
+ it('should render beforeMainContent with main content', () => {
1067
+ const mainContent = 'Main message content';
1068
+ const beforeMainContentText = 'Before main content';
1069
+ const beforeMainContent = <div>{beforeMainContentText}</div>;
1070
+
1071
+ render(
1072
+ <Message avatar="./img" role="user" name="User" content={mainContent} extraContent={{ beforeMainContent }} />
1073
+ );
1074
+
1075
+ expect(screen.getByText(beforeMainContentText)).toBeTruthy();
1076
+ expect(screen.getByText(mainContent)).toBeTruthy();
1077
+ });
1078
+ it('should render afterMainContent with main content', () => {
1079
+ const mainContent = 'Main message content';
1080
+ const afterMainContentText = 'After main content';
1081
+ const afterMainContent = <div>{afterMainContentText}</div>;
1082
+
1083
+ render(
1084
+ <Message avatar="./img" role="user" name="User" content={mainContent} extraContent={{ afterMainContent }} />
1085
+ );
1086
+
1087
+ expect(screen.getByText(afterMainContentText)).toBeTruthy();
1088
+ expect(screen.getByText(mainContent)).toBeTruthy();
1089
+ });
1090
+
1091
+ it('should render endContent with main content', () => {
1092
+ const mainContent = 'Main message content';
1093
+ const endMainContentText = 'End content';
1094
+ const endContent = <div>{endMainContentText}</div>;
1095
+
1096
+ render(<Message avatar="./img" role="user" name="User" content={mainContent} extraContent={{ endContent }} />);
1097
+
1098
+ expect(screen.getByText(endMainContentText)).toBeTruthy();
1099
+ expect(screen.getByText(mainContent)).toBeTruthy();
1100
+ });
1101
+ it('should render all parts of extraContent with main content', () => {
1102
+ const beforeMainContent = <div>Before main content</div>;
1103
+ const afterMainContent = <div>After main content</div>;
1104
+ const endContent = <div>End content</div>;
1105
+
1106
+ render(
1107
+ <Message
1108
+ avatar="./img"
1109
+ role="user"
1110
+ name="User"
1111
+ content="Main message content"
1112
+ extraContent={{ beforeMainContent, afterMainContent, endContent }}
1113
+ />
1114
+ );
1115
+
1116
+ expect(screen.getByText('Before main content')).toBeTruthy();
1117
+ expect(screen.getByText('Main message content')).toBeTruthy();
1118
+ expect(screen.getByText('After main content')).toBeTruthy();
1119
+ expect(screen.getByText('End content')).toBeTruthy();
1120
+ });
1121
+
1122
+ it('should not render extraContent when not provided', () => {
1123
+ render(<Message avatar="./img" role="user" name="User" content="Main message content" />);
1124
+
1125
+ // Ensure no extraContent is rendered
1126
+ expect(screen.getByText('Main message content')).toBeTruthy();
1127
+ expect(screen.queryByText('Before main content')).toBeFalsy();
1128
+ expect(screen.queryByText('After main content')).toBeFalsy();
1129
+ expect(screen.queryByText('end message content')).toBeFalsy();
1130
+ });
1131
+
1132
+ it('should handle undefined or null values in extraContent gracefully', () => {
1133
+ render(
1134
+ <Message
1135
+ avatar="./img"
1136
+ role="user"
1137
+ name="User"
1138
+ content="Main message content"
1139
+ extraContent={{ beforeMainContent: null, afterMainContent: undefined, endContent: null }}
1140
+ />
1141
+ );
1142
+
1143
+ // Ensure that no extraContent is rendered if they are null or undefined
1144
+ expect(screen.getByText('Main message content')).toBeTruthy();
1145
+ expect(screen.queryByText('Before main content')).toBeFalsy();
1146
+ expect(screen.queryByText('After main content')).toBeFalsy();
1147
+ expect(screen.queryByText('end message content')).toBeFalsy();
1148
+ });
1149
+ it('should render JSX in extraContent correctly', () => {
1150
+ const beforeMainContent = (
1151
+ <div data-testid="before-main-content">
1152
+ <strong>Bold before content</strong>
1153
+ </div>
1154
+ );
1155
+ const afterMainContent = (
1156
+ <div data-testid="after-main-content">
1157
+ <strong>Bold after content</strong>
1158
+ </div>
1159
+ );
1160
+ const endContent = (
1161
+ <div data-testid="end-main-content">
1162
+ <strong>Bold end content</strong>
1163
+ </div>
1164
+ );
1165
+ render(
1166
+ <Message
1167
+ avatar="./img"
1168
+ role="user"
1169
+ name="User"
1170
+ content="Main message content"
1171
+ extraContent={{ beforeMainContent, afterMainContent, endContent }}
1172
+ />
1173
+ );
1174
+
1175
+ // Check that the JSX is correctly rendered
1176
+ expect(screen.getByTestId('before-main-content')).toContainHTML('<strong>Bold before content</strong>');
1177
+ expect(screen.getByTestId('after-main-content')).toContainHTML('<strong>Bold after content</strong>');
1178
+ expect(screen.getByTestId('end-main-content')).toContainHTML('<strong>Bold end content</strong>');
1179
+ });
1180
+ it('should handle image correctly for user', () => {
1181
+ render(<Message avatar="./img" role="user" name="User" content={IMAGE} />);
1182
+ expect(screen.queryByRole('img', { name: /Multi-colored wavy lines on a black background/i })).toBeFalsy();
1183
+ });
1184
+ it('should handle image correctly for bot', () => {
1185
+ render(<Message avatar="./img" role="bot" name="Bot" content={IMAGE} />);
1186
+ expect(screen.getByRole('img', { name: /Multi-colored wavy lines on a black background/i })).toBeTruthy();
1187
+ });
1188
+ it('inline image parent should have class pf-chatbot__message-and-actions', () => {
1189
+ render(<Message avatar="./img" role="bot" name="Bot" content={INLINE_IMAGE} />);
1190
+ expect(screen.getByRole('img', { name: /Multi-colored wavy lines on a black background/i })).toBeTruthy();
1191
+ expect(
1192
+ screen.getByRole('img', { name: /Multi-colored wavy lines on a black background/i }).parentElement
1193
+ ).toHaveClass('pf-chatbot__message-and-actions');
1194
+ });
1195
+ it('should handle external links correctly', () => {
1196
+ render(<Message avatar="./img" role="user" name="User" content={`[PatternFly](https://www.patternfly.org/)`} />);
1197
+ // we are mocking rehype libraries, so we can't test target _blank addition on links directly with RTL
1198
+ expect(rehypeExternalLinks).toHaveBeenCalledTimes(1);
1199
+ });
1200
+ it('should handle external links correctly', () => {
1201
+ render(
1202
+ <Message
1203
+ avatar="./img"
1204
+ role="user"
1205
+ name="User"
1206
+ content={`[PatternFly](https://www.patternfly.org/)`}
1207
+ openLinkInNewTab={false}
1208
+ />
1209
+ );
1210
+ // we are mocking rehype libraries, so we can't test target _blank addition on links directly with RTL
1211
+ expect(rehypeExternalLinks).not.toHaveBeenCalled();
1212
+ });
1213
+ it('should handle extra link props correctly', async () => {
1214
+ const spy = jest.fn();
1215
+ render(
1216
+ <Message
1217
+ avatar="./img"
1218
+ role="user"
1219
+ name="User"
1220
+ content={`[PatternFly](https://www.patternfly.org/)`}
1221
+ linkProps={{ onClick: spy }}
1222
+ />
1223
+ );
1224
+ await userEvent.click(screen.getByRole('link', { name: /PatternFly/i }));
1225
+ expect(spy).toHaveBeenCalledTimes(1);
1226
+ });
1227
+ it('should handle error correctly', () => {
1228
+ render(<Message avatar="./img" role="user" name="User" error={ERROR} />);
1229
+ expect(screen.getByRole('heading', { name: /Could not load chat/i })).toBeTruthy();
1230
+ expect(screen.getByRole('link', { name: /Start a new chat/i })).toBeTruthy();
1231
+ expect(screen.getByRole('link', { name: /Contact support/i })).toBeTruthy();
1232
+ expect(screen.getByText('Wait a few minutes and check your network settings. If the issue persists:')).toBeTruthy();
1233
+ });
1234
+ it('should handle error correctly when loading', () => {
1235
+ render(<Message avatar="./img" role="user" name="User" error={ERROR} isLoading />);
1236
+ expect(screen.queryByRole('heading', { name: /Could not load chat/i })).toBeFalsy();
1237
+ expect(screen.getByText('Loading message')).toBeTruthy();
1238
+ });
1239
+ it('should handle error correctly when these is content', () => {
1240
+ render(<Message avatar="./img" role="user" name="User" error={ERROR} content="Test" />);
1241
+ expect(screen.getByRole('heading', { name: /Could not load chat/i })).toBeTruthy();
1242
+ expect(screen.queryByText('Test')).toBeFalsy();
1243
+ });
1244
+ it('should handle isEditable when there is message content', () => {
1245
+ render(<Message avatar="./img" role="user" name="User" isEditable content="Test" />);
1246
+ expect(screen.getByRole('textbox')).toBeTruthy();
1247
+ expect(screen.getByRole('textbox')).toHaveValue('Test');
1248
+ expect(screen.getByRole('button', { name: /Update/i })).toBeTruthy();
1249
+ expect(screen.getByRole('button', { name: /Cancel/i })).toBeTruthy();
1250
+ });
1251
+ it('should handle isEditable when there is no message content', () => {
1252
+ render(<Message avatar="./img" role="user" name="User" isEditable />);
1253
+ expect(screen.getByRole('textbox')).toBeTruthy();
1254
+ expect(screen.getByRole('textbox')).toHaveValue('');
1255
+ expect(screen.getByRole('textbox')).toHaveAttribute('placeholder', 'Edit prompt message...');
1256
+ expect(screen.getByRole('button', { name: /Update/i })).toBeTruthy();
1257
+ expect(screen.getByRole('button', { name: /Cancel/i })).toBeTruthy();
1258
+ });
1259
+ it('should be able to change edit placeholder', () => {
1260
+ render(<Message avatar="./img" role="user" name="User" isEditable editPlaceholder="I am a placeholder" />);
1261
+ expect(screen.getByRole('textbox')).toBeTruthy();
1262
+ expect(screen.getByRole('textbox')).toHaveValue('');
1263
+ expect(screen.getByRole('textbox')).toHaveAttribute('placeholder', 'I am a placeholder');
1264
+ });
1265
+ it('should be able to change updateWord', () => {
1266
+ render(<Message avatar="./img" role="user" name="User" isEditable updateWord="Submit" />);
1267
+ expect(screen.getByRole('button', { name: /Submit/i })).toBeTruthy();
1268
+ });
1269
+ it('should be able to change cancelWord', () => {
1270
+ render(<Message avatar="./img" role="user" name="User" isEditable cancelWord="Don't submit" />);
1271
+ expect(screen.getByRole('button', { name: /Don't submit/i })).toBeTruthy();
1272
+ });
1273
+ it('should be able to add onEditUpdate', async () => {
1274
+ const spy = jest.fn();
1275
+ render(<Message avatar="./img" role="user" name="User" isEditable onEditUpdate={spy} />);
1276
+ await userEvent.click(screen.getByRole('button', { name: /Update/i }));
1277
+ expect(spy).toHaveBeenCalledTimes(1);
1278
+ });
1279
+ it('should be able to add onEditCancel', async () => {
1280
+ const spy = jest.fn();
1281
+ render(<Message avatar="./img" role="user" name="User" isEditable onEditCancel={spy} />);
1282
+ await userEvent.click(screen.getByRole('button', { name: /Cancel/i }));
1283
+ expect(spy).toHaveBeenCalledTimes(1);
1284
+ });
1285
+ it('should be able to add editFormProps', () => {
1286
+ const { container } = render(
1287
+ <Message avatar="./img" role="user" name="User" isEditable editFormProps={{ className: 'test' }} />
1288
+ );
1289
+ const form = container.querySelector('form');
1290
+ expect(form).toHaveClass('test');
1291
+ });
1292
+ it('should be able to disable markdown parsing', () => {
1293
+ render(<Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} isMarkdownDisabled />);
1294
+ // this is looking for markdown syntax that is ordinarily stripped
1295
+ expect(screen.getByText(/~~~yaml/i)).toBeTruthy();
1296
+ });
1297
+ it('should be able to pass props to react-markdown, such as disabling tags', () => {
1298
+ render(
1299
+ <Message
1300
+ avatar="./img"
1301
+ role="user"
1302
+ name="User"
1303
+ content={CODE_MESSAGE}
1304
+ reactMarkdownProps={{ disallowedElements: ['code'] }}
1305
+ />
1306
+ );
1307
+ expect(screen.getByText('Here is some YAML code:')).toBeTruthy();
1308
+ // code block isn't rendering
1309
+ expect(screen.queryByRole('button', { name: 'Copy code' })).toBeFalsy();
1310
+ });
1311
+ it('should disable images and additional tags for user messages', () => {
1312
+ render(
1313
+ <Message
1314
+ avatar="./img"
1315
+ role="user"
1316
+ name="User"
1317
+ content={`${IMAGE} ${CODE_MESSAGE}`}
1318
+ reactMarkdownProps={{ disallowedElements: ['code'] }}
1319
+ />
1320
+ );
1321
+ expect(screen.getByText('Here is some YAML code:')).toBeTruthy();
1322
+ // code block isn't rendering
1323
+ expect(screen.queryByRole('button', { name: 'Copy code' })).toBeFalsy();
1324
+ expect(screen.queryByRole('img', { name: /Multi-colored wavy lines on a black background/i })).toBeFalsy();
1325
+ });
1326
+ it('can override image tag removal default for user messages', () => {
1327
+ render(<Message avatar="./img" role="user" name="User" content={IMAGE} hasNoImagesInUserMessages={false} />);
1328
+ expect(screen.getByRole('img', { name: /Multi-colored wavy lines on a black background/i })).toBeTruthy();
1329
+ });
1330
+ it('should render deep thinking section correctly', () => {
1331
+ render(<Message avatar="./img" role="user" name="User" content="" deepThinking={DEEP_THINKING} />);
1332
+ expect(screen.getByRole('button', { name: /Show thinking/i })).toBeTruthy();
1333
+ expect(screen.getByText('Thought for 3 seconds')).toBeTruthy();
1334
+ expect(screen.getByText("Here's why I said this.")).toBeTruthy();
1335
+ });
1336
+ it('should handle isPrimary correctly for inline code when it is true', () => {
1337
+ const { container } = render(<Message avatar="./img" role="user" name="User" content={INLINE_CODE} isPrimary />);
1338
+ expect(container.querySelector('.pf-m-primary')).toBeTruthy();
1339
+ });
1340
+ it('should handle isPrimary correctly for inline code when it is false', () => {
1341
+ const { container } = render(<Message avatar="./img" role="user" name="User" content={INLINE_CODE} />);
1342
+ expect(container.querySelector('.pf-m-primary')).toBeFalsy();
1343
+ });
1344
+ it('should handle isPrimary correctly for table when it is true', () => {
1345
+ const { container } = render(<Message avatar="./img" role="user" name="User" content={TABLE} isPrimary />);
1346
+ expect(container.querySelector('.pf-m-primary')).toBeTruthy();
1347
+ });
1348
+ it('should handle isPrimary correctly for table when it is false', () => {
1349
+ const { container } = render(<Message avatar="./img" role="user" name="User" content={TABLE} />);
1350
+ expect(container.querySelector('.pf-m-primary')).toBeFalsy();
1351
+ });
1352
+ it('should handle isPrimary correctly for loading when it is true', () => {
1353
+ const { container } = render(<Message avatar="./img" role="user" name="User" content="" isPrimary isLoading />);
1354
+ expect(container.querySelector('.pf-m-primary')).toBeTruthy();
1355
+ });
1356
+ it('should handle isPrimary correctly for loading when it is false', () => {
1357
+ const { container } = render(<Message avatar="./img" role="user" name="User" content="" isLoading />);
1358
+
1359
+ expect(container.querySelector('.pf-m-primary')).toBeFalsy();
1360
+ });
1361
+ it('should handle isPrimary correctly for attachments when it is true', () => {
1362
+ const { container } = render(
1363
+ <Message avatar="./img" role="user" name="User" content="" isPrimary attachments={[{ name: 'testAttachment' }]} />
1364
+ );
1365
+ expect(container.querySelector('.pf-m-outline')).toBeTruthy();
1366
+ });
1367
+ it('should handle isPrimary correctly for attachments when it is false', () => {
1368
+ const { container } = render(
1369
+ <Message avatar="./img" role="user" name="User" content="" attachments={[{ name: 'testAttachment' }]} />
1370
+ );
1371
+ expect(container.querySelector('.pf-m-outline')).toBeFalsy();
1372
+ });
1373
+
1374
+ it('Renders without pf-m-end class by default', () => {
1375
+ render(<Message avatar="./img" role="user" name="User" content="" />);
1376
+ expect(screen.getByRole('region')).not.toHaveClass('pf-m-end');
1377
+ });
1378
+
1379
+ it('Renders with pf-m-end class when alignment="end"', () => {
1380
+ render(<Message alignment="end" avatar="./img" role="user" name="User" content="" />);
1381
+ expect(screen.getByRole('region')).toHaveClass('pf-m-end');
1382
+ });
1383
+
1384
+ // We're just testing the positive action here to ensure logic passes through as needed, the other actions are
1385
+ // tested in ResponseActions.test.tsx along with other aspects of this functionality
1386
+ it('should not swap icons when useFilledIconsOnClick is omitted', async () => {
1387
+ const user = userEvent.setup();
1388
+
1389
+ render(
1390
+ <Message
1391
+ avatar="./img"
1392
+ role="bot"
1393
+ name="Bot"
1394
+ content="Hi"
1395
+ actions={{
1396
+ positive: { onClick: jest.fn() }
1397
+ }}
1398
+ />
1399
+ );
1400
+
1401
+ expect(screen.getByText('OutlinedThumbsUpIcon')).toBeInTheDocument();
1402
+
1403
+ await user.click(screen.getByRole('button', { name: /Good response/i }));
1404
+
1405
+ expect(screen.getByText('OutlinedThumbsUpIcon')).toBeInTheDocument();
1406
+ expect(screen.queryByText('ThumbsUpIcon')).not.toBeInTheDocument();
1407
+ });
1408
+
1409
+ it('should swap icons when useFilledIconsOnClick is true', async () => {
1410
+ const user = userEvent.setup();
1411
+
1412
+ render(
1413
+ <Message
1414
+ avatar="./img"
1415
+ role="bot"
1416
+ name="Bot"
1417
+ content="Hi"
1418
+ actions={{
1419
+ positive: { onClick: jest.fn() }
1420
+ }}
1421
+ useFilledIconsOnClick
1422
+ />
1423
+ );
1424
+
1425
+ await user.click(screen.getByRole('button', { name: /Good response/i }));
1426
+
1427
+ expect(screen.getByText('ThumbsUpIcon')).toBeInTheDocument();
1428
+ expect(screen.queryByText('OutlinedThumbsUpIcon')).not.toBeInTheDocument();
1429
+ });
1430
+
1431
+ it('should apply pf-m-visible-interaction class to response actions when showActionsOnInteraction is true', () => {
1432
+ render(
1433
+ <Message
1434
+ avatar="./img"
1435
+ role="bot"
1436
+ name="Bot"
1437
+ content="Hi"
1438
+ showActionsOnInteraction
1439
+ actions={{
1440
+ positive: { onClick: jest.fn() }
1441
+ }}
1442
+ />
1443
+ );
1444
+
1445
+ const responseContainer = screen
1446
+ .getByRole('button', { name: 'Good response' })
1447
+ .closest('.pf-chatbot__response-actions');
1448
+ expect(responseContainer).toHaveClass('pf-m-visible-interaction');
1449
+ });
1450
+
1451
+ it('should not apply pf-m-visible-interaction class to response actions when showActionsOnInteraction is false', () => {
1452
+ render(
1453
+ <Message
1454
+ avatar="./img"
1455
+ role="bot"
1456
+ name="Bot"
1457
+ content="Hi"
1458
+ showActionsOnInteraction={false}
1459
+ actions={{
1460
+ positive: { onClick: jest.fn() }
1461
+ }}
1462
+ />
1463
+ );
1464
+
1465
+ const responseContainer = screen
1466
+ .getByRole('button', { name: 'Good response' })
1467
+ .closest('.pf-chatbot__response-actions');
1468
+ expect(responseContainer).not.toHaveClass('pf-m-visible-interaction');
1469
+ });
1470
+
1471
+ it('should not apply pf-m-visible-interaction class to response actions by default', () => {
1472
+ render(
1473
+ <Message
1474
+ avatar="./img"
1475
+ role="bot"
1476
+ name="Bot"
1477
+ content="Hi"
1478
+ actions={{
1479
+ positive: { onClick: jest.fn() }
1480
+ }}
1481
+ />
1482
+ );
1483
+
1484
+ const responseContainer = screen
1485
+ .getByRole('button', { name: 'Good response' })
1486
+ .closest('.pf-chatbot__response-actions');
1487
+ expect(responseContainer).not.toHaveClass('pf-m-visible-interaction');
1488
+ });
1489
+
1490
+ it('should apply pf-m-visible-interaction class to grouped actions container when showActionsOnInteraction is true', () => {
1491
+ render(
1492
+ <Message
1493
+ avatar="./img"
1494
+ role="bot"
1495
+ name="Bot"
1496
+ content="Hi"
1497
+ showActionsOnInteraction
1498
+ actions={[
1499
+ {
1500
+ positive: { onClick: jest.fn() },
1501
+ negative: { onClick: jest.fn() }
1502
+ },
1503
+ {
1504
+ copy: { onClick: jest.fn() }
1505
+ }
1506
+ ]}
1507
+ />
1508
+ );
1509
+
1510
+ const responseContainer = screen
1511
+ .getByRole('button', { name: 'Good response' })
1512
+ .closest('.pf-chatbot__response-actions-groups');
1513
+ expect(responseContainer).toHaveClass('pf-m-visible-interaction');
1514
+ });
1515
+
1516
+ it('should not apply pf-m-visible-interaction class to grouped actions container when showActionsOnInteraction is false', () => {
1517
+ render(
1518
+ <Message
1519
+ avatar="./img"
1520
+ role="bot"
1521
+ name="Bot"
1522
+ content="Hi"
1523
+ showActionsOnInteraction={false}
1524
+ actions={[
1525
+ {
1526
+ positive: { onClick: jest.fn() },
1527
+ negative: { onClick: jest.fn() }
1528
+ },
1529
+ {
1530
+ copy: { onClick: jest.fn() }
1531
+ }
1532
+ ]}
1533
+ />
1534
+ );
1535
+
1536
+ const responseContainer = screen
1537
+ .getByRole('button', { name: 'Good response' })
1538
+ .closest('.pf-chatbot__response-actions-groups');
1539
+ expect(responseContainer).not.toHaveClass('pf-m-visible-interaction');
1540
+ });
1541
+
1542
+ it('should not apply pf-m-visible-interaction class to grouped actions container by default', () => {
1543
+ render(
1544
+ <Message
1545
+ avatar="./img"
1546
+ role="bot"
1547
+ name="Bot"
1548
+ content="Hi"
1549
+ actions={[
1550
+ {
1551
+ positive: { onClick: jest.fn() },
1552
+ negative: { onClick: jest.fn() }
1553
+ },
1554
+ {
1555
+ copy: { onClick: jest.fn() }
1556
+ }
1557
+ ]}
1558
+ />
1559
+ );
1560
+
1561
+ const responseContainer = screen
1562
+ .getByRole('button', { name: 'Good response' })
1563
+ .closest('.pf-chatbot__response-actions-groups');
1564
+ expect(responseContainer).not.toHaveClass('pf-m-visible-interaction');
1565
+ });
1566
+ });