diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 5bb7943..c907d4b 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -14,7 +14,7 @@ body: attributes: label: ProtonShift version description: "Check the app's About dialog or `electron/package.json`." - placeholder: "0.8.8" + placeholder: "0.9.5" validations: required: true diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index 70af96a..df0873e 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -42,6 +42,11 @@ jobs: org.electronjs.Electron2.BaseApp//24.08 - name: Install dependencies + env: + # @heroui-pro/react has a postinstall step that fetches the real dist + # from the HeroUI Pro registry. Without this token it stops at the + # skeleton package and the renderer build cannot resolve `@heroui-pro/react`. + HEROUI_AUTH_TOKEN: ${{ secrets.HEROUI_AUTH_TOKEN }} run: pnpm install --frozen-lockfile - name: Build Linux packages (AppImage, deb, rpm, flatpak) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0d266a3..850082e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,6 +32,28 @@ jobs: - name: Typecheck run: pyright + python-linux-distros: + name: Python (${{ matrix.label }}) + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - label: debian-bookworm + image: python:3.12-slim-bookworm + - label: alpine-musl + image: python:3.12-alpine + - label: ubuntu-24.04 + image: ubuntu:24.04 + steps: + - uses: actions/checkout@v6 + + - name: Run checks in container + env: + LINUX_MATRIX_IMAGE: ${{ matrix.image }} + CONTAINER_ENGINE: docker + run: bash scripts/ci/linux-matrix.sh + electron: name: Electron runs-on: ubuntu-latest @@ -52,6 +74,11 @@ jobs: cache-dependency-path: electron/pnpm-lock.yaml - name: Install dependencies + env: + # @heroui-pro/react has a postinstall step that fetches the real dist + # from the HeroUI Pro registry. Without this token it stops at the + # skeleton package and tsc cannot resolve `@heroui-pro/react`. + HEROUI_AUTH_TOKEN: ${{ secrets.HEROUI_AUTH_TOKEN }} run: pnpm install --frozen-lockfile - name: Typecheck (main) diff --git a/.gitignore b/.gitignore index 928c1e1..15c536d 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,9 @@ node_modules/ # Vendored Python wheels for packaged Electron (generated by pnpm run vendor-python) electron/python-vendor/ +# Bundled portable CPython runtime (generated by pnpm run fetch-python) +electron/python-runtime/ + # Build outputs — Electron electron/dist/ electron/out/ diff --git a/README.md b/README.md index afb1057..3aa80b0 100644 --- a/README.md +++ b/README.md @@ -242,7 +242,7 @@ flatpak install ProtonShift-*.flatpak flatpak run io.github.protonshift ``` -Official builds bundle the Python API stack (FastAPI, Uvicorn, VDF, etc.) beside the app. You only need **Python 3.12+** available as `python3` (the `.deb` already depends on it). +Official builds bundle a portable CPython 3.12 runtime *and* the Python API stack (FastAPI, Uvicorn, VDF, etc.) beside the app — so the only outside dependencies are the **game tools you actually want to manage** (Steam, Heroic, Lutris, MangoHud, Gamescope, Protontricks, GameMode). No `python3` or `python3-pydantic` needed on the host. --- diff --git a/assets/io.github.protonshift.metainfo.xml b/assets/io.github.protonshift.metainfo.xml index ec991ac..4279bd4 100644 --- a/assets/io.github.protonshift.metainfo.xml +++ b/assets/io.github.protonshift.metainfo.xml @@ -26,6 +26,7 @@ io.github.protonshift.desktop https://github.com/I4cTime/protonshift + diff --git a/docs/python-review.md b/docs/internal/python-review.md similarity index 100% rename from docs/python-review.md rename to docs/internal/python-review.md diff --git a/electron/main.ts b/electron/main.ts index 27330f4..62ee4c7 100644 --- a/electron/main.ts +++ b/electron/main.ts @@ -63,6 +63,11 @@ const EXTRA_PATH_DIRS = [ function getPythonCommand(port: number): { cmd: string; args: string[]; env: NodeJS.ProcessEnv } { const env = { ...process.env }; + // Packaged trees (especially AppImages) live on read-only mounts; bytecode + // writes beside shipped *.py would raise PermissionError and exit before /health. + if (!isDev) { + env.PYTHONDONTWRITEBYTECODE = "1"; + } // Immutable distros (Bazzite, SteamOS, Fedora Atomic) and AppImage // wrappers can strip PATH entries. Ensure common locations are present. if (env.PATH && !env.PATH.includes("/var/usrlocal/bin")) { @@ -89,6 +94,7 @@ function getPythonCommand(port: number): { cmd: string; args: string[]; env: Nod const resourcesPath = process.resourcesPath; const srcDir = path.join(resourcesPath, "python", "src"); const vendorDir = path.join(resourcesPath, "python", "vendor"); + const bundledPython = path.join(resourcesPath, "python", "runtime", "bin", "python3"); const pyPathParts: string[] = []; if (fs.existsSync(vendorDir)) { pyPathParts.push(vendorDir); @@ -98,11 +104,28 @@ function getPythonCommand(port: number): { cmd: string; args: string[]; env: Nod pyPathParts.push(env.PYTHONPATH); } env.PYTHONPATH = pyPathParts.join(":"); - // CPython treats PYTHONNOUSERSITE as truthy if the variable is *present*, - // even when empty. Setting it to "" disables user site-packages — the - // opposite of what we want. Unset it so user site-packages stay enabled - // and `_vendor_compat` can fall back to system pydantic_core if the - // vendored .so is ABI-incompatible with the runtime Python. + + // Prefer the bundled interpreter (python-build-standalone). It is ABI-locked + // to our vendored wheels, so pydantic_core etc. always loads cleanly. + if (fs.existsSync(bundledPython)) { + // Ignore any user-site noise from the host Python install — we own this + // interpreter and the wheels live entirely under /resources/python. + env.PYTHONNOUSERSITE = "1"; + // Make the bundled libpython resolvable for any subprocess we exec. + const bundledLib = path.join(resourcesPath, "python", "runtime", "lib"); + env.LD_LIBRARY_PATH = env.LD_LIBRARY_PATH + ? `${bundledLib}:${env.LD_LIBRARY_PATH}` + : bundledLib; + return { + cmd: bundledPython, + args: ["-m", "game_setup_hub.api", "--port", portArg], + env, + }; + } + + // Defensive fallback: if the runtime dir is missing (e.g. user manually + // unpacked just the python/src subset), fall back to system python3 and let + // _vendor_compat sort out ABI drift. delete env.PYTHONNOUSERSITE; return { cmd: "python3", @@ -120,6 +143,8 @@ async function startPython(): Promise { return new Promise((resolve, reject) => { pythonProcess = spawn(cmd, args, { env, stdio: ["pipe", "pipe", "pipe"] }); + let stderrTail = ""; + const timeout = setTimeout(() => { reject(new Error("Python backend did not start within 15 seconds")); }, 15000); @@ -130,7 +155,9 @@ async function startPython(): Promise { }); pythonProcess.stderr?.on("data", (data: Buffer) => { - console.error("[python]", data.toString().trim()); + const chunk = data.toString(); + stderrTail = (stderrTail + chunk).slice(-6000); + console.error("[python]", chunk.trimEnd()); }); pythonProcess.on("error", (err) => { @@ -141,7 +168,8 @@ async function startPython(): Promise { pythonProcess.on("exit", (code) => { if (code !== null && code !== 0) { clearTimeout(timeout); - reject(new Error(`Python exited with code ${code}`)); + const hint = stderrTail.trim() ? `\n${stderrTail.trim()}` : ""; + reject(new Error(`Python exited with code ${code}${hint}`)); } pythonProcess = null; }); @@ -214,7 +242,20 @@ function mimeFor(filePath: string): string { return map[ext] ?? "application/octet-stream"; } -/** Serves Next static export over http://127.0.0.1 — root-relative /_next/... URLs do not work with file:// */ +/** Serves Next static export over http://127.0.0.1 — root-relative /_next/... URLs do not work with file://. + * Detects RSC requests (Next App Router client-side navigation) and serves the + * matching .txt payload Next writes alongside each .html during `output: "export"`. + * Without this, clicking nav links produced an HTML response that the router + * could not parse, so the URL changed but the page did not switch. */ +function isRscRequest(req: http.IncomingMessage): boolean { + const h = req.headers; + if (h["rsc"] === "1" || h["rsc"] === "true") return true; + if (typeof h["next-router-prefetch"] !== "undefined") return true; + if (typeof h["next-router-segment-prefetch"] !== "undefined") return true; + if (typeof h["next-router-state-tree"] !== "undefined") return true; + return false; +} + function startStaticRendererServer(rootDir: string): Promise { const root = path.resolve(rootDir); return new Promise((resolve, reject) => { @@ -234,10 +275,20 @@ function startStaticRendererServer(rootDir: string): Promise { } const rel = pathname.replace(/^\/+/, ""); const rootResolved = path.resolve(root); + const rsc = isRscRequest(req); + const hasExt = path.extname(rel) !== ""; const candidates: string[] = []; if (rel === "" || rel === "/") { + if (rsc) candidates.push(path.join(rootResolved, "index.txt")); candidates.push(path.join(rootResolved, "index.html")); + } else if (rsc && !hasExt) { + candidates.push( + path.join(rootResolved, `${rel}.txt`), + path.join(rootResolved, rel, "index.txt"), + path.join(rootResolved, `${rel}.html`), + path.join(rootResolved, rel, "index.html"), + ); } else { candidates.push( path.join(rootResolved, rel), @@ -264,10 +315,13 @@ function startStaticRendererServer(rootDir: string): Promise { } const body = fs.readFileSync(found); + const ext = path.extname(found).toLowerCase(); + const contentType = rsc && ext === ".txt" ? "text/x-component" : mimeFor(found); res.writeHead(200, { - "Content-Type": mimeFor(found), + "Content-Type": contentType, "Content-Length": String(body.length), "Cache-Control": "no-store", + Vary: "RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Router-Segment-Prefetch", }); res.end(body); } catch { @@ -291,9 +345,9 @@ function startStaticRendererServer(rootDir: string): Promise { function createWindow(): void { mainWindow = new BrowserWindow({ - width: 1200, + width: 1400, height: 800, - minWidth: 900, + minWidth: 960, minHeight: 600, title: "ProtonShift", icon: getIconPath(), @@ -309,7 +363,9 @@ function createWindow(): void { if (isDev) { mainWindow.loadURL("http://localhost:3000"); - mainWindow.webContents.openDevTools({ mode: "detach" }); + if (process.env.PROTONSHIFT_DEVTOOLS === "1") { + mainWindow.webContents.openDevTools({ mode: "detach" }); + } } else if (staticRendererPort) { mainWindow.loadURL(`http://127.0.0.1:${staticRendererPort}/`); } else { @@ -323,6 +379,8 @@ function createWindow(): void { ipcMain.handle("get-api-port", () => apiPort); +ipcMain.handle("get-app-version", () => app.getVersion()); + ipcMain.handle("window-close", () => { mainWindow?.close(); }); diff --git a/electron/package.json b/electron/package.json index 6084a01..133f48a 100644 --- a/electron/package.json +++ b/electron/package.json @@ -1,15 +1,17 @@ { "name": "protonshift", - "version": "0.9.0", + "version": "0.9.5", "description": "Linux game configuration toolkit", "main": "dist/main.js", "scripts": { "dev": "concurrently \"pnpm --filter protonshift-renderer dev\" \"pnpm run dev:electron\"", "dev:electron": "tsc && electron . --log-level=1", + "dev:electron:debug": "tsc && PROTONSHIFT_DEVTOOLS=1 electron . --log-level=1", "build:renderer": "pnpm --filter protonshift-renderer build", "build:electron": "tsc", "build": "pnpm run build:renderer && pnpm run build:electron", - "vendor-python": "bash scripts/vendor-python-deps.sh", + "fetch-python": "bash scripts/fetch-python.sh", + "vendor-python": "pnpm run fetch-python && bash scripts/vendor-python-deps.sh", "dist": "pnpm run vendor-python && pnpm run build && electron-builder --publish never", "dist:appimage": "pnpm run vendor-python && pnpm run build && electron-builder --linux AppImage --publish never", "dist:deb": "pnpm run vendor-python && pnpm run build && electron-builder --linux deb --publish never", @@ -18,7 +20,13 @@ }, "packageManager": "pnpm@10.32.1", "pnpm": { - "onlyBuiltDependencies": ["electron", "sharp", "electron-winstaller"] + "onlyBuiltDependencies": [ + "electron", + "sharp", + "electron-winstaller", + "@heroui-pro/react", + "heroui-pro" + ] }, "dependencies": { "electron-is-dev": "^3.0.1" @@ -70,6 +78,21 @@ "from": "python-vendor", "to": "python/vendor", "filter": ["**/*"] + }, + { + "from": "python-runtime", + "to": "python/runtime", + "filter": [ + "**/*", + "!bin/pip*", + "!bin/pydoc*", + "!bin/idle*", + "!bin/python*-config", + "!lib/python*/site-packages/pip", + "!lib/python*/site-packages/pip-*.dist-info", + "!share/man/**", + "!share/doc/**" + ] } ], "linux": { @@ -85,11 +108,11 @@ } }, "deb": { - "depends": ["python3 (>= 3.12)", "python3-pydantic"], + "depends": [], "maintainer": "I4cTime " }, "rpm": { - "depends": ["python3 >= 3.12", "python3-pydantic"], + "depends": [], "fpm": ["--rpm-summary", "Linux game configuration toolkit"] }, "flatpak": { diff --git a/electron/pnpm-lock.yaml b/electron/pnpm-lock.yaml index 8a99c94..045f4a5 100644 --- a/electron/pnpm-lock.yaml +++ b/electron/pnpm-lock.yaml @@ -29,18 +29,24 @@ importers: renderer: dependencies: + '@heroui-pro/react': + specifier: 1.0.0-beta.3 + version: 1.0.0-beta.3 '@heroui/react': specifier: latest - version: 3.0.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2) + version: 3.0.4(@react-spectrum/provider@3.11.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2) '@heroui/styles': specifier: latest - version: 3.0.2(tailwind-merge@3.4.0)(tailwindcss@4.2.2) + version: 3.0.4(tailwind-merge@3.4.0)(tailwindcss@4.2.2) + '@number-flow/react': + specifier: ^0.5.10 + version: 0.5.14(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@tanstack/react-query': specifier: ^5.75.0 version: 5.97.0(react@19.2.5) jotai: specifier: ^2.12.0 - version: 2.19.1(@types/react@19.2.14)(react@19.2.5) + version: 2.19.1(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@19.2.14)(react@19.2.5) lucide-react: specifier: ^0.475.0 version: 0.475.0(react@19.2.5) @@ -49,13 +55,28 @@ importers: version: 12.38.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) next: specifier: ^16.2.3 - version: 16.2.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 16.2.3(@babel/core@7.29.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: specifier: ^19.1.0 version: 19.2.5 + react-aria-components: + specifier: ^1.17.0 + version: 1.17.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react-dom: specifier: ^19.1.0 version: 19.2.5(react@19.2.5) + react-resizable-panels: + specifier: ^4.10.0 + version: 4.11.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + recharts: + specifier: ^2.15.4 + version: 2.15.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + tailwind-merge: + specifier: ^3.4.0 + version: 3.4.0 + tailwind-variants: + specifier: ^3.2.0 + version: 3.2.2(tailwind-merge@3.4.0)(tailwindcss@4.2.2) devDependencies: '@tailwindcss/postcss': specifier: ^4.1.0 @@ -69,6 +90,12 @@ importers: '@types/react-dom': specifier: ^19.1.0 version: 19.2.3(@types/react@19.2.14) + eslint: + specifier: ^9.39.4 + version: 9.39.4(jiti@2.6.1) + eslint-config-next: + specifier: ^16.2.6 + version: 16.2.6(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) tailwindcss: specifier: ^4.1.0 version: 4.2.2 @@ -81,10 +108,105 @@ packages: 7zip-bin@5.2.0: resolution: {integrity: sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==} + '@adobe/react-spectrum-ui@1.2.1': + resolution: {integrity: sha512-wcrbEE2O/9WnEn6avBnaVRRx88S5PLFsPLr4wffzlbMfXeQsy+RMQwaJd3cbzrn18/j04Isit7f7Emfn0dhrJA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@adobe/react-spectrum-workflow@2.3.5': + resolution: {integrity: sha512-b53VIPwPWKb/T5gzE3qs+QlGP5gVrw/LnWV3xMksDU+CRl3rzOKUwxIGiZO8ICyYh1WiyqY4myGlPU/nAynBUg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@adobe/react-spectrum@3.47.0': + resolution: {integrity: sha512-EDQuMzz0kUeiMUUlxoeLFQyyxOXaAC7qlBw2PYOUfFLYd87xcV7VVV0JxiYx8zGk1IIY3UgQHgXrS1fv7CgezQ==} + 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 + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.3': + resolution: {integrity: sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.3': + resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} + + '@clack/core@1.1.0': + resolution: {integrity: sha512-SVcm4Dqm2ukn64/8Gub2wnlA5nS2iWJyCkdNHcvNHPIeBTGojpdJ+9cZKwLfmqy7irD4N5qLteSilJlE0WLAtA==} + + '@clack/prompts@1.1.0': + resolution: {integrity: sha512-pkqbPGtohJAvm4Dphs2M8xE29ggupihHdy1x84HNojZuMtFsHiUlRvqD24tM2+XmI+61LlfNceM3Wr7U5QES5g==} + '@develar/schema-utils@2.6.5': resolution: {integrity: sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==} engines: {node: '>= 8.9.0'} @@ -129,9 +251,53 @@ packages: engines: {node: '>=14.14'} hasBin: true + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + '@emnapi/runtime@1.9.2': resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.21.2': + resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.5': + resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.39.4': + resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@formatjs/ecma402-abstract@2.3.6': resolution: {integrity: sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw==} @@ -147,18 +313,41 @@ packages: '@formatjs/intl-localematcher@0.6.2': resolution: {integrity: sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==} - '@heroui/react@3.0.2': - resolution: {integrity: sha512-HWcYFurH+OnLITgIvQKyCd6BhYLApyzg0qqL3T5xemK5hgo1Nr+wQGQ5JSNVfBAmF4tWSS9TOzr24UHEO+21Ww==} + '@heroui-pro/react@1.0.0-beta.3': + resolution: {integrity: sha512-DVvi+4X1jFNpf174yA7MyfXaD8gDPYdTuNJo+iVswnePWS6Xn/Vtx181OFSUOcytmCipenYKY8reuuBDDrUzVw==} + + '@heroui/react@3.0.4': + resolution: {integrity: sha512-6y6aXZ9v8W/dNDKA3yP0+VnY3OQUeg8164YnOXVaFd1U8+WbXka1hwPgi3PK/qmMv8W81SdiVnmEZUXjHbXpfw==} peerDependencies: react: '>=19.0.0' react-dom: '>=19.0.0' tailwindcss: '>=4.0.0' - '@heroui/styles@3.0.2': - resolution: {integrity: sha512-UGohTT5WVgVUqosujtUegGevtNkmKLi/V29+zhT4a1lwCQxY5sD2PMtInk1ImBSqtxzfrb5uPoxySb5v1LptYQ==} + '@heroui/styles@3.0.4': + resolution: {integrity: sha512-3zi0cu8PPmMbUdRg7AO486w9uA7ZHuV6m8ab23RQHChJ97q3s/tM13r74l7A963Dif+0ZWpQRiicsUvWuaAcDg==} peerDependencies: tailwindcss: '>=4.0.0' + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} + engines: {node: '>=18.18.0'} + + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + '@img/colour@1.1.0': resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} @@ -312,17 +501,17 @@ packages: cpu: [x64] os: [win32] - '@internationalized/date@3.12.0': - resolution: {integrity: sha512-/PyIMzK29jtXaGU23qTvNZxvBXRtKbNnGDFD+PY6CZw/Y8Ex8pFUzkuCJCG9aOqmShjqhS9mPqP6Dk5onQY8rQ==} + '@internationalized/date@3.12.1': + resolution: {integrity: sha512-6IedsVWXyq4P9Tj+TxuU8WGWM70hYLl12nbYU8jkikVpa6WXapFazPUcHUMDMoWftIDE2ILDkFFte6W2nFCkRQ==} - '@internationalized/message@3.1.8': - resolution: {integrity: sha512-Rwk3j/TlYZhn3HQ6PyXUV0XP9Uv42jqZGNegt0BXlxjE6G3+LwHjbQZAGHhCnCPdaA6Tvd3ma/7QzLlLkJxAWA==} + '@internationalized/message@3.1.9': + resolution: {integrity: sha512-x03MSVTaB/4JHtW1VAYaY/2cCuBrHbWM6ZvlgpKdnSdW28tZbqpR673RJrVJyXWRw1bpgYN89Tz7ohX5tgNgPA==} - '@internationalized/number@3.6.5': - resolution: {integrity: sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g==} + '@internationalized/number@3.6.6': + resolution: {integrity: sha512-iFgmQaXHE0vytNfpLZWOC2mEJCBRzcUxt53Xf/yCXG93lRvqas237i3r7X4RKMwO3txiyZD4mQjKAByFv6UGSQ==} - '@internationalized/string@3.2.7': - resolution: {integrity: sha512-D4OHBjrinH+PFZPvfCXvG28n2LSykWcJ7GIioQL+ok0LON15SdfoUssoHzzOUmVZLbRoREsQXVzA6r8JKsbP6A==} + '@internationalized/string@3.2.8': + resolution: {integrity: sha512-NdbMQUSfXLYIQol5VyMtinm9pZDciiMfN7RtmSuSB78io1hqwJ0naYfxyW6vgxWBkzWymQa/3uLDlbfmshtCaA==} '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -356,9 +545,15 @@ packages: resolution: {integrity: sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==} engines: {node: '>= 10.0.0'} + '@napi-rs/wasm-runtime@0.2.12': + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + '@next/env@16.2.3': resolution: {integrity: sha512-ZWXyj4uNu4GCWQw9cjRxWlbD+33mcDszIo9iQxFnBX3Wmgq9ulaSJcl6VhuWx5pCWqqD+9W6Wfz7N0lM5lYPMA==} + '@next/eslint-plugin-next@16.2.6': + resolution: {integrity: sha512-Z8l6o4JWKUl755x4R+wogD86KPeU+Ckw4K+SYG4kHeOJtRenDeK+OSbGcqZpDtbwn9DsJVdir2UxmwXuinUbUw==} + '@next/swc-darwin-arm64@16.2.3': resolution: {integrity: sha512-u37KDKTKQ+OQLvY+z7SNXixwo4Q2/IAJFDzU1fYe66IbCE51aDSAzkNDkWmLN0yjTUh4BKBd+hb69jYn6qqqSg==} engines: {node: '>= 10'} @@ -411,6 +606,22 @@ packages: cpu: [x64] os: [win32] + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + '@npmcli/agent@3.0.0': resolution: {integrity: sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==} engines: {node: ^18.17.0 || >=20.5.0} @@ -419,6 +630,12 @@ packages: resolution: {integrity: sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==} engines: {node: ^18.17.0 || >=20.5.0} + '@number-flow/react@0.5.14': + resolution: {integrity: sha512-FGUqjh/P5/ukr0U0ySwb987M0SbRkrnZq70f0wQFncDbXa3SIib4L+FTr5ngvWwGAW8S6b391eTXcfhErZsw4w==} + peerDependencies: + react: ^18 || ^19 + react-dom: ^18 || ^19 + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -503,800 +720,550 @@ packages: '@types/react': optional: true - '@react-aria/autocomplete@3.0.0-rc.6': - resolution: {integrity: sha512-uymUNJ8NW+dX7lmgkHE+SklAbxwktycAJcI5lBBw6KPZyc0EdMHC+/Fc5CUz3enIAhNwd2oxxogcSHknquMzQA==} - 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 - - '@react-aria/breadcrumbs@3.5.32': - resolution: {integrity: sha512-S61vh5DJ2PXiXUwD7gk+pvS/b4VPrc3ZJOUZ0yVRLHkVESr5LhIZH+SAVgZkm1lzKyMRG+BH+fiRH/DZRSs7SA==} + '@react-aria/color@3.2.0': + resolution: {integrity: sha512-Qw1TySxXnGlE4L7kzsi8v86U1yFs9FtonqsbySFzLPzsMV1Oar+rtkYHI5vwNSyNNF6TBJJikJNocS9Fi8xXwA==} 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 - '@react-aria/button@3.14.5': - resolution: {integrity: sha512-ZuLx+wQj9VQhH9BYe7t0JowmKnns2XrFHFNvIVBb5RwxL+CIycIOL7brhWKg2rGdxvlOom7jhVbcjSmtAaSyaQ==} + '@react-aria/i18n@3.13.0': + resolution: {integrity: sha512-APjw4EwmvlnIyDxixSWfjHvOFFkW2rVTyKZ4l9FV0v7hOerh+FWLE6mF1XnnX3pgz3yARkKWwhSR9xYcRK6tpg==} 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 - '@react-aria/calendar@3.9.5': - resolution: {integrity: sha512-k0kvceYdZZu+DoeqephtlmIvh1CxqdFyoN52iqVzTz9O0pe5Xfhq7zxPGbeCp4pC61xzp8Lu/6uFA/YNfQQNag==} + '@react-aria/ssr@3.10.0': + resolution: {integrity: sha512-mnelvACtfNWWKFCT1YHebxJRmfBmmANGwHQhCFPByMVTx1L8RumcaLxChYkE87g2KPuP5xX2il/oRn1DytW+qQ==} + engines: {node: '>= 12'} 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 - '@react-aria/checkbox@3.16.5': - resolution: {integrity: sha512-ZhUT7ELuD52hb+Zpzw0ElLQiVOd5sKYahrh+PK3vq13Wk5TedBscALpjuXetI4pwFfdmAM1Lhgcsrd8+6AmyvA==} + '@react-aria/utils@3.34.0': + resolution: {integrity: sha512-ZM1ZXIqpwGTJjjL6o3JhlZkEaBpQdxuOCqLEvwEwooaj5GsYI3E9UfOl5vy3UW6bYiEEWl9pNBntrb9CR9kItQ==} 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 - '@react-aria/collections@3.0.3': - resolution: {integrity: sha512-lbC5DEbHeVFvVr4ke9y8D9Nynnr8G8UjVEBoFGRylpAaScU7SX1TN84QI+EjMbsdZ0/5P2H7gUTS+MYd+6U3Rg==} + '@react-spectrum/color@3.2.0': + resolution: {integrity: sha512-Xg/U8+l1CQdvPRF4Zrv7AvtqsjuYUNkMxJMG0cIug9RKtIfEoyh7VR4Xg3FNd4Y/AwKXNJZZN4l94qz4WlK23Q==} 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 - '@react-aria/color@3.1.5': - resolution: {integrity: sha512-eysWdBRzE8WDhBzh1nfjyUgzseMokXGHjIoJo880T7IPJ8tTavfQni49pU1B2qWrNOWPyrwx4Bd9pzHyboxJSA==} + '@react-spectrum/provider@3.11.0': + resolution: {integrity: sha512-W2Gxbj8AcG5OR2K5Ua3K8qQqxdsiytEiz+2rhr6oQyBM8VafEgDcNPYSOTtfjrQM3snl2Uhp8LzwN0jwQe/6nQ==} 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 - '@react-aria/combobox@3.15.0': - resolution: {integrity: sha512-qSjQTFwKl3x1jCP2NRSJ6doZqAp6c2GTfoiFwWjaWg1IewwLsglaW6NnzqRDFiqFbDGgXPn4MqtC1VYEJ3NEjA==} + '@react-stately/color@3.10.0': + resolution: {integrity: sha512-P4tlvOYFA8hl/NXiMyPxfM+7rXV01hnwlvGCwbZqUK1aRv0Ry0yGCj2AbSzhYHx7i4J4+CVUJUYozNLzhm+6Sw==} 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 - '@react-aria/datepicker@3.16.1': - resolution: {integrity: sha512-6BltCVWt09yefTkGjb2gViGCwoddx9HKJiZbY9u6Es/Q+VhwNJQRtczbnZ3K32p262hIknukNf/5nZaCOI1AKA==} + '@react-stately/utils@3.12.0': + resolution: {integrity: sha512-7q+iHz9cENvro1dVKgdTxNh1i1mtWuLUI6UHp10TAgpxM9DyRDvmuN35zLXYCmMDgx3WLY2xkwqoez8xd+CdxQ==} 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 - '@react-aria/dialog@3.5.34': - resolution: {integrity: sha512-/x53Q5ynpW5Kv9637WYu7SrDfj3woSp6jJRj8l6teGnWW/iNZWYJETgzHfbxx+HPKYATCZesRoIeO2LnYIXyEA==} + '@react-types/color@3.2.0': + resolution: {integrity: sha512-beV3vz80nzZ1EuYUM7296Kyi3AHcMrbQw0qub/9yzHWVTKKc5sy/e4dCMKcWL/ArkeAyc7jDOiui190RQ4l0Fw==} peerDependencies: + '@react-spectrum/provider': ^3.0.0 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 - '@react-aria/disclosure@3.1.3': - resolution: {integrity: sha512-S3k7Wqrj+x0sWcP88Z1stSr5TIZmKEmx2rU7RB1O1/jPpbw5mgKnjtiriOlTh+kwdK11FkeqgxyHzAcBAR+FMQ==} + '@react-types/shared@3.34.0': + resolution: {integrity: sha512-gp6xo/s2lX54AlTjOiqwDnxA7UW79BNvI9dB9pr3LZTzRKCd1ZA+ZbgKw/ReIiWuvvVw/8QFJpnqeeFyLocMcQ==} 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 - '@react-aria/dnd@3.11.6': - resolution: {integrity: sha512-4YLHUeYJleF+moAYaYt8UZqujudPvpoaHR+QMkWIFzhfridVUhCr6ZjGWrzpSZY3r68k46TG7YCsi4IEiNnysw==} - 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 + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@react-aria/focus@3.21.5': - resolution: {integrity: sha512-V18fwCyf8zqgJdpLQeDU5ZRNd9TeOfBbhLgmX77Zr5ae9XwaoJ1R3SFJG1wCJX60t34AW+aLZSEEK+saQElf3Q==} - 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 + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} - '@react-aria/form@3.1.5': - resolution: {integrity: sha512-BWlONgHn8hmaMkcS6AgMSLQeNqVBwqPNLhdqjDO/PCfzvV7O8NZw/dFeIzJwfG4aBfSpbHHRdXGdfrk3d8dylQ==} + '@spectrum-icons/ui@3.7.0': + resolution: {integrity: sha512-86iQSDfJb3Ama1WSJ/mEiFy4DJT7e/v4pSmEuX4aKKMzbNYft+O40N18S2POUnmblrb7MQneLC/pgIp1SDBwEQ==} peerDependencies: + '@adobe/react-spectrum': ^3.47.0 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 - '@react-aria/grid@3.14.8': - resolution: {integrity: sha512-X6rRFKDu/Kh6Sv8FBap3vjcb+z4jXkSOwkYnexIJp5kMTo5/Dqo55cCBio5B70Tanfv32Ev/6SpzYG7ryxnM9w==} + '@spectrum-icons/workflow@4.3.0': + resolution: {integrity: sha512-ILuhgWh9jMXaEVMRuOYgTAjMc22cKyvCtUDyZmc8OEMfOYuejj+Gcp5t6DhaCfE0M9rORtVxCrRgsO2WyEgfUw==} peerDependencies: + '@adobe/react-spectrum': ^3.47.0 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 - '@react-aria/gridlist@3.14.4': - resolution: {integrity: sha512-C/SbwC0qagZatoBrCjx8iZUex9apaJ8o8iRJ9eVHz0cpj7mXg6HuuotYGmDy9q67A2hve4I693RM1Cuwqwm+PQ==} - 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 + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@react-aria/i18n@3.12.16': - resolution: {integrity: sha512-Km2CAz6MFQOUEaattaW+2jBdWOHUF8WX7VQoNbjlqElCP58nSaqi9yxTWUDRhAcn8/xFUnkFh4MFweNgtrHuEA==} - 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 + '@swc/helpers@0.5.21': + resolution: {integrity: sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==} - '@react-aria/interactions@3.27.1': - resolution: {integrity: sha512-M3wLpTTmDflI0QGNK0PJNUaBXXfeBXue8ZxLMngfc1piHNiH4G5lUvWd9W14XVbqrSCVY8i8DfGrNYpyyZu0tw==} - 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 + '@szmarczak/http-timer@4.0.6': + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} - '@react-aria/label@3.7.25': - resolution: {integrity: sha512-oNK3Pqj4LDPwEbQaoM/uCip4QvQmmwGOh08VeW+vzSi6TAwf+KoWTyH/tiAeB0CHWNDK0k3e1iTygTAt4wzBmg==} - 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 + '@tailwindcss/node@4.2.2': + resolution: {integrity: sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==} - '@react-aria/landmark@3.0.10': - resolution: {integrity: sha512-GpNjJaI8/a6WxYDZgzTCLYSzPM6xp2pxCIQ4udiGbTCtxx13Trmm0cPABvPtzELidgolCf05em9Phr+3G0eE8A==} - 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 + '@tailwindcss/oxide-android-arm64@4.2.2': + resolution: {integrity: sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [android] - '@react-aria/link@3.8.9': - resolution: {integrity: sha512-UaAFBfs84/Qq6TxlMWkREqqNY6SFLukot+z2Aa1kC+VyStv1kWG6sE5QLjm4SBn1Q3CGRsefhB/5+taaIbB4Pw==} - 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 + '@tailwindcss/oxide-darwin-arm64@4.2.2': + resolution: {integrity: sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] - '@react-aria/listbox@3.15.3': - resolution: {integrity: sha512-C6YgiyrHS5sbS5UBdxGMhEs+EKJYotJgGVtl9l0ySXpBUXERiHJWLOyV7a8PwkUOmepbB4FaLD7Y9EUzGkrGlw==} - 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 + '@tailwindcss/oxide-darwin-x64@4.2.2': + resolution: {integrity: sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] - '@react-aria/live-announcer@3.4.4': - resolution: {integrity: sha512-PTTBIjNRnrdJOIRTDGNifY2d//kA7GUAwRFJNOEwSNG4FW+Bq9awqLiflw0JkpyB0VNIwou6lqKPHZVLsGWOXA==} + '@tailwindcss/oxide-freebsd-x64@4.2.2': + resolution: {integrity: sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==} + engines: {node: '>= 20'} + cpu: [x64] + os: [freebsd] - '@react-aria/menu@3.21.0': - resolution: {integrity: sha512-CKTVZ4izSE1eKIti6TbTtzJAUo+WT8O4JC0XZCYDBpa0f++lD19Kz9aY+iY1buv5xGI20gAfpO474E9oEd4aQA==} - 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 + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.2': + resolution: {integrity: sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==} + engines: {node: '>= 20'} + cpu: [arm] + os: [linux] - '@react-aria/meter@3.4.30': - resolution: {integrity: sha512-ZmANKW7s/Z4QGylHi46nhwtQ47T1bfMsU9MysBu7ViXXNJ03F4b6JXCJlKL5o2goQ3NbfZ68GeWamIT0BWSgtw==} - 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 + '@tailwindcss/oxide-linux-arm64-gnu@4.2.2': + resolution: {integrity: sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [glibc] - '@react-aria/numberfield@3.12.5': - resolution: {integrity: sha512-Fi41IUWXEHLFIeJ/LHuZ9Azs8J/P563fZi37GSBkIq5P1pNt1rPgJJng5CNn4KsHxwqadTRUlbbZwbZraWDtRg==} - 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 + '@tailwindcss/oxide-linux-arm64-musl@4.2.2': + resolution: {integrity: sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [musl] - '@react-aria/overlays@3.31.2': - resolution: {integrity: sha512-78HYI08r6LvcfD34gyv19ArRIjy1qxOKuXl/jYnjLDyQzD4pVb634IQWcm0zt10RdKgyuH6HTqvuDOgZTLet7Q==} - 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 + '@tailwindcss/oxide-linux-x64-gnu@4.2.2': + resolution: {integrity: sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [glibc] - '@react-aria/progress@3.4.30': - resolution: {integrity: sha512-S6OWVGgluSWYSd/A6O8CVjz83eeMUfkuWSra0ewAV9bmxZ7TP9pUmD3bGdqHZEl97nt5vHGjZ3eq/x8eCmzKhA==} - 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 + '@tailwindcss/oxide-linux-x64-musl@4.2.2': + resolution: {integrity: sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [musl] - '@react-aria/radio@3.12.5': - resolution: {integrity: sha512-8CCJKJzfozEiWBPO9QAATG1rBGJEJ+xoqvHf9LKU2sPFGsA2/SRnLs6LB9fCG5R3spvaK1xz0any1fjWPl7x8A==} - 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 + '@tailwindcss/oxide-wasm32-wasi@4.2.2': + resolution: {integrity: sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib - '@react-aria/searchfield@3.8.12': - resolution: {integrity: sha512-kYlUHD/+mWzNroHoR8ojUxYBoMviRZn134WaKPFjfNUGZDOEuh4XzOoj+cjdJfe6N3mwTaYu6rJQtunSHIAfhA==} - 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 + '@tailwindcss/oxide-win32-arm64-msvc@4.2.2': + resolution: {integrity: sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [win32] - '@react-aria/select@3.17.3': - resolution: {integrity: sha512-u0UFWw0S7q9oiSbjetDpRoLLIcC+L89uYlm+YfCrdT8ntbQgABNiJRxdVvxnhR0fR6MC9ASTTvuQnNHNn52+1A==} - 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 + '@tailwindcss/oxide-win32-x64-msvc@4.2.2': + resolution: {integrity: sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [win32] - '@react-aria/selection@3.27.2': - resolution: {integrity: sha512-GbUSSLX/ciXix95KW1g+SLM9np7iXpIZrFDSXkC6oNx1uhy18eAcuTkeZE25+SY5USVUmEzjI3m/3JoSUcebbg==} - 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 + '@tailwindcss/oxide@4.2.2': + resolution: {integrity: sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==} + engines: {node: '>= 20'} - '@react-aria/separator@3.4.16': - resolution: {integrity: sha512-RCUtQhDGnPxKzyG8KM79yOB0fSiEf8r/rxShidOVnGLiBW2KFmBa22/Gfc4jnqg/keN3dxvkSGoqmeXgctyp6g==} - 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 + '@tailwindcss/postcss@4.2.2': + resolution: {integrity: sha512-n4goKQbW8RVXIbNKRB/45LzyUqN451deQK0nzIeauVEqjlI49slUlgKYJM2QyUzap/PcpnS7kzSUmPb1sCRvYQ==} - '@react-aria/slider@3.8.5': - resolution: {integrity: sha512-gqkJxznk141mE0JamXF5CXml9PDbPkBz8dyKlihtWHWX4yhEbVYdC9J0otE7iCR3zx69Bm7WHoTGL0BsdpKzVA==} - 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 + '@tanstack/query-core@5.97.0': + resolution: {integrity: sha512-QdpLP5VzVMgo4VtaPppRA2W04UFjIqX+bxke/ZJhE5cfd5UPkRzqIAJQt9uXkQJjqE8LBOMbKv7f8HCsZltXlg==} - '@react-aria/spinbutton@3.7.2': - resolution: {integrity: sha512-adjE1wNCWlugvAtVXlXWPtIG9JWurEgYVn1Eeyh19x038+oXGvOsOAoKCXM+SnGleTWQ9J7pEZITFoEI3cVfAw==} + '@tanstack/react-query@5.97.0': + resolution: {integrity: sha512-y4So4eGcQoK2WVMAcDNZE9ofB/p5v1OlKvtc1F3uqHwrtifobT7q+ZnXk2mRkc8E84HKYSlAE9z6HXl2V0+ySQ==} 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 + react: ^18 || ^19 - '@react-aria/ssr@3.9.10': - resolution: {integrity: sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==} - engines: {node: '>= 12'} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@tybys/wasm-util@0.10.2': + resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} - '@react-aria/switch@3.7.11': - resolution: {integrity: sha512-dYVX71HiepBsKyeMaQgHbhqI+MQ3MVoTd5EnTbUjefIBnmQZavYj1/e4NUiUI4Ix+/C0HxL8ibDAv4NlSW3eLQ==} - 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 + '@types/cacheable-request@6.0.3': + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} - '@react-aria/table@3.17.11': - resolution: {integrity: sha512-GkYmWPiW3OM+FUZxdS33teHXHXde7TjHuYgDDaG9phvg6cQTQjGilJozrzA3OfftTOq5VB8XcKTIQW3c0tpYsQ==} - 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 + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} - '@react-aria/tabs@3.11.1': - resolution: {integrity: sha512-3Ppz7yaEDW9L7p9PE9yNOl5caLwNnnLQqI+MX/dwbWlw9HluHS7uIjb21oswNl6UbSxAWyENOka45+KN4Fkh7A==} - 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 + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} - '@react-aria/tag@3.8.1': - resolution: {integrity: sha512-VonpO++F8afXGDWc9VUxAc2wefyJpp1n9OGpbnB7zmqWiuPwO/RixjUdcH7iJkiC4vADwx9uLnhyD6kcwGV2ig==} - 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 + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} - '@react-aria/textfield@3.18.5': - resolution: {integrity: sha512-ttwVSuwoV3RPaG2k2QzEXKeQNQ3mbdl/2yy6I4Tjrn1ZNkYHfVyJJ26AjenfSmj1kkTQoSAfZ8p+7rZp4n0xoQ==} - 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 + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} - '@react-aria/toast@3.0.11': - resolution: {integrity: sha512-2DjZjBAvm8/CWbnZ6s7LjkYCkULKtjMve6GvhPTq98AthuEDLEiBvM1wa3xdecCRhZyRT1g6DXqVca0EfZ9fJA==} - 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 + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} - '@react-aria/toggle@3.12.5': - resolution: {integrity: sha512-XXVFLzcV8fr9mz7y/wfxEAhWvaBZ9jSfhCMuxH2bsivO7nTcMJ1jb4g2xJNwZgne17bMWNc7mKvW5dbsdlI6BA==} - 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 + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} - '@react-aria/toolbar@3.0.0-beta.24': - resolution: {integrity: sha512-B2Rmpko7Ghi2RbNfsGdbR7I+RQBDhPGVE4bU3/EwHz+P/vNe5LyGPTeSwqaOMsQTF9lKNCkY8424dVTCr6RUMg==} - 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 + '@types/d3-shape@3.1.8': + resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==} - '@react-aria/tooltip@3.9.2': - resolution: {integrity: sha512-VrgkPwHiEnAnBhoQ4W7kfry/RfVuRWrUPaJSp0+wKM6u0gg2tmn7OFRDXTxBAm/omQUguIdIjRWg7sf3zHH82A==} - 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 + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} - '@react-aria/tree@3.1.7': - resolution: {integrity: sha512-C54yH5NmsOFa2Q+cg6B1BPr5KUlU9vLIoBnVrgrH237FRSXQPIbcM4VpmITAHq1VR7w6ayyS1hgTwFxo67ykWQ==} - 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 + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} - '@react-aria/utils@3.33.1': - resolution: {integrity: sha512-kIx1Sj6bbAT0pdqCegHuPanR9zrLn5zMRiM7LN12rgRf55S19ptd9g3ncahArifYTRkfEU9VIn+q0HjfMqS9/w==} - 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 + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} - '@react-aria/virtualizer@4.1.13': - resolution: {integrity: sha512-d5KS+p8GXGNRbGPRE/N6jtth3et3KssQIz52h2+CAoAh7C3vvR64kkTaGdeywClvM+fSo8FxJuBrdfQvqC2ktQ==} - 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 + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} - '@react-aria/visually-hidden@3.8.31': - resolution: {integrity: sha512-RTOHHa4n56a9A3criThqFHBifvZoV71+MCkSuNP2cKO662SUWjqKkd0tJt/mBRMEJPkys8K7Eirp6T8Wt5FFRA==} - 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 + '@types/fs-extra@9.0.13': + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} - '@react-stately/autocomplete@3.0.0-beta.4': - resolution: {integrity: sha512-K2Uy7XEdseFvgwRQ8CyrYEHMupjVKEszddOapP8deNz4hntYvT1aRm0m+sKa5Kl/4kvg9c/3NZpQcrky/vRZIg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@types/http-cache-semantics@4.2.0': + resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==} - '@react-stately/calendar@3.9.3': - resolution: {integrity: sha512-uw7fCZXoypSBBUsVkbNvJMQWTihZReRbyLIGG3o/ZM630N3OCZhb/h4Uxke4pNu7n527H0V1bAnZgAldIzOYqg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@react-stately/checkbox@3.7.5': - resolution: {integrity: sha512-K5R5ted7AxLB3sDkuVAazUdyRMraFT1imVqij2GuAiOUFvsZvbuocnDuFkBVKojyV3GpqLBvViV8IaCMc4hNIw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@react-stately/collections@3.12.10': - resolution: {integrity: sha512-wmF9VxJDyBujBuQ76vXj2g/+bnnj8fx5DdXgRmyfkkYhPB46+g2qnjbVGEvipo7bJuGxDftCUC4SN7l7xqUWfg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - '@react-stately/color@3.9.5': - resolution: {integrity: sha512-8pZxzXWDRuglzDwyTG7mLw2LQMCHIVNbVc9YmbsxbOjAL+lOqszo60KzyaFKVxeDQczSvrNTHcQZqlbNIC0eyQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@react-stately/combobox@3.13.0': - resolution: {integrity: sha512-dX9g/cK1hjLRjcbWVF6keHxTQDGhKGB2QAgPhWcBmOK3qJv+2dQqsJ6YCGWn/Y2N2acoEseLrAA7+Qe4HWV9cg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@types/node@22.19.17': + resolution: {integrity: sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==} - '@react-stately/data@3.15.2': - resolution: {integrity: sha512-BsmeeGgFwOGwo0g9Waprdyt+846n3KhKggZfpEnp5+sC4dE4uW1VIYpdyupMfr3bQcmX123q6TegfNP3eszrUA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@types/plist@3.0.5': + resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} - '@react-stately/datepicker@3.16.1': - resolution: {integrity: sha512-BtAMDvxd1OZxkxjqq5tN5TYmp6Hm8+o3+IDA4qmem2/pfQfVbOZeWS2WitcPBImj4n4T+W1A5+PI7mT/6DUBVg==} + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@types/react': ^19.2.0 - '@react-stately/disclosure@3.0.11': - resolution: {integrity: sha512-/KjB/0HkxGWbhFAPztCP411LUKZCx9k8cKukrlGqrUWyvrcXlmza90j0g/CuxACBoV+DJP9V+4q+8ide0x750A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} - '@react-stately/dnd@3.7.4': - resolution: {integrity: sha512-YD0TVR5JkvTqskc1ouBpVKs6t/QS4RYCIyu8Ug8RgO122iIizuf2pfKnRLjYMdu5lXzBXGaIgd49dvnLzEXHIw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - '@react-stately/flags@3.1.2': - resolution: {integrity: sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==} + '@types/verror@1.10.11': + resolution: {integrity: sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==} - '@react-stately/form@3.2.4': - resolution: {integrity: sha512-qNBzun8SbLdgahryhKLqL1eqP+MXY6as82sVXYOOvUYLzgU5uuN8mObxYlxJgMI5akSdQJQV3RzyfVobPRE7Kw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@react-stately/grid@3.11.9': - resolution: {integrity: sha512-qQY6F+27iZRn30dt0ZOrSetUmbmNJ0pLe9Weuqw3+XDVSuWT+2O/rO1UUYeK+mO0Acjzdv+IWiYbu9RKf2wS9w==} + '@typescript-eslint/eslint-plugin@8.59.2': + resolution: {integrity: sha512-j/bwmkBvHUtPNxzuWe5z6BEk3q54YRyGlBXkSsmfoih7zNrBvl5A9A98anlp/7JbyZcWIJ8KXo/3Tq/DjFLtuQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@typescript-eslint/parser': ^8.59.2 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@react-stately/layout@4.6.0': - resolution: {integrity: sha512-kBenEsP03nh5rKgfqlVMPcoKTJv0v92CTvrAb5gYY8t9g8LOwzdL89Yannq7f5xv8LFck/MmRQlotpMt2InETg==} + '@typescript-eslint/parser@8.59.2': + resolution: {integrity: sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.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 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@react-stately/list@3.13.4': - resolution: {integrity: sha512-HHYSjA9VG7FPSAtpXAjQyM/V7qFHWGg88WmMrDt5QDlTBexwPuH0oFLnW0qaVZpAIxuWIsutZfxRAnme/NhhAA==} + '@typescript-eslint/project-service@8.59.2': + resolution: {integrity: sha512-+2hqvEkeyf/0FBor67duF0Ll7Ot8jyKzDQOSrxazF/danillRq2DwR9dLptsXpoZQqxE1UisSmoZewrlPas9Vw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + typescript: '>=4.8.4 <6.1.0' - '@react-stately/menu@3.9.11': - resolution: {integrity: sha512-vYkpO9uV2OUecsIkrOc+Urdl/s1xw/ibNH/UXsp4PtjMnS6mK9q2kXZTM3WvMAKoh12iveUO+YkYCZQshmFLHQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@typescript-eslint/scope-manager@8.59.2': + resolution: {integrity: sha512-JzfyEpEtOU89CcFSwyNS3mu4MLvLSXqnmX05+aKBDM+TdR5jzcGOEBwxwGNxrEQ7p/z6kK2WyioCGBf2zZBnvg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@react-stately/numberfield@3.11.0': - resolution: {integrity: sha512-rxfC047vL0LP4tanjinfjKAriAvdVL57Um5RUL5nHML8IOWCB3TBxegQkJ6to6goScC/oZhd0/Y2LSaiRuKbNw==} + '@typescript-eslint/tsconfig-utils@8.59.2': + resolution: {integrity: sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + typescript: '>=4.8.4 <6.1.0' - '@react-stately/overlays@3.6.23': - resolution: {integrity: sha512-RzWxots9A6gAzQMP4s8hOAHV7SbJRTFSlQbb6ly1nkWQXacOSZSFNGsKOaS0eIatfNPlNnW4NIkgtGws5UYzfw==} + '@typescript-eslint/type-utils@8.59.2': + resolution: {integrity: sha512-nhqaj1nmTdVVl/BP5omXNRGO38jn5iosis2vbdmupF2txCf8ylWT8lx+JlvMYYVqzGVKtjojUFoQ3JRWK+mfzQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@react-stately/radio@3.11.5': - resolution: {integrity: sha512-QxA779S4ea5icQ0ja7CeiNzY1cj7c9G9TN0m7maAIGiTSinZl2Ia8naZJ0XcbRRp+LBll7RFEdekne15TjvS/w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@typescript-eslint/types@8.59.2': + resolution: {integrity: sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@react-stately/searchfield@3.5.19': - resolution: {integrity: sha512-URllgjbtTQEaOCfddbHpJSPKOzG3pE3ajQHJ7Df8qCoHTjKfL6hnm/vp7X5sxPaZaN7VLZ5kAQxTE8hpo6s0+A==} + '@typescript-eslint/typescript-estree@8.59.2': + resolution: {integrity: sha512-o0XPGNwcWw+FIwStOWn+BwBuEmL6QXP0rsvAFg7ET1dey1Nr6Wb1ac8p5HEsK0ygO/6mUxlk+YWQD9xcb/nnXg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + typescript: '>=4.8.4 <6.1.0' - '@react-stately/select@3.9.2': - resolution: {integrity: sha512-oWn0bijuusp8YI7FRM/wgtPVqiIrgU/ZUfLKe/qJUmT8D+JFaMAJnyrAzKpx98TrgamgtXynF78ccpopPhgrKQ==} + '@typescript-eslint/utils@8.59.2': + resolution: {integrity: sha512-Juw3EinkXqjaffxz6roowvV7GZT/kET5vSKKZT6upl5TXdWkLkYmNPXwDDL2Vkt2DPn0nODIS4egC/0AGxKo/Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@react-stately/selection@3.20.9': - resolution: {integrity: sha512-RhxRR5Wovg9EVi3pq7gBPK2BoKmP59tOXDMh2r1PbnGevg/7TNdR67DCEblcmXwHuBNS46ELfKdd0XGHqmS8nQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@typescript-eslint/visitor-keys@8.59.2': + resolution: {integrity: sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@react-stately/slider@3.7.5': - resolution: {integrity: sha512-OrQMNR5xamLYH52TXtvTgyw3EMwv+JI+1istQgEj1CHBjC9eZZqn5iNCN20tzm+uDPTH0EIGULFjjPIumqYUQg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} + cpu: [arm] + os: [android] - '@react-stately/table@3.15.4': - resolution: {integrity: sha512-fGaNyw3wv7JgRCNzgyDzpaaTFuSy5f4Qekch4UheMXDJX7dOeaMhUXeOfvnXCVg+BGM4ey/D82RvDOGvPy1Nww==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-android-arm64@1.11.1': + resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} + cpu: [arm64] + os: [android] - '@react-stately/tabs@3.8.9': - resolution: {integrity: sha512-AQ4Xrn6YzIolaVShCV9cnwOjBKPAOGP/PTp7wpSEtQbQ0HZzUDG2RG/M4baMeUB2jZ33b7ifXyPcK78o0uOftg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-darwin-arm64@1.11.1': + resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} + cpu: [arm64] + os: [darwin] - '@react-stately/toast@3.1.3': - resolution: {integrity: sha512-mT9QJKmD523lqFpOp0VWZ6QHZENFK7HrodnNJDVc7g616s5GNmemdlkITV43fSY3tHeThCVvPu+Uzh7RvQ9mpQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-darwin-x64@1.11.1': + resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} + cpu: [x64] + os: [darwin] - '@react-stately/toggle@3.9.5': - resolution: {integrity: sha512-PVzXc788q3jH98Kvw1LYDL+wpVC14dCEKjOku8cSaqhEof6AJGaLR9yq+EF1yYSL2dxI6z8ghc0OozY8WrcFcA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-freebsd-x64@1.11.1': + resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} + cpu: [x64] + os: [freebsd] - '@react-stately/tooltip@3.5.11': - resolution: {integrity: sha512-o8PnFXbvDCuVZ4Ht9ahfS6KHwIZjXopvoQ2vUPxv920irdgWEeC+4omgDOnJ/xFvcpmmJAmSsrQsTQrTguDUQA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} + cpu: [arm] + os: [linux] - '@react-stately/tree@3.9.6': - resolution: {integrity: sha512-JCuhGyX2A+PAMsx2pRSwArfqNFZJ9JSPkDaOQJS8MFPAsBe5HemvXsdmv9aBIMzlbCYcVq6EsrFnzbVVTBt/6w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} + cpu: [arm] + os: [linux] - '@react-stately/utils@3.11.0': - resolution: {integrity: sha512-8LZpYowJ9eZmmYLpudbo/eclIRnbhWIJZ994ncmlKlouNzKohtM8qTC6B1w1pwUbiwGdUoyzLuQbeaIor5Dvcw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] - '@react-stately/virtualizer@4.4.6': - resolution: {integrity: sha512-9SfXgLFB61/8SXNLfg5ARx9jAK4m03Aw6/Cg8mdZN24SYarL4TKNRpfw8K/HHVU/bi6WHSJypk6Z/z19o/ztrg==} - 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 + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} + cpu: [arm64] + os: [linux] + libc: [musl] - '@react-types/autocomplete@3.0.0-alpha.38': - resolution: {integrity: sha512-0XrlVC8drzcrCNzybbkZdLcTofXEzBsHuaFevt5awW1J0xBJ+SMLIQMDeUYrvKjjwXUBlCtjJJpOvitGt4Z+KA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] - '@react-types/breadcrumbs@3.7.19': - resolution: {integrity: sha512-AnkyYYmzaM2QFi/N0P/kQLM8tHOyFi7p397B/jEMucXDfwMw5Ny1ObCXeIEqbh8KrIa2Xp8SxmQlCV+8FPs4LA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] - '@react-types/button@3.15.1': - resolution: {integrity: sha512-M1HtsKreJkigCnqceuIT22hDJBSStbPimnpmQmsl7SNyqCFY3+DHS7y/Sl3GvqCkzxF7j9UTL0dG38lGQ3K4xQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} + cpu: [riscv64] + os: [linux] + libc: [musl] - '@react-types/calendar@3.8.3': - resolution: {integrity: sha512-fpH6WNXotzH0TlKHXXxtjeLZ7ko0sbyHmwDAwmDFyP7T0Iwn1YQZ+lhceLifvynlxuOgX6oBItyUKmkHQ0FouQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} + cpu: [s390x] + os: [linux] + libc: [glibc] - '@react-types/checkbox@3.10.4': - resolution: {integrity: sha512-tYCG0Pd1usEz5hjvBEYcqcA0youx930Rss1QBIse9TgMekA1c2WmPDNupYV8phpO8Zuej3DL1WfBeXcgavK8aw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} + cpu: [x64] + os: [linux] + libc: [glibc] - '@react-types/color@3.1.4': - resolution: {integrity: sha512-s+Xj4pvNBlJPpQ1Gr7bO1j4/tuwMUfdS9xIVFuiW5RvDsSybKTUJ/gqPzTxms94VDCRhLFocVn2STNdD2Erf6A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} + cpu: [x64] + os: [linux] + libc: [musl] - '@react-types/combobox@3.14.0': - resolution: {integrity: sha512-zmSSS7BcCOD8rGT8eGbVy7UlL5qq1vm88fFn4WgFe+lfK33ne+E7yTzTxcPY2TCGSo5fY6xMj3OG79FfVNGbSg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] - '@react-types/datepicker@3.13.5': - resolution: {integrity: sha512-j28Vz+xvbb4bj7+9Xbpc4WTvSitlBvt7YEaEGM/8ZQ5g4Jr85H2KwkmDwjzmMN2r6VMQMMYq9JEcemq5wWpfUQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} + cpu: [arm64] + os: [win32] - '@react-types/dialog@3.5.24': - resolution: {integrity: sha512-NFurEP/zV0dA/41422lV1t+0oh6f/13n+VmLHZG8R13m1J3ql/kAXZ49zBSqkqANBO1ojyugWebk99IiR4pYOw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} + cpu: [ia32] + os: [win32] - '@react-types/form@3.7.18': - resolution: {integrity: sha512-0sBJW0+I9nJcF4SmKrYFEWAlehiebSTy7xqriqAXtqfTEdvzAYLGaAK2/7gx+wlNZeDTdW43CDRJ4XAhyhBqnw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} + cpu: [x64] + os: [win32] - '@react-types/grid@3.3.8': - resolution: {integrity: sha512-zJvXH8gc1e1VH2H3LRnHH/W2HIkLkZMH3Cu5pLcj0vDuLBSWpcr3Ikh3jZ+VUOZF0G1Jt1lO8pKIaqFzDLNmLQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@xmldom/xmldom@0.8.12': + resolution: {integrity: sha512-9k/gHF6n/pAi/9tqr3m3aqkuiNosYTurLLUtc7xQ9sxB/wm7WPygCv8GYa6mS0fLJEHhqMC1ATYhz++U/lRHqg==} + engines: {node: '>=10.0.0'} - '@react-types/link@3.6.7': - resolution: {integrity: sha512-1apXCFJgMC1uydc2KNENrps1qR642FqDpwlNWe254UTpRZn/hEZhA6ImVr8WhomfLJu672WyWA0rUOv4HT+/pQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + '@zowe/secrets-for-zowe-sdk@8.29.4': + resolution: {integrity: sha512-fiRfuEuFNapwhVbN3LJIA2ZgVajNB+QNFN7O7ES/fIYGM612PKcXuvbZUJSlU69IZ8eUF8SP+9OnveK4s+GLgw==} + engines: {node: '>=14'} - '@react-types/listbox@3.7.6': - resolution: {integrity: sha512-335NYElKEByXMalAmeRPyulKIDd2cjOCQhLwvv2BtxO5zaJfZnBbhZs+XPd9zwU6YomyOxODKSHrwbNDx+Jf3w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + abbrev@3.0.1: + resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} + engines: {node: ^18.17.0 || >=20.5.0} - '@react-types/menu@3.10.7': - resolution: {integrity: sha512-+p7ixZdvPDJZhisqdtWiiuJ9pteNfK5i19NB6wzAw5XkljbEzodNhwLv6rI96DY5XpbFso2kcjw7IWi+rAAGGQ==} + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@react-types/meter@3.4.15': - resolution: {integrity: sha512-9WjNphhLLM+TA4Ev1y2MkpugJ5JjTXseHh7ZWWx2veq5DrXMZYclkRpfUrUdLVKvaBIPQCgpQIj0TcQi+quR9A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true - '@react-types/numberfield@3.8.18': - resolution: {integrity: sha512-nLzk7YAG9yAUtSv+9R8LgCHsu8hJq8/A+m1KsKxvc8WmNJjIujSFgWvT21MWBiUgPBzJKGzAqpMDDa087mltJQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} - '@react-types/overlays@3.9.4': - resolution: {integrity: sha512-7Z9HaebMFyYBqtv3XVNHEmVkm7AiYviV7gv0c98elEN2Co+eQcKFGvwBM9Gy/lV57zlTqFX1EX/SAqkMEbCLOA==} + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + ajv: ^6.9.1 - '@react-types/progress@3.5.18': - resolution: {integrity: sha512-mKeQn+KrHr1y0/k7KtrbeDGDaERH6i4f6yBwj/ZtYDCTNKMO3tPHJY6nzF0w/KKZLplIO+BjUbHXc2RVm8ovwQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + ajv@6.14.0: + resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} - '@react-types/radio@3.9.4': - resolution: {integrity: sha512-TkMRY3sA1PcFZhhclu4IUzUTIir6MzNJj8h6WT8vO6Nug2kXJ72qigugVFBWJSE472mltduOErEAo0rtAYWbQA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} - '@react-types/searchfield@3.6.8': - resolution: {integrity: sha512-M2p7OVdMTMDmlBcHd4N2uCBwg3uJSNM4lmEyf09YD44N5wDAI0yogk52QBwsnhpe+i2s65UwCYgunB+QltRX8A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} - '@react-types/select@3.12.2': - resolution: {integrity: sha512-AseOjfr3qM1W1qIWcbAe6NFpwZluVeQX/dmu9BYxjcnVvtoBLPMbE5zX/BPbv+N5eFYjoMyj7Ug9dqnI+LrlGw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} - '@react-types/shared@3.33.1': - resolution: {integrity: sha512-oJHtjvLG43VjwemQDadlR5g/8VepK56B/xKO2XORPHt9zlW6IZs3tZrYlvH29BMvoqC7RtE7E5UjgbnbFtDGag==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} - '@react-types/slider@3.8.4': - resolution: {integrity: sha512-C+xFVvfKREai9S/ekBDCVaGPOQYkNUAsQhjQnNsUAATaox4I6IYLmcIgLmljpMQWqAe+gZiWsIwacRYMez2Tew==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + app-builder-bin@5.0.0-alpha.12: + resolution: {integrity: sha512-j87o0j6LqPL3QRr8yid6c+Tt5gC7xNfYo6uQIQkorAC6MpeayVMZrEDzKmJJ/Hlv7EnOQpaRm53k6ktDYZyB6w==} - '@react-types/switch@3.5.17': - resolution: {integrity: sha512-2GTPJvBCYI8YZ3oerHtXg+qikabIXCMJ6C2wcIJ5Xn0k9XOovowghfJi10OPB2GGyOiLBU74CczP5nx8adG90Q==} + app-builder-lib@26.9.0: + resolution: {integrity: sha512-f/1GhVrDfBH7sSzhAwiXa1rpR/7pB7Av5woUjmt+QYE0QyNvrOAiY05rngtR/PK4/1BzS6/zVoYobIwDAsrtBA==} + engines: {node: '>=14.0.0'} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + dmg-builder: 26.9.0 + electron-builder-squirrel-windows: 26.9.0 - '@react-types/table@3.13.6': - resolution: {integrity: sha512-eluL+iFfnVmFm7OSZrrFG9AUjw+tcv898zbv+NsZACa8oXG1v9AimhZfd+Mo8q/5+sX/9hguWNXFkSvmTjuVPQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - '@react-types/tabs@3.3.22': - resolution: {integrity: sha512-HGwLD9dA3k3AGfRKGFBhNgxU9/LyRmxN0kxVj1ghA4L9S/qTOzS6GhrGNkGzsGxyVLV4JN8MLxjWN2o9QHnLEg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} - '@react-types/textfield@3.12.8': - resolution: {integrity: sha512-wt6FcuE5AyntxsnPika/h3nf/DPmeAVbI018L9o6h+B/IL4sMWWdx663wx2KOOeHH8ejKGZQNPLhUKs4s1mVQA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} - '@react-types/tooltip@3.5.2': - resolution: {integrity: sha512-FvSuZ2WP08NEWefrpCdBYpEEZh/5TvqvGjq0wqGzWg2OPwpc14HjD8aE7I3MOuylXkD4MSlMjl7J4DlvlcCs3Q==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} - '@sindresorhus/is@4.6.0': - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + engines: {node: '>= 0.4'} - '@swc/helpers@0.5.15': - resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} - '@swc/helpers@0.5.21': - resolution: {integrity: sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==} + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} + engines: {node: '>= 0.4'} - '@szmarczak/http-timer@4.0.6': - resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} - engines: {node: '>=10'} + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} - '@tailwindcss/node@4.2.2': - resolution: {integrity: sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==} + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} - '@tailwindcss/oxide-android-arm64@4.2.2': - resolution: {integrity: sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [android] + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} - '@tailwindcss/oxide-darwin-arm64@4.2.2': - resolution: {integrity: sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [darwin] - - '@tailwindcss/oxide-darwin-x64@4.2.2': - resolution: {integrity: sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==} - engines: {node: '>= 20'} - cpu: [x64] - os: [darwin] - - '@tailwindcss/oxide-freebsd-x64@4.2.2': - resolution: {integrity: sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==} - engines: {node: '>= 20'} - cpu: [x64] - os: [freebsd] - - '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.2': - resolution: {integrity: sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==} - engines: {node: '>= 20'} - cpu: [arm] - os: [linux] - - '@tailwindcss/oxide-linux-arm64-gnu@4.2.2': - resolution: {integrity: sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@tailwindcss/oxide-linux-arm64-musl@4.2.2': - resolution: {integrity: sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@tailwindcss/oxide-linux-x64-gnu@4.2.2': - resolution: {integrity: sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==} - engines: {node: '>= 20'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@tailwindcss/oxide-linux-x64-musl@4.2.2': - resolution: {integrity: sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==} - engines: {node: '>= 20'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@tailwindcss/oxide-wasm32-wasi@4.2.2': - resolution: {integrity: sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - bundledDependencies: - - '@napi-rs/wasm-runtime' - - '@emnapi/core' - - '@emnapi/runtime' - - '@tybys/wasm-util' - - '@emnapi/wasi-threads' - - tslib - - '@tailwindcss/oxide-win32-arm64-msvc@4.2.2': - resolution: {integrity: sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==} - engines: {node: '>= 20'} - cpu: [arm64] - os: [win32] - - '@tailwindcss/oxide-win32-x64-msvc@4.2.2': - resolution: {integrity: sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==} - engines: {node: '>= 20'} - cpu: [x64] - os: [win32] - - '@tailwindcss/oxide@4.2.2': - resolution: {integrity: sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==} - engines: {node: '>= 20'} - - '@tailwindcss/postcss@4.2.2': - resolution: {integrity: sha512-n4goKQbW8RVXIbNKRB/45LzyUqN451deQK0nzIeauVEqjlI49slUlgKYJM2QyUzap/PcpnS7kzSUmPb1sCRvYQ==} - - '@tanstack/query-core@5.97.0': - resolution: {integrity: sha512-QdpLP5VzVMgo4VtaPppRA2W04UFjIqX+bxke/ZJhE5cfd5UPkRzqIAJQt9uXkQJjqE8LBOMbKv7f8HCsZltXlg==} - - '@tanstack/react-query@5.97.0': - resolution: {integrity: sha512-y4So4eGcQoK2WVMAcDNZE9ofB/p5v1OlKvtc1F3uqHwrtifobT7q+ZnXk2mRkc8E84HKYSlAE9z6HXl2V0+ySQ==} - peerDependencies: - react: ^18 || ^19 - - '@types/cacheable-request@6.0.3': - resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} - - '@types/debug@4.1.13': - resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} - - '@types/fs-extra@9.0.13': - resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} - - '@types/http-cache-semantics@4.2.0': - resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==} - - '@types/keyv@3.1.4': - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - - '@types/ms@2.1.0': - resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - - '@types/node@22.19.17': - resolution: {integrity: sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==} - - '@types/plist@3.0.5': - resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} - - '@types/react-dom@19.2.3': - resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} - peerDependencies: - '@types/react': ^19.2.0 - - '@types/react@19.2.14': - resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} - - '@types/responselike@1.0.3': - resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - - '@types/verror@1.10.11': - resolution: {integrity: sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==} - - '@types/yauzl@2.10.3': - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - - '@xmldom/xmldom@0.8.12': - resolution: {integrity: sha512-9k/gHF6n/pAi/9tqr3m3aqkuiNosYTurLLUtc7xQ9sxB/wm7WPygCv8GYa6mS0fLJEHhqMC1ATYhz++U/lRHqg==} - engines: {node: '>=10.0.0'} - - abbrev@3.0.1: - resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} - engines: {node: ^18.17.0 || >=20.5.0} - - agent-base@7.1.4: - resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} - engines: {node: '>= 14'} - - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - - ajv@6.14.0: - resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.2.2: - resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.3: - resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} - engines: {node: '>=12'} - - app-builder-bin@5.0.0-alpha.12: - resolution: {integrity: sha512-j87o0j6LqPL3QRr8yid6c+Tt5gC7xNfYo6uQIQkorAC6MpeayVMZrEDzKmJJ/Hlv7EnOQpaRm53k6ktDYZyB6w==} - - app-builder-lib@26.9.0: - resolution: {integrity: sha512-f/1GhVrDfBH7sSzhAwiXa1rpR/7pB7Av5woUjmt+QYE0QyNvrOAiY05rngtR/PK4/1BzS6/zVoYobIwDAsrtBA==} - engines: {node: '>=14.0.0'} - peerDependencies: - dmg-builder: 26.9.0 - electron-builder-squirrel-windows: 26.9.0 - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} assert-plus@1.0.0: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} @@ -1305,6 +1272,10 @@ packages: resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==} engines: {node: '>=0.12.0'} + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} @@ -1315,6 +1286,18 @@ packages: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.11.4: + resolution: {integrity: sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA==} + engines: {node: '>=4'} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1347,6 +1330,15 @@ packages: resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} engines: {node: 18 || 20 || >=22} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} @@ -1363,6 +1355,10 @@ packages: builder-util@26.9.0: resolution: {integrity: sha512-+eocmbdisnyb40B9nAp/KREfYLXvGagxV50KZv/Zh4aflsr1fdY9Qxs6QG1Jtx1vH5d5NQ3hIcemUi4RSlFK/Q==} + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + cacache@19.0.1: resolution: {integrity: sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -1379,6 +1375,18 @@ packages: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} + call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + caniuse-lite@1.0.30001787: resolution: {integrity: sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==} @@ -1386,6 +1394,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} @@ -1442,6 +1454,10 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + commander@14.0.3: + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} + engines: {node: '>=20'} + commander@5.1.0: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} @@ -1462,6 +1478,9 @@ packages: engines: {node: '>=18'} hasBin: true + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -1478,6 +1497,73 @@ packages: csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-format@3.1.2: + resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -1487,6 +1573,9 @@ packages: supports-color: optional: true + decimal.js-light@2.5.1: + resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + decimal.js@10.6.0: resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} @@ -1494,6 +1583,17 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + engines: {node: '>=18'} + defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -1505,6 +1605,10 @@ packages: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -1532,6 +1636,13 @@ packages: os: [darwin] hasBin: true + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dotenv-expand@11.0.7: resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} engines: {node: '>=12'} @@ -1567,6 +1678,9 @@ packages: electron-publish@26.9.0: resolution: {integrity: sha512-gsy+U7JfDuD1lPOrCXeECDQoUsWjFah3s1Fv3pqKnjdJuKYDDvGdvC74kLHVG6nl5G0uQ7YN0eftCQ4rUmhvVw==} + electron-to-chromium@1.5.353: + resolution: {integrity: sha512-kOrWphBi8TOZyiJZqsgqIle0lw+tzmnQK83pV9dZUd01Nm2POECSyFQMAuarzZdYqQW7FH9RaYOuaRo3h+bQ3w==} + electron-winstaller@5.4.0: resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==} engines: {node: '>=8.0.0'} @@ -1599,6 +1713,10 @@ packages: err-code@2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + es-abstract@1.24.2: + resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==} + engines: {node: '>= 0.4'} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -1607,6 +1725,10 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + es-iterator-helpers@1.3.2: + resolution: {integrity: sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==} + engines: {node: '>= 0.4'} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -1615,6 +1737,14 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + es6-error@4.1.1: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} @@ -1626,7 +1756,141 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - exponential-backoff@3.1.3: + eslint-config-next@16.2.6: + resolution: {integrity: sha512-z2ELYSkyrrJ6cuunTU8vhsT/RpouPkjaSah06nVW6Rg2Hpg0Vs8s497/e5s8G8qtdp4ccsiovz5P1rv+5VSW2Q==} + peerDependencies: + eslint: '>=9.0.0' + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + + eslint-import-resolver-node@0.3.10: + resolution: {integrity: sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==} + + eslint-import-resolver-typescript@3.10.1: + resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-module-utils@2.12.1: + resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.32.0: + resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jsx-a11y@6.10.2: + resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + + eslint-plugin-react-hooks@7.1.1: + resolution: {integrity: sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==} + engines: {node: '>=18'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0 + + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@9.39.4: + resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + esm-env@1.2.2: + resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + eventsource-parser@3.0.8: + resolution: {integrity: sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ==} + engines: {node: '>=18.0.0'} + + eventsource@4.1.0: + resolution: {integrity: sha512-2GuF51iuHX6A9xdTccMTsNb7VO0lHZihApxhvQzJB5A03DvHDd2FQepodbMaztPBmBcE/ox7o2gqaxGhYB9LhQ==} + engines: {node: '>=20.0.0'} + + exponential-backoff@3.1.3: resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} extract-zip@2.0.1: @@ -1641,9 +1905,23 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-equals@5.4.0: + resolution: {integrity: sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==} + engines: {node: '>=6.0.0'} + + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} @@ -1656,9 +1934,41 @@ packages: picomatch: optional: true + figlet@1.11.0: + resolution: {integrity: sha512-EEx3OS/l2bFqcUNN2NM9FPJp8vAMrgbCxsbl2hbcJNNxOEwVe3mEzrhan7TbJQViZa8mMqhihlbCaqD+LyYKTQ==} + engines: {node: '>= 17.0.0'} + hasBin: true + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + filelist@1.0.6: resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + foreground-child@3.3.1: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} @@ -1689,6 +1999,10 @@ packages: resolution: {integrity: sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==} engines: {node: '>=14.14'} + fs-extra@11.3.5: + resolution: {integrity: sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==} + engines: {node: '>=14.14'} + fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -1711,6 +2025,21 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -1727,6 +2056,21 @@ packages: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + glob@10.5.0: resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me @@ -1740,6 +2084,14 @@ packages: resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} engines: {node: '>=10.0'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@16.4.0: + resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + engines: {node: '>=18'} + globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -1755,6 +2107,10 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -1762,6 +2118,10 @@ packages: has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -1774,6 +2134,20 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} + engines: {node: '>= 0.4'} + + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + + heroui-pro@1.0.0-beta.9: + resolution: {integrity: sha512-4hw5ftRmaFMDjfFAmO6iLhdOhLHS0w5Qa07hHQ7E0aUCVNVGWnPZVZ+nyQlJ7Oy9+wRi55hP+Dy9D51sq9txuA==} + hasBin: true + hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} @@ -1805,6 +2179,18 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -1822,6 +2208,14 @@ packages: 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 + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + intl-messageformat@10.7.18: resolution: {integrity: sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g==} @@ -1829,18 +2223,142 @@ packages: resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} engines: {node: '>= 12'} + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-bun-module@2.0.0: + resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.2: + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + isbinaryfile@4.0.10: resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} engines: {node: '>= 8.0.0'} @@ -1856,6 +2374,10 @@ packages: resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==} engines: {node: '>=18'} + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -1886,19 +2408,34 @@ packages: react: optional: true + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-yaml@4.1.1: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -1910,12 +2447,34 @@ packages: jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + jwt-decode@4.0.0: + resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==} + engines: {node: '>=18'} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + lazy-val@1.0.5: resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==} + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + lightningcss-android-arm64@1.32.0: resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} engines: {node: '>= 12.0.0'} @@ -1990,6 +2549,17 @@ packages: resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} engines: {node: '>= 12.0.0'} + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash@4.18.1: resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} @@ -1997,6 +2567,10 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + lowercase-keys@2.0.0: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} @@ -2004,6 +2578,9 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -2028,6 +2605,14 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -2135,6 +2720,14 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + negotiator@1.0.0: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} @@ -2170,11 +2763,18 @@ packages: node-api-version@0.2.1: resolution: {integrity: sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==} + node-exports-info@1.6.0: + resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} + engines: {node: '>= 0.4'} + node-gyp@11.5.0: resolution: {integrity: sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==} engines: {node: ^18.17.0 || >=20.5.0} hasBin: true + node-releases@2.0.38: + resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==} + nopt@8.1.0: resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} engines: {node: ^18.17.0 || >=20.5.0} @@ -2184,10 +2784,41 @@ packages: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} + number-flow@0.5.12: + resolution: {integrity: sha512-CIs21h2JkfYG4rfgERaUNAk0Cz+Ef14fNJfSCbGGhgRgconQc9b7rcCQfi9SZ36kNjVXmsl2BrzDbjGtEgumAA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -2195,10 +2826,22 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} + open@11.0.0: + resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} + engines: {node: '>=20'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} @@ -2207,6 +2850,18 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-map@7.0.4: resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} engines: {node: '>=18'} @@ -2214,6 +2869,18 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -2222,6 +2889,9 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@1.11.1: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} @@ -2236,6 +2906,10 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + picomatch@4.0.4: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} @@ -2244,6 +2918,10 @@ packages: resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} engines: {node: '>=10.4.0'} + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} @@ -2257,6 +2935,14 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + powershell-utils@0.1.0: + resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} + engines: {node: '>=20'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + proc-log@5.0.0: resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -2269,6 +2955,9 @@ packages: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + proper-lockfile@4.1.2: resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} @@ -2279,18 +2968,21 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} - react-aria-components@1.16.0: - resolution: {integrity: sha512-MjHbTLpMFzzD2Tv5KbeXoZwPczuUWZcRavVvQQlNHRtXHH38D+sToMEYpNeir7Wh3K/XWtzeX3EujfJW6QNkrw==} + react-aria-components@1.17.0: + resolution: {integrity: sha512-0EyisMgvsFJ2aML3crDYv2tW5vT2Ryf8PGzY/g63JjDdCbLshlwazhS8JNtPF1vkTkungJJ6sVJbKyX+YKSoFA==} 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 - react-aria@3.47.0: - resolution: {integrity: sha512-nvahimIqdByl/PXk/xPkG30LPRzcin+/Uk0uFfwbbKRRFC9aa22a6BRULZLqVHwa9GaNyKe6CDUxO1Dde4v0kA==} + react-aria@3.48.0: + resolution: {integrity: sha512-jQjd4rBEIMqecBaAKYJbVGK6EqIHLa5znVQ7jwFyK5vCyljoj6KhgtiahmcIPsG5vG5vEDLw+ba+bEWn6A2P4w==} 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 @@ -2300,11 +2992,35 @@ packages: peerDependencies: react: ^19.2.5 - react-stately@3.45.0: - resolution: {integrity: sha512-G3bYr0BIiookpt4H05VeZUuVS/FslQAj2TeT8vDfCiL314Y+LtPXIPe/a3eamCA0wljy7z1EDYKV50Qbz7pcJg==} + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-resizable-panels@4.11.0: + resolution: {integrity: sha512-LPk/AkFDGkg7SsbOyL93ojrE6E7lhrxxDwnYNjfmnSeI6BE7Sje6dB24PXgZk8DeugdeXNk1LO+ohRqIjhxiLw==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + react-smooth@4.0.4: + resolution: {integrity: sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==} + 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 + + react-stately@3.46.0: + resolution: {integrity: sha512-OdxhWvHgs2L4OJGIs7hnuTr5WjjMM6enhNEAMRqiekhF8+ITvA2LRwNftOZwcogaoCslGYq5S2VQTQwnm0GbCA==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + react@19.2.5: resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} engines: {node: '>=0.10.0'} @@ -2317,6 +3033,24 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + recharts-scale@0.4.5: + resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} + + recharts@2.15.4: + resolution: {integrity: sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==} + engines: {node: '>=14'} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -2328,6 +3062,18 @@ packages: resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@2.0.0-next.6: + resolution: {integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==} + engines: {node: '>= 0.4'} + hasBin: true + responselike@2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} @@ -2339,6 +3085,10 @@ packages: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rimraf@2.6.3: resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -2348,12 +3098,31 @@ packages: resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} engines: {node: '>=8.0'} + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + safe-array-concat@1.1.4: + resolution: {integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==} + engines: {node: '>=0.4'} + safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -2378,6 +3147,11 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + semver@7.7.4: resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} @@ -2387,6 +3161,18 @@ packages: resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} engines: {node: '>=10'} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + sharp@0.34.5: resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2403,6 +3189,22 @@ packages: resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -2414,6 +3216,9 @@ packages: resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} engines: {node: '>=10'} + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + slice-ansi@3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} @@ -2448,10 +3253,17 @@ packages: resolution: {integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==} engines: {node: ^18.17.0 || >=20.5.0} + stable-hash@0.0.5: + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + stat-mode@1.0.0: resolution: {integrity: sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==} engines: {node: '>= 6'} + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -2460,6 +3272,29 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string.prototype.includes@2.0.1: + resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + engines: {node: '>= 0.4'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -2471,6 +3306,14 @@ packages: resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + styled-jsx@5.1.6: resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} @@ -2496,6 +3339,10 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + tailwind-merge@3.4.0: resolution: {integrity: sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==} @@ -2530,6 +3377,9 @@ packages: tiny-async-pool@1.3.0: resolution: {integrity: sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==} + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tinyglobby@0.2.16: resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} @@ -2541,6 +3391,10 @@ packages: resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -2548,24 +3402,68 @@ packages: truncate-utf8-bytes@1.0.2: resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} tw-animate-css@1.4.0: resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + type-fest@0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typescript-eslint@8.59.2: + resolution: {integrity: sha512-pJw051uomb3ZeCzGTpRb8RbEqB5Y4WWet8gl/GcTlU35BSx0PVdZ86/bqkQCyKKuraVQEK7r6kBHQXF+fBhkoQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + unique-filename@4.0.0: resolution: {integrity: sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -2582,6 +3480,15 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + unrs-resolver@1.11.1: + resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -2600,9 +3507,28 @@ packages: resolution: {integrity: sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==} engines: {node: '>=0.6.0'} + victory-vendor@36.9.2: + resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==} + wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.20: + resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} + engines: {node: '>= 0.4'} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -2613,6 +3539,10 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -2624,6 +3554,10 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + wsl-utils@0.3.1: + resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} + engines: {node: '>=20'} + xmlbuilder@15.1.1: resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} @@ -2632,6 +3566,9 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -2654,12 +3591,163 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} + engines: {node: '>=12.20'} + + zod-validation-error@4.0.2: + resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + + zod@4.4.3: + resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + snapshots: 7zip-bin@5.2.0: {} + '@adobe/react-spectrum-ui@1.2.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + + '@adobe/react-spectrum-workflow@2.3.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + + '@adobe/react-spectrum@3.47.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@internationalized/date': 3.12.1 + '@react-types/shared': 3.34.0(react@19.2.5) + '@spectrum-icons/ui': 3.7.0(@adobe/react-spectrum@3.47.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@spectrum-icons/workflow': 4.3.0(@adobe/react-spectrum@3.47.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@swc/helpers': 0.5.21 + client-only: 0.0.1 + clsx: 2.1.1 + react: 19.2.5 + react-aria: 3.48.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react-aria-components: 1.17.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react-dom: 19.2.5(react@19.2.5) + react-stately: 3.46.0(react@19.2.5) + react-transition-group: 4.4.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + use-sync-external-store: 1.6.0(react@19.2.5) + '@alloc/quick-lru@5.2.0': {} + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.3': {} + + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.3 + '@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.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.1': + dependencies: + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.29.3 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.29.2': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + + '@babel/parser@7.29.3': + dependencies: + '@babel/types': 7.29.0 + + '@babel/runtime@7.29.2': {} + + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 + + '@babel/traverse@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.3 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@clack/core@1.1.0': + dependencies: + sisteransi: 1.0.5 + + '@clack/prompts@1.1.0': + dependencies: + '@clack/core': 1.1.0 + sisteransi: 1.0.5 + '@develar/schema-utils@2.6.5': dependencies: ajv: 6.14.0 @@ -2758,18 +3846,75 @@ snapshots: dependencies: cross-dirname: 0.1.0 debug: 4.4.3 - fs-extra: 11.3.4 + fs-extra: 11.3.5 minimist: 1.2.8 postject: 1.0.0-alpha.6 transitivePeerDependencies: - supports-color optional: true + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.9.2': dependencies: tslib: 2.8.1 optional: true + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@2.6.1))': + dependencies: + eslint: 9.39.4(jiti@2.6.1) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.21.2': + dependencies: + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.5': + dependencies: + ajv: 6.14.0 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + minimatch: 3.1.5 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.39.4': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 + '@formatjs/ecma402-abstract@2.3.6': dependencies: '@formatjs/fast-memoize': 2.2.7 @@ -2796,28 +3941,34 @@ snapshots: dependencies: tslib: 2.8.1 - '@heroui/react@3.0.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2)': + '@heroui-pro/react@1.0.0-beta.3': + dependencies: + chalk: 5.6.2 + heroui-pro: 1.0.0-beta.9 + + '@heroui/react@3.0.4(@react-spectrum/provider@3.11.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2)': dependencies: - '@heroui/styles': 3.0.2(tailwind-merge@3.4.0)(tailwindcss@4.2.2) + '@heroui/styles': 3.0.4(tailwind-merge@3.4.0)(tailwindcss@4.2.2) '@radix-ui/react-avatar': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/ssr': 3.9.10(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/color': 3.1.4(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) + '@react-aria/i18n': 3.13.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@react-aria/ssr': 3.10.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@react-aria/utils': 3.34.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@react-stately/utils': 3.12.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@react-types/color': 3.2.0(@react-spectrum/provider@3.11.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@react-types/shared': 3.34.0(react@19.2.5) input-otp: 1.4.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 - react-aria-components: 1.16.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react-aria-components: 1.17.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react-dom: 19.2.5(react@19.2.5) tailwind-merge: 3.4.0 tailwind-variants: 3.2.2(tailwind-merge@3.4.0)(tailwindcss@4.2.2) tailwindcss: 4.2.2 transitivePeerDependencies: + - '@react-spectrum/provider' - '@types/react' - '@types/react-dom' - '@heroui/styles@3.0.2(tailwind-merge@3.4.0)(tailwindcss@4.2.2)': + '@heroui/styles@3.0.4(tailwind-merge@3.4.0)(tailwindcss@4.2.2)': dependencies: tailwind-variants: 3.2.2(tailwind-merge@3.4.0)(tailwindcss@4.2.2) tailwindcss: 4.2.2 @@ -2825,6 +3976,22 @@ snapshots: transitivePeerDependencies: - tailwind-merge + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 + + '@humanfs/node@0.16.8': + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 + + '@humanfs/types@0.15.0': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + '@img/colour@1.1.0': optional: true @@ -2922,20 +4089,20 @@ snapshots: '@img/sharp-win32-x64@0.34.5': optional: true - '@internationalized/date@3.12.0': + '@internationalized/date@3.12.1': dependencies: '@swc/helpers': 0.5.21 - '@internationalized/message@3.1.8': + '@internationalized/message@3.1.9': dependencies: '@swc/helpers': 0.5.21 intl-messageformat: 10.7.18 - '@internationalized/number@3.6.5': + '@internationalized/number@3.6.6': dependencies: '@swc/helpers': 0.5.21 - '@internationalized/string@3.2.7': + '@internationalized/string@3.2.8': dependencies: '@swc/helpers': 0.5.21 @@ -2979,1160 +4146,240 @@ snapshots: dependencies: debug: 4.4.3 fs-extra: 9.1.0 - lodash: 4.18.1 - tmp-promise: 3.0.3 - transitivePeerDependencies: - - supports-color - - '@next/env@16.2.3': {} - - '@next/swc-darwin-arm64@16.2.3': - optional: true - - '@next/swc-darwin-x64@16.2.3': - optional: true - - '@next/swc-linux-arm64-gnu@16.2.3': - optional: true - - '@next/swc-linux-arm64-musl@16.2.3': - optional: true - - '@next/swc-linux-x64-gnu@16.2.3': - optional: true - - '@next/swc-linux-x64-musl@16.2.3': - optional: true - - '@next/swc-win32-arm64-msvc@16.2.3': - optional: true - - '@next/swc-win32-x64-msvc@16.2.3': - optional: true - - '@npmcli/agent@3.0.0': - dependencies: - agent-base: 7.1.4 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - lru-cache: 10.4.3 - socks-proxy-agent: 8.0.5 - transitivePeerDependencies: - - supports-color - - '@npmcli/fs@4.0.0': - dependencies: - semver: 7.7.4 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@radix-ui/react-avatar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/react-context': 1.1.3(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.5) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.5)': - dependencies: - react: 19.2.5 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-context@1.1.3(@types/react@19.2.14)(react@19.2.5)': - dependencies: - react: 19.2.5 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.5) - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.5)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) - react: 19.2.5 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.5)': - dependencies: - react: 19.2.5 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.14)(react@19.2.5)': - dependencies: - react: 19.2.5 - use-sync-external-store: 1.6.0(react@19.2.5) - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.5)': - dependencies: - react: 19.2.5 - optionalDependencies: - '@types/react': 19.2.14 - - '@react-aria/autocomplete@3.0.0-rc.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/combobox': 3.15.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/focus': 3.21.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/listbox': 3.15.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/searchfield': 3.8.12(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/textfield': 3.18.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/autocomplete': 3.0.0-beta.4(react@19.2.5) - '@react-stately/combobox': 3.13.0(react@19.2.5) - '@react-types/autocomplete': 3.0.0-alpha.38(react@19.2.5) - '@react-types/button': 3.15.1(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/breadcrumbs@3.5.32(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/link': 3.8.9(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/breadcrumbs': 3.7.19(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/button@3.14.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/toolbar': 3.0.0-beta.24(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/toggle': 3.9.5(react@19.2.5) - '@react-types/button': 3.15.1(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/calendar@3.9.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@internationalized/date': 3.12.0 - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/live-announcer': 3.4.4 - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/calendar': 3.9.3(react@19.2.5) - '@react-types/button': 3.15.1(react@19.2.5) - '@react-types/calendar': 3.8.3(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/checkbox@3.16.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/form': 3.1.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/label': 3.7.25(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/toggle': 3.12.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/checkbox': 3.7.5(react@19.2.5) - '@react-stately/form': 3.2.4(react@19.2.5) - '@react-stately/toggle': 3.9.5(react@19.2.5) - '@react-types/checkbox': 3.10.4(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/collections@3.0.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/ssr': 3.9.10(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - use-sync-external-store: 1.6.0(react@19.2.5) - - '@react-aria/color@3.1.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/numberfield': 3.12.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/slider': 3.8.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/spinbutton': 3.7.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/textfield': 3.18.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/visually-hidden': 3.8.31(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/color': 3.9.5(react@19.2.5) - '@react-stately/form': 3.2.4(react@19.2.5) - '@react-types/color': 3.1.4(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/combobox@3.15.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/focus': 3.21.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/listbox': 3.15.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/live-announcer': 3.4.4 - '@react-aria/menu': 3.21.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/overlays': 3.31.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/selection': 3.27.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/textfield': 3.18.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/collections': 3.12.10(react@19.2.5) - '@react-stately/combobox': 3.13.0(react@19.2.5) - '@react-stately/form': 3.2.4(react@19.2.5) - '@react-types/button': 3.15.1(react@19.2.5) - '@react-types/combobox': 3.14.0(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/datepicker@3.16.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@internationalized/date': 3.12.0 - '@internationalized/number': 3.6.5 - '@internationalized/string': 3.2.7 - '@react-aria/focus': 3.21.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/form': 3.1.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/label': 3.7.25(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/spinbutton': 3.7.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/datepicker': 3.16.1(react@19.2.5) - '@react-stately/form': 3.2.4(react@19.2.5) - '@react-types/button': 3.15.1(react@19.2.5) - '@react-types/calendar': 3.8.3(react@19.2.5) - '@react-types/datepicker': 3.13.5(react@19.2.5) - '@react-types/dialog': 3.5.24(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/dialog@3.5.34(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/overlays': 3.31.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/dialog': 3.5.24(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/disclosure@3.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/ssr': 3.9.10(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/disclosure': 3.0.11(react@19.2.5) - '@react-types/button': 3.15.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/dnd@3.11.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@internationalized/string': 3.2.7 - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/live-announcer': 3.4.4 - '@react-aria/overlays': 3.31.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/collections': 3.12.10(react@19.2.5) - '@react-stately/dnd': 3.7.4(react@19.2.5) - '@react-types/button': 3.15.1(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/focus@3.21.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - clsx: 2.1.1 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/form@3.1.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/form': 3.2.4(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/grid@3.14.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/focus': 3.21.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/live-announcer': 3.4.4 - '@react-aria/selection': 3.27.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/collections': 3.12.10(react@19.2.5) - '@react-stately/grid': 3.11.9(react@19.2.5) - '@react-stately/selection': 3.20.9(react@19.2.5) - '@react-types/checkbox': 3.10.4(react@19.2.5) - '@react-types/grid': 3.3.8(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/gridlist@3.14.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/focus': 3.21.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/grid': 3.14.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/selection': 3.27.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/list': 3.13.4(react@19.2.5) - '@react-stately/tree': 3.9.6(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/i18n@3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - 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@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/interactions@3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/ssr': 3.9.10(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/flags': 3.1.2 - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/label@3.7.25(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/landmark@3.0.10(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - use-sync-external-store: 1.6.0(react@19.2.5) - - '@react-aria/link@3.8.9(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/link': 3.6.7(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/listbox@3.15.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/label': 3.7.25(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/selection': 3.27.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/collections': 3.12.10(react@19.2.5) - '@react-stately/list': 3.13.4(react@19.2.5) - '@react-types/listbox': 3.7.6(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/live-announcer@3.4.4': - dependencies: - '@swc/helpers': 0.5.21 - - '@react-aria/menu@3.21.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/focus': 3.21.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/overlays': 3.31.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/selection': 3.27.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/collections': 3.12.10(react@19.2.5) - '@react-stately/menu': 3.9.11(react@19.2.5) - '@react-stately/selection': 3.20.9(react@19.2.5) - '@react-stately/tree': 3.9.6(react@19.2.5) - '@react-types/button': 3.15.1(react@19.2.5) - '@react-types/menu': 3.10.7(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/meter@3.4.30(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/progress': 3.4.30(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/meter': 3.4.15(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/numberfield@3.12.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/live-announcer': 3.4.4 - '@react-aria/spinbutton': 3.7.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/textfield': 3.18.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/form': 3.2.4(react@19.2.5) - '@react-stately/numberfield': 3.11.0(react@19.2.5) - '@react-types/button': 3.15.1(react@19.2.5) - '@react-types/numberfield': 3.8.18(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/overlays@3.31.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/focus': 3.21.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/ssr': 3.9.10(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/visually-hidden': 3.8.31(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/flags': 3.1.2 - '@react-stately/overlays': 3.6.23(react@19.2.5) - '@react-types/button': 3.15.1(react@19.2.5) - '@react-types/overlays': 3.9.4(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/progress@3.4.30(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/label': 3.7.25(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/progress': 3.5.18(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/radio@3.12.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/focus': 3.21.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/form': 3.1.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/label': 3.7.25(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/radio': 3.11.5(react@19.2.5) - '@react-types/radio': 3.9.4(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/searchfield@3.8.12(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/textfield': 3.18.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/searchfield': 3.5.19(react@19.2.5) - '@react-types/button': 3.15.1(react@19.2.5) - '@react-types/searchfield': 3.6.8(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/select@3.17.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/form': 3.1.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/label': 3.7.25(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/listbox': 3.15.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/menu': 3.21.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/selection': 3.27.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/visually-hidden': 3.8.31(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/select': 3.9.2(react@19.2.5) - '@react-types/button': 3.15.1(react@19.2.5) - '@react-types/select': 3.12.2(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/selection@3.27.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/focus': 3.21.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/selection': 3.20.9(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/separator@3.4.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/slider@3.8.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/label': 3.7.25(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/slider': 3.7.5(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@react-types/slider': 3.8.4(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/spinbutton@3.7.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/live-announcer': 3.4.4 - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/button': 3.15.1(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/ssr@3.9.10(react@19.2.5)': - dependencies: - '@swc/helpers': 0.5.21 - react: 19.2.5 - - '@react-aria/switch@3.7.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/toggle': 3.12.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/toggle': 3.9.5(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@react-types/switch': 3.5.17(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/table@3.17.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/focus': 3.21.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/grid': 3.14.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/live-announcer': 3.4.4 - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/visually-hidden': 3.8.31(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/collections': 3.12.10(react@19.2.5) - '@react-stately/flags': 3.1.2 - '@react-stately/table': 3.15.4(react@19.2.5) - '@react-types/checkbox': 3.10.4(react@19.2.5) - '@react-types/grid': 3.3.8(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@react-types/table': 3.13.6(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/tabs@3.11.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/focus': 3.21.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/selection': 3.27.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/tabs': 3.8.9(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@react-types/tabs': 3.3.22(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/tag@3.8.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/gridlist': 3.14.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/label': 3.7.25(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/selection': 3.27.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/list': 3.13.4(react@19.2.5) - '@react-types/button': 3.15.1(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/textfield@3.18.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/form': 3.1.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/label': 3.7.25(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/form': 3.2.4(react@19.2.5) - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@react-types/textfield': 3.12.8(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/toast@3.0.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/landmark': 3.0.10(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/toast': 3.1.3(react@19.2.5) - '@react-types/button': 3.15.1(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/toggle@3.12.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/toggle': 3.9.5(react@19.2.5) - '@react-types/checkbox': 3.10.4(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/toolbar@3.0.0-beta.24(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/focus': 3.21.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/tooltip@3.9.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/tooltip': 3.5.11(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@react-types/tooltip': 3.5.2(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/tree@3.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/gridlist': 3.14.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/selection': 3.27.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/tree': 3.9.6(react@19.2.5) - '@react-types/button': 3.15.1(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/utils@3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/ssr': 3.9.10(react@19.2.5) - '@react-stately/flags': 3.1.2 - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - clsx: 2.1.1 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/virtualizer@4.1.13(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/virtualizer': 4.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-aria/visually-hidden@3.8.31(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-stately/autocomplete@3.0.0-beta.4(react@19.2.5)': - dependencies: - '@react-stately/utils': 3.11.0(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - - '@react-stately/calendar@3.9.3(react@19.2.5)': - dependencies: - '@internationalized/date': 3.12.0 - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/calendar': 3.8.3(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - - '@react-stately/checkbox@3.7.5(react@19.2.5)': - dependencies: - '@react-stately/form': 3.2.4(react@19.2.5) - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/checkbox': 3.10.4(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - - '@react-stately/collections@3.12.10(react@19.2.5)': - dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - - '@react-stately/color@3.9.5(react@19.2.5)': - dependencies: - '@internationalized/number': 3.6.5 - '@internationalized/string': 3.2.7 - '@react-stately/form': 3.2.4(react@19.2.5) - '@react-stately/numberfield': 3.11.0(react@19.2.5) - '@react-stately/slider': 3.7.5(react@19.2.5) - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/color': 3.1.4(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - - '@react-stately/combobox@3.13.0(react@19.2.5)': - dependencies: - '@react-stately/collections': 3.12.10(react@19.2.5) - '@react-stately/form': 3.2.4(react@19.2.5) - '@react-stately/list': 3.13.4(react@19.2.5) - '@react-stately/overlays': 3.6.23(react@19.2.5) - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/combobox': 3.14.0(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - - '@react-stately/data@3.15.2(react@19.2.5)': - dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - - '@react-stately/datepicker@3.16.1(react@19.2.5)': - dependencies: - '@internationalized/date': 3.12.0 - '@internationalized/number': 3.6.5 - '@internationalized/string': 3.2.7 - '@react-stately/form': 3.2.4(react@19.2.5) - '@react-stately/overlays': 3.6.23(react@19.2.5) - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/datepicker': 3.13.5(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - - '@react-stately/disclosure@3.0.11(react@19.2.5)': - dependencies: - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - - '@react-stately/dnd@3.7.4(react@19.2.5)': - dependencies: - '@react-stately/selection': 3.20.9(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - - '@react-stately/flags@3.1.2': - dependencies: - '@swc/helpers': 0.5.21 - - '@react-stately/form@3.2.4(react@19.2.5)': - dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - - '@react-stately/grid@3.11.9(react@19.2.5)': - dependencies: - '@react-stately/collections': 3.12.10(react@19.2.5) - '@react-stately/selection': 3.20.9(react@19.2.5) - '@react-types/grid': 3.3.8(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - - '@react-stately/layout@4.6.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-stately/collections': 3.12.10(react@19.2.5) - '@react-stately/table': 3.15.4(react@19.2.5) - '@react-stately/virtualizer': 4.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/grid': 3.3.8(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@react-types/table': 3.13.6(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - - '@react-stately/list@3.13.4(react@19.2.5)': - dependencies: - '@react-stately/collections': 3.12.10(react@19.2.5) - '@react-stately/selection': 3.20.9(react@19.2.5) - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - - '@react-stately/menu@3.9.11(react@19.2.5)': - dependencies: - '@react-stately/overlays': 3.6.23(react@19.2.5) - '@react-types/menu': 3.10.7(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - - '@react-stately/numberfield@3.11.0(react@19.2.5)': - dependencies: - '@internationalized/number': 3.6.5 - '@react-stately/form': 3.2.4(react@19.2.5) - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/numberfield': 3.8.18(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - - '@react-stately/overlays@3.6.23(react@19.2.5)': - dependencies: - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/overlays': 3.9.4(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 + lodash: 4.18.1 + tmp-promise: 3.0.3 + transitivePeerDependencies: + - supports-color - '@react-stately/radio@3.11.5(react@19.2.5)': + '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@react-stately/form': 3.2.4(react@19.2.5) - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/radio': 3.9.4(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.9.2 + '@tybys/wasm-util': 0.10.2 + optional: true - '@react-stately/searchfield@3.5.19(react@19.2.5)': - dependencies: - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/searchfield': 3.6.8(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 + '@next/env@16.2.3': {} - '@react-stately/select@3.9.2(react@19.2.5)': + '@next/eslint-plugin-next@16.2.6': dependencies: - '@react-stately/form': 3.2.4(react@19.2.5) - '@react-stately/list': 3.13.4(react@19.2.5) - '@react-stately/overlays': 3.6.23(react@19.2.5) - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/select': 3.12.2(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 + fast-glob: 3.3.1 - '@react-stately/selection@3.20.9(react@19.2.5)': - dependencies: - '@react-stately/collections': 3.12.10(react@19.2.5) - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 + '@next/swc-darwin-arm64@16.2.3': + optional: true - '@react-stately/slider@3.7.5(react@19.2.5)': - dependencies: - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@react-types/slider': 3.8.4(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 + '@next/swc-darwin-x64@16.2.3': + optional: true - '@react-stately/table@3.15.4(react@19.2.5)': - dependencies: - '@react-stately/collections': 3.12.10(react@19.2.5) - '@react-stately/flags': 3.1.2 - '@react-stately/grid': 3.11.9(react@19.2.5) - '@react-stately/selection': 3.20.9(react@19.2.5) - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/grid': 3.3.8(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@react-types/table': 3.13.6(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 + '@next/swc-linux-arm64-gnu@16.2.3': + optional: true - '@react-stately/tabs@3.8.9(react@19.2.5)': - dependencies: - '@react-stately/list': 3.13.4(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@react-types/tabs': 3.3.22(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 + '@next/swc-linux-arm64-musl@16.2.3': + optional: true - '@react-stately/toast@3.1.3(react@19.2.5)': - dependencies: - '@swc/helpers': 0.5.21 - react: 19.2.5 - use-sync-external-store: 1.6.0(react@19.2.5) + '@next/swc-linux-x64-gnu@16.2.3': + optional: true - '@react-stately/toggle@3.9.5(react@19.2.5)': - dependencies: - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/checkbox': 3.10.4(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 + '@next/swc-linux-x64-musl@16.2.3': + optional: true - '@react-stately/tooltip@3.5.11(react@19.2.5)': - dependencies: - '@react-stately/overlays': 3.6.23(react@19.2.5) - '@react-types/tooltip': 3.5.2(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 + '@next/swc-win32-arm64-msvc@16.2.3': + optional: true - '@react-stately/tree@3.9.6(react@19.2.5)': - dependencies: - '@react-stately/collections': 3.12.10(react@19.2.5) - '@react-stately/selection': 3.20.9(react@19.2.5) - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 + '@next/swc-win32-x64-msvc@16.2.3': + optional: true - '@react-stately/utils@3.11.0(react@19.2.5)': + '@nodelib/fs.scandir@2.1.5': dependencies: - '@swc/helpers': 0.5.21 - react: 19.2.5 + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 - '@react-stately/virtualizer@4.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) - '@swc/helpers': 0.5.21 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) + '@nodelib/fs.stat@2.0.5': {} - '@react-types/autocomplete@3.0.0-alpha.38(react@19.2.5)': + '@nodelib/fs.walk@1.2.8': dependencies: - '@react-types/combobox': 3.14.0(react@19.2.5) - '@react-types/searchfield': 3.6.8(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - react: 19.2.5 + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 - '@react-types/breadcrumbs@3.7.19(react@19.2.5)': - dependencies: - '@react-types/link': 3.6.7(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - react: 19.2.5 + '@nolyfill/is-core-module@1.0.39': {} - '@react-types/button@3.15.1(react@19.2.5)': + '@npmcli/agent@3.0.0': dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) - react: 19.2.5 + agent-base: 7.1.4 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 10.4.3 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color - '@react-types/calendar@3.8.3(react@19.2.5)': + '@npmcli/fs@4.0.0': dependencies: - '@internationalized/date': 3.12.0 - '@react-types/shared': 3.33.1(react@19.2.5) - react: 19.2.5 + semver: 7.7.4 - '@react-types/checkbox@3.10.4(react@19.2.5)': + '@number-flow/react@0.5.14(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) + esm-env: 1.2.2 + number-flow: 0.5.12 react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - '@react-types/color@3.1.4(react@19.2.5)': - dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) - '@react-types/slider': 3.8.4(react@19.2.5) - react: 19.2.5 + '@pkgjs/parseargs@0.11.0': + optional: true - '@react-types/combobox@3.14.0(react@19.2.5)': + '@radix-ui/react-avatar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) + '@radix-ui/react-context': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@react-types/datepicker@3.13.5(react@19.2.5)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@internationalized/date': 3.12.0 - '@react-types/calendar': 3.8.3(react@19.2.5) - '@react-types/overlays': 3.9.4(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 - '@react-types/dialog@3.5.24(react@19.2.5)': + '@radix-ui/react-context@1.1.3(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@react-types/overlays': 3.9.4(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 - '@react-types/form@3.7.18(react@19.2.5)': + '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) + '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.5) react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@react-types/grid@3.3.8(react@19.2.5)': + '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 - '@react-types/link@3.6.7(react@19.2.5)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 - '@react-types/listbox@3.7.6(react@19.2.5)': + '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) react: 19.2.5 + use-sync-external-store: 1.6.0(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 - '@react-types/menu@3.10.7(react@19.2.5)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@react-types/overlays': 3.9.4(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 - '@react-types/meter@3.4.15(react@19.2.5)': + '@react-aria/color@3.2.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@react-types/progress': 3.5.18(react@19.2.5) + '@swc/helpers': 0.5.21 react: 19.2.5 + react-aria: 3.48.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react-dom: 19.2.5(react@19.2.5) - '@react-types/numberfield@3.8.18(react@19.2.5)': + '@react-aria/i18n@3.13.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) + '@internationalized/date': 3.12.1 + '@internationalized/message': 3.1.9 + '@internationalized/string': 3.2.8 + '@swc/helpers': 0.5.21 react: 19.2.5 + react-aria: 3.48.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react-dom: 19.2.5(react@19.2.5) - '@react-types/overlays@3.9.4(react@19.2.5)': + '@react-aria/ssr@3.10.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) + '@swc/helpers': 0.5.21 react: 19.2.5 + react-aria: 3.48.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react-dom: 19.2.5(react@19.2.5) - '@react-types/progress@3.5.18(react@19.2.5)': + '@react-aria/utils@3.34.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) + '@swc/helpers': 0.5.21 react: 19.2.5 + react-aria: 3.48.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react-dom: 19.2.5(react@19.2.5) + react-stately: 3.46.0(react@19.2.5) - '@react-types/radio@3.9.4(react@19.2.5)': + '@react-spectrum/color@3.2.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) + '@adobe/react-spectrum': 3.47.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@swc/helpers': 0.5.21 react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-stately: 3.46.0(react@19.2.5) - '@react-types/searchfield@3.6.8(react@19.2.5)': + '@react-spectrum/provider@3.11.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) - '@react-types/textfield': 3.12.8(react@19.2.5) + '@adobe/react-spectrum': 3.47.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@swc/helpers': 0.5.21 react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - '@react-types/select@3.12.2(react@19.2.5)': + '@react-stately/color@3.10.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) + '@swc/helpers': 0.5.21 react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-stately: 3.46.0(react@19.2.5) - '@react-types/shared@3.33.1(react@19.2.5)': + '@react-stately/utils@3.12.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: + '@swc/helpers': 0.5.21 react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-stately: 3.46.0(react@19.2.5) - '@react-types/slider@3.8.4(react@19.2.5)': + '@react-types/color@3.2.0(@react-spectrum/provider@3.11.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) + '@react-aria/color': 3.2.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@react-spectrum/color': 3.2.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@react-spectrum/provider': 3.11.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@react-stately/color': 3.10.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - '@react-types/switch@3.5.17(react@19.2.5)': + '@react-types/shared@3.34.0(react@19.2.5)': dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) react: 19.2.5 - '@react-types/table@3.13.6(react@19.2.5)': - dependencies: - '@react-types/grid': 3.3.8(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - react: 19.2.5 + '@rtsao/scc@1.1.0': {} - '@react-types/tabs@3.3.22(react@19.2.5)': - dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) - react: 19.2.5 + '@sindresorhus/is@4.6.0': {} - '@react-types/textfield@3.12.8(react@19.2.5)': + '@spectrum-icons/ui@3.7.0(@adobe/react-spectrum@3.47.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@react-types/shared': 3.33.1(react@19.2.5) + '@adobe/react-spectrum': 3.47.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@adobe/react-spectrum-ui': 1.2.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@babel/runtime': 7.29.2 + '@swc/helpers': 0.5.21 react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - '@react-types/tooltip@3.5.2(react@19.2.5)': + '@spectrum-icons/workflow@4.3.0(@adobe/react-spectrum@3.47.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@react-types/overlays': 3.9.4(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) + '@adobe/react-spectrum': 3.47.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@adobe/react-spectrum-workflow': 2.3.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@swc/helpers': 0.5.21 react: 19.2.5 - - '@sindresorhus/is@4.6.0': {} + react-dom: 19.2.5(react@19.2.5) '@swc/helpers@0.5.15': dependencies: @@ -4222,6 +4469,11 @@ snapshots: '@tanstack/query-core': 5.97.0 react: 19.2.5 + '@tybys/wasm-util@0.10.2': + dependencies: + tslib: 2.8.1 + optional: true + '@types/cacheable-request@6.0.3': dependencies: '@types/http-cache-semantics': 4.2.0 @@ -4229,56 +4481,245 @@ snapshots: '@types/node': 22.19.17 '@types/responselike': 1.0.3 + '@types/d3-array@3.2.2': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-shape@3.1.8': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + '@types/debug@4.1.13': dependencies: '@types/ms': 2.1.0 + '@types/estree@1.0.9': {} + '@types/fs-extra@9.0.13': dependencies: '@types/node': 22.19.17 - '@types/http-cache-semantics@4.2.0': {} + '@types/http-cache-semantics@4.2.0': {} + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/keyv@3.1.4': + dependencies: + '@types/node': 22.19.17 + + '@types/ms@2.1.0': {} + + '@types/node@22.19.17': + dependencies: + undici-types: 6.21.0 + + '@types/plist@3.0.5': + dependencies: + '@types/node': 22.19.17 + xmlbuilder: 15.1.1 + optional: true + + '@types/react-dom@19.2.3(@types/react@19.2.14)': + dependencies: + '@types/react': 19.2.14 + + '@types/react@19.2.14': + dependencies: + csstype: 3.2.3 + + '@types/responselike@1.0.3': + dependencies: + '@types/node': 22.19.17 + + '@types/verror@1.10.11': + optional: true + + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 22.19.17 + optional: true + + '@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.59.2 + '@typescript-eslint/type-utils': 8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.59.2 + eslint: 9.39.4(jiti@2.6.1) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.59.2 + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.59.2 + debug: 4.4.3 + eslint: 9.39.4(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.59.2(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@5.9.3) + '@typescript-eslint/types': 8.59.2 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.59.2': + dependencies: + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/visitor-keys': 8.59.2 + + '@typescript-eslint/tsconfig-utils@8.59.2(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.4(jiti@2.6.1) + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.59.2': {} + + '@typescript-eslint/typescript-estree@8.59.2(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.59.2(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@5.9.3) + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/visitor-keys': 8.59.2 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.7.4 + tinyglobby: 0.2.16 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.59.2 + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.9.3) + eslint: 9.39.4(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.59.2': + dependencies: + '@typescript-eslint/types': 8.59.2 + eslint-visitor-keys: 5.0.1 + + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + optional: true + + '@unrs/resolver-binding-android-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + optional: true - '@types/keyv@3.1.4': - dependencies: - '@types/node': 22.19.17 + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + optional: true - '@types/ms@2.1.0': {} + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + optional: true - '@types/node@22.19.17': - dependencies: - undici-types: 6.21.0 + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + optional: true - '@types/plist@3.0.5': - dependencies: - '@types/node': 22.19.17 - xmlbuilder: 15.1.1 + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': optional: true - '@types/react-dom@19.2.3(@types/react@19.2.14)': - dependencies: - '@types/react': 19.2.14 + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + optional: true - '@types/react@19.2.14': + '@unrs/resolver-binding-wasm32-wasi@1.11.1': dependencies: - csstype: 3.2.3 + '@napi-rs/wasm-runtime': 0.2.12 + optional: true - '@types/responselike@1.0.3': - dependencies: - '@types/node': 22.19.17 + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + optional: true - '@types/verror@1.10.11': + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': optional: true - '@types/yauzl@2.10.3': - dependencies: - '@types/node': 22.19.17 + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true '@xmldom/xmldom@0.8.12': {} + '@zowe/secrets-for-zowe-sdk@8.29.4': + optional: true + abbrev@3.0.1: {} + acorn-jsx@5.3.2(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + + acorn@8.16.0: {} + agent-base@7.1.4: {} ajv-keywords@3.5.2(ajv@6.14.0): @@ -4349,20 +4790,105 @@ snapshots: argparse@2.0.1: {} + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + + aria-query@5.3.2: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-includes@3.1.9: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.findlastindex@1.2.6: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-shim-unscopables: 1.1.0 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + assert-plus@1.0.0: optional: true + ast-types-flow@0.0.8: {} + astral-regex@2.0.0: optional: true async-exit-hook@2.0.1: {} + async-function@1.0.0: {} + async@3.2.6: {} asynckit@0.4.0: {} at-least-node@1.0.0: {} + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + axe-core@4.11.4: {} + + axobject-query@4.1.0: {} + balanced-match@1.0.2: {} balanced-match@4.0.4: {} @@ -4393,6 +4919,18 @@ snapshots: dependencies: balanced-match: 4.0.4 + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.28.2: + dependencies: + baseline-browser-mapping: 2.10.18 + caniuse-lite: 1.0.30001787 + electron-to-chromium: 1.5.353 + node-releases: 2.0.38 + update-browserslist-db: 1.2.3(browserslist@4.28.2) + buffer-crc32@0.2.13: {} buffer-from@1.1.2: {} @@ -4430,6 +4968,10 @@ snapshots: transitivePeerDependencies: - supports-color + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + cacache@19.0.1: dependencies: '@npmcli/fs': 4.0.0 @@ -4462,6 +5004,20 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 + call-bind@1.0.9: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + caniuse-lite@1.0.30001787: {} chalk@4.1.2: @@ -4469,6 +5025,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.6.2: {} + chownr@3.0.0: {} chromium-pickle-js@0.2.0: {} @@ -4515,6 +5073,8 @@ snapshots: dependencies: delayed-stream: 1.0.0 + commander@14.0.3: {} + commander@5.1.0: {} commander@9.5.0: @@ -4533,6 +5093,8 @@ snapshots: tree-kill: 1.2.2 yargs: 17.7.2 + convert-source-map@2.0.0: {} + core-util-is@1.0.2: optional: true @@ -4552,16 +5114,89 @@ snapshots: csstype@3.2.3: {} + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-color@3.1.0: {} + + d3-ease@3.0.1: {} + + d3-format@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@3.1.0: {} + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.2 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + damerau-levenshtein@1.0.8: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + debug@4.4.3: dependencies: ms: 2.1.3 + decimal.js-light@2.5.1: {} + decimal.js@10.6.0: {} decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 + deep-is@0.1.4: {} + + default-browser-id@5.0.1: {} + + default-browser@5.5.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + defaults@1.0.4: dependencies: clone: 1.0.4 @@ -4573,14 +5208,14 @@ snapshots: es-define-property: 1.0.1 es-errors: 1.3.0 gopd: 1.2.0 - optional: true + + define-lazy-prop@3.0.0: {} define-properties@1.2.1: dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 - optional: true delayed-stream@1.0.0: {} @@ -4619,6 +5254,15 @@ snapshots: verror: 1.10.1 optional: true + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.29.2 + csstype: 3.2.3 + dotenv-expand@11.0.7: dependencies: dotenv: 16.6.1 @@ -4659,88 +5303,390 @@ snapshots: simple-update-notifier: 2.0.0 yargs: 17.7.2 transitivePeerDependencies: - - electron-builder-squirrel-windows + - electron-builder-squirrel-windows + - supports-color + + electron-is-dev@3.0.1: {} + + electron-publish@26.9.0: + dependencies: + '@types/fs-extra': 9.0.13 + builder-util: 26.9.0 + builder-util-runtime: 9.6.0 + chalk: 4.1.2 + form-data: 4.0.5 + fs-extra: 10.1.0 + lazy-val: 1.0.5 + mime: 2.6.0 + transitivePeerDependencies: + - supports-color + + electron-to-chromium@1.5.353: {} + + electron-winstaller@5.4.0: + dependencies: + '@electron/asar': 3.4.1 + debug: 4.4.3 + fs-extra: 7.0.1 + lodash: 4.18.1 + temp: 0.9.4 + optionalDependencies: + '@electron/windows-sign': 1.2.2 + transitivePeerDependencies: + - supports-color + + electron@39.8.7: + dependencies: + '@electron/get': 2.0.3 + '@types/node': 22.19.17 + extract-zip: 2.0.1 + transitivePeerDependencies: + - supports-color + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + optional: true + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.20.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.2 + + env-paths@2.2.1: {} + + err-code@2.0.3: {} + + es-abstract@1.24.2: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.4 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.20 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-iterator-helpers@1.3.2: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + math-intrinsics: 1.1.0 + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + es6-error@4.1.1: + optional: true + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-next@16.2.6(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3): + dependencies: + '@next/eslint-plugin-next': 16.2.6 + eslint: 9.39.4(jiti@2.6.1) + eslint-import-resolver-node: 0.3.10 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-react-hooks: 7.1.1(eslint@9.39.4(jiti@2.6.1)) + globals: 16.4.0 + typescript-eslint: 8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-webpack + - eslint-plugin-import-x - supports-color - electron-is-dev@3.0.1: {} - - electron-publish@26.9.0: + eslint-import-resolver-node@0.3.10: dependencies: - '@types/fs-extra': 9.0.13 - builder-util: 26.9.0 - builder-util-runtime: 9.6.0 - chalk: 4.1.2 - form-data: 4.0.5 - fs-extra: 10.1.0 - lazy-val: 1.0.5 - mime: 2.6.0 + debug: 3.2.7 + is-core-module: 2.16.2 + resolve: 2.0.0-next.6 transitivePeerDependencies: - supports-color - electron-winstaller@5.4.0: + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): dependencies: - '@electron/asar': 3.4.1 + '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 - fs-extra: 7.0.1 - lodash: 4.18.1 - temp: 0.9.4 + eslint: 9.39.4(jiti@2.6.1) + get-tsconfig: 4.14.0 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.16 + unrs-resolver: 1.11.1 optionalDependencies: - '@electron/windows-sign': 1.2.2 + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color - electron@39.8.7: + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): dependencies: - '@electron/get': 2.0.3 - '@types/node': 22.19.17 - extract-zip: 2.0.1 + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.4(jiti@2.6.1) + eslint-import-resolver-node: 0.3.10 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.39.4(jiti@2.6.1) + eslint-import-resolver-node: 0.3.10 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + hasown: 2.0.2 + is-core-module: 2.16.2 + is-glob: 4.0.3 + minimatch: 3.1.5 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color - encoding@0.1.13: + eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4(jiti@2.6.1)): dependencies: - iconv-lite: 0.6.3 - optional: true + aria-query: 5.3.2 + array-includes: 3.1.9 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.8 + axe-core: 4.11.4 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 9.39.4(jiti@2.6.1) + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.5 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + + eslint-plugin-react-hooks@7.1.1(eslint@9.39.4(jiti@2.6.1)): + dependencies: + '@babel/core': 7.29.0 + '@babel/parser': 7.29.3 + eslint: 9.39.4(jiti@2.6.1) + hermes-parser: 0.25.1 + zod: 4.4.3 + zod-validation-error: 4.0.2(zod@4.4.3) + transitivePeerDependencies: + - supports-color - end-of-stream@1.4.5: + eslint-plugin-react@7.37.5(eslint@9.39.4(jiti@2.6.1)): dependencies: - once: 1.4.0 + array-includes: 3.1.9 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.3.2 + eslint: 9.39.4(jiti@2.6.1) + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.5 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.6 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 - enhanced-resolve@5.20.1: + eslint-scope@8.4.0: dependencies: - graceful-fs: 4.2.11 - tapable: 2.3.2 + esrecurse: 4.3.0 + estraverse: 5.3.0 - env-paths@2.2.1: {} + eslint-visitor-keys@3.4.3: {} - err-code@2.0.3: {} + eslint-visitor-keys@4.2.1: {} - es-define-property@1.0.1: {} + eslint-visitor-keys@5.0.1: {} - es-errors@1.3.0: {} + eslint@9.39.4(jiti@2.6.1): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/regexpp': 4.12.2 + '@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.8 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.9 + ajv: 6.14.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + 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.4 + optionalDependencies: + jiti: 2.6.1 + transitivePeerDependencies: + - supports-color - es-object-atoms@1.1.1: + esm-env@1.2.2: {} + + espree@10.4.0: dependencies: - es-errors: 1.3.0 + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 4.2.1 - es-set-tostringtag@2.1.0: + esquery@1.7.0: dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 + estraverse: 5.3.0 - es6-error@4.1.1: - optional: true + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 - escalade@3.2.0: {} + estraverse@5.3.0: {} - escape-string-regexp@4.0.0: - optional: true + esutils@2.0.3: {} + + eventemitter3@4.0.7: {} + + eventsource-parser@3.0.8: {} + + eventsource@4.1.0: + dependencies: + eventsource-parser: 3.0.8 exponential-backoff@3.1.3: {} @@ -4759,8 +5705,24 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-equals@5.4.0: {} + + fast-glob@3.3.1: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-json-stable-stringify@2.1.0: {} + fast-levenshtein@2.0.6: {} + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + fd-slicer@1.1.0: dependencies: pend: 1.2.0 @@ -4769,10 +5731,44 @@ snapshots: optionalDependencies: picomatch: 4.0.4 + figlet@1.11.0: + dependencies: + commander: 14.0.3 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + filelist@1.0.6: dependencies: minimatch: 5.1.9 + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-up@7.0.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.4.2 + keyv: 4.5.4 + + flatted@3.4.2: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 @@ -4807,6 +5803,13 @@ snapshots: jsonfile: 6.2.0 universalify: 2.0.1 + fs-extra@11.3.5: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + optional: true + fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 @@ -4834,6 +5837,21 @@ snapshots: function-bind@1.1.2: {} + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + generator-function@2.0.1: {} + + gensync@1.0.0-beta.2: {} + get-caller-file@2.0.5: {} get-intrinsic@1.3.0: @@ -4858,6 +5876,24 @@ snapshots: dependencies: pump: 3.0.4 + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-tsconfig@4.14.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + glob@10.5.0: dependencies: foreground-child: 3.3.1 @@ -4886,11 +5922,14 @@ snapshots: serialize-error: 7.0.1 optional: true + globals@14.0.0: {} + + globals@16.4.0: {} + globalthis@1.0.4: dependencies: define-properties: 1.2.1 gopd: 1.2.0 - optional: true gopd@1.2.0: {} @@ -4910,12 +5949,17 @@ snapshots: graceful-fs@4.2.11: {} + has-bigints@1.1.0: {} + has-flag@4.0.0: {} has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 - optional: true + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 has-symbols@1.1.0: {} @@ -4927,6 +5971,31 @@ snapshots: dependencies: function-bind: 1.1.2 + hasown@2.0.3: + dependencies: + function-bind: 1.1.2 + + hermes-estree@0.25.1: {} + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 + + heroui-pro@1.0.0-beta.9: + dependencies: + '@clack/prompts': 1.1.0 + chalk: 5.6.2 + commander: 14.0.3 + eventsource: 4.1.0 + figlet: 1.11.0 + find-up: 7.0.0 + jwt-decode: 4.0.0 + open: 11.0.0 + semver: 7.7.2 + tar: 7.5.13 + optionalDependencies: + '@zowe/secrets-for-zowe-sdk': 8.29.4 + hosted-git-info@4.1.0: dependencies: lru-cache: 6.0.0 @@ -4964,6 +6033,15 @@ snapshots: ieee754@1.2.1: {} + ignore@5.3.2: {} + + ignore@7.0.5: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + imurmurhash@0.1.4: {} inflight@1.0.6: @@ -4978,6 +6056,14 @@ snapshots: react: 19.2.5 react-dom: 19.2.5(react@19.2.5) + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + internmap@2.0.3: {} + intl-messageformat@10.7.18: dependencies: '@formatjs/ecma402-abstract': 2.3.6 @@ -4987,12 +6073,138 @@ snapshots: ip-address@10.1.0: {} + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-bun-module@2.0.0: + dependencies: + semver: 7.7.4 + + is-callable@1.2.7: {} + + is-core-module@2.16.2: + dependencies: + hasown: 2.0.3 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + is-fullwidth-code-point@3.0.0: {} + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-in-ssh@1.0.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + is-interactive@1.0.0: {} + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.20 + is-unicode-supported@0.1.0: {} + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + + isarray@2.0.5: {} + isbinaryfile@4.0.10: {} isbinaryfile@5.0.7: {} @@ -5001,6 +6213,15 @@ snapshots: isexe@3.1.5: {} + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -5015,22 +6236,34 @@ snapshots: jiti@2.6.1: {} - jotai@2.19.1(@types/react@19.2.14)(react@19.2.5): + jotai@2.19.1(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@19.2.14)(react@19.2.5): optionalDependencies: + '@babel/core': 7.29.0 + '@babel/template': 7.28.6 '@types/react': 19.2.14 react: 19.2.5 + js-tokens@4.0.0: {} + js-yaml@4.1.1: dependencies: argparse: 2.0.1 + jsesc@3.1.0: {} + json-buffer@3.0.1: {} json-schema-traverse@0.4.1: {} + json-stable-stringify-without-jsonify@1.0.1: {} + json-stringify-safe@5.0.1: optional: true + json5@1.0.2: + dependencies: + minimist: 1.2.8 + json5@2.2.3: {} jsonfile@4.0.0: @@ -5043,12 +6276,39 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + jsonfile@6.2.1: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + optional: true + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.9 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + jwt-decode@4.0.0: {} + keyv@4.5.4: dependencies: json-buffer: 3.0.1 + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + lazy-val@1.0.5: {} + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + lightningcss-android-arm64@1.32.0: optional: true @@ -5098,6 +6358,16 @@ snapshots: lightningcss-win32-arm64-msvc: 1.32.0 lightningcss-win32-x64-msvc: 1.32.0 + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash.merge@4.6.2: {} + lodash@4.18.1: {} log-symbols@4.1.0: @@ -5105,10 +6375,18 @@ snapshots: chalk: 4.1.2 is-unicode-supported: 0.1.0 + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + lowercase-keys@2.0.0: {} lru-cache@10.4.3: {} + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + lru-cache@6.0.0: dependencies: yallist: 4.0.0 @@ -5144,6 +6422,13 @@ snapshots: math-intrinsics@1.1.0: {} + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + mime-db@1.52.0: {} mime-types@2.1.35: @@ -5232,9 +6517,13 @@ snapshots: nanoid@3.3.11: {} + napi-postinstall@0.3.4: {} + + natural-compare@1.4.0: {} + negotiator@1.0.0: {} - next@16.2.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + next@16.2.3(@babel/core@7.29.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@next/env': 16.2.3 '@swc/helpers': 0.5.15 @@ -5243,7 +6532,7 @@ snapshots: postcss: 8.4.31 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - styled-jsx: 5.1.6(react@19.2.5) + styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.5) optionalDependencies: '@next/swc-darwin-arm64': 16.2.3 '@next/swc-darwin-x64': 16.2.3 @@ -5269,6 +6558,13 @@ snapshots: dependencies: semver: 7.7.4 + node-exports-info@1.6.0: + dependencies: + array.prototype.flatmap: 1.3.3 + es-errors: 1.3.0 + object.entries: 1.1.9 + semver: 6.3.1 + node-gyp@11.5.0: dependencies: env-paths: 2.2.1 @@ -5284,14 +6580,59 @@ snapshots: transitivePeerDependencies: - supports-color + node-releases@2.0.38: {} + nopt@8.1.0: dependencies: abbrev: 3.0.1 normalize-url@6.1.0: {} - object-keys@1.1.1: - optional: true + number-flow@0.5.12: + dependencies: + esm-env: 1.2.2 + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.9: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.1 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 once@1.4.0: dependencies: @@ -5301,6 +6642,24 @@ snapshots: dependencies: mimic-fn: 2.1.0 + open@11.0.0: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.1.0 + wsl-utils: 0.3.1 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + ora@5.4.1: dependencies: bl: 4.1.0 @@ -5313,20 +6672,48 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + p-cancelable@2.1.1: {} p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 + p-limit@4.0.0: + dependencies: + yocto-queue: 1.2.2 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + p-map@7.0.4: {} package-json-from-dist@1.0.1: {} + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-exists@4.0.0: {} + + path-exists@5.0.0: {} + path-is-absolute@1.0.1: {} path-key@3.1.1: {} + path-parse@1.0.7: {} + path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 @@ -5338,6 +6725,8 @@ snapshots: picocolors@1.1.1: {} + picomatch@2.3.2: {} + picomatch@4.0.4: {} plist@3.1.0: @@ -5346,6 +6735,8 @@ snapshots: base64-js: 1.5.1 xmlbuilder: 15.1.1 + possible-typed-array-names@1.1.0: {} + postcss@8.4.31: dependencies: nanoid: 3.3.11 @@ -5363,6 +6754,10 @@ snapshots: commander: 9.5.0 optional: true + powershell-utils@0.1.0: {} + + prelude-ls@1.2.1: {} + proc-log@5.0.0: {} progress@2.0.3: {} @@ -5372,6 +6767,12 @@ snapshots: err-code: 2.0.3 retry: 0.12.0 + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + proper-lockfile@4.1.2: dependencies: graceful-fs: 4.2.11 @@ -5385,123 +6786,75 @@ snapshots: punycode@2.3.1: {} + queue-microtask@1.2.3: {} + quick-lru@5.1.1: {} - react-aria-components@1.16.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): - dependencies: - '@internationalized/date': 3.12.0 - '@internationalized/string': 3.2.7 - '@react-aria/autocomplete': 3.0.0-rc.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/collections': 3.0.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/dnd': 3.11.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/focus': 3.21.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/live-announcer': 3.4.4 - '@react-aria/overlays': 3.31.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/ssr': 3.9.10(react@19.2.5) - '@react-aria/textfield': 3.18.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/toolbar': 3.0.0-beta.24(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/virtualizer': 4.1.13(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/autocomplete': 3.0.0-beta.4(react@19.2.5) - '@react-stately/layout': 4.6.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-stately/selection': 3.20.9(react@19.2.5) - '@react-stately/table': 3.15.4(react@19.2.5) - '@react-stately/utils': 3.11.0(react@19.2.5) - '@react-stately/virtualizer': 4.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/form': 3.7.18(react@19.2.5) - '@react-types/grid': 3.3.8(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) - '@react-types/table': 3.13.6(react@19.2.5) + react-aria-components@1.17.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + dependencies: + '@internationalized/date': 3.12.1 + '@react-types/shared': 3.34.0(react@19.2.5) '@swc/helpers': 0.5.21 client-only: 0.0.1 react: 19.2.5 - react-aria: 3.47.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react-aria: 3.48.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react-dom: 19.2.5(react@19.2.5) - react-stately: 3.45.0(react@19.2.5) - use-sync-external-store: 1.6.0(react@19.2.5) + react-stately: 3.46.0(react@19.2.5) - react-aria@3.47.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): - dependencies: - '@internationalized/string': 3.2.7 - '@react-aria/breadcrumbs': 3.5.32(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/button': 3.14.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/calendar': 3.9.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/checkbox': 3.16.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/color': 3.1.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/combobox': 3.15.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/datepicker': 3.16.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/dialog': 3.5.34(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/disclosure': 3.1.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/dnd': 3.11.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/focus': 3.21.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/gridlist': 3.14.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/i18n': 3.12.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/interactions': 3.27.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/label': 3.7.25(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/landmark': 3.0.10(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/link': 3.8.9(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/listbox': 3.15.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/menu': 3.21.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/meter': 3.4.30(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/numberfield': 3.12.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/overlays': 3.31.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/progress': 3.4.30(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/radio': 3.12.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/searchfield': 3.8.12(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/select': 3.17.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/selection': 3.27.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/separator': 3.4.16(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/slider': 3.8.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/ssr': 3.9.10(react@19.2.5) - '@react-aria/switch': 3.7.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/table': 3.17.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/tabs': 3.11.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/tag': 3.8.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/textfield': 3.18.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/toast': 3.0.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/tooltip': 3.9.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/tree': 3.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/utils': 3.33.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-aria/visually-hidden': 3.8.31(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) + react-aria@3.48.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + dependencies: + '@internationalized/date': 3.12.1 + '@internationalized/number': 3.6.6 + '@internationalized/string': 3.2.8 + '@react-types/shared': 3.34.0(react@19.2.5) + '@swc/helpers': 0.5.21 + aria-hidden: 1.2.6 + clsx: 2.1.1 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) + react-stately: 3.46.0(react@19.2.5) + use-sync-external-store: 1.6.0(react@19.2.5) react-dom@19.2.5(react@19.2.5): dependencies: react: 19.2.5 scheduler: 0.27.0 - react-stately@3.45.0(react@19.2.5): - dependencies: - '@react-stately/calendar': 3.9.3(react@19.2.5) - '@react-stately/checkbox': 3.7.5(react@19.2.5) - '@react-stately/collections': 3.12.10(react@19.2.5) - '@react-stately/color': 3.9.5(react@19.2.5) - '@react-stately/combobox': 3.13.0(react@19.2.5) - '@react-stately/data': 3.15.2(react@19.2.5) - '@react-stately/datepicker': 3.16.1(react@19.2.5) - '@react-stately/disclosure': 3.0.11(react@19.2.5) - '@react-stately/dnd': 3.7.4(react@19.2.5) - '@react-stately/form': 3.2.4(react@19.2.5) - '@react-stately/list': 3.13.4(react@19.2.5) - '@react-stately/menu': 3.9.11(react@19.2.5) - '@react-stately/numberfield': 3.11.0(react@19.2.5) - '@react-stately/overlays': 3.6.23(react@19.2.5) - '@react-stately/radio': 3.11.5(react@19.2.5) - '@react-stately/searchfield': 3.5.19(react@19.2.5) - '@react-stately/select': 3.9.2(react@19.2.5) - '@react-stately/selection': 3.20.9(react@19.2.5) - '@react-stately/slider': 3.7.5(react@19.2.5) - '@react-stately/table': 3.15.4(react@19.2.5) - '@react-stately/tabs': 3.8.9(react@19.2.5) - '@react-stately/toast': 3.1.3(react@19.2.5) - '@react-stately/toggle': 3.9.5(react@19.2.5) - '@react-stately/tooltip': 3.5.11(react@19.2.5) - '@react-stately/tree': 3.9.6(react@19.2.5) - '@react-types/shared': 3.33.1(react@19.2.5) + react-is@16.13.1: {} + + react-is@18.3.1: {} + + react-resizable-panels@4.11.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + dependencies: + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + + react-smooth@4.0.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + dependencies: + fast-equals: 5.4.0 + prop-types: 15.8.1 + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-transition-group: 4.4.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + + react-stately@3.46.0(react@19.2.5): + dependencies: + '@internationalized/date': 3.12.1 + '@internationalized/number': 3.6.6 + '@internationalized/string': 3.2.8 + '@react-types/shared': 3.34.0(react@19.2.5) + '@swc/helpers': 0.5.21 + react: 19.2.5 + use-sync-external-store: 1.6.0(react@19.2.5) + + react-transition-group@4.4.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + dependencies: + '@babel/runtime': 7.29.2 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) react@19.2.5: {} @@ -5517,6 +6870,43 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 + recharts-scale@0.4.5: + dependencies: + decimal.js-light: 2.5.1 + + recharts@2.15.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + dependencies: + clsx: 2.1.1 + eventemitter3: 4.0.7 + lodash: 4.18.1 + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-is: 18.3.1 + react-smooth: 4.0.4(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + recharts-scale: 0.4.5 + tiny-invariant: 1.3.3 + victory-vendor: 36.9.2 + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + require-directory@2.1.1: {} resedit@1.7.2: @@ -5525,6 +6915,19 @@ snapshots: resolve-alpn@1.2.1: {} + resolve-from@4.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@2.0.0-next.6: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.2 + node-exports-info: 1.6.0 + object-keys: 1.1.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + responselike@2.0.1: dependencies: lowercase-keys: 2.0.0 @@ -5536,6 +6939,8 @@ snapshots: retry@0.12.0: {} + reusify@1.1.0: {} + rimraf@2.6.3: dependencies: glob: 7.2.3 @@ -5550,12 +6955,37 @@ snapshots: sprintf-js: 1.1.3 optional: true + run-applescript@7.1.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + rxjs@7.8.2: dependencies: tslib: 2.8.1 + safe-array-concat@1.1.4: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + safe-buffer@5.2.1: {} + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + safer-buffer@2.1.2: {} sanitize-filename@1.6.4: @@ -5573,6 +7003,8 @@ snapshots: semver@6.3.1: {} + semver@7.7.2: {} + semver@7.7.4: {} serialize-error@7.0.1: @@ -5580,6 +7012,28 @@ snapshots: type-fest: 0.13.1 optional: true + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + sharp@0.34.5: dependencies: '@img/colour': 1.1.0 @@ -5620,6 +7074,34 @@ snapshots: shell-quote@1.8.3: {} + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -5628,6 +7110,8 @@ snapshots: dependencies: semver: 7.7.4 + sisteransi@1.0.5: {} + slice-ansi@3.0.0: dependencies: ansi-styles: 4.3.0 @@ -5666,8 +7150,15 @@ snapshots: dependencies: minipass: 7.1.3 + stable-hash@0.0.5: {} + stat-mode@1.0.0: {} + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -5680,6 +7171,56 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.2.0 + string.prototype.includes@2.0.1: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.24.2 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 @@ -5692,10 +7233,16 @@ snapshots: dependencies: ansi-regex: 6.2.2 - styled-jsx@5.1.6(react@19.2.5): + strip-bom@3.0.0: {} + + strip-json-comments@3.1.1: {} + + styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.5): dependencies: client-only: 0.0.1 react: 19.2.5 + optionalDependencies: + '@babel/core': 7.29.0 sumchecker@3.0.1: dependencies: @@ -5711,6 +7258,8 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} + tailwind-merge@3.4.0: {} tailwind-variants@3.2.2(tailwind-merge@3.4.0)(tailwindcss@4.2.2): @@ -5745,6 +7294,8 @@ snapshots: dependencies: semver: 5.7.2 + tiny-invariant@1.3.3: {} + tinyglobby@0.2.16: dependencies: fdir: 6.5.0(picomatch@4.0.4) @@ -5756,23 +7307,95 @@ snapshots: tmp@0.2.5: {} + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + tree-kill@1.2.2: {} truncate-utf8-bytes@1.0.2: dependencies: utf8-byte-length: 1.0.5 + ts-api-utils@2.5.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + tslib@2.8.1: {} tw-animate-css@1.4.0: {} + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + type-fest@0.13.1: optional: true + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript-eslint@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.59.2(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.59.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.4(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + typescript@5.9.3: {} + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + undici-types@6.21.0: {} + unicorn-magic@0.1.0: {} + unique-filename@4.0.0: dependencies: unique-slug: 5.0.0 @@ -5785,6 +7408,36 @@ snapshots: universalify@2.0.1: {} + unrs-resolver@1.11.1: + dependencies: + napi-postinstall: 0.3.4 + optionalDependencies: + '@unrs/resolver-binding-android-arm-eabi': 1.11.1 + '@unrs/resolver-binding-android-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-x64': 1.11.1 + '@unrs/resolver-binding-freebsd-x64': 1.11.1 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 + '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-musl': 1.11.1 + '@unrs/resolver-binding-wasm32-wasi': 1.11.1 + '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 + '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 + '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 + + update-browserslist-db@1.2.3(browserslist@4.28.2): + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -5804,10 +7457,68 @@ snapshots: extsprintf: 1.4.1 optional: true + victory-vendor@36.9.2: + dependencies: + '@types/d3-array': 3.2.2 + '@types/d3-ease': 3.0.2 + '@types/d3-interpolate': 3.0.4 + '@types/d3-scale': 4.0.9 + '@types/d3-shape': 3.1.8 + '@types/d3-time': 3.0.4 + '@types/d3-timer': 3.0.2 + d3-array: 3.2.4 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-scale: 4.0.2 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-timer: 3.0.1 + wcwidth@1.0.1: dependencies: defaults: 1.0.4 + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.2 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.20 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.20: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + which@2.0.2: dependencies: isexe: 2.0.0 @@ -5816,6 +7527,8 @@ snapshots: dependencies: isexe: 3.1.5 + word-wrap@1.2.5: {} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -5830,10 +7543,17 @@ snapshots: wrappy@1.0.2: {} + wsl-utils@0.3.1: + dependencies: + is-wsl: 3.1.1 + powershell-utils: 0.1.0 + xmlbuilder@15.1.1: {} y18n@5.0.8: {} + yallist@3.1.1: {} + yallist@4.0.0: {} yallist@5.0.0: {} @@ -5856,3 +7576,11 @@ snapshots: fd-slicer: 1.1.0 yocto-queue@0.1.0: {} + + yocto-queue@1.2.2: {} + + zod-validation-error@4.0.2(zod@4.4.3): + dependencies: + zod: 4.4.3 + + zod@4.4.3: {} diff --git a/electron/preload.ts b/electron/preload.ts index 9e8e87f..3492f84 100644 --- a/electron/preload.ts +++ b/electron/preload.ts @@ -17,4 +17,5 @@ contextBridge.exposeInMainWorld("electron", { closeWindow: (): Promise => ipcRenderer.invoke("window-close"), minimizeWindow: (): Promise => ipcRenderer.invoke("window-minimize"), toggleMaximize: (): Promise => ipcRenderer.invoke("window-toggle-maximize"), + getVersion: (): Promise => ipcRenderer.invoke("get-app-version"), }); diff --git a/electron/renderer/eslint.config.mjs b/electron/renderer/eslint.config.mjs new file mode 100644 index 0000000..c03c2a9 --- /dev/null +++ b/electron/renderer/eslint.config.mjs @@ -0,0 +1,11 @@ +import { defineConfig, globalIgnores } from "eslint/config"; +import nextVitals from "eslint-config-next/core-web-vitals"; +import nextTs from "eslint-config-next/typescript"; + +const eslintConfig = defineConfig([ + ...nextVitals, + ...nextTs, + globalIgnores([".next/**", "out/**", "build/**", "next-env.d.ts"]), +]); + +export default eslintConfig; diff --git a/electron/renderer/package.json b/electron/renderer/package.json index 1d46514..c562d43 100644 --- a/electron/renderer/package.json +++ b/electron/renderer/package.json @@ -1,29 +1,38 @@ { "name": "protonshift-renderer", - "version": "0.8.8", + "version": "0.9.5", "private": true, "scripts": { - "dev": "next dev --turbopack", + "dev": "next dev", "build": "next build", "start": "next start", - "lint": "next lint" + "lint": "eslint ." }, "dependencies": { + "@heroui-pro/react": "1.0.0-beta.3", "@heroui/react": "latest", "@heroui/styles": "latest", + "@number-flow/react": "^0.5.10", "@tanstack/react-query": "^5.75.0", "jotai": "^2.12.0", "lucide-react": "^0.475.0", "motion": "^12.6.0", "next": "^16.2.3", "react": "^19.1.0", - "react-dom": "^19.1.0" + "react-aria-components": "^1.17.0", + "react-dom": "^19.1.0", + "react-resizable-panels": "^4.10.0", + "recharts": "^2.15.4", + "tailwind-merge": "^3.4.0", + "tailwind-variants": "^3.2.0" }, "devDependencies": { "@tailwindcss/postcss": "^4.1.0", "@types/node": "^22.0.0", "@types/react": "^19.1.0", "@types/react-dom": "^19.1.0", + "eslint": "^9.39.4", + "eslint-config-next": "^16.2.6", "tailwindcss": "^4.1.0", "typescript": "^5.8.0" } diff --git a/electron/renderer/src/app/controllers/page.tsx b/electron/renderer/src/app/controllers/page.tsx index 9b096ba..bd72b66 100644 --- a/electron/renderer/src/app/controllers/page.tsx +++ b/electron/renderer/src/app/controllers/page.tsx @@ -1,61 +1,268 @@ "use client"; -import { useState } from "react"; +import { useMemo, useState } from "react"; import { - Gamepad2, + Activity, + Bluetooth, + Cable, + ChevronDown, Copy, - RefreshCw, - Info, - Usb, + Download, + ExternalLink, + Fingerprint, + Gamepad2, Hash, + Info, + KeyRound, MapPin, - ChevronDown, + Plug, + RefreshCw, + Search, + Tags, Unplug, + Usb, + Wand2, + Wrench, } from "lucide-react"; import { Alert, Button, Chip, - Description, Disclosure, - Separator, + Label, + Link as HeroLink, + SearchField, Skeleton, Spinner, + Text, Tooltip, } from "@heroui/react"; +import { + EmptyState, + ItemCard, + ItemCardGroup, + KPI, + KPIGroup, + Widget, +} from "@heroui-pro/react"; +import { GamepadTester } from "@/components/gamepad-tester"; import { PageShell } from "@/components/page-shell"; -import { GlowCard } from "@/components/glow-card"; -import { api } from "@/lib/api"; +import { api, type ControllerData } from "@/lib/api"; import { useQuery, useQueryClient } from "@tanstack/react-query"; import { appShowToast } from "@/lib/app-toast"; +/* --------------------------------------------------------------------------- + * Constants & helpers + * -------------------------------------------------------------------------*/ + +type ChipColor = "accent" | "success" | "danger" | "warning" | "default"; + const TYPE_META: Record< string, - { chipColor: "accent" | "success" | "danger" | "warning" | "default"; label: string } + { chipColor: ChipColor; label: string; iconClass: string } > = { - xbox: { chipColor: "success", label: "Xbox" }, - playstation: { chipColor: "accent", label: "PlayStation" }, - nintendo: { chipColor: "danger", label: "Nintendo" }, - steam: { chipColor: "accent", label: "Steam" }, - "8bitdo": { chipColor: "warning", label: "8BitDo" }, - generic: { chipColor: "default", label: "Generic" }, + xbox: { chipColor: "success", label: "Xbox", iconClass: "text-success" }, + playstation: { + chipColor: "accent", + label: "PlayStation", + iconClass: "text-neon-blue", + }, + nintendo: { chipColor: "danger", label: "Nintendo", iconClass: "text-danger" }, + steam: { chipColor: "accent", label: "Steam", iconClass: "text-neon-cyan" }, + "8bitdo": { chipColor: "warning", label: "8BitDo", iconClass: "text-warning" }, + generic: { chipColor: "default", label: "Generic", iconClass: "text-muted" }, }; +function metaFor(type: string) { + return TYPE_META[type] ?? TYPE_META.generic; +} + +/** Linux input.h bus type codes. */ +const BUS_TYPES: Record< + string, + { label: string; short: string; chipColor: ChipColor; icon: typeof Usb } +> = { + "0001": { label: "PCI", short: "PCI", chipColor: "default", icon: Plug }, + "0002": { label: "ISA", short: "ISA", chipColor: "default", icon: Plug }, + "0003": { label: "USB", short: "USB", chipColor: "accent", icon: Usb }, + "0005": { + label: "Bluetooth", + short: "BT", + chipColor: "success", + icon: Bluetooth, + }, + "0010": { + label: "Virtual", + short: "Virtual", + chipColor: "warning", + icon: Cable, + }, + "0018": { label: "I²C", short: "I²C", chipColor: "default", icon: Cable }, + "0019": { label: "Host", short: "Host", chipColor: "default", icon: Cable }, +}; + +function busInfo(bus?: string) { + const norm = (bus ?? "").toLowerCase().padStart(4, "0"); + return ( + BUS_TYPES[norm] ?? { + label: norm ? `Bus 0x${norm}` : "Unknown", + short: norm ? `0x${norm}` : "—", + chipColor: "default" as ChipColor, + icon: Cable, + } + ); +} + +function formatHexId(value?: string) { + if (!value) return "—"; + return value.toLowerCase().padStart(4, "0"); +} + +function buildGuidFromController(c: ControllerData): string { + // Mirrors src/game_setup_hub/controllers.py:_build_sdl_guid + const u16 = (v?: string) => { + const n = parseInt(v ?? "0", 16); + return Number.isFinite(n) ? n & 0xffff : 0; + }; + const words = [ + u16(c.bus_type || "0003"), + 0, + u16(c.vendor_id), + 0, + u16(c.product_id), + 0, + u16(c.version), + 0, + ]; + const bytes: number[] = []; + for (const w of words) { + bytes.push(w & 0xff, (w >> 8) & 0xff); + } + return bytes.map((b) => b.toString(16).padStart(2, "0")).join(""); +} + +const REFERENCE_TOOLS: { + name: string; + description: string; + href: string; + Icon: typeof Wrench; +}[] = [ + { + name: "SDL2 Gamepad Tool", + description: + "Generate accurate SDL_GAMECONTROLLERCONFIG mappings for any pad.", + href: "https://generalarcade.com/gamepadtool/", + Icon: Wand2, + }, + { + name: "AntiMicroX", + description: + "Map gamepad buttons to keyboard / mouse events for games without native pad support.", + href: "https://github.com/AntiMicroX/antimicrox", + Icon: KeyRound, + }, + { + name: "sdl2-jstest", + description: + "CLI tool to inspect joystick events in real time and verify SDL detection.", + href: "https://gitlab.com/sdl-jstest/sdl-jstest", + Icon: Activity, + }, + { + name: "SDL community DB", + description: + "Crowdsourced gamepad mapping database used by SDL itself — search by GUID.", + href: "https://github.com/mdqinc/SDL_GameControllerDB", + Icon: Tags, + }, +]; + +/* --------------------------------------------------------------------------- + * Component + * -------------------------------------------------------------------------*/ + +type FilterMode = "all" | "xbox" | "playstation" | "nintendo" | "steam" | "8bitdo" | "generic"; +type ConnectionFilter = "all" | "usb" | "bluetooth" | "other"; + export default function ControllersPage() { const qc = useQueryClient(); - const { data: controllers, isLoading, error, isRefetching } = useQuery({ + const { + data: controllers, + isLoading, + error, + isRefetching, + } = useQuery({ queryKey: ["controllers"], queryFn: api.getControllers, staleTime: 10_000, }); const [mappings, setMappings] = useState>({}); - const [loadingMapping, setLoadingMapping] = useState>({}); + const [loadingMapping, setLoadingMapping] = useState>( + {}, + ); + const [openTester, setOpenTester] = useState>({}); + const [search, setSearch] = useState(""); + const [typeFilter, setTypeFilter] = useState("all"); + const [connFilter, setConnFilter] = useState("all"); + + /* --------------------------- Derived collections -------------------------- */ + + const list = controllers ?? []; + const controllerCount = list.length; + + const summary = useMemo(() => { + let usb = 0; + let bt = 0; + let other = 0; + const types: Record = {}; + for (const c of list) { + const norm = (c.bus_type ?? "").toLowerCase().padStart(4, "0"); + if (norm === "0003") usb++; + else if (norm === "0005") bt++; + else other++; + types[c.controller_type] = (types[c.controller_type] || 0) + 1; + } + return { usb, bt, other, types }; + }, [list]); + + const filtered = useMemo(() => { + const q = search.trim().toLowerCase(); + return list.filter((c) => { + if (typeFilter !== "all" && c.controller_type !== typeFilter) return false; + const norm = (c.bus_type ?? "").toLowerCase().padStart(4, "0"); + if (connFilter === "usb" && norm !== "0003") return false; + if (connFilter === "bluetooth" && norm !== "0005") return false; + if (connFilter === "other" && (norm === "0003" || norm === "0005")) + return false; + if ( + q && + !c.name.toLowerCase().includes(q) && + !c.device_path.toLowerCase().includes(q) && + !`${c.vendor_id}:${c.product_id}`.toLowerCase().includes(q) + ) + return false; + return true; + }); + }, [list, search, typeFilter, connFilter]); + + /* ------------------------------- Mutations ------------------------------- */ + + async function handleCopy(text: string, message: string) { + try { + await navigator.clipboard.writeText(text); + appShowToast(message); + } catch { + appShowToast("Failed to copy", "error"); + } + } async function handleCopyMapping(controllerId: string) { try { - const result = await api.getControllerSdlMapping(controllerId); - await navigator.clipboard.writeText(result.mapping); + const cached = mappings[controllerId]; + const mapping = cached ?? (await api.getControllerSdlMapping(controllerId)).mapping; + if (!cached) setMappings((prev) => ({ ...prev, [controllerId]: mapping })); + await navigator.clipboard.writeText(mapping); appShowToast("SDL mapping copied to clipboard"); } catch { appShowToast("Failed to get mapping", "error"); @@ -75,31 +282,56 @@ export default function ControllersPage() { } } - const controllerCount = controllers?.length ?? 0; - const typeCounts = controllers?.reduce>((acc, c) => { - acc[c.controller_type] = (acc[c.controller_type] || 0) + 1; - return acc; - }, {}) ?? {}; + function handleDownloadMapping(ctrl: ControllerData) { + const mapping = mappings[ctrl.id]; + if (!mapping) { + appShowToast("Open the SDL mapping section first", "error"); + return; + } + const safeName = ctrl.name.replace(/[^a-zA-Z0-9_-]+/g, "_").slice(0, 48); + const blob = new Blob([mapping], { type: "text/plain;charset=utf-8" }); + const url = URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = `${safeName || "controller"}-${ctrl.vendor_id || "0000"}_${ctrl.product_id || "0000"}.sdl.txt`; + document.body.appendChild(a); + a.click(); + a.remove(); + URL.revokeObjectURL(url); + } + + function toggleTester(ctrlId: string, expanded: boolean) { + setOpenTester((prev) => ({ ...prev, [ctrlId]: expanded })); + } + + /* --------------------------------- Render -------------------------------- */ return ( -
+
{/* Header */} -
-
-

