@patternfly/chatbot 6.3.0-prerelease.2 → 6.3.0-prerelease.21

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 (586) hide show
  1. package/dist/cjs/AttachMenu/AttachMenu.d.ts +2 -2
  2. package/dist/cjs/AttachMenu/AttachMenu.js +2 -12
  3. package/dist/cjs/AttachmentEdit/AttachmentEdit.d.ts +14 -2
  4. package/dist/cjs/AttachmentEdit/AttachmentEdit.js +3 -6
  5. package/dist/cjs/AttachmentEdit/AttachmentEdit.test.d.ts +1 -1
  6. package/dist/cjs/AttachmentEdit/AttachmentEdit.test.js +33 -8
  7. package/dist/cjs/Chatbot/Chatbot.d.ts +3 -2
  8. package/dist/cjs/Chatbot/Chatbot.js +5 -10
  9. package/dist/cjs/Chatbot/Chatbot.test.js +13 -9
  10. package/dist/cjs/ChatbotAlert/ChatbotAlert.d.ts +2 -2
  11. package/dist/cjs/ChatbotAlert/ChatbotAlert.js +4 -8
  12. package/dist/cjs/ChatbotAlert/ChatbotAlert.test.js +10 -10
  13. package/dist/cjs/ChatbotContent/ChatbotContent.d.ts +3 -3
  14. package/dist/cjs/ChatbotContent/ChatbotContent.js +2 -8
  15. package/dist/cjs/ChatbotContent/ChatbotContent.test.js +5 -5
  16. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +2 -2
  17. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +7 -11
  18. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.js +31 -33
  19. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +4 -2
  20. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +17 -34
  21. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +58 -62
  22. package/dist/cjs/ChatbotConversationHistoryNav/EmptyState.d.ts +2 -2
  23. package/dist/cjs/ChatbotConversationHistoryNav/EmptyState.js +2 -9
  24. package/dist/cjs/ChatbotConversationHistoryNav/LoadingState.d.ts +2 -2
  25. package/dist/cjs/ChatbotConversationHistoryNav/LoadingState.js +2 -25
  26. package/dist/cjs/ChatbotFooter/ChatbotFooter.d.ts +4 -3
  27. package/dist/cjs/ChatbotFooter/ChatbotFooter.js +3 -16
  28. package/dist/cjs/ChatbotFooter/ChatbotFooter.test.d.ts +1 -1
  29. package/dist/cjs/ChatbotFooter/ChatbotFooter.test.js +10 -5
  30. package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.js +28 -28
  31. package/dist/cjs/ChatbotFooter/ChatbotFootnote.d.ts +3 -3
  32. package/dist/cjs/ChatbotFooter/ChatbotFootnote.js +10 -23
  33. package/dist/cjs/ChatbotHeader/ChatbotHeader.d.ts +3 -3
  34. package/dist/cjs/ChatbotHeader/ChatbotHeader.js +2 -7
  35. package/dist/cjs/ChatbotHeader/ChatbotHeader.test.js +5 -5
  36. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.d.ts +2 -2
  37. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.js +2 -5
  38. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.js +5 -5
  39. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +5 -4
  40. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.js +19 -10
  41. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -1
  42. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.js +10 -8
  43. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.d.ts +2 -2
  44. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.js +2 -5
  45. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.js +5 -5
  46. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.d.ts +5 -4
  47. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.js +20 -8
  48. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -1
  49. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.js +10 -8
  50. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.d.ts +7 -3
  51. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +8 -9
  52. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -1
  53. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +22 -19
  54. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.d.ts +9 -3
  55. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +11 -12
  56. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -1
  57. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +20 -17
  58. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.d.ts +2 -2
  59. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.js +2 -5
  60. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.js +23 -23
  61. package/dist/cjs/ChatbotModal/ChatbotModal.d.ts +5 -2
  62. package/dist/cjs/ChatbotModal/ChatbotModal.js +4 -10
  63. package/dist/cjs/ChatbotModal/ChatbotModal.test.d.ts +1 -0
  64. package/dist/cjs/ChatbotModal/ChatbotModal.test.js +16 -0
  65. package/dist/cjs/ChatbotPopover/ChatbotPopover.d.ts +2 -2
  66. package/dist/cjs/ChatbotPopover/ChatbotPopover.js +2 -8
  67. package/dist/cjs/ChatbotToggle/ChatbotToggle.d.ts +1 -2
  68. package/dist/cjs/ChatbotToggle/ChatbotToggle.js +8 -13
  69. package/dist/cjs/ChatbotToggle/ChatbotToggle.test.js +25 -25
  70. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.d.ts +3 -2
  71. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.js +7 -21
  72. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +18 -14
  73. package/dist/cjs/CodeModal/CodeModal.d.ts +10 -2
  74. package/dist/cjs/CodeModal/CodeModal.js +8 -20
  75. package/dist/cjs/CodeModal/CodeModal.test.d.ts +1 -0
  76. package/dist/cjs/CodeModal/CodeModal.test.js +34 -0
  77. package/dist/cjs/Compare/Compare.d.ts +2 -2
  78. package/dist/cjs/Compare/Compare.js +7 -16
  79. package/dist/cjs/Compare/Compare.test.js +7 -9
  80. package/dist/cjs/FileDetails/FileDetails.d.ts +2 -2
  81. package/dist/cjs/FileDetails/FileDetails.js +2 -15
  82. package/dist/cjs/FileDetails/FileDetails.test.js +10 -10
  83. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.d.ts +2 -2
  84. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.js +2 -5
  85. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.test.js +21 -21
  86. package/dist/cjs/FileDropZone/FileDropZone.d.ts +9 -2
  87. package/dist/cjs/FileDropZone/FileDropZone.js +6 -9
  88. package/dist/cjs/FileDropZone/FileDropZone.test.js +31 -5
  89. package/dist/cjs/LoadingMessage/LoadingMessage.d.ts +2 -2
  90. package/dist/cjs/LoadingMessage/LoadingMessage.js +2 -10
  91. package/dist/cjs/LoadingMessage/LoadingMessage.test.js +6 -6
  92. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.d.ts +20 -3
  93. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.js +22 -16
  94. package/dist/cjs/Message/CodeBlockMessage/ExpandableSectionForSyntaxHighlighter.d.ts +62 -0
  95. package/dist/cjs/Message/CodeBlockMessage/ExpandableSectionForSyntaxHighlighter.js +136 -0
  96. package/dist/cjs/Message/ErrorMessage/ErrorMessage.d.ts +1 -2
  97. package/dist/cjs/Message/ErrorMessage/ErrorMessage.js +5 -8
  98. package/dist/cjs/Message/ImageMessage/ImageMessage.d.ts +1 -2
  99. package/dist/cjs/Message/ImageMessage/ImageMessage.js +2 -8
  100. package/dist/cjs/Message/LinkMessage/LinkMessage.d.ts +1 -2
  101. package/dist/cjs/Message/LinkMessage/LinkMessage.js +6 -9
  102. package/dist/cjs/Message/ListMessage/ListItemMessage.d.ts +1 -2
  103. package/dist/cjs/Message/ListMessage/ListItemMessage.js +2 -8
  104. package/dist/cjs/Message/ListMessage/OrderedListMessage.d.ts +1 -2
  105. package/dist/cjs/Message/ListMessage/OrderedListMessage.js +2 -9
  106. package/dist/cjs/Message/ListMessage/UnorderedListMessage.d.ts +1 -2
  107. package/dist/cjs/Message/ListMessage/UnorderedListMessage.js +2 -9
  108. package/dist/cjs/Message/Message.d.ts +26 -8
  109. package/dist/cjs/Message/Message.js +50 -72
  110. package/dist/cjs/Message/Message.test.js +123 -81
  111. package/dist/cjs/Message/MessageInput.d.ts +2 -2
  112. package/dist/cjs/Message/MessageInput.js +5 -14
  113. package/dist/cjs/Message/MessageLoading.d.ts +1 -2
  114. package/dist/cjs/Message/MessageLoading.js +3 -8
  115. package/dist/cjs/Message/Plugins/rehypeMoveImagesOutOfParagraphs.d.ts +2 -0
  116. package/dist/cjs/Message/Plugins/rehypeMoveImagesOutOfParagraphs.js +47 -0
  117. package/dist/cjs/Message/QuickResponse/QuickResponse.d.ts +4 -2
  118. package/dist/cjs/Message/QuickResponse/QuickResponse.js +8 -10
  119. package/dist/cjs/Message/QuickStarts/FallbackImg.d.ts +2 -2
  120. package/dist/cjs/Message/QuickStarts/FallbackImg.js +5 -27
  121. package/dist/cjs/Message/QuickStarts/QuickStartTile.d.ts +4 -2
  122. package/dist/cjs/Message/QuickStarts/QuickStartTile.js +8 -44
  123. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.d.ts +2 -2
  124. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.js +9 -38
  125. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.js +16 -16
  126. package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.d.ts +2 -2
  127. package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.js +2 -26
  128. package/dist/cjs/Message/QuickStarts/types.d.ts +4 -3
  129. package/dist/cjs/Message/TableMessage/TableMessage.d.ts +1 -2
  130. package/dist/cjs/Message/TableMessage/TableMessage.js +8 -10
  131. package/dist/cjs/Message/TableMessage/TbodyMessage.d.ts +2 -3
  132. package/dist/cjs/Message/TableMessage/TbodyMessage.js +7 -9
  133. package/dist/cjs/Message/TableMessage/TdMessage.d.ts +1 -2
  134. package/dist/cjs/Message/TableMessage/TdMessage.js +2 -8
  135. package/dist/cjs/Message/TableMessage/ThMessage.d.ts +1 -2
  136. package/dist/cjs/Message/TableMessage/ThMessage.js +2 -8
  137. package/dist/cjs/Message/TableMessage/TheadMessage.d.ts +1 -2
  138. package/dist/cjs/Message/TableMessage/TheadMessage.js +2 -8
  139. package/dist/cjs/Message/TableMessage/TrMessage.d.ts +2 -3
  140. package/dist/cjs/Message/TableMessage/TrMessage.js +8 -10
  141. package/dist/cjs/Message/TextMessage/TextMessage.d.ts +1 -2
  142. package/dist/cjs/Message/TextMessage/TextMessage.js +2 -9
  143. package/dist/cjs/Message/UserFeedback/CloseButton.d.ts +2 -2
  144. package/dist/cjs/Message/UserFeedback/CloseButton.js +2 -8
  145. package/dist/cjs/Message/UserFeedback/UserFeedback.d.ts +2 -2
  146. package/dist/cjs/Message/UserFeedback/UserFeedback.js +13 -24
  147. package/dist/cjs/Message/UserFeedback/UserFeedback.test.js +55 -51
  148. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.d.ts +2 -2
  149. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.js +21 -45
  150. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.js +83 -89
  151. package/dist/cjs/MessageBar/AttachButton.d.ts +9 -2
  152. package/dist/cjs/MessageBar/AttachButton.js +9 -17
  153. package/dist/cjs/MessageBar/AttachButton.test.js +50 -22
  154. package/dist/cjs/MessageBar/MessageBar.d.ts +16 -3
  155. package/dist/cjs/MessageBar/MessageBar.js +36 -37
  156. package/dist/cjs/MessageBar/MessageBar.test.js +122 -108
  157. package/dist/cjs/MessageBar/MicrophoneButton.d.ts +3 -2
  158. package/dist/cjs/MessageBar/MicrophoneButton.js +8 -15
  159. package/dist/cjs/MessageBar/SendButton.d.ts +4 -2
  160. package/dist/cjs/MessageBar/SendButton.js +4 -12
  161. package/dist/cjs/MessageBar/SendButton.test.js +18 -14
  162. package/dist/cjs/MessageBar/StopButton.d.ts +4 -2
  163. package/dist/cjs/MessageBar/StopButton.js +4 -13
  164. package/dist/cjs/MessageBar/StopButton.test.js +18 -14
  165. package/dist/cjs/MessageBox/JumpButton.d.ts +2 -2
  166. package/dist/cjs/MessageBox/JumpButton.js +2 -10
  167. package/dist/cjs/MessageBox/JumpButton.test.js +10 -10
  168. package/dist/cjs/MessageBox/MessageBox.d.ts +21 -5
  169. package/dist/cjs/MessageBox/MessageBox.js +181 -44
  170. package/dist/cjs/MessageBox/MessageBox.test.js +219 -6
  171. package/dist/cjs/PreviewAttachment/PreviewAttachment.d.ts +14 -2
  172. package/dist/cjs/PreviewAttachment/PreviewAttachment.js +3 -6
  173. package/dist/cjs/PreviewAttachment/PreviewAttachment.test.d.ts +1 -1
  174. package/dist/cjs/PreviewAttachment/PreviewAttachment.test.js +34 -12
  175. package/dist/cjs/ResponseActions/ResponseActionButton.d.ts +5 -5
  176. package/dist/cjs/ResponseActions/ResponseActionButton.js +5 -8
  177. package/dist/cjs/ResponseActions/ResponseActionButton.test.js +19 -19
  178. package/dist/cjs/ResponseActions/ResponseActions.d.ts +7 -3
  179. package/dist/cjs/ResponseActions/ResponseActions.js +12 -16
  180. package/dist/cjs/ResponseActions/ResponseActions.test.js +60 -41
  181. package/dist/cjs/Settings/SettingsForm.d.ts +4 -2
  182. package/dist/cjs/Settings/SettingsForm.js +3 -9
  183. package/dist/cjs/Settings/SettingsForm.test.d.ts +1 -1
  184. package/dist/cjs/Settings/SettingsForm.test.js +18 -9
  185. package/dist/cjs/SourceDetailsMenuItem/SourceDetailsMenuItem.d.ts +2 -2
  186. package/dist/cjs/SourceDetailsMenuItem/SourceDetailsMenuItem.js +2 -11
  187. package/dist/cjs/SourcesCard/SourcesCard.d.ts +2 -2
  188. package/dist/cjs/SourcesCard/SourcesCard.js +17 -43
  189. package/dist/cjs/SourcesCard/SourcesCard.test.js +60 -60
  190. package/dist/cjs/TermsOfUse/TermsOfUse.d.ts +5 -3
  191. package/dist/cjs/TermsOfUse/TermsOfUse.js +5 -17
  192. package/dist/cjs/TermsOfUse/TermsOfUse.test.js +31 -33
  193. package/dist/css/main.css +228 -15
  194. package/dist/css/main.css.map +1 -1
  195. package/dist/esm/AttachMenu/AttachMenu.d.ts +2 -2
  196. package/dist/esm/AttachMenu/AttachMenu.js +2 -9
  197. package/dist/esm/AttachmentEdit/AttachmentEdit.d.ts +14 -2
  198. package/dist/esm/AttachmentEdit/AttachmentEdit.js +3 -6
  199. package/dist/esm/AttachmentEdit/AttachmentEdit.test.d.ts +1 -1
  200. package/dist/esm/AttachmentEdit/AttachmentEdit.test.js +30 -5
  201. package/dist/esm/Chatbot/Chatbot.d.ts +3 -2
  202. package/dist/esm/Chatbot/Chatbot.js +5 -7
  203. package/dist/esm/Chatbot/Chatbot.test.js +9 -5
  204. package/dist/esm/ChatbotAlert/ChatbotAlert.d.ts +2 -2
  205. package/dist/esm/ChatbotAlert/ChatbotAlert.js +4 -5
  206. package/dist/esm/ChatbotAlert/ChatbotAlert.test.js +4 -4
  207. package/dist/esm/ChatbotContent/ChatbotContent.d.ts +3 -3
  208. package/dist/esm/ChatbotContent/ChatbotContent.js +2 -5
  209. package/dist/esm/ChatbotContent/ChatbotContent.test.js +3 -3
  210. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +2 -2
  211. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +7 -11
  212. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.js +8 -10
  213. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +4 -2
  214. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +17 -34
  215. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +29 -33
  216. package/dist/esm/ChatbotConversationHistoryNav/EmptyState.d.ts +2 -2
  217. package/dist/esm/ChatbotConversationHistoryNav/EmptyState.js +2 -6
  218. package/dist/esm/ChatbotConversationHistoryNav/LoadingState.d.ts +2 -2
  219. package/dist/esm/ChatbotConversationHistoryNav/LoadingState.js +2 -22
  220. package/dist/esm/ChatbotFooter/ChatbotFooter.d.ts +4 -3
  221. package/dist/esm/ChatbotFooter/ChatbotFooter.js +3 -13
  222. package/dist/esm/ChatbotFooter/ChatbotFooter.test.d.ts +1 -1
  223. package/dist/esm/ChatbotFooter/ChatbotFooter.test.js +8 -3
  224. package/dist/esm/ChatbotFooter/ChatbotFooternote.test.js +5 -5
  225. package/dist/esm/ChatbotFooter/ChatbotFootnote.d.ts +3 -3
  226. package/dist/esm/ChatbotFooter/ChatbotFootnote.js +10 -23
  227. package/dist/esm/ChatbotHeader/ChatbotHeader.d.ts +3 -3
  228. package/dist/esm/ChatbotHeader/ChatbotHeader.js +2 -4
  229. package/dist/esm/ChatbotHeader/ChatbotHeader.test.js +3 -3
  230. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.d.ts +2 -2
  231. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.js +2 -2
  232. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.js +3 -3
  233. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +5 -4
  234. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.js +20 -8
  235. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -1
  236. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.js +8 -3
  237. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.d.ts +2 -2
  238. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.js +2 -2
  239. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.js +3 -3
  240. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.d.ts +5 -4
  241. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.js +20 -8
  242. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -1
  243. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.js +8 -3
  244. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.d.ts +7 -3
  245. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +8 -9
  246. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -1
  247. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +13 -7
  248. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.d.ts +9 -3
  249. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +11 -9
  250. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -1
  251. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +13 -7
  252. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.d.ts +2 -2
  253. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.js +2 -2
  254. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.js +12 -12
  255. package/dist/esm/ChatbotModal/ChatbotModal.d.ts +5 -2
  256. package/dist/esm/ChatbotModal/ChatbotModal.js +4 -7
  257. package/dist/esm/ChatbotModal/ChatbotModal.test.d.ts +1 -0
  258. package/dist/esm/ChatbotModal/ChatbotModal.test.js +11 -0
  259. package/dist/esm/ChatbotPopover/ChatbotPopover.d.ts +2 -2
  260. package/dist/esm/ChatbotPopover/ChatbotPopover.js +2 -5
  261. package/dist/esm/ChatbotToggle/ChatbotToggle.d.ts +1 -2
  262. package/dist/esm/ChatbotToggle/ChatbotToggle.js +8 -13
  263. package/dist/esm/ChatbotToggle/ChatbotToggle.test.js +8 -8
  264. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.d.ts +3 -2
  265. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.js +7 -18
  266. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +11 -7
  267. package/dist/esm/CodeModal/CodeModal.d.ts +10 -2
  268. package/dist/esm/CodeModal/CodeModal.js +8 -20
  269. package/dist/esm/CodeModal/CodeModal.test.d.ts +1 -0
  270. package/dist/esm/CodeModal/CodeModal.test.js +29 -0
  271. package/dist/esm/Compare/Compare.d.ts +2 -2
  272. package/dist/esm/Compare/Compare.js +7 -13
  273. package/dist/esm/Compare/Compare.test.js +4 -6
  274. package/dist/esm/FileDetails/FileDetails.d.ts +2 -2
  275. package/dist/esm/FileDetails/FileDetails.js +2 -15
  276. package/dist/esm/FileDetails/FileDetails.test.js +4 -4
  277. package/dist/esm/FileDetailsLabel/FileDetailsLabel.d.ts +2 -2
  278. package/dist/esm/FileDetailsLabel/FileDetailsLabel.js +2 -5
  279. package/dist/esm/FileDetailsLabel/FileDetailsLabel.test.js +9 -9
  280. package/dist/esm/FileDropZone/FileDropZone.d.ts +9 -2
  281. package/dist/esm/FileDropZone/FileDropZone.js +6 -6
  282. package/dist/esm/FileDropZone/FileDropZone.test.js +29 -3
  283. package/dist/esm/LoadingMessage/LoadingMessage.d.ts +2 -2
  284. package/dist/esm/LoadingMessage/LoadingMessage.js +2 -10
  285. package/dist/esm/LoadingMessage/LoadingMessage.test.js +3 -3
  286. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.d.ts +20 -3
  287. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.js +23 -17
  288. package/dist/esm/Message/CodeBlockMessage/ExpandableSectionForSyntaxHighlighter.d.ts +62 -0
  289. package/dist/esm/Message/CodeBlockMessage/ExpandableSectionForSyntaxHighlighter.js +130 -0
  290. package/dist/esm/Message/ErrorMessage/ErrorMessage.d.ts +1 -2
  291. package/dist/esm/Message/ErrorMessage/ErrorMessage.js +5 -5
  292. package/dist/esm/Message/ImageMessage/ImageMessage.d.ts +1 -2
  293. package/dist/esm/Message/ImageMessage/ImageMessage.js +2 -5
  294. package/dist/esm/Message/LinkMessage/LinkMessage.d.ts +1 -2
  295. package/dist/esm/Message/LinkMessage/LinkMessage.js +6 -6
  296. package/dist/esm/Message/ListMessage/ListItemMessage.d.ts +1 -2
  297. package/dist/esm/Message/ListMessage/ListItemMessage.js +2 -5
  298. package/dist/esm/Message/ListMessage/OrderedListMessage.d.ts +1 -2
  299. package/dist/esm/Message/ListMessage/OrderedListMessage.js +2 -6
  300. package/dist/esm/Message/ListMessage/UnorderedListMessage.d.ts +1 -2
  301. package/dist/esm/Message/ListMessage/UnorderedListMessage.js +2 -6
  302. package/dist/esm/Message/Message.d.ts +26 -8
  303. package/dist/esm/Message/Message.js +50 -72
  304. package/dist/esm/Message/Message.test.js +123 -81
  305. package/dist/esm/Message/MessageInput.d.ts +2 -2
  306. package/dist/esm/Message/MessageInput.js +5 -11
  307. package/dist/esm/Message/MessageLoading.d.ts +1 -2
  308. package/dist/esm/Message/MessageLoading.js +2 -4
  309. package/dist/esm/Message/Plugins/rehypeMoveImagesOutOfParagraphs.d.ts +2 -0
  310. package/dist/esm/Message/Plugins/rehypeMoveImagesOutOfParagraphs.js +43 -0
  311. package/dist/esm/Message/QuickResponse/QuickResponse.d.ts +4 -2
  312. package/dist/esm/Message/QuickResponse/QuickResponse.js +8 -7
  313. package/dist/esm/Message/QuickStarts/FallbackImg.d.ts +2 -2
  314. package/dist/esm/Message/QuickStarts/FallbackImg.js +5 -4
  315. package/dist/esm/Message/QuickStarts/QuickStartTile.d.ts +4 -2
  316. package/dist/esm/Message/QuickStarts/QuickStartTile.js +8 -21
  317. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.d.ts +2 -2
  318. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.js +9 -15
  319. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.js +5 -5
  320. package/dist/esm/Message/QuickStarts/QuickStartTileHeader.d.ts +2 -2
  321. package/dist/esm/Message/QuickStarts/QuickStartTileHeader.js +2 -3
  322. package/dist/esm/Message/QuickStarts/types.d.ts +4 -3
  323. package/dist/esm/Message/TableMessage/TableMessage.d.ts +1 -2
  324. package/dist/esm/Message/TableMessage/TableMessage.js +8 -7
  325. package/dist/esm/Message/TableMessage/TbodyMessage.d.ts +2 -3
  326. package/dist/esm/Message/TableMessage/TbodyMessage.js +7 -6
  327. package/dist/esm/Message/TableMessage/TdMessage.d.ts +1 -2
  328. package/dist/esm/Message/TableMessage/TdMessage.js +2 -5
  329. package/dist/esm/Message/TableMessage/ThMessage.d.ts +1 -2
  330. package/dist/esm/Message/TableMessage/ThMessage.js +2 -5
  331. package/dist/esm/Message/TableMessage/TheadMessage.d.ts +1 -2
  332. package/dist/esm/Message/TableMessage/TheadMessage.js +2 -5
  333. package/dist/esm/Message/TableMessage/TrMessage.d.ts +2 -3
  334. package/dist/esm/Message/TableMessage/TrMessage.js +8 -7
  335. package/dist/esm/Message/TextMessage/TextMessage.d.ts +1 -2
  336. package/dist/esm/Message/TextMessage/TextMessage.js +2 -6
  337. package/dist/esm/Message/UserFeedback/CloseButton.d.ts +2 -2
  338. package/dist/esm/Message/UserFeedback/CloseButton.js +2 -5
  339. package/dist/esm/Message/UserFeedback/UserFeedback.d.ts +2 -2
  340. package/dist/esm/Message/UserFeedback/UserFeedback.js +13 -24
  341. package/dist/esm/Message/UserFeedback/UserFeedback.test.js +24 -20
  342. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.d.ts +2 -2
  343. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.js +21 -45
  344. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.js +29 -35
  345. package/dist/esm/MessageBar/AttachButton.d.ts +9 -2
  346. package/dist/esm/MessageBar/AttachButton.js +9 -14
  347. package/dist/esm/MessageBar/AttachButton.test.js +44 -16
  348. package/dist/esm/MessageBar/MessageBar.d.ts +16 -3
  349. package/dist/esm/MessageBar/MessageBar.js +34 -35
  350. package/dist/esm/MessageBar/MessageBar.test.js +87 -73
  351. package/dist/esm/MessageBar/MicrophoneButton.d.ts +3 -2
  352. package/dist/esm/MessageBar/MicrophoneButton.js +8 -12
  353. package/dist/esm/MessageBar/SendButton.d.ts +4 -2
  354. package/dist/esm/MessageBar/SendButton.js +4 -9
  355. package/dist/esm/MessageBar/SendButton.test.js +13 -9
  356. package/dist/esm/MessageBar/StopButton.d.ts +4 -2
  357. package/dist/esm/MessageBar/StopButton.js +4 -10
  358. package/dist/esm/MessageBar/StopButton.test.js +13 -9
  359. package/dist/esm/MessageBox/JumpButton.d.ts +2 -2
  360. package/dist/esm/MessageBox/JumpButton.js +2 -7
  361. package/dist/esm/MessageBox/JumpButton.test.js +9 -9
  362. package/dist/esm/MessageBox/MessageBox.d.ts +21 -5
  363. package/dist/esm/MessageBox/MessageBox.js +181 -44
  364. package/dist/esm/MessageBox/MessageBox.test.js +220 -7
  365. package/dist/esm/PreviewAttachment/PreviewAttachment.d.ts +14 -2
  366. package/dist/esm/PreviewAttachment/PreviewAttachment.js +3 -6
  367. package/dist/esm/PreviewAttachment/PreviewAttachment.test.d.ts +1 -1
  368. package/dist/esm/PreviewAttachment/PreviewAttachment.test.js +30 -5
  369. package/dist/esm/ResponseActions/ResponseActionButton.d.ts +5 -5
  370. package/dist/esm/ResponseActions/ResponseActionButton.js +5 -5
  371. package/dist/esm/ResponseActions/ResponseActionButton.test.js +7 -7
  372. package/dist/esm/ResponseActions/ResponseActions.d.ts +7 -3
  373. package/dist/esm/ResponseActions/ResponseActions.js +13 -17
  374. package/dist/esm/ResponseActions/ResponseActions.test.js +35 -16
  375. package/dist/esm/Settings/SettingsForm.d.ts +4 -2
  376. package/dist/esm/Settings/SettingsForm.js +3 -6
  377. package/dist/esm/Settings/SettingsForm.test.d.ts +1 -1
  378. package/dist/esm/Settings/SettingsForm.test.js +16 -4
  379. package/dist/esm/SourceDetailsMenuItem/SourceDetailsMenuItem.d.ts +2 -2
  380. package/dist/esm/SourceDetailsMenuItem/SourceDetailsMenuItem.js +2 -8
  381. package/dist/esm/SourcesCard/SourcesCard.d.ts +2 -2
  382. package/dist/esm/SourcesCard/SourcesCard.js +17 -40
  383. package/dist/esm/SourcesCard/SourcesCard.test.js +19 -19
  384. package/dist/esm/TermsOfUse/TermsOfUse.d.ts +5 -3
  385. package/dist/esm/TermsOfUse/TermsOfUse.js +5 -17
  386. package/dist/esm/TermsOfUse/TermsOfUse.test.js +10 -12
  387. package/dist/tsconfig.tsbuildinfo +1 -1
  388. package/package.json +5 -6
  389. package/patternfly-docs/content/extensions/chatbot/design-guidelines.md +10 -0
  390. package/patternfly-docs/content/extensions/chatbot/examples/Customizing Messages/Customizing Messages.md +51 -0
  391. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachMenu.tsx +9 -9
  392. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentEdit.tsx +14 -5
  393. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentError.tsx +2 -2
  394. package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +19 -20
  395. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDetails.tsx +2 -2
  396. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDetailsLabel.tsx +9 -9
  397. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDropZone.tsx +4 -4
  398. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithAttachment.tsx +7 -7
  399. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithCustomResponseActions.tsx +2 -12
  400. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedback.tsx +37 -4
  401. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedbackTimeout.tsx +3 -3
  402. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickResponses.tsx +26 -2
  403. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickStart.tsx +13 -2
  404. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithResponseActions.tsx +3 -3
  405. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithSources.tsx +24 -3
  406. package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +1 -0
  407. package/patternfly-docs/content/extensions/chatbot/examples/Messages/PreviewAttachment.tsx +14 -5
  408. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +20 -14
  409. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessageWithExtraContent.tsx +4 -4
  410. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotContainer.tsx +59 -36
  411. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFooter.tsx +2 -2
  412. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFootnote.tsx +2 -2
  413. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderBasic.tsx +10 -13
  414. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawer.tsx +18 -9
  415. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerNavigation.tsx +5 -5
  416. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerResizable.tsx +5 -5
  417. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithActions.tsx +14 -5
  418. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithSelection.tsx +17 -8
  419. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderTitle.tsx +59 -34
  420. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBar.tsx +2 -2
  421. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarAttach.tsx +9 -9
  422. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarDisabled.tsx +3 -3
  423. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarLanguage.tsx +2 -2
  424. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarStop.tsx +2 -2
  425. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotModal.tsx +74 -37
  426. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotToggleBasic.tsx +3 -3
  427. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomeInteraction.tsx +8 -8
  428. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomePrompt.tsx +3 -3
  429. package/patternfly-docs/content/extensions/chatbot/examples/UI/CompactSettings.tsx +282 -0
  430. package/patternfly-docs/content/extensions/chatbot/examples/UI/CustomClosedIcon.tsx +3 -3
  431. package/patternfly-docs/content/extensions/chatbot/examples/UI/Settings.tsx +16 -23
  432. package/patternfly-docs/content/extensions/chatbot/examples/UI/SkipToContent.tsx +5 -5
  433. package/patternfly-docs/content/extensions/chatbot/examples/UI/SquareChatbotToggle.tsx +3 -3
  434. package/patternfly-docs/content/extensions/chatbot/examples/UI/TermsOfUse.tsx +91 -48
  435. package/patternfly-docs/content/extensions/chatbot/examples/UI/TermsOfUseCompact.tsx +179 -0
  436. package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +17 -0
  437. package/patternfly-docs/content/extensions/chatbot/examples/demos/AttachmentDemos.md +37 -0
  438. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +9 -1
  439. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.tsx +19 -25
  440. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachment.tsx +23 -14
  441. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachmentMenu.tsx +14 -14
  442. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotCompact.tsx +475 -0
  443. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotInDrawer.tsx +17 -22
  444. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotScrolling.tsx +536 -0
  445. package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedChatbot.tsx +17 -22
  446. package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedComparisonChatbot.tsx +13 -13
  447. package/patternfly-docs/content/extensions/chatbot/examples/demos/Feedback.tsx +7 -7
  448. package/patternfly-docs/content/extensions/chatbot/img/quick-response-confirmation.svg +67 -0
  449. package/src/AttachMenu/AttachMenu.tsx +2 -2
  450. package/src/AttachmentEdit/AttachmentEdit.test.tsx +46 -2
  451. package/src/AttachmentEdit/AttachmentEdit.tsx +29 -7
  452. package/src/Chatbot/Chatbot.scss +7 -0
  453. package/src/Chatbot/Chatbot.test.tsx +9 -1
  454. package/src/Chatbot/Chatbot.tsx +9 -4
  455. package/src/ChatbotAlert/ChatbotAlert.test.tsx +0 -1
  456. package/src/ChatbotAlert/ChatbotAlert.tsx +2 -2
  457. package/src/ChatbotContent/ChatbotContent.test.tsx +0 -1
  458. package/src/ChatbotContent/ChatbotContent.tsx +3 -3
  459. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.tsx +0 -1
  460. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.tsx +6 -4
  461. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.scss +38 -3
  462. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +21 -3
  463. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +17 -8
  464. package/src/ChatbotConversationHistoryNav/EmptyState.tsx +2 -2
  465. package/src/ChatbotConversationHistoryNav/LoadingState.tsx +2 -2
  466. package/src/ChatbotFooter/ChatbotFooter.scss +5 -0
  467. package/src/ChatbotFooter/ChatbotFooter.test.tsx +10 -1
  468. package/src/ChatbotFooter/ChatbotFooter.tsx +6 -4
  469. package/src/ChatbotFooter/ChatbotFooternote.test.tsx +0 -1
  470. package/src/ChatbotFooter/ChatbotFootnote.tsx +6 -4
  471. package/src/ChatbotHeader/ChatbotHeader.scss +25 -0
  472. package/src/ChatbotHeader/ChatbotHeader.test.tsx +0 -1
  473. package/src/ChatbotHeader/ChatbotHeader.tsx +4 -7
  474. package/src/ChatbotHeader/ChatbotHeaderActions.test.tsx +0 -1
  475. package/src/ChatbotHeader/ChatbotHeaderActions.tsx +2 -2
  476. package/src/ChatbotHeader/ChatbotHeaderCloseButton.test.tsx +6 -1
  477. package/src/ChatbotHeader/ChatbotHeaderCloseButton.tsx +17 -10
  478. package/src/ChatbotHeader/ChatbotHeaderMain.test.tsx +0 -1
  479. package/src/ChatbotHeader/ChatbotHeaderMain.tsx +5 -3
  480. package/src/ChatbotHeader/ChatbotHeaderMenu.test.tsx +8 -1
  481. package/src/ChatbotHeader/ChatbotHeaderMenu.tsx +17 -12
  482. package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.tsx +15 -1
  483. package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.tsx +17 -7
  484. package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.tsx +19 -1
  485. package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.tsx +30 -6
  486. package/src/ChatbotHeader/ChatbotHeaderTitle.test.tsx +0 -1
  487. package/src/ChatbotHeader/ChatbotHeaderTitle.tsx +2 -2
  488. package/src/ChatbotModal/ChatbotModal.scss +15 -4
  489. package/src/ChatbotModal/ChatbotModal.test.tsx +58 -0
  490. package/src/ChatbotModal/ChatbotModal.tsx +7 -3
  491. package/src/ChatbotPopover/ChatbotPopover.scss +9 -5
  492. package/src/ChatbotPopover/ChatbotPopover.tsx +2 -2
  493. package/src/ChatbotToggle/ChatbotToggle.test.tsx +0 -1
  494. package/src/ChatbotToggle/ChatbotToggle.tsx +5 -3
  495. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.scss +9 -1
  496. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.tsx +13 -1
  497. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.tsx +15 -4
  498. package/src/ChatbotWelcomePrompt/__snapshots__/ChatbotWelcomePrompt.test.tsx.snap +1 -1
  499. package/src/CodeModal/CodeModal.scss +11 -3
  500. package/src/CodeModal/CodeModal.test.tsx +51 -0
  501. package/src/CodeModal/CodeModal.tsx +24 -10
  502. package/src/Compare/Compare.test.tsx +0 -1
  503. package/src/Compare/Compare.tsx +7 -6
  504. package/src/FileDetails/FileDetails.test.tsx +0 -1
  505. package/src/FileDetails/FileDetails.tsx +2 -2
  506. package/src/FileDetails/__snapshots__/FileDetails.test.tsx.snap +1 -1
  507. package/src/FileDetailsLabel/FileDetailsLabel.test.tsx +0 -1
  508. package/src/FileDetailsLabel/FileDetailsLabel.tsx +1 -1
  509. package/src/FileDetailsLabel/__snapshots__/FileDetailsLabel.test.tsx.snap +1 -1
  510. package/src/FileDropZone/FileDropZone.test.tsx +29 -1
  511. package/src/FileDropZone/FileDropZone.tsx +13 -3
  512. package/src/LoadingMessage/LoadingMessage.test.tsx +0 -1
  513. package/src/LoadingMessage/LoadingMessage.tsx +2 -2
  514. package/src/Message/CodeBlockMessage/CodeBlockMessage.scss +7 -0
  515. package/src/Message/CodeBlockMessage/CodeBlockMessage.tsx +105 -18
  516. package/src/Message/CodeBlockMessage/ExpandableSectionForSyntaxHighlighter.tsx +220 -0
  517. package/src/Message/ErrorMessage/ErrorMessage.tsx +0 -1
  518. package/src/Message/ImageMessage/ImageMessage.tsx +1 -2
  519. package/src/Message/LinkMessage/LinkMessage.tsx +0 -1
  520. package/src/Message/ListMessage/ListItemMessage.tsx +0 -1
  521. package/src/Message/ListMessage/OrderedListMessage.tsx +0 -1
  522. package/src/Message/ListMessage/UnorderedListMessage.tsx +0 -1
  523. package/src/Message/Message.scss +27 -0
  524. package/src/Message/Message.test.tsx +70 -6
  525. package/src/Message/Message.tsx +41 -17
  526. package/src/Message/MessageInput.tsx +5 -5
  527. package/src/Message/MessageLoading.tsx +0 -2
  528. package/src/Message/Plugins/rehypeMoveImagesOutOfParagraphs.ts +53 -0
  529. package/src/Message/QuickResponse/QuickResponse.tsx +9 -4
  530. package/src/Message/QuickStarts/FallbackImg.tsx +4 -3
  531. package/src/Message/QuickStarts/QuickStartTile.tsx +8 -4
  532. package/src/Message/QuickStarts/QuickStartTileDescription.test.tsx +0 -1
  533. package/src/Message/QuickStarts/QuickStartTileDescription.tsx +4 -3
  534. package/src/Message/QuickStarts/QuickStartTileHeader.tsx +2 -2
  535. package/src/Message/QuickStarts/types.ts +4 -3
  536. package/src/Message/TableMessage/TableMessage.tsx +4 -4
  537. package/src/Message/TableMessage/TbodyMessage.tsx +3 -3
  538. package/src/Message/TableMessage/TdMessage.tsx +1 -2
  539. package/src/Message/TableMessage/ThMessage.tsx +1 -2
  540. package/src/Message/TableMessage/TheadMessage.tsx +3 -2
  541. package/src/Message/TableMessage/TrMessage.tsx +4 -4
  542. package/src/Message/TextMessage/TextMessage.scss +25 -0
  543. package/src/Message/TextMessage/TextMessage.tsx +1 -2
  544. package/src/Message/UserFeedback/CloseButton.tsx +2 -2
  545. package/src/Message/UserFeedback/UserFeedback.scss +24 -3
  546. package/src/Message/UserFeedback/UserFeedback.test.tsx +13 -1
  547. package/src/Message/UserFeedback/UserFeedback.tsx +12 -8
  548. package/src/Message/UserFeedback/UserFeedbackComplete.test.tsx +4 -1
  549. package/src/Message/UserFeedback/UserFeedbackComplete.tsx +26 -16
  550. package/src/MessageBar/AttachButton.scss +10 -0
  551. package/src/MessageBar/AttachButton.test.tsx +56 -8
  552. package/src/MessageBar/AttachButton.tsx +21 -8
  553. package/src/MessageBar/MessageBar.scss +17 -0
  554. package/src/MessageBar/MessageBar.test.tsx +81 -30
  555. package/src/MessageBar/MessageBar.tsx +60 -25
  556. package/src/MessageBar/MicrophoneButton.scss +10 -0
  557. package/src/MessageBar/MicrophoneButton.tsx +15 -9
  558. package/src/MessageBar/SendButton.scss +10 -0
  559. package/src/MessageBar/SendButton.test.tsx +10 -7
  560. package/src/MessageBar/SendButton.tsx +9 -5
  561. package/src/MessageBar/StopButton.scss +10 -0
  562. package/src/MessageBar/StopButton.test.tsx +10 -7
  563. package/src/MessageBar/StopButton.tsx +9 -5
  564. package/src/MessageBox/JumpButton.test.tsx +4 -5
  565. package/src/MessageBox/JumpButton.tsx +3 -3
  566. package/src/MessageBox/MessageBox.scss +6 -0
  567. package/src/MessageBox/MessageBox.test.tsx +295 -5
  568. package/src/MessageBox/MessageBox.tsx +301 -82
  569. package/src/PreviewAttachment/PreviewAttachment.test.tsx +44 -2
  570. package/src/PreviewAttachment/PreviewAttachment.tsx +29 -7
  571. package/src/ResponseActions/ResponseActionButton.test.tsx +0 -1
  572. package/src/ResponseActions/ResponseActionButton.tsx +6 -5
  573. package/src/ResponseActions/ResponseActions.test.tsx +23 -3
  574. package/src/ResponseActions/ResponseActions.tsx +40 -10
  575. package/src/Settings/Settings.scss +11 -0
  576. package/src/Settings/SettingsForm.test.tsx +17 -1
  577. package/src/Settings/SettingsForm.tsx +8 -3
  578. package/src/SourceDetailsMenuItem/SourceDetailsMenuItem.tsx +2 -2
  579. package/src/SourcesCard/SourcesCard.scss +8 -0
  580. package/src/SourcesCard/SourcesCard.test.tsx +0 -1
  581. package/src/SourcesCard/SourcesCard.tsx +9 -8
  582. package/src/TermsOfUse/TermsOfUse.scss +20 -0
  583. package/src/TermsOfUse/TermsOfUse.test.tsx +0 -1
  584. package/src/TermsOfUse/TermsOfUse.tsx +15 -9
  585. package/tsconfig.cjs.json +0 -1
  586. package/tsconfig.json +3 -3
