@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.
Files changed (82) hide show
  1. package/esm/components/ConversationDeleteDialog.d.ts +9 -0
  2. package/esm/components/ConversationDeleteDialog.d.ts.map +1 -0
  3. package/esm/components/ConversationDeleteDialog.js +18 -0
  4. package/esm/components/ConversationDeleteDialog.js.map +1 -0
  5. package/esm/components/GenAIChatConversations.d.ts +17 -0
  6. package/esm/components/GenAIChatConversations.d.ts.map +1 -0
  7. package/esm/components/GenAIChatConversations.js +109 -0
  8. package/esm/components/GenAIChatConversations.js.map +1 -0
  9. package/esm/components/GenAIChatHeader.d.ts +21 -0
  10. package/esm/components/GenAIChatHeader.d.ts.map +1 -0
  11. package/esm/components/GenAIChatHeader.js +32 -0
  12. package/esm/components/GenAIChatHeader.js.map +1 -0
  13. package/esm/components/GenAIChatOverlay.d.ts +3 -14
  14. package/esm/components/GenAIChatOverlay.d.ts.map +1 -1
  15. package/esm/components/GenAIChatOverlay.js +6 -23
  16. package/esm/components/GenAIChatOverlay.js.map +1 -1
  17. package/esm/components/hooks/useHistoryCheck.d.ts +4 -0
  18. package/esm/components/hooks/useHistoryCheck.d.ts.map +1 -0
  19. package/esm/components/hooks/useHistoryCheck.js +10 -0
  20. package/esm/components/hooks/useHistoryCheck.js.map +1 -0
  21. package/esm/components/utils/conversationGrouper.d.ts +17 -0
  22. package/esm/components/utils/conversationGrouper.d.ts.map +1 -0
  23. package/esm/components/utils/conversationGrouper.js +45 -0
  24. package/esm/components/utils/conversationGrouper.js.map +1 -0
  25. package/esm/localization/bundles/en-US.localization-bundle.d.ts +56 -0
  26. package/esm/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
  27. package/esm/localization/bundles/en-US.localization-bundle.js +56 -0
  28. package/esm/localization/bundles/en-US.localization-bundle.js.map +1 -1
  29. package/esm/store/chatWindow/chatWindowSelectors.d.ts +1 -0
  30. package/esm/store/chatWindow/chatWindowSelectors.d.ts.map +1 -1
  31. package/esm/store/chatWindow/chatWindowSelectors.js +1 -0
  32. package/esm/store/chatWindow/chatWindowSelectors.js.map +1 -1
  33. package/esm/store/chatWindow/chatWindowSlice.d.ts +7 -1
  34. package/esm/store/chatWindow/chatWindowSlice.d.ts.map +1 -1
  35. package/esm/store/chatWindow/chatWindowSlice.js +5 -1
  36. package/esm/store/chatWindow/chatWindowSlice.js.map +1 -1
  37. package/esm/store/messages/messagesSelectors.d.ts +3 -2
  38. package/esm/store/messages/messagesSelectors.d.ts.map +1 -1
  39. package/esm/store/messages/messagesSelectors.js +2 -1
  40. package/esm/store/messages/messagesSelectors.js.map +1 -1
  41. package/esm/store/messages/messagesSlice.d.ts +19 -5
  42. package/esm/store/messages/messagesSlice.d.ts.map +1 -1
  43. package/esm/store/messages/messagesSlice.js +68 -4
  44. package/esm/store/messages/messagesSlice.js.map +1 -1
  45. package/esm/store/sideEffects/index.d.ts.map +1 -1
  46. package/esm/store/sideEffects/index.js +4 -1
  47. package/esm/store/sideEffects/index.js.map +1 -1
  48. package/esm/store/sideEffects/onConversationDelete.d.ts +22 -0
  49. package/esm/store/sideEffects/onConversationDelete.d.ts.map +1 -0
  50. package/esm/store/sideEffects/onConversationDelete.js +32 -0
  51. package/esm/store/sideEffects/onConversationDelete.js.map +1 -0
  52. package/esm/store/sideEffects/onEvent.js +2 -2
  53. package/esm/store/sideEffects/onEvent.js.map +1 -1
  54. package/esm/store/sideEffects/onThreadLoad.d.ts +3 -11
  55. package/esm/store/sideEffects/onThreadLoad.d.ts.map +1 -1
  56. package/esm/store/sideEffects/onThreadLoad.js +55 -41
  57. package/esm/store/sideEffects/onThreadLoad.js.map +1 -1
  58. package/esm/store/sideEffects/onUserMessage.d.ts +7 -2
  59. package/esm/store/sideEffects/onUserMessage.d.ts.map +1 -1
  60. package/esm/store/sideEffects/onUserMessage.js +22 -6
  61. package/esm/store/sideEffects/onUserMessage.js.map +1 -1
  62. package/esm/utils.d.ts +3 -0
  63. package/esm/utils.d.ts.map +1 -1
  64. package/esm/utils.js +5 -0
  65. package/esm/utils.js.map +1 -1
  66. package/package.json +20 -20
  67. package/styles/css/conversations.css +120 -0
  68. package/styles/css/conversations.css.map +1 -0
  69. package/styles/css/input.css +8 -0
  70. package/styles/css/input.css.map +1 -1
  71. package/styles/css/main.css +119 -8
  72. package/styles/css/main.css.map +1 -1
  73. package/styles/css/messages.css +8 -8
  74. package/styles/css/messages.css.map +1 -1
  75. package/styles/css/variables.css +8 -1
  76. package/styles/css/variables.css.map +1 -1
  77. package/styles/css/window.css +8 -0
  78. package/styles/css/window.css.map +1 -1
  79. package/styles/scss/conversations.scss +134 -0
  80. package/styles/scss/main.scss +1 -0
  81. package/styles/scss/messages.scss +2 -38
  82. 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":";AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAEnG,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAsBnE,SAAS,wBAAwB,CAAC,EAC9B,QAAQ,EACR,UAAU,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,OAAO,GACY,EAAE;IACrB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAE7D,OAAO,CACH,eAAK,SAAS,EAAC,gCAAgC,aAC1C,QAAQ,EAAE,iCAAiC,CAAC,CAAC,CAAC,CAC3C,KAAC,UAAU,IACP,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,wCAAwC,EAAE,CAAC,EAC7E,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,GAChD,CACL,CAAC,CAAC,CAAC,CACA,KAAC,UAAU,IACP,IAAI,EAAC,KAAK,EACV,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,gCAAgC,EAAE,CAAC,EACrE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,EAC5B,QAAQ,EAAE,CAAC,WAAW,GACxB,CACL,EACD,cAAK,SAAS,EAAC,qCAAqC,GAAO,EAC1D,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACpB,8BACK,QAAQ,EAAE,iCAAiC,CAAC,CAAC,CAAC,CAC3C,KAAC,UAAU,IACP,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC;4BACxB,EAAE,EAAE,2CAA2C;yBAClD,CAAC,EACF,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB,EAAE,EACrC,QAAQ,EAAE,CAAC,WAAW,GACxB,CACL,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,UAAU,IACP,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAC1C,OAAO,EACH,YAAY;4BACR,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,mCAAmC,EAAE,CAAC;4BACjE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,iCAAiC,EAAE,CAAC,EAEvE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC,YAAY,EAAE,CAAC,GAC/D,EACF,cAAK,SAAS,EAAC,yCAAyC,GAAO;oBAChE,CACN,EACD,KAAC,UAAU,IACP,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,gCAAgC,EAAE,CAAC,EACrE,OAAO,EAAE,OAAO,GAClB;YACA,CACT,CAAC;AAAA,CACL;AAED,MAAM,eAAe,GAAG,CAAC,KAAgB,EAA6B,EAAE,CAAC,CAAC;IACtE,WAAW,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACvC,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC;CACpC,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAiC;IACrD,WAAW,EAAE,iBAAiB;IAC9B,aAAa,EAAE,mBAAmB;IAClC,UAAU,EAAE,gBAAgB;IAC5B,oBAAoB,EAAE,0BAA0B;CACnD,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAgC,OAAO,CAC/D,eAAe,EACf,kBAAkB,CACrB,CAAC,wBAAwB,CAAC,CAAC"}