- +
+
+ + Controllers {controllerCount > 0 && ( - + {controllerCount} detected )} -

- - Detected game controllers, joysticks, and gamepads connected to this system. - Copy SDL mappings for per-game controller configuration. - + + + Joysticks and gamepads detected by the kernel. Test inputs live, + copy SDL mappings, and link to per-game configuration tools. +
Re-scan connected controllers @@ -118,258 +352,712 @@ export default function ControllersPage() { {/* Loading state */} {isLoading ? ( -
+
{Array.from({ length: 3 }).map((_, i) => ( -
-
- -
- -
- - + + +
+ +
+ +
+ + +
+
- -
-
+ + ))}
- - /* Error state */ ) : error ? ( Failed to detect controllers - Check that the backend is running and /proc/bus/input/devices or /dev/input/js* is accessible, then try refreshing. + Check that the backend is running and{" "} + + /proc/bus/input/devices + {" "} + or{" "} + /dev/input/js*{" "} + is accessible, then try refreshing. - - /* Empty state */ - ) : !controllers || controllerCount === 0 ? ( - -
-
- -
-
-

- No game controllers detected -

- - Connect a controller via USB or Bluetooth and press refresh to re-scan. - Devices are detected from /proc/bus/input and /dev/input/js*. - -
+ ) : controllerCount === 0 ? ( + + + + + + No game controllers detected + + Connect a controller via USB or Bluetooth and press refresh to + re-scan. Devices are detected from{" "} + + /proc/bus/input + {" "} + and{" "} + /dev/input/js* + . + + + -
-
- - /* Controller list */ + + ) : ( <> - {/* Type summary chips */} - {Object.keys(typeCounts).length > 1 && ( -
- {Object.entries(typeCounts).map(([type, count]) => { - const meta = TYPE_META[type] || TYPE_META.generic; - return ( - - - {count} {meta.label} - - ); - })} -
- )} - -
- {controllers.map((ctrl, idx) => { - const meta = TYPE_META[ctrl.controller_type] || TYPE_META.generic; - const mapping = mappings[ctrl.id]; - const isLoadingMap = loadingMapping[ctrl.id]; - - return ( - - {/* Main row */} -
-
-
- -
-
-

- {ctrl.name} -

-
- - {meta.label} - - - - Connected - -
-
-
- - - - Copy SDL_GAMECONTROLLERCONFIG mapping to clipboard - - -
+ + {n} {meta.label} + + ); + })} +
+ )} + + - + {/* Filter bar */} + {controllerCount > 1 && ( + + + + + + + + + + + - {/* Detail stats */} -
-
- - Device - - {ctrl.device_path} - -
- {ctrl.vendor_id && ( -
- - Vendor:Product - - {ctrl.vendor_id}:{ctrl.product_id} - -
- )} -
+
+ + setTypeFilter("all")} + /> + {Object.entries(summary.types).map(([t, n]) => { + const meta = metaFor(t); + return ( + setTypeFilter(t as FilterMode)} + /> + ); + })} +
- - - {/* SDL mapping disclosure */} -
- { - if (expanded) handleRevealMapping(ctrl.id); - }} - > - - - - - - {mapping ? ( -
-
-                                  {mapping}
-                                
- -
- ) : !isLoadingMap ? ( -

- Could not load mapping. -

- ) : null} -
-
-
-
- - ); - })} -
+
+ + setConnFilter("all")} + /> + setConnFilter("usb")} + /> + setConnFilter("bluetooth")} + /> + {summary.other > 0 && ( + setConnFilter("other")} + /> + )} +
+ + + )} - {/* SDL usage guide */} - + {/* Per-controller cards */} + {filtered.length === 0 ? ( + + + + + + No matches + + Adjust the filters or clear the search to see all detected + controllers. + + + + ) : (
- - - SDL mappings let games recognize your controller with the correct button layout. - The generated mapping provides a standard Xbox-style layout as a starting point. - - -
-

Steam launch options

-
+                {filtered.map((ctrl) => (
+                   toggleTester(ctrl.id, open)}
+                    onRevealMapping={() => handleRevealMapping(ctrl.id)}
+                    onCopyMapping={() => handleCopyMapping(ctrl.id)}
+                    onCopyGuid={() =>
+                      handleCopy(buildGuidFromController(ctrl), "GUID copied")
+                    }
+                    onCopyEnv={() =>
+                      handleCopy(
+                        `SDL_GAMECONTROLLERCONFIG="${mappings[ctrl.id] ?? ""}"`,
+                        "Env snippet copied",
+                      )
+                    }
+                    onDownload={() => handleDownloadMapping(ctrl)}
+                  />
+                ))}
+              
+ )} + + {/* Reference tools */} + + + + + Calibration & mapping tools + + + + + {REFERENCE_TOOLS.map(({ name, description, href, Icon }) => ( + + + + + + + + {name} + + + + {description} + + + + + ))} + + + + + {/* Usage guide */} + + + + + Using SDL mappings + + + + + SDL_GAMECONTROLLERCONFIG tells SDL-based games (most native + Linux titles, Proton runtime, Heroic, Lutris…) how to read + your pad. Apply it per-game via launch options, or globally + via your shell environment. + + +
+ +
                     SDL_GAMECONTROLLERCONFIG="...mapping..." %command%
                   
