@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,54 @@
1
+ import React from 'react';
2
+ import FileDetailsLabel from '@patternfly/chatbot/dist/dynamic/FileDetailsLabel';
3
+ import { Radio } from '@patternfly/react-core/dist/dynamic/Radio';
4
+ import { FormGroup } from '@patternfly/react-core/dist/dynamic/FormGroup';
5
+ import { Stack } from '@patternfly/react-core/dist/dynamic/Stack';
6
+
7
+ export const FileDetailsLabelExample: React.FunctionComponent = () => {
8
+ const [variant, setVariant] = React.useState('plain');
9
+
10
+ return (
11
+ <Stack hasGutter>
12
+ <FormGroup role="radiogroup" isInline fieldId="basic-form-radio-group" label="Variant">
13
+ <Radio
14
+ isChecked={variant === 'plain'}
15
+ onChange={() => setVariant('plain')}
16
+ name="basic-inline-radio"
17
+ label="Plain"
18
+ id="plain"
19
+ />
20
+ <Radio
21
+ isChecked={variant === 'closeable'}
22
+ onChange={() => setVariant('closeable')}
23
+ name="basic-inline-radio"
24
+ label="Closeable"
25
+ id="closeable"
26
+ />
27
+ <Radio
28
+ isChecked={variant === 'clickable'}
29
+ onChange={() => setVariant('clickable')}
30
+ name="basic-inline-radio"
31
+ label="Clickable"
32
+ id="clickable"
33
+ />
34
+ <Radio
35
+ isChecked={variant === 'loading'}
36
+ onChange={() => setVariant('loading')}
37
+ name="basic-inline-radio"
38
+ label="Loading"
39
+ id="loading"
40
+ />
41
+ </FormGroup>
42
+ <div className="pf-chatbot__file-details-example">
43
+ <FileDetailsLabel
44
+ fileName="auth-operator.yml"
45
+ // eslint-disable-next-line no-console
46
+ {...(variant === 'closeable' && { onClose: () => console.log('clicked close button!') })}
47
+ // eslint-disable-next-line no-console
48
+ {...(variant === 'clickable' && { onClick: () => console.log('clicked entire button!') })}
49
+ {...(variant === 'loading' && { isLoading: true })}
50
+ />
51
+ </div>
52
+ </Stack>
53
+ );
54
+ };
@@ -0,0 +1,60 @@
1
+ import React from 'react';
2
+ import FileDropZone from '@patternfly/chatbot/dist/dynamic/FileDropZone';
3
+ import { DropEvent } from '@patternfly/react-core';
4
+
5
+ interface readFile {
6
+ fileName: string;
7
+ data?: string;
8
+ loadResult?: 'danger' | 'success';
9
+ loadError?: DOMException;
10
+ }
11
+
12
+ export const DropzoneExample: React.FunctionComponent = () => {
13
+ const [currentFiles, setCurrentFiles] = React.useState<File[]>([]);
14
+ const [readFileData, setReadFileData] = React.useState<readFile[]>([]);
15
+
16
+ // remove files from both state arrays based on their name
17
+ const removeFiles = (namesOfFilesToRemove: string[]) => {
18
+ const newCurrentFiles = currentFiles.filter(
19
+ (currentFile) => !namesOfFilesToRemove.some((fileName) => fileName === currentFile.name)
20
+ );
21
+
22
+ setCurrentFiles(newCurrentFiles);
23
+
24
+ const newReadFiles = readFileData.filter(
25
+ (readFile) => !namesOfFilesToRemove.some((fileName) => fileName === readFile.fileName)
26
+ );
27
+
28
+ setReadFileData(newReadFiles);
29
+ };
30
+
31
+ // callback that will be called by the react dropzone with the newly dropped file objects
32
+ const handleFileDrop = (_event: DropEvent, droppedFiles: File[]) => {
33
+ // any custom validation you'd like
34
+ if (droppedFiles.length > 1) {
35
+ alert('Error: Dropped too many files');
36
+ return;
37
+ }
38
+ if (droppedFiles[0].size > 25000000) {
39
+ alert('Error: File size too large');
40
+ return;
41
+ }
42
+ // identify what, if any, files are re-uploads of already uploaded files
43
+ const currentFileNames = currentFiles.map((file) => file.name);
44
+ const reUploads = droppedFiles.filter((droppedFile) => currentFileNames.includes(droppedFile.name));
45
+
46
+ /** this promise chain is needed because if the file removal is done at the same time as the file adding react
47
+ * won't realize that the status items for the re-uploaded files needs to be re-rendered */
48
+ Promise.resolve()
49
+ .then(() => removeFiles(reUploads.map((file) => file.name)))
50
+ .then(() => alert(`Dropped ${droppedFiles.map((file) => file.name)}`));
51
+ };
52
+
53
+ return (
54
+ <FileDropZone onFileDrop={handleFileDrop} displayMode="fullscreen">
55
+ <div className="pf-chatbot__file-drop-zone-example">
56
+ Content that shows when no dragging is happening (drag an item here to see the drop zone)
57
+ </div>
58
+ </FileDropZone>
59
+ );
60
+ };
@@ -0,0 +1,75 @@
1
+ import React from 'react';
2
+
3
+ import Message from '@patternfly/chatbot/dist/dynamic/Message';
4
+ import PreviewAttachment from '@patternfly/chatbot/dist/dynamic/PreviewAttachment';
5
+ import AttachmentEdit from '@patternfly/chatbot/dist/dynamic/AttachmentEdit';
6
+ import userAvatar from './user_avatar.jpg';
7
+
8
+ interface ModalData {
9
+ code: string;
10
+ fileName: string;
11
+ }
12
+
13
+ export const AttachmentMenuExample: React.FunctionComponent = () => {
14
+ const [isPreviewModalOpen, setIsPreviewModalOpen] = React.useState<boolean>(false);
15
+ const [isEditModalOpen, setIsEditModalOpen] = React.useState<boolean>(false);
16
+ const [currentModalData, setCurrentModalData] = React.useState<ModalData>();
17
+
18
+ const onClick = (event: React.MouseEvent, name: string) => {
19
+ setCurrentModalData({ fileName: name, code: 'test' });
20
+ setIsEditModalOpen(false);
21
+ setIsPreviewModalOpen(true);
22
+ };
23
+
24
+ const onClose = (event: React.MouseEvent, name: string, id: number | string | undefined) => {
25
+ // eslint-disable-next-line no-console
26
+ console.log(`Closed attachment with name: ${name} and id: ${id}`);
27
+ };
28
+
29
+ return (
30
+ <>
31
+ <Message
32
+ name="User"
33
+ role="user"
34
+ avatar={userAvatar}
35
+ content="Here is an uploaded file"
36
+ attachments={[{ name: 'auth-operator.yml', id: '1', onClick, onClose }]}
37
+ />
38
+ <Message
39
+ name="User"
40
+ role="user"
41
+ avatar={userAvatar}
42
+ content="Here are two uploaded files"
43
+ attachments={[
44
+ { name: 'auth-operator.yml', id: '1' },
45
+ { name: 'patternfly.svg', id: '2' }
46
+ ]}
47
+ />
48
+ {currentModalData && (
49
+ <PreviewAttachment
50
+ code={currentModalData?.code}
51
+ fileName={currentModalData?.fileName}
52
+ isModalOpen={isPreviewModalOpen}
53
+ onEdit={() => {
54
+ setIsPreviewModalOpen(false);
55
+ setIsEditModalOpen(true);
56
+ }}
57
+ onDismiss={() => setCurrentModalData(undefined)}
58
+ handleModalToggle={() => setIsPreviewModalOpen(false)}
59
+ />
60
+ )}
61
+ {currentModalData && (
62
+ <AttachmentEdit
63
+ code={currentModalData?.code}
64
+ fileName={currentModalData?.fileName}
65
+ isModalOpen={isEditModalOpen}
66
+ onSave={() => {
67
+ setIsEditModalOpen(false);
68
+ }}
69
+ onCancel={() => setCurrentModalData(undefined)}
70
+ handleModalToggle={() => setIsEditModalOpen(false)}
71
+ />
72
+ )}
73
+ </>
74
+ );
75
+ };
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+
3
+ import Message from '@patternfly/chatbot/dist/dynamic/Message';
4
+ import patternflyAvatar from './patternfly_avatar.jpg';
5
+ import InfoCircleIcon from '@patternfly/react-icons/dist/esm/icons/info-circle-icon';
6
+ import DownloadIcon from '@patternfly/react-icons/dist/esm/icons/download-icon';
7
+ import RedoIcon from '@patternfly/react-icons/dist/esm/icons/redo-icon';
8
+
9
+ export const CustomActionExample: React.FunctionComponent = () => (
10
+ <Message
11
+ name="Bot"
12
+ role="bot"
13
+ avatar={patternflyAvatar}
14
+ content="Example with custom actions"
15
+ actions={{
16
+ regenerate: {
17
+ ariaLabel: 'Regenerate',
18
+ // eslint-disable-next-line no-console
19
+ onClick: () => console.log('Clicked regenerate'),
20
+ tooltipContent: 'Regenerate',
21
+ icon: <RedoIcon />
22
+ },
23
+ download: {
24
+ ariaLabel: 'Download',
25
+ // eslint-disable-next-line no-console
26
+ onClick: () => console.log('Clicked download'),
27
+ tooltipContent: 'Download',
28
+ icon: <DownloadIcon />
29
+ },
30
+ info: {
31
+ ariaLabel: 'Info',
32
+ // eslint-disable-next-line no-console
33
+ onClick: () => console.log('Clicked info'),
34
+ tooltipContent: 'Info',
35
+ icon: <InfoCircleIcon />
36
+ }
37
+ }}
38
+ />
39
+ );
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ import Message from '@patternfly/chatbot/dist/dynamic/Message';
3
+ import patternflyAvatar from './patternfly_avatar.jpg';
4
+
5
+ export const MessageWithQuickResponsesExample: React.FunctionComponent = () => (
6
+ <>
7
+ <Message
8
+ name="Bot"
9
+ role="bot"
10
+ avatar={patternflyAvatar}
11
+ content="Did you clear your cache?"
12
+ quickResponses={[
13
+ { id: '1', content: 'Yes', onClick: () => alert('Clicked yes') },
14
+ { id: '2', content: 'No', onClick: () => alert('Clicked no') }
15
+ ]}
16
+ />
17
+ <Message
18
+ name="Bot"
19
+ role="bot"
20
+ avatar={patternflyAvatar}
21
+ content="What browser are you noticing the issue in?"
22
+ quickResponses={[
23
+ { id: '1', content: 'Microsoft Edge', onClick: () => alert('Clicked Edge') },
24
+ { id: '2', content: 'Google Chrome', onClick: () => alert('Clicked Chrome') },
25
+ { id: '3', content: 'Mozilla Firefox', onClick: () => alert('Clicked Firefox') },
26
+ { id: '4', content: 'Apple Safari', onClick: () => alert('Clicked Safari') },
27
+ { id: '5', content: 'Internet Explorer', onClick: () => alert('Clicked Internet Explorer') }
28
+ ]}
29
+ />
30
+ <Message
31
+ name="Bot"
32
+ role="bot"
33
+ avatar={patternflyAvatar}
34
+ content="Welcome back! How can I help?"
35
+ quickResponses={[
36
+ { id: '1', content: 'Help me with an access issue', onClick: () => alert('Clicked id 1') },
37
+ { id: '2', content: 'Show my critical vulnerabilities', onClick: () => alert('Clicked id 2') },
38
+ { id: '3', content: 'Create new integrations', onClick: () => alert('Clicked id 3') },
39
+ { id: '4', content: 'Get recommendations from an advisor', onClick: () => alert('Clicked id 4') },
40
+ { id: '5', content: 'Something else', onClick: () => alert('Clicked id 5') }
41
+ ]}
42
+ />
43
+ </>
44
+ );
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+
3
+ import Message from '@patternfly/chatbot/dist/dynamic/Message';
4
+ import patternflyAvatar from './patternfly_avatar.jpg';
5
+
6
+ export const ResponseActionExample: React.FunctionComponent = () => (
7
+ <Message
8
+ name="Bot"
9
+ role="bot"
10
+ avatar={patternflyAvatar}
11
+ content="Example with all prebuilt actions"
12
+ actions={{
13
+ // eslint-disable-next-line no-console
14
+ positive: { onClick: () => console.log('Good response') },
15
+ // eslint-disable-next-line no-console
16
+ negative: { onClick: () => console.log('Bad response') },
17
+ // eslint-disable-next-line no-console
18
+ copy: { onClick: () => console.log('Copy') },
19
+ // eslint-disable-next-line no-console
20
+ share: { onClick: () => console.log('Share') },
21
+ // eslint-disable-next-line no-console
22
+ listen: { onClick: () => console.log('Listen') }
23
+ }}
24
+ />
25
+ );
@@ -0,0 +1,118 @@
1
+ import React from 'react';
2
+ import Message from '@patternfly/chatbot/dist/dynamic/Message';
3
+ import patternflyAvatar from './patternfly_avatar.jpg';
4
+
5
+ export const MessageWithSourcesExample: React.FunctionComponent = () => {
6
+ const onSetPage = (_event: React.MouseEvent | React.KeyboardEvent | MouseEvent, newPage: number) => {
7
+ // eslint-disable-next-line no-console
8
+ console.log(`Page changed to ${newPage}`);
9
+ };
10
+
11
+ return (
12
+ <>
13
+ <Message
14
+ name="Bot"
15
+ role="bot"
16
+ avatar={patternflyAvatar}
17
+ content="Example with sources"
18
+ sources={{
19
+ sources: [
20
+ {
21
+ title: 'Getting started with Red Hat OpenShift',
22
+ link: '#',
23
+ 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 ...'
24
+ },
25
+ {
26
+ title: 'Azure Red Hat OpenShift documentation',
27
+ link: '#',
28
+ body: 'Microsoft Azure Red Hat OpenShift allows you to deploy a production ready Red Hat OpenShift cluster in Azure ...'
29
+ },
30
+ {
31
+ title: 'OKD Documentation: Home',
32
+ link: '#',
33
+ body: 'OKD is a distribution of Kubernetes optimized for continuous application development and multi-tenant deployment. OKD also serves as the upstream code base upon ...'
34
+ }
35
+ ],
36
+ onSetPage
37
+ }}
38
+ />
39
+ <Message
40
+ name="Bot"
41
+ role="bot"
42
+ avatar={patternflyAvatar}
43
+ content="Example with very long sources"
44
+ sources={{
45
+ sources: [
46
+ {
47
+ title: 'Getting started with Red Hat OpenShift AI and other products',
48
+ link: '#',
49
+ 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 ...'
50
+ },
51
+ {
52
+ title: 'Azure Red Hat OpenShift documentation | Red Hat',
53
+ link: '#',
54
+ body: 'Microsoft Azure Red Hat OpenShift allows you to deploy a production ready Red Hat OpenShift cluster in Azure ...'
55
+ }
56
+ ],
57
+ onSetPage
58
+ }}
59
+ />
60
+ <Message
61
+ name="Bot"
62
+ role="bot"
63
+ avatar={patternflyAvatar}
64
+ content="Example with only one source"
65
+ sources={{
66
+ sources: [
67
+ {
68
+ title: 'Getting started with Red Hat OpenShift',
69
+ link: '#',
70
+ 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 ...'
71
+ }
72
+ ],
73
+ onSetPage
74
+ }}
75
+ />
76
+ <Message
77
+ name="Bot"
78
+ role="bot"
79
+ avatar={patternflyAvatar}
80
+ content="Example with sources that include a title and link"
81
+ sources={{
82
+ sources: [
83
+ { title: 'Getting started with Red Hat OpenShift', link: '#' },
84
+ {
85
+ title: 'Azure Red Hat OpenShift documentation',
86
+ link: '#'
87
+ },
88
+ {
89
+ title: 'OKD Documentation: Home',
90
+ link: '#'
91
+ }
92
+ ],
93
+ onSetPage
94
+ }}
95
+ />
96
+ <Message
97
+ name="Bot"
98
+ role="bot"
99
+ avatar={patternflyAvatar}
100
+ content="Example with link-only sources (not recommended)"
101
+ sources={{
102
+ sources: [
103
+ {
104
+ link: '#'
105
+ },
106
+ {
107
+ link: '#'
108
+ },
109
+ {
110
+ link: '#'
111
+ }
112
+ ],
113
+ onSetPage
114
+ }}
115
+ />
116
+ </>
117
+ );
118
+ };
@@ -0,0 +1,171 @@
1
+ ---
2
+ # Sidenav top-level section
3
+ # should be the same for all markdown files
4
+ section: PatternFly-AI
5
+ subsection: ChatBot
6
+ # Sidenav secondary level section
7
+ # should be the same for all markdown files
8
+ id: Messages
9
+ # Tab (react | react-demos | html | html-demos | design-guidelines | accessibility)
10
+ source: react
11
+ # If you use typescript, the name of the interface to display props for
12
+ # These are found through the sourceProps function provided in patternfly-docs.source.js
13
+ propComponents:
14
+ [
15
+ 'AttachMenu',
16
+ 'AttachmentEdit',
17
+ 'FileDetails',
18
+ 'FileDetailsLabel',
19
+ 'FileDropZone',
20
+ 'PreviewAttachment',
21
+ 'Message',
22
+ 'PreviewAttachment',
23
+ 'ActionProps',
24
+ 'SourcesCardProps'
25
+ ]
26
+ sortValue: 3
27
+ ---
28
+
29
+ import Message from '@patternfly/chatbot/dist/dynamic/Message';
30
+ import SourcesCard from '@patternfly/chatbot/dist/dynamic/SourcesCard';
31
+ import { RobotIcon } from '@patternfly/react-icons/dist/esm/icons/robot-icon';
32
+ import InfoCircleIcon from '@patternfly/react-icons/dist/esm/icons/info-circle-icon';
33
+ import DownloadIcon from '@patternfly/react-icons/dist/esm/icons/download-icon';
34
+ import RedoIcon from '@patternfly/react-icons/dist/esm/icons/redo-icon';
35
+ import patternflyAvatar from './patternfly_avatar.jpg';
36
+ import userAvatar from './user_avatar.jpg';
37
+ import AttachmentEdit from '@patternfly/chatbot/dist/dynamic/AttachmentEdit';
38
+ import FileDetails from '@patternfly/chatbot/dist/dynamic/FileDetails';
39
+ import FileDetailsLabel from '@patternfly/chatbot/dist/dynamic/FileDetailsLabel';
40
+ import FileDropZone from '@patternfly/chatbot/dist/dynamic/FileDropZone';
41
+ import { PreviewAttachment } from '@patternfly/chatbot/dist/dynamic/PreviewAttachment';
42
+ import ChatbotAlert from '@patternfly/chatbot/dist/dynamic/ChatbotAlert';
43
+
44
+ The `content` prop of the `<Message>` component is passed to a `<Markdown>` component (from [react-markdown](https://remarkjs.github.io/react-markdown/)), which is configured to translate plain text strings into PatternFly [`<Content>` components](/components/content) and code blocks into PatternFly [`<CodeBlock>` components.](/components/code-block)
45
+
46
+ ## Messages
47
+
48
+ ### Bot messages
49
+
50
+ Messages from the chatbot will be marked with an "AI" label to clearly communicate the use of AI to users. The chatbot can display different `content` types, including plain text, code, or a loading animation (via `isLoading`).
51
+
52
+ <br />
53
+
54
+ By default, a date and timestamp is displayed with each message. We recommend using the `timestamp` prop in real chatbots, since it will allow you to set persistent dates and times on messages, even if the messages re-render. You can update `timestamp` with a different [date and time format](/ux-writing/numerics) as needed.
55
+
56
+ ```js file="./BotMessage.tsx"
57
+
58
+ ```
59
+
60
+ ### Messages actions
61
+
62
+ You can add actions to a message, to allow users to interact with the message content. These actions can include:
63
+
64
+ - Feedback responses that allow users to rate a message as "good" or "bad".
65
+ - Copy and share controls that allow users to share the message content with others.
66
+ - A listen action, that will read the message content out loud.
67
+
68
+ **Note:** The logic for the actions is not built into the component and must be implemented by the consuming application.
69
+
70
+ ```js file="./MessageWithResponseActions.tsx"
71
+
72
+ ```
73
+
74
+ ### Custom message actions
75
+
76
+ Beyond the standard message actions (positive, negative, copy, share, or listen), you can add custom actions to a bot message by passing an `actions` object to the `<Message>` component. This object can contain the following customizations: `ariaLabel`, `onClick`, `className`, `isDisabled`, `tooltipContent`, `tooltipProps`, and `icon`.
77
+
78
+ ```js file="./MessageWithCustomResponseActions.tsx"
79
+
80
+ ```
81
+
82
+ ### Messages with quick responses
83
+
84
+ You can offer convenient, clickable responses to messages in the form of quick actions. Quick actions are [PatternFly labels](/components/label/) in a label group, configured to display up to 5 visible labels.
85
+
86
+ To add quick actions, pass `quickResponses` to `<Message>`. This can be overridden by passing additional `<LabelGroup>` props to `quickResponseContainerProps`, or additional `<Label>` props to `quickResponses`.
87
+
88
+ ```js file="./MessageWithQuickResponses.tsx"
89
+
90
+ ```
91
+
92
+ ### Messages with sources
93
+
94
+ If you are using Retrieval-Augmented Generation, you may want to display sources in a message. Passing `sources` to `<Message>` allows you to paginate between the sources you provide.
95
+
96
+ The API for a source requires a link at minimum, but we strongly recommend providing a more descriptive title and body description so users have enough context. The title is limited to 1 line and the body is limited to 2 lines.
97
+
98
+ ```js file="./MessageWithSources.tsx"
99
+
100
+ ```
101
+
102
+ ### User messages
103
+
104
+ Messages from users have a different background color to differentiate them from bot messages. You can also display a custom avatar that is uploaded by the user.
105
+
106
+ ```js file="./UserMessage.tsx"
107
+
108
+ ```
109
+
110
+ ## File attachments
111
+
112
+ ### Messages with attachments
113
+
114
+ When [attachments](/patternfly-ai/chatbot/messages#file-attachments) are shared and displayed in the chatbot window, users will see a selectable and dismissible message that contains file details in a label. Selecting the file label can open a preview modal, which allows users to view or make edits to the file contents.
115
+
116
+ The `<PreviewAttachment>` component displays a modal with a read-only view of the attached file's contents. Selecting the "edit" button will open the `<AttachmentEdit>` component, which provides an interactive environment where users can make changes to the file.
117
+
118
+ If a `displayMode` is not passed to `<PreviewAttachment>` or `<AttachmentEdit>`, they both default to overlaying the default `displayMode` of the `<Chatbot>` component.
119
+
120
+ **Note:** This example does not actually apply any edits to the attached file. That logic depends on the implementation.
121
+
122
+ ```js file="./MessageWithAttachment.tsx"
123
+
124
+ ```
125
+
126
+ We are using [react-dropzone](https://react-dropzone.js.org) for opening the file dialog and handling drag and drop. It does not process files or provide any way to make HTTP requests to a server. If you need this, [react-dropzone](https://react-dropzone.js.org) suggests [filepond](https://pqina.nl/filepond/) or [uppy.io.](https://uppy.io/). To handle edge cases, like restricting the number or size of files, you can pass a function to the `handleAttach` prop on `MessageBar` or `onFileDrop` prop in `FileDropZone.`
127
+
128
+ ### Attachment label
129
+
130
+ When an attachment is successfully uploaded, a label will appear in the message box. There are several label variants that cover different attachment states, including:
131
+
132
+ - **Plain:** Default attachment labels, which display the filename and extension.
133
+ - **Closeable:** Attachments that can be dismissed.
134
+ - **Clickable:** Attachments that can be selected, typically to open file details.
135
+ - **Loading:** Attachments that are still being uploaded.
136
+
137
+ ```js file="./FileDetailsLabel.tsx"
138
+
139
+ ```
140
+
141
+ ### Attachment preview
142
+
143
+ To allow users to preview the contents of an attachment, load a read-only view of the file contents in a new modal.
144
+
145
+ ```js file="./PreviewAttachment.tsx"
146
+
147
+ ```
148
+
149
+ ### Editable attachments
150
+
151
+ To allow users to edit an attached file, load a new code editor within the chatbot window. On this screen, you can allow users to edit a file and save changes if they'd like. Return users to the main chatbot window once they dismiss the editor.
152
+
153
+ ```js file="./AttachmentEdit.tsx"
154
+
155
+ ```
156
+
157
+ ### Failed attachment error
158
+
159
+ When an attachment upload fails, a [danger alert](/components/alert) is displayed to provide details about the reason for failure.
160
+
161
+ ```js file="./AttachmentError.tsx"
162
+
163
+ ```
164
+
165
+ ### Attachment dropzone
166
+
167
+ An attachment dropzone allows users to upload files via drag and drop.
168
+
169
+ ```js file="./FileDropZone.tsx"
170
+
171
+ ```
@@ -0,0 +1,10 @@
1
+ <svg width="18" height="20" viewBox="0 0 18 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_3934_2737)">
3
+ <path d="M14.4766 3.27344C13.5234 2.32031 11.9766 2.32031 11.0234 3.27344L3.83594 10.4609C2.19141 12.1055 2.19141 14.7695 3.83594 16.4141C5.48047 18.0586 8.14453 18.0586 9.78906 16.4141L15.7266 10.4766C16.1523 10.0508 16.8477 10.0508 17.2734 10.4766C17.6992 10.9023 17.6992 11.5977 17.2734 12.0234L11.3359 17.9609C8.83594 20.4609 4.78906 20.4609 2.28906 17.9609C-0.210938 15.4609 -0.210938 11.4141 2.28906 8.91406L9.47656 1.72656C11.2852 -0.0820313 14.2148 -0.0820313 16.0234 1.72656C17.832 3.53516 17.832 6.46484 16.0234 8.27344L9.14844 15.1484C8.03125 16.2656 6.21875 16.2656 5.10156 15.1484C3.98438 14.0312 3.98438 12.2188 5.10156 11.1016L10.7266 5.47656C11.1523 5.05078 11.8477 5.05078 12.2734 5.47656C12.6992 5.90234 12.6992 6.59766 12.2734 7.02344L6.64844 12.6484C6.38672 12.9102 6.38672 13.3398 6.64844 13.6016C6.91016 13.8633 7.33984 13.8633 7.60156 13.6016L14.4766 6.72656C15.4297 5.77344 15.4297 4.22656 14.4766 3.27344Z" fill="white"/>
4
+ </g>
5
+ <defs>
6
+ <clipPath id="clip0_3934_2737">
7
+ <rect width="17.5" height="20" fill="white" transform="translate(0.25)"/>
8
+ </clipPath>
9
+ </defs>
10
+ </svg>
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { Button } from '@patternfly/react-core';
3
+ import { PreviewAttachment } from '@patternfly/chatbot/dist/dynamic/PreviewAttachment';
4
+
5
+ export const PreviewAttachmentExample: React.FunctionComponent = () => {
6
+ const [isModalOpen, setIsModalOpen] = React.useState(false);
7
+
8
+ const handleModalToggle = (_event: React.MouseEvent | MouseEvent | KeyboardEvent) => {
9
+ setIsModalOpen(!isModalOpen);
10
+ };
11
+
12
+ return (
13
+ <>
14
+ <Button onClick={handleModalToggle}>Launch modal</Button>
15
+ <PreviewAttachment
16
+ code="I am a code snippet"
17
+ fileName="test.yaml"
18
+ handleModalToggle={handleModalToggle}
19
+ isModalOpen={isModalOpen}
20
+ onDismiss={() => null}
21
+ onEdit={() => null}
22
+ />
23
+ </>
24
+ );
25
+ };
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+
3
+ import Message from '@patternfly/chatbot/dist/dynamic/Message';
4
+ import userAvatar from './user_avatar.jpg';
5
+
6
+ export const UserMessageExample: React.FunctionComponent = () => {
7
+ const markdown = `A paragraph with *emphasis* and **strong importance**.
8
+
9
+ > A block quote with ~strikethrough~ and a URL: https://reactjs.org.
10
+
11
+ Here is an inline code - \`() => void\`
12
+
13
+ Here is an ordered list:
14
+
15
+ 1. Item 1
16
+ 2. Item 3
17
+ 3. Item 4
18
+
19
+ Here is an unordered list:
20
+
21
+ * Item 1
22
+ * Item 2
23
+ * Item 3`;
24
+
25
+ return (
26
+ <>
27
+ <Message
28
+ name="User"
29
+ role="user"
30
+ content="Example content with updated timestamp text"
31
+ timestamp="1 hour ago"
32
+ avatar={userAvatar}
33
+ />
34
+ <Message name="User" role="user" content={markdown} avatar={userAvatar} />
35
+ </>
36
+ );
37
+ };