From e1ed78bcfdd4cd277bd6a2d3005f293eb626a384 Mon Sep 17 00:00:00 2001 From: git-action Date: Tue, 3 Nov 2026 03:16:28 +0000 Subject: [PATCH 1/2] =?UTF-8?q?chore:=20sync=20sdk/=20from=20gdc-ui=20?= =?UTF-8?q?=E2=86=92=20gooddata-ui-sdk/=20(05e1956)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit risk: low --- ...-list-completions_2026-11-02-10-38-14.json | 10 + ...-list-completions_2026-11-02-10-43-21.json | 10 + ...-parameter-staged_2026-11-02-13-57-53.json | 10 + ...uage-design-fixes_2026-11-01-12-00-00.json | 10 + ...uage-design-fixes_2026-11-01-12-01-00.json | 10 + ...eme-remove-colors_2026-11-02-12-21-12.json | 10 + ...rkspace-convertor_2026-10-30-17-00-00.json | 10 + common/config/rush/pnpm-lock.yaml | 226 +++++++----------- common/config/rush/version-policies.json | 4 +- common/scripts/install-run-rush.js | 2 + common/scripts/install-run.js | 2 + examples/playground/package.json | 2 +- .../examples-template/package.json | 2 +- .../example-attributefilter/package.json | 2 +- .../examples/example-chartconfig/package.json | 2 +- .../examples/example-columnchart/package.json | 2 +- .../examples/example-combochart/package.json | 2 +- .../examples/example-dashboard/package.json | 2 +- .../examples/example-datefilter/package.json | 2 +- .../example-dependentfilters/package.json | 2 +- .../examples/example-execute/package.json | 2 +- .../examples/example-granularity/package.json | 2 +- .../examples/example-headline/package.json | 2 +- .../examples/example-pivottable/package.json | 2 +- .../example-relativedatefilter/package.json | 2 +- .../examples/example-repeater/package.json | 2 +- .../sdk-interactive-examples/package.json | 2 +- libs/api-client-tiger/package.json | 2 +- libs/sdk-backend-base/package.json | 2 +- libs/sdk-backend-mockingbird/package.json | 2 +- libs/sdk-backend-spi/package.json | 2 +- libs/sdk-backend-tiger/package.json | 2 +- .../api/sdk-code-convertors.api.md | 12 + libs/sdk-code-convertors/package.json | 2 +- .../sdk-code-convertors/python/pyproject.toml | 2 +- libs/sdk-code-convertors/src/index.ts | 5 + .../to/yamlDocumentsToDeclarativeWorkspace.ts | 129 ++++++++++ .../src/workspaceConversion.test.ts | 134 +++++++++++ libs/sdk-code-schemas/package.json | 2 +- libs/sdk-e2e-utils/package.json | 2 +- libs/sdk-embedding/package.json | 2 +- libs/sdk-maql-language-server/package.json | 2 +- libs/sdk-model/api/sdk-model.api.md | 8 +- libs/sdk-model/package.json | 2 +- libs/sdk-model/src/index.ts | 1 + libs/sdk-model/src/theme/index.ts | 14 +- .../package.json | 2 +- libs/sdk-ui-all/package.json | 2 +- libs/sdk-ui-analytical-designer/package.json | 2 +- libs/sdk-ui-application-header/package.json | 2 +- libs/sdk-ui-catalog/package.json | 2 +- .../parameter/parameterCompletions.test.ts | 215 ++++++++++++++++- .../src/parameter/parameterCompletions.ts | 86 ++++++- libs/sdk-ui-charts/package.json | 2 +- .../api/sdk-ui-dashboard.api.md | 2 + libs/sdk-ui-dashboard/package.json | 2 +- .../changeAttributeFilterSelectionHandler.ts | 5 +- .../src/model/commands/filters.ts | 38 +++ .../state/alertStateRenderCount.test.tsx | 1 + .../state/useAlertDialogValidity.test.tsx | 1 + .../hooks/useBuildAutomationsContext.test.tsx | 1 + .../hooks/useBuildAutomationsContext.ts | 6 + .../contexts/AutomationsContext.ts | 6 + ...edEmailEffectiveFilters.realChain.test.tsx | 1 + .../components/AutomationDateFilter.test.tsx | 1 + .../components/AutomationParameter.test.tsx | 38 ++- .../components/AutomationParameter.tsx | 10 +- .../automations/tests/shared.test.helpers.ts | 1 + .../hooks/useSelectionModeConfiguration.ts | 4 +- libs/sdk-ui-ext/package.json | 2 +- libs/sdk-ui-filters/package.json | 2 +- libs/sdk-ui-gen-ai/package.json | 2 +- libs/sdk-ui-geo/package.json | 2 +- libs/sdk-ui-kit/package.json | 2 +- .../UiSearchableSelect.scss | 2 +- libs/sdk-ui-kit/src/@ui/defaultTheme.scss | 1 + .../src/Header/HeaderLanguageButton.test.tsx | 7 +- .../src/Header/HeaderLanguageButton.tsx | 3 - libs/sdk-ui-kit/styles/scss/header.scss | 17 +- libs/sdk-ui-loaders/package.json | 2 +- libs/sdk-ui-metric-component/package.json | 2 +- libs/sdk-ui-pivot/package.json | 2 +- .../sdk-ui-pluggable-application/package.json | 2 +- libs/sdk-ui-pluggable-host/package.json | 2 +- libs/sdk-ui-semantic-search/package.json | 2 +- libs/sdk-ui-tests-app/package.json | 2 +- libs/sdk-ui-tests-e2e/package.json | 2 +- .../package.json | 2 +- libs/sdk-ui-tests-scenarios/package.json | 2 +- ...leSelect_-_themed_0_document_0_desktop.png | Bin 6809 -> 6782 bytes libs/sdk-ui-tests-storybook/package.json | 2 +- libs/sdk-ui-theme-provider/package.json | 2 +- .../src/derivedColors.ts | 3 + .../src/documentsTheme.test.ts | 4 +- .../palette-complementary-derived.ts | 5 + libs/sdk-ui-vis-commons/package.json | 2 +- libs/sdk-ui-web-components/package.json | 2 +- libs/sdk-ui/package.json | 2 +- libs/util/package.json | 2 +- .../pluggable-module/harness/package.json | 2 +- .../pluggable-module/module/package.json | 2 +- tools/app-toolkit/package.json | 2 +- tools/catalog-export/package.json | 2 +- tools/create-pluggable-module/package.json | 2 +- tools/dashboard-plugin-template/package.json | 2 +- tools/eslint-config/package.json | 2 +- tools/i18n-toolkit/package.json | 2 +- tools/lint-config/package.json | 2 +- tools/mock-handling/package.json | 2 +- tools/oxlint-config/package.json | 2 +- tools/plugin-toolkit/package.json | 2 +- tools/react-app-template/package.json | 2 +- tools/reference-workspace-mgmt/package.json | 2 +- tools/reference-workspace/package.json | 2 +- tools/stylelint-config/package.json | 2 +- tools/toolchain-config/package.json | 2 +- 116 files changed, 938 insertions(+), 273 deletions(-) create mode 100644 common/changes/@gooddata/sdk-ui-all/JSVA-F1-2769-yaml-list-completions_2026-11-02-10-38-14.json create mode 100644 common/changes/@gooddata/sdk-ui-all/JSVA-F1-2769-yaml-list-completions_2026-11-02-10-43-21.json create mode 100644 common/changes/@gooddata/sdk-ui-all/JSVA-F1-2836-automation-parameter-staged_2026-11-02-13-57-53.json create mode 100644 common/changes/@gooddata/sdk-ui-all/MPAV-ATEAM-91-mobile-language-design-fixes_2026-11-01-12-00-00.json create mode 100644 common/changes/@gooddata/sdk-ui-all/MPAV-ATEAM-91-mobile-language-design-fixes_2026-11-01-12-01-00.json create mode 100644 common/changes/@gooddata/sdk-ui-all/c.jma-theme-remove-colors_2026-11-02-12-21-12.json create mode 100644 common/changes/@gooddata/sdk-ui-all/pdo-aac-workspace-convertor_2026-10-30-17-00-00.json create mode 100644 libs/sdk-code-convertors/src/to/yamlDocumentsToDeclarativeWorkspace.ts create mode 100644 libs/sdk-code-convertors/src/workspaceConversion.test.ts diff --git a/common/changes/@gooddata/sdk-ui-all/JSVA-F1-2769-yaml-list-completions_2026-11-02-10-38-14.json b/common/changes/@gooddata/sdk-ui-all/JSVA-F1-2769-yaml-list-completions_2026-11-02-10-38-14.json new file mode 100644 index 00000000000..d86fc0312af --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/JSVA-F1-2769-yaml-list-completions_2026-11-02-10-38-14.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "comment": "sdk-ui-catalog: Hide already-present keys in parameter YAML completions", + "type": "none", + "packageName": "@gooddata/sdk-ui-all" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/changes/@gooddata/sdk-ui-all/JSVA-F1-2769-yaml-list-completions_2026-11-02-10-43-21.json b/common/changes/@gooddata/sdk-ui-all/JSVA-F1-2769-yaml-list-completions_2026-11-02-10-43-21.json new file mode 100644 index 00000000000..4b3c7d83700 --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/JSVA-F1-2769-yaml-list-completions_2026-11-02-10-43-21.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "comment": "sdk-ui-catalog: Offer new `allowedValues` entry in parameter YAML completions", + "type": "none", + "packageName": "@gooddata/sdk-ui-all" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/changes/@gooddata/sdk-ui-all/JSVA-F1-2836-automation-parameter-staged_2026-11-02-13-57-53.json b/common/changes/@gooddata/sdk-ui-all/JSVA-F1-2836-automation-parameter-staged_2026-11-02-13-57-53.json new file mode 100644 index 00000000000..10213c48796 --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/JSVA-F1-2836-automation-parameter-staged_2026-11-02-13-57-53.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "comment": "sdk-ui-dashboard: Stage automation parameter values in all-at-once apply mode", + "type": "none", + "packageName": "@gooddata/sdk-ui-all" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/changes/@gooddata/sdk-ui-all/MPAV-ATEAM-91-mobile-language-design-fixes_2026-11-01-12-00-00.json b/common/changes/@gooddata/sdk-ui-all/MPAV-ATEAM-91-mobile-language-design-fixes_2026-11-01-12-00-00.json new file mode 100644 index 00000000000..59f9f2e9af9 --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/MPAV-ATEAM-91-mobile-language-design-fixes_2026-11-01-12-00-00.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@gooddata/sdk-ui-all", + "comment": "sdk-ui-kit: Use themed color for shadow in `UiSearchableSelect`.", + "type": "none" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/changes/@gooddata/sdk-ui-all/MPAV-ATEAM-91-mobile-language-design-fixes_2026-11-01-12-01-00.json b/common/changes/@gooddata/sdk-ui-all/MPAV-ATEAM-91-mobile-language-design-fixes_2026-11-01-12-01-00.json new file mode 100644 index 00000000000..110c59606e7 --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/MPAV-ATEAM-91-mobile-language-design-fixes_2026-11-01-12-01-00.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@gooddata/sdk-ui-all", + "comment": "sdk-ui-kit: Change mobile language button per design request.", + "type": "none" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/changes/@gooddata/sdk-ui-all/c.jma-theme-remove-colors_2026-11-02-12-21-12.json b/common/changes/@gooddata/sdk-ui-all/c.jma-theme-remove-colors_2026-11-02-12-21-12.json new file mode 100644 index 00000000000..934d48d7bd7 --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/c.jma-theme-remove-colors_2026-11-02-12-21-12.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@gooddata/sdk-ui-all", + "comment": "sdk-model: Remove text `color` from the documents theme text styles and `textColor` from the theme takeaway look.", + "type": "none" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} \ No newline at end of file diff --git a/common/changes/@gooddata/sdk-ui-all/pdo-aac-workspace-convertor_2026-10-30-17-00-00.json b/common/changes/@gooddata/sdk-ui-all/pdo-aac-workspace-convertor_2026-10-30-17-00-00.json new file mode 100644 index 00000000000..902de3c5d6b --- /dev/null +++ b/common/changes/@gooddata/sdk-ui-all/pdo-aac-workspace-convertor_2026-10-30-17-00-00.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@gooddata/sdk-ui-all", + "comment": "sdk-code-convertors: Added yamlDocumentsToDeclarativeWorkspace, which converts the AaC documents of a workspace to its declarative model.", + "type": "none" + } + ], + "packageName": "@gooddata/sdk-ui-all" +} diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index d24062fe9c7..0ceb4268cc3 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -4,13 +4,16 @@ settings: autoInstallPeers: false excludeLinksFromLockfile: false +overrides: + minimatch@>=10.0.0 <10.2.3: 10.2.5 + pnpmfileChecksum: sha256-E1T7OJ3DLTjpDqf4RdJzK9VDtAxgm4gDEQCLYdHD8nI= importers: .: {} - ../../examples/playground: + ../../../sdk/examples/playground: devDependencies: '@codemirror/state': specifier: 6.5.3 @@ -163,13 +166,13 @@ importers: specifier: 8.3.5 version: 8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3) - ../../examples/sdk-interactive-examples: + ../../../sdk/examples/sdk-interactive-examples: devDependencies: validate-npm-package-name: specifier: 5.0.1 version: 5.0.1 - ../../examples/sdk-interactive-examples/examples-template: + ../../../sdk/examples/sdk-interactive-examples/examples-template: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -296,7 +299,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../examples/sdk-interactive-examples/examples/example-attributefilter: + ../../../sdk/examples/sdk-interactive-examples/examples/example-attributefilter: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -423,7 +426,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../examples/sdk-interactive-examples/examples/example-chartconfig: + ../../../sdk/examples/sdk-interactive-examples/examples/example-chartconfig: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -550,7 +553,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../examples/sdk-interactive-examples/examples/example-columnchart: + ../../../sdk/examples/sdk-interactive-examples/examples/example-columnchart: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -677,7 +680,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../examples/sdk-interactive-examples/examples/example-combochart: + ../../../sdk/examples/sdk-interactive-examples/examples/example-combochart: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -804,7 +807,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../examples/sdk-interactive-examples/examples/example-dashboard: + ../../../sdk/examples/sdk-interactive-examples/examples/example-dashboard: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -931,7 +934,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../examples/sdk-interactive-examples/examples/example-datefilter: + ../../../sdk/examples/sdk-interactive-examples/examples/example-datefilter: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1058,7 +1061,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../examples/sdk-interactive-examples/examples/example-dependentfilters: + ../../../sdk/examples/sdk-interactive-examples/examples/example-dependentfilters: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1185,7 +1188,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../examples/sdk-interactive-examples/examples/example-execute: + ../../../sdk/examples/sdk-interactive-examples/examples/example-execute: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1321,7 +1324,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../examples/sdk-interactive-examples/examples/example-granularity: + ../../../sdk/examples/sdk-interactive-examples/examples/example-granularity: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1448,7 +1451,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../examples/sdk-interactive-examples/examples/example-headline: + ../../../sdk/examples/sdk-interactive-examples/examples/example-headline: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1575,7 +1578,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../examples/sdk-interactive-examples/examples/example-pivottable: + ../../../sdk/examples/sdk-interactive-examples/examples/example-pivottable: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1702,7 +1705,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../examples/sdk-interactive-examples/examples/example-relativedatefilter: + ../../../sdk/examples/sdk-interactive-examples/examples/example-relativedatefilter: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1829,7 +1832,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../examples/sdk-interactive-examples/examples/example-repeater: + ../../../sdk/examples/sdk-interactive-examples/examples/example-repeater: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1956,7 +1959,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/api-client-tiger: + ../../../sdk/libs/api-client-tiger: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -2053,7 +2056,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-backend-base: + ../../../sdk/libs/sdk-backend-base: dependencies: '@braintree/sanitize-url': specifier: ^6.0.0 @@ -2159,7 +2162,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-backend-mockingbird: + ../../../sdk/libs/sdk-backend-mockingbird: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -2253,7 +2256,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-backend-spi: + ../../../sdk/libs/sdk-backend-spi: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -2332,7 +2335,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-backend-tiger: + ../../../sdk/libs/sdk-backend-tiger: dependencies: '@gooddata/api-client-tiger': specifier: workspace:* @@ -2471,7 +2474,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-code-convertors: + ../../../sdk/libs/sdk-code-convertors: dependencies: '@gooddata/api-client-tiger': specifier: workspace:* @@ -2547,7 +2550,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-code-schemas: + ../../../sdk/libs/sdk-code-schemas: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -2616,7 +2619,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-e2e-utils: + ../../../sdk/libs/sdk-e2e-utils: dependencies: '@playwright/test': specifier: 1.62.1 @@ -2701,7 +2704,7 @@ importers: specifier: 7.0.2 version: 7.0.2 - ../../libs/sdk-embedding: + ../../../sdk/libs/sdk-embedding: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -2780,7 +2783,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-maql-language-server: + ../../../sdk/libs/sdk-maql-language-server: dependencies: '@gooddata/maql-antlr4ts': specifier: 0.7.2 @@ -2904,7 +2907,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-model: + ../../../sdk/libs/sdk-model: dependencies: '@types/geojson': specifier: ^7946.0.16 @@ -2998,7 +3001,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-pluggable-application-model: + ../../../sdk/libs/sdk-pluggable-application-model: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -3071,7 +3074,7 @@ importers: specifier: 7.0.2 version: 7.0.2 - ../../libs/sdk-ui: + ../../../sdk/libs/sdk-ui: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -3246,7 +3249,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-all: + ../../../sdk/libs/sdk-ui-all: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -3337,7 +3340,7 @@ importers: specifier: 7.0.2 version: 7.0.2 - ../../libs/sdk-ui-analytical-designer: + ../../../sdk/libs/sdk-ui-analytical-designer: dependencies: '@evil-internetmann/react-dnd': specifier: 16.2.1 @@ -3605,7 +3608,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-application-header: + ../../../sdk/libs/sdk-ui-application-header: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -3744,7 +3747,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-catalog: + ../../../sdk/libs/sdk-ui-catalog: dependencies: '@codemirror/autocomplete': specifier: 6.20.0 @@ -3919,7 +3922,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-charts: + ../../../sdk/libs/sdk-ui-charts: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -4130,7 +4133,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-dashboard: + ../../../sdk/libs/sdk-ui-dashboard: dependencies: '@codemirror/language': specifier: 6.12.1 @@ -4395,7 +4398,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-ext: + ../../../sdk/libs/sdk-ui-ext: dependencies: '@codemirror/commands': specifier: 6.10.1 @@ -4663,7 +4666,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-filters: + ../../../sdk/libs/sdk-ui-filters: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -4853,7 +4856,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-gen-ai: + ../../../sdk/libs/sdk-ui-gen-ai: dependencies: '@codemirror/autocomplete': specifier: 6.20.0 @@ -5097,7 +5100,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-geo: + ../../../sdk/libs/sdk-ui-geo: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -5272,7 +5275,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-kit: + ../../../sdk/libs/sdk-ui-kit: dependencies: '@aaronhayes/react-use-hubspot-form': specifier: 2.1.2 @@ -5564,7 +5567,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-loaders: + ../../../sdk/libs/sdk-ui-loaders: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -5688,7 +5691,7 @@ importers: specifier: 7.0.2 version: 7.0.2 - ../../libs/sdk-ui-metric-component: + ../../../sdk/libs/sdk-ui-metric-component: dependencies: '@emotion/react': specifier: 11.14.0 @@ -5869,7 +5872,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-pivot: + ../../../sdk/libs/sdk-ui-pivot: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -6044,7 +6047,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-pluggable-application: + ../../../sdk/libs/sdk-ui-pluggable-application: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -6159,7 +6162,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-pluggable-host: + ../../../sdk/libs/sdk-ui-pluggable-host: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -6322,7 +6325,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-semantic-search: + ../../../sdk/libs/sdk-ui-semantic-search: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -6470,7 +6473,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-tests-app: + ../../../sdk/libs/sdk-ui-tests-app: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -6599,7 +6602,7 @@ importers: specifier: 8.3.5 version: 8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3) - ../../libs/sdk-ui-tests-e2e: + ../../../sdk/libs/sdk-ui-tests-e2e: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -6695,7 +6698,7 @@ importers: specifier: 7.0.2 version: 7.0.2 - ../../libs/sdk-ui-tests-reference-workspace: + ../../../sdk/libs/sdk-ui-tests-reference-workspace: devDependencies: '@gooddata/catalog-export': specifier: workspace:* @@ -6755,7 +6758,7 @@ importers: specifier: 7.0.2 version: 7.0.2 - ../../libs/sdk-ui-tests-scenarios: + ../../../sdk/libs/sdk-ui-tests-scenarios: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -6902,7 +6905,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-tests-storybook: + ../../../sdk/libs/sdk-ui-tests-storybook: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -7109,7 +7112,7 @@ importers: specifier: 4.1.0 version: 4.1.0(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-theme-provider: + ../../../sdk/libs/sdk-ui-theme-provider: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -7254,7 +7257,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-vis-commons: + ../../../sdk/libs/sdk-ui-vis-commons: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -7411,7 +7414,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/sdk-ui-web-components: + ../../../sdk/libs/sdk-ui-web-components: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -7574,7 +7577,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../libs/util: + ../../../sdk/libs/util: dependencies: lodash-es: specifier: ^4.17.23 @@ -7650,7 +7653,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../templates/pluggable-module/harness: + ../../../sdk/templates/pluggable-module/harness: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -7750,7 +7753,7 @@ importers: specifier: 8.3.5 version: 8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3) - ../../templates/pluggable-module/module: + ../../../sdk/templates/pluggable-module/module: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -7874,7 +7877,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../tools/app-toolkit: + ../../../sdk/tools/app-toolkit: dependencies: chalk: specifier: 5.3.0 @@ -7971,7 +7974,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../tools/catalog-export: + ../../../sdk/tools/catalog-export: dependencies: '@gooddata/api-client-tiger': specifier: workspace:* @@ -8080,7 +8083,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../tools/create-pluggable-module: + ../../../sdk/tools/create-pluggable-module: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -8149,7 +8152,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../tools/dashboard-plugin-template: + ../../../sdk/tools/dashboard-plugin-template: dependencies: tslib: specifier: 2.8.1 @@ -8309,7 +8312,7 @@ importers: specifier: 5.2.4 version: 5.2.4(webpack-cli@7.0.3)(webpack@5.107.2) - ../../tools/eslint-config: + ../../../sdk/tools/eslint-config: devDependencies: '@eslint/js': specifier: 9.39.5 @@ -8402,7 +8405,7 @@ importers: specifier: 5.3.0 version: 5.3.0(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.33.0)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3) - ../../tools/i18n-toolkit: + ../../../sdk/tools/i18n-toolkit: dependencies: '@formatjs/cli-lib': specifier: ^6.1.1 @@ -8502,7 +8505,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../tools/lint-config: + ../../../sdk/tools/lint-config: devDependencies: npm-run-all: specifier: 4.1.5 @@ -8514,7 +8517,7 @@ importers: specifier: 7.0.2 version: 7.0.2 - ../../tools/mock-handling: + ../../../sdk/tools/mock-handling: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -8617,7 +8620,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../tools/oxlint-config: + ../../../sdk/tools/oxlint-config: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -8701,7 +8704,7 @@ importers: specifier: 5.3.0 version: 5.3.0(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.33.0)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3) - ../../tools/plugin-toolkit: + ../../../sdk/tools/plugin-toolkit: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -8822,7 +8825,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../tools/react-app-template: + ../../../sdk/tools/react-app-template: dependencies: '@codemirror/state': specifier: 6.5.3 @@ -8949,7 +8952,7 @@ importers: specifier: 8.3.5 version: 8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3) - ../../tools/reference-workspace: + ../../../sdk/tools/reference-workspace: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -9019,7 +9022,7 @@ importers: specifier: 7.0.2 version: 7.0.2 - ../../tools/reference-workspace-mgmt: + ../../../sdk/tools/reference-workspace-mgmt: dependencies: '@gooddata/catalog-export': specifier: workspace:* @@ -9095,7 +9098,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../tools/stylelint-config: + ../../../sdk/tools/stylelint-config: dependencies: postcss: specifier: 8.5.26 @@ -9119,7 +9122,7 @@ importers: specifier: 6.14.0 version: 6.14.0(stylelint@16.26.1(typescript@7.0.2)) - ../../tools/toolchain-config: + ../../../sdk/tools/toolchain-config: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -9958,14 +9961,6 @@ packages: '@internationalized/string@3.2.10': resolution: {integrity: sha512-PDx6//vHSpRnHfxqMqto11zQvhsaU74O3mKv2F/0eicGZcl9NLjQmGlbHz/LsJh5tLKp4A4L7ZVTzN1/MmMTvA==} - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} - - '@isaacs/brace-expansion@5.0.1': - resolution: {integrity: sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==} - engines: {node: 20 || >=22} - '@isaacs/fs-minipass@4.0.1': resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} @@ -12541,18 +12536,6 @@ packages: resolution: {integrity: sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==} engines: {node: '>=6.0'} - ag-charts-community@13.1.0: - resolution: {integrity: sha512-w+uFTjxlAoTq1+8tgUORtB/zr9jm38ibXzbbWnkBP9Dep9yahi5a1jZL7yExAX35uq3g9QtjTh0Oj/QPDBQ9Ew==} - - ag-charts-core@13.1.0: - resolution: {integrity: sha512-mLHJZ8oU5CPeLRURescdISCtMsiiA/m4d1iBr6aQBEgiTVogRMGpFpsYNtQiYtoW2sRh+62I9sN8fhC3JQjX/g==} - - ag-charts-enterprise@13.1.0: - resolution: {integrity: sha512-WyKIqvkOdtdvEJxq76hjTacXTCpIR2lq1JDMYc5MtoHYtiVt1KHApsxS0nbutp/CxGKRgdOqJtxUF+3r33pgPw==} - - ag-charts-locale@13.1.0: - resolution: {integrity: sha512-mPgJnVsOI4Cf17CAlRh8BvLz19e165sdQJeUXNaB7M+DPB+pxODOcfx4oqZlR4Wc8Zu++TGb/2ueHa/aeV2qeQ==} - ag-charts-types@13.1.0: resolution: {integrity: sha512-DytRM3CXli+Y013SC1Mr8lQBrhVTACK+11ilDHOhwUM0sRpmGuR51XFGcBKOliW1Vas1AycP31Cm3Pp0jx3hqw==} @@ -15477,10 +15460,6 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - minimatch@10.1.1: - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} - engines: {node: 20 || >=22} - minimatch@10.2.3: resolution: {integrity: sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==} engines: {node: 18 || 20 || >=22} @@ -16108,6 +16087,9 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} + prop-types@15.7.2: + resolution: {integrity: sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==} + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -17942,6 +17924,10 @@ packages: zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} +ignoredOptionalDependencies: + - ag-charts-community + - ag-charts-enterprise + snapshots: '@aaronhayes/react-use-hubspot-form@2.1.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': @@ -18814,12 +18800,6 @@ snapshots: dependencies: '@swc/helpers': 0.5.23 - '@isaacs/balanced-match@4.0.1': {} - - '@isaacs/brace-expansion@5.0.1': - dependencies: - '@isaacs/balanced-match': 4.0.1 - '@isaacs/fs-minipass@4.0.1': dependencies: minipass: 7.1.3 @@ -20680,8 +20660,8 @@ snapshots: '@typescript-eslint/project-service@8.58.0': dependencies: - '@typescript-eslint/tsconfig-utils': 8.71.1 - '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/tsconfig-utils': 8.58.0 + '@typescript-eslint/types': 8.58.0 debug: 4.4.3 typescript: 6.0.3 transitivePeerDependencies: @@ -21115,27 +21095,6 @@ snapshots: adm-zip@0.5.10: {} - ag-charts-community@13.1.0: - dependencies: - ag-charts-core: 13.1.0 - ag-charts-locale: 13.1.0 - ag-charts-types: 13.1.0 - optional: true - - ag-charts-core@13.1.0: - dependencies: - ag-charts-types: 13.1.0 - optional: true - - ag-charts-enterprise@13.1.0: - dependencies: - ag-charts-community: 13.1.0 - ag-charts-core: 13.1.0 - optional: true - - ag-charts-locale@13.1.0: - optional: true - ag-charts-types@13.1.0: {} ag-grid-community@35.1.0: @@ -21145,9 +21104,6 @@ snapshots: ag-grid-enterprise@35.1.0: dependencies: ag-grid-community: 35.1.0 - optionalDependencies: - ag-charts-community: 13.1.0 - ag-charts-enterprise: 13.1.0 ag-grid-react@35.1.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: @@ -22573,7 +22529,7 @@ snapshots: functional-red-black-tree: 1.0.1 jsx-ast-utils-x: 0.1.0 lodash.merge: 4.6.2 - minimatch: 10.1.1 + minimatch: 10.2.5 scslre: 0.3.0 semver: 7.7.3 typescript: 6.0.3 @@ -24498,10 +24454,6 @@ snapshots: minimalistic-assert@1.0.1: {} - minimatch@10.1.1: - dependencies: - '@isaacs/brace-expansion': 5.0.1 - minimatch@10.2.3: dependencies: brace-expansion: 5.0.12 @@ -25196,6 +25148,12 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 + prop-types@15.7.2: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -25487,7 +25445,7 @@ snapshots: '@babel/runtime': 7.29.10 dom-helpers: 5.2.1 loose-envify: 1.4.0 - prop-types: 15.8.1 + prop-types: 15.7.2 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json index b5436089efc..ba220cd7e05 100644 --- a/common/config/rush/version-policies.json +++ b/common/config/rush/version-policies.json @@ -2,14 +2,14 @@ { "definitionName": "lockStepVersion", "policyName": "sdk", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "nextBump": "prerelease", "mainProject": "@gooddata/sdk-ui-all" }, { "definitionName": "lockStepVersion", "policyName": "sdk-not-npm-publish", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "nextBump": "prerelease", "mainProject": "@gooddata/sdk-ui-all" } diff --git a/common/scripts/install-run-rush.js b/common/scripts/install-run-rush.js index 5b1da11a79b..4daf9508912 100644 --- a/common/scripts/install-run-rush.js +++ b/common/scripts/install-run-rush.js @@ -1,3 +1,5 @@ +// (C) 2026 GoodData Corporation + // THIS FILE WAS GENERATED BY A TOOL. ANY MANUAL MODIFICATIONS WILL GET OVERWRITTEN WHENEVER RUSH IS UPGRADED. // // This script is intended for usage in an automated build environment where the Rush command may not have diff --git a/common/scripts/install-run.js b/common/scripts/install-run.js index 75d6014e61c..875968d0f25 100644 --- a/common/scripts/install-run.js +++ b/common/scripts/install-run.js @@ -1,3 +1,5 @@ +// (C) 2026 GoodData Corporation + // THIS FILE WAS GENERATED BY A TOOL. ANY MANUAL MODIFICATIONS WILL GET OVERWRITTEN WHENEVER RUSH IS UPGRADED. // // This script is intended for usage in an automated build environment where a Node tool may not have diff --git a/examples/playground/package.json b/examples/playground/package.json index bb04046b7dd..3017cd5cc19 100644 --- a/examples/playground/package.json +++ b/examples/playground/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/playground", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": true, "description": "GoodData.UI SDK - Developer Playground", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples-template/package.json b/examples/sdk-interactive-examples/examples-template/package.json index 767e5aa9e9f..b172c73493c 100644 --- a/examples/sdk-interactive-examples/examples-template/package.json +++ b/examples/sdk-interactive-examples/examples-template/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-examples-template", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": false, "description": "GoodData interactive example template", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-attributefilter/package.json b/examples/sdk-interactive-examples/examples/example-attributefilter/package.json index 9517501d8d5..5ae40f27b63 100644 --- a/examples/sdk-interactive-examples/examples/example-attributefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-attributefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-attributefilter", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": false, "description": "This example demonstrates how to use the AttributeFilter component to filter data in a visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-chartconfig/package.json b/examples/sdk-interactive-examples/examples/example-chartconfig/package.json index 941586fbdf3..7a8acea39df 100644 --- a/examples/sdk-interactive-examples/examples/example-chartconfig/package.json +++ b/examples/sdk-interactive-examples/examples/example-chartconfig/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-chartconfig", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": false, "description": "This interactive example demonstrates how to manipulate the chart config.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-columnchart/package.json b/examples/sdk-interactive-examples/examples/example-columnchart/package.json index 666dc22a0e8..a587f427f94 100644 --- a/examples/sdk-interactive-examples/examples/example-columnchart/package.json +++ b/examples/sdk-interactive-examples/examples/example-columnchart/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-columnchart", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": false, "description": "This example demonstrates the usage of the ColumnChart component with the viewBy and stackBy properties.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-combochart/package.json b/examples/sdk-interactive-examples/examples/example-combochart/package.json index 06041367f9b..78c1033294f 100644 --- a/examples/sdk-interactive-examples/examples/example-combochart/package.json +++ b/examples/sdk-interactive-examples/examples/example-combochart/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-combochart", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": false, "description": "Example demonstrates ComboChart secondaryMeasures definition. ", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-dashboard/package.json b/examples/sdk-interactive-examples/examples/example-dashboard/package.json index 081e7ff4d6b..9f085b5f685 100644 --- a/examples/sdk-interactive-examples/examples/example-dashboard/package.json +++ b/examples/sdk-interactive-examples/examples/example-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-dashboard", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": false, "description": "This example shows how to use the Dashboard component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-datefilter/package.json b/examples/sdk-interactive-examples/examples/example-datefilter/package.json index a63eb1627aa..df409e3d380 100644 --- a/examples/sdk-interactive-examples/examples/example-datefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-datefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-datefilter", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": false, "description": "Example demonstrates usage of Date Filter component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json b/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json index 21ef798cfb4..1bee0fa3774 100644 --- a/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json +++ b/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-dependentfilters", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": false, "description": "This example demonstrates how to use multiple attribute filters linked together to filter data in a visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-execute/package.json b/examples/sdk-interactive-examples/examples/example-execute/package.json index 427fffa5aeb..43f2443cb00 100644 --- a/examples/sdk-interactive-examples/examples/example-execute/package.json +++ b/examples/sdk-interactive-examples/examples/example-execute/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-execute", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": false, "description": "This example demonstrates using Execute component and build custom visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-granularity/package.json b/examples/sdk-interactive-examples/examples/example-granularity/package.json index 4c7450786f1..cf027cf36c4 100644 --- a/examples/sdk-interactive-examples/examples/example-granularity/package.json +++ b/examples/sdk-interactive-examples/examples/example-granularity/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-granularity", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": false, "description": "This example exmplains DateFilter granularity ", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-headline/package.json b/examples/sdk-interactive-examples/examples/example-headline/package.json index e7bf249e57f..336caa6a017 100644 --- a/examples/sdk-interactive-examples/examples/example-headline/package.json +++ b/examples/sdk-interactive-examples/examples/example-headline/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-headline", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": false, "description": "This example shows how to use the Headline component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-pivottable/package.json b/examples/sdk-interactive-examples/examples/example-pivottable/package.json index 203e078aa2f..e59572df243 100644 --- a/examples/sdk-interactive-examples/examples/example-pivottable/package.json +++ b/examples/sdk-interactive-examples/examples/example-pivottable/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-pivottable", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": false, "description": "Basic PivotTable manipulation.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json b/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json index 3c70521aee2..5557fb3378b 100644 --- a/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-relativedatefilter", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": false, "description": "Example demonstrates how to set relative DateFilter for visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-repeater/package.json b/examples/sdk-interactive-examples/examples/example-repeater/package.json index aea56b9fb93..7ea374c81a3 100644 --- a/examples/sdk-interactive-examples/examples/example-repeater/package.json +++ b/examples/sdk-interactive-examples/examples/example-repeater/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-repeater", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": false, "description": "This example demonstrates how to use Repeater component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/package.json b/examples/sdk-interactive-examples/package.json index 500b228ddf7..2be715b3e29 100644 --- a/examples/sdk-interactive-examples/package.json +++ b/examples/sdk-interactive-examples/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-examples", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": false, "description": "GoodData React interactive examples", "license": "LicenseRef-LICENSE", diff --git a/libs/api-client-tiger/package.json b/libs/api-client-tiger/package.json index 9b9a6b1058a..628ec68379d 100644 --- a/libs/api-client-tiger/package.json +++ b/libs/api-client-tiger/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/api-client-tiger", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "API Client for GoodData Cloud and GoodData.CN", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-backend-base/package.json b/libs/sdk-backend-base/package.json index 429ec59c84c..4d56fc465d4 100644 --- a/libs/sdk-backend-base/package.json +++ b/libs/sdk-backend-base/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-base", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData.UI SDK - Base for backend implementations", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-backend-mockingbird/package.json b/libs/sdk-backend-mockingbird/package.json index 93f829cc41f..a73a803b6ae 100644 --- a/libs/sdk-backend-mockingbird/package.json +++ b/libs/sdk-backend-mockingbird/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-mockingbird", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "Mock GoodData Backend SPI implementation", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-backend-spi/package.json b/libs/sdk-backend-spi/package.json index ee843fbf8ae..8910e2ca2ab 100644 --- a/libs/sdk-backend-spi/package.json +++ b/libs/sdk-backend-spi/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-spi", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData Backend SPI abstraction interfaces", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-backend-tiger/package.json b/libs/sdk-backend-tiger/package.json index 3c9a045ab0c..ff469ed5a46 100644 --- a/libs/sdk-backend-tiger/package.json +++ b/libs/sdk-backend-tiger/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-tiger", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-code-convertors/api/sdk-code-convertors.api.md b/libs/sdk-code-convertors/api/sdk-code-convertors.api.md index e19981e3335..fc8e4e7aaa8 100644 --- a/libs/sdk-code-convertors/api/sdk-code-convertors.api.md +++ b/libs/sdk-code-convertors/api/sdk-code-convertors.api.md @@ -40,6 +40,7 @@ import { DeclarativeReport } from '@gooddata/api-client-tiger'; import { DeclarativeReportPageLayout } from '@gooddata/api-client-tiger'; import { DeclarativeTable } from '@gooddata/api-client-tiger'; import { DeclarativeVisualizationObject } from '@gooddata/api-client-tiger'; +import { DeclarativeWorkspaceModel } from '@gooddata/api-client-tiger'; import { EmptyValues } from '@gooddata/sdk-model'; import type { Fields } from '@gooddata/sdk-code-schemas/v1'; import type { Filter } from '@gooddata/sdk-code-schemas/v1'; @@ -4464,6 +4465,17 @@ export function yamlDatasetToDeclarative(entities: ExportEntities, input: Datase // @public (undocumented) export function yamlDateDatesetToDeclarative(input: DateDataset): DeclarativeDateDataset; +// @public +export function yamlDocumentsToDeclarativeWorkspace(documents: EntityData[], options?: YamlDocumentsToDeclarativeWorkspaceOptions): Required; + +// @public +export type YamlDocumentsToDeclarativeWorkspaceOptions = { + dataSourceId?: string; +}; + +// @internal +export function yamlEntitiesToDeclarativeWorkspace(entities: ExportEntities, input?: YamlDocumentsToDeclarativeWorkspaceOptions): Required; + // @internal (undocumented) export type YamlFieldData = { format?: string; diff --git a/libs/sdk-code-convertors/package.json b/libs/sdk-code-convertors/package.json index 705baadafff..9885700a231 100644 --- a/libs/sdk-code-convertors/package.json +++ b/libs/sdk-code-convertors/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-code-convertors", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData AAC declarative converters", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-code-convertors/python/pyproject.toml b/libs/sdk-code-convertors/python/pyproject.toml index 8a994cda0ce..b753af26423 100644 --- a/libs/sdk-code-convertors/python/pyproject.toml +++ b/libs/sdk-code-convertors/python/pyproject.toml @@ -2,7 +2,7 @@ [project] name = "gooddata-code-convertors" -version = "11.67.0a1" +version = "11.67.0a2" description = "GoodData AAC YAML / Declarative API code converters (WASM-powered)" readme = "README.md" license = { file = "LICENSE" } diff --git a/libs/sdk-code-convertors/src/index.ts b/libs/sdk-code-convertors/src/index.ts index 650057870d5..cbb0045e66c 100644 --- a/libs/sdk-code-convertors/src/index.ts +++ b/libs/sdk-code-convertors/src/index.ts @@ -124,6 +124,11 @@ export { } from "./to/yamlDashboardToDeclarative.js"; export { yamlPluginToDeclarative } from "./to/yamlPluginToDeclarative.js"; export { yamlAttributeHierarchyToDeclarative } from "./to/yamlAttributeHierarchyToDeclarative.js"; +export { + yamlDocumentsToDeclarativeWorkspace, + yamlEntitiesToDeclarativeWorkspace, + type YamlDocumentsToDeclarativeWorkspaceOptions, +} from "./to/yamlDocumentsToDeclarativeWorkspace.js"; // Entity converters: Declarative API → YAML export { declarativeDatasetToYaml } from "./from/declarativeDatasetToYaml.js"; export { declarativeDateInstanceToYaml } from "./from/declarativeDateInstanceToYaml.js"; diff --git a/libs/sdk-code-convertors/src/to/yamlDocumentsToDeclarativeWorkspace.ts b/libs/sdk-code-convertors/src/to/yamlDocumentsToDeclarativeWorkspace.ts new file mode 100644 index 00000000000..c3d99481e19 --- /dev/null +++ b/libs/sdk-code-convertors/src/to/yamlDocumentsToDeclarativeWorkspace.ts @@ -0,0 +1,129 @@ +// (C) 2023-2026 GoodData Corporation + +import { type DeclarativeFilterContext, type DeclarativeWorkspaceModel } from "@gooddata/api-client-tiger"; +import type { Dashboard, Dataset, Visualisation } from "@gooddata/sdk-code-schemas/v1"; + +import { + AttributeHierarchyTypes, + ComputedAttributeTypes, + DashboardTypes, + DatasetTypes, + DateDatasetTypes, + MetricTypes, + ParameterTypes, + PluginTypes, + VisualisationsTypes, +} from "../conts.js"; +import { type DeclarativeEntityData, type EntityData, type ExportEntities } from "../types.js"; + +import { yamlAttributeHierarchyToDeclarative } from "./yamlAttributeHierarchyToDeclarative.js"; +import { yamlComputedAttributeToDeclarative } from "./yamlComputedAttributeToDeclarative.js"; +import { yamlDashboardToDeclarative } from "./yamlDashboardToDeclarative.js"; +import { yamlDatasetToDeclarative } from "./yamlDatasetToDeclarative.js"; +import { yamlDateDatesetToDeclarative } from "./yamlDateDatasetToDeclarative.js"; +import { yamlMetricToDeclarative } from "./yamlMetricToDeclarative.js"; +import { yamlParameterToDeclarative } from "./yamlParameterToDeclarative.js"; +import { yamlPluginToDeclarative } from "./yamlPluginToDeclarative.js"; +import { yamlVisualisationToDeclarative } from "./yamlVisualisationToDeclarative.js"; + +/** + * Options of {@link yamlDocumentsToDeclarativeWorkspace}. + * + * @public + */ +export type YamlDocumentsToDeclarativeWorkspaceOptions = { + /** + * Data source of the datasets that do not name their own `data_source`. + * + * @remarks + * A dataset with no `data_source` gets an empty data source id when this is not set. + */ + dataSourceId?: string; +}; + +/** + * Converts the AaC documents of one workspace to its declarative model. + * + * @remarks + * The documents must be valid against the AaC schema. The ids must be unique in each collection of + * the declarative model. For example, all chart types share the `visualizationObjects` collection. + * The function does not report duplicate ids. + * + * The function generates the filter context ids. Two calls give different ids. + * + * @param documents - the AaC documents of the workspace + * @param options - the conversion options + * @returns the declarative model of the workspace + * + * @public + */ +export function yamlDocumentsToDeclarativeWorkspace( + documents: EntityData[], + options: YamlDocumentsToDeclarativeWorkspaceOptions = {}, +): Required { + const entities: ExportEntities = documents.map((document) => ({ + id: document.id, + type: document.type, + path: "", + data: document, + })); + return yamlEntitiesToDeclarativeWorkspace(entities, options); +} + +/** + * Converts the entities of one workspace to its declarative model and stores the declarative form + * of each entity in its `declarative` property. + * + * @internal + */ +export function yamlEntitiesToDeclarativeWorkspace( + entities: ExportEntities, + { dataSourceId }: YamlDocumentsToDeclarativeWorkspaceOptions = {}, +): Required { + const convert = ( + types: string[], + toDeclarative: (data: T) => R, + ): R[] => + entities + .filter((entity) => types.includes(entity.type)) + .map((entity) => { + const declarative = toDeclarative(entity.data as T); + entity.declarative = declarative; + return declarative; + }); + + const dashboards = convert(DashboardTypes, (dashboard: Dashboard) => + yamlDashboardToDeclarative(entities, dashboard), + ); + + return { + ldm: { + datasets: convert(DatasetTypes, (dataset: Dataset) => + yamlDatasetToDeclarative(entities, dataset, dataSourceId), + ), + dateInstances: convert(DateDatasetTypes, yamlDateDatesetToDeclarative), + }, + analytics: { + metrics: convert(MetricTypes, yamlMetricToDeclarative), + parameters: convert(ParameterTypes, yamlParameterToDeclarative), + computedAttributes: convert(ComputedAttributeTypes, yamlComputedAttributeToDeclarative), + visualizationObjects: convert(VisualisationsTypes, (visualisation: Visualisation) => + yamlVisualisationToDeclarative(entities, visualisation), + ), + analyticalDashboards: dashboards.map(({ dashboard }) => dashboard), + filterContexts: dashboards.flatMap(dashboardFilterContexts), + dashboardPlugins: convert(PluginTypes, yamlPluginToDeclarative), + attributeHierarchies: convert(AttributeHierarchyTypes, yamlAttributeHierarchyToDeclarative), + }, + }; +} + +// A V2 dashboard repeats its root filter context as the filter context of its first tab. +// A V3 dashboard has no root filter context. +function dashboardFilterContexts({ + filterContext, + tabFilterContexts = [], +}: ReturnType): DeclarativeFilterContext[] { + const contexts = filterContext ? [filterContext, ...tabFilterContexts] : tabFilterContexts; + return contexts.filter((context, index) => contexts.findIndex(({ id }) => id === context.id) === index); +} diff --git a/libs/sdk-code-convertors/src/workspaceConversion.test.ts b/libs/sdk-code-convertors/src/workspaceConversion.test.ts new file mode 100644 index 00000000000..dec8edc2714 --- /dev/null +++ b/libs/sdk-code-convertors/src/workspaceConversion.test.ts @@ -0,0 +1,134 @@ +// (C) 2026 GoodData Corporation + +import { describe, expect, it } from "vitest"; + +import type { Dashboard, Dataset, Metric, Visualisation } from "@gooddata/sdk-code-schemas/v1"; + +import { + yamlDocumentsToDeclarativeWorkspace, + yamlEntitiesToDeclarativeWorkspace, +} from "./to/yamlDocumentsToDeclarativeWorkspace.js"; +import type { ExportEntities } from "./types.js"; + +const orders: Dataset = { + type: "dataset", + id: "orders", + table_path: "demo/orders", + primary_key: "order_id", + fields: { + order_id: { type: "attribute", source_column: "order_id", data_type: "STRING" }, + amount: { type: "fact", source_column: "amount", data_type: "NUMERIC" }, + }, +}; + +const revenue: Metric = { + type: "metric", + id: "revenue", + maql: "SELECT SUM({fact/amount})", +}; + +const revenueChart: Visualisation = { + type: "column_chart", + id: "revenue_chart", + query: { fields: { revenue: "metric/revenue" } }, + metrics: ["revenue"], +}; + +const overview: Dashboard = { + type: "dashboard", + id: "overview", + sections: [{ widgets: [{ visualization: "revenue_chart", columns: 12 }] }], +}; + +const tabbed = (version: "2" | "3", tabIds: string[]): Dashboard => ({ + type: "dashboard", + id: `tabbed_v${version}`, + version, + tabs: tabIds.map((id) => ({ + id, + title: id, + sections: [{ widgets: [{ visualization: "revenue_chart", columns: 12 }] }], + })), +}); + +const tabFilterContextIds = (content: object) => + (content as { tabs: { filterContextRef: { identifier: { id: string } } }[] }).tabs.map( + ({ filterContextRef }) => filterContextRef.identifier.id, + ); + +describe("yamlDocumentsToDeclarativeWorkspace", () => { + it("puts each document into its collection", () => { + const ws = yamlDocumentsToDeclarativeWorkspace([orders, revenue, revenueChart, overview]); + + expect(ws.ldm.datasets?.map(({ id }) => id)).toEqual(["orders"]); + expect(ws.analytics.metrics?.map(({ id }) => id)).toEqual(["revenue"]); + expect(ws.analytics.visualizationObjects?.map(({ id }) => id)).toEqual(["revenue_chart"]); + expect(ws.analytics.analyticalDashboards?.map(({ id }) => id)).toEqual(["overview"]); + }); + + it("gives each dashboard filter context once", () => { + const ws = yamlDocumentsToDeclarativeWorkspace([revenueChart, overview]); + const ids = ws.analytics.filterContexts?.map(({ id }) => id) ?? []; + + expect(ids).toHaveLength(1); + expect(ws.analytics.analyticalDashboards?.[0].content).toMatchObject({ + filterContextRef: { identifier: { id: ids[0] } }, + }); + }); + + it.each([ + ["2", ["a", "b", "c"]], + ["3", ["a", "b"]], + ] as const)("gives each tab of a V%s dashboard its own filter context", (version, tabIds) => { + const ws = yamlDocumentsToDeclarativeWorkspace([revenueChart, tabbed(version, [...tabIds])]); + const ids = ws.analytics.filterContexts?.map(({ id }) => id); + const content = ws.analytics.analyticalDashboards?.[0].content as { + filterContextRef?: { identifier: { id: string } }; + }; + + expect(ids).toEqual(tabFilterContextIds(content)); + expect(new Set(ids).size).toBe(tabIds.length); + expect(content.filterContextRef?.identifier.id).toBe(version === "2" ? ids?.[0] : undefined); + }); + + it("binds the datasets without a data source to the given data source", () => { + const ownSource: Dataset = { ...orders, id: "returns", data_source: "warehouse" }; + + const ws = yamlDocumentsToDeclarativeWorkspace([orders, ownSource], { dataSourceId: "demo_ds" }); + + expect(ws.ldm.datasets?.map((dataset) => dataset.dataSourceTableId?.dataSourceId)).toEqual([ + "demo_ds", + "warehouse", + ]); + }); + + it("returns empty collections for no documents", () => { + expect(yamlDocumentsToDeclarativeWorkspace([])).toEqual({ + ldm: { datasets: [], dateInstances: [] }, + analytics: { + metrics: [], + parameters: [], + computedAttributes: [], + visualizationObjects: [], + analyticalDashboards: [], + filterContexts: [], + dashboardPlugins: [], + attributeHierarchies: [], + }, + }); + }); + + it("stores the declarative form of each entity", () => { + const entities: ExportEntities = [revenue, overview].map((data) => ({ + id: data.id, + type: data.type, + path: "metrics.yaml", + data, + })); + + const ws = yamlEntitiesToDeclarativeWorkspace(entities); + + expect(entities[0].declarative).toBe(ws.analytics.metrics?.[0]); + expect(entities[1].declarative).toMatchObject({ dashboard: ws.analytics.analyticalDashboards?.[0] }); + }); +}); diff --git a/libs/sdk-code-schemas/package.json b/libs/sdk-code-schemas/package.json index ea99146225e..fd2b1cc5f3a 100644 --- a/libs/sdk-code-schemas/package.json +++ b/libs/sdk-code-schemas/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-code-schemas", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData AAC JSON Schema types and compiled schemas", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-e2e-utils/package.json b/libs/sdk-e2e-utils/package.json index 2f8fca7a2f9..6fef97ad1b5 100644 --- a/libs/sdk-e2e-utils/package.json +++ b/libs/sdk-e2e-utils/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-e2e-utils", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData utility functions for Playwright E2E tests", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-embedding/package.json b/libs/sdk-embedding/package.json index 03ce3d927df..73bd94d77e6 100644 --- a/libs/sdk-embedding/package.json +++ b/libs/sdk-embedding/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-embedding", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData Embedding APIs", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-maql-language-server/package.json b/libs/sdk-maql-language-server/package.json index 21ba62e631e..0ab76c93e1a 100644 --- a/libs/sdk-maql-language-server/package.json +++ b/libs/sdk-maql-language-server/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-maql-language-server", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "license": "MIT", "author": { "name": "Stellar", diff --git a/libs/sdk-model/api/sdk-model.api.md b/libs/sdk-model/api/sdk-model.api.md index d6b6f9732cd..0a3f42d5234 100644 --- a/libs/sdk-model/api/sdk-model.api.md +++ b/libs/sdk-model/api/sdk-model.api.md @@ -8660,7 +8660,8 @@ export interface IThemeDocuments { spacing?: IThemeDocumentsSpacing; // (undocumented) table?: IPublisherTableStyleV2; - takeaway?: IPublisherTextWidgetStyleV2; + // (undocumented) + takeaway?: ThemeDocumentsTakeawayStyle; // (undocumented) textStyle?: IThemeDocumentsTextStyle; } @@ -8787,8 +8788,6 @@ export interface IThemeDocumentsText extends IThemeDocumentsTextGroup { // @alpha export interface IThemeDocumentsTextGroup { - // (undocumented) - color?: PublisherColorValueV2; lineHeight?: number; } @@ -10511,6 +10510,9 @@ export type ThemeDashboardDensity = "comfortable" | "compact"; // @alpha export type ThemeDocumentsLength = number; +// @alpha +export type ThemeDocumentsTakeawayStyle = Omit; + // @beta export type ThemeFontUri = string; diff --git a/libs/sdk-model/package.json b/libs/sdk-model/package.json index 959770c3485..0a0495f4723 100644 --- a/libs/sdk-model/package.json +++ b/libs/sdk-model/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-model", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData Model definitions used by UI components and Backend SPI", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-model/src/index.ts b/libs/sdk-model/src/index.ts index 96226868cec..51f1e1542d3 100644 --- a/libs/sdk-model/src/index.ts +++ b/libs/sdk-model/src/index.ts @@ -1195,6 +1195,7 @@ export { type IThemeDocumentsTextStyle, type IThemeDocumentsTypography, type ThemeDocumentsLength, + type ThemeDocumentsTakeawayStyle, type ImageUri, type IThemeAxis, type IThemeChartTooltip, diff --git a/libs/sdk-model/src/theme/index.ts b/libs/sdk-model/src/theme/index.ts index 750fa683486..332da892a78 100644 --- a/libs/sdk-model/src/theme/index.ts +++ b/libs/sdk-model/src/theme/index.ts @@ -1430,8 +1430,6 @@ export interface IThemeDocumentsTypography { * @alpha */ export interface IThemeDocumentsTextGroup { - color?: PublisherColorValueV2; - /** * A multiple of the font size. */ @@ -1530,6 +1528,13 @@ export interface IThemeDocumentsShadow { opacity?: number; } +/** + * The default look of a takeaway widget. Its text takes the theme's text colors, as every text does. + * + * @alpha + */ +export type ThemeDocumentsTakeawayStyle = Omit; + /** * Page defaults of documents. * @@ -1578,10 +1583,7 @@ export interface IThemeDocuments { headline?: IPublisherHeadlineStyleV2; shadows?: Record; - /** - * The default look of a takeaway widget. - */ - takeaway?: IPublisherTextWidgetStyleV2; + takeaway?: ThemeDocumentsTakeawayStyle; page?: IThemeDocumentsPage; corners?: IThemeDocumentsCorners; spacing?: IThemeDocumentsSpacing; diff --git a/libs/sdk-pluggable-application-model/package.json b/libs/sdk-pluggable-application-model/package.json index c6d55863327..3a56c23c453 100644 --- a/libs/sdk-pluggable-application-model/package.json +++ b/libs/sdk-pluggable-application-model/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-pluggable-application-model", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData SDK model contracts for pluggable applications", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-all/package.json b/libs/sdk-ui-all/package.json index cfe68f7c12b..2fb62afbbcc 100644 --- a/libs/sdk-ui-all/package.json +++ b/libs/sdk-ui-all/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-all", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData SDK - All-In-One", "license": "LicenseRef-LICENSE", "author": "GoodData", diff --git a/libs/sdk-ui-analytical-designer/package.json b/libs/sdk-ui-analytical-designer/package.json index 94cb78e20bc..fe098512dec 100644 --- a/libs/sdk-ui-analytical-designer/package.json +++ b/libs/sdk-ui-analytical-designer/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-analytical-designer", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "Analytical Designer UI library — core components, sagas, reducers, and application logic", "license": "LicenseRef-LICENSE", "author": { diff --git a/libs/sdk-ui-application-header/package.json b/libs/sdk-ui-application-header/package.json index 8029e485d30..3113fc65807 100644 --- a/libs/sdk-ui-application-header/package.json +++ b/libs/sdk-ui-application-header/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-application-header", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData SDK application header components — workspace picker, notifications dropdown", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-catalog/package.json b/libs/sdk-ui-catalog/package.json index 6dc2d648095..1656e77f6e0 100644 --- a/libs/sdk-ui-catalog/package.json +++ b/libs/sdk-ui-catalog/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-catalog", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData SDK - Analytics Catalog", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-catalog/src/parameter/parameterCompletions.test.ts b/libs/sdk-ui-catalog/src/parameter/parameterCompletions.test.ts index 940d3651f22..303a681534b 100644 --- a/libs/sdk-ui-catalog/src/parameter/parameterCompletions.test.ts +++ b/libs/sdk-ui-catalog/src/parameter/parameterCompletions.test.ts @@ -7,6 +7,7 @@ import { describe, expect, it } from "vitest"; import type { ParameterType } from "@gooddata/sdk-model"; import { createParameterCompletions } from "./parameterCompletions.js"; +import { validateParameterYaml } from "./parameterValidation.js"; const NUMBER_ONLY: ParameterType[] = ["NUMBER"]; const ALL_TYPES: ParameterType[] = ["NUMBER", "STRING"]; @@ -25,18 +26,29 @@ function labelsOf(result: ReturnType) { type ApplyView = { state: EditorState; dispatch: (transaction: Transaction) => void }; type SnippetApply = (view: ApplyView, completion: Completion, from: number, to: number) => void; -function applyCompletion(option: Completion, doc: string, from: number, to: number) { - const { apply } = option; - if (typeof apply !== "function") { - throw new Error("expected a snippet apply function"); +function applyAt(docWithCursor: string, label: string) { + const pos = docWithCursor.indexOf("|"); + const doc = docWithCursor.replace("|", ""); + const result = completeAt(docWithCursor); + const option = result?.options.find((candidate) => candidate.label === label); + if (!result || !option) { + throw new Error(`expected a "${label}" completion`); } + return applyCompletion(option, doc, result.from, pos); +} + +function applyCompletion(option: Completion, doc: string, from: number, to: number) { const view: ApplyView = { - state: EditorState.create({ doc, selection: { anchor: from } }), + state: EditorState.create({ doc, selection: { anchor: to } }), dispatch(transaction) { view.state = transaction.state; }, }; - (apply as SnippetApply)(view, option, from, to); + if (typeof option.apply === "function") { + (option.apply as SnippetApply)(view, option, from, to); + } else { + view.dispatch(view.state.update({ changes: { from, to, insert: option.label } })); + } return { doc: view.state.doc.toString(), cursor: view.state.selection.main.head }; } @@ -49,7 +61,7 @@ describe("createParameterCompletions", () => { min: 0 |`); - expect(labelsOf(result)).toEqual(["min", "max"]); + expect(labelsOf(result)).toEqual(["max"]); }); it("offers constraint keys on a fresh line under constraints with no siblings", () => { @@ -68,7 +80,7 @@ describe("createParameterCompletions", () => { defaultValue: 10 |`); - expect(labelsOf(result)).toEqual(["type", "defaultValue", "constraints"]); + expect(labelsOf(result)).toEqual(["constraints"]); }); it("offers root keys at column zero", () => { @@ -77,7 +89,7 @@ describe("createParameterCompletions", () => { type: NUMBER defaultValue: 10`); - expect(labelsOf(result)).toEqual(["type", "id", "title", "description", "tags", "definition"]); + expect(labelsOf(result)).toEqual(["type", "title", "description", "tags", "definition"]); }); it("completes a partially typed constraint key from the word start", () => { @@ -265,7 +277,7 @@ definition: defaultValue: actual |`); - expect(labelsOf(result)).toEqual(["type", "defaultValue", "constraints", "cardinality"]); + expect(labelsOf(result)).toEqual(["constraints", "cardinality"]); }); it("never offers cardinality when only NUMBER is enabled", () => { @@ -277,7 +289,7 @@ definition: NUMBER_ONLY, ); - expect(labelsOf(result)).toEqual(["type", "defaultValue", "constraints"]); + expect(labelsOf(result)).toEqual(["constraints"]); }); it("offers entry keys on a fresh sequence item under allowedValues", () => { @@ -304,7 +316,7 @@ definition: expect(result?.from).toBe(doc.indexOf("va|")); }); - it("offers entry keys on a continuation line inside an allowedValues entry", () => { + it("offers only missing entry keys on a continuation line inside an allowedValues entry", () => { const result = completeAt(`definition: type: STRING defaultValue: actual @@ -313,9 +325,87 @@ definition: - value: actual |`); + expect(labelsOf(result)).toEqual(["title", "- value"]); + expect(result?.options.find((option) => option.label === "- value")?.boost).toBe(-1); + }); + + it("offers no entry keys when the allowedValues entry has all of them", () => { + const result = completeAt(`definition: + type: STRING + defaultValue: actual + constraints: + allowedValues: + - value: actual + title: Actual + |`); + + expect(labelsOf(result)).toEqual(["- value"]); + }); + + it("hides entry keys present below the cursor in the same entry", () => { + const result = completeAt(`definition: + type: STRING + defaultValue: actual + constraints: + allowedValues: + - value: actual + | + title: Actual`); + + expect(labelsOf(result)).toEqual([]); + }); + + it("hides entry keys present below a fresh sequence item marker", () => { + const result = completeAt(`definition: + type: STRING + defaultValue: actual + constraints: + allowedValues: + - | + title: Actual`); + + expect(labelsOf(result)).toEqual(["value"]); + }); + + it("offers all entry keys on a fresh item after a completed entry", () => { + const result = completeAt(`definition: + type: STRING + defaultValue: actual + constraints: + allowedValues: + - value: actual + title: Actual + - | + - value: forecast + title: Forecast`); + expect(labelsOf(result)).toEqual(["value", "title"]); }); + it("hides constraint keys already present under constraints", () => { + const result = completeAt(`definition: + type: STRING + constraints: + minLength: 1 + |`); + + expect(labelsOf(result)).toEqual(["maxLength", "allowedValues"]); + }); + + it("hides definition keys present below the cursor", () => { + const result = completeAt( + `definition: + | + type: NUMBER + constraints: + min: 0 +id: threshold`, + NUMBER_ONLY, + ); + + expect(labelsOf(result)).toEqual(["defaultValue"]); + }); + it("offers entry keys after a bare sequence item marker under allowedValues", () => { const result = completeAt(`definition: type: STRING @@ -338,7 +428,7 @@ definition: ti|`; const result = completeAt(doc); - expect(labelsOf(result)).toEqual(["value", "title"]); + expect(labelsOf(result)).toEqual(["title", "- value"]); expect(result?.from).toBe(doc.indexOf("ti|")); }); @@ -395,4 +485,103 @@ definition: expect(applied.doc).toBe(expectedDoc); expect(applied.cursor).toBe(expectedDoc.length); }); + + it("does not offer a new entry on the sequence item line itself", () => { + const result = completeAt(`definition: + type: STRING + defaultValue: actual + constraints: + allowedValues: + - value: actual + - |`); + + expect(labelsOf(result)).toEqual(["value", "title"]); + }); + + it("does not offer a new entry under a mapping parent", () => { + const result = completeAt(`definition: + type: STRING + constraints: + |`); + + expect(labelsOf(result)).toEqual(["minLength", "maxLength", "allowedValues"]); + }); + + it("inserts a new entry at the item indent when applying the new-entry completion", () => { + const applied = applyAt( + `definition: + type: STRING + defaultValue: actual + constraints: + allowedValues: + - value: actual + title: Actual + |`, + "- value", + ); + + const expectedDoc = + "definition:\n" + + " type: STRING\n" + + " defaultValue: actual\n" + + " constraints:\n" + + " allowedValues:\n" + + " - value: actual\n" + + " title: Actual\n" + + " - value: "; + expect(applied.doc).toBe(expectedDoc); + expect(applied.cursor).toBe(expectedDoc.length); + }); + + it("replaces a typed word when applying the new-entry completion", () => { + const applied = applyAt( + `definition: + type: STRING + defaultValue: actual + constraints: + allowedValues: + - value: actual + ti|`, + "- value", + ); + + expect(applied.doc.endsWith(" - value: actual\n - value: ")).toBe(true); + expect(applied.cursor).toBe(applied.doc.length); + }); + + it.each([ + ["a blank continuation line", ""], + ["a partially typed key", "ti"], + ])("keeps the indent when applying an entry key on %s", (_, typed) => { + const prefix = `definition: + type: STRING + defaultValue: actual + constraints: + allowedValues: + - value: actual + `; + const applied = applyAt(`${prefix}${typed}|`, "title"); + + expect(applied.doc).toBe(`${prefix}title`); + }); + + it("produces valid YAML after entering a unique value into a new entry", () => { + const applied = applyAt( + `definition: + type: STRING + defaultValue: actual + constraints: + allowedValues: + - value: actual + title: Actual + |`, + "- value", + ); + + const result = validateParameterYaml(`id: scenario\n${applied.doc}forecast\n`, { + enabledTypes: ALL_TYPES, + }); + + expect(result.isValid).toBe(true); + }); }); diff --git a/libs/sdk-ui-catalog/src/parameter/parameterCompletions.ts b/libs/sdk-ui-catalog/src/parameter/parameterCompletions.ts index 42849025e54..41467236eec 100644 --- a/libs/sdk-ui-catalog/src/parameter/parameterCompletions.ts +++ b/libs/sdk-ui-catalog/src/parameter/parameterCompletions.ts @@ -4,6 +4,7 @@ import { type Completion, type CompletionContext, type CompletionResult, + snippet, snippetCompletion, } from "@codemirror/autocomplete"; import type { Text } from "@codemirror/state"; @@ -63,12 +64,19 @@ export function createParameterCompletions(enabledTypes: ParameterType[]) { (declaredType ? vocabularyByType.get(declaredType) : undefined) ?? fallbackVocabulary; const entry = vocabulary[parent.key]; // A sequence's keys are valid only inside a `- ` item; a mapping's keys only outside one. - const inItem = itemMatch !== null || parent.inItem; + const inItem = itemMatch !== null || parent.itemIndent !== undefined; if (!entry || (entry.kind === "sequence") !== inItem) { return null; } - return { from, options: entry.options }; + const siblings = getSiblingKeys(context.state.doc, line.number, from - line.from); + const usedKeys = new Set([...siblings.above, ...siblings.below]); + const options = entry.options.filter((option) => !usedKeys.has(option.label)); + const atItemEnd = siblings.above.length > 0 && siblings.below.length === 0; + if (parent.itemIndent !== undefined && atItemEnd) { + options.push(toNewItemOption(entry.options[0].label, line.from + parent.itemIndent)); + } + return { from, options }; }; } @@ -86,26 +94,43 @@ function toVocabulary(schemaKeys: ParameterSchemaKeys): CompletionVocabulary { function toKeyOption(label: string, schemaKeys: ParameterSchemaKeys): Completion { const child = schemaKeys[label]; if (child?.kind === "sequence") { - return snippetCompletion(`${label}:\n\t- ${child.keys[0]}: \${}`, { label, type: "property" }); + return snippetCompletion(`${label}:\n\t${toItemTemplate(child.keys[0])}`, { + label, + type: "property", + }); } return { label, type: "property" }; } -type ParentContext = { key: string; inItem: boolean }; +function toNewItemOption(firstKey: string, itemFrom: number): Completion { + const insertItem = snippet(toItemTemplate(firstKey)); + return { + label: `- ${firstKey}`, + type: "property", + boost: -1, + apply: (view, completion, _from, to) => insertItem(view, completion, itemFrom, to), + }; +} + +function toItemTemplate(firstKey: string): string { + return `- ${firstKey}: \${}`; +} + +type ParentContext = { key: string; itemIndent: number | undefined }; /** * The key whose block a new entry at column `indent` would join: the nearest less-indented `key:` line * above. `key` is `""` only for the top-level mapping (`indent === 0`); the result is `null` when the * enclosing line is not a mapping key or an indented line has no less-indented ancestor above it (an * orphaned line, which is not top-level). When the nearest ancestor is a sequence item, it resolves - * to the key owning that sequence with `inItem` set, so continuation lines inside an item + * to the key owning that sequence with the item's `itemIndent` set, so continuation lines inside an item * report the list's key (e.g. `allowedValues`). Derived purely from indentation, not from a parsed * syntax tree, so it also resolves the parent on a blank indented line; the flip side is that it does * not understand block scalars (`|`, `>`), whose literal content is scanned as if it were mapping keys. */ function getParentKey(doc: Text, lineNumber: number, indent: number): ParentContext | null { if (indent === 0) { - return { key: "", inItem: false }; + return { key: "", itemIndent: undefined }; } for (let number = lineNumber - 1; number >= 1; number--) { @@ -116,17 +141,58 @@ function getParentKey(doc: Text, lineNumber: number, indent: number): ParentCont continue; } if (content === "-" || content.startsWith("- ")) { - const parent = getParentKey(doc, number, text.length - content.length); - return parent && { key: parent.key, inItem: true }; + const itemIndent = text.length - content.length; + const parent = getParentKey(doc, number, itemIndent); + return parent && { key: parent.key, itemIndent }; } const key = content.match(/^([\w-]+):/)?.[1]; - return key === undefined ? null : { key, inItem: false }; + return key === undefined ? null : { key, itemIndent: undefined }; } // Indented with no less-indented ancestor: an orphaned line, not top-level. return null; } +function getSiblingKeys(doc: Text, lineNumber: number, column: number): { above: string[]; below: string[] } { + const isItemStart = getIndent(doc.line(lineNumber).text) < column; + return { + above: isItemStart ? [] : scanKeys(doc, lineNumber, column, -1), + below: scanKeys(doc, lineNumber, column, 1), + }; +} + +function scanKeys(doc: Text, lineNumber: number, column: number, step: 1 | -1): string[] { + const keys: string[] = []; + for (let number = lineNumber + step; number >= 1 && number <= doc.lines; number += step) { + const text = doc.line(number).text; + const content = text.trimStart(); + if (content === "" || content.startsWith("#")) { + continue; + } + const isItemLine = getIndent(text) < column; + if (isItemLine && step === 1) { + break; + } + const key = getKeyAt(text, column); + if (key !== undefined) { + keys.push(key); + } + if (isItemLine) { + break; + } + } + return keys; +} + +function getIndent(text: string): number { + return text.length - text.trimStart().length; +} + +function getKeyAt(text: string, column: number): string | undefined { + const match = text.match(/^([\s-]*)([\w-]+):/); + return match?.[1].length === column ? match[2] : undefined; +} + /** * Value of `definition.type`: the first indented `type:` line whose enclosing mapping is `definition`. * Resolving the parent via {@link getParentKey} keeps a `type:` nested elsewhere — under `constraints` @@ -137,7 +203,7 @@ function getDeclaredType(doc: Text): string | undefined { const match = doc.line(number).text.match(/^(\s+)type:\s*(\w+)/); if (match) { const parent = getParentKey(doc, number, match[1].length); - if (parent?.key === "definition" && !parent.inItem) { + if (parent?.key === "definition" && parent.itemIndent === undefined) { return match[2]; } } diff --git a/libs/sdk-ui-charts/package.json b/libs/sdk-ui-charts/package.json index 383236eef58..558e566c625 100644 --- a/libs/sdk-ui-charts/package.json +++ b/libs/sdk-ui-charts/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-charts", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData.UI SDK - Charts", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-dashboard/api/sdk-ui-dashboard.api.md b/libs/sdk-ui-dashboard/api/sdk-ui-dashboard.api.md index df7c842e498..d9b8528b33f 100644 --- a/libs/sdk-ui-dashboard/api/sdk-ui-dashboard.api.md +++ b/libs/sdk-ui-dashboard/api/sdk-ui-dashboard.api.md @@ -624,6 +624,7 @@ export type ChangeAttributeFilterSelectionPayload = { readonly isWorkingSelectionChange?: boolean; readonly isResultOfMigration?: boolean; readonly isSelectionInvalid?: boolean; + readonly skipSync?: boolean; }; // @alpha @@ -3106,6 +3107,7 @@ export interface IAutomationsContextValue { getAttributeFilterDisplayForm: (displayForm: ObjRef) => IAttributeDisplayFormMetadataObject | undefined; getCatalogAttributeByRef: (ref: ObjRef) => ICatalogAttribute | ICatalogDateAttribute | undefined; hiddenFilters: FilterContextItem[]; + isApplyFiltersAllAtOnceEnabledAndSet: boolean; isExecutionTimestampMode: boolean; isFilterRestricted: (filter: FilterContextItem, tabId?: string) => boolean; isSecondaryTitleVisible: boolean; diff --git a/libs/sdk-ui-dashboard/package.json b/libs/sdk-ui-dashboard/package.json index f48658d0107..ee17cf3300a 100644 --- a/libs/sdk-ui-dashboard/package.json +++ b/libs/sdk-ui-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-dashboard", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData SDK - Dashboard Component", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/changeAttributeFilterSelectionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/changeAttributeFilterSelectionHandler.ts index b0229dfda5b..a8260d4e85d 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/changeAttributeFilterSelectionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/changeAttributeFilterSelectionHandler.ts @@ -36,6 +36,7 @@ export function* changeAttributeFilterSelectionHandler( isWorkingSelectionChange, isResultOfMigration, isSelectionInvalid, + skipSync, } = cmd.payload; // validate filterLocalId @@ -52,7 +53,9 @@ export function* changeAttributeFilterSelectionHandler( typeof selectEnableImmediateAttributeFilterDisplayAsLabelMigration > = yield select(selectEnableImmediateAttributeFilterDisplayAsLabelMigration); - const session: ITabSyncSession = yield call(beginTabSync, { enabled: !isResultOfMigration }); + const session: ITabSyncSession = yield call(beginTabSync, { + enabled: !isResultOfMigration && !skipSync, + }); yield call(putTabSynced, session, [ tabsActions.updateAttributeFilterSelection({ diff --git a/libs/sdk-ui-dashboard/src/model/commands/filters.ts b/libs/sdk-ui-dashboard/src/model/commands/filters.ts index 3bcee418a15..8f314a0f842 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/filters.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/filters.ts @@ -665,6 +665,14 @@ export type ChangeAttributeFilterSelectionPayload = { * When false, the filter's localId should be removed from filtersWithInvalidSelection array. */ readonly isSelectionInvalid?: boolean; + + /** + * Specifies that the selection is reset because the filter selection mode changes. + * The selection mode is filter configuration of a single tab, so the reset is not synced to other tabs. + * + * @internal + */ + readonly skipSync?: boolean; }; /** @@ -784,6 +792,36 @@ export function changeMigratedAttributeFilterSelection( }; } +/** + * Creates the ChangeAttributeFilterSelection command that resets the selection of an attribute filter + * whose selection mode changes. The reset applies to the tab of the filter only. + * + * @param filterLocalId - dashboard attribute filter's local id + * @param elements - elements + * @param selectionType - selection type. either 'IN' or 'NOT_IN' + * @param correlationId - specify correlation id to use for this command. this will be included in all + * events that will be emitted during the command processing + * + * @internal + */ +export function changeAttributeFilterSelectionForSelectionModeChange( + filterLocalId: string, + elements: IAttributeElements, + selectionType: AttributeFilterSelectionType, + correlationId?: string, +): ChangeAttributeFilterSelection { + return { + type: "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.CHANGE_SELECTION", + correlationId, + payload: { + filterLocalId, + elements, + selectionType, + skipSync: true, + }, + }; +} + /** * Creates the ChangeAttributeFilterSelection command for working filter. * diff --git a/libs/sdk-ui-dashboard/src/presentation/automations/alerting/state/alertStateRenderCount.test.tsx b/libs/sdk-ui-dashboard/src/presentation/automations/alerting/state/alertStateRenderCount.test.tsx index daf65d3723c..b080389dd4a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automations/alerting/state/alertStateRenderCount.test.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/automations/alerting/state/alertStateRenderCount.test.tsx @@ -144,6 +144,7 @@ const AUTOMATIONS_CONTEXT: IAutomationsContextValue = { weekStart: "Monday", timezone: "Europe/Prague", isWhiteLabeled: false, + isApplyFiltersAllAtOnceEnabledAndSet: false, isSecondaryTitleVisible: false, externalRecipient: undefined, features: { diff --git a/libs/sdk-ui-dashboard/src/presentation/automations/alerting/state/useAlertDialogValidity.test.tsx b/libs/sdk-ui-dashboard/src/presentation/automations/alerting/state/useAlertDialogValidity.test.tsx index 99a7d2777bb..a5373438e8b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automations/alerting/state/useAlertDialogValidity.test.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/automations/alerting/state/useAlertDialogValidity.test.tsx @@ -180,6 +180,7 @@ const AUTOMATIONS_FIXTURE: IAutomationsContextValue = { weekStart: "Monday", timezone: undefined, isWhiteLabeled: false, + isApplyFiltersAllAtOnceEnabledAndSet: false, isSecondaryTitleVisible: false, externalRecipient: undefined, features: { diff --git a/libs/sdk-ui-dashboard/src/presentation/automations/connectors/hooks/useBuildAutomationsContext.test.tsx b/libs/sdk-ui-dashboard/src/presentation/automations/connectors/hooks/useBuildAutomationsContext.test.tsx index 39017d71ca4..8b310c431f3 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automations/connectors/hooks/useBuildAutomationsContext.test.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/automations/connectors/hooks/useBuildAutomationsContext.test.tsx @@ -99,6 +99,7 @@ vi.mock("../../../../model/store/config/configSelectors.js", () => ({ selectEnableSlideshowExports: () => false, selectEnableStringParameters: () => true, selectExternalRecipient: () => undefined, + selectIsApplyFiltersAllAtOnceEnabledAndSet: () => false, selectIsWhiteLabeled: () => false, selectLocale: () => "en-US", selectSeparators: () => selectors.separators, diff --git a/libs/sdk-ui-dashboard/src/presentation/automations/connectors/hooks/useBuildAutomationsContext.ts b/libs/sdk-ui-dashboard/src/presentation/automations/connectors/hooks/useBuildAutomationsContext.ts index b9fa56a6795..dcd0a77ae54 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automations/connectors/hooks/useBuildAutomationsContext.ts +++ b/libs/sdk-ui-dashboard/src/presentation/automations/connectors/hooks/useBuildAutomationsContext.ts @@ -23,6 +23,7 @@ import { selectEnableStringParameters, selectEnableTimezoneChange, selectExternalRecipient, + selectIsApplyFiltersAllAtOnceEnabledAndSet, selectIsWhiteLabeled, selectLocale, selectSeparators, @@ -166,6 +167,9 @@ export function useBuildAutomationsContext(): IAutomationsContextValue { [isTimezoneChangeEnabled, timezoneConfig, workspaceTimezone, customTimezone, scheduledExportTimezone], ); const isWhiteLabeled = useDashboardSelector(selectIsWhiteLabeled); + const isApplyFiltersAllAtOnceEnabledAndSet = useDashboardSelector( + selectIsApplyFiltersAllAtOnceEnabledAndSet, + ); const externalRecipient = useDashboardSelector(selectExternalRecipient); const enableAlertOncePerInterval = useDashboardSelector(selectEnableAlertOncePerInterval); const enableAnomalyDetectionAlert = useDashboardSelector(selectEnableAnomalyDetectionAlert); @@ -312,6 +316,7 @@ export function useBuildAutomationsContext(): IAutomationsContextValue { timezone, exportTimezones, isWhiteLabeled, + isApplyFiltersAllAtOnceEnabledAndSet, isSecondaryTitleVisible: true, externalRecipient, features, @@ -357,6 +362,7 @@ export function useBuildAutomationsContext(): IAutomationsContextValue { timezone, exportTimezones, isWhiteLabeled, + isApplyFiltersAllAtOnceEnabledAndSet, externalRecipient, features, parameters, diff --git a/libs/sdk-ui-dashboard/src/presentation/automations/contexts/AutomationsContext.ts b/libs/sdk-ui-dashboard/src/presentation/automations/contexts/AutomationsContext.ts index 2f39d220b82..9216ea4e98b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automations/contexts/AutomationsContext.ts +++ b/libs/sdk-ui-dashboard/src/presentation/automations/contexts/AutomationsContext.ts @@ -203,6 +203,12 @@ export interface IAutomationsContextValue { }; /** Whether the dashboard is white-labeled (hides GoodData branding and help links); from selectIsWhiteLabeled. */ isWhiteLabeled: boolean; + /** + * Whether the dashboard applies filters all at once. Automation filter and parameter chips then + * stage each change with a Close-only footer, the same as the dashboard filter bar; from + * selectIsApplyFiltersAllAtOnceEnabledAndSet. + */ + isApplyFiltersAllAtOnceEnabledAndSet: boolean; /** Whether the dialog header renders a secondary title row below the main title; always true in the current hydration. */ isSecondaryTitleVisible: boolean; /** External (non-workspace) recipient the dialog is scoped to, when opened via an external share link; from selectExternalRecipient. */ diff --git a/libs/sdk-ui-dashboard/src/presentation/automations/scheduledEmail/state/useScheduledEmailEffectiveFilters.realChain.test.tsx b/libs/sdk-ui-dashboard/src/presentation/automations/scheduledEmail/state/useScheduledEmailEffectiveFilters.realChain.test.tsx index 55d48cd36b1..e6eff4ae345 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automations/scheduledEmail/state/useScheduledEmailEffectiveFilters.realChain.test.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/automations/scheduledEmail/state/useScheduledEmailEffectiveFilters.realChain.test.tsx @@ -104,6 +104,7 @@ const AUTOMATIONS_CONTEXT: IAutomationsContextValue = { weekStart: "Sunday", timezone: undefined, isWhiteLabeled: false, + isApplyFiltersAllAtOnceEnabledAndSet: false, isSecondaryTitleVisible: false, externalRecipient: undefined, features: { diff --git a/libs/sdk-ui-dashboard/src/presentation/automations/shared/automationFilters/components/AutomationDateFilter.test.tsx b/libs/sdk-ui-dashboard/src/presentation/automations/shared/automationFilters/components/AutomationDateFilter.test.tsx index 82bf1cfcefa..6f84c4c3193 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automations/shared/automationFilters/components/AutomationDateFilter.test.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/automations/shared/automationFilters/components/AutomationDateFilter.test.tsx @@ -85,6 +85,7 @@ function createAutomationsContextValue( weekStart: "Sunday" as const, timezone: undefined, isWhiteLabeled: false, + isApplyFiltersAllAtOnceEnabledAndSet: false, isSecondaryTitleVisible: false, externalRecipient: undefined, features: { diff --git a/libs/sdk-ui-dashboard/src/presentation/automations/shared/automationFilters/components/AutomationParameter.test.tsx b/libs/sdk-ui-dashboard/src/presentation/automations/shared/automationFilters/components/AutomationParameter.test.tsx index c5d636deb4e..b07649d26a5 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automations/shared/automationFilters/components/AutomationParameter.test.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/automations/shared/automationFilters/components/AutomationParameter.test.tsx @@ -8,10 +8,15 @@ import { describe, expect, it, vi } from "vitest"; import { idRef } from "@gooddata/sdk-model"; import { IntlWrapper } from "../../../../localization/IntlWrapper.js"; +import { AutomationsContextProvider } from "../../../contexts/AutomationsContext.js"; +import { AUTOMATIONS_CONTEXT } from "../../../tests/shared.test.helpers.js"; import { AutomationParameter } from "./AutomationParameter.js"; -function renderChip(custom: Partial> = {}) { +function renderChip( + custom: Partial> = {}, + isApplyFiltersAllAtOnceEnabledAndSet = false, +) { const props: ComponentProps = { parameter: { ref: idRef("topN", "parameter"), @@ -25,9 +30,11 @@ function renderChip(custom: Partial> ...custom, }; render( - - - , + + + + + , ); return props; } @@ -85,6 +92,29 @@ describe("AutomationParameter", () => { expect(onDelete).toHaveBeenCalledWith(idRef("topN", "parameter")); }); + it("commits the value on Apply when filters apply individually", () => { + const { onChange } = renderChip(); + + fireEvent.click(screen.getByTestId("automation-parameter-topN")); + fireEvent.change(screen.getByTestId("parameter-control-dropdown-input"), { target: { value: "7" } }); + expect(onChange).not.toHaveBeenCalled(); + + fireEvent.click(screen.getByTestId("parameter-control-dropdown-apply")); + + expect(onChange).toHaveBeenCalledWith(idRef("topN", "parameter"), 7); + }); + + it("stages each valid value with a Close-only footer when filters apply all at once", () => { + const { onChange } = renderChip({}, true); + + fireEvent.click(screen.getByTestId("automation-parameter-topN")); + fireEvent.change(screen.getByTestId("parameter-control-dropdown-input"), { target: { value: "7" } }); + + expect(onChange).toHaveBeenCalledWith(idRef("topN", "parameter"), 7); + expect(screen.queryByTestId("parameter-control-dropdown-apply")).toBeNull(); + expect(screen.getByTestId("parameter-control-dropdown-close")).toBeInTheDocument(); + }); + it("renders a readonly parameter as locked, without a delete button", () => { renderChip({ parameter: { diff --git a/libs/sdk-ui-dashboard/src/presentation/automations/shared/automationFilters/components/AutomationParameter.tsx b/libs/sdk-ui-dashboard/src/presentation/automations/shared/automationFilters/components/AutomationParameter.tsx index 4b0058a8905..2820d9229b4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automations/shared/automationFilters/components/AutomationParameter.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/automations/shared/automationFilters/components/AutomationParameter.tsx @@ -14,12 +14,14 @@ import { Dropdown, type OverlayPositionType, ParameterControl, + type ParameterSubmitModeProps, UiChip, UiTooltip, isActionKey, useIdPrefixed, } from "@gooddata/sdk-ui-kit"; +import { useAutomationsContext } from "../../../contexts/AutomationsContext.js"; import { type IAutomationParameter } from "../automationParameters.js"; /** @@ -46,6 +48,7 @@ export function AutomationParameter({ isReadOnly, }: IAutomationParameterProps): ReactNode { const intl = useIntl(); + const { isApplyFiltersAllAtOnceEnabledAndSet } = useAutomationsContext(); const { ref, title, value, mode, definition } = parameter; const testId = `automation-parameter-${ref.identifier}`; const label = intl.formatMessage( @@ -56,6 +59,10 @@ export function AutomationParameter({ const deleteAriaLabel = intl.formatMessage({ id: "dialogs.automation.filters.deleteAriaLabel" }); const tooltipId = useIdPrefixed("automation-parameter-tooltip"); const valueInputId = useIdPrefixed("parameter-value-input"); + const submit = (next: ParameterValue) => onChange?.(ref, next); + const submitModeProps: ParameterSubmitModeProps = isApplyFiltersAllAtOnceEnabledAndSet + ? { mode: "staged", onStage: submit } + : { mode: "commit", onCommit: submit }; if (isReadOnly) { // `isDisabled` renders a real disabled button — unfocusable, so keyboard users can't edit or @@ -128,8 +135,7 @@ export function AutomationParameter({ value={value} inputId={valueInputId} ariaAttributes={ariaAttributes} - mode="commit" - onCommit={(next) => onChange?.(ref, next)} + {...submitModeProps} onClose={closeDropdown} /> )} diff --git a/libs/sdk-ui-dashboard/src/presentation/automations/tests/shared.test.helpers.ts b/libs/sdk-ui-dashboard/src/presentation/automations/tests/shared.test.helpers.ts index 642aebed211..3eb1816eca6 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automations/tests/shared.test.helpers.ts +++ b/libs/sdk-ui-dashboard/src/presentation/automations/tests/shared.test.helpers.ts @@ -91,6 +91,7 @@ export const AUTOMATIONS_CONTEXT: IAutomationsContextValue = { weekStart: "Monday", timezone: "Europe/Prague", isWhiteLabeled: false, + isApplyFiltersAllAtOnceEnabledAndSet: false, isSecondaryTitleVisible: false, externalRecipient: undefined, features: { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useSelectionModeConfiguration.ts b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useSelectionModeConfiguration.ts index 5c78cca0a3e..06ecce1747d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useSelectionModeConfiguration.ts +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useSelectionModeConfiguration.ts @@ -8,7 +8,7 @@ import { } from "@gooddata/sdk-model"; import { - changeAttributeFilterSelection, + changeAttributeFilterSelectionForSelectionModeChange, setAttributeFilterSelectionMode, } from "../../../../../../model/commands/filters.js"; import { useDashboardCommandProcessing } from "../../../../../../model/react/useDashboardCommandProcessing.js"; @@ -21,7 +21,7 @@ export const useSelectionModeConfiguration = (attributeFilter: IDashboardAttribu }); const { run: changeSelection } = useDashboardCommandProcessing({ - commandCreator: changeAttributeFilterSelection, + commandCreator: changeAttributeFilterSelectionForSelectionModeChange, successEvent: "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER.SELECTION_CHANGED", errorEvent: "GDC.DASH/EVT.COMMAND.FAILED", }); diff --git a/libs/sdk-ui-ext/package.json b/libs/sdk-ui-ext/package.json index 43976b2394c..17349919e3a 100644 --- a/libs/sdk-ui-ext/package.json +++ b/libs/sdk-ui-ext/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-ext", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData.UI SDK - Extensions", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-filters/package.json b/libs/sdk-ui-filters/package.json index 922b49e94ea..48e997336e2 100644 --- a/libs/sdk-ui-filters/package.json +++ b/libs/sdk-ui-filters/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-filters", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData.UI SDK - Filter Components", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-gen-ai/package.json b/libs/sdk-ui-gen-ai/package.json index 06c60c2c5f4..895f0380959 100644 --- a/libs/sdk-ui-gen-ai/package.json +++ b/libs/sdk-ui-gen-ai/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-gen-ai", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData GenAI SDK", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-geo/package.json b/libs/sdk-ui-geo/package.json index 2b94bb1113f..cd49b7cac3f 100644 --- a/libs/sdk-ui-geo/package.json +++ b/libs/sdk-ui-geo/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-geo", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData.UI SDK - Geo Charts", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-kit/package.json b/libs/sdk-ui-kit/package.json index c717ee3b0b2..009e3342fbe 100644 --- a/libs/sdk-ui-kit/package.json +++ b/libs/sdk-ui-kit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-kit", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData SDK - UI Building Components", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-kit/src/@ui/UiSearchableSelect/UiSearchableSelect.scss b/libs/sdk-ui-kit/src/@ui/UiSearchableSelect/UiSearchableSelect.scss index 49379870270..7cfe229599c 100644 --- a/libs/sdk-ui-kit/src/@ui/UiSearchableSelect/UiSearchableSelect.scss +++ b/libs/sdk-ui-kit/src/@ui/UiSearchableSelect/UiSearchableSelect.scss @@ -40,7 +40,7 @@ padding: 6.5px 10px; border-radius: 3px; border: 1px solid var(--gd-palette-complementary-4); - box-shadow: 0 1px 1px 0 rgba(48, 52, 66, 0.05); + box-shadow: 0 1px 1px 0 var(--gd-palette-complementary-9-t95); /** * The pressed state uses a gradient from `--gd-palette-complementary-3` to diff --git a/libs/sdk-ui-kit/src/@ui/defaultTheme.scss b/libs/sdk-ui-kit/src/@ui/defaultTheme.scss index 8c51b843b01..ae7aa4264fa 100644 --- a/libs/sdk-ui-kit/src/@ui/defaultTheme.scss +++ b/libs/sdk-ui-kit/src/@ui/defaultTheme.scss @@ -304,6 +304,7 @@ --gd-palette-complementary-9-t80: rgba(0, 0, 0, 0.2); --gd-palette-complementary-9-t85: rgba(0, 0, 0, 0.15); --gd-palette-complementary-9-t90: rgba(0, 0, 0, 0.1); + --gd-palette-complementary-9-t95: rgba(0, 0, 0, 0.05); --gd-shadow-color: rgba(20, 56, 93, 0.15); // Internal diff --git a/libs/sdk-ui-kit/src/Header/HeaderLanguageButton.test.tsx b/libs/sdk-ui-kit/src/Header/HeaderLanguageButton.test.tsx index c091a8238ce..fe3a0b555b9 100644 --- a/libs/sdk-ui-kit/src/Header/HeaderLanguageButton.test.tsx +++ b/libs/sdk-ui-kit/src/Header/HeaderLanguageButton.test.tsx @@ -1,6 +1,6 @@ // (C) 2026 GoodData Corporation -import { screen, within } from "@testing-library/react"; +import { screen } from "@testing-library/react"; import { describe, expect, it } from "vitest"; import { render } from "../../test/render.js"; @@ -22,7 +22,7 @@ const requiredProps = { } satisfies Omit; describe("HeaderLanguageButton", () => { - it("should show language and the language in effect that opens a dialog", () => { + it("should show language that opens a dialog, announcing the language in effect", () => { const items = generateHeaderAccountMenuItems(makeWorkspacePermissions(), { ...requiredOptions, featureFlags: { enableUserLanguageChange: true }, @@ -33,7 +33,8 @@ describe("HeaderLanguageButton", () => { const language = screen.getByRole("button", { name: /Language/ }); expect(language).toBeVisible(); - expect(within(language).getByText("English (UK)")).toBeVisible(); + // The language value should not be displayed on mobile (not much space there), but should be announced by screen readers + expect(screen.queryByText("English (UK)")).not.toBeInTheDocument(); expect(language).toHaveAccessibleName("Language, English (UK)"); expect(language).toHaveAttribute("aria-haspopup", "dialog"); }); diff --git a/libs/sdk-ui-kit/src/Header/HeaderLanguageButton.tsx b/libs/sdk-ui-kit/src/Header/HeaderLanguageButton.tsx index e2f51f6f194..05138fb7d45 100644 --- a/libs/sdk-ui-kit/src/Header/HeaderLanguageButton.tsx +++ b/libs/sdk-ui-kit/src/Header/HeaderLanguageButton.tsx @@ -41,9 +41,6 @@ export function HeaderLanguageButton({ items, onMenuItemClick }: IHeaderLanguage - {languageMenuItem.value ? ( - {languageMenuItem.value} - ) : null} ); diff --git a/libs/sdk-ui-kit/styles/scss/header.scss b/libs/sdk-ui-kit/styles/scss/header.scss index 76b7b335a1c..754174d9b71 100644 --- a/libs/sdk-ui-kit/styles/scss/header.scss +++ b/libs/sdk-ui-kit/styles/scss/header.scss @@ -128,14 +128,12 @@ $button-normal-active-shadow: color.adjust($button-normal-active-border-color, $ text-overflow: ellipsis; } -// The Language row of the mobile menu footer, between the user name and Logout (Figma M1) .gd-header-language-button { display: flex; align-items: center; gap: 10px; box-sizing: border-box; width: 100%; - // 42px as in Figma, overriding the 43px of the user name row it shares the class with height: 42px; margin-bottom: 8px; border: 0; @@ -146,24 +144,15 @@ $button-normal-active-shadow: color.adjust($button-normal-active-border-color, $ cursor: pointer; transition: var(--gd-transition-all); - // as in Figma; no theme variable gives a hover background for the menu &:hover { - background-color: #343c4a; + // Same color as in menu items above + color: var(--gd-palette-complementary-9-from-theme, variables.$default-gd-color-text-light); } .gd-header-language-label { - flex: 1 0 auto; - align-self: baseline; - } - - .gd-header-language-value { - flex: 0 1 auto; - align-self: baseline; + flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; - white-space: nowrap; - color: #828c98; // No complementary color available for this value - font-size: 14px; } .gd-ui-kit-icon { diff --git a/libs/sdk-ui-loaders/package.json b/libs/sdk-ui-loaders/package.json index d82f8d21700..e4451472d86 100644 --- a/libs/sdk-ui-loaders/package.json +++ b/libs/sdk-ui-loaders/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-loaders", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData SDK Runtime Component Loaders", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-metric-component/package.json b/libs/sdk-ui-metric-component/package.json index ebd92bdd2ed..bc4b6ae2a59 100644 --- a/libs/sdk-ui-metric-component/package.json +++ b/libs/sdk-ui-metric-component/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-metric-component", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", "repository": { diff --git a/libs/sdk-ui-pivot/package.json b/libs/sdk-ui-pivot/package.json index 33ddd9d4743..132c3be4c3e 100644 --- a/libs/sdk-ui-pivot/package.json +++ b/libs/sdk-ui-pivot/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-pivot", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData.UI SDK - Pivot Table", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-pluggable-application/package.json b/libs/sdk-ui-pluggable-application/package.json index 8f630bfcde8..a4251687307 100644 --- a/libs/sdk-ui-pluggable-application/package.json +++ b/libs/sdk-ui-pluggable-application/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-pluggable-application", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData SDK React helpers for pluggable applications", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-pluggable-host/package.json b/libs/sdk-ui-pluggable-host/package.json index 85d21901d6c..a7875c311e9 100644 --- a/libs/sdk-ui-pluggable-host/package.json +++ b/libs/sdk-ui-pluggable-host/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-pluggable-host", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData SDK runtime for hosting pluggable applications — registry, loader, routing, platform context, default UI chrome", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-semantic-search/package.json b/libs/sdk-ui-semantic-search/package.json index c22c0ad776b..e98fe360a16 100644 --- a/libs/sdk-ui-semantic-search/package.json +++ b/libs/sdk-ui-semantic-search/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-semantic-search", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData SDK TypeScript & React skeleton", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-tests-app/package.json b/libs/sdk-ui-tests-app/package.json index 8821a57806c..db2f69bea9a 100644 --- a/libs/sdk-ui-tests-app/package.json +++ b/libs/sdk-ui-tests-app/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-tests-app", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": true, "description": "GoodData SDK e2e tests", "license": "LicenseRef-LICENSE", diff --git a/libs/sdk-ui-tests-e2e/package.json b/libs/sdk-ui-tests-e2e/package.json index d8a13386d6e..b01593fae21 100644 --- a/libs/sdk-ui-tests-e2e/package.json +++ b/libs/sdk-ui-tests-e2e/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-tests-e2e", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": true, "description": "GoodData SDK e2e tests", "license": "LicenseRef-LICENSE", diff --git a/libs/sdk-ui-tests-reference-workspace/package.json b/libs/sdk-ui-tests-reference-workspace/package.json index 1c726120531..20bc7cc287a 100644 --- a/libs/sdk-ui-tests-reference-workspace/package.json +++ b/libs/sdk-ui-tests-reference-workspace/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-tests-reference-workspace", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": true, "description": "GoodData SDK reference workspace", "license": "LicenseRef-LICENSE", diff --git a/libs/sdk-ui-tests-scenarios/package.json b/libs/sdk-ui-tests-scenarios/package.json index 7af513b8b96..738b0ff5d7a 100644 --- a/libs/sdk-ui-tests-scenarios/package.json +++ b/libs/sdk-ui-tests-scenarios/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-tests-scenarios", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData React components scenarios project", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-tests-storybook/neobackstop/output/reference/storybook_chromium_15_Ui_UiSearchableSelect_-_themed_0_document_0_desktop.png b/libs/sdk-ui-tests-storybook/neobackstop/output/reference/storybook_chromium_15_Ui_UiSearchableSelect_-_themed_0_document_0_desktop.png index 2bf373ef9cbc76b3509bf048bb3d7484bef883dc..d543bad8933619c948199c9c9204f377aa178994 100644 GIT binary patch literal 6782 zcmeHL`BxM779ZERAlf4ef{Ldc3zkCaLu3gdS~e9SQW2CbTC0c%0YR385Wybl0|i?I zlvPo*5(!l>>s`vIY|w~7$N(DtD7e($*aNdfh7 z_N4)>bX=9}aF}hk=Hk9X%cLIS85*>W4UW2>e9y157LtLqo%F4&VCo(m3Y|YQ3%^V8;Ou zk9RUr*PGX`Kk#@dWJ{#+;GV&3#3OHSSZn$=x@Len(cg3h6Ek5esh_?|{u*g~Wj(m` z4uiqz!Re&ICVnIoLL|f1Q0GiHSodvM0_*+-#w`B|mJQAeH*frk7+9Ts`{7w=8&<*3 zBxM_gSD*UyI?HtIT$Lb(*NW3fwHH56^j1h}$LTiV+LvyQQe)Pgr|%RrlGe(Hhm3bsx*x-@&3u_Q6|y) z&fU8MT}7H`3Weh4*80FBZ##M72`{{Ek{{L9AbOBD{PuPQX=bd+Bp^}wX|28`zcQqY zUlTNHI>Vj=s@x&#j8V@GP)@R#7qCgfjlF zp|65%Pb(=oGuHhGBBUzc5IB!dMDZV?>pwpq9v-%8bC{M;wPZ4RzF*$b(&Cb~*`v@w z`FWsua&i*j$v~}K8D2eb6*kV;Vl}LqZevMXjPM^YE0M+nk%#)0jE;_052l*4ZHKNk zS!6g&y<}46Q;W}qhZovk8soAwGaL?wGB39vFzah;Nl-BRJH^F=!+As~qat;aIj5W; zuu$GOn%uLzRQ+&|V zpI@24<8HSloCP9SSXdl=aCq0Trnk4PSc(S8GX}%Q*H;+b<>BJ>HrG0|DR~7>EyDZK z1C)Pl#0LP0BoqnRz4f+LFncHi$NcFm2jSX)|pzW3=Fs%E+fr&YEQ`|6d=#+rzbc|gJE@$n~+=9xFy0;*Q69~j+{ykc!? z@u);Xyl^2w-WyD;`IMdc*>$&0c*6__9;++(S19K(nj&&%CwXU@-Rf z;1H?Bw;U;RNAcKaQ6p?PtV1~}P=F;GU4)4hFBB=1OJB%+z2j`ZSWt(q`S^QhWQ>?! z1HMvNSa{vY21?HD=?RQzTCvg8vwmJ&hrwWgKYPRZ@87?-t&A`1p z8=o+^@d``NSk;fxxA2q6y7222^~mMl25$x|1>N4|5n1ZzYtfJCbSBU;yk6P@ESDsV zU>X`4fWtx0&iAx84Ygc1N^nS2&Dv~h=W@AST~={lsf=-WK97evz6zzg)d0M&J=omb zJeZx|+u3=MZ8zfWFZrMPUyLSpiZA2>hUFDtI2pgUbNrW*H_d8QgKIZ z!6mAiuAop{Rdh^Dc1}))F)lGeSX*1`l%l(ic>@efQ9pt$smP~llu%d7(1}BDZp879 zvl1!s@k-zhKnE7#IM*S@kz!6WJTINq|m;pOT z=ubkW7SF!+Wln)n>29+-`}S7nmCh`g5lY80ONrhFDG61!RE=sqWz;FQFMb3-Oe?Nd z%X#iR=mc=2W4s9jAw?mmI@Nqt8<*X=rpQKje0+R9W20Ci(F!Dqv8~%;RW`u`-ipu7 z>y5D_S#BsD+-L;!kcoG+<6A97TyGpDu0BGcs9$H9r_jlE018N*MxzlZGd)Zu^DY4; zqsKOcE_i1@P;ooN)xSG0H`lUm;wjZCrOOjD38BYy&W5{L{b*vDN)D->u8GSaJdSF0vwVWu}>89 zSO4WElh{j_)~W69S%G6!XSjaeJ3V?YqYpHz=p&cYs7Sx;zL%q z*9p~PS~+v>cX!KPMwoxd4BMI;5Cxjnci9~)=A#p(X~3-QwexwpaT?`_R+>Rgn93~L zYJJ`tto!$!?vPPsv6-&1V*n6@fd zBdM<>UfBDOnokaapb2}4H0TR5s_@I{)bXa4b^AZBn| zA%npPE{uO*mI~^(wy~iOtR?(Gqs{Y#8u>kA_2|prOiFgn?gY0tOYNcgmLGpoTvj#- zZDl=Hc4U|7-mnjq5d+V+Se;E6_ZJ%4r$C=mLqiP<3%lofodi`xv8pS62A$>v#+(ox zf%|0nM2)z1oJ1xY$Mq*khguhU8NIZW1U*q)Kg}*SV-STwzP?p)(!o3;Qwg#Z{CTQ5 z(k_x8${I??`1$#9=z%Z30y4vF6;-6mM+$9hQN~rB?RmAS@?tld83$j8C z*c*y#5X7|O*LlNsELpDS($U@R?eCA_MO;vQ=NCD@$oa)-?MwJ5yy$g{Uibg(buYC`l!g-1&2hPB QAxz|;i>EXFhm*t<8 delta 2891 zcmWlbd0bNI8pluBWZp`qvC`a_&!;IXN2zfXH=r4#ZaHd>si`Rynd5?*yC@#3Ti(=k z%*@-OPK#QZSYrwbMoyWT3GSF|?jj_hh`6xa*Ynr;=e*~6pWpBMdmi1-cOCyc1p6I7 z^2@2T2eShBMPTx1`&=UG%*PBHb=Wse-&bBvQ&wF$v3)f87l#n>&ip->Dy8PpSN<;A zQ4>Rp`4Ui5WFM^z$p8Jz8S0>>6@fQ@^84@)Ct`oa`O5cD6Po@Eqw@uFWJL-~ofkao zrU=W#Si@HAX$m`CMEQ_Xu4dvYLbf?kRur}uLqi#&Wo%a1x2+fiZ~z1y*isH#zfR`6ehnVQU>Emdop& zJ-ehvc#Ms-UUhW*&QYt?dSJG#eI2$Al=a|LQI9!%WW!;9|AFC#XbwirFD92r>sVQn zpGs^bF*G4rdJMPHqfb!02&$Jcm29p|-<^Y9=!(ly9`Q1QvT51p)TP;a3s7!_TWTzY zqJ4kEgpfX2g453UaNL!j2WvxomaYkv8yI&JLU7j(16U{EiWT+$q1`%}4e5dJ;r(Z_)RkIsu*AuK?m3Z$ zOF?yk1d0ln%`#I>*p4R<2+7H+FA)_jQ3KEYYXSxa2klS4Jgdk)UcA>XjJY(LgVgm` zV;f=x%~MlT9mO`K&(D6y-z8dRrv?YZ!3S(@+nRv_FJZ)E}os%hd@ zZ+eQ1-;^vJl*wc_Ezki00fU2sVexS5Hzs?3qf4m_S6A1Sl@+I0{!n-KL3+Hoxw&w$ zktRswU_h;fI9*z#G2ZuQCnqex*up7BER|-=ci7Nk1>_#QX-SxC!oe(>8KjZPylNm2VJQ>{LWjj)zy3&q zEivTRNw+SIf3R{-i$B}tbL`l$^z>!=rSXjgwY9aFBysm!M6Xb&qo%ghB$X&RICyrr zp|0gb?WfV)iMFzm!HBTRcgT~08e|_a~e%8%#aISo_hx~PefkhMCYg$7j^AMNDw+SmUecQ zCen${T=NrnATUWFccQ6HRr_))v|l59+~?k(6UE~5cy3G5Y~fr%>K5$c&5g{Zu{_Y^UCt3i;&^yz=wjSd{BUG-84$a27KE*} z`Vim9Wbf;Sh7y?$G-P9zhp4CLP?lz?H^s}VtAQKl7S;c>G>kkm8wanxePsgMcxMV2 znp?o}{(*sr&-GNQ44}BGmLtthk}VG%JUjBatgP%Ri!BD>%KvWtcbzT9^?2=3tEokl|dovoIf zJof%ZeFR6?5X~J4WH1;YgMS9sxp(hgrDthMO3IzVO(c-=6p#)R9mVa1ND-f(2}Xf6 zhMd%S#}2T`T!G#nKjtzQII88O5;Crtc1 z(kQD#YP>J^JeY>I0Wba_kuaG{imM3h=}$Mn+_VG1zOpbQTKa(A$Qd07B+Sa?aU_zJ zV^lu~3bdlFY>x#xmihJX&J)#9B$5Dh3k*+gUtgkLt1h%a%kl`C^LTt)JqMf7Zk4(n z55EG+4-XIH^L7f7`n*sq&HVMP76qL*#836^W_=f|A2U7eYnBHmb=^nH0gzx@VlB0yyv4lr(A#GZV?f~^m>m6p zNW{9(acev_D(8L>rv9Q`(BBu9=O@8xfn)`3M%C)xn^ zr424Btii#F^0YA{(F<_m{!b>w>(*_Dw=f{FMDmg)TE>kYDLFGp35e*vaJ&G?`oB9RDa zIq73~B`G<1R#;zMTiYeTLCl5{uL>;X>9hh~P^(SxzPC%X(P)D-zuP4xJG5H;FxWMl zuX9bZFW)cJ>9W+{E2<>&R4D>7x*iJMrf*vZWfz|tqHO*ag5u}vf7!CvxM*baP7Pwm X5#>*)L@W+m5;~6eK0^KV?3Momgb-7{ diff --git a/libs/sdk-ui-tests-storybook/package.json b/libs/sdk-ui-tests-storybook/package.json index acbceb497b5..3dadc8ec7ef 100644 --- a/libs/sdk-ui-tests-storybook/package.json +++ b/libs/sdk-ui-tests-storybook/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-tests-storybook", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData React components storybook", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-theme-provider/package.json b/libs/sdk-ui-theme-provider/package.json index 3ce718b89cc..8a498bc0bdb 100644 --- a/libs/sdk-ui-theme-provider/package.json +++ b/libs/sdk-ui-theme-provider/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-theme-provider", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData SDK - Theme provider", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-theme-provider/src/derivedColors.ts b/libs/sdk-ui-theme-provider/src/derivedColors.ts index 5ae64ced03c..ed2891296d7 100644 --- a/libs/sdk-ui-theme-provider/src/derivedColors.ts +++ b/libs/sdk-ui-theme-provider/src/derivedColors.ts @@ -304,6 +304,9 @@ const getComplementaryPaletteDerivedColors = (palette: IThemePalette): (CssPrope palette?.complementary?.c9 ? getCssProperty("palette-complementary-9-t90", transparentize(0.9, palette.complementary.c9)) : null, + palette?.complementary?.c9 + ? getCssProperty("palette-complementary-9-t95", transparentize(0.95, palette.complementary.c9)) + : null, ]; /** diff --git a/libs/sdk-ui-theme-provider/src/documentsTheme.test.ts b/libs/sdk-ui-theme-provider/src/documentsTheme.test.ts index 3d944739844..4e6873684af 100644 --- a/libs/sdk-ui-theme-provider/src/documentsTheme.test.ts +++ b/libs/sdk-ui-theme-provider/src/documentsTheme.test.ts @@ -116,7 +116,7 @@ describe("documentsThemeCssValues", () => { ["borderStyle", "dashed"], ["textTransform", "uppercase"], ["borderColor", "#ABCDEF80"], - ["textColor", "rgb(0, 0, 0, 0.5)"], + ["backgroundColor", "rgb(0, 0, 0, 0.5)"], ])("emits %s %s as written", (key, value) => { expect(takeawayVariable(key, value)).toBe(value); }); @@ -128,7 +128,7 @@ describe("documentsThemeCssValues", () => { it.each(["red; --gd-button-borderRadius: 0", "#fff}", "/*", '"unclosed', "red\\", "rgba(0, 0, 0, 0.5)"])( "emits nothing for %j, which is no documents value", (value) => { - expect(takeawayVariable("textColor", value)).toBeUndefined(); + expect(takeawayVariable("backgroundColor", value)).toBeUndefined(); }, ); diff --git a/libs/sdk-ui-theme-provider/src/variablesSpec/theme-derived/palette-complementary-derived.ts b/libs/sdk-ui-theme-provider/src/variablesSpec/theme-derived/palette-complementary-derived.ts index 7bb62c6ee8c..05c4990fa27 100644 --- a/libs/sdk-ui-theme-provider/src/variablesSpec/theme-derived/palette-complementary-derived.ts +++ b/libs/sdk-ui-theme-provider/src/variablesSpec/theme-derived/palette-complementary-derived.ts @@ -46,4 +46,9 @@ export const derivedPaletteComplementaryThemeVariables: ThemeDerivedCssVariable[ variableName: "--gd-palette-complementary-9-t90", defaultValue: "rgba(0, 0, 0, 0.1)", }, + { + type: "derived", + variableName: "--gd-palette-complementary-9-t95", + defaultValue: "rgba(0, 0, 0, 0.05)", + }, ]; diff --git a/libs/sdk-ui-vis-commons/package.json b/libs/sdk-ui-vis-commons/package.json index 94832d290f5..34e30b3f018 100644 --- a/libs/sdk-ui-vis-commons/package.json +++ b/libs/sdk-ui-vis-commons/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-vis-commons", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData.UI SDK - common functionality for different types of visualizations", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-web-components/package.json b/libs/sdk-ui-web-components/package.json index 10ae852ea36..65d5f52627a 100644 --- a/libs/sdk-ui-web-components/package.json +++ b/libs/sdk-ui-web-components/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-web-components", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData Web Components wrapper for GoodData.UI", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui/package.json b/libs/sdk-ui/package.json index 533d2f7fa43..e6b1c8828f2 100644 --- a/libs/sdk-ui/package.json +++ b/libs/sdk-ui/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData.UI SDK - Core", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/util/package.json b/libs/util/package.json index 350b4a17898..56b5bea8731 100644 --- a/libs/util/package.json +++ b/libs/util/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/util", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData Utility Functions", "license": "MIT", "author": "GoodData", diff --git a/templates/pluggable-module/harness/package.json b/templates/pluggable-module/harness/package.json index 9bc6d6efac9..fe47b60f63d 100644 --- a/templates/pluggable-module/harness/package.json +++ b/templates/pluggable-module/harness/package.json @@ -1,6 +1,6 @@ { "name": "gdc-app-template-name-harness", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": true, "description": "Standalone harness for gdc-app-template-name module", "license": "UNLICENSED", diff --git a/templates/pluggable-module/module/package.json b/templates/pluggable-module/module/package.json index eb6f2d7127b..6fe648bf3e4 100644 --- a/templates/pluggable-module/module/package.json +++ b/templates/pluggable-module/module/package.json @@ -1,6 +1,6 @@ { "name": "gdc-app-template-name-module", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": true, "description": "{applicationTemplateTitle} pluggable application module", "license": "UNLICENSED", diff --git a/tools/app-toolkit/package.json b/tools/app-toolkit/package.json index a31c9e1ce70..2c2ee3b7da5 100644 --- a/tools/app-toolkit/package.json +++ b/tools/app-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/app-toolkit", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "CLI with useful tools for creating and maintaining GoodData web applications.", "license": "LicenseRef-LICENSE", "author": "GoodData", diff --git a/tools/catalog-export/package.json b/tools/catalog-export/package.json index 7efd53cb3e4..7e0a0522e8d 100644 --- a/tools/catalog-export/package.json +++ b/tools/catalog-export/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/catalog-export", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData SDK Catalog Export tooling", "license": "MIT", "author": "GoodData", diff --git a/tools/create-pluggable-module/package.json b/tools/create-pluggable-module/package.json index 9ba2e8fd141..8e7d9e337e4 100644 --- a/tools/create-pluggable-module/package.json +++ b/tools/create-pluggable-module/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/create-pluggable-module", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "Scaffolder for GoodData pluggable applications. Invoked via `npm init @gooddata/pluggable-module`.", "license": "MIT", "author": "GoodData Corporation", diff --git a/tools/dashboard-plugin-template/package.json b/tools/dashboard-plugin-template/package.json index 3fd9880504b..4479caad9d2 100644 --- a/tools/dashboard-plugin-template/package.json +++ b/tools/dashboard-plugin-template/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/dashboard-plugin-template", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": true, "description": "GoodData Template for Dashboard Plugins", "license": "LicenseRef-LICENSE", diff --git a/tools/eslint-config/package.json b/tools/eslint-config/package.json index 1dd029fca3a..869a42f5032 100644 --- a/tools/eslint-config/package.json +++ b/tools/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/eslint-config", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "license": "MIT", "author": "GoodData", "repository": { diff --git a/tools/i18n-toolkit/package.json b/tools/i18n-toolkit/package.json index ba35c78fe74..78f68defe08 100644 --- a/tools/i18n-toolkit/package.json +++ b/tools/i18n-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/i18n-toolkit", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "Localization validator to validate localization complexity and intl and html format.", "license": "MIT", "author": "GoodData", diff --git a/tools/lint-config/package.json b/tools/lint-config/package.json index 63f1fcf0d32..1d349feb7c1 100644 --- a/tools/lint-config/package.json +++ b/tools/lint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/lint-config", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "Linter-agnostic shared rules for @gooddata/eslint-config and @gooddata/oxlint-config", "license": "MIT", "author": "GoodData", diff --git a/tools/mock-handling/package.json b/tools/mock-handling/package.json index 9bd19c1ad5f..ca22871bc6e 100644 --- a/tools/mock-handling/package.json +++ b/tools/mock-handling/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/mock-handling", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData SDK Mock data capture and management tool", "license": "MIT", "author": "GoodData", diff --git a/tools/oxlint-config/package.json b/tools/oxlint-config/package.json index 65cb61ddd9b..46e0840d40f 100644 --- a/tools/oxlint-config/package.json +++ b/tools/oxlint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/oxlint-config", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "license": "MIT", "author": "GoodData", "repository": { diff --git a/tools/plugin-toolkit/package.json b/tools/plugin-toolkit/package.json index 6271f271f6d..e1d9b89efd7 100644 --- a/tools/plugin-toolkit/package.json +++ b/tools/plugin-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/plugin-toolkit", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData Set of Tools for working with Plugins", "license": "LicenseRef-LICENSE", "author": "GoodData", diff --git a/tools/react-app-template/package.json b/tools/react-app-template/package.json index abdbf68d8e5..9b0d95d57fa 100644 --- a/tools/react-app-template/package.json +++ b/tools/react-app-template/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/react-app-template", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "private": true, "description": "GoodData Template for React App", "license": "LicenseRef-LICENSE", diff --git a/tools/reference-workspace-mgmt/package.json b/tools/reference-workspace-mgmt/package.json index 44389f7ffbc..33424ef9078 100644 --- a/tools/reference-workspace-mgmt/package.json +++ b/tools/reference-workspace-mgmt/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/reference-workspace-mgmt", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "Command line tools for reference workspace management", "license": "MIT", "author": "GoodData", diff --git a/tools/reference-workspace/package.json b/tools/reference-workspace/package.json index 2983bbceddb..15bbed32147 100644 --- a/tools/reference-workspace/package.json +++ b/tools/reference-workspace/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/reference-workspace", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData SDK - Reference Workspace for tests", "license": "MIT", "author": "GoodData", diff --git a/tools/stylelint-config/package.json b/tools/stylelint-config/package.json index 07a6ecfa47e..eadf5d84119 100644 --- a/tools/stylelint-config/package.json +++ b/tools/stylelint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/stylelint-config", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "GoodData CSS Style Guide", "keywords": [ "config", diff --git a/tools/toolchain-config/package.json b/tools/toolchain-config/package.json index 5a355bba7b8..8682bfd71b0 100644 --- a/tools/toolchain-config/package.json +++ b/tools/toolchain-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/toolchain-config", - "version": "11.67.0-alpha.1", + "version": "11.67.0-alpha.2", "description": "Shared build and test toolchain configuration (rolldown, vite, vitest, playwright) for gdc-ui packages", "license": "MIT", "author": "GoodData", From fddd31634a5e0824038d62d807f2478260ac067e Mon Sep 17 00:00:00 2001 From: git-action Date: Tue, 3 Nov 2026 03:17:51 +0000 Subject: [PATCH 2/2] chore: update dependencies after rush update risk: low --- common/config/rush/pnpm-lock.yaml | 226 +++++++++++++++++------------ common/scripts/install-run-rush.js | 2 - common/scripts/install-run.js | 2 - 3 files changed, 134 insertions(+), 96 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 0ceb4268cc3..d24062fe9c7 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -4,16 +4,13 @@ settings: autoInstallPeers: false excludeLinksFromLockfile: false -overrides: - minimatch@>=10.0.0 <10.2.3: 10.2.5 - pnpmfileChecksum: sha256-E1T7OJ3DLTjpDqf4RdJzK9VDtAxgm4gDEQCLYdHD8nI= importers: .: {} - ../../../sdk/examples/playground: + ../../examples/playground: devDependencies: '@codemirror/state': specifier: 6.5.3 @@ -166,13 +163,13 @@ importers: specifier: 8.3.5 version: 8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3) - ../../../sdk/examples/sdk-interactive-examples: + ../../examples/sdk-interactive-examples: devDependencies: validate-npm-package-name: specifier: 5.0.1 version: 5.0.1 - ../../../sdk/examples/sdk-interactive-examples/examples-template: + ../../examples/sdk-interactive-examples/examples-template: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -299,7 +296,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/examples/sdk-interactive-examples/examples/example-attributefilter: + ../../examples/sdk-interactive-examples/examples/example-attributefilter: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -426,7 +423,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/examples/sdk-interactive-examples/examples/example-chartconfig: + ../../examples/sdk-interactive-examples/examples/example-chartconfig: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -553,7 +550,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/examples/sdk-interactive-examples/examples/example-columnchart: + ../../examples/sdk-interactive-examples/examples/example-columnchart: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -680,7 +677,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/examples/sdk-interactive-examples/examples/example-combochart: + ../../examples/sdk-interactive-examples/examples/example-combochart: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -807,7 +804,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/examples/sdk-interactive-examples/examples/example-dashboard: + ../../examples/sdk-interactive-examples/examples/example-dashboard: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -934,7 +931,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/examples/sdk-interactive-examples/examples/example-datefilter: + ../../examples/sdk-interactive-examples/examples/example-datefilter: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1061,7 +1058,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/examples/sdk-interactive-examples/examples/example-dependentfilters: + ../../examples/sdk-interactive-examples/examples/example-dependentfilters: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1188,7 +1185,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/examples/sdk-interactive-examples/examples/example-execute: + ../../examples/sdk-interactive-examples/examples/example-execute: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1324,7 +1321,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/examples/sdk-interactive-examples/examples/example-granularity: + ../../examples/sdk-interactive-examples/examples/example-granularity: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1451,7 +1448,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/examples/sdk-interactive-examples/examples/example-headline: + ../../examples/sdk-interactive-examples/examples/example-headline: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1578,7 +1575,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/examples/sdk-interactive-examples/examples/example-pivottable: + ../../examples/sdk-interactive-examples/examples/example-pivottable: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1705,7 +1702,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/examples/sdk-interactive-examples/examples/example-relativedatefilter: + ../../examples/sdk-interactive-examples/examples/example-relativedatefilter: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1832,7 +1829,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/examples/sdk-interactive-examples/examples/example-repeater: + ../../examples/sdk-interactive-examples/examples/example-repeater: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1959,7 +1956,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/api-client-tiger: + ../../libs/api-client-tiger: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -2056,7 +2053,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-backend-base: + ../../libs/sdk-backend-base: dependencies: '@braintree/sanitize-url': specifier: ^6.0.0 @@ -2162,7 +2159,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-backend-mockingbird: + ../../libs/sdk-backend-mockingbird: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -2256,7 +2253,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-backend-spi: + ../../libs/sdk-backend-spi: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -2335,7 +2332,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-backend-tiger: + ../../libs/sdk-backend-tiger: dependencies: '@gooddata/api-client-tiger': specifier: workspace:* @@ -2474,7 +2471,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-code-convertors: + ../../libs/sdk-code-convertors: dependencies: '@gooddata/api-client-tiger': specifier: workspace:* @@ -2550,7 +2547,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-code-schemas: + ../../libs/sdk-code-schemas: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -2619,7 +2616,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-e2e-utils: + ../../libs/sdk-e2e-utils: dependencies: '@playwright/test': specifier: 1.62.1 @@ -2704,7 +2701,7 @@ importers: specifier: 7.0.2 version: 7.0.2 - ../../../sdk/libs/sdk-embedding: + ../../libs/sdk-embedding: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -2783,7 +2780,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-maql-language-server: + ../../libs/sdk-maql-language-server: dependencies: '@gooddata/maql-antlr4ts': specifier: 0.7.2 @@ -2907,7 +2904,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-model: + ../../libs/sdk-model: dependencies: '@types/geojson': specifier: ^7946.0.16 @@ -3001,7 +2998,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-pluggable-application-model: + ../../libs/sdk-pluggable-application-model: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -3074,7 +3071,7 @@ importers: specifier: 7.0.2 version: 7.0.2 - ../../../sdk/libs/sdk-ui: + ../../libs/sdk-ui: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -3249,7 +3246,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-all: + ../../libs/sdk-ui-all: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -3340,7 +3337,7 @@ importers: specifier: 7.0.2 version: 7.0.2 - ../../../sdk/libs/sdk-ui-analytical-designer: + ../../libs/sdk-ui-analytical-designer: dependencies: '@evil-internetmann/react-dnd': specifier: 16.2.1 @@ -3608,7 +3605,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-application-header: + ../../libs/sdk-ui-application-header: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -3747,7 +3744,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-catalog: + ../../libs/sdk-ui-catalog: dependencies: '@codemirror/autocomplete': specifier: 6.20.0 @@ -3922,7 +3919,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-charts: + ../../libs/sdk-ui-charts: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -4133,7 +4130,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-dashboard: + ../../libs/sdk-ui-dashboard: dependencies: '@codemirror/language': specifier: 6.12.1 @@ -4398,7 +4395,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-ext: + ../../libs/sdk-ui-ext: dependencies: '@codemirror/commands': specifier: 6.10.1 @@ -4666,7 +4663,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-filters: + ../../libs/sdk-ui-filters: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -4856,7 +4853,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-gen-ai: + ../../libs/sdk-ui-gen-ai: dependencies: '@codemirror/autocomplete': specifier: 6.20.0 @@ -5100,7 +5097,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-geo: + ../../libs/sdk-ui-geo: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -5275,7 +5272,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-kit: + ../../libs/sdk-ui-kit: dependencies: '@aaronhayes/react-use-hubspot-form': specifier: 2.1.2 @@ -5567,7 +5564,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-loaders: + ../../libs/sdk-ui-loaders: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -5691,7 +5688,7 @@ importers: specifier: 7.0.2 version: 7.0.2 - ../../../sdk/libs/sdk-ui-metric-component: + ../../libs/sdk-ui-metric-component: dependencies: '@emotion/react': specifier: 11.14.0 @@ -5872,7 +5869,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-pivot: + ../../libs/sdk-ui-pivot: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -6047,7 +6044,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-pluggable-application: + ../../libs/sdk-ui-pluggable-application: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -6162,7 +6159,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-pluggable-host: + ../../libs/sdk-ui-pluggable-host: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -6325,7 +6322,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-semantic-search: + ../../libs/sdk-ui-semantic-search: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -6473,7 +6470,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-tests-app: + ../../libs/sdk-ui-tests-app: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -6602,7 +6599,7 @@ importers: specifier: 8.3.5 version: 8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3) - ../../../sdk/libs/sdk-ui-tests-e2e: + ../../libs/sdk-ui-tests-e2e: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -6698,7 +6695,7 @@ importers: specifier: 7.0.2 version: 7.0.2 - ../../../sdk/libs/sdk-ui-tests-reference-workspace: + ../../libs/sdk-ui-tests-reference-workspace: devDependencies: '@gooddata/catalog-export': specifier: workspace:* @@ -6758,7 +6755,7 @@ importers: specifier: 7.0.2 version: 7.0.2 - ../../../sdk/libs/sdk-ui-tests-scenarios: + ../../libs/sdk-ui-tests-scenarios: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -6905,7 +6902,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-tests-storybook: + ../../libs/sdk-ui-tests-storybook: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -7112,7 +7109,7 @@ importers: specifier: 4.1.0 version: 4.1.0(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-theme-provider: + ../../libs/sdk-ui-theme-provider: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -7257,7 +7254,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-vis-commons: + ../../libs/sdk-ui-vis-commons: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -7414,7 +7411,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/sdk-ui-web-components: + ../../libs/sdk-ui-web-components: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -7577,7 +7574,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/libs/util: + ../../libs/util: dependencies: lodash-es: specifier: ^4.17.23 @@ -7653,7 +7650,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/templates/pluggable-module/harness: + ../../templates/pluggable-module/harness: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -7753,7 +7750,7 @@ importers: specifier: 8.3.5 version: 8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3) - ../../../sdk/templates/pluggable-module/module: + ../../templates/pluggable-module/module: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -7877,7 +7874,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/tools/app-toolkit: + ../../tools/app-toolkit: dependencies: chalk: specifier: 5.3.0 @@ -7974,7 +7971,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/tools/catalog-export: + ../../tools/catalog-export: dependencies: '@gooddata/api-client-tiger': specifier: workspace:* @@ -8083,7 +8080,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/tools/create-pluggable-module: + ../../tools/create-pluggable-module: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -8152,7 +8149,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/tools/dashboard-plugin-template: + ../../tools/dashboard-plugin-template: dependencies: tslib: specifier: 2.8.1 @@ -8312,7 +8309,7 @@ importers: specifier: 5.2.4 version: 5.2.4(webpack-cli@7.0.3)(webpack@5.107.2) - ../../../sdk/tools/eslint-config: + ../../tools/eslint-config: devDependencies: '@eslint/js': specifier: 9.39.5 @@ -8405,7 +8402,7 @@ importers: specifier: 5.3.0 version: 5.3.0(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.33.0)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3) - ../../../sdk/tools/i18n-toolkit: + ../../tools/i18n-toolkit: dependencies: '@formatjs/cli-lib': specifier: ^6.1.1 @@ -8505,7 +8502,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/tools/lint-config: + ../../tools/lint-config: devDependencies: npm-run-all: specifier: 4.1.5 @@ -8517,7 +8514,7 @@ importers: specifier: 7.0.2 version: 7.0.2 - ../../../sdk/tools/mock-handling: + ../../tools/mock-handling: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -8620,7 +8617,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/tools/oxlint-config: + ../../tools/oxlint-config: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -8704,7 +8701,7 @@ importers: specifier: 5.3.0 version: 5.3.0(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.33.0)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3) - ../../../sdk/tools/plugin-toolkit: + ../../tools/plugin-toolkit: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -8825,7 +8822,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/tools/react-app-template: + ../../tools/react-app-template: dependencies: '@codemirror/state': specifier: 6.5.3 @@ -8952,7 +8949,7 @@ importers: specifier: 8.3.5 version: 8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3) - ../../../sdk/tools/reference-workspace: + ../../tools/reference-workspace: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -9022,7 +9019,7 @@ importers: specifier: 7.0.2 version: 7.0.2 - ../../../sdk/tools/reference-workspace-mgmt: + ../../tools/reference-workspace-mgmt: dependencies: '@gooddata/catalog-export': specifier: workspace:* @@ -9098,7 +9095,7 @@ importers: specifier: 5.0.4 version: 5.0.4(@opentelemetry/api@1.9.0)(@types/node@24.12.0)(@vitest/coverage-v8@5.0.4)(happy-dom@21.0.4)(vite@8.3.5(@types/node@24.12.0)(esbuild@0.28.2)(jiti@2.6.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.8.3)) - ../../../sdk/tools/stylelint-config: + ../../tools/stylelint-config: dependencies: postcss: specifier: 8.5.26 @@ -9122,7 +9119,7 @@ importers: specifier: 6.14.0 version: 6.14.0(stylelint@16.26.1(typescript@7.0.2)) - ../../../sdk/tools/toolchain-config: + ../../tools/toolchain-config: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -9961,6 +9958,14 @@ packages: '@internationalized/string@3.2.10': resolution: {integrity: sha512-PDx6//vHSpRnHfxqMqto11zQvhsaU74O3mKv2F/0eicGZcl9NLjQmGlbHz/LsJh5tLKp4A4L7ZVTzN1/MmMTvA==} + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.1': + resolution: {integrity: sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==} + engines: {node: 20 || >=22} + '@isaacs/fs-minipass@4.0.1': resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} @@ -12536,6 +12541,18 @@ packages: resolution: {integrity: sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==} engines: {node: '>=6.0'} + ag-charts-community@13.1.0: + resolution: {integrity: sha512-w+uFTjxlAoTq1+8tgUORtB/zr9jm38ibXzbbWnkBP9Dep9yahi5a1jZL7yExAX35uq3g9QtjTh0Oj/QPDBQ9Ew==} + + ag-charts-core@13.1.0: + resolution: {integrity: sha512-mLHJZ8oU5CPeLRURescdISCtMsiiA/m4d1iBr6aQBEgiTVogRMGpFpsYNtQiYtoW2sRh+62I9sN8fhC3JQjX/g==} + + ag-charts-enterprise@13.1.0: + resolution: {integrity: sha512-WyKIqvkOdtdvEJxq76hjTacXTCpIR2lq1JDMYc5MtoHYtiVt1KHApsxS0nbutp/CxGKRgdOqJtxUF+3r33pgPw==} + + ag-charts-locale@13.1.0: + resolution: {integrity: sha512-mPgJnVsOI4Cf17CAlRh8BvLz19e165sdQJeUXNaB7M+DPB+pxODOcfx4oqZlR4Wc8Zu++TGb/2ueHa/aeV2qeQ==} + ag-charts-types@13.1.0: resolution: {integrity: sha512-DytRM3CXli+Y013SC1Mr8lQBrhVTACK+11ilDHOhwUM0sRpmGuR51XFGcBKOliW1Vas1AycP31Cm3Pp0jx3hqw==} @@ -15460,6 +15477,10 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + minimatch@10.1.1: + resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} + engines: {node: 20 || >=22} + minimatch@10.2.3: resolution: {integrity: sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==} engines: {node: 18 || 20 || >=22} @@ -16087,9 +16108,6 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} - prop-types@15.7.2: - resolution: {integrity: sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==} - prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -17924,10 +17942,6 @@ packages: zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} -ignoredOptionalDependencies: - - ag-charts-community - - ag-charts-enterprise - snapshots: '@aaronhayes/react-use-hubspot-form@2.1.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': @@ -18800,6 +18814,12 @@ snapshots: dependencies: '@swc/helpers': 0.5.23 + '@isaacs/balanced-match@4.0.1': {} + + '@isaacs/brace-expansion@5.0.1': + dependencies: + '@isaacs/balanced-match': 4.0.1 + '@isaacs/fs-minipass@4.0.1': dependencies: minipass: 7.1.3 @@ -20660,8 +20680,8 @@ snapshots: '@typescript-eslint/project-service@8.58.0': dependencies: - '@typescript-eslint/tsconfig-utils': 8.58.0 - '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/tsconfig-utils': 8.71.1 + '@typescript-eslint/types': 8.71.1 debug: 4.4.3 typescript: 6.0.3 transitivePeerDependencies: @@ -21095,6 +21115,27 @@ snapshots: adm-zip@0.5.10: {} + ag-charts-community@13.1.0: + dependencies: + ag-charts-core: 13.1.0 + ag-charts-locale: 13.1.0 + ag-charts-types: 13.1.0 + optional: true + + ag-charts-core@13.1.0: + dependencies: + ag-charts-types: 13.1.0 + optional: true + + ag-charts-enterprise@13.1.0: + dependencies: + ag-charts-community: 13.1.0 + ag-charts-core: 13.1.0 + optional: true + + ag-charts-locale@13.1.0: + optional: true + ag-charts-types@13.1.0: {} ag-grid-community@35.1.0: @@ -21104,6 +21145,9 @@ snapshots: ag-grid-enterprise@35.1.0: dependencies: ag-grid-community: 35.1.0 + optionalDependencies: + ag-charts-community: 13.1.0 + ag-charts-enterprise: 13.1.0 ag-grid-react@35.1.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: @@ -22529,7 +22573,7 @@ snapshots: functional-red-black-tree: 1.0.1 jsx-ast-utils-x: 0.1.0 lodash.merge: 4.6.2 - minimatch: 10.2.5 + minimatch: 10.1.1 scslre: 0.3.0 semver: 7.7.3 typescript: 6.0.3 @@ -24454,6 +24498,10 @@ snapshots: minimalistic-assert@1.0.1: {} + minimatch@10.1.1: + dependencies: + '@isaacs/brace-expansion': 5.0.1 + minimatch@10.2.3: dependencies: brace-expansion: 5.0.12 @@ -25148,12 +25196,6 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 - prop-types@15.7.2: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -25445,7 +25487,7 @@ snapshots: '@babel/runtime': 7.29.10 dom-helpers: 5.2.1 loose-envify: 1.4.0 - prop-types: 15.7.2 + prop-types: 15.8.1 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) diff --git a/common/scripts/install-run-rush.js b/common/scripts/install-run-rush.js index 4daf9508912..5b1da11a79b 100644 --- a/common/scripts/install-run-rush.js +++ b/common/scripts/install-run-rush.js @@ -1,5 +1,3 @@ -// (C) 2026 GoodData Corporation - // THIS FILE WAS GENERATED BY A TOOL. ANY MANUAL MODIFICATIONS WILL GET OVERWRITTEN WHENEVER RUSH IS UPGRADED. // // This script is intended for usage in an automated build environment where the Rush command may not have diff --git a/common/scripts/install-run.js b/common/scripts/install-run.js index 875968d0f25..75d6014e61c 100644 --- a/common/scripts/install-run.js +++ b/common/scripts/install-run.js @@ -1,5 +1,3 @@ -// (C) 2026 GoodData Corporation - // THIS FILE WAS GENERATED BY A TOOL. ANY MANUAL MODIFICATIONS WILL GET OVERWRITTEN WHENEVER RUSH IS UPGRADED. // // This script is intended for usage in an automated build environment where a Node tool may not have