@patternfly/chatbot 2.2.0-prerelease.3 → 2.2.0-prerelease.30

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 (464) hide show
  1. package/dist/cjs/AttachmentEdit/AttachmentEdit.test.d.ts +1 -0
  2. package/dist/cjs/AttachmentEdit/AttachmentEdit.test.js +52 -0
  3. package/dist/cjs/Chatbot/Chatbot.test.d.ts +1 -0
  4. package/dist/cjs/Chatbot/Chatbot.test.js +28 -0
  5. package/dist/cjs/ChatbotAlert/ChatbotAlert.test.d.ts +1 -0
  6. package/dist/cjs/ChatbotAlert/ChatbotAlert.test.js +27 -0
  7. package/dist/cjs/ChatbotContent/ChatbotContent.test.d.ts +1 -0
  8. package/dist/cjs/ChatbotContent/ChatbotContent.test.js +18 -0
  9. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +3 -3
  10. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +3 -1
  11. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +27 -4
  12. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +23 -11
  13. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +99 -3
  14. package/dist/cjs/ChatbotConversationHistoryNav/EmptyState.d.ts +11 -0
  15. package/dist/cjs/ChatbotConversationHistoryNav/EmptyState.js +29 -0
  16. package/dist/cjs/ChatbotConversationHistoryNav/LoadingState.d.ts +4 -0
  17. package/dist/cjs/ChatbotConversationHistoryNav/LoadingState.js +45 -0
  18. package/dist/cjs/ChatbotFooter/ChatbotFooter.test.d.ts +1 -0
  19. package/dist/cjs/ChatbotFooter/ChatbotFooter.test.js +18 -0
  20. package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.d.ts +1 -0
  21. package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.js +87 -0
  22. package/dist/cjs/ChatbotFooter/ChatbotFootnote.d.ts +1 -1
  23. package/dist/cjs/ChatbotFooter/ChatbotFootnote.js +1 -1
  24. package/dist/cjs/ChatbotHeader/ChatbotHeader.test.d.ts +1 -0
  25. package/dist/cjs/ChatbotHeader/ChatbotHeader.test.js +18 -0
  26. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.d.ts +1 -0
  27. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.js +18 -0
  28. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +17 -0
  29. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.js +16 -0
  30. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -0
  31. package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.js +20 -0
  32. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.d.ts +1 -0
  33. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.js +18 -0
  34. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.d.ts +2 -0
  35. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.js +4 -2
  36. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -0
  37. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.js +20 -0
  38. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +3 -1
  39. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -0
  40. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +43 -0
  41. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +6 -4
  42. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -0
  43. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +41 -0
  44. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +1 -0
  45. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.js +47 -0
  46. package/dist/cjs/ChatbotHeader/index.d.ts +1 -0
  47. package/dist/cjs/ChatbotHeader/index.js +1 -0
  48. package/dist/cjs/ChatbotToggle/ChatbotToggle.js +3 -1
  49. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +19 -11
  50. package/dist/cjs/CodeModal/CodeModal.js +2 -12
  51. package/dist/cjs/Compare/Compare.d.ts +17 -0
  52. package/dist/cjs/Compare/Compare.js +50 -0
  53. package/dist/cjs/Compare/Compare.test.d.ts +1 -0
  54. package/dist/cjs/Compare/Compare.test.js +20 -0
  55. package/dist/cjs/Compare/index.d.ts +2 -0
  56. package/dist/cjs/Compare/index.js +23 -0
  57. package/dist/cjs/Message/ImageMessage/ImageMessage.d.ts +4 -0
  58. package/dist/cjs/Message/ImageMessage/ImageMessage.js +25 -0
  59. package/dist/cjs/Message/LinkMessage/LinkMessage.d.ts +4 -0
  60. package/dist/cjs/Message/LinkMessage/LinkMessage.js +30 -0
  61. package/dist/cjs/Message/ListMessage/OrderedListMessage.d.ts +1 -1
  62. package/dist/cjs/Message/ListMessage/OrderedListMessage.js +2 -2
  63. package/dist/cjs/Message/Message.d.ts +47 -8
  64. package/dist/cjs/Message/Message.js +69 -18
  65. package/dist/cjs/Message/Message.test.js +265 -3
  66. package/dist/cjs/Message/QuickResponse/QuickResponse.d.ts +17 -0
  67. package/dist/cjs/Message/QuickResponse/QuickResponse.js +34 -0
  68. package/dist/cjs/Message/QuickStarts/FallbackImg.d.ts +13 -0
  69. package/dist/cjs/Message/QuickStarts/FallbackImg.js +34 -0
  70. package/dist/cjs/Message/QuickStarts/QuickStartTile.d.ts +27 -0
  71. package/dist/cjs/Message/QuickStarts/QuickStartTile.js +82 -0
  72. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.d.ts +23 -0
  73. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.js +64 -0
  74. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.d.ts +1 -0
  75. package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.js +76 -0
  76. package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.d.ts +11 -0
  77. package/dist/cjs/Message/QuickStarts/QuickStartTileHeader.js +30 -0
  78. package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.d.ts +30 -0
  79. package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.js +77 -0
  80. package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart.d.ts +30 -0
  81. package/dist/cjs/Message/QuickStarts/monitor-sampleapp-quickstart.js +77 -0
  82. package/dist/cjs/Message/QuickStarts/types.d.ts +132 -0
  83. package/dist/cjs/Message/QuickStarts/types.js +17 -0
  84. package/dist/cjs/Message/TableMessage/TableMessage.d.ts +20 -0
  85. package/dist/cjs/Message/TableMessage/TableMessage.js +67 -0
  86. package/dist/cjs/Message/TableMessage/TbodyMessage.d.ts +7 -0
  87. package/dist/cjs/Message/TableMessage/TbodyMessage.js +33 -0
  88. package/dist/cjs/Message/TableMessage/TdMessage.d.ts +5 -0
  89. package/dist/cjs/Message/TableMessage/TdMessage.js +26 -0
  90. package/dist/cjs/Message/TableMessage/ThMessage.d.ts +5 -0
  91. package/dist/cjs/Message/TableMessage/ThMessage.js +26 -0
  92. package/dist/cjs/Message/TableMessage/TheadMessage.d.ts +5 -0
  93. package/dist/cjs/Message/TableMessage/TheadMessage.js +26 -0
  94. package/dist/cjs/Message/TableMessage/TrMessage.d.ts +7 -0
  95. package/dist/cjs/Message/TableMessage/TrMessage.js +37 -0
  96. package/dist/cjs/Message/TextMessage/TextMessage.d.ts +2 -1
  97. package/dist/cjs/Message/TextMessage/TextMessage.js +2 -2
  98. package/dist/cjs/Message/UserFeedback/CloseButton.d.ts +10 -0
  99. package/dist/cjs/Message/UserFeedback/CloseButton.js +14 -0
  100. package/dist/cjs/Message/UserFeedback/UserFeedback.d.ts +39 -0
  101. package/dist/cjs/Message/UserFeedback/UserFeedback.js +55 -0
  102. package/dist/cjs/Message/UserFeedback/UserFeedback.test.d.ts +1 -0
  103. package/dist/cjs/Message/UserFeedback/UserFeedback.test.js +146 -0
  104. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.d.ts +42 -0
  105. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.js +117 -0
  106. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.d.ts +1 -0
  107. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.js +249 -0
  108. package/dist/cjs/MessageBar/AttachButton.js +4 -2
  109. package/dist/cjs/MessageBar/MessageBar.d.ts +11 -4
  110. package/dist/cjs/MessageBar/MessageBar.js +122 -39
  111. package/dist/cjs/MessageBar/MessageBar.test.js +12 -4
  112. package/dist/cjs/MessageBar/MicrophoneButton.d.ts +1 -1
  113. package/dist/cjs/MessageBar/SendButton.js +3 -1
  114. package/dist/cjs/MessageBar/StopButton.js +3 -1
  115. package/dist/cjs/MessageBox/MessageBox.test.d.ts +1 -0
  116. package/dist/cjs/MessageBox/MessageBox.test.js +22 -0
  117. package/dist/cjs/PreviewAttachment/PreviewAttachment.test.d.ts +1 -0
  118. package/dist/cjs/PreviewAttachment/PreviewAttachment.test.js +28 -0
  119. package/dist/cjs/ResponseActions/ResponseActionButton.d.ts +10 -1
  120. package/dist/cjs/ResponseActions/ResponseActionButton.js +28 -5
  121. package/dist/cjs/ResponseActions/ResponseActionButton.test.d.ts +1 -0
  122. package/dist/cjs/ResponseActions/ResponseActionButton.test.js +54 -0
  123. package/dist/cjs/ResponseActions/ResponseActions.d.ts +12 -2
  124. package/dist/cjs/ResponseActions/ResponseActions.js +26 -9
  125. package/dist/cjs/ResponseActions/ResponseActions.test.js +79 -5
  126. package/dist/cjs/Settings/SettingsForm.d.ts +13 -0
  127. package/dist/cjs/Settings/SettingsForm.js +27 -0
  128. package/dist/cjs/Settings/SettingsForm.test.d.ts +1 -0
  129. package/dist/cjs/Settings/SettingsForm.test.js +26 -0
  130. package/dist/cjs/Settings/index.d.ts +2 -0
  131. package/dist/cjs/Settings/index.js +23 -0
  132. package/dist/cjs/TermsOfUse/TermsOfUse.d.ts +34 -0
  133. package/dist/cjs/TermsOfUse/TermsOfUse.js +49 -0
  134. package/dist/cjs/TermsOfUse/TermsOfUse.test.d.ts +1 -0
  135. package/dist/cjs/TermsOfUse/TermsOfUse.test.js +79 -0
  136. package/dist/cjs/TermsOfUse/index.d.ts +2 -0
  137. package/dist/cjs/TermsOfUse/index.js +23 -0
  138. package/dist/cjs/__mocks__/rehype-external-links.d.ts +2 -0
  139. package/dist/cjs/__mocks__/rehype-external-links.js +4 -0
  140. package/dist/cjs/__mocks__/rehype-sanitize.d.ts +2 -0
  141. package/dist/cjs/__mocks__/rehype-sanitize.js +4 -0
  142. package/dist/cjs/__mocks__/rehype-unwrap-images.d.ts +2 -0
  143. package/dist/cjs/__mocks__/rehype-unwrap-images.js +4 -0
  144. package/dist/cjs/index.d.ts +6 -0
  145. package/dist/cjs/index.js +10 -1
  146. package/dist/css/main.css +467 -123
  147. package/dist/css/main.css.map +1 -1
  148. package/dist/dynamic/Compare/package.json +1 -0
  149. package/dist/dynamic/Settings/package.json +1 -0
  150. package/dist/dynamic/TermsOfUse/package.json +1 -0
  151. package/dist/esm/AttachmentEdit/AttachmentEdit.test.d.ts +1 -0
  152. package/dist/esm/AttachmentEdit/AttachmentEdit.test.js +47 -0
  153. package/dist/esm/Chatbot/Chatbot.test.d.ts +1 -0
  154. package/dist/esm/Chatbot/Chatbot.test.js +23 -0
  155. package/dist/esm/ChatbotAlert/ChatbotAlert.test.d.ts +1 -0
  156. package/dist/esm/ChatbotAlert/ChatbotAlert.test.js +22 -0
  157. package/dist/esm/ChatbotContent/ChatbotContent.test.d.ts +1 -0
  158. package/dist/esm/ChatbotContent/ChatbotContent.test.js +13 -0
  159. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +3 -3
  160. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +3 -1
  161. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +27 -4
  162. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +23 -11
  163. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +99 -3
  164. package/dist/esm/ChatbotConversationHistoryNav/EmptyState.d.ts +11 -0
  165. package/dist/esm/ChatbotConversationHistoryNav/EmptyState.js +22 -0
  166. package/dist/esm/ChatbotConversationHistoryNav/LoadingState.d.ts +4 -0
  167. package/dist/esm/ChatbotConversationHistoryNav/LoadingState.js +38 -0
  168. package/dist/esm/ChatbotFooter/ChatbotFooter.test.d.ts +1 -0
  169. package/dist/esm/ChatbotFooter/ChatbotFooter.test.js +13 -0
  170. package/dist/esm/ChatbotFooter/ChatbotFooternote.test.d.ts +1 -0
  171. package/dist/esm/ChatbotFooter/ChatbotFooternote.test.js +82 -0
  172. package/dist/esm/ChatbotFooter/ChatbotFootnote.d.ts +1 -1
  173. package/dist/esm/ChatbotFooter/ChatbotFootnote.js +1 -1
  174. package/dist/esm/ChatbotHeader/ChatbotHeader.test.d.ts +1 -0
  175. package/dist/esm/ChatbotHeader/ChatbotHeader.test.js +13 -0
  176. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.d.ts +1 -0
  177. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.js +13 -0
  178. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.d.ts +17 -0
  179. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.js +10 -0
  180. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -0
  181. package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.js +15 -0
  182. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.d.ts +1 -0
  183. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.js +13 -0
  184. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.d.ts +2 -0
  185. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.js +4 -2
  186. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -0
  187. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.js +15 -0
  188. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +3 -1
  189. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -0
  190. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +38 -0
  191. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +6 -4
  192. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -0
  193. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +36 -0
  194. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +1 -0
  195. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.js +42 -0
  196. package/dist/esm/ChatbotHeader/index.d.ts +1 -0
  197. package/dist/esm/ChatbotHeader/index.js +1 -0
  198. package/dist/esm/ChatbotToggle/ChatbotToggle.js +3 -1
  199. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +19 -11
  200. package/dist/esm/CodeModal/CodeModal.js +2 -12
  201. package/dist/esm/Compare/Compare.d.ts +17 -0
  202. package/dist/esm/Compare/Compare.js +43 -0
  203. package/dist/esm/Compare/Compare.test.d.ts +1 -0
  204. package/dist/esm/Compare/Compare.test.js +15 -0
  205. package/dist/esm/Compare/index.d.ts +2 -0
  206. package/dist/esm/Compare/index.js +2 -0
  207. package/dist/esm/Message/ImageMessage/ImageMessage.d.ts +4 -0
  208. package/dist/esm/Message/ImageMessage/ImageMessage.js +20 -0
  209. package/dist/esm/Message/LinkMessage/LinkMessage.d.ts +4 -0
  210. package/dist/esm/Message/LinkMessage/LinkMessage.js +25 -0
  211. package/dist/esm/Message/ListMessage/OrderedListMessage.d.ts +1 -1
  212. package/dist/esm/Message/ListMessage/OrderedListMessage.js +2 -2
  213. package/dist/esm/Message/Message.d.ts +47 -8
  214. package/dist/esm/Message/Message.js +67 -16
  215. package/dist/esm/Message/Message.test.js +265 -3
  216. package/dist/esm/Message/QuickResponse/QuickResponse.d.ts +17 -0
  217. package/dist/esm/Message/QuickResponse/QuickResponse.js +27 -0
  218. package/dist/esm/Message/QuickStarts/FallbackImg.d.ts +13 -0
  219. package/dist/esm/Message/QuickStarts/FallbackImg.js +9 -0
  220. package/dist/esm/Message/QuickStarts/QuickStartTile.d.ts +27 -0
  221. package/dist/esm/Message/QuickStarts/QuickStartTile.js +52 -0
  222. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.d.ts +23 -0
  223. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.js +35 -0
  224. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.d.ts +1 -0
  225. package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.js +48 -0
  226. package/dist/esm/Message/QuickStarts/QuickStartTileHeader.d.ts +11 -0
  227. package/dist/esm/Message/QuickStarts/QuickStartTileHeader.js +5 -0
  228. package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.d.ts +30 -0
  229. package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.js +74 -0
  230. package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart.d.ts +30 -0
  231. package/dist/esm/Message/QuickStarts/monitor-sampleapp-quickstart.js +74 -0
  232. package/dist/esm/Message/QuickStarts/types.d.ts +132 -0
  233. package/dist/esm/Message/QuickStarts/types.js +14 -0
  234. package/dist/esm/Message/TableMessage/TableMessage.d.ts +20 -0
  235. package/dist/esm/Message/TableMessage/TableMessage.js +62 -0
  236. package/dist/esm/Message/TableMessage/TbodyMessage.d.ts +7 -0
  237. package/dist/esm/Message/TableMessage/TbodyMessage.js +28 -0
  238. package/dist/esm/Message/TableMessage/TdMessage.d.ts +5 -0
  239. package/dist/esm/Message/TableMessage/TdMessage.js +21 -0
  240. package/dist/esm/Message/TableMessage/ThMessage.d.ts +5 -0
  241. package/dist/esm/Message/TableMessage/ThMessage.js +21 -0
  242. package/dist/esm/Message/TableMessage/TheadMessage.d.ts +5 -0
  243. package/dist/esm/Message/TableMessage/TheadMessage.js +21 -0
  244. package/dist/esm/Message/TableMessage/TrMessage.d.ts +7 -0
  245. package/dist/esm/Message/TableMessage/TrMessage.js +32 -0
  246. package/dist/esm/Message/TextMessage/TextMessage.d.ts +2 -1
  247. package/dist/esm/Message/TextMessage/TextMessage.js +3 -3
  248. package/dist/esm/Message/UserFeedback/CloseButton.d.ts +10 -0
  249. package/dist/esm/Message/UserFeedback/CloseButton.js +9 -0
  250. package/dist/esm/Message/UserFeedback/UserFeedback.d.ts +39 -0
  251. package/dist/esm/Message/UserFeedback/UserFeedback.js +50 -0
  252. package/dist/esm/Message/UserFeedback/UserFeedback.test.d.ts +1 -0
  253. package/dist/esm/Message/UserFeedback/UserFeedback.test.js +141 -0
  254. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.d.ts +42 -0
  255. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.js +112 -0
  256. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.d.ts +1 -0
  257. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.js +244 -0
  258. package/dist/esm/MessageBar/AttachButton.js +4 -2
  259. package/dist/esm/MessageBar/MessageBar.d.ts +11 -4
  260. package/dist/esm/MessageBar/MessageBar.js +122 -39
  261. package/dist/esm/MessageBar/MessageBar.test.js +12 -4
  262. package/dist/esm/MessageBar/MicrophoneButton.d.ts +1 -1
  263. package/dist/esm/MessageBar/SendButton.js +3 -1
  264. package/dist/esm/MessageBar/StopButton.js +3 -1
  265. package/dist/esm/MessageBox/MessageBox.test.d.ts +1 -0
  266. package/dist/esm/MessageBox/MessageBox.test.js +17 -0
  267. package/dist/esm/PreviewAttachment/PreviewAttachment.test.d.ts +1 -0
  268. package/dist/esm/PreviewAttachment/PreviewAttachment.test.js +23 -0
  269. package/dist/esm/ResponseActions/ResponseActionButton.d.ts +10 -1
  270. package/dist/esm/ResponseActions/ResponseActionButton.js +25 -2
  271. package/dist/esm/ResponseActions/ResponseActionButton.test.d.ts +1 -0
  272. package/dist/esm/ResponseActions/ResponseActionButton.test.js +49 -0
  273. package/dist/esm/ResponseActions/ResponseActions.d.ts +12 -2
  274. package/dist/esm/ResponseActions/ResponseActions.js +26 -9
  275. package/dist/esm/ResponseActions/ResponseActions.test.js +79 -5
  276. package/dist/esm/Settings/SettingsForm.d.ts +13 -0
  277. package/dist/esm/Settings/SettingsForm.js +20 -0
  278. package/dist/esm/Settings/SettingsForm.test.d.ts +1 -0
  279. package/dist/esm/Settings/SettingsForm.test.js +21 -0
  280. package/dist/esm/Settings/index.d.ts +2 -0
  281. package/dist/esm/Settings/index.js +2 -0
  282. package/dist/esm/TermsOfUse/TermsOfUse.d.ts +34 -0
  283. package/dist/esm/TermsOfUse/TermsOfUse.js +42 -0
  284. package/dist/esm/TermsOfUse/TermsOfUse.test.d.ts +1 -0
  285. package/dist/esm/TermsOfUse/TermsOfUse.test.js +74 -0
  286. package/dist/esm/TermsOfUse/index.d.ts +2 -0
  287. package/dist/esm/TermsOfUse/index.js +2 -0
  288. package/dist/esm/__mocks__/rehype-external-links.d.ts +2 -0
  289. package/dist/esm/__mocks__/rehype-external-links.js +2 -0
  290. package/dist/esm/__mocks__/rehype-sanitize.d.ts +2 -0
  291. package/dist/esm/__mocks__/rehype-sanitize.js +2 -0
  292. package/dist/esm/__mocks__/rehype-unwrap-images.d.ts +2 -0
  293. package/dist/esm/__mocks__/rehype-unwrap-images.js +2 -0
  294. package/dist/esm/index.d.ts +6 -0
  295. package/dist/esm/index.js +6 -0
  296. package/dist/tsconfig.tsbuildinfo +1 -1
  297. package/package.json +10 -13
  298. package/patternfly-docs/content/extensions/chatbot/about-chatbot.md +5 -2
  299. package/patternfly-docs/content/extensions/chatbot/design-guidelines.md +41 -4
  300. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentError.tsx +2 -2
  301. package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +191 -12
  302. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDropZone.tsx +2 -1
  303. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithAttachment.tsx +2 -2
  304. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithCustomResponseActions.tsx +5 -1
  305. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedback.tsx +71 -0
  306. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedbackTimeout.tsx +27 -0
  307. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickResponses.tsx +1 -1
  308. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickStart.tsx +31 -0
  309. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithResponseActions.tsx +1 -1
  310. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithSources.tsx +1 -1
  311. package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +74 -11
  312. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +221 -14
  313. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessageWithExtraContent.tsx +54 -0
  314. package/patternfly-docs/content/extensions/chatbot/examples/Messages/explore-pipeline-quickstart.ts +65 -0
  315. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFooter.tsx +1 -1
  316. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFootnote.tsx +5 -5
  317. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderBasic.tsx +1 -1
  318. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawer.tsx +36 -3
  319. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerNavigation.tsx +67 -0
  320. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerResizable.tsx +94 -0
  321. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarAttach.tsx +1 -1
  322. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomeInteraction.tsx +1 -1
  323. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomePrompt.tsx +7 -7
  324. package/patternfly-docs/content/extensions/chatbot/examples/UI/PF-TermsAndConditionsHeader.svg +148 -0
  325. package/patternfly-docs/content/extensions/chatbot/examples/UI/Settings.tsx +289 -0
  326. package/patternfly-docs/content/extensions/chatbot/examples/UI/SquareChatbotToggle.tsx +1 -1
  327. package/patternfly-docs/content/extensions/chatbot/examples/UI/TermsOfUse.tsx +147 -0
  328. package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +49 -6
  329. package/patternfly-docs/content/extensions/chatbot/examples/demos/AttachmentDemos.md +14 -0
  330. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +26 -3
  331. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.tsx +11 -11
  332. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachment.tsx +21 -20
  333. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachmentMenu.tsx +3 -3
  334. package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedChatbot.tsx +11 -11
  335. package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedComparisonChatbot.tsx +206 -0
  336. package/patternfly-docs/content/extensions/chatbot/examples/demos/Feedback.tsx +104 -0
  337. package/patternfly-docs/content/extensions/chatbot/img/attached-file.svg +24 -29
  338. package/patternfly-docs/content/extensions/chatbot/img/attachment-menu.svg +4 -4
  339. package/patternfly-docs/content/extensions/chatbot/img/attachment-unsent.svg +30 -57
  340. package/patternfly-docs/content/extensions/chatbot/img/chatbot-elements.svg +5 -5
  341. package/patternfly-docs/content/extensions/chatbot/img/chatbot-quickstarts-tile.svg +58 -0
  342. package/patternfly-docs/content/extensions/chatbot/img/chatbot-settings.svg +83 -0
  343. package/patternfly-docs/content/extensions/chatbot/img/conversation-history.svg +6 -29
  344. package/patternfly-docs/content/extensions/chatbot/img/docked.svg +68 -49
  345. package/patternfly-docs/content/extensions/chatbot/img/footnote.svg +1 -1
  346. package/patternfly-docs/content/extensions/chatbot/img/fullscreen.svg +25 -16
  347. package/patternfly-docs/content/extensions/chatbot/img/listening.svg +1 -1
  348. package/patternfly-docs/content/extensions/chatbot/img/message-bar-elements.svg +3 -3
  349. package/patternfly-docs/content/extensions/chatbot/img/message-elements.svg +85 -142
  350. package/patternfly-docs/content/extensions/chatbot/img/overlay.svg +52 -36
  351. package/patternfly-docs/content/extensions/chatbot/img/settings-menu.svg +122 -0
  352. package/patternfly-docs/content/extensions/chatbot/img/source-tile.svg +62 -0
  353. package/patternfly-docs/content/extensions/chatbot/img/toggle-customizations.svg +12 -0
  354. package/src/AttachMenu/AttachMenu.scss +1 -1
  355. package/src/AttachmentEdit/AttachmentEdit.test.tsx +55 -0
  356. package/src/Chatbot/Chatbot.scss +1 -1
  357. package/src/Chatbot/Chatbot.test.tsx +31 -0
  358. package/src/ChatbotAlert/ChatbotAlert.test.tsx +31 -0
  359. package/src/ChatbotContent/ChatbotContent.test.tsx +15 -0
  360. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.tsx +10 -4
  361. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.scss +22 -1
  362. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +242 -3
  363. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +93 -25
  364. package/src/ChatbotConversationHistoryNav/EmptyState.tsx +44 -0
  365. package/src/ChatbotConversationHistoryNav/LoadingState.tsx +38 -0
  366. package/src/ChatbotFooter/ChatbotFooter.scss +0 -5
  367. package/src/ChatbotFooter/ChatbotFooter.test.tsx +15 -0
  368. package/src/ChatbotFooter/ChatbotFooternote.test.tsx +84 -0
  369. package/src/ChatbotFooter/ChatbotFootnote.tsx +2 -2
  370. package/src/ChatbotHeader/ChatbotHeader.scss +2 -5
  371. package/src/ChatbotHeader/ChatbotHeader.test.tsx +15 -0
  372. package/src/ChatbotHeader/ChatbotHeaderActions.test.tsx +17 -0
  373. package/src/ChatbotHeader/ChatbotHeaderCloseButton.test.tsx +20 -0
  374. package/src/ChatbotHeader/ChatbotHeaderCloseButton.tsx +57 -0
  375. package/src/ChatbotHeader/ChatbotHeaderMain.test.tsx +17 -0
  376. package/src/ChatbotHeader/ChatbotHeaderMenu.test.tsx +19 -0
  377. package/src/ChatbotHeader/ChatbotHeaderMenu.tsx +11 -2
  378. package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.tsx +45 -0
  379. package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.tsx +8 -1
  380. package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.tsx +43 -0
  381. package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.tsx +11 -4
  382. package/src/ChatbotHeader/ChatbotHeaderTitle.test.tsx +59 -0
  383. package/src/ChatbotHeader/index.ts +1 -0
  384. package/src/ChatbotModal/ChatbotModal.scss +1 -1
  385. package/src/ChatbotToggle/ChatbotToggle.tsx +6 -1
  386. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.tsx +26 -18
  387. package/src/ChatbotWelcomePrompt/__snapshots__/ChatbotWelcomePrompt.test.tsx.snap +2 -2
  388. package/src/CodeModal/CodeModal.scss +9 -1
  389. package/src/CodeModal/CodeModal.tsx +2 -13
  390. package/src/Compare/Compare.scss +72 -0
  391. package/src/Compare/Compare.test.tsx +31 -0
  392. package/src/Compare/Compare.tsx +98 -0
  393. package/src/Compare/index.ts +2 -0
  394. package/src/FileDetails/FileDetails.scss +1 -1
  395. package/src/FileDropZone/__snapshots__/FileDropZone.test.tsx.snap +1 -1
  396. package/src/Message/CodeBlockMessage/CodeBlockMessage.scss +4 -4
  397. package/src/Message/ImageMessage/ImageMessage.scss +9 -0
  398. package/src/Message/ImageMessage/ImageMessage.tsx +14 -0
  399. package/src/Message/LinkMessage/LinkMessage.tsx +34 -0
  400. package/src/Message/ListMessage/ListMessage.scss +6 -6
  401. package/src/Message/ListMessage/OrderedListMessage.tsx +2 -2
  402. package/src/Message/Message.scss +4 -26
  403. package/src/Message/Message.test.tsx +357 -3
  404. package/src/Message/Message.tsx +148 -31
  405. package/src/Message/MessageLoading.scss +2 -2
  406. package/src/Message/QuickResponse/QuickResponse.scss +33 -0
  407. package/src/Message/QuickResponse/QuickResponse.tsx +54 -0
  408. package/src/Message/QuickStarts/FallbackImg.tsx +24 -0
  409. package/src/Message/QuickStarts/QuickStartTile.scss +24 -0
  410. package/src/Message/QuickStarts/QuickStartTile.tsx +147 -0
  411. package/src/Message/QuickStarts/QuickStartTileDescription.test.tsx +57 -0
  412. package/src/Message/QuickStarts/QuickStartTileDescription.tsx +81 -0
  413. package/src/Message/QuickStarts/QuickStartTileHeader.tsx +21 -0
  414. package/src/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.ts +75 -0
  415. package/src/Message/QuickStarts/monitor-sampleapp-quickstart.ts +75 -0
  416. package/src/Message/QuickStarts/types.ts +154 -0
  417. package/src/Message/TableMessage/TableMessage.scss +23 -0
  418. package/src/Message/TableMessage/TableMessage.tsx +83 -0
  419. package/src/Message/TableMessage/TbodyMessage.tsx +20 -0
  420. package/src/Message/TableMessage/TdMessage.tsx +11 -0
  421. package/src/Message/TableMessage/ThMessage.tsx +11 -0
  422. package/src/Message/TableMessage/TheadMessage.tsx +11 -0
  423. package/src/Message/TableMessage/TrMessage.tsx +27 -0
  424. package/src/Message/TextMessage/TextMessage.scss +21 -12
  425. package/src/Message/TextMessage/TextMessage.tsx +3 -3
  426. package/src/Message/UserFeedback/CloseButton.tsx +21 -0
  427. package/src/Message/UserFeedback/UserFeedback.scss +53 -0
  428. package/src/Message/UserFeedback/UserFeedback.test.tsx +257 -0
  429. package/src/Message/UserFeedback/UserFeedback.tsx +132 -0
  430. package/src/Message/UserFeedback/UserFeedbackComplete.test.tsx +255 -0
  431. package/src/Message/UserFeedback/UserFeedbackComplete.tsx +211 -0
  432. package/src/MessageBar/AttachButton.scss +19 -3
  433. package/src/MessageBar/AttachButton.tsx +3 -1
  434. package/src/MessageBar/MessageBar.scss +38 -20
  435. package/src/MessageBar/MessageBar.test.tsx +12 -4
  436. package/src/MessageBar/MessageBar.tsx +153 -58
  437. package/src/MessageBar/MicrophoneButton.scss +8 -8
  438. package/src/MessageBar/MicrophoneButton.tsx +1 -1
  439. package/src/MessageBar/SendButton.tsx +2 -0
  440. package/src/MessageBar/StopButton.scss +17 -3
  441. package/src/MessageBar/StopButton.tsx +2 -0
  442. package/src/MessageBox/JumpButton.scss +6 -6
  443. package/src/MessageBox/MessageBox.test.tsx +26 -0
  444. package/src/PreviewAttachment/PreviewAttachment.test.tsx +51 -0
  445. package/src/ResponseActions/ResponseActionButton.test.tsx +52 -0
  446. package/src/ResponseActions/ResponseActionButton.tsx +59 -28
  447. package/src/ResponseActions/ResponseActions.scss +11 -9
  448. package/src/ResponseActions/ResponseActions.test.tsx +105 -5
  449. package/src/ResponseActions/ResponseActions.tsx +80 -9
  450. package/src/Settings/Settings.scss +34 -0
  451. package/src/Settings/SettingsForm.test.tsx +28 -0
  452. package/src/Settings/SettingsForm.tsx +25 -0
  453. package/src/Settings/index.ts +3 -0
  454. package/src/SourceDetailsMenuItem/SourceDetailsMenuItem.scss +1 -1
  455. package/src/SourcesCard/SourcesCard.scss +2 -2
  456. package/src/TermsOfUse/TermsOfUse.scss +66 -0
  457. package/src/TermsOfUse/TermsOfUse.test.tsx +138 -0
  458. package/src/TermsOfUse/TermsOfUse.tsx +117 -0
  459. package/src/TermsOfUse/index.ts +3 -0
  460. package/src/__mocks__/rehype-external-links.ts +3 -0
  461. package/src/__mocks__/rehype-sanitize.ts +3 -0
  462. package/src/__mocks__/rehype-unwrap-images.tsx +3 -0
  463. package/src/index.ts +9 -0
  464. package/src/main.scss +8 -6
