@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,48 @@
1
+ import React from 'react';
2
+
3
+ import { Button, Icon, Tooltip, TooltipProps } from '@patternfly/react-core';
4
+ import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
5
+
6
+ export interface ChatbotHeaderMenuProps {
7
+ /** Callback function to attach to menu toggle on top right of chatbot header. */
8
+ onMenuToggle: () => void;
9
+ /** Custom classname for the header component */
10
+ className?: string;
11
+ /** Props spread to the PF Tooltip component wrapping the display mode dropdown */
12
+ tooltipProps?: TooltipProps;
13
+ /** Aria label for menu */
14
+ menuAriaLabel?: string;
15
+ /** Ref applied to menu */
16
+ innerRef?: React.Ref<HTMLButtonElement>;
17
+ }
18
+
19
+ const ChatbotHeaderMenuBase: React.FunctionComponent<ChatbotHeaderMenuProps> = ({
20
+ className,
21
+ onMenuToggle,
22
+ tooltipProps,
23
+ menuAriaLabel = 'Toggle menu',
24
+ innerRef
25
+ }: ChatbotHeaderMenuProps) => (
26
+ <div className={`pf-chatbot__menu ${className}`}>
27
+ <Tooltip content="Menu" position="bottom" {...tooltipProps}>
28
+ <Button
29
+ className="pf-chatbot__button--toggle-menu"
30
+ variant="plain"
31
+ onClick={onMenuToggle}
32
+ aria-label={menuAriaLabel}
33
+ ref={innerRef}
34
+ icon={
35
+ <Icon size="xl" isInline>
36
+ <BarsIcon />
37
+ </Icon>
38
+ }
39
+ />
40
+ </Tooltip>
41
+ </div>
42
+ );
43
+
44
+ export const ChatbotHeaderMenu = React.forwardRef(
45
+ (props: ChatbotHeaderMenuProps, ref: React.Ref<HTMLButtonElement>) => (
46
+ <ChatbotHeaderMenuBase innerRef={ref} {...props} />
47
+ )
48
+ );
@@ -0,0 +1,73 @@
1
+ import React from 'react';
2
+
3
+ import {
4
+ Tooltip,
5
+ TooltipProps,
6
+ Dropdown,
7
+ DropdownProps,
8
+ MenuToggle,
9
+ MenuToggleElement,
10
+ Icon
11
+ } from '@patternfly/react-core';
12
+ import EllipsisIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
13
+
14
+ export interface ChatbotHeaderOptionsDropdownProps extends Omit<DropdownProps, 'toggle'> {
15
+ /** Content to be displayed in the chatbot header */
16
+ children: React.ReactNode;
17
+ /** Custom classname for the header component */
18
+ className?: string;
19
+ /** Props spread to the PF Tooltip component wrapping the display mode dropdown */
20
+ tooltipProps?: TooltipProps;
21
+ /** Aria label for menu toggle */
22
+ menuToggleAriaLabel?: string;
23
+ }
24
+
25
+ export const ChatbotHeaderOptionsDropdown: React.FunctionComponent<ChatbotHeaderOptionsDropdownProps> = ({
26
+ className,
27
+ children,
28
+ onSelect,
29
+ tooltipProps,
30
+ menuToggleAriaLabel = 'Chatbot options',
31
+ ...props
32
+ }: ChatbotHeaderOptionsDropdownProps) => {
33
+ const [isOptionsMenuOpen, setIsOptionsMenuOpen] = React.useState(false);
34
+
35
+ const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
36
+ <Tooltip className="pf-chatbot__tooltip" content="Chatbot options" position="bottom" {...tooltipProps}>
37
+ <MenuToggle
38
+ className="pf-chatbot__button--toggle-options"
39
+ variant="plain"
40
+ aria-label={menuToggleAriaLabel}
41
+ ref={toggleRef}
42
+ icon={
43
+ <Icon iconSize="xl" isInline>
44
+ <EllipsisIcon />
45
+ </Icon>
46
+ }
47
+ isExpanded={isOptionsMenuOpen}
48
+ onClick={() => setIsOptionsMenuOpen(!isOptionsMenuOpen)}
49
+ />
50
+ </Tooltip>
51
+ );
52
+
53
+ return (
54
+ <Dropdown
55
+ className={`pf-chatbot__options ${className ?? ''}`}
56
+ isOpen={isOptionsMenuOpen}
57
+ onSelect={(e, value) => {
58
+ onSelect && onSelect(e, value);
59
+ setIsOptionsMenuOpen(false);
60
+ }}
61
+ onOpenChange={(isOpen) => setIsOptionsMenuOpen(isOpen)}
62
+ popperProps={{ position: 'right', preventOverflow: true, appendTo: 'inline' }}
63
+ shouldFocusToggleOnSelect
64
+ shouldFocusFirstItemOnOpen
65
+ toggle={toggle}
66
+ {...props}
67
+ >
68
+ {children}
69
+ </Dropdown>
70
+ );
71
+ };
72
+
73
+ export default ChatbotHeaderOptionsDropdown;
@@ -0,0 +1,68 @@
1
+ import React from 'react';
2
+
3
+ import { Tooltip, TooltipProps, Dropdown, DropdownProps, MenuToggle, MenuToggleElement } from '@patternfly/react-core';
4
+
5
+ export interface ChatbotHeaderSelectorDropdownProps extends Omit<DropdownProps, 'toggle'> {
6
+ /** Value of the selected dropdown item */
7
+ value: string;
8
+ /** Content to be displayed in the chatbot header */
9
+ children: React.ReactNode;
10
+ /** Custom classname for the header component */
11
+ className?: string;
12
+ /** Props spread to the PF Tooltip component wrapping the display mode dropdown */
13
+ tooltipProps?: TooltipProps;
14
+ /** Aria label for menu toggle */
15
+ menuToggleAriaLabel?: string;
16
+ /** Text displayed in Tooltip wrapping the display mode dropdown */
17
+ tooltipContent?: string;
18
+ }
19
+
20
+ export const ChatbotHeaderSelectorDropdown: React.FunctionComponent<ChatbotHeaderSelectorDropdownProps> = ({
21
+ value,
22
+ className,
23
+ children,
24
+ onSelect,
25
+ tooltipProps,
26
+ tooltipContent = 'Chatbot selector',
27
+ menuToggleAriaLabel,
28
+ ...props
29
+ }: ChatbotHeaderSelectorDropdownProps) => {
30
+ const [isOptionsMenuOpen, setIsOptionsMenuOpen] = React.useState(false);
31
+ const [defaultAriaLabel, setDefaultAriaLabel] = React.useState('Chatbot selector');
32
+
33
+ const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
34
+ <Tooltip className="pf-chatbot__tooltip" content={tooltipContent} position="bottom" {...tooltipProps}>
35
+ <MenuToggle
36
+ variant="secondary"
37
+ aria-label={menuToggleAriaLabel ?? defaultAriaLabel}
38
+ ref={toggleRef}
39
+ isExpanded={isOptionsMenuOpen}
40
+ onClick={() => setIsOptionsMenuOpen(!isOptionsMenuOpen)}
41
+ >
42
+ {value}
43
+ </MenuToggle>
44
+ </Tooltip>
45
+ );
46
+
47
+ return (
48
+ <Dropdown
49
+ className={`pf-chatbot__selections ${className ?? ''}`}
50
+ isOpen={isOptionsMenuOpen}
51
+ onSelect={(e, value) => {
52
+ onSelect && onSelect(e, value);
53
+ setDefaultAriaLabel(`Chatbot selector: ${value}`);
54
+ setIsOptionsMenuOpen(false);
55
+ }}
56
+ onOpenChange={(isOpen) => setIsOptionsMenuOpen(isOpen)}
57
+ popperProps={{ position: 'right', appendTo: 'inline' }}
58
+ shouldFocusToggleOnSelect
59
+ shouldFocusFirstItemOnOpen
60
+ toggle={toggle}
61
+ {...props}
62
+ >
63
+ {children}
64
+ </Dropdown>
65
+ );
66
+ };
67
+
68
+ export default ChatbotHeaderSelectorDropdown;
@@ -0,0 +1,57 @@
1
+ import React from 'react';
2
+
3
+ import { SplitItem } from '@patternfly/react-core';
4
+ import { ChatbotDisplayMode } from '../Chatbot/Chatbot';
5
+
6
+ export interface ChatbotHeaderTitleProps {
7
+ /** Content to be displayed in the chatbot header */
8
+ children?: React.ReactNode;
9
+ /** Custom classname for the header component */
10
+ className?: string;
11
+ /** Display mode of chatbot, in case you want to conditionally show a title */
12
+ displayMode?: ChatbotDisplayMode;
13
+ /** Content to display on full screen */
14
+ showOnFullScreen?: React.ReactNode | string;
15
+ /** Content to display on docked screen */
16
+ showOnDocked?: React.ReactNode | string;
17
+ /** Content to display on overlay screen */
18
+ showOnEmbedded?: React.ReactNode | string;
19
+ /** Content to display by default; this will be shown if a case is not explicitly set */
20
+ showOnDefault?: React.ReactNode | string;
21
+ }
22
+
23
+ export const ChatbotHeaderTitle: React.FunctionComponent<ChatbotHeaderTitleProps> = ({
24
+ className,
25
+ children,
26
+ displayMode,
27
+ showOnFullScreen,
28
+ showOnDocked,
29
+ showOnEmbedded,
30
+ showOnDefault
31
+ }: ChatbotHeaderTitleProps) => {
32
+ const renderChildren = () => {
33
+ if (displayMode && (showOnDefault || showOnFullScreen || showOnEmbedded || showOnDocked)) {
34
+ /* eslint-disable indent */
35
+ switch (displayMode) {
36
+ case ChatbotDisplayMode.fullscreen:
37
+ return showOnFullScreen ?? showOnDefault;
38
+ case ChatbotDisplayMode.docked:
39
+ return showOnDocked ?? showOnDefault;
40
+ case ChatbotDisplayMode.embedded:
41
+ return showOnEmbedded ?? showOnDefault;
42
+ default:
43
+ return showOnDefault;
44
+ }
45
+ /* eslint-enable indent */
46
+ } else {
47
+ return children;
48
+ }
49
+ };
50
+ return (
51
+ <SplitItem isFilled className={`pf-chatbot__title ${className || ''}`}>
52
+ {renderChildren()}
53
+ </SplitItem>
54
+ );
55
+ };
56
+
57
+ export default ChatbotHeaderTitle;
@@ -0,0 +1,9 @@
1
+ export { default } from './ChatbotHeader';
2
+
3
+ export * from './ChatbotHeader';
4
+ export * from './ChatbotHeaderActions';
5
+ export * from './ChatbotHeaderMain';
6
+ export * from './ChatbotHeaderMenu';
7
+ export * from './ChatbotHeaderTitle';
8
+ export * from './ChatbotHeaderOptionsDropdown';
9
+ export * from './ChatbotHeaderSelectorDropdown';
@@ -0,0 +1,93 @@
1
+ .pf-chatbot__chatbot-modal-backdrop {
2
+ position: static;
3
+ }
4
+
5
+ .pf-chatbot__chatbot-modal {
6
+ --pf-v6-c-modal-box--BorderRadius: var(--pf-t--global--border--radius--medium);
7
+ position: fixed;
8
+ inset-block-end: var(--pf-t--global--spacer--800); // no associated semantic token
9
+ inset-inline-end: var(--pf-t--global--spacer--lg);
10
+ width: 30rem;
11
+ height: 70vh;
12
+ background-color: var(--pf-t--global--background--color--secondary--default);
13
+
14
+ .pf-v6-c-modal-box__title {
15
+ --pf-v6-c-modal-box__title--FontSize: var(--pf-t--global--font--size--heading--h3);
16
+ }
17
+ .pf-v6-c-button.pf-m-primary.pf-m-block,
18
+ .pf-v6-c-button.pf-m-link.pf-m-block {
19
+ --pf-v6-c-button--FontWeight: 500;
20
+ }
21
+ .pf-v6-c-modal-box__footer {
22
+ padding-block-start: var(--pf-t--global--spacer--xl);
23
+ padding-block-end: var(--pf-t--global--spacer--xl);
24
+ }
25
+ .pf-v6-c-modal-box__header {
26
+ padding-block-end: var(--pf-t--global--spacer--lg);
27
+ }
28
+ }
29
+
30
+ // ============================================================================
31
+ // Chatbot Display Mode - Fullscreen and Embedded
32
+ // ============================================================================
33
+ @media screen and (max-width: 600px) {
34
+ .pf-chatbot__chatbot-modal--embedded,
35
+ .pf-chatbot__chatbot-modal--fullscreen {
36
+ inset-block-end: 0;
37
+ inset-inline-end: 0;
38
+ width: 100%;
39
+ height: 100%;
40
+ top: 50%;
41
+ left: 50%;
42
+ transform: translate(-50%, -50%);
43
+ }
44
+ }
45
+ @media screen and (min-width: 601px) {
46
+ .pf-chatbot__chatbot-modal--embedded,
47
+ .pf-chatbot__chatbot-modal--fullscreen {
48
+ inset-block-end: 0;
49
+ inset-inline-end: 0;
50
+ width: 50%;
51
+ height: fit-content;
52
+ top: 50%;
53
+ left: 50%;
54
+ transform: translate(-50%, -50%);
55
+ }
56
+ }
57
+
58
+ // ============================================================================
59
+ // Chatbot Display Mode - Default
60
+ // ============================================================================
61
+ .pf-chatbot__chatbot-modal--default {
62
+ box-shadow: unset;
63
+ }
64
+
65
+ // ============================================================================
66
+ // Chatbot Display Mode - Docked
67
+ // ============================================================================
68
+ .pf-chatbot__chatbot-modal--docked {
69
+ height: 100vh;
70
+ inset-block-end: 0;
71
+ inset-inline-end: 0;
72
+ border-radius: 0;
73
+ --pf-v6-c-modal-box--MaxHeight: 100vh;
74
+ box-shadow: unset;
75
+ }
76
+
77
+ // ============================================================================
78
+ // Dark theme
79
+ // ============================================================================
80
+ .pf-v6-theme-dark {
81
+ .pf-v6-c-modal-box.pf-chatbot__chatbot-modal {
82
+ .pf-v6-c-modal-box__title {
83
+ color: #fff;
84
+ }
85
+ }
86
+ }
87
+
88
+ // ============================================================================
89
+ // Backdrop
90
+ // ============================================================================
91
+ .pf-v6-c-backdrop.pf-chatbot__backdrop {
92
+ position: absolute;
93
+ }
@@ -0,0 +1,43 @@
1
+ // ============================================================================
2
+ // Code Modal - Chatbot Modal with Code Editor
3
+ // ============================================================================
4
+ import React from 'react';
5
+
6
+ // Import PatternFly components
7
+ import { Modal, ModalProps } from '@patternfly/react-core';
8
+ import { ChatbotDisplayMode } from '../Chatbot';
9
+
10
+ export interface ChatbotModalProps extends Omit<ModalProps, 'ref'> {
11
+ /** Display mode for the Chatbot parent; this influences the styles applied */
12
+ displayMode?: ChatbotDisplayMode;
13
+ className?: string;
14
+ }
15
+
16
+ export const ChatbotModal: React.FunctionComponent<ChatbotModalProps> = ({
17
+ children,
18
+ displayMode = ChatbotDisplayMode.default,
19
+ className,
20
+ isOpen,
21
+ ...props
22
+ }: ChatbotModalProps) => {
23
+ const modal = (
24
+ <Modal
25
+ isOpen={isOpen}
26
+ ouiaId="ChatbotModal"
27
+ aria-labelledby="chatbot-modal-title"
28
+ aria-describedby="chatbot-modal"
29
+ className={`pf-chatbot__chatbot-modal pf-chatbot__chatbot-modal--${displayMode} ${className}`}
30
+ backdropClassName="pf-chatbot__chatbot-modal-backdrop"
31
+ {...props}
32
+ >
33
+ {children}
34
+ </Modal>
35
+ );
36
+
37
+ if ((displayMode === ChatbotDisplayMode.fullscreen || displayMode === ChatbotDisplayMode.embedded) && isOpen) {
38
+ return <div className="pf-v6-c-backdrop pf-chatbot__backdrop">{modal}</div>;
39
+ }
40
+ return modal;
41
+ };
42
+
43
+ export default ChatbotModal;
@@ -0,0 +1,3 @@
1
+ export { default } from './ChatbotModal';
2
+
3
+ export * from './ChatbotModal';
@@ -0,0 +1,27 @@
1
+ // ============================================================================
2
+ // Chatbot Popover
3
+ // ============================================================================
4
+ .pf-chatbot__popover {
5
+ .pf-v6-c-popover__arrow { display: none; }
6
+
7
+ // Footnote popover
8
+ &--footnote.pf-chatbot__popover {
9
+
10
+ // Contents
11
+ img { border-radius: var(--pf-t--global--border--radius--small); }
12
+ .pf-v6-c-content--h3 { font-weight: var(--pf-t--global--font--weight--body--bold); }
13
+ .pf-v6-c-content--p {
14
+ font-size: var(--pf-t--global--font--size--body--lg);
15
+ }
16
+
17
+ // Actions
18
+ .pf-v6-c-button {
19
+ font-weight: var(--pf-t--global--font--weight--body--bold);
20
+ font-size: var(--pf-t--global--font--size--body--lg);
21
+ }
22
+ .pf-v6-c-content--a {
23
+ font-size: var(--pf-t--global--font--size--body--lg);
24
+ }
25
+ }
26
+
27
+ }
@@ -0,0 +1,15 @@
1
+ // ============================================================================
2
+ // Chatbot Popover
3
+ // ============================================================================
4
+ import React from 'react';
5
+
6
+ // Import PatternFly components
7
+ import { Popover, PopoverProps } from '@patternfly/react-core';
8
+
9
+ export const ChatbotPopover: React.FunctionComponent<PopoverProps> = ({ children, className, ...props }) => (
10
+ <Popover className={`pf-chatbot__popover ${className ?? ''}`} showClose={false} {...props}>
11
+ {children}
12
+ </Popover>
13
+ );
14
+
15
+ export default ChatbotPopover;
@@ -0,0 +1,3 @@
1
+ export { default } from './ChatbotPopover';
2
+
3
+ export * from './ChatbotPopover';
@@ -0,0 +1,26 @@
1
+ // ============================================================================
2
+ // Toggle Chatbot
3
+ // ============================================================================
4
+ .pf-v6-c-button.pf-chatbot__button {
5
+ position: fixed;
6
+ inset-block-end: var(--pf-t--global--spacer--md);
7
+ inset-inline-end: var(--pf-t--global--spacer--md);
8
+ background-color: var(--pf-t--global--background--color--inverse--default);
9
+ border-radius: var(--pf-t--global--border--radius--pill);
10
+ --pf-v6-c-button__icon--Color: var(--pf-t--chatbot-toggle--color);
11
+ padding: var(--pf-t--global--spacer--md);
12
+ width: 3rem;
13
+ height: 3rem;
14
+
15
+ &:hover, &:focus {
16
+ background-color: var(--pf-t--chatbot-toggle--background--hover);
17
+ }
18
+
19
+ .pf-v6-c-button__icon {
20
+ display: contents;
21
+ }
22
+
23
+ // Icon
24
+ svg { width: var(--pf-t--global--spacer--lg); height: var(--pf-t--global--spacer--lg); }
25
+ }
26
+
@@ -0,0 +1,80 @@
1
+ // ============================================================================
2
+ // Chatbot Toggle
3
+ // ============================================================================
4
+ import React from 'react';
5
+ import { Button, ButtonProps, Tooltip, TooltipProps, Icon } from '@patternfly/react-core';
6
+ import AngleDownIcon from '@patternfly/react-icons/dist/esm/icons/angle-down-icon';
7
+
8
+ export interface ChatbotToggleProps extends ButtonProps {
9
+ /** Contents of the tooltip applied to the toggle button */
10
+ toolTipLabel?: React.ReactNode;
11
+ /** Props spread to the PF Tooltip component */
12
+ tooltipProps?: Omit<TooltipProps, 'content'>;
13
+ /** Flag indicating visibility of the chatbot appended to the toggle */
14
+ isChatbotVisible?: boolean;
15
+ /** Callback fired when toggle button is clicked */
16
+ onToggleChatbot?: () => void;
17
+ /** Accessible label for the toggle button */
18
+ toggleButtonLabel?: string;
19
+ /** An image displayed in the chatbot toggle when it is closed */
20
+ closedToggleIcon?: () => JSX.Element;
21
+ /** Ref applied to toggle */
22
+ innerRef?: React.Ref<HTMLButtonElement>;
23
+ }
24
+
25
+ const ChatIcon = () => (
26
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
27
+ <path
28
+ fill="var(--pf-t--global--icon--color--inverse)"
29
+ stroke="var(--pf-t--global--icon--color--inverse)"
30
+ strokeLinejoin="round"
31
+ strokeWidth=".75"
32
+ d="M3.577 14.382c0 .198.12.38.31.46l.19.04a.492.492 0 0 0 .349-.143l3.028-3.028h8.513a.489.489 0 0 0 .492-.492V2.491A.489.489 0 0 0 15.967 2H1.691a.489.489 0 0 0-.492.491v8.728c0 .135.056.262.143.349a.498.498 0 0 0 .349.143h1.878v2.663h.008v.008ZM2.19 10.72V2.983h13.278v7.729H7.24a.512.512 0 0 0-.35.143l-2.322 2.322v-1.974a.498.498 0 0 0-.142-.348.492.492 0 0 0-.35-.143H2.19v.008Z"
33
+ />
34
+ <path
35
+ fill="var(--pf-t--global--text--color--inverse)"
36
+ stroke="var(--pf-t--global--text--color--inverse)"
37
+ strokeLinejoin="round"
38
+ strokeWidth=".75"
39
+ d="M22.301 9.135h-3.963a.489.489 0 0 0-.492.491c0 .27.222.492.492.492h3.472v7.737h-1.88a.404.404 0 0 0-.348.134.492.492 0 0 0-.143.35v1.973l-2.322-2.323a.492.492 0 0 0-.349-.142H8.532v-4.265a.489.489 0 0 0-.492-.492.494.494 0 0 0-.491.492v4.756c0 .277.222.492.491.492h8.514l3.028 3.028a.492.492 0 0 0 .349.142l.19-.04a.502.502 0 0 0 .31-.459V18.83h1.878c.111-.008.262-.048.349-.135a.491.491 0 0 0 .142-.349v-8.72a.489.489 0 0 0-.491-.491h-.008Z"
40
+ />
41
+ </svg>
42
+ );
43
+
44
+ const ChatbotToggleBase: React.FunctionComponent<ChatbotToggleProps> = ({
45
+ toolTipLabel,
46
+ isChatbotVisible,
47
+ onToggleChatbot,
48
+ tooltipProps,
49
+ toggleButtonLabel,
50
+ closedToggleIcon: ClosedToggleIcon,
51
+ innerRef,
52
+ ...props
53
+ }: ChatbotToggleProps) => {
54
+ // Configure icon
55
+ const closedIcon = ClosedToggleIcon ? <ClosedToggleIcon /> : <ChatIcon />;
56
+ const icon = isChatbotVisible ? <AngleDownIcon /> : closedIcon;
57
+
58
+ return (
59
+ <Tooltip content={toolTipLabel} {...tooltipProps}>
60
+ <Button
61
+ className={`pf-chatbot__button ${isChatbotVisible ? 'pf-chatbot__button--active' : ''}`}
62
+ variant="plain"
63
+ aria-label={toggleButtonLabel || `${toolTipLabel} toggle`}
64
+ onClick={onToggleChatbot}
65
+ aria-expanded={isChatbotVisible}
66
+ icon={<Icon isInline>{icon}</Icon>}
67
+ ref={innerRef}
68
+ {...props}
69
+ >
70
+ {/* Notification dot placeholder */}
71
+ </Button>
72
+ </Tooltip>
73
+ );
74
+ };
75
+
76
+ const ChatbotToggle = React.forwardRef((props: ChatbotToggleProps, ref: React.Ref<any>) => (
77
+ <ChatbotToggleBase innerRef={ref} {...props} />
78
+ ));
79
+
80
+ export default ChatbotToggle;
@@ -0,0 +1,3 @@
1
+ export { default } from './ChatbotToggle';
2
+
3
+ export * from './ChatbotToggle';
@@ -0,0 +1,48 @@
1
+ // ============================================================================
2
+ // Chatbot Layout - Chat - Welcome
3
+ // ============================================================================
4
+ .pf-chatbot--layout--welcome {
5
+ padding-block-end: var(--pf-t--global--spacer--lg);
6
+ flex-direction: column;
7
+ display: flex;
8
+ gap: var(--pf-t--global--spacer--lg);
9
+
10
+ .pf-v6-c-content--h1 {
11
+ --pf-v6-c-content--h1--FontSize: var(--pf-t--global--font--size--3xl); // larger than any of our semantic tokens
12
+ --pf-v6-c-content--h1--FontWeight: var(--pf-t--global--font--weight--400);
13
+ --pf-v6-c-content--h1--MarginBlockEnd: 0;
14
+ }
15
+
16
+ .pf-chatbot__hello {
17
+ color: var(--pf-t--global--color--brand--default);
18
+ }
19
+
20
+ .pf-chatbot__question {
21
+ color: var(--pf-t--global--text--color--subtle);
22
+ }
23
+
24
+ .pf-chatbot__prompt-suggestions {
25
+ flex-direction: column;
26
+ display: flex;
27
+ gap: var(--pf-t--global--spacer--lg);
28
+ }
29
+
30
+ .pf-chatbot__prompt-suggestions > * {
31
+ flex: 1;
32
+ }
33
+ }
34
+
35
+ // ============================================================================
36
+ // Chatbot Display Mode - Fullscreen and Embedded
37
+ // ============================================================================
38
+ @media screen and (min-width: 64rem) {
39
+ .pf-chatbot--fullscreen,
40
+ .pf-chatbot--embedded {
41
+ .pf-chatbot--layout--welcome {
42
+ .pf-chatbot__prompt-suggestions {
43
+ flex-direction: row;
44
+ align-items: baseline;
45
+ }
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,64 @@
1
+ import React from 'react';
2
+ import { render, screen } from '@testing-library/react';
3
+ import '@testing-library/jest-dom';
4
+ import ChatbotWelcomePrompt from './ChatbotWelcomePrompt';
5
+ import userEvent from '@testing-library/user-event';
6
+
7
+ describe('ChatbotWelcomePrompt', () => {
8
+ it('should render welcome prompt', () => {
9
+ const { container } = render(
10
+ <ChatbotWelcomePrompt title="Hello, Chatbot User" description="How may I help you today?" />
11
+ );
12
+ expect(container).toMatchSnapshot();
13
+ });
14
+
15
+ it('should render correctly', () => {
16
+ render(<ChatbotWelcomePrompt title="Hello, Chatbot User" description="How may I help you today?" />);
17
+ expect(screen.getByText('Hello, Chatbot User')).toBeTruthy();
18
+ expect(screen.getByText('How may I help you today?')).toBeTruthy();
19
+ });
20
+ it('should render prompts with titles correctly', () => {
21
+ render(
22
+ <ChatbotWelcomePrompt
23
+ title="Hello, Chatbot User"
24
+ description="How may I help you today?"
25
+ prompts={[{ title: 'Topic 1' }]}
26
+ />
27
+ );
28
+ expect(screen.getByText('Topic 1')).toBeTruthy();
29
+ });
30
+ it('should render prompts with messages correctly', () => {
31
+ render(
32
+ <ChatbotWelcomePrompt
33
+ title="Hello, Chatbot User"
34
+ description="How may I help you today?"
35
+ prompts={[{ title: 'Topic 1', message: 'Helpful prompt for Topic 1' }]}
36
+ />
37
+ );
38
+ expect(screen.getByText('Helpful prompt for Topic 1')).toBeTruthy();
39
+ });
40
+ it('should render prompts with onClick correctly', async () => {
41
+ const spy = jest.fn();
42
+ render(
43
+ <ChatbotWelcomePrompt
44
+ title="Hello, Chatbot User"
45
+ description="How may I help you today?"
46
+ prompts={[{ title: 'Topic 1', message: 'Helpful prompt for Topic 1', onClick: spy }]}
47
+ />
48
+ );
49
+ await userEvent.click(screen.getByRole('button', { name: /Topic 1/i }));
50
+ expect(spy).toHaveBeenCalled();
51
+ });
52
+ it('should apply className appropriately', () => {
53
+ render(
54
+ <ChatbotWelcomePrompt
55
+ title="Hello, Chatbot User"
56
+ description="How may I help you today?"
57
+ className="test"
58
+ testId="welcome-prompt"
59
+ />
60
+ );
61
+ const element = screen.getByTestId('welcome-prompt');
62
+ expect(element).toHaveClass('test');
63
+ });
64
+ });