@gooddata/sdk-ui-gen-ai 11.33.0-alpha.4 → 11.33.0-alpha.7
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/esm/components/ConversationDeleteDialog.d.ts +9 -0
- package/esm/components/ConversationDeleteDialog.d.ts.map +1 -0
- package/esm/components/ConversationDeleteDialog.js +18 -0
- package/esm/components/ConversationDeleteDialog.js.map +1 -0
- package/esm/components/GenAIChatConversations.d.ts +17 -0
- package/esm/components/GenAIChatConversations.d.ts.map +1 -0
- package/esm/components/GenAIChatConversations.js +109 -0
- package/esm/components/GenAIChatConversations.js.map +1 -0
- package/esm/components/GenAIChatHeader.d.ts +21 -0
- package/esm/components/GenAIChatHeader.d.ts.map +1 -0
- package/esm/components/GenAIChatHeader.js +32 -0
- package/esm/components/GenAIChatHeader.js.map +1 -0
- package/esm/components/GenAIChatOverlay.d.ts +3 -14
- package/esm/components/GenAIChatOverlay.d.ts.map +1 -1
- package/esm/components/GenAIChatOverlay.js +6 -23
- package/esm/components/GenAIChatOverlay.js.map +1 -1
- package/esm/components/hooks/useHistoryCheck.d.ts +4 -0
- package/esm/components/hooks/useHistoryCheck.d.ts.map +1 -0
- package/esm/components/hooks/useHistoryCheck.js +10 -0
- package/esm/components/hooks/useHistoryCheck.js.map +1 -0
- package/esm/components/utils/conversationGrouper.d.ts +17 -0
- package/esm/components/utils/conversationGrouper.d.ts.map +1 -0
- package/esm/components/utils/conversationGrouper.js +45 -0
- package/esm/components/utils/conversationGrouper.js.map +1 -0
- package/esm/localization/bundles/en-US.localization-bundle.d.ts +56 -0
- package/esm/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/en-US.localization-bundle.js +56 -0
- package/esm/localization/bundles/en-US.localization-bundle.js.map +1 -1
- package/esm/store/chatWindow/chatWindowSelectors.d.ts +1 -0
- package/esm/store/chatWindow/chatWindowSelectors.d.ts.map +1 -1
- package/esm/store/chatWindow/chatWindowSelectors.js +1 -0
- package/esm/store/chatWindow/chatWindowSelectors.js.map +1 -1
- package/esm/store/chatWindow/chatWindowSlice.d.ts +7 -1
- package/esm/store/chatWindow/chatWindowSlice.d.ts.map +1 -1
- package/esm/store/chatWindow/chatWindowSlice.js +5 -1
- package/esm/store/chatWindow/chatWindowSlice.js.map +1 -1
- package/esm/store/messages/messagesSelectors.d.ts +3 -2
- package/esm/store/messages/messagesSelectors.d.ts.map +1 -1
- package/esm/store/messages/messagesSelectors.js +2 -1
- package/esm/store/messages/messagesSelectors.js.map +1 -1
- package/esm/store/messages/messagesSlice.d.ts +19 -5
- package/esm/store/messages/messagesSlice.d.ts.map +1 -1
- package/esm/store/messages/messagesSlice.js +68 -4
- package/esm/store/messages/messagesSlice.js.map +1 -1
- package/esm/store/sideEffects/index.d.ts.map +1 -1
- package/esm/store/sideEffects/index.js +4 -1
- package/esm/store/sideEffects/index.js.map +1 -1
- package/esm/store/sideEffects/onConversationDelete.d.ts +22 -0
- package/esm/store/sideEffects/onConversationDelete.d.ts.map +1 -0
- package/esm/store/sideEffects/onConversationDelete.js +32 -0
- package/esm/store/sideEffects/onConversationDelete.js.map +1 -0
- package/esm/store/sideEffects/onEvent.js +2 -2
- package/esm/store/sideEffects/onEvent.js.map +1 -1
- package/esm/store/sideEffects/onThreadLoad.d.ts +3 -11
- package/esm/store/sideEffects/onThreadLoad.d.ts.map +1 -1
- package/esm/store/sideEffects/onThreadLoad.js +55 -41
- package/esm/store/sideEffects/onThreadLoad.js.map +1 -1
- package/esm/store/sideEffects/onUserMessage.d.ts +7 -2
- package/esm/store/sideEffects/onUserMessage.d.ts.map +1 -1
- package/esm/store/sideEffects/onUserMessage.js +22 -6
- package/esm/store/sideEffects/onUserMessage.js.map +1 -1
- package/esm/utils.d.ts +3 -0
- package/esm/utils.d.ts.map +1 -1
- package/esm/utils.js +5 -0
- package/esm/utils.js.map +1 -1
- package/package.json +20 -20
- package/styles/css/conversations.css +120 -0
- package/styles/css/conversations.css.map +1 -0
- package/styles/css/input.css +8 -0
- package/styles/css/input.css.map +1 -1
- package/styles/css/main.css +119 -8
- package/styles/css/main.css.map +1 -1
- package/styles/css/messages.css +8 -8
- package/styles/css/messages.css.map +1 -1
- package/styles/css/variables.css +8 -1
- package/styles/css/variables.css.map +1 -1
- package/styles/css/window.css +8 -0
- package/styles/css/window.css.map +1 -1
- package/styles/scss/conversations.scss +134 -0
- package/styles/scss/main.scss +1 -0
- package/styles/scss/messages.scss +2 -38
- package/styles/scss/variables.scss +28 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type IChatConversation } from "@gooddata/sdk-backend-spi";
|
|
2
|
+
type ConversationDeleteDialogProps = {
|
|
3
|
+
conversation: IChatConversation;
|
|
4
|
+
onDelete: () => void;
|
|
5
|
+
onClose: () => void;
|
|
6
|
+
};
|
|
7
|
+
export declare function ConversationDeleteDialog({ conversation, onDelete, onClose }: ConversationDeleteDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=ConversationDeleteDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationDeleteDialog.d.ts","sourceRoot":"","sources":["../../src/components/ConversationDeleteDialog.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAUnE,KAAK,6BAA6B,GAAG;IACjC,YAAY,EAAE,iBAAiB,CAAC;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,6BAA6B,2CAsB1G"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// (C) 2026 GoodData Corporation
|
|
3
|
+
import { FormattedMessage, defineMessages, useIntl } from "react-intl";
|
|
4
|
+
import { ConfirmDialog } from "@gooddata/sdk-ui-kit";
|
|
5
|
+
const messages = defineMessages({
|
|
6
|
+
title: { id: "gd.gen-ai.conversations.delete-dialog.title" },
|
|
7
|
+
body: { id: "gd.gen-ai.conversations.delete-dialog.body" },
|
|
8
|
+
submit: { id: "gd.gen-ai.conversations.delete-dialog.submit" },
|
|
9
|
+
cancel: { id: "gd.gen-ai.conversations.delete-dialog.cancel" },
|
|
10
|
+
});
|
|
11
|
+
export function ConversationDeleteDialog({ conversation, onDelete, onClose }) {
|
|
12
|
+
const intl = useIntl();
|
|
13
|
+
return (_jsx(ConfirmDialog, { headline: intl.formatMessage(messages.title), cancelButtonText: intl.formatMessage(messages.cancel), submitButtonText: intl.formatMessage(messages.submit), isPositive: false, onCancel: onClose, onClose: onClose, onSubmit: onDelete, children: _jsx(FormattedMessage, { ...messages.body, values: {
|
|
14
|
+
name: conversation.title ?? conversation.id,
|
|
15
|
+
b: (chunks) => _jsx("b", { children: chunks }),
|
|
16
|
+
} }) }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=ConversationDeleteDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationDeleteDialog.js","sourceRoot":"","sources":["../../src/components/ConversationDeleteDialog.tsx"],"names":[],"mappings":";AAAA,gCAAgC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGvE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC5B,KAAK,EAAE,EAAE,EAAE,EAAE,6CAA6C,EAAE;IAC5D,IAAI,EAAE,EAAE,EAAE,EAAE,4CAA4C,EAAE;IAC1D,MAAM,EAAE,EAAE,EAAE,EAAE,8CAA8C,EAAE;IAC9D,MAAM,EAAE,EAAE,EAAE,EAAE,8CAA8C,EAAE;CACjE,CAAC,CAAC;AAQH,MAAM,UAAU,wBAAwB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAiC,EAAE;IACzG,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,OAAO,CACH,KAAC,aAAa,IACV,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC5C,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EACrD,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EACrD,UAAU,EAAE,KAAK,EACjB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,YAElB,KAAC,gBAAgB,OACT,QAAQ,CAAC,IAAI,EACjB,MAAM,EAAE;gBACJ,IAAI,EAAE,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,EAAE;gBAC3C,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,sBAAI,MAAM,GAAK;aACjC,GACH,GACU,CACnB,CAAC;AAAA,CACL"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type FC } from "react";
|
|
2
|
+
import { setHistoryAction } from "../store/chatWindow/chatWindowSlice.js";
|
|
3
|
+
import { conversationSelector, conversationsSelector } from "../store/messages/messagesSelectors.js";
|
|
4
|
+
import { deleteConversationAction, setCurrentConversationAction } from "../store/messages/messagesSlice.js";
|
|
5
|
+
type GenAIChatConversationsStateProps = {
|
|
6
|
+
conversation: ReturnType<typeof conversationSelector>;
|
|
7
|
+
conversations: ReturnType<typeof conversationsSelector>;
|
|
8
|
+
};
|
|
9
|
+
type GenAIChatConversationsDispatchProps = {
|
|
10
|
+
setHistory: typeof setHistoryAction;
|
|
11
|
+
loadConversation: typeof setCurrentConversationAction;
|
|
12
|
+
deleteConversation: typeof deleteConversationAction;
|
|
13
|
+
};
|
|
14
|
+
export type GenAIChatConversationsProps = GenAIChatConversationsStateProps & GenAIChatConversationsDispatchProps;
|
|
15
|
+
export declare const GenAIChatConversations: FC;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=GenAIChatConversations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenAIChatConversations.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatConversations.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,EAA0D,MAAM,OAAO,CAAC;AAgBxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AACrG,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAQ5G,KAAK,gCAAgC,GAAG;IACpC,YAAY,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;IACtD,aAAa,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;CAC3D,CAAC;AAEF,KAAK,mCAAmC,GAAG;IACvC,UAAU,EAAE,OAAO,gBAAgB,CAAC;IACpC,gBAAgB,EAAE,OAAO,4BAA4B,CAAC;IACtD,kBAAkB,EAAE,OAAO,wBAAwB,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,gCAAgC,GACtE,mCAAmC,CAAC;AAuLxC,eAAO,MAAM,sBAAsB,EAAE,EAGH,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// (C) 2026 GoodData Corporation
|
|
3
|
+
import { useCallback, useMemo, useRef, useState } from "react";
|
|
4
|
+
import cx from "classnames";
|
|
5
|
+
import { FormattedMessage, useIntl } from "react-intl";
|
|
6
|
+
import { connect } from "react-redux";
|
|
7
|
+
import { DefaultUiMenuInteractiveItemWrapper, UiDrawer, UiIcon, UiIconButton, UiMenu, } from "@gooddata/sdk-ui-kit";
|
|
8
|
+
import { setHistoryAction } from "../store/chatWindow/chatWindowSlice.js";
|
|
9
|
+
import { conversationSelector, conversationsSelector } from "../store/messages/messagesSelectors.js";
|
|
10
|
+
import { deleteConversationAction, setCurrentConversationAction } from "../store/messages/messagesSlice.js";
|
|
11
|
+
import { generateTemporaryTitle } from "../utils.js";
|
|
12
|
+
import { ConversationDeleteDialog } from "./ConversationDeleteDialog.js";
|
|
13
|
+
import { useFullscreenCheck } from "./hooks/useFullscreenCheck.js";
|
|
14
|
+
import { useHistoryCheck } from "./hooks/useHistoryCheck.js";
|
|
15
|
+
import { ConversationDateGroup, groupConversationsByDate } from "./utils/conversationGrouper.js";
|
|
16
|
+
function GenAIChatConversationsComponent({ setHistory, deleteConversation, loadConversation, conversations, conversation: currentConversation, }) {
|
|
17
|
+
const ref = useRef(undefined);
|
|
18
|
+
const intl = useIntl();
|
|
19
|
+
const { isFullscreen, isSmallScreen } = useFullscreenCheck();
|
|
20
|
+
const { isHistory } = useHistoryCheck();
|
|
21
|
+
const [conversationToDelete, setConversationToDelete] = useState();
|
|
22
|
+
const groupedConversations = useMemo(() => groupConversationsByDate(conversations), [conversations]);
|
|
23
|
+
const menuItems = useMemo(() => groupedConversations.map((group) => ({
|
|
24
|
+
type: "group",
|
|
25
|
+
id: group.group,
|
|
26
|
+
stringTitle: getConversationGroupLabel(group.group, intl),
|
|
27
|
+
data: group.group,
|
|
28
|
+
subItems: group.conversations.map((conversation) => ({
|
|
29
|
+
type: "interactive",
|
|
30
|
+
id: conversation.id,
|
|
31
|
+
stringTitle: conversation.title ?? "",
|
|
32
|
+
data: conversation,
|
|
33
|
+
iconRight: (_jsx("div", { className: "gd-gen-ai-chat__window__conversations__list__delete-button", children: _jsx(UiIconButton, { isDesctructive: true, size: "xsmall", variant: "tertiary", label: intl.formatMessage({
|
|
34
|
+
id: "gd.gen-ai.conversations.delete-button.aria-label",
|
|
35
|
+
}), onClick: (event) => {
|
|
36
|
+
event.preventDefault();
|
|
37
|
+
event.stopPropagation();
|
|
38
|
+
setConversationToDelete(conversation);
|
|
39
|
+
}, tabIndex: -1, icon: "trash" }) })),
|
|
40
|
+
isSelected: currentConversation === "new" ? false : conversation.id === currentConversation?.id,
|
|
41
|
+
})),
|
|
42
|
+
})), [groupedConversations, intl, currentConversation]);
|
|
43
|
+
const handleDeleteCancel = useCallback(() => {
|
|
44
|
+
setConversationToDelete(undefined);
|
|
45
|
+
}, []);
|
|
46
|
+
const handleSelect = useCallback((conversation) => {
|
|
47
|
+
loadConversation({ conversation });
|
|
48
|
+
setHistory({ isHistory: false });
|
|
49
|
+
}, [loadConversation, setHistory]);
|
|
50
|
+
const handleDeleteSubmit = useCallback(() => {
|
|
51
|
+
if (conversationToDelete) {
|
|
52
|
+
deleteConversation({ conversationId: conversationToDelete.id });
|
|
53
|
+
}
|
|
54
|
+
setConversationToDelete(undefined);
|
|
55
|
+
}, [conversationToDelete, deleteConversation]);
|
|
56
|
+
return (_jsxs(_Fragment, { children: [
|
|
57
|
+
_jsx("div", { className: "gd-gen-ai-chat__window__drawer", ref: ref }), _jsx(UiDrawer, { anchor: "left", showCloseButton: true, open: isHistory, node: ref.current, showBackdrop: false, header: _jsx("div", { className: "gd-gen-ai-chat__window__conversations__header", children: intl.formatMessage({ id: "gd.gen-ai.conversations.title" }) }), closeLabel: intl.formatMessage({ id: "gd.gen-ai.conversations.close-label" }), onClickClose: () => setHistory({ isHistory: false }), onClickOutside: () => setHistory({ isHistory: false }), children: _jsxs("div", { className: cx("gd-gen-ai-chat__window__conversations", {
|
|
58
|
+
"gd-gen-ai-chat__window__conversations--isFullscreen": isFullscreen,
|
|
59
|
+
"gd-gen-ai-chat__window__conversations--isSmallScreen": isSmallScreen,
|
|
60
|
+
}), children: [
|
|
61
|
+
_jsx("div", { className: "gd-gen-ai-chat__window__conversations__divider" }), (conversations ?? []).length === 0 ? (_jsxs("div", { className: "gd-gen-ai-chat__window__conversations__empty", children: [
|
|
62
|
+
_jsx(UiIcon, { type: "history2", size: 20, color: "complementary-6" }), _jsx("div", { className: "gd-gen-ai-chat__window__conversations__empty__text", children: _jsx(FormattedMessage, { id: "gd.gen-ai.conversations.empty", values: {
|
|
63
|
+
br: _jsx("br", {}),
|
|
64
|
+
} }) })
|
|
65
|
+
] })) : (_jsx("div", { className: "gd-gen-ai-chat__window__conversations__list", children: _jsx(UiMenu, { onUnhandledKeyDown: (event, { focusedItem }) => {
|
|
66
|
+
if (event.key === "Delete" && focusedItem) {
|
|
67
|
+
event.preventDefault();
|
|
68
|
+
event.stopPropagation();
|
|
69
|
+
setConversationToDelete(focusedItem.data);
|
|
70
|
+
}
|
|
71
|
+
}, InteractiveItemWrapper: (props) => {
|
|
72
|
+
const data = props.item.data;
|
|
73
|
+
return (_jsx("div", { className: cx("gd-gen-ai-chat__window__conversations__list__item", {
|
|
74
|
+
generatingTitle: !data.title,
|
|
75
|
+
}), children: _jsx(DefaultUiMenuInteractiveItemWrapper, { ...props, item: {
|
|
76
|
+
...props.item,
|
|
77
|
+
stringTitle: data.title ?? generateTemporaryTitle(intl, data),
|
|
78
|
+
} }) }));
|
|
79
|
+
}, items: menuItems, onSelect: (item, event) => {
|
|
80
|
+
handleSelect(item.data);
|
|
81
|
+
event.stopPropagation();
|
|
82
|
+
event.preventDefault();
|
|
83
|
+
}, shouldCloseOnSelect: false, size: "small", ariaAttributes: {
|
|
84
|
+
id: "gd-gen-ai-conversations-menu",
|
|
85
|
+
"aria-label": intl.formatMessage({ id: "gd.gen-ai.conversations.title" }),
|
|
86
|
+
} }) }))] }) }), conversationToDelete ? (_jsx(ConversationDeleteDialog, { conversation: conversationToDelete, onClose: handleDeleteCancel, onDelete: handleDeleteSubmit })) : null] }));
|
|
87
|
+
}
|
|
88
|
+
const mapStateToProps = (state) => ({
|
|
89
|
+
conversation: conversationSelector(state),
|
|
90
|
+
conversations: conversationsSelector(state),
|
|
91
|
+
});
|
|
92
|
+
const mapDispatchToProps = {
|
|
93
|
+
setHistory: setHistoryAction,
|
|
94
|
+
deleteConversation: deleteConversationAction,
|
|
95
|
+
loadConversation: setCurrentConversationAction,
|
|
96
|
+
};
|
|
97
|
+
export const GenAIChatConversations = connect(mapStateToProps, mapDispatchToProps)(GenAIChatConversationsComponent);
|
|
98
|
+
function getConversationGroupLabel(group, intl) {
|
|
99
|
+
switch (group) {
|
|
100
|
+
case ConversationDateGroup.TODAY:
|
|
101
|
+
return intl.formatMessage({ id: "gd.gen-ai.conversations.group.today" });
|
|
102
|
+
case ConversationDateGroup.LAST_7_DAYS:
|
|
103
|
+
return intl.formatMessage({ id: "gd.gen-ai.conversations.group.last-7-days" });
|
|
104
|
+
case ConversationDateGroup.OLDER:
|
|
105
|
+
default:
|
|
106
|
+
return intl.formatMessage({ id: "gd.gen-ai.conversations.group.older" });
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=GenAIChatConversations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenAIChatConversations.js","sourceRoot":"","sources":["../../src/components/GenAIChatConversations.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type FC } from "react";
|
|
2
|
+
import { settingsSelector } from "../store/chatWindow/chatWindowSelectors.js";
|
|
3
|
+
import { setFullscreenAction, setHistoryAction } from "../store/chatWindow/chatWindowSlice.js";
|
|
4
|
+
import { clearThreadAction, startNewConversationAction } from "../store/messages/messagesSlice.js";
|
|
5
|
+
type GenAIChatHeaderOwnProps = {
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
};
|
|
8
|
+
type GenAIChatHeaderStateProps = {
|
|
9
|
+
hasMessages: boolean;
|
|
10
|
+
settings: ReturnType<typeof settingsSelector>;
|
|
11
|
+
};
|
|
12
|
+
type GenAIChatHeaderDispatchProps = {
|
|
13
|
+
clearThread: typeof clearThreadAction;
|
|
14
|
+
setFullscreen: typeof setFullscreenAction;
|
|
15
|
+
setHistory: typeof setHistoryAction;
|
|
16
|
+
startNewConversation: typeof startNewConversationAction;
|
|
17
|
+
};
|
|
18
|
+
export type GenAIChatHeaderProps = GenAIChatHeaderOwnProps & GenAIChatHeaderStateProps & GenAIChatHeaderDispatchProps;
|
|
19
|
+
export declare const GenAIChatHeader: FC<GenAIChatHeaderOwnProps>;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=GenAIChatHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenAIChatHeader.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAKhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE/F,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAKnG,KAAK,uBAAuB,GAAG;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;CACjD,CAAC;AAEF,KAAK,4BAA4B,GAAG;IAChC,WAAW,EAAE,OAAO,iBAAiB,CAAC;IACtC,aAAa,EAAE,OAAO,mBAAmB,CAAC;IAC1C,UAAU,EAAE,OAAO,gBAAgB,CAAC;IACpC,oBAAoB,EAAE,OAAO,0BAA0B,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,uBAAuB,GACtD,yBAAyB,GACzB,4BAA4B,CAAC;AA6EjC,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAG7B,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useIntl } from "react-intl";
|
|
3
|
+
import { connect } from "react-redux";
|
|
4
|
+
import { settingsSelector } from "../store/chatWindow/chatWindowSelectors.js";
|
|
5
|
+
import { setFullscreenAction, setHistoryAction } from "../store/chatWindow/chatWindowSlice.js";
|
|
6
|
+
import { hasMessagesSelector } from "../store/messages/messagesSelectors.js";
|
|
7
|
+
import { clearThreadAction, startNewConversationAction } from "../store/messages/messagesSlice.js";
|
|
8
|
+
import { HeaderIcon } from "./HeaderIcon.js";
|
|
9
|
+
import { useFullscreenCheck } from "./hooks/useFullscreenCheck.js";
|
|
10
|
+
function GenAIChatHeaderComponent({ settings, setHistory, clearThread, hasMessages, setFullscreen, startNewConversation, onClose, }) {
|
|
11
|
+
const intl = useIntl();
|
|
12
|
+
const { isFullscreen, isSmallScreen } = useFullscreenCheck();
|
|
13
|
+
return (_jsxs("div", { className: "gd-gen-ai-chat__window__header", children: [settings?.enableAiAgenticMultiConversations ? (_jsx(HeaderIcon, { icon: "history2", tooltip: intl.formatMessage({ id: "gd.gen-ai.header.conversations-tooltip" }), onClick: () => setHistory({ isHistory: true }) })) : (_jsx(HeaderIcon, { icon: "ccw", tooltip: intl.formatMessage({ id: "gd.gen-ai.header.reset-tooltip" }), onClick: () => clearThread(), disabled: !hasMessages })), _jsx("div", { className: "gd-gen-ai-chat__window__header__gap" }), isSmallScreen ? null : (_jsxs(_Fragment, { children: [settings?.enableAiAgenticMultiConversations ? (_jsx(HeaderIcon, { icon: "edit", tooltip: intl.formatMessage({
|
|
14
|
+
id: "gd.gen-ai.header.new-conversation-tooltip",
|
|
15
|
+
}), onClick: () => startNewConversation(), disabled: !hasMessages })) : null, _jsx(HeaderIcon, { icon: isFullscreen ? "minimize" : "expand", tooltip: isFullscreen
|
|
16
|
+
? intl.formatMessage({ id: "gd.gen-ai.header.contract-tooltip" })
|
|
17
|
+
: intl.formatMessage({ id: "gd.gen-ai.header.expand-tooltip" }), onClick: () => setFullscreen({ isFullscreen: !isFullscreen }) }), _jsx("div", { className: "gd-gen-ai-chat__window__header__divider" })
|
|
18
|
+
] })), _jsx(HeaderIcon, { icon: "cross", tooltip: intl.formatMessage({ id: "gd.gen-ai.header.close-tooltip" }), onClick: onClose })
|
|
19
|
+
] }));
|
|
20
|
+
}
|
|
21
|
+
const mapStateToProps = (state) => ({
|
|
22
|
+
hasMessages: hasMessagesSelector(state),
|
|
23
|
+
settings: settingsSelector(state),
|
|
24
|
+
});
|
|
25
|
+
const mapDispatchToProps = {
|
|
26
|
+
clearThread: clearThreadAction,
|
|
27
|
+
setFullscreen: setFullscreenAction,
|
|
28
|
+
setHistory: setHistoryAction,
|
|
29
|
+
startNewConversation: startNewConversationAction,
|
|
30
|
+
};
|
|
31
|
+
export const GenAIChatHeader = connect(mapStateToProps, mapDispatchToProps)(GenAIChatHeaderComponent);
|
|
32
|
+
//# sourceMappingURL=GenAIChatHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenAIChatHeader.js","sourceRoot":"","sources":["../../src/components/GenAIChatHeader.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,7 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
|
|
3
|
-
import { clearThreadAction } from "../store/messages/messagesSlice.js";
|
|
4
|
-
type GenAIChatOverlayOwnProps = {
|
|
1
|
+
import { type RefObject } from "react";
|
|
2
|
+
export type GenAIChatOverlayProps = {
|
|
5
3
|
returnFocusTo?: RefObject<HTMLElement | null> | string;
|
|
6
4
|
onClose: () => void;
|
|
7
5
|
};
|
|
8
|
-
|
|
9
|
-
hasMessages: boolean;
|
|
10
|
-
};
|
|
11
|
-
type GenAIChatOverlayDispatchProps = {
|
|
12
|
-
clearThread: typeof clearThreadAction;
|
|
13
|
-
setFullscreen: typeof setFullscreenAction;
|
|
14
|
-
};
|
|
15
|
-
export type GenAIChatOverlayProps = GenAIChatOverlayOwnProps & GenAIChatOverlayStateProps & GenAIChatOverlayDispatchProps;
|
|
16
|
-
export declare const GenAIChatOverlay: FC<GenAIChatOverlayOwnProps>;
|
|
17
|
-
export {};
|
|
6
|
+
export declare function GenAIChatOverlay({ onClose, returnFocusTo }: GenAIChatOverlayProps): import("react/jsx-runtime").JSX.Element;
|
|
18
7
|
//# sourceMappingURL=GenAIChatOverlay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenAIChatOverlay.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatOverlay.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"GenAIChatOverlay.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatOverlay.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAYvC,MAAM,MAAM,qBAAqB,GAAG;IAChC,aAAa,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;IACvD,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,qBAAqB,2CA8BjF"}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import cx from "classnames";
|
|
3
3
|
import { useIntl } from "react-intl";
|
|
4
|
-
import { connect } from "react-redux";
|
|
5
4
|
import { Dialog } from "@gooddata/sdk-ui-kit";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { clearThreadAction } from "../store/messages/messagesSlice.js";
|
|
5
|
+
import { GenAIChatConversations } from "./GenAIChatConversations.js";
|
|
6
|
+
import { GenAIChatHeader } from "./GenAIChatHeader.js";
|
|
9
7
|
import { GenAIChatWrapper } from "./GenAIChatWrapper.js";
|
|
10
|
-
import { HeaderIcon } from "./HeaderIcon.js";
|
|
11
8
|
import { useFullscreenCheck } from "./hooks/useFullscreenCheck.js";
|
|
12
|
-
function
|
|
9
|
+
export function GenAIChatOverlay({ onClose, returnFocusTo }) {
|
|
13
10
|
const intl = useIntl();
|
|
14
|
-
const { isFullscreen
|
|
11
|
+
const { isFullscreen } = useFullscreenCheck();
|
|
15
12
|
const classNames = cx("gd-gen-ai-chat__window", {
|
|
16
13
|
"gd-gen-ai-chat__window--fullscreen": isFullscreen,
|
|
17
14
|
});
|
|
@@ -19,21 +16,7 @@ function GenAIChatOverlayComponent({ onClose, returnFocusTo, hasMessages, clearT
|
|
|
19
16
|
title: intl.formatMessage({ id: "gd.gen-ai.dialog.label" }),
|
|
20
17
|
isModal: isFullscreen,
|
|
21
18
|
}, children: [
|
|
22
|
-
|
|
23
|
-
_jsx(HeaderIcon, { icon: "ccw", tooltip: intl.formatMessage({ id: "gd.gen-ai.header.reset-tooltip" }), onClick: () => clearThread(), disabled: !hasMessages }), _jsx("div", { className: "gd-gen-ai-chat__window__header__gap" }), isSmallScreen ? null : (_jsxs(_Fragment, { children: [
|
|
24
|
-
_jsx(HeaderIcon, { icon: isFullscreen ? "minimize" : "expand", tooltip: isFullscreen
|
|
25
|
-
? intl.formatMessage({ id: "gd.gen-ai.header.contract-tooltip" })
|
|
26
|
-
: intl.formatMessage({ id: "gd.gen-ai.header.expand-tooltip" }), onClick: () => setFullscreen({ isFullscreen: !isFullscreen }) }), _jsx("div", { className: "gd-gen-ai-chat__window__header__divider" })
|
|
27
|
-
] })), _jsx(HeaderIcon, { icon: "cross", tooltip: intl.formatMessage({ id: "gd.gen-ai.header.close-tooltip" }), onClick: onClose })
|
|
28
|
-
] }), _jsx(GenAIChatWrapper, { autofocus: true })
|
|
19
|
+
_jsx(GenAIChatHeader, { onClose: onClose }), _jsx(GenAIChatConversations, {}), _jsx(GenAIChatWrapper, { autofocus: true })
|
|
29
20
|
] }));
|
|
30
21
|
}
|
|
31
|
-
const mapStateToProps = (state) => ({
|
|
32
|
-
hasMessages: hasMessagesSelector(state),
|
|
33
|
-
});
|
|
34
|
-
const mapDispatchToProps = {
|
|
35
|
-
clearThread: clearThreadAction,
|
|
36
|
-
setFullscreen: setFullscreenAction,
|
|
37
|
-
};
|
|
38
|
-
export const GenAIChatOverlay = connect(mapStateToProps, mapDispatchToProps)(GenAIChatOverlayComponent);
|
|
39
22
|
//# sourceMappingURL=GenAIChatOverlay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenAIChatOverlay.js","sourceRoot":"","sources":["../../src/components/GenAIChatOverlay.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"GenAIChatOverlay.js","sourceRoot":"","sources":["../../src/components/GenAIChatOverlay.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAOnE,MAAM,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAyB,EAAE;IAChF,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,EAAE,YAAY,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAE9C,MAAM,UAAU,GAAG,EAAE,CAAC,wBAAwB,EAAE;QAC5C,oCAAoC,EAAE,YAAY;KACrD,CAAC,CAAC;IAEH,OAAO,CACH,MAAC,MAAM,IACH,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,aAAa,EAC5B,qBAAqB,EAAE,CAAC,CAAC,aAAa,EACtC,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAC1D,gBAAgB,EAAE,KAAK,EACvB,aAAa,QACb,mBAAmB,EAAE,KAAK,EAC1B,gBAAgB,EAAE,KAAK,EACvB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,UAAU,EACrB,mBAAmB,EAAE;YACjB,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,wBAAwB,EAAE,CAAC;YAC3D,OAAO,EAAE,YAAY;SACxB;YAED,KAAC,eAAe,IAAC,OAAO,EAAE,OAAO,GAAI,EACrC,KAAC,sBAAsB,KAAG,EAC1B,KAAC,gBAAgB,IAAC,SAAS,SAAG;YACzB,CACZ,CAAC;AAAA,CACL"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHistoryCheck.d.ts","sourceRoot":"","sources":["../../../src/components/hooks/useHistoryCheck.ts"],"names":[],"mappings":"AAMA,wBAAgB,eAAe;;EAM9B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
import { useSelector } from "react-redux";
|
|
3
|
+
import { isHistorySelector } from "../../store/chatWindow/chatWindowSelectors.js";
|
|
4
|
+
export function useHistoryCheck() {
|
|
5
|
+
const isHistory = useSelector(isHistorySelector);
|
|
6
|
+
return {
|
|
7
|
+
isHistory,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=useHistoryCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHistoryCheck.js","sourceRoot":"","sources":["../../../src/components/hooks/useHistoryCheck.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAElF,MAAM,UAAU,eAAe,GAAG;IAC9B,MAAM,SAAS,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAEjD,OAAO;QACH,SAAS;KACZ,CAAC;AAAA,CACL"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type IChatConversation } from "@gooddata/sdk-backend-spi";
|
|
2
|
+
export declare enum ConversationDateGroup {
|
|
3
|
+
TODAY = "TODAY",
|
|
4
|
+
LAST_7_DAYS = "LAST_7_DAYS",
|
|
5
|
+
OLDER = "OLDER"
|
|
6
|
+
}
|
|
7
|
+
export type ConversationDateGroupConfig = {
|
|
8
|
+
group: ConversationDateGroup;
|
|
9
|
+
maxAgeDays: number;
|
|
10
|
+
};
|
|
11
|
+
export type ConversationDateBucket = {
|
|
12
|
+
group: ConversationDateGroup;
|
|
13
|
+
conversations: IChatConversation[];
|
|
14
|
+
};
|
|
15
|
+
export declare const DEFAULT_CONVERSATION_DATE_GROUPS: ConversationDateGroupConfig[];
|
|
16
|
+
export declare function groupConversationsByDate(conversations?: IChatConversation[] | undefined, groups?: ConversationDateGroupConfig[], now?: Date): ConversationDateBucket[];
|
|
17
|
+
//# sourceMappingURL=conversationGrouper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversationGrouper.d.ts","sourceRoot":"","sources":["../../../src/components/utils/conversationGrouper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,oBAAY,qBAAqB;IAC7B,KAAK,UAAU;IACf,WAAW,gBAAgB;IAC3B,KAAK,UAAU;CAClB;AAED,MAAM,MAAM,2BAA2B,GAAG;IACtC,KAAK,EAAE,qBAAqB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACjC,KAAK,EAAE,qBAAqB,CAAC;IAC7B,aAAa,EAAE,iBAAiB,EAAE,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,2BAA2B,EAIzE,CAAC;AAEF,wBAAgB,wBAAwB,CACpC,aAAa,GAAE,iBAAiB,EAAE,GAAG,SAAc,EACnD,MAAM,GAAE,2BAA2B,EAAqC,EACxE,GAAG,GAAE,IAAiB,GACvB,sBAAsB,EAAE,CA4B1B"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
export { ConversationDateGroup };
|
|
3
|
+
var ConversationDateGroup;
|
|
4
|
+
(function (ConversationDateGroup) {
|
|
5
|
+
ConversationDateGroup["TODAY"] = "TODAY";
|
|
6
|
+
ConversationDateGroup["LAST_7_DAYS"] = "LAST_7_DAYS";
|
|
7
|
+
ConversationDateGroup["OLDER"] = "OLDER";
|
|
8
|
+
})(ConversationDateGroup || (ConversationDateGroup = {}));
|
|
9
|
+
export const DEFAULT_CONVERSATION_DATE_GROUPS = [
|
|
10
|
+
{ group: ConversationDateGroup.TODAY, maxAgeDays: 0 },
|
|
11
|
+
{ group: ConversationDateGroup.LAST_7_DAYS, maxAgeDays: 6 },
|
|
12
|
+
{ group: ConversationDateGroup.OLDER, maxAgeDays: Number.POSITIVE_INFINITY },
|
|
13
|
+
];
|
|
14
|
+
export function groupConversationsByDate(conversations = [], groups = DEFAULT_CONVERSATION_DATE_GROUPS, now = new Date()) {
|
|
15
|
+
const conversationGroups = new Map();
|
|
16
|
+
groups.forEach((group) => {
|
|
17
|
+
conversationGroups.set(group.group, []);
|
|
18
|
+
});
|
|
19
|
+
const sorted = conversations
|
|
20
|
+
.slice()
|
|
21
|
+
.sort((a, b) => new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime());
|
|
22
|
+
sorted.forEach((conversation) => {
|
|
23
|
+
const updatedAt = new Date(conversation.updatedAt);
|
|
24
|
+
const ageInDays = getAgeInDays(updatedAt, now);
|
|
25
|
+
const targetGroup = groups
|
|
26
|
+
.filter((group) => ageInDays <= group.maxAgeDays)
|
|
27
|
+
.sort((a, b) => a.maxAgeDays - b.maxAgeDays)[0]?.group ?? groups[groups.length - 1].group;
|
|
28
|
+
conversationGroups.get(targetGroup)?.push(conversation);
|
|
29
|
+
});
|
|
30
|
+
return groups
|
|
31
|
+
.map((group) => ({
|
|
32
|
+
group: group.group,
|
|
33
|
+
conversations: conversationGroups.get(group.group) ?? [],
|
|
34
|
+
}))
|
|
35
|
+
.filter((group) => group.conversations.length > 0);
|
|
36
|
+
}
|
|
37
|
+
function getAgeInDays(updatedAt, now) {
|
|
38
|
+
const startOfToday = new Date(now);
|
|
39
|
+
startOfToday.setHours(0, 0, 0, 0);
|
|
40
|
+
const startOfUpdateDay = new Date(updatedAt);
|
|
41
|
+
startOfUpdateDay.setHours(0, 0, 0, 0);
|
|
42
|
+
const msPerDay = 24 * 60 * 60 * 1000;
|
|
43
|
+
return Math.max(0, Math.floor((startOfToday.getTime() - startOfUpdateDay.getTime()) / msPerDay));
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=conversationGrouper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversationGrouper.js","sourceRoot":"","sources":["../../../src/components/utils/conversationGrouper.ts"],"names":[],"mappings":"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"}
|
|
@@ -163,6 +163,14 @@ export declare const en_US: {
|
|
|
163
163
|
text: string;
|
|
164
164
|
crowdinContext: string;
|
|
165
165
|
};
|
|
166
|
+
"gd.gen-ai.header.conversations-tooltip": {
|
|
167
|
+
text: string;
|
|
168
|
+
crowdinContext: string;
|
|
169
|
+
};
|
|
170
|
+
"gd.gen-ai.header.new-conversation-tooltip": {
|
|
171
|
+
text: string;
|
|
172
|
+
crowdinContext: string;
|
|
173
|
+
};
|
|
166
174
|
"gd.gen-ai.header.contract-tooltip": {
|
|
167
175
|
text: string;
|
|
168
176
|
crowdinContext: string;
|
|
@@ -211,6 +219,54 @@ export declare const en_US: {
|
|
|
211
219
|
text: string;
|
|
212
220
|
crowdinContext: string;
|
|
213
221
|
};
|
|
222
|
+
"gd.gen-ai.conversations.close-label": {
|
|
223
|
+
text: string;
|
|
224
|
+
crowdinContext: string;
|
|
225
|
+
};
|
|
226
|
+
"gd.gen-ai.conversations.title": {
|
|
227
|
+
text: string;
|
|
228
|
+
crowdinContext: string;
|
|
229
|
+
};
|
|
230
|
+
"gd.gen-ai.conversations.empty": {
|
|
231
|
+
text: string;
|
|
232
|
+
crowdinContext: string;
|
|
233
|
+
};
|
|
234
|
+
"gd.gen-ai.conversations.group.today": {
|
|
235
|
+
text: string;
|
|
236
|
+
crowdinContext: string;
|
|
237
|
+
};
|
|
238
|
+
"gd.gen-ai.conversations.group.last-7-days": {
|
|
239
|
+
text: string;
|
|
240
|
+
crowdinContext: string;
|
|
241
|
+
};
|
|
242
|
+
"gd.gen-ai.conversations.group.older": {
|
|
243
|
+
text: string;
|
|
244
|
+
crowdinContext: string;
|
|
245
|
+
};
|
|
246
|
+
"gd.gen-ai.conversations.delete-button.aria-label": {
|
|
247
|
+
text: string;
|
|
248
|
+
crowdinContext: string;
|
|
249
|
+
};
|
|
250
|
+
"gd.gen-ai.conversations.delete-dialog.title": {
|
|
251
|
+
text: string;
|
|
252
|
+
crowdinContext: string;
|
|
253
|
+
};
|
|
254
|
+
"gd.gen-ai.conversations.delete-dialog.body": {
|
|
255
|
+
text: string;
|
|
256
|
+
crowdinContext: string;
|
|
257
|
+
};
|
|
258
|
+
"gd.gen-ai.conversations.delete-dialog.submit": {
|
|
259
|
+
text: string;
|
|
260
|
+
crowdinContext: string;
|
|
261
|
+
};
|
|
262
|
+
"gd.gen-ai.conversations.delete-dialog.cancel": {
|
|
263
|
+
text: string;
|
|
264
|
+
crowdinContext: string;
|
|
265
|
+
};
|
|
266
|
+
"gd.chat.conversation.generating-title": {
|
|
267
|
+
text: string;
|
|
268
|
+
crowdinContext: string;
|
|
269
|
+
};
|
|
214
270
|
"gd.gen-ai.state.cancelled": {
|
|
215
271
|
text: string;
|
|
216
272
|
crowdinContext: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en-US.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/en-US.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK
|
|
1
|
+
{"version":3,"file":"en-US.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/en-US.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6ejB,CAAC"}
|
|
@@ -165,6 +165,14 @@ export const en_US = {
|
|
|
165
165
|
"text": "Reset",
|
|
166
166
|
"crowdinContext": "Tooltip for button that resets the AI chatbot conversation"
|
|
167
167
|
},
|
|
168
|
+
"gd.gen-ai.header.conversations-tooltip": {
|
|
169
|
+
"text": "Conversations",
|
|
170
|
+
"crowdinContext": "Tooltip for button that opens the conversation history list"
|
|
171
|
+
},
|
|
172
|
+
"gd.gen-ai.header.new-conversation-tooltip": {
|
|
173
|
+
"text": "New conversation",
|
|
174
|
+
"crowdinContext": "Tooltip for button that starts a brand new conversation"
|
|
175
|
+
},
|
|
168
176
|
"gd.gen-ai.header.contract-tooltip": {
|
|
169
177
|
"text": "Contract",
|
|
170
178
|
"crowdinContext": "Tooltip for button that contracts the AI chatbot interface"
|
|
@@ -213,6 +221,54 @@ export const en_US = {
|
|
|
213
221
|
"text": "Search",
|
|
214
222
|
"crowdinContext": "Title shown above semantic search results."
|
|
215
223
|
},
|
|
224
|
+
"gd.gen-ai.conversations.close-label": {
|
|
225
|
+
"text": "Close conversations",
|
|
226
|
+
"crowdinContext": "Tooltip for button that closes the conversation history list"
|
|
227
|
+
},
|
|
228
|
+
"gd.gen-ai.conversations.title": {
|
|
229
|
+
"text": "Recent Conversations",
|
|
230
|
+
"crowdinContext": "Title shown above the conversation history list"
|
|
231
|
+
},
|
|
232
|
+
"gd.gen-ai.conversations.empty": {
|
|
233
|
+
"text": "No conversations yet.{br}Start a new one now.",
|
|
234
|
+
"crowdinContext": "Message shown when the conversation history list is empty"
|
|
235
|
+
},
|
|
236
|
+
"gd.gen-ai.conversations.group.today": {
|
|
237
|
+
"text": "Today",
|
|
238
|
+
"crowdinContext": "Header for conversations updated today"
|
|
239
|
+
},
|
|
240
|
+
"gd.gen-ai.conversations.group.last-7-days": {
|
|
241
|
+
"text": "Last 7 days",
|
|
242
|
+
"crowdinContext": "Header for conversations updated in the last 7 days"
|
|
243
|
+
},
|
|
244
|
+
"gd.gen-ai.conversations.group.older": {
|
|
245
|
+
"text": "Older",
|
|
246
|
+
"crowdinContext": "Header for conversations older than 7 days"
|
|
247
|
+
},
|
|
248
|
+
"gd.gen-ai.conversations.delete-button.aria-label": {
|
|
249
|
+
"text": "Delete conversation",
|
|
250
|
+
"crowdinContext": "Aria label for button that opens delete confirmation for a conversation in history list"
|
|
251
|
+
},
|
|
252
|
+
"gd.gen-ai.conversations.delete-dialog.title": {
|
|
253
|
+
"text": "Delete conversation?",
|
|
254
|
+
"crowdinContext": "Title of the confirmation dialog for deleting a conversation"
|
|
255
|
+
},
|
|
256
|
+
"gd.gen-ai.conversations.delete-dialog.body": {
|
|
257
|
+
"text": "This conversation <b>{name}</b> will be permanently deleted.",
|
|
258
|
+
"crowdinContext": "Body text of the confirmation dialog for deleting a conversation"
|
|
259
|
+
},
|
|
260
|
+
"gd.gen-ai.conversations.delete-dialog.submit": {
|
|
261
|
+
"text": "Delete",
|
|
262
|
+
"crowdinContext": "Submit button label in conversation delete confirmation dialog"
|
|
263
|
+
},
|
|
264
|
+
"gd.gen-ai.conversations.delete-dialog.cancel": {
|
|
265
|
+
"text": "Cancel",
|
|
266
|
+
"crowdinContext": "Cancel button label in conversation delete confirmation dialog"
|
|
267
|
+
},
|
|
268
|
+
"gd.chat.conversation.generating-title": {
|
|
269
|
+
"text": "Conversation {date}",
|
|
270
|
+
"crowdinContext": "Title shown for a conversation that has not title generated yet"
|
|
271
|
+
},
|
|
216
272
|
"gd.gen-ai.state.cancelled": {
|
|
217
273
|
"text": "Evaluation cancelled…",
|
|
218
274
|
"crowdinContext": "Status message displayed when the AI chatbot's evaluation is cancelled"
|