diff --git a/test/apps/client-js-router-v8-app/.env.development b/test/apps/client-js-router-v8-app/.env.development
new file mode 100644
index 00000000..1be07a69
--- /dev/null
+++ b/test/apps/client-js-router-v8-app/.env.development
@@ -0,0 +1,2 @@
+# Forces Vite to run a development build: https://vitejs.dev/guide/env-and-mode.html#modes
+NODE_ENV=development
diff --git a/test/apps/client-js-router-v8-app/.gitignore b/test/apps/client-js-router-v8-app/.gitignore
new file mode 100644
index 00000000..a547bf36
--- /dev/null
+++ b/test/apps/client-js-router-v8-app/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/test/apps/client-js-router-v8-app/index.html b/test/apps/client-js-router-v8-app/index.html
new file mode 100644
index 00000000..8045ca37
--- /dev/null
+++ b/test/apps/client-js-router-v8-app/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+ okta-react client-js + React Router v8 sample
+
+
+
+
+
+
diff --git a/test/apps/client-js-router-v8-app/package.json b/test/apps/client-js-router-v8-app/package.json
new file mode 100644
index 00000000..156cc08d
--- /dev/null
+++ b/test/apps/client-js-router-v8-app/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "@okta/test.app.client-js-router-v8-app",
+ "private": true,
+ "version": "0.0.0",
+ "scripts": {
+ "prestart": "vite build",
+ "start": "vite preview --port 8080",
+ "start:dev": "vite build --mode development && vite preview --port 8080",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "react": "^19.2.7",
+ "react-dom": "^19.2.7",
+ "react-router": "^8.3.0",
+ "@okta/auth-foundation": "*",
+ "@okta/oauth2-flows": "*",
+ "@okta/spa-platform": "*",
+ "@okta/okta-react": "*"
+ },
+ "devDependencies": {
+ "@types/react": "^19.2.18",
+ "@types/react-dom": "^19.2.4",
+ "@vitejs/plugin-react": "^6.0.5",
+ "typescript": "^5.6.3",
+ "vite": "^8.2.1"
+ }
+}
diff --git a/test/apps/client-js-router-v8-app/public/resource.json b/test/apps/client-js-router-v8-app/public/resource.json
new file mode 100644
index 00000000..459d8eab
--- /dev/null
+++ b/test/apps/client-js-router-v8-app/public/resource.json
@@ -0,0 +1,4 @@
+{
+ "message": "This is a protected resource, fetched via createFetchLoader.",
+ "widgets": ["foo", "bar", "baz"]
+}
diff --git a/test/apps/client-js-router-v8-app/src/ErrorBoundary.tsx b/test/apps/client-js-router-v8-app/src/ErrorBoundary.tsx
new file mode 100644
index 00000000..eb5db002
--- /dev/null
+++ b/test/apps/client-js-router-v8-app/src/ErrorBoundary.tsx
@@ -0,0 +1,34 @@
+/*!
+ * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (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 * as React from 'react';
+import { Link, isRouteErrorResponse, useRouteError } from 'react-router';
+
+const ErrorBoundary: React.FC = () => {
+ const error = useRouteError();
+
+ const message = isRouteErrorResponse(error)
+ ? `${error.status} ${error.statusText}`
+ : error instanceof Error
+ ? error.message
+ : 'Unknown error';
+
+ return (
+
+
Error
+
{message}
+ Home
+
+ );
+};
+
+export default ErrorBoundary;
diff --git a/test/apps/client-js-router-v8-app/src/Home.tsx b/test/apps/client-js-router-v8-app/src/Home.tsx
new file mode 100644
index 00000000..315f42aa
--- /dev/null
+++ b/test/apps/client-js-router-v8-app/src/Home.tsx
@@ -0,0 +1,59 @@
+/*!
+ * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (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 * as React from 'react';
+import { Link } from 'react-router';
+import { Credential } from '@okta/spa-platform';
+import { orchestrator, signOutFlow } from './auth';
+
+const Home: React.FC = () => {
+ const [hasCredential, setHasCredential] = React.useState(false);
+
+ React.useEffect(() => {
+ Credential.getDefault().then((credential) => setHasCredential(credential !== null));
+ }, []);
+
+ const signIn = async () => {
+ // Redirects to Okta - the returned promise never resolves because the page navigates away.
+ await orchestrator.getToken();
+ };
+
+ const signOut = async () => {
+ const credential = await Credential.getDefault();
+ const idToken = credential?.token.idToken?.toString();
+ if (!credential || !idToken) {
+ return;
+ }
+ // Ending the Okta session redirect doesn't clear locally stored credentials - that's on the app.
+ await credential.remove();
+ const url = await signOutFlow.start(idToken);
+ window.location.assign(url);
+ };
+
+ return (
+
+
okta-react client-js + React Router v8 sample
+ {hasCredential ? (
+
+ ) : (
+
+ )}
+
+
+ );
+};
+
+export default Home;
diff --git a/test/apps/client-js-router-v8-app/src/LoginCallback.tsx b/test/apps/client-js-router-v8-app/src/LoginCallback.tsx
new file mode 100644
index 00000000..b90a7832
--- /dev/null
+++ b/test/apps/client-js-router-v8-app/src/LoginCallback.tsx
@@ -0,0 +1,20 @@
+/*!
+ * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (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 * as React from 'react';
+
+// This route's loader (createLoginCallbackLoader) always resolves the flow and
+// redirects before the router renders a route element, so this is never shown
+// except momentarily while the loader is in flight.
+const LoginCallback: React.FC = () =>
Loading...
;
+
+export default LoginCallback;
diff --git a/test/apps/client-js-router-v8-app/src/Protected.tsx b/test/apps/client-js-router-v8-app/src/Protected.tsx
new file mode 100644
index 00000000..9a4b0134
--- /dev/null
+++ b/test/apps/client-js-router-v8-app/src/Protected.tsx
@@ -0,0 +1,31 @@
+/*!
+ * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (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 * as React from 'react';
+import { Link, useLoaderData } from 'react-router';
+import type { Token } from '@okta/auth-foundation';
+
+const Protected: React.FC = () => {
+ const token = useLoaderData() as Token;
+ const claims = token.idToken?.claims;
+
+ return (
+
+
Protected
+
Loaded via createTokenLoader.
+
{JSON.stringify(claims, null, 2)}
+ Home
+
+ );
+};
+
+export default Protected;
diff --git a/test/apps/client-js-router-v8-app/src/Resource.tsx b/test/apps/client-js-router-v8-app/src/Resource.tsx
new file mode 100644
index 00000000..966a1f3a
--- /dev/null
+++ b/test/apps/client-js-router-v8-app/src/Resource.tsx
@@ -0,0 +1,29 @@
+/*!
+ * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (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 * as React from 'react';
+import { Link, useLoaderData } from 'react-router';
+
+const Resource: React.FC = () => {
+ const resource = useLoaderData();
+
+ return (
+
+
Resource
+
Loaded via createFetchLoader (/resource.json).
+
{JSON.stringify(resource, null, 2)}
+ Home
+
+ );
+};
+
+export default Resource;
diff --git a/test/apps/client-js-router-v8-app/src/auth.ts b/test/apps/client-js-router-v8-app/src/auth.ts
new file mode 100644
index 00000000..778f8dbf
--- /dev/null
+++ b/test/apps/client-js-router-v8-app/src/auth.ts
@@ -0,0 +1,55 @@
+/*!
+ * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (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 {
+ OAuth2Client,
+ AuthorizationCodeFlow,
+ SessionLogoutFlow,
+ AuthorizationCodeFlowOrchestrator,
+ FetchClient,
+} from '@okta/spa-platform';
+
+const { ISSUER, CLIENT_ID } = process.env;
+
+export const client = new OAuth2Client({
+ issuer: ISSUER!,
+ clientId: CLIENT_ID!,
+ scopes: ['openid', 'profile', 'email'],
+});
+
+export const signInFlow = new AuthorizationCodeFlow(client, {
+ redirectUri: `${window.location.origin}/login/callback`,
+});
+
+export const signOutFlow = new SessionLogoutFlow(client, {
+ logoutRedirectUri: `${window.location.origin}/`,
+});
+
+// `emitBeforeRedirect: false` skips the `login_prompt_required` event - this sample has no
+// confirmation UI to gate the redirect on, so `getToken()` should redirect immediately.
+export const orchestrator = new AuthorizationCodeFlowOrchestrator(signInFlow, {
+ emitBeforeRedirect: false,
+});
+
+export const fetchClient = new FetchClient(orchestrator);
+
+// If the user abandons a sign-in redirect (e.g. hits the browser back button on Okta's hosted page
+// before completing it) and the browser restores this page from the back/forward cache, `signInFlow`
+// comes back with `inProgress` still stuck `true` from the aborted attempt - `start()`/`resume()` only
+// ever reset it on completion or failure, neither of which runs for an abandoned redirect. That stuck
+// state makes every later `orchestrator.getToken()` call throw `flow already in progress` immediately.
+// `pageshow`'s `persisted` flag is the standard signal for a bfcache restore, so reset here.
+window.addEventListener('pageshow', (event) => {
+ if (event.persisted) {
+ signInFlow.reset();
+ }
+});
diff --git a/test/apps/client-js-router-v8-app/src/main.tsx b/test/apps/client-js-router-v8-app/src/main.tsx
new file mode 100644
index 00000000..978f0b1a
--- /dev/null
+++ b/test/apps/client-js-router-v8-app/src/main.tsx
@@ -0,0 +1,33 @@
+/*!
+ * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (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 * as React from 'react';
+import { createRoot } from 'react-dom/client';
+import { RouterProvider } from 'react-router';
+import { Credential } from '@okta/spa-platform';
+import { router } from './router';
+
+if (import.meta.env.DEV) {
+ // Exposed for manual testing from the browser console, e.g.:
+ // const cred = await __auth.Credential.getDefault();
+ // await cred.revoke(); // invalidates the access token server-side
+ // await cred.refresh(); // forces a refresh attempt (throws: no refresh token in this app's scopes)
+ (window as unknown as { __auth: unknown }).__auth = { Credential };
+}
+
+const container = document.getElementById('root');
+
+createRoot(container!).render(
+
+
+ ,
+);
diff --git a/test/apps/client-js-router-v8-app/src/router.tsx b/test/apps/client-js-router-v8-app/src/router.tsx
new file mode 100644
index 00000000..d5fe482d
--- /dev/null
+++ b/test/apps/client-js-router-v8-app/src/router.tsx
@@ -0,0 +1,49 @@
+/*!
+ * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (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 { createBrowserRouter } from 'react-router';
+import { createFetchLoader, createLoadersFromOrchestrator } from '@okta/okta-react/client-js';
+import { orchestrator, fetchClient } from './auth';
+import Home from './Home';
+import Protected from './Protected';
+import Resource from './Resource';
+import LoginCallback from './LoginCallback';
+import ErrorBoundary from './ErrorBoundary';
+
+const fetchResource = createFetchLoader(fetchClient);
+const { tokenLoader, loginCallbackLoader } = createLoadersFromOrchestrator(orchestrator);
+
+export const router = createBrowserRouter([
+ {
+ path: '/',
+ element: ,
+ errorElement: ,
+ },
+ {
+ path: '/protected',
+ element: ,
+ loader: () => tokenLoader(),
+ errorElement: ,
+ },
+ {
+ path: '/resource',
+ element: ,
+ loader: () => fetchResource('/resource.json'),
+ errorElement: ,
+ },
+ {
+ path: '/login/callback',
+ element: ,
+ loader: loginCallbackLoader,
+ errorElement: ,
+ },
+]);
diff --git a/test/apps/client-js-router-v8-app/src/vite-env.d.ts b/test/apps/client-js-router-v8-app/src/vite-env.d.ts
new file mode 100644
index 00000000..45248b4c
--- /dev/null
+++ b/test/apps/client-js-router-v8-app/src/vite-env.d.ts
@@ -0,0 +1,17 @@
+/*!
+ * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (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.
+ */
+
+///
+
+// vite.config.js replaces `process.env` with a literal object at build time
+// (see the `define` block); this app has no @types/node dependency.
+declare const process: { env: Record };
diff --git a/test/apps/client-js-router-v8-app/tsconfig.json b/test/apps/client-js-router-v8-app/tsconfig.json
new file mode 100644
index 00000000..a69133f8
--- /dev/null
+++ b/test/apps/client-js-router-v8-app/tsconfig.json
@@ -0,0 +1,22 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": ["DOM", "DOM.Iterable", "ESNext"],
+ "allowJs": false,
+ "skipLibCheck": false,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "types": ["vite/client"]
+ },
+ "include": ["src"],
+ "references": [{ "path": "./tsconfig.node.json" }]
+}
diff --git a/test/apps/client-js-router-v8-app/tsconfig.node.json b/test/apps/client-js-router-v8-app/tsconfig.node.json
new file mode 100644
index 00000000..e993792c
--- /dev/null
+++ b/test/apps/client-js-router-v8-app/tsconfig.node.json
@@ -0,0 +1,8 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "module": "esnext",
+ "moduleResolution": "node"
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/test/apps/client-js-router-v8-app/vite.config.js b/test/apps/client-js-router-v8-app/vite.config.js
new file mode 100644
index 00000000..281d289f
--- /dev/null
+++ b/test/apps/client-js-router-v8-app/vite.config.js
@@ -0,0 +1,54 @@
+/*!
+ * Copyright (c) 2017-Present, Okta, Inc. and/or its affiliates. All rights reserved.
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (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 { defineConfig } from 'vite'
+import react from '@vitejs/plugin-react'
+import oktaEnv from '@okta/env';
+
+oktaEnv.setEnvironmentVarsFromTestEnv(__dirname);
+
+process.env.CLIENT_ID = process.env.SPA_CLIENT_ID || process.env.CLIENT_ID;
+process.env.OKTA_TESTING_DISABLEHTTPSCHECK = process.env.OKTA_TESTING_DISABLEHTTPSCHECK || false;
+
+const env = {};
+
+// List of environment variables made available to the app
+[
+ 'ISSUER',
+ 'CLIENT_ID',
+ 'OKTA_TESTING_DISABLEHTTPSCHECK',
+].forEach((key) => {
+ if (!process.env[key]) {
+ throw new Error(`Environment variable ${key} must be set. See README.md`);
+ }
+ env[key] = process.env[key];
+});
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [react()],
+ define: {
+ 'process.env': env
+ },
+ server: {
+ port: process.env.PORT || 8080
+ },
+ build: {
+ rollupOptions: {
+ // always throw with build warnings, customize "onwarn" callback in vite.config.js to handle this error.
+ onwarn (warning, warn) {
+ warn('\nBuild warning happened, customize "onwarn" callback in vite.config.js to handle this error.');
+ throw new Error(warning);
+ }
+ }
+ }
+})
diff --git a/yarn.lock b/yarn.lock
index c5c85a00..0215b673 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1586,12 +1586,12 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
-"@okta/auth-foundation@^0.6.0":
+"@okta/auth-foundation@*", "@okta/auth-foundation@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@okta/auth-foundation/-/auth-foundation-0.6.0.tgz#25b729bc8d15de53025e08d619f4ec19e072687f"
integrity sha512-AueDPbgox+E0To/SYrxpjQwiyI2HwxNqp1aWn/90ZonevTiJAk+o5kSp9i+Y7j08aUEc1NGXKJj989I+ZXsRbQ==
-"@okta/oauth2-flows@^0.6.0":
+"@okta/oauth2-flows@*", "@okta/oauth2-flows@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@okta/oauth2-flows/-/oauth2-flows-0.6.0.tgz#1df28e8167b67912dfca31bd755593aa1f66425d"
integrity sha512-wCReTJegsaRYeycPcXeuyuPlQ2G5ZA6ttTJ/Is4rvBDCOQk8vMEq+B8Sd3n1v8tOddWP2HTRiIffu/92PqXRRQ==
@@ -1664,11 +1664,16 @@
optionalDependencies:
fsevents "*"
-"@okta/spa-platform@^0.6.0":
+"@okta/spa-platform@*", "@okta/spa-platform@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@okta/spa-platform/-/spa-platform-0.6.0.tgz#ac232752117835f7815459e7ce7d1f622c241953"
integrity sha512-VCQbvbnBtpwXBMg98ysRMyvdgjqj03wqPYEda4wyHEo31NN+KwzbwOaNAlxzg0+04MT2iDB0S+krA6MYGXA59w==
+"@oxc-project/types@=0.144.0":
+ version "0.144.0"
+ resolved "https://registry.yarnpkg.com/@oxc-project/types/-/types-0.144.0.tgz#7dfbfbfbbb9c24d4abeb6f9856a1eca02aff6468"
+ integrity sha512-nuhZIOLuI6TFQ32I/WnUx+SCPY7SdSKwgnFHydAuoS1+Z4BRcaP+RRJmGzl9lw+0OFF7UmaESf7KQRXaNLHypg==
+
"@peculiar/asn1-schema@^2.7.0":
version "2.8.0"
resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.8.0.tgz#69699f84259b2161607cabfc34e512a4023dbef9"
@@ -1743,11 +1748,86 @@
resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.23.3.tgz#957c098d4393d301a8aa7dccf3ef28ea5430e36a"
integrity sha512-4An71tdz9X8+3sI4Qqqd2LWd9vS39J7sqd9EU4Scw7TJE/qB10Flv/UuqbPVgfQV9XoK8Np6jNquZitnZq5i+Q==
+"@rolldown/binding-android-arm64@1.2.4":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.4.tgz#9ac390255ded738672ad1425bed6423453ff71fd"
+ integrity sha512-jHC2cnyKz5xU2fhECtFl8OZ83cYNt13GZQD+0uMJ/X3o+ijmd56okHhTUwxVSHPx1IRVIJEZ1/1pPzeLCU6XKA==
+
+"@rolldown/binding-darwin-arm64@1.2.4":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.4.tgz#c63cad2f656b672782dd70894af895af9cba35c8"
+ integrity sha512-Dc5mPD8F5F/FS8i01syd7FTF6yB2fVthH/TRkjwJkzUK6EpoxHtqvZQP5Zwq80/5z19TWYHIg1KOHboCgVx/aQ==
+
+"@rolldown/binding-darwin-x64@1.2.4":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.4.tgz#54f6305d6785793c63c1521a4da4412bf7d8e089"
+ integrity sha512-fpDm4oBo6SqLvWUYCmFhdde3U9KH2fRNNMeAnAPAIwxRL345xutL0EtEUcuoxsoazdJGv/MuDBQHlCDrtbvqOg==
+
+"@rolldown/binding-freebsd-x64@1.2.4":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.4.tgz#c069a3ebd4a5dcfffd79a00f33c06bc242d9566b"
+ integrity sha512-rSJoreDE/HoIzoaib6MTp5jQtCTdMHKIvItAKT/ImS6Y6Ww76oUaeMyp4Vc/fAgd/ehji068IxetHXAnqUwN9A==
+
+"@rolldown/binding-linux-arm-gnueabihf@1.2.4":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.4.tgz#cff0d05a56e19f02443313f2abf73cf693173867"
+ integrity sha512-/jm8OGHgn7oGaJu3i/qZI9spUGcJ+y/lk43ttQ/iO1tOd9NissG6o97bighBCiL+BKRngmcDuR6ikfwYdJmVuQ==
+
+"@rolldown/binding-linux-arm64-gnu@1.2.4":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.4.tgz#267605366ba2bf3146609417a6db99253943c96f"
+ integrity sha512-tIP06BeD9EqvECBrPZ+sqdPlYrT+aYaAiu1wYziVx5elRK/ftm33JxVDy2bXGbr6J0CrtirCkR87/X5a2euEng==
+
+"@rolldown/binding-linux-arm64-musl@1.2.4":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.4.tgz#73d47bfdba2a72c16bfb271c23efb8949b2c2018"
+ integrity sha512-Ql1Q0EQqVThvn9VAVlwNzsUvbSFtCMGjLpRRi4pk5i7NZZ4n5ISiLMjHYtus4VQ2PvkSw24zyaCVsiS+sXPj1w==
+
+"@rolldown/binding-linux-ppc64-gnu@1.2.4":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.4.tgz#3ba455c72d3e9efd973df59689d48e75ca6f7559"
+ integrity sha512-GjbjXD4XXfN19D0LZNbmiCBUoDiRACsYHr0yaIbbn8aFsXjHZifcYqu/W5Er5X2X990WjHXFrxarn5chzItorQ==
+
+"@rolldown/binding-linux-s390x-gnu@1.2.4":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.4.tgz#2fddcb48eee12a620735c83a0056307b6ede2edb"
+ integrity sha512-p5WR0NOwaRmJ/B1b6IjEFLLivwEsf3PrdBIhRbhTCQisbo2SvHHpG4ELB/+FgQNnB88LTOF86upmJmbvZdQ2lw==
+
+"@rolldown/binding-linux-x64-gnu@1.2.4":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.4.tgz#97fb91430f78e46f81d4fe82a049a8c47f4ece96"
+ integrity sha512-4/GyVjmhR+Tc6HLJvwc1sOhPqAZtySiSMesOZyX6JQ5XBxoTDEMKQzvo07NIK6nTon/SivlZqvhzvuVBNQhObQ==
+
+"@rolldown/binding-linux-x64-musl@1.2.4":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.4.tgz#71ec9967b5ff546a6d5dda16d1c7a97e50bf647a"
+ integrity sha512-l9eeLsCNvPpmSXUej0etw/J1eqV0Jj1D5G/xG6YTijmE6dkv6E2QezgWbTfQk63v952DPqrjOCoiqxq7Bw0YUQ==
+
+"@rolldown/binding-openharmony-arm64@1.2.4":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.4.tgz#1e19ab28fbdb009cb6d9503e3ff6cbeffd7225ae"
+ integrity sha512-e0F355MSTMm3+UOqtV3L24gFUp2N5m1f8L/7d56deik6va+AXdrt9F8LbzGpeWGWRbZEDq4m8NVnJDeBtf9DZg==
+
+"@rolldown/binding-win32-arm64-msvc@1.2.4":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.4.tgz#9fad167d015c699f4375c2a1d04d1e52e4a32de4"
+ integrity sha512-AWLi0uBRYh6QlE7OKhiz+phZC0qwtij2QZmhmOdsLdFn64m7oMpooE9ICE3lhm9xMb4SpDo2WbHcxX1iFLFtqw==
+
+"@rolldown/binding-win32-x64-msvc@1.2.4":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.4.tgz#7a5f2d3e886c357029332b53f38ad2042e4615c4"
+ integrity sha512-UwSDJOg3dqCAejWdxclJjCsh3Qq4vLYMDxmyHqo1btz3stK2VqgwNd3mm5tuIwzSlGIQ/1H9Hr+Zn09mrezNqQ==
+
"@rolldown/pluginutils@1.0.0-beta.27":
version "1.0.0-beta.27"
resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz#47d2bf4cef6d470b22f5831b420f8964e0bf755f"
integrity sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==
+"@rolldown/pluginutils@^1.0.0", "@rolldown/pluginutils@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz#e3fcee093fbb5ce765e1ad088ff4de2889f6f9be"
+ integrity sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==
+
"@rollup/plugin-babel@^7.1.0":
version "7.1.0"
resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-7.1.0.tgz#82c823a0d4f8e2dbc5cc1fb84b39558177d54bdf"
@@ -2251,6 +2331,11 @@
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.7.tgz#b89ddf2cd83b4feafcc4e2ea41afdfb95a0d194f"
integrity sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==
+"@types/react-dom@^19.2.4":
+ version "19.2.4"
+ resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-19.2.4.tgz#165ab5e97dfb081847b0f6755060cf40a3f6666b"
+ integrity sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw==
+
"@types/react-router-dom@^5.1.6", "@types/react-router-dom@^5.3.3":
version "5.3.3"
resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83"
@@ -2294,6 +2379,13 @@
"@types/prop-types" "*"
csstype "^3.2.2"
+"@types/react@^19.2.18":
+ version "19.2.18"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.18.tgz#eb0b6a1fb635d1a9692d5f84a3495bd8ad153707"
+ integrity sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==
+ dependencies:
+ csstype "^3.2.2"
+
"@types/scheduler@*":
version "0.26.0"
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.26.0.tgz#2b7183b9bbb622d130b23bedf06899b7fec7eed5"
@@ -2470,6 +2562,13 @@
"@types/babel__core" "^7.20.5"
react-refresh "^0.17.0"
+"@vitejs/plugin-react@^6.0.5":
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-6.0.5.tgz#48ee7951093ff9054952cff9d64e874355cde372"
+ integrity sha512-BOVzne/NL162sMdResB25mUv+vWMF5NoAjNf09TeGlE7ZpszZWSD3winycicLJw72yeVsoCn/2kOhEuCvEShMA==
+ dependencies:
+ "@rolldown/pluginutils" "^1.0.1"
+
"@vitest/pretty-format@2.1.9":
version "2.1.9"
resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-2.1.9.tgz#434ff2f7611689f9ce70cd7d567eceb883653fdf"
@@ -3747,6 +3846,11 @@ convert-source-map@^2.0.0:
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
+cookie-es@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-3.1.1.tgz#c4a8a16cf88cb5a185b23f4a61d6e9a85eb53287"
+ integrity sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg==
+
core-js-compat@^3.43.0, core-js-compat@^3.48.0:
version "3.49.0"
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.49.0.tgz#06145447d92f4aaf258a0c44f24b47afaeaffef6"
@@ -4082,6 +4186,11 @@ delegate@^3.1.2:
resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166"
integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==
+detect-libc@^2.0.3:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad"
+ integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==
+
detect-newline@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
@@ -7066,6 +7175,80 @@ lie@~3.3.0:
dependencies:
immediate "~3.0.5"
+lightningcss-android-arm64@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz#9a6841f88ae50fc83502903892b41af41bc2b907"
+ integrity sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==
+
+lightningcss-darwin-arm64@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz#c0f2c31c0bfd19fa4dd3f18e957a1f1a152097d6"
+ integrity sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==
+
+lightningcss-darwin-x64@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz#cb0705965acb538c6683949ce6925fb3cdf7c361"
+ integrity sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==
+
+lightningcss-freebsd-x64@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz#763538828b26bab2680dadafcc84ee78b0eb502b"
+ integrity sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==
+
+lightningcss-linux-arm-gnueabihf@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz#6862e3176a331aedbdec1ed352b4d7d0dd0784de"
+ integrity sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==
+
+lightningcss-linux-arm64-gnu@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz#c6a3a2ed15141daf6bdc2628930f8e39bdf473aa"
+ integrity sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==
+
+lightningcss-linux-arm64-musl@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz#7fa1334971fc82845f9827df6ef8a0b20914bac6"
+ integrity sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==
+
+lightningcss-linux-x64-gnu@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz#8b927862ea8c2bbc6831a46509244b50d9936e55"
+ integrity sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==
+
+lightningcss-linux-x64-musl@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz#0c525bb077dfd94404c059cfe42dad797e96aeaf"
+ integrity sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==
+
+lightningcss-win32-arm64-msvc@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz#850ee1103dac989cfab50e3ac22d1a69e394e63d"
+ integrity sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==
+
+lightningcss-win32-x64-msvc@1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz#e343ae152eed3609dc6e11949d1a3bf39a1c946f"
+ integrity sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==
+
+lightningcss@^1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.33.0.tgz#c08867d71a79385c6e190214fd72fef3e5f95f0b"
+ integrity sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==
+ dependencies:
+ detect-libc "^2.0.3"
+ optionalDependencies:
+ lightningcss-android-arm64 "1.33.0"
+ lightningcss-darwin-arm64 "1.33.0"
+ lightningcss-darwin-x64 "1.33.0"
+ lightningcss-freebsd-x64 "1.33.0"
+ lightningcss-linux-arm-gnueabihf "1.33.0"
+ lightningcss-linux-arm64-gnu "1.33.0"
+ lightningcss-linux-arm64-musl "1.33.0"
+ lightningcss-linux-x64-gnu "1.33.0"
+ lightningcss-linux-x64-musl "1.33.0"
+ lightningcss-win32-arm64-msvc "1.33.0"
+ lightningcss-win32-x64-msvc "1.33.0"
+
lines-and-columns@^1.1.6:
version "1.2.4"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
@@ -7475,6 +7658,11 @@ nanoid@^3.3.16:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.16.tgz#a04d8ec4b1f10009d2d533947aefe4293737816c"
integrity sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==
+nanoid@^3.3.17:
+ version "3.3.18"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.18.tgz#f66a2de1199ffde0fcf21c8a5f13106b1c081913"
+ integrity sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==
+
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@@ -7986,7 +8174,7 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatc
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-picomatch@^4.0.2, picomatch@^4.0.3, picomatch@^4.0.4:
+picomatch@^4.0.2, picomatch@^4.0.3, picomatch@^4.0.4, picomatch@^4.0.5:
version "4.0.5"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.5.tgz#51ea57a17d86f605f81039595fbc40ed06a55fab"
integrity sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==
@@ -8034,6 +8222,15 @@ postcss@^8.4.13, postcss@^8.5.3:
picocolors "^1.1.1"
source-map-js "^1.2.1"
+postcss@^8.5.25:
+ version "8.5.26"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.26.tgz#6e75135780c7e10df3433bf2266c552d35c8c620"
+ integrity sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==
+ dependencies:
+ nanoid "^3.3.17"
+ picocolors "^1.1.1"
+ source-map-js "^1.2.1"
+
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
@@ -8295,6 +8492,13 @@ react-dom@^18.2.0:
loose-envify "^1.1.0"
scheduler "^0.23.2"
+react-dom@^19.2.7:
+ version "19.2.8"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.8.tgz#3b46b9eeda877cdff2cf13d2770fff4ae36c2ec2"
+ integrity sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==
+ dependencies:
+ scheduler "^0.27.0"
+
react-fast-compare@^3.0.1:
version "3.2.2"
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49"
@@ -8451,6 +8655,13 @@ react-router@6.30.4:
dependencies:
"@remix-run/router" "1.23.3"
+react-router@^8.3.0:
+ version "8.3.0"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-8.3.0.tgz#b7bc69c3e3833ba79ebf892aef03d62b649508f8"
+ integrity sha512-qyPMvW83jGIct3yiieisxdk9M745anqhpIMKN5m1t6yBMfgVPpt77aHOqs5fUlEJRMCGffg9BaQLH9oPVOL7xQ==
+ dependencies:
+ cookie-es "^3.1.1"
+
react-test-renderer@^16.0.0-0:
version "16.14.0"
resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae"
@@ -8485,6 +8696,11 @@ react@^18.2.0:
dependencies:
loose-envify "^1.1.0"
+react@^19.2.7:
+ version "19.2.8"
+ resolved "https://registry.yarnpkg.com/react/-/react-19.2.8.tgz#a80663dbb58d69c6fe3fd291d3cb324e8a7dff2d"
+ integrity sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==
+
read-pkg-up@10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-10.0.0.tgz#0542d21ff1001d2bfff1f6eac8b4d1d1dc486617"
@@ -8758,6 +8974,29 @@ rimraf@^3.0.2:
dependencies:
glob "^7.1.3"
+rolldown@~1.2.1:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/rolldown/-/rolldown-1.2.4.tgz#a70655fdd305b829bbc0fc598b3dd1765b4a87dc"
+ integrity sha512-rSr7irW0K7QRWzjdJXqZowkcRdDtjRduh43rBltnVKd0VFq839l1lJoDvGJb6gl7+4rTTCrPWu+YfujUL8Ug7w==
+ dependencies:
+ "@oxc-project/types" "=0.144.0"
+ "@rolldown/pluginutils" "^1.0.0"
+ optionalDependencies:
+ "@rolldown/binding-android-arm64" "1.2.4"
+ "@rolldown/binding-darwin-arm64" "1.2.4"
+ "@rolldown/binding-darwin-x64" "1.2.4"
+ "@rolldown/binding-freebsd-x64" "1.2.4"
+ "@rolldown/binding-linux-arm-gnueabihf" "1.2.4"
+ "@rolldown/binding-linux-arm64-gnu" "1.2.4"
+ "@rolldown/binding-linux-arm64-musl" "1.2.4"
+ "@rolldown/binding-linux-ppc64-gnu" "1.2.4"
+ "@rolldown/binding-linux-s390x-gnu" "1.2.4"
+ "@rolldown/binding-linux-x64-gnu" "1.2.4"
+ "@rolldown/binding-linux-x64-musl" "1.2.4"
+ "@rolldown/binding-openharmony-arm64" "1.2.4"
+ "@rolldown/binding-win32-arm64-msvc" "1.2.4"
+ "@rolldown/binding-win32-x64-msvc" "1.2.4"
+
rollup-plugin-cleanup@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/rollup-plugin-cleanup/-/rollup-plugin-cleanup-3.2.1.tgz#8cbc92ecf58babd7c210051929797f137bbf777c"
@@ -8940,6 +9179,11 @@ scheduler@^0.23.2:
dependencies:
loose-envify "^1.1.0"
+scheduler@^0.27.0:
+ version "0.27.0"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.27.0.tgz#0c4ef82d67d1e5c1e359e8fc76d3a87f045fe5bd"
+ integrity sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==
+
select@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d"
@@ -9583,7 +9827,7 @@ tiny-warning@^1.0.0, tiny-warning@^1.0.3:
resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
-tinyglobby@^0.2.13:
+tinyglobby@^0.2.13, tinyglobby@^0.2.17:
version "0.2.17"
resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.17.tgz#562a9a6c9eb2b3b123d39719f9af5bb44fcd7631"
integrity sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==
@@ -9989,6 +10233,19 @@ vite@^6.3.5:
optionalDependencies:
fsevents "~2.3.3"
+vite@^8.2.1:
+ version "8.2.1"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-8.2.1.tgz#6fc8d8bb843bd52353091fac978e194d4de5b31d"
+ integrity sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==
+ dependencies:
+ lightningcss "^1.33.0"
+ picomatch "^4.0.5"
+ postcss "^8.5.25"
+ rolldown "~1.2.1"
+ tinyglobby "^0.2.17"
+ optionalDependencies:
+ fsevents "~2.3.3"
+
w3c-xmlserializer@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073"