@patternfly/chatbot 2.1.0-prerelease.17

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 (534) hide show
  1. package/@types/index.d.ts +9 -0
  2. package/dist/cjs/AttachMenu/AttachMenu.d.ts +29 -0
  3. package/dist/cjs/AttachMenu/AttachMenu.js +33 -0
  4. package/dist/cjs/AttachMenu/index.d.ts +2 -0
  5. package/dist/cjs/AttachMenu/index.js +23 -0
  6. package/dist/cjs/AttachmentEdit/AttachmentEdit.d.ts +22 -0
  7. package/dist/cjs/AttachmentEdit/AttachmentEdit.js +25 -0
  8. package/dist/cjs/AttachmentEdit/index.d.ts +2 -0
  9. package/dist/cjs/AttachmentEdit/index.js +23 -0
  10. package/dist/cjs/Chatbot/Chatbot.d.ts +23 -0
  11. package/dist/cjs/Chatbot/Chatbot.js +49 -0
  12. package/dist/cjs/Chatbot/index.d.ts +2 -0
  13. package/dist/cjs/Chatbot/index.js +23 -0
  14. package/dist/cjs/ChatbotAlert/ChatbotAlert.d.ts +8 -0
  15. package/dist/cjs/ChatbotAlert/ChatbotAlert.js +28 -0
  16. package/dist/cjs/ChatbotAlert/index.d.ts +2 -0
  17. package/dist/cjs/ChatbotAlert/index.js +23 -0
  18. package/dist/cjs/ChatbotContent/ChatbotContent.d.ts +9 -0
  19. package/dist/cjs/ChatbotContent/ChatbotContent.js +27 -0
  20. package/dist/cjs/ChatbotContent/index.d.ts +2 -0
  21. package/dist/cjs/ChatbotContent/index.js +23 -0
  22. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +14 -0
  23. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +22 -0
  24. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +52 -0
  25. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +83 -0
  26. package/dist/cjs/ChatbotConversationHistoryNav/index.d.ts +3 -0
  27. package/dist/cjs/ChatbotConversationHistoryNav/index.js +24 -0
  28. package/dist/cjs/ChatbotFooter/ChatbotFooter.d.ts +9 -0
  29. package/dist/cjs/ChatbotFooter/ChatbotFooter.js +35 -0
  30. package/dist/cjs/ChatbotFooter/ChatbotFootnote.d.ts +44 -0
  31. package/dist/cjs/ChatbotFooter/ChatbotFootnote.js +56 -0
  32. package/dist/cjs/ChatbotFooter/index.d.ts +3 -0
  33. package/dist/cjs/ChatbotFooter/index.js +24 -0
  34. package/dist/cjs/ChatbotHeader/ChatbotHeader.d.ts +9 -0
  35. package/dist/cjs/ChatbotHeader/ChatbotHeader.js +13 -0
  36. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.d.ts +9 -0
  37. package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.js +10 -0
  38. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.d.ts +9 -0
  39. package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.js +10 -0
  40. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.d.ts +15 -0
  41. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.js +14 -0
  42. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.d.ts +14 -0
  43. package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +33 -0
  44. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.d.ts +18 -0
  45. package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +33 -0
  46. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.d.ts +20 -0
  47. package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.js +33 -0
  48. package/dist/cjs/ChatbotHeader/index.d.ts +8 -0
  49. package/dist/cjs/ChatbotHeader/index.js +29 -0
  50. package/dist/cjs/ChatbotModal/ChatbotModal.d.ts +10 -0
  51. package/dist/cjs/ChatbotModal/ChatbotModal.js +34 -0
  52. package/dist/cjs/ChatbotModal/index.d.ts +2 -0
  53. package/dist/cjs/ChatbotModal/index.js +23 -0
  54. package/dist/cjs/ChatbotPopover/ChatbotPopover.d.ts +4 -0
  55. package/dist/cjs/ChatbotPopover/ChatbotPopover.js +29 -0
  56. package/dist/cjs/ChatbotPopover/index.d.ts +2 -0
  57. package/dist/cjs/ChatbotPopover/index.js +23 -0
  58. package/dist/cjs/ChatbotToggle/ChatbotToggle.d.ts +20 -0
  59. package/dist/cjs/ChatbotToggle/ChatbotToggle.js +35 -0
  60. package/dist/cjs/ChatbotToggle/index.d.ts +2 -0
  61. package/dist/cjs/ChatbotToggle/index.js +23 -0
  62. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.d.ts +23 -0
  63. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.js +40 -0
  64. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.d.ts +1 -0
  65. package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +49 -0
  66. package/dist/cjs/ChatbotWelcomePrompt/index.d.ts +2 -0
  67. package/dist/cjs/ChatbotWelcomePrompt/index.js +23 -0
  68. package/dist/cjs/CodeModal/CodeModal.d.ts +34 -0
  69. package/dist/cjs/CodeModal/CodeModal.js +105 -0
  70. package/dist/cjs/CodeModal/index.d.ts +2 -0
  71. package/dist/cjs/CodeModal/index.js +23 -0
  72. package/dist/cjs/FileDetails/FileDetails.d.ts +922 -0
  73. package/dist/cjs/FileDetails/FileDetails.js +954 -0
  74. package/dist/cjs/FileDetails/FileDetails.test.d.ts +1 -0
  75. package/dist/cjs/FileDetails/FileDetails.test.js +26 -0
  76. package/dist/cjs/FileDetails/index.d.ts +2 -0
  77. package/dist/cjs/FileDetails/index.js +23 -0
  78. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.d.ts +21 -0
  79. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.js +22 -0
  80. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.test.d.ts +1 -0
  81. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.test.js +61 -0
  82. package/dist/cjs/FileDetailsLabel/index.d.ts +2 -0
  83. package/dist/cjs/FileDetailsLabel/index.js +23 -0
  84. package/dist/cjs/FileDropZone/FileDropZone.d.ts +17 -0
  85. package/dist/cjs/FileDropZone/FileDropZone.js +28 -0
  86. package/dist/cjs/FileDropZone/FileDropZone.test.d.ts +1 -0
  87. package/dist/cjs/FileDropZone/FileDropZone.test.js +19 -0
  88. package/dist/cjs/FileDropZone/index.d.ts +2 -0
  89. package/dist/cjs/FileDropZone/index.js +23 -0
  90. package/dist/cjs/LoadingMessage/LoadingMessage.d.ts +6 -0
  91. package/dist/cjs/LoadingMessage/LoadingMessage.js +20 -0
  92. package/dist/cjs/LoadingMessage/LoadingMessage.test.d.ts +1 -0
  93. package/dist/cjs/LoadingMessage/LoadingMessage.test.js +20 -0
  94. package/dist/cjs/LoadingMessage/index.d.ts +2 -0
  95. package/dist/cjs/LoadingMessage/index.js +23 -0
  96. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.d.ts +4 -0
  97. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.js +61 -0
  98. package/dist/cjs/Message/ListMessage/ListItemMessage.d.ts +4 -0
  99. package/dist/cjs/Message/ListMessage/ListItemMessage.js +12 -0
  100. package/dist/cjs/Message/ListMessage/OrderedListMessage.d.ts +4 -0
  101. package/dist/cjs/Message/ListMessage/OrderedListMessage.js +13 -0
  102. package/dist/cjs/Message/ListMessage/UnorderedListMessage.d.ts +4 -0
  103. package/dist/cjs/Message/ListMessage/UnorderedListMessage.js +13 -0
  104. package/dist/cjs/Message/Message.d.ts +65 -0
  105. package/dist/cjs/Message/Message.js +69 -0
  106. package/dist/cjs/Message/Message.test.d.ts +1 -0
  107. package/dist/cjs/Message/Message.test.js +239 -0
  108. package/dist/cjs/Message/MessageLoading.d.ts +5 -0
  109. package/dist/cjs/Message/MessageLoading.js +13 -0
  110. package/dist/cjs/Message/TextMessage/TextMessage.d.ts +4 -0
  111. package/dist/cjs/Message/TextMessage/TextMessage.js +27 -0
  112. package/dist/cjs/Message/index.d.ts +2 -0
  113. package/dist/cjs/Message/index.js +23 -0
  114. package/dist/cjs/MessageBar/AttachButton.d.ts +21 -0
  115. package/dist/cjs/MessageBar/AttachButton.js +38 -0
  116. package/dist/cjs/MessageBar/AttachButton.test.d.ts +1 -0
  117. package/dist/cjs/MessageBar/AttachButton.test.js +66 -0
  118. package/dist/cjs/MessageBar/MessageBar.d.ts +71 -0
  119. package/dist/cjs/MessageBar/MessageBar.js +112 -0
  120. package/dist/cjs/MessageBar/MessageBar.test.d.ts +1 -0
  121. package/dist/cjs/MessageBar/MessageBar.test.js +237 -0
  122. package/dist/cjs/MessageBar/MicrophoneButton.d.ts +21 -0
  123. package/dist/cjs/MessageBar/MicrophoneButton.js +74 -0
  124. package/dist/cjs/MessageBar/SendButton.d.ts +14 -0
  125. package/dist/cjs/MessageBar/SendButton.js +32 -0
  126. package/dist/cjs/MessageBar/SendButton.test.d.ts +1 -0
  127. package/dist/cjs/MessageBar/SendButton.test.js +54 -0
  128. package/dist/cjs/MessageBar/StopButton.d.ts +14 -0
  129. package/dist/cjs/MessageBar/StopButton.js +32 -0
  130. package/dist/cjs/MessageBar/StopButton.test.d.ts +1 -0
  131. package/dist/cjs/MessageBar/StopButton.test.js +54 -0
  132. package/dist/cjs/MessageBar/index.d.ts +5 -0
  133. package/dist/cjs/MessageBar/index.js +26 -0
  134. package/dist/cjs/MessageBox/JumpButton.d.ts +11 -0
  135. package/dist/cjs/MessageBox/JumpButton.js +17 -0
  136. package/dist/cjs/MessageBox/JumpButton.test.d.ts +1 -0
  137. package/dist/cjs/MessageBox/JumpButton.test.js +39 -0
  138. package/dist/cjs/MessageBox/MessageBox.d.ts +17 -0
  139. package/dist/cjs/MessageBox/MessageBox.js +74 -0
  140. package/dist/cjs/MessageBox/index.d.ts +3 -0
  141. package/dist/cjs/MessageBox/index.js +24 -0
  142. package/dist/cjs/PreviewAttachment/PreviewAttachment.d.ts +22 -0
  143. package/dist/cjs/PreviewAttachment/PreviewAttachment.js +25 -0
  144. package/dist/cjs/PreviewAttachment/index.d.ts +2 -0
  145. package/dist/cjs/PreviewAttachment/index.js +23 -0
  146. package/dist/cjs/ResponseActions/ResponseActionButton.d.ts +20 -0
  147. package/dist/cjs/ResponseActions/ResponseActionButton.js +12 -0
  148. package/dist/cjs/ResponseActions/ResponseActions.d.ts +30 -0
  149. package/dist/cjs/ResponseActions/ResponseActions.js +36 -0
  150. package/dist/cjs/ResponseActions/ResponseActions.test.d.ts +1 -0
  151. package/dist/cjs/ResponseActions/ResponseActions.test.js +67 -0
  152. package/dist/cjs/ResponseActions/index.d.ts +2 -0
  153. package/dist/cjs/ResponseActions/index.js +23 -0
  154. package/dist/cjs/SourceDetailsMenuItem/SourceDetailsMenuItem.d.ts +11 -0
  155. package/dist/cjs/SourceDetailsMenuItem/SourceDetailsMenuItem.js +31 -0
  156. package/dist/cjs/SourceDetailsMenuItem/index.d.ts +2 -0
  157. package/dist/cjs/SourceDetailsMenuItem/index.js +23 -0
  158. package/dist/cjs/SourcesCard/SourcesCard.d.ts +34 -0
  159. package/dist/cjs/SourcesCard/SourcesCard.js +68 -0
  160. package/dist/cjs/SourcesCard/SourcesCard.test.d.ts +1 -0
  161. package/dist/cjs/SourcesCard/SourcesCard.test.js +167 -0
  162. package/dist/cjs/SourcesCard/index.d.ts +2 -0
  163. package/dist/cjs/SourcesCard/index.js +23 -0
  164. package/dist/cjs/index.d.ts +48 -0
  165. package/dist/cjs/index.js +93 -0
  166. package/dist/css/main.css +1583 -0
  167. package/dist/css/main.css.map +1 -0
  168. package/dist/dynamic/AttachMenu/package.json +1 -0
  169. package/dist/dynamic/AttachmentEdit/package.json +1 -0
  170. package/dist/dynamic/Chatbot/package.json +1 -0
  171. package/dist/dynamic/ChatbotAlert/package.json +1 -0
  172. package/dist/dynamic/ChatbotContent/package.json +1 -0
  173. package/dist/dynamic/ChatbotConversationHistoryNav/package.json +1 -0
  174. package/dist/dynamic/ChatbotFooter/package.json +1 -0
  175. package/dist/dynamic/ChatbotHeader/package.json +1 -0
  176. package/dist/dynamic/ChatbotModal/package.json +1 -0
  177. package/dist/dynamic/ChatbotPopover/package.json +1 -0
  178. package/dist/dynamic/ChatbotToggle/package.json +1 -0
  179. package/dist/dynamic/ChatbotWelcomePrompt/package.json +1 -0
  180. package/dist/dynamic/CodeModal/package.json +1 -0
  181. package/dist/dynamic/FileDetails/package.json +1 -0
  182. package/dist/dynamic/FileDetailsLabel/package.json +1 -0
  183. package/dist/dynamic/FileDropZone/package.json +1 -0
  184. package/dist/dynamic/LoadingMessage/package.json +1 -0
  185. package/dist/dynamic/Message/package.json +1 -0
  186. package/dist/dynamic/MessageBar/package.json +1 -0
  187. package/dist/dynamic/MessageBox/package.json +1 -0
  188. package/dist/dynamic/PreviewAttachment/package.json +1 -0
  189. package/dist/dynamic/ResponseActions/package.json +1 -0
  190. package/dist/dynamic/SourceDetailsMenuItem/package.json +1 -0
  191. package/dist/dynamic/SourcesCard/package.json +1 -0
  192. package/dist/esm/AttachMenu/AttachMenu.d.ts +29 -0
  193. package/dist/esm/AttachMenu/AttachMenu.js +26 -0
  194. package/dist/esm/AttachMenu/index.d.ts +2 -0
  195. package/dist/esm/AttachMenu/index.js +2 -0
  196. package/dist/esm/AttachmentEdit/AttachmentEdit.d.ts +22 -0
  197. package/dist/esm/AttachmentEdit/AttachmentEdit.js +18 -0
  198. package/dist/esm/AttachmentEdit/index.d.ts +2 -0
  199. package/dist/esm/AttachmentEdit/index.js +2 -0
  200. package/dist/esm/Chatbot/Chatbot.d.ts +23 -0
  201. package/dist/esm/Chatbot/Chatbot.js +43 -0
  202. package/dist/esm/Chatbot/index.d.ts +2 -0
  203. package/dist/esm/Chatbot/index.js +2 -0
  204. package/dist/esm/ChatbotAlert/ChatbotAlert.d.ts +8 -0
  205. package/dist/esm/ChatbotAlert/ChatbotAlert.js +21 -0
  206. package/dist/esm/ChatbotAlert/index.d.ts +2 -0
  207. package/dist/esm/ChatbotAlert/index.js +2 -0
  208. package/dist/esm/ChatbotContent/ChatbotContent.d.ts +9 -0
  209. package/dist/esm/ChatbotContent/ChatbotContent.js +20 -0
  210. package/dist/esm/ChatbotContent/index.d.ts +2 -0
  211. package/dist/esm/ChatbotContent/index.js +2 -0
  212. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.d.ts +14 -0
  213. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.js +15 -0
  214. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +52 -0
  215. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +76 -0
  216. package/dist/esm/ChatbotConversationHistoryNav/index.d.ts +3 -0
  217. package/dist/esm/ChatbotConversationHistoryNav/index.js +3 -0
  218. package/dist/esm/ChatbotFooter/ChatbotFooter.d.ts +9 -0
  219. package/dist/esm/ChatbotFooter/ChatbotFooter.js +28 -0
  220. package/dist/esm/ChatbotFooter/ChatbotFootnote.d.ts +44 -0
  221. package/dist/esm/ChatbotFooter/ChatbotFootnote.js +49 -0
  222. package/dist/esm/ChatbotFooter/index.d.ts +3 -0
  223. package/dist/esm/ChatbotFooter/index.js +3 -0
  224. package/dist/esm/ChatbotHeader/ChatbotHeader.d.ts +9 -0
  225. package/dist/esm/ChatbotHeader/ChatbotHeader.js +6 -0
  226. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.d.ts +9 -0
  227. package/dist/esm/ChatbotHeader/ChatbotHeaderActions.js +3 -0
  228. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.d.ts +9 -0
  229. package/dist/esm/ChatbotHeader/ChatbotHeaderMain.js +3 -0
  230. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.d.ts +15 -0
  231. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.js +8 -0
  232. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.d.ts +14 -0
  233. package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.js +26 -0
  234. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.d.ts +18 -0
  235. package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.js +26 -0
  236. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.d.ts +20 -0
  237. package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.js +26 -0
  238. package/dist/esm/ChatbotHeader/index.d.ts +8 -0
  239. package/dist/esm/ChatbotHeader/index.js +8 -0
  240. package/dist/esm/ChatbotModal/ChatbotModal.d.ts +10 -0
  241. package/dist/esm/ChatbotModal/ChatbotModal.js +27 -0
  242. package/dist/esm/ChatbotModal/index.d.ts +2 -0
  243. package/dist/esm/ChatbotModal/index.js +2 -0
  244. package/dist/esm/ChatbotPopover/ChatbotPopover.d.ts +4 -0
  245. package/dist/esm/ChatbotPopover/ChatbotPopover.js +22 -0
  246. package/dist/esm/ChatbotPopover/index.d.ts +2 -0
  247. package/dist/esm/ChatbotPopover/index.js +2 -0
  248. package/dist/esm/ChatbotToggle/ChatbotToggle.d.ts +20 -0
  249. package/dist/esm/ChatbotToggle/ChatbotToggle.js +30 -0
  250. package/dist/esm/ChatbotToggle/index.d.ts +2 -0
  251. package/dist/esm/ChatbotToggle/index.js +2 -0
  252. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.d.ts +23 -0
  253. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.js +33 -0
  254. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.d.ts +1 -0
  255. package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +44 -0
  256. package/dist/esm/ChatbotWelcomePrompt/index.d.ts +2 -0
  257. package/dist/esm/ChatbotWelcomePrompt/index.js +2 -0
  258. package/dist/esm/CodeModal/CodeModal.d.ts +34 -0
  259. package/dist/esm/CodeModal/CodeModal.js +75 -0
  260. package/dist/esm/CodeModal/index.d.ts +2 -0
  261. package/dist/esm/CodeModal/index.js +2 -0
  262. package/dist/esm/FileDetails/FileDetails.d.ts +922 -0
  263. package/dist/esm/FileDetails/FileDetails.js +947 -0
  264. package/dist/esm/FileDetails/FileDetails.test.d.ts +1 -0
  265. package/dist/esm/FileDetails/FileDetails.test.js +21 -0
  266. package/dist/esm/FileDetails/index.d.ts +2 -0
  267. package/dist/esm/FileDetails/index.js +2 -0
  268. package/dist/esm/FileDetailsLabel/FileDetailsLabel.d.ts +21 -0
  269. package/dist/esm/FileDetailsLabel/FileDetailsLabel.js +15 -0
  270. package/dist/esm/FileDetailsLabel/FileDetailsLabel.test.d.ts +1 -0
  271. package/dist/esm/FileDetailsLabel/FileDetailsLabel.test.js +56 -0
  272. package/dist/esm/FileDetailsLabel/index.d.ts +2 -0
  273. package/dist/esm/FileDetailsLabel/index.js +2 -0
  274. package/dist/esm/FileDropZone/FileDropZone.d.ts +17 -0
  275. package/dist/esm/FileDropZone/FileDropZone.js +23 -0
  276. package/dist/esm/FileDropZone/FileDropZone.test.d.ts +1 -0
  277. package/dist/esm/FileDropZone/FileDropZone.test.js +14 -0
  278. package/dist/esm/FileDropZone/index.d.ts +2 -0
  279. package/dist/esm/FileDropZone/index.js +2 -0
  280. package/dist/esm/LoadingMessage/LoadingMessage.d.ts +6 -0
  281. package/dist/esm/LoadingMessage/LoadingMessage.js +13 -0
  282. package/dist/esm/LoadingMessage/LoadingMessage.test.d.ts +1 -0
  283. package/dist/esm/LoadingMessage/LoadingMessage.test.js +15 -0
  284. package/dist/esm/LoadingMessage/index.d.ts +2 -0
  285. package/dist/esm/LoadingMessage/index.js +2 -0
  286. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.d.ts +4 -0
  287. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.js +56 -0
  288. package/dist/esm/Message/ListMessage/ListItemMessage.d.ts +4 -0
  289. package/dist/esm/Message/ListMessage/ListItemMessage.js +7 -0
  290. package/dist/esm/Message/ListMessage/OrderedListMessage.d.ts +4 -0
  291. package/dist/esm/Message/ListMessage/OrderedListMessage.js +8 -0
  292. package/dist/esm/Message/ListMessage/UnorderedListMessage.d.ts +4 -0
  293. package/dist/esm/Message/ListMessage/UnorderedListMessage.js +8 -0
  294. package/dist/esm/Message/Message.d.ts +65 -0
  295. package/dist/esm/Message/Message.js +62 -0
  296. package/dist/esm/Message/Message.test.d.ts +1 -0
  297. package/dist/esm/Message/Message.test.js +234 -0
  298. package/dist/esm/Message/MessageLoading.d.ts +5 -0
  299. package/dist/esm/Message/MessageLoading.js +8 -0
  300. package/dist/esm/Message/TextMessage/TextMessage.d.ts +4 -0
  301. package/dist/esm/Message/TextMessage/TextMessage.js +22 -0
  302. package/dist/esm/Message/index.d.ts +2 -0
  303. package/dist/esm/Message/index.js +2 -0
  304. package/dist/esm/MessageBar/AttachButton.d.ts +21 -0
  305. package/dist/esm/MessageBar/AttachButton.js +32 -0
  306. package/dist/esm/MessageBar/AttachButton.test.d.ts +1 -0
  307. package/dist/esm/MessageBar/AttachButton.test.js +61 -0
  308. package/dist/esm/MessageBar/MessageBar.d.ts +71 -0
  309. package/dist/esm/MessageBar/MessageBar.js +105 -0
  310. package/dist/esm/MessageBar/MessageBar.test.d.ts +1 -0
  311. package/dist/esm/MessageBar/MessageBar.test.js +232 -0
  312. package/dist/esm/MessageBar/MicrophoneButton.d.ts +21 -0
  313. package/dist/esm/MessageBar/MicrophoneButton.js +67 -0
  314. package/dist/esm/MessageBar/SendButton.d.ts +14 -0
  315. package/dist/esm/MessageBar/SendButton.js +25 -0
  316. package/dist/esm/MessageBar/SendButton.test.d.ts +1 -0
  317. package/dist/esm/MessageBar/SendButton.test.js +49 -0
  318. package/dist/esm/MessageBar/StopButton.d.ts +14 -0
  319. package/dist/esm/MessageBar/StopButton.js +25 -0
  320. package/dist/esm/MessageBar/StopButton.test.d.ts +1 -0
  321. package/dist/esm/MessageBar/StopButton.test.js +49 -0
  322. package/dist/esm/MessageBar/index.d.ts +5 -0
  323. package/dist/esm/MessageBar/index.js +5 -0
  324. package/dist/esm/MessageBox/JumpButton.d.ts +11 -0
  325. package/dist/esm/MessageBox/JumpButton.js +12 -0
  326. package/dist/esm/MessageBox/JumpButton.test.d.ts +1 -0
  327. package/dist/esm/MessageBox/JumpButton.test.js +34 -0
  328. package/dist/esm/MessageBox/MessageBox.d.ts +17 -0
  329. package/dist/esm/MessageBox/MessageBox.js +68 -0
  330. package/dist/esm/MessageBox/index.d.ts +3 -0
  331. package/dist/esm/MessageBox/index.js +3 -0
  332. package/dist/esm/PreviewAttachment/PreviewAttachment.d.ts +22 -0
  333. package/dist/esm/PreviewAttachment/PreviewAttachment.js +18 -0
  334. package/dist/esm/PreviewAttachment/index.d.ts +2 -0
  335. package/dist/esm/PreviewAttachment/index.js +2 -0
  336. package/dist/esm/ResponseActions/ResponseActionButton.d.ts +20 -0
  337. package/dist/esm/ResponseActions/ResponseActionButton.js +5 -0
  338. package/dist/esm/ResponseActions/ResponseActions.d.ts +30 -0
  339. package/dist/esm/ResponseActions/ResponseActions.js +29 -0
  340. package/dist/esm/ResponseActions/ResponseActions.test.d.ts +1 -0
  341. package/dist/esm/ResponseActions/ResponseActions.test.js +62 -0
  342. package/dist/esm/ResponseActions/index.d.ts +2 -0
  343. package/dist/esm/ResponseActions/index.js +2 -0
  344. package/dist/esm/SourceDetailsMenuItem/SourceDetailsMenuItem.d.ts +11 -0
  345. package/dist/esm/SourceDetailsMenuItem/SourceDetailsMenuItem.js +24 -0
  346. package/dist/esm/SourceDetailsMenuItem/index.d.ts +2 -0
  347. package/dist/esm/SourceDetailsMenuItem/index.js +2 -0
  348. package/dist/esm/SourcesCard/SourcesCard.d.ts +34 -0
  349. package/dist/esm/SourcesCard/SourcesCard.js +63 -0
  350. package/dist/esm/SourcesCard/SourcesCard.test.d.ts +1 -0
  351. package/dist/esm/SourcesCard/SourcesCard.test.js +162 -0
  352. package/dist/esm/SourcesCard/index.d.ts +2 -0
  353. package/dist/esm/SourcesCard/index.js +2 -0
  354. package/dist/esm/index.d.ts +48 -0
  355. package/dist/esm/index.js +49 -0
  356. package/dist/tsconfig.tsbuildinfo +1 -0
  357. package/generate-fed-package-json.js +75 -0
  358. package/generate-index.js +42 -0
  359. package/package.json +79 -0
  360. package/patternfly-a11y.config.js +28 -0
  361. package/patternfly-docs/content/extensions/chatbot/about-chatbot.md +29 -0
  362. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachMenu.tsx +149 -0
  363. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentEdit.tsx +26 -0
  364. package/patternfly-docs/content/extensions/chatbot/examples/Messages/AttachmentError.tsx +13 -0
  365. package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +87 -0
  366. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDetails.tsx +4 -0
  367. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDetailsLabel.tsx +54 -0
  368. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDropZone.tsx +60 -0
  369. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithAttachment.tsx +75 -0
  370. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithCustomResponseActions.tsx +39 -0
  371. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickResponses.tsx +44 -0
  372. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithResponseActions.tsx +25 -0
  373. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithSources.tsx +118 -0
  374. package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +171 -0
  375. package/patternfly-docs/content/extensions/chatbot/examples/Messages/PaperclipIcon.svg +10 -0
  376. package/patternfly-docs/content/extensions/chatbot/examples/Messages/PreviewAttachment.tsx +25 -0
  377. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +37 -0
  378. package/patternfly-docs/content/extensions/chatbot/examples/Messages/patternfly_avatar.jpg +0 -0
  379. package/patternfly-docs/content/extensions/chatbot/examples/Messages/user_avatar.jpg +0 -0
  380. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotContainer.tsx +66 -0
  381. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFooter.tsx +14 -0
  382. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotFootnote.tsx +26 -0
  383. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderBasic.tsx +189 -0
  384. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawer.tsx +93 -0
  385. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithActions.tsx +75 -0
  386. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderTitle.tsx +50 -0
  387. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBar.tsx +8 -0
  388. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarAttach.tsx +148 -0
  389. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarStop.tsx +10 -0
  390. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotModal.tsx +84 -0
  391. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotToggleBasic.tsx +13 -0
  392. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomeInteraction.tsx +144 -0
  393. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotWelcomePrompt.tsx +38 -0
  394. package/patternfly-docs/content/extensions/chatbot/examples/UI/CustomClosedIcon.tsx +89 -0
  395. package/patternfly-docs/content/extensions/chatbot/examples/UI/PF-HorizontalLogo-Color.svg +29 -0
  396. package/patternfly-docs/content/extensions/chatbot/examples/UI/PF-HorizontalLogo-Reverse.svg +28 -0
  397. package/patternfly-docs/content/extensions/chatbot/examples/UI/PF-IconLogo-Color.svg +17 -0
  398. package/patternfly-docs/content/extensions/chatbot/examples/UI/PF-IconLogo-Reverse.svg +16 -0
  399. package/patternfly-docs/content/extensions/chatbot/examples/UI/SkipToContent.tsx +40 -0
  400. package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +336 -0
  401. package/patternfly-docs/content/extensions/chatbot/examples/demos/AttachmentDemos.md +99 -0
  402. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +105 -0
  403. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.tsx +473 -0
  404. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachment.tsx +278 -0
  405. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachmentMenu.tsx +268 -0
  406. package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedChatbot.tsx +437 -0
  407. package/patternfly-docs/pages/index.js +27 -0
  408. package/patternfly-docs/patternfly-docs.config.js +8 -0
  409. package/patternfly-docs/patternfly-docs.css.js +9 -0
  410. package/patternfly-docs/patternfly-docs.routes.js +12 -0
  411. package/patternfly-docs/patternfly-docs.source.js +24 -0
  412. package/release.config.js +18 -0
  413. package/src/AttachMenu/AttachMenu.scss +62 -0
  414. package/src/AttachMenu/AttachMenu.tsx +81 -0
  415. package/src/AttachMenu/index.ts +3 -0
  416. package/src/AttachmentEdit/AttachmentEdit.tsx +63 -0
  417. package/src/AttachmentEdit/index.ts +3 -0
  418. package/src/Chatbot/Chatbot.scss +89 -0
  419. package/src/Chatbot/Chatbot.tsx +81 -0
  420. package/src/Chatbot/index.ts +3 -0
  421. package/src/ChatbotAlert/ChatbotAlert.scss +5 -0
  422. package/src/ChatbotAlert/ChatbotAlert.tsx +32 -0
  423. package/src/ChatbotAlert/index.ts +3 -0
  424. package/src/ChatbotContent/ChatbotContent.scss +23 -0
  425. package/src/ChatbotContent/ChatbotContent.tsx +23 -0
  426. package/src/ChatbotContent/index.ts +3 -0
  427. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.tsx +62 -0
  428. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.scss +166 -0
  429. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +217 -0
  430. package/src/ChatbotConversationHistoryNav/index.ts +4 -0
  431. package/src/ChatbotFooter/ChatbotFooter.scss +54 -0
  432. package/src/ChatbotFooter/ChatbotFooter.tsx +33 -0
  433. package/src/ChatbotFooter/ChatbotFootnote.scss +12 -0
  434. package/src/ChatbotFooter/ChatbotFootnote.tsx +135 -0
  435. package/src/ChatbotFooter/index.ts +4 -0
  436. package/src/ChatbotHeader/ChatbotHeader.scss +140 -0
  437. package/src/ChatbotHeader/ChatbotHeader.tsx +22 -0
  438. package/src/ChatbotHeader/ChatbotHeaderActions.tsx +15 -0
  439. package/src/ChatbotHeader/ChatbotHeaderMain.tsx +15 -0
  440. package/src/ChatbotHeader/ChatbotHeaderMenu.tsx +48 -0
  441. package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.tsx +73 -0
  442. package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.tsx +68 -0
  443. package/src/ChatbotHeader/ChatbotHeaderTitle.tsx +57 -0
  444. package/src/ChatbotHeader/index.ts +9 -0
  445. package/src/ChatbotModal/ChatbotModal.scss +93 -0
  446. package/src/ChatbotModal/ChatbotModal.tsx +43 -0
  447. package/src/ChatbotModal/index.ts +3 -0
  448. package/src/ChatbotPopover/ChatbotPopover.scss +27 -0
  449. package/src/ChatbotPopover/ChatbotPopover.tsx +15 -0
  450. package/src/ChatbotPopover/index.ts +3 -0
  451. package/src/ChatbotToggle/ChatbotToggle.scss +26 -0
  452. package/src/ChatbotToggle/ChatbotToggle.tsx +80 -0
  453. package/src/ChatbotToggle/index.ts +3 -0
  454. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.scss +48 -0
  455. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.tsx +64 -0
  456. package/src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.tsx +66 -0
  457. package/src/ChatbotWelcomePrompt/__snapshots__/ChatbotWelcomePrompt.test.tsx.snap +29 -0
  458. package/src/ChatbotWelcomePrompt/index.ts +3 -0
  459. package/src/CodeModal/CodeModal.scss +76 -0
  460. package/src/CodeModal/CodeModal.tsx +153 -0
  461. package/src/CodeModal/index.ts +3 -0
  462. package/src/FileDetails/FileDetails.scss +25 -0
  463. package/src/FileDetails/FileDetails.test.tsx +23 -0
  464. package/src/FileDetails/FileDetails.tsx +990 -0
  465. package/src/FileDetails/__snapshots__/FileDetails.test.tsx.snap +74 -0
  466. package/src/FileDetails/index.ts +2 -0
  467. package/src/FileDetailsLabel/FileDetailsLabel.scss +66 -0
  468. package/src/FileDetailsLabel/FileDetailsLabel.test.tsx +48 -0
  469. package/src/FileDetailsLabel/FileDetailsLabel.tsx +66 -0
  470. package/src/FileDetailsLabel/__snapshots__/FileDetailsLabel.test.tsx.snap +90 -0
  471. package/src/FileDetailsLabel/index.ts +2 -0
  472. package/src/FileDropZone/FileDropZone.scss +36 -0
  473. package/src/FileDropZone/FileDropZone.test.tsx +15 -0
  474. package/src/FileDropZone/FileDropZone.tsx +56 -0
  475. package/src/FileDropZone/__snapshots__/FileDropZone.test.tsx.snap +18 -0
  476. package/src/FileDropZone/index.ts +3 -0
  477. package/src/LoadingMessage/LoadingMessage.test.tsx +16 -0
  478. package/src/LoadingMessage/LoadingMessage.tsx +27 -0
  479. package/src/LoadingMessage/__snapshots__/LoadingMessage.test.tsx.snap +52 -0
  480. package/src/LoadingMessage/index.ts +3 -0
  481. package/src/Message/CodeBlockMessage/CodeBlockMessage.scss +82 -0
  482. package/src/Message/CodeBlockMessage/CodeBlockMessage.tsx +88 -0
  483. package/src/Message/ListMessage/ListItemMessage.tsx +11 -0
  484. package/src/Message/ListMessage/ListMessage.scss +25 -0
  485. package/src/Message/ListMessage/OrderedListMessage.tsx +17 -0
  486. package/src/Message/ListMessage/UnorderedListMessage.tsx +15 -0
  487. package/src/Message/Message.scss +118 -0
  488. package/src/Message/Message.test.tsx +281 -0
  489. package/src/Message/Message.tsx +181 -0
  490. package/src/Message/MessageLoading.scss +53 -0
  491. package/src/Message/MessageLoading.tsx +15 -0
  492. package/src/Message/TextMessage/TextMessage.scss +51 -0
  493. package/src/Message/TextMessage/TextMessage.tsx +17 -0
  494. package/src/Message/index.ts +3 -0
  495. package/src/MessageBar/AttachButton.scss +20 -0
  496. package/src/MessageBar/AttachButton.test.tsx +53 -0
  497. package/src/MessageBar/AttachButton.tsx +81 -0
  498. package/src/MessageBar/MessageBar.scss +77 -0
  499. package/src/MessageBar/MessageBar.test.tsx +318 -0
  500. package/src/MessageBar/MessageBar.tsx +252 -0
  501. package/src/MessageBar/MicrophoneButton.scss +48 -0
  502. package/src/MessageBar/MicrophoneButton.tsx +114 -0
  503. package/src/MessageBar/SendButton.scss +29 -0
  504. package/src/MessageBar/SendButton.test.tsx +43 -0
  505. package/src/MessageBar/SendButton.tsx +54 -0
  506. package/src/MessageBar/StopButton.scss +22 -0
  507. package/src/MessageBar/StopButton.test.tsx +42 -0
  508. package/src/MessageBar/StopButton.tsx +57 -0
  509. package/src/MessageBar/index.ts +6 -0
  510. package/src/MessageBox/JumpButton.scss +46 -0
  511. package/src/MessageBox/JumpButton.test.tsx +26 -0
  512. package/src/MessageBox/JumpButton.tsx +37 -0
  513. package/src/MessageBox/MessageBox.scss +36 -0
  514. package/src/MessageBox/MessageBox.tsx +114 -0
  515. package/src/MessageBox/index.ts +4 -0
  516. package/src/PreviewAttachment/PreviewAttachment.tsx +67 -0
  517. package/src/PreviewAttachment/index.ts +3 -0
  518. package/src/ResponseActions/ResponseActionButton.tsx +56 -0
  519. package/src/ResponseActions/ResponseActions.scss +26 -0
  520. package/src/ResponseActions/ResponseActions.test.tsx +59 -0
  521. package/src/ResponseActions/ResponseActions.tsx +115 -0
  522. package/src/ResponseActions/index.ts +3 -0
  523. package/src/SourceDetailsMenuItem/SourceDetailsMenuItem.scss +33 -0
  524. package/src/SourceDetailsMenuItem/SourceDetailsMenuItem.tsx +36 -0
  525. package/src/SourceDetailsMenuItem/index.ts +2 -0
  526. package/src/SourcesCard/SourcesCard.scss +74 -0
  527. package/src/SourcesCard/SourcesCard.test.tsx +238 -0
  528. package/src/SourcesCard/SourcesCard.tsx +159 -0
  529. package/src/SourcesCard/__snapshots__/SourcesCard.test.tsx.snap +34 -0
  530. package/src/SourcesCard/index.ts +3 -0
  531. package/src/index.ts +73 -0
  532. package/src/main.scss +89 -0
  533. package/tsconfig.cjs.json +8 -0
  534. package/tsconfig.json +73 -0
