@gooddata/sdk-ui-gen-ai 11.53.0 → 11.54.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"GenAIChatContextIndicator.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatContextIndicator.tsx"],"names":[],"mappings":"AAgBA,KAAK,iCAAiC,GAAG;IACrC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,QAAQ,EAAE,EAAE,iCAAiC,kDA2CxF"}
1
+ {"version":3,"file":"GenAIChatContextIndicator.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatContextIndicator.tsx"],"names":[],"mappings":"AA6BA,KAAK,iCAAiC,GAAG;IACrC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,QAAQ,EAAE,EAAE,iCAAiC,kDAuExF"}
@@ -1,13 +1,25 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // (C) 2026 GoodData Corporation
3
- import { useCallback } from "react";
4
- import { useIntl } from "react-intl";
3
+ import { useCallback, useMemo } from "react";
4
+ import { defineMessages, useIntl } from "react-intl";
5
5
  import { useDispatch, useSelector } from "react-redux";
6
- import { UiChip } from "@gooddata/sdk-ui-kit";
6
+ import { UiChip, useIdPrefixed } from "@gooddata/sdk-ui-kit";
7
7
  import { collectContextReferences } from "../context/collectContextReferences.js";
8
8
  import { contextSetupEnabledSelector, userContextSelector } from "../store/chatWindow/chatWindowSelectors.js";
9
9
  import { removeContextReferenceAction } from "../store/chatWindow/chatWindowSlice.js";
10
- import { getIconByType } from "./utils/icons.js";
10
+ import { useContextChangeAnnouncement } from "./hooks/useContextChangeAnnouncement.js";
11
+ import { getIconByType, getTypeLabel } from "./utils/icons.js";
12
+ const msgs = defineMessages({
13
+ untitled: {
14
+ id: "gd.gen-ai.context.untitled",
15
+ },
16
+ remove: {
17
+ id: "gd.gen-ai.context.remove_context",
18
+ },
19
+ groupLabel: {
20
+ id: "gd.gen-ai.context.group.ariaLabel",
21
+ },
22
+ });
11
23
  /**
12
24
  * Shows what ambient context the assistant is answering about — the open dashboard and its live
13
25
  * filters (e.g. "Answering about: Revenue Dashboard · Region: Europe · Q1 2026"). Renders nothing
@@ -18,10 +30,11 @@ import { getIconByType } from "./utils/icons.js";
18
30
  */
