@gooddata/sdk-ui-kit 11.57.0-alpha.0 → 11.57.0-alpha.2

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 (59) hide show
  1. package/esm/@ui/@types/icon.d.ts +1 -1
  2. package/esm/@ui/@types/icon.d.ts.map +1 -1
  3. package/esm/@ui/UiDropdown/UiDropdown.d.ts.map +1 -1
  4. package/esm/@ui/UiDropdown/UiDropdown.js +8 -7
  5. package/esm/@ui/UiDropdown/types.d.ts +5 -0
  6. package/esm/@ui/UiDropdown/types.d.ts.map +1 -1
  7. package/esm/@ui/UiIcon/icons.d.ts.map +1 -1
  8. package/esm/@ui/UiIcon/icons.js +3 -0
  9. package/esm/@ui/UiPagedVirtualList/UiPagedVirtualList.d.ts +2 -2
  10. package/esm/@ui/UiPagedVirtualList/UiPagedVirtualList.d.ts.map +1 -1
  11. package/esm/@ui/UiTabs/defaultComponents/DefaultUiTabsAllTabs.d.ts.map +1 -1
  12. package/esm/@ui/UiTabs/defaultComponents/DefaultUiTabsAllTabs.js +3 -3
  13. package/esm/@ui/UiTabs/defaultComponents/DefaultUiTabsAllTabsButton.d.ts.map +1 -1
  14. package/esm/@ui/UiTabs/defaultComponents/DefaultUiTabsAllTabsButton.js +4 -2
  15. package/esm/@ui/UiTabs/defaultComponents/DefaultUiTabsTabActions.js +3 -3
  16. package/esm/DescriptionPanel/DescriptionPanel.d.ts +3 -1
  17. package/esm/DescriptionPanel/DescriptionPanel.d.ts.map +1 -1
  18. package/esm/DescriptionPanel/DescriptionPanel.js +2 -2
  19. package/esm/Dialog/CsvDelimiterPicker.js +2 -2
  20. package/esm/List/InsightListItem.d.ts +4 -2
  21. package/esm/List/InsightListItem.d.ts.map +1 -1
  22. package/esm/List/InsightListItem.js +2 -2
  23. package/esm/RichText/RichText.d.ts +7 -1
  24. package/esm/RichText/RichText.d.ts.map +1 -1
  25. package/esm/RichText/RichText.js +5 -5
  26. package/esm/RichText/RichTextWithTooltip.d.ts.map +1 -1
  27. package/esm/RichText/RichTextWithTooltip.js +3 -2
  28. package/esm/RichText/helpers/references.d.ts +5 -0
  29. package/esm/RichText/helpers/references.d.ts.map +1 -1
  30. package/esm/RichText/helpers/references.js +11 -0
  31. package/esm/RichText/hooks/useEvaluatedReferences.d.ts +2 -2
  32. package/esm/RichText/hooks/useEvaluatedReferences.d.ts.map +1 -1
  33. package/esm/RichText/hooks/useEvaluatedReferences.js +5 -3
  34. package/esm/RichText/plugins/rehype-references.d.ts +2 -2
  35. package/esm/RichText/plugins/rehype-references.d.ts.map +1 -1
  36. package/esm/RichText/plugins/rehype-references.js +24 -1
  37. package/esm/index.js +1 -1
  38. package/esm/responsive/interfaces.d.ts +19 -19
  39. package/esm/responsive/interfaces.d.ts.map +1 -1
  40. package/esm/responsive/useMediaQuery.d.ts +2 -1
  41. package/esm/responsive/useMediaQuery.d.ts.map +1 -1
  42. package/esm/responsive/useMediaQuery.js +46 -5
  43. package/esm/sdk-ui-kit.d.ts +40 -24
  44. package/esm/typings/slots.d.ts +1 -1
  45. package/package.json +15 -14
  46. package/styles/css/button.css +26 -26
  47. package/styles/css/button.css.map +1 -1
  48. package/styles/css/form.css +3 -3
  49. package/styles/css/invertableSelect.css +1 -1
  50. package/styles/css/list.css +3 -3
  51. package/styles/css/loadingDots.css +1 -1
  52. package/styles/css/main.css +51 -42
  53. package/styles/css/main.css.map +1 -1
  54. package/styles/css/measureNumberFormat.css +1 -1
  55. package/styles/css/menu.css +3 -3
  56. package/styles/css/richText.css +9 -0
  57. package/styles/css/richText.css.map +1 -1
  58. package/styles/css/syntaxHighlightingInput.css +2 -2
  59. package/styles/scss/richText.scss +11 -0
