@patternfly/chatbot 6.3.0-prerelease.9 → 6.3.1

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 (559) 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 +12 -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 +1 -2
  8. package/dist/cjs/Chatbot/Chatbot.js +4 -9
  9. package/dist/cjs/Chatbot/Chatbot.test.js +11 -11
  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 +2 -2
  20. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +16 -33
  21. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +56 -64
  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 +3 -3
  27. package/dist/cjs/ChatbotFooter/ChatbotFooter.js +2 -15
  28. package/dist/cjs/ChatbotFooter/ChatbotFooter.test.js +7 -7
  29. package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.js +28 -28
  30. package/dist/cjs/ChatbotFooter/ChatbotFootnote.d.ts +3 -3
  31. package/dist/cjs/ChatbotFooter/ChatbotFootnote.js +10 -23
  32. package/dist/cjs/ChatbotHeader/ChatbotHeader.d.ts +3 -3
  33. package/dist/cjs/ChatbotHeader/ChatbotHeader.js +2 -7
  34. package/dist/cjs/ChatbotHeader/ChatbotHeader.test.js +5 -5
  35. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.d.ts +2 -2
  36. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.js +2 -5
  37. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.js +5 -5
  38. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +1 -2
  39. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.js +5 -10
  40. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.js +7 -10
  41. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.d.ts +2 -2
  42. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.js +2 -5
  43. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.js +5 -5
  44. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.d.ts +2 -2
  45. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.js +5 -7
  46. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.js +7 -10
  47. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.d.ts +6 -3
  48. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +8 -9
  49. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +19 -21
  50. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.d.ts +8 -3
  51. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +11 -12
  52. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +17 -19
  53. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.d.ts +2 -2
  54. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.js +2 -5
  55. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.js +23 -23
  56. package/dist/cjs/ChatbotModal/ChatbotModal.d.ts +2 -2
  57. package/dist/cjs/ChatbotModal/ChatbotModal.js +3 -9
  58. package/dist/cjs/ChatbotModal/ChatbotModal.test.js +4 -16
  59. package/dist/cjs/ChatbotPopover/ChatbotPopover.d.ts +2 -2
  60. package/dist/cjs/ChatbotPopover/ChatbotPopover.js +2 -8
  61. package/dist/cjs/ChatbotToggle/ChatbotToggle.d.ts +1 -2
  62. package/dist/cjs/ChatbotToggle/ChatbotToggle.js +8 -13
  63. package/dist/cjs/ChatbotToggle/ChatbotToggle.test.js +25 -25
  64. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.d.ts +2 -2
  65. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.js +6 -20
  66. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +16 -16
  67. package/dist/cjs/CodeModal/CodeModal.d.ts +8 -2
  68. package/dist/cjs/CodeModal/CodeModal.js +8 -20
  69. package/dist/cjs/CodeModal/CodeModal.test.js +23 -4
  70. package/dist/cjs/Compare/Compare.d.ts +2 -2
  71. package/dist/cjs/Compare/Compare.js +7 -16
  72. package/dist/cjs/Compare/Compare.test.js +7 -9
  73. package/dist/cjs/FileDetails/FileDetails.d.ts +2 -2
  74. package/dist/cjs/FileDetails/FileDetails.js +2 -15
  75. package/dist/cjs/FileDetails/FileDetails.test.js +10 -10
  76. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.d.ts +2 -2
  77. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.js +2 -5
  78. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.test.js +21 -21
  79. package/dist/cjs/FileDropZone/FileDropZone.d.ts +23 -2
  80. package/dist/cjs/FileDropZone/FileDropZone.js +11 -9
  81. package/dist/cjs/FileDropZone/FileDropZone.test.js +86 -5
  82. package/dist/cjs/LoadingMessage/LoadingMessage.d.ts +2 -2
  83. package/dist/cjs/LoadingMessage/LoadingMessage.js +2 -10
  84. package/dist/cjs/LoadingMessage/LoadingMessage.test.js +6 -6
  85. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.d.ts +20 -3
  86. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.js +30 -21
  87. package/dist/cjs/Message/ErrorMessage/ErrorMessage.d.ts +1 -2
  88. package/dist/cjs/Message/ErrorMessage/ErrorMessage.js +5 -8
  89. package/dist/cjs/Message/ImageMessage/ImageMessage.d.ts +1 -2
  90. package/dist/cjs/Message/ImageMessage/ImageMessage.js +2 -8
  91. package/dist/cjs/Message/LinkMessage/LinkMessage.d.ts +1 -2
  92. package/dist/cjs/Message/LinkMessage/LinkMessage.js +6 -9
  93. package/dist/cjs/Message/ListMessage/ListItemMessage.d.ts +1 -2
  94. package/dist/cjs/Message/ListMessage/ListItemMessage.js +2 -8
  95. package/dist/cjs/Message/ListMessage/OrderedListMessage.d.ts +1 -2
  96. package/dist/cjs/Message/ListMessage/OrderedListMessage.js +2 -9
  97. package/dist/cjs/Message/ListMessage/UnorderedListMessage.d.ts +1 -2
  98. package/dist/cjs/Message/ListMessage/UnorderedListMessage.js +2 -9
  99. package/dist/cjs/Message/Message.d.ts +24 -8
  100. package/dist/cjs/Message/Message.js +49 -71
  101. package/dist/cjs/Message/Message.test.js +112 -82
  102. package/dist/cjs/Message/MessageInput.d.ts +2 -2
  103. package/dist/cjs/Message/MessageInput.js +5 -14
  104. package/dist/cjs/Message/MessageLoading.d.ts +1 -2
  105. package/dist/cjs/Message/MessageLoading.js +3 -8
  106. package/dist/cjs/Message/Plugins/index.d.ts +1 -0
  107. package/dist/cjs/Message/Plugins/index.js +5 -0
  108. package/dist/cjs/Message/Plugins/rehypeCodeBlockToggle.d.ts +2 -0
  109. package/dist/cjs/Message/Plugins/rehypeCodeBlockToggle.js +24 -0
  110. package/dist/cjs/Message/Plugins/rehypeMoveImagesOutOfParagraphs.d.ts +2 -0
  111. package/dist/cjs/Message/Plugins/rehypeMoveImagesOutOfParagraphs.js +47 -0
  112. package/dist/cjs/Message/QuickResponse/QuickResponse.d.ts +2 -2
  113. package/dist/cjs/Message/QuickResponse/QuickResponse.js +7 -9
  114. package/dist/cjs/Message/QuickStarts/FallbackImg.d.ts +2 -2
  115. package/dist/cjs/Message/QuickStarts/FallbackImg.js +5 -27
  116. package/dist/cjs/Message/QuickStarts/QuickStartTile.d.ts +2 -2
  117. package/dist/cjs/Message/QuickStarts/QuickStartTile.js +7 -43
  118. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.d.ts +2 -2
  119. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.js +9 -38
  120. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.js +16 -16
  121. package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.d.ts +2 -2
  122. package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.js +2 -26
  123. package/dist/cjs/Message/QuickStarts/types.d.ts +4 -3
  124. package/dist/cjs/Message/TableMessage/TableMessage.d.ts +1 -2
  125. package/dist/cjs/Message/TableMessage/TableMessage.js +8 -10
  126. package/dist/cjs/Message/TableMessage/TbodyMessage.d.ts +2 -3
  127. package/dist/cjs/Message/TableMessage/TbodyMessage.js +7 -9
  128. package/dist/cjs/Message/TableMessage/TdMessage.d.ts +1 -2
  129. package/dist/cjs/Message/TableMessage/TdMessage.js +2 -8
  130. package/dist/cjs/Message/TableMessage/ThMessage.d.ts +1 -2
  131. package/dist/cjs/Message/TableMessage/ThMessage.js +2 -8
  132. package/dist/cjs/Message/TableMessage/TheadMessage.d.ts +1 -2
  133. package/dist/cjs/Message/TableMessage/TheadMessage.js +2 -8
  134. package/dist/cjs/Message/TableMessage/TrMessage.d.ts +2 -3
  135. package/dist/cjs/Message/TableMessage/TrMessage.js +8 -10
  136. package/dist/cjs/Message/TextMessage/TextMessage.d.ts +1 -2
  137. package/dist/cjs/Message/TextMessage/TextMessage.js +2 -9
  138. package/dist/cjs/Message/UserFeedback/CloseButton.d.ts +2 -2
  139. package/dist/cjs/Message/UserFeedback/CloseButton.js +2 -8
  140. package/dist/cjs/Message/UserFeedback/UserFeedback.d.ts +2 -2
  141. package/dist/cjs/Message/UserFeedback/UserFeedback.js +12 -23
  142. package/dist/cjs/Message/UserFeedback/UserFeedback.test.js +53 -53
  143. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.d.ts +2 -2
  144. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.js +20 -44
  145. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.js +81 -91
  146. package/dist/cjs/Message/index.d.ts +1 -0
  147. package/dist/cjs/Message/index.js +3 -1
  148. package/dist/cjs/MessageBar/AttachButton.d.ts +25 -2
  149. package/dist/cjs/MessageBar/AttachButton.js +10 -20
  150. package/dist/cjs/MessageBar/AttachButton.test.js +102 -24
  151. package/dist/cjs/MessageBar/MessageBar.d.ts +31 -3
  152. package/dist/cjs/MessageBar/MessageBar.js +30 -32
  153. package/dist/cjs/MessageBar/MessageBar.test.js +122 -108
  154. package/dist/cjs/MessageBar/MicrophoneButton.d.ts +2 -2
  155. package/dist/cjs/MessageBar/MicrophoneButton.js +7 -14
  156. package/dist/cjs/MessageBar/SendButton.d.ts +3 -2
  157. package/dist/cjs/MessageBar/SendButton.js +3 -11
  158. package/dist/cjs/MessageBar/SendButton.test.js +15 -15
  159. package/dist/cjs/MessageBar/StopButton.d.ts +3 -2
  160. package/dist/cjs/MessageBar/StopButton.js +3 -12
  161. package/dist/cjs/MessageBar/StopButton.test.js +15 -15
  162. package/dist/cjs/MessageBox/JumpButton.d.ts +2 -2
  163. package/dist/cjs/MessageBox/JumpButton.js +2 -10
  164. package/dist/cjs/MessageBox/JumpButton.test.js +10 -10
  165. package/dist/cjs/MessageBox/MessageBox.d.ts +21 -5
  166. package/dist/cjs/MessageBox/MessageBox.js +170 -45
  167. package/dist/cjs/MessageBox/MessageBox.test.js +219 -6
  168. package/dist/cjs/PreviewAttachment/PreviewAttachment.d.ts +12 -2
  169. package/dist/cjs/PreviewAttachment/PreviewAttachment.js +3 -6
  170. package/dist/cjs/PreviewAttachment/PreviewAttachment.test.d.ts +1 -1
  171. package/dist/cjs/PreviewAttachment/PreviewAttachment.test.js +34 -12
  172. package/dist/cjs/ResponseActions/ResponseActionButton.d.ts +5 -5
  173. package/dist/cjs/ResponseActions/ResponseActionButton.js +5 -8
  174. package/dist/cjs/ResponseActions/ResponseActionButton.test.js +19 -19
  175. package/dist/cjs/ResponseActions/ResponseActions.d.ts +7 -3
  176. package/dist/cjs/ResponseActions/ResponseActions.js +39 -18
  177. package/dist/cjs/ResponseActions/ResponseActions.test.js +120 -41
  178. package/dist/cjs/Settings/SettingsForm.d.ts +2 -2
  179. package/dist/cjs/Settings/SettingsForm.js +2 -8
  180. package/dist/cjs/Settings/SettingsForm.test.js +9 -12
  181. package/dist/cjs/SourceDetailsMenuItem/SourceDetailsMenuItem.d.ts +2 -2
  182. package/dist/cjs/SourceDetailsMenuItem/SourceDetailsMenuItem.js +2 -11
  183. package/dist/cjs/SourcesCard/SourcesCard.d.ts +12 -3
  184. package/dist/cjs/SourcesCard/SourcesCard.js +17 -42
  185. package/dist/cjs/SourcesCard/SourcesCard.test.js +70 -60
  186. package/dist/cjs/TermsOfUse/TermsOfUse.d.ts +3 -3
  187. package/dist/cjs/TermsOfUse/TermsOfUse.js +4 -16
  188. package/dist/cjs/TermsOfUse/TermsOfUse.test.js +31 -33
  189. package/dist/css/main.css +15 -7
  190. package/dist/css/main.css.map +1 -1
  191. package/dist/esm/AttachMenu/AttachMenu.d.ts +2 -2
  192. package/dist/esm/AttachMenu/AttachMenu.js +2 -9
  193. package/dist/esm/AttachmentEdit/AttachmentEdit.d.ts +12 -2
  194. package/dist/esm/AttachmentEdit/AttachmentEdit.js +3 -6
  195. package/dist/esm/AttachmentEdit/AttachmentEdit.test.d.ts +1 -1
  196. package/dist/esm/AttachmentEdit/AttachmentEdit.test.js +30 -5
  197. package/dist/esm/Chatbot/Chatbot.d.ts +1 -2
  198. package/dist/esm/Chatbot/Chatbot.js +4 -6
  199. package/dist/esm/Chatbot/Chatbot.test.js +6 -6
  200. package/dist/esm/ChatbotAlert/ChatbotAlert.d.ts +2 -2
  201. package/dist/esm/ChatbotAlert/ChatbotAlert.js +4 -5
  202. package/dist/esm/ChatbotAlert/ChatbotAlert.test.js +4 -4
  203. package/dist/esm/ChatbotContent/ChatbotContent.d.ts +3 -3
  204. package/dist/esm/ChatbotContent/ChatbotContent.js +2 -5
  205. package/dist/esm/ChatbotContent/ChatbotContent.test.js +3 -3
  206. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +2 -2
  207. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +7 -11
  208. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.js +8 -10
  209. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +2 -2
  210. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +16 -33
  211. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +26 -34
  212. package/dist/esm/ChatbotConversationHistoryNav/EmptyState.d.ts +2 -2
  213. package/dist/esm/ChatbotConversationHistoryNav/EmptyState.js +2 -6
  214. package/dist/esm/ChatbotConversationHistoryNav/LoadingState.d.ts +2 -2
  215. package/dist/esm/ChatbotConversationHistoryNav/LoadingState.js +2 -22
  216. package/dist/esm/ChatbotFooter/ChatbotFooter.d.ts +3 -3
  217. package/dist/esm/ChatbotFooter/ChatbotFooter.js +2 -12
  218. package/dist/esm/ChatbotFooter/ChatbotFooter.test.js +4 -4
  219. package/dist/esm/ChatbotFooter/ChatbotFooternote.test.js +5 -5
  220. package/dist/esm/ChatbotFooter/ChatbotFootnote.d.ts +3 -3
  221. package/dist/esm/ChatbotFooter/ChatbotFootnote.js +10 -23
  222. package/dist/esm/ChatbotHeader/ChatbotHeader.d.ts +3 -3
  223. package/dist/esm/ChatbotHeader/ChatbotHeader.js +2 -4
  224. package/dist/esm/ChatbotHeader/ChatbotHeader.test.js +3 -3
  225. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.d.ts +2 -2
  226. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.js +2 -2
  227. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.js +3 -3
  228. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +1 -2
  229. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.js +5 -7
  230. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.js +4 -4
  231. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.d.ts +2 -2
  232. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.js +2 -2
  233. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.js +3 -3
  234. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.d.ts +2 -2
  235. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.js +5 -7
  236. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.js +4 -4
  237. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.d.ts +6 -3
  238. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +8 -9
  239. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +9 -8
  240. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.d.ts +8 -3
  241. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +11 -9
  242. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +9 -8
  243. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.d.ts +2 -2
  244. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.js +2 -2
  245. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.js +12 -12
  246. package/dist/esm/ChatbotModal/ChatbotModal.d.ts +2 -2
  247. package/dist/esm/ChatbotModal/ChatbotModal.js +3 -6
  248. package/dist/esm/ChatbotModal/ChatbotModal.test.js +2 -14
  249. package/dist/esm/ChatbotPopover/ChatbotPopover.d.ts +2 -2
  250. package/dist/esm/ChatbotPopover/ChatbotPopover.js +2 -5
  251. package/dist/esm/ChatbotToggle/ChatbotToggle.d.ts +1 -2
  252. package/dist/esm/ChatbotToggle/ChatbotToggle.js +8 -13
  253. package/dist/esm/ChatbotToggle/ChatbotToggle.test.js +8 -8
  254. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.d.ts +2 -2
  255. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.js +6 -17
  256. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +8 -8
  257. package/dist/esm/CodeModal/CodeModal.d.ts +8 -2
  258. package/dist/esm/CodeModal/CodeModal.js +8 -20
  259. package/dist/esm/CodeModal/CodeModal.test.js +22 -3
  260. package/dist/esm/Compare/Compare.d.ts +2 -2
  261. package/dist/esm/Compare/Compare.js +7 -13
  262. package/dist/esm/Compare/Compare.test.js +4 -6
  263. package/dist/esm/FileDetails/FileDetails.d.ts +2 -2
  264. package/dist/esm/FileDetails/FileDetails.js +2 -15
  265. package/dist/esm/FileDetails/FileDetails.test.js +4 -4
  266. package/dist/esm/FileDetailsLabel/FileDetailsLabel.d.ts +2 -2
  267. package/dist/esm/FileDetailsLabel/FileDetailsLabel.js +2 -5
  268. package/dist/esm/FileDetailsLabel/FileDetailsLabel.test.js +9 -9
  269. package/dist/esm/FileDropZone/FileDropZone.d.ts +23 -2
  270. package/dist/esm/FileDropZone/FileDropZone.js +11 -6
  271. package/dist/esm/FileDropZone/FileDropZone.test.js +84 -3
  272. package/dist/esm/LoadingMessage/LoadingMessage.d.ts +2 -2
  273. package/dist/esm/LoadingMessage/LoadingMessage.js +2 -10
  274. package/dist/esm/LoadingMessage/LoadingMessage.test.js +3 -3
  275. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.d.ts +20 -3
  276. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.js +31 -19
  277. package/dist/esm/Message/ErrorMessage/ErrorMessage.d.ts +1 -2
  278. package/dist/esm/Message/ErrorMessage/ErrorMessage.js +5 -5
  279. package/dist/esm/Message/ImageMessage/ImageMessage.d.ts +1 -2
  280. package/dist/esm/Message/ImageMessage/ImageMessage.js +2 -5
  281. package/dist/esm/Message/LinkMessage/LinkMessage.d.ts +1 -2
  282. package/dist/esm/Message/LinkMessage/LinkMessage.js +6 -6
  283. package/dist/esm/Message/ListMessage/ListItemMessage.d.ts +1 -2
  284. package/dist/esm/Message/ListMessage/ListItemMessage.js +2 -5
  285. package/dist/esm/Message/ListMessage/OrderedListMessage.d.ts +1 -2
  286. package/dist/esm/Message/ListMessage/OrderedListMessage.js +2 -6
  287. package/dist/esm/Message/ListMessage/UnorderedListMessage.d.ts +1 -2
  288. package/dist/esm/Message/ListMessage/UnorderedListMessage.js +2 -6
  289. package/dist/esm/Message/Message.d.ts +24 -8
  290. package/dist/esm/Message/Message.js +49 -71
  291. package/dist/esm/Message/Message.test.js +112 -82
  292. package/dist/esm/Message/MessageInput.d.ts +2 -2
  293. package/dist/esm/Message/MessageInput.js +5 -11
  294. package/dist/esm/Message/MessageLoading.d.ts +1 -2
  295. package/dist/esm/Message/MessageLoading.js +2 -4
  296. package/dist/esm/Message/Plugins/index.d.ts +1 -0
  297. package/dist/esm/Message/Plugins/index.js +1 -0
  298. package/dist/esm/Message/Plugins/rehypeCodeBlockToggle.d.ts +2 -0
  299. package/dist/esm/Message/Plugins/rehypeCodeBlockToggle.js +20 -0
  300. package/dist/esm/Message/Plugins/rehypeMoveImagesOutOfParagraphs.d.ts +2 -0
  301. package/dist/esm/Message/Plugins/rehypeMoveImagesOutOfParagraphs.js +43 -0
  302. package/dist/esm/Message/QuickResponse/QuickResponse.d.ts +2 -2
  303. package/dist/esm/Message/QuickResponse/QuickResponse.js +7 -6
  304. package/dist/esm/Message/QuickStarts/FallbackImg.d.ts +2 -2
  305. package/dist/esm/Message/QuickStarts/FallbackImg.js +5 -4
  306. package/dist/esm/Message/QuickStarts/QuickStartTile.d.ts +2 -2
  307. package/dist/esm/Message/QuickStarts/QuickStartTile.js +7 -20
  308. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.d.ts +2 -2
  309. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.js +9 -15
  310. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.js +5 -5
  311. package/dist/esm/Message/QuickStarts/QuickStartTileHeader.d.ts +2 -2
  312. package/dist/esm/Message/QuickStarts/QuickStartTileHeader.js +2 -3
  313. package/dist/esm/Message/QuickStarts/types.d.ts +4 -3
  314. package/dist/esm/Message/TableMessage/TableMessage.d.ts +1 -2
  315. package/dist/esm/Message/TableMessage/TableMessage.js +8 -7
  316. package/dist/esm/Message/TableMessage/TbodyMessage.d.ts +2 -3
  317. package/dist/esm/Message/TableMessage/TbodyMessage.js +7 -6
  318. package/dist/esm/Message/TableMessage/TdMessage.d.ts +1 -2
  319. package/dist/esm/Message/TableMessage/TdMessage.js +2 -5
  320. package/dist/esm/Message/TableMessage/ThMessage.d.ts +1 -2
  321. package/dist/esm/Message/TableMessage/ThMessage.js +2 -5
  322. package/dist/esm/Message/TableMessage/TheadMessage.d.ts +1 -2
  323. package/dist/esm/Message/TableMessage/TheadMessage.js +2 -5
  324. package/dist/esm/Message/TableMessage/TrMessage.d.ts +2 -3
  325. package/dist/esm/Message/TableMessage/TrMessage.js +8 -7
  326. package/dist/esm/Message/TextMessage/TextMessage.d.ts +1 -2
  327. package/dist/esm/Message/TextMessage/TextMessage.js +2 -6
  328. package/dist/esm/Message/UserFeedback/CloseButton.d.ts +2 -2
  329. package/dist/esm/Message/UserFeedback/CloseButton.js +2 -5
  330. package/dist/esm/Message/UserFeedback/UserFeedback.d.ts +2 -2
  331. package/dist/esm/Message/UserFeedback/UserFeedback.js +12 -23
  332. package/dist/esm/Message/UserFeedback/UserFeedback.test.js +21 -21
  333. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.d.ts +2 -2
  334. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.js +20 -44
  335. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.js +26 -36
  336. package/dist/esm/Message/index.d.ts +1 -0
  337. package/dist/esm/Message/index.js +1 -0
  338. package/dist/esm/MessageBar/AttachButton.d.ts +25 -2
  339. package/dist/esm/MessageBar/AttachButton.js +10 -17
  340. package/dist/esm/MessageBar/AttachButton.test.js +95 -17
  341. package/dist/esm/MessageBar/MessageBar.d.ts +31 -3
  342. package/dist/esm/MessageBar/MessageBar.js +28 -30
  343. package/dist/esm/MessageBar/MessageBar.test.js +87 -73
  344. package/dist/esm/MessageBar/MicrophoneButton.d.ts +2 -2
  345. package/dist/esm/MessageBar/MicrophoneButton.js +7 -11
  346. package/dist/esm/MessageBar/SendButton.d.ts +3 -2
  347. package/dist/esm/MessageBar/SendButton.js +3 -8
  348. package/dist/esm/MessageBar/SendButton.test.js +9 -9
  349. package/dist/esm/MessageBar/StopButton.d.ts +3 -2
  350. package/dist/esm/MessageBar/StopButton.js +3 -9
  351. package/dist/esm/MessageBar/StopButton.test.js +9 -9
  352. package/dist/esm/MessageBox/JumpButton.d.ts +2 -2
  353. package/dist/esm/MessageBox/JumpButton.js +2 -7
  354. package/dist/esm/MessageBox/JumpButton.test.js +9 -9
  355. package/dist/esm/MessageBox/MessageBox.d.ts +21 -5
  356. package/dist/esm/MessageBox/MessageBox.js +170 -45
  357. package/dist/esm/MessageBox/MessageBox.test.js +220 -7
  358. package/dist/esm/PreviewAttachment/PreviewAttachment.d.ts +12 -2
  359. package/dist/esm/PreviewAttachment/PreviewAttachment.js +3 -6
  360. package/dist/esm/PreviewAttachment/PreviewAttachment.test.d.ts +1 -1
  361. package/dist/esm/PreviewAttachment/PreviewAttachment.test.js +30 -5
  362. package/dist/esm/ResponseActions/ResponseActionButton.d.ts +5 -5
  363. package/dist/esm/ResponseActions/ResponseActionButton.js +5 -5
  364. package/dist/esm/ResponseActions/ResponseActionButton.test.js +7 -7
  365. package/dist/esm/ResponseActions/ResponseActions.d.ts +7 -3
  366. package/dist/esm/ResponseActions/ResponseActions.js +40 -19
  367. package/dist/esm/ResponseActions/ResponseActions.test.js +95 -16
  368. package/dist/esm/Settings/SettingsForm.d.ts +2 -2
  369. package/dist/esm/Settings/SettingsForm.js +2 -5
  370. package/dist/esm/Settings/SettingsForm.test.js +6 -6
  371. package/dist/esm/SourceDetailsMenuItem/SourceDetailsMenuItem.d.ts +2 -2
  372. package/dist/esm/SourceDetailsMenuItem/SourceDetailsMenuItem.js +2 -8
  373. package/dist/esm/SourcesCard/SourcesCard.d.ts +12 -3
  374. package/dist/esm/SourcesCard/SourcesCard.js +17 -39
  375. package/dist/esm/SourcesCard/SourcesCard.test.js +29 -19
  376. package/dist/esm/TermsOfUse/TermsOfUse.d.ts +3 -3
  377. package/dist/esm/TermsOfUse/TermsOfUse.js +4 -16
  378. package/dist/esm/TermsOfUse/TermsOfUse.test.js +10 -12
  379. package/dist/tsconfig.tsbuildinfo +1 -1
  380. package/package.json +5 -7
  381. package/patternfly-docs/content/extensions/chatbot/design-guidelines.md +10 -0
  382. package/patternfly-docs/content/extensions/chatbot/examples/Customizing Messages/Customizing Messages.md +51 -0
  383. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachMenu.tsx +9 -9
  384. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentEdit.tsx +5 -5
  385. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentError.tsx +2 -2
  386. package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +24 -20
  387. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDetails.tsx +2 -2
  388. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDetailsLabel.tsx +9 -9
  389. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDropZone.tsx +4 -4
  390. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithAttachment.tsx +7 -7
  391. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithClickedResponseActions.tsx +25 -0
  392. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithCustomResponseActions.tsx +3 -12
  393. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedback.tsx +4 -4
  394. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedbackTimeout.tsx +3 -3
  395. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickResponses.tsx +2 -2
  396. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickStart.tsx +2 -2
  397. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithResponseActions.tsx +3 -3
  398. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithSources.tsx +3 -3
  399. package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +19 -0
  400. package/patternfly-docs/content/extensions/chatbot/examples/Messages/PreviewAttachment.tsx +5 -5
  401. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +25 -14
  402. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessageWithExtraContent.tsx +4 -4
  403. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotContainer.tsx +59 -36
  404. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFooter.tsx +2 -2
  405. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFootnote.tsx +2 -2
  406. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderBasic.tsx +10 -13
  407. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawer.tsx +10 -10
  408. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerNavigation.tsx +5 -5
  409. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerResizable.tsx +5 -5
  410. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithActions.tsx +6 -6
  411. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithSelection.tsx +7 -7
  412. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderTitle.tsx +59 -34
  413. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBar.tsx +2 -2
  414. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarAttach.tsx +9 -9
  415. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarDisabled.tsx +3 -3
  416. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarLanguage.tsx +2 -2
  417. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarStop.tsx +2 -2
  418. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotModal.tsx +74 -37
  419. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotToggleBasic.tsx +3 -3
  420. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomeInteraction.tsx +8 -8
  421. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomePrompt.tsx +3 -3
  422. package/patternfly-docs/content/extensions/chatbot/examples/UI/CompactSettings.tsx +16 -23
  423. package/patternfly-docs/content/extensions/chatbot/examples/UI/CustomClosedIcon.tsx +3 -3
  424. package/patternfly-docs/content/extensions/chatbot/examples/UI/Settings.tsx +16 -23
  425. package/patternfly-docs/content/extensions/chatbot/examples/UI/SkipToContent.tsx +5 -5
  426. package/patternfly-docs/content/extensions/chatbot/examples/UI/SquareChatbotToggle.tsx +3 -3
  427. package/patternfly-docs/content/extensions/chatbot/examples/UI/TermsOfUse.tsx +91 -48
  428. package/patternfly-docs/content/extensions/chatbot/examples/UI/TermsOfUseCompact.tsx +82 -39
  429. package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +3 -0
  430. package/patternfly-docs/content/extensions/chatbot/examples/demos/AttachmentDemos.md +37 -0
  431. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +1 -0
  432. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.tsx +19 -25
  433. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachment.tsx +42 -15
  434. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachmentMenu.tsx +15 -14
  435. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotCompact.tsx +19 -25
  436. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotInDrawer.tsx +17 -22
  437. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotScrolling.tsx +536 -0
  438. package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedChatbot.tsx +17 -22
  439. package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedComparisonChatbot.tsx +13 -13
  440. package/patternfly-docs/content/extensions/chatbot/examples/demos/Feedback.tsx +7 -7
  441. package/patternfly-docs/content/extensions/chatbot/img/quick-response-confirmation.svg +67 -0
  442. package/src/AttachMenu/AttachMenu.tsx +2 -2
  443. package/src/AttachmentEdit/AttachmentEdit.test.tsx +46 -2
  444. package/src/AttachmentEdit/AttachmentEdit.tsx +25 -7
  445. package/src/Chatbot/Chatbot.test.tsx +0 -1
  446. package/src/Chatbot/Chatbot.tsx +5 -3
  447. package/src/ChatbotAlert/ChatbotAlert.test.tsx +0 -1
  448. package/src/ChatbotAlert/ChatbotAlert.tsx +2 -2
  449. package/src/ChatbotContent/ChatbotContent.test.tsx +0 -1
  450. package/src/ChatbotContent/ChatbotContent.tsx +3 -3
  451. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.tsx +0 -1
  452. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.tsx +6 -4
  453. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +3 -3
  454. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +8 -6
  455. package/src/ChatbotConversationHistoryNav/EmptyState.tsx +2 -2
  456. package/src/ChatbotConversationHistoryNav/LoadingState.tsx +2 -2
  457. package/src/ChatbotFooter/ChatbotFooter.test.tsx +0 -1
  458. package/src/ChatbotFooter/ChatbotFooter.tsx +3 -3
  459. package/src/ChatbotFooter/ChatbotFooternote.test.tsx +0 -1
  460. package/src/ChatbotFooter/ChatbotFootnote.tsx +6 -4
  461. package/src/ChatbotHeader/ChatbotHeader.test.tsx +0 -1
  462. package/src/ChatbotHeader/ChatbotHeader.tsx +3 -6
  463. package/src/ChatbotHeader/ChatbotHeaderActions.test.tsx +0 -1
  464. package/src/ChatbotHeader/ChatbotHeaderActions.tsx +2 -2
  465. package/src/ChatbotHeader/ChatbotHeaderCloseButton.test.tsx +0 -1
  466. package/src/ChatbotHeader/ChatbotHeaderCloseButton.tsx +5 -4
  467. package/src/ChatbotHeader/ChatbotHeaderMain.test.tsx +0 -1
  468. package/src/ChatbotHeader/ChatbotHeaderMain.tsx +2 -2
  469. package/src/ChatbotHeader/ChatbotHeaderMenu.test.tsx +0 -1
  470. package/src/ChatbotHeader/ChatbotHeaderMenu.tsx +7 -7
  471. package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.tsx +9 -1
  472. package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.tsx +12 -5
  473. package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.tsx +9 -1
  474. package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.tsx +26 -6
  475. package/src/ChatbotHeader/ChatbotHeaderTitle.test.tsx +0 -1
  476. package/src/ChatbotHeader/ChatbotHeaderTitle.tsx +2 -2
  477. package/src/ChatbotModal/ChatbotModal.test.tsx +0 -1
  478. package/src/ChatbotModal/ChatbotModal.tsx +2 -2
  479. package/src/ChatbotPopover/ChatbotPopover.tsx +3 -3
  480. package/src/ChatbotToggle/ChatbotToggle.test.tsx +0 -1
  481. package/src/ChatbotToggle/ChatbotToggle.tsx +5 -3
  482. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.tsx +0 -1
  483. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.tsx +2 -2
  484. package/src/CodeModal/CodeModal.test.tsx +29 -2
  485. package/src/CodeModal/CodeModal.tsx +18 -8
  486. package/src/Compare/Compare.test.tsx +0 -1
  487. package/src/Compare/Compare.tsx +7 -6
  488. package/src/FileDetails/FileDetails.test.tsx +0 -1
  489. package/src/FileDetails/FileDetails.tsx +1 -1
  490. package/src/FileDetailsLabel/FileDetailsLabel.test.tsx +0 -1
  491. package/src/FileDetailsLabel/FileDetailsLabel.tsx +1 -1
  492. package/src/FileDropZone/FileDropZone.test.tsx +112 -1
  493. package/src/FileDropZone/FileDropZone.tsx +44 -4
  494. package/src/LoadingMessage/LoadingMessage.test.tsx +0 -1
  495. package/src/LoadingMessage/LoadingMessage.tsx +2 -2
  496. package/src/Message/CodeBlockMessage/CodeBlockMessage.scss +7 -0
  497. package/src/Message/CodeBlockMessage/CodeBlockMessage.tsx +104 -20
  498. package/src/Message/ErrorMessage/ErrorMessage.tsx +0 -1
  499. package/src/Message/ImageMessage/ImageMessage.tsx +1 -2
  500. package/src/Message/LinkMessage/LinkMessage.tsx +0 -1
  501. package/src/Message/ListMessage/ListItemMessage.tsx +0 -1
  502. package/src/Message/ListMessage/OrderedListMessage.tsx +0 -1
  503. package/src/Message/ListMessage/UnorderedListMessage.tsx +0 -1
  504. package/src/Message/Message.test.tsx +49 -6
  505. package/src/Message/Message.tsx +31 -14
  506. package/src/Message/MessageInput.tsx +5 -5
  507. package/src/Message/MessageLoading.tsx +0 -2
  508. package/src/Message/Plugins/index.ts +1 -0
  509. package/src/Message/Plugins/rehypeCodeBlockToggle.ts +24 -0
  510. package/src/Message/Plugins/rehypeMoveImagesOutOfParagraphs.ts +53 -0
  511. package/src/Message/QuickResponse/QuickResponse.tsx +4 -3
  512. package/src/Message/QuickStarts/FallbackImg.tsx +4 -3
  513. package/src/Message/QuickStarts/QuickStartTile.tsx +3 -3
  514. package/src/Message/QuickStarts/QuickStartTileDescription.test.tsx +0 -1
  515. package/src/Message/QuickStarts/QuickStartTileDescription.tsx +4 -3
  516. package/src/Message/QuickStarts/QuickStartTileHeader.tsx +2 -2
  517. package/src/Message/QuickStarts/types.ts +4 -3
  518. package/src/Message/TableMessage/TableMessage.tsx +4 -4
  519. package/src/Message/TableMessage/TbodyMessage.tsx +3 -3
  520. package/src/Message/TableMessage/TdMessage.tsx +1 -2
  521. package/src/Message/TableMessage/ThMessage.tsx +1 -2
  522. package/src/Message/TableMessage/TheadMessage.tsx +3 -2
  523. package/src/Message/TableMessage/TrMessage.tsx +4 -4
  524. package/src/Message/TextMessage/TextMessage.scss +2 -5
  525. package/src/Message/TextMessage/TextMessage.tsx +1 -2
  526. package/src/Message/UserFeedback/CloseButton.tsx +2 -2
  527. package/src/Message/UserFeedback/UserFeedback.test.tsx +0 -1
  528. package/src/Message/UserFeedback/UserFeedback.tsx +8 -6
  529. package/src/Message/UserFeedback/UserFeedbackComplete.test.tsx +0 -1
  530. package/src/Message/UserFeedback/UserFeedbackComplete.tsx +16 -14
  531. package/src/Message/index.ts +1 -0
  532. package/src/MessageBar/AttachButton.test.tsx +127 -8
  533. package/src/MessageBar/AttachButton.tsx +49 -6
  534. package/src/MessageBar/MessageBar.test.tsx +81 -30
  535. package/src/MessageBar/MessageBar.tsx +85 -19
  536. package/src/MessageBar/MicrophoneButton.tsx +10 -7
  537. package/src/MessageBar/SendButton.test.tsx +5 -6
  538. package/src/MessageBar/SendButton.tsx +4 -3
  539. package/src/MessageBar/StopButton.test.tsx +5 -6
  540. package/src/MessageBar/StopButton.tsx +4 -3
  541. package/src/MessageBox/JumpButton.test.tsx +4 -5
  542. package/src/MessageBox/JumpButton.tsx +3 -3
  543. package/src/MessageBox/MessageBox.test.tsx +295 -5
  544. package/src/MessageBox/MessageBox.tsx +301 -84
  545. package/src/PreviewAttachment/PreviewAttachment.test.tsx +44 -2
  546. package/src/PreviewAttachment/PreviewAttachment.tsx +24 -6
  547. package/src/ResponseActions/ResponseActionButton.test.tsx +0 -1
  548. package/src/ResponseActions/ResponseActionButton.tsx +6 -5
  549. package/src/ResponseActions/ResponseActions.test.tsx +121 -4
  550. package/src/ResponseActions/ResponseActions.tsx +71 -12
  551. package/src/Settings/SettingsForm.test.tsx +0 -1
  552. package/src/Settings/SettingsForm.tsx +2 -7
  553. package/src/SourceDetailsMenuItem/SourceDetailsMenuItem.tsx +2 -2
  554. package/src/SourcesCard/SourcesCard.test.tsx +14 -1
  555. package/src/SourcesCard/SourcesCard.tsx +19 -7
  556. package/src/TermsOfUse/TermsOfUse.test.tsx +0 -1
  557. package/src/TermsOfUse/TermsOfUse.tsx +6 -5
  558. package/tsconfig.cjs.json +0 -1
  559. package/tsconfig.json +3 -3