@@ -1,18 +1,7 @@
1
- import { type FC, type RefObject } from "react";
2
- import { setFullscreenAction } from "../store/chatWindow/chatWindowSlice.js";
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
- type GenAIChatOverlayStateProps = {
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,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAE7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAMvE,KAAK,wBAAwB,GAAG;IAC5B,aAAa,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;IACvD,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAC9B,WAAW,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACjC,WAAW,EAAE,OAAO,iBAAiB,CAAC;IACtC,aAAa,EAAE,OAAO,mBAAmB,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,wBAAwB,GACxD,0BAA0B,GAC1B,6BAA6B,CAAC;AA4ElC,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,wBAAwB,CAG9B,CAAC"}
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 { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
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 { setFullscreenAction } from "../store/chatWindow/chatWindowSlice.js";
7
- import { hasMessagesSelector } from "../store/messages/messagesSelectors.js";
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 GenAIChatOverlayComponent({ onClose, returnFocusTo, hasMessages, clearThread, setFullscreen, }) {
9
+ export function GenAIChatOverlay({ onClose, returnFocusTo }) {
13
10
  const intl = useIntl();
14
- const { isFullscreen, isSmallScreen } = useFullscreenCheck();
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
- _jsxs("div", { className: "gd-gen-ai-chat__window__header", children: [
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":"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"}
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,4 @@
1
+ export declare function useHistoryCheck(): {
2
+ isHistory: boolean;
3
+ };
4
+ //# sourceMappingURL=useHistoryCheck.d.ts.map
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqbjB,CAAC"}
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"