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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/dist/cjs/AttachMenu/AttachMenu.d.ts +8 -2
  2. package/dist/cjs/AttachMenu/AttachMenu.js +2 -2
  3. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +9 -1
  4. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +9 -2
  5. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +38 -0
  6. package/dist/cjs/ChatbotFooter/ChatbotFooter.d.ts +5 -2
  7. package/dist/cjs/ChatbotFooter/ChatbotFooter.js +2 -2
  8. package/dist/cjs/ChatbotFooter/ChatbotFooter.test.js +5 -1
  9. package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.js +29 -2
  10. package/dist/cjs/CodeModal/CodeModal.d.ts +2 -0
  11. package/dist/cjs/CodeModal/CodeModal.js +53 -8
  12. package/dist/cjs/DeepThinking/DeepThinking.d.ts +13 -0
  13. package/dist/cjs/DeepThinking/DeepThinking.js +31 -3
  14. package/dist/cjs/DeepThinking/DeepThinking.test.js +80 -0
  15. package/dist/cjs/FileDetailsLabel/FileDetailsLabel.d.ts +2 -1
  16. package/dist/cjs/MarkdownContent/MarkdownContent.d.ts +44 -0
  17. package/dist/cjs/MarkdownContent/MarkdownContent.js +181 -0
  18. package/dist/cjs/MarkdownContent/MarkdownContent.test.d.ts +1 -0
  19. package/dist/cjs/MarkdownContent/MarkdownContent.test.js +192 -0
  20. package/dist/cjs/MarkdownContent/index.d.ts +2 -0
  21. package/dist/cjs/MarkdownContent/index.js +23 -0
  22. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.d.ts +5 -1
  23. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.js +16 -5
  24. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.test.d.ts +1 -0
  25. package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.test.js +131 -0
  26. package/dist/cjs/Message/ErrorMessage/ErrorMessage.d.ts +15 -1
  27. package/dist/cjs/Message/ErrorMessage/ErrorMessage.js +5 -3
  28. package/dist/cjs/Message/ErrorMessage/ErrorMessage.test.d.ts +1 -0
  29. package/dist/cjs/Message/ErrorMessage/ErrorMessage.test.js +30 -0
  30. package/dist/cjs/Message/LinkMessage/LinkMessage.d.ts +5 -1
  31. package/dist/cjs/Message/LinkMessage/LinkMessage.js +4 -3
  32. package/dist/cjs/Message/ListMessage/OrderedListMessage.d.ts +9 -1
  33. package/dist/cjs/Message/ListMessage/OrderedListMessage.js +2 -1
  34. package/dist/cjs/Message/ListMessage/UnorderedListMessage.d.ts +7 -1
  35. package/dist/cjs/Message/ListMessage/UnorderedListMessage.js +2 -1
  36. package/dist/cjs/Message/Message.d.ts +22 -3
  37. package/dist/cjs/Message/Message.js +8 -161
  38. package/dist/cjs/Message/Message.test.js +161 -2
  39. package/dist/cjs/Message/MessageAndActions/MessageAndActions.d.ts +14 -0
  40. package/dist/cjs/Message/MessageAndActions/MessageAndActions.js +22 -0
  41. package/dist/cjs/Message/MessageAndActions/MessageAndActions.test.d.ts +1 -0
  42. package/dist/cjs/Message/MessageAndActions/MessageAndActions.test.js +25 -0
  43. package/dist/cjs/Message/MessageAndActions/index.d.ts +1 -0
  44. package/dist/cjs/Message/MessageAndActions/index.js +17 -0
  45. package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.d.ts +13 -0
  46. package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.js +22 -0
  47. package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.test.d.ts +1 -0
  48. package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.test.js +25 -0
  49. package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.d.ts +13 -0
  50. package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.js +22 -0
  51. package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.test.d.ts +1 -0
  52. package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.test.js +25 -0
  53. package/dist/cjs/Message/MessageAttachments/index.d.ts +2 -0
  54. package/dist/cjs/Message/MessageAttachments/index.js +18 -0
  55. package/dist/cjs/Message/MessageInput.d.ts +1 -1
  56. package/dist/cjs/Message/MessageInput.js +3 -1
  57. package/dist/cjs/Message/MessageLoading.d.ts +13 -3
  58. package/dist/cjs/Message/MessageLoading.js +19 -5
  59. package/dist/cjs/Message/MessageLoading.test.d.ts +1 -0
  60. package/dist/cjs/Message/MessageLoading.test.js +25 -0
  61. package/dist/cjs/Message/QuickResponse/QuickResponse.js +3 -2
  62. package/dist/cjs/Message/QuickResponse/QuickResponse.test.d.ts +1 -0
  63. package/dist/cjs/Message/QuickResponse/QuickResponse.test.js +109 -0
  64. package/dist/cjs/Message/QuickResponse/index.d.ts +1 -0
  65. package/dist/cjs/Message/QuickResponse/index.js +17 -0
  66. package/dist/cjs/Message/QuickStarts/QuickStartTile.d.ts +1 -1
  67. package/dist/cjs/Message/QuickStarts/QuickStartTile.js +3 -2
  68. package/dist/cjs/Message/QuickStarts/index.d.ts +2 -0
  69. package/dist/cjs/Message/QuickStarts/index.js +18 -0
  70. package/dist/cjs/Message/TableMessage/TableMessage.d.ts +9 -1
  71. package/dist/cjs/Message/TableMessage/TableMessage.js +3 -2
  72. package/dist/cjs/Message/TextMessage/TextMessage.d.ts +11 -1
  73. package/dist/cjs/Message/TextMessage/TextMessage.js +3 -2
  74. package/dist/cjs/Message/UserFeedback/UserFeedback.d.ts +3 -1
  75. package/dist/cjs/Message/UserFeedback/UserFeedback.js +8 -6
  76. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.d.ts +1 -1
  77. package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.js +3 -2
  78. package/dist/cjs/Message/UserFeedback/index.d.ts +2 -0
  79. package/dist/cjs/Message/UserFeedback/index.js +18 -0
  80. package/dist/cjs/Message/index.d.ts +8 -0
  81. package/dist/cjs/Message/index.js +8 -0
  82. package/dist/cjs/MessageBar/AttachButton.d.ts +2 -0
  83. package/dist/cjs/MessageBar/AttachButton.js +2 -2
  84. package/dist/cjs/MessageBar/AttachButton.test.js +4 -0
  85. package/dist/cjs/MessageBar/MessageBar.d.ts +22 -6
  86. package/dist/cjs/MessageBar/MessageBar.js +43 -11
  87. package/dist/cjs/MessageBar/MessageBar.test.js +74 -0
  88. package/dist/cjs/Onboarding/Onboarding.d.ts +36 -0
  89. package/dist/cjs/Onboarding/Onboarding.js +37 -0
  90. package/dist/cjs/Onboarding/Onboarding.test.d.ts +1 -0
  91. package/dist/cjs/Onboarding/Onboarding.test.js +80 -0
  92. package/dist/cjs/Onboarding/index.d.ts +2 -0
  93. package/dist/cjs/Onboarding/index.js +23 -0
  94. package/dist/cjs/ResponseActions/ResponseActions.d.ts +7 -0
  95. package/dist/cjs/ResponseActions/ResponseActions.js +28 -7
  96. package/dist/cjs/ResponseActions/ResponseActions.test.js +67 -12
  97. package/dist/cjs/ResponseActions/ResponseActionsGroups.d.ts +13 -0
  98. package/dist/cjs/ResponseActions/ResponseActionsGroups.js +22 -0
  99. package/dist/cjs/ResponseActions/ResponseActionsGroups.test.d.ts +1 -0
  100. package/dist/cjs/ResponseActions/ResponseActionsGroups.test.js +25 -0
  101. package/dist/cjs/ResponseActions/index.d.ts +1 -0
  102. package/dist/cjs/ResponseActions/index.js +1 -0
  103. package/dist/cjs/ToolCall/ToolCall.d.ts +11 -0
  104. package/dist/cjs/ToolCall/ToolCall.js +24 -3
  105. package/dist/cjs/ToolCall/ToolCall.test.js +57 -0
  106. package/dist/cjs/ToolResponse/ToolResponse.d.ts +17 -0
  107. package/dist/cjs/ToolResponse/ToolResponse.js +49 -3
  108. package/dist/cjs/ToolResponse/ToolResponse.test.js +100 -0
  109. package/dist/cjs/__mocks__/monaco-editor.d.ts +11 -0
  110. package/dist/cjs/__mocks__/monaco-editor.js +18 -0
  111. package/dist/cjs/index.d.ts +4 -0
  112. package/dist/cjs/index.js +7 -1
  113. package/dist/css/main.css +336 -30
  114. package/dist/css/main.css.map +1 -1
  115. package/dist/dynamic/MarkdownContent/package.json +1 -0
  116. package/dist/dynamic/Onboarding/package.json +1 -0
  117. package/dist/esm/AttachMenu/AttachMenu.d.ts +8 -2
  118. package/dist/esm/AttachMenu/AttachMenu.js +2 -2
  119. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +9 -1
  120. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +10 -3
  121. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +38 -0
  122. package/dist/esm/ChatbotFooter/ChatbotFooter.d.ts +5 -2
  123. package/dist/esm/ChatbotFooter/ChatbotFooter.js +2 -2
  124. package/dist/esm/ChatbotFooter/ChatbotFooter.test.js +5 -1
  125. package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.js +30 -3
  126. package/dist/esm/CodeModal/CodeModal.d.ts +2 -0
  127. package/dist/esm/CodeModal/CodeModal.js +54 -9
  128. package/dist/esm/DeepThinking/DeepThinking.d.ts +13 -0
  129. package/dist/esm/DeepThinking/DeepThinking.js +28 -3
  130. package/dist/esm/DeepThinking/DeepThinking.test.js +80 -0
  131. package/dist/esm/FileDetailsLabel/FileDetailsLabel.d.ts +2 -1
  132. package/dist/esm/MarkdownContent/MarkdownContent.d.ts +44 -0
  133. package/dist/esm/MarkdownContent/MarkdownContent.js +174 -0
  134. package/dist/esm/MarkdownContent/MarkdownContent.test.d.ts +1 -0
  135. package/dist/esm/MarkdownContent/MarkdownContent.test.js +187 -0
  136. package/dist/esm/MarkdownContent/index.d.ts +2 -0
  137. package/dist/esm/MarkdownContent/index.js +2 -0
  138. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.d.ts +5 -1
  139. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.js +16 -5
  140. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.test.d.ts +1 -0
  141. package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.test.js +126 -0
  142. package/dist/esm/Message/ErrorMessage/ErrorMessage.d.ts +15 -1
  143. package/dist/esm/Message/ErrorMessage/ErrorMessage.js +3 -3
  144. package/dist/esm/Message/ErrorMessage/ErrorMessage.test.d.ts +1 -0
  145. package/dist/esm/Message/ErrorMessage/ErrorMessage.test.js +25 -0
  146. package/dist/esm/Message/LinkMessage/LinkMessage.d.ts +5 -1
  147. package/dist/esm/Message/LinkMessage/LinkMessage.js +4 -3
  148. package/dist/esm/Message/ListMessage/OrderedListMessage.d.ts +9 -1
  149. package/dist/esm/Message/ListMessage/OrderedListMessage.js +2 -1
  150. package/dist/esm/Message/ListMessage/UnorderedListMessage.d.ts +7 -1
  151. package/dist/esm/Message/ListMessage/UnorderedListMessage.js +2 -1
  152. package/dist/esm/Message/Message.d.ts +22 -3
  153. package/dist/esm/Message/Message.js +9 -162
  154. package/dist/esm/Message/Message.test.js +161 -2
  155. package/dist/esm/Message/MessageAndActions/MessageAndActions.d.ts +14 -0
  156. package/dist/esm/Message/MessageAndActions/MessageAndActions.js +18 -0
  157. package/dist/esm/Message/MessageAndActions/MessageAndActions.test.d.ts +1 -0
  158. package/dist/esm/Message/MessageAndActions/MessageAndActions.test.js +20 -0
  159. package/dist/esm/Message/MessageAndActions/index.d.ts +1 -0
  160. package/dist/esm/Message/MessageAndActions/index.js +1 -0
  161. package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.d.ts +13 -0
  162. package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.js +18 -0
  163. package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.test.d.ts +1 -0
  164. package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.test.js +20 -0
  165. package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.d.ts +13 -0
  166. package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.js +18 -0
  167. package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.test.d.ts +1 -0
  168. package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.test.js +20 -0
  169. package/dist/esm/Message/MessageAttachments/index.d.ts +2 -0
  170. package/dist/esm/Message/MessageAttachments/index.js +2 -0
  171. package/dist/esm/Message/MessageInput.d.ts +1 -1
  172. package/dist/esm/Message/MessageInput.js +1 -1
  173. package/dist/esm/Message/MessageLoading.d.ts +13 -3
  174. package/dist/esm/Message/MessageLoading.js +16 -4
  175. package/dist/esm/Message/MessageLoading.test.d.ts +1 -0
  176. package/dist/esm/Message/MessageLoading.test.js +20 -0
  177. package/dist/esm/Message/QuickResponse/QuickResponse.js +3 -2
  178. package/dist/esm/Message/QuickResponse/QuickResponse.test.d.ts +1 -0
  179. package/dist/esm/Message/QuickResponse/QuickResponse.test.js +104 -0
  180. package/dist/esm/Message/QuickResponse/index.d.ts +1 -0
  181. package/dist/esm/Message/QuickResponse/index.js +1 -0
  182. package/dist/esm/Message/QuickStarts/QuickStartTile.d.ts +1 -1
  183. package/dist/esm/Message/QuickStarts/QuickStartTile.js +1 -1
  184. package/dist/esm/Message/QuickStarts/index.d.ts +2 -0
  185. package/dist/esm/Message/QuickStarts/index.js +2 -0
  186. package/dist/esm/Message/TableMessage/TableMessage.d.ts +9 -1
  187. package/dist/esm/Message/TableMessage/TableMessage.js +3 -2
  188. package/dist/esm/Message/TextMessage/TextMessage.d.ts +11 -1
  189. package/dist/esm/Message/TextMessage/TextMessage.js +3 -2
  190. package/dist/esm/Message/UserFeedback/UserFeedback.d.ts +3 -1
  191. package/dist/esm/Message/UserFeedback/UserFeedback.js +7 -7
  192. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.d.ts +1 -1
  193. package/dist/esm/Message/UserFeedback/UserFeedbackComplete.js +1 -2
  194. package/dist/esm/Message/UserFeedback/index.d.ts +2 -0
  195. package/dist/esm/Message/UserFeedback/index.js +2 -0
  196. package/dist/esm/Message/index.d.ts +8 -0
  197. package/dist/esm/Message/index.js +8 -0
  198. package/dist/esm/MessageBar/AttachButton.d.ts +2 -0
  199. package/dist/esm/MessageBar/AttachButton.js +2 -2
  200. package/dist/esm/MessageBar/AttachButton.test.js +4 -0
  201. package/dist/esm/MessageBar/MessageBar.d.ts +22 -6
  202. package/dist/esm/MessageBar/MessageBar.js +43 -11
  203. package/dist/esm/MessageBar/MessageBar.test.js +74 -0
  204. package/dist/esm/Onboarding/Onboarding.d.ts +36 -0
  205. package/dist/esm/Onboarding/Onboarding.js +30 -0
  206. package/dist/esm/Onboarding/Onboarding.test.d.ts +1 -0
  207. package/dist/esm/Onboarding/Onboarding.test.js +75 -0
  208. package/dist/esm/Onboarding/index.d.ts +2 -0
  209. package/dist/esm/Onboarding/index.js +2 -0
  210. package/dist/esm/ResponseActions/ResponseActions.d.ts +7 -0
  211. package/dist/esm/ResponseActions/ResponseActions.js +28 -7
  212. package/dist/esm/ResponseActions/ResponseActions.test.js +67 -12
  213. package/dist/esm/ResponseActions/ResponseActionsGroups.d.ts +13 -0
  214. package/dist/esm/ResponseActions/ResponseActionsGroups.js +18 -0
  215. package/dist/esm/ResponseActions/ResponseActionsGroups.test.d.ts +1 -0
  216. package/dist/esm/ResponseActions/ResponseActionsGroups.test.js +20 -0
  217. package/dist/esm/ResponseActions/index.d.ts +1 -0
  218. package/dist/esm/ResponseActions/index.js +1 -0
  219. package/dist/esm/ToolCall/ToolCall.d.ts +11 -0
  220. package/dist/esm/ToolCall/ToolCall.js +21 -3
  221. package/dist/esm/ToolCall/ToolCall.test.js +57 -0
  222. package/dist/esm/ToolResponse/ToolResponse.d.ts +17 -0
  223. package/dist/esm/ToolResponse/ToolResponse.js +46 -3
  224. package/dist/esm/ToolResponse/ToolResponse.test.js +100 -0
  225. package/dist/esm/__mocks__/monaco-editor.d.ts +11 -0
  226. package/dist/esm/__mocks__/monaco-editor.js +18 -0
  227. package/dist/esm/index.d.ts +4 -0
  228. package/dist/esm/index.js +4 -0
  229. package/dist/tsconfig.tsbuildinfo +1 -1
  230. package/package.json +13 -2
  231. package/patternfly-docs/content/extensions/chatbot/chatbot.md +57 -0
  232. package/patternfly-docs/content/extensions/chatbot/design-guidelines.md +12 -12
  233. package/patternfly-docs/content/extensions/chatbot/examples/Analytics/Analytics.md +1 -1
  234. package/patternfly-docs/content/extensions/chatbot/examples/Customizing Messages/Customizing Messages.md +1 -1
  235. package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +1 -0
  236. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithCustomStructure.tsx +102 -0
  237. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithDeepThinking.tsx +25 -11
  238. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedback.tsx +14 -1
  239. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithMarkdownDeepThinking.tsx +26 -0
  240. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithMarkdownToolCall.tsx +29 -0
  241. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithMarkdownToolResponse.tsx +200 -0
  242. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithMultipleActionGroups.tsx +61 -0
  243. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithPersistedActions.tsx +22 -0
  244. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickResponses.tsx +11 -0
  245. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithToolCall.tsx +14 -1
  246. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithToolResponse.tsx +222 -105
  247. package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +123 -14
  248. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +1 -0
  249. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessageWithExtraContent.tsx +3 -1
  250. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithSearchActions.tsx +198 -0
  251. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarCustomActions.tsx +190 -0
  252. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarIndicatorThinking.tsx +15 -0
  253. package/patternfly-docs/content/extensions/chatbot/examples/UI/CompactOnboarding.tsx +141 -0
  254. package/patternfly-docs/content/extensions/chatbot/examples/UI/Onboarding.tsx +151 -0
  255. package/patternfly-docs/content/extensions/chatbot/examples/UI/RH-Hat-Image.svg +9 -0
  256. package/patternfly-docs/content/extensions/chatbot/examples/UI/Settings.tsx +1 -1
  257. package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +81 -30
  258. package/patternfly-docs/content/extensions/chatbot/examples/demos/AttachmentDemos.md +18 -18
  259. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +44 -22
  260. package/patternfly-docs/content/extensions/chatbot/examples/demos/WhiteEmbeddedChatbot.tsx +451 -0
  261. package/patternfly-docs/patternfly-docs.config.js +1 -1
  262. package/patternfly-docs/patternfly-docs.source.js +1 -1
  263. package/src/AttachMenu/AttachMenu.tsx +26 -11
  264. package/src/Chatbot/Chatbot.scss +23 -1
  265. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.scss +43 -0
  266. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +95 -0
  267. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +51 -15
  268. package/src/ChatbotFooter/ChatbotFooter.scss +21 -0
  269. package/src/ChatbotFooter/ChatbotFooter.test.tsx +10 -1
  270. package/src/ChatbotFooter/ChatbotFooter.tsx +10 -3
  271. package/src/ChatbotHeader/ChatbotHeader.scss +19 -0
  272. package/src/ChatbotHeader/ChatbotHeaderMenu.tsx +56 -14
  273. package/src/ChatbotModal/ChatbotModal.scss +3 -0
  274. package/src/CodeModal/CodeModal.tsx +72 -23
  275. package/src/DeepThinking/DeepThinking.scss +1 -1
  276. package/src/DeepThinking/DeepThinking.test.tsx +109 -0
  277. package/src/DeepThinking/DeepThinking.tsx +54 -5
  278. package/src/FileDetailsLabel/FileDetailsLabel.tsx +2 -2
  279. package/src/MarkdownContent/MarkdownContent.test.tsx +207 -0
  280. package/src/MarkdownContent/MarkdownContent.tsx +269 -0
  281. package/src/MarkdownContent/index.ts +2 -0
  282. package/src/Message/CodeBlockMessage/CodeBlockMessage.scss +17 -0
  283. package/src/Message/CodeBlockMessage/CodeBlockMessage.test.tsx +171 -0
  284. package/src/Message/CodeBlockMessage/CodeBlockMessage.tsx +21 -5
  285. package/src/Message/ErrorMessage/ErrorMessage.test.tsx +38 -0
  286. package/src/Message/ErrorMessage/ErrorMessage.tsx +17 -2
  287. package/src/Message/LinkMessage/LinkMessage.scss +5 -0
  288. package/src/Message/LinkMessage/LinkMessage.tsx +24 -2
  289. package/src/Message/ListMessage/ListMessage.scss +8 -0
  290. package/src/Message/ListMessage/OrderedListMessage.tsx +16 -2
  291. package/src/Message/ListMessage/UnorderedListMessage.tsx +12 -2
  292. package/src/Message/Message.scss +11 -7
  293. package/src/Message/Message.test.tsx +239 -2
  294. package/src/Message/Message.tsx +133 -241
  295. package/src/Message/MessageAndActions/MessageAndActions.test.tsx +23 -0
  296. package/src/Message/MessageAndActions/MessageAndActions.tsx +22 -0
  297. package/src/Message/MessageAndActions/index.ts +1 -0
  298. package/src/Message/MessageAttachments/MessageAttachmentItem.test.tsx +23 -0
  299. package/src/Message/MessageAttachments/MessageAttachmentItem.tsx +25 -0
  300. package/src/Message/MessageAttachments/MessageAttachmentsContainer.test.tsx +23 -0
  301. package/src/Message/MessageAttachments/MessageAttachmentsContainer.tsx +25 -0
  302. package/src/Message/MessageAttachments/index.ts +2 -0
  303. package/src/Message/MessageInput.tsx +1 -1
  304. package/src/Message/MessageLoading.scss +7 -0
  305. package/src/Message/MessageLoading.test.tsx +23 -0
  306. package/src/Message/MessageLoading.tsx +17 -2
  307. package/src/Message/QuickResponse/QuickResponse.scss +3 -1
  308. package/src/Message/QuickResponse/QuickResponse.test.tsx +131 -0
  309. package/src/Message/QuickResponse/QuickResponse.tsx +3 -2
  310. package/src/Message/QuickResponse/index.ts +1 -0
  311. package/src/Message/QuickStarts/QuickStartTile.tsx +1 -1
  312. package/src/Message/QuickStarts/index.ts +2 -0
  313. package/src/Message/TableMessage/TableMessage.scss +17 -1
  314. package/src/Message/TableMessage/TableMessage.tsx +22 -2
  315. package/src/Message/TextMessage/TextMessage.scss +18 -0
  316. package/src/Message/TextMessage/TextMessage.tsx +39 -3
  317. package/src/Message/UserFeedback/UserFeedback.scss +30 -2
  318. package/src/Message/UserFeedback/UserFeedback.tsx +23 -13
  319. package/src/Message/UserFeedback/UserFeedbackComplete.tsx +1 -4
  320. package/src/Message/UserFeedback/index.ts +2 -0
  321. package/src/Message/index.ts +8 -0
  322. package/src/MessageBar/AttachButton.scss +0 -1
  323. package/src/MessageBar/AttachButton.test.tsx +4 -0
  324. package/src/MessageBar/AttachButton.tsx +4 -1
  325. package/src/MessageBar/MessageBar.scss +66 -6
  326. package/src/MessageBar/MessageBar.test.tsx +129 -1
  327. package/src/MessageBar/MessageBar.tsx +150 -56
  328. package/src/MessageBar/MicrophoneButton.scss +0 -1
  329. package/src/MessageBar/SendButton.scss +0 -1
  330. package/src/MessageBar/StopButton.scss +0 -1
  331. package/src/Onboarding/Onboarding.scss +101 -0
  332. package/src/Onboarding/Onboarding.test.tsx +148 -0
  333. package/src/Onboarding/Onboarding.tsx +126 -0
  334. package/src/Onboarding/index.ts +3 -0
  335. package/src/ResponseActions/ResponseActions.scss +12 -1
  336. package/src/ResponseActions/ResponseActions.test.tsx +111 -12
  337. package/src/ResponseActions/ResponseActions.tsx +44 -10
  338. package/src/ResponseActions/ResponseActionsGroups.test.tsx +23 -0
  339. package/src/ResponseActions/ResponseActionsGroups.tsx +28 -0
  340. package/src/ResponseActions/index.ts +1 -0
  341. package/src/ToolCall/ToolCall.scss +1 -1
  342. package/src/ToolCall/ToolCall.test.tsx +91 -0
  343. package/src/ToolCall/ToolCall.tsx +49 -4
  344. package/src/ToolResponse/ToolResponse.scss +13 -3
  345. package/src/ToolResponse/ToolResponse.test.tsx +119 -0
  346. package/src/ToolResponse/ToolResponse.tsx +82 -7
  347. package/src/__mocks__/monaco-editor.ts +19 -0
  348. package/src/index.ts +6 -0
  349. package/src/main.scss +2 -0
  350. package/tsconfig.json +1 -1
  351. package/patternfly-docs/content/extensions/chatbot/about-chatbot.md +0 -44