19
31
  export function GenAIChatContextIndicator({ onDelete }) {
20
32
  const intl = useIntl();
21
- const emptyReferenceLabel = intl.formatMessage({ id: "gd.gen-ai.context.untitled" });
33
+ const emptyReferenceLabel = intl.formatMessage(msgs.untitled);
34
+ const groupLabelId = useIdPrefixed("context-indicator-label");
22
35
  const isContextSetupEnabled = useSelector(contextSetupEnabledSelector);
23
36
  const context = useSelector(userContextSelector);
24
- const references = collectContextReferences(context, emptyReferenceLabel);
37
+ const references = useMemo(() => collectContextReferences(context, emptyReferenceLabel), [context, emptyReferenceLabel]);
25
38
  const dispatch = useDispatch();
26
39
  const removeContextReference = useCallback((payload) => dispatch(removeContextReferenceAction(payload)), [dispatch]);
27
40
  const onDeleteHandler = useCallback((reference) => {
@@ -30,8 +43,17 @@ export function GenAIChatContextIndicator({ onDelete }) {
30
43
  onDelete?.();
31
44
  };
32
45
  }, [removeContextReference, onDelete]);
33
- if (!isContextSetupEnabled || references.length === 0) {
46
+ const announcement = useContextChangeAnnouncement(references);
47
+ if (!isContextSetupEnabled) {
34
48
  return null;
35
49
  }
36
- return (_jsx("div", { className: "gd-gen-ai-chat__context-indicator", "aria-live": "polite", children: references.map((reference, index) => (_jsx(UiChip, { isDisabled: true, isDeletable: true, ...getIconByType(reference.type), label: reference.title, isExpandable: false, onDelete: onDeleteHandler(reference) }, index))) }));
50
+ return (_jsxs(_Fragment, { children: [references.length > 0 ? (_jsxs(_Fragment, { children: [
51
+ _jsx("span", { className: "sr-only", id: groupLabelId, children: intl.formatMessage(msgs.groupLabel) }), _jsx("div", { className: "gd-gen-ai-chat__context-indicator", role: "group", "aria-labelledby": groupLabelId, children: references.map((reference, index) => (_jsx(UiChip, { isDisabled: true, isDeletable: true, ...getIconByType(reference.type), label: reference.title, isExpandable: false, onDelete: onDeleteHandler(reference), accessibilityConfig: {
52
+ deleteAriaLabel: intl.formatMessage(msgs.remove, {
53
+ title: reference.title,
54
+ }),
55
+ iconBeforeAriaLabel: getTypeLabel(reference.type, intl),
56
+ } }, index))) })
57
+ ] })) : null, _jsx("span", { className: "sr-only", role: "status", "aria-live": "polite", "aria-atomic": "true", children: announcement })
58
+ ] }));
37
59
  }
@@ -30,7 +30,7 @@ export function GenAiChatContextChooser({ onAddContext }) {
30
30
  if (!ambient) {
31
31
  return null;
32
32
  }
33
- return (_jsx("div", { className: "gd-gen-ai-chat__input__context", children: _jsx(Dropdown, { alignPoints: [{ align: "tl bl", offset: { x: 0, y: 0 } }], closeOnEscape: true, fullscreenOnMobile: false, autofocusOnOpen: true, accessibilityConfig: {}, onOpenStateChanged: onOpenStateChanged, renderButton: ({ isOpen, toggleDropdown, accessibilityConfig }) => (_jsx(UiIconButton, { icon: "plus", variant: "tertiary", size: "small", dataTestId: "choose_context", isActive: isOpen, accessibilityConfig: {
33
+ return (_jsx("div", { className: "gd-gen-ai-chat__input__context", children: _jsx(Dropdown, { alignPoints: [{ align: "tl bl", offset: { x: 0, y: 0 } }], closeOnEscape: true, fullscreenOnMobile: false, autofocusOnOpen: true, accessibilityConfig: { popupRole: "dialog" }, onOpenStateChanged: onOpenStateChanged, renderButton: ({ isOpen, toggleDropdown, accessibilityConfig }) => (_jsx(UiIconButton, { icon: "plus", variant: "tertiary", size: "small", dataTestId: "choose_context", isActive: isOpen, accessibilityConfig: {
34
34
  ...accessibilityConfig,
35
35
  ariaLabel: addContextLabel,
36
36
  }, onClick: toggleDropdown, isDisabled: !search && !inputItems.length && !hasNextPage && !isLoading })), renderBody: ({ closeDropdown, ariaAttributes }) => (_jsx(GenAiChatContextChooserBody, { inputItems: inputItems, title: addContextLabel, titleId: titleId, search: search, onSearchChange: setSearch, isLoading: isLoading, hasNextPage: hasNextPage, loadNextPage: loadNextPage, ariaAttributes: ariaAttributes, closeDropdown: closeDropdown, onSelect: (item) => {
@@ -80,6 +80,6 @@ export function GenAiChatContextChooserBody({ inputItems, title, titleId, search
80
80
  }
81
81
  function ContextChooserItem({ item, onSelect }) {
82
82
  const icon = getIconByType(item.type);
83
- return (_jsxs("div", { className: "gd-list-item", title: item.title, onClick: onSelect, children: [icon.iconBefore ? _jsx(UiIcon, { size: 16, type: icon.iconBefore, color: icon.iconColor }) : null, _jsx(ShortenedText, { ellipsisPosition: "end", children: item.title })
83
+ return (_jsxs("div", { className: "gd-list-item", onClick: onSelect, children: [icon.iconBefore ? _jsx(UiIcon, { size: 16, type: icon.iconBefore, color: icon.iconColor }) : null, _jsx(ShortenedText, { ellipsisPosition: "end", children: item.title })
84
84
  ] }));
85
85
  }
@@ -0,0 +1,9 @@
1
+ import { type IGenAIContextObject } from "../../types.js";
2
+ /**
3
+ * Turns each change of the assistant context into one spoken sentence: what was added, what was
4
+ * removed, that the whole context was swapped (the user navigated to another dashboard), or that
5
+ * nothing is left.
6
+ * @internal
7
+ */
8
+ export declare function useContextChangeAnnouncement(references: IGenAIContextObject[]): string;
9
+ //# sourceMappingURL=useContextChangeAnnouncement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useContextChangeAnnouncement.d.ts","sourceRoot":"","sources":["../../../src/components/hooks/useContextChangeAnnouncement.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAmB1D;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAwBtF"}
@@ -0,0 +1,63 @@
1
+ // (C) 2026 GoodData Corporation
2
+ import { useEffect, useRef, useState } from "react";
3
+ import { defineMessages, useIntl } from "react-intl";
4
+ const msgs = defineMessages({
5
+ added: {
6
+ id: "gd.gen-ai.context.announcement.added",
7
+ },
8
+ removed: {
9
+ id: "gd.gen-ai.context.announcement.removed",
10
+ },
11
+ switched: {
12
+ id: "gd.gen-ai.context.announcement.switched",
13
+ },
14
+ empty: {
15
+ id: "gd.gen-ai.context.announcement.empty",
16
+ },
17
+ });
18
+ const ANNOUNCEMENT_DELAY = 250;
19
+ /**
20
+ * Turns each change of the assistant context into one spoken sentence: what was added, what was
21
+ * removed, that the whole context was swapped (the user navigated to another dashboard), or that
22
+ * nothing is left.
23
+ * @internal
24
+ */
25
+ export function useContextChangeAnnouncement(references) {
26
+ const intl = useIntl();
27
+ const [announcement, setAnnouncement] = useState("");
28
+ const previousReferences = useRef(null);
29
+ useEffect(() => {
30
+ const previous = previousReferences.current;
31
+ previousReferences.current = references;
32
+ if (previous === null) {
33
+ return undefined;
34
+ }
35
+ const message = getAnnouncement(previous, references, intl);
36
+ if (!message) {
37
+ return undefined;
38
+ }
39
+ setAnnouncement("");
40
+ const timeout = setTimeout(() => setAnnouncement(message), ANNOUNCEMENT_DELAY);
41
+ return () => clearTimeout(timeout);
42
+ }, [references, intl]);
43
+ return announcement;
44
+ }
45
+ function getAnnouncement(previous, current, intl) {
46
+ const added = current.filter((item) => !previous.some((other) => other.id === item.id));
47
+ const removed = previous.filter((item) => !current.some((other) => other.id === item.id));
48
+ if (added.length === 0 && removed.length === 0) {
49
+ return undefined;
50
+ }
51
+ if (current.length === 0) {
52
+ return intl.formatMessage(msgs.empty);
53
+ }
54
+ if (added.length > 0 && removed.length > 0) {
55
+ return intl.formatMessage(msgs.switched, { titles: joinTitles(current) });
56
+ }
57
+ return added.length > 0
58
+ ? intl.formatMessage(msgs.added, { titles: joinTitles(added) })
59
+ : intl.formatMessage(msgs.removed, { titles: joinTitles(removed) });
60
+ }
61
+ function joinTitles(references) {
62
+ return references.map((reference) => reference.title).join(", ");
63
+ }
@@ -1,7 +1,9 @@
1
+ import { type IntlShape } from "react-intl";
1
2
  import { type IconType, type ThemeColor } from "@gooddata/sdk-ui-kit";
2
3
  import { type IGenAIContextObject } from "../../types.js";
3
4
  export declare function getIconByType(type: IGenAIContextObject["type"]): {
4
5
  iconBefore?: IconType;
5
6
  iconColor?: ThemeColor;
6
7
  };
8
+ export declare function getTypeLabel(type: IGenAIContextObject["type"], intl: IntlShape): string | undefined;
7
9
  //# sourceMappingURL=icons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../src/components/utils/icons.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,wBAAgB,aAAa,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG;IAC9D,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,SAAS,CAAC,EAAE,UAAU,CAAC;CAC1B,CAgBA"}
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../src/components/utils/icons.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAkB,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAW1D,wBAAgB,aAAa,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG;IAC9D,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,SAAS,CAAC,EAAE,UAAU,CAAC;CAC1B,CAgBA;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAUnG"}
@@ -1,4 +1,13 @@
1
1
  // (C) 2026 GoodData Corporation
2
+ import { defineMessages } from "react-intl";
3
+ const msgs = defineMessages({
4
+ typeDashboard: {
5
+ id: "gd.gen-ai.context.type.dashboard",
6
+ },
7
+ typeVisualization: {
8
+ id: "gd.gen-ai.context.type.visualization",
9
+ },
10
+ });
2
11
  export function getIconByType(type) {
3
12
  switch (type) {
4
13
  case "dashboard":
@@ -16,3 +25,14 @@ export function getIconByType(type) {
16
25
  return {};
17
26
  }
18
27
  }
28
+ export function getTypeLabel(type, intl) {
29
+ switch (type) {
30
+ case "dashboard":
31
+ return intl.formatMessage(msgs.typeDashboard);
32
+ case "visualization":
33
+ case "widget":
34
+ return intl.formatMessage(msgs.typeVisualization);
35
+ default:
36
+ return undefined;
37
+ }
38
+ }
@@ -127,6 +127,38 @@ export declare const en_US: {
127
127
  text: string;
128
128
  crowdinContext: string;
129
129
  };
130
+ "gd.gen-ai.context.group.ariaLabel": {
131
+ text: string;
132
+ crowdinContext: string;
133
+ };
134
+ "gd.gen-ai.context.type.dashboard": {
135
+ text: string;
136
+ crowdinContext: string;
137
+ };
138
+ "gd.gen-ai.context.type.visualization": {
139
+ text: string;
140
+ crowdinContext: string;
141
+ };
142
+ "gd.gen-ai.context.announcement.added": {
143
+ text: string;
144
+ crowdinContext: string;
145
+ };
146
+ "gd.gen-ai.context.announcement.removed": {
147
+ text: string;
148
+ crowdinContext: string;
149
+ };
150
+ "gd.gen-ai.context.announcement.switched": {
151
+ text: string;
152
+ crowdinContext: string;
153
+ };
154
+ "gd.gen-ai.context.announcement.empty": {
155
+ text: string;
156
+ crowdinContext: string;
157
+ };
158
+ "gd.gen-ai.context.remove_context": {
159
+ text: string;
160
+ crowdinContext: string;
161
+ };
130
162
  "gd.gen-ai.context.untitled": {
131
163
  text: string;
132
164
  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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiiCjB,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAikCjB,CAAC"}
@@ -129,6 +129,38 @@ export const en_US = {
129
129
  "text": "Close add context",
130
130
  "crowdinContext": "Accessibility label for the button that closes the AI chatbot add-context dialog"
131
131
  },
132
+ "gd.gen-ai.context.group.ariaLabel": {
133
+ "text": "Assistant context",
134
+ "crowdinContext": "Accessible name for the group of chips listing the dashboards and visualizations the AI chatbot answers about"
135
+ },
136
+ "gd.gen-ai.context.type.dashboard": {
137
+ "text": "Dashboard",
138
+ "crowdinContext": "Accessibility label for the icon marking an AI chatbot context item as a dashboard. Read before the item title."
139
+ },
140
+ "gd.gen-ai.context.type.visualization": {
141
+ "text": "Visualization",
142
+ "crowdinContext": "Accessibility label for the icon marking an AI chatbot context item as a visualization. Read before the item title."
143
+ },
144
+ "gd.gen-ai.context.announcement.added": {
145
+ "text": "{titles} added to the assistant context.",
146
+ "crowdinContext": "Screen reader announcement made when items are added to the AI chatbot context. The placeholder is a comma separated list of item titles."
147
+ },
148
+ "gd.gen-ai.context.announcement.removed": {
149
+ "text": "{titles} removed from the assistant context.",
150
+ "crowdinContext": "Screen reader announcement made when items are removed from the AI chatbot context. The placeholder is a comma separated list of item titles."
151
+ },
152
+ "gd.gen-ai.context.announcement.switched": {
153
+ "text": "Assistant context switched to {titles}.",
154
+ "crowdinContext": "Screen reader announcement made when the whole AI chatbot context is replaced, e.g. after navigating to another dashboard. The placeholder is a comma separated list of item titles."
155
+ },
156
+ "gd.gen-ai.context.announcement.empty": {
157
+ "text": "The assistant context is now empty.",
158
+ "crowdinContext": "Screen reader announcement made when the last item is removed from the AI chatbot context"
159
+ },
160
+ "gd.gen-ai.context.remove_context": {
161
+ "text": "Remove {title} from context",
162
+ "crowdinContext": "Accessibility label for the button that removes one item (a dashboard or a visualization) from the AI chatbot context. The placeholder is the item title."
163
+ },
132
164
  "gd.gen-ai.context.untitled": {
133
165
  "text": "Untitled",
134
166
  "crowdinContext": "Label for untitled objects in the AI chatbot context"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-gen-ai",
3
- "version": "11.53.0",
3
+ "version": "11.54.0-alpha.0",
4
4
  "description": "GoodData GenAI SDK",
5
5
  "license": "MIT",
6
6
  "author": "GoodData Corporation",
@@ -57,18 +57,18 @@
57
57
  "reselect": "5.1.1",
58
58
  "tslib": "2.8.1",
59
59
  "uuid": "11.1.1",
60
- "@gooddata/api-client-tiger": "11.53.0",
61
- "@gooddata/sdk-backend-spi": "11.53.0",
62
- "@gooddata/sdk-model": "11.53.0",
63
- "@gooddata/sdk-ui-charts": "11.53.0",
64
- "@gooddata/sdk-ui": "11.53.0",
65
- "@gooddata/sdk-ui-dashboard": "11.53.0",
66
- "@gooddata/sdk-ui-filters": "11.53.0",
67
- "@gooddata/sdk-ui-kit": "11.53.0",
68
- "@gooddata/sdk-ui-pivot": "11.53.0",
69
- "@gooddata/sdk-ui-semantic-search": "11.53.0",
70
- "@gooddata/sdk-ui-theme-provider": "11.53.0",
71
- "@gooddata/util": "11.53.0"
60
+ "@gooddata/sdk-backend-spi": "11.54.0-alpha.0",
61
+ "@gooddata/api-client-tiger": "11.54.0-alpha.0",
62
+ "@gooddata/sdk-ui": "11.54.0-alpha.0",
63
+ "@gooddata/sdk-ui-charts": "11.54.0-alpha.0",
64
+ "@gooddata/sdk-model": "11.54.0-alpha.0",
65
+ "@gooddata/sdk-ui-dashboard": "11.54.0-alpha.0",
66
+ "@gooddata/sdk-ui-filters": "11.54.0-alpha.0",
67
+ "@gooddata/sdk-ui-pivot": "11.54.0-alpha.0",
68
+ "@gooddata/sdk-ui-kit": "11.54.0-alpha.0",
69
+ "@gooddata/sdk-ui-theme-provider": "11.54.0-alpha.0",
70
+ "@gooddata/sdk-ui-semantic-search": "11.54.0-alpha.0",
71
+ "@gooddata/util": "11.54.0-alpha.0"
72
72
  },
73
73
  "devDependencies": {
74
74
  "@microsoft/api-documenter": "^7.17.0",
@@ -111,13 +111,13 @@
111
111
  "typescript": "5.9.3",
112
112
  "vitest": "4.1.8",
113
113
  "vitest-dom": "0.1.1",
114
- "@gooddata/eslint-config": "11.53.0",
115
- "@gooddata/i18n-toolkit": "11.53.0",
116
- "@gooddata/oxlint-config": "11.53.0",
117
- "@gooddata/reference-workspace": "11.53.0",
118
- "@gooddata/sdk-backend-mockingbird": "11.53.0",
119
- "@gooddata/sdk-ui-theme-provider": "11.53.0",
120
- "@gooddata/stylelint-config": "11.53.0"
114
+ "@gooddata/i18n-toolkit": "11.54.0-alpha.0",
115
+ "@gooddata/eslint-config": "11.54.0-alpha.0",
116
+ "@gooddata/oxlint-config": "11.54.0-alpha.0",
117
+ "@gooddata/reference-workspace": "11.54.0-alpha.0",
118
+ "@gooddata/sdk-backend-mockingbird": "11.54.0-alpha.0",
119
+ "@gooddata/sdk-ui-theme-provider": "11.54.0-alpha.0",
120
+ "@gooddata/stylelint-config": "11.54.0-alpha.0"
121
121
  },
122
122
  "peerDependencies": {
123
123
  "react": "^18.0.0 || ^19.0.0",