@@ -80,3 +80,10 @@
80
80
  background-color: var(--pf-t--global--background--color--tertiary--default);
81
81
  font-size: var(--pf-t--global--font--size--body--default);
82
82
  }
83
+
84
+ .pf-chatbot__message-code-toggle {
85
+ .pf-v6-c-button.pf-m-link {
86
+ --pf-v6-c-button--m-link--Color: var(--pf-t--global--color--nonstatus--blue--default);
87
+ --pf-v6-c-button--hover--Color: var(--pf-t--global--color--nonstatus--blue--hover);
88
+ }
89
+ }
@@ -1,37 +1,98 @@
1
1
  // ============================================================================
2
2
  // Chatbot Main - Message - Content - Code Block
3
3
  // ============================================================================
4
- import React from 'react';
5
- import SyntaxHighlighter from 'react-syntax-highlighter';
6
- import { obsidian } from 'react-syntax-highlighter/dist/esm/styles/hljs';
4
+ import { useState, useRef, useId, useCallback, useEffect } from 'react';
7
5
  // Import PatternFly components
8
- import { CodeBlock, CodeBlockAction, CodeBlockCode, Button, Tooltip } from '@patternfly/react-core';
6
+ import {
7
+ CodeBlock,
8
+ CodeBlockAction,
9
+ CodeBlockCode,
10
+ Button,
11
+ Tooltip,
12
+ ExpandableSection,
13
+ ExpandableSectionToggle,
14
+ ExpandableSectionProps,
15
+ ExpandableSectionToggleProps,
16
+ ExpandableSectionVariant
17
+ } from '@patternfly/react-core';
9
18
 