@@ -0,0 +1,43 @@
1
+ import React from 'react';
2
+ import { DropdownItem } from '@patternfly/react-core';
3
+ import { act, fireEvent, render, screen, waitFor } from '@testing-library/react';
4
+ import { ChatbotHeaderSelectorDropdown } from './ChatbotHeaderSelectorDropdown';
5
+
6
+ describe('ChatbotHeaderSelectorDropdown', () => {
7
+ const dropdownItems = (
8
+ <>
9
+ <DropdownItem>Option 1</DropdownItem>
10
+ <DropdownItem>Option 2</DropdownItem>
11
+ <DropdownItem>Option 3</DropdownItem>
12
+ </>
13
+ );
14
+
15
+ it('should render ChatbotHeaderSelectorDropdown', () => {
16
+ render(<ChatbotHeaderSelectorDropdown value="Option 1">{dropdownItems}</ChatbotHeaderSelectorDropdown>);
17
+
18
+ expect(screen.getByRole('button', { name: /Select model/i })).toBeTruthy();
19
+ });
20
+
21
+ it('should call onselect handler when a dropdown item is clicked', async () => {
22
+ const onSelect = jest.fn();
23
+ const { container } = render(
24
+ <ChatbotHeaderSelectorDropdown value="Option 1" className="custom-header-selector-dropdown" onSelect={onSelect}>
25
+ {dropdownItems}
26
+ </ChatbotHeaderSelectorDropdown>
27
+ );
28
+
29
+ act(() => {
30
+ fireEvent.click(screen.getByRole('button', { name: /Select model/i }));
31
+ });
32
+
33
+ await waitFor(() => {
34
+ expect(container.querySelector('.custom-header-selector-dropdown')).toBeTruthy();
35
+
36
+ expect(screen.getByText('Option 3'));
37
+
38
+ fireEvent.click(screen.getByText('Option 3'));
39
+
40
+ expect(onSelect).toHaveBeenCalled();
41
+ });
42
+ });
43
+ });
@@ -23,15 +23,22 @@ export const ChatbotHeaderSelectorDropdown: React.FunctionComponent<ChatbotHeade
23
23
  children,
