From 9e8f148a10dd0ea63d7c7893c1a863282c1d25ef Mon Sep 17 00:00:00 2001 From: roormonger <34205054+roormonger@users.noreply.github.com> Date: Mon, 23 Mar 2026 15:31:41 -0400 Subject: [PATCH] feat: initial romm web ui architecture, bento grids, and spatial gamepad bindings --- .devcontainer/devcontainer.json | 19 + .gitignore | 31 + Dockerfile | 27 + docker-compose.dev.yml | 12 + docker-compose.yml | 21 + get_auth_details.cjs | 13 + get_auth_paths.cjs | 13 + get_paths.cjs | 16 + get_paths.js | 18 + get_schema.cjs | 13 + index.html | 14 + package-lock.json | 7494 +++++++++++++++++++++++++++ package.json | 39 + postcss.config.js | 6 + romm_swagger.json | Bin 0 -> 390364 bytes src/App.tsx | 53 + src/api/client.ts | 182 + src/components/CollectionCard.tsx | 44 + src/components/FeaturedHero.tsx | 131 + src/components/GameCard.tsx | 31 + src/components/LibraryGrid.tsx | 185 + src/components/Login.tsx | 93 + src/components/MagicCard.tsx | 69 + src/components/Settings.tsx | 83 + src/components/Sidebar.tsx | 90 + src/components/TopNav.tsx | 51 + src/context/AuthContext.tsx | 48 + src/context/InputModeContext.tsx | 60 + src/hooks/useFocusableAutoScroll.ts | 19 + src/hooks/useGamepad.ts | 110 + src/index.css | 35 + src/main.tsx | 42 + src/utils/sync.ts | 32 + src/vite-env.d.ts | 9 + stitch.html | 448 ++ stitch_settings.html | 310 ++ tailwind.config.ts | 27 + tsconfig.json | 25 + tsconfig.node.json | 9 + vite.config.ts | 13 + 40 files changed, 9935 insertions(+) create mode 100644 .devcontainer/devcontainer.json create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 docker-compose.dev.yml create mode 100644 docker-compose.yml create mode 100644 get_auth_details.cjs create mode 100644 get_auth_paths.cjs create mode 100644 get_paths.cjs create mode 100644 get_paths.js create mode 100644 get_schema.cjs create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 romm_swagger.json create mode 100644 src/App.tsx create mode 100644 src/api/client.ts create mode 100644 src/components/CollectionCard.tsx create mode 100644 src/components/FeaturedHero.tsx create mode 100644 src/components/GameCard.tsx create mode 100644 src/components/LibraryGrid.tsx create mode 100644 src/components/Login.tsx create mode 100644 src/components/MagicCard.tsx create mode 100644 src/components/Settings.tsx create mode 100644 src/components/Sidebar.tsx create mode 100644 src/components/TopNav.tsx create mode 100644 src/context/AuthContext.tsx create mode 100644 src/context/InputModeContext.tsx create mode 100644 src/hooks/useFocusableAutoScroll.ts create mode 100644 src/hooks/useGamepad.ts create mode 100644 src/index.css create mode 100644 src/main.tsx create mode 100644 src/utils/sync.ts create mode 100644 src/vite-env.d.ts create mode 100644 stitch.html create mode 100644 stitch_settings.html create mode 100644 tailwind.config.ts create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..9f7a3a2 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,19 @@ +{ + "name": "RomM UI Dev Environment", + "image": "mcr.microsoft.com/devcontainers/javascript-node:20", + "forwardPorts": [5173, 8080], + "postCreateCommand": "npm install --legacy-peer-deps", + "customizations": { + "vscode": { + "settings": { + "tailwindCSS.experimental.classRegex": [ + ["tv\\((([^()]*|\\([^()]*\\))*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"] + ] + }, + "extensions": [ + "bradlc.vscode-tailwindcss", + "dbaeumer.vscode-eslint" + ] + } + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..929db84 --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +# 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? + +# .env +.env +.env.local +.env.development.local +.env.test.local +.env.production.local diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4d2816b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,27 @@ +# ---- Base Node ---- +FROM node:20-alpine AS base +WORKDIR /app +COPY package*.json ./ + +# ---- Dependencies ---- +FROM base AS deps +RUN npm install --legacy-peer-deps + +# ---- Builder ---- +FROM deps AS builder +COPY . . +RUN npm run build + +# ---- Development ---- +FROM deps AS dev +COPY . . +# Expose Vite's default dev port +EXPOSE 5173 +CMD ["npm", "run", "dev", "--", "--host"] + +# ---- Production ---- +FROM nginx:alpine AS prod +# Copy the build output from Vite (usually output to /dist) +COPY --from=builder /app/dist /usr/share/nginx/html +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..cf92903 --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,12 @@ +services: + romm-ui-dev: + image: node:20-alpine + working_dir: /app + ports: + - "5173:5173" + volumes: + - .:/app + environment: + - VITE_ROMM_BASE_URL=https://retro.chieflix.com + command: > + sh -c 'npm install --legacy-peer-deps && npm run dev -- --host' diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..994af61 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,21 @@ +version: '3.8' + +services: + romm-ui-dev: + build: + context: . + target: dev + ports: + - "5173:5173" + volumes: + - .:/app + - /app/node_modules # Prevents host node_modules from overwriting container's + environment: + - ROMM_BASE_URL=https://retro.chieflix.com + + romm-ui-prod: + build: + context: . + target: prod + ports: + - "8000:80" # Exposed on port 8000 for local prod testing diff --git a/get_auth_details.cjs b/get_auth_details.cjs new file mode 100644 index 0000000..f6b253f --- /dev/null +++ b/get_auth_details.cjs @@ -0,0 +1,13 @@ +const fs = require('fs'); +const content = fs.readFileSync('romm_swagger.json'); +try { + let jsonString = content.toString('utf16le'); + if (jsonString.charCodeAt(0) === 0xFEFF) { jsonString = jsonString.slice(1); } + const parsed = JSON.parse(jsonString); + console.log("LOGIN_OPENID:", JSON.stringify(parsed.paths['/api/login/openid'], null, 2)); + console.log("OAUTH_OPENID:", JSON.stringify(parsed.paths['/api/oauth/openid'], null, 2)); +} catch (e) { + const parsed = JSON.parse(content.toString('utf8')); + console.log("LOGIN_OPENID:", JSON.stringify(parsed.paths['/api/login/openid'], null, 2)); + console.log("OAUTH_OPENID:", JSON.stringify(parsed.paths['/api/oauth/openid'], null, 2)); +} diff --git a/get_auth_paths.cjs b/get_auth_paths.cjs new file mode 100644 index 0000000..c339f11 --- /dev/null +++ b/get_auth_paths.cjs @@ -0,0 +1,13 @@ +const fs = require('fs'); +const content = fs.readFileSync('romm_swagger.json'); +try { + let jsonString = content.toString('utf16le'); + if (jsonString.charCodeAt(0) === 0xFEFF) { jsonString = jsonString.slice(1); } + const parsed = JSON.parse(jsonString); + const paths = Object.keys(parsed.paths).filter(p => p.includes('auth') || p.includes('sso') || p.includes('oauth') || p.includes('login')); + console.log(paths.join('\n')); +} catch (e) { + const parsed = JSON.parse(content.toString('utf8')); + const paths = Object.keys(parsed.paths).filter(p => p.includes('auth') || p.includes('sso') || p.includes('oauth') || p.includes('login')); + console.log(paths.join('\n')); +} diff --git a/get_paths.cjs b/get_paths.cjs new file mode 100644 index 0000000..a31b6e7 --- /dev/null +++ b/get_paths.cjs @@ -0,0 +1,16 @@ +const fs = require('fs'); +// read file using exact encoding +const content = fs.readFileSync('romm_swagger.json'); +try { + let jsonString = content.toString('utf16le'); + if (jsonString.charCodeAt(0) === 0xFEFF) { + jsonString = jsonString.slice(1); + } + const parsed = JSON.parse(jsonString); + const paths = Object.keys(parsed.paths).filter(p => p.includes('user') || p.includes('me')); + console.log(paths.join('\n')); +} catch (e) { + const parsed = JSON.parse(content.toString('utf8')); + const paths = Object.keys(parsed.paths).filter(p => p.includes('user') || p.includes('me')); + console.log(paths.join('\n')); +} diff --git a/get_paths.js b/get_paths.js new file mode 100644 index 0000000..70e69fb --- /dev/null +++ b/get_paths.js @@ -0,0 +1,18 @@ +const fs = require('fs'); +// read file using exact encoding +const content = fs.readFileSync('romm_swagger.json'); +try { + // Try reading it as utf16le just in case PowerShell dumped it with BOM + let jsonString = content.toString('utf16le'); + if (jsonString.charCodeAt(0) === 0xFEFF) { + jsonString = jsonString.slice(1); + } + const parsed = JSON.parse(jsonString); + const paths = Object.keys(parsed.paths).filter(p => p.includes('user') || p.includes('me')); + console.log(paths.join('\n')); +} catch (e) { + // Fallback to utf8 just in case + const parsed = JSON.parse(content.toString('utf8')); + const paths = Object.keys(parsed.paths).filter(p => p.includes('user') || p.includes('me')); + console.log(paths.join('\n')); +} diff --git a/get_schema.cjs b/get_schema.cjs new file mode 100644 index 0000000..644ed0a --- /dev/null +++ b/get_schema.cjs @@ -0,0 +1,13 @@ +const fs = require('fs'); +const content = fs.readFileSync('romm_swagger.json'); +try { + let jsonString = content.toString('utf16le'); + if (jsonString.charCodeAt(0) === 0xFEFF) { jsonString = jsonString.slice(1); } + const parsed = JSON.parse(jsonString); + const paths = Object.keys(parsed.paths).filter(p => p.includes('avatar') || p.includes('asset')); + console.log(paths.join('\n')); +} catch (e) { + const parsed = JSON.parse(content.toString('utf8')); + const paths = Object.keys(parsed.paths).filter(p => p.includes('avatar') || p.includes('asset')); + console.log(paths.join('\n')); +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..58f2b24 --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + + RomM Web UI + + + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..5aded5d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7494 @@ +{ + "name": "romm-web-ui", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "romm-web-ui", + "version": "0.0.0", + "dependencies": { + "@heroui/react": "^2.8.10", + "@heroui/theme": "^2.4.26", + "@noriginmedia/norigin-spatial-navigation": "^3.0.0", + "@tanstack/query-sync-storage-persister": "^5.94.5", + "@tanstack/react-query": "^5.59.0", + "@tanstack/react-query-persist-client": "^5.94.5", + "clsx": "^2.1.1", + "framer-motion": "^11.5.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-router-dom": "^6.26.0", + "tailwind-merge": "^2.5.2" + }, + "devDependencies": { + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@typescript-eslint/eslint-plugin": "^8.0.1", + "@typescript-eslint/parser": "^8.0.1", + "@vitejs/plugin-react": "^4.3.1", + "autoprefixer": "^10.4.20", + "eslint": "^9.9.0", + "postcss": "^8.4.40", + "tailwindcss": "^3.4.15", + "typescript": "^5.5.3", + "vite": "^5.4.1" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@formatjs/ecma402-abstract": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.6.tgz", + "integrity": "sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw==", + "license": "MIT", + "dependencies": { + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/intl-localematcher": "0.6.2", + "decimal.js": "^10.4.3", + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/fast-memoize": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.7.tgz", + "integrity": "sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.4.tgz", + "integrity": "sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw==", + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "2.3.6", + "@formatjs/icu-skeleton-parser": "1.8.16", + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.8.16", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.16.tgz", + "integrity": "sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ==", + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "2.3.6", + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.2.tgz", + "integrity": "sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@heroui/accordion": { + "version": "2.2.29", + "resolved": "https://registry.npmjs.org/@heroui/accordion/-/accordion-2.2.29.tgz", + "integrity": "sha512-nhCqgZ3ejgRLRM3jJnpZExufn050raxOVyNUR7zo9o5Ed10KKRpD3J/8l6gwrYA7j+Z46dF2YLJzIFWPzYf1Kw==", + "license": "MIT", + "dependencies": { + "@heroui/aria-utils": "2.2.29", + "@heroui/divider": "2.2.24", + "@heroui/dom-animation": "2.1.10", + "@heroui/framer-utils": "2.1.28", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-icons": "2.1.10", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-aria-accordion": "2.2.20", + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1", + "@react-stately/tree": "3.9.6", + "@react-types/accordion": "3.0.0-alpha.26", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/alert": { + "version": "2.2.32", + "resolved": "https://registry.npmjs.org/@heroui/alert/-/alert-2.2.32.tgz", + "integrity": "sha512-8piby1PXVTTtdwLLV60JMqduRAFLHoiQpFPeSNVHsAaMIphXsmlpvUb9dct4f0wQJqqgFutiWL3RtjdDwEkRQQ==", + "license": "MIT", + "dependencies": { + "@heroui/button": "2.2.32", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-icons": "2.1.10", + "@heroui/shared-utils": "2.1.12", + "@react-stately/utils": "3.11.0" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/aria-utils": { + "version": "2.2.29", + "resolved": "https://registry.npmjs.org/@heroui/aria-utils/-/aria-utils-2.2.29.tgz", + "integrity": "sha512-tVc5Rz+u/WMaAoYpx4VNheFqsfxA5i0SAqT8OAFpPX0WiNrylXaAGWsid/ivFdlW4rE1FgI/+wP0KS6c8KSEjQ==", + "license": "MIT", + "dependencies": { + "@heroui/system": "2.4.28", + "@react-aria/utils": "3.33.1", + "@react-stately/collections": "3.12.10", + "@react-types/overlays": "3.9.4", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/autocomplete": { + "version": "2.3.34", + "resolved": "https://registry.npmjs.org/@heroui/autocomplete/-/autocomplete-2.3.34.tgz", + "integrity": "sha512-DTmztrWMdEtHCIJmgSyO/7QrABsaq/kDqBg6aVw+P30sgLW6k05wYOqe6ctuoNSWaZzr56QPvFpsgbeMy7Ma0A==", + "license": "MIT", + "dependencies": { + "@heroui/aria-utils": "2.2.29", + "@heroui/button": "2.2.32", + "@heroui/form": "2.1.32", + "@heroui/input": "2.4.33", + "@heroui/listbox": "2.3.31", + "@heroui/popover": "2.3.32", + "@heroui/react-utils": "2.1.14", + "@heroui/scroll-shadow": "2.3.19", + "@heroui/shared-icons": "2.1.10", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-safe-layout-effect": "2.1.8", + "@react-aria/combobox": "3.15.0", + "@react-aria/i18n": "3.12.16", + "@react-stately/combobox": "3.13.0", + "@react-types/combobox": "3.14.0", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/avatar": { + "version": "2.2.26", + "resolved": "https://registry.npmjs.org/@heroui/avatar/-/avatar-2.2.26.tgz", + "integrity": "sha512-W2z64Da38ZL4Lu9Pokan2frTURcXxUs3bV37WWJjMzCD6mOAlaogWYMQdAeYmeWHyAW18XZSa5OaUCMVrzJ2SQ==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-image": "2.1.14", + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/badge": { + "version": "2.2.18", + "resolved": "https://registry.npmjs.org/@heroui/badge/-/badge-2.2.18.tgz", + "integrity": "sha512-OfGove8YJ9oDrdugzq05FC15ZKD5nzqe+thPZ+1SY1LZorJQjZvqSD9QnoEH1nG7fu2IdH6pYJy3sZ/b6Vj5Kg==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.23", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/breadcrumbs": { + "version": "2.2.25", + "resolved": "https://registry.npmjs.org/@heroui/breadcrumbs/-/breadcrumbs-2.2.25.tgz", + "integrity": "sha512-KmUmJiBVzRuKR1tXIvKBqz8rGz4jAPa2FqsDodQ/Z34Eagsw85l3pI6xekKacGcxNQVM+L6KhMRb00QWHT/SmQ==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/shared-icons": "2.1.10", + "@heroui/shared-utils": "2.1.12", + "@react-aria/breadcrumbs": "3.5.32", + "@react-aria/focus": "3.21.5", + "@react-types/breadcrumbs": "3.7.19" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/button": { + "version": "2.2.32", + "resolved": "https://registry.npmjs.org/@heroui/button/-/button-2.2.32.tgz", + "integrity": "sha512-i1vx4gEuyjKmz0xVu+U3PgtYrsGt1PVuWBrT/sSbNcH0AGuPSqQPQ/znwkhgZ4ixhNaU9jjVbBfIGCFGNDz7XA==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/ripple": "2.2.21", + "@heroui/shared-utils": "2.1.12", + "@heroui/spinner": "2.2.29", + "@heroui/use-aria-button": "2.2.22", + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/calendar": { + "version": "2.2.32", + "resolved": "https://registry.npmjs.org/@heroui/calendar/-/calendar-2.2.32.tgz", + "integrity": "sha512-2xzCmM7Sdz04qYr478lcH3GfGi2HWmKZ77PXrxWyRcVys+6GQpJJS712eusQBdoDNoUHUK/qZLTxihwiDC46wg==", + "license": "MIT", + "dependencies": { + "@heroui/button": "2.2.32", + "@heroui/dom-animation": "2.1.10", + "@heroui/framer-utils": "2.1.28", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-icons": "2.1.10", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-aria-button": "2.2.22", + "@internationalized/date": "3.12.0", + "@react-aria/calendar": "3.9.5", + "@react-aria/focus": "3.21.5", + "@react-aria/i18n": "3.12.16", + "@react-aria/interactions": "3.27.1", + "@react-aria/visually-hidden": "3.8.31", + "@react-stately/calendar": "3.9.3", + "@react-stately/utils": "3.11.0", + "@react-types/button": "3.15.1", + "@react-types/calendar": "3.8.3", + "@react-types/shared": "3.33.1", + "scroll-into-view-if-needed": "3.0.10" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/card": { + "version": "2.2.28", + "resolved": "https://registry.npmjs.org/@heroui/card/-/card-2.2.28.tgz", + "integrity": "sha512-njwCocEntWaYyALB+2SHzVzoG4JJMV2rG55vQ0zZIIJoG1+/F9SCfsZQ87ncf+0D7IQx6vw8fWT2VRKojmn9+w==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/ripple": "2.2.21", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-aria-button": "2.2.22", + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/checkbox": { + "version": "2.3.32", + "resolved": "https://registry.npmjs.org/@heroui/checkbox/-/checkbox-2.3.32.tgz", + "integrity": "sha512-rmFGPTgpG/Uvlr/8KjCSobT3u2Ig4/3p8s0qwTCo37uvtsCIbCYyB1yNAXZkCN2hfg5ZIBofEaYeEmw0OBsQAQ==", + "license": "MIT", + "dependencies": { + "@heroui/form": "2.1.32", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-callback-ref": "2.1.8", + "@heroui/use-safe-layout-effect": "2.1.8", + "@react-aria/checkbox": "3.16.5", + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1", + "@react-stately/checkbox": "3.7.5", + "@react-stately/toggle": "3.9.5", + "@react-types/checkbox": "3.10.4", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/chip": { + "version": "2.2.25", + "resolved": "https://registry.npmjs.org/@heroui/chip/-/chip-2.2.25.tgz", + "integrity": "sha512-kACEoF7tP9o/q5HdARaP3veD0Rl4Uxe9fiTVQvus8kN97Jnw9y4JctsUJ/vXgsscKt39qh53TB8fo8I0sJ2FPg==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/shared-icons": "2.1.10", + "@heroui/shared-utils": "2.1.12", + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/code": { + "version": "2.2.25", + "resolved": "https://registry.npmjs.org/@heroui/code/-/code-2.2.25.tgz", + "integrity": "sha512-oGaQVktqTNqRPDceuV/egVh442Ap4cbuXxVSqsmT0aNV1KnISo/P7VwLm4QDN5T3MXxN3Cs2Pw6z0+oydPL3mA==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@heroui/system-rsc": "2.3.24" + }, + "peerDependencies": { + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/date-input": { + "version": "2.3.32", + "resolved": "https://registry.npmjs.org/@heroui/date-input/-/date-input-2.3.32.tgz", + "integrity": "sha512-jk0cPMkfs0lexdJckBZ4qO96tTqT3ZMgb+Z12aS8VW3Hcbvj2vvv2fuHc7LrIg1mdUqZzZwCwUAsUGWSJDTI0w==", + "license": "MIT", + "dependencies": { + "@heroui/form": "2.1.32", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@internationalized/date": "3.12.0", + "@react-aria/datepicker": "3.16.1", + "@react-aria/i18n": "3.12.16", + "@react-stately/datepicker": "3.16.1", + "@react-types/datepicker": "3.13.5", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/date-picker": { + "version": "2.3.33", + "resolved": "https://registry.npmjs.org/@heroui/date-picker/-/date-picker-2.3.33.tgz", + "integrity": "sha512-u9N2NToMLg3hwn7WEXljhrtM/DiRrUVBqs35akW9gTQtcz1fGPugrDkJy4OsKEv7c1HuYBO0As6CM+uXERjHWw==", + "license": "MIT", + "dependencies": { + "@heroui/aria-utils": "2.2.29", + "@heroui/button": "2.2.32", + "@heroui/calendar": "2.2.32", + "@heroui/date-input": "2.3.32", + "@heroui/form": "2.1.32", + "@heroui/popover": "2.3.32", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-icons": "2.1.10", + "@heroui/shared-utils": "2.1.12", + "@internationalized/date": "3.12.0", + "@react-aria/datepicker": "3.16.1", + "@react-aria/i18n": "3.12.16", + "@react-stately/datepicker": "3.16.1", + "@react-stately/utils": "3.11.0", + "@react-types/datepicker": "3.13.5", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/divider": { + "version": "2.2.24", + "resolved": "https://registry.npmjs.org/@heroui/divider/-/divider-2.2.24.tgz", + "integrity": "sha512-fq7bZFpruws3aC5X2TGMMUhcInyxQS6oWAOYrwgWX5jrmqzg/8CBtIuOehhwcm0HAk+oI55KFidJUFTuA1s7Gg==", + "license": "MIT", + "dependencies": { + "@heroui/react-rsc-utils": "2.1.9", + "@heroui/system-rsc": "2.3.24", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/dom-animation": { + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/@heroui/dom-animation/-/dom-animation-2.1.10.tgz", + "integrity": "sha512-dt+0xdVPbORwNvFT5pnqV2ULLlSgOJeqlg/DMo97s9RWeD6rD4VedNY90c8C9meqWqGegQYBQ9ztsfX32mGEPA==", + "license": "MIT", + "peerDependencies": { + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1" + } + }, + "node_modules/@heroui/drawer": { + "version": "2.2.29", + "resolved": "https://registry.npmjs.org/@heroui/drawer/-/drawer-2.2.29.tgz", + "integrity": "sha512-zVBKHbcCXZGR79ORw4vQRA/QfHNLoQ9R8q6P1gsjs24uBGdBQAYvQE0F/bfsKZ5JH7asUt+oSIpjqQGmXAbyyQ==", + "license": "MIT", + "dependencies": { + "@heroui/framer-utils": "2.1.28", + "@heroui/modal": "2.2.29", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/dropdown": { + "version": "2.3.32", + "resolved": "https://registry.npmjs.org/@heroui/dropdown/-/dropdown-2.3.32.tgz", + "integrity": "sha512-+ntmjxkBaUVpyGN0pcByeTm2e2RUi5/D5uI9vPFLvJYWCa26bzQRR7EuK7LuGRXVciWl+NODNlLbSUVukkHBUA==", + "license": "MIT", + "dependencies": { + "@heroui/aria-utils": "2.2.29", + "@heroui/menu": "2.2.31", + "@heroui/popover": "2.3.32", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@react-aria/focus": "3.21.5", + "@react-aria/menu": "3.21.0", + "@react-stately/menu": "3.9.11", + "@react-types/menu": "3.10.7" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/form": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/@heroui/form/-/form-2.1.32.tgz", + "integrity": "sha512-gcMnlNq2eI8jIvNIEas4HVmQNdkRuZnhRCx/nZOd/FtO+WQwuqN2xFAfm/nGH3Hq/7yRf2yOozuJsm7iJVaatA==", + "license": "MIT", + "dependencies": { + "@heroui/shared-utils": "2.1.12", + "@heroui/system": "2.4.28", + "@heroui/theme": "2.4.26", + "@react-stately/form": "3.2.4", + "@react-types/form": "3.7.18", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@heroui/framer-utils": { + "version": "2.1.28", + "resolved": "https://registry.npmjs.org/@heroui/framer-utils/-/framer-utils-2.1.28.tgz", + "integrity": "sha512-/M2nqHRx4feZx0lgA8QmHDaqu/DgsdynvSnbniptiU/Xi9XgQApCPJ0Qxgk5JZ9g2vemDFgi5AP7C7FqgiMtMA==", + "license": "MIT", + "dependencies": { + "@heroui/system": "2.4.28", + "@heroui/use-measure": "2.1.8" + }, + "peerDependencies": { + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/image": { + "version": "2.2.19", + "resolved": "https://registry.npmjs.org/@heroui/image/-/image-2.2.19.tgz", + "integrity": "sha512-XdQ1g0kiHl+Kj9Zj1NL1mbKhmzeN0h27dgfegJS2coGM/yrEavYzg1DWUEyVSzPNKFZS8BDGa9DOpWe0vgggBA==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-image": "2.1.14" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/input": { + "version": "2.4.33", + "resolved": "https://registry.npmjs.org/@heroui/input/-/input-2.4.33.tgz", + "integrity": "sha512-iDKujnKgXDbR4zLVr03Pg3TYKFR2zv0aPZUpjOvtLdB8/wNBQv+rbizqnHQPAYyDwhNQS0WguW0tQVhh4oPy4w==", + "license": "MIT", + "dependencies": { + "@heroui/form": "2.1.32", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-icons": "2.1.10", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-safe-layout-effect": "2.1.8", + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1", + "@react-aria/textfield": "3.18.5", + "@react-stately/utils": "3.11.0", + "@react-types/shared": "3.33.1", + "@react-types/textfield": "3.12.8", + "react-textarea-autosize": "^8.5.3" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/input-otp": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/@heroui/input-otp/-/input-otp-2.1.32.tgz", + "integrity": "sha512-lrByjetK5/9MjqhDXHnhAI/gBnCJjMmR92k2HARjnJjYhljD58j6xYuf41zwp/faYkyspVvmLMPHF8qjKMTAbQ==", + "license": "MIT", + "dependencies": { + "@heroui/form": "2.1.32", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-form-reset": "2.0.1", + "@react-aria/focus": "3.21.5", + "@react-aria/form": "3.1.5", + "@react-stately/form": "3.2.4", + "@react-stately/utils": "3.11.0", + "@react-types/textfield": "3.12.8", + "input-otp": "1.4.1" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@heroui/kbd": { + "version": "2.2.26", + "resolved": "https://registry.npmjs.org/@heroui/kbd/-/kbd-2.2.26.tgz", + "integrity": "sha512-Z8XpQwMmNpLGlQlGD7UWRWG2S8veNb9vezfWgEKmtnnzdVM/CKSYTWctkmiruJ7tPn3XPsGTEt3QU8WPVAnpqQ==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@heroui/system-rsc": "2.3.24" + }, + "peerDependencies": { + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/link": { + "version": "2.2.26", + "resolved": "https://registry.npmjs.org/@heroui/link/-/link-2.2.26.tgz", + "integrity": "sha512-TPxd87ZP8mB8HG0GVIDTuoDxL2mcpCVUY9sjrxujAtin3781znM6jFO+O/tv0huW90+jxBHiFU1KpeZWwtl6qg==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/shared-icons": "2.1.10", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-aria-link": "2.2.23", + "@react-aria/focus": "3.21.5", + "@react-types/link": "3.6.7" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/listbox": { + "version": "2.3.31", + "resolved": "https://registry.npmjs.org/@heroui/listbox/-/listbox-2.3.31.tgz", + "integrity": "sha512-EvYxlama0kDCtgyNfCtz/X7ftYSE0OlPGKrZrv0st0oz790x3E1EQyCEYOaDbHAnGPxJy8pRC88CbzyPWEHeXQ==", + "license": "MIT", + "dependencies": { + "@heroui/aria-utils": "2.2.29", + "@heroui/divider": "2.2.24", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-is-mobile": "2.2.12", + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1", + "@react-aria/listbox": "3.15.3", + "@react-stately/list": "3.13.4", + "@react-types/shared": "3.33.1", + "@tanstack/react-virtual": "3.11.3" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/menu": { + "version": "2.2.31", + "resolved": "https://registry.npmjs.org/@heroui/menu/-/menu-2.2.31.tgz", + "integrity": "sha512-e5VqpMapolo51kJdHdz+tm3a++dGnvPTQtma8bFPfguVzoyzbq4eicFUR9fvbvYjP2jNewwsyaoTqBvxqbueiQ==", + "license": "MIT", + "dependencies": { + "@heroui/aria-utils": "2.2.29", + "@heroui/divider": "2.2.24", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-is-mobile": "2.2.12", + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1", + "@react-aria/menu": "3.21.0", + "@react-stately/tree": "3.9.6", + "@react-types/menu": "3.10.7", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/modal": { + "version": "2.2.29", + "resolved": "https://registry.npmjs.org/@heroui/modal/-/modal-2.2.29.tgz", + "integrity": "sha512-ke6i2ByLuTE/4OZRZvgKv6A2Vf1GkitL/Lq+Bojq8ovIquphmH7AXrXkWEQ6yq1YdqYRDFcVOX/4p11Qjv4rkg==", + "license": "MIT", + "dependencies": { + "@heroui/dom-animation": "2.1.10", + "@heroui/framer-utils": "2.1.28", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-icons": "2.1.10", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-aria-button": "2.2.22", + "@heroui/use-aria-modal-overlay": "2.2.21", + "@heroui/use-disclosure": "2.2.19", + "@heroui/use-draggable": "2.1.20", + "@heroui/use-viewport-size": "2.0.1", + "@react-aria/dialog": "3.5.34", + "@react-aria/focus": "3.21.5", + "@react-aria/overlays": "3.31.2", + "@react-stately/overlays": "3.6.23" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/navbar": { + "version": "2.2.30", + "resolved": "https://registry.npmjs.org/@heroui/navbar/-/navbar-2.2.30.tgz", + "integrity": "sha512-zGMRuewcjUFZhj3hIyIWOq+iRt0Mcc8FHBDPHAcYtYe0PrfYF2Ti0WLoH5Bbf5kR3S5hYfwabyT7jtf173S7iQ==", + "license": "MIT", + "dependencies": { + "@heroui/dom-animation": "2.1.10", + "@heroui/framer-utils": "2.1.28", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-resize": "2.1.8", + "@heroui/use-scroll-position": "2.1.8", + "@react-aria/button": "3.14.5", + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1", + "@react-aria/overlays": "3.31.2", + "@react-stately/toggle": "3.9.5", + "@react-stately/utils": "3.11.0" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/number-input": { + "version": "2.0.23", + "resolved": "https://registry.npmjs.org/@heroui/number-input/-/number-input-2.0.23.tgz", + "integrity": "sha512-06Glv+X+tqSLt7i7MUJJz2Zf65+kkBaL/Cgx0Sw7iA418WejPDF3KIRee48RdfI+AOHYPAH4AD9PnGAaOJvapQ==", + "license": "MIT", + "dependencies": { + "@heroui/button": "2.2.32", + "@heroui/form": "2.1.32", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-icons": "2.1.10", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-safe-layout-effect": "2.1.8", + "@react-aria/focus": "3.21.5", + "@react-aria/i18n": "3.12.16", + "@react-aria/interactions": "3.27.1", + "@react-aria/numberfield": "3.12.5", + "@react-stately/numberfield": "3.11.0", + "@react-types/button": "3.15.1", + "@react-types/numberfield": "3.8.18", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/pagination": { + "version": "2.2.27", + "resolved": "https://registry.npmjs.org/@heroui/pagination/-/pagination-2.2.27.tgz", + "integrity": "sha512-omTpyJwGzw2fmSdfCfJuIgVmTqDaMzs4RmDtjgqEZxZCAldFlVuTWmsR1peOwzZKsrhzbp3eH/E9F6ipwF6Yug==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/shared-icons": "2.1.10", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-intersection-observer": "2.2.14", + "@heroui/use-pagination": "2.2.20", + "@react-aria/focus": "3.21.5", + "@react-aria/i18n": "3.12.16", + "@react-aria/interactions": "3.27.1", + "@react-aria/utils": "3.33.1", + "scroll-into-view-if-needed": "3.0.10" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/popover": { + "version": "2.3.32", + "resolved": "https://registry.npmjs.org/@heroui/popover/-/popover-2.3.32.tgz", + "integrity": "sha512-aVkDt9aITI66x7nS0k2BJ7szQtNm5YV+Q31X9aWrXFkRdJ+zl0sMbo1UpVQdGSif0yH6NvsFTThmCWDQZkX6fg==", + "license": "MIT", + "dependencies": { + "@heroui/aria-utils": "2.2.29", + "@heroui/button": "2.2.32", + "@heroui/dom-animation": "2.1.10", + "@heroui/framer-utils": "2.1.28", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-aria-button": "2.2.22", + "@heroui/use-aria-overlay": "2.0.6", + "@heroui/use-safe-layout-effect": "2.1.8", + "@react-aria/dialog": "3.5.34", + "@react-aria/focus": "3.21.5", + "@react-aria/overlays": "3.31.2", + "@react-stately/overlays": "3.6.23", + "@react-types/overlays": "3.9.4" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/progress": { + "version": "2.2.25", + "resolved": "https://registry.npmjs.org/@heroui/progress/-/progress-2.2.25.tgz", + "integrity": "sha512-0aMuB3RaEheJPiQPUPRvwC1CkBG9qDRzRyUu6GT5QJfkFVmeB09NwQB4wec74qa1Ke+Yhj2KHfCVyBzYNqAifw==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-is-mounted": "2.1.8", + "@react-aria/progress": "3.4.30", + "@react-types/progress": "3.5.18" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/radio": { + "version": "2.3.32", + "resolved": "https://registry.npmjs.org/@heroui/radio/-/radio-2.3.32.tgz", + "integrity": "sha512-R0Oj8sQ5NA5LqPkouGEHPetgZxa1p7XNf5teVv0nL+8A9tg4R8VDLvL50ezc0yXp18PmfHa61AoK5DSCnyesNw==", + "license": "MIT", + "dependencies": { + "@heroui/form": "2.1.32", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1", + "@react-aria/radio": "3.12.5", + "@react-aria/visually-hidden": "3.8.31", + "@react-stately/radio": "3.11.5", + "@react-types/radio": "3.9.4", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/react": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@heroui/react/-/react-2.8.10.tgz", + "integrity": "sha512-rW5wFxLX3SNusf8Uhq10M5btRplKunU8glU1Gd4gD9AMIV/e7D+DGy/g2ildz2gEcMPny4C5kLcYlwRDea5oNw==", + "license": "MIT", + "dependencies": { + "@heroui/accordion": "2.2.29", + "@heroui/alert": "2.2.32", + "@heroui/autocomplete": "2.3.34", + "@heroui/avatar": "2.2.26", + "@heroui/badge": "2.2.18", + "@heroui/breadcrumbs": "2.2.25", + "@heroui/button": "2.2.32", + "@heroui/calendar": "2.2.32", + "@heroui/card": "2.2.28", + "@heroui/checkbox": "2.3.32", + "@heroui/chip": "2.2.25", + "@heroui/code": "2.2.25", + "@heroui/date-input": "2.3.32", + "@heroui/date-picker": "2.3.33", + "@heroui/divider": "2.2.24", + "@heroui/drawer": "2.2.29", + "@heroui/dropdown": "2.3.32", + "@heroui/form": "2.1.32", + "@heroui/framer-utils": "2.1.28", + "@heroui/image": "2.2.19", + "@heroui/input": "2.4.33", + "@heroui/input-otp": "2.1.32", + "@heroui/kbd": "2.2.26", + "@heroui/link": "2.2.26", + "@heroui/listbox": "2.3.31", + "@heroui/menu": "2.2.31", + "@heroui/modal": "2.2.29", + "@heroui/navbar": "2.2.30", + "@heroui/number-input": "2.0.23", + "@heroui/pagination": "2.2.27", + "@heroui/popover": "2.3.32", + "@heroui/progress": "2.2.25", + "@heroui/radio": "2.3.32", + "@heroui/ripple": "2.2.21", + "@heroui/scroll-shadow": "2.3.19", + "@heroui/select": "2.4.33", + "@heroui/skeleton": "2.2.18", + "@heroui/slider": "2.4.29", + "@heroui/snippet": "2.2.33", + "@heroui/spacer": "2.2.25", + "@heroui/spinner": "2.2.29", + "@heroui/switch": "2.2.27", + "@heroui/system": "2.4.28", + "@heroui/table": "2.2.32", + "@heroui/tabs": "2.2.29", + "@heroui/theme": "2.4.26", + "@heroui/toast": "2.0.22", + "@heroui/tooltip": "2.2.29", + "@heroui/user": "2.2.26", + "@react-aria/visually-hidden": "3.8.31" + }, + "peerDependencies": { + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/react-rsc-utils": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@heroui/react-rsc-utils/-/react-rsc-utils-2.1.9.tgz", + "integrity": "sha512-e77OEjNCmQxE9/pnLDDb93qWkX58/CcgIqdNAczT/zUP+a48NxGq2A2WRimvc1uviwaNL2StriE2DmyZPyYW7Q==", + "license": "MIT", + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/react-utils": { + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/@heroui/react-utils/-/react-utils-2.1.14.tgz", + "integrity": "sha512-hhKklYKy9sRH52C9A8P0jWQ79W4MkIvOnKBIuxEMHhigjfracy0o0lMnAUdEsJni4oZKVJYqNGdQl+UVgcmeDA==", + "license": "MIT", + "dependencies": { + "@heroui/react-rsc-utils": "2.1.9", + "@heroui/shared-utils": "2.1.12" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/ripple": { + "version": "2.2.21", + "resolved": "https://registry.npmjs.org/@heroui/ripple/-/ripple-2.2.21.tgz", + "integrity": "sha512-wairSq9LnhbIqTCJmUlJAQURQ1wcRK/L8pjg2s3R/XnvZlPXHy4ZzfphiwIlTI21z/f6tH3arxv/g1uXd1RY0g==", + "license": "MIT", + "dependencies": { + "@heroui/dom-animation": "2.1.10", + "@heroui/shared-utils": "2.1.12" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.23", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/scroll-shadow": { + "version": "2.3.19", + "resolved": "https://registry.npmjs.org/@heroui/scroll-shadow/-/scroll-shadow-2.3.19.tgz", + "integrity": "sha512-y5mdBlhiITVrFnQTDqEphYj7p5pHqoFSFtVuRRvl9wUec2lMxEpD85uMGsfL8OgQTKIAqGh2s6M360+VJm7ajQ==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-data-scroll-overflow": "2.2.13" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.23", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/select": { + "version": "2.4.33", + "resolved": "https://registry.npmjs.org/@heroui/select/-/select-2.4.33.tgz", + "integrity": "sha512-iWlczBmrHz2lIjyAneiiFtmgM+YWKLNIHL9dQnMghSAZWT9iCES5c3RuiggqE9k7DfPjHmgvVB24qeajnnXBOQ==", + "license": "MIT", + "dependencies": { + "@heroui/aria-utils": "2.2.29", + "@heroui/form": "2.1.32", + "@heroui/listbox": "2.3.31", + "@heroui/popover": "2.3.32", + "@heroui/react-utils": "2.1.14", + "@heroui/scroll-shadow": "2.3.19", + "@heroui/shared-icons": "2.1.10", + "@heroui/shared-utils": "2.1.12", + "@heroui/spinner": "2.2.29", + "@heroui/use-aria-button": "2.2.22", + "@heroui/use-aria-multiselect": "2.4.21", + "@heroui/use-form-reset": "2.0.1", + "@heroui/use-safe-layout-effect": "2.1.8", + "@react-aria/focus": "3.21.5", + "@react-aria/form": "3.1.5", + "@react-aria/interactions": "3.27.1", + "@react-aria/overlays": "3.31.2", + "@react-aria/visually-hidden": "3.8.31", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/shared-icons": { + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/@heroui/shared-icons/-/shared-icons-2.1.10.tgz", + "integrity": "sha512-ePo60GjEpM0SEyZBGOeySsLueNDCqLsVL79Fq+5BphzlrBAcaKY7kUp74964ImtkXvknTxAWzuuTr3kCRqj6jg==", + "license": "MIT", + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/shared-utils": { + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@heroui/shared-utils/-/shared-utils-2.1.12.tgz", + "integrity": "sha512-0iCnxVAkIPtrHQo26Qa5g0UTqMTpugTbClNOrEPsrQuyRAq7Syux998cPwGlneTfB5E5xcU3LiEdA9GUyeK2cQ==", + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/@heroui/skeleton": { + "version": "2.2.18", + "resolved": "https://registry.npmjs.org/@heroui/skeleton/-/skeleton-2.2.18.tgz", + "integrity": "sha512-7AjU5kjk9rqrKP9mWQiAVj0dow4/vbK5/ejh4jqdb3DZm7bM2+DGzfnQPiS0c2eWR606CgOuuoImpwDS82HJtA==", + "license": "MIT", + "dependencies": { + "@heroui/shared-utils": "2.1.12" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.23", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/slider": { + "version": "2.4.29", + "resolved": "https://registry.npmjs.org/@heroui/slider/-/slider-2.4.29.tgz", + "integrity": "sha512-JY3uPIShCFLWTbLLYQJJIT5TyLQsyqJHPcM66FprDxwLkf/Ne03jvf+SeieCKAbq/iw+GygTIfwmbSPzrp/yhA==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@heroui/tooltip": "2.2.29", + "@react-aria/focus": "3.21.5", + "@react-aria/i18n": "3.12.16", + "@react-aria/interactions": "3.27.1", + "@react-aria/slider": "3.8.5", + "@react-aria/visually-hidden": "3.8.31", + "@react-stately/slider": "3.7.5" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/snippet": { + "version": "2.2.33", + "resolved": "https://registry.npmjs.org/@heroui/snippet/-/snippet-2.2.33.tgz", + "integrity": "sha512-BvoqKPRhdZyXvvPLxUoU0Fg5MzxMYdGWmJMS9gLT1Zv9A9ixua7kTFh9Z5NT9aNScRR9vhroaSQi1x39uCp+5g==", + "license": "MIT", + "dependencies": { + "@heroui/button": "2.2.32", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-icons": "2.1.10", + "@heroui/shared-utils": "2.1.12", + "@heroui/tooltip": "2.2.29", + "@heroui/use-clipboard": "2.1.9", + "@react-aria/focus": "3.21.5" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/spacer": { + "version": "2.2.25", + "resolved": "https://registry.npmjs.org/@heroui/spacer/-/spacer-2.2.25.tgz", + "integrity": "sha512-XSw54osEkNaBykZXhZcFmvwqwuSKCGPFOd2AIR+vrMqcJg0IxWjpGIsexaT3P/LV1PuoTYkTJ8G3N5Wf4pZTUw==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@heroui/system-rsc": "2.3.24" + }, + "peerDependencies": { + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/spinner": { + "version": "2.2.29", + "resolved": "https://registry.npmjs.org/@heroui/spinner/-/spinner-2.2.29.tgz", + "integrity": "sha512-08mWpL4+pdACcyzT5MjR0nSkKoWbab0oPzY+JHxIdPSSh3S8JJ7C8dUeV3Kj/15NRzzZlcTM3ClRCV8fdeGmuw==", + "license": "MIT", + "dependencies": { + "@heroui/shared-utils": "2.1.12", + "@heroui/system": "2.4.28", + "@heroui/system-rsc": "2.3.24" + }, + "peerDependencies": { + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/switch": { + "version": "2.2.27", + "resolved": "https://registry.npmjs.org/@heroui/switch/-/switch-2.2.27.tgz", + "integrity": "sha512-z23is+gtPkX29EpixY5ZLY1+NQaP+ueshuiXzdgD9SfCQLOSDYDWuFVdR8ZgfdDPyhP8xpOnJf6l9zfgXHD8Rw==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-safe-layout-effect": "2.1.8", + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1", + "@react-aria/switch": "3.7.11", + "@react-aria/visually-hidden": "3.8.31", + "@react-stately/toggle": "3.9.5" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/system": { + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@heroui/system/-/system-2.4.28.tgz", + "integrity": "sha512-agtiiMFsCLaBrGWWrGBlFrnwi06ym4uouh61c3/m16CHuYfGm0Hx5oJ1mZVF98SJ91mDyU3e6Rv+8mqV9XVgoQ==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/system-rsc": "2.3.24", + "@react-aria/i18n": "3.12.16", + "@react-aria/overlays": "3.31.2", + "@react-aria/utils": "3.33.1" + }, + "peerDependencies": { + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/system-rsc": { + "version": "2.3.24", + "resolved": "https://registry.npmjs.org/@heroui/system-rsc/-/system-rsc-2.3.24.tgz", + "integrity": "sha512-GEP3hh7j8wE56WdSAIdCcPQOMDdAYk9bSuQpGzXnkYSiSCJKroOyXbRmp9KF2VgpiMXGI0OlO51aj9JWoa+5Tg==", + "license": "MIT", + "dependencies": { + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/table": { + "version": "2.2.32", + "resolved": "https://registry.npmjs.org/@heroui/table/-/table-2.2.32.tgz", + "integrity": "sha512-cJ+XtBZOonSmkw7jrj0d9c8aIMdSGSZrBKS/1KZ7J9BTFPDW+ZoWwomgJHgZ31FQlr7dkYa7mZ2rf8LoGoOxRA==", + "license": "MIT", + "dependencies": { + "@heroui/checkbox": "2.3.32", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-icons": "2.1.10", + "@heroui/shared-utils": "2.1.12", + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1", + "@react-aria/table": "3.17.11", + "@react-aria/visually-hidden": "3.8.31", + "@react-stately/table": "3.15.4", + "@react-stately/virtualizer": "4.4.6", + "@react-types/grid": "3.3.8", + "@react-types/table": "3.13.6", + "@tanstack/react-virtual": "3.11.3" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/tabs": { + "version": "2.2.29", + "resolved": "https://registry.npmjs.org/@heroui/tabs/-/tabs-2.2.29.tgz", + "integrity": "sha512-TzCRXDqhdNsUxhO6sPdsbEt8m7KlkGwvJGvs4S/kHvJh1sKCItnnT0Z2FpZr6pLAqmHA6LO6Ow1phR5ACfNmug==", + "license": "MIT", + "dependencies": { + "@heroui/aria-utils": "2.2.29", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-is-mounted": "2.1.8", + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1", + "@react-aria/tabs": "3.11.1", + "@react-stately/tabs": "3.8.9", + "@react-types/shared": "3.33.1", + "scroll-into-view-if-needed": "3.0.10" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/theme": { + "version": "2.4.26", + "resolved": "https://registry.npmjs.org/@heroui/theme/-/theme-2.4.26.tgz", + "integrity": "sha512-TYatChq7YyGDcPJytgOMqQwK72qWYb+vIa7mLmX3Cu9+JzFs2VSHu2QqzdhnOHoK0uJr8giDMy0gvJEDuu31vw==", + "license": "MIT", + "dependencies": { + "@heroui/shared-utils": "2.1.12", + "color": "^4.2.3", + "color2k": "^2.0.3", + "deepmerge": "4.3.1", + "tailwind-merge": "3.4.0", + "tailwind-variants": "3.2.2" + }, + "peerDependencies": { + "tailwindcss": ">=4.0.0" + } + }, + "node_modules/@heroui/theme/node_modules/tailwind-merge": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.4.0.tgz", + "integrity": "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/@heroui/toast": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/@heroui/toast/-/toast-2.0.22.tgz", + "integrity": "sha512-eaayx0oJW0/imLyOhfjOdMx8FEKbWa8aKVvPNvXr3mXQbgzBEa+e147Xbh2CneG66we9C24JETE7QMLJ00popw==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/shared-icons": "2.1.10", + "@heroui/shared-utils": "2.1.12", + "@heroui/spinner": "2.2.29", + "@heroui/use-is-mobile": "2.2.12", + "@react-aria/interactions": "3.27.1", + "@react-aria/toast": "3.0.11", + "@react-stately/toast": "3.1.3" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/tooltip": { + "version": "2.2.29", + "resolved": "https://registry.npmjs.org/@heroui/tooltip/-/tooltip-2.2.29.tgz", + "integrity": "sha512-PsHVC9XwjmbZpdu7o8TWSHENiCHCsoQpzpFJ3GYgnUULIhH5k69L/+5jiON9qG6k7+tL4RZS6pQPSbxDCf1acQ==", + "license": "MIT", + "dependencies": { + "@heroui/aria-utils": "2.2.29", + "@heroui/dom-animation": "2.1.10", + "@heroui/framer-utils": "2.1.28", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@heroui/use-aria-overlay": "2.0.6", + "@heroui/use-safe-layout-effect": "2.1.8", + "@react-aria/overlays": "3.31.2", + "@react-aria/tooltip": "3.9.2", + "@react-stately/tooltip": "3.5.11", + "@react-types/overlays": "3.9.4", + "@react-types/tooltip": "3.5.2" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "framer-motion": ">=11.5.6 || >=12.0.0-alpha.1", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-aria-accordion": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/@heroui/use-aria-accordion/-/use-aria-accordion-2.2.20.tgz", + "integrity": "sha512-HvZhfrsxpCab+m4TrbHWsnA8iLaYdq1G1pjFCswftDRzfioJLmkJ0FMtYDPi792akJO+TWEvPhJibcwVD0bbfg==", + "license": "MIT", + "dependencies": { + "@react-aria/button": "3.14.5", + "@react-aria/focus": "3.21.5", + "@react-aria/selection": "3.27.2", + "@react-stately/tree": "3.9.6", + "@react-types/accordion": "3.0.0-alpha.26", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-aria-button": { + "version": "2.2.22", + "resolved": "https://registry.npmjs.org/@heroui/use-aria-button/-/use-aria-button-2.2.22.tgz", + "integrity": "sha512-6Y+fWkf/LKKxw3cd9QCSdLVMrMgKv+0AGCzNCfDiZ5kzQGCX4JQD9eK/495opAHV90yhIWzolwdNwtsyhDploA==", + "license": "MIT", + "dependencies": { + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1", + "@react-aria/utils": "3.33.1", + "@react-types/button": "3.15.1", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-aria-link": { + "version": "2.2.23", + "resolved": "https://registry.npmjs.org/@heroui/use-aria-link/-/use-aria-link-2.2.23.tgz", + "integrity": "sha512-jpFj9HNCdt+DENPJyrfoN+AzuaMze9xqo5Y1P3KGoT/2pFDmelFgbXAOC5CHpatYFIn3YEELBGlj84zNXq2gjQ==", + "license": "MIT", + "dependencies": { + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1", + "@react-aria/utils": "3.33.1", + "@react-types/link": "3.6.7", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-aria-modal-overlay": { + "version": "2.2.21", + "resolved": "https://registry.npmjs.org/@heroui/use-aria-modal-overlay/-/use-aria-modal-overlay-2.2.21.tgz", + "integrity": "sha512-Qwj5ldLFpfinfGpYUQu92TCpGKzd9Uamhd31ayRvYl6+LwOX124N9ObRYBTXyEiNJ7XFYer3vXQVeaR84xM1Gg==", + "license": "MIT", + "dependencies": { + "@heroui/use-aria-overlay": "2.0.6", + "@react-aria/overlays": "3.31.2", + "@react-aria/utils": "3.33.1", + "@react-stately/overlays": "3.6.23" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-aria-multiselect": { + "version": "2.4.21", + "resolved": "https://registry.npmjs.org/@heroui/use-aria-multiselect/-/use-aria-multiselect-2.4.21.tgz", + "integrity": "sha512-f/7YkTfS67OMXXYCO9WTI0Fj9YGPOgdwMIqhaSnFdA2UywA3W71PPeEqpKeuvO6isBW53YOynAPMZXF1NcsuHw==", + "license": "MIT", + "dependencies": { + "@react-aria/i18n": "3.12.16", + "@react-aria/interactions": "3.27.1", + "@react-aria/label": "3.7.25", + "@react-aria/listbox": "3.15.3", + "@react-aria/menu": "3.21.0", + "@react-aria/selection": "3.27.2", + "@react-aria/utils": "3.33.1", + "@react-stately/form": "3.2.4", + "@react-stately/list": "3.13.4", + "@react-stately/menu": "3.9.11", + "@react-types/button": "3.15.1", + "@react-types/overlays": "3.9.4", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-aria-overlay": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@heroui/use-aria-overlay/-/use-aria-overlay-2.0.6.tgz", + "integrity": "sha512-7q8oj5DZjr9oGYUB1UTOBnnuAapkBmfATCsdUeNOxQdYb2glJp52sTUslO+ykI9xVOAJSGYAmGuWgY5d+8mD6Q==", + "license": "MIT", + "dependencies": { + "@react-aria/focus": "3.21.5", + "@react-aria/interactions": "3.27.1", + "@react-aria/overlays": "3.31.2", + "@react-types/shared": "3.33.1" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@heroui/use-callback-ref": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@heroui/use-callback-ref/-/use-callback-ref-2.1.8.tgz", + "integrity": "sha512-D1JDo9YyFAprYpLID97xxQvf86NvyWLay30BeVVZT9kWmar6O9MbCRc7ACi7Ngko60beonj6+amTWkTm7QuY/Q==", + "license": "MIT", + "dependencies": { + "@heroui/use-safe-layout-effect": "2.1.8" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-clipboard": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@heroui/use-clipboard/-/use-clipboard-2.1.9.tgz", + "integrity": "sha512-lkBq5RpXHiPvk1BXKJG8gMM0f7jRMIGnxAXDjAUzZyXKBuWLoM+XlaUWmZHtmkkjVFMX1L4vzA+vxi9rZbenEQ==", + "license": "MIT", + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-data-scroll-overflow": { + "version": "2.2.13", + "resolved": "https://registry.npmjs.org/@heroui/use-data-scroll-overflow/-/use-data-scroll-overflow-2.2.13.tgz", + "integrity": "sha512-zboLXO1pgYdzMUahDcVt5jf+l1jAQ/D9dFqr7AxWLfn6tn7/EgY0f6xIrgWDgJnM0U3hKxVeY13pAeB4AFTqTw==", + "license": "MIT", + "dependencies": { + "@heroui/shared-utils": "2.1.12" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-disclosure": { + "version": "2.2.19", + "resolved": "https://registry.npmjs.org/@heroui/use-disclosure/-/use-disclosure-2.2.19.tgz", + "integrity": "sha512-N3CBikg1cxik2xp1UQkPUBbKPGrvtdsRyAlOnGygliyr5wKpZHLZi0R/g8OxTZVk3zUSCl7HZJT13ddM5TqEvA==", + "license": "MIT", + "dependencies": { + "@heroui/use-callback-ref": "2.1.8", + "@react-aria/utils": "3.33.1", + "@react-stately/utils": "3.11.0" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-draggable": { + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/@heroui/use-draggable/-/use-draggable-2.1.20.tgz", + "integrity": "sha512-yXn3jU3qiUx6aUd2osbDfddpnUTTh2wAVzpNyI+BXl2Z3rkVU9jqiJxZa+BXfsqFX17KrlrxwPPBmLNhSdBKHg==", + "license": "MIT", + "dependencies": { + "@react-aria/interactions": "3.27.1" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-form-reset": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@heroui/use-form-reset/-/use-form-reset-2.0.1.tgz", + "integrity": "sha512-6slKWiLtVfgZnVeHVkM9eXgjwI07u0CUaLt2kQpfKPqTSTGfbHgCYJFduijtThhTdKBhdH6HCmzTcnbVlAxBXw==", + "license": "MIT", + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-image": { + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/@heroui/use-image/-/use-image-2.1.14.tgz", + "integrity": "sha512-eCxtKOsM1tszBKYqz8qIJwGIxEAUC7ua+6L9vK8JgG6gOC0jEPFGH7keQuPVprzRtG3DmNt90icowqEjnOHdFQ==", + "license": "MIT", + "dependencies": { + "@heroui/react-utils": "2.1.14", + "@heroui/use-safe-layout-effect": "2.1.8" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-intersection-observer": { + "version": "2.2.14", + "resolved": "https://registry.npmjs.org/@heroui/use-intersection-observer/-/use-intersection-observer-2.2.14.tgz", + "integrity": "sha512-qYJeMk4cTsF+xIckRctazCgWQ4BVOpJu+bhhkB1NrN+MItx19Lcb7ksOqMdN5AiSf85HzDcAEPIQ9w9RBlt5sg==", + "license": "MIT", + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-is-mobile": { + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/@heroui/use-is-mobile/-/use-is-mobile-2.2.12.tgz", + "integrity": "sha512-2UKa4v1xbvFwerWKoMTrg4q9ZfP9MVIVfCl1a7JuKQlXq3jcyV6z1as5bZ41pCsTOT+wUVOFnlr6rzzQwT9ZOA==", + "license": "MIT", + "dependencies": { + "@react-aria/ssr": "3.9.10" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-is-mounted": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@heroui/use-is-mounted/-/use-is-mounted-2.1.8.tgz", + "integrity": "sha512-DO/Th1vD4Uy8KGhd17oGlNA4wtdg91dzga+VMpmt94gSZe1WjsangFwoUBxF2uhlzwensCX9voye3kerP/lskg==", + "license": "MIT", + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-measure": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@heroui/use-measure/-/use-measure-2.1.8.tgz", + "integrity": "sha512-GjT9tIgluqYMZWfAX6+FFdRQBqyHeuqUMGzAXMTH9kBXHU0U5C5XU2c8WFORkNDoZIg1h13h1QdV+Vy4LE1dEA==", + "license": "MIT", + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-pagination": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/@heroui/use-pagination/-/use-pagination-2.2.20.tgz", + "integrity": "sha512-+ZK+vJgLq7JKLJAnIwfbxe/oF1hANtIiCR6H++q7fOw9pxZZQsntmLEu4kvRhpGZRp5C5T10A1GKIK7/xz1ZdA==", + "license": "MIT", + "dependencies": { + "@heroui/shared-utils": "2.1.12", + "@react-aria/i18n": "3.12.16" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-resize": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@heroui/use-resize/-/use-resize-2.1.8.tgz", + "integrity": "sha512-htF3DND5GmrSiMGnzRbISeKcH+BqhQ/NcsP9sBTIl7ewvFaWiDhEDiUHdJxflmJGd/c5qZq2nYQM/uluaqIkKA==", + "license": "MIT", + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-safe-layout-effect": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@heroui/use-safe-layout-effect/-/use-safe-layout-effect-2.1.8.tgz", + "integrity": "sha512-wbnZxVWCYqk10XRMu0veSOiVsEnLcmGUmJiapqgaz0fF8XcpSScmqjTSoWjHIEWaHjQZ6xr+oscD761D6QJN+Q==", + "license": "MIT", + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-scroll-position": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@heroui/use-scroll-position/-/use-scroll-position-2.1.8.tgz", + "integrity": "sha512-NxanHKObxVfWaPpNRyBR8v7RfokxrzcHyTyQfbgQgAGYGHTMaOGkJGqF8kBzInc3zJi+F0zbX7Nb0QjUgsLNUQ==", + "license": "MIT", + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/use-viewport-size": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@heroui/use-viewport-size/-/use-viewport-size-2.0.1.tgz", + "integrity": "sha512-blv8BEB/QdLePLWODPRzRS2eELJ2eyHbdOIADbL0KcfLzOUEg9EiuVk90hcSUDAFqYiJ3YZ5Z0up8sdPcR8Y7g==", + "license": "MIT", + "peerDependencies": { + "react": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@heroui/user": { + "version": "2.2.26", + "resolved": "https://registry.npmjs.org/@heroui/user/-/user-2.2.26.tgz", + "integrity": "sha512-3SESvOSYSVysSSwV1SR2QD8cOx6Fv/vVAXry/GmjLl9CSsA6HTlWoLy7TRtteGFqm3XRWVqjzCrcNGlvSmtdnQ==", + "license": "MIT", + "dependencies": { + "@heroui/avatar": "2.2.26", + "@heroui/react-utils": "2.1.14", + "@heroui/shared-utils": "2.1.12", + "@react-aria/focus": "3.21.5" + }, + "peerDependencies": { + "@heroui/system": ">=2.4.18", + "@heroui/theme": ">=2.4.24", + "react": ">=18 || >=19.0.0-rc.0", + "react-dom": ">=18 || >=19.0.0-rc.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@internationalized/date": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.12.0.tgz", + "integrity": "sha512-/PyIMzK29jtXaGU23qTvNZxvBXRtKbNnGDFD+PY6CZw/Y8Ex8pFUzkuCJCG9aOqmShjqhS9mPqP6Dk5onQY8rQ==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/message": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.1.8.tgz", + "integrity": "sha512-Rwk3j/TlYZhn3HQ6PyXUV0XP9Uv42jqZGNegt0BXlxjE6G3+LwHjbQZAGHhCnCPdaA6Tvd3ma/7QzLlLkJxAWA==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0", + "intl-messageformat": "^10.1.0" + } + }, + "node_modules/@internationalized/number": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.5.tgz", + "integrity": "sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/string": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.2.7.tgz", + "integrity": "sha512-D4OHBjrinH+PFZPvfCXvG28n2LSykWcJ7GIioQL+ok0LON15SdfoUssoHzzOUmVZLbRoREsQXVzA6r8JKsbP6A==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@noriginmedia/norigin-spatial-navigation": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@noriginmedia/norigin-spatial-navigation/-/norigin-spatial-navigation-3.0.0.tgz", + "integrity": "sha512-99xJV5jeWNb1MN/oa7ak2wU5k8HGuebMUUxJfRdT9jT3DKsfukP49AbZVgeEcyuuYqvoFuHDJk71YECE3dxylg==", + "license": "MIT", + "dependencies": { + "@noriginmedia/norigin-spatial-navigation-core": "^3.0.0", + "@noriginmedia/norigin-spatial-navigation-react": "^3.0.0" + } + }, + "node_modules/@noriginmedia/norigin-spatial-navigation-core": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@noriginmedia/norigin-spatial-navigation-core/-/norigin-spatial-navigation-core-3.0.0.tgz", + "integrity": "sha512-Jdo0W/5yrNsZe0ki/afBjnzKYm8eEstVGbUAi4KD7ysPft0SeNNSlu10vw1+tjqSwYUB56Kur8A5vReMwOFZ6A==", + "license": "MIT", + "dependencies": { + "lodash-es": "^4.17.21" + } + }, + "node_modules/@noriginmedia/norigin-spatial-navigation-react": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@noriginmedia/norigin-spatial-navigation-react/-/norigin-spatial-navigation-react-3.0.0.tgz", + "integrity": "sha512-nz+gR2lKnEoDmeaUJHxdGqNF74BA91cKltMVlGwjdPCBuperos4usoajLl59erjyHmdoqpzFu6Voi4qgp3E2CA==", + "license": "MIT", + "dependencies": { + "@noriginmedia/norigin-spatial-navigation-core": "^3.0.0", + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@react-aria/breadcrumbs": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.32.tgz", + "integrity": "sha512-S61vh5DJ2PXiXUwD7gk+pvS/b4VPrc3ZJOUZ0yVRLHkVESr5LhIZH+SAVgZkm1lzKyMRG+BH+fiRH/DZRSs7SA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.16", + "@react-aria/link": "^3.8.9", + "@react-aria/utils": "^3.33.1", + "@react-types/breadcrumbs": "^3.7.19", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/button": { + "version": "3.14.5", + "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.14.5.tgz", + "integrity": "sha512-ZuLx+wQj9VQhH9BYe7t0JowmKnns2XrFHFNvIVBb5RwxL+CIycIOL7brhWKg2rGdxvlOom7jhVbcjSmtAaSyaQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.27.1", + "@react-aria/toolbar": "3.0.0-beta.24", + "@react-aria/utils": "^3.33.1", + "@react-stately/toggle": "^3.9.5", + "@react-types/button": "^3.15.1", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/calendar": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.9.5.tgz", + "integrity": "sha512-k0kvceYdZZu+DoeqephtlmIvh1CxqdFyoN52iqVzTz9O0pe5Xfhq7zxPGbeCp4pC61xzp8Lu/6uFA/YNfQQNag==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.12.0", + "@react-aria/i18n": "^3.12.16", + "@react-aria/interactions": "^3.27.1", + "@react-aria/live-announcer": "^3.4.4", + "@react-aria/utils": "^3.33.1", + "@react-stately/calendar": "^3.9.3", + "@react-types/button": "^3.15.1", + "@react-types/calendar": "^3.8.3", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/checkbox": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.16.5.tgz", + "integrity": "sha512-ZhUT7ELuD52hb+Zpzw0ElLQiVOd5sKYahrh+PK3vq13Wk5TedBscALpjuXetI4pwFfdmAM1Lhgcsrd8+6AmyvA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/form": "^3.1.5", + "@react-aria/interactions": "^3.27.1", + "@react-aria/label": "^3.7.25", + "@react-aria/toggle": "^3.12.5", + "@react-aria/utils": "^3.33.1", + "@react-stately/checkbox": "^3.7.5", + "@react-stately/form": "^3.2.4", + "@react-stately/toggle": "^3.9.5", + "@react-types/checkbox": "^3.10.4", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/combobox": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.15.0.tgz", + "integrity": "sha512-qSjQTFwKl3x1jCP2NRSJ6doZqAp6c2GTfoiFwWjaWg1IewwLsglaW6NnzqRDFiqFbDGgXPn4MqtC1VYEJ3NEjA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.5", + "@react-aria/i18n": "^3.12.16", + "@react-aria/interactions": "^3.27.1", + "@react-aria/listbox": "^3.15.3", + "@react-aria/live-announcer": "^3.4.4", + "@react-aria/menu": "^3.21.0", + "@react-aria/overlays": "^3.31.2", + "@react-aria/selection": "^3.27.2", + "@react-aria/textfield": "^3.18.5", + "@react-aria/utils": "^3.33.1", + "@react-stately/collections": "^3.12.10", + "@react-stately/combobox": "^3.13.0", + "@react-stately/form": "^3.2.4", + "@react-types/button": "^3.15.1", + "@react-types/combobox": "^3.14.0", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/datepicker": { + "version": "3.16.1", + "resolved": "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.16.1.tgz", + "integrity": "sha512-6BltCVWt09yefTkGjb2gViGCwoddx9HKJiZbY9u6Es/Q+VhwNJQRtczbnZ3K32p262hIknukNf/5nZaCOI1AKA==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.12.0", + "@internationalized/number": "^3.6.5", + "@internationalized/string": "^3.2.7", + "@react-aria/focus": "^3.21.5", + "@react-aria/form": "^3.1.5", + "@react-aria/i18n": "^3.12.16", + "@react-aria/interactions": "^3.27.1", + "@react-aria/label": "^3.7.25", + "@react-aria/spinbutton": "^3.7.2", + "@react-aria/utils": "^3.33.1", + "@react-stately/datepicker": "^3.16.1", + "@react-stately/form": "^3.2.4", + "@react-types/button": "^3.15.1", + "@react-types/calendar": "^3.8.3", + "@react-types/datepicker": "^3.13.5", + "@react-types/dialog": "^3.5.24", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/dialog": { + "version": "3.5.34", + "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.34.tgz", + "integrity": "sha512-/x53Q5ynpW5Kv9637WYu7SrDfj3woSp6jJRj8l6teGnWW/iNZWYJETgzHfbxx+HPKYATCZesRoIeO2LnYIXyEA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.27.1", + "@react-aria/overlays": "^3.31.2", + "@react-aria/utils": "^3.33.1", + "@react-types/dialog": "^3.5.24", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/focus": { + "version": "3.21.5", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.21.5.tgz", + "integrity": "sha512-V18fwCyf8zqgJdpLQeDU5ZRNd9TeOfBbhLgmX77Zr5ae9XwaoJ1R3SFJG1wCJX60t34AW+aLZSEEK+saQElf3Q==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.27.1", + "@react-aria/utils": "^3.33.1", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/form": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@react-aria/form/-/form-3.1.5.tgz", + "integrity": "sha512-BWlONgHn8hmaMkcS6AgMSLQeNqVBwqPNLhdqjDO/PCfzvV7O8NZw/dFeIzJwfG4aBfSpbHHRdXGdfrk3d8dylQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.27.1", + "@react-aria/utils": "^3.33.1", + "@react-stately/form": "^3.2.4", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/grid": { + "version": "3.14.8", + "resolved": "https://registry.npmjs.org/@react-aria/grid/-/grid-3.14.8.tgz", + "integrity": "sha512-X6rRFKDu/Kh6Sv8FBap3vjcb+z4jXkSOwkYnexIJp5kMTo5/Dqo55cCBio5B70Tanfv32Ev/6SpzYG7ryxnM9w==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.5", + "@react-aria/i18n": "^3.12.16", + "@react-aria/interactions": "^3.27.1", + "@react-aria/live-announcer": "^3.4.4", + "@react-aria/selection": "^3.27.2", + "@react-aria/utils": "^3.33.1", + "@react-stately/collections": "^3.12.10", + "@react-stately/grid": "^3.11.9", + "@react-stately/selection": "^3.20.9", + "@react-types/checkbox": "^3.10.4", + "@react-types/grid": "^3.3.8", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/i18n": { + "version": "3.12.16", + "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.12.16.tgz", + "integrity": "sha512-Km2CAz6MFQOUEaattaW+2jBdWOHUF8WX7VQoNbjlqElCP58nSaqi9yxTWUDRhAcn8/xFUnkFh4MFweNgtrHuEA==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.12.0", + "@internationalized/message": "^3.1.8", + "@internationalized/number": "^3.6.5", + "@internationalized/string": "^3.2.7", + "@react-aria/ssr": "^3.9.10", + "@react-aria/utils": "^3.33.1", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/interactions": { + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.27.1.tgz", + "integrity": "sha512-M3wLpTTmDflI0QGNK0PJNUaBXXfeBXue8ZxLMngfc1piHNiH4G5lUvWd9W14XVbqrSCVY8i8DfGrNYpyyZu0tw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.10", + "@react-aria/utils": "^3.33.1", + "@react-stately/flags": "^3.1.2", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/label": { + "version": "3.7.25", + "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.25.tgz", + "integrity": "sha512-oNK3Pqj4LDPwEbQaoM/uCip4QvQmmwGOh08VeW+vzSi6TAwf+KoWTyH/tiAeB0CHWNDK0k3e1iTygTAt4wzBmg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.33.1", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/landmark": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@react-aria/landmark/-/landmark-3.0.10.tgz", + "integrity": "sha512-GpNjJaI8/a6WxYDZgzTCLYSzPM6xp2pxCIQ4udiGbTCtxx13Trmm0cPABvPtzELidgolCf05em9Phr+3G0eE8A==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/utils": "^3.33.1", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0", + "use-sync-external-store": "^1.6.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/link": { + "version": "3.8.9", + "resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.8.9.tgz", + "integrity": "sha512-UaAFBfs84/Qq6TxlMWkREqqNY6SFLukot+z2Aa1kC+VyStv1kWG6sE5QLjm4SBn1Q3CGRsefhB/5+taaIbB4Pw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.27.1", + "@react-aria/utils": "^3.33.1", + "@react-types/link": "^3.6.7", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/listbox": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.15.3.tgz", + "integrity": "sha512-C6YgiyrHS5sbS5UBdxGMhEs+EKJYotJgGVtl9l0ySXpBUXERiHJWLOyV7a8PwkUOmepbB4FaLD7Y9EUzGkrGlw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.27.1", + "@react-aria/label": "^3.7.25", + "@react-aria/selection": "^3.27.2", + "@react-aria/utils": "^3.33.1", + "@react-stately/collections": "^3.12.10", + "@react-stately/list": "^3.13.4", + "@react-types/listbox": "^3.7.6", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/live-announcer": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@react-aria/live-announcer/-/live-announcer-3.4.4.tgz", + "integrity": "sha512-PTTBIjNRnrdJOIRTDGNifY2d//kA7GUAwRFJNOEwSNG4FW+Bq9awqLiflw0JkpyB0VNIwou6lqKPHZVLsGWOXA==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@react-aria/menu": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.21.0.tgz", + "integrity": "sha512-CKTVZ4izSE1eKIti6TbTtzJAUo+WT8O4JC0XZCYDBpa0f++lD19Kz9aY+iY1buv5xGI20gAfpO474E9oEd4aQA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.5", + "@react-aria/i18n": "^3.12.16", + "@react-aria/interactions": "^3.27.1", + "@react-aria/overlays": "^3.31.2", + "@react-aria/selection": "^3.27.2", + "@react-aria/utils": "^3.33.1", + "@react-stately/collections": "^3.12.10", + "@react-stately/menu": "^3.9.11", + "@react-stately/selection": "^3.20.9", + "@react-stately/tree": "^3.9.6", + "@react-types/button": "^3.15.1", + "@react-types/menu": "^3.10.7", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/numberfield": { + "version": "3.12.5", + "resolved": "https://registry.npmjs.org/@react-aria/numberfield/-/numberfield-3.12.5.tgz", + "integrity": "sha512-Fi41IUWXEHLFIeJ/LHuZ9Azs8J/P563fZi37GSBkIq5P1pNt1rPgJJng5CNn4KsHxwqadTRUlbbZwbZraWDtRg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.16", + "@react-aria/interactions": "^3.27.1", + "@react-aria/live-announcer": "^3.4.4", + "@react-aria/spinbutton": "^3.7.2", + "@react-aria/textfield": "^3.18.5", + "@react-aria/utils": "^3.33.1", + "@react-stately/form": "^3.2.4", + "@react-stately/numberfield": "^3.11.0", + "@react-types/button": "^3.15.1", + "@react-types/numberfield": "^3.8.18", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/overlays": { + "version": "3.31.2", + "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.31.2.tgz", + "integrity": "sha512-78HYI08r6LvcfD34gyv19ArRIjy1qxOKuXl/jYnjLDyQzD4pVb634IQWcm0zt10RdKgyuH6HTqvuDOgZTLet7Q==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.5", + "@react-aria/i18n": "^3.12.16", + "@react-aria/interactions": "^3.27.1", + "@react-aria/ssr": "^3.9.10", + "@react-aria/utils": "^3.33.1", + "@react-aria/visually-hidden": "^3.8.31", + "@react-stately/flags": "^3.1.2", + "@react-stately/overlays": "^3.6.23", + "@react-types/button": "^3.15.1", + "@react-types/overlays": "^3.9.4", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/progress": { + "version": "3.4.30", + "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.30.tgz", + "integrity": "sha512-S6OWVGgluSWYSd/A6O8CVjz83eeMUfkuWSra0ewAV9bmxZ7TP9pUmD3bGdqHZEl97nt5vHGjZ3eq/x8eCmzKhA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.16", + "@react-aria/label": "^3.7.25", + "@react-aria/utils": "^3.33.1", + "@react-types/progress": "^3.5.18", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/radio": { + "version": "3.12.5", + "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.12.5.tgz", + "integrity": "sha512-8CCJKJzfozEiWBPO9QAATG1rBGJEJ+xoqvHf9LKU2sPFGsA2/SRnLs6LB9fCG5R3spvaK1xz0any1fjWPl7x8A==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.5", + "@react-aria/form": "^3.1.5", + "@react-aria/i18n": "^3.12.16", + "@react-aria/interactions": "^3.27.1", + "@react-aria/label": "^3.7.25", + "@react-aria/utils": "^3.33.1", + "@react-stately/radio": "^3.11.5", + "@react-types/radio": "^3.9.4", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/selection": { + "version": "3.27.2", + "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.27.2.tgz", + "integrity": "sha512-GbUSSLX/ciXix95KW1g+SLM9np7iXpIZrFDSXkC6oNx1uhy18eAcuTkeZE25+SY5USVUmEzjI3m/3JoSUcebbg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.5", + "@react-aria/i18n": "^3.12.16", + "@react-aria/interactions": "^3.27.1", + "@react-aria/utils": "^3.33.1", + "@react-stately/selection": "^3.20.9", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/slider": { + "version": "3.8.5", + "resolved": "https://registry.npmjs.org/@react-aria/slider/-/slider-3.8.5.tgz", + "integrity": "sha512-gqkJxznk141mE0JamXF5CXml9PDbPkBz8dyKlihtWHWX4yhEbVYdC9J0otE7iCR3zx69Bm7WHoTGL0BsdpKzVA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.16", + "@react-aria/interactions": "^3.27.1", + "@react-aria/label": "^3.7.25", + "@react-aria/utils": "^3.33.1", + "@react-stately/slider": "^3.7.5", + "@react-types/shared": "^3.33.1", + "@react-types/slider": "^3.8.4", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/spinbutton": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@react-aria/spinbutton/-/spinbutton-3.7.2.tgz", + "integrity": "sha512-adjE1wNCWlugvAtVXlXWPtIG9JWurEgYVn1Eeyh19x038+oXGvOsOAoKCXM+SnGleTWQ9J7pEZITFoEI3cVfAw==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.16", + "@react-aria/live-announcer": "^3.4.4", + "@react-aria/utils": "^3.33.1", + "@react-types/button": "^3.15.1", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.10.tgz", + "integrity": "sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/switch": { + "version": "3.7.11", + "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.7.11.tgz", + "integrity": "sha512-dYVX71HiepBsKyeMaQgHbhqI+MQ3MVoTd5EnTbUjefIBnmQZavYj1/e4NUiUI4Ix+/C0HxL8ibDAv4NlSW3eLQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/toggle": "^3.12.5", + "@react-stately/toggle": "^3.9.5", + "@react-types/shared": "^3.33.1", + "@react-types/switch": "^3.5.17", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/table": { + "version": "3.17.11", + "resolved": "https://registry.npmjs.org/@react-aria/table/-/table-3.17.11.tgz", + "integrity": "sha512-GkYmWPiW3OM+FUZxdS33teHXHXde7TjHuYgDDaG9phvg6cQTQjGilJozrzA3OfftTOq5VB8XcKTIQW3c0tpYsQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.5", + "@react-aria/grid": "^3.14.8", + "@react-aria/i18n": "^3.12.16", + "@react-aria/interactions": "^3.27.1", + "@react-aria/live-announcer": "^3.4.4", + "@react-aria/utils": "^3.33.1", + "@react-aria/visually-hidden": "^3.8.31", + "@react-stately/collections": "^3.12.10", + "@react-stately/flags": "^3.1.2", + "@react-stately/table": "^3.15.4", + "@react-types/checkbox": "^3.10.4", + "@react-types/grid": "^3.3.8", + "@react-types/shared": "^3.33.1", + "@react-types/table": "^3.13.6", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/tabs": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.11.1.tgz", + "integrity": "sha512-3Ppz7yaEDW9L7p9PE9yNOl5caLwNnnLQqI+MX/dwbWlw9HluHS7uIjb21oswNl6UbSxAWyENOka45+KN4Fkh7A==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.5", + "@react-aria/i18n": "^3.12.16", + "@react-aria/selection": "^3.27.2", + "@react-aria/utils": "^3.33.1", + "@react-stately/tabs": "^3.8.9", + "@react-types/shared": "^3.33.1", + "@react-types/tabs": "^3.3.22", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/textfield": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.18.5.tgz", + "integrity": "sha512-ttwVSuwoV3RPaG2k2QzEXKeQNQ3mbdl/2yy6I4Tjrn1ZNkYHfVyJJ26AjenfSmj1kkTQoSAfZ8p+7rZp4n0xoQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/form": "^3.1.5", + "@react-aria/interactions": "^3.27.1", + "@react-aria/label": "^3.7.25", + "@react-aria/utils": "^3.33.1", + "@react-stately/form": "^3.2.4", + "@react-stately/utils": "^3.11.0", + "@react-types/shared": "^3.33.1", + "@react-types/textfield": "^3.12.8", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/toast": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@react-aria/toast/-/toast-3.0.11.tgz", + "integrity": "sha512-2DjZjBAvm8/CWbnZ6s7LjkYCkULKtjMve6GvhPTq98AthuEDLEiBvM1wa3xdecCRhZyRT1g6DXqVca0EfZ9fJA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/i18n": "^3.12.16", + "@react-aria/interactions": "^3.27.1", + "@react-aria/landmark": "^3.0.10", + "@react-aria/utils": "^3.33.1", + "@react-stately/toast": "^3.1.3", + "@react-types/button": "^3.15.1", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/toggle": { + "version": "3.12.5", + "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.12.5.tgz", + "integrity": "sha512-XXVFLzcV8fr9mz7y/wfxEAhWvaBZ9jSfhCMuxH2bsivO7nTcMJ1jb4g2xJNwZgne17bMWNc7mKvW5dbsdlI6BA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.27.1", + "@react-aria/utils": "^3.33.1", + "@react-stately/toggle": "^3.9.5", + "@react-types/checkbox": "^3.10.4", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/toolbar": { + "version": "3.0.0-beta.24", + "resolved": "https://registry.npmjs.org/@react-aria/toolbar/-/toolbar-3.0.0-beta.24.tgz", + "integrity": "sha512-B2Rmpko7Ghi2RbNfsGdbR7I+RQBDhPGVE4bU3/EwHz+P/vNe5LyGPTeSwqaOMsQTF9lKNCkY8424dVTCr6RUMg==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/focus": "^3.21.5", + "@react-aria/i18n": "^3.12.16", + "@react-aria/utils": "^3.33.1", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/tooltip": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.9.2.tgz", + "integrity": "sha512-VrgkPwHiEnAnBhoQ4W7kfry/RfVuRWrUPaJSp0+wKM6u0gg2tmn7OFRDXTxBAm/omQUguIdIjRWg7sf3zHH82A==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.27.1", + "@react-aria/utils": "^3.33.1", + "@react-stately/tooltip": "^3.5.11", + "@react-types/shared": "^3.33.1", + "@react-types/tooltip": "^3.5.2", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/utils": { + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.33.1.tgz", + "integrity": "sha512-kIx1Sj6bbAT0pdqCegHuPanR9zrLn5zMRiM7LN12rgRf55S19ptd9g3ncahArifYTRkfEU9VIn+q0HjfMqS9/w==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/ssr": "^3.9.10", + "@react-stately/flags": "^3.1.2", + "@react-stately/utils": "^3.11.0", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/visually-hidden": { + "version": "3.8.31", + "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.31.tgz", + "integrity": "sha512-RTOHHa4n56a9A3criThqFHBifvZoV71+MCkSuNP2cKO662SUWjqKkd0tJt/mBRMEJPkys8K7Eirp6T8Wt5FFRA==", + "license": "Apache-2.0", + "dependencies": { + "@react-aria/interactions": "^3.27.1", + "@react-aria/utils": "^3.33.1", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/calendar": { + "version": "3.9.3", + "resolved": "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.9.3.tgz", + "integrity": "sha512-uw7fCZXoypSBBUsVkbNvJMQWTihZReRbyLIGG3o/ZM630N3OCZhb/h4Uxke4pNu7n527H0V1bAnZgAldIzOYqg==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.12.0", + "@react-stately/utils": "^3.11.0", + "@react-types/calendar": "^3.8.3", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/checkbox": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.7.5.tgz", + "integrity": "sha512-K5R5ted7AxLB3sDkuVAazUdyRMraFT1imVqij2GuAiOUFvsZvbuocnDuFkBVKojyV3GpqLBvViV8IaCMc4hNIw==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/form": "^3.2.4", + "@react-stately/utils": "^3.11.0", + "@react-types/checkbox": "^3.10.4", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/collections": { + "version": "3.12.10", + "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.12.10.tgz", + "integrity": "sha512-wmF9VxJDyBujBuQ76vXj2g/+bnnj8fx5DdXgRmyfkkYhPB46+g2qnjbVGEvipo7bJuGxDftCUC4SN7l7xqUWfg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/combobox": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.13.0.tgz", + "integrity": "sha512-dX9g/cK1hjLRjcbWVF6keHxTQDGhKGB2QAgPhWcBmOK3qJv+2dQqsJ6YCGWn/Y2N2acoEseLrAA7+Qe4HWV9cg==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.12.10", + "@react-stately/form": "^3.2.4", + "@react-stately/list": "^3.13.4", + "@react-stately/overlays": "^3.6.23", + "@react-stately/utils": "^3.11.0", + "@react-types/combobox": "^3.14.0", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/datepicker": { + "version": "3.16.1", + "resolved": "https://registry.npmjs.org/@react-stately/datepicker/-/datepicker-3.16.1.tgz", + "integrity": "sha512-BtAMDvxd1OZxkxjqq5tN5TYmp6Hm8+o3+IDA4qmem2/pfQfVbOZeWS2WitcPBImj4n4T+W1A5+PI7mT/6DUBVg==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.12.0", + "@internationalized/number": "^3.6.5", + "@internationalized/string": "^3.2.7", + "@react-stately/form": "^3.2.4", + "@react-stately/overlays": "^3.6.23", + "@react-stately/utils": "^3.11.0", + "@react-types/datepicker": "^3.13.5", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/flags": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.1.2.tgz", + "integrity": "sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@react-stately/form": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@react-stately/form/-/form-3.2.4.tgz", + "integrity": "sha512-qNBzun8SbLdgahryhKLqL1eqP+MXY6as82sVXYOOvUYLzgU5uuN8mObxYlxJgMI5akSdQJQV3RzyfVobPRE7Kw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/grid": { + "version": "3.11.9", + "resolved": "https://registry.npmjs.org/@react-stately/grid/-/grid-3.11.9.tgz", + "integrity": "sha512-qQY6F+27iZRn30dt0ZOrSetUmbmNJ0pLe9Weuqw3+XDVSuWT+2O/rO1UUYeK+mO0Acjzdv+IWiYbu9RKf2wS9w==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.12.10", + "@react-stately/selection": "^3.20.9", + "@react-types/grid": "^3.3.8", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/list": { + "version": "3.13.4", + "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.13.4.tgz", + "integrity": "sha512-HHYSjA9VG7FPSAtpXAjQyM/V7qFHWGg88WmMrDt5QDlTBexwPuH0oFLnW0qaVZpAIxuWIsutZfxRAnme/NhhAA==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.12.10", + "@react-stately/selection": "^3.20.9", + "@react-stately/utils": "^3.11.0", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/menu": { + "version": "3.9.11", + "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.9.11.tgz", + "integrity": "sha512-vYkpO9uV2OUecsIkrOc+Urdl/s1xw/ibNH/UXsp4PtjMnS6mK9q2kXZTM3WvMAKoh12iveUO+YkYCZQshmFLHQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/overlays": "^3.6.23", + "@react-types/menu": "^3.10.7", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/numberfield": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@react-stately/numberfield/-/numberfield-3.11.0.tgz", + "integrity": "sha512-rxfC047vL0LP4tanjinfjKAriAvdVL57Um5RUL5nHML8IOWCB3TBxegQkJ6to6goScC/oZhd0/Y2LSaiRuKbNw==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/number": "^3.6.5", + "@react-stately/form": "^3.2.4", + "@react-stately/utils": "^3.11.0", + "@react-types/numberfield": "^3.8.18", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/overlays": { + "version": "3.6.23", + "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.23.tgz", + "integrity": "sha512-RzWxots9A6gAzQMP4s8hOAHV7SbJRTFSlQbb6ly1nkWQXacOSZSFNGsKOaS0eIatfNPlNnW4NIkgtGws5UYzfw==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.11.0", + "@react-types/overlays": "^3.9.4", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/radio": { + "version": "3.11.5", + "resolved": "https://registry.npmjs.org/@react-stately/radio/-/radio-3.11.5.tgz", + "integrity": "sha512-QxA779S4ea5icQ0ja7CeiNzY1cj7c9G9TN0m7maAIGiTSinZl2Ia8naZJ0XcbRRp+LBll7RFEdekne15TjvS/w==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/form": "^3.2.4", + "@react-stately/utils": "^3.11.0", + "@react-types/radio": "^3.9.4", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/selection": { + "version": "3.20.9", + "resolved": "https://registry.npmjs.org/@react-stately/selection/-/selection-3.20.9.tgz", + "integrity": "sha512-RhxRR5Wovg9EVi3pq7gBPK2BoKmP59tOXDMh2r1PbnGevg/7TNdR67DCEblcmXwHuBNS46ELfKdd0XGHqmS8nQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.12.10", + "@react-stately/utils": "^3.11.0", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/slider": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.7.5.tgz", + "integrity": "sha512-OrQMNR5xamLYH52TXtvTgyw3EMwv+JI+1istQgEj1CHBjC9eZZqn5iNCN20tzm+uDPTH0EIGULFjjPIumqYUQg==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.11.0", + "@react-types/shared": "^3.33.1", + "@react-types/slider": "^3.8.4", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/table": { + "version": "3.15.4", + "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.15.4.tgz", + "integrity": "sha512-fGaNyw3wv7JgRCNzgyDzpaaTFuSy5f4Qekch4UheMXDJX7dOeaMhUXeOfvnXCVg+BGM4ey/D82RvDOGvPy1Nww==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.12.10", + "@react-stately/flags": "^3.1.2", + "@react-stately/grid": "^3.11.9", + "@react-stately/selection": "^3.20.9", + "@react-stately/utils": "^3.11.0", + "@react-types/grid": "^3.3.8", + "@react-types/shared": "^3.33.1", + "@react-types/table": "^3.13.6", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/tabs": { + "version": "3.8.9", + "resolved": "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.8.9.tgz", + "integrity": "sha512-AQ4Xrn6YzIolaVShCV9cnwOjBKPAOGP/PTp7wpSEtQbQ0HZzUDG2RG/M4baMeUB2jZ33b7ifXyPcK78o0uOftg==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/list": "^3.13.4", + "@react-types/shared": "^3.33.1", + "@react-types/tabs": "^3.3.22", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/toast": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@react-stately/toast/-/toast-3.1.3.tgz", + "integrity": "sha512-mT9QJKmD523lqFpOp0VWZ6QHZENFK7HrodnNJDVc7g616s5GNmemdlkITV43fSY3tHeThCVvPu+Uzh7RvQ9mpQ==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0", + "use-sync-external-store": "^1.6.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/toggle": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.9.5.tgz", + "integrity": "sha512-PVzXc788q3jH98Kvw1LYDL+wpVC14dCEKjOku8cSaqhEof6AJGaLR9yq+EF1yYSL2dxI6z8ghc0OozY8WrcFcA==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/utils": "^3.11.0", + "@react-types/checkbox": "^3.10.4", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/tooltip": { + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.5.11.tgz", + "integrity": "sha512-o8PnFXbvDCuVZ4Ht9ahfS6KHwIZjXopvoQ2vUPxv920irdgWEeC+4omgDOnJ/xFvcpmmJAmSsrQsTQrTguDUQA==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/overlays": "^3.6.23", + "@react-types/tooltip": "^3.5.2", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/tree": { + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.9.6.tgz", + "integrity": "sha512-JCuhGyX2A+PAMsx2pRSwArfqNFZJ9JSPkDaOQJS8MFPAsBe5HemvXsdmv9aBIMzlbCYcVq6EsrFnzbVVTBt/6w==", + "license": "Apache-2.0", + "dependencies": { + "@react-stately/collections": "^3.12.10", + "@react-stately/selection": "^3.20.9", + "@react-stately/utils": "^3.11.0", + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/utils": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.11.0.tgz", + "integrity": "sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/virtualizer": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@react-stately/virtualizer/-/virtualizer-4.4.6.tgz", + "integrity": "sha512-9SfXgLFB61/8SXNLfg5ARx9jAK4m03Aw6/Cg8mdZN24SYarL4TKNRpfw8K/HHVU/bi6WHSJypk6Z/z19o/ztrg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/accordion": { + "version": "3.0.0-alpha.26", + "resolved": "https://registry.npmjs.org/@react-types/accordion/-/accordion-3.0.0-alpha.26.tgz", + "integrity": "sha512-OXf/kXcD2vFlEnkcZy/GG+a/1xO9BN7Uh3/5/Ceuj9z2E/WwD55YwU3GFM5zzkZ4+DMkdowHnZX37XnmbyD3Mg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.27.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/breadcrumbs": { + "version": "3.7.19", + "resolved": "https://registry.npmjs.org/@react-types/breadcrumbs/-/breadcrumbs-3.7.19.tgz", + "integrity": "sha512-AnkyYYmzaM2QFi/N0P/kQLM8tHOyFi7p397B/jEMucXDfwMw5Ny1ObCXeIEqbh8KrIa2Xp8SxmQlCV+8FPs4LA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/link": "^3.6.7", + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/button": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.15.1.tgz", + "integrity": "sha512-M1HtsKreJkigCnqceuIT22hDJBSStbPimnpmQmsl7SNyqCFY3+DHS7y/Sl3GvqCkzxF7j9UTL0dG38lGQ3K4xQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/calendar": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/@react-types/calendar/-/calendar-3.8.3.tgz", + "integrity": "sha512-fpH6WNXotzH0TlKHXXxtjeLZ7ko0sbyHmwDAwmDFyP7T0Iwn1YQZ+lhceLifvynlxuOgX6oBItyUKmkHQ0FouQ==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.12.0", + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/checkbox": { + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.10.4.tgz", + "integrity": "sha512-tYCG0Pd1usEz5hjvBEYcqcA0youx930Rss1QBIse9TgMekA1c2WmPDNupYV8phpO8Zuej3DL1WfBeXcgavK8aw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/combobox": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.14.0.tgz", + "integrity": "sha512-zmSSS7BcCOD8rGT8eGbVy7UlL5qq1vm88fFn4WgFe+lfK33ne+E7yTzTxcPY2TCGSo5fY6xMj3OG79FfVNGbSg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/datepicker": { + "version": "3.13.5", + "resolved": "https://registry.npmjs.org/@react-types/datepicker/-/datepicker-3.13.5.tgz", + "integrity": "sha512-j28Vz+xvbb4bj7+9Xbpc4WTvSitlBvt7YEaEGM/8ZQ5g4Jr85H2KwkmDwjzmMN2r6VMQMMYq9JEcemq5wWpfUQ==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.12.0", + "@react-types/calendar": "^3.8.3", + "@react-types/overlays": "^3.9.4", + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/dialog": { + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@react-types/dialog/-/dialog-3.5.24.tgz", + "integrity": "sha512-NFurEP/zV0dA/41422lV1t+0oh6f/13n+VmLHZG8R13m1J3ql/kAXZ49zBSqkqANBO1ojyugWebk99IiR4pYOw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/overlays": "^3.9.4", + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/form": { + "version": "3.7.18", + "resolved": "https://registry.npmjs.org/@react-types/form/-/form-3.7.18.tgz", + "integrity": "sha512-0sBJW0+I9nJcF4SmKrYFEWAlehiebSTy7xqriqAXtqfTEdvzAYLGaAK2/7gx+wlNZeDTdW43CDRJ4XAhyhBqnw==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/grid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/@react-types/grid/-/grid-3.3.8.tgz", + "integrity": "sha512-zJvXH8gc1e1VH2H3LRnHH/W2HIkLkZMH3Cu5pLcj0vDuLBSWpcr3Ikh3jZ+VUOZF0G1Jt1lO8pKIaqFzDLNmLQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/link": { + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/@react-types/link/-/link-3.6.7.tgz", + "integrity": "sha512-1apXCFJgMC1uydc2KNENrps1qR642FqDpwlNWe254UTpRZn/hEZhA6ImVr8WhomfLJu672WyWA0rUOv4HT+/pQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/listbox": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/@react-types/listbox/-/listbox-3.7.6.tgz", + "integrity": "sha512-335NYElKEByXMalAmeRPyulKIDd2cjOCQhLwvv2BtxO5zaJfZnBbhZs+XPd9zwU6YomyOxODKSHrwbNDx+Jf3w==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/menu": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@react-types/menu/-/menu-3.10.7.tgz", + "integrity": "sha512-+p7ixZdvPDJZhisqdtWiiuJ9pteNfK5i19NB6wzAw5XkljbEzodNhwLv6rI96DY5XpbFso2kcjw7IWi+rAAGGQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/overlays": "^3.9.4", + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/numberfield": { + "version": "3.8.18", + "resolved": "https://registry.npmjs.org/@react-types/numberfield/-/numberfield-3.8.18.tgz", + "integrity": "sha512-nLzk7YAG9yAUtSv+9R8LgCHsu8hJq8/A+m1KsKxvc8WmNJjIujSFgWvT21MWBiUgPBzJKGzAqpMDDa087mltJQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/overlays": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.9.4.tgz", + "integrity": "sha512-7Z9HaebMFyYBqtv3XVNHEmVkm7AiYviV7gv0c98elEN2Co+eQcKFGvwBM9Gy/lV57zlTqFX1EX/SAqkMEbCLOA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/progress": { + "version": "3.5.18", + "resolved": "https://registry.npmjs.org/@react-types/progress/-/progress-3.5.18.tgz", + "integrity": "sha512-mKeQn+KrHr1y0/k7KtrbeDGDaERH6i4f6yBwj/ZtYDCTNKMO3tPHJY6nzF0w/KKZLplIO+BjUbHXc2RVm8ovwQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/radio": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.9.4.tgz", + "integrity": "sha512-TkMRY3sA1PcFZhhclu4IUzUTIir6MzNJj8h6WT8vO6Nug2kXJ72qigugVFBWJSE472mltduOErEAo0rtAYWbQA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/shared": { + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.33.1.tgz", + "integrity": "sha512-oJHtjvLG43VjwemQDadlR5g/8VepK56B/xKO2XORPHt9zlW6IZs3tZrYlvH29BMvoqC7RtE7E5UjgbnbFtDGag==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/slider": { + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/@react-types/slider/-/slider-3.8.4.tgz", + "integrity": "sha512-C+xFVvfKREai9S/ekBDCVaGPOQYkNUAsQhjQnNsUAATaox4I6IYLmcIgLmljpMQWqAe+gZiWsIwacRYMez2Tew==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/switch": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.5.17.tgz", + "integrity": "sha512-2GTPJvBCYI8YZ3oerHtXg+qikabIXCMJ6C2wcIJ5Xn0k9XOovowghfJi10OPB2GGyOiLBU74CczP5nx8adG90Q==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/table": { + "version": "3.13.6", + "resolved": "https://registry.npmjs.org/@react-types/table/-/table-3.13.6.tgz", + "integrity": "sha512-eluL+iFfnVmFm7OSZrrFG9AUjw+tcv898zbv+NsZACa8oXG1v9AimhZfd+Mo8q/5+sX/9hguWNXFkSvmTjuVPQ==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/grid": "^3.3.8", + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/tabs": { + "version": "3.3.22", + "resolved": "https://registry.npmjs.org/@react-types/tabs/-/tabs-3.3.22.tgz", + "integrity": "sha512-HGwLD9dA3k3AGfRKGFBhNgxU9/LyRmxN0kxVj1ghA4L9S/qTOzS6GhrGNkGzsGxyVLV4JN8MLxjWN2o9QHnLEg==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/textfield": { + "version": "3.12.8", + "resolved": "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.12.8.tgz", + "integrity": "sha512-wt6FcuE5AyntxsnPika/h3nf/DPmeAVbI018L9o6h+B/IL4sMWWdx663wx2KOOeHH8ejKGZQNPLhUKs4s1mVQA==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/tooltip": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.5.2.tgz", + "integrity": "sha512-FvSuZ2WP08NEWefrpCdBYpEEZh/5TvqvGjq0wqGzWg2OPwpc14HjD8aE7I3MOuylXkD4MSlMjl7J4DlvlcCs3Q==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/overlays": "^3.9.4", + "@react-types/shared": "^3.33.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@remix-run/router": { + "version": "1.23.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.2.tgz", + "integrity": "sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@swc/helpers": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.19.tgz", + "integrity": "sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.91.2", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.91.2.tgz", + "integrity": "sha512-Uz2pTgPC1mhqrrSGg18RKCWT/pkduAYtxbcyIyKBhw7dTWjXZIzqmpzO2lBkyWr4hlImQgpu1m1pei3UnkFRWw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/query-persist-client-core": { + "version": "5.94.5", + "resolved": "https://registry.npmjs.org/@tanstack/query-persist-client-core/-/query-persist-client-core-5.94.5.tgz", + "integrity": "sha512-ZOohchCU4bLgTS1PtOMEpUHECrNBisBYPnKBbfrMqKYAhMGH7C0v4W7SKt8oQBx5O2pX7mwvzmHrkJhhF4S+aA==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.94.5" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/query-persist-client-core/node_modules/@tanstack/query-core": { + "version": "5.94.5", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.94.5.tgz", + "integrity": "sha512-Vx1JJiBURW/wdNGP45afjrqn0LfxYwL7K/bSrQvNRtyLGF1bxQPgUXCpzscG29e+UeFOh9hz1KOVala0N+bZiA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/query-sync-storage-persister": { + "version": "5.94.5", + "resolved": "https://registry.npmjs.org/@tanstack/query-sync-storage-persister/-/query-sync-storage-persister-5.94.5.tgz", + "integrity": "sha512-iSPizrD+l6E2JA7guvhqtYnRB8ATtFtey3JTtBBz3BNR9woJokQKhDj/o8yxxT12gP9D7tavAgwLSFCTDbu2FA==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.94.5", + "@tanstack/query-persist-client-core": "5.94.5" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/query-sync-storage-persister/node_modules/@tanstack/query-core": { + "version": "5.94.5", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.94.5.tgz", + "integrity": "sha512-Vx1JJiBURW/wdNGP45afjrqn0LfxYwL7K/bSrQvNRtyLGF1bxQPgUXCpzscG29e+UeFOh9hz1KOVala0N+bZiA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.91.3", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.91.3.tgz", + "integrity": "sha512-D8jsCexxS5crZxAeiH6VlLHOUzmHOxeW5c11y8rZu0c34u/cy18hUKQXA/gn1Ila3ZIFzP+Pzv76YnliC0EtZQ==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.91.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@tanstack/react-query-persist-client": { + "version": "5.94.5", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-persist-client/-/react-query-persist-client-5.94.5.tgz", + "integrity": "sha512-EcxrI4EOPOoZnm6KUmYoKNhFuc4EpEonsNVBwkYlPFX5YoffwpCuzDYEzAl6uoKh1Cd6KSE5ugVxypfcEtFI4Q==", + "license": "MIT", + "dependencies": { + "@tanstack/query-persist-client-core": "5.94.5" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "@tanstack/react-query": "^5.94.5", + "react": "^18 || ^19" + } + }, + "node_modules/@tanstack/react-virtual": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.11.3.tgz", + "integrity": "sha512-vCU+OTylXN3hdC8RKg68tPlBPjjxtzon7Ys46MgrSLE+JhSjSTPvoQifV6DQJeJmA8Q3KT6CphJbejupx85vFw==", + "license": "MIT", + "dependencies": { + "@tanstack/virtual-core": "3.11.3" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@tanstack/virtual-core": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.11.3.tgz", + "integrity": "sha512-v2mrNSnMwnPJtcVqNvV0c5roGCBqeogN8jDtgtuHCphdwBasOZ17x8UV8qpHUh+u0MLfX43c0uUHKje0s+Zb0w==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.28.tgz", + "integrity": "sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.1.tgz", + "integrity": "sha512-Gn3aqnvNl4NGc6x3/Bqk1AOn0thyTU9bqDRhiRnUWezgvr2OnhYCWCgC8zXXRVqBsIL1pSDt7T9nJUe0oM0kDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.57.1", + "@typescript-eslint/type-utils": "8.57.1", + "@typescript-eslint/utils": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.57.1", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.57.1.tgz", + "integrity": "sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.57.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/typescript-estree": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.57.1.tgz", + "integrity": "sha512-vx1F37BRO1OftsYlmG9xay1TqnjNVlqALymwWVuYTdo18XuKxtBpCj1QlzNIEHlvlB27osvXFWptYiEWsVdYsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.57.1", + "@typescript-eslint/types": "^8.57.1", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.1.tgz", + "integrity": "sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.1.tgz", + "integrity": "sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.57.1.tgz", + "integrity": "sha512-+Bwwm0ScukFdyoJsh2u6pp4S9ktegF98pYUU0hkphOOqdMB+1sNQhIz8y5E9+4pOioZijrkfNO/HUJVAFFfPKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/typescript-estree": "8.57.1", + "@typescript-eslint/utils": "8.57.1", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.1.tgz", + "integrity": "sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.1.tgz", + "integrity": "sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.57.1", + "@typescript-eslint/tsconfig-utils": "8.57.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.1.tgz", + "integrity": "sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.57.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/typescript-estree": "8.57.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.1.tgz", + "integrity": "sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.57.1", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/autoprefixer": { + "version": "10.4.27", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz", + "integrity": "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001774", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.9", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.9.tgz", + "integrity": "sha512-OZd0e2mU11ClX8+IdXe3r0dbqMEznRiT4TfbhYIbcRPZkqJ7Qwer8ij3GZAmLsRKa+II9V1v5czCkvmHH3XZBg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001780", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001780.tgz", + "integrity": "sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color2k": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/color2k/-/color2k-2.0.3.tgz", + "integrity": "sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz", + "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "license": "MIT" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.321", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.321.tgz", + "integrity": "sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC" + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/framer-motion": { + "version": "11.18.2", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.18.2.tgz", + "integrity": "sha512-5F5Och7wrvtLVElIpclDT0CBzMVg3dL22B64aZwHtsIY8RB4mXICLrkajK4G9R+ieSAGcgrLeae2SeUTg2pr6w==", + "license": "MIT", + "dependencies": { + "motion-dom": "^11.18.1", + "motion-utils": "^11.18.1", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/input-otp": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/input-otp/-/input-otp-1.4.1.tgz", + "integrity": "sha512-+yvpmKYKHi9jIGngxagY9oWiiblPB7+nEO75F2l2o4vs+6vpPZZmUl4tBNYuTCvQjhvEIbdNeJu70bhfYP2nbw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/intl-messageformat": { + "version": "10.7.18", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.18.tgz", + "integrity": "sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g==", + "license": "BSD-3-Clause", + "dependencies": { + "@formatjs/ecma402-abstract": "2.3.6", + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/icu-messageformat-parser": "2.11.4", + "tslib": "^2.8.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", + "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/motion-dom": { + "version": "11.18.1", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-11.18.1.tgz", + "integrity": "sha512-g76KvA001z+atjfxczdRtw/RXOM3OMSdd1f4DL77qCTF/+avrRJiawSG4yDibEQ215sr9kpinSlX2pCTJ9zbhw==", + "license": "MIT", + "dependencies": { + "motion-utils": "^11.18.1" + } + }, + "node_modules/motion-utils": { + "version": "11.18.1", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-11.18.1.tgz", + "integrity": "sha512-49Kt+HKjtbJKLtgO/LKj9Ld+6vw9BjH5d9sc40R/kVyH8GLAXgT42M2NnuPcJNuA3s9ZfZBUcwIgpmZWGEE+hA==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.30.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.3.tgz", + "integrity": "sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.30.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.3.tgz", + "integrity": "sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.2", + "react-router": "6.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-textarea-autosize": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.9.tgz", + "integrity": "sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.13", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.0.10.tgz", + "integrity": "sha512-t44QCeDKAPf1mtQH3fYpWz8IM/DyvHLjs8wUvvwMYxk5moOqCzrMSxK6HQVD0QVmVjXFavoFIPRVrMuJPKAvtg==", + "license": "MIT", + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", + "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwind-merge": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.1.tgz", + "integrity": "sha512-Oo6tHdpZsGpkKG88HJ8RR1rg/RdnEkQEfMoEk2x1XRI3F1AxeU+ijRXpiVUF4UbLfcxxRGw6TbUINKYdWVsQTQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwind-variants": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-3.2.2.tgz", + "integrity": "sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==", + "license": "MIT", + "engines": { + "node": ">=16.x", + "pnpm": ">=7.x" + }, + "peerDependencies": { + "tailwind-merge": ">=3.0.0", + "tailwindcss": "*" + }, + "peerDependenciesMeta": { + "tailwind-merge": { + "optional": true + } + } + }, + "node_modules/tailwindcss": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", + "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-composed-ref": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.4.0.tgz", + "integrity": "sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.1.tgz", + "integrity": "sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.3.0.tgz", + "integrity": "sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==", + "license": "MIT", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..e585241 --- /dev/null +++ b/package.json @@ -0,0 +1,39 @@ +{ + "name": "romm-web-ui", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@heroui/react": "^2.8.10", + "@heroui/theme": "^2.4.26", + "@noriginmedia/norigin-spatial-navigation": "^3.0.0", + "@tanstack/query-sync-storage-persister": "^5.94.5", + "@tanstack/react-query": "^5.59.0", + "@tanstack/react-query-persist-client": "^5.94.5", + "clsx": "^2.1.1", + "framer-motion": "^11.5.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-router-dom": "^6.26.0", + "tailwind-merge": "^2.5.2" + }, + "devDependencies": { + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@typescript-eslint/eslint-plugin": "^8.0.1", + "@typescript-eslint/parser": "^8.0.1", + "@vitejs/plugin-react": "^4.3.1", + "autoprefixer": "^10.4.20", + "eslint": "^9.9.0", + "postcss": "^8.4.40", + "tailwindcss": "^3.4.15", + "typescript": "^5.5.3", + "vite": "^5.4.1" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/romm_swagger.json b/romm_swagger.json new file mode 100644 index 0000000000000000000000000000000000000000..4bfddf9f5fea6f45ef90292b6e049b1edd133a4b GIT binary patch literal 390364 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
    YkQ3c%1_JyeB(FJrkd7wX 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 literal 0 HcmV?d00001 diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..7e8bb04 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,53 @@ +import { Routes, Route, Navigate, Outlet } from 'react-router-dom'; +import { Sidebar } from './components/Sidebar'; +import { TopNav } from './components/TopNav'; +import LibraryGrid from './components/LibraryGrid'; +import { Login } from './components/Login'; +import { Settings } from './components/Settings'; +import { AuthProvider, useAuth } from './context/AuthContext'; +import { useGamepad } from './hooks/useGamepad'; + +const ProtectedRoute = ({ children }: { children: React.ReactNode }) => { + const { isAuthenticated } = useAuth(); + if (!isAuthenticated) { + return ; + } + return <>{children}; +}; + +const MainLayout = () => { + return ( +
    + + +
    + +
    +
    + ); +}; + +function App() { + useGamepad(); + + return ( + + + } /> + + + + } + > + } /> + } /> + + + + ); +} + +export default App; diff --git a/src/api/client.ts b/src/api/client.ts new file mode 100644 index 0000000..264f987 --- /dev/null +++ b/src/api/client.ts @@ -0,0 +1,182 @@ +export interface Game { + id: string; + title: string; + system: string; + coverUrl: string; + size: number; +} + +export interface RommCollection { + id: string; + name: string; + ownerRole: 'admin' | 'user'; + games: Game[]; + coverUrl?: string; // RomM collections can have intrinsic covers +} + +export interface UserProfile { + id: string; + username: string; + avatarUrl?: string; + roleName: string; +} + +// Function to safely extract base URL +const getBaseUrl = () => { + const rawUrl = import.meta.env.VITE_ROMM_BASE_URL || 'http://localhost:8080'; + const cleanUrl = rawUrl.endsWith('/') ? rawUrl.slice(0, -1) : rawUrl; + return cleanUrl; +}; + +// Function to handle external URLs directly mapped from SteamGrid or IGDB dynamically +const getFullImageUrl = (urlPath: string | undefined): string | undefined => { + if (!urlPath) return undefined; + if (urlPath.startsWith('http://') || urlPath.startsWith('https://') || urlPath.startsWith('//')) { + return urlPath; + } + const base = getBaseUrl(); + if (urlPath.startsWith('/') && base.endsWith('/')) { + return `${base.slice(0, -1)}${urlPath}`; + } else if (!urlPath.startsWith('/') && !base.endsWith('/')) { + return `${base}/${urlPath}`; + } + return `${base}${urlPath}`; +}; + +// Map RomM's native spec to our simplified app interface +const mapRomToGame = (apiRom: any): Game => { + let coverUrl = 'https://images.unsplash.com/photo-1550745165-9bc0b252726f?auto=format&fit=crop&q=80&w=400'; + + if (apiRom.url_cover) { + coverUrl = getFullImageUrl(apiRom.url_cover) || coverUrl; + } else if (apiRom.url_covers_large && apiRom.url_covers_large.length > 0) { + coverUrl = getFullImageUrl(apiRom.url_covers_large[0]) || coverUrl; + } + + return { + id: String(apiRom.id), + title: apiRom.name || apiRom.fs_name_no_ext || 'Unknown Title', + system: apiRom.platform_display_name || apiRom.platform_slug || 'Unknown Platform', + coverUrl, + size: apiRom.fs_size_bytes || 0 + }; +}; + +export const rommApiClient = { + get apiBase() { + const cleanUrl = getBaseUrl(); + return cleanUrl.endsWith('/api') ? cleanUrl : `${cleanUrl}/api`; + }, + + get token() { + return localStorage.getItem('romm_token'); + }, + + get headers() { + return { + 'Authorization': `Bearer ${this.token}`, + 'Accept': 'application/json' + }; + }, + + async login(username: string, password: string): Promise { + const data = new URLSearchParams(); + data.append('username', username); + data.append('password', password); + data.append('grant_type', 'password'); + // Ensure we request the explicit permissions RomM FastAPI needs + data.append('scope', 'me.read roms.read collections.read assets.read platforms.read'); + + const res = await fetch(`${this.apiBase}/token`, { + method: 'POST', + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + body: data + }); + + if (!res.ok) throw new Error('Authentication failed'); + const json = await res.json(); + localStorage.setItem('romm_token', json.access_token); + return json; + }, + + logout() { + localStorage.removeItem('romm_token'); + }, + + async fetchGames(): Promise { + // We use this as a stand-in for 'Continue Playing'. Fetching last played games. + const res = await fetch(`${this.apiBase}/roms?last_played=true&limit=10`, { headers: this.headers }); + if (!res.ok) throw new Error('Failed to fetch last played network data.'); + const json = await res.json(); + return json.items ? json.items.map(mapRomToGame) : []; + }, + + async fetchRecentGames(): Promise { + // Ordering by internal id desc is functionally identical to created_at logic natively + const res = await fetch(`${this.apiBase}/roms?limit=20&order_by=id&order_dir=desc`, { headers: this.headers }); + if (!res.ok) throw new Error('Failed to fetch recents.'); + const json = await res.json(); + return json.items ? json.items.map(mapRomToGame) : []; + }, + + async fetchFavorites(): Promise { + const res = await fetch(`${this.apiBase}/roms?favorite=true&limit=20`, { headers: this.headers }); + if (!res.ok) throw new Error('Failed to fetch favorites.'); + const json = await res.json(); + return json.items ? json.items.map(mapRomToGame) : []; + }, + + async fetchCollections(): Promise { + const res = await fetch(`${this.apiBase}/collections`, { headers: this.headers }); + if (!res.ok) throw new Error('Failed to fetch collections meta.'); + const collections = await res.json(); + + // Concurrently fetch the games arrays for each populated collection to supply UI with hydration + const mapped = await Promise.all(collections.map(async (c: any) => { + let gamesItems: Game[] = []; + try { + const gamesRes = await fetch(`${this.apiBase}/roms?collection_id=${c.id}&limit=20`, { headers: this.headers }); + if (gamesRes.ok) { + const gamesJson = await gamesRes.json(); + gamesItems = gamesJson.items ? gamesJson.items.map(mapRomToGame) : []; + } + } catch (e) { console.error("Could not fetch collection games", e) } + + const coverUrl = c.url_cover ? getFullImageUrl(c.url_cover) : undefined; + + // Currently extrapolating that public featured collections represent admin + let role: "admin" | "user" = "user"; + if (c.name.toLowerCase() === 'featured' && c.is_public) { + role = "admin"; + } + + return { + id: String(c.id), + name: c.name, + ownerRole: role, + games: gamesItems, + coverUrl + }; + })); + + return mapped; + }, + + async fetchCurrentUser(): Promise { + const res = await fetch(`${this.apiBase}/users/me`, { headers: this.headers }); + if (!res.ok) throw new Error('Failed to fetch user profile.'); + const json = await res.json(); + + // RomM obfuscates user assets using hex-encoded IDs (e.g. "User:1" -> "557365723a31") + const hexId = Array.from(`User:${json.id}`).map(c => c.charCodeAt(0).toString(16).padStart(2, '0')).join(''); + const ts = new Date().getTime(); // Auto-cache bust like official UI + const constructedAvatarUrl = `${getBaseUrl()}/assets/romm/assets/users/${hexId}/profile/avatar.png?ts=${ts}`; + + return { + id: String(json.id), + username: json.username || 'Unknown', + avatarUrl: constructedAvatarUrl, + roleName: json.role?.role_name || json.role?.name || String(json.role) || 'User', + }; + } +}; diff --git a/src/components/CollectionCard.tsx b/src/components/CollectionCard.tsx new file mode 100644 index 0000000..f7c952f --- /dev/null +++ b/src/components/CollectionCard.tsx @@ -0,0 +1,44 @@ +import { MagicCard } from "./MagicCard"; +import { useFocusableAutoScroll } from '../hooks/useFocusableAutoScroll'; + +export const CollectionCard = ({ + name, + caption, + coverUrl, + icon +}: { + name: string; + caption: string; + coverUrl?: string; + icon?: string; +}) => { + const { ref, focused } = useFocusableAutoScroll({ + onEnterPress: () => console.log('Opening collection', name) + }); + + return ( + +
    + {coverUrl ? ( + {name} + ) : ( + + {icon || 'inventory_2'} + + )} +
    + +
    +

    {name}

    +

    {caption}

    +
    +
    + ); +}; diff --git a/src/components/FeaturedHero.tsx b/src/components/FeaturedHero.tsx new file mode 100644 index 0000000..81c50f3 --- /dev/null +++ b/src/components/FeaturedHero.tsx @@ -0,0 +1,131 @@ +import { useState, useEffect } from 'react'; +import { useFocusableAutoScroll } from '../hooks/useFocusableAutoScroll'; +import { Game } from '../api/client'; + +const FocusablePoster = ({ coverUrl }: { coverUrl: string }) => { + const { ref, focused } = useFocusableAutoScroll(); + return ( +
    + Hero Poster +
    + ); +}; + +const FocusableButton = ({ children, onClick, className }: { children: React.ReactNode, onClick?: () => void, className?: string }) => { + const { ref, focused } = useFocusableAutoScroll({ onEnterPress: () => onClick?.() }); + return ( + + ); +}; + +const FocusableThumb = ({ g, isActive, onClick }: { g: Game, isActive: boolean, onClick: () => void }) => { + const { ref, focused } = useFocusableAutoScroll({ onEnterPress: onClick }); + return ( +
    + Thumbnail poster +
    + ); +}; + +export const FeaturedHero = ({ games, isFallback }: { games: Game[], isFallback?: boolean }) => { + const [currentIndex, setCurrentIndex] = useState(0); + const [isPaused, setIsPaused] = useState(false); + + useEffect(() => { + if (isPaused || !games?.length) return; + const interval = setInterval(() => { + setCurrentIndex((prev) => (prev + 1) % games.length); + }, 5000); + return () => clearInterval(interval); + }, [games, isPaused]); + + if (!games?.length) return null; + const game = games[currentIndex]; + + const formattedSize = (game.size / (1024 * 1024)).toFixed(2) + " MB"; + + return ( + + ); +}; diff --git a/src/components/GameCard.tsx b/src/components/GameCard.tsx new file mode 100644 index 0000000..6c37ec8 --- /dev/null +++ b/src/components/GameCard.tsx @@ -0,0 +1,31 @@ +import { MagicCard } from "./MagicCard"; +import { syncToPC } from "../utils/sync"; +import { Game } from "../api/client"; +import { useFocusableAutoScroll } from '../hooks/useFocusableAutoScroll'; + +export const GameCard = ({ game }: { game: Game }) => { + const { ref, focused } = useFocusableAutoScroll({ + onEnterPress: () => syncToPC(game.id, game.title) + }); + + return ( + syncToPC(game.id, game.title)} + > +
    + {game.title} +
    + +
    +

    {game.title}

    +

    {game.system}

    +
    +
    + ); +}; diff --git a/src/components/LibraryGrid.tsx b/src/components/LibraryGrid.tsx new file mode 100644 index 0000000..7ed76c8 --- /dev/null +++ b/src/components/LibraryGrid.tsx @@ -0,0 +1,185 @@ +import { useRef } from 'react'; +import { useQueries } from '@tanstack/react-query'; +import { FocusContext, useFocusable } from '@noriginmedia/norigin-spatial-navigation'; +import { useFocusableAutoScroll } from '../hooks/useFocusableAutoScroll'; +import { rommApiClient, Game } from '../api/client'; +import { GameCard } from './GameCard'; +import { CollectionCard } from './CollectionCard'; +import { FeaturedHero } from './FeaturedHero'; + +const ScrollBumper = ({ children }: { children: React.ReactNode }) => ( +
    + {children} +
    +); + +const ScrollableSection = ({ title, children, showViewAll }: { title: string, children: React.ReactNode, showViewAll?: boolean }) => { + const scrollRef = useRef(null); + + const scroll = (direction: 'left' | 'right') => { + if (scrollRef.current) { + const { current } = scrollRef; + const scrollAmount = direction === 'left' ? -current.offsetWidth * 0.75 : current.offsetWidth * 0.75; + current.scrollBy({ left: scrollAmount, behavior: 'smooth' }); + } + }; + + return ( +
    +
    +
    +

    {title}

    +
    + + +
    +
    + {showViewAll && View All} +
    +
    + {children} +
    +
    + ); +}; + +const FocusableContinueCard = ({ game }: { game: Game }) => { + const { ref, focused } = useFocusableAutoScroll({ onEnterPress: () => console.log("Continue Game", game.id) }); + return ( + +
    +
    + Cover +
    +
    +

    {game.title}

    +
    + 84% Complete + Active +
    +
    +
    +
    +
    +
    +
    + ); +}; + +const LibraryGrid = () => { + const { ref: gridRef, focusKey: gridFocusKey } = useFocusable(); + + const results = useQueries({ + queries: [ + { queryKey: ['recentGames'], queryFn: () => rommApiClient.fetchRecentGames() }, + { queryKey: ['collections'], queryFn: () => rommApiClient.fetchCollections() }, + { queryKey: ['favorites'], queryFn: () => rommApiClient.fetchFavorites() }, + { queryKey: ['playing'], queryFn: () => rommApiClient.fetchGames() } + ] + }); + + const isLoading = results.some(r => r.isLoading); + const error = results.some(r => r.error); + + if (isLoading) return
    Loading vault data...
    ; + if (error) return
    Failed to load vault data
    ; + + const recentGames = results[0].data || []; + const collections = results[1].data || []; + const favorites = results[2].data || []; + const continuePlaying = results[3].data || []; + + const featuredCollections = collections.filter((c) => c.name.toLowerCase() === 'featured'); + const combinedFeaturedGames = Array.from(new Map(featuredCollections.flatMap(c => c.games).map(g => [g.id, g])).values()); + + const hasFeatured = combinedFeaturedGames.length > 0; + const heroGames = hasFeatured ? combinedFeaturedGames : recentGames; + const showRecentSection = hasFeatured; + const standardCollections = collections.filter(c => c.name.toLowerCase() !== 'featured'); + + return ( + +
    + {heroGames.length > 0 && } + +
    + + {showRecentSection && recentGames.length > 0 && ( + + {recentGames.map((game) => ( + + + + ))} + + )} + + {continuePlaying.length > 0 && ( + + {continuePlaying.slice(0, 5).map((game) => ( + + ))} + + )} + + {favorites.length > 0 && ( + + {favorites.map((game) => ( + + + + ))} + + )} + + {standardCollections.length > 0 && ( + + {standardCollections.map((col) => { + const cover = col.games?.[0]?.coverUrl || ''; + const gamesCount = col.games?.length || 0; + const caption = gamesCount > 0 ? `${gamesCount} Game${gamesCount === 1 ? '' : 's'}` : (col.ownerRole === 'admin' ? 'Public' : 'Private'); + + return ( + + + + ); + })} + + )} + + {/* Autogenerated Collections */} + + {[ + { id: 'auto-1', name: 'All Games', icon: 'apps' }, + { id: 'auto-2', name: 'Favorites', icon: 'star' }, + { id: 'auto-3', name: 'Recently Added', icon: 'schedule' }, + { id: 'auto-4', name: 'Recently Played', icon: 'history' }, + { id: 'auto-5', name: 'Most Played', icon: 'leaderboard' }, + { id: 'auto-6', name: 'Never Played', icon: 'videogame_asset_off' }, + ].map((col) => ( + + + + ))} + + +
    +
    +
    + ); +}; + +export default LibraryGrid; diff --git a/src/components/Login.tsx b/src/components/Login.tsx new file mode 100644 index 0000000..0b407b3 --- /dev/null +++ b/src/components/Login.tsx @@ -0,0 +1,93 @@ +import { useState } from 'react'; +import { Input, Button } from '@heroui/react'; +import { MagicCard } from './MagicCard'; +import { useAuth } from '../context/AuthContext'; + +export const Login = () => { + const { login } = useAuth(); + const [username, setUsername] = useState(''); + const [password, setPassword] = useState(''); + const [error, setError] = useState(false); + const [isLoading, setIsLoading] = useState(false); + + const handleLogin = async (e: React.FormEvent) => { + e.preventDefault(); + if (username.length > 0 && password.length > 0) { + setIsLoading(true); + setError(false); + const success = await login(username, password); + if (!success) { + setError(true); + } + setIsLoading(false); + } + }; + + return ( +
    + {/* Background radial gradient glow for atmospheric depth */} +
    + + +
    +
    +

    {import.meta.env.VITE_LIBRARY_TITLE || "Romm"}

    +

    {import.meta.env.VITE_LIBRARY_SUBTITLE || "Game Manager"}

    +
    + +
    + person} + value={username} + onValueChange={setUsername} + /> + + lock} + value={password} + onValueChange={setPassword} + /> + {error && ( +

    Invalid credentials

    + )} +
    + + + +
    +
    + Or +
    +
    + + +
    +
    +
    + ); +}; diff --git a/src/components/MagicCard.tsx b/src/components/MagicCard.tsx new file mode 100644 index 0000000..9b8db02 --- /dev/null +++ b/src/components/MagicCard.tsx @@ -0,0 +1,69 @@ +import React, { useRef, useState, useImperativeHandle } from "react"; +import { motion } from "framer-motion"; +import { clsx, type ClassValue } from "clsx"; +import { twMerge } from "tailwind-merge"; + +function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} + +export interface MagicCardProps extends React.HTMLAttributes { + children: React.ReactNode; + className?: string; +} + +export const MagicCard = React.forwardRef( + ({ children, className = "", ...props }, ref) => { + const divRef = useRef(null); + const [isFocused, setIsFocused] = useState(false); + const [position, setPosition] = useState({ x: 0, y: 0 }); + const [opacity, setOpacity] = useState(0); + + useImperativeHandle(ref, () => divRef.current as HTMLDivElement); + + const handleMouseMove = (e: React.MouseEvent) => { + if (!divRef.current || isFocused) return; + const div = divRef.current; + const rect = div.getBoundingClientRect(); + setPosition({ x: e.clientX - rect.left, y: e.clientY - rect.top }); + }; + + const handleFocus = () => { + setIsFocused(true); + setOpacity(1); + }; + + const handleBlur = () => { + setIsFocused(false); + setOpacity(0); + }; + + const handleMouseEnter = () => setOpacity(1); + const handleMouseLeave = () => setOpacity(0); + + return ( +
    + + {children} +
    + ); + } +); diff --git a/src/components/Settings.tsx b/src/components/Settings.tsx new file mode 100644 index 0000000..80ed006 --- /dev/null +++ b/src/components/Settings.tsx @@ -0,0 +1,83 @@ +export const Settings = () => { + return ( +
    +
    + {/* Page Header */} +
    +

    Vault Console

    +

    Configure your library experience and server connections.

    +
    + + {/* Horizontal Tab Bar */} +
    + + + + + + +
    + +
    +
    +
    +
    + palette +

    Visual Identity

    +
    +
    + {/* Toggle: Dark Mode */} +
    +
    +

    Enable Dark Mode

    +

    Switch between obsidian and slate themes.

    +
    + +
    + {/* Toggle: Notifications */} +
    +
    +

    Show Notifications

    +

    Get alerts for scan completions and updates.

    +
    + +
    + {/* Toggle: Glassmorphism */} +
    +
    +

    Glassmorphism Effects

    +

    Enable translucent blurs and layered depth.

    +
    + +
    +
    +
    + + {/* Layout Preview Card */} +
    +
    +

    Interface Preview

    +

    Current: Ultra-Modern / Editorial

    +
    +
    +
    +
    +
    +
    + dashboard_customize +
    +
    +
    +
    +
    + ); +}; diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx new file mode 100644 index 0000000..c631562 --- /dev/null +++ b/src/components/Sidebar.tsx @@ -0,0 +1,90 @@ +import { useState, useEffect } from 'react'; +import { useQuery } from '@tanstack/react-query'; +import { Link, useLocation, useNavigate } from 'react-router-dom'; +import { useAuth } from '../context/AuthContext'; +import { rommApiClient } from '../api/client'; +import { FocusContext } from '@noriginmedia/norigin-spatial-navigation'; +import { useFocusableAutoScroll } from '../hooks/useFocusableAutoScroll'; + +export const Sidebar = () => { + const { logout } = useAuth(); + const { data: user } = useQuery({ queryKey: ['currentUser'], queryFn: () => rommApiClient.fetchCurrentUser() }); + const [imgError, setImgError] = useState(false); + const location = useLocation(); + const navigate = useNavigate(); + + // Create physical bounding box for Sidebar natively mapping navigation paths + const { ref: containerRef, focusKey: sidebarFocusKey } = useFocusableAutoScroll(); + + const fallbackName = user?.username || "Admin"; + const avatarFallback = `https://ui-avatars.com/api/?name=${encodeURIComponent(fallbackName)}&background=2563eb&color=fff&bold=true`; + const avatarUrl = !imgError && user?.avatarUrl ? user.avatarUrl : avatarFallback; + + const NavItem = ({ path, icon, label, autoFocus }: { path: string, icon: string, label: string, autoFocus?: boolean }) => { + const isActive = location.pathname === path || (path !== '/' && location.pathname.startsWith(path)); + const { ref, focused, focusSelf } = useFocusableAutoScroll({ + onEnterPress: () => navigate(path), + }); + + useEffect(() => { + if (autoFocus) { + focusSelf(); + } + }, [autoFocus, focusSelf]); + + return ( + + {icon} + {label} + + ); + }; + + return ( + + + + ); +}; diff --git a/src/components/TopNav.tsx b/src/components/TopNav.tsx new file mode 100644 index 0000000..8a13188 --- /dev/null +++ b/src/components/TopNav.tsx @@ -0,0 +1,51 @@ +import { useInputMode } from '../context/InputModeContext'; + +export const TopNav = () => { + const { mode } = useInputMode(); + return ( +
    +
    +
    + search + +
    + +
    +
    + account_tree + 12 Platforms +
    +
    + sports_esports + 1,402 Games +
    +
    + hard_drive + 2.4 TB +
    +
    + save + 842 Saves +
    +
    + history + 142 States +
    +
    + photo_library + 5,103 Screens +
    + +
    + + {/* Active Hardware Indicator */} +
    + + {mode === 'gamepad' ? 'sports_esports' : 'mouse'} + +
    +
    +
    +
    + ); +}; diff --git a/src/context/AuthContext.tsx b/src/context/AuthContext.tsx new file mode 100644 index 0000000..0247ae1 --- /dev/null +++ b/src/context/AuthContext.tsx @@ -0,0 +1,48 @@ +import { createContext, useContext, useState, ReactNode } from 'react'; +import { useNavigate } from 'react-router-dom'; + +import { rommApiClient } from '../api/client'; + +interface AuthContextType { + isAuthenticated: boolean; + login: (u: string, p: string) => Promise; + logout: () => void; +} + +const AuthContext = createContext(undefined); + +export const AuthProvider = ({ children }: { children: ReactNode }) => { + const [isAuthenticated, setIsAuthenticated] = useState(!!rommApiClient.token); + const navigate = useNavigate(); + + const login = async (user: string, pass: string) => { + try { + await rommApiClient.login(user, pass); + setIsAuthenticated(true); + navigate('/'); + return true; + } catch (e) { + console.error(e); + return false; + } + }; + + const logout = () => { + setIsAuthenticated(false); + navigate('/login'); + }; + + return ( + + {children} + + ); +}; + +export const useAuth = () => { + const context = useContext(AuthContext); + if (context === undefined) { + throw new Error('useAuth must be used within an AuthProvider'); + } + return context; +}; diff --git a/src/context/InputModeContext.tsx b/src/context/InputModeContext.tsx new file mode 100644 index 0000000..a481915 --- /dev/null +++ b/src/context/InputModeContext.tsx @@ -0,0 +1,60 @@ +import React, { createContext, useContext, useEffect, useState } from 'react'; + +type InputMode = 'mouse' | 'gamepad'; + +interface InputModeContextType { + mode: InputMode; + setMode: (mode: InputMode) => void; +} + +const InputModeContext = createContext(undefined); + +export const InputModeProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { + const [mode, setModeState] = useState('mouse'); + + const setMode = (newMode: InputMode) => { + if (newMode !== mode) { + setModeState(newMode); + } + }; + + useEffect(() => { + // Spatial Engine Override + if (mode === 'mouse') { + document.body.classList.remove('gamepad-active'); + } else { + document.body.classList.add('gamepad-active'); + } + }, [mode]); + + useEffect(() => { + const onMouseMove = () => { + setMode('mouse'); + }; + const onMouseDown = () => { + setMode('mouse'); + }; + + window.addEventListener('mousemove', onMouseMove, { passive: true }); + window.addEventListener('mousedown', onMouseDown, { passive: true }); + + return () => { + window.removeEventListener('mousemove', onMouseMove); + window.removeEventListener('mousedown', onMouseDown); + }; + }, []); + + return ( + + {children} + + ); +}; + +export const useInputMode = () => { + const context = useContext(InputModeContext); + if (context === undefined) { + throw new Error('useInputMode must be used within an InputModeProvider'); + } + return context; +}; diff --git a/src/hooks/useFocusableAutoScroll.ts b/src/hooks/useFocusableAutoScroll.ts new file mode 100644 index 0000000..78a24e6 --- /dev/null +++ b/src/hooks/useFocusableAutoScroll.ts @@ -0,0 +1,19 @@ +import { useEffect } from 'react'; +import { useFocusable, UseFocusableConfig } from '@noriginmedia/norigin-spatial-navigation'; +import { useInputMode } from '../context/InputModeContext'; + +export const useFocusableAutoScroll = (config?: UseFocusableConfig) => { + const result = useFocusable(config); + const { mode } = useInputMode(); + + useEffect(() => { + if (mode === 'gamepad' && result.focused && result.ref.current) { + result.ref.current.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' }); + } + }, [result.focused, mode]); + + return { + ...result, + focused: mode === 'gamepad' ? result.focused : false + }; +}; diff --git a/src/hooks/useGamepad.ts b/src/hooks/useGamepad.ts new file mode 100644 index 0000000..ef719ef --- /dev/null +++ b/src/hooks/useGamepad.ts @@ -0,0 +1,110 @@ +import { useEffect, useRef } from 'react'; +import { navigateByDirection } from '@noriginmedia/norigin-spatial-navigation'; +import { useInputMode } from '../context/InputModeContext'; + +const BUTTON_A = 0; +const BUTTON_B = 1; +const BUTTON_DPAD_UP = 12; +const BUTTON_DPAD_DOWN = 13; +const BUTTON_DPAD_LEFT = 14; +const BUTTON_DPAD_RIGHT = 15; +const AXIS_THRESHOLD = 0.5; +const INITIAL_DELAY_MS = 400; +const REPEAT_RATE_MS = 100; + +export const useGamepad = () => { + const requestRef = useRef(); + const lastState = useRef>({}); + const lastFireTime = useRef>({}); + const { setMode } = useInputMode(); + + const handleInput = (id: string, isPressed: boolean, action: () => void, repeatable = true) => { + const now = performance.now(); + const wasPressed = lastState.current[id]; + + if (isPressed) { + setMode('gamepad'); + if (!wasPressed) { + // Initial press isolated + action(); + lastFireTime.current[id] = now; + lastState.current[id] = true; + } else if (repeatable) { + // Holding press calculates repeat boundaries natively + const holdTime = now - lastFireTime.current[id]; + if (holdTime > INITIAL_DELAY_MS) { + action(); + // Reset tracker mathematically for consecutive rapid fires + lastFireTime.current[id] = now - INITIAL_DELAY_MS + REPEAT_RATE_MS; + } + } + } else { + if (wasPressed) { + lastFireTime.current[id] = 0; + lastState.current[id] = false; + } + } + }; + + const dispatchEnter = () => { + const eventParams = { bubbles: true, cancelable: true }; + const keydown = new window.KeyboardEvent('keydown', eventParams); + Object.defineProperty(keydown, 'keyCode', { get: () => 13 }); + Object.defineProperty(keydown, 'key', { get: () => 'Enter' }); + document.dispatchEvent(keydown); + window.dispatchEvent(keydown); + }; + + const dispatchEscape = () => { + const eventParams = { bubbles: true, cancelable: true }; + const keydown = new window.KeyboardEvent('keydown', eventParams); + Object.defineProperty(keydown, 'keyCode', { get: () => 27 }); + Object.defineProperty(keydown, 'key', { get: () => 'Escape' }); + document.dispatchEvent(keydown); + window.dispatchEvent(keydown); + }; + + const checkGamepad = () => { + try { + const gamepads = navigator.getGamepads ? navigator.getGamepads() : []; + + // Multiplex all gamepads to defeat Ghost Virtual Devices hogs natively occupying slot 0 + for (let i = 0; i < gamepads.length; i++) { + const gp = gamepads[i]; + if (!gp) continue; + + const up = gp.buttons[BUTTON_DPAD_UP]?.pressed || (gp.axes[1] !== undefined && gp.axes[1] < -AXIS_THRESHOLD); + const down = gp.buttons[BUTTON_DPAD_DOWN]?.pressed || (gp.axes[1] !== undefined && gp.axes[1] > AXIS_THRESHOLD); + const left = gp.buttons[BUTTON_DPAD_LEFT]?.pressed || (gp.axes[0] !== undefined && gp.axes[0] < -AXIS_THRESHOLD); + const right = gp.buttons[BUTTON_DPAD_RIGHT]?.pressed || (gp.axes[0] !== undefined && gp.axes[0] > AXIS_THRESHOLD); + const enter = gp.buttons[BUTTON_A]?.pressed; + const back = gp.buttons[BUTTON_B]?.pressed; + + handleInput(`gp${i}_up`, up, () => navigateByDirection('up', {})); + handleInput(`gp${i}_down`, down, () => navigateByDirection('down', {})); + handleInput(`gp${i}_left`, left, () => navigateByDirection('left', {})); + handleInput(`gp${i}_right`, right, () => navigateByDirection('right', {})); + handleInput(`gp${i}_enter`, enter, () => dispatchEnter(), false); + handleInput(`gp${i}_back`, back, () => dispatchEscape(), false); + } + } catch (e) { + console.error("Gamepad Polling Error", e); + } + + requestRef.current = requestAnimationFrame(checkGamepad); + }; + + useEffect(() => { + const onConnect = () => console.log("Gamepad Connected Native Callback!"); + const onDisconnect = () => console.log("Gamepad Disconnected Native Callback!"); + window.addEventListener("gamepadconnected", onConnect); + window.addEventListener("gamepaddisconnected", onDisconnect); + + requestRef.current = requestAnimationFrame(checkGamepad); + return () => { + if (requestRef.current) cancelAnimationFrame(requestRef.current); + window.removeEventListener("gamepadconnected", onConnect); + window.removeEventListener("gamepaddisconnected", onDisconnect); + }; + }, []); +}; diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..70eaa1a --- /dev/null +++ b/src/index.css @@ -0,0 +1,35 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + color-scheme: dark; + } +} + +body { + margin: 0; + min-height: 100vh; + background-color: #10131f; /* Adjusted to Stitch's deep charcoal */ + overflow: hidden; /* Prevent body scroll per Stitch design */ +} + +@layer utilities { + .no-scrollbar::-webkit-scrollbar { display: none; } + .no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; } + + body.gamepad-active { + cursor: none !important; + } + + body.gamepad-active * { + cursor: none !important; + } + + .geist-mono { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } + + .material-symbols-outlined { + font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24; + } +} diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..634ef7a --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,42 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import { HeroUIProvider } from '@heroui/react' +import { QueryClient } from '@tanstack/react-query' +import { PersistQueryClientProvider } from '@tanstack/react-query-persist-client' +import { createSyncStoragePersister } from '@tanstack/query-sync-storage-persister' +import { BrowserRouter } from 'react-router-dom' +import { init } from '@noriginmedia/norigin-spatial-navigation' +import { InputModeProvider } from './context/InputModeContext' +import App from './App.tsx' +import './index.css' + +init({ + debug: false, + visualDebug: false +}) + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + gcTime: 1000 * 60 * 60 * 24, // Keep offline disk cache for 24 hours for instant loading + }, + }, +}) + +const persister = createSyncStoragePersister({ + storage: window.localStorage, +}) + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + + + + + + + + + , +) diff --git a/src/utils/sync.ts b/src/utils/sync.ts new file mode 100644 index 0000000..c6404ec --- /dev/null +++ b/src/utils/sync.ts @@ -0,0 +1,32 @@ +export const syncToPC = async (gameId: string, title: string) => { + try { + if (!('showDirectoryPicker' in window)) { + alert("Your browser does not support the File System Access API. Please use a modern Chromium-based browser."); + return; + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const dirHandle = await (window as any).showDirectoryPicker(); + console.log(`Syncing ${title} (${gameId}) to`, dirHandle.name); + + // Placeholder logic for downloading unzipped files sequentially + const fileHandle = await dirHandle.getFileHandle(`${title.replace(/[^a-z0-9]/gi, '_')}.rom`, { create: true }); + const writable = await fileHandle.createWritable(); + + // In a real app, this would fetch the actual parts of the game + // and stream it to the writable. For now, writing a dummy buffer. + const dummyData = new TextEncoder().encode("DUMMY ROM DATA CONTENT - IMPLEMENT NATIVE FETCH HERE"); + await writable.write(dummyData); + await writable.close(); + + console.log(`Successfully synced ${title} to PC.`); + alert(`Successfully synced ${title} to PC.`); + } catch (err) { + if (err instanceof Error && err.name === 'AbortError') { + console.log('User cancelled the directory picker'); + } else { + console.error('Failed to sync directory:', err); + alert('Failed to sync to PC. See console for details.'); + } + } +}; diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..f122066 --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1,9 @@ +/// + +interface ImportMetaEnv { + readonly ROMM_BASE_URL: string +} + +interface ImportMeta { + readonly env: ImportMetaEnv +} diff --git a/stitch.html b/stitch.html new file mode 100644 index 0000000..f016ce3 --- /dev/null +++ b/stitch.html @@ -0,0 +1,448 @@ + + + + + +The Digital Atelier - Home + + + + + + + + + +
    +
    +
    +search + +
    + + +
    +
    + +
    + + + +
    + +
    +
    +

    Recently Added

    +View All +
    +
    +
    +
    + +
    +

    Lunar Colony

    +

    Strategy

    +
    +
    +
    + +
    +

    The Golem Project

    +

    Action

    +
    +
    +
    + +
    +

    Vector Prime

    +

    Arcade

    +
    +
    +
    + +
    +
    +

    Continue Playing

    +
    +
    +
    +
    + +
    +
    +

    Cyberpunk Reclamation

    +
    +84% Complete +Active +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +

    Favorites

    +View All +
    +
    +
    +
    + +
    +

    Cyberpunk Reclamation

    +

    RPG

    +
    +
    +
    + +
    +

    The Golem Project

    +

    Action

    +
    +
    +
    + +
    +

    Sunset Overdrive

    +

    Action

    +
    +
    +
    + +
    +
    +

    Collections

    +View All +
    +
    +
    +
    + +
    +

    Neon Noir

    +
    +
    +
    + +
    +

    Cyberpunk Classics

    +
    +
    +
    + +
    +

    Atmospheric Sims

    +
    +
    +
    + +
    +
    +

    Autogenerated Collections

    +
    +
    +
    +
    + +
    +

    Arcade Revival

    +
    +
    +
    + +
    +

    Deep Space Strategy

    +
    +
    +
    + +
    +

    Kinetic Combat

    +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/stitch_settings.html b/stitch_settings.html new file mode 100644 index 0000000..aa2b54d --- /dev/null +++ b/stitch_settings.html @@ -0,0 +1,310 @@ + + + + + + + + + + + + + + + + + + +
    +
    + +
    +

    Vault Console

    +

    Configure your library experience and server connections.

    +
    + +
    + + + + + + +
    + +
    + +
    +
    +
    +palette +

    Visual Identity

    +
    +
    + +
    +
    +

    Enable Dark Mode

    +

    Switch between obsidian and slate themes.

    +
    + +
    + +
    +
    +

    Show Notifications

    +

    Get alerts for scan completions and updates.

    +
    + +
    + +
    +
    +

    Glassmorphism Effects

    +

    Enable translucent blurs and layered depth.

    +
    + +
    +
    +
    + +
    +
    +

    Interface Preview

    +

    Current: Ultra-Modern / Editorial

    +
    +
    +
    +
    +
    +
    +dashboard_customize +
    +
    + +
    +
    +
    +cloud_sync +

    Connection & API

    +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + + +
    +

    Required for fetching high-resolution box art and historical metadata.

    +
    + +
    + + +
    +
    +
    +
    +
    + + +
    +
    + \ No newline at end of file diff --git a/tailwind.config.ts b/tailwind.config.ts new file mode 100644 index 0000000..18e4589 --- /dev/null +++ b/tailwind.config.ts @@ -0,0 +1,27 @@ +import type { Config } from "tailwindcss"; +import { heroui } from "@heroui/theme"; + +const config: Config = { + content: [ + "./index.html", + "./src/**/*.{js,ts,jsx,tsx}", + "./node_modules/@heroui/theme/dist/**/*.{js,ts,jsx,tsx}", + ], + theme: { + extend: { + animation: { + "background-position-spin": "background-position-spin 3000ms infinite alternate", + }, + keyframes: { + "background-position-spin": { + "0%": { backgroundPosition: "top center" }, + "100%": { backgroundPosition: "bottom center" }, + }, + }, + }, + }, + darkMode: "class", + plugins: [heroui()], +}; + +export default config; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..a7fc6fb --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..a535f7d --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..8fb94b5 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + envPrefix: ['VITE_', 'ROMM_'], + server: { + watch: { + usePolling: true, + }, + }, +})