10
19
  import { CheckIcon } from '@patternfly/react-icons/dist/esm/icons/check-icon';
11
20
  import { CopyIcon } from '@patternfly/react-icons/dist/esm/icons/copy-icon';
12
- import { ExtraProps } from 'react-markdown';
21
+
22
+ export interface CodeBlockMessageProps {
23
+ /** Content rendered in code block */
24
+ children?: React.ReactNode;
25
+ /** Aria label applied to code block */
26
+ 'aria-label'?: string;
27
+ /** Class name applied to code block */
28
+ className?: string;
29
+ /** Whether code block is expandable */
30
+ isExpandable?: boolean;
31
+ /** Additional props passed to expandable section if isExpandable is applied */
32
+ expandableSectionProps?: Omit<ExpandableSectionProps, 'ref'>;
33
+ /** Additional props passed to expandable toggle if isExpandable is applied */
34
+ expandableSectionToggleProps?: ExpandableSectionToggleProps;
35
+ /** Link text applied to expandable toggle when expanded */
36
+ expandedText?: string;
37
+ /** Link text applied to expandable toggle when collapsed */
38
+ collapsedText?: string;
39
+ }
40
+
41
+ const DEFAULT_EXPANDED_TEXT = 'Show less';
42
+ const DEFAULT_COLLAPSED_TEXT = 'Show more';
13
43
 