24
24
  onSelect,
25
25
  tooltipProps,
26
- tooltipContent = 'Chatbot selector',
26
+ tooltipContent = 'Select model',
27
27
  menuToggleAriaLabel,
28
28
  ...props
29
29
  }: ChatbotHeaderSelectorDropdownProps) => {
30
30
  const [isOptionsMenuOpen, setIsOptionsMenuOpen] = React.useState(false);
31
- const [defaultAriaLabel, setDefaultAriaLabel] = React.useState('Chatbot selector');
31
+ const [defaultAriaLabel, setDefaultAriaLabel] = React.useState('Select model');
32
32
 
33
33
  const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
34
- <Tooltip className="pf-chatbot__tooltip" content={tooltipContent} position="bottom" {...tooltipProps}>
34
+ <Tooltip
35
+ className="pf-chatbot__tooltip"
36
+ content={tooltipContent}
37
+ position="bottom"
38
+ // prevents VO announcements of both aria label and tooltip
39
+ aria="none"
40
+ {...tooltipProps}
41
+ >
35
42
  <MenuToggle
36
43
  variant="secondary"
37
44
  aria-label={menuToggleAriaLabel ?? defaultAriaLabel}
@@ -50,7 +57,7 @@ export const ChatbotHeaderSelectorDropdown: React.FunctionComponent<ChatbotHeade
50
57
  isOpen={isOptionsMenuOpen}
51
58
  onSelect={(e, value) => {
52
59
  onSelect && onSelect(e, value);
53
- setDefaultAriaLabel(`Chatbot selector: ${value}`);
60
+ setDefaultAriaLabel(`Select model: ${value}`);
54
61
  setIsOptionsMenuOpen(false);
55
62
  }}
56
63
  onOpenChange={(isOpen) => setIsOptionsMenuOpen(isOpen)}
@@ -0,0 +1,59 @@
1
+ import React from 'react';
2
+ import { render, screen } from '@testing-library/react';
3
+ import { ChatbotDisplayMode } from '../Chatbot/Chatbot';
4
+ import ChatbotHeaderTitle from './ChatbotHeaderTitle';
5
+
6
+ describe('ChatbotHeaderTitle', () => {
7
+ it('should render ChatbotHeaderTitle with children', () => {
8
+ render(<ChatbotHeaderTitle>Chatbot Header Title</ChatbotHeaderTitle>);
9
+ expect(screen.getByText('Chatbot Header Title')).toBeTruthy();
10
+ });
11
+
12
+ it('should render ChatbotHeaderTitle with custom classname', () => {
13
+ const { container } = render(
14
+ <ChatbotHeaderTitle className="custom-header-class">Chatbot Header Title</ChatbotHeaderTitle>
15
+ );
16
+ expect(container.querySelector('.custom-header-class')).toBeTruthy();
17
+ });
18
+
19
+ it('should render title for default display mode', () => {
20
+ render(<ChatbotHeaderTitle displayMode={ChatbotDisplayMode.default} showOnDefault={'Default header title'} />);
21
+ expect(screen.getByText('Default header title')).toBeTruthy();
22
+ });
23
+
24
+ it('should render title for docked display mode', () => {
25
+ render(<ChatbotHeaderTitle displayMode={ChatbotDisplayMode.docked} showOnDocked={'Docked header title'} />);
26
+ expect(screen.getByText('Docked header title')).toBeTruthy();
27
+ });
28
+
29
+ it('should fallback to default title when docked display mode title is not configured', () => {
30
+ render(<ChatbotHeaderTitle displayMode={ChatbotDisplayMode.docked} showOnDefault={'Default header title'} />);
31
+ expect(screen.getByText('Default header title')).toBeTruthy();
32
+ });
33
+
34
+ it('should render title for embedded display mode', () => {
35
+ render(<ChatbotHeaderTitle displayMode={ChatbotDisplayMode.embedded} showOnEmbedded={'Embedded header title'} />);
36
+ expect(screen.getByText('Embedded header title')).toBeTruthy();
37
+ });
38
+
39
+ it('should fallback to default title when embedded display mode title is not configured', () => {
40
+ render(<ChatbotHeaderTitle displayMode={ChatbotDisplayMode.embedded} showOnDefault={'Default header title'} />);
41
+ expect(screen.getByText('Default header title')).toBeTruthy();
42
+ });
43
+
44
+ it('should render title for fullscreen display mode', () => {
45
+ render(
46
+ <ChatbotHeaderTitle
47
+ displayMode={ChatbotDisplayMode.fullscreen}
48
+ showOnFullScreen={'Fullscreen header title'}
49
+ className="custom-header-class"
50
+ />
51
+ );
52
+ expect(screen.getByText('Fullscreen header title')).toBeTruthy();
53
+ });
54
+
55
+ it('should fallback to default title when fullscreen display mode title is not configured', () => {
56
+ render(<ChatbotHeaderTitle displayMode={ChatbotDisplayMode.fullscreen} showOnDefault={'Default header title'} />);
57
+ expect(screen.getByText('Default header title')).toBeTruthy();
58
+ });
59
+ });
@@ -7,3 +7,4 @@ export * from './ChatbotHeaderMenu';
7
7
  export * from './ChatbotHeaderTitle';
8
8
  export * from './ChatbotHeaderOptionsDropdown';
9
9
  export * from './ChatbotHeaderSelectorDropdown';
10
+ export * from './ChatbotHeaderCloseButton';
@@ -16,7 +16,7 @@
16
16
  }
