@patternfly/chatbot 2.2.0-prerelease.8 → 2.2.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 (501) hide show
  1. package/dist/cjs/AttachmentEdit/AttachmentEdit.test.d.ts +1 -0
  2. package/dist/cjs/AttachmentEdit/AttachmentEdit.test.js +52 -0
  3. package/dist/cjs/Chatbot/Chatbot.d.ts +2 -1
  4. package/dist/cjs/Chatbot/Chatbot.js +1 -0
  5. package/dist/cjs/Chatbot/Chatbot.test.d.ts +1 -0
  6. package/dist/cjs/Chatbot/Chatbot.test.js +28 -0
  7. package/dist/cjs/ChatbotAlert/ChatbotAlert.test.d.ts +1 -0
  8. package/dist/cjs/ChatbotAlert/ChatbotAlert.test.js +27 -0
  9. package/dist/cjs/ChatbotContent/ChatbotContent.test.d.ts +1 -0
  10. package/dist/cjs/ChatbotContent/ChatbotContent.test.js +18 -0
  11. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +3 -3
  12. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +3 -1
  13. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +27 -4
  14. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +24 -12
  15. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +99 -3
  16. package/dist/cjs/ChatbotConversationHistoryNav/EmptyState.d.ts +11 -0
  17. package/dist/cjs/ChatbotConversationHistoryNav/EmptyState.js +29 -0
  18. package/dist/cjs/ChatbotConversationHistoryNav/LoadingState.d.ts +4 -0
  19. package/dist/cjs/ChatbotConversationHistoryNav/LoadingState.js +45 -0
  20. package/dist/cjs/ChatbotFooter/ChatbotFooter.test.d.ts +1 -0
  21. package/dist/cjs/ChatbotFooter/ChatbotFooter.test.js +18 -0
  22. package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.d.ts +1 -0
  23. package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.js +87 -0
  24. package/dist/cjs/ChatbotFooter/ChatbotFootnote.d.ts +1 -1
  25. package/dist/cjs/ChatbotFooter/ChatbotFootnote.js +1 -1
  26. package/dist/cjs/ChatbotHeader/ChatbotHeader.test.d.ts +1 -0
  27. package/dist/cjs/ChatbotHeader/ChatbotHeader.test.js +18 -0
  28. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.d.ts +1 -0
  29. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.js +18 -0
  30. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.js +3 -1
  31. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -0
  32. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.js +20 -0
  33. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.d.ts +1 -0
  34. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.js +18 -0
  35. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.js +3 -1
  36. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -0
  37. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.js +20 -0
  38. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +3 -1
  39. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -0
  40. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +43 -0
  41. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +6 -4
  42. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -0
  43. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +41 -0
  44. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.d.ts +3 -1
  45. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.js +4 -2
  46. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +1 -0
  47. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.js +55 -0
  48. package/dist/cjs/ChatbotToggle/ChatbotToggle.js +3 -1
  49. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +19 -11
  50. package/dist/cjs/Compare/Compare.d.ts +17 -0
  51. package/dist/cjs/Compare/Compare.js +50 -0
  52. package/dist/cjs/Compare/Compare.test.d.ts +1 -0
  53. package/dist/cjs/Compare/Compare.test.js +20 -0
  54. package/dist/cjs/Compare/index.d.ts +2 -0
  55. package/dist/cjs/Compare/index.js +23 -0
  56. package/dist/cjs/Message/ErrorMessage/ErrorMessage.d.ts +4 -0
  57. package/dist/cjs/Message/ErrorMessage/ErrorMessage.js +26 -0
  58. package/dist/cjs/Message/ImageMessage/ImageMessage.d.ts +4 -0
  59. package/dist/cjs/Message/ImageMessage/ImageMessage.js +25 -0
  60. package/dist/cjs/Message/LinkMessage/LinkMessage.d.ts +4 -0
  61. package/dist/cjs/Message/LinkMessage/LinkMessage.js +30 -0
  62. package/dist/cjs/Message/Message.d.ts +49 -8
  63. package/dist/cjs/Message/Message.js +70 -18
  64. package/dist/cjs/Message/Message.test.js +269 -3
  65. package/dist/cjs/Message/QuickResponse/QuickResponse.d.ts +17 -0
  66. package/dist/cjs/Message/QuickResponse/QuickResponse.js +34 -0
  67. package/dist/cjs/Message/QuickStarts/FallbackImg.d.ts +13 -0
  68. package/dist/cjs/Message/QuickStarts/FallbackImg.js +34 -0
  69. package/dist/cjs/Message/QuickStarts/QuickStartTile.d.ts +27 -0
  70. package/dist/cjs/Message/QuickStarts/QuickStartTile.js +82 -0
  71. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.d.ts +23 -0
  72. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.js +64 -0
  73. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.d.ts +1 -0
  74. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.js +76 -0
  75. package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.d.ts +11 -0
  76. package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.js +30 -0
  77. package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.d.ts +30 -0
  78. package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.js +77 -0
  79. package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart.d.ts +30 -0
  80. package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart.js +77 -0
  81. package/dist/cjs/Message/QuickStarts/types.d.ts +132 -0
  82. package/dist/cjs/Message/QuickStarts/types.js +17 -0
  83. package/dist/cjs/Message/TableMessage/TableMessage.d.ts +20 -0
  84. package/dist/cjs/Message/TableMessage/TableMessage.js +67 -0
  85. package/dist/cjs/Message/TableMessage/TbodyMessage.d.ts +7 -0
  86. package/dist/cjs/Message/TableMessage/TbodyMessage.js +33 -0
  87. package/dist/cjs/Message/TableMessage/TdMessage.d.ts +5 -0
  88. package/dist/cjs/Message/TableMessage/TdMessage.js +26 -0
  89. package/dist/cjs/Message/TableMessage/ThMessage.d.ts +5 -0
  90. package/dist/cjs/Message/TableMessage/ThMessage.js +26 -0
  91. package/dist/cjs/Message/TableMessage/TheadMessage.d.ts +5 -0
  92. package/dist/cjs/Message/TableMessage/TheadMessage.js +26 -0
  93. package/dist/cjs/Message/TableMessage/TrMessage.d.ts +7 -0
  94. package/dist/cjs/Message/TableMessage/TrMessage.js +37 -0
  95. package/dist/cjs/Message/TextMessage/TextMessage.d.ts +2 -1
  96. package/dist/cjs/Message/TextMessage/TextMessage.js +2 -2
  97. package/dist/cjs/Message/UserFeedback/CloseButton.d.ts +10 -0
  98. package/dist/cjs/Message/UserFeedback/CloseButton.js +14 -0
  99. package/dist/cjs/Message/UserFeedback/UserFeedback.d.ts +39 -0
  100. package/dist/cjs/Message/UserFeedback/UserFeedback.js +54 -0
  101. package/dist/cjs/Message/UserFeedback/UserFeedback.test.d.ts +1 -0
  102. package/dist/cjs/Message/UserFeedback/UserFeedback.test.js +133 -0
  103. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.d.ts +42 -0
  104. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.js +117 -0
  105. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.d.ts +1 -0
  106. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.js +249 -0
  107. package/dist/cjs/MessageBar/AttachButton.js +4 -2
  108. package/dist/cjs/MessageBar/MessageBar.d.ts +11 -4
  109. package/dist/cjs/MessageBar/MessageBar.js +127 -46
  110. package/dist/cjs/MessageBar/MessageBar.test.js +12 -4
  111. package/dist/cjs/MessageBar/MicrophoneButton.d.ts +1 -1
  112. package/dist/cjs/MessageBar/SendButton.js +3 -1
  113. package/dist/cjs/MessageBar/StopButton.js +3 -1
  114. package/dist/cjs/MessageBox/MessageBox.test.d.ts +1 -0
  115. package/dist/cjs/MessageBox/MessageBox.test.js +22 -0
  116. package/dist/cjs/PreviewAttachment/PreviewAttachment.test.d.ts +1 -0
  117. package/dist/cjs/PreviewAttachment/PreviewAttachment.test.js +28 -0
  118. package/dist/cjs/ResponseActions/ResponseActionButton.d.ts +4 -1
  119. package/dist/cjs/ResponseActions/ResponseActionButton.js +21 -6
  120. package/dist/cjs/ResponseActions/ResponseActions.d.ts +8 -2
  121. package/dist/cjs/ResponseActions/ResponseActions.js +7 -7
  122. package/dist/cjs/ResponseActions/ResponseActions.test.js +2 -2
  123. package/dist/cjs/Settings/SettingsForm.test.d.ts +1 -0
  124. package/dist/cjs/Settings/SettingsForm.test.js +26 -0
  125. package/dist/cjs/__mocks__/rehype-external-links.d.ts +2 -0
  126. package/dist/cjs/__mocks__/rehype-external-links.js +4 -0
  127. package/dist/cjs/__mocks__/rehype-sanitize.d.ts +2 -0
  128. package/dist/cjs/__mocks__/rehype-sanitize.js +4 -0
  129. package/dist/cjs/__mocks__/rehype-unwrap-images.d.ts +2 -0
  130. package/dist/cjs/__mocks__/rehype-unwrap-images.js +4 -0
  131. package/dist/cjs/index.d.ts +4 -0
  132. package/dist/cjs/index.js +7 -1
  133. package/dist/cjs/tracking/console_tracking_provider.d.ts +10 -0
  134. package/dist/cjs/tracking/console_tracking_provider.js +27 -0
  135. package/dist/cjs/tracking/index.d.ts +2 -0
  136. package/dist/cjs/tracking/index.js +23 -0
  137. package/dist/cjs/tracking/posthog_tracking_provider.d.ts +9 -0
  138. package/dist/cjs/tracking/posthog_tracking_provider.js +37 -0
  139. package/dist/cjs/tracking/segment_tracking_provider.d.ts +10 -0
  140. package/dist/cjs/tracking/segment_tracking_provider.js +50 -0
  141. package/dist/cjs/tracking/trackingProviderProxy.d.ts +9 -0
  142. package/dist/cjs/tracking/trackingProviderProxy.js +24 -0
  143. package/dist/cjs/tracking/tracking_api.d.ts +8 -0
  144. package/dist/cjs/tracking/tracking_api.js +2 -0
  145. package/dist/cjs/tracking/tracking_registry.d.ts +4 -0
  146. package/dist/cjs/tracking/tracking_registry.js +33 -0
  147. package/dist/cjs/tracking/tracking_spi.d.ts +9 -0
  148. package/dist/cjs/tracking/tracking_spi.js +2 -0
  149. package/dist/cjs/tracking/umami_tracking_provider.d.ts +14 -0
  150. package/dist/cjs/tracking/umami_tracking_provider.js +44 -0
  151. package/dist/css/main.css +438 -147
  152. package/dist/css/main.css.map +1 -1
  153. package/dist/dynamic/Compare/package.json +1 -0
  154. package/dist/dynamic/tracking/package.json +1 -0
  155. package/dist/esm/AttachmentEdit/AttachmentEdit.test.d.ts +1 -0
  156. package/dist/esm/AttachmentEdit/AttachmentEdit.test.js +47 -0
  157. package/dist/esm/Chatbot/Chatbot.d.ts +2 -1
  158. package/dist/esm/Chatbot/Chatbot.js +1 -0
  159. package/dist/esm/Chatbot/Chatbot.test.d.ts +1 -0
  160. package/dist/esm/Chatbot/Chatbot.test.js +23 -0
  161. package/dist/esm/ChatbotAlert/ChatbotAlert.test.d.ts +1 -0
  162. package/dist/esm/ChatbotAlert/ChatbotAlert.test.js +22 -0
  163. package/dist/esm/ChatbotContent/ChatbotContent.test.d.ts +1 -0
  164. package/dist/esm/ChatbotContent/ChatbotContent.test.js +13 -0
  165. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +3 -3
  166. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +3 -1
  167. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +27 -4
  168. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +24 -12
  169. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +99 -3
  170. package/dist/esm/ChatbotConversationHistoryNav/EmptyState.d.ts +11 -0
  171. package/dist/esm/ChatbotConversationHistoryNav/EmptyState.js +22 -0
  172. package/dist/esm/ChatbotConversationHistoryNav/LoadingState.d.ts +4 -0
  173. package/dist/esm/ChatbotConversationHistoryNav/LoadingState.js +38 -0
  174. package/dist/esm/ChatbotFooter/ChatbotFooter.test.d.ts +1 -0
  175. package/dist/esm/ChatbotFooter/ChatbotFooter.test.js +13 -0
  176. package/dist/esm/ChatbotFooter/ChatbotFooternote.test.d.ts +1 -0
  177. package/dist/esm/ChatbotFooter/ChatbotFooternote.test.js +82 -0
  178. package/dist/esm/ChatbotFooter/ChatbotFootnote.d.ts +1 -1
  179. package/dist/esm/ChatbotFooter/ChatbotFootnote.js +1 -1
  180. package/dist/esm/ChatbotHeader/ChatbotHeader.test.d.ts +1 -0
  181. package/dist/esm/ChatbotHeader/ChatbotHeader.test.js +13 -0
  182. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.d.ts +1 -0
  183. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.js +13 -0
  184. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.js +3 -1
  185. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -0
  186. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.js +15 -0
  187. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.d.ts +1 -0
  188. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.js +13 -0
  189. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.js +3 -1
  190. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -0
  191. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.js +15 -0
  192. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +3 -1
  193. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -0
  194. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +38 -0
  195. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +6 -4
  196. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -0
  197. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +36 -0
  198. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.d.ts +3 -1
  199. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.js +4 -2
  200. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +1 -0
  201. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.js +50 -0
  202. package/dist/esm/ChatbotToggle/ChatbotToggle.js +3 -1
  203. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +19 -11
  204. package/dist/esm/Compare/Compare.d.ts +17 -0
  205. package/dist/esm/Compare/Compare.js +43 -0
  206. package/dist/esm/Compare/Compare.test.d.ts +1 -0
  207. package/dist/esm/Compare/Compare.test.js +15 -0
  208. package/dist/esm/Compare/index.d.ts +2 -0
  209. package/dist/esm/Compare/index.js +2 -0
  210. package/dist/esm/Message/ErrorMessage/ErrorMessage.d.ts +4 -0
  211. package/dist/esm/Message/ErrorMessage/ErrorMessage.js +21 -0
  212. package/dist/esm/Message/ImageMessage/ImageMessage.d.ts +4 -0
  213. package/dist/esm/Message/ImageMessage/ImageMessage.js +20 -0
  214. package/dist/esm/Message/LinkMessage/LinkMessage.d.ts +4 -0
  215. package/dist/esm/Message/LinkMessage/LinkMessage.js +25 -0
  216. package/dist/esm/Message/Message.d.ts +49 -8
  217. package/dist/esm/Message/Message.js +68 -16
  218. package/dist/esm/Message/Message.test.js +269 -3
  219. package/dist/esm/Message/QuickResponse/QuickResponse.d.ts +17 -0
  220. package/dist/esm/Message/QuickResponse/QuickResponse.js +27 -0
  221. package/dist/esm/Message/QuickStarts/FallbackImg.d.ts +13 -0
  222. package/dist/esm/Message/QuickStarts/FallbackImg.js +9 -0
  223. package/dist/esm/Message/QuickStarts/QuickStartTile.d.ts +27 -0
  224. package/dist/esm/Message/QuickStarts/QuickStartTile.js +52 -0
  225. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.d.ts +23 -0
  226. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.js +35 -0
  227. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.d.ts +1 -0
  228. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.js +48 -0
  229. package/dist/esm/Message/QuickStarts/QuickStartTileHeader.d.ts +11 -0
  230. package/dist/esm/Message/QuickStarts/QuickStartTileHeader.js +5 -0
  231. package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.d.ts +30 -0
  232. package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.js +74 -0
  233. package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart.d.ts +30 -0
  234. package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart.js +74 -0
  235. package/dist/esm/Message/QuickStarts/types.d.ts +132 -0
  236. package/dist/esm/Message/QuickStarts/types.js +14 -0
  237. package/dist/esm/Message/TableMessage/TableMessage.d.ts +20 -0
  238. package/dist/esm/Message/TableMessage/TableMessage.js +62 -0
  239. package/dist/esm/Message/TableMessage/TbodyMessage.d.ts +7 -0
  240. package/dist/esm/Message/TableMessage/TbodyMessage.js +28 -0
  241. package/dist/esm/Message/TableMessage/TdMessage.d.ts +5 -0
  242. package/dist/esm/Message/TableMessage/TdMessage.js +21 -0
  243. package/dist/esm/Message/TableMessage/ThMessage.d.ts +5 -0
  244. package/dist/esm/Message/TableMessage/ThMessage.js +21 -0
  245. package/dist/esm/Message/TableMessage/TheadMessage.d.ts +5 -0
  246. package/dist/esm/Message/TableMessage/TheadMessage.js +21 -0
  247. package/dist/esm/Message/TableMessage/TrMessage.d.ts +7 -0
  248. package/dist/esm/Message/TableMessage/TrMessage.js +32 -0
  249. package/dist/esm/Message/TextMessage/TextMessage.d.ts +2 -1
  250. package/dist/esm/Message/TextMessage/TextMessage.js +3 -3
  251. package/dist/esm/Message/UserFeedback/CloseButton.d.ts +10 -0
  252. package/dist/esm/Message/UserFeedback/CloseButton.js +9 -0
  253. package/dist/esm/Message/UserFeedback/UserFeedback.d.ts +39 -0
  254. package/dist/esm/Message/UserFeedback/UserFeedback.js +49 -0
  255. package/dist/esm/Message/UserFeedback/UserFeedback.test.d.ts +1 -0
  256. package/dist/esm/Message/UserFeedback/UserFeedback.test.js +128 -0
  257. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.d.ts +42 -0
  258. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.js +112 -0
  259. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.d.ts +1 -0
  260. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.js +244 -0
  261. package/dist/esm/MessageBar/AttachButton.js +4 -2
  262. package/dist/esm/MessageBar/MessageBar.d.ts +11 -4
  263. package/dist/esm/MessageBar/MessageBar.js +127 -46
  264. package/dist/esm/MessageBar/MessageBar.test.js +12 -4
  265. package/dist/esm/MessageBar/MicrophoneButton.d.ts +1 -1
  266. package/dist/esm/MessageBar/SendButton.js +3 -1
  267. package/dist/esm/MessageBar/StopButton.js +3 -1
  268. package/dist/esm/MessageBox/MessageBox.test.d.ts +1 -0
  269. package/dist/esm/MessageBox/MessageBox.test.js +17 -0
  270. package/dist/esm/PreviewAttachment/PreviewAttachment.test.d.ts +1 -0
  271. package/dist/esm/PreviewAttachment/PreviewAttachment.test.js +23 -0
  272. package/dist/esm/ResponseActions/ResponseActionButton.d.ts +4 -1
  273. package/dist/esm/ResponseActions/ResponseActionButton.js +18 -3
  274. package/dist/esm/ResponseActions/ResponseActions.d.ts +8 -2
  275. package/dist/esm/ResponseActions/ResponseActions.js +7 -7
  276. package/dist/esm/ResponseActions/ResponseActions.test.js +2 -2
  277. package/dist/esm/Settings/SettingsForm.test.d.ts +1 -0
  278. package/dist/esm/Settings/SettingsForm.test.js +21 -0
  279. package/dist/esm/__mocks__/rehype-external-links.d.ts +2 -0
  280. package/dist/esm/__mocks__/rehype-external-links.js +2 -0
  281. package/dist/esm/__mocks__/rehype-sanitize.d.ts +2 -0
  282. package/dist/esm/__mocks__/rehype-sanitize.js +2 -0
  283. package/dist/esm/__mocks__/rehype-unwrap-images.d.ts +2 -0
  284. package/dist/esm/__mocks__/rehype-unwrap-images.js +2 -0
  285. package/dist/esm/index.d.ts +4 -0
  286. package/dist/esm/index.js +4 -0
  287. package/dist/esm/tracking/console_tracking_provider.d.ts +10 -0
  288. package/dist/esm/tracking/console_tracking_provider.js +23 -0
  289. package/dist/esm/tracking/index.d.ts +2 -0
  290. package/dist/esm/tracking/index.js +2 -0
  291. package/dist/esm/tracking/posthog_tracking_provider.d.ts +9 -0
  292. package/dist/esm/tracking/posthog_tracking_provider.js +33 -0
  293. package/dist/esm/tracking/segment_tracking_provider.d.ts +10 -0
  294. package/dist/esm/tracking/segment_tracking_provider.js +46 -0
  295. package/dist/esm/tracking/trackingProviderProxy.d.ts +9 -0
  296. package/dist/esm/tracking/trackingProviderProxy.js +22 -0
  297. package/dist/esm/tracking/tracking_api.d.ts +8 -0
  298. package/dist/esm/tracking/tracking_api.js +1 -0
  299. package/dist/esm/tracking/tracking_registry.d.ts +4 -0
  300. package/dist/esm/tracking/tracking_registry.js +26 -0
  301. package/dist/esm/tracking/tracking_spi.d.ts +9 -0
  302. package/dist/esm/tracking/tracking_spi.js +1 -0
  303. package/dist/esm/tracking/umami_tracking_provider.d.ts +14 -0
  304. package/dist/esm/tracking/umami_tracking_provider.js +40 -0
  305. package/dist/tsconfig.tsbuildinfo +1 -1
  306. package/package.json +8 -9
  307. package/patternfly-docs/content/extensions/chatbot/about-chatbot.md +8 -2
  308. package/patternfly-docs/content/extensions/chatbot/design-guidelines.md +192 -15
  309. package/patternfly-docs/content/extensions/chatbot/examples/Analytics/Analytics.md +219 -0
  310. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentError.tsx +2 -2
  311. package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +214 -12
  312. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDropZone.tsx +2 -1
  313. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithAttachment.tsx +2 -2
  314. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithCustomResponseActions.tsx +1 -1
  315. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedback.tsx +71 -0
  316. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedbackTimeout.tsx +27 -0
  317. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickResponses.tsx +1 -1
  318. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickStart.tsx +31 -0
  319. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithResponseActions.tsx +1 -1
  320. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithSources.tsx +1 -1
  321. package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +61 -9
  322. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +244 -14
  323. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessageWithExtraContent.tsx +54 -0
  324. package/patternfly-docs/content/extensions/chatbot/examples/Messages/explore-pipeline-quickstart.ts +65 -0
  325. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFooter.tsx +1 -1
  326. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFootnote.tsx +5 -5
  327. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderBasic.tsx +1 -1
  328. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawer.tsx +36 -3
  329. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerNavigation.tsx +67 -0
  330. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerResizable.tsx +94 -0
  331. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarAttach.tsx +1 -1
  332. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomeInteraction.tsx +1 -1
  333. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomePrompt.tsx +7 -7
  334. package/patternfly-docs/content/extensions/chatbot/examples/UI/SquareChatbotToggle.tsx +1 -1
  335. package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +21 -6
  336. package/patternfly-docs/content/extensions/chatbot/examples/demos/AttachmentDemos.md +14 -0
  337. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +39 -1
  338. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.tsx +48 -35
  339. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachment.tsx +2 -2
  340. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachmentMenu.tsx +3 -3
  341. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotInDrawer.tsx +453 -0
  342. package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedChatbot.tsx +11 -11
  343. package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedComparisonChatbot.tsx +206 -0
  344. package/patternfly-docs/content/extensions/chatbot/examples/demos/Feedback.tsx +104 -0
  345. package/patternfly-docs/content/extensions/chatbot/img/ai-action-inpage.svg +85 -0
  346. package/patternfly-docs/content/extensions/chatbot/img/ai-action-message.svg +63 -0
  347. package/patternfly-docs/content/extensions/chatbot/img/analytics-example.svg +127 -0
  348. package/patternfly-docs/content/extensions/chatbot/img/attached-file.svg +24 -29
  349. package/patternfly-docs/content/extensions/chatbot/img/attachment-menu.svg +4 -4
  350. package/patternfly-docs/content/extensions/chatbot/img/attachment-unsent.svg +30 -58
  351. package/patternfly-docs/content/extensions/chatbot/img/chatbot-analytics.svg +51 -0
  352. package/patternfly-docs/content/extensions/chatbot/img/chatbot-elements.svg +11 -12
  353. package/patternfly-docs/content/extensions/chatbot/img/chatbot-quickstarts-tile.svg +58 -0
  354. package/patternfly-docs/content/extensions/chatbot/img/chatbot-settings.svg +83 -0
  355. package/patternfly-docs/content/extensions/chatbot/img/comparison.svg +45 -0
  356. package/patternfly-docs/content/extensions/chatbot/img/conversation-history.svg +6 -29
  357. package/patternfly-docs/content/extensions/chatbot/img/docked.svg +259 -241
  358. package/patternfly-docs/content/extensions/chatbot/img/drawer.svg +255 -0
  359. package/patternfly-docs/content/extensions/chatbot/img/error-state.svg +30 -0
  360. package/patternfly-docs/content/extensions/chatbot/img/feedback-form.svg +88 -0
  361. package/patternfly-docs/content/extensions/chatbot/img/footnote.svg +1 -1
  362. package/patternfly-docs/content/extensions/chatbot/img/fullscreen.svg +25 -16
  363. package/patternfly-docs/content/extensions/chatbot/img/listening-pulse.svg +22 -0
  364. package/patternfly-docs/content/extensions/chatbot/img/listening.svg +1 -1
  365. package/patternfly-docs/content/extensions/chatbot/img/loading-state.svg +28 -0
  366. package/patternfly-docs/content/extensions/chatbot/img/masthead-toggle-notification.svg +49 -0
  367. package/patternfly-docs/content/extensions/chatbot/img/masthead-toggle.svg +75 -0
  368. package/patternfly-docs/content/extensions/chatbot/img/message-bar-elements.svg +3 -3
  369. package/patternfly-docs/content/extensions/chatbot/img/message-elements.svg +84 -142
  370. package/patternfly-docs/content/extensions/chatbot/img/message-feedback.svg +52 -0
  371. package/patternfly-docs/content/extensions/chatbot/img/message-responses.svg +54 -0
  372. package/patternfly-docs/content/extensions/chatbot/img/new-chat-emptystate.svg +27 -0
  373. package/patternfly-docs/content/extensions/chatbot/img/no-results-emptystate.svg +27 -0
  374. package/patternfly-docs/content/extensions/chatbot/img/overlay.svg +54 -39
  375. package/patternfly-docs/content/extensions/chatbot/img/posthog.svg +30 -0
  376. package/patternfly-docs/content/extensions/chatbot/img/segment.svg +36 -0
  377. package/patternfly-docs/content/extensions/chatbot/img/settings-menu.svg +122 -0
  378. package/patternfly-docs/content/extensions/chatbot/img/source-tile.svg +62 -0
  379. package/patternfly-docs/content/extensions/chatbot/img/thank-you-card.svg +81 -0
  380. package/patternfly-docs/content/extensions/chatbot/img/toggle-customizations.svg +12 -0
  381. package/patternfly-docs/content/extensions/chatbot/img/toggle-tooltips.svg +38 -0
  382. package/patternfly-docs/content/extensions/chatbot/img/umami.svg +30 -0
  383. package/patternfly-docs/content/extensions/chatbot/img/welcome-elements.svg +82 -0
  384. package/patternfly-docs/content/extensions/chatbot/img/welcome-message.svg +94 -0
  385. package/src/AttachMenu/AttachMenu.scss +1 -1
  386. package/src/AttachmentEdit/AttachmentEdit.test.tsx +55 -0
  387. package/src/Chatbot/Chatbot.scss +20 -1
  388. package/src/Chatbot/Chatbot.test.tsx +31 -0
  389. package/src/Chatbot/Chatbot.tsx +2 -1
  390. package/src/ChatbotAlert/ChatbotAlert.test.tsx +31 -0
  391. package/src/ChatbotContent/ChatbotContent.scss +1 -0
  392. package/src/ChatbotContent/ChatbotContent.test.tsx +15 -0
  393. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.tsx +10 -4
  394. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.scss +24 -1
  395. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +242 -3
  396. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +94 -26
  397. package/src/ChatbotConversationHistoryNav/EmptyState.tsx +44 -0
  398. package/src/ChatbotConversationHistoryNav/LoadingState.tsx +38 -0
  399. package/src/ChatbotFooter/ChatbotFooter.scss +8 -4
  400. package/src/ChatbotFooter/ChatbotFooter.test.tsx +15 -0
  401. package/src/ChatbotFooter/ChatbotFooternote.test.tsx +84 -0
  402. package/src/ChatbotFooter/ChatbotFootnote.tsx +2 -2
  403. package/src/ChatbotHeader/ChatbotHeader.scss +5 -6
  404. package/src/ChatbotHeader/ChatbotHeader.test.tsx +15 -0
  405. package/src/ChatbotHeader/ChatbotHeaderActions.test.tsx +17 -0
  406. package/src/ChatbotHeader/ChatbotHeaderCloseButton.test.tsx +20 -0
  407. package/src/ChatbotHeader/ChatbotHeaderCloseButton.tsx +7 -1
  408. package/src/ChatbotHeader/ChatbotHeaderMain.test.tsx +17 -0
  409. package/src/ChatbotHeader/ChatbotHeaderMenu.test.tsx +19 -0
  410. package/src/ChatbotHeader/ChatbotHeaderMenu.tsx +7 -1
  411. package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.tsx +45 -0
  412. package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.tsx +8 -1
  413. package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.tsx +43 -0
  414. package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.tsx +11 -4
  415. package/src/ChatbotHeader/ChatbotHeaderTitle.test.tsx +75 -0
  416. package/src/ChatbotHeader/ChatbotHeaderTitle.tsx +7 -2
  417. package/src/ChatbotModal/ChatbotModal.scss +12 -12
  418. package/src/ChatbotToggle/ChatbotToggle.tsx +6 -1
  419. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.scss +2 -0
  420. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.tsx +26 -18
  421. package/src/ChatbotWelcomePrompt/__snapshots__/ChatbotWelcomePrompt.test.tsx.snap +2 -2
  422. package/src/CodeModal/CodeModal.scss +7 -4
  423. package/src/Compare/Compare.scss +72 -0
  424. package/src/Compare/Compare.test.tsx +31 -0
  425. package/src/Compare/Compare.tsx +98 -0
  426. package/src/Compare/index.ts +2 -0
  427. package/src/FileDetails/FileDetails.scss +1 -1
  428. package/src/FileDetailsLabel/FileDetailsLabel.scss +2 -2
  429. package/src/Message/CodeBlockMessage/CodeBlockMessage.scss +4 -4
  430. package/src/Message/ErrorMessage/ErrorMessage.tsx +14 -0
  431. package/src/Message/ImageMessage/ImageMessage.scss +9 -0
  432. package/src/Message/ImageMessage/ImageMessage.tsx +14 -0
  433. package/src/Message/LinkMessage/LinkMessage.tsx +34 -0
  434. package/src/Message/ListMessage/ListMessage.scss +6 -6
  435. package/src/Message/Message.scss +4 -26
  436. package/src/Message/Message.test.tsx +367 -3
  437. package/src/Message/Message.tsx +157 -31
  438. package/src/Message/MessageLoading.scss +2 -2
  439. package/src/Message/QuickResponse/QuickResponse.scss +33 -0
  440. package/src/Message/QuickResponse/QuickResponse.tsx +54 -0
  441. package/src/Message/QuickStarts/FallbackImg.tsx +24 -0
  442. package/src/Message/QuickStarts/QuickStartTile.scss +24 -0
  443. package/src/Message/QuickStarts/QuickStartTile.tsx +147 -0
  444. package/src/Message/QuickStarts/QuickStartTileDescription.test.tsx +57 -0
  445. package/src/Message/QuickStarts/QuickStartTileDescription.tsx +81 -0
  446. package/src/Message/QuickStarts/QuickStartTileHeader.tsx +21 -0
  447. package/src/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.ts +75 -0
  448. package/src/Message/QuickStarts/monitor-sampleapp-quickstart.ts +75 -0
  449. package/src/Message/QuickStarts/types.ts +154 -0
  450. package/src/Message/TableMessage/TableMessage.scss +23 -0
  451. package/src/Message/TableMessage/TableMessage.tsx +83 -0
  452. package/src/Message/TableMessage/TbodyMessage.tsx +20 -0
  453. package/src/Message/TableMessage/TdMessage.tsx +11 -0
  454. package/src/Message/TableMessage/ThMessage.tsx +11 -0
  455. package/src/Message/TableMessage/TheadMessage.tsx +11 -0
  456. package/src/Message/TableMessage/TrMessage.tsx +27 -0
  457. package/src/Message/TextMessage/TextMessage.scss +21 -12
  458. package/src/Message/TextMessage/TextMessage.tsx +3 -3
  459. package/src/Message/UserFeedback/CloseButton.tsx +21 -0
  460. package/src/Message/UserFeedback/UserFeedback.scss +53 -0
  461. package/src/Message/UserFeedback/UserFeedback.test.tsx +236 -0
  462. package/src/Message/UserFeedback/UserFeedback.tsx +128 -0
  463. package/src/Message/UserFeedback/UserFeedbackComplete.test.tsx +255 -0
  464. package/src/Message/UserFeedback/UserFeedbackComplete.tsx +211 -0
  465. package/src/MessageBar/AttachButton.scss +19 -3
  466. package/src/MessageBar/AttachButton.tsx +3 -1
  467. package/src/MessageBar/MessageBar.scss +58 -24
  468. package/src/MessageBar/MessageBar.test.tsx +12 -4
  469. package/src/MessageBar/MessageBar.tsx +164 -65
  470. package/src/MessageBar/MicrophoneButton.scss +8 -8
  471. package/src/MessageBar/MicrophoneButton.tsx +1 -1
  472. package/src/MessageBar/SendButton.tsx +2 -0
  473. package/src/MessageBar/StopButton.scss +17 -3
  474. package/src/MessageBar/StopButton.tsx +2 -0
  475. package/src/MessageBox/JumpButton.scss +6 -6
  476. package/src/MessageBox/MessageBox.scss +1 -0
  477. package/src/MessageBox/MessageBox.test.tsx +26 -0
  478. package/src/PreviewAttachment/PreviewAttachment.test.tsx +51 -0
  479. package/src/ResponseActions/ResponseActionButton.tsx +14 -2
  480. package/src/ResponseActions/ResponseActions.scss +2 -2
  481. package/src/ResponseActions/ResponseActions.test.tsx +4 -2
  482. package/src/ResponseActions/ResponseActions.tsx +26 -2
  483. package/src/Settings/Settings.scss +2 -2
  484. package/src/Settings/SettingsForm.test.tsx +28 -0
  485. package/src/SourceDetailsMenuItem/SourceDetailsMenuItem.scss +2 -2
  486. package/src/SourcesCard/SourcesCard.scss +9 -3
  487. package/src/TermsOfUse/TermsOfUse.scss +1 -1
  488. package/src/__mocks__/rehype-external-links.ts +3 -0
  489. package/src/__mocks__/rehype-sanitize.ts +3 -0
  490. package/src/__mocks__/rehype-unwrap-images.tsx +3 -0
  491. package/src/index.ts +6 -0
  492. package/src/main.scss +6 -6
  493. package/src/tracking/console_tracking_provider.ts +30 -0
  494. package/src/tracking/index.ts +3 -0
  495. package/src/tracking/posthog_tracking_provider.ts +42 -0
  496. package/src/tracking/segment_tracking_provider.ts +62 -0
  497. package/src/tracking/trackingProviderProxy.ts +28 -0
  498. package/src/tracking/tracking_api.ts +11 -0
  499. package/src/tracking/tracking_registry.ts +33 -0
  500. package/src/tracking/tracking_spi.ts +14 -0
  501. package/src/tracking/umami_tracking_provider.ts +54 -0