-
-

Environment variable

-
+
+                
+ +
+                    SDL_GAMECONTROLLERCONFIG="...mapping..."
+                  
+
+ +
+ +
                     export SDL_GAMECONTROLLERCONFIG="...mapping..."
                   
-
- + +
+ +
+                    {`# Append the full mapping line (one per controller) to:\n~/.config/SDL_GameControllerDB.txt`}
+                  
+
+
+
{/* Info footer */} - -
- -

+ + + + Controllers are detected from{" "} - /proc/bus/input/devices{" "} - (handler list) with a fallback to{" "} - /dev/input/js*{" "} - device nodes. Type classification is based on vendor name matching. - The SDL mapping uses a standard Xbox-style button layout — for full - calibration, use{" "} - SDL2 Gamepad Tool or{" "} - AntiMicroX. -

-
-
+ + /proc/bus/input/devices + {" "} + with a fallback to{" "} + + /dev/input/js* + + . Type classification is based on vendor name matching. The + generated SDL mapping uses a standard Xbox-style button + layout — for full per-axis calibration use the SDL2 Gamepad + Tool, AntiMicroX, or{" "} + + sdl2-jstest + {" "} + above. Live input testing uses the browser's W3C Gamepad + API which only exposes a controller after the first input. + + + )}
); } + +/* --------------------------------------------------------------------------- + * Helpers / sub-components + * -------------------------------------------------------------------------*/ + +function FilterChip({ + label, + active, + onPress, +}: { + label: string; + active: boolean; + color?: ChipColor; + onPress: () => void; +}) { + return ( + + ); +} + +interface ControllerCardProps { + ctrl: ControllerData; + mapping?: string; + isLoadingMapping: boolean; + testerOpen: boolean; + onToggleTester: (open: boolean) => void; + onRevealMapping: () => void; + onCopyMapping: () => void; + onCopyGuid: () => void; + onCopyEnv: () => void; + onDownload: () => void; +} + +function ControllerCard({ + ctrl, + mapping, + isLoadingMapping, + testerOpen, + onToggleTester, + onRevealMapping, + onCopyMapping, + onCopyGuid, + onCopyEnv, + onDownload, +}: ControllerCardProps) { + const meta = metaFor(ctrl.controller_type); + const bus = busInfo(ctrl.bus_type); + const BusIcon = bus.icon; + const guid = useMemo(() => buildGuidFromController(ctrl), [ctrl]); + + return ( + + + + + + + + {ctrl.name} + + + {meta.label} + + + + {bus.short} + + +
+ + + + Copy SDL_GAMECONTROLLERCONFIG mapping to clipboard + + +
+
+ + + {/* KPI strip */} + + + + + + Vendor:Product + + + + + {formatHexId(ctrl.vendor_id)}:{formatHexId(ctrl.product_id)} + + + + + + + + + Bus + + + + + {bus.label} + + + + + + + + + Version + + + + + {formatHexId(ctrl.version)} + + + + + +
+ + + Device + + {ctrl.device_path} + + + + + GUID + + {guid} + + + + Copy SDL2 GUID + + +
+ + {/* Live tester */} + + + + + + + + + + + + {/* SDL mapping disclosure */} + { + if (expanded) onRevealMapping(); + }} + > + + + + + + {mapping ? ( + <> +
+                    {mapping}
+                  
+
+ + + +
+ + ) : isLoadingMapping ? ( +
+ + Generating mapping… +
+ ) : ( + + Could not load mapping. + + )} +
+
+
+
+
+ ); +} diff --git a/electron/renderer/src/app/environment/page.tsx b/electron/renderer/src/app/environment/page.tsx index 2a08bb2..be52957 100644 --- a/electron/renderer/src/app/environment/page.tsx +++ b/electron/renderer/src/app/environment/page.tsx @@ -1,6 +1,6 @@ "use client"; -import { useState, useEffect, useMemo } from "react"; +import { useState, useMemo } from "react"; import { motion } from "motion/react"; import { Plus, @@ -10,13 +10,21 @@ import { Layers, List, Code, - Search, Info, FileText, } from "lucide-react"; -import { Button, Input, Chip, Spinner, Tooltip } from "@heroui/react"; +import { + Button, + Chip, + Input, + Label, + SearchField, + Spinner, + Text, + Tooltip, +} from "@heroui/react"; +import { EmptyState, Widget } from "@heroui-pro/react"; import { PageShell } from "@/components/page-shell"; -import { GlowCard } from "@/components/glow-card"; import { EnvPresets } from "@/components/env-presets"; import { useEnvVars, useSetEnvVars, useEnvPresets } from "@/hooks/use-env"; import { appShowToast } from "@/lib/app-toast"; @@ -47,19 +55,25 @@ const KNOWN_VARS: Record = { STEAM_COMPAT_CLIENT_INSTALL_PATH: "Steam install root for Proton lookup", }; -export default function EnvironmentPage() { - const { data: envVars, isLoading } = useEnvVars(); - const { data: envPresets } = useEnvPresets(); - const setEnvVars = useSetEnvVars(); +const ENV_FILE_PATH = "~/.config/environment.d/70-protonshift.conf"; - const [vars, setVars] = useState<[string, string][]>([]); - const [filter, setFilter] = useState(""); +function entriesFromEnv(env: Record): [string, string][] { + return Object.entries(env); +} - useEffect(() => { - if (envVars) { - setVars(Object.entries(envVars)); - } - }, [envVars]); +function EnvironmentVarsBody({ + initialEntries, + isLoading, + envPresets, + setEnvVars, +}: { + initialEntries: [string, string][]; + isLoading: boolean; + envPresets: Record> | undefined; + setEnvVars: ReturnType; +}) { + const [vars, setVars] = useState<[string, string][]>(initialEntries); + const [filter, setFilter] = useState(""); function addVar() { setVars((prev) => [...prev, ["", ""]]); @@ -119,158 +133,212 @@ export default function EnvironmentPage() { const visibleCount = filteredIndices !== null ? filteredIndices.size : vars.length; + const previewBody = useMemo( + () => + vars + .filter(([k]) => k.trim()) + .map(([k, v]) => `${k.trim()}="${v}"`) + .join("\n") || "# (empty)", + [vars], + ); + return ( -
+
{/* Header */} -
-
-

- +
+
+ + Environment Variables -

-

- - ~/.config/environment.d/70-protonshift.conf -

+ + + + {ENV_FILE_PATH} +
{/* Info banner */} - -
- -
-

- Variables set here are written to{" "} - - ~/.config/environment.d/70-protonshift.conf - {" "} - and loaded by systemd on login. They apply to{" "} - - every application - {" "} - in your session — Steam, Lutris, Heroic, and terminal-launched - games all inherit them. -

-

- Changes take effect after your next{" "} - - logout and login - - . Per-game overrides can be set in Steam's launch options - or in the Games page. -

+ + +
+ +
+ + Variables set here are written to{" "} + + {ENV_FILE_PATH} + {" "} + and loaded by systemd on login. They apply to{" "} + + every application + {" "} + in your session — Steam, Lutris, Heroic, and terminal-launched + games all inherit them. + + + Changes take effect after your next{" "} + + logout and login + + . Per-game overrides can be set in Steam's launch options + or in the Games page. + +
-
- + + {/* Presets */} {envPresets && Object.keys(envPresets).length > 0 && ( - - - - + + + + + Quick presets + + {Object.keys(envPresets).length} + + + + + + + )} {/* Variables editor */} - -
- -
- - {vars.length > 3 && ( -
- - + + + {vars.length > 3 && ( + setFilter(e.target.value)} - placeholder="Filter variables…" + onChange={setFilter} + onClear={() => setFilter("")} aria-label="Filter variables" variant="secondary" - className="w-full pl-9 font-mono text-xs" - /> -
- )} + fullWidth + > + + + + + + + )} - {isLoading ? ( -
- -
- ) : vars.length === 0 ? ( -
- -
-

- No variables yet -

-

- Add a variable manually or apply a preset above to get - started. -

+ {isLoading ? ( +
+
- -
- ) : ( -
- {vars.map(([key, value], index) => { - if (filteredIndices !== null && !filteredIndices.has(index)) - return null; + ) : vars.length === 0 ? ( + + + + + + No variables yet + + Add a variable manually or apply a preset above to get + started. + + + + + + + ) : ( +
+ {vars.map(([key, value], index) => { + if (filteredIndices !== null && !filteredIndices.has(index)) + return null; - const hint = key.trim() ? KNOWN_VARS[key.trim()] : undefined; + const hint = key.trim() ? KNOWN_VARS[key.trim()] : undefined; - return ( - -
+ return ( +
+ updateVar(index, 0, e.target.value)} placeholder="KEY" - aria-label={`Variable key ${index + 1}`} + aria-labelledby={`env-key-${index}`} variant="secondary" - className="flex-1 font-mono" + className="flex-1 font-mono text-xs" /> - = + + = + + updateVar(index, 1, e.target.value)} placeholder="value" - aria-label={`Variable value ${index + 1}`} + aria-labelledby={`env-value-${index}`} variant="secondary" - className="flex-[2] font-mono" + className="flex-[2] font-mono text-xs" /> Remove
{hint && ( -

+ {hint} -

+ )} -
-
- ); - })} + + ); + })} - {filteredIndices !== null && visibleCount === 0 && ( -

- No variables match “{filter}” -

- )} + {filteredIndices !== null && visibleCount === 0 && ( + + No variables match “{filter}” + + )} - -
- )} - + +
+ )} + + {/* Preview */} {vars.length > 0 && ( - - -
-              {vars
-                .filter(([k]) => k.trim())
-                .map(([k, v]) => `${k.trim()}="${v}"`)
-                .join("\n") || "# (empty)"}
-            
-
+ + + + + Preview + + 70-protonshift.conf + + + + +
+                {previewBody}
+              
+
+
)}
); } + +export default function EnvironmentPage() { + const { data: envVars, isLoading } = useEnvVars(); + const { data: envPresets } = useEnvPresets(); + const setEnvVars = useSetEnvVars(); + + return ( + + ); +} diff --git a/electron/renderer/src/app/globals.css b/electron/renderer/src/app/globals.css index 7a650c1..2b62002 100644 --- a/electron/renderer/src/app/globals.css +++ b/electron/renderer/src/app/globals.css @@ -1,5 +1,6 @@ @import "tailwindcss"; @import "@heroui/styles"; +@import "@heroui-pro/react/css"; /* ── Base design tokens (Quantum Void defaults) ─────────────────────── */ @theme inline { @@ -391,10 +392,132 @@ select:focus { .accordion__trigger { @apply text-lg font-bold; } ──────────────────────────────────────────────────────────────────── */ @layer components { - /* Add project-specific HeroUI overrides here */ + /* ProtonShift — HeroUI Pro Navbar “gaming HUD” chrome */ + .protonshift-navbar { + position: relative; + container-type: inline-size; + container-name: nav; + } + + .protonshift-navbar::after { + content: ""; + position: absolute; + inset-inline: 0; + bottom: -1px; + height: 1px; + background: linear-gradient( + 90deg, + transparent 0%, + var(--theme-accent) 18%, + var(--theme-secondary) 50%, + var(--theme-tertiary) 82%, + transparent 100% + ); + background-size: 200% 100%; + opacity: 0.5; + pointer-events: none; + animation: protonshift-holo-shimmer 6s linear infinite; + } + + .protonshift-navbar::before { + content: ""; + position: absolute; + inset-inline: 0; + bottom: 0; + height: 4px; + pointer-events: none; + opacity: 0.12; + background: repeating-linear-gradient( + 90deg, + transparent, + transparent 3px, + var(--separator) 3px, + var(--separator) 4px + ); + } + + .protonshift-navbar__sep { + transform: skewX(-12deg); + border-color: color-mix(in oklab, var(--theme-accent) 35%, transparent); + } + + .protonshift-navbar .nav-active-pill-hud::before { + content: ""; + position: absolute; + top: 3px; + left: 3px; + width: 6px; + height: 6px; + border-top: 1px solid var(--theme-accent); + border-left: 1px solid var(--theme-accent); + opacity: 0.9; + pointer-events: none; + } + + .protonshift-navbar .nav-active-pill-hud::after { + content: ""; + position: absolute; + right: 3px; + bottom: 3px; + width: 6px; + height: 6px; + border-right: 1px solid var(--theme-accent); + border-bottom: 1px solid var(--theme-accent); + opacity: 0.9; + pointer-events: none; + } + + .protonshift-navbar .navbar__brand-chroma { + text-shadow: + 1px 0 0 var(--theme-secondary), + -1px 0 0 var(--theme-accent); + } + + .protonshift-navbar .navbar__item:not([data-current="true"]):hover { + @apply text-neon-cyan; + } + + .protonshift-navbar .navbar__item[data-current="true"] { + @apply text-neon-cyan; + } + + .protonshift-navbar .navbar__brand-scanline { + background: linear-gradient(90deg, transparent, var(--theme-accent), transparent); + background-size: 200% 100%; + animation: protonshift-scan 4s linear infinite; + } + + @keyframes protonshift-scan { + from { + background-position: 200% 0; + } + to { + background-position: -200% 0; + } + } + + @keyframes protonshift-holo-shimmer { + from { + background-position: 0% 0; + } + to { + background-position: 200% 0; + } + } + + @media (prefers-reduced-motion: reduce) { + .protonshift-navbar::after { + animation: none; + } + + .protonshift-navbar .navbar__brand-scanline { + animation: none; + } + } } -/* Electron frameless window: drag to move (see NavBar). Interactive controls use .app-region-no-drag */ +/* Electron frameless: put drag ONLY on spacer gaps, never on wrappers that contain + links/buttons — Linux Chromium often ignores nested no-drag and kills nav clicks */ @layer utilities { .app-region-drag { -webkit-app-region: drag; diff --git a/electron/renderer/src/app/mangohud/page.tsx b/electron/renderer/src/app/mangohud/page.tsx index f83df67..95a998f 100644 --- a/electron/renderer/src/app/mangohud/page.tsx +++ b/electron/renderer/src/app/mangohud/page.tsx @@ -15,10 +15,25 @@ import { Code, Pencil, FilePlus2, + Search, + FolderOpen, } from "lucide-react"; -import { Button, Input, Chip, Spinner, Link as HeroLink, Select, Label, ListBox } from "@heroui/react"; +import { + Button, + Card, + Chip, + Input, + Label, + Link as HeroLink, + ListBox, + Select, + Spinner, + Text, + TextField, +} from "@heroui/react"; +import { EmptyState, ListView, Widget } from "@heroui-pro/react"; +import type { Selection } from "react-aria-components"; import { PageShell } from "@/components/page-shell"; -import { GlowCard } from "@/components/glow-card"; import { MangoHudOverlayMetrics } from "@/components/mangohud-overlay-metrics"; import { MangoHudPresets } from "@/components/mangohud-presets"; import { MangoHudValueFieldsGrid } from "@/components/mangohud-value-field"; @@ -30,6 +45,19 @@ import { appShowToast } from "@/lib/app-toast"; type MangoHudGamePick = { id: string; label: string; suggestedSlug: string }; +const INSTALL_HINTS: { distro: string; cmd: string }[] = [ + { distro: "Bazzite / SteamOS", cmd: "Pre-installed — restart app or check PATH" }, + { distro: "Ubuntu / Pop!_OS / Mint", cmd: "sudo apt install mangohud" }, + { distro: "Fedora / Fedora Atomic", cmd: "sudo dnf install mangohud" }, + { distro: "Arch / Manjaro / EndeavourOS", cmd: "sudo pacman -S mangohud" }, + { distro: "openSUSE", cmd: "sudo zypper install mangohud" }, + { + distro: "Flatpak (Steam)", + cmd: "flatpak install flathub org.freedesktop.Platform.VulkanLayer.MangoHud", + }, + { distro: "NixOS", cmd: "nix-env -iA nixpkgs.mangohud" }, +]; + export default function MangoHudPage() { const qc = useQueryClient(); const { data: availData } = useQuery({ @@ -78,7 +106,9 @@ export default function MangoHudPage() { suggestedSlug: mangohudSuggestedSlugForGame(g), }); } - picks.sort((a, b) => a.label.localeCompare(b.label, undefined, { sensitivity: "base" })); + picks.sort((a, b) => + a.label.localeCompare(b.label, undefined, { sensitivity: "base" }), + ); return picks; }, [gamesData]); @@ -136,13 +166,19 @@ export default function MangoHudPage() { function handleCreatePerGame(initial: "global" | "empty") { const raw = newPerGameName.trim(); if (!raw) { - appShowToast("Enter a config name (often the game .exe stem, e.g. eldenring)", "error"); + appShowToast( + "Enter a config name (often the game .exe stem, e.g. eldenring)", + "error", + ); return; } const slug = mangohudPerGameSlug(raw); const exists = perGameList?.some((p) => p.name === slug); if (exists) { - appShowToast("That config already exists — pick it in the list below", "error"); + appShowToast( + "That config already exists — pick it in the list below", + "error", + ); return; } const cfg = initial === "global" ? { ...config } : {}; @@ -150,7 +186,8 @@ export default function MangoHudPage() { } useEffect(() => { - if (configData) setConfig(configData.config); + if (!configData) return; + queueMicrotask(() => setConfig(configData.config)); }, [configData]); /** Deep-link from Games page: /mangohud?slug=…&pick=steam:… */ @@ -161,9 +198,11 @@ export default function MangoHudPage() { const slug = url.searchParams.get("slug"); const pick = url.searchParams.get("pick"); if (!slug && !pick) return; - if (slug) setNewPerGameName(slug); - if (pick) setSelectedGamePickId(pick); - setShowPerGame(true); + queueMicrotask(() => { + if (slug) setNewPerGameName(slug); + if (pick) setSelectedGamePickId(pick); + setShowPerGame(true); + }); url.searchParams.delete("slug"); url.searchParams.delete("pick"); const rest = url.searchParams.toString(); @@ -186,335 +225,623 @@ export default function MangoHudPage() { appShowToast(`Applied "${presetName}" preset`); } + /* ------------------------------ Not installed ----------------------------- */ if (!availData?.available) { return ( -
-

MangoHud

- -
- - MangoHud — Not Installed -
-

- MangoHud is a Vulkan/OpenGL overlay that shows FPS, GPU/CPU usage, temperatures, frame timing, and more. It's the go-to performance overlay for Linux gaming. -

-
-

Install via your package manager:

-
- {[ - { distro: "Bazzite / SteamOS", cmd: "Pre-installed — restart app or check PATH" }, - { distro: "Ubuntu / Pop!_OS / Mint", cmd: "sudo apt install mangohud" }, - { distro: "Fedora / Fedora Atomic", cmd: "sudo dnf install mangohud" }, - { distro: "Arch / Manjaro / EndeavourOS", cmd: "sudo pacman -S mangohud" }, - { distro: "openSUSE", cmd: "sudo zypper install mangohud" }, - { distro: "Flatpak (Steam)", cmd: "flatpak install flathub org.freedesktop.Platform.VulkanLayer.MangoHud" }, - { distro: "NixOS", cmd: "nix-env -iA nixpkgs.mangohud" }, - ].map((item) => ( -
-

{item.distro}

- {item.cmd} -
- ))} +
+
+ + + MangoHud + + + Vulkan/OpenGL overlay for FPS, GPU/CPU usage, temperatures, and + frame timing. + +
+ + + + + + MangoHud + + Not installed + + + + + + MangoHud is the go-to performance overlay for Linux gaming. Once + installed, restart this app to detect it. + + +
+ +
+ {INSTALL_HINTS.map((item) => ( + + + + {item.distro} + + + + + {item.cmd} + + + + ))} +
-
-
-

Usage

-

- Add MANGOHUD=1 %command% to a game's launch options, or enable the MangoHud preset on the Games page. -

-
-

- After installing, restart the app to detect MangoHud.{" "} - - GitHub → - -

- + + + + + Usage + + + + + Add{" "} + + MANGOHUD=1 %command% + {" "} + to a game's launch options, or enable the MangoHud + preset on the Games page. + + + + + + After installing, restart the app to detect MangoHud.{" "} + + GitHub → + + + +
); } + /* -------------------------------- Configured -------------------------------- */ const toggleParams = configData?.params.filter((p) => p.type === "toggle") ?? []; const valueParams = configData?.params.filter((p) => p.type === "value") ?? []; + const presetCount = presets ? Object.keys(presets).length : 0; + const previewBody = + Object.entries(config) + .map(([k, v]) => (v ? `${k}=${v}` : k)) + .join("\n") || "# (empty config)"; return ( -
-
-

- - MangoHud Config -

+
+ {/* Header */} +
+
+ + + MangoHud config + + + + + ~/.config/MangoHud/MangoHud.conf + + +
+ {/* Quick presets */} {presets && ( - - - - + + + + + Quick presets + {presetCount > 0 && ( + + {presetCount} + + )} + + + + + + )} {isLoading ? ( -
- -
+ + +
+ +
+
+
) : ( <> - - - - - - - - - - - - -
-                {Object.entries(config)
-                  .map(([k, v]) => (v ? `${k}=${v}` : k))
-                  .join("\n") || "# (empty config)"}
-              
-
- - )} - - - - {showPerGame && ( - -
-
- - New per-game config -
-

- MangoHud loads ~/.config/MangoHud/wine-<name>.conf for - Wine games—often <name> matches the game{" "} - .exe stem (e.g.{" "} - eldenring). For Steam we suggest the library{" "} - install folder name; for Heroic/Lutris the game - title. Edit the field if your overlay still doesn't load. You can also set{" "} - MANGOHUD_CONFIGFILE=~/.config/MangoHud/wine-…conf in launch - options. -

- {mangohudGamePicks.length > 0 && ( - - )} -
-
- - { - setNewPerGameName(e.target.value); - setSelectedGamePickId(""); - }} - placeholder="e.g. eldenring or My_Game" + + + + + Overlay metrics + {toggleParams.length > 0 && ( + -
-
- - -
-
-
+ {valueParams.length} + + )} + + + + + + - {!perGameList || perGameList.length === 0 ? ( -

- No per-game configs on disk yet. Use the form above to create{" "} - wine-<name>.conf in{" "} - ~/.config/MangoHud/. -

+ + + + + Preview + + MangoHud.conf + + + + +
+                  {previewBody}
+                
+
+
+ + )} + + {/* Per-game configs (collapsible) */} + + + + + Per-game configs + {perGameList && perGameList.length > 0 && ( + + {perGameList.length} + + )} + + + + {showPerGame && ( + + + {/* New per-game config */} + + + + + New per-game config + + + + -
-

{pg.name}

-

{pg.path}

+ MangoHud loads{" "} + + ~/.config/MangoHud/wine-<name>.conf + {" "} + for Wine games — often{" "} + + <name> + {" "} + matches the game{" "} + + .exe + {" "} + stem (e.g.{" "} + + eldenring + + ). For Steam we suggest the library{" "} + + install folder + {" "} + name; for Heroic/Lutris the game title. Edit the field if + your overlay still doesn't load. You can also set{" "} + + MANGOHUD_CONFIGFILE=~/.config/MangoHud/wine-…conf + {" "} + in launch options. + + + {mangohudGamePicks.length > 0 && ( + + )} + +
+ { + setNewPerGameName(v); + setSelectedGamePickId(""); + }} + variant="secondary" + fullWidth + className="min-w-0 flex-1" + > + + + +
+ +
- {editingGame === pg.name && ( - Editing - )}
- ))} -
- )} +
+
- {editingGame && ( - -
-

- - Editing: {editingGame} -

- -
- - -
-

- - Configuration Values -

- - setGameConfig((prev) => ({ - ...prev, - [key]: next, - })) - } - /> -
-
-                    {Object.entries(gameConfig)
-                      .map(([k, v]) => (v ? `${k}=${v}` : k))
-                      .join("\n") || "# (empty config)"}
-                  
-
- )} -
+ {/* Existing per-game configs */} + {!perGameList || perGameList.length === 0 ? ( + + + + + + + No per-game configs yet + + + Use the form above to create a wine-<name>.conf + in ~/.config/MangoHud/. + + + + ) : ( + ({ id: p.name, ...p }))} + selectedKeys={ + editingGame + ? new Set([editingGame]) + : new Set() + } + onSelectionChange={(keys: Selection) => { + if (keys === "all") return; + const id = [...keys][0]; + if (id != null) loadPerGameConfig(String(id)); + }} + onAction={(key) => loadPerGameConfig(String(key))} + className="border-0 bg-transparent p-0 shadow-none" + > + {(pg) => ( + + + +
+ + {pg.name} + + + {pg.path} + +
+
+ {editingGame === pg.name && ( + + + Editing + + + )} +
+ )} +
+ )} + + {editingGame && ( + +
+ + + Editing:{" "} + + {editingGame} + + + +
+ +
+ + +
+ +
+ + + setGameConfig((prev) => ({ + ...prev, + [key]: next, + })) + } + /> +
+ +
+ +
+                        {Object.entries(gameConfig)
+                          .map(([k, v]) => (v ? `${k}=${v}` : k))
+                          .join("\n") || "# (empty config)"}
+                      
+
+
+ )} +
+ )} -
+
); diff --git a/electron/renderer/src/app/page.tsx b/electron/renderer/src/app/page.tsx index f2b62e9..e770142 100644 --- a/electron/renderer/src/app/page.tsx +++ b/electron/renderer/src/app/page.tsx @@ -1,18 +1,28 @@ "use client"; -import { useState } from "react"; +import { useState, useMemo } from "react"; import { Gamepad2, Swords, Joystick, Settings } from "lucide-react"; -import { Alert, Description, Skeleton } from "@heroui/react"; +import { Alert, Skeleton } from "@heroui/react"; +import { EmptyState } from "@heroui-pro/react"; import { PageShell } from "@/components/page-shell"; import { GameList } from "@/components/game-list"; import { GameDetail } from "@/components/game-detail"; import { useGames } from "@/hooks/use-games"; import type { AnyGame } from "@/lib/api"; +function gameListKey(game: AnyGame): string { + return `${game.source}:${game.app_id}`; +} + export default function GamesPage() { const { data, isLoading, error } = useGames(); const [selected, setSelected] = useState(null); + const selectedListKey = useMemo( + () => (selected ? gameListKey(selected) : null), + [selected], + ); + return ( {isLoading ? ( @@ -56,7 +66,7 @@ export default function GamesPage() { steam={data?.steam ?? []} heroic={data?.heroic ?? []} lutris={data?.lutris ?? []} - selectedId={selected?.app_id ?? null} + selectedListKey={selectedListKey} onSelect={setSelected} />
@@ -64,23 +74,39 @@ export default function GamesPage() { {selected ? ( ) : ( -
- -

- Select a game -

- - Choose a game from the list to configure launch options, compatibility tools, and performance settings. - -
- Steam - Heroic - Lutris -
-
- - Proton, MangoHud, Gamescope, env vars, profiles & more -
+
+ + + + + + Select a game + + Choose a game from the list to configure launch options, compatibility tools, and performance + settings. + + + +
+ + + Steam + + + + Heroic + + + + Lutris + +
+
+ + Proton, MangoHud, Gamescope, env vars, profiles and more +
+
+
)}
diff --git a/electron/renderer/src/app/scopebuddy/page.tsx b/electron/renderer/src/app/scopebuddy/page.tsx new file mode 100644 index 0000000..247bf87 --- /dev/null +++ b/electron/renderer/src/app/scopebuddy/page.tsx @@ -0,0 +1,815 @@ +"use client"; + +import { useEffect, useMemo, useState } from "react"; +import { + Telescope, + RefreshCw, + FolderOpen, + Layers, + Save, + Trash2, + Plus, + FilePlus2, + AlertCircle, + CheckCircle2, + ExternalLink, + type LucideIcon, +} from "lucide-react"; +import { + Alert, + Button, + ButtonGroup, + Card, + Chip, + Input, + Label, + Link as HeroLink, + Spinner, + Text, + TextField, + Tooltip, +} from "@heroui/react"; +import { EmptyState, ItemCard, ItemCardGroup, Sheet, Widget } from "@heroui-pro/react"; +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; +import { PageShell } from "@/components/page-shell"; +import { ScbKvEditor } from "@/components/scb-kv-editor"; +import { api, type ScopeBuddyAutoCaps } from "@/lib/api"; +import { appShowToast } from "@/lib/app-toast"; + +const SCB_KNOWN_KEYS = [ + "SCB_GAMESCOPE_ARGS", + "SCB_AUTO_RES", + "SCB_AUTO_HDR", + "SCB_AUTO_VRR", + "SCB_AUTO_REFRESH", + "SCB_AUTO_FRAME_LIMIT", + "SCB_NOSCOPE", + "SCB_NESTEDFIX", + "SCB_APPENDMODE", + "SCB_DEBUG", +] as const; + +const SCOPEBUDDY_INSTALL_ROWS: { distro: string; cmd: string }[] = [ + { distro: "Bazzite / SteamOS", cmd: "Often pre-installed — check PATH" }, + { distro: "Fedora (Terra)", cmd: "sudo dnf install ScopeBuddy" }, + { distro: "Arch / AUR", cmd: "yay -S scopebuddy-git" }, + { + distro: "curl (any distro)", + cmd: "curl -fsSL https://raw.githubusercontent.com/HikariKnight/ScopeBuddy/refs/heads/main/bin/scopebuddy | sudo tee /usr/local/bin/scopebuddy && sudo chmod +x /usr/local/bin/scopebuddy", + }, + { distro: "NixOS / Home Manager", cmd: "inputs.scopebuddy.url = github:HikariKnight/ScopeBuddy" }, +]; + +interface CapRow { + id: keyof ScopeBuddyAutoCaps; + label: string; + hint: string; +} + +const CAP_ROWS: CapRow[] = [ + { id: "kde", label: "KDE Plasma", hint: "kscreen-doctor + jq" }, + { id: "gnome_gdctl", label: "GNOME (gdctl JSON)", hint: "upstream gdctl with --format=json + jq" }, + { id: "gnome_randr", label: "GNOME (gnome-randr)", hint: "fallback when gdctl JSON missing" }, + { id: "wlroots", label: "wlroots compositor", hint: "wlr-randr + jq" }, + { id: "jq", label: "jq", hint: "required for all SCB_AUTO_* probes" }, +]; + +interface KvSheetState { + kind: "per-app" | "envvars"; + key: string; + isNew: boolean; +} + +interface ScbConfFile { + path: string; + exists: boolean; + config: Record; +} + +function presetButtons(presets: Record> | undefined) { + if (!presets) return null; + return Object.entries(presets).map(([name, vars]) => ({ + name, + vars, + summary: Object.keys(vars).join(", "), + })); +} + +export default function ScopeBuddyPage() { + const qc = useQueryClient(); + const [globalCfg, setGlobalCfg] = useState>({}); + const [globalDirty, setGlobalDirty] = useState(false); + const [editorState, setEditorState] = useState(null); + const [editorCfg, setEditorCfg] = useState>({}); + const [editorDirty, setEditorDirty] = useState(false); + const [newKeyInput, setNewKeyInput] = useState(""); + + const { data: avail, isLoading: availLoading } = useQuery({ + queryKey: ["scopebuddy-available"], + queryFn: api.getScopeBuddyAvailable, + staleTime: 60_000, + }); + + const { data: caps } = useQuery({ + queryKey: ["scopebuddy-auto-caps"], + queryFn: api.getScopeBuddyAutoCaps, + staleTime: 60_000, + enabled: !!avail?.available, + }); + + const { data: globalConfig } = useQuery({ + queryKey: ["scopebuddy-config"], + queryFn: api.getScopeBuddyConfig, + enabled: !!avail?.available, + }); + + const { data: presets } = useQuery({ + queryKey: ["scopebuddy-presets"], + queryFn: api.getScopeBuddyPresets, + enabled: !!avail?.available, + }); + + const { data: perAppList } = useQuery({ + queryKey: ["scopebuddy-per-app"], + queryFn: api.listScopeBuddyPerApp, + enabled: !!avail?.available, + }); + + const { data: envVarsList } = useQuery({ + queryKey: ["scopebuddy-envvars"], + queryFn: api.listScopeBuddyEnvVars, + enabled: !!avail?.available, + }); + + const { data: openItem } = useQuery({ + queryKey: ["scopebuddy-open", editorState?.kind, editorState?.key], + enabled: !!editorState && !editorState.isNew, + queryFn: async (): Promise => { + if (!editorState) throw new Error("no editor"); + const r = + editorState.kind === "per-app" + ? await api.getScopeBuddyPerApp(editorState.key) + : await api.getScopeBuddyEnvVars(editorState.key); + return { path: r.path, exists: r.exists, config: r.config }; + }, + }); + + useEffect(() => { + if (!globalConfig?.config) return; + queueMicrotask(() => { + setGlobalCfg({ ...globalConfig.config }); + setGlobalDirty(false); + }); + }, [globalConfig?.exists, globalConfig?.config]); + + useEffect(() => { + if (!editorState) { + queueMicrotask(() => { + setEditorCfg({}); + setEditorDirty(false); + }); + return; + } + if (editorState.isNew) { + queueMicrotask(() => { + setEditorCfg({}); + setEditorDirty(false); + }); + return; + } + if (openItem?.config) { + const next = { ...openItem.config }; + queueMicrotask(() => { + setEditorCfg(next); + setEditorDirty(false); + }); + } + }, [editorState, openItem?.config]); + + const rescanMut = useMutation({ + mutationFn: () => api.rescanScopeBuddy(), + onSuccess: async (info) => { + qc.setQueryData(["scopebuddy-available"], info); + await qc.invalidateQueries({ queryKey: ["scopebuddy-auto-caps"] }); + appShowToast( + info.available + ? `ScopeBuddy detected: ${info.binary}${info.version ? ` v${info.version}` : ""}` + : "ScopeBuddy still not on PATH", + info.available ? "success" : "error", + ); + }, + onError: () => appShowToast("Rescan failed", "error"), + }); + + const saveGlobalMut = useMutation({ + mutationFn: () => api.setScopeBuddyConfig(globalCfg), + onSuccess: async () => { + await qc.invalidateQueries({ queryKey: ["scopebuddy-config"] }); + setGlobalDirty(false); + appShowToast("Saved global scb.conf"); + }, + onError: () => appShowToast("Failed to save global config", "error"), + }); + + const saveEditorMut = useMutation({ + mutationFn: () => { + if (!editorState) return Promise.reject(new Error("no editor")); + return editorState.kind === "per-app" + ? api.setScopeBuddyPerApp(editorState.key, editorCfg) + : api.setScopeBuddyEnvVars(editorState.key, editorCfg); + }, + onSuccess: async () => { + if (!editorState) return; + await qc.invalidateQueries({ queryKey: ["scopebuddy-open", editorState.kind, editorState.key] }); + await qc.invalidateQueries({ + queryKey: editorState.kind === "per-app" ? ["scopebuddy-per-app"] : ["scopebuddy-envvars"], + }); + setEditorDirty(false); + appShowToast("Saved"); + }, + onError: () => appShowToast("Save failed", "error"), + }); + + const deleteEditorMut = useMutation({ + mutationFn: () => { + if (!editorState) return Promise.reject(new Error("no editor")); + return editorState.kind === "per-app" + ? api.deleteScopeBuddyPerApp(editorState.key) + : api.deleteScopeBuddyEnvVars(editorState.key); + }, + onSuccess: async () => { + if (!editorState) return; + await qc.invalidateQueries({ + queryKey: editorState.kind === "per-app" ? ["scopebuddy-per-app"] : ["scopebuddy-envvars"], + }); + setEditorState(null); + appShowToast("Removed"); + }, + onError: () => appShowToast("Delete failed", "error"), + }); + + const presetRows = useMemo(() => presetButtons(presets), [presets]); + + const openConfigDir = async () => { + try { + await api.openPath(avail?.config_dir || "~/.config/scopebuddy"); + } catch { + appShowToast("Could not open ScopeBuddy config folder", "error"); + } + }; + + const openItemPath = async (path: string | undefined) => { + if (!path) return; + try { + await api.openPath(path); + } catch { + appShowToast("Could not open file", "error"); + } + }; + + function startNewEditor(kind: "per-app" | "envvars") { + setNewKeyInput(""); + setEditorState({ kind, key: "", isNew: true }); + } + + function commitNewKey() { + const trimmed = newKeyInput.trim(); + if (!trimmed) { + appShowToast("Pick a name first", "error"); + return; + } + if (!editorState) return; + setEditorState({ ...editorState, key: trimmed, isNew: false }); + } + + return ( + +
+ {/* Header */} +
+ + + ScopeBuddy + + + Manage ~/.config/scopebuddy/scb.conf, + per-app overrides, and shared envvars snippets.{" "} + + Project + + +
+ + {/* Status / rescan / open dir */} + + + + + Status + + + + {availLoading ? ( +
+ +
+ ) : ( +
+ + {avail?.available + ? `${avail.binary}${avail.version ? ` · v${avail.version}` : ""}` + : "scb · missing"} + + + {avail?.config_dir || "~/.config/scopebuddy"} + + + + + Re-detect scb / scopebuddy on PATH + + + +
+ )} + {!availLoading && !avail?.available && ( + + + + ScopeBuddy is not installed + + Install one of the options below, then click Rescan — no app restart needed. + + + + )} + {!availLoading && !avail?.available && ( +
+ {SCOPEBUDDY_INSTALL_ROWS.map((row) => ( + + {row.distro} + + {row.cmd} + + + ))} +
+ )} +
+
+ + {/* Auto-detect capabilities */} + {avail?.available && ( + + + + + Auto-detect probes + + + + + ScopeBuddy infers display settings via these backends. Greys out flags that won't actually + fire on your session. + + + {CAP_ROWS.map((row) => { + const ok = !!caps?.[row.id]; + const Icon: LucideIcon = ok ? CheckCircle2 : AlertCircle; + return ( + + + + + + + {row.label} + + {ok ? "available" : "missing"} + + + + {row.hint} + + + + ); + })} + + + + )} + + {/* Global scb.conf */} + {avail?.available && ( + + + + + Global scb.conf + {globalConfig?.exists ? ( + + exists + + ) : ( + + new file + + )} + {globalDirty && ( + + unsaved + + )} + + + + + {globalConfig?.path} + + { + setGlobalCfg(next); + setGlobalDirty(true); + }} + knownKeys={SCB_KNOWN_KEYS} + ariaLabel="Global ScopeBuddy config keys" + /> + {presetRows && presetRows.length > 0 && ( +
+ +
+ {presetRows.map((p) => ( + + + {p.summary} + + ))} +
+
+ )} + + + + +
+
+ )} + + {/* Per-app overrides */} + {avail?.available && ( + + + + + Per-app overrides + + {perAppList?.length ?? 0} + + + + + + Files under AppID/<key>.conf. + Steam uses the numeric app id; Heroic and Lutris use the same slug as MangoHud per-game configs. + + {perAppList && perAppList.length > 0 ? ( + + {perAppList.map((row) => ( + + + + + + {row.key} + + {row.path} + + + + + + + + Open in system editor + + + + + ))} + + ) : ( + + + + + + No per-app overrides yet + + Create one for a game from the Games tab, or use the button below to add one by raw key. + + + + )} + + + + )} + + {/* Envvars snippets */} + {avail?.available && ( + + + + + Envvars snippets + + {envVarsList?.length ?? 0} + + + + + + Reusable env-var bundles under envvars/<name>.conf. + Activate from a game by setting SCB_ENV=<name>{" "} + in launch options. + + {envVarsList && envVarsList.length > 0 ? ( + + {envVarsList.map((row) => ( + + + + + + {row.name} + + {row.path} + + + + + + + + Open in system editor + + + + + ))} + + ) : ( + + + + + + No envvars snippets yet + + Create one to share Proton/DXVK tweaks across multiple games. + + + + )} + + + + )} + + {/* Editor sheet */} + { + if (!open) { + setEditorState(null); + } + }} + > + + + + + + + + {editorState?.kind === "per-app" ? "Per-app override" : "Envvars snippet"} + {editorState?.key && ( + + {editorState.key} + + )} + {editorDirty && ( + + unsaved + + )} + + + + {editorState?.isNew ? ( +
+ + + e.key === "Enter" && commitNewKey()} + /> + + +
+ ) : openItem ? ( + <> + + {openItem.path} + + { + setEditorCfg(next); + setEditorDirty(true); + }} + knownKeys={SCB_KNOWN_KEYS} + ariaLabel={`${editorState?.kind} editor`} + /> + + ) : ( +
+ +
+ )} +
+ + + + + {editorState && !editorState.isNew && ( + <> + + + + )} + +
+
+
+
+
+
+ ); +} diff --git a/electron/renderer/src/app/system/page.tsx b/electron/renderer/src/app/system/page.tsx index b9a8372..3cc4d95 100644 --- a/electron/renderer/src/app/system/page.tsx +++ b/electron/renderer/src/app/system/page.tsx @@ -14,20 +14,28 @@ import { Leaf, Info, Layers, - Trash2, AlertCircle, + Telescope, + type LucideIcon, } from "lucide-react"; -import { Button, Chip, Spinner, Tooltip } from "@heroui/react"; +import { Button, Chip, Spinner, Text, Tooltip } from "@heroui/react"; +import { + EmptyState, + ItemCard, + ItemCardGroup, + KPI, + KPIGroup, + Widget, +} from "@heroui-pro/react"; import { PageShell } from "@/components/page-shell"; -import { GlowCard } from "@/components/glow-card"; import { useSystemInfo, useSetPowerProfile } from "@/hooks/use-system"; import { api } from "@/lib/api"; -import { useQuery, useQueryClient } from "@tanstack/react-query"; +import { useQuery } from "@tanstack/react-query"; import { appShowToast } from "@/lib/app-toast"; const POWER_PROFILE_META: Record< string, - { icon: typeof Zap; color: string; description: string } + { icon: LucideIcon; color: string; description: string } > = { performance: { icon: Bolt, @@ -61,6 +69,11 @@ const QUICK_FOLDERS: { path: "~/.config/MangoHud", description: "Global and per-game MangoHud overlay configs", }, + { + label: "ScopeBuddy", + path: "~/.config/scopebuddy", + description: "scb.conf, AppID/*.conf overrides, and envvars snippets", + }, { label: "ProtonShift", path: "~/.config/protonshift", @@ -91,7 +104,6 @@ const QUICK_FOLDERS: { export default function SystemPage() { const { data, isLoading, error } = useSystemInfo(); const setPowerProfile = useSetPowerProfile(); - const qc = useQueryClient(); const { data: displayData } = useQuery({ queryKey: ["display-monitors"], @@ -105,6 +117,24 @@ export default function SystemPage() { staleTime: 60_000, }); + const { data: gamescopeAvail } = useQuery({ + queryKey: ["gamescope-available"], + queryFn: api.getGamescopeAvailable, + staleTime: 60_000, + }); + + const { data: scopeBuddyAvail } = useQuery({ + queryKey: ["scopebuddy-available"], + queryFn: api.getScopeBuddyAvailable, + staleTime: 60_000, + }); + + const { data: mangohudAvail } = useQuery({ + queryKey: ["mangohud-available"], + queryFn: api.getMangoHudAvailable, + staleTime: 60_000, + }); + async function handleSetProfile(profile: string) { try { const result = await setPowerProfile.mutateAsync(profile); @@ -116,243 +146,389 @@ export default function SystemPage() { return ( -
+
{/* Header */} -

- - System -

+
+ + + System + + + Hardware, displays, power, and quick file-manager links — all read + live from the host. + +
{isLoading ? ( -
- -
+ + +
+ +
+
+
) : error ? ( -
- -

Failed to load system info

-

- Check that the backend is running and try refreshing. -

-
+ + + + + + + + Failed to load system info + + Check that the backend is running and try refreshing. + + + + + ) : ( <> - {/* GPU cards */} + {/* Host gaming tools */} + + + + + Gaming tools + + + + + gamescope {gamescopeAvail?.available ? "· ok" : "· missing"} + + + {scopeBuddyAvail?.available + ? `${scopeBuddyAvail.binary}${scopeBuddyAvail.version ? ` · v${scopeBuddyAvail.version}` : ""}` + : "scb · missing"} + + + MangoHud {mangohudAvail?.available ? "· ok" : "· missing"} + + + + + {/* GPUs */} {data?.gpus && data.gpus.length > 0 && ( -
- -
+ + + + + Graphics + + {data.gpus.length} GPU{data.gpus.length !== 1 ? "s" : ""} + + + + {data.gpus.map((gpu, index) => ( - -
-
- -
-
-

+
+
+ +
+
+
+ {gpu.name} -

+ {gpu.driver && ( -

- Driver: {gpu.driver} -

+ + {gpu.driver} + )} -
+
+ {(gpu.vram_mb != null || gpu.temperature != null) && ( + {gpu.vram_mb != null && ( -
- -
-

+ + + + VRAM -

-

+ + + + {gpu.vram_mb >= 1024 ? `${(gpu.vram_mb / 1024).toFixed(1)} GB` : `${gpu.vram_mb} MB`} -

-
-
+ + + + )} + {gpu.vram_mb != null && gpu.temperature != null && ( + )} {gpu.temperature != null && ( -
- 80 - ? "text-red-400" - : gpu.temperature > 60 - ? "text-yellow-400" - : "text-green-400" - }`} - /> -
-

+ + + + 80 + ? "text-red-400" + : gpu.temperature > 60 + ? "text-yellow-400" + : "text-green-400" + }`} + aria-hidden + /> Temp -

-

- {gpu.temperature.toFixed(0)}°C -

-
-
+ + + + + {gpu.temperature.toFixed(0)}°C + + + )} -
-
+ + )}
- +
))} -
-
+ + )} {/* Power profile */} {data && ( -
- - {data.power_profiles.length > 0 ? ( - -

- Switch between system power profiles. Performance maximises - clocks for gaming, balanced adapts dynamically, and - power-saver (or battery on Pop!_OS) prioritises lower draw - and quieter fans. The change takes effect immediately. -

-
- {data.power_profiles.map((profile) => { - const active = - profile.toLowerCase() === - data.current_power_profile?.toLowerCase(); - const meta = - POWER_PROFILE_META[profile.toLowerCase()] ?? - POWER_PROFILE_META["balanced"]; - const ProfileIcon = meta?.icon ?? Zap; + + + + + Power profile + {data.power_profiles.length > 0 && + data.current_power_profile && ( + + {data.current_power_profile} + + )} + + + 0 ? "space-y-3" : undefined + } + > + {data.power_profiles.length > 0 ? ( + <> + + Switch between system power profiles. Performance + maximises clocks for gaming, balanced adapts dynamically, + and power-saver (or battery on Pop!_OS) prioritises lower + draw and quieter fans. The change takes effect + immediately. + + + {data.power_profiles.map((profile) => { + const active = + profile.toLowerCase() === + data.current_power_profile?.toLowerCase(); + const meta = + POWER_PROFILE_META[profile.toLowerCase()] ?? + POWER_PROFILE_META["balanced"]; + const ProfileIcon = meta?.icon ?? Zap; - return ( - - ); - })} -
-
- ) : ( - -
- -
-

+ + + + + + ); + })} + + + ) : ( +

+ +
+ Profile switching unavailable -

-

+ + No supported power tool responded. ProtonShift uses{" "} - + system76-power - {" "} + {" "} on Pop!_OS (query:{" "} - + system76-power profile - + ) or{" "} - + powerprofilesctl - {" "} + {" "} from power-profiles-daemon elsewhere. -

-

+ + Sandboxed installs (for example Flatpak) may not see those commands on the host unless permissions allow it. -

+
- - )} -
+ )} + + )} {/* Displays */} {displayData && displayData.monitors.length > 0 && ( -
- - -
{displayData.monitors.map((monitor) => ( -
-
- -
-
-
- - {monitor.name} - + + + + + + + {monitor.name} {monitor.primary && ( )} -
-

+ + {monitor.resolution} {monitor.refresh_rate && ` @ ${monitor.refresh_rate} Hz`} {monitor.position && ` • ${monitor.position}`} -

-
-
+ + + ))} -
-
-
+ + + )} {/* Shader cache */} {shaderTotal && ( -
- - -
-
- + + + + + Shader cache + + {shaderTotal.size_human} + + + + +
+
+
-
-
- - Total size - - +
+
+ {shaderTotal.size_human} - + + + combined Vulkan/OpenGL shader cache +
-

- Combined size of all per-game Vulkan/OpenGL shader - caches in{" "} - + + Located under{" "} + ~/.steam/steam/shadercache/ - - . Individual caches can be cleared from each game's - detail page. -

+ + . Clear per game from each Steam game's detail page. +
- -
+ + )} {/* Quick folders */} -
- - -

+ + + + + Quick folders + + {QUICK_FOLDERS.length} + + + + + Open common configuration and data directories in your file manager. Missing folders will be reported — they may not exist until the relevant tool has run at least once. -

-
+ + {QUICK_FOLDERS.map((folder) => ( -
-
- -
-
-

+ + + + + + {folder.label} -

-

+ + {folder.description} -

- - {folder.path} - -
- - - - Open in file manager - - -
+ {folder.path} + + + + + + Open in file manager + + + ))} -
-
-
+ + + {/* Info footer */} - -
- -

- GPU temperatures and VRAM are read from{" "} - nvidia-smi (NVIDIA) or{" "} - /sys/class/drm/ hwmon - (AMD/Intel). Power profiles use{" "} - system76-power on - Pop!_OS or{" "} - powerprofilesctl on - Ubuntu and Fedora. Display info comes from{" "} - xrandr (X11) or{" "} - wlr-randr (Wayland). -

-
-
+ + +
+ + + GPU temperatures and VRAM are read from{" "} + + nvidia-smi + {" "} + (NVIDIA) or{" "} + + /sys/class/drm/ + {" "} + hwmon (AMD/Intel). Power profiles use{" "} + + system76-power + {" "} + on Pop!_OS or{" "} + + powerprofilesctl + {" "} + on Ubuntu and Fedora. Display info comes from{" "} + + xrandr + {" "} + (X11) or{" "} + + wlr-randr + {" "} + (Wayland). + +
+
+
)}
diff --git a/electron/renderer/src/components/app-command.tsx b/electron/renderer/src/components/app-command.tsx new file mode 100644 index 0000000..1cebfcc --- /dev/null +++ b/electron/renderer/src/components/app-command.tsx @@ -0,0 +1,224 @@ +"use client"; + +import { useEffect, useState, useCallback } from "react"; +import { useRouter } from "next/navigation"; +import { + Gamepad2, + Gauge, + Joystick, + LayoutGrid, + Search, + ServerCog, + Settings, + Telescope, + FolderOpen, +} from "lucide-react"; +import { Chip, Kbd } from "@heroui/react"; +import { Command } from "@heroui-pro/react"; +import { FOCUS_GAME_SEARCH_EVENT, OPEN_COMMAND_PALETTE_EVENT } from "@/lib/command-palette-events"; +import { api } from "@/lib/api"; +import { appShowToast } from "@/lib/app-toast"; + +const ROUTES = [ + { id: "nav-games", href: "/", label: "Games", description: "Library & per-game settings", icon: Gamepad2 }, + { + id: "nav-environment", + href: "/environment", + label: "Environment", + description: "Session environment variables", + icon: Settings, + }, + { id: "nav-system", href: "/system", label: "System", description: "GPU, power, folders", icon: ServerCog }, + { id: "nav-mangohud", href: "/mangohud", label: "MangoHud", description: "Overlay & metrics", icon: Gauge }, + { + id: "nav-scopebuddy", + href: "/scopebuddy", + label: "ScopeBuddy", + description: "scb.conf, per-app, envvars", + icon: Telescope, + }, + { + id: "nav-controllers", + href: "/controllers", + label: "Controllers", + description: "SDL gamecontroller mappings", + icon: Joystick, + }, +] as const; + +export function AppCommand() { + const router = useRouter(); + const [open, setOpen] = useState(false); + + const handleOpenChange = useCallback((next: boolean) => { + setOpen(next); + }, []); + + useEffect(() => { + function onKeyDown(e: KeyboardEvent) { + if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "k") { + e.preventDefault(); + setOpen(true); + } + } + window.addEventListener("keydown", onKeyDown); + return () => window.removeEventListener("keydown", onKeyDown); + }, []); + + useEffect(() => { + function onOpenPalette() { + setOpen(true); + } + window.addEventListener(OPEN_COMMAND_PALETTE_EVENT, onOpenPalette); + return () => window.removeEventListener(OPEN_COMMAND_PALETTE_EVENT, onOpenPalette); + }, []); + + const onAction = useCallback( + (key: string | number) => { + const id = String(key); + if (id === "focus-game-search") { + window.dispatchEvent(new CustomEvent(FOCUS_GAME_SEARCH_EVENT)); + setOpen(false); + return; + } + if (id === "open-scopebuddy-config") { + void (async () => { + try { + const info = await api.getScopeBuddyAvailable(); + const dir = info.config_dir || "~/.config/scopebuddy"; + await api.openPath(dir); + } catch { + appShowToast("Could not open ScopeBuddy config folder", "error"); + } + })(); + setOpen(false); + return; + } + if (id === "nav-games-scopebuddy-hint") { + router.push("/"); + window.dispatchEvent(new CustomEvent(FOCUS_GAME_SEARCH_EVENT)); + setOpen(false); + return; + } + if (id === "rescan-scopebuddy") { + void (async () => { + try { + const info = await api.rescanScopeBuddy(); + appShowToast( + info.available + ? `ScopeBuddy detected: ${info.binary}${info.version ? ` v${info.version}` : ""}` + : "ScopeBuddy still not on PATH", + info.available ? "success" : "error", + ); + } catch { + appShowToast("Rescan failed", "error"); + } + })(); + setOpen(false); + return; + } + const route = ROUTES.find((r) => r.id === id); + if (route) { + router.push(route.href); + setOpen(false); + } + }, + [router], + ); + + return ( + + + + + + + ProtonShift + + + + + + + + + + + Esc + + + + ( +
No matches.
+ )} + onAction={onAction} + > + + {ROUTES.map((r) => { + const Icon = r.icon; + return ( + + +
+ {r.label} + {r.description} +
+
+ ); + })} +
+ + + + Focus game search + + + + + +
+ Open ScopeBuddy page + scb.conf · per-app · envvars · rescan +
+
+ + +
+ Open ScopeBuddy config folder + ~/.config/scopebuddy · scb.conf & AppID +
+
+ + +
+ Rescan ScopeBuddy on PATH + Re-detect scb / scopebuddy after install +
+
+ + +
+ Per-game ScopeBuddy override + + Games → pick title → Setup → ScopeBuddy override widget + +
+
+
+
+ + Open with Ctrl K or Cmd K +
+ + + + Go +
+
+
+
+
+
+ ); +} diff --git a/electron/renderer/src/components/env-presets.tsx b/electron/renderer/src/components/env-presets.tsx index d70154c..61e750e 100644 --- a/electron/renderer/src/components/env-presets.tsx +++ b/electron/renderer/src/components/env-presets.tsx @@ -1,7 +1,8 @@ "use client"; import { useMemo } from "react"; -import { Button, Chip, Description } from "@heroui/react"; +import { Button, Chip, Text } from "@heroui/react"; +import { ItemCard, ItemCardGroup } from "@heroui-pro/react"; import { MonitorCog, Cpu, @@ -97,65 +98,67 @@ export function EnvPresets({ presets, onApply }: EnvPresetsProps) { return (
- + Presets merge into your current variables — existing keys are updated, new keys are added, and nothing is removed. Save to write changes to disk. - -
+ + {orderedNames.map((name) => { const vars = presets[name]; const meta = PRESET_META[name]; const varCount = Object.keys(vars).length; const Icon = meta?.icon ?? Boxes; - const iconColor = meta?.color ?? "text-text-secondary"; + const iconColor = meta?.color ?? "text-foreground"; return ( -
-
- -
-
-
- - {meta?.label ?? name} - + + + + + + + {meta?.label ?? name} {varCount} var{varCount !== 1 ? "s" : ""} -
-

+ + {meta?.description ?? `Applies ${varCount} environment variable${varCount !== 1 ? "s" : ""}.`} -

-
+ +
{Object.entries(vars).map(([k, v]) => ( - {k}={v} - + ))}
-
- -
+ + + + + ); })} -
+
); } diff --git a/electron/renderer/src/components/game-compat-tool.tsx b/electron/renderer/src/components/game-compat-tool.tsx index 74cb7f8..9d235ea 100644 --- a/electron/renderer/src/components/game-compat-tool.tsx +++ b/electron/renderer/src/components/game-compat-tool.tsx @@ -1,8 +1,9 @@ "use client"; import { Wrench, Grape } from "lucide-react"; -import { Select, Label, ListBox, Description } from "@heroui/react"; -import { GlowCard } from "./glow-card"; +import { Chip, Label, ListBox, Select, Text } from "@heroui/react"; +import { Widget } from "@heroui-pro/react"; +import { InfoHint } from "./info-hint"; import type { HeroicWineVersionData, HeroicGameConfig } from "@/lib/api"; interface SteamCompatToolProps { @@ -24,80 +25,134 @@ type GameCompatToolProps = SteamCompatToolProps | HeroicCompatToolProps; export function GameCompatTool(props: GameCompatToolProps) { if (props.mode === "steam") { + const count = props.tools.length; return ( - -
- - Proton / Compatibility Tool -
- - Select which Proton or Wine compatibility layer Steam uses for this title. Leave empty for the Steam default. - + + + + + Proton / compatibility tool + + {count} option{count === 1 ? "" : "s"} + + + + Choose which Proton or Wine layer Steam uses for this title. Leave empty for the + Steam default. + + + + + + + Steam restarts may be required for changes to take effect. + + + + ); + } + + const { selectedTool, onToolChange, wineVersions, heroicConfig } = props; + const currentName = heroicConfig?.wine_version?.name ?? null; + const currentInList = currentName + ? wineVersions.some((v) => v.name === currentName) + : false; + + return ( + + + + + Wine / Proton version + + {wineVersions.length} version{wineVersions.length === 1 ? "" : "s"} + + + + Choose the Wine or Proton version Heroic uses. The current selection is shown even + if it is no longer in the available list. + + + + -
- ); - } - - const { selectedTool, onToolChange, wineVersions, heroicConfig } = props; - - return ( - -
- - Wine / Proton Version -
- - Choose the Wine or Proton version Heroic uses. The current version is shown even if not in the available list. - - -
+ {currentName && ( + + Current: {currentName} + + )} + + ); } diff --git a/electron/renderer/src/components/game-detail-header.tsx b/electron/renderer/src/components/game-detail-header.tsx index 39c82a6..ab56e3b 100644 --- a/electron/renderer/src/components/game-detail-header.tsx +++ b/electron/renderer/src/components/game-detail-header.tsx @@ -1,5 +1,6 @@ "use client"; +import type { ReactNode } from "react"; import { Gamepad2, Swords, Joystick, Copy, Play, Save } from "lucide-react"; import { Button, ButtonGroup, Chip, Tooltip, Spinner, Alert } from "@heroui/react"; import type { AnyGame, HeroicGame } from "@/lib/api"; @@ -15,18 +16,26 @@ interface GameDetailHeaderProps { isLaunching: boolean; onSave: () => void; onLaunch: () => void; + /** Quick profile apply + save (rendered before Launch / Save) */ + profilesMenu: ReactNode; } -function getSourceIcon(source: string) { +function SourceIconGlyph({ + source, + className, +}: { + source: string; + className?: string; +}) { switch (source) { case "steam": - return Gamepad2; + return ; case "heroic": - return Swords; + return ; case "lutris": - return Joystick; + return ; default: - return Gamepad2; + return ; } } @@ -40,35 +49,38 @@ export function GameDetailHeader({ isLaunching, onSave, onLaunch, + profilesMenu, }: GameDetailHeaderProps) { - const SourceIcon = getSourceIcon(game.source); - function handleCopyAppId() { navigator.clipboard.writeText(game.app_id); appShowToast("App ID copied"); } + const showLaunchSave = isSteam || isHeroic || hasLaunchOptions; + return ( -
+
{isSteam && steamRunning && ( - Steam is running + Steam client is active - Close Steam before saving launch options to avoid conflicts. + The app detected a running steam process (including + when Steam is only in the system tray, not in the foreground). Fully quit Steam + before saving launch options to avoid conflicts. )} -
-
+
+

- - {game.name} + + {game.name}

-
+
{isHeroic && ( @@ -90,34 +102,37 @@ export function GameDetailHeader({
- {(isSteam || isHeroic || hasLaunchOptions) && ( - - {(isSteam || isHeroic) && ( - - )} - {hasLaunchOptions && ( - - )} - - )} +
+ {profilesMenu} + {showLaunchSave && ( + + {(isSteam || isHeroic) && ( + + )} + {hasLaunchOptions && ( + + )} + + )} +
-
+
); } diff --git a/electron/renderer/src/components/game-detail-kpi-strip.tsx b/electron/renderer/src/components/game-detail-kpi-strip.tsx new file mode 100644 index 0000000..06f697a --- /dev/null +++ b/electron/renderer/src/components/game-detail-kpi-strip.tsx @@ -0,0 +1,133 @@ +"use client"; + +import { useMemo } from "react"; +import { Box, HardDrive, Sparkles, Archive } from "lucide-react"; +import { Surface } from "@heroui/react"; +import type { BackupInfoData, PrefixInfo, ShaderCacheInfo } from "@/lib/api"; + +function formatRelativeTime(iso: string): string { + const t = new Date(iso).getTime(); + if (Number.isNaN(t)) return iso; + const diffMs = Date.now() - t; + const sec = Math.floor(diffMs / 1000); + if (sec < 60) return "just now"; + const min = Math.floor(sec / 60); + if (min < 60) return `${min}m ago`; + const hr = Math.floor(min / 60); + if (hr < 48) return `${hr}h ago`; + const d = Math.floor(hr / 24); + if (d < 14) return `${d}d ago`; + return new Date(iso).toLocaleDateString(); +} + +export interface GameDetailKpiStripProps { + isSteam: boolean; + isHeroic: boolean; + /** Steam: current compat tool name */ + protonCurrent?: string | null; + /** Heroic: wine version display name */ + heroicWineName?: string | null; + prefixData?: PrefixInfo | null; + shaderData?: ShaderCacheInfo | null; + backupsData?: BackupInfoData[] | null; +} + +type StatTile = { + key: string; + label: string; + value: string; + Icon: typeof Box; +}; + +export function GameDetailKpiStrip({ + isSteam, + isHeroic, + protonCurrent, + heroicWineName, + prefixData, + shaderData, + backupsData, +}: GameDetailKpiStripProps) { + const wineLabel = isSteam ? "Proton" : isHeroic ? "Wine" : null; + const wineValue = isSteam ? protonCurrent : isHeroic ? heroicWineName : null; + + const lastBackup = useMemo(() => { + if (!backupsData?.length) return null; + const sorted = [...backupsData].sort( + (a, b) => new Date(b.created).getTime() - new Date(a.created).getTime(), + ); + return sorted[0] ?? null; + }, [backupsData]); + + const tiles: StatTile[] = []; + + if (wineLabel && wineValue) { + tiles.push({ + key: "wine", + label: wineLabel, + value: wineValue, + Icon: Box, + }); + } + + if (prefixData?.exists) { + tiles.push({ + key: "prefix", + label: "Prefix", + value: prefixData.size_human, + Icon: HardDrive, + }); + } + + if (isSteam && shaderData?.exists) { + tiles.push({ + key: "shader", + label: "Shaders", + value: shaderData.size_human, + Icon: Sparkles, + }); + } + + if (lastBackup) { + tiles.push({ + key: "backup", + label: "Last backup", + value: formatRelativeTime(lastBackup.created), + Icon: Archive, + }); + } + + if (tiles.length === 0) return null; + + const gridCols = + tiles.length === 1 + ? "grid-cols-1" + : tiles.length === 2 + ? "grid-cols-1 sm:grid-cols-2" + : tiles.length === 3 + ? "grid-cols-1 sm:grid-cols-3" + : "grid-cols-2 lg:grid-cols-4"; + + return ( +
+ {tiles.map((t) => { + const Icon = t.Icon; + return ( + +
+ + {t.label} +
+

+ {t.value} +

+
+ ); + })} +
+ ); +} diff --git a/electron/renderer/src/components/game-detail-tabs.tsx b/electron/renderer/src/components/game-detail-tabs.tsx new file mode 100644 index 0000000..f144155 --- /dev/null +++ b/electron/renderer/src/components/game-detail-tabs.tsx @@ -0,0 +1,77 @@ +"use client"; + +import type { ReactNode } from "react"; +import type { Key } from "react-aria-components"; +import { motion } from "motion/react"; +import { Segment } from "@heroui-pro/react"; + +export type GameDetailTabKey = "setup" | "prefix" | "profiles"; + +export interface GameDetailTabsProps { + selectedKey: GameDetailTabKey; + onSelectionChange: (key: GameDetailTabKey) => void; + setupPanel: ReactNode; + prefixPanel: ReactNode; + profilesPanel: ReactNode; + /** Stable per-game id (e.g. app id) for layout keys */ + gameKey: string; + /** Increment when the selected tab changes to replay enter motion */ + motionEpoch: number; +} + +function toTabKey(k: Key): GameDetailTabKey { + const s = String(k); + if (s === "prefix" || s === "profiles") return s; + return "setup"; +} + +const TABS: { id: GameDetailTabKey; label: string }[] = [ + { id: "setup", label: "Setup" }, + { id: "prefix", label: "Prefix" }, + { id: "profiles", label: "Profiles" }, +]; + +export function GameDetailTabs({ + selectedKey, + onSelectionChange, + setupPanel, + prefixPanel, + profilesPanel, + gameKey, + motionEpoch, +}: GameDetailTabsProps) { + const panel = + selectedKey === "setup" ? setupPanel : selectedKey === "prefix" ? prefixPanel : profilesPanel; + + return ( +
+
+ onSelectionChange(toTabKey(k))} + className="flex w-full min-w-0 gap-0" + > + {TABS.map((tab, i) => ( + + {i > 0 ? : null} + {tab.label} + + ))} + +
+ + + {panel} + +
+ ); +} diff --git a/electron/renderer/src/components/game-detail.tsx b/electron/renderer/src/components/game-detail.tsx index 69bee30..5be7638 100644 --- a/electron/renderer/src/components/game-detail.tsx +++ b/electron/renderer/src/components/game-detail.tsx @@ -1,8 +1,10 @@ "use client"; -import { useState, useEffect } from "react"; +import { useState, useEffect, useRef } from "react"; import { motion } from "motion/react"; -import type { AnyGame, SteamGame, HeroicGame, LutrisGame } from "@/lib/api"; +import { EmptyState } from "@heroui-pro/react"; +import { Joystick } from "lucide-react"; +import type { AnyGame, SteamGame, HeroicGame } from "@/lib/api"; import { api } from "@/lib/api"; import { useLaunchOptions, @@ -35,8 +37,10 @@ import { } from "@/hooks/use-profiles"; import { mangohudSuggestedSlugForGame } from "@/lib/mangohud-naming"; import { appShowToast } from "@/lib/app-toast"; -import { RevealSection } from "./reveal-section"; import { GameDetailHeader } from "./game-detail-header"; +import { GameDetailKpiStrip } from "./game-detail-kpi-strip"; +import { GameDetailTabs, type GameDetailTabKey } from "./game-detail-tabs"; +import { GameProfilesMenu } from "./game-profiles-menu"; import { GameLaunchOptions } from "./game-launch-options"; import { GameCompatTool } from "./game-compat-tool"; import { GameProtontricks } from "./game-protontricks"; @@ -48,6 +52,7 @@ import { GameSaveData } from "./game-save-data"; import { GamePaths } from "./game-paths"; import { HeroicToggles } from "./heroic-toggles"; import { GamescopeBuilder } from "./gamescope-builder"; +import { GameScopeBuddyOverride } from "./game-scopebuddy-override"; interface GameDetailProps { game: AnyGame; @@ -63,6 +68,7 @@ function isHeroicGame(game: AnyGame): game is HeroicGame { export function GameDetail({ game }: GameDetailProps) { const isSteam = isSteamGame(game); const isHeroic = isHeroicGame(game); + const isLutris = game.source === "lutris"; const prefixPath = isSteam ? game.compatdata_path @@ -79,6 +85,10 @@ export function GameDetail({ game }: GameDetailProps) { ? `heroic:${game.app_id}` : `lutris:${game.app_id}`; const mangohudSlug = mangohudSuggestedSlugForGame(game); + const scopeBuddyKey = isSteam ? game.app_id : mangohudSlug; + const scopeBuddyKeyLabel = isSteam + ? `Steam ${game.app_id}` + : `${game.source} · ${mangohudSlug}`; // ── Data hooks ── const { data: gamesData } = useGames(); @@ -117,27 +127,42 @@ export function GameDetail({ game }: GameDetailProps) { // ── Local state ── const [launchOptions, setLaunchOptions] = useState(""); + const [gamescopeBuilderPreview, setGamescopeBuilderPreview] = useState(""); const [selectedTool, setSelectedTool] = useState(""); const [selectedHeroicWine, setSelectedHeroicWine] = useState(""); + const [tabKey, setTabKey] = useState("setup"); + const [tabMotionEpoch, setTabMotionEpoch] = useState(0); + const prevAppIdRef = useRef(game.app_id); const steamRunning = gamesData?.steam_running ?? false; useEffect(() => { - if (isSteam && launchData) setLaunchOptions(launchData.options); + if (prevAppIdRef.current === game.app_id) return; + prevAppIdRef.current = game.app_id; + setTabKey("setup"); + setTabMotionEpoch((e) => e + 1); + }, [game.app_id]); + + useEffect(() => { + if (!isSteam || !launchData) return; + queueMicrotask(() => setLaunchOptions(launchData.options)); }, [isSteam, launchData]); useEffect(() => { - if (isHeroic && heroicConfig) setLaunchOptions(heroicConfig.other_options); + if (!isHeroic || !heroicConfig) return; + queueMicrotask(() => setLaunchOptions(heroicConfig.other_options)); }, [isHeroic, heroicConfig]); useEffect(() => { - if (isSteam && protonData) setSelectedTool(protonData.current); + if (!isSteam || !protonData) return; + queueMicrotask(() => setSelectedTool(protonData.current)); }, [isSteam, protonData]); useEffect(() => { - if (isHeroic && heroicConfig?.wine_version?.name) { - setSelectedHeroicWine(heroicConfig.wine_version.name); - } + if (!isHeroic || !heroicConfig?.wine_version?.name) return; + queueMicrotask(() => + setSelectedHeroicWine(heroicConfig.wine_version.name), + ); }, [isHeroic, heroicConfig]); // ── Handlers ── @@ -180,177 +205,212 @@ export function GameDetail({ game }: GameDetailProps) { } } + function handleTabSelectionChange(key: GameDetailTabKey) { + setTabKey(key); + setTabMotionEpoch((e) => e + 1); + } + const isSaving = saveLaunchOpts.isPending || setHeroicLaunchOpts.isPending; - return ( - - {/* Header */} - + const setupHasContent = + hasLaunchOptions || + (isSteam && !!protonData) || + (isHeroic && !!heroicWineVersions && heroicWineVersions.length > 0) || + (isHeroic && !!heroicConfig?.exists) || + !!(fixesData && fixesData.length > 0); - {/* Launch Options + Quick Presets */} + const lutrisSetupPlaceholder = isLutris && !setupHasContent; + + const profilesMenu = ( + + ); + + const setupPanel = ( + <> + {lutrisSetupPlaceholder && ( + + + + + + Lutris game + + Launch options and compatibility tools are managed in Lutris. Use the Prefix tab for paths + and save data when available, and Profiles for quick configuration presets. + + + + )} {hasLaunchOptions && ( - - - + )} - - {/* Steam Proton/Compat Tool */} {isSteam && protonData && ( - - - + )} - - {/* Heroic Wine/Proton */} {isHeroic && heroicWineVersions && heroicWineVersions.length > 0 && ( - - - - )} - - {/* Heroic Toggles */} - {isHeroic && heroicConfig?.exists && ( - - - + )} - - {/* Protontricks */} - {isSteam && verbsData?.available && ( - - runProtontricks.mutate({ appId, verb })} - isPending={runProtontricks.isPending} - /> - + {isHeroic && heroicConfig?.exists && } + {hasLaunchOptions && ( + { + const current = launchOptions.trim(); + if (current.includes(cmd)) return; + setLaunchOptions(current ? `${cmd} ${current}` : cmd); + appShowToast("Gamescope command inserted"); + }} + /> )} - - {/* Gamescope */} {hasLaunchOptions && ( - - { - const current = launchOptions.trim(); - if (current.includes(cmd)) return; - setLaunchOptions(current ? `${cmd} ${current}` : cmd); - appShowToast("Gamescope command inserted"); - }} - /> - + )} - - {/* Known Fixes */} {fixesData && fixesData.length > 0 && ( - - - - )} - - {/* Profiles */} - - - + )} + + ); - {/* Prefix Details */} + const prefixPanel = ( + <> + {savesData && savesData.length > 0 && ( + + )} {prefixData?.exists && ( - - - + + )} + {isSteam && verbsData?.available && ( + runProtontricks.mutate({ appId, verb })} + isPending={runProtontricks.isPending} + /> )} - - {/* Shader Cache */} {isSteam && shaderData?.exists && ( - - - + )} + + + ); - {/* Save Data */} - {savesData && savesData.length > 0 && ( - - - - )} + const profilesPanel = ( + + ); - {/* Paths */} - - - + return ( + + + + + + ); } diff --git a/electron/renderer/src/components/game-known-fixes.tsx b/electron/renderer/src/components/game-known-fixes.tsx index a984136..44a5f55 100644 --- a/electron/renderer/src/components/game-known-fixes.tsx +++ b/electron/renderer/src/components/game-known-fixes.tsx @@ -1,8 +1,9 @@ "use client"; -import { Lightbulb } from "lucide-react"; -import { Button, Description } from "@heroui/react"; -import { GlowCard } from "./glow-card"; +import { Lightbulb, Terminal, Variable } from "lucide-react"; +import { Button, Chip, Text, Tooltip } from "@heroui/react"; +import { ItemCard, ItemCardGroup, Widget } from "@heroui-pro/react"; +import { InfoHint } from "./info-hint"; import type { GameFixData } from "@/lib/api"; import { appShowToast } from "@/lib/app-toast"; @@ -51,43 +52,83 @@ export function GameKnownFixes({ } return ( - -
- - - Community-sourced fixes for common issues. Click Apply to insert into launch options. - -
- -
- {fixes.map((fix, i) => ( -
-
-

{fix.title}

-

{fix.description}

- - {fix.fix_type === "env" ? `${fix.key}=${fix.value}` : fix.value} - -
- {hasLaunchOptions && ( - - )} -
- ))} -
-
+ + + + + Known fixes and tweaks + + {fixes.length} + + + + Community-sourced fixes. Apply inserts into launch options (env vars before + %command% on Steam). + + + + + One tap merges the snippet into your launch line if it is not already there. + + + {fixes.map((fix, i) => { + const snippet = + fix.fix_type === "env" ? `${fix.key}=${fix.value}` : fix.value; + const RowIcon = fix.fix_type === "env" ? Variable : Terminal; + return ( + + + + + + + {fix.title} + + {fix.fix_type} + + + + {fix.description} + + + {snippet} + + + + {hasLaunchOptions ? ( + + ) : ( + + + + + + Launch options are not available for this launcher. + + + )} + + + ); + })} + + + ); } diff --git a/electron/renderer/src/components/game-launch-options.tsx b/electron/renderer/src/components/game-launch-options.tsx index c533d77..321232e 100644 --- a/electron/renderer/src/components/game-launch-options.tsx +++ b/electron/renderer/src/components/game-launch-options.tsx @@ -1,15 +1,18 @@ "use client"; +import { useMemo, useCallback } from "react"; +import type { Key } from "react-aria-components"; import { Terminal, Layers } from "lucide-react"; import { TextArea, Description, Separator, - Tooltip, - ToggleButton, - ToggleButtonGroup, + Label, + Chip, + Text, } from "@heroui/react"; -import { GlowCard } from "./glow-card"; +import { CheckboxButtonGroup, Widget } from "@heroui-pro/react"; +import { InfoHint } from "./info-hint"; import type { LaunchPreset } from "@/lib/api"; interface GameLaunchOptionsProps { @@ -19,91 +22,152 @@ interface GameLaunchOptionsProps { presets: LaunchPreset[] | undefined; } +/** Remove every preset snippet so we can rebuild from checkbox selection (longest values first). */ +function stripPresetValues(line: string, presetList: LaunchPreset[]): string { + const byLen = [...presetList].sort((a, b) => b.value.length - a.value.length); + let s = line; + for (const p of byLen) { + const v = p.value.trim(); + if (!v) continue; + s = s.split(v).join(" "); + } + return s.replace(/\s+/g, " ").trim(); +} + export function GameLaunchOptions({ launchOptions, setLaunchOptions, isSteam, presets, }: GameLaunchOptionsProps) { - function handlePresetToggle(value: string) { - const current = launchOptions.trim(); - if (current.includes(value)) { - setLaunchOptions(current.replace(value, "").replace(/\s+/g, " ").trim()); - } else { - setLaunchOptions(current ? `${value} ${current}` : value); - } - } + const selectedPresetNames = useMemo( + () => + presets?.filter((p) => launchOptions.includes(p.value)).map((p) => p.name) ?? [], + [presets, launchOptions], + ); + + const activePresetCount = selectedPresetNames.length; - const activePresetIds = presets - ?.filter((p) => launchOptions.includes(p.value)) - .map((p) => p.name) ?? []; + const handlePresetsChange = useCallback( + (keys: Iterable) => { + if (!presets?.length) return; + const selected = new Set([...keys].map(String)); + const base = stripPresetValues(launchOptions, presets); + const orderedValues = presets + .filter((p) => selected.has(p.name)) + .map((p) => p.value.trim()) + .filter(Boolean); + const merged = [orderedValues.join(" "), base].filter(Boolean).join(" ").trim(); + setLaunchOptions(merged); + }, + [presets, launchOptions, setLaunchOptions], + ); return ( - -
- - + + + + + Launch options + {presets && presets.length > 0 && activePresetCount > 0 && ( + + {activePresetCount} quick preset{activePresetCount === 1 ? "" : "s"} + + )} + + {isSteam - ? "Command-line arguments prepended to %command%. Use environment variables, gamemoderun, mangohud, or gamescope before %command%." - : "Extra arguments and environment variables passed to the game process. Place env vars before the executable."} - -
- -