@@ -0,0 +1,536 @@
1
+ import React from 'react';
2
+
3
+ import { Bullseye, Brand, DropdownList, DropdownItem, DropdownGroup, SkipToContent } from '@patternfly/react-core';
4
+
5
+ import ChatbotToggle from '@patternfly/chatbot/dist/dynamic/ChatbotToggle';
6
+ import Chatbot, { ChatbotDisplayMode } from '@patternfly/chatbot/dist/dynamic/Chatbot';
7
+ import ChatbotContent from '@patternfly/chatbot/dist/dynamic/ChatbotContent';
8
+ import ChatbotWelcomePrompt from '@patternfly/chatbot/dist/dynamic/ChatbotWelcomePrompt';
9
+ import ChatbotFooter, { ChatbotFootnote } from '@patternfly/chatbot/dist/dynamic/ChatbotFooter';
10
+ import MessageBar from '@patternfly/chatbot/dist/dynamic/MessageBar';
11
+ import MessageBox, { MessageBoxHandle } from '@patternfly/chatbot/dist/dynamic/MessageBox';
12
+ import Message, { MessageProps } from '@patternfly/chatbot/dist/dynamic/Message';
13
+ import ChatbotConversationHistoryNav, {
14
+ Conversation
15
+ } from '@patternfly/chatbot/dist/dynamic/ChatbotConversationHistoryNav';
16
+ import ChatbotHeader, {
17
+ ChatbotHeaderMenu,
18
+ ChatbotHeaderMain,
19
+ ChatbotHeaderTitle,
20
+ ChatbotHeaderActions,
21
+ ChatbotHeaderSelectorDropdown,
22
+ ChatbotHeaderOptionsDropdown
23
+ } from '@patternfly/chatbot/dist/dynamic/ChatbotHeader';
24
+
25
+ import ExpandIcon from '@patternfly/react-icons/dist/esm/icons/expand-icon';
26
+ import OpenDrawerRightIcon from '@patternfly/react-icons/dist/esm/icons/open-drawer-right-icon';
27
+ import OutlinedWindowRestoreIcon from '@patternfly/react-icons/dist/esm/icons/outlined-window-restore-icon';
28
+
29
+ import PFHorizontalLogoColor from '../UI/PF-HorizontalLogo-Color.svg';
30
+ import PFHorizontalLogoReverse from '../UI/PF-HorizontalLogo-Reverse.svg';
31
+ import PFIconLogoColor from '../UI/PF-IconLogo-Color.svg';
32
+ import PFIconLogoReverse from '../UI/PF-IconLogo-Reverse.svg';
33
+ import userAvatar from '../Messages/user_avatar.svg';
34
+ import patternflyAvatar from '../Messages/patternfly_avatar.jpg';
35
+ import '@patternfly/react-core/dist/styles/base.css';
36
+ import '@patternfly/chatbot/dist/css/main.css';
37
+
38
+ const footnoteProps = {
39
+ label: 'ChatBot uses AI. Check for mistakes.',
40
+ popover: {
41
+ title: 'Verify information',
42
+ description: `While ChatBot strives for accuracy, AI is experimental and can make mistakes. We cannot guarantee that all information provided by ChatBot is up to date or without error. You should always verify responses using reliable sources, especially for crucial information and decision making.`,
43
+ bannerImage: {
44
+ src: 'https://cdn.dribbble.com/userupload/10651749/file/original-8a07b8e39d9e8bf002358c66fce1223e.gif',
45
+ alt: 'Example image for footnote popover'
46
+ },
47
+ cta: {
48
+ label: 'Dismiss',
49
+ onClick: () => {
50
+ alert('Do something!');
51
+ }
52
+ },
53
+ link: {
54
+ label: 'View AI policy',
55
+ url: 'https://www.redhat.com/'
56
+ }
57
+ }
58
+ };
59
+
60
+ const markdown = `A paragraph with *emphasis* and **strong importance**.
61
+
62
+ > A block quote with ~strikethrough~ and a URL: https://reactjs.org.
63
+
64
+ Here is an inline code - \`() => void\`
65
+
66
+ Here is some YAML code:
67
+
68
+ ~~~yaml
69
+ apiVersion: helm.openshift.io/v1beta1/
70
+ kind: HelmChartRepository
71
+ metadata:
72
+ name: azure-sample-repo0oooo00ooo
73
+ spec:
74
+ connectionConfig:
75
+ url: https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs
76
+ ~~~
77
+
78
+ Here is some JavaScript code:
79
+
80
+ ~~~js
81
+ import React from 'react';
82
+
83
+ const MessageLoading = () => (
84
+ <div className="pf-chatbot__message-loading">
85
+ <span className="pf-chatbot__message-loading-dots">
86
+ <span className="pf-v6-screen-reader">Loading message</span>
87
+ </span>
88
+ </div>
89
+ );
90
+
91
+ export default MessageLoading;
92
+
93
+ ~~~
94
+ `;
95
+
96
+ // It's important to set a date and timestamp prop since the Message components re-render.
97
+ // The timestamps re-render with them.
98
+ const date = new Date();
99
+
100
+ const initialMessages: MessageProps[] = [
101
+ {
102
+ id: '1',
103
+ role: 'user',
104
+ content: 'Hello, can you give me an example of what you can do?',
105
+ name: 'User',
106
+ avatar: userAvatar,
107
+ timestamp: date.toLocaleString(),
108
+ avatarProps: { isBordered: true }
109
+ },
110
+ {
111
+ id: '2',
112
+ role: 'bot',
113
+ content: markdown,
114
+ name: 'Bot',
115
+ avatar: patternflyAvatar,
116
+ timestamp: date.toLocaleString(),
117
+ actions: {
118
+ // eslint-disable-next-line no-console
119
+ positive: { onClick: () => console.log('Good response') },
120
+ // eslint-disable-next-line no-console
121
+ negative: { onClick: () => console.log('Bad response') },
122
+ // eslint-disable-next-line no-console
123
+ copy: { onClick: () => console.log('Copy') },
124
+ // eslint-disable-next-line no-console
125
+ download: { onClick: () => console.log('Download') },
126
+ // eslint-disable-next-line no-console
127
+ listen: { onClick: () => console.log('Listen') }
128
+ }
129
+ }
130
+ ];
131
+
132
+ const welcomePrompts = [
133
+ {
134
+ title: 'Set up account',
135
+ message: 'Choose the necessary settings and preferences for your account.'
136
+ },
137
+ {
138
+ title: 'Troubleshoot issue',
139
+ message: 'Find documentation and instructions to resolve your issue.'
140
+ }
141
+ ];
142
+
143
+ const initialConversations = {
144
+ Today: [{ id: '1', text: 'Hello, can you give me an example of what you can do?' }],
145
+ 'This month': [
146
+ {
147
+ id: '2',
148
+ text: 'Enterprise Linux installation and setup'
149
+ },
150
+ { id: '3', text: 'Troubleshoot system crash' }
151
+ ],
152
+ March: [
153
+ { id: '4', text: 'Ansible security and updates' },
154
+ { id: '5', text: 'Red Hat certification' },
155
+ { id: '6', text: 'Lightspeed user documentation' }
156
+ ],
157
+ February: [
158
+ { id: '7', text: 'Crashing pod assistance' },
159
+ { id: '8', text: 'OpenShift AI pipelines' },
160
+ { id: '9', text: 'Updating subscription plan' },
161
+ { id: '10', text: 'Red Hat licensing options' }
162
+ ],
163
+ January: [
164
+ { id: '11', text: 'RHEL system performance' },
165
+ { id: '12', text: 'Manage user accounts' }
166
+ ]
167
+ };
168
+
169
+ export const ChatbotScrollingDemo: React.FunctionComponent = () => {
170
+ const [chatbotVisible, setChatbotVisible] = React.useState<boolean>(true);
171
+ const [displayMode, setDisplayMode] = React.useState<ChatbotDisplayMode>(ChatbotDisplayMode.default);
172
+ const [messages, setMessages] = React.useState<MessageProps[]>(initialMessages);
173
+ const [selectedModel, setSelectedModel] = React.useState('Granite 7B');
174
+ const [isSendButtonDisabled, setIsSendButtonDisabled] = React.useState(false);
175
+ const [isDrawerOpen, setIsDrawerOpen] = React.useState(false);
176
+ const [conversations, setConversations] = React.useState<Conversation[] | { [key: string]: Conversation[] }>(
177
+ initialConversations
178
+ );
179
+ const [announcement, setAnnouncement] = React.useState<string>();
180
+ const toggleRef = React.useRef<HTMLButtonElement>(null);
181
+ const chatbotRef = React.useRef<HTMLDivElement>(null);
182
+ const historyRef = React.useRef<HTMLButtonElement>(null);
183
+ const messageBoxRef = React.useRef<MessageBoxHandle>(null); // ref to MessageBox will have isSmartScrollActive, scrollToTop and scrollToBottom
184
+ const scrollQueued = React.useRef(false);
185
+
186
+ // Auto-scrolls to the latest message
187
+ React.useLayoutEffect(() => {
188
+ if (!messageBoxRef.current?.isSmartScrollActive() || scrollQueued.current) {
189
+ return undefined;
190
+ }
191
+
192
+ let rafId = 0;
193
+ // don't scroll the first load - in this demo, we know we start with two messages
194
+ if (messages.length > 2) {
195
+ scrollQueued.current = true;
196
+
197
+ rafId = requestAnimationFrame(() => {
198
+ messageBoxRef.current?.scrollToBottom();
199
+ scrollQueued.current = false;
200
+ });
201
+ }
202
+
203
+ return () => {
204
+ cancelAnimationFrame(rafId);
205
+ scrollQueued.current = false;
206
+ };
207
+ // To scroll to the top of latest message just once, Use messages.length as a dependency instead of messages.
208
+ }, [messages, messageBoxRef]);
209
+
210
+ const onSelectModel = (
211
+ _event: React.MouseEvent<Element, MouseEvent> | undefined,
212
+ value: string | number | undefined
213
+ ) => {
214
+ setSelectedModel(value as string);
215
+ };
216
+
217
+ const onSelectDisplayMode = (
218
+ _event: React.MouseEvent<Element, MouseEvent> | undefined,
219
+ value: string | number | undefined
220
+ ) => {
221
+ setDisplayMode(value as ChatbotDisplayMode);
222
+ };
223
+
224
+ // you will likely want to come up with your own unique id function; this is for demo purposes only
225
+ const generateId = () => {
226
+ const id = Date.now() + Math.random();
227
+ return id.toString();
228
+ };
229
+
230
+ const handleSend = (message) => {
231
+ setIsSendButtonDisabled(true);
232
+ const newMessages: MessageProps[] = [];
233
+ // We can't use structuredClone since messages contains functions, but we can't mutate
234
+ // items that are going into state or the UI won't update correctly
235
+ messages.forEach((message) => newMessages.push(message));
236
+ // It's important to set a timestamp prop since the Message components re-render.
237
+ // The timestamps re-render with them.
238
+ const date = new Date();
239
+ newMessages.push({
240
+ id: generateId(),
241
+ role: 'user',
242
+ content: message,
243
+ name: 'User',
244
+ avatar: userAvatar,
245
+ timestamp: date.toLocaleString(),
246
+ avatarProps: { isBordered: true }
247
+ });
248
+ newMessages.push({
249
+ id: generateId(),
250
+ role: 'bot',
251
+ content: 'API response goes here',
252
+ name: 'Bot',
253
+ isLoading: true,
254
+ avatar: patternflyAvatar,
255
+ timestamp: date.toLocaleString()
256
+ });
257
+ setMessages(newMessages);
258
+ messageBoxRef.current?.scrollToBottom();
259
+ // make announcement to assistive devices that new messages have been added
260
+ setAnnouncement(`Message from User: ${message}. Message from Bot is loading.`);
261
+
262
+ // this is for demo purposes only; in a real situation, there would be an API response we would wait for
263
+ setTimeout(() => {
264
+ const loadedMessages: MessageProps[] = [];
265
+ // We can't use structuredClone since messages contains functions, but we can't mutate
266
+ // items that are going into state or the UI won't update correctly
267
+ newMessages.forEach((message) => loadedMessages.push(message));
268
+ const messageIndex = loadedMessages.length - 1;
269
+ loadedMessages.pop();
270
+ loadedMessages.push({
271
+ id: generateId(),
272
+ role: 'bot',
273
+ content: 'API response goes here.',
274
+ name: 'Bot',
275
+ isLoading: false,
276
+ avatar: patternflyAvatar,
277
+ timestamp: date.toLocaleString(),
278
+ actions: {
279
+ // eslint-disable-next-line no-console
280
+ positive: { onClick: () => console.log('Good response') },
281
+ // eslint-disable-next-line no-console
282
+ negative: { onClick: () => console.log('Bad response') },
283
+ // eslint-disable-next-line no-console
284
+ copy: { onClick: () => console.log('Copy') },
285
+ // eslint-disable-next-line no-console
286
+ download: { onClick: () => console.log('Download') },
287
+ // eslint-disable-next-line no-console
288
+ listen: { onClick: () => console.log('Listen') }
289
+ }
290
+ });
291
+
292
+ const longMessage =
293
+ `It includes a long message. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
294
+ magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
295
+ consequat. Duis aute irure dolor in reprehenderit in voluptatevelit esse cillum dolore eu fugiat nulla
296
+ pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
297
+ est laborum.`.repeat(2);
298
+
299
+ const contentChunks = longMessage.split(' ');
300
+ let chunkIndex = 0;
301
+
302
+ setMessages(loadedMessages);
303
+
304
+ let accumulatedContent = '';
305
+ let lastUpdateTime = 0;
306
+ const interval = setInterval(() => {
307
+ if (chunkIndex < contentChunks.length) {
308
+ accumulatedContent += ` ${contentChunks[chunkIndex]}`;
309
+ chunkIndex++;
310
+
311
+ // Only update every 100 ms or every 10 chunks
312
+ const now = Date.now();
313
+ const shouldUpdate = now - lastUpdateTime > 100 || chunkIndex % 10 === 0;
314
+
315
+ if (shouldUpdate) {
316
+ const updatedMessages = loadedMessages.map((msg, i) => {
317
+ if (i === messageIndex) {
318
+ return {
319
+ ...msg,
320
+ content: msg.content + accumulatedContent
321
+ };
322
+ }
323
+ return msg;
324
+ });
325
+
326
+ setMessages(updatedMessages);
327
+ lastUpdateTime = now;
328
+ }
329
+ } else {
330
+ setIsSendButtonDisabled(false);
331
+ clearInterval(interval);
332
+ }
333
+ }, 50);
334
+
335
+ // Scrolls to the bottom of the message box and resumes auto-scrolling
336
+ messageBoxRef.current?.scrollToBottom({ resumeSmartScroll: true });
337
+ // make announcement to assistive devices that new message has loaded
338
+ setAnnouncement(`Message from Bot: API response goes here`);
339
+ }, 100);
340
+ };
341
+
342
+ const findMatchingItems = (targetValue: string) => {
343
+ let filteredConversations = Object.entries(initialConversations).reduce((acc, [key, items]) => {
344
+ const filteredItems = items.filter((item) => item.text.toLowerCase().includes(targetValue.toLowerCase()));
345
+ if (filteredItems.length > 0) {
346
+ acc[key] = filteredItems;
347
+ }
348
+ return acc;
349
+ }, {});
350
+
351
+ // append message if no items are found
352
+ if (Object.keys(filteredConversations).length === 0) {
353
+ filteredConversations = [{ id: '13', noIcon: true, text: 'No results found' }];
354
+ }
355
+ return filteredConversations;
356
+ };
357
+
358
+ const horizontalLogo = (
359
+ <Bullseye>
360
+ <Brand className="show-light" src={PFHorizontalLogoColor} alt="PatternFly" />
361
+ <Brand className="show-dark" src={PFHorizontalLogoReverse} alt="PatternFly" />
362
+ </Bullseye>
363
+ );
364
+
365
+ const iconLogo = (
366
+ <>
367
+ <Brand className="show-light" src={PFIconLogoColor} alt="PatternFly" />
368
+ <Brand className="show-dark" src={PFIconLogoReverse} alt="PatternFly" />
369
+ </>
370
+ );
371
+
372
+ const handleSkipToContent = (e) => {
373
+ e.preventDefault();
374
+ /* eslint-disable indent */
375
+ switch (displayMode) {
376
+ case ChatbotDisplayMode.default:
377
+ if (!chatbotVisible && toggleRef.current) {
378
+ toggleRef.current.focus();
379
+ }
380
+ if (chatbotVisible && chatbotRef.current) {
381
+ chatbotRef.current.focus();
382
+ }
383
+ break;
384
+
385
+ case ChatbotDisplayMode.docked:
386
+ if (chatbotRef.current) {
387
+ chatbotRef.current.focus();
388
+ }
389
+ break;
390
+ default:
391
+ if (historyRef.current) {
392
+ historyRef.current.focus();
393
+ }
394
+ break;
395
+ }
396
+ /* eslint-enable indent */
397
+ };
398
+
399
+ return (
400
+ <>
401
+ <SkipToContent onClick={handleSkipToContent} href="#">
402
+ Skip to chatbot
403
+ </SkipToContent>
404
+ <ChatbotToggle
405
+ tooltipLabel="Chatbot"
406
+ isChatbotVisible={chatbotVisible}
407
+ onToggleChatbot={function () {
408
+ setChatbotVisible(!chatbotVisible);
409
+ }}
410
+ id="chatbot-toggle"
411
+ ref={toggleRef}
412
+ />
413
+ <Chatbot isVisible={chatbotVisible} displayMode={displayMode} ref={chatbotRef}>
414
+ <ChatbotConversationHistoryNav
415
+ displayMode={displayMode}
416
+ onDrawerToggle={() => {
417
+ setIsDrawerOpen(!isDrawerOpen);
418
+ setConversations(initialConversations);
419
+ }}
420
+ isDrawerOpen={isDrawerOpen}
421
+ setIsDrawerOpen={setIsDrawerOpen}
422
+ activeItemId="1"
423
+ // eslint-disable-next-line no-console
424
+ onSelectActiveItem={(e, selectedItem) => console.log(`Selected history item with id ${selectedItem}`)}
425
+ conversations={conversations}
426
+ onNewChat={() => {
427
+ setIsDrawerOpen(!isDrawerOpen);
428
+ setMessages([]);
429
+ setConversations(initialConversations);
430
+ }}
431
+ handleTextInputChange={(value: string) => {
432
+ if (value === '') {
433
+ setConversations(initialConversations);
434
+ }
435
+ // this is where you would perform search on the items in the drawer
436
+ // and update the state
437
+ const newConversations: { [key: string]: Conversation[] } = findMatchingItems(value);
438
+ setConversations(newConversations);
439
+ }}
440
+ drawerContent={
441
+ <>
442
+ <ChatbotHeader>
443
+ <ChatbotHeaderMain>
444
+ <ChatbotHeaderMenu
445
+ ref={historyRef}
446
+ aria-expanded={isDrawerOpen}
447
+ onMenuToggle={() => setIsDrawerOpen(!isDrawerOpen)}
448
+ />
449
+ <ChatbotHeaderTitle
450
+ displayMode={displayMode}
451
+ showOnFullScreen={horizontalLogo}
452
+ showOnDefault={iconLogo}
453
+ ></ChatbotHeaderTitle>
454
+ </ChatbotHeaderMain>
455
+ <ChatbotHeaderActions>
456
+ <ChatbotHeaderSelectorDropdown value={selectedModel} onSelect={onSelectModel}>
457
+ <DropdownList>
458
+ <DropdownItem value="Granite 7B" key="granite">
459
+ Granite 7B
460
+ </DropdownItem>
461
+ <DropdownItem value="Llama 3.0" key="llama">
462
+ Llama 3.0
463
+ </DropdownItem>
464
+ <DropdownItem value="Mistral 3B" key="mistral">
465
+ Mistral 3B
466
+ </DropdownItem>
467
+ </DropdownList>
468
+ </ChatbotHeaderSelectorDropdown>
469
+ <ChatbotHeaderOptionsDropdown onSelect={onSelectDisplayMode}>
470
+ <DropdownGroup label="Display mode">
471
+ <DropdownList>
472
+ <DropdownItem
473
+ value={ChatbotDisplayMode.default}
474
+ key="switchDisplayOverlay"
475
+ icon={<OutlinedWindowRestoreIcon aria-hidden />}
476
+ isSelected={displayMode === ChatbotDisplayMode.default}
477
+ >
478
+ <span>Overlay</span>
479
+ </DropdownItem>
480
+ <DropdownItem
481
+ value={ChatbotDisplayMode.docked}
482
+ key="switchDisplayDock"
483
+ icon={<OpenDrawerRightIcon aria-hidden />}
484
+ isSelected={displayMode === ChatbotDisplayMode.docked}
485
+ >
486
+ <span>Dock to window</span>
487
+ </DropdownItem>
488
+ <DropdownItem
489
+ value={ChatbotDisplayMode.fullscreen}
490
+ key="switchDisplayFullscreen"
491
+ icon={<ExpandIcon aria-hidden />}
492
+ isSelected={displayMode === ChatbotDisplayMode.fullscreen}
493
+ >
494
+ <span>Fullscreen</span>
495
+ </DropdownItem>
496
+ </DropdownList>
497
+ </DropdownGroup>
498
+ </ChatbotHeaderOptionsDropdown>
499
+ </ChatbotHeaderActions>
500
+ </ChatbotHeader>
501
+ <ChatbotContent>
502
+ {/* Update the announcement prop on MessageBox whenever a new message is sent
503
+ so that users of assistive devices receive sufficient context */}
504
+ <MessageBox announcement={announcement} enableSmartScroll ref={messageBoxRef}>
505
+ <ChatbotWelcomePrompt
506
+ title="Hi, ChatBot User!"
507
+ description="How can I help you today?"
508
+ prompts={welcomePrompts}
509
+ />
510
+ {messages.map((message, index) => {
511
+ if (index === messages.length - 1) {
512
+ return (
513
+ <>
514
+ <Message key={message.id} {...message} />
515
+ </>
516
+ );
517
+ }
518
+ return <Message key={message.id} {...message} />;
519
+ })}
520
+ </MessageBox>
521
+ </ChatbotContent>
522
+ <ChatbotFooter>
523
+ <MessageBar
524
+ onSendMessage={handleSend}
525
+ hasMicrophoneButton
526
+ isSendButtonDisabled={isSendButtonDisabled}
527
+ />
528
+ <ChatbotFootnote {...footnoteProps} />
529
+ </ChatbotFooter>
530
+ </>
531
+ }
532
+ ></ChatbotConversationHistoryNav>
533
+ </Chatbot>
534
+ </>
535
+ );
536
+ };
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import { useEffect, useRef, useState, FunctionComponent, MouseEvent } from 'react';
2
2
 
