@patternfly/chatbot 6.5.0-prerelease.8 → 6.5.0
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.
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +9 -1
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +9 -2
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +38 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.js +29 -2
- package/dist/cjs/CodeModal/CodeModal.d.ts +2 -0
- package/dist/cjs/CodeModal/CodeModal.js +53 -12
- package/dist/cjs/DeepThinking/DeepThinking.d.ts +13 -0
- package/dist/cjs/DeepThinking/DeepThinking.js +31 -3
- package/dist/cjs/DeepThinking/DeepThinking.test.js +80 -0
- package/dist/cjs/MarkdownContent/MarkdownContent.d.ts +44 -0
- package/dist/cjs/MarkdownContent/MarkdownContent.js +181 -0
- package/dist/cjs/MarkdownContent/MarkdownContent.test.d.ts +1 -0
- package/dist/cjs/MarkdownContent/MarkdownContent.test.js +192 -0
- package/dist/cjs/MarkdownContent/index.d.ts +2 -0
- package/dist/cjs/MarkdownContent/index.js +23 -0
- package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.d.ts +3 -1
- package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.js +15 -4
- package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.test.d.ts +1 -0
- package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.test.js +131 -0
- package/dist/cjs/Message/ErrorMessage/ErrorMessage.d.ts +15 -1
- package/dist/cjs/Message/ErrorMessage/ErrorMessage.js +5 -3
- package/dist/cjs/Message/ErrorMessage/ErrorMessage.test.d.ts +1 -0
- package/dist/cjs/Message/ErrorMessage/ErrorMessage.test.js +30 -0
- package/dist/cjs/Message/LinkMessage/LinkMessage.d.ts +5 -1
- package/dist/cjs/Message/LinkMessage/LinkMessage.js +4 -3
- package/dist/cjs/Message/ListMessage/OrderedListMessage.d.ts +9 -1
- package/dist/cjs/Message/ListMessage/OrderedListMessage.js +2 -1
- package/dist/cjs/Message/ListMessage/UnorderedListMessage.d.ts +7 -1
- package/dist/cjs/Message/ListMessage/UnorderedListMessage.js +2 -1
- package/dist/cjs/Message/Message.d.ts +20 -3
- package/dist/cjs/Message/Message.js +7 -160
- package/dist/cjs/Message/Message.test.js +129 -2
- package/dist/cjs/Message/MessageAndActions/MessageAndActions.d.ts +14 -0
- package/dist/cjs/Message/MessageAndActions/MessageAndActions.js +22 -0
- package/dist/cjs/Message/MessageAndActions/MessageAndActions.test.d.ts +1 -0
- package/dist/cjs/Message/MessageAndActions/MessageAndActions.test.js +25 -0
- package/dist/cjs/Message/MessageAndActions/index.d.ts +1 -0
- package/dist/cjs/Message/MessageAndActions/index.js +17 -0
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.d.ts +13 -0
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.js +22 -0
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.test.d.ts +1 -0
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.test.js +25 -0
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.d.ts +13 -0
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.js +22 -0
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.test.d.ts +1 -0
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.test.js +25 -0
- package/dist/cjs/Message/MessageAttachments/index.d.ts +2 -0
- package/dist/cjs/Message/MessageAttachments/index.js +18 -0
- package/dist/cjs/Message/MessageInput.d.ts +1 -1
- package/dist/cjs/Message/MessageInput.js +3 -1
- package/dist/cjs/Message/MessageLoading.d.ts +13 -4
- package/dist/cjs/Message/MessageLoading.js +19 -5
- package/dist/cjs/Message/MessageLoading.test.d.ts +1 -0
- package/dist/cjs/Message/MessageLoading.test.js +25 -0
- package/dist/cjs/Message/QuickResponse/QuickResponse.js +3 -2
- package/dist/cjs/Message/QuickResponse/QuickResponse.test.d.ts +1 -0
- package/dist/cjs/Message/QuickResponse/QuickResponse.test.js +109 -0
- package/dist/cjs/Message/QuickResponse/index.d.ts +1 -0
- package/dist/cjs/Message/QuickResponse/index.js +17 -0
- package/dist/cjs/Message/QuickStarts/QuickStartTile.d.ts +1 -1
- package/dist/cjs/Message/QuickStarts/QuickStartTile.js +3 -2
- package/dist/cjs/Message/QuickStarts/index.d.ts +2 -0
- package/dist/cjs/Message/QuickStarts/index.js +18 -0
- package/dist/cjs/Message/TableMessage/TableMessage.d.ts +6 -1
- package/dist/cjs/Message/TableMessage/TableMessage.js +3 -2
- package/dist/cjs/Message/TextMessage/TextMessage.d.ts +8 -1
- package/dist/cjs/Message/TextMessage/TextMessage.js +3 -2
- package/dist/cjs/Message/UserFeedback/UserFeedback.d.ts +3 -1
- package/dist/cjs/Message/UserFeedback/UserFeedback.js +8 -6
- package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.d.ts +1 -1
- package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.js +3 -2
- package/dist/cjs/Message/UserFeedback/index.d.ts +2 -0
- package/dist/cjs/Message/UserFeedback/index.js +18 -0
- package/dist/cjs/Message/index.d.ts +8 -0
- package/dist/cjs/Message/index.js +8 -0
- package/dist/cjs/MessageBar/MessageBar.d.ts +4 -0
- package/dist/cjs/MessageBar/MessageBar.js +20 -5
- package/dist/cjs/MessageBar/MessageBar.test.js +8 -0
- package/dist/cjs/Onboarding/Onboarding.d.ts +36 -0
- package/dist/cjs/Onboarding/Onboarding.js +37 -0
- package/dist/cjs/Onboarding/Onboarding.test.d.ts +1 -0
- package/dist/cjs/Onboarding/Onboarding.test.js +80 -0
- package/dist/cjs/Onboarding/index.d.ts +2 -0
- package/dist/cjs/Onboarding/index.js +23 -0
- package/dist/cjs/ResponseActions/ResponseActions.d.ts +7 -0
- package/dist/cjs/ResponseActions/ResponseActions.js +28 -7
- package/dist/cjs/ResponseActions/ResponseActions.test.js +67 -12
- package/dist/cjs/ResponseActions/ResponseActionsGroups.d.ts +13 -0
- package/dist/cjs/ResponseActions/ResponseActionsGroups.js +22 -0
- package/dist/cjs/ResponseActions/ResponseActionsGroups.test.d.ts +1 -0
- package/dist/cjs/ResponseActions/ResponseActionsGroups.test.js +25 -0
- package/dist/cjs/ResponseActions/index.d.ts +1 -0
- package/dist/cjs/ResponseActions/index.js +1 -0
- package/dist/cjs/ToolCall/ToolCall.d.ts +11 -0
- package/dist/cjs/ToolCall/ToolCall.js +24 -3
- package/dist/cjs/ToolCall/ToolCall.test.js +57 -0
- package/dist/cjs/ToolResponse/ToolResponse.d.ts +17 -0
- package/dist/cjs/ToolResponse/ToolResponse.js +49 -3
- package/dist/cjs/ToolResponse/ToolResponse.test.js +100 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +7 -1
- package/dist/css/main.css +268 -30
- package/dist/css/main.css.map +1 -1
- package/dist/dynamic/MarkdownContent/package.json +1 -0
- package/dist/dynamic/Onboarding/package.json +1 -0
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +9 -1
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +10 -3
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +38 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.js +30 -3
- package/dist/esm/CodeModal/CodeModal.d.ts +2 -0
- package/dist/esm/CodeModal/CodeModal.js +54 -13
- package/dist/esm/DeepThinking/DeepThinking.d.ts +13 -0
- package/dist/esm/DeepThinking/DeepThinking.js +28 -3
- package/dist/esm/DeepThinking/DeepThinking.test.js +80 -0
- package/dist/esm/MarkdownContent/MarkdownContent.d.ts +44 -0
- package/dist/esm/MarkdownContent/MarkdownContent.js +174 -0
- package/dist/esm/MarkdownContent/MarkdownContent.test.d.ts +1 -0
- package/dist/esm/MarkdownContent/MarkdownContent.test.js +187 -0
- package/dist/esm/MarkdownContent/index.d.ts +2 -0
- package/dist/esm/MarkdownContent/index.js +2 -0
- package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.d.ts +3 -1
- package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.js +15 -4
- package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.test.d.ts +1 -0
- package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.test.js +126 -0
- package/dist/esm/Message/ErrorMessage/ErrorMessage.d.ts +15 -1
- package/dist/esm/Message/ErrorMessage/ErrorMessage.js +3 -3
- package/dist/esm/Message/ErrorMessage/ErrorMessage.test.d.ts +1 -0
- package/dist/esm/Message/ErrorMessage/ErrorMessage.test.js +25 -0
- package/dist/esm/Message/LinkMessage/LinkMessage.d.ts +5 -1
- package/dist/esm/Message/LinkMessage/LinkMessage.js +4 -3
- package/dist/esm/Message/ListMessage/OrderedListMessage.d.ts +9 -1
- package/dist/esm/Message/ListMessage/OrderedListMessage.js +2 -1
- package/dist/esm/Message/ListMessage/UnorderedListMessage.d.ts +7 -1
- package/dist/esm/Message/ListMessage/UnorderedListMessage.js +2 -1
- package/dist/esm/Message/Message.d.ts +20 -3
- package/dist/esm/Message/Message.js +8 -161
- package/dist/esm/Message/Message.test.js +129 -2
- package/dist/esm/Message/MessageAndActions/MessageAndActions.d.ts +14 -0
- package/dist/esm/Message/MessageAndActions/MessageAndActions.js +18 -0
- package/dist/esm/Message/MessageAndActions/MessageAndActions.test.d.ts +1 -0
- package/dist/esm/Message/MessageAndActions/MessageAndActions.test.js +20 -0
- package/dist/esm/Message/MessageAndActions/index.d.ts +1 -0
- package/dist/esm/Message/MessageAndActions/index.js +1 -0
- package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.d.ts +13 -0
- package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.js +18 -0
- package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.test.d.ts +1 -0
- package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.test.js +20 -0
- package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.d.ts +13 -0
- package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.js +18 -0
- package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.test.d.ts +1 -0
- package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.test.js +20 -0
- package/dist/esm/Message/MessageAttachments/index.d.ts +2 -0
- package/dist/esm/Message/MessageAttachments/index.js +2 -0
- package/dist/esm/Message/MessageInput.d.ts +1 -1
- package/dist/esm/Message/MessageInput.js +1 -1
- package/dist/esm/Message/MessageLoading.d.ts +13 -4
- package/dist/esm/Message/MessageLoading.js +16 -4
- package/dist/esm/Message/MessageLoading.test.d.ts +1 -0
- package/dist/esm/Message/MessageLoading.test.js +20 -0
- package/dist/esm/Message/QuickResponse/QuickResponse.js +3 -2
- package/dist/esm/Message/QuickResponse/QuickResponse.test.d.ts +1 -0
- package/dist/esm/Message/QuickResponse/QuickResponse.test.js +104 -0
- package/dist/esm/Message/QuickResponse/index.d.ts +1 -0
- package/dist/esm/Message/QuickResponse/index.js +1 -0
- package/dist/esm/Message/QuickStarts/QuickStartTile.d.ts +1 -1
- package/dist/esm/Message/QuickStarts/QuickStartTile.js +1 -1
- package/dist/esm/Message/QuickStarts/index.d.ts +2 -0
- package/dist/esm/Message/QuickStarts/index.js +2 -0
- package/dist/esm/Message/TableMessage/TableMessage.d.ts +6 -1
- package/dist/esm/Message/TableMessage/TableMessage.js +3 -2
- package/dist/esm/Message/TextMessage/TextMessage.d.ts +8 -1
- package/dist/esm/Message/TextMessage/TextMessage.js +3 -2
- package/dist/esm/Message/UserFeedback/UserFeedback.d.ts +3 -1
- package/dist/esm/Message/UserFeedback/UserFeedback.js +7 -7
- package/dist/esm/Message/UserFeedback/UserFeedbackComplete.d.ts +1 -1
- package/dist/esm/Message/UserFeedback/UserFeedbackComplete.js +1 -2
- package/dist/esm/Message/UserFeedback/index.d.ts +2 -0
- package/dist/esm/Message/UserFeedback/index.js +2 -0
- package/dist/esm/Message/index.d.ts +8 -0
- package/dist/esm/Message/index.js +8 -0
- package/dist/esm/MessageBar/MessageBar.d.ts +4 -0
- package/dist/esm/MessageBar/MessageBar.js +20 -5
- package/dist/esm/MessageBar/MessageBar.test.js +8 -0
- package/dist/esm/Onboarding/Onboarding.d.ts +36 -0
- package/dist/esm/Onboarding/Onboarding.js +30 -0
- package/dist/esm/Onboarding/Onboarding.test.d.ts +1 -0
- package/dist/esm/Onboarding/Onboarding.test.js +75 -0
- package/dist/esm/Onboarding/index.d.ts +2 -0
- package/dist/esm/Onboarding/index.js +2 -0
- package/dist/esm/ResponseActions/ResponseActions.d.ts +7 -0
- package/dist/esm/ResponseActions/ResponseActions.js +28 -7
- package/dist/esm/ResponseActions/ResponseActions.test.js +67 -12
- package/dist/esm/ResponseActions/ResponseActionsGroups.d.ts +13 -0
- package/dist/esm/ResponseActions/ResponseActionsGroups.js +18 -0
- package/dist/esm/ResponseActions/ResponseActionsGroups.test.d.ts +1 -0
- package/dist/esm/ResponseActions/ResponseActionsGroups.test.js +20 -0
- package/dist/esm/ResponseActions/index.d.ts +1 -0
- package/dist/esm/ResponseActions/index.js +1 -0
- package/dist/esm/ToolCall/ToolCall.d.ts +11 -0
- package/dist/esm/ToolCall/ToolCall.js +21 -3
- package/dist/esm/ToolCall/ToolCall.test.js +57 -0
- package/dist/esm/ToolResponse/ToolResponse.d.ts +17 -0
- package/dist/esm/ToolResponse/ToolResponse.js +46 -3
- package/dist/esm/ToolResponse/ToolResponse.test.js +100 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +4 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -3
- package/patternfly-docs/content/extensions/chatbot/chatbot.md +57 -0
- package/patternfly-docs/content/extensions/chatbot/design-guidelines.md +12 -12
- package/patternfly-docs/content/extensions/chatbot/examples/Analytics/Analytics.md +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Customizing Messages/Customizing Messages.md +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +1 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithCustomStructure.tsx +102 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithDeepThinking.tsx +25 -11
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithFeedback.tsx +14 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithMarkdownDeepThinking.tsx +26 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithMarkdownToolCall.tsx +29 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithMarkdownToolResponse.tsx +200 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithMultipleActionGroups.tsx +61 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithPersistedActions.tsx +22 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickResponses.tsx +11 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithToolCall.tsx +14 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithToolResponse.tsx +222 -105
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +123 -14
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +1 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerWithSearchActions.tsx +198 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotMessageBarIndicatorThinking.tsx +15 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/CompactOnboarding.tsx +141 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/Onboarding.tsx +151 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/RH-Hat-Image.svg +9 -0
- package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +67 -29
- package/patternfly-docs/content/extensions/chatbot/examples/demos/AttachmentDemos.md +18 -18
- package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.md +33 -19
- package/patternfly-docs/patternfly-docs.config.js +1 -1
- package/patternfly-docs/patternfly-docs.source.js +1 -1
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.scss +43 -0
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +95 -0
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +51 -15
- package/src/ChatbotHeader/ChatbotHeader.scss +4 -0
- package/src/ChatbotHeader/ChatbotHeaderMenu.tsx +56 -14
- package/src/ChatbotModal/ChatbotModal.scss +3 -0
- package/src/CodeModal/CodeModal.tsx +71 -26
- package/src/DeepThinking/DeepThinking.scss +1 -1
- package/src/DeepThinking/DeepThinking.test.tsx +109 -0
- package/src/DeepThinking/DeepThinking.tsx +54 -5
- package/src/MarkdownContent/MarkdownContent.test.tsx +207 -0
- package/src/MarkdownContent/MarkdownContent.tsx +269 -0
- package/src/MarkdownContent/index.ts +2 -0
- package/src/Message/CodeBlockMessage/CodeBlockMessage.scss +13 -0
- package/src/Message/CodeBlockMessage/CodeBlockMessage.test.tsx +171 -0
- package/src/Message/CodeBlockMessage/CodeBlockMessage.tsx +17 -4
- package/src/Message/ErrorMessage/ErrorMessage.test.tsx +38 -0
- package/src/Message/ErrorMessage/ErrorMessage.tsx +17 -2
- package/src/Message/LinkMessage/LinkMessage.scss +5 -0
- package/src/Message/LinkMessage/LinkMessage.tsx +24 -2
- package/src/Message/ListMessage/ListMessage.scss +8 -0
- package/src/Message/ListMessage/OrderedListMessage.tsx +16 -2
- package/src/Message/ListMessage/UnorderedListMessage.tsx +12 -2
- package/src/Message/Message.scss +11 -7
- package/src/Message/Message.test.tsx +202 -2
- package/src/Message/Message.tsx +129 -241
- package/src/Message/MessageAndActions/MessageAndActions.test.tsx +23 -0
- package/src/Message/MessageAndActions/MessageAndActions.tsx +22 -0
- package/src/Message/MessageAndActions/index.ts +1 -0
- package/src/Message/MessageAttachments/MessageAttachmentItem.test.tsx +23 -0
- package/src/Message/MessageAttachments/MessageAttachmentItem.tsx +25 -0
- package/src/Message/MessageAttachments/MessageAttachmentsContainer.test.tsx +23 -0
- package/src/Message/MessageAttachments/MessageAttachmentsContainer.tsx +25 -0
- package/src/Message/MessageAttachments/index.ts +2 -0
- package/src/Message/MessageInput.tsx +1 -1
- package/src/Message/MessageLoading.test.tsx +23 -0
- package/src/Message/MessageLoading.tsx +17 -2
- package/src/Message/QuickResponse/QuickResponse.scss +3 -1
- package/src/Message/QuickResponse/QuickResponse.test.tsx +131 -0
- package/src/Message/QuickResponse/QuickResponse.tsx +3 -2
- package/src/Message/QuickResponse/index.ts +1 -0
- package/src/Message/QuickStarts/QuickStartTile.tsx +1 -1
- package/src/Message/QuickStarts/index.ts +2 -0
- package/src/Message/TableMessage/TableMessage.scss +13 -1
- package/src/Message/TableMessage/TableMessage.tsx +18 -2
- package/src/Message/TextMessage/TextMessage.scss +12 -0
- package/src/Message/TextMessage/TextMessage.tsx +29 -2
- package/src/Message/UserFeedback/UserFeedback.scss +28 -1
- package/src/Message/UserFeedback/UserFeedback.tsx +23 -13
- package/src/Message/UserFeedback/UserFeedbackComplete.tsx +1 -4
- package/src/Message/UserFeedback/index.ts +2 -0
- package/src/Message/index.ts +8 -0
- package/src/MessageBar/AttachButton.scss +0 -1
- package/src/MessageBar/MessageBar.scss +48 -6
- package/src/MessageBar/MessageBar.test.tsx +12 -0
- package/src/MessageBar/MessageBar.tsx +38 -4
- package/src/MessageBar/MicrophoneButton.scss +0 -1
- package/src/MessageBar/SendButton.scss +0 -1
- package/src/MessageBar/StopButton.scss +0 -1
- package/src/Onboarding/Onboarding.scss +101 -0
- package/src/Onboarding/Onboarding.test.tsx +148 -0
- package/src/Onboarding/Onboarding.tsx +126 -0
- package/src/Onboarding/index.ts +3 -0
- package/src/ResponseActions/ResponseActions.scss +12 -1
- package/src/ResponseActions/ResponseActions.test.tsx +111 -12
- package/src/ResponseActions/ResponseActions.tsx +44 -10
- package/src/ResponseActions/ResponseActionsGroups.test.tsx +23 -0
- package/src/ResponseActions/ResponseActionsGroups.tsx +28 -0
- package/src/ResponseActions/index.ts +1 -0
- package/src/ToolCall/ToolCall.scss +1 -1
- package/src/ToolCall/ToolCall.test.tsx +91 -0
- package/src/ToolCall/ToolCall.tsx +49 -4
- package/src/ToolResponse/ToolResponse.scss +13 -3
- package/src/ToolResponse/ToolResponse.test.tsx +119 -0
- package/src/ToolResponse/ToolResponse.tsx +82 -7
- package/src/index.ts +6 -0
- package/src/main.scss +2 -0
- package/tsconfig.json +1 -1
- package/patternfly-docs/content/extensions/chatbot/about-chatbot.md +0 -44
package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithToolResponse.tsx
CHANGED
|
@@ -23,113 +23,230 @@ export const MessageWithToolResponseExample: FunctionComponent = () => {
|
|
|
23
23
|
};
|
|
24
24
|
|
|
25
25
|
return (
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
<
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
<Flex gap={{ default: 'gapXs' }}>
|
|
41
|
-
<FlexItem>
|
|
42
|
-
<WrenchIcon style={{ color: 'var(--pf-t--global--icon--color--brand--default' }} />
|
|
43
|
-
</FlexItem>
|
|
44
|
-
<FlexItem>toolName</FlexItem>
|
|
45
|
-
</Flex>
|
|
46
|
-
</FlexItem>
|
|
47
|
-
<FlexItem>
|
|
48
|
-
<Flex gap={{ default: 'gapSm' }} style={{ fontSize: '12px', fontWeight: '400' }}>
|
|
49
|
-
<FlexItem>Execution time:</FlexItem>
|
|
50
|
-
<FlexItem>0.12 seconds</FlexItem>
|
|
51
|
-
</Flex>
|
|
52
|
-
</FlexItem>
|
|
53
|
-
</Flex>
|
|
54
|
-
</FlexItem>
|
|
55
|
-
<FlexItem>
|
|
56
|
-
<Button
|
|
57
|
-
variant="plain"
|
|
58
|
-
aria-label="Copy tool response to clipboard"
|
|
59
|
-
icon={<CopyIcon style={{ color: 'var(--pf-t--global--icon--color--subtle)' }} />}
|
|
60
|
-
></Button>
|
|
61
|
-
</FlexItem>
|
|
62
|
-
</Flex>
|
|
63
|
-
),
|
|
64
|
-
cardBody: (
|
|
65
|
-
<>
|
|
66
|
-
<DescriptionList
|
|
67
|
-
style={{ '--pf-v6-c-description-list--RowGap': 'var(--pf-t--global--spacer--md)' } as any}
|
|
68
|
-
aria-label="Tool response"
|
|
26
|
+
<>
|
|
27
|
+
<Message
|
|
28
|
+
name="Bot"
|
|
29
|
+
role="bot"
|
|
30
|
+
avatar={patternflyAvatar}
|
|
31
|
+
content="This message has a body description that's within the recommended limit of 2 lines:"
|
|
32
|
+
toolResponse={{
|
|
33
|
+
toggleContent: 'Tool response: toolName',
|
|
34
|
+
subheading: 'Thought for 3 seconds',
|
|
35
|
+
body: "Here's the summary for your toolName response:",
|
|
36
|
+
cardTitle: (
|
|
37
|
+
<Flex
|
|
38
|
+
alignItems={{ default: 'alignItemsCenter' }}
|
|
39
|
+
justifyContent={{ default: 'justifyContentSpaceBetween' }}
|
|
69
40
|
>
|
|
70
|
-
<
|
|
71
|
-
|
|
41
|
+
<FlexItem>
|
|
42
|
+
<Flex direction={{ default: 'column' }} gap={{ default: 'gapXs' }}>
|
|
43
|
+
<FlexItem grow={{ default: 'grow' }}>
|
|
44
|
+
<Flex gap={{ default: 'gapXs' }}>
|
|
45
|
+
<FlexItem>
|
|
46
|
+
<WrenchIcon style={{ color: 'var(--pf-t--global--icon--color--brand--default' }} />
|
|
47
|
+
</FlexItem>
|
|
48
|
+
<FlexItem>toolName</FlexItem>
|
|
49
|
+
</Flex>
|
|
50
|
+
</FlexItem>
|
|
51
|
+
<FlexItem>
|
|
52
|
+
<Flex gap={{ default: 'gapSm' }} style={{ fontSize: '12px', fontWeight: '400' }}>
|
|
53
|
+
<FlexItem>Execution time:</FlexItem>
|
|
54
|
+
<FlexItem>0.12 seconds</FlexItem>
|
|
55
|
+
</Flex>
|
|
56
|
+
</FlexItem>
|
|
57
|
+
</Flex>
|
|
58
|
+
</FlexItem>
|
|
59
|
+
<FlexItem>
|
|
60
|
+
<Button
|
|
61
|
+
variant="plain"
|
|
62
|
+
aria-label="Copy tool response to clipboard"
|
|
63
|
+
icon={<CopyIcon style={{ color: 'var(--pf-t--global--icon--color--subtle)' }} />}
|
|
64
|
+
></Button>
|
|
65
|
+
</FlexItem>
|
|
66
|
+
</Flex>
|
|
67
|
+
),
|
|
68
|
+
cardBody: (
|
|
69
|
+
<>
|
|
70
|
+
<DescriptionList
|
|
71
|
+
style={{ '--pf-v6-c-description-list--RowGap': 'var(--pf-t--global--spacer--md)' } as any}
|
|
72
|
+
aria-label="Tool response"
|
|
72
73
|
>
|
|
73
|
-
<
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
74
|
+
<DescriptionListGroup
|
|
75
|
+
style={{ '--pf-v6-c-description-list__group--RowGap': 'var(--pf-t--global--spacer--xs)' } as any}
|
|
76
|
+
>
|
|
77
|
+
<DescriptionListTerm>Parameters</DescriptionListTerm>
|
|
78
|
+
<DescriptionListDescription>
|
|
79
|
+
<Flex direction={{ default: 'column' }}>
|
|
80
|
+
<FlexItem>Optional description text for parameters.</FlexItem>
|
|
81
|
+
<FlexItem>
|
|
82
|
+
<Flex gap={{ default: 'gapSm' }}>
|
|
83
|
+
<FlexItem>
|
|
84
|
+
<Label variant="outline" color="blue">
|
|
85
|
+
type
|
|
86
|
+
</Label>
|
|
87
|
+
</FlexItem>
|
|
88
|
+
<FlexItem>
|
|
89
|
+
<Label variant="outline" color="blue">
|
|
90
|
+
properties
|
|
91
|
+
</Label>
|
|
92
|
+
</FlexItem>
|
|
93
|
+
<FlexItem>
|
|
94
|
+
<Label variant="outline" color="blue">
|
|
95
|
+
label
|
|
96
|
+
</Label>
|
|
97
|
+
</FlexItem>
|
|
98
|
+
<FlexItem>
|
|
99
|
+
<Label variant="outline" color="blue">
|
|
100
|
+
label
|
|
101
|
+
</Label>
|
|
102
|
+
</FlexItem>
|
|
103
|
+
</Flex>
|
|
104
|
+
</FlexItem>
|
|
105
|
+
</Flex>
|
|
106
|
+
</DescriptionListDescription>
|
|
107
|
+
</DescriptionListGroup>
|
|
108
|
+
<DescriptionListGroup
|
|
109
|
+
style={{ '--pf-v6-c-description-list__group--RowGap': 'var(--pf-t--global--spacer--xs)' } as any}
|
|
110
|
+
>
|
|
111
|
+
<DescriptionListTerm>Response</DescriptionListTerm>
|
|
112
|
+
<DescriptionListDescription>
|
|
113
|
+
<ExpandableSection
|
|
114
|
+
variant={ExpandableSectionVariant.truncate}
|
|
115
|
+
toggleTextExpanded="show less of response"
|
|
116
|
+
toggleTextCollapsed="show more of response"
|
|
117
|
+
onToggle={onToggle}
|
|
118
|
+
isExpanded={isExpanded}
|
|
119
|
+
style={
|
|
120
|
+
{
|
|
121
|
+
'--pf-v6-c-expandable-section__content--Opacity': '1',
|
|
122
|
+
'--pf-v6-c-expandable-section__content--PaddingInlineStart': 0,
|
|
123
|
+
'--pf-v6-c-expandable-section__content--TranslateY': 0,
|
|
124
|
+
'--pf-v6-c-expandable-section--m-expand-top__content--TranslateY': 0
|
|
125
|
+
} as any
|
|
126
|
+
}
|
|
127
|
+
>
|
|
128
|
+
Descriptive text about the tool response, including completion status, details on the data that
|
|
129
|
+
was processed, or anything else relevant to the use case.
|
|
130
|
+
</ExpandableSection>
|
|
131
|
+
</DescriptionListDescription>
|
|
132
|
+
</DescriptionListGroup>
|
|
133
|
+
</DescriptionList>
|
|
134
|
+
</>
|
|
135
|
+
)
|
|
136
|
+
}}
|
|
137
|
+
/>
|
|
138
|
+
<Message
|
|
139
|
+
name="Bot"
|
|
140
|
+
role="bot"
|
|
141
|
+
avatar={patternflyAvatar}
|
|
142
|
+
content="This message has a tool response that is collapsed by default:"
|
|
143
|
+
toolResponse={{
|
|
144
|
+
isDefaultExpanded: false,
|
|
145
|
+
toggleContent: 'Tool response: toolName',
|
|
146
|
+
subheading: 'Thought for 3 seconds',
|
|
147
|
+
body: "Here's the summary for your toolName response:",
|
|
148
|
+
cardTitle: (
|
|
149
|
+
<Flex
|
|
150
|
+
alignItems={{ default: 'alignItemsCenter' }}
|
|
151
|
+
justifyContent={{ default: 'justifyContentSpaceBetween' }}
|
|
152
|
+
>
|
|
153
|
+
<FlexItem>
|
|
154
|
+
<Flex direction={{ default: 'column' }} gap={{ default: 'gapXs' }}>
|
|
155
|
+
<FlexItem grow={{ default: 'grow' }}>
|
|
156
|
+
<Flex gap={{ default: 'gapXs' }}>
|
|
157
|
+
<FlexItem>
|
|
158
|
+
<WrenchIcon style={{ color: 'var(--pf-t--global--icon--color--brand--default' }} />
|
|
159
|
+
</FlexItem>
|
|
160
|
+
<FlexItem>toolName</FlexItem>
|
|
161
|
+
</Flex>
|
|
162
|
+
</FlexItem>
|
|
163
|
+
<FlexItem>
|
|
164
|
+
<Flex gap={{ default: 'gapSm' }} style={{ fontSize: '12px', fontWeight: '400' }}>
|
|
165
|
+
<FlexItem>Execution time:</FlexItem>
|
|
166
|
+
<FlexItem>0.12 seconds</FlexItem>
|
|
167
|
+
</Flex>
|
|
168
|
+
</FlexItem>
|
|
169
|
+
</Flex>
|
|
170
|
+
</FlexItem>
|
|
171
|
+
<FlexItem>
|
|
172
|
+
<Button
|
|
173
|
+
variant="plain"
|
|
174
|
+
aria-label="Copy tool response to clipboard"
|
|
175
|
+
icon={<CopyIcon style={{ color: 'var(--pf-t--global--icon--color--subtle)' }} />}
|
|
176
|
+
></Button>
|
|
177
|
+
</FlexItem>
|
|
178
|
+
</Flex>
|
|
179
|
+
),
|
|
180
|
+
cardBody: (
|
|
181
|
+
<>
|
|
182
|
+
<DescriptionList
|
|
183
|
+
style={{ '--pf-v6-c-description-list--RowGap': 'var(--pf-t--global--spacer--md)' } as any}
|
|
184
|
+
aria-label="Tool response"
|
|
106
185
|
>
|
|
107
|
-
<
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
186
|
+
<DescriptionListGroup
|
|
187
|
+
style={{ '--pf-v6-c-description-list__group--RowGap': 'var(--pf-t--global--spacer--xs)' } as any}
|
|
188
|
+
>
|
|
189
|
+
<DescriptionListTerm>Parameters</DescriptionListTerm>
|
|
190
|
+
<DescriptionListDescription>
|
|
191
|
+
<Flex direction={{ default: 'column' }}>
|
|
192
|
+
<FlexItem>Optional description text for parameters.</FlexItem>
|
|
193
|
+
<FlexItem>
|
|
194
|
+
<Flex gap={{ default: 'gapSm' }}>
|
|
195
|
+
<FlexItem>
|
|
196
|
+
<Label variant="outline" color="blue">
|
|
197
|
+
type
|
|
198
|
+
</Label>
|
|
199
|
+
</FlexItem>
|
|
200
|
+
<FlexItem>
|
|
201
|
+
<Label variant="outline" color="blue">
|
|
202
|
+
properties
|
|
203
|
+
</Label>
|
|
204
|
+
</FlexItem>
|
|
205
|
+
<FlexItem>
|
|
206
|
+
<Label variant="outline" color="blue">
|
|
207
|
+
label
|
|
208
|
+
</Label>
|
|
209
|
+
</FlexItem>
|
|
210
|
+
<FlexItem>
|
|
211
|
+
<Label variant="outline" color="blue">
|
|
212
|
+
label
|
|
213
|
+
</Label>
|
|
214
|
+
</FlexItem>
|
|
215
|
+
</Flex>
|
|
216
|
+
</FlexItem>
|
|
217
|
+
</Flex>
|
|
218
|
+
</DescriptionListDescription>
|
|
219
|
+
</DescriptionListGroup>
|
|
220
|
+
<DescriptionListGroup
|
|
221
|
+
style={{ '--pf-v6-c-description-list__group--RowGap': 'var(--pf-t--global--spacer--xs)' } as any}
|
|
222
|
+
>
|
|
223
|
+
<DescriptionListTerm>Response</DescriptionListTerm>
|
|
224
|
+
<DescriptionListDescription>
|
|
225
|
+
<ExpandableSection
|
|
226
|
+
variant={ExpandableSectionVariant.truncate}
|
|
227
|
+
toggleTextExpanded="show less of response"
|
|
228
|
+
toggleTextCollapsed="show more of response"
|
|
229
|
+
onToggle={onToggle}
|
|
230
|
+
isExpanded={isExpanded}
|
|
231
|
+
style={
|
|
232
|
+
{
|
|
233
|
+
'--pf-v6-c-expandable-section__content--Opacity': '1',
|
|
234
|
+
'--pf-v6-c-expandable-section__content--PaddingInlineStart': 0,
|
|
235
|
+
'--pf-v6-c-expandable-section__content--TranslateY': 0,
|
|
236
|
+
'--pf-v6-c-expandable-section--m-expand-top__content--TranslateY': 0
|
|
237
|
+
} as any
|
|
238
|
+
}
|
|
239
|
+
>
|
|
240
|
+
Descriptive text about the tool response, including completion status, details on the data that
|
|
241
|
+
was processed, or anything else relevant to the use case.
|
|
242
|
+
</ExpandableSection>
|
|
243
|
+
</DescriptionListDescription>
|
|
244
|
+
</DescriptionListGroup>
|
|
245
|
+
</DescriptionList>
|
|
246
|
+
</>
|
|
247
|
+
)
|
|
248
|
+
}}
|
|
249
|
+
/>
|
|
250
|
+
</>
|
|
134
251
|
);
|
|
135
252
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
# Sidenav top-level section
|
|
3
3
|
# should be the same for all markdown files
|
|
4
|
-
section:
|
|
4
|
+
section: extensions
|
|
5
5
|
subsection: ChatBot
|
|
6
6
|
# Sidenav secondary level section
|
|
7
7
|
# should be the same for all markdown files
|
|
@@ -14,24 +14,40 @@ propComponents:
|
|
|
14
14
|
[
|
|
15
15
|
'AttachMenu',
|
|
16
16
|
'AttachmentEdit',
|
|
17
|
-
'FileDetailsProps',
|
|
18
|
-
'FileDetailsLabelProps',
|
|
19
17
|
'FileDropZone',
|
|
20
|
-
'PreviewAttachment',
|
|
21
18
|
'Message',
|
|
22
|
-
'
|
|
23
|
-
'
|
|
19
|
+
'ErrorMessage',
|
|
20
|
+
'MessageLoadingProps',
|
|
21
|
+
'MessageInputProps',
|
|
22
|
+
'MessageAndActionsProps',
|
|
23
|
+
'MarkdownContent',
|
|
24
|
+
'QuickResponseProps',
|
|
25
|
+
'QuickStartTileProps',
|
|
26
|
+
'UserFeedback',
|
|
27
|
+
'UserFeedbackComplete',
|
|
28
|
+
'DeepThinking',
|
|
29
|
+
'ToolCall',
|
|
30
|
+
'ToolResponse',
|
|
31
|
+
'SourcesCard',
|
|
32
|
+
'ResponseActionsGroupsProps',
|
|
33
|
+
'ResponseActionProps',
|
|
24
34
|
'ActionProps',
|
|
25
|
-
'
|
|
26
|
-
'
|
|
27
|
-
'
|
|
28
|
-
'
|
|
35
|
+
'MessageAttachmentsContainerProps',
|
|
36
|
+
'MessageAttachmentItemProps',
|
|
37
|
+
'FileDetailsProps',
|
|
38
|
+
'FileDetailsLabelProps',
|
|
39
|
+
'MessageExtraContent',
|
|
40
|
+
'PreviewAttachment'
|
|
29
41
|
]
|
|
30
42
|
sortValue: 3
|
|
31
43
|
---
|
|
32
44
|
|
|
33
|
-
import Message from '@patternfly/chatbot/dist/dynamic/Message';
|
|
45
|
+
import Message, { ErrorMessage, MessageAndActions, MessageLoading, MessageAttachmentItem, MessageAttachmentsContainer } from '@patternfly/chatbot/dist/dynamic/Message';
|
|
46
|
+
import MarkdownContent from '@patternfly/chatbot/dist/dynamic/MarkdownContent';
|
|
34
47
|
import MessageDivider from '@patternfly/chatbot/dist/dynamic/MessageDivider';
|
|
48
|
+
import ToolCall from '@patternfly/chatbot/dist/dynamic/ToolCall';
|
|
49
|
+
import ResponseActions, { ResponseActionsGroups } from '@patternfly/chatbot/dist/dynamic/ResponseActions';
|
|
50
|
+
import ToolResponse from '@patternfly/chatbot/dist/dynamic/ToolResponse';
|
|
35
51
|
import { rehypeCodeBlockToggle } from '@patternfly/chatbot/dist/esm/Message/Plugins/rehypeCodeBlockToggle';
|
|
36
52
|
import SourcesCard from '@patternfly/chatbot/dist/dynamic/SourcesCard';
|
|
37
53
|
import { ArrowCircleDownIcon, ArrowRightIcon, CheckCircleIcon, CopyIcon, CubeIcon, CubesIcon, DownloadIcon, InfoCircleIcon, OutlinedQuestionCircleIcon, RedoIcon, RobotIcon, WrenchIcon } from '@patternfly/react-icons';
|
|
@@ -108,6 +124,38 @@ Once the component has rendered, user interactions will take precedence over the
|
|
|
108
124
|
|
|
109
125
|
```
|
|
110
126
|
|
|
127
|
+
### Message actions persistent selections
|
|
128
|
+
|
|
129
|
+
By default, message actions will automatically deselect when you click outside the component or on a different action button. To persist the selection instead, set `persistActionSelection` to `true`.
|
|
130
|
+
|
|
131
|
+
When `persistActionSelection` is `true`:
|
|
132
|
+
|
|
133
|
+
- The selected action will remain selected even when you click outside the component.
|
|
134
|
+
- Clicking a different button will still switch the selection to that button.
|
|
135
|
+
- Clicking the same action button again will toggle the selection off, though you will have to move your focus elsewhere to see the visual state change.
|
|
136
|
+
|
|
137
|
+
```js file="./MessageWithPersistedActions.tsx"
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Multiple messsage action groups
|
|
142
|
+
|
|
143
|
+
To maintain finer control over message action selection behavior, you can create groups of actions by passing an array of objects to the `actions` prop. This allows you to separate actions into conceptually or functionally different groups and implement different behavior for each group as needed. For example, you could separate feedback actions (thumbs up/down) form utility actions (copy and download), and have different selection behaviors for each group.
|
|
144
|
+
|
|
145
|
+
To provide flexibility for your use case, there are 2 approaches you can take to pass an array of objects to `actions`:
|
|
146
|
+
|
|
147
|
+
1. Pass an array of objects, where each object contains:
|
|
148
|
+
|
|
149
|
+
- `actions`: An `action` object containing the actions for that group (the same format as a single `action` object)
|
|
150
|
+
|
|
151
|
+
- `persistActionSelection` (optional): A boolean to control whether selections persists for this specific group
|
|
152
|
+
|
|
153
|
+
2. Pass an array of `action` objects (the same format as a single `action` object) and (optionally) a value for the `persistActionSelection` property that will apply to all groups.
|
|
154
|
+
|
|
155
|
+
```js file="./MessageWithMultipleActionGroups.tsx"
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
|
|
111
159
|
### Custom message actions
|
|
112
160
|
|
|
113
161
|
Beyond the standard message actions (good response, bad response, copy, share, or listen), you can add custom actions to a bot message by passing an `actions` object to the `<Message>` component. This object can contain the following customizations:
|
|
@@ -130,9 +178,9 @@ You can apply a `clickedAriaLabel` and `clickedTooltipContent` once a button is
|
|
|
130
178
|
|
|
131
179
|
### Message feedback
|
|
132
180
|
|
|
133
|
-
When a user selects a positive or negative [message action](#message-actions), you can display a message feedback card that acknowledges their response and provides space for additional written feedback. These cards can be manually dismissed via the close button and the thank-you card can be [configured to time out automatically](/
|
|
181
|
+
When a user selects a positive or negative [message action](#message-actions), you can display a message feedback card that acknowledges their response and provides space for additional written feedback. These cards can be manually dismissed via the close button and the thank-you card can be [configured to time out automatically](/extensions/chatbot/messages#message-feedback-with-timeouts).
|
|
134
182
|
|
|
135
|
-
You can see the full feedback flow [in the message demos](/
|
|
183
|
+
You can see the full feedback flow [in the message demos](/extensions/chatbot/messages/demo#message-feedback).
|
|
136
184
|
|
|
137
185
|
The message feedback cards will immediately receive focus by default, but you can remove this behavior by passing `focusOnLoad: false` to the `<Message>` (as shown in the following examples). For better usability, you should generally keep the default focus behavior.
|
|
138
186
|
|
|
@@ -239,11 +287,40 @@ You can add custom content to specific parts of a `<Message>` via the `extraCont
|
|
|
239
287
|
|
|
240
288
|
```
|
|
241
289
|
|
|
290
|
+
### Custom message structure
|
|
291
|
+
|
|
292
|
+
For more advanced use cases, you can build completely custom message structures by passing children directly to `<Message>`. This approach is useful when you need to customize the order or structure of message elements beyond what the standard props allow.
|
|
293
|
+
|
|
294
|
+
When creating custom message structures, you must follow an intended composable structure.
|
|
295
|
+
|
|
296
|
+
1. **Message content and actions:** Wrap in `<MessageAndActions>`. This includes, but is not limited to:
|
|
297
|
+
|
|
298
|
+
- `<MarkdownContent>`: For rendering markdown or plain text content
|
|
299
|
+
- `<ErrorMessage>`
|
|
300
|
+
- `<MessageLoading>`
|
|
301
|
+
- `<MessageInput>`
|
|
302
|
+
- `<ToolCall>`
|
|
303
|
+
- `<ToolResponse>`
|
|
304
|
+
- `<DeepThinking>`
|
|
305
|
+
- `<QuickResponse>`
|
|
306
|
+
- `<QuickStartTile>`
|
|
307
|
+
- `<UserFeedback>` and `<UserFeedbackComplete>`
|
|
308
|
+
- `<SourcesCard>`
|
|
309
|
+
- `<ResponseActionsGroups>` and `<ResponseActions>`
|
|
310
|
+
|
|
311
|
+
2. **File attachments:** Placed outside `<MessageAndActions>` and wrapped in attachment containers:
|
|
312
|
+
- `<MessageAttachmentsContainer>`: Container for all attachments
|
|
313
|
+
- `<MessageAttachmentItem>`: Individual attachment wrapper (contains `<FileDetailsLabel>` or other attachment components)
|
|
314
|
+
|
|
315
|
+
```ts file="./MessageWithCustomStructure.tsx"
|
|
316
|
+
|
|
317
|
+
```
|
|
318
|
+
|
|
242
319
|
## File attachments
|
|
243
320
|
|
|
244
321
|
### Messages with attachments
|
|
245
322
|
|
|
246
|
-
When [attachments](/
|
|
323
|
+
When [attachments](/extensions/chatbot/messages#file-attachments) are shared and displayed in the ChatBot window, users will see a selectable and dismissible message that contains file details in a label. Selecting the file label can open a preview modal, which allows users to view or make edits to the file contents.
|
|
247
324
|
|
|
248
325
|
The `<PreviewAttachment>` component displays a modal with a read-only view of the attached file's contents. Selecting the "edit" button will open the `<AttachmentEdit>` component, which provides an interactive environment where users can make changes to the file.
|
|
249
326
|
|
|
@@ -317,3 +394,35 @@ An attachment dropzone allows users to upload files via drag and drop.
|
|
|
317
394
|
```js file="./FileDropZone.tsx"
|
|
318
395
|
|
|
319
396
|
```
|
|
397
|
+
|
|
398
|
+
## Examples with Markdown
|
|
399
|
+
|
|
400
|
+
The ChatBot supports Markdown formatting in several message components, allowing you to display rich, formatted content. This is particularly useful when you need to include code snippets, lists, emphasis, or other formatted text. The following examples demonstrate different ways you can use Markdown in a few of the ChatBot components, but this is not an exhaustive list of all Markdown customizations you can make.
|
|
401
|
+
|
|
402
|
+
To enable Markdown rendering, use the appropriate Markdown flag prop (such as `isBodyMarkdown`, `isSubheadingMarkdown`, or `isExpandableContentMarkdown`) depending on the component and content you're formatting.
|
|
403
|
+
|
|
404
|
+
**Important:** When using Markdown in these components, set `shouldRetainStyles: true` to retain the styling of the context the Markdown is used in. This ensures that Markdown content maintains the proper font sizes, colors, and other styling properties of its parent component. For example, Markdown passed into a toggle will retain the ChatBot toggle styling, while Markdown in a card body will maintain the appropriate card body styling. Without this prop, the Markdown may override the contextual styles and create inconsistencies with the rest of the ChatBot interface.
|
|
405
|
+
|
|
406
|
+
### Tool calls with Markdown
|
|
407
|
+
|
|
408
|
+
When displaying tool call information, you can use Markdown in the expandable content to provide formatted details about what the tool is processing. This is useful for showing structured data, code snippets, or formatted lists.
|
|
409
|
+
|
|
410
|
+
```ts file="./MessageWithMarkdownToolCall.tsx"
|
|
411
|
+
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
### Deep thinking with Markdown
|
|
415
|
+
|
|
416
|
+
Deep thinking content can include Markdown formatting in both the subheading and body to better communicate the LLM's reasoning process. This allows you to emphasize key points, structure thought processes with lists, or include other formatting.
|
|
417
|
+
|
|
418
|
+
```ts file="./MessageWithMarkdownDeepThinking.tsx"
|
|
419
|
+
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
### Tool responses with Markdown
|
|
423
|
+
|
|
424
|
+
Tool response cards support Markdown in multiple areas, including the toggle content, subheading, and body. Use `shouldRetainStyles: true` along with the appropriate Markdown flag props to ensure proper formatting and spacing.
|
|
425
|
+
|
|
426
|
+
```ts file="./MessageWithMarkdownToolResponse.tsx"
|
|
427
|
+
|
|
428
|
+
```
|