14
44
  const CodeBlockMessage = ({
15
45
  children,
16
46
  className,
17
47
  'aria-label': ariaLabel,
48
+ isExpandable = false,
49
+ expandableSectionProps,
50
+ expandableSectionToggleProps,
51
+ expandedText = DEFAULT_EXPANDED_TEXT,
52
+ collapsedText = DEFAULT_COLLAPSED_TEXT,
18
53
  ...props
19
- }: JSX.IntrinsicElements['code'] & ExtraProps) => {
20
- const [copied, setCopied] = React.useState(false);
54
+ }: CodeBlockMessageProps) => {
55
+ const [copied, setCopied] = useState(false);
56
+ const [isExpanded, setIsExpanded] = useState(false);
21
57
 
22
- const buttonRef = React.useRef();
23
- const tooltipID = React.useId();
58
+ const buttonRef = useRef();
59
+ const tooltipID = useId();
60
+ const toggleId = useId();
61
+ const contentId = useId();
62
+ const codeBlockRef = useRef<HTMLDivElement>(null);
24
63
 
25
64
  const language = /language-(\w+)/.exec(className || '')?.[1];
26
65
 
66
+ // Get custom toggle text from data attributes if available - for use with rehype plugins
67
+ const customExpandedText = props['data-expanded-text'];
68
+ const customCollapsedText = props['data-collapsed-text'];
69
+
70
+ const finalExpandedText = customExpandedText || expandedText;
71
+ const finalCollapsedText = customCollapsedText || collapsedText;
72
+
73
+ if (
74
+ (customExpandedText && expandedText !== DEFAULT_EXPANDED_TEXT) ||
75
+ (customCollapsedText && collapsedText !== DEFAULT_COLLAPSED_TEXT)
76
+ ) {
77
+ // eslint-disable-next-line no-console
78
+ console.error(
79
+ 'Message:',
80
+ 'Custom rehype plugins that rely on data-expanded-text or data-collapsed-text will override expandedText and collapsedText props if both are passed in.'
81
+ );
82
+ }
83
+
84
+ const onToggle = (isExpanded) => {
85
+ setIsExpanded(isExpanded);
86
+ };
87
+
27
88
  // Handle clicking copy button
28
- const handleCopy = React.useCallback((event, text) => {
89
+ const handleCopy = useCallback((event, text) => {
29
90
  navigator.clipboard.writeText(text.toString());
30
91
  setCopied(true);
31
92
  }, []);
32
93
 
33
94
  // Reset copied state
34
- React.useEffect(() => {
95
+ useEffect(() => {
35
96
  if (copied) {
36
97
  const timer = setTimeout(() => {
37
98
  setCopied(false);
@@ -56,7 +117,7 @@ const CodeBlockMessage = ({
56
117
  {language && <div className="pf-chatbot__message-code-block-language">{language}</div>}
57
118
  <Button
58
119
  ref={buttonRef}
59
- aria-label={ariaLabel ?? 'Copy code button'}
120
+ aria-label={ariaLabel ?? 'Copy code'}
60
121
  variant="plain"
61
122
  className="pf-chatbot__button--copy"
62
123
  onClick={(event) => handleCopy(event, children)}
@@ -69,17 +130,40 @@ const CodeBlockMessage = ({
69
130
  );
70
131
 
71
132
  return (
72
- <div className="pf-chatbot__message-code-block">
133
+ <div className="pf-chatbot__message-code-block" ref={codeBlockRef}>
73
134
  <CodeBlock actions={actions}>
74
135
  <CodeBlockCode>
75
- {language ? (
76
- <SyntaxHighlighter {...props} language={language} style={obsidian} PreTag="div" CodeTag="div" wrapLongLines>
77
- {String(children).replace(/\n$/, '')}
78
- </SyntaxHighlighter>
79
- ) : (
80
- <>{children}</>
81
- )}
136
+ <>
137
+ {isExpandable ? (
138
+ <ExpandableSection
139
+ variant={ExpandableSectionVariant.truncate}
140
+ isExpanded={isExpanded}
141
+ isDetached
142
+ toggleId={toggleId}
143
+ contentId={contentId}
144
+ {...expandableSectionProps}
145
+ >
146
+ {children}
147
+ </ExpandableSection>
148
+ ) : (
149
+ children
150
+ )}
151
+ </>
82
152
  </CodeBlockCode>
153
+ {isExpandable && (
154
+ <ExpandableSectionToggle
155
+ isExpanded={isExpanded}
156
+ onToggle={onToggle}
157
+ direction="up"
158
+ toggleId={toggleId}
159
+ contentId={contentId}
160
+ hasTruncatedContent
161
+ className="pf-chatbot__message-code-toggle"
162
+ {...expandableSectionToggleProps}
163
+ >
164
+ {isExpanded ? finalExpandedText : finalCollapsedText}
165
+ </ExpandableSectionToggle>
166
+ )}
83
167
  </CodeBlock>
84
168
  </div>
85
169
  );
@@ -2,7 +2,6 @@
2
2
  // Chatbot Main - Message - Content - Error
3
3
  // ============================================================================
4
4
 
5
- import React from 'react';
6
5
  import { Alert, AlertProps } from '@patternfly/react-core';
7
6
 
8
7
  const ErrorMessage = ({ title, actionLinks, children, ...props }: AlertProps) => (
@@ -2,10 +2,9 @@
2
2
  // Chatbot Main - Message - Content - Image
3
3
  // ============================================================================
4
4
 
5
- import React from 'react';
6
5
  import { ExtraProps } from 'react-markdown';
7
6
 
8
- const ImageMessage = ({ children, ...props }: JSX.IntrinsicElements['img'] & ExtraProps) => (
7
+ const ImageMessage = ({ children, ...props }: Omit<JSX.IntrinsicElements['img'], 'ref'> & ExtraProps) => (
9
8
  <img className="pf-chatbot__message-image" {...props}>
10
9
  {children}
11
10
  </img>
@@ -2,7 +2,6 @@
2
2
  // Chatbot Main - Message - Content - Link
3
3
  // ============================================================================
4
4
 
5
- import React from 'react';
6
5
  import { Button, ButtonProps } from '@patternfly/react-core';
7
6
  import { ExternalLinkSquareAltIcon } from '@patternfly/react-icons';
8
7
 
@@ -2,7 +2,6 @@
2
2
  // Chatbot Main - Message - Content - List
3
3
  // ============================================================================
4
4
 
5
- import React from 'react';
6
5
  import { ExtraProps } from 'react-markdown';
7
6
  import { ListItem } from '@patternfly/react-core';
8
7
 
@@ -2,7 +2,6 @@
2
2
  // Chatbot Main - Message - Content - List
3
3
  // ============================================================================
4
4
 
5
- import React from 'react';
6
5
  import { ExtraProps } from 'react-markdown';
7
6
  import { List, ListComponent, OrderType } from '@patternfly/react-core';
8
7
 
@@ -2,7 +2,6 @@
2
2
  // Chatbot Main - Message - Content - List
3
3
  // ============================================================================
4
4
 
5
- import React from 'react';
6
5
  import { ExtraProps } from 'react-markdown';
7
6
  import { List } from '@patternfly/react-core';
8
7
 
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import { Fragment } from 'react';
2
2
  import { render, screen } from '@testing-library/react';
3
3
  import '@testing-library/jest-dom';
4
4
  import Message from './Message';
@@ -142,18 +142,20 @@ const EMPTY_TABLE = `
142
142
 
143
143
  const IMAGE = `![Multi-colored wavy lines on a black background](https://cdn.dribbble.com/userupload/10651749/file/original-8a07b8e39d9e8bf002358c66fce1223e.gif)`;
144
144
 
145
+ const INLINE_IMAGE = `inline text ![Multi-colored wavy lines on a black background](https://cdn.dribbble.com/userupload/10651749/file/original-8a07b8e39d9e8bf002358c66fce1223e.gif)`;
146
+
145
147
  const ERROR = {
146
148
  title: 'Could not load chat',
147
149
  children: 'Wait a few minutes and check your network settings. If the issue persists: ',
148
150
  actionLinks: (
149
- <React.Fragment>
151
+ <Fragment>
150
152
  <AlertActionLink component="a" href="#">
151
153
  Start a new chat
152
154
  </AlertActionLink>
153
155
  <AlertActionLink component="a" href="#">
154
156
  Contact support
155
157
  </AlertActionLink>
156
- </React.Fragment>
158
+ </Fragment>
157
159
  )
158
160
  };
159
161
  const checkListItemsRendered = () => {
@@ -426,6 +428,8 @@ describe('Message', () => {
426
428
  // eslint-disable-next-line no-console
427
429
  share: { onClick: () => console.log('Share') },
428
430
  // eslint-disable-next-line no-console
431
+ download: { onClick: () => console.log('Download') },
432
+ // eslint-disable-next-line no-console
429
433
  listen: { onClick: () => console.log('Listen') }
430
434
  }}
431
435
  />
@@ -452,6 +456,8 @@ describe('Message', () => {
452
456
  // eslint-disable-next-line no-console
453
457
  share: { onClick: () => console.log('Share') },
454
458
  // eslint-disable-next-line no-console
459
+ download: { onClick: () => console.log('Download') },
460
+ // eslint-disable-next-line no-console
455
461
  listen: { onClick: () => console.log('Listen') }
456
462
  }}
457
463
  />
@@ -485,7 +491,37 @@ describe('Message', () => {
485
491
  it('should render code correctly', () => {
486
492
  render(<Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} />);
487
493
  expect(screen.getByText('Here is some YAML code:')).toBeTruthy();
488
- expect(screen.getByRole('button', { name: 'Copy code button' })).toBeTruthy();
494
+ expect(screen.getByRole('button', { name: 'Copy code' })).toBeTruthy();
495
+ expect(screen.getByText(/yaml/)).toBeTruthy();
496
+ expect(screen.getByText(/apiVersion:/i)).toBeTruthy();
497
+ expect(screen.getByText(/helm.openshift.io\/v1beta1/i)).toBeTruthy();
498
+ expect(screen.getByText(/metadata:/i)).toBeTruthy();
499
+ expect(screen.getByText(/name:/i)).toBeTruthy();
500
+ expect(screen.getByText(/azure-sample-repo0oooo00ooo/i)).toBeTruthy();
501
+ expect(screen.getByText(/spec/i)).toBeTruthy();
502
+ expect(screen.getByText(/connectionConfig:/i)).toBeTruthy();
503
+ expect(screen.getByText(/url:/i)).toBeTruthy();
504
+ expect(
505
+ screen.getByText(/https:\/\/raw.githubusercontent.com\/Azure-Samples\/helm-charts\/master\/docs/i)
506
+ ).toBeTruthy();
507
+ });
508
+ it('should render expandable code correctly', () => {
509
+ render(
510
+ <Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} codeBlockProps={{ isExpandable: true }} />
511
+ );
512
+ expect(screen.getByText('Here is some YAML code:')).toBeTruthy();
513
+ expect(screen.getByRole('button', { name: 'Copy code' })).toBeTruthy();
514
+ expect(screen.getByText(/yaml/)).toBeTruthy();
515
+ expect(screen.getByText(/apiVersion/i)).toBeTruthy();
516
+ expect(screen.getByRole('button', { name: /Show more/i })).toBeTruthy();
517
+ });
518
+ it('should handle click on expandable code correctly', async () => {
519
+ render(
520
+ <Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} codeBlockProps={{ isExpandable: true }} />
521
+ );
522
+ const button = screen.getByRole('button', { name: /Show more/i });
523
+ await userEvent.click(button);
524
+ expect(screen.getByRole('button', { name: /Show less/i })).toBeTruthy();
489
525
  expect(screen.getByText(/yaml/)).toBeTruthy();
490
526
  expect(screen.getByText(/apiVersion:/i)).toBeTruthy();
491
527
  expect(screen.getByText(/helm.openshift.io\/v1beta1/i)).toBeTruthy();
@@ -503,8 +539,8 @@ describe('Message', () => {
503
539
  // need explicit setup since RTL stubs clipboard if you do this
504
540
  const user = userEvent.setup();
505
541
  render(<Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} />);
506
- expect(screen.getByRole('button', { name: 'Copy code button' })).toBeTruthy();
507
- await user.click(screen.getByRole('button', { name: 'Copy code button' }));
542
+ expect(screen.getByRole('button', { name: 'Copy code' })).toBeTruthy();
543
+ await user.click(screen.getByRole('button', { name: 'Copy code' }));
508
544
  const clipboardText = await navigator.clipboard.readText();
509
545
  expect(clipboardText.trim()).toEqual(CODE.trim());
510
546
  });
@@ -787,6 +823,13 @@ describe('Message', () => {
787
823
  render(<Message avatar="./img" role="user" name="User" content={IMAGE} />);
788
824
  expect(screen.getByRole('img', { name: /Multi-colored wavy lines on a black background/i })).toBeTruthy();
789
825
  });
826
+ it('inline image parent should have class pf-chatbot__message-and-actions', () => {
827
+ render(<Message avatar="./img" role="user" name="User" content={INLINE_IMAGE} />);
828
+ expect(screen.getByRole('img', { name: /Multi-colored wavy lines on a black background/i })).toBeTruthy();
829
+ expect(
830
+ screen.getByRole('img', { name: /Multi-colored wavy lines on a black background/i }).parentElement
831
+ ).toHaveClass('pf-chatbot__message-and-actions');
832
+ });
790
833
  it('should handle external links correctly', () => {
791
834
  render(<Message avatar="./img" role="user" name="User" content={`[PatternFly](https://www.patternfly.org/)`} />);
792
835
  // we are mocking rehype libraries, so we can't test target _blank addition on links directly with RTL
@@ -1,9 +1,8 @@
1
1
  // ============================================================================
2
2
  // Chatbot Main - Message
3
3
  // ============================================================================
4
-
5
- import React, { ReactNode } from 'react';
6
-
4
+ import { forwardRef, ReactNode, useEffect, useState } from 'react';
5
+ import type { FunctionComponent, HTMLProps, MouseEvent as ReactMouseEvent, Ref } from 'react';
7
6
  import Markdown from 'react-markdown';
8
7
  import remarkGfm from 'remark-gfm';
9
8
  import {
@@ -12,6 +11,8 @@ import {
12
11
  AvatarProps,
13
12
  ButtonProps,
14
13
  ContentVariants,
14
+ ExpandableSectionProps,
15
+ ExpandableSectionToggleProps,
15
16
  FormProps,
16
17
  Label,
17
18
  LabelGroupProps,
@@ -47,6 +48,7 @@ import { PluggableList } from 'react-markdown/lib';
47
48
  import LinkMessage from './LinkMessage/LinkMessage';
48
49
  import ErrorMessage from './ErrorMessage/ErrorMessage';
49
50
  import MessageInput from './MessageInput';
51
+ import { rehypeMoveImagesOutOfParagraphs } from './Plugins/rehypeMoveImagesOutOfParagraphs';
50
52
 
51
53
  export interface MessageAttachment {
52
54
  /** Name of file attached to the message */
@@ -78,7 +80,7 @@ export interface MessageExtraContent {
78
80
  endContent?: ReactNode;
79
81
  }
80
82
 
81
- export interface MessageProps extends Omit<React.HTMLProps<HTMLDivElement>, 'role'> {
83
+ export interface MessageProps extends Omit<HTMLProps<HTMLDivElement>, 'role'> {
82
84
  /** Unique id for message */
83
85
  id?: string;
84
86
  /** Role of the user sending the message */
@@ -107,9 +109,24 @@ export interface MessageProps extends Omit<React.HTMLProps<HTMLDivElement>, 'rol
107
109
  botWord?: string;
108
110
  /** Label for the English "Loading message," displayed to screenreaders when loading a message */
109
111
  loadingWord?: string;
112
+ /** Props for code blocks */
110
113
  codeBlockProps?: {
114
+ /** Aria label applied to code blocks */
111
115
  'aria-label'?: string;
116
+ /** Class name applied to code blocks */
112
117
  className?: string;
118
+ /** Whether code blocks are expandable */
119
+ isExpandable?: boolean;
120
+ /** Length of text initially shown in expandable code blocks; defaults to 10 characters */
121
+ maxLength?: number;
122
+ /** Additional props passed to expandable section if isExpandable is applied */
123
+ expandableSectionProps?: Omit<ExpandableSectionProps, 'ref'>;
124
+ /** Additional props passed to expandable toggle if isExpandable is applied */
125
+ expandableSectionToggleProps?: ExpandableSectionToggleProps;
126
+ /** Link text applied to expandable toggle when expanded */
127
+ expandedText?: string;
128
+ /** Link text applied to expandable toggle when collapsed */
129
+ collapsedText?: string;
113
130
  };
114
131
  /** Props for quick responses */
115
132
  quickResponses?: QuickResponse[];
@@ -139,7 +156,7 @@ export interface MessageProps extends Omit<React.HTMLProps<HTMLDivElement>, 'rol
139
156
  /** Turns the container into a live region so that changes to content within the Message, such as appending a feedback card, are reliably announced to assistive technology. */
140
157
  isLiveRegion?: boolean;
141
158
  /** Ref applied to message */
142
- innerRef?: React.Ref<HTMLDivElement>;
159
+ innerRef?: Ref<HTMLDivElement>;
143
160
  /** Props for table message. It is important to include a detailed aria-label that describes the purpose of the table. */
144
161
  tableProps?: Required<Pick<TableProps, 'aria-label'>> & TableProps;
145
162
  /** Additional rehype plugins passed from the consumer */
@@ -159,16 +176,16 @@ export interface MessageProps extends Omit<React.HTMLProps<HTMLDivElement>, 'rol
159
176
  /** Label for the English word "Cancel" used in edit mode. */
160
177
  cancelWord?: string;
161
178
  /** Callback function for when edit mode update button is clicked */
162
- onEditUpdate?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
179
+ onEditUpdate?: (event: ReactMouseEvent<HTMLButtonElement, MouseEvent>) => void;
163
180
  /** Callback functionf or when edit cancel update button is clicked */
164
- onEditCancel?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
181
+ onEditCancel?: (event: ReactMouseEvent<HTMLButtonElement, MouseEvent>) => void;
165
182
  /** Props for edit form */
166
183
  editFormProps?: FormProps;
167
184
  /** Sets message to compact styling. */
168
185
  isCompact?: boolean;
169
186
  }
170
187
 
171
- export const MessageBase: React.FunctionComponent<MessageProps> = ({
188
+ export const MessageBase: FunctionComponent<MessageProps> = ({
172
189
  role,
173
190
  content,
174
191
  extraContent,
@@ -206,14 +223,14 @@ export const MessageBase: React.FunctionComponent<MessageProps> = ({
206
223
  isCompact,
207
224
  ...props
208
225
  }: MessageProps) => {
209
- const [messageText, setMessageText] = React.useState(content);
226
+ const [messageText, setMessageText] = useState(content);
210
227
 
211
- React.useEffect(() => {
228
+ useEffect(() => {
212
229
  setMessageText(content);
213
230
  }, [content]);
214
231
 
215
232
  const { beforeMainContent, afterMainContent, endContent } = extraContent || {};
216
- let rehypePlugins: PluggableList = [rehypeUnwrapImages];
233
+ let rehypePlugins: PluggableList = [rehypeUnwrapImages, rehypeMoveImagesOutOfParagraphs];
217
234
  if (openLinkInNewTab) {
218
235
  rehypePlugins = rehypePlugins.concat([[rehypeExternalLinks, { target: '_blank' }, rehypeSanitize]]);
219
236
  }
@@ -243,9 +260,9 @@ export const MessageBase: React.FunctionComponent<MessageProps> = ({
243
260
  editPlaceholder={editPlaceholder}
244
261
  updateWord={updateWord}
245
262
  cancelWord={cancelWord}
246
- onEditUpdate={(event, text) => {
263
+ onEditUpdate={(event: ReactMouseEvent<HTMLButtonElement, MouseEvent>, value: string) => {
247
264
  onEditUpdate && onEditUpdate(event);
248
- setMessageText(text);
265
+ setMessageText(value);
249
266
  }}
250
267
  onEditCancel={onEditCancel}
251
268
  {...editFormProps}
@@ -390,7 +407,7 @@ export const MessageBase: React.FunctionComponent<MessageProps> = ({
390
407
  );
391
408
  };
392
409
 
393
- const Message = React.forwardRef((props: MessageProps, ref: React.Ref<HTMLDivElement>) => (
410
+ const Message = forwardRef((props: MessageProps, ref: Ref<HTMLDivElement>) => (
394
411
  <MessageBase innerRef={ref} {...props} />
395
412
  ));
396
413
 
@@ -1,8 +1,8 @@
1
1
  // ============================================================================
2
2
  // Chatbot Main - Message Input
3
3
  // ============================================================================
4
-
5
- import React from 'react';
4
+ import type { FormEvent, FunctionComponent } from 'react';
5
+ import { useState } from 'react';
6
6
  import { ActionGroup, Button, Form, FormProps, TextArea } from '@patternfly/react-core';
7
7
 
8
8
  export interface MessageInputProps extends FormProps {
@@ -20,7 +20,7 @@ export interface MessageInputProps extends FormProps {
20
20
  content?: string;
21
21
  }
22
22
 
23
- const MessageInput: React.FunctionComponent<MessageInputProps> = ({
23
+ const MessageInput: FunctionComponent<MessageInputProps> = ({
24
24
  editPlaceholder = 'Edit prompt message...',
25
25
  updateWord = 'Update',
26
26
  cancelWord = 'Cancel',
@@ -29,9 +29,9 @@ const MessageInput: React.FunctionComponent<MessageInputProps> = ({
29
29
  content,
30
30
  ...props
31
31
  }: MessageInputProps) => {
32
- const [messageText, setMessageText] = React.useState(content ?? '');
32
+ const [messageText, setMessageText] = useState(content ?? '');
33
33
 
34
- const onChange = (event: React.FormEvent<HTMLTextAreaElement>, value: string) => {
34
+ const onChange = (_event: FormEvent<HTMLTextAreaElement>, value: string) => {
35
35
  setMessageText(value);
36
36
  };
37
37
 
@@ -2,8 +2,6 @@
2
2
  // Chatbot Main - Message - Processing
3
3
  // ============================================================================
4
4
 
5
- import React from 'react';
6
-
7
5
  const MessageLoading = ({ loadingWord }) => (
8
6
  <div className="pf-chatbot__message-loading">
9
7
  <span className="pf-chatbot__message-loading-dots">
@@ -0,0 +1 @@
1
+ export { rehypeCodeBlockToggle } from './rehypeCodeBlockToggle';
@@ -0,0 +1,24 @@
1
+ import { visit } from 'unist-util-visit';
2
+ import { Element } from 'hast';
3
+ import { Node } from 'unist';
4
+
5
+ // Rehype plugin to add language information to code block props
6
+ // Per Eric, Ideally any toggle buttons that can be navigated to would have unique accessible names
7
+ // For the purposes of our examples this should suffice, but in a real-world use case they may need to be more unique
8
+ export const rehypeCodeBlockToggle = () => (tree: Node) => {
9
+ visit(tree, 'element', (node: Element) => {
10
+ if (node.tagName === 'code' && node.properties?.className) {
11
+ const className = node.properties.className as string[];
12
+ const languageMatch = className.find((cls) => cls.startsWith('language-'));
13
+
14
+ if (languageMatch) {
15
+ const language = languageMatch.replace('language-', '').toUpperCase();
16
+
17
+ // Add the language and toggle text as data attributes
18
+ node.properties['data-language'] = language;
19
+ node.properties['data-expanded-text'] = `Show less ${language} code`;
20
+ node.properties['data-collapsed-text'] = `Show more ${language} code`;
21
+ }
22
+ }
23
+ });
24
+ };
@@ -0,0 +1,53 @@
1
+ import { visit } from 'unist-util-visit';
2
+ import { Element } from 'hast';
3
+ import { Node } from 'unist';
4
+
5
+ // Rehype plugin to remove images from within p tags and put them as separate block-level elements.
6
+ // This allows us to avoid having a blue background on images - this is something Kayla requested.
7
+ export const rehypeMoveImagesOutOfParagraphs = () => (tree: Node) => {
8
+ const nodesToRemove: { parent: Element; index: number; node: Element }[] = [];
9
+
10
+ visit(tree, 'element', (node: Element, index: number | null, parent: Element | null) => {
11
+ if (node.tagName === 'p' && node.children) {
12
+ const imagesInParagraph: { node: Element; index: number }[] = [];
13
+
14
+ node.children.forEach((child: Node, childIndex: number) => {
15
+ if (child.type === 'element' && (child as Element).tagName === 'img') {
16
+ imagesInParagraph.push({ node: child as Element, index: childIndex });
17
+ }
18
+ });
19
+
20
+ if (imagesInParagraph.length > 0 && parent && index !== null) {
21
+ imagesInParagraph.forEach(({ node: imgNode, index: imgIndex }) => {
22
+ nodesToRemove.push({ parent: node, index: imgIndex, node: imgNode });
23
+ });
24
+
25
+ // To avoid issues with index shifting during removal, we process in reverse
26
+ for (let i = nodesToRemove.length - 1; i >= 0; i--) {
27
+ const { parent: pTag, index: imgIndexToRemove } = nodesToRemove[i];
28
+ if (pTag.children) {
29
+ pTag.children.splice(imgIndexToRemove, 1);
30
+ }
31
+ }
32
+
33
+ // Insert the removed images after the paragraph
34
+ const paragraphIndexInParent = parent.children.indexOf(node);
35
+ if (paragraphIndexInParent !== -1) {
36
+ imagesInParagraph.forEach(({ node: imgNode }) => {
37
+ parent.children.splice(paragraphIndexInParent + 1, 0, imgNode);
38
+ });
39
+ }
40
+
41
+ // Remove paragraph if it's now empty after image removal
42
+ if (node.children.length === 0) {
43
+ const paragraphIndexInParent = parent.children.indexOf(node);
44
+ if (paragraphIndexInParent !== -1) {
45
+ parent.children.splice(paragraphIndexInParent, 1);
46
+ }
47
+ }
48
+
49
+ nodesToRemove.length = 0;
50
+ }
51
+ }
52
+ });
53
+ };
@@ -1,4 +1,5 @@
1
- import React from 'react';
1
+ import type { FunctionComponent } from 'react';
2
+ import { useState } from 'react';
2
3
  import { Label, LabelGroup, LabelGroupProps, LabelProps } from '@patternfly/react-core';
3
4
  import { CheckIcon } from '@patternfly/react-icons';
4
5
 
@@ -19,13 +20,13 @@ export interface QuickResponseProps {
19
20
  isCompact?: boolean;
20
21
  }
21
22
 
22
- export const QuickResponse: React.FunctionComponent<QuickResponseProps> = ({
23
+ export const QuickResponse: FunctionComponent<QuickResponseProps> = ({
23
24
  quickResponses,
24
25
  quickResponseContainerProps = { numLabels: 5 },
25
26
  onSelect,
26
27
  isCompact
27
28
  }: QuickResponseProps) => {
28
- const [selectedQuickResponse, setSelectedQuickResponse] = React.useState<string>();
29
+ const [selectedQuickResponse, setSelectedQuickResponse] = useState<string>();
29
30
 
30
31
  const handleQuickResponseClick = (id: string, onClick?: () => void) => {
31
32
  setSelectedQuickResponse(id);
@@ -1,4 +1,5 @@
1
- import * as React from 'react';
1
+ import type { FC } from 'react';
2
+ import { useState } from 'react';
2
3
 
3
4
  interface FallbackImgProps {
4
5
  /** Image source */
@@ -11,8 +12,8 @@ interface FallbackImgProps {
11
12
  fallback?: React.ReactNode;
12
13
  }
13
14
 
14
- const FallbackImg: React.FC<FallbackImgProps> = ({ src, alt, className, fallback }) => {
15
- const [isSrcValid, setIsSrcValid] = React.useState<boolean>(true);
15
+ const FallbackImg: FC<FallbackImgProps> = ({ src, alt, className, fallback }) => {
16
+ const [isSrcValid, setIsSrcValid] = useState<boolean>(true);
16
17
 
17
18
  if (src && isSrcValid) {
18
19
  return <img className={className} src={src} alt={alt} onError={() => setIsSrcValid(false)} />;