@@ -0,0 +1,88 @@
1
+ // ============================================================================
2
+ // Chatbot Main - Message - Content - Code Block
3
+ // ============================================================================
4
+ import React from 'react';
5
+ import SyntaxHighlighter from 'react-syntax-highlighter';
6
+ import { obsidian } from 'react-syntax-highlighter/dist/esm/styles/hljs';
7
+ // Import PatternFly components
8
+ import { CodeBlock, CodeBlockAction, CodeBlockCode, Button, Tooltip } from '@patternfly/react-core';
9
+
10
+ import { CheckIcon } from '@patternfly/react-icons/dist/esm/icons/check-icon';
11
+ import { CopyIcon } from '@patternfly/react-icons/dist/esm/icons/copy-icon';
12
+ import { ExtraProps } from 'react-markdown';
13
+
14
+ const CodeBlockMessage = ({
15
+ children,
16
+ className,
17
+ 'aria-label': ariaLabel,
18
+ ...props
19
+ }: JSX.IntrinsicElements['code'] & ExtraProps) => {
20
+ const [copied, setCopied] = React.useState(false);
21
+
22
+ const buttonRef = React.useRef();
23
+ const tooltipID = React.useId();
24
+
25
+ const language = /language-(\w+)/.exec(className || '')?.[1];
26
+
27
+ // Handle clicking copy button
28
+ const handleCopy = React.useCallback((event, text) => {
29
+ navigator.clipboard.writeText(text.toString());
30
+ setCopied(true);
31
+ }, []);
32
+
33
+ // Reset copied state
34
+ React.useEffect(() => {
35
+ if (copied) {
36
+ const timer = setTimeout(() => {
37
+ setCopied(false);
38
+ }, 3000);
39
+
40
+ return () => clearTimeout(timer);
41
+ }
42
+ });
43
+
44
+ if (!String(children).includes('\n')) {
45
+ return (
46
+ <code {...props} className="pf-chatbot__message-inline-code">
47
+ {children}
48
+ </code>
49
+ );
50
+ }
51
+
52
+ // Setup code block header
53
+ const actions = (
54
+ <>
55
+ <CodeBlockAction>
56
+ {language && <div className="pf-chatbot__message-code-block-language">{language}</div>}
57
+ <Button
58
+ ref={buttonRef}
59
+ aria-label={ariaLabel ?? 'Copy code button'}
60
+ variant="plain"
61
+ className="pf-chatbot__button--copy"
62
+ onClick={(event) => handleCopy(event, children)}
63
+ >
64
+ {copied ? <CheckIcon /> : <CopyIcon />}
65
+ </Button>
66
+ <Tooltip id={tooltipID} content="Copy" position="top" triggerRef={buttonRef} />
67
+ </CodeBlockAction>
68
+ </>
69
+ );
70
+
71
+ return (
72
+ <div className="pf-chatbot__message-code-block">
73
+ <CodeBlock actions={actions}>
74
+ <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
+ )}
82
+ </CodeBlockCode>
83
+ </CodeBlock>
84
+ </div>
85
+ );
86
+ };
87
+
88
+ export default CodeBlockMessage;
@@ -0,0 +1,11 @@
1
+ // ============================================================================
2
+ // Chatbot Main - Message - Content - List
3
+ // ============================================================================
4
+
5
+ import React from 'react';
6
+ import { ExtraProps } from 'react-markdown';
7
+ import { ListItem } from '@patternfly/react-core';
8
+
9
+ const ListItemMessage = ({ children }: JSX.IntrinsicElements['li'] & ExtraProps) => <ListItem>{children}</ListItem>;
10
+
11
+ export default ListItemMessage;
@@ -0,0 +1,25 @@
1
+ // ============================================================================
2
+ // Chatbot Main - Message - Content - Text
3
+ // ============================================================================
4
+
5
+ .pf-chatbot__message-ordered-list,
6
+ .pf-chatbot__message-unordered-list {
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);
10
+
11
+ .pf-v6-c-list,
12
+ ul,
13
+ li {
14
+ font-size: var(--pf-t--chatbot--font-size);
15
+ }
16
+ }
17
+
18
+ .pf-chatbot__message--user {
19
+ .pf-chatbot__message-ordered-list,
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);
24
+ }
25
+ }
@@ -0,0 +1,17 @@
1
+ // ============================================================================
2
+ // Chatbot Main - Message - Content - List
3
+ // ============================================================================
4
+
5
+ import React from 'react';
6
+ import { ExtraProps } from 'react-markdown';
7
+ import { List, ListComponent, OrderType } from '@patternfly/react-core';
8
+
9
+ const OrderedListMessage = ({ children }: JSX.IntrinsicElements['ol'] & ExtraProps) => (
10
+ <div className="pf-chatbot__message-ordered-list">
11
+ <List component={ListComponent.ol} type={OrderType.number}>
12
+ {children}
13
+ </List>
14
+ </div>
15
+ );
16
+
17
+ export default OrderedListMessage;
@@ -0,0 +1,15 @@
1
+ // ============================================================================
2
+ // Chatbot Main - Message - Content - List
3
+ // ============================================================================
4
+
5
+ import React from 'react';
6
+ import { ExtraProps } from 'react-markdown';
7
+ import { List } from '@patternfly/react-core';
8
+
9
+ const UnorderedListMessage = ({ children }: JSX.IntrinsicElements['ul'] & ExtraProps) => (
10
+ <div className="pf-chatbot__message-unordered-list">
11
+ <List>{children}</List>
12
+ </div>
13
+ );
14
+
15
+ export default UnorderedListMessage;
@@ -0,0 +1,118 @@
1
+ // ============================================================================
2
+ // Chatbot Message
3
+ // ============================================================================
4
+ .pf-chatbot__message {
5
+ --pf-t--chatbot-message--type--background--color--default: var(--pf-t--global--background--color--tertiary--default);
6
+ --pf-t--chatbot-message--type--background--color--primary: var(--pf-t--global--color--brand--default);
7
+ --pf-t--chatbot-message--type--padding: var(--pf-t--global--spacer--sm);
8
+ --pf-t--chatbot-message--type--text--color--default: var(--pf-t--global--text--color--regular);
9
+ --pf-t--chatbot-message--type--text--color--primary: var(--pf-t--global--text--color--inverse);
10
+ --pf-t--chatbot-message--type--border--radius: var(--pf-t--global--border--radius--small);
11
+ --pf-t--chatbot-message--meta--label--color: var(--pf-t--global--border--color--on-secondary);
12
+
13
+ display: flex;
14
+ align-items: flex-start;
15
+ gap: var(--pf-t--global--spacer--lg);
16
+ padding-bottom: var(--pf-t--global--spacer--2xl);
17
+
18
+ // Name
19
+ // --------------------------------------------------------------------------
20
+ .pf-v6-c-truncate {
21
+ --pf-v6-c-truncate--MinWidth: 0ch;
22
+ --pf-v6-c-truncate__start--MinWidth: 0ch;
23
+ }
24
+ // Avatar
25
+ // --------------------------------------------------------------------------
26
+ .pf-v6-c-avatar {
27
+ --pf-v6-c-avatar--Width: 3rem;
28
+ --pf-v6-c-avatar--Height: 3rem;
29
+ position: sticky;
30
+ top: var(--pf-t--global--spacer--md);
31
+ object-fit: cover;
32
+ pointer-events: none; // prevent dragging - interferes with FileDropZone
33
+ }
34
+
35
+ // Contents
36
+ // --------------------------------------------------------------------------
37
+ &-contents {
38
+ display: flex;
39
+ flex-direction: column;
40
+ gap: var(--pf-t--global--spacer--sm);
41
+ width: 100%;
42
+ }
43
+
44
+ // Meta data
45
+ // --------------------------------------------------------------------------
46
+ &-meta {
47
+ display: flex;
48
+ align-items: center;
49
+ gap: var(--pf-t--global--spacer--sm);
50
+
51
+ // Author name
52
+ .pf-chatbot__message-name {
53
+ font-family: var(--pf-t--chatbot--heading--font-family);
54
+ font-weight: 600;
55
+ font-size: var(--pf-t--global--font--size--sm);
56
+ }
57
+
58
+ // Badge
59
+ .pf-v6-c-label {
60
+ --pf-v6-c-label--m-outline--BorderColor: var(--pf-t--chatbot-message--meta--label--color);
61
+ --pf-v6-c-label--FontSize: var(--pf-t--global--font--size--xs);
62
+ font-weight: 500;
63
+
64
+ .pf-v6-c-label__content {
65
+ --pf-v6-c-label--Color: var(--pf-t--chatbot-message--meta--label--color);
66
+ }
67
+ }
68
+
69
+ // Timestamp
70
+ .pf-v6-c-timestamp {
71
+ flex: 1 0 max-content;
72
+ }
73
+ time {
74
+ font-size: var(--pf-t--global--font--size--xs);
75
+ }
76
+ }
77
+
78
+ // Response content
79
+ // --------------------------------------------------------------------------
80
+ &-response {
81
+ display: flex;
82
+ flex-direction: column;
83
+ align-items: flex-start;
84
+ gap: var(--pf-t--global--font--size--sm);
85
+ color: var(--pf-t--chatbot-message--type--text--color--default);
86
+ }
87
+
88
+ &-and-actions {
89
+ display: grid;
90
+ gap: var(--pf-t--global--spacer--sm);
91
+ }
92
+
93
+ &-quick-response {
94
+ .pf-v6-c-label {
95
+ --pf-v6-c-label--FontSize: var(--pf-t--global--font--size--md);
96
+
97
+ @media screen and (min-width: 401px) and (max-width: 600px) {
98
+ --pf-v6-c-label__text--MaxWidth: 20ch;
99
+ }
100
+
101
+ @media screen and (max-width: 400px) {
102
+ --pf-v6-c-label__text--MaxWidth: 15ch;
103
+ }
104
+ }
105
+ }
106
+ }
107
+
108
+ // Attachments
109
+ // --------------------------------------------------------------------------
110
+ .pf-chatbot__message-attachments-container {
111
+ display: flex;
112
+ gap: var(--pf-t--global--spacer--md);
113
+ flex-wrap: wrap;
114
+ }
115
+
116
+ @import './MessageLoading';
117
+ @import './CodeBlockMessage/CodeBlockMessage';
118
+ @import './TextMessage/TextMessage';
@@ -0,0 +1,281 @@
1
+ import React from 'react';
2
+ import { render, screen } from '@testing-library/react';
3
+ import '@testing-library/jest-dom';
4
+ import Message from './Message';
5
+ import userEvent from '@testing-library/user-event';
6
+
7
+ const ALL_ACTIONS = [
8
+ { label: /Good response/i },
9
+ { label: /Bad response/i },
10
+ { label: /Copy/i },
11
+ { label: /Share/i },
12
+ { label: /Listen/i }
13
+ ];
14
+
15
+ const UNORDERED_LIST = `
16
+ Here is an unordered list:
17
+
18
+ * Item 1
19
+ * Item 2
20
+ * Item 3
21
+ `;
22
+
23
+ const ORDERED_LIST = `
24
+ Here is an ordered list:
25
+
26
+ 1. Item 1
27
+ 2. Item 2
28
+ 3. Item 3
29
+ `;
30
+
31
+ const CODE_MESSAGE = `
32
+ Here is some YAML code:
33
+
34
+ ~~~yaml
35
+ apiVersion: helm.openshift.io/v1beta1/
36
+ kind: HelmChartRepository
37
+ metadata:
38
+ name: azure-sample-repo0oooo00ooo
39
+ spec:
40
+ connectionConfig:
41
+ url: https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs
42
+ ~~~`;
43
+
44
+ const CODE = `
45
+ apiVersion: helm.openshift.io/v1beta1/
46
+ kind: HelmChartRepository
47
+ metadata:
48
+ name: azure-sample-repo0oooo00ooo
49
+ spec:
50
+ connectionConfig:
51
+ url: https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs
52
+ `;
53
+
54
+ const INLINE_CODE = `Here is an inline code - \`() => void\``;
55
+
56
+ const checkListItemsRendered = () => {
57
+ const items = ['Item 1', 'Item 2', 'Item 3'];
58
+ expect(screen.getAllByRole('listitem')).toHaveLength(3);
59
+ items.forEach((item) => {
60
+ // list item text gets wrapped in a span by the third-party library so we can't just check the listitem
61
+ expect(screen.getByText(item)).toBeTruthy();
62
+ });
63
+ };
64
+
65
+ describe('Message', () => {
66
+ it('should render user messages correctly', () => {
67
+ render(<Message avatar="./img" role="user" name="User" content="Hi" />);
68
+ expect(screen.getByText('User')).toBeTruthy();
69
+ expect(screen.getByText('Hi')).toBeTruthy();
70
+ const date = new Date();
71
+ expect(screen.getByText(`${date.toLocaleDateString()}, ${date.toLocaleTimeString()}`)).toBeTruthy();
72
+ expect(screen.queryByText('Loading message')).toBeFalsy();
73
+ expect(screen.getByRole('img')).toHaveAttribute('src', './img');
74
+ });
75
+ it('should render bot messages correctly', () => {
76
+ render(<Message avatar="./img" role="bot" name="Bot" content="Hi" />);
77
+ expect(screen.getByText('Bot')).toBeTruthy();
78
+ expect(screen.getByText('AI')).toBeTruthy();
79
+ expect(screen.getByText('Hi')).toBeTruthy();
80
+ const date = new Date();
81
+ expect(screen.getByText(`${date.toLocaleDateString()}, ${date.toLocaleTimeString()}`)).toBeTruthy();
82
+ });
83
+ it('should render avatar correctly', () => {
84
+ render(<Message avatar="./testImg" role="bot" name="Bot" content="Hi" />);
85
+ expect(screen.getByRole('img')).toHaveAttribute('src', './testImg');
86
+ });
87
+ it('should render botWord correctly', () => {
88
+ render(<Message avatar="./img" role="bot" name="Bot" content="Hi" botWord="人工知能" />);
89
+ expect(screen.getByText('Bot')).toBeTruthy();
90
+ expect(screen.getByText('人工知能')).toBeTruthy();
91
+ expect(screen.queryByText('AI')).toBeFalsy();
92
+ expect(screen.getByText('Hi')).toBeTruthy();
93
+ });
94
+ it('should render timestamps', () => {
95
+ render(<Message avatar="./img" role="bot" name="Bot" content="Hi" timestamp="2 hours ago" />);
96
+ expect(screen.getByText('Bot')).toBeTruthy();
97
+ expect(screen.getByText('AI')).toBeTruthy();
98
+ expect(screen.getByText('Hi')).toBeTruthy();
99
+ expect(screen.getByText('2 hours ago')).toBeTruthy();
100
+ const date = new Date();
101
+ expect(screen.queryByText(`${date.toLocaleDateString()}, ${date.toLocaleTimeString()}`)).toBeFalsy();
102
+ });
103
+ it('should render attachments', () => {
104
+ render(<Message avatar="./img" role="user" content="Hi" attachments={[{ name: 'testAttachment' }]} />);
105
+ expect(screen.getByText('Hi')).toBeTruthy();
106
+ expect(screen.getByText('testAttachment')).toBeTruthy();
107
+ });
108
+ it('should be able to click attachments', async () => {
109
+ const spy = jest.fn();
110
+ render(
111
+ <Message avatar="./img" role="user" content="Hi" attachments={[{ name: 'testAttachment', onClick: spy }]} />
112
+ );
113
+ expect(screen.getByText('Hi')).toBeTruthy();
114
+ expect(screen.getByText('testAttachment')).toBeTruthy();
115
+ await userEvent.click(screen.getByRole('button', { name: /testAttachment/i }));
116
+ expect(spy).toHaveBeenCalledTimes(1);
117
+ });
118
+ it('should be able to close attachments', async () => {
119
+ const spy = jest.fn();
120
+ render(
121
+ <Message avatar="./img" role="user" content="Hi" attachments={[{ name: 'testAttachment', onClose: spy }]} />
122
+ );
123
+ expect(screen.getByText('Hi')).toBeTruthy();
124
+ expect(screen.getByText('testAttachment')).toBeTruthy();
125
+ expect(screen.getByRole('button', { name: /close testAttachment/i })).toBeTruthy();
126
+ await userEvent.click(screen.getByRole('button', { name: /close testAttachment/i }));
127
+ expect(spy).toHaveBeenCalledTimes(1);
128
+ });
129
+ it('should render loading state', () => {
130
+ render(<Message avatar="./img" role="bot" name="Bot" content="Hi" isLoading />);
131
+ expect(screen.getByText('Bot')).toBeTruthy();
132
+ expect(screen.getByText('AI')).toBeTruthy();
133
+ expect(screen.queryByText('Hi')).toBeFalsy();
134
+ const date = new Date();
135
+ expect(screen.getByText(`${date.toLocaleDateString()}, ${date.toLocaleTimeString()}`)).toBeTruthy();
136
+ expect(screen.getByText('Loading message')).toBeTruthy();
137
+ });
138
+ it('should be able to show sources', async () => {
139
+ render(
140
+ <Message
141
+ avatar="./img"
142
+ role="bot"
143
+ name="Bot"
144
+ content="Hi"
145
+ sources={{
146
+ sources: [
147
+ {
148
+ title: 'Getting started with Red Hat OpenShift',
149
+ link: '#',
150
+ body: 'Red Hat OpenShift on IBM Cloud is a managed offering to create your own cluster of compute hosts where you can deploy and manage containerized apps on IBM Cloud ...'
151
+ }
152
+ ]
153
+ }}
154
+ />
155
+ );
156
+ expect(screen.getByText('Getting started with Red Hat OpenShift')).toBeTruthy();
157
+ });
158
+ it('should not show sources if loading', () => {
159
+ render(
160
+ <Message
161
+ avatar="./img"
162
+ role="bot"
163
+ name="Bot"
164
+ content="Hi"
165
+ isLoading
166
+ sources={{
167
+ sources: [
168
+ {
169
+ title: 'Getting started with Red Hat OpenShift',
170
+ link: '#',
171
+ body: 'Red Hat OpenShift on IBM Cloud is a managed offering to create your own cluster of compute hosts where you can deploy and manage containerized apps on IBM Cloud ...'
172
+ }
173
+ ]
174
+ }}
175
+ />
176
+ );
177
+ expect(screen.getByText('Loading message')).toBeTruthy();
178
+ expect(screen.queryByText('Getting started with Red Hat OpenShift')).toBeFalsy();
179
+ });
180
+ it('should be able to show actions', async () => {
181
+ render(
182
+ <Message
183
+ avatar="./img"
184
+ role="bot"
185
+ name="Bot"
186
+ content="Hi"
187
+ actions={{
188
+ // eslint-disable-next-line no-console
189
+ positive: { onClick: () => console.log('Good response') },
190
+ // eslint-disable-next-line no-console
191
+ negative: { onClick: () => console.log('Bad response') },
192
+ // eslint-disable-next-line no-console
193
+ copy: { onClick: () => console.log('Copy') },
194
+ // eslint-disable-next-line no-console
195
+ share: { onClick: () => console.log('Share') },
196
+ // eslint-disable-next-line no-console
197
+ listen: { onClick: () => console.log('Listen') }
198
+ }}
199
+ />
200
+ );
201
+ ALL_ACTIONS.forEach(({ label }) => {
202
+ expect(screen.getByRole('button', { name: label })).toBeTruthy();
203
+ });
204
+ });
205
+ it('should not show actions if loading', async () => {
206
+ render(
207
+ <Message
208
+ avatar="./img"
209
+ role="bot"
210
+ name="Bot"
211
+ content="Hi"
212
+ isLoading
213
+ actions={{
214
+ // eslint-disable-next-line no-console
215
+ positive: { onClick: () => console.log('Good response') },
216
+ // eslint-disable-next-line no-console
217
+ negative: { onClick: () => console.log('Bad response') },
218
+ // eslint-disable-next-line no-console
219
+ copy: { onClick: () => console.log('Copy') },
220
+ // eslint-disable-next-line no-console
221
+ share: { onClick: () => console.log('Share') },
222
+ // eslint-disable-next-line no-console
223
+ listen: { onClick: () => console.log('Listen') }
224
+ }}
225
+ />
226
+ );
227
+ expect(screen.getByText('Loading message')).toBeTruthy();
228
+ ALL_ACTIONS.forEach(({ label }) => {
229
+ expect(screen.queryByRole('button', { name: label })).toBeFalsy();
230
+ });
231
+ });
232
+ it('should render unordered lists correctly', () => {
233
+ render(<Message avatar="./img" role="user" name="User" content={UNORDERED_LIST} />);
234
+ expect(screen.getByText('Here is an unordered list:')).toBeTruthy();
235
+ checkListItemsRendered();
236
+ });
237
+ it('should render ordered lists correctly', () => {
238
+ render(<Message avatar="./img" role="user" name="User" content={ORDERED_LIST} />);
239
+ expect(screen.getByText('Here is an ordered list:')).toBeTruthy();
240
+ checkListItemsRendered();
241
+ });
242
+ it('should render inline code', () => {
243
+ render(<Message avatar="./img" role="user" name="User" content={INLINE_CODE} />);
244
+ expect(screen.getByText(/() => void/i)).toBeTruthy();
245
+ expect(screen.queryByRole('button', { name: 'Copy code button' })).toBeFalsy();
246
+ });
247
+ it('should render code correctly', () => {
248
+ render(<Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} />);
249
+ expect(screen.getByText('Here is some YAML code:')).toBeTruthy();
250
+ expect(screen.getByRole('button', { name: 'Copy code button' })).toBeTruthy();
251
+ expect(screen.getByText(/apiVersion: helm.openshift.io\/v1beta1/i)).toBeTruthy();
252
+ expect(screen.getByText(/metadata:/i)).toBeTruthy();
253
+ expect(screen.getByText(/name: azure-sample-repo0oooo00ooo/i)).toBeTruthy();
254
+ expect(screen.getByText(/spec/i)).toBeTruthy();
255
+ expect(screen.getByText(/connectionConfig:/i)).toBeTruthy();
256
+ expect(
257
+ screen.getByText(/url: https:\/\/raw.githubusercontent.com\/Azure-Samples\/helm-charts\/master\/docs/i)
258
+ ).toBeTruthy();
259
+ });
260
+ it('can click copy code button', async () => {
261
+ // need explicit setup since RTL stubs clipboard if you do this
262
+ const user = userEvent.setup();
263
+ render(<Message avatar="./img" role="user" name="User" content={CODE_MESSAGE} />);
264
+ expect(screen.getByRole('button', { name: 'Copy code button' })).toBeTruthy();
265
+ await user.click(screen.getByRole('button', { name: 'Copy code button' }));
266
+ const clipboardText = await navigator.clipboard.readText();
267
+ expect(clipboardText.trim()).toEqual(CODE.trim());
268
+ });
269
+ it('should handle codeBlockProps correctly by spreading it onto the CodeMessage', () => {
270
+ render(
271
+ <Message
272
+ avatar="./img"
273
+ role="user"
274
+ name="User"
275
+ content={CODE_MESSAGE}
276
+ codeBlockProps={{ 'aria-label': 'test' }}
277
+ />
278
+ );
279
+ expect(screen.getByRole('button', { name: 'test' })).toBeTruthy();
280
+ });
281
+ });