diff --git a/.changeset/ten-mammals-invite.md b/.changeset/ten-mammals-invite.md new file mode 100644 index 0000000000..a29e38d476 --- /dev/null +++ b/.changeset/ten-mammals-invite.md @@ -0,0 +1,56 @@ +--- +'@backstage/frontend-dynamic-feature-loader': patch +'@backstage/plugin-api-docs-module-protoc-gen-doc': patch +'@backstage/plugin-techdocs-module-addons-contrib': patch +'@backstage/plugin-catalog-unprocessed-entities': patch +'@backstage/plugin-scaffolder-node-test-utils': patch +'@backstage/plugin-techdocs-addons-test-utils': patch +'@backstage/frontend-plugin-api': patch +'@backstage/frontend-test-utils': patch +'@backstage/frontend-defaults': patch +'@backstage/integration-react': patch +'@backstage/plugin-kubernetes-cluster': patch +'@backstage/frontend-app-api': patch +'@backstage/core-compat-api': patch +'@backstage/core-components': patch +'@backstage/core-plugin-api': patch +'@backstage/plugin-kubernetes-react': patch +'@backstage/plugin-permission-react': patch +'@backstage/plugin-scaffolder-react': patch +'@backstage/version-bridge': patch +'@backstage/plugin-app-visualizer': patch +'@backstage/plugin-catalog-import': patch +'@backstage/plugin-techdocs-react': patch +'@backstage/app-defaults': patch +'@backstage/core-app-api': patch +'@backstage/plugin-catalog-graph': patch +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-config-schema': patch +'@backstage/plugin-notifications': patch +'@backstage/plugin-signals-react': patch +'@backstage/plugin-user-settings': patch +'@backstage/plugin-search-react': patch +'@backstage/repo-tools': patch +'@backstage/test-utils': patch +'@backstage/dev-utils': patch +'@backstage/plugin-auth-react': patch +'@backstage/plugin-home-react': patch +'@backstage/plugin-kubernetes': patch +'@backstage/plugin-mui-to-bui': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-org-react': patch +'@backstage/plugin-api-docs': patch +'@backstage/plugin-devtools': patch +'@backstage/plugin-techdocs': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-signals': patch +'@backstage/theme': patch +'@backstage/plugin-search': patch +'@backstage/plugin-auth': patch +'@backstage/plugin-home': patch +'@backstage/ui': patch +'@backstage/plugin-app': patch +'@backstage/plugin-org': patch +--- + +Prepare for React Router v7 migration by updating to v6.30.2 across all NFS packages and enabling v7 future flags. Convert routes from splat paths to parent/child structure with Outlet components. diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index 518bcbd1ad..80679dcecd 100644 --- a/packages/app-defaults/package.json +++ b/packages/app-defaults/package.json @@ -52,13 +52,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/app-next-example-plugin/package.json b/packages/app-next-example-plugin/package.json index b88a9f9337..d9a8fe1547 100644 --- a/packages/app-next-example-plugin/package.json +++ b/packages/app-next-example-plugin/package.json @@ -52,13 +52,13 @@ "msw": "^1.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/app-next/package.json b/packages/app-next/package.json index 51d4d229e5..411142e8d4 100644 --- a/packages/app-next/package.json +++ b/packages/app-next/package.json @@ -84,8 +84,8 @@ "history": "^5.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router": "^6.3.0", - "react-router-dom": "^6.3.0", + "react-router": "^6.30.2", + "react-router-dom": "^6.30.2", "react-use": "^17.2.4", "zen-observable": "^0.10.0" }, diff --git a/packages/app/package.json b/packages/app/package.json index b8dce62ebd..6d7e7bbd86 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -79,8 +79,8 @@ "history": "^5.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router": "^6.3.0", - "react-router-dom": "^6.3.0", + "react-router": "^6.30.2", + "react-router-dom": "^6.30.2", "react-use": "^17.2.4", "zen-observable": "^0.10.0" }, diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json index b63b215ae8..ac3ac161cc 100644 --- a/packages/core-app-api/package.json +++ b/packages/core-app-api/package.json @@ -73,7 +73,7 @@ "react": "^18.0.2", "react-dom": "^18.0.2", "react-router-beta": "npm:react-router@6.0.0-beta.0", - "react-router-dom": "^6.3.0", + "react-router-dom": "^6.30.2", "react-router-dom-beta": "npm:react-router-dom@6.0.0-beta.0", "react-router-dom-stable": "npm:react-router-dom@^6.3.0", "react-router-stable": "npm:react-router@^6.3.0" @@ -82,7 +82,7 @@ "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/core-compat-api/package.json b/packages/core-compat-api/package.json index c552db22b5..3b828e416d 100644 --- a/packages/core-compat-api/package.json +++ b/packages/core-compat-api/package.json @@ -53,14 +53,14 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0", + "react-router-dom": "^6.30.2", "zod": "^3.25.76" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/core-components/package.json b/packages/core-components/package.json index 31c85f518e..f1d7ff0aec 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -123,13 +123,13 @@ "msw": "^1.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json index 0f162302c7..5ec5861e27 100644 --- a/packages/core-plugin-api/package.json +++ b/packages/core-plugin-api/package.json @@ -68,13 +68,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 0193afc617..2fc0f63136 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -59,14 +59,14 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0", + "react-router-dom": "^6.30.2", "zen-observable": "^0.10.0" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/frontend-app-api/package.json b/packages/frontend-app-api/package.json index 427d3db15f..be6a73649b 100644 --- a/packages/frontend-app-api/package.json +++ b/packages/frontend-app-api/package.json @@ -53,13 +53,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/frontend-defaults/package.json b/packages/frontend-defaults/package.json index 6471f5f966..9d30daf1c8 100644 --- a/packages/frontend-defaults/package.json +++ b/packages/frontend-defaults/package.json @@ -49,13 +49,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/frontend-dynamic-feature-loader/package.json b/packages/frontend-dynamic-feature-loader/package.json index b215853dc1..8145907dc6 100644 --- a/packages/frontend-dynamic-feature-loader/package.json +++ b/packages/frontend-dynamic-feature-loader/package.json @@ -49,13 +49,13 @@ "msw": "^1.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/frontend-plugin-api/package.json b/packages/frontend-plugin-api/package.json index bdf7076eda..65b7e3eb2f 100644 --- a/packages/frontend-plugin-api/package.json +++ b/packages/frontend-plugin-api/package.json @@ -62,13 +62,13 @@ "history": "^5.3.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/frontend-test-utils/package.json b/packages/frontend-test-utils/package.json index e9dae3f258..f359a9d2b8 100644 --- a/packages/frontend-test-utils/package.json +++ b/packages/frontend-test-utils/package.json @@ -47,14 +47,14 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@testing-library/react": "^16.0.0", "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/frontend-test-utils/src/app/renderInTestApp.tsx b/packages/frontend-test-utils/src/app/renderInTestApp.tsx index 93094fb7e3..bcc6e5948e 100644 --- a/packages/frontend-test-utils/src/app/renderInTestApp.tsx +++ b/packages/frontend-test-utils/src/app/renderInTestApp.tsx @@ -207,7 +207,13 @@ export function renderInTestApp( RouterBlueprint.make({ params: { component: ({ children }) => ( - + {children} ), diff --git a/packages/frontend-test-utils/src/app/renderTestApp.tsx b/packages/frontend-test-utils/src/app/renderTestApp.tsx index b12d3ffd8c..30ee6ff761 100644 --- a/packages/frontend-test-utils/src/app/renderTestApp.tsx +++ b/packages/frontend-test-utils/src/app/renderTestApp.tsx @@ -107,7 +107,13 @@ export function renderTestApp( RouterBlueprint.make({ params: { component: ({ children }) => ( - + {children} ), diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index d5685822ef..6f53f6c0ce 100644 --- a/packages/integration-react/package.json +++ b/packages/integration-react/package.json @@ -50,13 +50,13 @@ "msw": "^1.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/repo-tools/src/commands/peer-deps/peer-deps.ts b/packages/repo-tools/src/commands/peer-deps/peer-deps.ts index ca068551c6..b6f73a7d44 100644 --- a/packages/repo-tools/src/commands/peer-deps/peer-deps.ts +++ b/packages/repo-tools/src/commands/peer-deps/peer-deps.ts @@ -29,14 +29,14 @@ const desiredLocalVersionsOfDependencies = { '@types/react': '^18.0.0', react: '^18.0.2', 'react-dom': '^18.0.2', - 'react-router-dom': '^6.3.0', + 'react-router-dom': '^6.30.2', }; const peerDependencies = { '@types/react': '^17.0.0 || ^18.0.0', react: '^17.0.0 || ^18.0.0', 'react-dom': '^17.0.0 || ^18.0.0', - 'react-router-dom': '^6.3.0', + 'react-router-dom': '^6.30.2', }; const groupsOfPeerDependencies = [['@types/react', 'react', 'react-dom']]; diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index 19d99e2df4..a4db6d672a 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -51,7 +51,7 @@ "history": "^5.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0", + "react-router-dom": "^6.30.2", "react-use": "^17.2.4" }, "devDependencies": { diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index a413f807f2..f6127ee5c7 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -70,14 +70,14 @@ "msw": "^1.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@testing-library/react": "^16.0.0", "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/theme/package.json b/packages/theme/package.json index deb8ef1444..dc2c8baba2 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -48,14 +48,14 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@material-ui/core": "^4.12.2", "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/ui/package.json b/packages/ui/package.json index c71698f9b4..7dd52b293c 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -58,14 +58,14 @@ "mini-css-extract-plugin": "^2.9.2", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0", + "react-router-dom": "^6.30.2", "storybook": "^10.3.0-alpha.1" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/packages/version-bridge/package.json b/packages/version-bridge/package.json index d18d01359f..f94070b86a 100644 --- a/packages/version-bridge/package.json +++ b/packages/version-bridge/package.json @@ -42,13 +42,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/api-docs-module-protoc-gen-doc/package.json b/plugins/api-docs-module-protoc-gen-doc/package.json index 9fef705026..1afe82a412 100644 --- a/plugins/api-docs-module-protoc-gen-doc/package.json +++ b/plugins/api-docs-module-protoc-gen-doc/package.json @@ -45,13 +45,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index 4523d5e67a..5b9ec40365 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -86,13 +86,13 @@ "@types/swagger-ui-react": "^5.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/app-react/package.json b/plugins/app-react/package.json index 298723f12b..5661a196d1 100644 --- a/plugins/app-react/package.json +++ b/plugins/app-react/package.json @@ -52,13 +52,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/app-visualizer/package.json b/plugins/app-visualizer/package.json index 8558c3f0fe..e6919f6282 100644 --- a/plugins/app-visualizer/package.json +++ b/plugins/app-visualizer/package.json @@ -47,13 +47,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/app/package.json b/plugins/app/package.json index 90aad042a4..bddb03799c 100644 --- a/plugins/app/package.json +++ b/plugins/app/package.json @@ -80,13 +80,13 @@ "msw": "^1.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/app/src/extensions/AppRoot.tsx b/plugins/app/src/extensions/AppRoot.tsx index 6237643056..079fc582db 100644 --- a/plugins/app/src/extensions/AppRoot.tsx +++ b/plugins/app/src/extensions/AppRoot.tsx @@ -198,7 +198,17 @@ export interface AppRouterProps { function DefaultRouter(props: PropsWithChildren<{}>) { const configApi = useApi(configApiRef); const basePath = getBasePath(configApi); - return {props.children}; + return ( + + {props.children} + + ); } /** diff --git a/plugins/app/src/extensions/AppRoutes.test.tsx b/plugins/app/src/extensions/AppRoutes.test.tsx new file mode 100644 index 0000000000..26ba3df447 --- /dev/null +++ b/plugins/app/src/extensions/AppRoutes.test.tsx @@ -0,0 +1,246 @@ +/* + * Copyright 2025 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { screen, waitFor } from '@testing-library/react'; +import { renderTestApp } from '@backstage/frontend-test-utils'; +import { PageBlueprint } from '@backstage/frontend-plugin-api'; +import { Link, useLocation, useParams } from 'react-router-dom'; + +describe('AppRoutes', () => { + it('should render the first route at root path', async () => { + const homePage = PageBlueprint.make({ + name: 'home', + params: { + path: '/', + loader: async () =>
Home Page
, + }, + }); + + renderTestApp({ + extensions: [homePage], + initialRouteEntries: ['/'], + }); + + await waitFor(() => { + expect(screen.getByTestId('home-page')).toBeInTheDocument(); + expect(screen.getByText('Home Page')).toBeInTheDocument(); + }); + }); + + it('should render a route at non-root path', async () => { + const catalogPage = PageBlueprint.make({ + name: 'catalog', + params: { + path: '/catalog', + loader: async () =>
Catalog Page
, + }, + }); + + renderTestApp({ + extensions: [catalogPage], + initialRouteEntries: ['/catalog'], + }); + + await waitFor(() => { + expect(screen.getByTestId('catalog-page')).toBeInTheDocument(); + expect(screen.getByText('Catalog Page')).toBeInTheDocument(); + }); + }); + + it('should handle nested paths under a route (splat path behavior)', async () => { + const NestedPathDisplay = () => { + const location = useLocation(); + const params = useParams(); + return ( +
+
{location.pathname}
+
{params['*']}
+ Entity Details +
+ ); + }; + + const catalogPage = PageBlueprint.make({ + name: 'catalog', + params: { + path: '/catalog', + loader: async () => , + }, + }); + + renderTestApp({ + extensions: [catalogPage], + initialRouteEntries: ['/catalog/default/component/my-entity'], + }); + + await waitFor(() => { + expect(screen.getByTestId('entity-page')).toBeInTheDocument(); + expect(screen.getByTestId('pathname')).toHaveTextContent( + '/catalog/default/component/my-entity', + ); + expect(screen.getByTestId('splat-params')).toHaveTextContent( + 'default/component/my-entity', + ); + }); + }); + + it('should support relative links within routes', async () => { + const CatalogWithLinks = () => { + return ( +
+
Catalog Page
+ + Create Entity + + + Go to Settings + +
+ ); + }; + + const catalogPage = PageBlueprint.make({ + name: 'catalog', + params: { + path: '/catalog', + loader: async () => , + }, + }); + + renderTestApp({ + extensions: [catalogPage], + initialRouteEntries: ['/catalog'], + }); + + await waitFor(() => { + expect(screen.getByTestId('catalog-page')).toBeInTheDocument(); + expect(screen.getByTestId('create-link')).toHaveAttribute( + 'href', + '/catalog/create', + ); + expect(screen.getByTestId('settings-link')).toHaveAttribute( + 'href', + '/settings', + ); + }); + }); + + it('should handle multiple routes correctly', async () => { + const homePage = PageBlueprint.make({ + name: 'home', + params: { + path: '/', + loader: async () =>
Home Page
, + }, + }); + + const catalogPage = PageBlueprint.make({ + name: 'catalog', + params: { + path: '/catalog', + loader: async () =>
Catalog Page
, + }, + }); + + const settingsPage = PageBlueprint.make({ + name: 'settings', + params: { + path: '/settings', + loader: async () => ( +
Settings Page
+ ), + }, + }); + + const { unmount } = renderTestApp({ + extensions: [homePage, catalogPage, settingsPage], + initialRouteEntries: ['/'], + }); + + await waitFor(() => { + expect(screen.getByTestId('home-page')).toBeInTheDocument(); + }); + + unmount(); + + const { unmount: unmount2 } = renderTestApp({ + extensions: [homePage, catalogPage, settingsPage], + initialRouteEntries: ['/catalog'], + }); + + await waitFor(() => { + expect(screen.getByTestId('catalog-page')).toBeInTheDocument(); + }); + + unmount2(); + + renderTestApp({ + extensions: [homePage, catalogPage, settingsPage], + initialRouteEntries: ['/settings'], + }); + + await waitFor(() => { + expect(screen.getByTestId('settings-page')).toBeInTheDocument(); + }); + }); + + it('should handle routes with trailing slashes', async () => { + const docsPage = PageBlueprint.make({ + name: 'docs', + params: { + path: '/docs/', + loader: async () =>
Docs Page
, + }, + }); + + renderTestApp({ + extensions: [docsPage], + initialRouteEntries: ['/docs'], + }); + + await waitFor(() => { + expect(screen.getByTestId('docs-page')).toBeInTheDocument(); + }); + }); + + it('should show 404 for unknown paths when root route exists', async () => { + const homePage = PageBlueprint.make({ + name: 'home', + params: { + path: '/', + loader: async () =>
Home Page
, + }, + }); + + const catalogPage = PageBlueprint.make({ + name: 'catalog', + params: { + path: '/catalog', + loader: async () =>
Catalog Page
, + }, + }); + + renderTestApp({ + extensions: [homePage, catalogPage], + initialRouteEntries: ['/unknown'], + }); + + await waitFor(() => { + expect(screen.queryByTestId('home-page')).not.toBeInTheDocument(); + expect(screen.queryByTestId('catalog-page')).not.toBeInTheDocument(); + }); + }); +}); diff --git a/plugins/app/src/extensions/AppRoutes.tsx b/plugins/app/src/extensions/AppRoutes.tsx index ddd7962004..bd96e6e9b1 100644 --- a/plugins/app/src/extensions/AppRoutes.tsx +++ b/plugins/app/src/extensions/AppRoutes.tsx @@ -20,7 +20,7 @@ import { createExtensionInput, NotFoundErrorPage, } from '@backstage/frontend-plugin-api'; -import { useRoutes } from 'react-router-dom'; +import { useRoutes, Outlet } from 'react-router-dom'; export const AppRoutes = createExtension({ name: 'routes', @@ -38,14 +38,42 @@ export const AppRoutes = createExtension({ const element = useRoutes([ ...inputs.routes.map(route => { const routePath = route.get(coreExtensionData.routePath); + const routeElement = route.get(coreExtensionData.reactElement); + // For v7_relativeSplatPath: convert splat paths to parent/child structure + if (routePath === '/') { + // Root route: parent with index and splat children + return { + path: '/', + element: , + children: [ + { + index: true, + element: routeElement, + }, + { + path: '*', + element: routeElement, + }, + ], + }; + } + + // Non-root routes: parent route with splat child + const normalizedPath = routePath.replace(/\/$/, ''); return { - path: - routePath === '/' - ? routePath - : `${routePath.replace(/\/$/, '')}/*`, - - element: route.get(coreExtensionData.reactElement), + path: normalizedPath, + element: , + children: [ + { + index: true, + element: routeElement, + }, + { + path: '*', + element: routeElement, + }, + ], }; }), { diff --git a/plugins/auth-react/package.json b/plugins/auth-react/package.json index 7c6f13b231..cbdc08f865 100644 --- a/plugins/auth-react/package.json +++ b/plugins/auth-react/package.json @@ -55,13 +55,13 @@ "msw": "^1.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/auth/package.json b/plugins/auth/package.json index e9efceee72..e32b98be2b 100644 --- a/plugins/auth/package.json +++ b/plugins/auth/package.json @@ -68,13 +68,13 @@ "msw": "^1.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index 1972d4e628..98e9ed9932 100644 --- a/plugins/catalog-graph/package.json +++ b/plugins/catalog-graph/package.json @@ -78,13 +78,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index 0f726aed37..a21cd01557 100644 --- a/plugins/catalog-import/package.json +++ b/plugins/catalog-import/package.json @@ -91,13 +91,13 @@ "msw": "^1.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index fdc16c0dba..5d63046df2 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -102,7 +102,7 @@ "@types/zen-observable": "^0.8.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0", + "react-router-dom": "^6.30.2", "react-test-renderer": "^16.13.1", "zod": "^3.25.76" }, @@ -110,7 +110,7 @@ "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/catalog-unprocessed-entities/package.json b/plugins/catalog-unprocessed-entities/package.json index fa21419286..9547225fc0 100644 --- a/plugins/catalog-unprocessed-entities/package.json +++ b/plugins/catalog-unprocessed-entities/package.json @@ -71,13 +71,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index 2eb5dcd440..bd110d4155 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -105,14 +105,14 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0", + "react-router-dom": "^6.30.2", "swr": "^2.2.5" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/catalog/src/alpha/components/EntityTabs/EntityTabs.test.tsx b/plugins/catalog/src/alpha/components/EntityTabs/EntityTabs.test.tsx new file mode 100644 index 0000000000..3bca08288f --- /dev/null +++ b/plugins/catalog/src/alpha/components/EntityTabs/EntityTabs.test.tsx @@ -0,0 +1,218 @@ +/* + * Copyright 2025 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { screen } from '@testing-library/react'; +import { useSelectedSubRoute } from './EntityTabs'; +import { MemoryRouter, Route, Routes } from 'react-router-dom'; +import { render } from '@testing-library/react'; + +function TestSubRouteHook(props: { + subRoutes: Array<{ + group: string; + path: string; + title: string; + children: JSX.Element; + }>; +}) { + const { index, route, element } = useSelectedSubRoute(props.subRoutes); + return ( +
+
{index}
+
{route?.title}
+
{element}
+
+ ); +} + +describe('EntityTabs', () => { + const subRoutes = [ + { + group: 'default', + path: '/overview', + title: 'Overview', + children:
Overview Content
, + }, + { + group: 'default', + path: '/details', + title: 'Details', + children:
Details Content
, + }, + { + group: 'docs', + path: '/docs', + title: 'Documentation', + children:
Documentation Content
, + }, + ]; + + describe('useSelectedSubRoute', () => { + it('should render the first route at root path', () => { + render( + + + } + /> + + , + ); + + expect(screen.getByTestId('selected-index')).toHaveTextContent('0'); + expect(screen.getByTestId('selected-route-title')).toHaveTextContent( + 'Overview', + ); + }); + + it('should render a route at non-root path', () => { + render( + + + } + /> + + , + ); + + expect(screen.getByTestId('selected-index')).toHaveTextContent('1'); + expect(screen.getByTestId('selected-route-title')).toHaveTextContent( + 'Details', + ); + }); + + it('should handle nested paths under a route (splat path behavior)', () => { + render( + + + } + /> + + , + ); + + expect(screen.getByTestId('selected-index')).toHaveTextContent('1'); + expect(screen.getByTestId('selected-route-title')).toHaveTextContent( + 'Details', + ); + }); + + it('should render correct content for matched route', () => { + render( + + + } + /> + + , + ); + + expect(screen.getByTestId('element-container')).toHaveTextContent( + 'Documentation Content', + ); + }); + + it('should support relative links within routes', () => { + const routesWithRelativeLinks = [ + { + group: 'default', + path: '/entity', + title: 'Entity', + children: ( +
+ Entity Content + Go to child +
+ ), + }, + ]; + + render( + + + } + /> + + , + ); + + expect(screen.getByText('Entity Content')).toBeInTheDocument(); + expect(screen.getByText('Go to child')).toHaveAttribute( + 'href', + './child', + ); + }); + + it('should handle routes with nested path segments', () => { + const nestedPathRoutes = [ + { + group: 'default', + path: '/catalog/entities', + title: 'Entities', + children:
Entities Content
, + }, + { + group: 'default', + path: '/catalog', + title: 'Catalog', + children:
Catalog Content
, + }, + ]; + + render( + + + } + /> + + , + ); + + expect(screen.getByTestId('selected-index')).toHaveTextContent('0'); + expect(screen.getByTestId('selected-route-title')).toHaveTextContent( + 'Entities', + ); + }); + + it('should fall back to first route for unknown paths', () => { + render( + + + } + /> + + , + ); + + expect(screen.getByTestId('selected-index')).toHaveTextContent('0'); + expect(screen.getByTestId('selected-route-title')).toHaveTextContent( + 'Overview', + ); + }); + }); +}); diff --git a/plugins/catalog/src/alpha/components/EntityTabs/EntityTabs.tsx b/plugins/catalog/src/alpha/components/EntityTabs/EntityTabs.tsx index e7e417eace..87e38ad8ee 100644 --- a/plugins/catalog/src/alpha/components/EntityTabs/EntityTabs.tsx +++ b/plugins/catalog/src/alpha/components/EntityTabs/EntityTabs.tsx @@ -15,7 +15,7 @@ */ import { useMemo } from 'react'; import { Helmet } from 'react-helmet'; -import { matchRoutes, useParams, useRoutes } from 'react-router-dom'; +import { matchRoutes, useParams, useRoutes, Outlet } from 'react-router-dom'; import { EntityTabsPanel } from './EntityTabsPanel'; import { EntityTabsList } from './EntityTabsList'; @@ -33,17 +33,25 @@ export function useSelectedSubRoute(subRoutes: SubRoute[]): { } { const params = useParams(); + // For v7_relativeSplatPath: convert splat paths to parent/child structure const routes = subRoutes.map(({ path, children }) => ({ caseSensitive: false, - path: `${path}/*`, - element: children, + path: path, + element: , + children: [ + { + index: true, + element: children, + }, + { + path: '*', + element: children, + }, + ], })); - // TODO: remove once react-router updated - const sortedRoutes = routes.sort((a, b) => - // remove "/*" symbols from path end before comparing - b.path.replace(/\/\*$/, '').localeCompare(a.path.replace(/\/\*$/, '')), - ); + // Sort routes by path length (longest first) for proper matching + const sortedRoutes = routes.sort((a, b) => b.path.localeCompare(a.path)); const element = useRoutes(sortedRoutes) ?? subRoutes[0]?.children; @@ -57,7 +65,7 @@ export function useSelectedSubRoute(subRoutes: SubRoute[]): { const [matchedRoute] = matchRoutes(sortedRoutes, currentRoute) ?? []; const foundIndex = matchedRoute - ? subRoutes.findIndex(t => `${t.path}/*` === matchedRoute.route.path) + ? subRoutes.findIndex(t => t.path === matchedRoute.route.path) : 0; return { diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index d14626ee6c..0f15a33ad4 100644 --- a/plugins/config-schema/package.json +++ b/plugins/config-schema/package.json @@ -57,13 +57,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/devtools-react/package.json b/plugins/devtools-react/package.json index 4d593a0c5a..cff2e4afe2 100644 --- a/plugins/devtools-react/package.json +++ b/plugins/devtools-react/package.json @@ -51,13 +51,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/devtools/package.json b/plugins/devtools/package.json index 124f71a0a7..db4f7d95a0 100644 --- a/plugins/devtools/package.json +++ b/plugins/devtools/package.json @@ -76,13 +76,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json index 995418ced5..5db2097554 100644 --- a/plugins/example-todo-list/package.json +++ b/plugins/example-todo-list/package.json @@ -53,13 +53,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/home-react/package.json b/plugins/home-react/package.json index bc8717135f..298b690841 100644 --- a/plugins/home-react/package.json +++ b/plugins/home-react/package.json @@ -68,13 +68,13 @@ "@types/react-grid-layout": "^1.3.2", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/home/package.json b/plugins/home/package.json index 0e17cadddc..8121f340c0 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -92,13 +92,13 @@ "@types/react-grid-layout": "^1.3.2", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/kubernetes-cluster/package.json b/plugins/kubernetes-cluster/package.json index 5fe7ac09ba..e101f12864 100644 --- a/plugins/kubernetes-cluster/package.json +++ b/plugins/kubernetes-cluster/package.json @@ -76,13 +76,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/kubernetes-react/package.json b/plugins/kubernetes-react/package.json index 986129e094..eff2444e30 100644 --- a/plugins/kubernetes-react/package.json +++ b/plugins/kubernetes-react/package.json @@ -87,13 +87,13 @@ "msw": "^2.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index 9e6c5371d1..d9d13ee43d 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -78,13 +78,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/mui-to-bui/package.json b/plugins/mui-to-bui/package.json index ad0b5bfdad..288868deaf 100644 --- a/plugins/mui-to-bui/package.json +++ b/plugins/mui-to-bui/package.json @@ -51,13 +51,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/notifications/package.json b/plugins/notifications/package.json index 39c615d6a6..257b8dc509 100644 --- a/plugins/notifications/package.json +++ b/plugins/notifications/package.json @@ -77,13 +77,13 @@ "msw": "^1.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/org-react/package.json b/plugins/org-react/package.json index 10037138b2..de234a624b 100644 --- a/plugins/org-react/package.json +++ b/plugins/org-react/package.json @@ -61,13 +61,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/org/package.json b/plugins/org/package.json index 45b9b55e4e..82aba952db 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -83,13 +83,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/permission-react/package.json b/plugins/permission-react/package.json index cfe709913f..d2e36146f2 100644 --- a/plugins/permission-react/package.json +++ b/plugins/permission-react/package.json @@ -55,13 +55,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/scaffolder-node-test-utils/package.json b/plugins/scaffolder-node-test-utils/package.json index 736742fe63..b30f4d42dd 100644 --- a/plugins/scaffolder-node-test-utils/package.json +++ b/plugins/scaffolder-node-test-utils/package.json @@ -52,13 +52,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json index d77c3f6769..840f210c78 100644 --- a/plugins/scaffolder-react/package.json +++ b/plugins/scaffolder-react/package.json @@ -110,14 +110,14 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0", + "react-router-dom": "^6.30.2", "swr": "^2.0.0" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index ed7e587bf2..9b505fc2b6 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -123,14 +123,14 @@ "@types/react-window": "^1.8.8", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0", + "react-router-dom": "^6.30.2", "swr": "^2.0.0" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/search-react/package.json b/plugins/search-react/package.json index cce379e44e..82e88fca07 100644 --- a/plugins/search-react/package.json +++ b/plugins/search-react/package.json @@ -84,13 +84,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/search/package.json b/plugins/search/package.json index bf1a5f3a79..cbc271f99e 100644 --- a/plugins/search/package.json +++ b/plugins/search/package.json @@ -85,13 +85,13 @@ "history": "^5.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/signals-react/package.json b/plugins/signals-react/package.json index 6089117ff5..a91707db7d 100644 --- a/plugins/signals-react/package.json +++ b/plugins/signals-react/package.json @@ -51,13 +51,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/signals/package.json b/plugins/signals/package.json index 94621fee6a..a6c58f3f55 100644 --- a/plugins/signals/package.json +++ b/plugins/signals/package.json @@ -70,14 +70,14 @@ "jest-websocket-mock": "^2.5.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0", + "react-router-dom": "^6.30.2", "wait-for-expect": "^3.0.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/techdocs-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json index 32bfc5023e..1d52ae11c0 100644 --- a/plugins/techdocs-addons-test-utils/package.json +++ b/plugins/techdocs-addons-test-utils/package.json @@ -58,14 +58,14 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@testing-library/react": "^16.0.0", "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json index 2a938f00c0..ca73f85402 100644 --- a/plugins/techdocs-module-addons-contrib/package.json +++ b/plugins/techdocs-module-addons-contrib/package.json @@ -75,14 +75,14 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0", + "react-router-dom": "^6.30.2", "shadow-dom-testing-library": "^1.13.1" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/techdocs-react/package.json b/plugins/techdocs-react/package.json index cd211ea914..458a7854c7 100644 --- a/plugins/techdocs-react/package.json +++ b/plugins/techdocs-react/package.json @@ -81,13 +81,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 7349215d5f..96bc5bacd0 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -101,13 +101,13 @@ "@types/react": "^18.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index 94c4c505d7..4702b8cbeb 100644 --- a/plugins/user-settings/package.json +++ b/plugins/user-settings/package.json @@ -85,13 +85,13 @@ "msw": "^1.0.0", "react": "^18.0.2", "react-dom": "^18.0.2", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0", - "react-router-dom": "^6.3.0" + "react-router-dom": "^6.30.2" }, "peerDependenciesMeta": { "@types/react": { diff --git a/yarn.lock b/yarn.lock index 309349d928..9b84ee2cbb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2934,12 +2934,12 @@ __metadata: "@types/react": "npm:^18.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -3544,7 +3544,7 @@ __metadata: react: "npm:^18.0.2" react-dom: "npm:^18.0.2" react-router-beta: "npm:react-router@6.0.0-beta.0" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-router-dom-beta: "npm:react-router-dom@6.0.0-beta.0" react-router-dom-stable: "npm:react-router-dom@^6.3.0" react-router-stable: "npm:react-router@^6.3.0" @@ -3555,7 +3555,7 @@ __metadata: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -3584,13 +3584,13 @@ __metadata: lodash: "npm:^4.17.21" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" zod: "npm:^3.25.76" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -3658,7 +3658,7 @@ __metadata: react-hook-form: "npm:^7.12.2" react-idle-timer: "npm:5.7.2" react-markdown: "npm:^8.0.0" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-sparklines: "npm:^1.7.0" react-syntax-highlighter: "npm:^15.4.5" react-use: "npm:^17.3.2" @@ -3673,7 +3673,7 @@ __metadata: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -3700,13 +3700,13 @@ __metadata: history: "npm:^5.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" zod: "npm:^3.25.76" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -3763,14 +3763,14 @@ __metadata: "@types/react": "npm:^18.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" zen-observable: "npm:^0.10.0" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -3838,13 +3838,13 @@ __metadata: lodash: "npm:^4.17.21" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" zod: "npm:^3.25.76" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -3871,12 +3871,12 @@ __metadata: "@types/react": "npm:^18.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -3901,13 +3901,13 @@ __metadata: msw: "npm:^1.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" uri-template: "npm:^2.0.0" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -3932,14 +3932,14 @@ __metadata: history: "npm:^5.3.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" zod: "npm:^3.25.76" zod-to-json-schema: "npm:^3.25.1" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -3963,14 +3963,14 @@ __metadata: "@types/react": "npm:^18.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" zod: "npm:^3.25.76" peerDependencies: "@testing-library/react": ^16.0.0 "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -4015,12 +4015,12 @@ __metadata: msw: "npm:^1.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -4057,12 +4057,12 @@ __metadata: grpc-docs: "npm:^1.1.2" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -4103,13 +4103,13 @@ __metadata: graphql-ws: "npm:^5.4.1" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" swagger-ui-react: "npm:^5.27.1" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -4174,12 +4174,12 @@ __metadata: "@types/react": "npm:^18.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -4201,12 +4201,12 @@ __metadata: react: "npm:^18.0.2" react-aria-components: "npm:^1.14.0" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -4242,14 +4242,14 @@ __metadata: msw: "npm:^1.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" zod: "npm:^3.25.76" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -4753,12 +4753,12 @@ __metadata: msw: "npm:^1.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -4787,13 +4787,13 @@ __metadata: msw: "npm:^1.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -5295,13 +5295,13 @@ __metadata: qs: "npm:^6.9.4" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -5345,14 +5345,14 @@ __metadata: react: "npm:^18.0.2" react-dom: "npm:^18.0.2" react-hook-form: "npm:^7.12.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" yaml: "npm:^2.0.0" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -5418,7 +5418,7 @@ __metadata: qs: "npm:^6.9.4" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-test-renderer: "npm:^16.13.1" react-use: "npm:^17.2.4" yaml: "npm:^2.0.0" @@ -5428,7 +5428,7 @@ __metadata: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -5468,13 +5468,13 @@ __metadata: luxon: "npm:^3.5.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -5528,7 +5528,7 @@ __metadata: react: "npm:^18.0.2" react-dom: "npm:^18.0.2" react-helmet: "npm:6.1.0" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" swr: "npm:^2.2.5" zen-observable: "npm:^0.10.0" @@ -5536,7 +5536,7 @@ __metadata: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -5563,14 +5563,14 @@ __metadata: jsonschema: "npm:^1.2.6" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" zen-observable: "npm:^0.10.0" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -5635,12 +5635,12 @@ __metadata: "@types/react": "npm:^18.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -5671,13 +5671,13 @@ __metadata: react: "npm:^18.0.2" react-dom: "npm:^18.0.2" react-json-view: "npm:^1.21.3" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -5904,12 +5904,12 @@ __metadata: "@types/react-grid-layout": "npm:^1.3.2" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -5952,14 +5952,14 @@ __metadata: react-dom: "npm:^18.0.2" react-grid-layout: "npm:1.3.4" react-resizable: "npm:^3.0.4" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" zod: "npm:^3.25.76" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -6032,13 +6032,13 @@ __metadata: kubernetes-models: "npm:^4.1.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -6116,13 +6116,13 @@ __metadata: msw: "npm:^2.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.4.0" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -6151,12 +6151,12 @@ __metadata: "@types/react": "npm:^18.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -6202,12 +6202,12 @@ __metadata: "@types/react": "npm:^18.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -6352,13 +6352,13 @@ __metadata: react: "npm:^18.0.2" react-dom: "npm:^18.0.2" react-relative-time: "npm:^0.0.9" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -6387,13 +6387,13 @@ __metadata: "@types/react": "npm:^18.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -6433,13 +6433,13 @@ __metadata: qs: "npm:^6.10.1" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -6539,13 +6539,13 @@ __metadata: "@types/react": "npm:^18.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" swr: "npm:^2.0.0" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -6976,14 +6976,14 @@ __metadata: "@types/react": "npm:^18.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" winston: "npm:^3.2.1" winston-transport: "npm:^4.7.0" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -7070,7 +7070,7 @@ __metadata: qs: "npm:^6.9.4" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" swr: "npm:^2.0.0" use-immer: "npm:^0.11.0" @@ -7081,7 +7081,7 @@ __metadata: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -7150,7 +7150,7 @@ __metadata: react-dom: "npm:^18.0.2" react-resizable: "npm:^3.0.5" react-resizable-panels: "npm:^3.0.4" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" react-window: "npm:^1.8.10" swr: "npm:^2.0.0" @@ -7161,7 +7161,7 @@ __metadata: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -7366,14 +7366,14 @@ __metadata: qs: "npm:^6.9.4" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.3.2" uuid: "npm:^11.0.2" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -7408,13 +7408,13 @@ __metadata: qs: "npm:^6.9.4" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -7478,12 +7478,12 @@ __metadata: "@types/react": "npm:^18.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -7510,14 +7510,14 @@ __metadata: jest-websocket-mock: "npm:^2.5.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" uuid: "npm:^11.0.0" wait-for-expect: "npm:^3.0.2" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -7543,14 +7543,14 @@ __metadata: "@types/react": "npm:^18.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" shadow-dom-testing-library: "npm:^1.13.1" peerDependencies: "@testing-library/react": ^16.0.0 "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -7618,13 +7618,13 @@ __metadata: photoswipe: "npm:^5.3.7" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" shadow-dom-testing-library: "npm:^1.13.1" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -7700,13 +7700,13 @@ __metadata: react: "npm:^18.0.2" react-dom: "npm:^18.0.2" react-helmet: "npm:6.1.0" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -7756,13 +7756,13 @@ __metadata: react: "npm:^18.0.2" react-dom: "npm:^18.0.2" react-helmet: "npm:6.1.0" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -7829,14 +7829,14 @@ __metadata: msw: "npm:^1.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" zen-observable: "npm:^0.10.0" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -7948,14 +7948,14 @@ __metadata: msw: "npm:^1.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" zen-observable: "npm:^0.10.0" peerDependencies: "@testing-library/react": ^16.0.0 "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -7976,13 +7976,13 @@ __metadata: "@types/react": "npm:^18.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" peerDependencies: "@material-ui/core": ^4.12.2 "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -8020,13 +8020,13 @@ __metadata: react: "npm:^18.0.2" react-aria-components: "npm:^1.14.0" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" storybook: "npm:^10.3.0-alpha.1" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -8043,12 +8043,12 @@ __metadata: "@types/react": "npm:^18.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -10000,13 +10000,13 @@ __metadata: "@types/react": "npm:^18.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -24641,12 +24641,12 @@ __metadata: msw: "npm:^1.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - react-router-dom: ^6.3.0 + react-router-dom: ^6.30.2 peerDependenciesMeta: "@types/react": optional: true @@ -30774,8 +30774,8 @@ __metadata: history: "npm:^5.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router: "npm:^6.3.0" - react-router-dom: "npm:^6.3.0" + react-router: "npm:^6.30.2" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" zen-observable: "npm:^0.10.0" languageName: unknown @@ -30848,8 +30848,8 @@ __metadata: msw: "npm:^1.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router: "npm:^6.3.0" - react-router-dom: "npm:^6.3.0" + react-router: "npm:^6.30.2" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" zen-observable: "npm:^0.10.0" languageName: unknown @@ -44232,7 +44232,7 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:^6.3.0": +"react-router-dom@npm:^6.30.2": version: 6.30.3 resolution: "react-router-dom@npm:6.30.3" dependencies: @@ -44256,7 +44256,7 @@ __metadata: languageName: node linkType: hard -"react-router@npm:6.30.3, react-router@npm:^6.3.0": +"react-router@npm:6.30.3, react-router@npm:^6.30.2": version: 6.30.3 resolution: "react-router@npm:6.30.3" dependencies: @@ -48046,7 +48046,7 @@ __metadata: history: "npm:^5.0.0" react: "npm:^18.0.2" react-dom: "npm:^18.0.2" - react-router-dom: "npm:^6.3.0" + react-router-dom: "npm:^6.30.2" react-use: "npm:^17.2.4" languageName: unknown linkType: soft