@@ -4,9 +4,23 @@
4
4
 
5
5
  import { ExtraProps } from 'react-markdown';
6
6
  import { List, ListComponent, OrderType } from '@patternfly/react-core';
7
+ import { css } from '@patternfly/react-styles';
7
8
 
8
- const OrderedListMessage = ({ children, start }: JSX.IntrinsicElements['ol'] & ExtraProps) => (
9
- <div className="pf-chatbot__message-ordered-list">
9
+ export interface OrderedListMessageProps {
10
+ /** The ordered list content */
11
+ children?: React.ReactNode;
12
+ /** The number to start the ordered list at. */
13
+ start?: number;
14
+ /** Flag indicating that the content should retain message styles when using Markdown. */
15
+ shouldRetainStyles?: boolean;
16
+ }
17
+
18
+ const OrderedListMessage = ({
19
+ children,
20
+ start,
21
+ shouldRetainStyles
22
+ }: OrderedListMessageProps & JSX.IntrinsicElements['ol'] & ExtraProps) => (
23
+ <div className={css('pf-chatbot__message-ordered-list', shouldRetainStyles && 'pf-m-markdown')}>
10
24
  <List component={ListComponent.ol} type={OrderType.number} start={start}>
11
25
  {children}
12
26
  </List>
@@ -4,9 +4,19 @@
4
4
 
5
5
  import { ExtraProps } from 'react-markdown';
6
6
  import { List } from '@patternfly/react-core';
7
+ import { css } from '@patternfly/react-styles';
8
+ export interface UnrderedListMessageProps {
9
+ /** The ordered list content */
10
+ children?: React.ReactNode;
11
+ /** Flag indicating that the content should retain message styles when using Markdown. */
12
+ shouldRetainStyles?: boolean;
13
+ }
7
14
 
8
- const UnorderedListMessage = ({ children }: JSX.IntrinsicElements['ul'] & ExtraProps) => (
9
- <div className="pf-chatbot__message-unordered-list">
15
+ const UnorderedListMessage = ({
16
+ children,
17
+ shouldRetainStyles
18
+ }: UnrderedListMessageProps & JSX.IntrinsicElements['ul'] & ExtraProps) => (
19
+ <div className={css('pf-chatbot__message-unordered-list', shouldRetainStyles && 'pf-m-markdown')}>
10
20
  <List>{children}</List>
11
21
  </div>
12
22
  );
@@ -5,7 +5,7 @@
5
5
  display: flex;
6
6
  align-items: flex-start;
7
7
  gap: var(--pf-t--global--spacer--lg);
8
- padding-bottom: var(--pf-t--global--spacer--xl);
8
+ padding-bottom: var(--pf-t--global--spacer--lg);
9
9
 
10
10
  // Avatar
11
11
  // --------------------------------------------------------------------------
@@ -18,8 +18,10 @@
18
18
  }
19
19
 
20
20
  &-avatar.pf-chatbot__message-avatar--round.pf-v6-c-avatar {
21
- --pf-v6-c-avatar--Width: 3rem;
22
- --pf-v6-c-avatar--Height: 3rem;
21
+ &:not(.pf-m-xl, .pf-m-lg, .pf-m-md, .pf-m-sm) {
22
+ --pf-v6-c-avatar--Width: 3rem;
23
+ --pf-v6-c-avatar--Height: 3rem;
24
+ }
23
25
  --pf-v6-c-avatar--BorderRadius: var(--pf-t--global--border--radius--pill);
24
26
  }
25
27
 
@@ -156,8 +158,8 @@
156
158
  // ============================================================================
157
159
  .pf-chatbot.pf-m-compact {
158
160
  .pf-chatbot__message {
159
- gap: var(--pf-t--global--spacer--md);
160
- padding-bottom: var(--pf-t--global--spacer--sm);
161
+ gap: var(--pf-t--global--spacer--sm);
162
+ padding-bottom: var(--pf-t--global--spacer--md);
161
163
 
162
164
  .pf-chatbot__message-contents  {
163
165
  gap: var(--pf-t--global--spacer--xs);
@@ -169,8 +171,10 @@
169
171
  }
170
172
 
171
173
  .pf-chatbot__message-avatar.pf-chatbot__message-avatar--round.pf-v6-c-avatar {
172
- --pf-v6-c-avatar--Width: 2rem;
173
- --pf-v6-c-avatar--Height: 2rem;
174
+ &:not(.pf-m-xl, .pf-m-lg, .pf-m-md, .pf-m-sm) {
175
+ --pf-v6-c-avatar--Width: 1.5rem;
176
+ --pf-v6-c-avatar--Height: 1.5rem;
177
+ }
174
178
  }
175
179
 
176
180
  .pf-chatbot__message-contents {
@@ -228,6 +228,10 @@ describe('Message', () => {
228
228
  render(<Message avatar="./testImg" role="bot" name="Bot" content="Hi" />);
229
229
  expect(screen.getByRole('img')).toHaveAttribute('src', './testImg');
230
230
  });
231
+ it('should not render avatar if no avatar prop is passed', () => {
232
+ render(<Message role="bot" name="Bot" content="Hi" />);
233
+ expect(screen.queryByRole('img')).not.toBeInTheDocument();
234
+ });
231
235
  it('should render botWord correctly', () => {
232
236
  render(<Message avatar="./img" role="bot" name="Bot" content="Hi" botWord="人工知能" />);
233
237
  expect(screen.getByText('Bot')).toBeTruthy();
@@ -433,7 +437,7 @@ describe('Message', () => {
433
437
  expect(screen.queryByRole('button', { name: /No/i })).toBeFalsy();
434
438
  expect(screen.getByRole('button', { name: /1 more/i }));
435
439
  });
436
- it('should be able to show actions', async () => {
440
+ it('Renders response actions when a single actions object is passed', async () => {
437
441
  render(
438
442
  <Message
439
443
  avatar="./img"
@@ -459,9 +463,204 @@ describe('Message', () => {
459
463
  />
460
464
  );
461
465
  ALL_ACTIONS.forEach(({ label }) => {
462
- expect(screen.getByRole('button', { name: label })).toBeTruthy();
466
+ expect(screen.getByRole('button', { name: label })).toBeVisible();
467
+ });
468
+ });
469
+ it('Renders response actions when an array of actions objects is passed', async () => {
470
+ render(
471
+ <Message
472
+ avatar="./img"
473
+ role="bot"
474
+ name="Bot"
475
+ content="Hi"
476
+ actions={[
477
+ {
478
+ // eslint-disable-next-line no-console
479
+ positive: { onClick: () => console.log('Good response') },
480
+ // eslint-disable-next-line no-console
481
+ negative: { onClick: () => console.log('Bad response') }
482
+ },
483
+ {
484
+ // eslint-disable-next-line no-console
485
+ copy: { onClick: () => console.log('Copy') },
486
+ // eslint-disable-next-line no-console
487
+ edit: { onClick: () => console.log('Edit') },
488
+ // eslint-disable-next-line no-console
489
+ share: { onClick: () => console.log('Share') },
490
+ // eslint-disable-next-line no-console
491
+ download: { onClick: () => console.log('Download') }
492
+ },
493
+ {
494
+ // eslint-disable-next-line no-console
495
+ listen: { onClick: () => console.log('Listen') }
496
+ }
497
+ ]}
498
+ />
499
+ );
500
+ ALL_ACTIONS.forEach(({ label }) => {
501
+ expect(screen.getByRole('button', { name: label })).toBeVisible();
502
+ });
503
+ });
504
+ it('Renders response actions when an array of objects containing actions objects is passed', async () => {
505
+ render(
506
+ <Message
507
+ avatar="./img"
508
+ role="bot"
509
+ name="Bot"
510
+ content="Hi"
511
+ actions={[
512
+ {
513
+ actions: {
514
+ // eslint-disable-next-line no-console
515
+ positive: { onClick: () => console.log('Good response') },
516
+ // eslint-disable-next-line no-console
517
+ negative: { onClick: () => console.log('Bad response') }
518
+ }
519
+ },
520
+ {
521
+ actions: {
522
+ // eslint-disable-next-line no-console
523
+ copy: { onClick: () => console.log('Copy') },
524
+ // eslint-disable-next-line no-console
525
+ edit: { onClick: () => console.log('Edit') },
526
+ // eslint-disable-next-line no-console
527
+ share: { onClick: () => console.log('Share') },
528
+ // eslint-disable-next-line no-console
529
+ download: { onClick: () => console.log('Download') }
530
+ }
531
+ },
532
+ {
533
+ actions: {
534
+ // eslint-disable-next-line no-console
535
+ listen: { onClick: () => console.log('Listen') }
536
+ }
537
+ }
538
+ ]}
539
+ />
540
+ );
541
+ ALL_ACTIONS.forEach(({ label }) => {
542
+ expect(screen.getByRole('button', { name: label })).toBeVisible();
463
543
  });
464
544
  });
545
+
546
+ it('should handle persistActionSelection correctly when a single actions object is passed', async () => {
547
+ render(
548
+ <Message
549
+ avatar="./img"
550
+ role="bot"
551
+ name="Bot"
552
+ content="Test message"
553
+ persistActionSelection
554
+ actions={{
555
+ positive: { onClick: jest.fn() },
556
+ negative: { onClick: jest.fn() }
557
+ }}
558
+ />
559
+ );
560
+ const goodBtn = screen.getByRole('button', { name: /Good response/i });
561
+ const badBtn = screen.getByRole('button', { name: /Bad response/i });
562
+
563
+ await userEvent.click(goodBtn);
564
+ expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
565
+ 'pf-chatbot__button--response-action-clicked'
566
+ );
567
+
568
+ await userEvent.click(screen.getByText('Test message'));
569
+ expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
570
+ 'pf-chatbot__button--response-action-clicked'
571
+ );
572
+
573
+ await userEvent.click(badBtn);
574
+ expect(screen.getByRole('button', { name: /Bad response recorded/i })).toHaveClass(
575
+ 'pf-chatbot__button--response-action-clicked'
576
+ );
577
+ expect(goodBtn).not.toHaveClass('pf-chatbot__button--response-action-clicked');
578
+ });
579
+
580
+ it('should handle persistActionSelection correctly when an array of actions objects is passed', async () => {
581
+ render(
582
+ <Message
583
+ avatar="./img"
584
+ role="bot"
585
+ name="Bot"
586
+ content="Test message"
587
+ persistActionSelection
588
+ actions={[
589
+ {
590
+ positive: { onClick: jest.fn() },
591
+ negative: { onClick: jest.fn() }
592
+ },
593
+ {
594
+ copy: { onClick: jest.fn() }
595
+ }
596
+ ]}
597
+ />
598
+ );
599
+ const goodBtn = screen.getByRole('button', { name: /Good response/i });
600
+ const copyBtn = screen.getByRole('button', { name: /Copy/i });
601
+
602
+ await userEvent.click(goodBtn);
603
+ expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
604
+ 'pf-chatbot__button--response-action-clicked'
605
+ );
606
+
607
+ await userEvent.click(screen.getByText('Test message'));
608
+ expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
609
+ 'pf-chatbot__button--response-action-clicked'
610
+ );
611
+
612
+ await userEvent.click(copyBtn);
613
+ expect(screen.getByRole('button', { name: /Copied/i })).toHaveClass('pf-chatbot__button--response-action-clicked');
614
+
615
+ await userEvent.click(screen.getByText('Test message'));
616
+ expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
617
+ 'pf-chatbot__button--response-action-clicked'
618
+ );
619
+ expect(screen.getByRole('button', { name: /Copied/i })).toHaveClass('pf-chatbot__button--response-action-clicked');
620
+ });
621
+
622
+ it('should handle persistActionSelection correctly when an array of objects containing actions objects is passed', async () => {
623
+ render(
624
+ <Message
625
+ avatar="./img"
626
+ role="bot"
627
+ name="Bot"
628
+ content="Test message"
629
+ actions={[
630
+ {
631
+ actions: {
632
+ positive: { onClick: jest.fn() },
633
+ negative: { onClick: jest.fn() }
634
+ },
635
+ persistActionSelection: true
636
+ },
637
+ {
638
+ actions: {
639
+ copy: { onClick: jest.fn() }
640
+ },
641
+ persistActionSelection: false
642
+ }
643
+ ]}
644
+ />
645
+ );
646
+ const goodBtn = screen.getByRole('button', { name: /Good response/i });
647
+ const copyBtn = screen.getByRole('button', { name: /Copy/i });
648
+
649
+ await userEvent.click(goodBtn);
650
+ expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
651
+ 'pf-chatbot__button--response-action-clicked'
652
+ );
653
+
654
+ await userEvent.click(copyBtn);
655
+ expect(screen.getByRole('button', { name: /Copied/i })).toHaveClass('pf-chatbot__button--response-action-clicked');
656
+
657
+ await userEvent.click(screen.getByText('Test message'));
658
+ expect(screen.getByRole('button', { name: /Good response recorded/i })).toHaveClass(
659
+ 'pf-chatbot__button--response-action-clicked'
660
+ );
661
+ expect(copyBtn).not.toHaveClass('pf-chatbot__button--response-action-clicked');
662
+ });
663
+
465
664
  it('should not show actions if loading', async () => {
466
665
  render(
467
666
  <Message
@@ -523,6 +722,7 @@ describe('Message', () => {
523
722
  expect(screen.queryByRole('button', { name: label })).toBeFalsy();
524
723
  });
525
724
  });
725
+
526
726
  it('should render unordered lists correctly', () => {
527
727
  render(<Message avatar="./img" role="user" name="User" content={UNORDERED_LIST} />);
528
728
  expect(screen.getByText('Here is an unordered list:')).toBeTruthy();
@@ -1093,4 +1293,41 @@ describe('Message', () => {
1093
1293
  expect(screen.getByText('Thought for 3 seconds')).toBeTruthy();
1094
1294
  expect(screen.getByText("Here's why I said this.")).toBeTruthy();
1095
1295
  });
1296
+ it('should handle isPrimary correctly for inline code when it is true', () => {
1297
+ const { container } = render(<Message avatar="./img" role="user" name="User" content={INLINE_CODE} isPrimary />);
1298
+ expect(container.querySelector('.pf-m-primary')).toBeTruthy();
1299
+ });
1300
+ it('should handle isPrimary correctly for inline code when it is false', () => {
1301
+ const { container } = render(<Message avatar="./img" role="user" name="User" content={INLINE_CODE} />);
1302
+ expect(container.querySelector('.pf-m-primary')).toBeFalsy();
1303
+ });
1304
+ it('should handle isPrimary correctly for table when it is true', () => {
1305
+ const { container } = render(<Message avatar="./img" role="user" name="User" content={TABLE} isPrimary />);
1306
+ expect(container.querySelector('.pf-m-primary')).toBeTruthy();
1307
+ });
1308
+ it('should handle isPrimary correctly for table when it is false', () => {
1309
+ const { container } = render(<Message avatar="./img" role="user" name="User" content={TABLE} />);
1310
+ expect(container.querySelector('.pf-m-primary')).toBeFalsy();
1311
+ });
1312
+ it('should handle isPrimary correctly for loading when it is true', () => {
1313
+ const { container } = render(<Message avatar="./img" role="user" name="User" content="" isPrimary isLoading />);
1314
+ expect(container.querySelector('.pf-m-primary')).toBeTruthy();
1315
+ });
1316
+ it('should handle isPrimary correctly for loading when it is false', () => {
1317
+ const { container } = render(<Message avatar="./img" role="user" name="User" content="" isLoading />);
1318
+
1319
+ expect(container.querySelector('.pf-m-primary')).toBeFalsy();
1320
+ });
1321
+ it('should handle isPrimary correctly for attachments when it is true', () => {
1322
+ const { container } = render(
1323
+ <Message avatar="./img" role="user" name="User" content="" isPrimary attachments={[{ name: 'testAttachment' }]} />
1324
+ );
1325
+ expect(container.querySelector('.pf-m-outline')).toBeTruthy();
1326
+ });
1327
+ it('should handle isPrimary correctly for attachments when it is false', () => {
1328
+ const { container } = render(
1329
+ <Message avatar="./img" role="user" name="User" content="" attachments={[{ name: 'testAttachment' }]} />
1330
+ );
1331
+ expect(container.querySelector('.pf-m-outline')).toBeFalsy();
1332
+ });
1096
1333
  });