17
17
  .pf-v6-c-button.pf-m-primary.pf-m-block,
18
18
  .pf-v6-c-button.pf-m-link.pf-m-block {
19
- --pf-v6-c-button--FontWeight: 500;
19
+ --pf-v6-c-button--FontWeight: var(--pf-t--global--font--weight--body--bold);
20
20
  }
21
21
  .pf-v6-c-modal-box__footer {
22
22
  padding-block-start: var(--pf-t--global--spacer--xl);
@@ -65,7 +65,12 @@ const ChatbotToggleBase: React.FunctionComponent<ChatbotToggleProps> = ({
65
65
  const icon = isChatbotVisible ? <AngleDownIcon data-testid={openIconTestId} /> : closedIcon;
66
66
 
67
67
  return (
68
- <Tooltip content={tooltipLabel} {...tooltipProps}>
68
+ <Tooltip
69
+ content={tooltipLabel}
70
+ // prevents VO announcements of both aria label and tooltip
71
+ aria="none"
72
+ {...tooltipProps}
73
+ >
69
74
  <Button
70
75
  className={`pf-chatbot__button ${isChatbotVisible ? 'pf-chatbot__button--active' : ''} ${isRound ? 'pf-chatbot__button--round' : ''} ${className ? className : ''}`}
71
76
  variant="plain"
@@ -7,53 +7,61 @@ import userEvent from '@testing-library/user-event';
7
7
  describe('ChatbotWelcomePrompt', () => {
8
8
  it('should render welcome prompt', () => {
9
9
  const { container } = render(
10
- <ChatbotWelcomePrompt title="Hello, Chatbot User" description="How may I help you today?" />
10
+ <ChatbotWelcomePrompt title="Hi, ChatBot User!" description="How can I help you today?" />
11
11
  );
12
12
  expect(container).toMatchSnapshot();
13
13
  });
14
14
 
15
15
  it('should render correctly', () => {
16
- render(<ChatbotWelcomePrompt title="Hello, Chatbot User" description="How may I help you today?" />);
17
- expect(screen.getByText('Hello, Chatbot User')).toBeTruthy();
18
- expect(screen.getByText('How may I help you today?')).toBeTruthy();
16
+ render(<ChatbotWelcomePrompt title="Hi, ChatBot User!" description="How can I help you today?" />);
17
+ expect(screen.getByText('Hi, ChatBot User!')).toBeTruthy();
18
+ expect(screen.getByText('How can I help you today?')).toBeTruthy();
19
19
  });
20
20
  it('should render prompts with titles correctly', () => {
21
21
  render(
22
22
  <ChatbotWelcomePrompt
23
- title="Hello, Chatbot User"
24
- description="How may I help you today?"
25
- prompts={[{ title: 'Topic 1' }]}
23
+ title="Hi, ChatBot User!"
24
+ description="How can I help you today?"
25
+ prompts={[{ title: 'Set up account' }]}
26
26
  />
27
27
  );
28
- expect(screen.getByText('Topic 1')).toBeTruthy();
28
+ expect(screen.getByText('Set up account')).toBeTruthy();
29
29
  });
30
30
  it('should render prompts with messages correctly', () => {
31
31
  render(
32
32
  <ChatbotWelcomePrompt
33
- title="Hello, Chatbot User"
34
- description="How may I help you today?"
35
- prompts={[{ title: 'Topic 1', message: 'Helpful prompt for Topic 1' }]}
33
+ title="Hi, ChatBot User!"
34
+ description="How can I help you today?"
35
+ prompts={[
36
+ { title: 'Set up account', message: 'Choose the necessary settings and preferences for your account.' }
37
+ ]}
36
38
  />
37
39
  );
38
- expect(screen.getByText('Helpful prompt for Topic 1')).toBeTruthy();
40
+ expect(screen.getByText('Choose the necessary settings and preferences for your account.')).toBeTruthy();
39
41
  });
40
42
  it('should render prompts with onClick correctly', async () => {
41
43
  const spy = jest.fn();
42
44
  render(
43
45
  <ChatbotWelcomePrompt
44
- title="Hello, Chatbot User"
45
- description="How may I help you today?"
46
- prompts={[{ title: 'Topic 1', message: 'Helpful prompt for Topic 1', onClick: spy }]}
46
+ title="Hi, ChatBot User!"
47
+ description="How can I help you today?"
48
+ prompts={[
49
+ {
50
+ title: 'Set up account',
51
+ message: 'Choose the necessary settings and preferences for your account.',
52
+ onClick: spy
53
+ }
54
+ ]}
47
55
  />
48
56
  );
49
- await userEvent.click(screen.getByRole('button', { name: /Topic 1/i }));
57
+ await userEvent.click(screen.getByRole('button', { name: /Set up account/i }));
50
58
  expect(spy).toHaveBeenCalled();
51
59
  });
52
60
  it('should apply className appropriately', () => {
53
61
  render(
54
62
  <ChatbotWelcomePrompt
55
- title="Hello, Chatbot User"
56
- description="How may I help you today?"
63
+ title="Hi, ChatBot User!"
64
+ description="How can I help you today?"
57
65
  className="test"
58
66
  testId="welcome-prompt"
59
67
  />
@@ -15,13 +15,13 @@ exports[`ChatbotWelcomePrompt should render welcome prompt 1`] = `
15
15
  <span
16
16
  class="pf-chatbot__hello"
17
17
  >
18
- Hello, Chatbot User
18
+ Hi, ChatBot User!
19
19
  </span>
20
20
  <br />
21
21
  <span
22
22
  class="pf-chatbot__question"
23
23
  >
24
- How may I help you today?
24
+ How can I help you today?
25
25
  </span>
26
26
  </h1>
27
27
  </div>
@@ -38,7 +38,7 @@
38
38
  border: none;
39
39
  --pf-v6-c-code-editor__tab--BorderStartEndRadius: 0;
40
40
  border-start-start-radius: var(--pf-t--global--border--radius--small);
41
- --pf-t--global--font--weight--body--default: 500;
41
+ --pf-t--global--font--weight--body--default: var(--pf-t--global--font--weight--body--bold);
42
42
  }
43
43
  .pf-v6-c-code-editor__tab-icon {
44
44
  display: none;
@@ -74,3 +74,11 @@
74
74
  }
75
75
  }
76
76
  }
77
+
78
+ .pf-chatbot__code-modal-body {
79
+ flex: 1;
80
+ }
81
+
82
+ .pf-chatbot__code-modal--fullscreen {
83
+ height: inherit; // override shared modal so code editor works in full screen
84
+ }
@@ -87,17 +87,6 @@ export const CodeModal: React.FunctionComponent<CodeModalProps> = ({
87
87
  }
88
88
  };
89
89
 
90
- /* eslint-disable indent */
91
- const getHeight = (displayMode: ChatbotDisplayMode) => {
92
- switch (displayMode) {
93
- case ChatbotDisplayMode.docked:
94
- return '100vh';
95
- default:
96
- return '45vh';
97
- }
98
- };
99
- /* eslint-enable indent */
100
-
101
90
  const modal = (
102
91
  <ChatbotModal
103
92
  isOpen={isModalOpen}
@@ -114,7 +103,7 @@ export const CodeModal: React.FunctionComponent<CodeModalProps> = ({
114
103
  <StackItem className="pf-chatbot__code-modal-file-details">
115
104
  <FileDetails fileName={fileName} />
116
105
  </StackItem>
117
- <StackItem>
106
+ <StackItem className="pf-chatbot__code-modal-body">
118
107
  <CodeEditor
119
108
  isDarkTheme
120
109
  isLineNumbersVisible={isLineNumbersVisible}
@@ -126,7 +115,7 @@ export const CodeModal: React.FunctionComponent<CodeModalProps> = ({
126
115
  onEditorDidMount={onEditorDidMount}
127
116
  onCodeChange={onCodeChange}
128
117
  className={codeEditorClassName}
129
- height={getHeight(displayMode)}
118
+ isFullHeight
130
119
  options={{
131
120
  glyphMargin: false,
132
121
  folding: false
@@ -0,0 +1,72 @@
1
+ .pf-chatbot__compare-container {
2
+ display: flex;
3
+ flex-direction: column;
4
+ position: relative;
5
+ height: 100%;
6
+ }
7
+ .pf-chatbot__compare-toggle {
8
+ width: 100%;
9
+
10
+ .pf-v6-c-toggle-group__button {
11
+ width: 100%;
12
+ display: flex;
13
+ justify-content: center;
14
+ }
15
+ }
16
+ .pf-chatbot__compare {
17
+ display: flex;
18
+ height: 100%;
19
+ width: 100%;
20
+
21
+ @media screen and (max-width: 900px) {
22
+ overflow-y: auto;
23
+ }
24
+
25
+ .pf-chatbot__compare-item:first-of-type {
26
+ border-right: 1px solid var(--pf-t--global--border--color--default);
27
+
28
+ @media screen and (max-width: 900px) {
29
+ border-right: 0px;
30
+ }
31
+ }
32
+ }
33
+
34
+ .pf-chatbot__compare-item {
35
+ flex: 1;
36
+
37
+ .pf-chatbot--embedded .pf-chatbot__messagebox {
38
+ width: 100%;
39
+ }
40
+
41
+ .pf-chatbot__content {
42
+ padding: 0;
43
+ }
44
+
45
+ .pf-chatbot.pf-chatbot--embedded {
46
+ @media screen and (max-width: 900px) {
47
+ height: 100%;
48
+ }
49
+ }
50
+ }
51
+ .pf-chatbot__compare-item-hidden {
52
+ display: block;
53
+
54
+ @media screen and (max-width: 900px) {
55
+ display: none;
56
+ }
57
+ }
58
+
59
+ .pf-chatbot__compare-mobile-controls {
60
+ padding: var(--pf-t--global--spacer--md) var(--pf-t--global--spacer--lg) 0 var(--pf-t--global--spacer--lg);
61
+ display: none;
62
+ background-color: var(--pf-t--global--background--color--secondary--default);
63
+ position: sticky;
64
+ top: 0;
65
+ z-index: 9999;
66
+
67
+ @media screen and (max-width: 900px) {
68
+ display: flex;
69
+ flex-direction: column;
70
+ gap: var(--pf-t--global--spacer--md);
71
+ }
72
+ }
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import { render, screen } from '@testing-library/react';
3
+ import '@testing-library/jest-dom';
4
+ import Compare from './Compare';
5
+
6
+ const firstChild = (
7
+ <div>
8
+ <h1>Child 1</h1>
9
+ </div>
10
+ );
11
+
12
+ const secondChild = (
13
+ <div>
14
+ <h1>Child 2</h1>
15
+ </div>
16
+ );
17
+
18
+ describe('Compare', () => {
19
+ it('should render compare correctly', () => {
20
+ render(
21
+ <Compare
22
+ firstChildDisplayName="Child 1"
23
+ secondChildDisplayName="Child 2"
24
+ firstChild={firstChild}
25
+ secondChild={secondChild}
26
+ />
27
+ );
28
+ expect(screen.getByRole('heading', { name: /Child 1/i })).toBeTruthy();
29
+ expect(screen.getByRole('heading', { name: /Child 2/i })).toBeTruthy();
30
+ });
31
+ });
@@ -0,0 +1,98 @@
1
+ import React, { PropsWithChildren } from 'react';
2
+ import { ToggleGroup, ToggleGroupItem } from '@patternfly/react-core';
3
+
4
+ interface CompareProps {
5
+ /** First of two children to render */
6
+ firstChild: React.ReactNode;
7
+ /** Second of two children to render */
8
+ secondChild: React.ReactNode;
9
+ /** Display name for first child, used in mobile toggle */
10
+ firstChildDisplayName: string;
11
+ /** Display name for second child, used in mobile toggle */
12
+ secondChildDisplayName: string;
13
+ /** Aria label for mobile toggle group */
14
+ toggleGroupAriaLabel?: string;
15
+ /** Callback for when mobile toggle is used */
16
+ onToggleClick?: (event: MouseEvent | React.MouseEvent<any, MouseEvent> | React.KeyboardEvent<Element>) => void;
17
+ }
18
+
19
+ export const Compare = ({
20
+ firstChild,
21
+ secondChild,
22
+ firstChildDisplayName,
23
+ secondChildDisplayName,
24
+ onToggleClick,
25
+ toggleGroupAriaLabel = 'Select which chatbot to display'
26
+ }: PropsWithChildren<CompareProps>) => {
27
+ const [isSelected, setIsSelected] = React.useState('toggle-group-chatbot-1');
28
+ const [showFirstChatbot, setShowFirstChatbot] = React.useState(true);
29
+ const [showSecondChatbot, setShowSecondChatbot] = React.useState(false);
30
+
31
+ React.useEffect(() => {
32
+ // we want to show the first if we switch to the mobile toggle view
33
+ // and reset/switch back to normal otherwise
34
+ const updateChatbotVisibility = () => {
35
+ if (window.innerWidth >= 901) {
36
+ setShowFirstChatbot(true);
37
+ setShowSecondChatbot(true);
38
+ } else {
39
+ setShowFirstChatbot(true);
40
+ setShowSecondChatbot(false);
41
+ setIsSelected('toggle-group-chatbot-1');
42
+ }
43
+ };
44
+ window.addEventListener('resize', updateChatbotVisibility);
45
+
46
+ return () => {
47
+ window.removeEventListener('resize', updateChatbotVisibility);
48
+ };
49
+ }, []);
50
+
51
+ // this only happens on mobile
52
+ const handleChildToggleClick = (
53
+ event: MouseEvent | React.MouseEvent<any, MouseEvent> | React.KeyboardEvent<Element>
54
+ ) => {
55
+ const id = event.currentTarget.id;
56
+ setIsSelected(id);
57
+ setShowSecondChatbot(!showSecondChatbot);
58
+ setShowFirstChatbot(!showFirstChatbot);
59
+ onToggleClick && onToggleClick(event);
60
+ };
61
+
62
+ return (
63
+ <>
64
+ <div className="pf-chatbot__compare-mobile-controls">
65
+ <ToggleGroup aria-label={toggleGroupAriaLabel}>
66
+ <ToggleGroupItem
67
+ className="pf-chatbot__compare-toggle"
68
+ text={firstChildDisplayName}
69
+ buttonId="toggle-group-chatbot-1"
70
+ isSelected={isSelected === 'toggle-group-chatbot-1'}
71
+ onChange={handleChildToggleClick}
72
+ />
73
+ <ToggleGroupItem
74
+ className="pf-chatbot__compare-toggle"
75
+ text={secondChildDisplayName}
76
+ buttonId="toggle-group-chatbot-2"
77
+ isSelected={isSelected === 'toggle-group-chatbot-2'}
78
+ onChange={handleChildToggleClick}
79
+ />
80
+ </ToggleGroup>
81
+ </div>
82
+ <div className="pf-chatbot__compare">
83
+ <div
84
+ className={`pf-chatbot__compare-item ${!showFirstChatbot ? 'pf-chatbot__compare-item-hidden' : undefined}`}
85
+ >
86
+ {firstChild}
87
+ </div>
88
+ <div
89
+ className={`pf-chatbot__compare-item ${!showSecondChatbot ? 'pf-chatbot__compare-item-hidden' : undefined}`}
90
+ >
91
+ {secondChild}
92
+ </div>
93
+ </div>
94
+ </>
95
+ );
96
+ };
97
+
98
+ export default Compare;
@@ -0,0 +1,2 @@
1
+ export { default } from './Compare';
2
+ export * from './Compare';
@@ -2,7 +2,7 @@
2
2
  color: var(--pf-t--global--text--color--subtle);
3
3
  display: flex; // this is needed for when FileDetailsLabel is clickable
4
4
  font-size: var(--pf-t--global--icon--size--font--xs);
5
- font-weight: 500;
5
+ font-weight: var(--pf-t--global--font--weight--body--bold);
6
6
  }
7
7
 
8
8
  .pf-chatbot__code-icon {
@@ -9,7 +9,7 @@ exports[`FileDropZone should render file drop zone 1`] = `
9
9
  >
10
10
  <input
11
11
  multiple=""
12
- style="display: none;"
12
+ style="border: 0px; clip: rect(0px, 0px, 0px, 0px); clip-path: inset(50%); height: 1px; margin: 0px -1px -1px 0px; overflow: hidden; padding: 0px; position: absolute; width: 1px; white-space: nowrap;"
13
13
  tabindex="-1"
14
14
  type="file"
15
15
  />
@@ -36,15 +36,15 @@
36
36
  justify-content: space-between;
37
37
  width: 100%;
38
38
  font-size: var(--pf-t--global--font--size--sm);
39
- font-weight: 500;
39
+ font-weight: var(--pf-t--global--font--weight--body--bold);
40
40
  }
41
41
 
42
42
  .pf-chatbot__button--copy.pf-v6-c-button {
43
- color: var(--pf-t--color--white);
43
+ color: var(--pf-t--color--white); // same in light + dark theme
44
44
 
45
45
  &:hover,
46
46
  &:focus {
47
- color: var(--pf-t--color--white);
47
+ color: var(--pf-t--color--white); // same in light + dark theme
48
48
  }
49
49
  }
50
50
  }
@@ -77,6 +77,6 @@
77
77
  }
78
78
 
79
79
  .pf-chatbot__message-inline-code {
80
- background-color: var(--pf-t--chatbot--code--background);
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
  }
@@ -0,0 +1,9 @@
1
+ .pf-chatbot__message-image {
2
+ border-radius: var(--pf-t--global--border--radius--small);
3
+ max-width: 37.5rem; // 600px
4
+ max-height: 25rem; // 400px
5
+ min-height: 6.25rem; // 100px
6
+ // with rehypePlugins={[rehypeUnwrapImages]}, image is not wrapped in p if it is by itself
7
+ // however, if in a paragraph tag as part of other content, it should be a block element
8
+ display: block;
9
+ }
@@ -0,0 +1,14 @@
1
+ // ============================================================================
2
+ // Chatbot Main - Message - Content - Image
3
+ // ============================================================================
4
+
5
+ import React from 'react';
6
+ import { ExtraProps } from 'react-markdown';
7
+
8
+ const ImageMessage = ({ children, ...props }: JSX.IntrinsicElements['img'] & ExtraProps) => (
9
+ <img className="pf-chatbot__message-image" {...props}>
10
+ {children}
11
+ </img>
12
+ );
13
+
14
+ export default ImageMessage;
@@ -0,0 +1,34 @@
1
+ // ============================================================================
2
+ // Chatbot Main - Message - Content - Link
3
+ // ============================================================================
4
+
5
+ import React from 'react';
6
+ import { Button, ButtonProps } from '@patternfly/react-core';
7
+ import { ExternalLinkSquareAltIcon } from '@patternfly/react-icons';
8
+
9
+ const LinkMessage = ({ children, target, href, ...props }: ButtonProps) => {
10
+ if (target === '_blank') {
11
+ return (
12
+ <Button
13
+ component="a"
14
+ variant="link"
15
+ href={href}
16
+ icon={<ExternalLinkSquareAltIcon />}
17
+ iconPosition="end"
18
+ isInline
19
+ target={target}
20
+ {...props}
21
+ >
22
+ {children}
23
+ </Button>
24
+ );
25
+ }
26
+
27
+ return (
28
+ <Button isInline component="a" href={href} variant="link" {...props}>
29
+ {children}
30
+ </Button>
31
+ );
32
+ };
33
+
34
+ export default LinkMessage;
@@ -5,21 +5,21 @@
5
5
  .pf-chatbot__message-ordered-list,
6
6
  .pf-chatbot__message-unordered-list {
7
7
  width: fit-content;
8
- padding: var(--pf-t--chatbot-message--type--padding) 0 var(--pf-t--chatbot-message--type--padding) 0;
9
- border-radius: var(--pf-t--chatbot-message--type--border--radius);
8
+ padding: var(--pf-t--global--spacer--sm) 0 var(--pf-t--global--spacer--sm) 0;
9
+ border-radius: var(--pf-t--global--border--radius--small);
10
10
 
11
11
  .pf-v6-c-list,
12
12
  ul,
13
13
  li {
14
- font-size: var(--pf-t--chatbot--font-size);
14
+ font-size: var(--pf-t--global--font--size--md);
15
15
  }
16
16
  }
17
17
 
18
18
  .pf-chatbot__message--user {
19
19
  .pf-chatbot__message-ordered-list,
20
20
  .pf-chatbot__message-unordered-list {
21
- background-color: var(--pf-t--chatbot-message--type--background--color--primary);
22
- color: var(--pf-t--chatbot-message--type--text--color--primary);
23
- padding: var(--pf-t--chatbot-message--type--padding);
21
+ background-color: var(--pf-t--global--color--brand--default);
22
+ color: var(--pf-t--global--text--color--on-brand--default);
23
+ padding: var(--pf-t--global--spacer--sm);
24
24
  }
25
25
  }