@@ -4,6 +4,37 @@ import { fireEvent, render, screen, waitFor } from '@testing-library/react';
4
4
 
5
5
  import { ChatbotDisplayMode } from '../Chatbot/Chatbot';
6
6
  import ChatbotConversationHistoryNav, { Conversation } from './ChatbotConversationHistoryNav';
7
+ import { EmptyStateStatus, Spinner } from '@patternfly/react-core';
8
+
9
+ const ERROR = {
10
+ bodyText: (
11
+ <>
12
+ To try again, check your connection and reload this page. If the issue persists,{' '}
13
+ <a href="">contact the support team</a>.
14
+ </>
15
+ ),
16
+ buttonText: 'Reload',
17
+ buttonIcon: <Spinner size="sm" />,
18
+ hasButton: true,
19
+ titleText: 'Could not load chat history',
20
+ status: EmptyStateStatus.danger,
21
+ onClick: () => alert('Clicked Reload')
22
+ };
23
+
24
+ const ERROR_WITHOUT_BUTTON = {
25
+ bodyText: (
26
+ <>
27
+ To try again, check your connection and reload this page. If the issue persists,{' '}
28
+ <a href="">contact the support team</a>.
29
+ </>
30
+ ),
31
+ buttonText: 'Reload',
32
+ buttonIcon: <Spinner size="sm" />,
33
+ hasButton: false,
34
+ titleText: 'Could not load chat history',
35
+ status: EmptyStateStatus.danger,
36
+ onClick: () => alert('Clicked Reload')
37
+ };
7
38
 