3
3
  import {
4
4
  Bullseye,
@@ -86,8 +86,6 @@ spec:
86
86
  Here is some JavaScript code:
87
87
 
88
88
  ~~~js
89
- import React from 'react';
90
-
91
89
  const MessageLoading = () => (
92
90
  <div className="pf-chatbot__message-loading">
93
91
  <span className="pf-chatbot__message-loading-dots">
@@ -130,7 +128,7 @@ const initialMessages: MessageProps[] = [
130
128
  // eslint-disable-next-line no-console
131
129
  copy: { onClick: () => console.log('Copy') },
132
130
  // eslint-disable-next-line no-console
133
- share: { onClick: () => console.log('Share') },
131
+ download: { onClick: () => console.log('Download') },
134
132
  // eslint-disable-next-line no-console
135
133
  listen: { onClick: () => console.log('Listen') }
136
134
  }
@@ -174,32 +172,29 @@ const initialConversations = {
174
172
  ]
175
173
  };
176
174
 
177
- export const EmbeddedChatbotDemo: React.FunctionComponent = () => {
178
- const [messages, setMessages] = React.useState<MessageProps[]>(initialMessages);
179
- const [selectedModel, setSelectedModel] = React.useState('Granite 7B');
180
- const [isSendButtonDisabled, setIsSendButtonDisabled] = React.useState(false);
181
- const [isDrawerOpen, setIsDrawerOpen] = React.useState(false);
182
- const [conversations, setConversations] = React.useState<Conversation[] | { [key: string]: Conversation[] }>(
175
+ export const EmbeddedChatbotDemo: FunctionComponent = () => {
176
+ const [messages, setMessages] = useState<MessageProps[]>(initialMessages);
177
+ const [selectedModel, setSelectedModel] = useState('Granite 7B');
178
+ const [isSendButtonDisabled, setIsSendButtonDisabled] = useState(false);
179
+ const [isDrawerOpen, setIsDrawerOpen] = useState(false);
180
+ const [conversations, setConversations] = useState<Conversation[] | { [key: string]: Conversation[] }>(
183
181
  initialConversations
184
182
  );
185
- const [isSidebarOpen, setIsSidebarOpen] = React.useState(false);
186
- const [announcement, setAnnouncement] = React.useState<string>();
187
- const scrollToBottomRef = React.useRef<HTMLDivElement>(null);
188
- const historyRef = React.useRef<HTMLButtonElement>(null);
183
+ const [isSidebarOpen, setIsSidebarOpen] = useState(false);
184
+ const [announcement, setAnnouncement] = useState<string>();
185
+ const scrollToBottomRef = useRef<HTMLDivElement>(null);
186
+ const historyRef = useRef<HTMLButtonElement>(null);
189
187
 
190
188
  const displayMode = ChatbotDisplayMode.embedded;
191
- // Autu-scrolls to the latest message
192
- React.useEffect(() => {
189
+ // Auto-scrolls to the latest message
190
+ useEffect(() => {
193
191
  // don't scroll the first load - in this demo, we know we start with two messages
194
192
  if (messages.length > 2) {
195
193
  scrollToBottomRef.current?.scrollIntoView({ behavior: 'smooth' });
196
194
  }
197
195
  }, [messages]);
198
196
 
199
- const onSelectModel = (
200
- _event: React.MouseEvent<Element, MouseEvent> | undefined,
201
- value: string | number | undefined
202
- ) => {
197
+ const onSelectModel = (_event: MouseEvent<Element, MouseEvent> | undefined, value: string | number | undefined) => {
203
198
  setSelectedModel(value as string);
204
199
  };
205
200
 
@@ -262,7 +257,7 @@ export const EmbeddedChatbotDemo: React.FunctionComponent = () => {
262
257
  // eslint-disable-next-line no-console
263
258
  copy: { onClick: () => console.log('Copy') },
264
259
  // eslint-disable-next-line no-console
265
- share: { onClick: () => console.log('Share') },
260
+ download: { onClick: () => console.log('Download') },
266
261
  // eslint-disable-next-line no-console
267
262
  listen: { onClick: () => console.log('Listen') }
268
263
  },
@@ -327,7 +322,7 @@ export const EmbeddedChatbotDemo: React.FunctionComponent = () => {
327
322
  </PageSidebar>
328
323
  );
329
324
 
330
- const skipToChatbot = (event: React.MouseEvent) => {
325
+ const skipToChatbot = (event: MouseEvent) => {
331
326
  event.preventDefault();
332
327
  if (historyRef.current) {
333
328
  historyRef.current.focus();
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import { useState, useRef, useCallback, useEffect, FunctionComponent } from 'react';
2
2
 
3
3
  import {
4
4
  Page,
@@ -27,9 +27,9 @@ import '@patternfly/react-core/dist/styles/base.css';
27
27
  import '@patternfly/chatbot/dist/css/main.css';
28
28
 
29
29
  export const CompareChild = ({ name, input, hasNewInput, setIsSendButtonDisabled }) => {
30
- const [messages, setMessages] = React.useState<MessageProps[]>([]);
31
- const [announcement, setAnnouncement] = React.useState<string>();
32
- const scrollToBottomRef = React.useRef<HTMLDivElement>(null);
30
+ const [messages, setMessages] = useState<MessageProps[]>([]);
31
+ const [announcement, setAnnouncement] = useState<string>();
32
+ const scrollToBottomRef = useRef<HTMLDivElement>(null);
33
33
  const displayMode = ChatbotDisplayMode.embedded;
34
34
 
35
35
  // you will likely want to come up with your own unique id function; this is for demo purposes only
@@ -38,7 +38,7 @@ export const CompareChild = ({ name, input, hasNewInput, setIsSendButtonDisabled
38
38
  return id.toString();
39
39
  };
40
40
 
41
- const handleSend = React.useCallback(
41
+ const handleSend = useCallback(
42
42
  (input: string) => {
43
43
  const date = new Date();
44
44
  const newMessages: MessageProps[] = [];
@@ -86,7 +86,7 @@ export const CompareChild = ({ name, input, hasNewInput, setIsSendButtonDisabled
86
86
  // eslint-disable-next-line no-console
87
87
  copy: { onClick: () => console.log('Copy') },
88
88
  // eslint-disable-next-line no-console
89
- share: { onClick: () => console.log('Share') },
89
+ download: { onClick: () => console.log('Download') },
90
90
  // eslint-disable-next-line no-console
91
91
  listen: { onClick: () => console.log('Listen') }
92
92
  },
@@ -101,14 +101,14 @@ export const CompareChild = ({ name, input, hasNewInput, setIsSendButtonDisabled
101
101
  [messages, name, setIsSendButtonDisabled]
102
102
  );
103
103
 
104
- React.useEffect(() => {
104
+ useEffect(() => {
105
105
  if (input) {
106
106
  handleSend(input);
107
107
  }
108
108
  }, [hasNewInput, input]);
109
109
 
110
110
  // Auto-scrolls to the latest message
111
- React.useEffect(() => {
111
+ useEffect(() => {
112
112
  // don't scroll the first load, but scroll if there's a current stream or a new source has popped up
113
113
  if (messages.length > 0) {
114
114
  scrollToBottomRef.current?.scrollIntoView();
@@ -133,11 +133,11 @@ export const CompareChild = ({ name, input, hasNewInput, setIsSendButtonDisabled
133
133
  );
134
134
  };
135
135
 
136
- export const EmbeddedComparisonChatbotDemo: React.FunctionComponent = () => {
137
- const [input, setInput] = React.useState<string>();
138
- const [hasNewInput, setHasNewInput] = React.useState(false);
139
- const [isSidebarOpen, setIsSidebarOpen] = React.useState(false);
140
- const [isSendButtonDisabled, setIsSendButtonDisabled] = React.useState(false);
136
+ export const EmbeddedComparisonChatbotDemo: FunctionComponent = () => {
137
+ const [input, setInput] = useState<string>();
138
+ const [hasNewInput, setHasNewInput] = useState(false);
139
+ const [isSidebarOpen, setIsSidebarOpen] = useState(false);
140
+ const [isSendButtonDisabled, setIsSendButtonDisabled] = useState(false);
141
141
 
142
142
  const handleSend = (value: string) => {
143
143
  setInput(value);