@@ -4,16 +4,24 @@ import { ClientFormatterFacade } from "@gooddata/number-formatter";
4
4
  import { areObjRefsEqual } from "@gooddata/sdk-model";
5
5
  import { createReference } from "../helpers/references.js";
6
6
  import { REFERENCE_REGEX_MATCH, REFERENCE_REGEX_SPLIT } from "./types.js";
7
- export function rehypeReferences(intl, metrics, separators) {
7
+ export function rehypeReferences(intl, metrics, separators, restrictedReferences) {
8
+ const isRestricted = (ref) => !!restrictedReferences?.some((restricted) => areObjRefsEqual(restricted, ref));
8
9
  return function () {
9
10
  return function (tree) {
10
11
  iterateTree(tree, {
11
12
  onTextNodeReference: (text, ref) => {
13
+ if (isRestricted(ref)) {
14
+ return [createRestrictedMarker(intl, text)];
15
+ }
12
16
  const metric = metrics?.find((m) => areObjRefsEqual(m.ref, ref));
13
17
  const { metricDef } = createMetricValue(intl, text, metric, separators);
14
18
  return [metricDef];
15
19
  },
16
20
  onTextRawReference: (ref) => {
21
+ // markup cannot be nested in a URL or an alt text, so the marker is its word alone
22
+ if (isRestricted(ref)) {
23
+ return intl.formatMessage({ id: "richText.restricted" });
24
+ }
17
25
  const metric = metrics?.find((m) => areObjRefsEqual(m.ref, ref));
18
26
  const { value, formattedValue } = createMetricValue(intl, null, metric, separators);
19
27
  return value === null ? "" : formattedValue;
@@ -23,6 +31,21 @@ export function rehypeReferences(intl, metrics, separators) {
23
31
  };
24
32
  };
25
33
  }
34
+ /**
35
+ * Stands in for a reference the user is not allowed to read. It never names the object, because the
36
+ * reference is the object's identifier; the rest of the text keeps its own values.
37
+ */
38
+ function createRestrictedMarker(intl, text) {
39
+ return {
40
+ type: "element",
41
+ tagName: "span",
42
+ properties: {
43
+ className: "gd-rich-text-metric-restricted gd-icon-lock",
44
+ },
45
+ position: text?.position ?? undefined,
46
+ children: [{ type: "text", value: intl.formatMessage({ id: "richText.restricted" }) }],
47
+ };
48
+ }
26
49
  function iterateTree(node, callbacks) {
27
50
  //Text type
28
51
  if (node.type === "text") {
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // (C) 2020-2026 GoodData Corporation
2
- /* oxlint-disable no-barrel-files/no-barrel-files */
2
+ // oxlint-disable no-barrel-files/no-barrel-files
3
3
  /**
4
4
  * This package provides various UI components used to build GoodData applications (such as buttons, icons, and so on).
5
5
  *
@@ -18,79 +18,79 @@ export type IBreakpointsConfig = {
18
18
  *
19
19
  * @internal
20
20
  */
21
- export interface IMediaQueries {
21
+ export interface IMediaQueries<T> {
22
22
  /**
23
23
  * Is screen classified as smaller than 'sm'?
24
24
  */
25
- "<sm": string;
25
+ "<sm": T;
26
26
  /**
27
27
  * Is screen classified as 'sm' or larger?
28
28
  */
29
- ">=sm": string;
29
+ ">=sm": T;
30
30
  /**
31
31
  * Is screen classified as 'sm'?
32
32
  */
33
- sm: string;
33
+ sm: T;
34
34
  /**
35
35
  * Is screen classified as 'md' or larger?
36
36
  */
37
- ">=md": string;
37
+ ">=md": T;
38
38
  /**
39
39
  * Is screen classified as 'md' or smaller?
40
40
  */
41
- "<=md": string;
41
+ "<=md": T;
42
42
  /**
43
43
  * Is screen classified as 'md'?
44
44
  */
45
- md: string;
45
+ md: T;
46
46
  /**
47
47
  * Is screen classified as 'lg' or larger?
48
48
  */
49
- ">=lg": string;
49
+ ">=lg": T;
50
50
  /**
51
51
  * Is screen classified as 'lg' or smaller?
52
52
  */
53
- "<=lg": string;
53
+ "<=lg": T;
54
54
  /**
55
55
  * Is screen classified as 'lg'?
56
56
  */
57
- lg: string;
57
+ lg: T;
58
58
  /**
59
59
  * Is screen classified as 'xl' or smaller?
60
60
  */
61
- "<=xl": string;
61
+ "<=xl": T;
62
62
  /**
63
63
  * Is screen classified as 'xl' or larger?
64
64
  */
65
- ">=xl": string;
65
+ ">=xl": T;
66
66
  /**
67
67
  * Is screen classified as 'xl'?
68
68
  */
69
- xl: string;
69
+ xl: T;
70
70
  /**
71
71
  * Is screen classified as 'xxl' or larger?
72
72
  */
73
- ">=xxl": string;
73
+ ">=xxl": T;
74
74
  /**
75
75
  * Is screen classified as 'xxl'?
76
76
  */
77
- xxl: string;
77
+ xxl: T;
78
78
  /**
79
79
  * Is screen classified as a mobile device?
80
80
  */
81
- mobileDevice: string;
81
+ mobileDevice: T;
82
82
  /**
83
83
  * Is screen classified as other than mobile device?
84
84
  */
85
- "!mobileDevice": string;
85
+ "!mobileDevice": T;
86
86
  /**
87
87
  * Is screen classified as a desktop device?
88
88
  */
89
- desktop: string;
89
+ desktop: T;
90
90
  /**
91
91
  * Is screen classified as smaller than desktop device?
92
92
  */
93
- "<desktop": string;
93
+ "<desktop": T;
94
94
  }
95
95
  /**
96
96
  * The responsive configuration serves to configure breakpoints and other constants
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/responsive/interfaces.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG;KAC5B,CAAC,IAAI,oBAAoB,GAAG,MAAM;CACtC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC1B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAC9B,WAAW,EAAE,kBAAkB,CAAC;CACnC"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/responsive/interfaces.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG;KAC5B,CAAC,IAAI,oBAAoB,GAAG,MAAM;CACtC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC5B;;OAEG;IACH,KAAK,EAAE,CAAC,CAAC;IAET;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC;IAEV;;OAEG;IACH,EAAE,EAAE,CAAC,CAAC;IAEN;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC;IAEV;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC;IAEV;;OAEG;IACH,EAAE,EAAE,CAAC,CAAC;IAEN;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC;IAEV;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC;IAEV;;OAEG;IACH,EAAE,EAAE,CAAC,CAAC;IAEN;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC;IAEV;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC;IAEV;;OAEG;IACH,EAAE,EAAE,CAAC,CAAC;IAEN;;OAEG;IACH,OAAO,EAAE,CAAC,CAAC;IAEX;;OAEG;IACH,GAAG,EAAE,CAAC,CAAC;IAEP;;OAEG;IACH,YAAY,EAAE,CAAC,CAAC;IAEhB;;OAEG;IACH,eAAe,EAAE,CAAC,CAAC;IAEnB;;OAEG;IACH,OAAO,EAAE,CAAC,CAAC;IAEX;;OAEG;IACH,UAAU,EAAE,CAAC,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAC9B,WAAW,EAAE,kBAAkB,CAAC;CACnC"}
@@ -4,7 +4,8 @@ import { type IMediaQueries } from "./interfaces.js";
4
4
  *
5
5
  * @internal
6
6
  * @param mediaQueryName - media query name to test
7
+ * @param anchor - anchor point for the media query. If provided, the media query will be tested against the anchor point.
7
8
  * @returns boolean
8
9
  */
9
- export declare const useMediaQuery: (mediaQueryName: keyof IMediaQueries) => boolean;
10
+ export declare const useMediaQuery: (mediaQueryName: keyof IMediaQueries<string>, anchor?: number) => boolean;
10
11
  //# sourceMappingURL=useMediaQuery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMediaQuery.d.ts","sourceRoot":"","sources":["../../src/responsive/useMediaQuery.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAmBrD;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,mBAAoB,MAAM,aAAa,KAAG,OAoEnE,CAAC"}
1
+ {"version":3,"file":"useMediaQuery.d.ts","sourceRoot":"","sources":["../../src/responsive/useMediaQuery.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAmCrD;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,mBAAoB,MAAM,aAAa,CAAC,MAAM,CAAC,WAAW,MAAM,KAAG,OA+F5F,CAAC"}
@@ -3,17 +3,33 @@ import { useMediaQuery as useReactResponsiveMediaQuery } from "react-responsive"
3
3
  import { invariant } from "ts-invariant";
4
4
  import { useResponsiveContext } from "./ResponsiveContext.js";
5
5
  const SCREEN = "only screen";
6
- const getQueryMatching = (range) => `${SCREEN} and (min-width:${range.lower}px) and (max-width:${range.upper}px)`;
7
- const getQueryMatchingOrGreater = (range) => `${SCREEN} and (min-width:${range.lower}px)`;
8
- const getQueryMatchingOrSmaller = (range) => `${SCREEN} and (max-width:${range.upper}px)`;
6
+ const getQueryMatching = (range) => {
7
+ return `${SCREEN} and (min-width:${range.lower}px) and (max-width:${range.upper}px)`;
8
+ };
9
+ const getQueryMatchingOrGreater = (range) => {
10
+ return `${SCREEN} and (min-width:${range.lower}px)`;
11
+ };
12
+ const getQueryMatchingOrSmaller = (range) => {
13
+ return `${SCREEN} and (max-width:${range.upper}px)`;
14
+ };
15
+ const getAnchorMatching = (range, anchor = -1) => {
16
+ return range.lower <= anchor && anchor <= range.upper;
17
+ };
18
+ const getAnchorMatchingOrGreater = (range, anchor = -1) => {
19
+ return range.lower <= anchor && anchor >= 0;
20
+ };
21
+ const getAnchorMatchingOrSmaller = (range, anchor = -1) => {
22
+ return range.upper >= anchor && anchor >= 0;
23
+ };
9
24
  /**
10
25
  * Hook, testing whether screen width matches provided media query.
11
26
  *
12
27
  * @internal
13
28
  * @param mediaQueryName - media query name to test
29
+ * @param anchor - anchor point for the media query. If provided, the media query will be tested against the anchor point.
14
30
  * @returns boolean
15
31
  */
16
- export const useMediaQuery = (mediaQueryName) => {
32
+ export const useMediaQuery = (mediaQueryName, anchor) => {
17
33
  const { breakpoints } = useResponsiveContext();
18
34
  const smallRange = {
19
35
  lower: 0,
@@ -68,7 +84,32 @@ export const useMediaQuery = (mediaQueryName) => {
68
84
  desktop: getQueryMatching(desktopRange),
69
85
  "<desktop": getQueryMatching(smallerThanDesktop),
70
86
  };
87
+ const mediaAnchors = {
88
+ "<sm": getAnchorMatching(smallRange, anchor),
89
+ ">=sm": getAnchorMatchingOrGreater(smallRange, anchor),
90
+ sm: getAnchorMatching(smallRange, anchor),
91
+ ">=md": getAnchorMatchingOrGreater(mediumRange, anchor),
92
+ "<=md": getAnchorMatchingOrSmaller(mediumRange, anchor),
93
+ md: getAnchorMatching(mediumRange, anchor),
94
+ ">=lg": getAnchorMatchingOrGreater(largeRange, anchor),
95
+ "<=lg": getAnchorMatchingOrSmaller(largeRange, anchor),
96
+ lg: getAnchorMatching(largeRange, anchor),
97
+ "<=xl": getAnchorMatchingOrSmaller(xlargeRange, anchor),
98
+ ">=xl": getAnchorMatchingOrGreater(xlargeRange, anchor),
99
+ xl: getAnchorMatching(xlargeRange, anchor),
100
+ ">=xxl": getAnchorMatchingOrGreater(xxlargeRange, anchor),
101
+ xxl: getAnchorMatching(xxlargeRange, anchor),
102
+ mobileDevice: getAnchorMatching(mobileRange, anchor),
103
+ "!mobileDevice": getAnchorMatching(notMobileRange, anchor),
104
+ desktop: getAnchorMatching(desktopRange, anchor),
105
+ "<desktop": getAnchorMatching(smallerThanDesktop, anchor),
106
+ };
71
107
  const mediaQuery = mediaQueries[mediaQueryName];
72
108
  invariant(mediaQuery, `Please provide valid media query name! Actual: ${mediaQuery}`);
73
- return useReactResponsiveMediaQuery({ query: mediaQuery });
109
+ const query = useReactResponsiveMediaQuery({ query: mediaQuery });
110
+ const anchored = mediaAnchors[mediaQueryName];
111
+ if (anchor) {
112
+ return anchored;
113
+ }
114
+ return query;
74
115
  };
@@ -2724,7 +2724,7 @@ export declare function IconTreeMap({ className, width, height, color, ariaHidde
2724
2724
  /**
2725
2725
  * @internal
2726
2726
  */
2727
- export declare type IconType = "aiAgent" | "aiAgentDisabled" | "brain" | "brainDisabled" | "check" | "checkCircle" | "certification" | "plus" | "plusCircle" | "sync" | "alert" | "alertPaused" | "close" | "cross" | "edit" | "crossCircle" | "question" | "chevronUp" | "chevronRight" | "chevronDown" | "chevronLeft" | "date" | "navigateUp" | "navigateDown" | "navigateRight" | "navigateLeft" | "download" | "slack" | "expand" | "exclamationCircle" | "infoCircle" | "book" | "visible" | "invisible" | "lock" | "unlock" | "ai" | "aiFill" | "drawer" | "drawerEmpty" | "prohibited" | "dropDown" | "dropRight" | "clock" | "clockPaused" | "questionMark" | "upload" | "expandRectangle" | "file" | "number" | "code" | "user" | "userPlus" | "users" | "magic" | "tab" | "pauseCircle" | "filter" | "timer" | "mail" | "envelope" | "copy" | "rain" | "earth" | "geoCollection" | "geoCollectionUpload" | "minimize" | "shrink" | "copyright" | "ellipsis" | "pencil" | "folder" | "folderSmall" | "folderPlus" | "trash" | "arrowUp" | "arrowRight" | "arrowDown" | "arrowLeft" | "undo" | "redo" | "trendDown" | "trendUp" | "save" | "minus" | "minusCircle" | "percent" | "enter" | "enterRight" | "money" | "ghost" | "warning" | "home" | "settings" | "search" | "university" | "building" | "printer" | "picture" | "visualization" | "dashboard" | "metric" | "fact" | "ldmAttribute" | "ldmKey" | "ldmLabel" | "sharp" | "attribute" | "horn" | "cw" | "ccw" | "table" | "directionColumn" | "directionRow" | "alignLeft" | "alignCenter" | "alignRight" | "alignTop" | "alignMiddle" | "alignBottom" | "bold" | "italic" | "imageContain" | "imageCover" | "imageFill" | "header" | "genai" | "genai2" | "explainai" | "hiddenForAi" | "box" | "ellipsisVertical" | "list" | "drillTo" | "hierarchy" | "history" | "history2" | "thumbsUp" | "thumbsDown" | "send" | "visualizationArea" | "visualizationTable" | "visualizationTreemap" | "visualizationScatter" | "visualizationDonut" | "visualizationHeadline" | "visualizationColumn" | "visualizationLine" | "visualizationPyramid" | "visualizationFunnel" | "visualizationHeatmap" | "visualizationBubble" | "visualizationPie" | "visualizationBar" | "visualizationCombo" | "visualizationBullet" | "visualizationWaterfall" | "visualizationDependencywheel" | "visualizationSankey" | "visualizationPushpin" | "visualizationRepeater" | "visualizationXirr" | "link" | "externalLink" | "click" | "fileXlsx" | "filePptx" | "filePdf" | "fileImage" | "fileCsvFormatted" | "fileCsvRaw" | "aiDocument" | "recommendation" | "streamUp" | "streamDown" | "stream" | "density" | "parameter" | "pin" | "unpin" | "speechBubble" | "pieChart" | "timezone" | "sidePanelCollapse" | "sidePanelExpand";
2727
+ export declare type IconType = "aiAgent" | "aiAgentDisabled" | "brain" | "brainDisabled" | "check" | "checkCircle" | "certification" | "plus" | "plusCircle" | "sync" | "alert" | "alertPaused" | "close" | "cross" | "edit" | "crossCircle" | "question" | "chevronUp" | "chevronRight" | "chevronDown" | "chevronLeft" | "date" | "navigateUp" | "navigateDown" | "navigateRight" | "navigateLeft" | "download" | "slack" | "expand" | "exclamationCircle" | "infoCircle" | "book" | "visible" | "invisible" | "lock" | "unlock" | "ai" | "aiFill" | "drawer" | "drawerEmpty" | "prohibited" | "dropDown" | "dropRight" | "clock" | "clockPaused" | "questionMark" | "upload" | "expandRectangle" | "file" | "number" | "code" | "user" | "userPlus" | "users" | "magic" | "tab" | "pauseCircle" | "filter" | "timer" | "mail" | "envelope" | "copy" | "rain" | "earth" | "geoCollection" | "geoCollectionUpload" | "minimize" | "shrink" | "copyright" | "ellipsis" | "pencil" | "folder" | "folderSmall" | "folderPlus" | "trash" | "arrowUp" | "arrowRight" | "arrowDown" | "arrowLeft" | "levelUp" | "undo" | "redo" | "trendDown" | "trendUp" | "save" | "minus" | "minusCircle" | "percent" | "enter" | "enterRight" | "money" | "ghost" | "warning" | "home" | "settings" | "search" | "university" | "building" | "printer" | "picture" | "visualization" | "dashboard" | "metric" | "fact" | "ldmAttribute" | "ldmKey" | "ldmLabel" | "sharp" | "attribute" | "horn" | "cw" | "ccw" | "table" | "directionColumn" | "directionRow" | "alignLeft" | "alignCenter" | "alignRight" | "alignTop" | "alignMiddle" | "alignBottom" | "bold" | "italic" | "imageContain" | "imageCover" | "imageFill" | "header" | "genai" | "genai2" | "explainai" | "hiddenForAi" | "box" | "ellipsisVertical" | "list" | "drillTo" | "hierarchy" | "history" | "history2" | "thumbsUp" | "thumbsDown" | "send" | "visualizationArea" | "visualizationTable" | "visualizationTreemap" | "visualizationScatter" | "visualizationDonut" | "visualizationHeadline" | "visualizationColumn" | "visualizationLine" | "visualizationPyramid" | "visualizationFunnel" | "visualizationHeatmap" | "visualizationBubble" | "visualizationPie" | "visualizationBar" | "visualizationCombo" | "visualizationBullet" | "visualizationWaterfall" | "visualizationDependencywheel" | "visualizationSankey" | "visualizationPushpin" | "visualizationRepeater" | "visualizationXirr" | "link" | "externalLink" | "click" | "fileXlsx" | "filePptx" | "filePdf" | "fileImage" | "fileCsvFormatted" | "fileCsvRaw" | "aiDocument" | "recommendation" | "streamUp" | "streamDown" | "stream" | "density" | "parameter" | "pin" | "unpin" | "speechBubble" | "pieChart" | "timezone" | "sidePanelCollapse" | "sidePanelExpand";
2728
2728
 
2729
2729
  /**
2730
2730
  * @internal
@@ -2947,6 +2947,8 @@ export declare interface IDescriptionPanelProps {
2947
2947
  LoadingComponent?: ComponentType;
2948
2948
  filters?: IFilter[];
2949
2949
  separators?: ISeparators_3;
2950
+ /** References the current user is not allowed to read; each renders as a marker in place of its value. */
2951
+ restrictedReferences?: ObjRef[];
2950
2952
  execConfig?: IExecutionConfig;
2951
2953
  id?: string;
2952
2954
  }
@@ -4261,6 +4263,8 @@ export declare interface IInsightListItemProps {
4261
4263
  onDescriptionPanelOpen?: () => void;
4262
4264
  showDescriptionPanel?: boolean;
4263
4265
  useReferences?: boolean;
4266
+ /** References the current user is not allowed to read; each renders as a marker in place of its value. */
4267
+ restrictedReferences?: ObjRef[];
4264
4268
  metadataTimeZone?: string;
4265
4269
  richTextExecConfig?: IExecutionConfig;
4266
4270
  LoadingComponent?: ComponentType;
@@ -4870,79 +4874,79 @@ export declare interface IMeasureNumberFormatOwnProps {
4870
4874
  *
4871
4875
  * @internal
4872
4876
  */
4873
- export declare interface IMediaQueries {
4877
+ export declare interface IMediaQueries<T> {
4874
4878
  /**
4875
4879
  * Is screen classified as smaller than 'sm'?
4876
4880
  */
4877
- "<sm": string;
4881
+ "<sm": T;
4878
4882
  /**
4879
4883
  * Is screen classified as 'sm' or larger?
4880
4884
  */
4881
- ">=sm": string;
4885
+ ">=sm": T;
4882
4886
  /**
4883
4887
  * Is screen classified as 'sm'?
4884
4888
  */
4885
- sm: string;
4889
+ sm: T;
4886
4890
  /**
4887
4891
  * Is screen classified as 'md' or larger?
4888
4892
  */
4889
- ">=md": string;
4893
+ ">=md": T;
4890
4894
  /**
4891
4895
  * Is screen classified as 'md' or smaller?
4892
4896
  */
4893
- "<=md": string;
4897
+ "<=md": T;
4894
4898
  /**
4895
4899
  * Is screen classified as 'md'?
4896
4900
  */
4897
- md: string;
4901
+ md: T;
4898
4902
  /**
4899
4903
  * Is screen classified as 'lg' or larger?
4900
4904
  */
4901
- ">=lg": string;
4905
+ ">=lg": T;
4902
4906
  /**
4903
4907
  * Is screen classified as 'lg' or smaller?
4904
4908
  */
4905
- "<=lg": string;
4909
+ "<=lg": T;
4906
4910
  /**
4907
4911
  * Is screen classified as 'lg'?
4908
4912
  */
4909
- lg: string;
4913
+ lg: T;
4910
4914
  /**
4911
4915
  * Is screen classified as 'xl' or smaller?
4912
4916
  */
4913
- "<=xl": string;
4917
+ "<=xl": T;
4914
4918
  /**
4915
4919
  * Is screen classified as 'xl' or larger?
4916
4920
  */
4917
- ">=xl": string;
4921
+ ">=xl": T;
4918
4922
  /**
4919
4923
  * Is screen classified as 'xl'?
4920
4924
  */
4921
- xl: string;
4925
+ xl: T;
4922
4926
  /**
4923
4927
  * Is screen classified as 'xxl' or larger?
4924
4928
  */
4925
- ">=xxl": string;
4929
+ ">=xxl": T;
4926
4930
  /**
4927
4931
  * Is screen classified as 'xxl'?
4928
4932
  */
4929
- xxl: string;
4933
+ xxl: T;
4930
4934
  /**
4931
4935
  * Is screen classified as a mobile device?
4932
4936
  */
4933
- mobileDevice: string;
4937
+ mobileDevice: T;
4934
4938
  /**
4935
4939
  * Is screen classified as other than mobile device?
4936
4940
  */
4937
- "!mobileDevice": string;
4941
+ "!mobileDevice": T;
4938
4942
  /**
4939
4943
  * Is screen classified as a desktop device?
4940
4944
  */
4941
- desktop: string;
4945
+ desktop: T;
4942
4946
  /**
4943
4947
  * Is screen classified as smaller than desktop device?
4944
4948
  */
4945
- "<desktop": string;
4949
+ "<desktop": T;
4946
4950
  }
4947
4951
 
4948
4952
  /**
@@ -5146,7 +5150,7 @@ export declare function InsightIcon({ visualizationUrl, iconProps, }: IInsightIc
5146
5150
  /**
5147
5151
  * @internal
5148
5152
  */
5149
- export declare function InsightListItem({ title, description, updated, type, isSelected, isLoading, filters, separators, LoadingComponent, onClick, onDescriptionPanelOpen, showDescriptionPanel, useReferences, richTextExecConfig, width, isLocked, onDelete, metadataTimeZone, }: IInsightListItemProps): JSX.Element;
5153
+ export declare function InsightListItem({ title, description, updated, type, isSelected, isLoading, filters, separators, LoadingComponent, onClick, onDescriptionPanelOpen, showDescriptionPanel, useReferences, restrictedReferences, richTextExecConfig, width, isLocked, onDelete, metadataTimeZone, }: IInsightListItemProps): JSX.Element;
5150
5154
 
5151
5155
  /**
5152
5156
  * @internal
@@ -5574,6 +5578,12 @@ export declare interface IRichTextProps {
5574
5578
  * Filters to be used for rendering references.
5575
5579
  */
5576
5580
  filters?: IFilter[];
5581
+ /**
5582
+ * References the current user is not allowed to read. Each of them renders as a marker in place
5583
+ * of its value, and is left out of the execution that resolves the remaining references — one
5584
+ * execution serves them all, and it fails as a whole if it asks for a restricted object.
5585
+ */
5586
+ restrictedReferences?: ObjRef[];
5577
5587
  /**
5578
5588
  * If true, the filters are loading.
5579
5589
  */
@@ -6116,7 +6126,7 @@ export declare const isLabelsChecklistItemChecked: (item: IUiLabelsChecklistItem
6116
6126
  * replace it; a slot that does not spread `defaultProps` onto `Default` loses the default
6117
6127
  * behavior wired through them (including the host's initial-focus ref).
6118
6128
  *
6119
- * @alpha
6129
+ * @beta
6120
6130
  */
6121
6131
  export declare interface ISlotProps<TProps> {
6122
6132
  /**
@@ -7625,6 +7635,11 @@ export declare interface IUiDropdownBodyRenderProps {
7625
7635
  ariaAttributes: {
7626
7636
  id: string;
7627
7637
  };
7638
+ /**
7639
+ * Id of the element around the trigger. A body with no name of its own takes it as
7640
+ * `aria-labelledby`; a body that sets `aria-label` leaves it alone.
7641
+ */
7642
+ triggerId: string;
7628
7643
  }
7629
7644
 
7630
7645
  /**
@@ -8804,7 +8819,7 @@ export declare interface IUiPagedVirtualListProps<T> {
8804
8819
  getIsItemSelected?: (item: T) => boolean;
8805
8820
  itemHeightGetter?: (index: number) => number;
8806
8821
  onScroll?: () => void;
8807
- onFocus?: (e: React.FocusEvent) => void;
8822
+ onFocus?: (e: FocusEvent_2) => void;
8808
8823
  handleFocusIndexChange?: boolean;
8809
8824
  }
8810
8825
 
@@ -12150,9 +12165,10 @@ export declare function useListWithActionsKeyboardNavigation<Item, Action extend
12150
12165
  *
12151
12166
  * @internal
12152
12167
  * @param mediaQueryName - media query name to test
12168
+ * @param anchor - anchor point for the media query. If provided, the media query will be tested against the anchor point.
12153
12169
  * @returns boolean
12154
12170
  */
12155
- export declare const useMediaQuery: (mediaQueryName: keyof IMediaQueries) => boolean;
12171
+ export declare const useMediaQuery: (mediaQueryName: keyof IMediaQueries<string>, anchor?: number) => boolean;
12156
12172
 
12157
12173
  /**
12158
12174
  * Hook that creates format presets and templates based on metric type.
@@ -12,7 +12,7 @@ import { type ComponentType } from "react";
12
12
  * replace it; a slot that does not spread `defaultProps` onto `Default` loses the default
13
13
  * behavior wired through them (including the host's initial-focus ref).
14
14
  *
15
- * @alpha
15
+ * @beta
16
16
  */
17
17
  export interface ISlotProps<TProps> {
18
18
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-kit",
3
- "version": "11.57.0-alpha.0",
3
+ "version": "11.57.0-alpha.2",
4
4
  "description": "GoodData SDK - UI Building Components",
5
5
  "license": "MIT",
6
6
  "author": "GoodData Corporation",
@@ -79,11 +79,11 @@
79
79
  "unified": "^11.0.5",
80
80
  "uuid": "11.1.1",
81
81
  "yaml": "2.8.3",
82
- "@gooddata/sdk-backend-spi": "11.57.0-alpha.0",
83
- "@gooddata/sdk-model": "11.57.0-alpha.0",
84
- "@gooddata/sdk-ui": "11.57.0-alpha.0",
85
- "@gooddata/sdk-ui-theme-provider": "11.57.0-alpha.0",
86
- "@gooddata/util": "11.57.0-alpha.0"
82
+ "@gooddata/sdk-backend-spi": "11.57.0-alpha.2",
83
+ "@gooddata/sdk-model": "11.57.0-alpha.2",
84
+ "@gooddata/sdk-ui-theme-provider": "11.57.0-alpha.2",
85
+ "@gooddata/util": "11.57.0-alpha.2",
86
+ "@gooddata/sdk-ui": "11.57.0-alpha.2"
87
87
  },
88
88
  "devDependencies": {
89
89
  "@microsoft/api-documenter": "7.30.10",
@@ -117,22 +117,23 @@
117
117
  "kefir": "3.8.8",
118
118
  "npm-run-all": "4.1.5",
119
119
  "oxfmt": "0.66.0",
120
- "oxlint": "1.57.0",
121
- "oxlint-tsgolint": "0.15.0",
120
+ "oxlint": "1.66.0",
121
+ "oxlint-plugin-eslint": "1.82.0",
122
+ "oxlint-tsgolint": "0.18.1",
122
123
  "raf": "3.4.1",
123
124
  "react": "19.1.1",
124
125
  "react-dom": "19.1.1",
125
- "sass": "1.100.0",
126
+ "sass": "1.104.0",
126
127
  "stylelint": "16.26.1",
127
128
  "svgo": "2.8.3",
128
129
  "typescript": "7.0.2",
129
130
  "vitest": "4.1.8",
130
131
  "vitest-dom": "0.1.1",
131
- "@gooddata/oxlint-config": "11.57.0-alpha.0",
132
- "@gooddata/eslint-config": "11.57.0-alpha.0",
133
- "@gooddata/reference-workspace": "11.57.0-alpha.0",
134
- "@gooddata/stylelint-config": "11.57.0-alpha.0",
135
- "@gooddata/sdk-backend-mockingbird": "11.57.0-alpha.0"
132
+ "@gooddata/eslint-config": "11.57.0-alpha.2",
133
+ "@gooddata/oxlint-config": "11.57.0-alpha.2",
134
+ "@gooddata/reference-workspace": "11.57.0-alpha.2",
135
+ "@gooddata/sdk-backend-mockingbird": "11.57.0-alpha.2",
136
+ "@gooddata/stylelint-config": "11.57.0-alpha.2"
136
137
  },
137
138
  "peerDependencies": {
138
139
  "react": "^18.0.0 || ^19.0.0",