8
39
  describe('ChatbotConversationHistoryNav', () => {
9
40
  const onDrawerToggle = jest.fn();
@@ -11,7 +42,7 @@ describe('ChatbotConversationHistoryNav', () => {
11
42
  const initialConversations: Conversation[] = [
12
43
  {
13
44
  id: '1',
14
- text: 'Lightspeed documentation'
45
+ text: 'ChatBot documentation'
15
46
  }
16
47
  ];
17
48
 
@@ -25,7 +56,7 @@ describe('ChatbotConversationHistoryNav', () => {
25
56
  conversations={initialConversations}
26
57
  />
27
58
  );
28
- expect(screen.queryByText('Lightspeed documentation')).toBeInTheDocument();
59
+ expect(screen.queryByText('ChatBot documentation')).toBeInTheDocument();
29
60
  });
30
61
 
31
62
  it('should display the conversations for grouped conversations', () => {
@@ -120,7 +151,215 @@ describe('ChatbotConversationHistoryNav', () => {
120
151
  });
121
152
 
122
153
  waitFor(() => {
123
- expect(screen.queryByText('Lightspeed documentation')).not.toBeInTheDocument();
154
+ expect(screen.queryByText('ChatBot documentation')).not.toBeInTheDocument();
124
155
  });
125
156
  });
157
+
158
+ it('should be resizable', () => {
159
+ render(
160
+ <ChatbotConversationHistoryNav
161
+ onDrawerToggle={onDrawerToggle}
162
+ isDrawerOpen={true}
163
+ displayMode={ChatbotDisplayMode.fullscreen}
164
+ setIsDrawerOpen={jest.fn()}
165
+ conversations={initialConversations}
166
+ drawerPanelContentProps={{ isResizable: true, minSize: '200px' }}
167
+ />
168
+ );
169
+ expect(screen.getByRole('dialog', { name: /Resize/i })).toBeTruthy();
170
+ expect(screen.getByRole('separator', { name: /Resize/i })).toBeTruthy();
171
+ expect(screen.getByRole('dialog', { name: /Resize/i })).toHaveAttribute(
172
+ 'style',
173
+ '--pf-v6-c-drawer__panel--md--FlexBasis: 384px; --pf-v6-c-drawer__panel--md--FlexBasis--min: 200px;'
174
+ );
175
+ });
176
+
177
+ it('should accept drawerContentProps', () => {
178
+ const { container } = render(
179
+ <ChatbotConversationHistoryNav
180
+ onDrawerToggle={onDrawerToggle}
181
+ isDrawerOpen={true}
182
+ displayMode={ChatbotDisplayMode.fullscreen}
183
+ setIsDrawerOpen={jest.fn()}
184
+ conversations={initialConversations}
185
+ drawerContentProps={{ className: 'test' }}
186
+ />
187
+ );
188
+ const element = container.querySelector('.test');
189
+ expect(element).toBeInTheDocument();
190
+ });
191
+
192
+ it('should accept drawerContentBodyProps', () => {
193
+ const { container } = render(
194
+ <ChatbotConversationHistoryNav
195
+ onDrawerToggle={onDrawerToggle}
196
+ isDrawerOpen={true}
197
+ displayMode={ChatbotDisplayMode.fullscreen}
198
+ setIsDrawerOpen={jest.fn()}
199
+ conversations={initialConversations}
200
+ drawerContentBodyProps={{ className: 'test' }}
201
+ />
202
+ );
203
+ const element = container.querySelector('.test');
204
+ expect(element).toBeInTheDocument();
205
+ });
206
+
207
+ it('should accept drawerHeadProps', () => {
208
+ const { container } = render(
209
+ <ChatbotConversationHistoryNav
210
+ onDrawerToggle={onDrawerToggle}
211
+ isDrawerOpen={true}
212
+ displayMode={ChatbotDisplayMode.fullscreen}
213
+ setIsDrawerOpen={jest.fn()}
214
+ conversations={initialConversations}
215
+ drawerHeadProps={{ className: 'test' }}
216
+ />
217
+ );
218
+ const element = container.querySelector('.test');
219
+ expect(element).toBeInTheDocument();
220
+ });
221
+
222
+ it('should accept drawerActionsProps', () => {
223
+ const { container } = render(
224
+ <ChatbotConversationHistoryNav
225
+ onDrawerToggle={onDrawerToggle}
226
+ isDrawerOpen={true}
227
+ displayMode={ChatbotDisplayMode.fullscreen}
228
+ setIsDrawerOpen={jest.fn()}
229
+ conversations={initialConversations}
230
+ drawerActionsProps={{ className: 'test' }}
231
+ />
232
+ );
233
+ const element = container.querySelector('.test');
234
+ expect(element).toBeInTheDocument();
235
+ });
236
+
237
+ it('should accept drawerCloseButtonProps', () => {
238
+ const { container } = render(
239
+ <ChatbotConversationHistoryNav
240
+ onDrawerToggle={onDrawerToggle}
241
+ isDrawerOpen={true}
242
+ displayMode={ChatbotDisplayMode.fullscreen}
243
+ setIsDrawerOpen={jest.fn()}
244
+ conversations={initialConversations}
245
+ drawerCloseButtonProps={{ className: 'test' }}
246
+ />
247
+ );
248
+ const element = container.querySelector('.test');
249
+ expect(element).toBeInTheDocument();
250
+ });
251
+
252
+ it('should accept drawerPanelBodyProps', () => {
253
+ const { container } = render(
254
+ <ChatbotConversationHistoryNav
255
+ onDrawerToggle={onDrawerToggle}
256
+ isDrawerOpen={true}
257
+ displayMode={ChatbotDisplayMode.fullscreen}
258
+ setIsDrawerOpen={jest.fn()}
259
+ conversations={initialConversations}
260
+ drawerPanelBodyProps={{ className: 'test' }}
261
+ />
262
+ );
263
+ const element = container.querySelector('.test');
264
+ expect(element).toBeInTheDocument();
265
+ });
266
+
267
+ it('should show loading state if triggered', () => {
268
+ render(
269
+ <ChatbotConversationHistoryNav
270
+ onDrawerToggle={onDrawerToggle}
271
+ isDrawerOpen={true}
272
+ displayMode={ChatbotDisplayMode.fullscreen}
273
+ setIsDrawerOpen={jest.fn()}
274
+ reverseButtonOrder={false}
275
+ handleTextInputChange={jest.fn()}
276
+ conversations={initialConversations}
277
+ isLoading
278
+ />
279
+ );
280
+ expect(screen.getByRole('dialog', { name: /Loading chatbot conversation history/i })).toBeTruthy();
281
+ expect(screen.getByRole('button', { name: /Close drawer panel/i })).toBeTruthy();
282
+ });
283
+
284
+ it('should pass alternative aria label to loading state', () => {
285
+ render(
286
+ <ChatbotConversationHistoryNav
287
+ onDrawerToggle={onDrawerToggle}
288
+ isDrawerOpen={true}
289
+ displayMode={ChatbotDisplayMode.fullscreen}
290
+ setIsDrawerOpen={jest.fn()}
291
+ reverseButtonOrder={false}
292
+ handleTextInputChange={jest.fn()}
293
+ conversations={initialConversations}
294
+ isLoading
295
+ loadingState={{ screenreaderText: 'I am a test' }}
296
+ />
297
+ );
298
+ expect(screen.getByRole('dialog', { name: /I am a test/i })).toBeTruthy();
299
+ });
300
+
301
+ it('should accept errorState', () => {
302
+ render(
303
+ <ChatbotConversationHistoryNav
304
+ onDrawerToggle={onDrawerToggle}
305
+ isDrawerOpen={true}
306
+ displayMode={ChatbotDisplayMode.fullscreen}
307
+ setIsDrawerOpen={jest.fn()}
308
+ reverseButtonOrder={false}
309
+ handleTextInputChange={jest.fn()}
310
+ conversations={initialConversations}
311
+ errorState={ERROR}
312
+ />
313
+ );
314
+ expect(
315
+ screen.getByRole('dialog', {
316
+ name: /Could not load chat history To try again, check your connection and reload this page. If the issue persists, contact the support team . Loading... Reload/i
317
+ })
318
+ ).toBeTruthy();
319
+ expect(screen.getByRole('button', { name: /Close drawer panel/i })).toBeTruthy();
320
+ expect(screen.getByRole('button', { name: /Loading... Reload/i })).toBeTruthy();
321
+ expect(screen.getByRole('textbox', { name: /Filter menu items/i })).toBeTruthy();
322
+ expect(screen.getByRole('heading', { name: /Could not load chat history/i })).toBeTruthy();
323
+ });
324
+
325
+ it('should accept errorState without button', () => {
326
+ render(
327
+ <ChatbotConversationHistoryNav
328
+ onDrawerToggle={onDrawerToggle}
329
+ isDrawerOpen={true}
330
+ displayMode={ChatbotDisplayMode.fullscreen}
331
+ setIsDrawerOpen={jest.fn()}
332
+ reverseButtonOrder={false}
333
+ handleTextInputChange={jest.fn()}
334
+ conversations={initialConversations}
335
+ errorState={ERROR_WITHOUT_BUTTON}
336
+ />
337
+ );
338
+ expect(
339
+ screen.getByRole('dialog', {
340
+ name: /Could not load chat history To try again, check your connection and reload this page. If the issue persists, contact the support team ./i
341
+ })
342
+ ).toBeTruthy();
343
+ expect(screen.getByRole('button', { name: /Close drawer panel/i })).toBeTruthy();
344
+ expect(screen.queryByRole('button', { name: /Loading... Reload/i })).toBeFalsy();
345
+ expect(screen.getByRole('textbox', { name: /Filter menu items/i })).toBeTruthy();
346
+ expect(screen.getByRole('heading', { name: /Could not load chat history/i })).toBeTruthy();
347
+ });
348
+
349
+ it('should show loading state over error state if both are supplied', () => {
350
+ render(
351
+ <ChatbotConversationHistoryNav
352
+ onDrawerToggle={onDrawerToggle}
353
+ isDrawerOpen={true}
354
+ displayMode={ChatbotDisplayMode.fullscreen}
355
+ setIsDrawerOpen={jest.fn()}
356
+ reverseButtonOrder={false}
357
+ handleTextInputChange={jest.fn()}
358
+ conversations={initialConversations}
359
+ isLoading
360
+ errorState={ERROR}
361
+ />
362
+ );
363
+ expect(screen.getByRole('dialog', { name: /Loading/i })).toBeTruthy();
364
+ });
126
365
  });
@@ -21,12 +21,23 @@ import {
21
21
  MenuGroup,
22
22
  MenuItem,
23
23
  MenuContent,
24
- MenuItemProps
24
+ MenuItemProps,
25
+ MenuProps,
26
+ DrawerPanelContentProps,
27
+ DrawerContentProps,
28
+ DrawerContentBodyProps,
29
+ DrawerHeadProps,
30
+ DrawerActionsProps,
31
+ DrawerCloseButtonProps,
32
+ DrawerPanelBodyProps,
33
+ SkeletonProps
25
34
  } from '@patternfly/react-core';
26
35
 
27
36
  import { OutlinedCommentAltIcon } from '@patternfly/react-icons';
28
37
  import { ChatbotDisplayMode } from '../Chatbot/Chatbot';
29
38
  import ConversationHistoryDropdown from './ChatbotConversationHistoryDropdown';
39
+ import LoadingState from './LoadingState';
40
+ import HistoryEmptyState, { HistoryEmptyStateProps } from './EmptyState';
30
41
 
31
42
  export interface Conversation {
32
43
  /** Conversation id */
@@ -37,11 +48,11 @@ export interface Conversation {
37
48
  noIcon?: boolean;
38
49
  /** Conversation */
39
50
  text: string;
40
- /** Dropdown items rendered in conversation options dropdown */
51
+ /** Dropdown items rendered in conversation settings dropdown */
41
52
  menuItems?: React.ReactNode;
42
- /** Optional classname applied to conversation options dropdown */
53
+ /** Optional classname applied to conversation settings dropdown */
43
54
  menuClassName?: string;
44
- /** Tooltip content and aria-label applied to conversation options dropdown */
55
+ /** Tooltip content and aria-label applied to conversation settings dropdown */
45
56
  label?: string;
46
57
  /** Callback for when user selects item. */
47
58
  onSelect?: (event?: React.MouseEvent, value?: string | number) => void;
@@ -79,6 +90,28 @@ export interface ChatbotConversationHistoryNavProps extends DrawerProps {
79
90
  reverseButtonOrder?: boolean;
80
91
  /** Custom test id for the drawer actions */
81
92
  drawerActionsTestId?: string;
93
+ /** Additional props applied to menu */
94
+ menuProps?: MenuProps;
95
+ /** Additional props applied to panel */
96
+ drawerPanelContentProps?: DrawerPanelContentProps;
97
+ /** Additional props applied to drawer content */
98
+ drawerContentProps?: Omit<DrawerContentProps, 'panelContent'>;
99
+ /** Additional props applied to drawer content body */
100
+ drawerContentBodyProps?: DrawerContentBodyProps;
101
+ /** Additional props applied to drawer head */
102
+ drawerHeadProps?: DrawerHeadProps;
103
+ /** Additional props applied to drawer actions */
104
+ drawerActionsProps?: DrawerActionsProps;
105
+ /** Additional props applied to drawer close button */
106
+ drawerCloseButtonProps?: DrawerCloseButtonProps;
107
+ /** Additional props appleid to drawer panel body */
108
+ drawerPanelBodyProps?: DrawerPanelBodyProps;
109
+ /** Whether to show drawer loading state */
110
+ isLoading?: boolean;
111
+ /** Additional props for loading state */
112
+ loadingState?: SkeletonProps;
113
+ /** Content to show in error state. Error state will appear once content is passed in. */
114
+ errorState?: HistoryEmptyStateProps;
82
115
  }
83
116
 
84
117
  export const ChatbotConversationHistoryNav: React.FunctionComponent<ChatbotConversationHistoryNavProps> = ({
@@ -91,12 +124,23 @@ export const ChatbotConversationHistoryNav: React.FunctionComponent<ChatbotConve
91
124
  newChatButtonText = 'New chat',
92
125
  drawerContent,
93
126
  onNewChat,
94
- searchInputPlaceholder = 'Search...',
127
+ searchInputPlaceholder = 'Search previous conversations...',
95
128
  searchInputAriaLabel = 'Filter menu items',
96
129
  handleTextInputChange,
97
130
  displayMode,
98
131
  reverseButtonOrder = false,
99
132
  drawerActionsTestId = 'chatbot-nav-drawer-actions',
133
+ menuProps,
134
+ drawerPanelContentProps,
135
+ drawerContentProps,
136
+ drawerContentBodyProps,
137
+ drawerHeadProps,
138
+ drawerActionsProps,
139
+ drawerCloseButtonProps,
140
+ drawerPanelBodyProps,
141
+ isLoading,
142
+ loadingState,
143
+ errorState,
100
144
  ...props
101
145
  }: ChatbotConversationHistoryNavProps) => {
102
146
  const drawerRef = React.useRef<HTMLDivElement>(null);
@@ -162,23 +206,19 @@ export const ChatbotConversationHistoryNav: React.FunctionComponent<ChatbotConve
162
206
  // Menu Content
163
207
  // - Consumers should pass an array to <Chatbot> of the list of conversations
164
208
  // - Groups could be optional, but items need to be ordered by date
165
- const menuContent = (
166
- <Menu isPlain onSelect={onSelectActiveItem} activeItemId={activeItemId}>
167
- <MenuContent>{buildMenu()}</MenuContent>
168
- </Menu>
169
- );
209
+ const renderMenuContent = () => {
210
+ if (errorState) {
211
+ return <HistoryEmptyState {...errorState} />;
212
+ }
213
+ return (
214
+ <Menu isPlain onSelect={onSelectActiveItem} activeItemId={activeItemId} {...menuProps}>
215
+ <MenuContent>{buildMenu()}</MenuContent>
216
+ </Menu>
217
+ );
218
+ };
170
219
 
171
- const panelContent = (
172
- <DrawerPanelContent focusTrap={{ enabled: true }} minSize="384px" maxSize="384px">
173
- <DrawerHead>
174
- <DrawerActions
175
- data-testid={drawerActionsTestId}
176
- className={reverseButtonOrder ? 'pf-v6-c-drawer__actions--reversed' : ''}
177
- >
178
- <DrawerCloseButton onClick={onDrawerToggle} />
179
- {onNewChat && <Button onClick={onNewChat}>{newChatButtonText}</Button>}
180
- </DrawerActions>
181
- </DrawerHead>
220
+ const renderDrawerContent = () => (
221
+ <>
182
222
  {handleTextInputChange && (
183
223
  <div className="pf-chatbot__input">
184
224
  <SearchInput
@@ -188,10 +228,38 @@ export const ChatbotConversationHistoryNav: React.FunctionComponent<ChatbotConve
188
228
  />
189
229
  </div>
190
230
  )}
191
- <DrawerPanelBody>{menuContent}</DrawerPanelBody>
192
- </DrawerPanelContent>
231
+ <DrawerPanelBody {...drawerPanelBodyProps}>{renderMenuContent()}</DrawerPanelBody>
232
+ </>
193
233
  );
194
234
 
235
+ const renderPanelContent = () => {
236
+ const drawer = (
237
+ <>
238
+ <DrawerHead {...drawerHeadProps}>
239
+ <DrawerActions
240
+ data-testid={drawerActionsTestId}
241
+ className={reverseButtonOrder ? 'pf-v6-c-drawer__actions--reversed' : ''}
242
+ {...drawerActionsProps}
243
+ >
244
+ <DrawerCloseButton onClick={onDrawerToggle} {...drawerCloseButtonProps} />
245
+ {onNewChat && <Button onClick={onNewChat}>{newChatButtonText}</Button>}
246
+ </DrawerActions>
247
+ </DrawerHead>
248
+ {isLoading ? <LoadingState {...loadingState} /> : renderDrawerContent()}
249
+ </>
250
+ );
251
+ return (
252
+ <DrawerPanelContent
253
+ aria-live="polite"
254
+ focusTrap={{ enabled: true }}
255
+ defaultSize="384px"
256
+ {...drawerPanelContentProps}
257
+ >
258
+ {drawer}
259
+ </DrawerPanelContent>
260
+ );
261
+ };
262
+
195
263
  // An onKeyDown property must be passed to the Drawer component to handle closing
196
264
  // the drawer panel and deactivating the focus trap via the Escape key.
197
265
  const onEscape = (event: React.KeyboardEvent) => {
@@ -213,11 +281,11 @@ export const ChatbotConversationHistoryNav: React.FunctionComponent<ChatbotConve
213
281
  isInline={displayMode === ChatbotDisplayMode.fullscreen || displayMode === ChatbotDisplayMode.embedded}
214
282
  {...props}
215
283
  >
216
- <DrawerContent panelContent={panelContent}>
217
- <DrawerContentBody>
284
+ <DrawerContent panelContent={renderPanelContent()} {...drawerContentProps}>
285
+ <DrawerContentBody {...drawerContentBodyProps}>
218
286
  <>
219
287
  <div
220
- className={`${isDrawerOpen && (displayMode === ChatbotDisplayMode.default || displayMode === ChatbotDisplayMode.docked) ? 'pf-v6-c-backdrop pf-chatbot__drawer-backdrop' : undefined} `}
288
+ className={`${isDrawerOpen && (displayMode === ChatbotDisplayMode.default || displayMode === ChatbotDisplayMode.docked || displayMode === ChatbotDisplayMode.drawer) ? 'pf-v6-c-backdrop pf-chatbot__drawer-backdrop' : undefined} `}
221
289
  ></div>
222
290
  {drawerContent}
223
291
  </>
@@ -0,0 +1,44 @@
1
+ import {
2
+ Button,
3
+ EmptyState,
4
+ EmptyStateActions,
5
+ EmptyStateBody,
6
+ EmptyStateFooter,
7
+ EmptyStateProps
8
+ } from '@patternfly/react-core';
9
+ import React from 'react';
10
+
11
+ export interface HistoryEmptyStateProps extends EmptyStateProps {
12
+ onClick?: () => void;
13
+ bodyText?: string | React.ReactNode;
14
+ buttonText?: string;
15
+ buttonIcon?: React.ReactNode;
16
+ hasButton?: boolean;
17
+ }
18
+
19
+ export const HistoryEmptyState: React.FunctionComponent<HistoryEmptyStateProps> = ({
20
+ bodyText,
21
+ buttonIcon,
22
+ buttonText,
23
+ status,
24
+ titleText,
25
+ headingLevel,
26
+ onClick,
27
+ hasButton = false,
28
+ ...props
29
+ }: HistoryEmptyStateProps) => (
30
+ <EmptyState status={status} titleText={titleText} headingLevel={headingLevel} {...props}>
31
+ <EmptyStateBody>{bodyText}</EmptyStateBody>
32
+ {hasButton && (
33
+ <EmptyStateFooter>
34
+ <EmptyStateActions>
35
+ <Button icon={buttonIcon} variant="secondary" onClick={onClick}>
36
+ {buttonText}
37
+ </Button>
38
+ </EmptyStateActions>
39
+ </EmptyStateFooter>
40
+ )}
41
+ </EmptyState>
42
+ );
43
+
44
+ export default HistoryEmptyState;
@@ -0,0 +1,38 @@
1
+ import { Skeleton, SkeletonProps } from '@patternfly/react-core';
2
+ import React from 'react';
3
+
4
+ export const LoadingState: React.FunctionComponent<SkeletonProps> = ({ screenreaderText, ...rest }: SkeletonProps) => (
5
+ <div className="pf-chatbot__history-loading">
6
+ <div className="pf-chatbot__history-loading-block">
7
+ <Skeleton
8
+ screenreaderText={screenreaderText ?? 'Loading chatbot conversation history'}
9
+ fontSize="3xl"
10
+ {...rest}
11
+ />
12
+ </div>
13
+ <div className="pf-chatbot__history-loading-block">
14
+ <Skeleton fontSize="sm" width="70%" {...rest} />
15
+ <Skeleton fontSize="3xl" {...rest} />
16
+ <Skeleton fontSize="3xl" {...rest} />
17
+ </div>
18
+ <div className="pf-chatbot__history-loading-block">
19
+ <Skeleton fontSize="sm" width="70%" {...rest} />
20
+ <Skeleton fontSize="3xl" {...rest} />
21
+ <Skeleton fontSize="3xl" {...rest} />
22
+ <Skeleton fontSize="3xl" {...rest} />
23
+ </div>
24
+ <div className="pf-chatbot__history-loading-block">
25
+ <Skeleton fontSize="sm" width="70%" {...rest} />
26
+ <Skeleton fontSize="3xl" {...rest} />
27
+ <Skeleton fontSize="3xl" {...rest} />
28
+ <Skeleton fontSize="3xl" {...rest} />
29
+ <Skeleton fontSize="3xl" {...rest} />
30
+ </div>
31
+ <div className="pf-chatbot__history-loading-block">
32
+ <Skeleton fontSize="sm" width="70%" {...rest} />
33
+ <Skeleton fontSize="3xl" {...rest} />
34
+ </div>
35
+ </div>
36
+ );
37
+
38
+ export default LoadingState;
@@ -44,11 +44,15 @@
44
44
  // Chatbot Display Mode - Docked
45
45
  // ============================================================================
46
46
  .pf-chatbot--docked {
47
- .pf-chatbot__footer {
48
- .pf-v6-c-divider {
49
- display: none;
50
- }
47
+ .pf-chatbot__footer-container {
48
+ padding: var(--pf-t--global--spacer--sm) var(--pf-t--global--spacer--lg);
51
49
  }
50
+ }
51
+
52
+ // ============================================================================
53
+ // Chatbot Display Mode - Drawer
54
+ // ============================================================================
55
+ .pf-chatbot--drawer {
52
56
  .pf-chatbot__footer-container {
53
57
  padding: var(--pf-t--global--spacer--sm) var(--pf-t--global--spacer--lg);
54
58
  }
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { render, screen } from '@testing-library/react';
3
+ import ChatbotFooter from './ChatbotFooter';
4
+
5
+ describe('ChatbotFooter', () => {
6
+ it('should render ChatbotFooter with children', () => {
7
+ render(<ChatbotFooter>Chatbot Content</ChatbotFooter>);
8
+ expect(screen.getByText('Chatbot Content')).toBeTruthy();
9
+ });
10
+
11
+ it('should render ChatbotFooter with custom classname', () => {
12
+ const { container } = render(<ChatbotFooter className="custom-class">Chatbot Content</ChatbotFooter>);
13
+ expect(container.querySelector('.custom-class')).toBeTruthy();
14
+ });
15
+ });
@@ -0,0 +1,84 @@
1
+ import React from 'react';
2
+ import { act, fireEvent, render, screen, waitFor } from '@testing-library/react';
3
+ import ChatbotFootnote from './ChatbotFootnote';
4
+
5
+ describe('ChatbotFooternote', () => {
6
+ const onClick = jest.fn();
7
+ const popoverProps = {
8
+ title: 'Verify accuracy',
9
+ description: 'description',
10
+ bannerImage: {
11
+ src: 'src',
12
+ alt: 'alt'
13
+ },
14
+ cta: {
15
+ label: 'Got it',
16
+ onClick
17
+ },
18
+ link: {
19
+ label: 'label',
20
+ url: 'url'
21
+ }
22
+ };
23
+
24
+ it('should render ChatbotFooternote', () => {
25
+ render(<ChatbotFootnote label="Chatbot footer" />);
26
+ expect(screen.getByText('Chatbot footer')).toBeTruthy();
27
+ });
28
+
29
+ it('should render ChatbotFooternote with popover', async () => {
30
+ render(<ChatbotFootnote label="Chatbot footer" popover={popoverProps} />);
31
+
32
+ // click on the footer button
33
+ act(() => {
34
+ fireEvent.click(screen.getByRole('button'));
35
+ });
36
+
37
+ await waitFor(() => {
38
+ // Check if the popover is visible and click on the cta button
39
+ screen.getByLabelText('More information');
40
+ screen.getByText('Verify accuracy');
41
+ fireEvent.click(screen.getByRole('button', { name: 'Got it' }));
42
+ expect(onClick).toHaveBeenCalled();
43
+ });
44
+ });
45
+ it('should call onClick handler when popover cta button is clicked', async () => {
46
+ render(<ChatbotFootnote label="Chatbot footer" popover={popoverProps} />);
47
+
48
+ // click on the footer button
49
+ act(() => {
50
+ fireEvent.click(screen.getByRole('button'));
51
+ });
52
+
53
+ await waitFor(() => {
54
+ // Check if the popover is visible and click on the cta button
55
+ screen.getByLabelText('More information');
56
+ screen.getByText('Verify accuracy');
57
+ fireEvent.click(screen.getByRole('button', { name: 'Got it' }));
58
+ expect(onClick).toHaveBeenCalled();
59
+ });
60
+ });
61
+ it('should close the popover when escape is pressed', async () => {
62
+ render(<ChatbotFootnote label="Chatbot footer" popover={popoverProps} />);
63
+
64
+ // click on the footer button
65
+ act(() => {
66
+ fireEvent.click(screen.getByRole('button'));
67
+ });
68
+
69
+ await waitFor(() => {
70
+ // Check if the popover is visible and click on the cta button
71
+ screen.getByLabelText('More information');
72
+ screen.getByText('Verify accuracy');
73
+ });
74
+
75
+ act(() => {
76
+ // trigger escape to close the popover
77
+ fireEvent.keyDown(document, { key: 'Escape', code: 'Escape' });
78
+ });
79
+
80
+ await waitFor(() => {
81
+ expect(screen.queryByText('Verify accuracy')).toBeFalsy();
82
+ });
83
+ });
84
+ });
@@ -32,7 +32,7 @@ export interface ChatbotFootnotePopover {
32
32
  bannerImage?: ChatbotFootnotePopoverBannerImage;
33
33
  /** Optional CTA button that can be used to trigger an action and close the popover */
34
34
  cta?: ChatbotFootnotePopoverCTA;
35
- /** Optional link that can be used to show and external link like **Learn More** */
35
+ /** Optional link that can be used to show an external link like **View AI policy** */
36
36
  link?: ChatbotFootnotePopoverLink;
37
37
  /** Props for PF Popover */
38
38
  popoverProps?: PopoverProps;
@@ -87,7 +87,7 @@ export const ChatbotFootnote: React.FunctionComponent<ChatbotFootnoteProps> = ({
87
87
  popover.cta?.onClick();
88
88
  }}
89
89
  >
90
- {popover.cta?.label || 'Got it'}
90
+ {popover.cta?.label || 'Dismiss'}
91
91
  </Button>
92
92
  )}
93
93
  {popover?.link && (