@gooddata/sdk-ui-gen-ai 11.55.0-alpha.2 → 11.55.0-alpha.4
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/NOTICE +9 -9
- package/esm/components/ConfigContext.d.ts +1 -0
- package/esm/components/ConfigContext.d.ts.map +1 -1
- package/esm/components/CustomizationContext.d.ts +36 -0
- package/esm/components/CustomizationContext.d.ts.map +1 -0
- package/esm/components/CustomizationContext.js +18 -0
- package/esm/components/CustomizationProvider.d.ts +3 -12
- package/esm/components/CustomizationProvider.d.ts.map +1 -1
- package/esm/components/CustomizationProvider.js +109 -13
- package/esm/components/GenAIChatAgentDropdown.d.ts +2 -2
- package/esm/components/GenAIChatAgentDropdown.d.ts.map +1 -1
- package/esm/components/GenAIChatAgentDropdown.js +11 -7
- package/esm/components/GenAIChatContextIndicator.d.ts +2 -2
- package/esm/components/GenAIChatContextIndicator.d.ts.map +1 -1
- package/esm/components/GenAIChatContextIndicator.js +81 -13
- package/esm/components/GenAIChatWrapper.js +1 -1
- package/esm/components/GenAIStandaloneInput.d.ts +5 -0
- package/esm/components/GenAIStandaloneInput.d.ts.map +1 -1
- package/esm/components/GenAIStandaloneInput.js +3 -2
- package/esm/components/GenAiChatAgentSwitching.d.ts.map +1 -1
- package/esm/components/GenAiChatAgentSwitching.js +9 -3
- package/esm/components/GenAiChatContextChooser.d.ts.map +1 -1
- package/esm/components/GenAiChatContextChooser.js +4 -3
- package/esm/components/GenAiChatContextChooserBody.d.ts +3 -1
- package/esm/components/GenAiChatContextChooserBody.d.ts.map +1 -1
- package/esm/components/GenAiChatContextChooserBody.js +7 -4
- package/esm/components/GenAiConversations.d.ts +5 -0
- package/esm/components/GenAiConversations.d.ts.map +1 -1
- package/esm/components/GenAiConversations.js +2 -2
- package/esm/components/Input.js +1 -1
- package/esm/components/Messages.d.ts.map +1 -1
- package/esm/components/Messages.js +4 -5
- package/esm/components/customized/AgentChooser.d.ts +8 -0
- package/esm/components/customized/AgentChooser.d.ts.map +1 -0
- package/esm/components/customized/AgentChooser.js +11 -0
- package/esm/components/customized/AgentItem.d.ts +1 -1
- package/esm/components/customized/AgentItem.js +1 -1
- package/esm/components/customized/AssistantMessage.d.ts +8 -0
- package/esm/components/customized/AssistantMessage.d.ts.map +1 -0
- package/esm/components/customized/AssistantMessage.js +11 -0
- package/esm/components/customized/Disclaimer.d.ts +3 -1
- package/esm/components/customized/Disclaimer.d.ts.map +1 -1
- package/esm/components/customized/Disclaimer.js +3 -1
- package/esm/components/customized/Feedback.d.ts +8 -0
- package/esm/components/customized/Feedback.d.ts.map +1 -0
- package/esm/components/customized/Feedback.js +11 -0
- package/esm/components/customized/FollowUpButtons.d.ts +8 -0
- package/esm/components/customized/FollowUpButtons.d.ts.map +1 -0
- package/esm/components/customized/FollowUpButtons.js +11 -0
- package/esm/components/customized/FollowUpQuestion.d.ts +8 -0
- package/esm/components/customized/FollowUpQuestion.d.ts.map +1 -0
- package/esm/components/customized/FollowUpQuestion.js +11 -0
- package/esm/components/customized/LandingContainer.d.ts +6 -2
- package/esm/components/customized/LandingContainer.d.ts.map +1 -1
- package/esm/components/customized/LandingContainer.js +6 -2
- package/esm/components/customized/LandingQuestion.d.ts +6 -2
- package/esm/components/customized/LandingQuestion.d.ts.map +1 -1
- package/esm/components/customized/LandingQuestion.js +3 -1
- package/esm/components/customized/LandingScreen.d.ts +4 -2
- package/esm/components/customized/LandingScreen.d.ts.map +1 -1
- package/esm/components/customized/LandingScreen.js +3 -1
- package/esm/components/customized/LandingTitle.d.ts +7 -3
- package/esm/components/customized/LandingTitle.d.ts.map +1 -1
- package/esm/components/customized/LandingTitle.js +6 -2
- package/esm/components/customized/MessageErrorContent.d.ts +8 -0
- package/esm/components/customized/MessageErrorContent.d.ts.map +1 -0
- package/esm/components/customized/MessageErrorContent.js +11 -0
- package/esm/components/customized/MessageMultipartContent.d.ts +8 -0
- package/esm/components/customized/MessageMultipartContent.d.ts.map +1 -0
- package/esm/components/customized/MessageMultipartContent.js +11 -0
- package/esm/components/customized/MessageReasoningContent.d.ts +8 -0
- package/esm/components/customized/MessageReasoningContent.d.ts.map +1 -0
- package/esm/components/customized/MessageReasoningContent.js +11 -0
- package/esm/components/customized/MessageTextContent.d.ts +8 -0
- package/esm/components/customized/MessageTextContent.d.ts.map +1 -0
- package/esm/components/customized/MessageTextContent.js +11 -0
- package/esm/components/customized/UserMessage.d.ts +8 -0
- package/esm/components/customized/UserMessage.d.ts.map +1 -0
- package/esm/components/customized/UserMessage.js +11 -0
- package/esm/components/customized/types.d.ts +260 -1
- package/esm/components/customized/types.d.ts.map +1 -1
- package/esm/components/hooks/useContextChangeAnnouncement.d.ts +2 -2
- package/esm/components/hooks/useContextChangeAnnouncement.d.ts.map +1 -1
- package/esm/components/hooks/useContextChangeAnnouncement.js +9 -4
- package/esm/components/hooks/useContextItems.d.ts +9 -3
- package/esm/components/hooks/useContextItems.d.ts.map +1 -1
- package/esm/components/hooks/useContextItems.js +51 -8
- package/esm/components/hooks/useSettingsClick.d.ts.map +1 -1
- package/esm/components/hooks/useSettingsClick.js +2 -0
- package/esm/components/messages/AssistantItem.d.ts.map +1 -1
- package/esm/components/messages/AssistantItem.js +3 -3
- package/esm/components/messages/AssistantItemFeedback.d.ts +3 -6
- package/esm/components/messages/AssistantItemFeedback.d.ts.map +1 -1
- package/esm/components/messages/AssistantItemFeedback.js +3 -9
- package/esm/components/messages/AssistantItemFollowUpButtons.d.ts +14 -0
- package/esm/components/messages/AssistantItemFollowUpButtons.d.ts.map +1 -0
- package/esm/components/messages/AssistantItemFollowUpButtons.js +23 -0
- package/esm/components/messages/AssistantItemFollowUpQuestion.d.ts +14 -0
- package/esm/components/messages/AssistantItemFollowUpQuestion.d.ts.map +1 -0
- package/esm/components/messages/AssistantItemFollowUpQuestion.js +8 -0
- package/esm/components/messages/AssistantItemSuggestions.d.ts +3 -3
- package/esm/components/messages/AssistantItemSuggestions.d.ts.map +1 -1
- package/esm/components/messages/AssistantItemSuggestions.js +7 -15
- package/esm/components/messages/ConversationItemContents.d.ts.map +1 -1
- package/esm/components/messages/ConversationItemContents.js +7 -43
- package/esm/components/messages/components/SemanticSearchTreeView.d.ts.map +1 -1
- package/esm/components/messages/components/SemanticSearchTreeView.js +2 -0
- package/esm/components/messages/contents/CustomHyperlink.d.ts.map +1 -1
- package/esm/components/messages/contents/CustomHyperlink.js +1 -0
- package/esm/components/messages/contents/VisualizationContents.d.ts.map +1 -1
- package/esm/components/messages/contents/VisualizationContents.js +2 -0
- package/esm/components/messages/conversationContents/ConversationDashboardContent.d.ts.map +1 -1
- package/esm/components/messages/conversationContents/ConversationDashboardContent.js +1 -0
- package/esm/components/messages/conversationContents/ConversationMultipartContent.d.ts +8 -0
- package/esm/components/messages/conversationContents/ConversationMultipartContent.d.ts.map +1 -0
- package/esm/components/messages/conversationContents/ConversationMultipartContent.js +40 -0
- package/esm/components/messages/conversationContents/ConversationVisualizationContent.js +2 -0
- package/esm/components/utils/groupUtility.d.ts +3 -0
- package/esm/components/utils/groupUtility.d.ts.map +1 -1
- package/esm/context/addContextReference.d.ts +0 -2
- package/esm/context/addContextReference.d.ts.map +1 -1
- package/esm/context/addContextReference.js +12 -35
- package/esm/context/collectContextReferences.d.ts +2 -2
- package/esm/context/collectContextReferences.d.ts.map +1 -1
- package/esm/context/collectContextReferences.js +22 -20
- package/esm/context/removeContextReference.d.ts +2 -16
- package/esm/context/removeContextReference.d.ts.map +1 -1
- package/esm/context/removeContextReference.js +7 -70
- package/esm/context/selectContextReferences.d.ts +5 -0
- package/esm/context/selectContextReferences.d.ts.map +1 -0
- package/esm/context/selectContextReferences.js +68 -0
- package/esm/index.d.ts +12 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +10 -0
- package/esm/localization/bundles/en-US.localization-bundle.d.ts +8 -0
- package/esm/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/en-US.localization-bundle.js +8 -0
- package/esm/localization/bundles/zh-HK.localization-bundle.js +9 -9
- package/esm/sdk-ui-gen-ai.d.ts +378 -11
- package/esm/store/chatWindow/chatWindowSelectors.d.ts +2 -1
- package/esm/store/chatWindow/chatWindowSelectors.d.ts.map +1 -1
- package/esm/store/chatWindow/chatWindowSelectors.js +1 -0
- package/esm/store/chatWindow/chatWindowSlice.d.ts +2 -2
- package/esm/store/chatWindow/chatWindowSlice.d.ts.map +1 -1
- package/esm/store/chatWindow/chatWindowSlice.js +11 -6
- package/esm/store/sideEffects/onVisualizationSuccessSave.d.ts.map +1 -1
- package/esm/store/sideEffects/onVisualizationSuccessSave.js +2 -0
- package/esm/types.d.ts +22 -0
- package/esm/types.d.ts.map +1 -1
- package/esm/whatIf/whatIfMapping.d.ts +2 -2
- package/esm/whatIf/whatIfMapping.d.ts.map +1 -1
- package/esm/whatIf/whatIfMapping.js +3 -3
- package/package.json +21 -22
- package/styles/css/main.css +4 -0
- package/styles/css/main.css.map +1 -1
- package/styles/scss/main.scss +5 -0
|
@@ -8,9 +8,9 @@ import { UiIconButton, UiTooltip } from "@gooddata/sdk-ui-kit";
|
|
|
8
8
|
import { agentSwitchingActiveSelector, agentSwitchingEnabledSelector, reasoningEffortEnabledSelector, } from "../store/chatWindow/chatWindowSelectors.js";
|
|
9
9
|
import { agentsSelector, conversationSelector, conversationsLoadedSelector, conversationsSelector, selectedAgentIdSelector, selectedEffortSelector, } from "../store/messages/messagesSelectors.js";
|
|
10
10
|
import { setSelectedAgentAction, setSelectedEffortAction } from "../store/messages/messagesSlice.js";
|
|
11
|
-
import {
|
|
11
|
+
import { useCustomization } from "./CustomizationContext.js";
|
|
12
12
|
import { GenAIChatEffortDropdown } from "./GenAIChatEffortDropdown.js";
|
|
13
|
-
import { getAgentSelectionStatus } from "./utils/agentSelection.js";
|
|
13
|
+
import { getAgentSelectionStatus, getEffectiveSelectedAgentId } from "./utils/agentSelection.js";
|
|
14
14
|
const msgs = defineMessages({
|
|
15
15
|
send: {
|
|
16
16
|
id: "gd.gen-ai.button.send",
|
|
@@ -21,6 +21,7 @@ const msgs = defineMessages({
|
|
|
21
21
|
});
|
|
22
22
|
function GenAiChatAgentSwitchingCore({ agentSwitchingEnabled, isAssistantLoading, isConversationsLoading, handleSubmit, conversations, conversation, agentDropdownDisabled, agents, selectedAgentId, selectedEffort, reasoningEffortEnabled, agentSwitchingActive, disabled, onMouseDown, setSelectedAgent, setSelectedEffort, setBusy, setNoAgents, leftContent, }) {
|
|
23
23
|
const intl = useIntl();
|
|
24
|
+
const { AgentChooserComponent } = useCustomization();
|
|
24
25
|
const sendLabel = intl.formatMessage(msgs.send);
|
|
25
26
|
const noAgentAvailableLabel = intl.formatMessage(msgs.noAgentAvailable);
|
|
26
27
|
const { availableAgents, hasNoAgents, isSelectionLoading } = getAgentSelectionStatus({
|
|
@@ -30,6 +31,11 @@ function GenAiChatAgentSwitchingCore({ agentSwitchingEnabled, isAssistantLoading
|
|
|
30
31
|
agents,
|
|
31
32
|
selectedAgentId,
|
|
32
33
|
});
|
|
34
|
+
const effectiveSelectedAgentId = getEffectiveSelectedAgentId({
|
|
35
|
+
agents: availableAgents,
|
|
36
|
+
conversationAgentId: conversation?.agentId,
|
|
37
|
+
selectedAgentId,
|
|
38
|
+
});
|
|
33
39
|
const buttonDisabled = disabled || (agentSwitchingActive && hasNoAgents);
|
|
34
40
|
const isBusy = agentSwitchingActive && (hasNoAgents || isSelectionLoading);
|
|
35
41
|
const handleSubmitHandler = useCallback(() => {
|
|
@@ -61,7 +67,7 @@ function GenAiChatAgentSwitchingCore({ agentSwitchingEnabled, isAssistantLoading
|
|
|
61
67
|
"gd-gen-ai-chat__input__actions": agentSwitchingEnabled,
|
|
62
68
|
"gd-gen-ai-chat__input__send_button": !agentSwitchingEnabled,
|
|
63
69
|
"gd-gen-ai-chat__input__send_button--disabled": !agentSwitchingEnabled && buttonDisabled,
|
|
64
|
-
}), onMouseDown: agentSwitchingEnabled ? onMouseDown : undefined, children: [leftContent, agentSwitchingActive && hasNoAgents ? (_jsx("span", { className: "gd-gen-ai-chat__input__no-agent", "data-testid": "no_agent_available", role: "status", "aria-live": "polite", "aria-atomic": "true", children: noAgentAvailableLabel })) : agentSwitchingEnabled ? (_jsxs(_Fragment, { children: [agentSwitchingActive ? (_jsx(
|
|
70
|
+
}), onMouseDown: agentSwitchingEnabled ? onMouseDown : undefined, children: [leftContent, agentSwitchingActive && hasNoAgents ? (_jsx("span", { className: "gd-gen-ai-chat__input__no-agent", "data-testid": "no_agent_available", role: "status", "aria-live": "polite", "aria-atomic": "true", children: noAgentAvailableLabel })) : agentSwitchingEnabled ? (_jsxs(_Fragment, { children: [agentSwitchingActive ? (_jsx(AgentChooserComponent, { agents: availableAgents, conversations: conversations, conversationAgentId: conversation?.agentId, selectedAgentId: selectedAgentId, effectiveSelectedAgentId: effectiveSelectedAgentId, isDisabled: agentDropdownDisabled || isSelectionLoading, isLoading: isSelectionLoading, onSelectAgent: handleSelectAgent, selectedEffort: selectedEffort, onSelectEffort: handleSelectEffort })) : reasoningEffortEnabled ? (_jsx(GenAIChatEffortDropdown, { selectedEffort: selectedEffort, isDisabled: agentDropdownDisabled, onSelectEffort: handleSelectEffort })) : null, _jsx(UiTooltip, { triggerBy: ["focus", "hover"], arrowPlacement: "bottom", anchor: _jsx(UiIconButton, { icon: "arrowUp", variant: "primary", size: "small", dataTestId: "send_message", isDisabled: buttonDisabled, onClick: buttonDisabled ? undefined : handleSubmitHandler, accessibilityConfig: {
|
|
65
71
|
ariaLabel: sendLabel,
|
|
66
72
|
} }), content: sendLabel })
|
|
67
73
|
] })) : (_jsx(UiTooltip, { triggerBy: ["focus", "hover"], arrowPlacement: "bottom", anchor: _jsx(UiIconButton, { icon: "send", variant: "tertiary", size: "medium", dataTestId: "send_message", isDisabled: buttonDisabled, onClick: buttonDisabled ? undefined : handleSubmitHandler, accessibilityConfig: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenAiChatContextChooser.d.ts","sourceRoot":"","sources":["../../src/components/GenAiChatContextChooser.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GenAiChatContextChooser.d.ts","sourceRoot":"","sources":["../../src/components/GenAiChatContextChooser.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAWvD,KAAK,+BAA+B,GAAG;IACnC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;CACzD,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,EAAE,YAAY,EAAE,EAAE,+BAA+B,kDA6ExF"}
|
|
@@ -4,10 +4,10 @@ import { useCallback } from "react";
|
|
|
4
4
|
import { defineMessages, useIntl } from "react-intl";
|
|
5
5
|
import { useDispatch, useSelector } from "react-redux";
|
|
6
6
|
import { Dropdown, UiIconButton, useIdPrefixed } from "@gooddata/sdk-ui-kit";
|
|
7
|
-
import { ambientContextSelector, userContextSelector } from "../store/chatWindow/chatWindowSelectors.js";
|
|
7
|
+
import { ambientContextSelector, selectedContextSelector, userContextSelector, } from "../store/chatWindow/chatWindowSelectors.js";
|
|
8
8
|
import { addContextReferenceAction, initContextObjectsAction } from "../store/chatWindow/chatWindowSlice.js";
|
|
9
9
|
import { GenAiChatContextChooserBody } from "./GenAiChatContextChooserBody.js";
|
|
10
|
-
import {
|
|
10
|
+
import { useUserContextItems } from "./hooks/useContextItems.js";
|
|
11
11
|
const msgs = defineMessages({
|
|
12
12
|
add: {
|
|
13
13
|
id: "gd.gen-ai.context.add_context",
|
|
@@ -18,8 +18,9 @@ export function GenAiChatContextChooser({ onAddContext }) {
|
|
|
18
18
|
const dispatch = useDispatch();
|
|
19
19
|
const titleId = useIdPrefixed("context-chooser-title");
|
|
20
20
|
const ambient = useSelector((state) => ambientContextSelector(state));
|
|
21
|
+
const selected = useSelector((state) => selectedContextSelector(state));
|
|
21
22
|
const active = useSelector((state) => userContextSelector(state));
|
|
22
|
-
const { items: inputItems, search, setSearch, isLoading, hasNextPage, loadNextPage, } =
|
|
23
|
+
const { items: inputItems, search, setSearch, isLoading, hasNextPage, loadNextPage, } = useUserContextItems(ambient, selected, active);
|
|
23
24
|
const addContextLabel = intl.formatMessage(msgs.add);
|
|
24
25
|
const onOpenStateChanged = useCallback((isOpen) => {
|
|
25
26
|
setSearch("");
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ObjRef } from "@gooddata/sdk-model";
|
|
1
2
|
import { type IGenAIContextObject } from "../types.js";
|
|
2
3
|
type GenAiChatContextChooserBodyProps = {
|
|
3
4
|
inputItems: IGenAIContextObject[];
|
|
@@ -5,6 +6,7 @@ type GenAiChatContextChooserBodyProps = {
|
|
|
5
6
|
titleId: string;
|
|
6
7
|
search: string;
|
|
7
8
|
onSearchChange: (search: string) => void;
|
|
9
|
+
selectedIds?: ObjRef[];
|
|
8
10
|
isLoading?: boolean;
|
|
9
11
|
hasNextPage?: boolean;
|
|
10
12
|
loadNextPage?: () => void;
|
|
@@ -16,6 +18,6 @@ type GenAiChatContextChooserBodyProps = {
|
|
|
16
18
|
onSelect: (item: IGenAIContextObject) => void;
|
|
17
19
|
closeDropdown: () => void;
|
|
18
20
|
};
|
|
19
|
-
export declare function GenAiChatContextChooserBody({ inputItems, title, titleId, search, onSearchChange, isLoading, hasNextPage, loadNextPage, ariaAttributes, onSelect, closeDropdown }: GenAiChatContextChooserBodyProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export declare function GenAiChatContextChooserBody({ inputItems, title, titleId, search, selectedIds, onSearchChange, isLoading, hasNextPage, loadNextPage, ariaAttributes, onSelect, closeDropdown }: GenAiChatContextChooserBodyProps): import("react/jsx-runtime").JSX.Element;
|
|
20
22
|
export {};
|
|
21
23
|
//# sourceMappingURL=GenAiChatContextChooserBody.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenAiChatContextChooserBody.d.ts","sourceRoot":"","sources":["../../src/components/GenAiChatContextChooserBody.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GenAiChatContextChooserBody.d.ts","sourceRoot":"","sources":["../../src/components/GenAiChatContextChooserBody.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,MAAM,EAAmB,MAAM,qBAAqB,CAAC;AAiBnE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AA8BvD,KAAK,gCAAgC,GAAG;IACpC,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,EAAE;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,QAAQ,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC9C,aAAa,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,EACxC,UAAU,EACV,KAAK,EACL,OAAO,EACP,MAAM,EACN,WAAW,EACX,cAAc,EACd,SAAiB,EACjB,WAAmB,EACnB,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,aAAa,EAChB,EAAE,gCAAgC,2CAyIlC"}
|
|
@@ -3,6 +3,7 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
|
|
|
3
3
|
import { useCallback, useEffect, useId } from "react";
|
|
4
4
|
import cx from "classnames";
|
|
5
5
|
import { defineMessages, useIntl } from "react-intl";
|
|
6
|
+
import { areObjRefsEqual } from "@gooddata/sdk-model";
|
|
6
7
|
import { useDebouncedState } from "@gooddata/sdk-ui";
|
|
7
8
|
import { DEFAULT_ITEM_HEIGHT, DETAILED_ANNOUNCEMENT_THRESHOLD, Input, NoData, ScopedIdStore, ShortenedText, UiIcon, UiPagedVirtualList, UiSearchResultsAnnouncement, UiSubmenuHeader, isTypingKey, useScopedIdStoreValue, } from "@gooddata/sdk-ui-kit";
|
|
8
9
|
import { getIconByObject } from "./utils/icons.js";
|
|
@@ -30,7 +31,7 @@ const msgs = defineMessages({
|
|
|
30
31
|
id: "gd.gen-ai.context.noDataAvailable",
|
|
31
32
|
},
|
|
32
33
|
});
|
|
33
|
-
export function GenAiChatContextChooserBody({ inputItems, title, titleId, search, onSearchChange, isLoading = false, hasNextPage = false, loadNextPage, ariaAttributes, onSelect, closeDropdown, }) {
|
|
34
|
+
export function GenAiChatContextChooserBody({ inputItems, title, titleId, search, selectedIds, onSearchChange, isLoading = false, hasNextPage = false, loadNextPage, ariaAttributes, onSelect, closeDropdown, }) {
|
|
34
35
|
const intl = useIntl();
|
|
35
36
|
const listboxId = useId();
|
|
36
37
|
const [searchString, setSearchString, debouncedSearch] = useDebouncedState(search, SEARCH_DEBOUNCE_MS);
|
|
@@ -76,10 +77,12 @@ export function GenAiChatContextChooserBody({ inputItems, title, titleId, search
|
|
|
76
77
|
] })) : null, shouldShowPagedList ? (_jsx(ScopedIdStore, { value: scopedIdStoreValue, children: _jsx(UiPagedVirtualList, { maxHeight: listMaxHeight, items: inputItems, itemHeight: DEFAULT_ITEM_HEIGHT, itemsGap: 0, itemPadding: 0, skeletonItemsCount: skeletonItemsCount, isLoading: isLoading, hasNextPage: hasNextPage, loadNextPage: loadNextPage, representAs: "listbox", closeDropdown: closeDropdown, onKeyDownConfirm: handleSelect, listboxProps: {
|
|
77
78
|
id: listboxId,
|
|
78
79
|
"aria-label": intl.formatMessage(msgs.listAriaLabel),
|
|
79
|
-
}, children: (item) => _jsx(ContextChooserItem, { item: item, onSelect: () => handleSelect(item) }) }) })) : (_jsx(NoData, { hasNoMatchingData: hasNoMatchingData, notFoundLabel: intl.formatMessage(msgs.noMatchingData), noDataLabel: intl.formatMessage(msgs.noDataAvailable) }))] }));
|
|
80
|
+
}, children: (item) => (_jsx(ContextChooserItem, { item: item, selected: selectedIds?.some((r) => areObjRefsEqual(r, item.ref)), onSelect: () => handleSelect(item) })) }) })) : (_jsx(NoData, { hasNoMatchingData: hasNoMatchingData, notFoundLabel: intl.formatMessage(msgs.noMatchingData), noDataLabel: intl.formatMessage(msgs.noDataAvailable) }))] }));
|
|
80
81
|
}
|
|
81
|
-
function ContextChooserItem({ item, onSelect }) {
|
|
82
|
+
function ContextChooserItem({ item, selected, onSelect, }) {
|
|
82
83
|
const icon = getIconByObject(item);
|
|
83
|
-
return (_jsxs("div", { className: "gd-list-item",
|
|
84
|
+
return (_jsxs("div", { className: cx("gd-list-item", {
|
|
85
|
+
"gd-list-item--selected": selected,
|
|
86
|
+
}), onClick: onSelect, "aria-selected": selected, children: [icon.iconBefore ? _jsx(UiIcon, { size: 16, type: icon.iconBefore, color: icon.iconColor }) : null, _jsx(ShortenedText, { ellipsisPosition: "end", children: item.title })
|
|
84
87
|
] }));
|
|
85
88
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type IChatConversationLocal } from "../model.js";
|
|
2
|
+
import type { IGenAIAssistantSlots } from "./customized/types.js";
|
|
2
3
|
import { type GenAiStoreProps } from "./GenAiStore.js";
|
|
3
4
|
/**
|
|
4
5
|
* Properties for the GenAIConversations component.
|
|
@@ -18,6 +19,10 @@ export type GenAIConversationsProps = Omit<GenAiStoreProps, "children"> & {
|
|
|
18
19
|
* Additional class name applied to the root element.
|
|
19
20
|
*/
|
|
20
21
|
className?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Customizations for the Gen AI assistant.
|
|
24
|
+
*/
|
|
25
|
+
slots?: IGenAIAssistantSlots;
|
|
21
26
|
};
|
|
22
27
|
/**
|
|
23
28
|
* UI component that renders the Gen AI assistant.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenAiConversations.d.ts","sourceRoot":"","sources":["../../src/components/GenAiConversations.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"GenAiConversations.d.ts","sourceRoot":"","sources":["../../src/components/GenAiConversations.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAY1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGnE;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,GAAG;IACtE;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CAAC,YAAY,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACtE;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,oBAAoB,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CAiDhE"}
|
|
@@ -26,7 +26,7 @@ export function GenAIConversations(props) {
|
|
|
26
26
|
return (_jsx(IntlWrapper, { locale: locale, children: _jsx(GenAiStore, { providedStore: providedStore, backend: effectiveBackend, workspace: effectiveWorkspace, onDispatcher: onDispatcher, eventHandlers: eventHandlers, allowNativeLinks: allowNativeLinks, onLinkClick: onLinkClick, settings: settings, catalogItems: catalogItems, isPreview: isPreview, excludeTags: excludeTags, includeTags: includeTags, colorPalette: colorPalette, objectTypes: objectTypes, children: _jsx(BackendProvider, { backend: effectiveBackend, children: _jsx(WorkspaceProvider, { workspace: effectiveWorkspace, children: _jsx(PermissionsProvider, { children: _jsx(GenAIConversationsContent, { ...props }) }) }) }) }) }));
|
|
27
27
|
}
|
|
28
28
|
function GenAIConversationsContent(props) {
|
|
29
|
-
const { catalogItems, className, onConversationSelect = noop } = props;
|
|
29
|
+
const { catalogItems, className, onConversationSelect = noop, slots } = props;
|
|
30
30
|
const dispatch = useDispatch();
|
|
31
31
|
const settings = useSelector(settingsSelector);
|
|
32
32
|
const { loading } = usePermissions();
|
|
@@ -46,5 +46,5 @@ function GenAIConversationsContent(props) {
|
|
|
46
46
|
dispatch(setCurrentConversationAction({ conversation }));
|
|
47
47
|
onConversationSelect(conversation);
|
|
48
48
|
}, [dispatch, onConversationSelect]);
|
|
49
|
-
return (_jsx(ConfigProvider, { catalogItems: catalogItems, allowNativeLinks: false, canFullControl: false, canManage: false, canAnalyze: false, children: _jsx(CustomizationProvider, { children: _jsx(GenAIChatConversations, { wrapper: _jsx("div", { className: classNames }), onSelect: onSelectConversation }) }) }));
|
|
49
|
+
return (_jsx(ConfigProvider, { catalogItems: catalogItems, allowNativeLinks: false, canFullControl: false, canManage: false, canAnalyze: false, children: _jsx(CustomizationProvider, { slots: slots, children: _jsx(GenAIChatConversations, { wrapper: _jsx("div", { className: classNames }), onSelect: onSelectConversation }) }) }));
|
|
50
50
|
}
|
package/esm/components/Input.js
CHANGED
|
@@ -113,7 +113,7 @@ function InputComponent({ autofocus = false, canManage, canAnalyze, targetRef })
|
|
|
113
113
|
"gd-gen-ai-chat__input--no-agents": hasNoAgents,
|
|
114
114
|
}), children: _jsxs("div", { className: "gd-gen-ai-chat__input__content", children: [
|
|
115
115
|
_jsx(HintText, { focused: focused, where: "top" }), _jsxs("div", { className: "gd-gen-ai-chat__input__container", children: [
|
|
116
|
-
_jsx("div", { className: "gd-gen-ai-chat__input__context", onMouseDown: handleContextMouseDown, children: _jsx(GenAIChatContextIndicator, {
|
|
116
|
+
_jsx("div", { className: "gd-gen-ai-chat__input__context", onMouseDown: handleContextMouseDown, children: _jsx(GenAIChatContextIndicator, { onUpdate: handleOnFocus }) }), _jsx("div", { ref: targetRef, onFocus: handleOnFocus }), _jsx("div", { className: "gd-gen-ai-chat__input__text", ...ref, children: _jsx(SyntaxHighlightingInput, { className: "gd-gen-ai-chat__input__mc", placeholder: intl.formatMessage(msgs.placeholder), label: isMac ? intl.formatMessage(msgs.labelMac) : intl.formatMessage(msgs.labelWin), value: value, autocompletion: {
|
|
117
117
|
aboveCursor: true,
|
|
118
118
|
whenTyping: true,
|
|
119
119
|
whenTypingDelay: 300,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Messages.d.ts","sourceRoot":"","sources":["../../src/components/Messages.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Messages.d.ts","sourceRoot":"","sources":["../../src/components/Messages.tsx"],"names":[],"mappings":"AAkCA,KAAK,sBAAsB,GAAG;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,wBAAgB,QAAQ,CAAC,EAAE,YAAY,EAAE,EAAE,sBAAsB,2CAmDhE"}
|
|
@@ -9,15 +9,13 @@ import { agentSwitchingActiveSelector, catalogItemsSelector, } from "../store/ch
|
|
|
9
9
|
import { asyncProcessSelector, conversationMessagesSelector, conversationSelector, messagesSelector, } from "../store/messages/messagesSelectors.js";
|
|
10
10
|
import { ChatSkeleton } from "./ChatSkeleton.js";
|
|
11
11
|
import { parseReferences } from "./completion/references.js";
|
|
12
|
-
import { useCustomization } from "./
|
|
12
|
+
import { useCustomization } from "./CustomizationContext.js";
|
|
13
13
|
import { useFullscreenCheck } from "./hooks/useFullscreenCheck.js";
|
|
14
|
-
import { AssistantItemComponent } from "./messages/AssistantItem.js";
|
|
15
14
|
import { AssistantMessageComponent } from "./messages/AssistantMessage.js";
|
|
16
15
|
import { ItemsGroup } from "./messages/ItemsGroup.js";
|
|
17
16
|
import { useMessageScroller } from "./messages/MessageScroller.js";
|
|
18
17
|
import { SystemItemComponent } from "./messages/SystemItem.js";
|
|
19
18
|
import { ToolItemComponent } from "./messages/ToolItem.js";
|
|
20
|
-
import { UserItemComponent } from "./messages/UserItem.js";
|
|
21
19
|
import { UserMessageComponent } from "./messages/UserMessage.js";
|
|
22
20
|
import { groupMessages } from "./utils/groupUtility.js";
|
|
23
21
|
export function Messages({ initializing }) {
|
|
@@ -63,6 +61,7 @@ function ConversationMessages({ messages, catalogItems }) {
|
|
|
63
61
|
});
|
|
64
62
|
}, [messages, catalogItems]);
|
|
65
63
|
const groups = useMemo(() => groupMessages(currentMessages), [currentMessages]);
|
|
64
|
+
const { UserMessageComponent, AssistantMessageComponent } = useCustomization();
|
|
66
65
|
return (_jsx(_Fragment, { children: groups.map((group, gi) => {
|
|
67
66
|
const previousGroup = groups[gi - 1];
|
|
68
67
|
const isLastGroup = gi === groups.length - 1;
|
|
@@ -70,9 +69,9 @@ function ConversationMessages({ messages, catalogItems }) {
|
|
|
70
69
|
const isLast = isLastGroup && mi === group.messages.length - 1;
|
|
71
70
|
switch (message.role) {
|
|
72
71
|
case "user":
|
|
73
|
-
return (_jsx(
|
|
72
|
+
return (_jsx(UserMessageComponent, { groups: groups, message: message, isLast: isLast }, message.localId));
|
|
74
73
|
case "assistant":
|
|
75
|
-
return (_jsx(
|
|
74
|
+
return (_jsx(AssistantMessageComponent, { groups: groups, message: message, isLast: isLast }, message.localId));
|
|
76
75
|
case "tool":
|
|
77
76
|
return (_jsx(ToolItemComponent, { groups: groups, message: message, isLast: isLast }, message.localId));
|
|
78
77
|
case "system":
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IGenAIAssistantAgentChooserProps } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Default implementation of the AgentChooser slot.
|
|
4
|
+
*
|
|
5
|
+
* @alpha
|
|
6
|
+
*/
|
|
7
|
+
export declare function DefaultAgentChooser(props: IGenAIAssistantAgentChooserProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=AgentChooser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentChooser.d.ts","sourceRoot":"","sources":["../../../src/components/customized/AgentChooser.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,YAAY,CAAC;AAEnE;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gCAAgC,2CAE1E"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// (C) 2026 GoodData Corporation
|
|
3
|
+
import { GenAIChatAgentDropdown } from "../GenAIChatAgentDropdown.js";
|
|
4
|
+
/**
|
|
5
|
+
* Default implementation of the AgentChooser slot.
|
|
6
|
+
*
|
|
7
|
+
* @alpha
|
|
8
|
+
*/
|
|
9
|
+
export function DefaultAgentChooser(props) {
|
|
10
|
+
return _jsx(GenAIChatAgentDropdown, { ...props });
|
|
11
|
+
}
|
|
@@ -2,7 +2,7 @@ import { type IGenAIAssistantAgentItemProps } from "./types.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* Default implementation of the AgentItem slot.
|
|
4
4
|
*
|
|
5
|
-
* @
|
|
5
|
+
* @alpha
|
|
6
6
|
*/
|
|
7
7
|
export declare function DefaultAgentItem(props: IGenAIAssistantAgentItemProps): import("react/jsx-runtime").JSX.Element;
|
|
8
8
|
//# sourceMappingURL=AgentItem.d.ts.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type IGenAIAssistantAssistantMessageProps } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Default implementation of the AssistantMessage slot.
|
|
4
|
+
*
|
|
5
|
+
* @alpha
|
|
6
|
+
*/
|
|
7
|
+
export declare function DefaultAssistantMessage(props: IGenAIAssistantAssistantMessageProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=AssistantMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssistantMessage.d.ts","sourceRoot":"","sources":["../../../src/components/customized/AssistantMessage.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,oCAAoC,EAAE,MAAM,YAAY,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,oCAAoC,2CAElF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// (C) 2024-2026 GoodData Corporation
|
|
3
|
+
import { AssistantItemComponent } from "../messages/AssistantItem.js";
|
|
4
|
+
/**
|
|
5
|
+
* Default implementation of the AssistantMessage slot.
|
|
6
|
+
*
|
|
7
|
+
* @alpha
|
|
8
|
+
*/
|
|
9
|
+
export function DefaultAssistantMessage(props) {
|
|
10
|
+
return _jsx(AssistantItemComponent, { ...props });
|
|
11
|
+
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { type IGenAIAssistantDisclaimerProps } from "./types.js";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Default implementation of the Disclaimer slot.
|
|
4
|
+
*
|
|
5
|
+
* @alpha
|
|
4
6
|
*/
|
|
5
7
|
export declare function DefaultDisclaimer(_props: IGenAIAssistantDisclaimerProps): import("react/jsx-runtime").JSX.Element;
|
|
6
8
|
//# sourceMappingURL=Disclaimer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Disclaimer.d.ts","sourceRoot":"","sources":["../../../src/components/customized/Disclaimer.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAEjE
|
|
1
|
+
{"version":3,"file":"Disclaimer.d.ts","sourceRoot":"","sources":["../../../src/components/customized/Disclaimer.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAEjE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,8BAA8B,2CAMvE"}
|
|
@@ -3,7 +3,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import { FormattedMessage } from "react-intl";
|
|
4
4
|
import { Typography } from "@gooddata/sdk-ui-kit";
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Default implementation of the Disclaimer slot.
|
|
7
|
+
*
|
|
8
|
+
* @alpha
|
|
7
9
|
*/
|
|
8
10
|
export function DefaultDisclaimer(_props) {
|
|
9
11
|
return (_jsx(Typography, { tagName: "p", className: "gd-gen-ai-chat__disclaimer", children: _jsx(FormattedMessage, { id: "gd.gen-ai.disclaimer" }) }));
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IGenAIAssistantFeedbackProps } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Default implementation of the Feedback slot.
|
|
4
|
+
*
|
|
5
|
+
* @alpha
|
|
6
|
+
*/
|
|
7
|
+
export declare function DefaultFeedback(props: IGenAIAssistantFeedbackProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=Feedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Feedback.d.ts","sourceRoot":"","sources":["../../../src/components/customized/Feedback.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,4BAA4B,2CAElE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// (C) 2024-2026 GoodData Corporation
|
|
3
|
+
import { AssistantItemFeedback } from "../messages/AssistantItemFeedback.js";
|
|
4
|
+
/**
|
|
5
|
+
* Default implementation of the Feedback slot.
|
|
6
|
+
*
|
|
7
|
+
* @alpha
|
|
8
|
+
*/
|
|
9
|
+
export function DefaultFeedback(props) {
|
|
10
|
+
return _jsx(AssistantItemFeedback, { ...props });
|
|
11
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IGenAIAssistantFollowUpButtonsProps } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Default implementation of the FollowUpButtons slot.
|
|
4
|
+
*
|
|
5
|
+
* @alpha
|
|
6
|
+
*/
|
|
7
|
+
export declare function DefaultFollowUpButtons(props: IGenAIAssistantFollowUpButtonsProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=FollowUpButtons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FollowUpButtons.d.ts","sourceRoot":"","sources":["../../../src/components/customized/FollowUpButtons.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,mCAAmC,2CAEhF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// (C) 2026 GoodData Corporation
|
|
3
|
+
import { AssistantItemFollowUpButtons } from "../messages/AssistantItemFollowUpButtons.js";
|
|
4
|
+
/**
|
|
5
|
+
* Default implementation of the FollowUpButtons slot.
|
|
6
|
+
*
|
|
7
|
+
* @alpha
|
|
8
|
+
*/
|
|
9
|
+
export function DefaultFollowUpButtons(props) {
|
|
10
|
+
return _jsx(AssistantItemFollowUpButtons, { ...props });
|
|
11
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IGenAIAssistantFollowUpQuestionProps } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Default implementation of the FollowUpQuestion slot.
|
|
4
|
+
*
|
|
5
|
+
* @alpha
|
|
6
|
+
*/
|
|
7
|
+
export declare function DefaultFollowUpQuestion(props: IGenAIAssistantFollowUpQuestionProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=FollowUpQuestion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FollowUpQuestion.d.ts","sourceRoot":"","sources":["../../../src/components/customized/FollowUpQuestion.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,YAAY,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,oCAAoC,2CAElF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// (C) 2026 GoodData Corporation
|
|
3
|
+
import { AssistantItemFollowUpQuestion } from "../messages/AssistantItemFollowUpQuestion.js";
|
|
4
|
+
/**
|
|
5
|
+
* Default implementation of the FollowUpQuestion slot.
|
|
6
|
+
*
|
|
7
|
+
* @alpha
|
|
8
|
+
*/
|
|
9
|
+
export function DefaultFollowUpQuestion(props) {
|
|
10
|
+
return _jsx(AssistantItemFollowUpQuestion, { ...props });
|
|
11
|
+
}
|
|
@@ -9,11 +9,15 @@ export interface ILandingContentProps {
|
|
|
9
9
|
isSmallScreen?: boolean;
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* Default implementation of the LandingContainer slot.
|
|
13
|
+
*
|
|
14
|
+
* @alpha
|
|
13
15
|
*/
|
|
14
16
|
export declare function DefaultLandingContainer({ children, isBigScreen, isSmallScreen, isFullscreen }: ILandingContentProps): import("react/jsx-runtime").JSX.Element;
|
|
15
17
|
/**
|
|
16
|
-
*
|
|
18
|
+
* Default implementation of the LandingQuestions slot.
|
|
19
|
+
*
|
|
20
|
+
* @alpha
|
|
17
21
|
*/
|
|
18
22
|
export declare function DefaultLandingQuestions({ children, isFullscreen, isBigScreen, isSmallScreen }: ILandingContentProps): import("react/jsx-runtime").JSX.Element;
|
|
19
23
|
//# sourceMappingURL=LandingContainer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LandingContainer.d.ts","sourceRoot":"","sources":["../../../src/components/customized/LandingContainer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED
|
|
1
|
+
{"version":3,"file":"LandingContainer.d.ts","sourceRoot":"","sources":["../../../src/components/customized/LandingContainer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACpC,QAAQ,EACR,WAAW,EACX,aAAa,EACb,YAAY,EACf,EAAE,oBAAoB,2CAYtB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACpC,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,aAAa,EAChB,EAAE,oBAAoB,2CAYtB"}
|
|
@@ -2,7 +2,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
// (C) 2026 GoodData Corporation
|
|
3
3
|
import cx from "classnames";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Default implementation of the LandingContainer slot.
|
|
6
|
+
*
|
|
7
|
+
* @alpha
|
|
6
8
|
*/
|
|
7
9
|
export function DefaultLandingContainer({ children, isBigScreen, isSmallScreen, isFullscreen, }) {
|
|
8
10
|
return (_jsx("div", { className: cx("gd-gen-ai-chat__messages__empty__container", {
|
|
@@ -12,7 +14,9 @@ export function DefaultLandingContainer({ children, isBigScreen, isSmallScreen,
|
|
|
12
14
|
}), children: children }));
|
|
13
15
|
}
|
|
14
16
|
/**
|
|
15
|
-
*
|
|
17
|
+
* Default implementation of the LandingQuestions slot.
|
|
18
|
+
*
|
|
19
|
+
* @alpha
|
|
16
20
|
*/
|
|
17
21
|
export function DefaultLandingQuestions({ children, isFullscreen, isBigScreen, isSmallScreen, }) {
|
|
18
22
|
return (_jsx("div", { className: cx("gd-gen-ai-chat__messages__empty__questions", {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { type IUiButtonProps } from "@gooddata/sdk-ui-kit";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Default implementation of the LandingQuestion slot.
|
|
4
|
+
*
|
|
5
|
+
* @alpha
|
|
4
6
|
*/
|
|
5
7
|
export interface ILandingQuestionProps {
|
|
6
8
|
question: string;
|
|
@@ -9,7 +11,9 @@ export interface ILandingQuestionProps {
|
|
|
9
11
|
title?: string;
|
|
10
12
|
}
|
|
11
13
|
/**
|
|
12
|
-
*
|
|
14
|
+
* Default implementation of the LandingQuestion slot.
|
|
15
|
+
*
|
|
16
|
+
* @alpha
|
|
13
17
|
*/
|
|
14
18
|
export declare function DefaultLandingQuestion({ icon, question, answer, title }: ILandingQuestionProps): import("react/jsx-runtime").JSX.Element;
|
|
15
19
|
//# sourceMappingURL=LandingQuestion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LandingQuestion.d.ts","sourceRoot":"","sources":["../../../src/components/customized/LandingQuestion.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,cAAc,EAAuB,MAAM,sBAAsB,CAAC;AAgBhF
|
|
1
|
+
{"version":3,"file":"LandingQuestion.d.ts","sourceRoot":"","sources":["../../../src/components/customized/LandingQuestion.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,cAAc,EAAuB,MAAM,sBAAsB,CAAC;AAgBhF;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAgB,EAAE,EAAE,qBAAqB,2CAuDzG"}
|
|
@@ -11,7 +11,9 @@ import { setMessagesAction as setMessagesActionCreator } from "../../store/messa
|
|
|
11
11
|
import { escapeMarkdown } from "../utils/markdownUtils.js";
|
|
12
12
|
const disabledTooltip = defineMessage({ id: "gd.gen-ai.agent.unavailable.disabled-tooltip" });
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* Default implementation of the LandingQuestion slot.
|
|
15
|
+
*
|
|
16
|
+
* @alpha
|
|
15
17
|
*/
|
|
16
18
|
export function DefaultLandingQuestion({ icon, question, answer, title = question }) {
|
|
17
19
|
const intl = useIntl();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ComponentType } from "react";
|
|
2
2
|
import { type IGenAIAssistantLandingScreenProps } from "./types.js";
|
|
3
3
|
/**
|
|
4
|
-
* @
|
|
4
|
+
* @alpha
|
|
5
5
|
*/
|
|
6
6
|
export type LandingScreenProps = IGenAIAssistantLandingScreenProps & {
|
|
7
7
|
/**
|
|
@@ -11,7 +11,9 @@ export type LandingScreenProps = IGenAIAssistantLandingScreenProps & {
|
|
|
11
11
|
LandingScreen?: ComponentType;
|
|
12
12
|
};
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* Default implementation of the LandingScreen slot.
|
|
15
|
+
*
|
|
16
|
+
* @alpha
|
|
15
17
|
*/
|
|
16
18
|
export declare function DefaultLandingScreen({ LandingScreen, isBigScreen, isSmallScreen, isFullscreen }: LandingScreenProps): import("react/jsx-runtime").JSX.Element;
|
|
17
19
|
//# sourceMappingURL=LandingScreen.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LandingScreen.d.ts","sourceRoot":"","sources":["../../../src/components/customized/LandingScreen.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAO3C,OAAO,EAAE,KAAK,iCAAiC,EAAE,MAAM,YAAY,CAAC;AAuBpE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,iCAAiC,GAAG;IACjE;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CACjC,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"LandingScreen.d.ts","sourceRoot":"","sources":["../../../src/components/customized/LandingScreen.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAO3C,OAAO,EAAE,KAAK,iCAAiC,EAAE,MAAM,YAAY,CAAC;AAuBpE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,iCAAiC,GAAG;IACjE;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CACjC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EACjC,aAAa,EACb,WAAW,EACX,aAAa,EACb,YAAY,EACf,EAAE,kBAAkB,2CAuCpB"}
|
|
@@ -24,7 +24,9 @@ const quickOptions = [
|
|
|
24
24
|
},
|
|
25
25
|
];
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
27
|
+
* Default implementation of the LandingScreen slot.
|
|
28
|
+
*
|
|
29
|
+
* @alpha
|
|
28
30
|
*/
|
|
29
31
|
export function DefaultLandingScreen({ LandingScreen, isBigScreen, isSmallScreen, isFullscreen, }) {
|
|
30
32
|
const intl = useIntl();
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
2
|
/**
|
|
3
|
-
* @
|
|
3
|
+
* @alpha
|
|
4
4
|
*/
|
|
5
5
|
export interface ILandingTitleProps {
|
|
6
6
|
children: ReactNode;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* Default implementation of the LandingTitle slot.
|
|
10
|
+
*
|
|
11
|
+
* @alpha
|
|
10
12
|
*/
|
|
11
13
|
export declare function DefaultLandingTitle({ children }: ILandingTitleProps): import("react/jsx-runtime").JSX.Element;
|
|
12
14
|
/**
|
|
13
|
-
*
|
|
15
|
+
* Default implementation of the LandingTitleAscent slot.
|
|
16
|
+
*
|
|
17
|
+
* @alpha
|
|
14
18
|
*/
|
|
15
19
|
export declare function DefaultLandingTitleAscent({ children }: ILandingTitleProps): import("react/jsx-runtime").JSX.Element;
|
|
16
20
|
//# sourceMappingURL=LandingTitle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LandingTitle.d.ts","sourceRoot":"","sources":["../../../src/components/customized/LandingTitle.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED
|
|
1
|
+
{"version":3,"file":"LandingTitle.d.ts","sourceRoot":"","sources":["../../../src/components/customized/LandingTitle.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,EAAE,kBAAkB,2CAEnE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,QAAQ,EAAE,EAAE,kBAAkB,2CAEzE"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Default implementation of the LandingTitle slot.
|
|
4
|
+
*
|
|
5
|
+
* @alpha
|
|
4
6
|
*/
|
|
5
7
|
export function DefaultLandingTitle({ children }) {
|
|
6
8
|
return _jsx("h3", { className: "gd-typography gd-typography--h1", children: children });
|
|
7
9
|
}
|
|
8
10
|
/**
|
|
9
|
-
*
|
|
11
|
+
* Default implementation of the LandingTitleAscent slot.
|
|
12
|
+
*
|
|
13
|
+
* @alpha
|
|
10
14
|
*/
|
|
11
15
|
export function DefaultLandingTitleAscent({ children }) {
|
|
12
16
|
return _jsx("span", { className: "gd-gen-ai-chat__messages__empty__h1--accent", children: children });
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type IGenAIAssistantMessageErrorContentProps } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Default implementation of the MessageErrorContent slot.
|
|
4
|
+
*
|
|
5
|
+
* @alpha
|
|
6
|
+
*/
|
|
7
|
+
export declare function DefaultMessageErrorContent(props: IGenAIAssistantMessageErrorContentProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=MessageErrorContent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageErrorContent.d.ts","sourceRoot":"","sources":["../../../src/components/customized/MessageErrorContent.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,uCAAuC,EAAE,MAAM,YAAY,CAAC;AAE1E;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,uCAAuC,2CAExF"}
|