diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..3dce4145 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true \ No newline at end of file diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 8992fafd..4ec41f3f 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,11 +1,11 @@ name: Deploy to Github Pages on: + workflow_dispatch: push: branches: ["main"] pull_request: branches: ["main"] - workflow_dispatch: # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: @@ -41,6 +41,6 @@ jobs: - uses: actions/configure-pages@v5 - uses: actions/upload-pages-artifact@v4 with: - path: "./docs" + path: "./packages/react-spa/dist" - id: deployment uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index 8927b6ed..3d06fe95 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ node_modules/ dist/ -docs/ +# docs/ *.tsbuildinfo \ No newline at end of file diff --git a/.npmrc b/.npmrc index 41583e36..928eeb78 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1,3 @@ @jsr:registry=https://npm.jsr.io +# shamefully-hoist=true +public-hoist-pattern[]=@types* \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..a7cea0b0 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar"] +} diff --git a/json-typed.d.ts b/json-typed.d.ts new file mode 100644 index 00000000..f58b9906 --- /dev/null +++ b/json-typed.d.ts @@ -0,0 +1,31 @@ +type JsonifiedValue = T extends string | number | null | boolean + ? T + : T extends { toJSON(): infer R } + ? R + : T extends undefined | ((...args: any[]) => any) + ? never + : T extends object + ? JsonifiedObject + : never; + +type JsonifiedObject = { + [Key in keyof T as [JsonifiedValue] extends [never] + ? never + : Key]: JsonifiedValue; +}; + +type Stringified = string & { source: ObjType }; + +interface JSON { + stringify( + value: T, + replacer?: null | undefined, + space?: string | number, + ): Stringified; + parse( + str: Stringified, + replacer?: null | undefined, + ): JsonifiedObject; +} + +export {}; diff --git a/package.json b/package.json index 16d06870..292eefda 100644 --- a/package.json +++ b/package.json @@ -1,98 +1,23 @@ { "name": "yanglee2421.github.io", "private": true, - "version": "0.0.0", "type": "module", - "description": "Haven't decided what type of website to build yet", - "repository": { - "type": "git", - "url": "https://github.com/yanglee2421/yanglee2421.github.io", - "directory": "/" - }, - "homepage": "https://yanglee2421.github.io", - "scripts": { - "dev": "vite", - "build": "tsc -b && vite build", - "build:ignore-tsc": "vite build", - "lint": "eslint .", - "preview": "vite preview" - }, - "dependencies": { - "@dnd-kit/core": "^6.3.1", - "@dnd-kit/modifiers": "^9.0.0", - "@dnd-kit/sortable": "^10.0.0", - "@dnd-kit/utilities": "^3.2.2", - "@emotion/react": "^11.14.0", - "@emotion/styled": "^11.14.1", - "@fontsource/roboto": "^5.2.9", - "@hookform/resolvers": "^5.2.2", - "@mui/icons-material": "^7.3.6", - "@mui/material": "^7.3.6", - "@mui/x-date-pickers": "^8.22.0", - "@radix-ui/react-scroll-area": "^1.2.10", - "@shikijs/rehype": "^3.20.0", - "@tanstack/react-form": "^1.27.3", - "@tanstack/react-query": "^5.90.12", - "@tanstack/react-query-devtools": "^5.91.1", - "@tanstack/react-table": "^8.21.3", - "@tanstack/react-virtual": "^3.13.13", - "@toolpad/core": "^0.16.0", - "@tsparticles/engine": "^3.9.1", - "@tsparticles/preset-big-circles": "^3.2.0", - "@tsparticles/preset-bubbles": "^3.2.0", - "@tsparticles/preset-fire": "^3.2.0", - "@tsparticles/preset-firefly": "^3.2.0", - "@tsparticles/preset-fireworks": "^3.2.0", - "@tsparticles/preset-fountain": "^3.2.0", - "@tsparticles/preset-links": "^3.2.0", - "@tsparticles/preset-snow": "^3.2.0", - "@tsparticles/preset-stars": "^3.2.0", - "@tsparticles/react": "^3.0.0", - "@tsparticles/slim": "^3.9.1", - "axios": "^1.13.2", - "classnames": "^2.5.1", - "dayjs": "^1.11.19", - "dexie": "^4.2.1", - "dexie-react-hooks": "^4.2.0", - "firebase": "^12.6.0", - "i18next": "^25.7.2", - "immer": "^11.0.1", - "localforage": "^1.10.0", - "mathjs": "^15.1.0", - "notistack": "^3.0.2", - "nprogress": "^0.2.0", - "qrcode": "^1.5.4", - "react": "^19.2.4", - "react-dom": "^19.2.4", - "react-dropzone": "^14.3.8", - "react-error-boundary": "^6.0.0", - "react-hook-form": "^7.68.0", - "react-i18next": "^16.5.0", - "react-resizable-panels": "^3.0.6", - "react-router": "^7.10.1", - "recharts": "^3.5.1", - "shiki": "^3.20.0", - "use-immer": "^0.11.0", - "zod": "^4.1.13", - "zustand": "^5.0.9" - }, + "version": "0.0.0", + "description": "", + "keywords": [], + "author": "", + "license": "MIT", + "packageManager": "pnpm@10.30.1+sha512.3590e550d5384caa39bd5c7c739f72270234b2f6059e13018f975c313b1eb9fefcc09714048765d4d9efe961382c312e624572c0420762bdc5d5940cdf9be73a", "devDependencies": { "@eslint/js": "^9.39.2", - "@types/node": "^25.0.1", - "@types/nprogress": "^0.2.3", - "@types/qrcode": "^1.5.6", - "@types/react": "^19.2.7", - "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^5.1.2", - "babel-plugin-react-compiler": "^1.0.0", + "@types/node": "^25.3.0", + "@vue/tsconfig": "^0.8.1", "eslint": "^9.39.2", "eslint-plugin-react-hooks": "7.0.1", "eslint-plugin-react-refresh": "^0.4.24", "globals": "^16.5.0", - "prettier": "^3.7.4", + "prettier": "^3.8.1", "typescript": "^5.9.3", - "typescript-eslint": "^8.49.0", - "vite": "^7.2.7" - }, - "packageManager": "pnpm@10.28.0+sha512.05df71d1421f21399e053fde567cea34d446fa02c76571441bfc1c7956e98e363088982d940465fd34480d4d90a0668bc12362f8aa88000a64e83d0b0e47be48" -} + "typescript-eslint": "^8.49.0" + } +} \ No newline at end of file diff --git a/.env.development b/packages/react-spa/.env.development similarity index 100% rename from .env.development rename to packages/react-spa/.env.development diff --git a/.env.production b/packages/react-spa/.env.production similarity index 100% rename from .env.production rename to packages/react-spa/.env.production diff --git a/eslint.config.js b/packages/react-spa/eslint.config.js similarity index 100% rename from eslint.config.js rename to packages/react-spa/eslint.config.js diff --git a/index.html b/packages/react-spa/index.html similarity index 100% rename from index.html rename to packages/react-spa/index.html diff --git a/packages/react-spa/package.json b/packages/react-spa/package.json new file mode 100644 index 00000000..bb5882ba --- /dev/null +++ b/packages/react-spa/package.json @@ -0,0 +1,88 @@ +{ + "name": "react-spa", + "private": true, + "version": "0.0.0", + "type": "module", + "description": "Haven't decided what type of website to build yet", + "repository": { + "type": "git", + "url": "https://github.com/yanglee2421/yanglee2421.github.io", + "directory": "/" + }, + "homepage": "https://yanglee2421.github.io", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "build:ignore-tsc": "vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@dnd-kit/core": "^6.3.1", + "@dnd-kit/modifiers": "^9.0.0", + "@dnd-kit/sortable": "^10.0.0", + "@dnd-kit/utilities": "^3.2.2", + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.1", + "@fontsource/roboto": "^5.2.9", + "@hookform/resolvers": "^5.2.2", + "@mui/icons-material": "^7.3.6", + "@mui/material": "^7.3.6", + "@mui/x-date-pickers": "^8.22.0", + "@radix-ui/react-scroll-area": "^1.2.10", + "@shikijs/rehype": "^3.20.0", + "@tanstack/react-form": "^1.27.3", + "@tanstack/react-query": "^5.90.12", + "@tanstack/react-query-devtools": "^5.91.1", + "@tanstack/react-table": "^8.21.3", + "@tanstack/react-virtual": "^3.13.13", + "@toolpad/core": "^0.16.0", + "@tsparticles/engine": "^3.9.1", + "@tsparticles/preset-big-circles": "^3.2.0", + "@tsparticles/preset-bubbles": "^3.2.0", + "@tsparticles/preset-fire": "^3.2.0", + "@tsparticles/preset-firefly": "^3.2.0", + "@tsparticles/preset-fireworks": "^3.2.0", + "@tsparticles/preset-fountain": "^3.2.0", + "@tsparticles/preset-links": "^3.2.0", + "@tsparticles/preset-snow": "^3.2.0", + "@tsparticles/preset-stars": "^3.2.0", + "@tsparticles/react": "^3.0.0", + "@tsparticles/slim": "^3.9.1", + "axios": "^1.13.2", + "classnames": "^2.5.1", + "dayjs": "^1.11.19", + "dexie": "^4.2.1", + "dexie-react-hooks": "^4.2.0", + "firebase": "^12.6.0", + "i18next": "^25.7.2", + "immer": "^11.0.1", + "localforage": "^1.10.0", + "mathjs": "^15.1.0", + "notistack": "^3.0.2", + "nprogress": "^0.2.0", + "qrcode": "^1.5.4", + "react": "^19.2.4", + "react-dom": "^19.2.4", + "react-dropzone": "^14.3.8", + "react-error-boundary": "^6.0.0", + "react-hook-form": "^7.68.0", + "react-i18next": "^16.5.0", + "react-resizable-panels": "^3.0.6", + "react-router": "^7.10.1", + "recharts": "^3.5.1", + "shiki": "^3.20.0", + "use-immer": "^0.11.0", + "zod": "^4.1.13", + "zustand": "^5.0.9" + }, + "devDependencies": { + "@types/nprogress": "^0.2.3", + "@types/qrcode": "^1.5.6", + "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.2", + "babel-plugin-react-compiler": "^1.0.0", + "vite": "^7.3.1" + } +} \ No newline at end of file diff --git a/packages/react-spa/pnpm-lock.yaml b/packages/react-spa/pnpm-lock.yaml new file mode 100644 index 00000000..1dee05fd --- /dev/null +++ b/packages/react-spa/pnpm-lock.yaml @@ -0,0 +1,6359 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@dnd-kit/core': + specifier: ^6.3.1 + version: 6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@dnd-kit/modifiers': + specifier: ^9.0.0 + version: 9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) + '@dnd-kit/sortable': + specifier: ^10.0.0 + version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) + '@dnd-kit/utilities': + specifier: ^3.2.2 + version: 3.2.2(react@19.2.4) + '@emotion/react': + specifier: ^11.14.0 + version: 11.14.0(@types/react@19.2.7)(react@19.2.4) + '@emotion/styled': + specifier: ^11.14.1 + version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4) + '@fontsource/roboto': + specifier: ^5.2.9 + version: 5.2.9 + '@hookform/resolvers': + specifier: ^5.2.2 + version: 5.2.2(react-hook-form@7.68.0(react@19.2.4)) + '@mui/icons-material': + specifier: ^7.3.6 + version: 7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.7)(react@19.2.4) + '@mui/material': + specifier: ^7.3.6 + version: 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mui/x-date-pickers': + specifier: ^8.22.0 + version: 8.22.0(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-scroll-area': + specifier: ^1.2.10 + version: 1.2.10(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@shikijs/rehype': + specifier: ^3.20.0 + version: 3.20.0 + '@tanstack/react-form': + specifier: ^1.27.3 + version: 1.27.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@tanstack/react-query': + specifier: ^5.90.12 + version: 5.90.12(react@19.2.4) + '@tanstack/react-query-devtools': + specifier: ^5.91.1 + version: 5.91.1(@tanstack/react-query@5.90.12(react@19.2.4))(react@19.2.4) + '@tanstack/react-table': + specifier: ^8.21.3 + version: 8.21.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@tanstack/react-virtual': + specifier: ^3.13.13 + version: 3.13.13(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@toolpad/core': + specifier: ^0.16.0 + version: 0.16.0(c293b658800ea9b57a0fcad7d3f5356e) + '@tsparticles/engine': + specifier: ^3.9.1 + version: 3.9.1 + '@tsparticles/preset-big-circles': + specifier: ^3.2.0 + version: 3.2.0 + '@tsparticles/preset-bubbles': + specifier: ^3.2.0 + version: 3.2.0 + '@tsparticles/preset-fire': + specifier: ^3.2.0 + version: 3.2.0 + '@tsparticles/preset-firefly': + specifier: ^3.2.0 + version: 3.2.0 + '@tsparticles/preset-fireworks': + specifier: ^3.2.0 + version: 3.2.0 + '@tsparticles/preset-fountain': + specifier: ^3.2.0 + version: 3.2.0 + '@tsparticles/preset-links': + specifier: ^3.2.0 + version: 3.2.0 + '@tsparticles/preset-snow': + specifier: ^3.2.0 + version: 3.2.0 + '@tsparticles/preset-stars': + specifier: ^3.2.0 + version: 3.2.0 + '@tsparticles/react': + specifier: ^3.0.0 + version: 3.0.0(@tsparticles/engine@3.9.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@tsparticles/slim': + specifier: ^3.9.1 + version: 3.9.1 + axios: + specifier: ^1.13.2 + version: 1.13.2 + classnames: + specifier: ^2.5.1 + version: 2.5.1 + dayjs: + specifier: ^1.11.19 + version: 1.11.19 + dexie: + specifier: ^4.2.1 + version: 4.2.1 + dexie-react-hooks: + specifier: ^4.2.0 + version: 4.2.0(@types/react@19.2.7)(dexie@4.2.1)(react@19.2.4) + firebase: + specifier: ^12.6.0 + version: 12.6.0 + i18next: + specifier: ^25.7.2 + version: 25.7.2(typescript@5.9.3) + immer: + specifier: ^11.0.1 + version: 11.0.1 + localforage: + specifier: ^1.10.0 + version: 1.10.0 + mathjs: + specifier: ^15.1.0 + version: 15.1.0 + notistack: + specifier: ^3.0.2 + version: 3.0.2(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + nprogress: + specifier: ^0.2.0 + version: 0.2.0 + qrcode: + specifier: ^1.5.4 + version: 1.5.4 + react: + specifier: ^19.2.4 + version: 19.2.4 + react-dom: + specifier: ^19.2.4 + version: 19.2.4(react@19.2.4) + react-dropzone: + specifier: ^14.3.8 + version: 14.3.8(react@19.2.4) + react-error-boundary: + specifier: ^6.0.0 + version: 6.0.0(react@19.2.4) + react-hook-form: + specifier: ^7.68.0 + version: 7.68.0(react@19.2.4) + react-i18next: + specifier: ^16.5.0 + version: 16.5.0(i18next@25.7.2(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + react-resizable-panels: + specifier: ^3.0.6 + version: 3.0.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-router: + specifier: ^7.10.1 + version: 7.10.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + recharts: + specifier: ^3.5.1 + version: 3.5.1(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.3)(react@19.2.4)(redux@5.0.1) + shiki: + specifier: ^3.20.0 + version: 3.20.0 + use-immer: + specifier: ^0.11.0 + version: 0.11.0(immer@11.0.1)(react@19.2.4) + zod: + specifier: ^4.1.13 + version: 4.1.13 + zustand: + specifier: ^5.0.9 + version: 5.0.9(@types/react@19.2.7)(immer@11.0.1)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)) + devDependencies: + '@eslint/js': + specifier: ^9.39.2 + version: 9.39.2 + '@types/node': + specifier: ^25.0.1 + version: 25.0.1 + '@types/nprogress': + specifier: ^0.2.3 + version: 0.2.3 + '@types/qrcode': + specifier: ^1.5.6 + version: 1.5.6 + '@types/react': + specifier: ^19.2.7 + version: 19.2.7 + '@types/react-dom': + specifier: ^19.2.3 + version: 19.2.3(@types/react@19.2.7) + '@vitejs/plugin-react': + specifier: ^5.1.2 + version: 5.1.2(vite@7.2.7(@types/node@25.0.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.5.1)) + babel-plugin-react-compiler: + specifier: ^1.0.0 + version: 1.0.0 + eslint: + specifier: ^9.39.2 + version: 9.39.2 + eslint-plugin-react-hooks: + specifier: 7.0.1 + version: 7.0.1(eslint@9.39.2) + eslint-plugin-react-refresh: + specifier: ^0.4.24 + version: 0.4.24(eslint@9.39.2) + globals: + specifier: ^16.5.0 + version: 16.5.0 + prettier: + specifier: ^3.7.4 + version: 3.7.4 + typescript: + specifier: ^5.9.3 + version: 5.9.3 + typescript-eslint: + specifier: ^8.49.0 + version: 8.49.0(eslint@9.39.2)(typescript@5.9.3) + vite: + specifier: ^7.2.7 + version: 7.2.7(@types/node@25.0.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.5.1) + +packages: + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.28.5': + resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.28.5': + resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.5': + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + 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.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.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.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.5': + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.5': + resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + engines: {node: '>=6.9.0'} + + '@dnd-kit/accessibility@3.1.1': + resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} + peerDependencies: + react: '>=16.8.0' + + '@dnd-kit/core@6.3.1': + resolution: {integrity: sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@dnd-kit/modifiers@9.0.0': + resolution: {integrity: sha512-ybiLc66qRGuZoC20wdSSG6pDXFikui/dCNGthxv4Ndy8ylErY0N3KVxY2bgo7AWwIbxDmXDg3ylAFmnrjcbVvw==} + peerDependencies: + '@dnd-kit/core': ^6.3.0 + react: '>=16.8.0' + + '@dnd-kit/sortable@10.0.0': + resolution: {integrity: sha512-+xqhmIIzvAYMGfBYYnbKuNicfSsk4RksY2XdmJhT+HAC01nix6fHCztU68jooFiMUB01Ky3F0FyOvhG/BZrWkg==} + peerDependencies: + '@dnd-kit/core': ^6.3.0 + react: '>=16.8.0' + + '@dnd-kit/utilities@3.2.2': + resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==} + peerDependencies: + react: '>=16.8.0' + + '@emotion/babel-plugin@11.13.5': + resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} + + '@emotion/cache@11.14.0': + resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@emotion/is-prop-valid@1.4.0': + resolution: {integrity: sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==} + + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@emotion/react@11.14.0': + resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/serialize@1.3.3': + resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} + + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + + '@emotion/styled@11.14.1': + resolution: {integrity: sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==} + peerDependencies: + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0': + resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} + peerDependencies: + react: '>=16.8.0' + + '@emotion/utils@1.4.2': + resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} + + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.0': + resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} + 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.1': + resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} + 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.3': + resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.39.2': + resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} + 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} + + '@firebase/ai@2.6.0': + resolution: {integrity: sha512-NGyE7NQDFznOv683Xk4+WoUv39iipa9lEfrwvvPz33ChzVbCCiB69FJQTK2BI/11pRtzYGbHo1/xMz7gxWWhJw==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@firebase/app': 0.x + '@firebase/app-types': 0.x + + '@firebase/analytics-compat@0.2.25': + resolution: {integrity: sha512-fdzoaG0BEKbqksRDhmf4JoyZf16Wosrl0Y7tbZtJyVDOOwziE0vrFjmZuTdviL0yhak+Nco6rMsUUbkbD+qb6Q==} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/analytics-types@0.8.3': + resolution: {integrity: sha512-VrIp/d8iq2g501qO46uGz3hjbDb8xzYMrbu8Tp0ovzIzrvJZ2fvmj649gTjge/b7cCCcjT0H37g1gVtlNhnkbg==} + + '@firebase/analytics@0.10.19': + resolution: {integrity: sha512-3wU676fh60gaiVYQEEXsbGS4HbF2XsiBphyvvqDbtC1U4/dO4coshbYktcCHq+HFaGIK07iHOh4pME0hEq1fcg==} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/app-check-compat@0.4.0': + resolution: {integrity: sha512-UfK2Q8RJNjYM/8MFORltZRG9lJj11k0nW84rrffiKvcJxLf1jf6IEjCIkCamykHE73C6BwqhVfhIBs69GXQV0g==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/app-check-interop-types@0.3.3': + resolution: {integrity: sha512-gAlxfPLT2j8bTI/qfe3ahl2I2YcBQ8cFIBdhAQA4I2f3TndcO+22YizyGYuttLHPQEpWkhmpFW60VCFEPg4g5A==} + + '@firebase/app-check-types@0.5.3': + resolution: {integrity: sha512-hyl5rKSj0QmwPdsAxrI5x1otDlByQ7bvNvVt8G/XPO2CSwE++rmSVf3VEhaeOR4J8ZFaF0Z0NDSmLejPweZ3ng==} + + '@firebase/app-check@0.11.0': + resolution: {integrity: sha512-XAvALQayUMBJo58U/rxW02IhsesaxxfWVmVkauZvGEz3vOAjMEQnzFlyblqkc2iAaO82uJ2ZVyZv9XzPfxjJ6w==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/app-compat@0.5.6': + resolution: {integrity: sha512-YYGARbutghQY4zZUWMYia0ib0Y/rb52y72/N0z3vglRHL7ii/AaK9SA7S/dzScVOlCdnbHXz+sc5Dq+r8fwFAg==} + engines: {node: '>=20.0.0'} + + '@firebase/app-types@0.9.3': + resolution: {integrity: sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw==} + + '@firebase/app@0.14.6': + resolution: {integrity: sha512-4uyt8BOrBsSq6i4yiOV/gG6BnnrvTeyymlNcaN/dKvyU1GoolxAafvIvaNP1RCGPlNab3OuE4MKUQuv2lH+PLQ==} + engines: {node: '>=20.0.0'} + + '@firebase/auth-compat@0.6.1': + resolution: {integrity: sha512-I0o2ZiZMnMTOQfqT22ur+zcGDVSAfdNZBHo26/Tfi8EllfR1BO7aTVo2rt/ts8o/FWsK8pOALLeVBGhZt8w/vg==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/auth-interop-types@0.2.4': + resolution: {integrity: sha512-JPgcXKCuO+CWqGDnigBtvo09HeBs5u/Ktc2GaFj2m01hLarbxthLNm7Fk8iOP1aqAtXV+fnnGj7U28xmk7IwVA==} + + '@firebase/auth-types@0.13.0': + resolution: {integrity: sha512-S/PuIjni0AQRLF+l9ck0YpsMOdE8GO2KU6ubmBB7P+7TJUCQDa3R1dlgYm9UzGbbePMZsp0xzB93f2b/CgxMOg==} + peerDependencies: + '@firebase/app-types': 0.x + '@firebase/util': 1.x + + '@firebase/auth@1.11.1': + resolution: {integrity: sha512-Mea0G/BwC1D0voSG+60Ylu3KZchXAFilXQ/hJXWCw3gebAu+RDINZA0dJMNeym7HFxBaBaByX8jSa7ys5+F2VA==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@firebase/app': 0.x + '@react-native-async-storage/async-storage': ^1.18.1 + peerDependenciesMeta: + '@react-native-async-storage/async-storage': + optional: true + + '@firebase/component@0.7.0': + resolution: {integrity: sha512-wR9En2A+WESUHexjmRHkqtaVH94WLNKt6rmeqZhSLBybg4Wyf0Umk04SZsS6sBq4102ZsDBFwoqMqJYj2IoDSg==} + engines: {node: '>=20.0.0'} + + '@firebase/data-connect@0.3.12': + resolution: {integrity: sha512-baPddcoNLj/+vYo+HSJidJUdr5W4OkhT109c5qhR8T1dJoZcyJpkv/dFpYlw/VJ3dV66vI8GHQFrmAZw/xUS4g==} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/database-compat@2.1.0': + resolution: {integrity: sha512-8nYc43RqxScsePVd1qe1xxvWNf0OBnbwHxmXJ7MHSuuTVYFO3eLyLW3PiCKJ9fHnmIz4p4LbieXwz+qtr9PZDg==} + engines: {node: '>=20.0.0'} + + '@firebase/database-types@1.0.16': + resolution: {integrity: sha512-xkQLQfU5De7+SPhEGAXFBnDryUWhhlFXelEg2YeZOQMCdoe7dL64DDAd77SQsR+6uoXIZY5MB4y/inCs4GTfcw==} + + '@firebase/database@1.1.0': + resolution: {integrity: sha512-gM6MJFae3pTyNLoc9VcJNuaUDej0ctdjn3cVtILo3D5lpp0dmUHHLFN/pUKe7ImyeB1KAvRlEYxvIHNF04Filg==} + engines: {node: '>=20.0.0'} + + '@firebase/firestore-compat@0.4.2': + resolution: {integrity: sha512-cy7ov6SpFBx+PHwFdOOjbI7kH00uNKmIFurAn560WiPCZXy9EMnil1SOG7VF4hHZKdenC+AHtL4r3fNpirpm0w==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/firestore-types@3.0.3': + resolution: {integrity: sha512-hD2jGdiWRxB/eZWF89xcK9gF8wvENDJkzpVFb4aGkzfEaKxVRD1kjz1t1Wj8VZEp2LCB53Yx1zD8mrhQu87R6Q==} + peerDependencies: + '@firebase/app-types': 0.x + '@firebase/util': 1.x + + '@firebase/firestore@4.9.2': + resolution: {integrity: sha512-iuA5+nVr/IV/Thm0Luoqf2mERUvK9g791FZpUJV1ZGXO6RL2/i/WFJUj5ZTVXy5pRjpWYO+ZzPcReNrlilmztA==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/functions-compat@0.4.1': + resolution: {integrity: sha512-AxxUBXKuPrWaVNQ8o1cG1GaCAtXT8a0eaTDfqgS5VsRYLAR0ALcfqDLwo/QyijZj1w8Qf8n3Qrfy/+Im245hOQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/functions-types@0.6.3': + resolution: {integrity: sha512-EZoDKQLUHFKNx6VLipQwrSMh01A1SaL3Wg6Hpi//x6/fJ6Ee4hrAeswK99I5Ht8roiniKHw4iO0B1Oxj5I4plg==} + + '@firebase/functions@0.13.1': + resolution: {integrity: sha512-sUeWSb0rw5T+6wuV2o9XNmh9yHxjFI9zVGFnjFi+n7drTEWpl7ZTz1nROgGrSu472r+LAaj+2YaSicD4R8wfbw==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/installations-compat@0.2.19': + resolution: {integrity: sha512-khfzIY3EI5LePePo7vT19/VEIH1E3iYsHknI/6ek9T8QCozAZshWT9CjlwOzZrKvTHMeNcbpo/VSOSIWDSjWdQ==} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/installations-types@0.5.3': + resolution: {integrity: sha512-2FJI7gkLqIE0iYsNQ1P751lO3hER+Umykel+TkLwHj6plzWVxqvfclPUZhcKFVQObqloEBTmpi2Ozn7EkCABAA==} + peerDependencies: + '@firebase/app-types': 0.x + + '@firebase/installations@0.6.19': + resolution: {integrity: sha512-nGDmiwKLI1lerhwfwSHvMR9RZuIH5/8E3kgUWnVRqqL7kGVSktjLTWEMva7oh5yxQ3zXfIlIwJwMcaM5bK5j8Q==} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/logger@0.5.0': + resolution: {integrity: sha512-cGskaAvkrnh42b3BA3doDWeBmuHFO/Mx5A83rbRDYakPjO9bJtRL3dX7javzc2Rr/JHZf4HlterTW2lUkfeN4g==} + engines: {node: '>=20.0.0'} + + '@firebase/messaging-compat@0.2.23': + resolution: {integrity: sha512-SN857v/kBUvlQ9X/UjAqBoQ2FEaL1ZozpnmL1ByTe57iXkmnVVFm9KqAsTfmf+OEwWI4kJJe9NObtN/w22lUgg==} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/messaging-interop-types@0.2.3': + resolution: {integrity: sha512-xfzFaJpzcmtDjycpDeCUj0Ge10ATFi/VHVIvEEjDNc3hodVBQADZ7BWQU7CuFpjSHE+eLuBI13z5F/9xOoGX8Q==} + + '@firebase/messaging@0.12.23': + resolution: {integrity: sha512-cfuzv47XxqW4HH/OcR5rM+AlQd1xL/VhuaeW/wzMW1LFrsFcTn0GND/hak1vkQc2th8UisBcrkVcQAnOnKwYxg==} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/performance-compat@0.2.22': + resolution: {integrity: sha512-xLKxaSAl/FVi10wDX/CHIYEUP13jXUjinL+UaNXT9ByIvxII5Ne5150mx6IgM8G6Q3V+sPiw9C8/kygkyHUVxg==} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/performance-types@0.2.3': + resolution: {integrity: sha512-IgkyTz6QZVPAq8GSkLYJvwSLr3LS9+V6vNPQr0x4YozZJiLF5jYixj0amDtATf1X0EtYHqoPO48a9ija8GocxQ==} + + '@firebase/performance@0.7.9': + resolution: {integrity: sha512-UzybENl1EdM2I1sjYm74xGt/0JzRnU/0VmfMAKo2LSpHJzaj77FCLZXmYQ4oOuE+Pxtt8Wy2BVJEENiZkaZAzQ==} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/remote-config-compat@0.2.20': + resolution: {integrity: sha512-P/ULS9vU35EL9maG7xp66uljkZgcPMQOxLj3Zx2F289baTKSInE6+YIkgHEi1TwHoddC/AFePXPpshPlEFkbgg==} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/remote-config-types@0.5.0': + resolution: {integrity: sha512-vI3bqLoF14L/GchtgayMiFpZJF+Ao3uR8WCde0XpYNkSokDpAKca2DxvcfeZv7lZUqkUwQPL2wD83d3vQ4vvrg==} + + '@firebase/remote-config@0.7.0': + resolution: {integrity: sha512-dX95X6WlW7QlgNd7aaGdjAIZUiQkgWgNS+aKNu4Wv92H1T8Ue/NDUjZHd9xb8fHxLXIHNZeco9/qbZzr500MjQ==} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/storage-compat@0.4.0': + resolution: {integrity: sha512-vDzhgGczr1OfcOy285YAPur5pWDEvD67w4thyeCUh6Ys0izN9fNYtA1MJERmNBfqjqu0lg0FM5GLbw0Il21M+g==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/storage-types@0.8.3': + resolution: {integrity: sha512-+Muk7g9uwngTpd8xn9OdF/D48uiQ7I1Fae7ULsWPuKoCH3HU7bfFPhxtJYzyhjdniowhuDpQcfPmuNRAqZEfvg==} + peerDependencies: + '@firebase/app-types': 0.x + '@firebase/util': 1.x + + '@firebase/storage@0.14.0': + resolution: {integrity: sha512-xWWbb15o6/pWEw8H01UQ1dC5U3rf8QTAzOChYyCpafV6Xki7KVp3Yaw2nSklUwHEziSWE9KoZJS7iYeyqWnYFA==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/util@1.13.0': + resolution: {integrity: sha512-0AZUyYUfpMNcztR5l09izHwXkZpghLgCUaAGjtMwXnCg3bj4ml5VgiwqOMOxJ+Nw4qN/zJAaOQBcJ7KGkWStqQ==} + engines: {node: '>=20.0.0'} + + '@firebase/webchannel-wrapper@1.0.5': + resolution: {integrity: sha512-+uGNN7rkfn41HLO0vekTFhTxk61eKa8mTpRGLO0QSqlQdKvIoGAvLp3ppdVIWbTGYJWM6Kp0iN+PjMIOcnVqTw==} + + '@fontsource/roboto@5.2.9': + resolution: {integrity: sha512-ZTkyHiPk74B/aj8BZWbsxD5Yu+Lq+nR64eV4wirlrac2qXR7jYk2h6JlLYuOuoruTkGQWNw2fMuKNavw7/rg0w==} + + '@grpc/grpc-js@1.9.15': + resolution: {integrity: sha512-nqE7Hc0AzI+euzUwDAy0aY5hCp10r734gMGRdU+qOPX0XSceI2ULrcXB5U2xSc5VkWwalCj4M7GzCAygZl2KoQ==} + engines: {node: ^8.13.0 || >=10.10.0} + + '@grpc/proto-loader@0.7.15': + resolution: {integrity: sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==} + engines: {node: '>=6'} + hasBin: true + + '@hookform/resolvers@5.2.2': + resolution: {integrity: sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==} + peerDependencies: + react-hook-form: ^7.55.0 + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} + 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'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@mui/core-downloads-tracker@7.3.6': + resolution: {integrity: sha512-QaYtTHlr8kDFN5mE1wbvVARRKH7Fdw1ZuOjBJcFdVpfNfRYKF3QLT4rt+WaB6CKJvpqxRsmEo0kpYinhH5GeHg==} + + '@mui/icons-material@7.3.6': + resolution: {integrity: sha512-0FfkXEj22ysIq5pa41A2NbcAhJSvmcZQ/vcTIbjDsd6hlslG82k5BEBqqS0ZJprxwIL3B45qpJ+bPHwJPlF7uQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@mui/material': ^7.3.6 + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/material@7.3.6': + resolution: {integrity: sha512-R4DaYF3dgCQCUAkr4wW1w26GHXcf5rCmBRHVBuuvJvaGLmZdD8EjatP80Nz5JCw0KxORAzwftnHzXVnjR8HnFw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@mui/material-pigment-css': ^7.3.6 + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@mui/material-pigment-css': + optional: true + '@types/react': + optional: true + + '@mui/private-theming@7.3.6': + resolution: {integrity: sha512-Ws9wZpqM+FlnbZXaY/7yvyvWQo1+02Tbx50mVdNmzWEi51C51y56KAbaDCYyulOOBL6BJxuaqG8rNNuj7ivVyw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/styled-engine@7.3.6': + resolution: {integrity: sha512-+wiYbtvj+zyUkmDB+ysH6zRjuQIJ+CM56w0fEXV+VDNdvOuSywG+/8kpjddvvlfMLsaWdQe5oTuYGBcodmqGzQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@emotion/react': ^11.4.1 + '@emotion/styled': ^11.3.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + + '@mui/system@7.3.6': + resolution: {integrity: sha512-8fehAazkHNP1imMrdD2m2hbA9sl7Ur6jfuNweh5o4l9YPty4iaZzRXqYvBCWQNwFaSHmMEj2KPbyXGp7Bt73Rg==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + + '@mui/types@7.4.9': + resolution: {integrity: sha512-dNO8Z9T2cujkSIaCnWwprfeKmTWh97cnjkgmpFJ2sbfXLx8SMZijCYHOtP/y5nnUb/Rm2omxbDMmtUoSaUtKaw==} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/utils@7.3.6': + resolution: {integrity: sha512-jn+Ba02O6PiFs7nKva8R2aJJ9kJC+3kQ2R0BbKNY3KQQ36Qng98GnPRFTlbwYTdMD6hLEBKaMLUktyg/rTfd2w==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/x-data-grid@8.22.0': + resolution: {integrity: sha512-Xz/tB2KKrLS1JKhfw37FgY2dtCrY1+sDvU7K5N0+wTPjOT5R9NRxGV/TzCERY/novvIOXuUOPVuLqAlRv+2qbg==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@emotion/react': ^11.9.0 + '@emotion/styled': ^11.8.1 + '@mui/material': ^5.15.14 || ^6.0.0 || ^7.0.0 + '@mui/system': ^5.15.14 || ^6.0.0 || ^7.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + + '@mui/x-date-pickers@8.22.0': + resolution: {integrity: sha512-iF4H8EJHcltiwfytTe6M1/iCwBUCB97oVh63nAsL4tre2Ew2jm8bKR4Dw2pbgvSUonB3okpZVuweFBQdnECJCg==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@emotion/react': ^11.9.0 + '@emotion/styled': ^11.8.1 + '@mui/material': ^5.15.14 || ^6.0.0 || ^7.0.0 + '@mui/system': ^5.15.14 || ^6.0.0 || ^7.0.0 + date-fns: ^2.25.0 || ^3.2.0 || ^4.0.0 + date-fns-jalali: ^2.13.0-0 || ^3.2.0-0 || ^4.0.0-0 + dayjs: ^1.10.7 + luxon: ^3.0.2 + moment: ^2.29.4 + moment-hijri: ^2.1.2 || ^3.0.0 + moment-jalaali: ^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + date-fns: + optional: true + date-fns-jalali: + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + moment-hijri: + optional: true + moment-jalaali: + optional: true + + '@mui/x-internals@8.22.0': + resolution: {integrity: sha512-PA7jCKRLbS6aYvTSbGr3Id4CPUdTrUejHm31l8Vje7dw138gBBHrHeGsqWJh/S5foorpK8loiRejKrLlTZokyQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@mui/x-virtualizer@0.2.12': + resolution: {integrity: sha512-TdNeXRpulYrQ9J8jdU+YnS8IDNLz5YQ4v3u+qEmNC2gqnLMVsuDZCjVwU5rkCPbraFYN94csHB0YvDwrXZ/dog==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@popperjs/core@2.11.8': + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + + '@radix-ui/number@1.1.1': + resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} + + '@radix-ui/primitive@1.1.3': + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} + + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-direction@1.1.1': + resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-presence@1.1.5': + resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.1.3': + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-scroll-area@1.2.10': + resolution: {integrity: sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.2.3': + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@reduxjs/toolkit@2.11.1': + resolution: {integrity: sha512-HjhlEREguAyBTGNzRlGNiDHGQ2EjLSPWwdhhpoEqHYy8hWak3Dp6/fU72OfqVsiMb8S6rbfPsWUF24fxpilrVA==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18 || ^19 + react-redux: ^7.2.1 || ^8.1.3 || ^9.0.0 + peerDependenciesMeta: + react: + optional: true + react-redux: + optional: true + + '@rolldown/pluginutils@1.0.0-beta.53': + resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} + + '@rollup/rollup-android-arm-eabi@4.53.3': + resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.53.3': + resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.53.3': + resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.53.3': + resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.53.3': + resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.53.3': + resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.53.3': + resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.53.3': + resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.53.3': + resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.53.3': + resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.53.3': + resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.53.3': + resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.53.3': + resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.53.3': + resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.53.3': + resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.53.3': + resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openharmony-arm64@4.53.3': + resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.53.3': + resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.53.3': + resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.53.3': + resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.53.3': + resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} + cpu: [x64] + os: [win32] + + '@shikijs/core@3.20.0': + resolution: {integrity: sha512-f2ED7HYV4JEk827mtMDwe/yQ25pRiXZmtHjWF8uzZKuKiEsJR7Ce1nuQ+HhV9FzDcbIo4ObBCD9GPTzNuy9S1g==} + + '@shikijs/engine-javascript@3.20.0': + resolution: {integrity: sha512-OFx8fHAZuk7I42Z9YAdZ95To6jDePQ9Rnfbw9uSRTSbBhYBp1kEOKv/3jOimcj3VRUKusDYM6DswLauwfhboLg==} + + '@shikijs/engine-oniguruma@3.20.0': + resolution: {integrity: sha512-Yx3gy7xLzM0ZOjqoxciHjA7dAt5tyzJE3L4uQoM83agahy+PlW244XJSrmJRSBvGYELDhYXPacD4R/cauV5bzQ==} + + '@shikijs/langs@3.20.0': + resolution: {integrity: sha512-le+bssCxcSHrygCWuOrYJHvjus6zhQ2K7q/0mgjiffRbkhM4o1EWu2m+29l0yEsHDbWaWPNnDUTRVVBvBBeKaA==} + + '@shikijs/rehype@3.20.0': + resolution: {integrity: sha512-/sqob3V/lJK0m2mZ64nkcWPN88im0D9atkI3S3PUBvtJZTHnJXVwZhHQFRDyObgEIa37IpHYHR3CuFtXB5bT2g==} + + '@shikijs/themes@3.20.0': + resolution: {integrity: sha512-U1NSU7Sl26Q7ErRvJUouArxfM2euWqq1xaSrbqMu2iqa+tSp0D1Yah8216sDYbdDHw4C8b75UpE65eWorm2erQ==} + + '@shikijs/types@3.20.0': + resolution: {integrity: sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@standard-schema/spec@1.0.0': + resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + + '@standard-schema/utils@0.3.0': + resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} + + '@tanstack/devtools-event-client@0.3.5': + resolution: {integrity: sha512-RL1f5ZlfZMpghrCIdzl6mLOFLTuhqmPNblZgBaeKfdtk5rfbjykurv+VfYydOFXj0vxVIoA2d/zT7xfD7Ph8fw==} + engines: {node: '>=18'} + + '@tanstack/form-core@1.27.3': + resolution: {integrity: sha512-dFllZ1JEVmFVwvbXL+l1NWbj4X++FL+D9EK3Xksw7JA+V48wLHq7uzNHQy76al0M+ry0reLqfm65fgd8BWR7/Q==} + + '@tanstack/pacer-lite@0.1.1': + resolution: {integrity: sha512-y/xtNPNt/YeyoVxE/JCx+T7yjEzpezmbb+toK8DDD1P4m7Kzs5YR956+7OKexG3f8aXgC3rLZl7b1V+yNUSy5w==} + engines: {node: '>=18'} + + '@tanstack/query-core@5.90.12': + resolution: {integrity: sha512-T1/8t5DhV/SisWjDnaiU2drl6ySvsHj1bHBCWNXd+/T+Hh1cf6JodyEYMd5sgwm+b/mETT4EV3H+zCVczCU5hg==} + + '@tanstack/query-devtools@5.91.1': + resolution: {integrity: sha512-l8bxjk6BMsCaVQH6NzQEE/bEgFy1hAs5qbgXl0xhzezlaQbPk6Mgz9BqEg2vTLPOHD8N4k+w/gdgCbEzecGyNg==} + + '@tanstack/react-form@1.27.3': + resolution: {integrity: sha512-GLGJC5PuY1OUgkBy9ZHornOAucWrVOCNHyMBCTf1kjmuDCzIvufrQlkLja9jwVwye8tta1K4Z0IkC/pqPM1Hjg==} + peerDependencies: + '@tanstack/react-start': '*' + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@tanstack/react-start': + optional: true + + '@tanstack/react-query-devtools@5.91.1': + resolution: {integrity: sha512-tRnJYwEbH0kAOuToy8Ew7bJw1lX3AjkkgSlf/vzb+NpnqmHPdWM+lA2DSdGQSLi1SU0PDRrrCI1vnZnci96CsQ==} + peerDependencies: + '@tanstack/react-query': ^5.90.10 + react: ^18 || ^19 + + '@tanstack/react-query@5.90.12': + resolution: {integrity: sha512-graRZspg7EoEaw0a8faiUASCyJrqjKPdqJ9EwuDRUF9mEYJ1YPczI9H+/agJ0mOJkPCJDk0lsz5QTrLZ/jQ2rg==} + peerDependencies: + react: ^18 || ^19 + + '@tanstack/react-store@0.8.0': + resolution: {integrity: sha512-1vG9beLIuB7q69skxK9r5xiLN3ztzIPfSQSs0GfeqWGO2tGIyInZx0x1COhpx97RKaONSoAb8C3dxacWksm1ow==} + 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 + + '@tanstack/react-table@8.21.3': + resolution: {integrity: sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww==} + engines: {node: '>=12'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + '@tanstack/react-virtual@3.13.13': + resolution: {integrity: sha512-4o6oPMDvQv+9gMi8rE6gWmsOjtUZUYIJHv7EB+GblyYdi8U6OqLl8rhHWIUZSL1dUU2dPwTdTgybCKf9EjIrQg==} + 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 + + '@tanstack/store@0.7.7': + resolution: {integrity: sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==} + + '@tanstack/store@0.8.0': + resolution: {integrity: sha512-Om+BO0YfMZe//X2z0uLF2j+75nQga6TpTJgLJQBiq85aOyZNIhkCgleNcud2KQg4k4v9Y9l+Uhru3qWMPGTOzQ==} + + '@tanstack/table-core@8.21.3': + resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==} + engines: {node: '>=12'} + + '@tanstack/virtual-core@3.13.13': + resolution: {integrity: sha512-uQFoSdKKf5S8k51W5t7b2qpfkyIbdHMzAn+AMQvHPxKUPeo1SsGaA4JRISQT87jm28b7z8OEqPcg1IOZagQHcA==} + + '@toolpad/core@0.16.0': + resolution: {integrity: sha512-/Iiyubp1u8L4DZqIgP1N0mhOxXpk9+I05xg+Hbk7VYUVEMlVmF+x7+FzPxocOWrvgAdeNZfyCZhY9u99SEQbtQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@emotion/cache': ^11 + '@emotion/react': ^11 + '@mui/icons-material': ^7.0.0-beta || ^7.0.0 + '@mui/material': ^7.0.0-beta || ^7.0.0 + '@tanstack/react-router': ^1 + next: ^14 || ^15 + react: ^18 || ^19 + react-dom: ^18 || ^19 + react-router: ^7 + peerDependenciesMeta: + '@tanstack/react-router': + optional: true + next: + optional: true + react-router: + optional: true + + '@toolpad/utils@0.16.0': + resolution: {integrity: sha512-nqM7lk32OJwPFwEJyUoZ1Wvm1qwTlJ+ZP8w+sF9U5rW+ufcEm09sav4h+gwdjx6199B765omqu3AS41nvkWBBw==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + + '@tsparticles/basic@3.9.1': + resolution: {integrity: sha512-ijr2dHMx0IQHqhKW3qA8tfwrR2XYbbWYdaJMQuBo2CkwBVIhZ76U+H20Y492j/NXpd1FUnt2aC0l4CEVGVGdeQ==} + + '@tsparticles/engine@3.9.1': + resolution: {integrity: sha512-DpdgAhWMZ3Eh2gyxik8FXS6BKZ8vyea+Eu5BC4epsahqTGY9V3JGGJcXC6lRJx6cPMAx1A0FaQAojPF3v6rkmQ==} + + '@tsparticles/interaction-external-attract@3.9.1': + resolution: {integrity: sha512-5AJGmhzM9o4AVFV24WH5vSqMBzOXEOzIdGLIr+QJf4fRh9ZK62snsusv/ozKgs2KteRYQx+L7c5V3TqcDy2upg==} + + '@tsparticles/interaction-external-bounce@3.9.1': + resolution: {integrity: sha512-bv05+h70UIHOTWeTsTI1AeAmX6R3s8nnY74Ea6p6AbQjERzPYIa0XY19nq/hA7+Nrg+EissP5zgoYYeSphr85A==} + + '@tsparticles/interaction-external-bubble@3.9.1': + resolution: {integrity: sha512-tbd8ox/1GPl+zr+KyHQVV1bW88GE7OM6i4zql801YIlCDrl9wgTDdDFGIy9X7/cwTvTrCePhrfvdkUamXIribQ==} + + '@tsparticles/interaction-external-connect@3.9.1': + resolution: {integrity: sha512-sq8YfUNsIORjXHzzW7/AJQtfi/qDqLnYG2qOSE1WOsog39MD30RzmiOloejOkfNeUdcGUcfsDgpUuL3UhzFUOA==} + + '@tsparticles/interaction-external-grab@3.9.1': + resolution: {integrity: sha512-QwXza+sMMWDaMiFxd8y2tJwUK6c+nNw554+/9+tEZeTTk2fCbB0IJ7p/TH6ZGWDL0vo2muK54Njv2fEey191ow==} + + '@tsparticles/interaction-external-pause@3.9.1': + resolution: {integrity: sha512-Gzv4/FeNir0U/tVM9zQCqV1k+IAgaFjDU3T30M1AeAsNGh/rCITV2wnT7TOGFkbcla27m4Yxa+Fuab8+8pzm+g==} + + '@tsparticles/interaction-external-push@3.9.1': + resolution: {integrity: sha512-GvnWF9Qy4YkZdx+WJL2iy9IcgLvzOIu3K7aLYJFsQPaxT8d9TF8WlpoMlWKnJID6H5q4JqQuMRKRyWH8aAKyQw==} + + '@tsparticles/interaction-external-remove@3.9.1': + resolution: {integrity: sha512-yPThm4UDWejDOWW5Qc8KnnS2EfSo5VFcJUQDWc1+Wcj17xe7vdSoiwwOORM0PmNBzdDpSKQrte/gUnoqaUMwOA==} + + '@tsparticles/interaction-external-repulse@3.9.1': + resolution: {integrity: sha512-/LBppXkrMdvLHlEKWC7IykFhzrz+9nebT2fwSSFXK4plEBxDlIwnkDxd3FbVOAbnBvx4+L8+fbrEx+RvC8diAw==} + + '@tsparticles/interaction-external-slow@3.9.1': + resolution: {integrity: sha512-1ZYIR/udBwA9MdSCfgADsbDXKSFS0FMWuPWz7bm79g3sUxcYkihn+/hDhc6GXvNNR46V1ocJjrj0u6pAynS1KQ==} + + '@tsparticles/interaction-external-trail@3.9.1': + resolution: {integrity: sha512-Au0v2oiqfKTemI/4bzjD4dUXzIngB5Q2T4nJcMCYpP24uZfwZh5xTjUMH7gyJyyaRTdMl9IJrp8ySjyYbLfeGg==} + + '@tsparticles/interaction-particles-attract@3.9.1': + resolution: {integrity: sha512-CYYYowJuGwRLUixQcSU/48PTKM8fCUYThe0hXwQ+yRMLAn053VHzL7NNZzKqEIeEyt5oJoy9KcvubjKWbzMBLQ==} + + '@tsparticles/interaction-particles-collisions@3.9.1': + resolution: {integrity: sha512-ggGyjW/3v1yxvYW1IF1EMT15M6w31y5zfNNUPkqd/IXRNPYvm0Z0ayhp+FKmz70M5p0UxxPIQHTvAv9Jqnuj8w==} + + '@tsparticles/interaction-particles-links@3.9.1': + resolution: {integrity: sha512-MsLbMjy1vY5M5/hu/oa5OSRZAUz49H3+9EBMTIOThiX+a+vpl3sxc9AqNd9gMsPbM4WJlub8T6VBZdyvzez1Vg==} + + '@tsparticles/move-base@3.9.1': + resolution: {integrity: sha512-X4huBS27d8srpxwOxliWPUt+NtCwY+8q/cx1DvQxyqmTA8VFCGpcHNwtqiN+9JicgzOvSuaORVqUgwlsc7h4pQ==} + + '@tsparticles/move-parallax@3.9.1': + resolution: {integrity: sha512-whlOR0bVeyh6J/hvxf/QM3DqvNnITMiAQ0kro6saqSDItAVqg4pYxBfEsSOKq7EhjxNvfhhqR+pFMhp06zoCVA==} + + '@tsparticles/plugin-easing-quad@3.9.1': + resolution: {integrity: sha512-C2UJOca5MTDXKUTBXj30Kiqr5UyID+xrY/LxicVWWZPczQW2bBxbIbfq9ULvzGDwBTxE2rdvIB8YFKmDYO45qw==} + + '@tsparticles/plugin-emitters-shape-square@3.9.1': + resolution: {integrity: sha512-dhA1c7FKs19B8lgTf25OTA3JoptNA+rjorsqCFuY1BZDI8g9E8DNqikUge14/W7nZN96+98hY+ghxSl4K2YsgA==} + + '@tsparticles/plugin-emitters@3.9.1': + resolution: {integrity: sha512-h7opR8SoFWBmVHceDLJUerLENaPfkJSh2zQYvzmLj2L+V3VLS1QDgty+4QZVeZfqNROmgQw2eLFA5El1E0sqqw==} + + '@tsparticles/plugin-hex-color@3.9.1': + resolution: {integrity: sha512-vZgZ12AjUicJvk7AX4K2eAmKEQX/D1VEjEPFhyjbgI7A65eX72M465vVKIgNA6QArLZ1DLs7Z787LOE6GOBWsg==} + + '@tsparticles/plugin-hsl-color@3.9.1': + resolution: {integrity: sha512-jJd1iGgRwX6eeNjc1zUXiJivaqC5UE+SC2A3/NtHwwoQrkfxGWmRHOsVyLnOBRcCPgBp/FpdDe6DIDjCMO715w==} + + '@tsparticles/plugin-rgb-color@3.9.1': + resolution: {integrity: sha512-SBxk7f1KBfXeTnnklbE2Hx4jBgh6I6HOtxb+Os1gTp0oaghZOkWcCD2dP4QbUu7fVNCMOcApPoMNC8RTFcy9wQ==} + + '@tsparticles/plugin-sounds@3.9.1': + resolution: {integrity: sha512-Hw2hmKmkkuFnNhOBwkvREXLULbAUwXXMeenyIy0jUGGuvjjI7rivJeFU6djCaaI0q4SbIlBFuu9mLZw2FEfwEA==} + + '@tsparticles/preset-big-circles@3.2.0': + resolution: {integrity: sha512-3mmvYVPdukUdvswa9QsUfLayHxzbZUMlxVz3mkRgj/VAIDoQBXAvlWUzJ24c4BD/CC6iUDME0eU8o4gu0Bw89g==} + + '@tsparticles/preset-bubbles@3.2.0': + resolution: {integrity: sha512-xYPnCQhrvu4GuLy7RAOex6sIuu96mwCaY80JlnuugxW0fNCCcxi1C0I1pwQvbUsKO2qUb3fKkkefKGQHdnn2Hg==} + + '@tsparticles/preset-fire@3.2.0': + resolution: {integrity: sha512-tXH/Q/zj2GKvCqhSh8eJP+pDN/O+07PYuZZKPK0mQJKatqUVQMTbk5VRE113goRmPVg3ZLcqVgihTSAyx7HaJA==} + + '@tsparticles/preset-firefly@3.2.0': + resolution: {integrity: sha512-lmy0Fboqvo3jhca5WXivhUTtw1f+oJmYmdGPOygoSoYdzrLDu+GDU5Agkm3eEj6CiyhDaA1NzUez63Xb4IbLLg==} + + '@tsparticles/preset-fireworks@3.2.0': + resolution: {integrity: sha512-weLfPAxhL5CC1SkOeE0UXyWzsQyO8ggLe0LFTJ/J0+m6U9DB6PX0lvvdDf3Jh31pwGzj4QwkGIQ2FcgoUrWc2w==} + + '@tsparticles/preset-fountain@3.2.0': + resolution: {integrity: sha512-ZZj/+CLq7Y/trJlDrnYBzwYtjuNEibeBWZbbQWt+an4kbXCmm90EG8g89ZlSHqY7rZK7gpofjoiaSsHEUNob3Q==} + + '@tsparticles/preset-links@3.2.0': + resolution: {integrity: sha512-F4nddhEzMSiZZzIizXcb6jMbHEC7+hAwzrUph1OiRvHWnLeo13pDG0DdYIKhY15xC6cZP0IMZq7wzIUkyPJ1ew==} + + '@tsparticles/preset-snow@3.2.0': + resolution: {integrity: sha512-S/nxsNSBgRG8nkeYePXLGdZ0I5ysJ5AelcWYlGxxWx0b6qurAw8NvyfQd7+GXuj6kaS/5+aay71L2apf1WG/yQ==} + + '@tsparticles/preset-stars@3.2.0': + resolution: {integrity: sha512-sCqqRD0/wq8YAJf/izu4Bv2Ol5SRMZtK3SVzRjaxNdhW5Wf0iw2aCt81Ve8YklIii2I6vYAPWjGtTPGUiyZpwg==} + + '@tsparticles/react@3.0.0': + resolution: {integrity: sha512-hjGEtTT1cwv6BcjL+GcVgH++KYs52bIuQGW3PWv7z3tMa8g0bd6RI/vWSLj7p//NZ3uTjEIeilYIUPBh7Jfq/Q==} + peerDependencies: + '@tsparticles/engine': ^3.0.2 + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@tsparticles/shape-circle@3.9.1': + resolution: {integrity: sha512-DqZFLjbuhVn99WJ+A9ajz9YON72RtCcvubzq6qfjFmtwAK7frvQeb6iDTp6Ze9FUipluxVZWVRG4vWTxi2B+/g==} + + '@tsparticles/shape-emoji@3.9.1': + resolution: {integrity: sha512-ifvY63usuT+hipgVHb8gelBHSeF6ryPnMxAAEC1RGHhhXfpSRWMtE6ybr+pSsYU52M3G9+TF84v91pSwNrb9ZQ==} + + '@tsparticles/shape-image@3.9.1': + resolution: {integrity: sha512-fCA5eme8VF3oX8yNVUA0l2SLDKuiZObkijb0z3Ky0qj1HUEVlAuEMhhNDNB9E2iELTrWEix9z7BFMePp2CC7AA==} + + '@tsparticles/shape-line@3.9.1': + resolution: {integrity: sha512-wT8NSp0N9HURyV05f371cHKcNTNqr0/cwUu6WhBzbshkYGy1KZUP9CpRIh5FCrBpTev34mEQfOXDycgfG0KiLQ==} + + '@tsparticles/shape-polygon@3.9.1': + resolution: {integrity: sha512-dA77PgZdoLwxnliH6XQM/zF0r4jhT01pw5y7XTeTqws++hg4rTLV9255k6R6eUqKq0FPSW1/WBsBIl7q/MmrqQ==} + + '@tsparticles/shape-square@3.9.1': + resolution: {integrity: sha512-DKGkDnRyZrAm7T2ipqNezJahSWs6xd9O5LQLe5vjrYm1qGwrFxJiQaAdlb00UNrexz1/SA7bEoIg4XKaFa7qhQ==} + + '@tsparticles/shape-star@3.9.1': + resolution: {integrity: sha512-kdMJpi8cdeb6vGrZVSxTG0JIjCwIenggqk0EYeKAwtOGZFBgL7eHhF2F6uu1oq8cJAbXPujEoabnLsz6mW8XaA==} + + '@tsparticles/slim@3.9.1': + resolution: {integrity: sha512-CL5cDmADU7sDjRli0So+hY61VMbdroqbArmR9Av+c1Fisa5ytr6QD7Jv62iwU2S6rvgicEe9OyRmSy5GIefwZw==} + + '@tsparticles/updater-color@3.9.1': + resolution: {integrity: sha512-XGWdscrgEMA8L5E7exsE0f8/2zHKIqnTrZymcyuFBw2DCB6BIV+5z6qaNStpxrhq3DbIxxhqqcybqeOo7+Alpg==} + + '@tsparticles/updater-destroy@3.9.1': + resolution: {integrity: sha512-MjMzEhZwCQIbxO6ZRM0eXsHVwmlXuUqwC43WCPZCpjhK3AJrMu3KR4xsJieFTWIbVNguAvbgoTB10FfJOUU5VA==} + + '@tsparticles/updater-life@3.9.1': + resolution: {integrity: sha512-Oi8aF2RIwMMsjssUkCB6t3PRpENHjdZf6cX92WNfAuqXtQphr3OMAkYFJFWkvyPFK22AVy3p/cFt6KE5zXxwAA==} + + '@tsparticles/updater-opacity@3.9.1': + resolution: {integrity: sha512-w778LQuRZJ+IoWzeRdrGykPYSSaTeWfBvLZ2XwYEkh/Ss961InOxZKIpcS6i5Kp/Zfw0fS1ZAuqeHwuj///Osw==} + + '@tsparticles/updater-out-modes@3.9.1': + resolution: {integrity: sha512-cKQEkAwbru+hhKF+GTsfbOvuBbx2DSB25CxOdhtW2wRvDBoCnngNdLw91rs+0Cex4tgEeibkebrIKFDDE6kELg==} + + '@tsparticles/updater-rotate@3.9.1': + resolution: {integrity: sha512-9BfKaGfp28JN82MF2qs6Ae/lJr9EColMfMTHqSKljblwbpVDHte4umuwKl3VjbRt87WD9MGtla66NTUYl+WxuQ==} + + '@tsparticles/updater-size@3.9.1': + resolution: {integrity: sha512-3NSVs0O2ApNKZXfd+y/zNhTXSFeG1Pw4peI8e6z/q5+XLbmue9oiEwoPy/tQLaark3oNj3JU7Q903ZijPyXSzw==} + + '@tsparticles/updater-stroke-color@3.9.1': + resolution: {integrity: sha512-3x14+C2is9pZYTg9T2TiA/aM1YMq4wLdYaZDcHm3qO30DZu5oeQq0rm/6w+QOGKYY1Z3Htg9rlSUZkhTHn7eDA==} + + '@tsparticles/updater-wobble@3.9.1': + resolution: {integrity: sha512-c99Ogy9q4QWO+zsDXol0UnpUwZiY2UucFb8ltuDv9AlbGUeprygoub8jhgT5pEDv+GdzWOJGSgq7rfgv9cHBrg==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-shape@3.1.7': + resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/node@25.0.1': + resolution: {integrity: sha512-czWPzKIAXucn9PtsttxmumiQ9N0ok9FrBwgRWrwmVLlp86BrMExzvXRLFYRJ+Ex3g6yqj+KuaxfX1JTgV2lpfg==} + + '@types/nprogress@0.2.3': + resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/prop-types@15.7.15': + resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} + + '@types/qrcode@1.5.6': + resolution: {integrity: sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==} + + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} + peerDependencies: + '@types/react': ^19.2.0 + + '@types/react-transition-group@4.4.12': + resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} + peerDependencies: + '@types/react': '*' + + '@types/react@19.2.7': + resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/use-sync-external-store@0.0.6': + resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==} + + '@typescript-eslint/eslint-plugin@8.49.0': + resolution: {integrity: sha512-JXij0vzIaTtCwu6SxTh8qBc66kmf1xs7pI4UOiMDFVct6q86G0Zs7KRcEoJgY3Cav3x5Tq0MF5jwgpgLqgKG3A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.49.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/parser@8.49.0': + resolution: {integrity: sha512-N9lBGA9o9aqb1hVMc9hzySbhKibHmB+N3IpoShyV6HyQYRGIhlrO5rQgttypi+yEeKsKI4idxC8Jw6gXKD4THA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/project-service@8.49.0': + resolution: {integrity: sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/scope-manager@8.49.0': + resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.49.0': + resolution: {integrity: sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/type-utils@8.49.0': + resolution: {integrity: sha512-KTExJfQ+svY8I10P4HdxKzWsvtVnsuCifU5MvXrRwoP2KOlNZ9ADNEWWsQTJgMxLzS5VLQKDjkCT/YzgsnqmZg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/types@8.49.0': + resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.49.0': + resolution: {integrity: sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/utils@8.49.0': + resolution: {integrity: sha512-N3W7rJw7Rw+z1tRsHZbK395TWSYvufBXumYtEGzypgMUthlg0/hmCImeA8hgO2d2G4pd7ftpxxul2J8OdtdaFA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/visitor-keys@8.49.0': + resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@vitejs/plugin-react@5.1.2': + resolution: {integrity: sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + attr-accept@2.2.5: + resolution: {integrity: sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==} + engines: {node: '>=4'} + + axios@1.13.2: + resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + babel-plugin-react-compiler@1.0.0: + resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==} + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + baseline-browser-mapping@2.9.7: + resolution: {integrity: sha512-k9xFKplee6KIio3IDbwj+uaCLpqzOwakOgmqzPezM0sFJlFKcg30vk2wOiAJtkTSfx0SSQDSe8q+mWA/fSH5Zg==} + hasBin: true + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001760: + resolution: {integrity: sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk@4.1.2: + 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} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + clipboardy@4.0.0: + resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} + engines: {node: '>=18'} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + complex.js@2.4.3: + resolution: {integrity: sha512-UrQVSUur14tNX6tiP4y8T4w4FeJAX3bi2cIv0pu/DTLFNxoq7z2Yh83Vfzztj6Px3X/lubqQ9IrPp7Bpn6p4MQ==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} + engines: {node: '>=18'} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + 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.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + 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'} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + dayjs@1.11.19: + resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decimal.js-light@2.5.1: + resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + dexie-react-hooks@4.2.0: + resolution: {integrity: sha512-u7KqTX9JpBQK8+tEyA9X0yMGXlSCsbm5AU64N6gjvGk/IutYDpLBInMYEAEC83s3qhIvryFS+W+sqLZUBEvePQ==} + peerDependencies: + '@types/react': '>=16' + dexie: '>=4.2.0-alpha.1 <5.0.0' + react: '>=16' + + dexie@4.2.1: + resolution: {integrity: sha512-Ckej0NS6jxQ4Po3OrSQBFddayRhTCic2DoCAG5zacOfOVB9P2Q5Xc5uL/nVa7ZVs+HdMnvUPzLFCB/JwpB6Csg==} + + dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + electron-to-chromium@1.5.267: + resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-toolkit@1.43.0: + resolution: {integrity: sha512-SKCT8AsWvYzBBuUqMk4NPwFlSdqLpJwmy6AP322ERn8W2YLIB6JBXnwMI2Qsh2gfphT3q7EKAxKb23cvFHFwKA==} + + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-latex@1.2.0: + resolution: {integrity: sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-react-hooks@7.0.1: + resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==} + 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 + + eslint-plugin-react-refresh@0.4.24: + resolution: {integrity: sha512-nLHIW7TEq3aLrEYWpVaJ1dRgFR+wLDPN8e8FpYAql/bMV2oBEfC37K0gLEGgv9fy66juNShSMV8OkTqzltcG/w==} + peerDependencies: + eslint: '>=8.40' + + 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@9.39.2: + resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + 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@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-json-patch@3.1.1: + resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + file-selector@2.1.2: + resolution: {integrity: sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig==} + engines: {node: '>= 12'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + firebase@12.6.0: + resolution: {integrity: sha512-8ZD1Gcv916Qp8/nsFH2+QMIrfX/76ti6cJwxQUENLXXnKlOX/IJZaU2Y3bdYf5r1mbownrQKfnWtrt+MVgdwLA==} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + 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.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + 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'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@16.5.0: + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} + engines: {node: '>=18'} + + goober@2.1.18: + resolution: {integrity: sha512-2vFqsaDVIT9Gz7N6kAL++pLpp41l3PfDuusHcjnGLfR6+huZkl6ziX+zgVC3ZxpqWhzH6pyDdGrCeDhMIvwaxw==} + peerDependencies: + csstype: ^3.0.10 + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-to-string@3.0.1: + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + html-parse-stringify@3.0.1: + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + http-parser-js@0.5.10: + resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + i18next@25.7.2: + resolution: {integrity: sha512-58b4kmLpLv1buWUEwegMDUqZVR5J+rT+WTRFaBGL7lxDuJQQ0NrJFrq+eT2N94aYVR1k1Sr13QITNOL88tZCuw==} + peerDependencies: + typescript: ^5 + peerDependenciesMeta: + typescript: + optional: true + + idb@7.1.1: + resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + + 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'} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + immer@10.2.0: + resolution: {integrity: sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==} + + immer@11.0.1: + resolution: {integrity: sha512-naDCyggtcBWANtIrjQEajhhBEuL9b0Zg4zmlWK2CzS6xCWSE39/vvf4LqnMjUAWHBhot4m9MHCM/Z+mfWhUkiA==} + + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + + 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'} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + 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-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + is64bit@2.0.0: + resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} + engines: {node: '>=18'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + javascript-natural-sort@0.7.1: + resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} + + 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-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + 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==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + engines: {node: '>= 12.0.0'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mathjs@15.1.0: + resolution: {integrity: sha512-HfnAcScQm9drGryodlDqeS3WAl4gUTYGDcOtcqL/8s23MZ28Ib1i8XnYK3ZdjNuaW/L4BAp9lIp8vxAMrcuu1w==} + engines: {node: '>= 18'} + hasBin: true + + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + notistack@3.0.2: + resolution: {integrity: sha512-0R+/arLYbK5Hh7mEfR2adt0tyXJcCC9KkA2hc56FeWik2QN6Bm/S4uW+BjzDARsJth5u06nTjelSw/VSnB1YEA==} + engines: {node: '>=12.0.0', npm: '>=6.0.0'} + peerDependencies: + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + oniguruma-parser@0.12.1: + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + + oniguruma-to-es@4.3.4: + resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} + + oppa@0.4.0: + resolution: {integrity: sha512-DFvM3+F+rB/igo3FRnkDWitjZgBH9qZAn68IacYHsqbZBKwuTA+LdD4zSJiQtgQpWq7M08we5FlGAVHz0yW7PQ==} + engines: {node: '>=10'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + engines: {node: '>=14'} + hasBin: true + + prettier@3.7.4: + resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} + engines: {node: '>=14'} + hasBin: true + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + + protobufjs@7.5.4: + resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} + engines: {node: '>=12.0.0'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qrcode@1.5.4: + resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==} + engines: {node: '>=10.13.0'} + hasBin: true + + react-dom@19.2.4: + resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} + peerDependencies: + react: ^19.2.4 + + react-dropzone@14.3.8: + resolution: {integrity: sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug==} + engines: {node: '>= 10.13'} + peerDependencies: + react: '>= 16.8 || 18.0.0' + + react-error-boundary@6.0.0: + resolution: {integrity: sha512-gdlJjD7NWr0IfkPlaREN2d9uUZUlksrfOx7SX62VRerwXbMY6ftGCIZua1VG1aXFNOimhISsTq+Owp725b9SiA==} + peerDependencies: + react: '>=16.13.1' + + react-hook-form@7.68.0: + resolution: {integrity: sha512-oNN3fjrZ/Xo40SWlHf1yCjlMK417JxoSJVUXQjGdvdRCU07NTFei1i1f8ApUAts+IVh14e4EdakeLEA+BEAs/Q==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + + react-i18next@16.5.0: + resolution: {integrity: sha512-IMpPTyCTKxEj8klCrLKUTIUa8uYTd851+jcu2fJuUB9Agkk9Qq8asw4omyeHVnOXHrLgQJGTm5zTvn8HpaPiqw==} + peerDependencies: + i18next: '>= 25.6.2' + react: '>= 16.8.0' + react-dom: '*' + react-native: '*' + typescript: ^5 + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + typescript: + optional: true + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@19.2.3: + resolution: {integrity: sha512-qJNJfu81ByyabuG7hPFEbXqNcWSU3+eVus+KJs+0ncpGfMyYdvSmxiJxbWR65lYi1I+/0HBcliO029gc4F+PnA==} + + react-redux@9.2.0: + resolution: {integrity: sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==} + peerDependencies: + '@types/react': ^18.2.25 || ^19 + react: ^18.0 || ^19 + redux: ^5.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + redux: + optional: true + + react-refresh@0.18.0: + resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} + engines: {node: '>=0.10.0'} + + react-resizable-panels@3.0.6: + resolution: {integrity: sha512-b3qKHQ3MLqOgSS+FRYKapNkJZf5EQzuf6+RLiq1/IlTHw99YrZ2NJZLk4hQIzTnnIkRg2LUqyVinu6YWWpUYew==} + peerDependencies: + react: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + react-router@7.10.1: + resolution: {integrity: sha512-gHL89dRa3kwlUYtRQ+m8NmxGI6CgqN+k4XyGjwcFoQwwCWF6xXpOCUlDovkXClS0d0XJN/5q7kc5W3kiFEd0Yw==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react@19.2.4: + resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} + engines: {node: '>=0.10.0'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + recharts@3.5.1: + resolution: {integrity: sha512-+v+HJojK7gnEgG6h+b2u7k8HH7FhyFUzAc4+cPrsjL4Otdgqr/ecXzAnHciqlzV1ko064eNcsdzrYOM78kankA==} + engines: {node: '>=18'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-is: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + redux-thunk@3.1.0: + resolution: {integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==} + peerDependencies: + redux: ^5.0.0 + + redux@5.0.1: + resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==} + + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + reselect@5.1.1: + resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} + hasBin: true + + rollup@4.53.3: + resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + sass@1.77.8: + resolution: {integrity: sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==} + engines: {node: '>=14.0.0'} + hasBin: true + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + seedrandom@3.0.5: + resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-cookie-parser@2.7.2: + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@3.20.0: + resolution: {integrity: sha512-kgCOlsnyWb+p0WU+01RjkCH+eBVsjL1jOwUYWv0YDWkM2/A46+LDKVs5yZCUXjJG6bj4ndFoAg5iLIIue6dulg==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + system-architecture@0.1.0: + resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} + engines: {node: '>=18'} + + tiny-emitter@2.1.0: + resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + title@4.0.1: + resolution: {integrity: sha512-xRnPkJx9nvE5MF6LkB5e8QJjE2FW8269wTu/LQdf7zZqBgPly0QJPf/CWAo7srj5so4yXfoLEdCFgurlpi47zg==} + hasBin: true + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + typed-function@4.2.2: + resolution: {integrity: sha512-VwaXim9Gp1bngi/q3do8hgttYn2uC3MoT/gfuMWylnj1IeZBUAyPddHZlo1K05BDoj8DYPpMdiHqH1dDYdJf2A==} + engines: {node: '>= 18'} + + typescript-eslint@8.49.0: + resolution: {integrity: sha512-zRSVH1WXD0uXczCXw+nsdjGPUdx4dfrs5VQoHnUWmv1U3oNlAKv4FUNdLDhVUg+gYn+a5hUESqch//Rv5wVhrg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + update-browserslist-db@1.2.2: + resolution: {integrity: sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-immer@0.11.0: + resolution: {integrity: sha512-RNAqi3GqsWJ4bcCd4LMBgdzvPmTABam24DUaFiKfX9s3MSorNRz9RDZYJkllJoMHUxVLMDetwAuCDeyWNrp1yA==} + peerDependencies: + immer: '>=8.0.0' + react: ^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 + + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + victory-vendor@37.3.6: + resolution: {integrity: sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==} + + vite@7.2.7: + resolution: {integrity: sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + + web-vitals@4.2.4: + resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} + + websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + + websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml-diff-patch@2.0.0: + resolution: {integrity: sha512-RhfIQPGcKSZhsUmsczXAeg5jNhWXk3tAmhl2kjfZthdyaL0XXXOpvRozUp22HvPStmZsHu8T30/UEfX9oIwGxw==} + engines: {node: '>=14'} + hasBin: true + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.5.1: + resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + 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.1.13: + resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==} + + zustand@5.0.9: + resolution: {integrity: sha512-ALBtUj0AfjJt3uNRQoL1tL2tMvj6Gp/6e39dnfT6uzpelGru8v1tPOGBzayOWbPJvujM8JojDk3E1LxeFisBNg==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=18.0.0' + immer: '>=9.0.6' + react: '>=18.0.0' + use-sync-external-store: '>=1.2.0' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + use-sync-external-store: + optional: true + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.28.5': {} + + '@babel/core@7.28.5': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + '@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.28.5': + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.28.5 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.1 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.28.4': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 + + '@babel/parser@7.28.5': + dependencies: + '@babel/types': 7.28.5 + + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/runtime@7.28.4': {} + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + + '@babel/traverse@7.28.5': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.28.5': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@dnd-kit/accessibility@3.1.1(react@19.2.4)': + dependencies: + react: 19.2.4 + tslib: 2.8.1 + + '@dnd-kit/core@6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@dnd-kit/accessibility': 3.1.1(react@19.2.4) + '@dnd-kit/utilities': 3.2.2(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + tslib: 2.8.1 + + '@dnd-kit/modifiers@9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)': + dependencies: + '@dnd-kit/core': 6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@dnd-kit/utilities': 3.2.2(react@19.2.4) + react: 19.2.4 + tslib: 2.8.1 + + '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)': + dependencies: + '@dnd-kit/core': 6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@dnd-kit/utilities': 3.2.2(react@19.2.4) + react: 19.2.4 + tslib: 2.8.1 + + '@dnd-kit/utilities@3.2.2(react@19.2.4)': + dependencies: + react: 19.2.4 + tslib: 2.8.1 + + '@emotion/babel-plugin@11.13.5': + dependencies: + '@babel/helper-module-imports': 7.27.1 + '@babel/runtime': 7.28.4 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/serialize': 1.3.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + transitivePeerDependencies: + - supports-color + + '@emotion/cache@11.14.0': + dependencies: + '@emotion/memoize': 0.9.0 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + stylis: 4.2.0 + + '@emotion/hash@0.9.2': {} + + '@emotion/is-prop-valid@1.4.0': + dependencies: + '@emotion/memoize': 0.9.0 + + '@emotion/memoize@0.9.0': {} + + '@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4)': + dependencies: + '@babel/runtime': 7.28.4 + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4) + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + hoist-non-react-statics: 3.3.2 + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.7 + transitivePeerDependencies: + - supports-color + + '@emotion/serialize@1.3.3': + dependencies: + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.10.0 + '@emotion/utils': 1.4.2 + csstype: 3.2.3 + + '@emotion/sheet@1.4.0': {} + + '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4)': + dependencies: + '@babel/runtime': 7.28.4 + '@emotion/babel-plugin': 11.13.5 + '@emotion/is-prop-valid': 1.4.0 + '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.4) + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4) + '@emotion/utils': 1.4.2 + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.7 + transitivePeerDependencies: + - supports-color + + '@emotion/unitless@0.10.0': {} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.4)': + dependencies: + react: 19.2.4 + + '@emotion/utils@1.4.2': {} + + '@emotion/weak-memoize@0.4.0': {} + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2)': + dependencies: + eslint: 9.39.2 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.21.1': + dependencies: + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 + minimatch: 3.1.2 + 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.3': + dependencies: + ajv: 6.12.6 + 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.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.39.2': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 + + '@firebase/ai@2.6.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': + dependencies: + '@firebase/app': 0.14.6 + '@firebase/app-check-interop-types': 0.3.3 + '@firebase/app-types': 0.9.3 + '@firebase/component': 0.7.0 + '@firebase/logger': 0.5.0 + '@firebase/util': 1.13.0 + tslib: 2.8.1 + + '@firebase/analytics-compat@0.2.25(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': + dependencies: + '@firebase/analytics': 0.10.19(@firebase/app@0.14.6) + '@firebase/analytics-types': 0.8.3 + '@firebase/app-compat': 0.5.6 + '@firebase/component': 0.7.0 + '@firebase/util': 1.13.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + + '@firebase/analytics-types@0.8.3': {} + + '@firebase/analytics@0.10.19(@firebase/app@0.14.6)': + dependencies: + '@firebase/app': 0.14.6 + '@firebase/component': 0.7.0 + '@firebase/installations': 0.6.19(@firebase/app@0.14.6) + '@firebase/logger': 0.5.0 + '@firebase/util': 1.13.0 + tslib: 2.8.1 + + '@firebase/app-check-compat@0.4.0(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': + dependencies: + '@firebase/app-check': 0.11.0(@firebase/app@0.14.6) + '@firebase/app-check-types': 0.5.3 + '@firebase/app-compat': 0.5.6 + '@firebase/component': 0.7.0 + '@firebase/logger': 0.5.0 + '@firebase/util': 1.13.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + + '@firebase/app-check-interop-types@0.3.3': {} + + '@firebase/app-check-types@0.5.3': {} + + '@firebase/app-check@0.11.0(@firebase/app@0.14.6)': + dependencies: + '@firebase/app': 0.14.6 + '@firebase/component': 0.7.0 + '@firebase/logger': 0.5.0 + '@firebase/util': 1.13.0 + tslib: 2.8.1 + + '@firebase/app-compat@0.5.6': + dependencies: + '@firebase/app': 0.14.6 + '@firebase/component': 0.7.0 + '@firebase/logger': 0.5.0 + '@firebase/util': 1.13.0 + tslib: 2.8.1 + + '@firebase/app-types@0.9.3': {} + + '@firebase/app@0.14.6': + dependencies: + '@firebase/component': 0.7.0 + '@firebase/logger': 0.5.0 + '@firebase/util': 1.13.0 + idb: 7.1.1 + tslib: 2.8.1 + + '@firebase/auth-compat@0.6.1(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': + dependencies: + '@firebase/app-compat': 0.5.6 + '@firebase/auth': 1.11.1(@firebase/app@0.14.6) + '@firebase/auth-types': 0.13.0(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) + '@firebase/component': 0.7.0 + '@firebase/util': 1.13.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + - '@firebase/app-types' + - '@react-native-async-storage/async-storage' + + '@firebase/auth-interop-types@0.2.4': {} + + '@firebase/auth-types@0.13.0(@firebase/app-types@0.9.3)(@firebase/util@1.13.0)': + dependencies: + '@firebase/app-types': 0.9.3 + '@firebase/util': 1.13.0 + + '@firebase/auth@1.11.1(@firebase/app@0.14.6)': + dependencies: + '@firebase/app': 0.14.6 + '@firebase/component': 0.7.0 + '@firebase/logger': 0.5.0 + '@firebase/util': 1.13.0 + tslib: 2.8.1 + + '@firebase/component@0.7.0': + dependencies: + '@firebase/util': 1.13.0 + tslib: 2.8.1 + + '@firebase/data-connect@0.3.12(@firebase/app@0.14.6)': + dependencies: + '@firebase/app': 0.14.6 + '@firebase/auth-interop-types': 0.2.4 + '@firebase/component': 0.7.0 + '@firebase/logger': 0.5.0 + '@firebase/util': 1.13.0 + tslib: 2.8.1 + + '@firebase/database-compat@2.1.0': + dependencies: + '@firebase/component': 0.7.0 + '@firebase/database': 1.1.0 + '@firebase/database-types': 1.0.16 + '@firebase/logger': 0.5.0 + '@firebase/util': 1.13.0 + tslib: 2.8.1 + + '@firebase/database-types@1.0.16': + dependencies: + '@firebase/app-types': 0.9.3 + '@firebase/util': 1.13.0 + + '@firebase/database@1.1.0': + dependencies: + '@firebase/app-check-interop-types': 0.3.3 + '@firebase/auth-interop-types': 0.2.4 + '@firebase/component': 0.7.0 + '@firebase/logger': 0.5.0 + '@firebase/util': 1.13.0 + faye-websocket: 0.11.4 + tslib: 2.8.1 + + '@firebase/firestore-compat@0.4.2(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': + dependencies: + '@firebase/app-compat': 0.5.6 + '@firebase/component': 0.7.0 + '@firebase/firestore': 4.9.2(@firebase/app@0.14.6) + '@firebase/firestore-types': 3.0.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) + '@firebase/util': 1.13.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + - '@firebase/app-types' + + '@firebase/firestore-types@3.0.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0)': + dependencies: + '@firebase/app-types': 0.9.3 + '@firebase/util': 1.13.0 + + '@firebase/firestore@4.9.2(@firebase/app@0.14.6)': + dependencies: + '@firebase/app': 0.14.6 + '@firebase/component': 0.7.0 + '@firebase/logger': 0.5.0 + '@firebase/util': 1.13.0 + '@firebase/webchannel-wrapper': 1.0.5 + '@grpc/grpc-js': 1.9.15 + '@grpc/proto-loader': 0.7.15 + tslib: 2.8.1 + + '@firebase/functions-compat@0.4.1(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': + dependencies: + '@firebase/app-compat': 0.5.6 + '@firebase/component': 0.7.0 + '@firebase/functions': 0.13.1(@firebase/app@0.14.6) + '@firebase/functions-types': 0.6.3 + '@firebase/util': 1.13.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + + '@firebase/functions-types@0.6.3': {} + + '@firebase/functions@0.13.1(@firebase/app@0.14.6)': + dependencies: + '@firebase/app': 0.14.6 + '@firebase/app-check-interop-types': 0.3.3 + '@firebase/auth-interop-types': 0.2.4 + '@firebase/component': 0.7.0 + '@firebase/messaging-interop-types': 0.2.3 + '@firebase/util': 1.13.0 + tslib: 2.8.1 + + '@firebase/installations-compat@0.2.19(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': + dependencies: + '@firebase/app-compat': 0.5.6 + '@firebase/component': 0.7.0 + '@firebase/installations': 0.6.19(@firebase/app@0.14.6) + '@firebase/installations-types': 0.5.3(@firebase/app-types@0.9.3) + '@firebase/util': 1.13.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + - '@firebase/app-types' + + '@firebase/installations-types@0.5.3(@firebase/app-types@0.9.3)': + dependencies: + '@firebase/app-types': 0.9.3 + + '@firebase/installations@0.6.19(@firebase/app@0.14.6)': + dependencies: + '@firebase/app': 0.14.6 + '@firebase/component': 0.7.0 + '@firebase/util': 1.13.0 + idb: 7.1.1 + tslib: 2.8.1 + + '@firebase/logger@0.5.0': + dependencies: + tslib: 2.8.1 + + '@firebase/messaging-compat@0.2.23(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': + dependencies: + '@firebase/app-compat': 0.5.6 + '@firebase/component': 0.7.0 + '@firebase/messaging': 0.12.23(@firebase/app@0.14.6) + '@firebase/util': 1.13.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + + '@firebase/messaging-interop-types@0.2.3': {} + + '@firebase/messaging@0.12.23(@firebase/app@0.14.6)': + dependencies: + '@firebase/app': 0.14.6 + '@firebase/component': 0.7.0 + '@firebase/installations': 0.6.19(@firebase/app@0.14.6) + '@firebase/messaging-interop-types': 0.2.3 + '@firebase/util': 1.13.0 + idb: 7.1.1 + tslib: 2.8.1 + + '@firebase/performance-compat@0.2.22(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': + dependencies: + '@firebase/app-compat': 0.5.6 + '@firebase/component': 0.7.0 + '@firebase/logger': 0.5.0 + '@firebase/performance': 0.7.9(@firebase/app@0.14.6) + '@firebase/performance-types': 0.2.3 + '@firebase/util': 1.13.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + + '@firebase/performance-types@0.2.3': {} + + '@firebase/performance@0.7.9(@firebase/app@0.14.6)': + dependencies: + '@firebase/app': 0.14.6 + '@firebase/component': 0.7.0 + '@firebase/installations': 0.6.19(@firebase/app@0.14.6) + '@firebase/logger': 0.5.0 + '@firebase/util': 1.13.0 + tslib: 2.8.1 + web-vitals: 4.2.4 + + '@firebase/remote-config-compat@0.2.20(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6)': + dependencies: + '@firebase/app-compat': 0.5.6 + '@firebase/component': 0.7.0 + '@firebase/logger': 0.5.0 + '@firebase/remote-config': 0.7.0(@firebase/app@0.14.6) + '@firebase/remote-config-types': 0.5.0 + '@firebase/util': 1.13.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + + '@firebase/remote-config-types@0.5.0': {} + + '@firebase/remote-config@0.7.0(@firebase/app@0.14.6)': + dependencies: + '@firebase/app': 0.14.6 + '@firebase/component': 0.7.0 + '@firebase/installations': 0.6.19(@firebase/app@0.14.6) + '@firebase/logger': 0.5.0 + '@firebase/util': 1.13.0 + tslib: 2.8.1 + + '@firebase/storage-compat@0.4.0(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6)': + dependencies: + '@firebase/app-compat': 0.5.6 + '@firebase/component': 0.7.0 + '@firebase/storage': 0.14.0(@firebase/app@0.14.6) + '@firebase/storage-types': 0.8.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0) + '@firebase/util': 1.13.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + - '@firebase/app-types' + + '@firebase/storage-types@0.8.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0)': + dependencies: + '@firebase/app-types': 0.9.3 + '@firebase/util': 1.13.0 + + '@firebase/storage@0.14.0(@firebase/app@0.14.6)': + dependencies: + '@firebase/app': 0.14.6 + '@firebase/component': 0.7.0 + '@firebase/util': 1.13.0 + tslib: 2.8.1 + + '@firebase/util@1.13.0': + dependencies: + tslib: 2.8.1 + + '@firebase/webchannel-wrapper@1.0.5': {} + + '@fontsource/roboto@5.2.9': {} + + '@grpc/grpc-js@1.9.15': + dependencies: + '@grpc/proto-loader': 0.7.15 + '@types/node': 25.0.1 + + '@grpc/proto-loader@0.7.15': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.3.2 + protobufjs: 7.5.4 + yargs: 17.7.2 + + '@hookform/resolvers@5.2.2(react-hook-form@7.68.0(react@19.2.4))': + dependencies: + '@standard-schema/utils': 0.3.0 + react-hook-form: 7.68.0(react@19.2.4) + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.7': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.4.3 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@mui/core-downloads-tracker@7.3.6': {} + + '@mui/icons-material@7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.7)(react@19.2.4)': + dependencies: + '@babel/runtime': 7.28.4 + '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.7 + + '@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@babel/runtime': 7.28.4 + '@mui/core-downloads-tracker': 7.3.6 + '@mui/system': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4) + '@mui/types': 7.4.9(@types/react@19.2.7) + '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.4) + '@popperjs/core': 2.11.8 + '@types/react-transition-group': 4.4.12(@types/react@19.2.7) + clsx: 2.1.1 + csstype: 3.2.3 + prop-types: 15.8.1 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-is: 19.2.3 + react-transition-group: 4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.4) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4) + '@types/react': 19.2.7 + + '@mui/private-theming@7.3.6(@types/react@19.2.7)(react@19.2.4)': + dependencies: + '@babel/runtime': 7.28.4 + '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.4) + prop-types: 15.8.1 + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.7 + + '@mui/styled-engine@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(react@19.2.4)': + dependencies: + '@babel/runtime': 7.28.4 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/sheet': 1.4.0 + csstype: 3.2.3 + prop-types: 15.8.1 + react: 19.2.4 + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.4) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4) + + '@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4)': + dependencies: + '@babel/runtime': 7.28.4 + '@mui/private-theming': 7.3.6(@types/react@19.2.7)(react@19.2.4) + '@mui/styled-engine': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(react@19.2.4) + '@mui/types': 7.4.9(@types/react@19.2.7) + '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.4) + clsx: 2.1.1 + csstype: 3.2.3 + prop-types: 15.8.1 + react: 19.2.4 + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.4) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4) + '@types/react': 19.2.7 + + '@mui/types@7.4.9(@types/react@19.2.7)': + dependencies: + '@babel/runtime': 7.28.4 + optionalDependencies: + '@types/react': 19.2.7 + + '@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.4)': + dependencies: + '@babel/runtime': 7.28.4 + '@mui/types': 7.4.9(@types/react@19.2.7) + '@types/prop-types': 15.7.15 + clsx: 2.1.1 + prop-types: 15.8.1 + react: 19.2.4 + react-is: 19.2.3 + optionalDependencies: + '@types/react': 19.2.7 + + '@mui/x-data-grid@8.22.0(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@babel/runtime': 7.28.4 + '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mui/system': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4) + '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.4) + '@mui/x-internals': 8.22.0(@types/react@19.2.7)(react@19.2.4) + '@mui/x-virtualizer': 0.2.12(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + clsx: 2.1.1 + prop-types: 15.8.1 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + use-sync-external-store: 1.6.0(react@19.2.4) + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.4) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4) + transitivePeerDependencies: + - '@types/react' + + '@mui/x-date-pickers@8.22.0(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(dayjs@1.11.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@babel/runtime': 7.28.4 + '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mui/system': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4) + '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.4) + '@mui/x-internals': 8.22.0(@types/react@19.2.7)(react@19.2.4) + '@types/react-transition-group': 4.4.12(@types/react@19.2.7) + clsx: 2.1.1 + prop-types: 15.8.1 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-transition-group: 4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.4) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4) + dayjs: 1.11.13 + transitivePeerDependencies: + - '@types/react' + + '@mui/x-date-pickers@8.22.0(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(dayjs@1.11.19)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@babel/runtime': 7.28.4 + '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mui/system': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4) + '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.4) + '@mui/x-internals': 8.22.0(@types/react@19.2.7)(react@19.2.4) + '@types/react-transition-group': 4.4.12(@types/react@19.2.7) + clsx: 2.1.1 + prop-types: 15.8.1 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-transition-group: 4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.4) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4) + dayjs: 1.11.19 + transitivePeerDependencies: + - '@types/react' + + '@mui/x-internals@8.22.0(@types/react@19.2.7)(react@19.2.4)': + dependencies: + '@babel/runtime': 7.28.4 + '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.4) + react: 19.2.4 + reselect: 5.1.1 + use-sync-external-store: 1.6.0(react@19.2.4) + transitivePeerDependencies: + - '@types/react' + + '@mui/x-virtualizer@0.2.12(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@babel/runtime': 7.28.4 + '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.4) + '@mui/x-internals': 8.22.0(@types/react@19.2.7)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + transitivePeerDependencies: + - '@types/react' + + '@popperjs/core@2.11.8': {} + + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + + '@radix-ui/number@1.1.1': {} + + '@radix-ui/primitive@1.1.3': {} + + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.7)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-context@1.1.2(@types/react@19.2.7)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-direction@1.1.1(@types/react@19.2.7)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.7)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.7)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.7)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) + + '@radix-ui/react-slot@1.2.3(@types/react@19.2.7)(react@19.2.4)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.4) + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.7)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.7 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.7)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.7 + + '@reduxjs/toolkit@2.11.1(react-redux@9.2.0(@types/react@19.2.7)(react@19.2.4)(redux@5.0.1))(react@19.2.4)': + dependencies: + '@standard-schema/spec': 1.0.0 + '@standard-schema/utils': 0.3.0 + immer: 11.0.1 + redux: 5.0.1 + redux-thunk: 3.1.0(redux@5.0.1) + reselect: 5.1.1 + optionalDependencies: + react: 19.2.4 + react-redux: 9.2.0(@types/react@19.2.7)(react@19.2.4)(redux@5.0.1) + + '@rolldown/pluginutils@1.0.0-beta.53': {} + + '@rollup/rollup-android-arm-eabi@4.53.3': + optional: true + + '@rollup/rollup-android-arm64@4.53.3': + optional: true + + '@rollup/rollup-darwin-arm64@4.53.3': + optional: true + + '@rollup/rollup-darwin-x64@4.53.3': + optional: true + + '@rollup/rollup-freebsd-arm64@4.53.3': + optional: true + + '@rollup/rollup-freebsd-x64@4.53.3': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.53.3': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.53.3': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.53.3': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.53.3': + optional: true + + '@rollup/rollup-linux-x64-musl@4.53.3': + optional: true + + '@rollup/rollup-openharmony-arm64@4.53.3': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.53.3': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.53.3': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.53.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.53.3': + optional: true + + '@shikijs/core@3.20.0': + dependencies: + '@shikijs/types': 3.20.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@3.20.0': + dependencies: + '@shikijs/types': 3.20.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.4 + + '@shikijs/engine-oniguruma@3.20.0': + dependencies: + '@shikijs/types': 3.20.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.20.0': + dependencies: + '@shikijs/types': 3.20.0 + + '@shikijs/rehype@3.20.0': + dependencies: + '@shikijs/types': 3.20.0 + '@types/hast': 3.0.4 + hast-util-to-string: 3.0.1 + shiki: 3.20.0 + unified: 11.0.5 + unist-util-visit: 5.0.0 + + '@shikijs/themes@3.20.0': + dependencies: + '@shikijs/types': 3.20.0 + + '@shikijs/types@3.20.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@standard-schema/spec@1.0.0': {} + + '@standard-schema/utils@0.3.0': {} + + '@tanstack/devtools-event-client@0.3.5': {} + + '@tanstack/form-core@1.27.3': + dependencies: + '@tanstack/devtools-event-client': 0.3.5 + '@tanstack/pacer-lite': 0.1.1 + '@tanstack/store': 0.7.7 + + '@tanstack/pacer-lite@0.1.1': {} + + '@tanstack/query-core@5.90.12': {} + + '@tanstack/query-devtools@5.91.1': {} + + '@tanstack/react-form@1.27.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@tanstack/form-core': 1.27.3 + '@tanstack/react-store': 0.8.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + transitivePeerDependencies: + - react-dom + + '@tanstack/react-query-devtools@5.91.1(@tanstack/react-query@5.90.12(react@19.2.4))(react@19.2.4)': + dependencies: + '@tanstack/query-devtools': 5.91.1 + '@tanstack/react-query': 5.90.12(react@19.2.4) + react: 19.2.4 + + '@tanstack/react-query@5.90.12(react@19.2.4)': + dependencies: + '@tanstack/query-core': 5.90.12 + react: 19.2.4 + + '@tanstack/react-store@0.8.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@tanstack/store': 0.8.0 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + use-sync-external-store: 1.6.0(react@19.2.4) + + '@tanstack/react-table@8.21.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@tanstack/table-core': 8.21.3 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@tanstack/react-virtual@3.13.13(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@tanstack/virtual-core': 3.13.13 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@tanstack/store@0.7.7': {} + + '@tanstack/store@0.8.0': {} + + '@tanstack/table-core@8.21.3': {} + + '@tanstack/virtual-core@3.13.13': {} + + '@toolpad/core@0.16.0(c293b658800ea9b57a0fcad7d3f5356e)': + dependencies: + '@babel/runtime': 7.28.4 + '@emotion/cache': 11.14.0 + '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.4) + '@mui/icons-material': 7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.7)(react@19.2.4) + '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.4) + '@mui/x-data-grid': 8.22.0(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@mui/x-date-pickers': 8.22.0(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(react@19.2.4))(@types/react@19.2.7)(dayjs@1.11.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@toolpad/utils': 0.16.0(react@19.2.4) + client-only: 0.0.1 + dayjs: 1.11.13 + invariant: 2.2.4 + path-to-regexp: 6.3.0 + prop-types: 15.8.1 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + react-router: 7.10.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + transitivePeerDependencies: + - '@emotion/styled' + - '@mui/system' + - '@types/react' + - date-fns + - date-fns-jalali + - luxon + - moment + - moment-hijri + - moment-jalaali + + '@toolpad/utils@0.16.0(react@19.2.4)': + dependencies: + invariant: 2.2.4 + prettier: 3.5.3 + react: 19.2.4 + react-is: 19.2.3 + title: 4.0.1 + yaml: 2.5.1 + yaml-diff-patch: 2.0.0 + + '@tsparticles/basic@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + '@tsparticles/move-base': 3.9.1 + '@tsparticles/plugin-hex-color': 3.9.1 + '@tsparticles/plugin-hsl-color': 3.9.1 + '@tsparticles/plugin-rgb-color': 3.9.1 + '@tsparticles/shape-circle': 3.9.1 + '@tsparticles/updater-color': 3.9.1 + '@tsparticles/updater-opacity': 3.9.1 + '@tsparticles/updater-out-modes': 3.9.1 + '@tsparticles/updater-size': 3.9.1 + + '@tsparticles/engine@3.9.1': {} + + '@tsparticles/interaction-external-attract@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/interaction-external-bounce@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/interaction-external-bubble@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/interaction-external-connect@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/interaction-external-grab@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/interaction-external-pause@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/interaction-external-push@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/interaction-external-remove@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/interaction-external-repulse@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/interaction-external-slow@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/interaction-external-trail@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/interaction-particles-attract@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/interaction-particles-collisions@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/interaction-particles-links@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/move-base@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/move-parallax@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/plugin-easing-quad@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/plugin-emitters-shape-square@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + '@tsparticles/plugin-emitters': 3.9.1 + + '@tsparticles/plugin-emitters@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/plugin-hex-color@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/plugin-hsl-color@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/plugin-rgb-color@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/plugin-sounds@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/preset-big-circles@3.2.0': + dependencies: + '@tsparticles/basic': 3.9.1 + '@tsparticles/engine': 3.9.1 + '@tsparticles/plugin-emitters': 3.9.1 + '@tsparticles/plugin-emitters-shape-square': 3.9.1 + + '@tsparticles/preset-bubbles@3.2.0': + dependencies: + '@tsparticles/basic': 3.9.1 + '@tsparticles/engine': 3.9.1 + '@tsparticles/plugin-emitters': 3.9.1 + + '@tsparticles/preset-fire@3.2.0': + dependencies: + '@tsparticles/basic': 3.9.1 + '@tsparticles/engine': 3.9.1 + '@tsparticles/interaction-external-push': 3.9.1 + + '@tsparticles/preset-firefly@3.2.0': + dependencies: + '@tsparticles/basic': 3.9.1 + '@tsparticles/engine': 3.9.1 + '@tsparticles/interaction-external-trail': 3.9.1 + + '@tsparticles/preset-fireworks@3.2.0': + dependencies: + '@tsparticles/basic': 3.9.1 + '@tsparticles/engine': 3.9.1 + '@tsparticles/plugin-emitters': 3.9.1 + '@tsparticles/plugin-emitters-shape-square': 3.9.1 + '@tsparticles/plugin-sounds': 3.9.1 + '@tsparticles/shape-line': 3.9.1 + '@tsparticles/updater-destroy': 3.9.1 + '@tsparticles/updater-life': 3.9.1 + '@tsparticles/updater-rotate': 3.9.1 + '@tsparticles/updater-stroke-color': 3.9.1 + + '@tsparticles/preset-fountain@3.2.0': + dependencies: + '@tsparticles/basic': 3.9.1 + '@tsparticles/engine': 3.9.1 + '@tsparticles/plugin-emitters': 3.9.1 + '@tsparticles/updater-destroy': 3.9.1 + + '@tsparticles/preset-links@3.2.0': + dependencies: + '@tsparticles/basic': 3.9.1 + '@tsparticles/engine': 3.9.1 + '@tsparticles/interaction-particles-links': 3.9.1 + + '@tsparticles/preset-snow@3.2.0': + dependencies: + '@tsparticles/basic': 3.9.1 + '@tsparticles/engine': 3.9.1 + '@tsparticles/updater-wobble': 3.9.1 + + '@tsparticles/preset-stars@3.2.0': + dependencies: + '@tsparticles/basic': 3.9.1 + '@tsparticles/engine': 3.9.1 + + '@tsparticles/react@3.0.0(@tsparticles/engine@3.9.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@tsparticles/engine': 3.9.1 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@tsparticles/shape-circle@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/shape-emoji@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/shape-image@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/shape-line@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/shape-polygon@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/shape-square@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/shape-star@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/slim@3.9.1': + dependencies: + '@tsparticles/basic': 3.9.1 + '@tsparticles/engine': 3.9.1 + '@tsparticles/interaction-external-attract': 3.9.1 + '@tsparticles/interaction-external-bounce': 3.9.1 + '@tsparticles/interaction-external-bubble': 3.9.1 + '@tsparticles/interaction-external-connect': 3.9.1 + '@tsparticles/interaction-external-grab': 3.9.1 + '@tsparticles/interaction-external-pause': 3.9.1 + '@tsparticles/interaction-external-push': 3.9.1 + '@tsparticles/interaction-external-remove': 3.9.1 + '@tsparticles/interaction-external-repulse': 3.9.1 + '@tsparticles/interaction-external-slow': 3.9.1 + '@tsparticles/interaction-particles-attract': 3.9.1 + '@tsparticles/interaction-particles-collisions': 3.9.1 + '@tsparticles/interaction-particles-links': 3.9.1 + '@tsparticles/move-parallax': 3.9.1 + '@tsparticles/plugin-easing-quad': 3.9.1 + '@tsparticles/shape-emoji': 3.9.1 + '@tsparticles/shape-image': 3.9.1 + '@tsparticles/shape-line': 3.9.1 + '@tsparticles/shape-polygon': 3.9.1 + '@tsparticles/shape-square': 3.9.1 + '@tsparticles/shape-star': 3.9.1 + '@tsparticles/updater-life': 3.9.1 + '@tsparticles/updater-rotate': 3.9.1 + '@tsparticles/updater-stroke-color': 3.9.1 + + '@tsparticles/updater-color@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/updater-destroy@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/updater-life@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/updater-opacity@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/updater-out-modes@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/updater-rotate@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/updater-size@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/updater-stroke-color@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@tsparticles/updater-wobble@3.9.1': + dependencies: + '@tsparticles/engine': 3.9.1 + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.28.5 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.28.5 + + '@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.7': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/estree@1.0.8': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/node@25.0.1': + dependencies: + undici-types: 7.16.0 + + '@types/nprogress@0.2.3': {} + + '@types/parse-json@4.0.2': {} + + '@types/prop-types@15.7.15': {} + + '@types/qrcode@1.5.6': + dependencies: + '@types/node': 25.0.1 + + '@types/react-dom@19.2.3(@types/react@19.2.7)': + dependencies: + '@types/react': 19.2.7 + + '@types/react-transition-group@4.4.12(@types/react@19.2.7)': + dependencies: + '@types/react': 19.2.7 + + '@types/react@19.2.7': + dependencies: + csstype: 3.2.3 + + '@types/unist@3.0.3': {} + + '@types/use-sync-external-store@0.0.6': {} + + '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.49.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.49.0 + '@typescript-eslint/type-utils': 8.49.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.49.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.49.0 + eslint: 9.39.2 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.49.0(eslint@9.39.2)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.49.0 + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.49.0 + debug: 4.4.3 + eslint: 9.39.2 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.49.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) + '@typescript-eslint/types': 8.49.0 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.49.0': + dependencies: + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/visitor-keys': 8.49.0 + + '@typescript-eslint/tsconfig-utils@8.49.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.49.0(eslint@9.39.2)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.49.0(eslint@9.39.2)(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.49.0': {} + + '@typescript-eslint/typescript-estree@8.49.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.49.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/visitor-keys': 8.49.0 + debug: 4.4.3 + minimatch: 9.0.5 + semver: 7.7.3 + tinyglobby: 0.2.15 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.49.0(eslint@9.39.2)(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) + '@typescript-eslint/scope-manager': 8.49.0 + '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) + eslint: 9.39.2 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.49.0': + dependencies: + '@typescript-eslint/types': 8.49.0 + eslint-visitor-keys: 4.2.1 + + '@ungap/structured-clone@1.3.0': {} + + '@vitejs/plugin-react@5.1.2(vite@7.2.7(@types/node@25.0.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.5.1))': + dependencies: + '@babel/core': 7.28.5 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5) + '@rolldown/pluginutils': 1.0.0-beta.53 + '@types/babel__core': 7.20.5 + react-refresh: 0.18.0 + vite: 7.2.7(@types/node@25.0.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.5.1) + transitivePeerDependencies: + - supports-color + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + optional: true + + arg@5.0.2: {} + + argparse@2.0.1: {} + + asynckit@0.4.0: {} + + attr-accept@2.2.5: {} + + axios@1.13.2: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.5 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.28.4 + cosmiconfig: 7.1.0 + resolve: 1.22.11 + + babel-plugin-react-compiler@1.0.0: + dependencies: + '@babel/types': 7.28.5 + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + baseline-browser-mapping@2.9.7: {} + + binary-extensions@2.3.0: + optional: true + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + optional: true + + browserslist@4.28.1: + dependencies: + baseline-browser-mapping: 2.9.7 + caniuse-lite: 1.0.30001760 + electron-to-chromium: 1.5.267 + node-releases: 2.0.27 + update-browserslist-db: 1.2.2(browserslist@4.28.1) + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + callsites@3.1.0: {} + + camelcase@5.3.1: {} + + caniuse-lite@1.0.30001760: {} + + ccount@2.0.1: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.6.2: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + optional: true + + classnames@2.5.1: {} + + client-only@0.0.1: {} + + clipboardy@4.0.0: + dependencies: + execa: 8.0.1 + is-wsl: 3.1.0 + is64bit: 2.0.0 + + cliui@6.0.0: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clsx@1.2.1: {} + + clsx@2.1.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + comma-separated-tokens@2.0.3: {} + + complex.js@2.4.3: {} + + concat-map@0.0.1: {} + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + cookie@1.1.1: {} + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + 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.0: {} + + 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.0 + 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: {} + + dayjs@1.11.13: {} + + dayjs@1.11.19: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decamelize@1.2.0: {} + + decimal.js-light@2.5.1: {} + + decimal.js@10.6.0: {} + + deep-is@0.1.4: {} + + delayed-stream@1.0.0: {} + + dequal@2.0.3: {} + + detect-libc@2.1.2: + optional: true + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + dexie-react-hooks@4.2.0(@types/react@19.2.7)(dexie@4.2.1)(react@19.2.4): + dependencies: + '@types/react': 19.2.7 + dexie: 4.2.1 + react: 19.2.4 + + dexie@4.2.1: {} + + dijkstrajs@1.0.3: {} + + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.28.4 + csstype: 3.2.3 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + electron-to-chromium@1.5.267: {} + + emoji-regex@8.0.0: {} + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.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-toolkit@1.43.0: {} + + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + escalade@3.2.0: {} + + escape-latex@1.2.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-plugin-react-hooks@7.0.1(eslint@9.39.2): + dependencies: + '@babel/core': 7.28.5 + '@babel/parser': 7.28.5 + eslint: 9.39.2 + hermes-parser: 0.25.1 + zod: 4.1.13 + zod-validation-error: 4.0.2(zod@4.1.13) + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-refresh@0.4.24(eslint@9.39.2): + dependencies: + eslint: 9.39.2 + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint@9.39.2: + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.1 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.3 + '@eslint/js': 9.39.2 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.7 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + ajv: 6.12.6 + 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.6.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.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + eventemitter3@5.0.1: {} + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + extend@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-json-patch@3.1.1: {} + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + faye-websocket@0.11.4: + dependencies: + websocket-driver: 0.7.4 + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + file-selector@2.1.2: + dependencies: + tslib: 2.8.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + optional: true + + find-root@1.1.0: {} + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + firebase@12.6.0: + dependencies: + '@firebase/ai': 2.6.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) + '@firebase/analytics': 0.10.19(@firebase/app@0.14.6) + '@firebase/analytics-compat': 0.2.25(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) + '@firebase/app': 0.14.6 + '@firebase/app-check': 0.11.0(@firebase/app@0.14.6) + '@firebase/app-check-compat': 0.4.0(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) + '@firebase/app-compat': 0.5.6 + '@firebase/app-types': 0.9.3 + '@firebase/auth': 1.11.1(@firebase/app@0.14.6) + '@firebase/auth-compat': 0.6.1(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) + '@firebase/data-connect': 0.3.12(@firebase/app@0.14.6) + '@firebase/database': 1.1.0 + '@firebase/database-compat': 2.1.0 + '@firebase/firestore': 4.9.2(@firebase/app@0.14.6) + '@firebase/firestore-compat': 0.4.2(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) + '@firebase/functions': 0.13.1(@firebase/app@0.14.6) + '@firebase/functions-compat': 0.4.1(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) + '@firebase/installations': 0.6.19(@firebase/app@0.14.6) + '@firebase/installations-compat': 0.2.19(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) + '@firebase/messaging': 0.12.23(@firebase/app@0.14.6) + '@firebase/messaging-compat': 0.2.23(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) + '@firebase/performance': 0.7.9(@firebase/app@0.14.6) + '@firebase/performance-compat': 0.2.22(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) + '@firebase/remote-config': 0.7.0(@firebase/app@0.14.6) + '@firebase/remote-config-compat': 0.2.20(@firebase/app-compat@0.5.6)(@firebase/app@0.14.6) + '@firebase/storage': 0.14.0(@firebase/app@0.14.6) + '@firebase/storage-compat': 0.4.0(@firebase/app-compat@0.5.6)(@firebase/app-types@0.9.3)(@firebase/app@0.14.6) + '@firebase/util': 1.13.0 + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + + follow-redirects@1.15.11: {} + + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + fraction.js@5.3.4: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@8.0.1: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + optional: true + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + globals@14.0.0: {} + + globals@16.5.0: {} + + goober@2.1.18(csstype@3.2.3): + dependencies: + csstype: 3.2.3 + + gopd@1.2.0: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-string@3.0.1: + dependencies: + '@types/hast': 3.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hermes-estree@0.25.1: {} + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 + + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + + html-parse-stringify@3.0.1: + dependencies: + void-elements: 3.1.0 + + html-void-elements@3.0.0: {} + + http-parser-js@0.5.10: {} + + human-signals@5.0.0: {} + + i18next@25.7.2(typescript@5.9.3): + dependencies: + '@babel/runtime': 7.28.4 + optionalDependencies: + typescript: 5.9.3 + + idb@7.1.1: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + immediate@3.0.6: {} + + immer@10.2.0: {} + + immer@11.0.1: {} + + immutable@4.3.7: + optional: true + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + internmap@2.0.3: {} + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + optional: true + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-number@7.0.0: + optional: true + + is-plain-obj@4.1.0: {} + + is-stream@3.0.0: {} + + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + + is64bit@2.0.0: + dependencies: + system-architecture: 0.1.0 + + isexe@2.0.0: {} + + javascript-natural-sort@0.7.1: {} + + 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-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lie@3.1.1: + dependencies: + immediate: 3.0.6 + + lightningcss-darwin-arm64@1.30.1: + optional: true + + lightningcss-darwin-x64@1.30.1: + optional: true + + lightningcss-freebsd-x64@1.30.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.1: + optional: true + + lightningcss-linux-arm64-gnu@1.30.1: + optional: true + + lightningcss-linux-arm64-musl@1.30.1: + optional: true + + lightningcss-linux-x64-gnu@1.30.1: + optional: true + + lightningcss-linux-x64-musl@1.30.1: + optional: true + + lightningcss-win32-arm64-msvc@1.30.1: + optional: true + + lightningcss-win32-x64-msvc@1.30.1: + optional: true + + lightningcss@1.30.1: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 + optional: true + + lines-and-columns@1.2.4: {} + + localforage@1.10.0: + dependencies: + lie: 3.1.1 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.merge@4.6.2: {} + + long@5.3.2: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + math-intrinsics@1.1.0: {} + + mathjs@15.1.0: + dependencies: + '@babel/runtime': 7.28.4 + complex.js: 2.4.3 + decimal.js: 10.6.0 + escape-latex: 1.2.0 + fraction.js: 5.3.4 + javascript-natural-sort: 0.7.1 + seedrandom: 3.0.5 + tiny-emitter: 2.1.0 + typed-function: 4.2.2 + + mdast-util-to-hast@13.2.1: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + merge-stream@2.0.0: {} + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-encode@2.0.1: {} + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@4.0.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + natural-compare@1.4.0: {} + + node-releases@2.0.27: {} + + normalize-path@3.0.0: + optional: true + + notistack@3.0.2(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + clsx: 1.2.1 + goober: 2.1.18(csstype@3.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + transitivePeerDependencies: + - csstype + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + nprogress@0.2.0: {} + + object-assign@4.1.1: {} + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + oniguruma-parser@0.12.1: {} + + oniguruma-to-es@4.3.4: + dependencies: + oniguruma-parser: 0.12.1 + regex: 6.1.0 + regex-recursion: 6.0.2 + + oppa@0.4.0: + dependencies: + chalk: 4.1.2 + + 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 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-try@2.2.0: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-to-regexp@6.3.0: {} + + path-type@4.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: + optional: true + + picomatch@4.0.3: {} + + pngjs@5.0.0: {} + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier@3.5.3: {} + + prettier@3.7.4: {} + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + property-information@7.1.0: {} + + protobufjs@7.5.4: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 25.0.1 + long: 5.3.2 + + proxy-from-env@1.1.0: {} + + punycode@2.3.1: {} + + qrcode@1.5.4: + dependencies: + dijkstrajs: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + + react-dom@19.2.4(react@19.2.4): + dependencies: + react: 19.2.4 + scheduler: 0.27.0 + + react-dropzone@14.3.8(react@19.2.4): + dependencies: + attr-accept: 2.2.5 + file-selector: 2.1.2 + prop-types: 15.8.1 + react: 19.2.4 + + react-error-boundary@6.0.0(react@19.2.4): + dependencies: + '@babel/runtime': 7.28.4 + react: 19.2.4 + + react-hook-form@7.68.0(react@19.2.4): + dependencies: + react: 19.2.4 + + react-i18next@16.5.0(i18next@25.7.2(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3): + dependencies: + '@babel/runtime': 7.28.4 + html-parse-stringify: 3.0.1 + i18next: 25.7.2(typescript@5.9.3) + react: 19.2.4 + use-sync-external-store: 1.6.0(react@19.2.4) + optionalDependencies: + react-dom: 19.2.4(react@19.2.4) + typescript: 5.9.3 + + react-is@16.13.1: {} + + react-is@19.2.3: {} + + react-redux@9.2.0(@types/react@19.2.7)(react@19.2.4)(redux@5.0.1): + dependencies: + '@types/use-sync-external-store': 0.0.6 + react: 19.2.4 + use-sync-external-store: 1.6.0(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.7 + redux: 5.0.1 + + react-refresh@0.18.0: {} + + react-resizable-panels@3.0.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + react-router@7.10.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + cookie: 1.1.1 + react: 19.2.4 + set-cookie-parser: 2.7.2 + optionalDependencies: + react-dom: 19.2.4(react@19.2.4) + + react-transition-group@4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + '@babel/runtime': 7.28.4 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + react@19.2.4: {} + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + optional: true + + recharts@3.5.1(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.3)(react@19.2.4)(redux@5.0.1): + dependencies: + '@reduxjs/toolkit': 2.11.1(react-redux@9.2.0(@types/react@19.2.7)(react@19.2.4)(redux@5.0.1))(react@19.2.4) + clsx: 2.1.1 + decimal.js-light: 2.5.1 + es-toolkit: 1.43.0 + eventemitter3: 5.0.1 + immer: 10.2.0 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-is: 19.2.3 + react-redux: 9.2.0(@types/react@19.2.7)(react@19.2.4)(redux@5.0.1) + reselect: 5.1.1 + tiny-invariant: 1.3.3 + use-sync-external-store: 1.6.0(react@19.2.4) + victory-vendor: 37.3.6 + transitivePeerDependencies: + - '@types/react' + - redux + + redux-thunk@3.1.0(redux@5.0.1): + dependencies: + redux: 5.0.1 + + redux@5.0.1: {} + + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.1.0: + dependencies: + regex-utilities: 2.3.0 + + require-directory@2.1.1: {} + + require-main-filename@2.0.0: {} + + reselect@5.1.1: {} + + resolve-from@4.0.0: {} + + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + rollup@4.53.3: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.53.3 + '@rollup/rollup-android-arm64': 4.53.3 + '@rollup/rollup-darwin-arm64': 4.53.3 + '@rollup/rollup-darwin-x64': 4.53.3 + '@rollup/rollup-freebsd-arm64': 4.53.3 + '@rollup/rollup-freebsd-x64': 4.53.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 + '@rollup/rollup-linux-arm-musleabihf': 4.53.3 + '@rollup/rollup-linux-arm64-gnu': 4.53.3 + '@rollup/rollup-linux-arm64-musl': 4.53.3 + '@rollup/rollup-linux-loong64-gnu': 4.53.3 + '@rollup/rollup-linux-ppc64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-musl': 4.53.3 + '@rollup/rollup-linux-s390x-gnu': 4.53.3 + '@rollup/rollup-linux-x64-gnu': 4.53.3 + '@rollup/rollup-linux-x64-musl': 4.53.3 + '@rollup/rollup-openharmony-arm64': 4.53.3 + '@rollup/rollup-win32-arm64-msvc': 4.53.3 + '@rollup/rollup-win32-ia32-msvc': 4.53.3 + '@rollup/rollup-win32-x64-gnu': 4.53.3 + '@rollup/rollup-win32-x64-msvc': 4.53.3 + fsevents: 2.3.3 + + safe-buffer@5.2.1: {} + + sass@1.77.8: + dependencies: + chokidar: 3.6.0 + immutable: 4.3.7 + source-map-js: 1.2.1 + optional: true + + scheduler@0.27.0: {} + + seedrandom@3.0.5: {} + + semver@6.3.1: {} + + semver@7.7.3: {} + + set-blocking@2.0.0: {} + + set-cookie-parser@2.7.2: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shiki@3.20.0: + dependencies: + '@shikijs/core': 3.20.0 + '@shikijs/engine-javascript': 3.20.0 + '@shikijs/engine-oniguruma': 3.20.0 + '@shikijs/langs': 3.20.0 + '@shikijs/themes': 3.20.0 + '@shikijs/types': 3.20.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + signal-exit@4.1.0: {} + + source-map-js@1.2.1: {} + + source-map@0.5.7: {} + + space-separated-tokens@2.0.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-final-newline@3.0.0: {} + + strip-json-comments@3.1.1: {} + + stylis@4.2.0: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + system-architecture@0.1.0: {} + + tiny-emitter@2.1.0: {} + + tiny-invariant@1.3.3: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + title@4.0.1: + dependencies: + arg: 5.0.2 + chalk: 5.6.2 + clipboardy: 4.0.0 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + optional: true + + trim-lines@3.0.1: {} + + trough@2.2.0: {} + + ts-api-utils@2.1.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + + tslib@2.8.1: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + typed-function@4.2.2: {} + + typescript-eslint@8.49.0(eslint@9.39.2)(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.49.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.49.0(eslint@9.39.2)(typescript@5.9.3) + eslint: 9.39.2 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + typescript@5.9.3: {} + + undici-types@7.16.0: {} + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + update-browserslist-db@1.2.2(browserslist@4.28.1): + dependencies: + browserslist: 4.28.1 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + use-immer@0.11.0(immer@11.0.1)(react@19.2.4): + dependencies: + immer: 11.0.1 + react: 19.2.4 + + use-sync-external-store@1.6.0(react@19.2.4): + dependencies: + react: 19.2.4 + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + + victory-vendor@37.3.6: + 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.7 + '@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 + + vite@7.2.7(@types/node@25.0.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.5.1): + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.53.3 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 25.0.1 + fsevents: 2.3.3 + lightningcss: 1.30.1 + sass: 1.77.8 + yaml: 2.5.1 + + void-elements@3.1.0: {} + + web-vitals@4.2.4: {} + + websocket-driver@0.7.4: + dependencies: + http-parser-js: 0.5.10 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + + websocket-extensions@0.1.4: {} + + which-module@2.0.1: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + y18n@4.0.3: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yaml-diff-patch@2.0.0: + dependencies: + fast-json-patch: 3.1.1 + oppa: 0.4.0 + yaml: 2.5.1 + + yaml@1.10.2: {} + + yaml@2.5.1: {} + + yargs-parser@18.1.3: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + + yargs-parser@21.1.1: {} + + yargs@15.4.1: + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + zod-validation-error@4.0.2(zod@4.1.13): + dependencies: + zod: 4.1.13 + + zod@4.1.13: {} + + zustand@5.0.9(@types/react@19.2.7)(immer@11.0.1)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)): + optionalDependencies: + '@types/react': 19.2.7 + immer: 11.0.1 + react: 19.2.4 + use-sync-external-store: 1.6.0(react@19.2.4) + + zwitch@2.0.4: {} diff --git a/public/.nojekyll b/packages/react-spa/public/.nojekyll similarity index 100% rename from public/.nojekyll rename to packages/react-spa/public/.nojekyll diff --git a/public/favicon-dark.svg b/packages/react-spa/public/favicon-dark.svg similarity index 100% rename from public/favicon-dark.svg rename to packages/react-spa/public/favicon-dark.svg diff --git a/public/favicon.svg b/packages/react-spa/public/favicon.svg similarity index 100% rename from public/favicon.svg rename to packages/react-spa/public/favicon.svg diff --git a/public/plugin.php b/packages/react-spa/public/plugin.php similarity index 100% rename from public/plugin.php rename to packages/react-spa/public/plugin.php diff --git a/src/App.tsx b/packages/react-spa/src/App.tsx similarity index 73% rename from src/App.tsx rename to packages/react-spa/src/App.tsx index 1b4ed6b3..d7d4bc94 100644 --- a/src/App.tsx +++ b/packages/react-spa/src/App.tsx @@ -9,37 +9,45 @@ import { useTranslation } from "react-i18next"; import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs"; import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider"; import { AppRouter } from "@/router"; -import { useIsDark } from "@/hooks/dom/useIsDark"; +import { useColorScheme } from "@/hooks/dom/useColorScheme"; import { useLocalStore } from "@/hooks/store/useLocalStore"; import { SnackbarProvider } from "@/components/ui/snackbar"; import { QueryProvider } from "./components/query"; import type { Mode } from "@/hooks/store/useLocalStore"; -const lightTheme = createTheme({ - palette: { mode: "light" }, - components: { - MuiAlert: { - defaultProps: { - variant: "filled", +const calculateTheme = (isDark: boolean) => { + if (isDark) { + const darkTheme = createTheme({ + palette: { + mode: "dark", }, - }, - }, -}); + components: { + MuiAlert: { + defaultProps: { + variant: "filled", + }, + }, + }, + }); -const darkTheme = createTheme({ - palette: { - mode: "dark", - }, - components: { - MuiAlert: { - defaultProps: { - variant: "filled", + return darkTheme; + } + + const lightTheme = createTheme({ + palette: { mode: "light" }, + components: { + MuiAlert: { + defaultProps: { + variant: "filled", + }, }, }, - }, -}); + }); + + return lightTheme; +}; -const enableDark = (mode: Mode, isDark: boolean) => { +const calculateIsDark = (mode: Mode, colorSchema: boolean) => { switch (mode) { case "dark": return true; @@ -47,18 +55,18 @@ const enableDark = (mode: Mode, isDark: boolean) => { return false; case "system": default: - return isDark; + return colorSchema; } }; const MuiProvider = (props: React.PropsWithChildren) => { - const isDark = useIsDark(); const { i18n } = useTranslation(); + const colorSchema = useColorScheme(); const mode = useLocalStore((s) => s.mode); - const hasDarkSelector = enableDark(mode, isDark); - const theme = hasDarkSelector ? darkTheme : lightTheme; - const themeColor = hasDarkSelector + const isDark = calculateIsDark(mode, colorSchema); + const theme = calculateTheme(isDark); + const themeColor = isDark ? theme.palette.background.default : theme.palette.primary.main; diff --git a/src/api/firebase/app.ts b/packages/react-spa/src/api/firebase/app.ts similarity index 100% rename from src/api/firebase/app.ts rename to packages/react-spa/src/api/firebase/app.ts diff --git a/src/api/netlify.ts b/packages/react-spa/src/api/netlify.ts similarity index 100% rename from src/api/netlify.ts rename to packages/react-spa/src/api/netlify.ts diff --git a/src/assets/electron-vite.animate.svg b/packages/react-spa/src/assets/electron-vite.animate.svg similarity index 100% rename from src/assets/electron-vite.animate.svg rename to packages/react-spa/src/assets/electron-vite.animate.svg diff --git a/src/assets/electron-vite.svg b/packages/react-spa/src/assets/electron-vite.svg similarity index 100% rename from src/assets/electron-vite.svg rename to packages/react-spa/src/assets/electron-vite.svg diff --git a/src/assets/images/justHer.jpg b/packages/react-spa/src/assets/images/justHer.jpg similarity index 100% rename from src/assets/images/justHer.jpg rename to packages/react-spa/src/assets/images/justHer.jpg diff --git a/src/assets/images/snowVillage.jpg b/packages/react-spa/src/assets/images/snowVillage.jpg similarity index 100% rename from src/assets/images/snowVillage.jpg rename to packages/react-spa/src/assets/images/snowVillage.jpg diff --git a/src/assets/react.svg b/packages/react-spa/src/assets/react.svg similarity index 100% rename from src/assets/react.svg rename to packages/react-spa/src/assets/react.svg diff --git a/src/assets/vite.svg b/packages/react-spa/src/assets/vite.svg similarity index 100% rename from src/assets/vite.svg rename to packages/react-spa/src/assets/vite.svg diff --git a/src/components/Logo.tsx b/packages/react-spa/src/components/Logo.tsx similarity index 100% rename from src/components/Logo.tsx rename to packages/react-spa/src/components/Logo.tsx diff --git a/src/components/StringToLink.tsx b/packages/react-spa/src/components/StringToLink.tsx similarity index 100% rename from src/components/StringToLink.tsx rename to packages/react-spa/src/components/StringToLink.tsx diff --git a/src/components/form/number.tsx b/packages/react-spa/src/components/form/number.tsx similarity index 100% rename from src/components/form/number.tsx rename to packages/react-spa/src/components/form/number.tsx diff --git a/src/components/layout/auth.tsx b/packages/react-spa/src/components/layout/auth.tsx similarity index 100% rename from src/components/layout/auth.tsx rename to packages/react-spa/src/components/layout/auth.tsx diff --git a/src/components/layout/blank.tsx b/packages/react-spa/src/components/layout/blank.tsx similarity index 100% rename from src/components/layout/blank.tsx rename to packages/react-spa/src/components/layout/blank.tsx diff --git a/src/components/layout/dashboard.tsx b/packages/react-spa/src/components/layout/dashboard.tsx similarity index 100% rename from src/components/layout/dashboard.tsx rename to packages/react-spa/src/components/layout/dashboard.tsx diff --git a/src/components/layout/guest.tsx b/packages/react-spa/src/components/layout/guest.tsx similarity index 100% rename from src/components/layout/guest.tsx rename to packages/react-spa/src/components/layout/guest.tsx diff --git a/src/components/layout/nprogress.tsx b/packages/react-spa/src/components/layout/nprogress.tsx similarity index 100% rename from src/components/layout/nprogress.tsx rename to packages/react-spa/src/components/layout/nprogress.tsx diff --git a/src/components/layout/particles.tsx b/packages/react-spa/src/components/layout/particles.tsx similarity index 100% rename from src/components/layout/particles.tsx rename to packages/react-spa/src/components/layout/particles.tsx diff --git a/src/components/loading.tsx b/packages/react-spa/src/components/loading.tsx similarity index 100% rename from src/components/loading.tsx rename to packages/react-spa/src/components/loading.tsx diff --git a/src/components/query.tsx b/packages/react-spa/src/components/query.tsx similarity index 100% rename from src/components/query.tsx rename to packages/react-spa/src/components/query.tsx diff --git a/src/components/scroll.tsx b/packages/react-spa/src/components/scroll.tsx similarity index 100% rename from src/components/scroll.tsx rename to packages/react-spa/src/components/scroll.tsx diff --git a/src/components/scrollbar.tsx b/packages/react-spa/src/components/scrollbar.tsx similarity index 100% rename from src/components/scrollbar.tsx rename to packages/react-spa/src/components/scrollbar.tsx diff --git a/src/components/shared/Camera.tsx b/packages/react-spa/src/components/shared/Camera.tsx similarity index 100% rename from src/components/shared/Camera.tsx rename to packages/react-spa/src/components/shared/Camera.tsx diff --git a/src/components/shared/LangToggle.tsx b/packages/react-spa/src/components/shared/LangToggle.tsx similarity index 75% rename from src/components/shared/LangToggle.tsx rename to packages/react-spa/src/components/shared/LangToggle.tsx index ed3484b9..e06c1641 100644 --- a/src/components/shared/LangToggle.tsx +++ b/packages/react-spa/src/components/shared/LangToggle.tsx @@ -1,24 +1,9 @@ -import { useLocalStore } from "@/hooks/store/useLocalStore"; -import { TranslateOutlined } from "@mui/icons-material"; -import { IconButton, Menu, MenuItem } from "@mui/material"; import React from "react"; import { Link, useLocation, useParams } from "react-router"; -import type { Params, Location } from "react-router"; - -const calculatePathname = ( - params: Params, - location: Location, - locale: string, -) => { - if (!params.lang) { - return "/" + locale + location.pathname; - } - - return location.pathname.replace( - new RegExp(`^/${params.lang}`), - `/${locale}`, - ); -}; +import { IconButton, Menu, MenuItem } from "@mui/material"; +import { TranslateOutlined } from "@mui/icons-material"; +import { useLocalStore } from "@/hooks/store/useLocalStore"; +import { calculateLocale, calculateLocalePathname } from "@/lib/utils"; type LangLinkProps = React.PropsWithChildren<{ locale: string; @@ -29,9 +14,12 @@ const LangLink = (props: LangLinkProps) => { const location = useLocation(); const fallbackLang = useLocalStore((store) => store.fallbackLang); - const pathname = calculatePathname(params, location, props.locale); - const lang = params.lang || fallbackLang; - const selected = lang === props.locale; + const langSegment = params.lang; + if (!langSegment) throw new Error("Invalid lang params"); + + const locale = calculateLocale(fallbackLang, langSegment); + const pathname = calculateLocalePathname(location.pathname, props.locale); + const selected = locale === props.locale; return ( { + const [anchor, setAnchor] = React.useState(null); + const user = useCurrentUser(); const isOnline = useOnlineStatus(); - const [anchor, setAnchor] = React.useState(null); + + console.log("user", user); const handleClose = () => { setAnchor(null); diff --git a/src/components/svg/Atom.tsx b/packages/react-spa/src/components/svg/Atom.tsx similarity index 100% rename from src/components/svg/Atom.tsx rename to packages/react-spa/src/components/svg/Atom.tsx diff --git a/src/components/svg/Github.tsx b/packages/react-spa/src/components/svg/Github.tsx similarity index 100% rename from src/components/svg/Github.tsx rename to packages/react-spa/src/components/svg/Github.tsx diff --git a/src/components/svg/Google.tsx b/packages/react-spa/src/components/svg/Google.tsx similarity index 100% rename from src/components/svg/Google.tsx rename to packages/react-spa/src/components/svg/Google.tsx diff --git a/src/components/svg/Logo.tsx b/packages/react-spa/src/components/svg/Logo.tsx similarity index 100% rename from src/components/svg/Logo.tsx rename to packages/react-spa/src/components/svg/Logo.tsx diff --git a/src/components/svg/Materio.tsx b/packages/react-spa/src/components/svg/Materio.tsx similarity index 100% rename from src/components/svg/Materio.tsx rename to packages/react-spa/src/components/svg/Materio.tsx diff --git a/src/components/svg/ReactLogo.tsx b/packages/react-spa/src/components/svg/ReactLogo.tsx similarity index 100% rename from src/components/svg/ReactLogo.tsx rename to packages/react-spa/src/components/svg/ReactLogo.tsx diff --git a/src/components/text.tsx b/packages/react-spa/src/components/text.tsx similarity index 100% rename from src/components/text.tsx rename to packages/react-spa/src/components/text.tsx diff --git a/src/components/ui/snackbar.tsx b/packages/react-spa/src/components/ui/snackbar.tsx similarity index 100% rename from src/components/ui/snackbar.tsx rename to packages/react-spa/src/components/ui/snackbar.tsx diff --git a/src/hooks/dom/keyboard.ts b/packages/react-spa/src/hooks/dom/keyboard.ts similarity index 100% rename from src/hooks/dom/keyboard.ts rename to packages/react-spa/src/hooks/dom/keyboard.ts diff --git a/src/hooks/dom/useIsDark.ts b/packages/react-spa/src/hooks/dom/useColorScheme.ts similarity index 88% rename from src/hooks/dom/useIsDark.ts rename to packages/react-spa/src/hooks/dom/useColorScheme.ts index 484bd835..a3f098dd 100644 --- a/src/hooks/dom/useIsDark.ts +++ b/packages/react-spa/src/hooks/dom/useColorScheme.ts @@ -2,7 +2,7 @@ import React from "react"; const mediaQuery = matchMedia("(prefers-color-scheme: dark)"); -export const useIsDark = () => +export const useColorScheme = () => React.useSyncExternalStore( (onStoreChange) => { mediaQuery.addEventListener("change", onStoreChange); @@ -13,5 +13,4 @@ export const useIsDark = () => }, () => mediaQuery.matches, - () => false ); diff --git a/src/hooks/dom/useLocaleDate.ts b/packages/react-spa/src/hooks/dom/useLocaleDate.ts similarity index 100% rename from src/hooks/dom/useLocaleDate.ts rename to packages/react-spa/src/hooks/dom/useLocaleDate.ts diff --git a/src/hooks/dom/useLocaleTime.ts b/packages/react-spa/src/hooks/dom/useLocaleTime.ts similarity index 100% rename from src/hooks/dom/useLocaleTime.ts rename to packages/react-spa/src/hooks/dom/useLocaleTime.ts diff --git a/src/hooks/dom/useOnlineStatus.ts b/packages/react-spa/src/hooks/dom/useOnlineStatus.ts similarity index 100% rename from src/hooks/dom/useOnlineStatus.ts rename to packages/react-spa/src/hooks/dom/useOnlineStatus.ts diff --git a/src/hooks/dom/useResizeObserver.ts b/packages/react-spa/src/hooks/dom/useResizeObserver.ts similarity index 100% rename from src/hooks/dom/useResizeObserver.ts rename to packages/react-spa/src/hooks/dom/useResizeObserver.ts diff --git a/src/hooks/firebase/useCurrentUser.ts b/packages/react-spa/src/hooks/firebase/useCurrentUser.ts similarity index 100% rename from src/hooks/firebase/useCurrentUser.ts rename to packages/react-spa/src/hooks/firebase/useCurrentUser.ts diff --git a/src/hooks/store/useLocalStore.ts b/packages/react-spa/src/hooks/store/useLocalStore.ts similarity index 85% rename from src/hooks/store/useLocalStore.ts rename to packages/react-spa/src/hooks/store/useLocalStore.ts index fbfd3592..4d841cfd 100644 --- a/src/hooks/store/useLocalStore.ts +++ b/packages/react-spa/src/hooks/store/useLocalStore.ts @@ -1,7 +1,7 @@ import { create } from "zustand"; import { createJSONStorage, persist } from "zustand/middleware"; import { immer } from "zustand/middleware/immer"; -import { DEFAULT_MODE, FALLBACK_LANG } from "@/lib/constants"; +import { DEFAULT_MODE, DEFAULT_LANG } from "@/lib/constants"; export type Mode = "light" | "dark" | "system"; @@ -13,7 +13,7 @@ export type State = { const storeInitializer = (): State => ({ mode: DEFAULT_MODE, - fallbackLang: FALLBACK_LANG, + fallbackLang: DEFAULT_LANG, netlifyToken: "", }); diff --git a/src/hooks/useTestEffect.ts b/packages/react-spa/src/hooks/useTestEffect.ts similarity index 100% rename from src/hooks/useTestEffect.ts rename to packages/react-spa/src/hooks/useTestEffect.ts diff --git a/src/lib/Particle.ts b/packages/react-spa/src/lib/Particle.ts similarity index 100% rename from src/lib/Particle.ts rename to packages/react-spa/src/lib/Particle.ts diff --git a/src/lib/Snow.ts b/packages/react-spa/src/lib/Snow.ts similarity index 100% rename from src/lib/Snow.ts rename to packages/react-spa/src/lib/Snow.ts diff --git a/src/lib/constants.ts b/packages/react-spa/src/lib/constants.ts similarity index 92% rename from src/lib/constants.ts rename to packages/react-spa/src/lib/constants.ts index 2a3b3ee8..a3e55cb2 100644 --- a/src/lib/constants.ts +++ b/packages/react-spa/src/lib/constants.ts @@ -3,9 +3,9 @@ import { createOnigurumaEngine } from "shiki/engine/oniguruma"; export const GITHUB_URL = "https://github.com/yanglee2421/yanglee2421.github.io"; -export const FALLBACK_LANG = "en"; +export const DEFAULT_LANG = "en"; export const DEFAULT_MODE = "system"; -export const LANGS = new Set(["en", "zh"]); +export const LOCALES = new Set(["en", "zh"]); export const HOME_PATH = "/"; export const LOGIN_PATH = "/login"; export const HEADER_SIZE_XS = 7; diff --git a/src/lib/db.ts b/packages/react-spa/src/lib/db.ts similarity index 100% rename from src/lib/db.ts rename to packages/react-spa/src/lib/db.ts diff --git a/packages/react-spa/src/lib/polyfill.ts b/packages/react-spa/src/lib/polyfill.ts new file mode 100644 index 00000000..c06c3140 --- /dev/null +++ b/packages/react-spa/src/lib/polyfill.ts @@ -0,0 +1,40 @@ +type CallbackFn = (...args: TArgs) => TReturn; + +export const promiseTry = ( + callback: CallbackFn, + ...args: TArgs +): Promise => { + return new Promise((resolve) => resolve(callback(...args))); +}; + +export const arrayWith = (array: TEl[], index: number, element: TEl) => { + return Array.from(array, (el, idx) => { + if (idx === index) { + return element; + } + + return el; + }); +}; + +export const mapGroupBy = ( + items: TElement[], + callbackFn: CallbackFn<[TElement, number], TKey>, +): Map => { + const resultMap = new Map(); + + items.reduce((latestResult, item, index) => { + const mapKey = callbackFn(item, index); + const mapValue = latestResult.get(mapKey); + + if (Array.isArray(mapValue)) { + mapValue.push(item); + } else { + latestResult.set(mapKey, [item]); + } + + return latestResult; + }, resultMap); + + return resultMap; +}; diff --git a/src/lib/qrcode.ts b/packages/react-spa/src/lib/qrcode.ts similarity index 100% rename from src/lib/qrcode.ts rename to packages/react-spa/src/lib/qrcode.ts diff --git a/src/lib/utils.ts b/packages/react-spa/src/lib/utils.ts similarity index 84% rename from src/lib/utils.ts rename to packages/react-spa/src/lib/utils.ts index d0adf7e4..125e4260 100644 --- a/src/lib/utils.ts +++ b/packages/react-spa/src/lib/utils.ts @@ -1,4 +1,4 @@ -import { FALLBACK_LANG, LANGS } from "./constants"; +import { DEFAULT_LANG, LOCALES } from "./constants"; export const onAnimationFrame = (cb: () => void) => { let animate = 0; @@ -19,33 +19,6 @@ export const android_ripple = (color: string) => ({ borderless: false, }); -export const modeToIsDark = ( - mode: "dark" | "light" | "system", - inDark: boolean, -) => { - switch (mode) { - case "dark": - return true; - case "light": - return false; - case "system": - default: - return inDark; - } -}; - -export const getMatchedLang = (path = "", state: string) => { - if (LANGS.has(path)) { - return path; - } - - if (LANGS.has(state)) { - return state; - } - - return FALLBACK_LANG; -}; - export class AnimateController { private readonly animate: () => void; @@ -341,3 +314,59 @@ export const devError = ( console.error(...args); }; + +export const calculateLocale = ( + fallbackLocale: string, + localeSegment: string, +) => { + if (LOCALES.has(localeSegment)) { + return localeSegment; + } + + if (LOCALES.has(fallbackLocale)) { + return fallbackLocale; + } + + return DEFAULT_LANG; +}; + +export const normalizePathname = (pathname: string) => { + let result = pathname; + const isStartWithSlash = pathname.startsWith("/"); + const isEndWithSlash = pathname.endsWith("/"); + + if (!isStartWithSlash) { + result = "/" + result; + } + + if (isEndWithSlash) { + result = result.replace(/\/$/, ""); + } + + return result; +}; + +export const calculateLocalePathname = (pathname: string, locale: string) => { + const segments = normalizePathname(pathname).split("/"); + const localeSegment = segments.at(1) || ""; + + console.log(segments); + + if (locale === localeSegment) { + return pathname; + } + + /** + * Locale segment already exists + * just replace it + */ + if (LOCALES.has(localeSegment)) { + return segments.with(1, locale).join("/"); + } + + /** + * Locale segment does not exist + * add it + */ + return ["", ...segments].with(1, locale).join("/"); +}; diff --git a/src/locales/en.ts b/packages/react-spa/src/locales/en.ts similarity index 100% rename from src/locales/en.ts rename to packages/react-spa/src/locales/en.ts diff --git a/src/locales/i18n.ts b/packages/react-spa/src/locales/i18n.ts similarity index 100% rename from src/locales/i18n.ts rename to packages/react-spa/src/locales/i18n.ts diff --git a/src/locales/zh.ts b/packages/react-spa/src/locales/zh.ts similarity index 100% rename from src/locales/zh.ts rename to packages/react-spa/src/locales/zh.ts diff --git a/src/main.tsx b/packages/react-spa/src/main.tsx similarity index 100% rename from src/main.tsx rename to packages/react-spa/src/main.tsx diff --git a/src/pages/animate/component.tsx b/packages/react-spa/src/pages/animate/component.tsx similarity index 100% rename from src/pages/animate/component.tsx rename to packages/react-spa/src/pages/animate/component.tsx diff --git a/src/pages/dashboard/component.tsx b/packages/react-spa/src/pages/dashboard/component.tsx similarity index 100% rename from src/pages/dashboard/component.tsx rename to packages/react-spa/src/pages/dashboard/component.tsx diff --git a/src/pages/electric/component.tsx b/packages/react-spa/src/pages/electric/component.tsx similarity index 100% rename from src/pages/electric/component.tsx rename to packages/react-spa/src/pages/electric/component.tsx diff --git a/src/pages/lab/Slider.tsx b/packages/react-spa/src/pages/lab/Slider.tsx similarity index 100% rename from src/pages/lab/Slider.tsx rename to packages/react-spa/src/pages/lab/Slider.tsx diff --git a/src/pages/lab/border.css b/packages/react-spa/src/pages/lab/border.css similarity index 100% rename from src/pages/lab/border.css rename to packages/react-spa/src/pages/lab/border.css diff --git a/src/pages/lab/component.tsx b/packages/react-spa/src/pages/lab/component.tsx similarity index 81% rename from src/pages/lab/component.tsx rename to packages/react-spa/src/pages/lab/component.tsx index 7c35ee7c..ab2ac1dc 100644 --- a/src/pages/lab/component.tsx +++ b/packages/react-spa/src/pages/lab/component.tsx @@ -1,16 +1,10 @@ import { - Avatar, Button, Card, CardActions, CardContent, CardHeader, Grid, - List, - ListItem, - ListItemAvatar, - ListItemIcon, - ListItemText, Stack, TextField, Box, @@ -34,25 +28,7 @@ import { FormControl, FormGroup, Slider as MuiSlider, - IconButton, } from "@mui/material"; -import { - closestCenter, - DndContext, - KeyboardSensor, - MouseSensor, - PointerSensor, - TouchSensor, - useSensor, - useSensors, -} from "@dnd-kit/core"; -import { - arrayMove, - SortableContext, - sortableKeyboardCoordinates, - useSortable, - verticalListSortingStrategy, -} from "@dnd-kit/sortable"; import { createColumnHelper, flexRender, @@ -61,10 +37,7 @@ import { useReactTable, } from "@tanstack/react-table"; import React from "react"; -import { CSS } from "@dnd-kit/utilities"; -import { restrictToParentElement } from "@dnd-kit/modifiers"; import { grey } from "@mui/material/colors"; -import { DragIndicatorOutlined } from "@mui/icons-material"; import bg from "@/assets/images/justHer.jpg"; import { Camera } from "@/components/shared/Camera"; import { useTestEffect } from "@/hooks/useTestEffect"; @@ -170,108 +143,6 @@ const WebSocketCard = () => { ); }; -type SortableItemProps = React.PropsWithChildren<{ id: number }>; - -const SortableItem = (props: SortableItemProps) => { - const sort = useSortable({ id: props.id }); - - return ( - { - sort.setNodeRef(el); - - return () => { - sort.setNodeRef(null); - }; - }} - style={{ - transition: sort.transition, - transform: CSS.Transform.toString(sort.transform), - }} - sx={{ - boxShadow: (t) => (sort.isDragging ? t.shadows[1] : t.shadows[0]), - backgroundColor: (t) => - sort.isDragging ? t.palette.background.paper : void 0, - borderRadius: (t) => - sort.isDragging - ? parseFloat(t.shape.borderRadius as string) / 2 - : void 0, - position: "relative", - zIndex: (t) => (sort.isDragging ? t.zIndex.speedDial : void 0), - touchAction: "none", - }} - secondaryAction={ - - { - sort.setActivatorNodeRef(el); - return () => { - sort.setActivatorNodeRef(null); - }; - }} - {...sort.attributes} - {...sort.listeners} - > - - - - } - > - {props.children} - - ); -}; - -const SortableDnd = () => { - const [items, setItems] = React.useState([1, 2, 3]); - - const sensors = useSensors( - useSensor(MouseSensor), - useSensor(TouchSensor), - useSensor(PointerSensor), - useSensor(KeyboardSensor, { - coordinateGetter: sortableKeyboardCoordinates, - }), - ); - - return ( - { - setItems((items) => { - if (!e.over) { - return items; - } - - if (e.active.id === e.over.id) { - return items; - } - - const oldIndex = items.indexOf(+e.active.id); - const newIndex = items.indexOf(+e.over.id); - - return arrayMove(items, oldIndex, newIndex); - }); - }} - modifiers={[restrictToParentElement]} - > - - - {items.map((i) => ( - - - {i} - - - - ))} - - - - ); -}; - const ChildEffect = () => { useTestEffect("child"); return null; @@ -730,12 +601,6 @@ export const Component = () => { - - - - - - diff --git a/src/pages/login/component.tsx b/packages/react-spa/src/pages/login/component.tsx similarity index 100% rename from src/pages/login/component.tsx rename to packages/react-spa/src/pages/login/component.tsx diff --git a/src/pages/login/sign.tsx b/packages/react-spa/src/pages/login/sign.tsx similarity index 100% rename from src/pages/login/sign.tsx rename to packages/react-spa/src/pages/login/sign.tsx diff --git a/packages/react-spa/src/pages/login_demo/component.tsx b/packages/react-spa/src/pages/login_demo/component.tsx new file mode 100644 index 00000000..404ffb9c --- /dev/null +++ b/packages/react-spa/src/pages/login_demo/component.tsx @@ -0,0 +1,124 @@ +import { Visibility } from "@mui/icons-material"; +import { + Box, + Button, + Checkbox, + createTheme, + FormControlLabel, + Grid, + IconButton, + Link, + TextField, + ThemeProvider, + Typography, +} from "@mui/material"; +import { indigo } from "@mui/material/colors"; +import React from "react"; + +const theme = createTheme({ + palette: { + mode: "light", + primary: { + main: indigo[500], + }, + }, +}); + +export const Component = () => { + const [username, setUsername] = React.useState("13800138000"); + const [password, setPassword] = React.useState("0000000"); + + return ( + + + + + + 智能充电柜 + + 武铁紫云智能充电 + + + + setUsername(e.target.value)} + label="手机号" + fullWidth + /> + + + setPassword(e.target.value)} + label="密码" + fullWidth + type="password" + slotProps={{ + input: { + endAdornment: ( + + + + ), + }, + }} + /> + + + + } /> + + 忘记密码? + + + + + + + + + 新用户? + 立即注册 + + + + + + + ); +}; diff --git a/src/pages/not-fount/component.tsx b/packages/react-spa/src/pages/not-fount/component.tsx similarity index 100% rename from src/pages/not-fount/component.tsx rename to packages/react-spa/src/pages/not-fount/component.tsx diff --git a/src/pages/overtime/Add.tsx b/packages/react-spa/src/pages/overtime/Add.tsx similarity index 100% rename from src/pages/overtime/Add.tsx rename to packages/react-spa/src/pages/overtime/Add.tsx diff --git a/src/pages/overtime/component.tsx b/packages/react-spa/src/pages/overtime/component.tsx similarity index 100% rename from src/pages/overtime/component.tsx rename to packages/react-spa/src/pages/overtime/component.tsx diff --git a/src/pages/overtime/index.ts b/packages/react-spa/src/pages/overtime/index.ts similarity index 100% rename from src/pages/overtime/index.ts rename to packages/react-spa/src/pages/overtime/index.ts diff --git a/src/pages/overtime/loader.ts b/packages/react-spa/src/pages/overtime/loader.ts similarity index 100% rename from src/pages/overtime/loader.ts rename to packages/react-spa/src/pages/overtime/loader.ts diff --git a/src/pages/overtime_new/component.tsx b/packages/react-spa/src/pages/overtime_new/component.tsx similarity index 99% rename from src/pages/overtime_new/component.tsx rename to packages/react-spa/src/pages/overtime_new/component.tsx index 438ef841..8fce3cbb 100644 --- a/src/pages/overtime_new/component.tsx +++ b/packages/react-spa/src/pages/overtime_new/component.tsx @@ -16,11 +16,11 @@ import dayjs from "dayjs"; import { Controller, useForm } from "react-hook-form"; import React from "react"; import { useOvertime } from "@/api/netlify"; -import { zodResolver } from "@hookform/resolvers/zod"; import { useNotifications } from "@toolpad/core"; import { z } from "zod"; import { CloseOutlined, PlusOneOutlined } from "@mui/icons-material"; import { useNavigate, useParams } from "react-router"; +import { zodResolver } from "@hookform/resolvers/zod"; const schema = z.object({ hours: z.number().int(), @@ -37,6 +37,7 @@ const useAddForm = () => date: new Date(), reason: "", }, + resolver: zodResolver(schema), }); diff --git a/src/pages/rank/component.tsx b/packages/react-spa/src/pages/rank/component.tsx similarity index 93% rename from src/pages/rank/component.tsx rename to packages/react-spa/src/pages/rank/component.tsx index 56c34030..806dc6d7 100644 --- a/src/pages/rank/component.tsx +++ b/packages/react-spa/src/pages/rank/component.tsx @@ -151,6 +151,8 @@ const SortableItem = (props: SortableItemProps) => { display: "flex", justifyContent: "center", alignItems: "center", + + transformOrigin: "0 0", }} onContextMenu={(e) => { e.preventDefault(); @@ -278,17 +280,17 @@ export const Component = () => { const el = document.getElementById(id + ""); if (!el) return; + setEnableDropAnimation(false); + const alEls = document.querySelectorAll( `[data-container=${activeContainer}]`, ); - const fisrtPositions = Array.from(alEls, (el) => - el.getBoundingClientRect(), - ); + const fisrtRects = Array.from(alEls, (el) => el.getBoundingClientRect()); el.style.display = "none"; - const lastPositions = Array.from(alEls, (el) => el.getBoundingClientRect()); + const lastRects = Array.from(alEls, (el) => el.getBoundingClientRect()); await Promise.allSettled( Array.from(alEls, async (item, index) => { @@ -296,13 +298,19 @@ export const Component = () => { return; } - const xTranslation = fisrtPositions[index].x - lastPositions[index].x; - const yTranslation = fisrtPositions[index].y - lastPositions[index].y; + const firstRect = fisrtRects[index]; + const lastRect = lastRects[index]; + const translationX = firstRect.x - lastRect.x; + const translationY = firstRect.y - lastRect.y; + const scaleX = firstRect.width / lastRect.width; + const scaleY = firstRect.height / lastRect.height; await item.animate( [ - { transform: `translate3d(${xTranslation}px,${yTranslation}px,0)` }, - { transform: "translate3d(0,0,0)" }, + { + transform: `translate3d(${translationX}px,${translationY}px,0) scaleX(${scaleX}) scaleY(${scaleY})`, + }, + { transform: "translate3d(0,0,0) scaleX(1) scaleY(1)" }, ], { duration: 200 }, ).finished; @@ -382,7 +390,7 @@ export const Component = () => { if (overContainer === TRASH_ID) { handleRemove(activeContainer, activatedId); - setEnableDropAnimation(false); + return; } diff --git a/src/pages/scrollbar/component.tsx b/packages/react-spa/src/pages/scrollbar/component.tsx similarity index 100% rename from src/pages/scrollbar/component.tsx rename to packages/react-spa/src/pages/scrollbar/component.tsx diff --git a/packages/react-spa/src/pages/snackbar/component.tsx b/packages/react-spa/src/pages/snackbar/component.tsx new file mode 100644 index 00000000..235c63fd --- /dev/null +++ b/packages/react-spa/src/pages/snackbar/component.tsx @@ -0,0 +1,199 @@ +import { useLocaleDate } from "@/hooks/dom/useLocaleDate"; +import { useLocaleTime } from "@/hooks/dom/useLocaleTime"; +import { + Box, + Button, + Card, + CardActions, + CardContent, + CardHeader, + Grid, + Paper, + Stack, + styled, + TextField, + Typography, + useTheme, +} from "@mui/material"; +import dayjs from "dayjs"; +import { useSnackbar } from "notistack"; + +const createToday = () => { + const today = dayjs(); + const date = today.format("YYYY-MM-DD"); + const time = today.format("HH:mm:ss"); + + return [date, time] as const; +}; + +const StyledInput = styled("input")({ + paddingInline: 12, + paddingBlock: 4, + margin: 0, + + boxSizing: "border-box", + height: 40, + + border: 0, + + backgroundColor: "transparent", + + outline: "none", +}); + +const FluentInput = () => { + const theme = useTheme(); + + return ( + + + + ); +}; + +export const Component = () => { + const snackbar = useSnackbar(); + const time = useLocaleTime(); + const date = useLocaleDate(); + + /** + * 1. React Compiler treats functions executed in components as pure functions + * 2. During re-render, the function is only executed again if the parameters of the pure function change + * 3. The dateString and timeString returned below remain consistent due to React Compiler's optimization + */ + const [dateString, timeString] = createToday(); + + return ( + + + + {time} + + + {date} + + + + + + + + + + + + + + + + + + + + + + + + ); +}; diff --git a/src/pages/stories/1 - Core/Draggable/1-Draggable.story.tsx b/packages/react-spa/src/pages/stories/1 - Core/Draggable/1-Draggable.story.tsx similarity index 100% rename from src/pages/stories/1 - Core/Draggable/1-Draggable.story.tsx rename to packages/react-spa/src/pages/stories/1 - Core/Draggable/1-Draggable.story.tsx diff --git a/src/pages/stories/1 - Core/Draggable/2-DragOverlay.story.tsx b/packages/react-spa/src/pages/stories/1 - Core/Draggable/2-DragOverlay.story.tsx similarity index 100% rename from src/pages/stories/1 - Core/Draggable/2-DragOverlay.story.tsx rename to packages/react-spa/src/pages/stories/1 - Core/Draggable/2-DragOverlay.story.tsx diff --git a/src/pages/stories/1 - Core/Droppable/Droppable.story.tsx b/packages/react-spa/src/pages/stories/1 - Core/Droppable/Droppable.story.tsx similarity index 100% rename from src/pages/stories/1 - Core/Droppable/Droppable.story.tsx rename to packages/react-spa/src/pages/stories/1 - Core/Droppable/Droppable.story.tsx diff --git a/src/pages/stories/2 - Presets/Sortable/1-Vertical.story.tsx b/packages/react-spa/src/pages/stories/2 - Presets/Sortable/1-Vertical.story.tsx similarity index 100% rename from src/pages/stories/2 - Presets/Sortable/1-Vertical.story.tsx rename to packages/react-spa/src/pages/stories/2 - Presets/Sortable/1-Vertical.story.tsx diff --git a/src/pages/stories/2 - Presets/Sortable/2-Horizontal.story.tsx b/packages/react-spa/src/pages/stories/2 - Presets/Sortable/2-Horizontal.story.tsx similarity index 100% rename from src/pages/stories/2 - Presets/Sortable/2-Horizontal.story.tsx rename to packages/react-spa/src/pages/stories/2 - Presets/Sortable/2-Horizontal.story.tsx diff --git a/src/pages/stories/2 - Presets/Sortable/3-Grid.story.tsx b/packages/react-spa/src/pages/stories/2 - Presets/Sortable/3-Grid.story.tsx similarity index 100% rename from src/pages/stories/2 - Presets/Sortable/3-Grid.story.tsx rename to packages/react-spa/src/pages/stories/2 - Presets/Sortable/3-Grid.story.tsx diff --git a/src/pages/stories/2 - Presets/Sortable/4-MultipleContainers.story.tsx b/packages/react-spa/src/pages/stories/2 - Presets/Sortable/4-MultipleContainers.story.tsx similarity index 100% rename from src/pages/stories/2 - Presets/Sortable/4-MultipleContainers.story.tsx rename to packages/react-spa/src/pages/stories/2 - Presets/Sortable/4-MultipleContainers.story.tsx diff --git a/src/pages/stories/2 - Presets/Sortable/MultipleContainers.tsx b/packages/react-spa/src/pages/stories/2 - Presets/Sortable/MultipleContainers.tsx similarity index 100% rename from src/pages/stories/2 - Presets/Sortable/MultipleContainers.tsx rename to packages/react-spa/src/pages/stories/2 - Presets/Sortable/MultipleContainers.tsx diff --git a/src/pages/stories/2 - Presets/Sortable/Sortable.tsx b/packages/react-spa/src/pages/stories/2 - Presets/Sortable/Sortable.tsx similarity index 100% rename from src/pages/stories/2 - Presets/Sortable/Sortable.tsx rename to packages/react-spa/src/pages/stories/2 - Presets/Sortable/Sortable.tsx diff --git a/src/pages/stories/2 - Presets/Sortable/multipleContainersKeyboardCoordinates.ts b/packages/react-spa/src/pages/stories/2 - Presets/Sortable/multipleContainersKeyboardCoordinates.ts similarity index 100% rename from src/pages/stories/2 - Presets/Sortable/multipleContainersKeyboardCoordinates.ts rename to packages/react-spa/src/pages/stories/2 - Presets/Sortable/multipleContainersKeyboardCoordinates.ts diff --git a/src/pages/stories/components/Button/Button.module.css b/packages/react-spa/src/pages/stories/components/Button/Button.module.css similarity index 100% rename from src/pages/stories/components/Button/Button.module.css rename to packages/react-spa/src/pages/stories/components/Button/Button.module.css diff --git a/src/pages/stories/components/Button/Button.tsx b/packages/react-spa/src/pages/stories/components/Button/Button.tsx similarity index 100% rename from src/pages/stories/components/Button/Button.tsx rename to packages/react-spa/src/pages/stories/components/Button/Button.tsx diff --git a/src/pages/stories/components/Button/index.ts b/packages/react-spa/src/pages/stories/components/Button/index.ts similarity index 100% rename from src/pages/stories/components/Button/index.ts rename to packages/react-spa/src/pages/stories/components/Button/index.ts diff --git a/src/pages/stories/components/ConfirmModal/ConfirmModal.module.css b/packages/react-spa/src/pages/stories/components/ConfirmModal/ConfirmModal.module.css similarity index 100% rename from src/pages/stories/components/ConfirmModal/ConfirmModal.module.css rename to packages/react-spa/src/pages/stories/components/ConfirmModal/ConfirmModal.module.css diff --git a/src/pages/stories/components/ConfirmModal/ConfirmModal.tsx b/packages/react-spa/src/pages/stories/components/ConfirmModal/ConfirmModal.tsx similarity index 100% rename from src/pages/stories/components/ConfirmModal/ConfirmModal.tsx rename to packages/react-spa/src/pages/stories/components/ConfirmModal/ConfirmModal.tsx diff --git a/src/pages/stories/components/ConfirmModal/index.ts b/packages/react-spa/src/pages/stories/components/ConfirmModal/index.ts similarity index 100% rename from src/pages/stories/components/ConfirmModal/index.ts rename to packages/react-spa/src/pages/stories/components/ConfirmModal/index.ts diff --git a/src/pages/stories/components/Container/Container.module.css b/packages/react-spa/src/pages/stories/components/Container/Container.module.css similarity index 100% rename from src/pages/stories/components/Container/Container.module.css rename to packages/react-spa/src/pages/stories/components/Container/Container.module.css diff --git a/src/pages/stories/components/Container/Container.tsx b/packages/react-spa/src/pages/stories/components/Container/Container.tsx similarity index 100% rename from src/pages/stories/components/Container/Container.tsx rename to packages/react-spa/src/pages/stories/components/Container/Container.tsx diff --git a/src/pages/stories/components/Container/index.ts b/packages/react-spa/src/pages/stories/components/Container/index.ts similarity index 100% rename from src/pages/stories/components/Container/index.ts rename to packages/react-spa/src/pages/stories/components/Container/index.ts diff --git a/src/pages/stories/components/Draggable/Draggable.module.css b/packages/react-spa/src/pages/stories/components/Draggable/Draggable.module.css similarity index 100% rename from src/pages/stories/components/Draggable/Draggable.module.css rename to packages/react-spa/src/pages/stories/components/Draggable/Draggable.module.css diff --git a/src/pages/stories/components/Draggable/Draggable.tsx b/packages/react-spa/src/pages/stories/components/Draggable/Draggable.tsx similarity index 100% rename from src/pages/stories/components/Draggable/Draggable.tsx rename to packages/react-spa/src/pages/stories/components/Draggable/Draggable.tsx diff --git a/src/pages/stories/components/Draggable/DraggableOverlay.tsx b/packages/react-spa/src/pages/stories/components/Draggable/DraggableOverlay.tsx similarity index 100% rename from src/pages/stories/components/Draggable/DraggableOverlay.tsx rename to packages/react-spa/src/pages/stories/components/Draggable/DraggableOverlay.tsx diff --git a/src/pages/stories/components/Draggable/draggable-svg.tsx b/packages/react-spa/src/pages/stories/components/Draggable/draggable-svg.tsx similarity index 100% rename from src/pages/stories/components/Draggable/draggable-svg.tsx rename to packages/react-spa/src/pages/stories/components/Draggable/draggable-svg.tsx diff --git a/src/pages/stories/components/Draggable/index.ts b/packages/react-spa/src/pages/stories/components/Draggable/index.ts similarity index 100% rename from src/pages/stories/components/Draggable/index.ts rename to packages/react-spa/src/pages/stories/components/Draggable/index.ts diff --git a/src/pages/stories/components/Droppable/Droppable.module.css b/packages/react-spa/src/pages/stories/components/Droppable/Droppable.module.css similarity index 100% rename from src/pages/stories/components/Droppable/Droppable.module.css rename to packages/react-spa/src/pages/stories/components/Droppable/Droppable.module.css diff --git a/src/pages/stories/components/Droppable/Droppable.tsx b/packages/react-spa/src/pages/stories/components/Droppable/Droppable.tsx similarity index 100% rename from src/pages/stories/components/Droppable/Droppable.tsx rename to packages/react-spa/src/pages/stories/components/Droppable/Droppable.tsx diff --git a/src/pages/stories/components/Droppable/droppable-svg.tsx b/packages/react-spa/src/pages/stories/components/Droppable/droppable-svg.tsx similarity index 100% rename from src/pages/stories/components/Droppable/droppable-svg.tsx rename to packages/react-spa/src/pages/stories/components/Droppable/droppable-svg.tsx diff --git a/src/pages/stories/components/Droppable/index.ts b/packages/react-spa/src/pages/stories/components/Droppable/index.ts similarity index 100% rename from src/pages/stories/components/Droppable/index.ts rename to packages/react-spa/src/pages/stories/components/Droppable/index.ts diff --git a/src/pages/stories/components/FloatingControls/FloatingControls.module.css b/packages/react-spa/src/pages/stories/components/FloatingControls/FloatingControls.module.css similarity index 100% rename from src/pages/stories/components/FloatingControls/FloatingControls.module.css rename to packages/react-spa/src/pages/stories/components/FloatingControls/FloatingControls.module.css diff --git a/src/pages/stories/components/FloatingControls/FloatingControls.tsx b/packages/react-spa/src/pages/stories/components/FloatingControls/FloatingControls.tsx similarity index 100% rename from src/pages/stories/components/FloatingControls/FloatingControls.tsx rename to packages/react-spa/src/pages/stories/components/FloatingControls/FloatingControls.tsx diff --git a/src/pages/stories/components/FloatingControls/index.ts b/packages/react-spa/src/pages/stories/components/FloatingControls/index.ts similarity index 100% rename from src/pages/stories/components/FloatingControls/index.ts rename to packages/react-spa/src/pages/stories/components/FloatingControls/index.ts diff --git a/src/pages/stories/components/Grid/Grid.module.css b/packages/react-spa/src/pages/stories/components/Grid/Grid.module.css similarity index 100% rename from src/pages/stories/components/Grid/Grid.module.css rename to packages/react-spa/src/pages/stories/components/Grid/Grid.module.css diff --git a/src/pages/stories/components/Grid/Grid.tsx b/packages/react-spa/src/pages/stories/components/Grid/Grid.tsx similarity index 100% rename from src/pages/stories/components/Grid/Grid.tsx rename to packages/react-spa/src/pages/stories/components/Grid/Grid.tsx diff --git a/src/pages/stories/components/Grid/index.ts b/packages/react-spa/src/pages/stories/components/Grid/index.ts similarity index 100% rename from src/pages/stories/components/Grid/index.ts rename to packages/react-spa/src/pages/stories/components/Grid/index.ts diff --git a/src/pages/stories/components/GridContainer/GridContainer.module.css b/packages/react-spa/src/pages/stories/components/GridContainer/GridContainer.module.css similarity index 100% rename from src/pages/stories/components/GridContainer/GridContainer.module.css rename to packages/react-spa/src/pages/stories/components/GridContainer/GridContainer.module.css diff --git a/src/pages/stories/components/GridContainer/GridContainer.tsx b/packages/react-spa/src/pages/stories/components/GridContainer/GridContainer.tsx similarity index 100% rename from src/pages/stories/components/GridContainer/GridContainer.tsx rename to packages/react-spa/src/pages/stories/components/GridContainer/GridContainer.tsx diff --git a/src/pages/stories/components/GridContainer/index.ts b/packages/react-spa/src/pages/stories/components/GridContainer/index.ts similarity index 100% rename from src/pages/stories/components/GridContainer/index.ts rename to packages/react-spa/src/pages/stories/components/GridContainer/index.ts diff --git a/src/pages/stories/components/Item/Item.module.css b/packages/react-spa/src/pages/stories/components/Item/Item.module.css similarity index 100% rename from src/pages/stories/components/Item/Item.module.css rename to packages/react-spa/src/pages/stories/components/Item/Item.module.css diff --git a/src/pages/stories/components/Item/Item.tsx b/packages/react-spa/src/pages/stories/components/Item/Item.tsx similarity index 100% rename from src/pages/stories/components/Item/Item.tsx rename to packages/react-spa/src/pages/stories/components/Item/Item.tsx diff --git a/src/pages/stories/components/Item/components/Action/Action.module.css b/packages/react-spa/src/pages/stories/components/Item/components/Action/Action.module.css similarity index 100% rename from src/pages/stories/components/Item/components/Action/Action.module.css rename to packages/react-spa/src/pages/stories/components/Item/components/Action/Action.module.css diff --git a/src/pages/stories/components/Item/components/Action/Action.tsx b/packages/react-spa/src/pages/stories/components/Item/components/Action/Action.tsx similarity index 100% rename from src/pages/stories/components/Item/components/Action/Action.tsx rename to packages/react-spa/src/pages/stories/components/Item/components/Action/Action.tsx diff --git a/src/pages/stories/components/Item/components/Action/index.ts b/packages/react-spa/src/pages/stories/components/Item/components/Action/index.ts similarity index 100% rename from src/pages/stories/components/Item/components/Action/index.ts rename to packages/react-spa/src/pages/stories/components/Item/components/Action/index.ts diff --git a/src/pages/stories/components/Item/components/Handle/Handle.tsx b/packages/react-spa/src/pages/stories/components/Item/components/Handle/Handle.tsx similarity index 100% rename from src/pages/stories/components/Item/components/Handle/Handle.tsx rename to packages/react-spa/src/pages/stories/components/Item/components/Handle/Handle.tsx diff --git a/src/pages/stories/components/Item/components/Handle/index.ts b/packages/react-spa/src/pages/stories/components/Item/components/Handle/index.ts similarity index 100% rename from src/pages/stories/components/Item/components/Handle/index.ts rename to packages/react-spa/src/pages/stories/components/Item/components/Handle/index.ts diff --git a/src/pages/stories/components/Item/components/Remove/Remove.tsx b/packages/react-spa/src/pages/stories/components/Item/components/Remove/Remove.tsx similarity index 100% rename from src/pages/stories/components/Item/components/Remove/Remove.tsx rename to packages/react-spa/src/pages/stories/components/Item/components/Remove/Remove.tsx diff --git a/src/pages/stories/components/Item/components/Remove/index.ts b/packages/react-spa/src/pages/stories/components/Item/components/Remove/index.ts similarity index 100% rename from src/pages/stories/components/Item/components/Remove/index.ts rename to packages/react-spa/src/pages/stories/components/Item/components/Remove/index.ts diff --git a/src/pages/stories/components/Item/components/index.ts b/packages/react-spa/src/pages/stories/components/Item/components/index.ts similarity index 100% rename from src/pages/stories/components/Item/components/index.ts rename to packages/react-spa/src/pages/stories/components/Item/components/index.ts diff --git a/src/pages/stories/components/Item/index.ts b/packages/react-spa/src/pages/stories/components/Item/index.ts similarity index 100% rename from src/pages/stories/components/Item/index.ts rename to packages/react-spa/src/pages/stories/components/Item/index.ts diff --git a/src/pages/stories/components/List/List.module.css b/packages/react-spa/src/pages/stories/components/List/List.module.css similarity index 100% rename from src/pages/stories/components/List/List.module.css rename to packages/react-spa/src/pages/stories/components/List/List.module.css diff --git a/src/pages/stories/components/List/List.tsx b/packages/react-spa/src/pages/stories/components/List/List.tsx similarity index 100% rename from src/pages/stories/components/List/List.tsx rename to packages/react-spa/src/pages/stories/components/List/List.tsx diff --git a/src/pages/stories/components/List/index.ts b/packages/react-spa/src/pages/stories/components/List/index.ts similarity index 100% rename from src/pages/stories/components/List/index.ts rename to packages/react-spa/src/pages/stories/components/List/index.ts diff --git a/src/pages/stories/components/OverflowWrapper/OverflowWrapper.module.css b/packages/react-spa/src/pages/stories/components/OverflowWrapper/OverflowWrapper.module.css similarity index 100% rename from src/pages/stories/components/OverflowWrapper/OverflowWrapper.module.css rename to packages/react-spa/src/pages/stories/components/OverflowWrapper/OverflowWrapper.module.css diff --git a/src/pages/stories/components/OverflowWrapper/OverflowWrapper.tsx b/packages/react-spa/src/pages/stories/components/OverflowWrapper/OverflowWrapper.tsx similarity index 100% rename from src/pages/stories/components/OverflowWrapper/OverflowWrapper.tsx rename to packages/react-spa/src/pages/stories/components/OverflowWrapper/OverflowWrapper.tsx diff --git a/src/pages/stories/components/OverflowWrapper/index.ts b/packages/react-spa/src/pages/stories/components/OverflowWrapper/index.ts similarity index 100% rename from src/pages/stories/components/OverflowWrapper/index.ts rename to packages/react-spa/src/pages/stories/components/OverflowWrapper/index.ts diff --git a/src/pages/stories/components/Wrapper/Wrapper.module.css b/packages/react-spa/src/pages/stories/components/Wrapper/Wrapper.module.css similarity index 100% rename from src/pages/stories/components/Wrapper/Wrapper.module.css rename to packages/react-spa/src/pages/stories/components/Wrapper/Wrapper.module.css diff --git a/src/pages/stories/components/Wrapper/Wrapper.tsx b/packages/react-spa/src/pages/stories/components/Wrapper/Wrapper.tsx similarity index 100% rename from src/pages/stories/components/Wrapper/Wrapper.tsx rename to packages/react-spa/src/pages/stories/components/Wrapper/Wrapper.tsx diff --git a/src/pages/stories/components/Wrapper/index.ts b/packages/react-spa/src/pages/stories/components/Wrapper/index.ts similarity index 100% rename from src/pages/stories/components/Wrapper/index.ts rename to packages/react-spa/src/pages/stories/components/Wrapper/index.ts diff --git a/src/pages/stories/components/index.ts b/packages/react-spa/src/pages/stories/components/index.ts similarity index 100% rename from src/pages/stories/components/index.ts rename to packages/react-spa/src/pages/stories/components/index.ts diff --git a/src/pages/stories/utilities/createRange.ts b/packages/react-spa/src/pages/stories/utilities/createRange.ts similarity index 100% rename from src/pages/stories/utilities/createRange.ts rename to packages/react-spa/src/pages/stories/utilities/createRange.ts diff --git a/src/pages/stories/utilities/index.ts b/packages/react-spa/src/pages/stories/utilities/index.ts similarity index 100% rename from src/pages/stories/utilities/index.ts rename to packages/react-spa/src/pages/stories/utilities/index.ts diff --git a/src/pages/virtual/component.tsx b/packages/react-spa/src/pages/virtual/component.tsx similarity index 100% rename from src/pages/virtual/component.tsx rename to packages/react-spa/src/pages/virtual/component.tsx diff --git a/packages/react-spa/src/router/guard.tsx b/packages/react-spa/src/router/guard.tsx new file mode 100644 index 00000000..a8c8aaa1 --- /dev/null +++ b/packages/react-spa/src/router/guard.tsx @@ -0,0 +1,103 @@ +import React from "react"; +import { useQuery } from "@tanstack/react-query"; +import { Navigate, Outlet, useLocation, useParams } from "react-router"; +import { useLocalStore } from "@/hooks/store/useLocalStore"; +import { fetchUserByFirebase, netlify } from "@/api/netlify"; +import { useCurrentUser } from "@/hooks/firebase/useCurrentUser"; +import { NavigateToHome, NavigateToLogin } from "./nav"; +import { calculateLocale, calculateLocalePathname } from "@/lib/utils"; +import { useTranslation } from "react-i18next"; + +const useSyncLanguage = () => { + const params = useParams(); + const { i18n } = useTranslation(); + const fallbackLang = useLocalStore((store) => store.fallbackLang); + + const langInPath = params.lang; + if (!langInPath) throw new Error("Invalid lang params"); + + const lang = calculateLocale(fallbackLang, langInPath); + + const changeLanguage = React.useEffectEvent((lang: string) => { + if (!lang) return; + + i18n.changeLanguage(lang); + useLocalStore.setState((draft) => { + draft.fallbackLang = lang; + }); + }); + + React.useEffect(() => { + changeLanguage(lang); + }, [lang]); +}; + +export const LangRoute = () => { + const params = useParams(); + const location = useLocation(); + const fallbackLang = useLocalStore((store) => store.fallbackLang); + useSyncLanguage(); + + const langInPath = params.lang; + if (!langInPath) throw new Error("Invalid params lang"); + + const lang = calculateLocale(fallbackLang, langInPath); + + if (lang === langInPath) { + return ; + } + + return ( + + ); +}; + +export const GuestGuard = () => { + const user = useCurrentUser(); + + return user ? : ; +}; + +export const AuthGuard = () => { + const user = useCurrentUser(); + const netlifyToken = useLocalStore((s) => s.netlifyToken); + const setNetlifyToken = useLocalStore.setState; + + const auth = useQuery({ + ...fetchUserByFirebase({ + data: { + firebaseId: user?.uid || "", + name: user?.displayName || "", + }, + }), + enabled: !!user?.uid, + }); + + React.useInsertionEffect(() => { + if (!auth.data?.data.token) return; + setNetlifyToken({ netlifyToken: auth.data.data.token }); + }, [auth.data?.data.token]); + + React.useInsertionEffect(() => { + if (!netlifyToken) return; + + const id = netlify.interceptors.request.use((config) => { + config.headers.setAuthorization(`Bearer ${netlifyToken}`, false); + return config; + }); + + return () => { + netlify.interceptors.request.eject(id); + }; + }, [netlifyToken]); + + return user ? : ; +}; diff --git a/src/router/index.tsx b/packages/react-spa/src/router/index.tsx similarity index 100% rename from src/router/index.tsx rename to packages/react-spa/src/router/index.tsx diff --git a/src/router/layout.tsx b/packages/react-spa/src/router/layout.tsx similarity index 100% rename from src/router/layout.tsx rename to packages/react-spa/src/router/layout.tsx diff --git a/src/router/nav.tsx b/packages/react-spa/src/router/nav.tsx similarity index 92% rename from src/router/nav.tsx rename to packages/react-spa/src/router/nav.tsx index b6180b82..6e164aab 100644 --- a/src/router/nav.tsx +++ b/packages/react-spa/src/router/nav.tsx @@ -6,16 +6,17 @@ import { HOME_PATH, LOGIN_PATH } from "@/lib/constants"; import { useLocalStore } from "@/hooks/store/useLocalStore"; export const NavigateToHome = () => { + const location = useLocation(); const [searchParams] = useSearchParams(); - const search = new URLSearchParams(searchParams); - search.delete("redirect_uri"); return ( ); @@ -24,6 +25,7 @@ export const NavigateToHome = () => { export const NavigateToLogin = () => { const location = useLocation(); const [searchParams] = useSearchParams(); + const search = new URLSearchParams(searchParams); search.set("redirect_uri", location.pathname); @@ -32,7 +34,9 @@ export const NavigateToLogin = () => { to={{ pathname: LOGIN_PATH, search: search.toString(), + hash: location.hash, }} + state={location.state} replace /> ); @@ -83,8 +87,6 @@ export const NavMenu = () => { const fallbackLang = useLocalStore((store) => store.fallbackLang); const lang = params.lang || fallbackLang; - console.log(params, lang); - return ( {list.map((i) => ( diff --git a/src/router/root.tsx b/packages/react-spa/src/router/root.tsx similarity index 81% rename from src/router/root.tsx rename to packages/react-spa/src/router/root.tsx index 4126ea91..adeb696c 100644 --- a/src/router/root.tsx +++ b/packages/react-spa/src/router/root.tsx @@ -38,28 +38,22 @@ import { ParticlesUI } from "@/components/layout/particles"; import { NprogressBar } from "@/components/layout/nprogress"; import { useCurrentUser } from "@/hooks/firebase/useCurrentUser"; import type { Navigation } from "@toolpad/core"; -import { useTranslation } from "react-i18next"; import { useLocalStore } from "@/hooks/store/useLocalStore"; +import { calculateLocale } from "@/lib/utils"; -const calculatePath = (...args: unknown[]) => { - const [lang, ...restPath] = args; - - if (!lang) { - return restPath.join("/"); - } - +const calculateSegment = (...args: unknown[]) => { return args.join("/"); }; -const createNavition = (lang?: string): Navigation => [ +const createNavition = (lang: string): Navigation => [ { kind: "header", title: "Fontend" }, { - segment: calculatePath(lang, "dashboard"), + segment: calculateSegment(lang, "dashboard"), title: "Dashboard", icon: , }, { - segment: calculatePath(lang, "dnd"), + segment: calculateSegment(lang, "dnd"), title: "Drag & Drop", icon: , }, @@ -70,12 +64,12 @@ const createNavition = (lang?: string): Navigation => [ icon: , children: [ { - segment: calculatePath(lang, "overtime"), + segment: calculateSegment(lang, "overtime"), title: "List", icon: , }, { - segment: calculatePath(lang, "overtime", "new"), + segment: calculateSegment(lang, "overtime", "new"), title: "Add", icon: , }, @@ -84,34 +78,34 @@ const createNavition = (lang?: string): Navigation => [ { kind: "divider" }, { kind: "header", title: "App" }, { - segment: calculatePath(lang, "snackbar"), + segment: calculateSegment(lang, "snackbar"), title: "Snackbar", icon: , }, { - segment: calculatePath(lang, "lab"), + segment: calculateSegment(lang, "lab"), title: "Lab", icon: , }, { - segment: calculatePath(lang, "Animate"), + segment: calculateSegment(lang, "Animate"), title: "Animate", icon: , }, { - segment: calculatePath(lang, "rank"), + segment: calculateSegment(lang, "rank"), title: "Rank", icon: , }, { kind: "divider" }, { kind: "header", title: "Custom layout" }, { - segment: calculatePath(lang, "scrollbar"), + segment: calculateSegment(lang, "scrollbar"), title: "Scrollbar", icon: , }, { - segment: calculatePath(lang, "virtual"), + segment: calculateSegment(lang, "virtual"), title: "Virtual", icon: , }, @@ -123,7 +117,12 @@ const BRANDING = { const useNavigation = () => { const params = useParams(); - const lang = params.lang; + const fallbackLang = useLocalStore((store) => store.fallbackLang); + + const langInPath = params.lang; + if (!langInPath) throw new Error("Invalid lang params"); + + const lang = calculateLocale(fallbackLang, langInPath); return React.useMemo(() => createNavition(lang), [lang]); }; @@ -202,23 +201,6 @@ export const RootRoute = () => { const theme = useTheme(); const navigation = useNavigation(); const user = useCurrentUser(); - const params = useParams(); - const { i18n } = useTranslation(); - const fallbackLang = useLocalStore((store) => store.fallbackLang); - - const changeLanguage = React.useEffectEvent((paramLang?: string) => { - i18n.changeLanguage(paramLang || fallbackLang); - - if (!paramLang) return; - - useLocalStore.setState((draft) => { - draft.fallbackLang = paramLang; - }); - }); - - React.useEffect(() => { - changeLanguage(params.lang); - }, [params.lang]); const session = user ? { diff --git a/packages/react-spa/src/router/routes.ts b/packages/react-spa/src/router/routes.ts new file mode 100644 index 00000000..52032bb3 --- /dev/null +++ b/packages/react-spa/src/router/routes.ts @@ -0,0 +1,170 @@ +import { AuthLayout } from "@/components/layout/auth"; +import { DashLayout } from "./layout"; +import { AuthGuard, GuestGuard, LangRoute } from "./guard"; +import { RootRoute, RootErrorBoundary, RootHydrateFallback } from "./root"; +import { redirect } from "react-router"; +import { useLocalStore } from "@/hooks/store/useLocalStore"; +import { calculateLocale, calculateLocalePathname } from "@/lib/utils"; +import type { RouteObject } from "react-router"; + +export const createRoutes = (): RouteObject[] => { + return [ + { + Component: RootRoute, + ErrorBoundary: RootErrorBoundary, + HydrateFallback: RootHydrateFallback, + children: [ + { + index: true, + middleware: [], + loader: async () => { + throw redirect(`/${useLocalStore.getState().fallbackLang}`); + }, + }, + { + path: ":lang", + loader: async ({ params, request }) => { + const langInPath = params.lang; + if (!langInPath) throw new Error("Invalid params lang"); + + const fallbackLang = useLocalStore.getState().fallbackLang; + const lang = calculateLocale(fallbackLang, langInPath); + + if (lang === langInPath) { + return; + } + + const url = new URL(request.url); + url.pathname = calculateLocalePathname(url.pathname, lang); + + throw redirect(url.href); + }, + Component: LangRoute, + children: [ + { + path: "*", + lazy: () => import("@/pages/not-fount/component"), + }, + { + Component: GuestGuard, + children: [ + { + path: "login", + lazy: () => import("@/pages/login/component"), + }, + { + path: "login_demo", + lazy: () => import("@/pages/login_demo/component"), + }, + ], + }, + { + Component: AuthGuard, + children: [ + { + Component: DashLayout, + children: [ + { + path: "overtime", + children: [ + { + index: true, + lazy: () => import("@/pages/overtime"), + }, + { + path: "new", + lazy: () => import("@/pages/overtime_new/component"), + }, + ], + }, + ], + }, + ], + }, + { + Component: DashLayout, + children: [ + { + path: "dashboard", + lazy: () => import("@/pages/dashboard/component"), + }, + { + path: "rank", + lazy: () => import("@/pages/rank/component"), + }, + { + path: "lab", + lazy: () => import("@/pages/lab/component"), + }, + { + path: "animate", + lazy: () => import("@/pages/animate/component"), + }, + { + index: true, + lazy: () => import("@/pages/lab/component"), + }, + { + path: "snackbar", + lazy: () => import("@/pages/snackbar/component"), + }, + { + path: "dnd/:tab?", + lazy: () => + import("@/pages/stories/1 - Core/Draggable/1-Draggable.story"), + }, + { + path: "dragoverlay/:tab?", + lazy: () => + import("@/pages/stories/1 - Core/Draggable/2-DragOverlay.story"), + }, + { + path: "dropable/:tab?", + lazy: () => + import("@/pages/stories/1 - Core/Droppable/Droppable.story"), + }, + { + path: "sortable-vertical/:tab?", + lazy: () => + import("@/pages/stories/2 - Presets/Sortable/1-Vertical.story"), + }, + { + path: "sortable-horizontal/:tab?", + lazy: () => + import("@/pages/stories/2 - Presets/Sortable/2-Horizontal.story"), + }, + { + path: "sortable-grid/:tab?", + lazy: () => + import("@/pages/stories/2 - Presets/Sortable/3-Grid.story"), + }, + { + path: "sortable-multiple-containers/:tab?", + lazy: () => + import("@/pages/stories/2 - Presets/Sortable/4-MultipleContainers.story"), + }, + ], + }, + { + Component: AuthLayout, + children: [ + { + path: "scrollbar", + lazy: () => import("@/pages/scrollbar/component"), + }, + { + path: "virtual", + lazy: () => import("@/pages/virtual/component"), + }, + { + path: "electric", + lazy: () => import("@/pages/electric/component"), + }, + ], + }, + ], + }, + ], + }, + ]; +}; diff --git a/tsconfig.app.json b/packages/react-spa/tsconfig.app.json similarity index 76% rename from tsconfig.app.json rename to packages/react-spa/tsconfig.app.json index 97276383..8dcbc0fe 100644 --- a/tsconfig.app.json +++ b/packages/react-spa/tsconfig.app.json @@ -1,10 +1,11 @@ { "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - "target": "ES2022", + "target": "ES2023", "useDefineForClassFields": true, - "lib": ["ES2022", "DOM", "DOM.Iterable"], + "lib": ["ES2023", "DOM", "DOM.Iterable"], "module": "ESNext", + "types": ["vite/client"], "skipLibCheck": true, /* Bundler mode */ @@ -23,9 +24,7 @@ "noFallthroughCasesInSwitch": true, "noUncheckedSideEffectImports": true, - "baseUrl": ".", - "paths": { "@/*": ["src/*"] }, - "types": ["vite/client"] + "paths": { "@/*": ["./src/*"] } }, - "include": ["src"] + "include": ["./src/**/*.ts", "./src/**/*.tsx"] } diff --git a/tsconfig.json b/packages/react-spa/tsconfig.json similarity index 100% rename from tsconfig.json rename to packages/react-spa/tsconfig.json diff --git a/tsconfig.node.json b/packages/react-spa/tsconfig.node.json similarity index 90% rename from tsconfig.node.json rename to packages/react-spa/tsconfig.node.json index 2445ab8b..8a67f62f 100644 --- a/tsconfig.node.json +++ b/packages/react-spa/tsconfig.node.json @@ -4,6 +4,7 @@ "target": "ES2023", "lib": ["ES2023"], "module": "ESNext", + "types": ["node"], "skipLibCheck": true, /* Bundler mode */ @@ -19,9 +20,7 @@ "noUnusedParameters": true, "erasableSyntaxOnly": true, "noFallthroughCasesInSwitch": true, - "noUncheckedSideEffectImports": true, - - "types": ["node"] + "noUncheckedSideEffectImports": true }, "include": ["vite.config.ts"] } diff --git a/packages/react-spa/vite.config.ts b/packages/react-spa/vite.config.ts new file mode 100644 index 00000000..e248b951 --- /dev/null +++ b/packages/react-spa/vite.config.ts @@ -0,0 +1,90 @@ +import { dirname, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; +import react from "@vitejs/plugin-react"; +import { defineConfig } from "vite"; + +const ReactCompilerConfig = { + // '17' | '18' | '19' + target: "19", +}; +const __dirname = dirname(fileURLToPath(import.meta.url)); + +// https://vitejs.dev/config/ +export default defineConfig(() => { + return { + plugins: [ + react({ + babel: { + plugins: [["babel-plugin-react-compiler", ReactCompilerConfig]], + }, + }), + ], + resolve: { + alias: { + "@": resolve(__dirname, "./src"), + }, + preserveSymlinks: false, + }, + css: { + preprocessorOptions: {}, + modules: { + // localsConvention: "camelCaseOnly", + }, + }, + // experimental: { enableNativePlugin: true }, + base: "./", + envDir: resolve(__dirname, "./"), + assetsInclude: [], + build: { + outDir: resolve(__dirname, "./dist"), + emptyOutDir: true, + + rollupOptions: { + input: { + index: resolve(__dirname, "./index.html"), + }, + external: [], + output: { + entryFileNames: "assets/[name]-[hash].js", + chunkFileNames: "assets/[name]-[hash].js", + assetFileNames: "assets/[name]-[hash][extname]", + }, + }, + + target: "baseline-widely-available", + minify: "esbuild", + + cssTarget: "baseline-widely-available", + cssMinify: "esbuild", + cssCodeSplit: true, + // lib: { cssFileName: "style.css" }, + + manifest: true, + sourcemap: false, + chunkSizeWarningLimit: 500, + assetsInlineLimit: 4096, + }, + + server: { + port: 3006, + strictPort: true, + hmr: { + port: 3006, + }, + host: false, + proxy: { + "/dev": { + target: "http://localhost:3002", + rewrite(path) { + return path.replace(/^\/dev/, ""); + }, + changeOrigin: true, + ws: true, + }, + }, + fs: { + allow: [resolve(__dirname, "../../")], + }, + }, + }; +}); diff --git a/packages/vue-spa/index.html b/packages/vue-spa/index.html new file mode 100644 index 00000000..a9c9b88a --- /dev/null +++ b/packages/vue-spa/index.html @@ -0,0 +1,13 @@ + + + + + + + vue-spa + + +
+ + + diff --git a/packages/vue-spa/package.json b/packages/vue-spa/package.json new file mode 100644 index 00000000..c34e70a8 --- /dev/null +++ b/packages/vue-spa/package.json @@ -0,0 +1,25 @@ +{ + "name": "vue-spa", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vue-tsc -b && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@tanstack/vue-form": "^1.28.3", + "@tanstack/vue-query": "^5.92.9", + "@tanstack/vue-query-devtools": "^6.1.5", + "pinia": "^3.0.4", + "unocss": "^66.6.0", + "vue": "^3.5.25", + "vue-router": "^5.0.3" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^6.0.2", + "vite": "^7.3.1", + "vue-tsc": "^3.1.5" + } +} diff --git a/packages/vue-spa/public/vite.svg b/packages/vue-spa/public/vite.svg new file mode 100644 index 00000000..e7b8dfb1 --- /dev/null +++ b/packages/vue-spa/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/vue-spa/src/App.vue b/packages/vue-spa/src/App.vue new file mode 100644 index 00000000..b7dded79 --- /dev/null +++ b/packages/vue-spa/src/App.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/vue-spa/src/assets/fluent.css b/packages/vue-spa/src/assets/fluent.css new file mode 100644 index 00000000..65bde8bd --- /dev/null +++ b/packages/vue-spa/src/assets/fluent.css @@ -0,0 +1,1709 @@ +:root { + --borderRadiusNone: 0; + --borderRadiusSmall: 2px; + --borderRadiusMedium: 4px; + --borderRadiusLarge: 6px; + --borderRadiusXLarge: 8px; + --borderRadius2XLarge: 12px; + --borderRadius3XLarge: 16px; + --borderRadius4XLarge: 24px; + --borderRadius5XLarge: 32px; + --borderRadius6XLarge: 40px; + --borderRadiusCircular: 10000px; + + /* Font sizes */ + --fontSizeBase100: 10px; + --fontSizeBase200: 12px; + --fontSizeBase300: 14px; + --fontSizeBase400: 16px; + --fontSizeBase500: 20px; + --fontSizeBase600: 24px; + --fontSizeHero700: 28px; + --fontSizeHero800: 32px; + --fontSizeHero900: 40px; + --fontSizeHero1000: 68px; + + /* Line heights */ + --lineHeightBase100: 14px; + --lineHeightBase200: 16px; + --lineHeightBase300: 20px; + --lineHeightBase400: 22px; + --lineHeightBase500: 28px; + --lineHeightBase600: 32px; + --lineHeightHero700: 36px; + --lineHeightHero800: 40px; + --lineHeightHero900: 52px; + --lineHeightHero1000: 92px; + + /* Font family */ + --fontFamilyBase: + "Segoe UI", "Segoe UI Web (West European)", -apple-system, + BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; + --fontFamilyMonospace: Consolas, "Courier New", Courier, monospace; + --fontFamilyNumeric: + Bahnschrift, "Segoe UI", "Segoe UI Web (West European)", -apple-system, + BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; + + /* Font weights */ + --fontWeightRegular: 400; + --fontWeightMedium: 500; + --fontWeightSemibold: 600; + --fontWeightBold: 700; + + /* Stroke widths */ + --strokeWidthThin: 1px; + --strokeWidthThick: 2px; + --strokeWidthThicker: 3px; + --strokeWidthThickest: 4px; + + /* Spacing */ + --spacingHorizontalNone: 0; + --spacingHorizontalXXS: 2px; + --spacingHorizontalXS: 4px; + --spacingHorizontalSNudge: 6px; + --spacingHorizontalS: 8px; + --spacingHorizontalMNudge: 10px; + --spacingHorizontalM: 12px; + --spacingHorizontalL: 16px; + --spacingHorizontalXL: 20px; + --spacingHorizontalXXL: 24px; + --spacingHorizontalXXXL: 32px; + --spacingVerticalNone: 0; + --spacingVerticalXXS: 2px; + --spacingVerticalXS: 4px; + --spacingVerticalSNudge: 6px; + --spacingVerticalS: 8px; + --spacingVerticalMNudge: 10px; + --spacingVerticalM: 12px; + --spacingVerticalL: 16px; + --spacingVerticalXL: 20px; + --spacingVerticalXXL: 24px; + --spacingVerticalXXXL: 32px; + + /* Durations */ + --durationUltraFast: 50ms; + --durationFaster: 100ms; + --durationFast: 150ms; + --durationNormal: 200ms; + --durationGentle: 250ms; + --durationSlow: 300ms; + --durationSlower: 400ms; + --durationUltraSlow: 500ms; + + /* Curves */ + --curveAccelerateMax: cubic-bezier(0.9, 0.1, 1, 0.2); + --curveAccelerateMid: cubic-bezier(1, 0, 1, 1); + --curveAccelerateMin: cubic-bezier(0.8, 0, 0.78, 1); + --curveDecelerateMax: cubic-bezier(0.1, 0.9, 0.2, 1); + --curveDecelerateMid: cubic-bezier(0, 0, 0, 1); + --curveDecelerateMin: cubic-bezier(0.33, 0, 0.1, 1); + --curveEasyEaseMax: cubic-bezier(0.8, 0, 0.2, 1); + --curveEasyEase: cubic-bezier(0.33, 0, 0.67, 1); + --curveLinear: cubic-bezier(0, 0, 1, 1); + + /* Shadows */ + --shadow2: 0 0 2px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.14); + --shadow4: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.14); + --shadow8: 0 0 2px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.14); + --shadow16: 0 0 2px rgba(0, 0, 0, 0.12), 0 8px 16px rgba(0, 0, 0, 0.14); + --shadow28: 0 0 8px rgba(0, 0, 0, 0.12), 0 14px 28px rgba(0, 0, 0, 0.14); + --shadow64: 0 0 8px rgba(0, 0, 0, 0.12), 0 32px 64px rgba(0, 0, 0, 0.14); + --shadow2Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 1px 2px rgba(0, 0, 0, 0.25); + --shadow4Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.25); + --shadow8Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 4px 8px rgba(0, 0, 0, 0.25); + --shadow16Brand: 0 0 2px rgba(0, 0, 0, 0.3), 0 8px 16px rgba(0, 0, 0, 0.25); + --shadow28Brand: 0 0 8px rgba(0, 0, 0, 0.3), 0 14px 28px rgba(0, 0, 0, 0.25); + --shadow64Brand: 0 0 8px rgba(0, 0, 0, 0.3), 0 32px 64px rgba(0, 0, 0, 0.25); +} + +.caption2 { + font-family: var(--fontFamilyBase); + font-size: var(--fontSizeBase100); + font-weight: var(--fontWeightRegular); + line-height: var(--lineHeightBase100); +} + +.caption2Strong { + font-family: var(--fontFamilyBase); + font-size: var(--fontSizeBase100); + font-weight: var(--fontWeightSemibold); + line-height: var(--lineHeightBase100); +} + +.caption1 { + font-family: var(--fontFamilyBase); + font-size: var(--fontSizeBase200); + font-weight: var(--fontWeightRegular); + line-height: var(--lineHeightBase200); +} + +.caption1Strong { + font-family: var(--fontFamilyBase); + font-size: var(--fontSizeBase200); + font-weight: var(--fontWeightSemibold); + line-height: var(--lineHeightBase200); +} + +.caption1Stronger { + font-family: var(--fontFamilyBase); + font-size: var(--fontSizeBase200); + font-weight: var(--fontWeightBold); + line-height: var(--lineHeightBase200); +} + +.body1 { + font-family: var(--fontFamilyBase); + font-size: var(--fontSizeBase300); + font-weight: var(--fontWeightRegular); + line-height: var(--lineHeightBase300); +} + +.body1Strong { + font-family: var(--fontFamilyBase); + font-size: var(--fontSizeBase300); + font-weight: var(--fontWeightSemibold); + line-height: var(--lineHeightBase300); +} + +.body1Stronger { + font-family: var(--fontFamilyBase); + font-size: var(--fontSizeBase300); + font-weight: var(--fontWeightBold); + line-height: var(--lineHeightBase300); +} + +.body2 { + font-family: var(--fontFamilyBase); + font-size: var(--fontSizeBase400); + font-weight: var(--fontWeightRegular); + line-height: var(--lineHeightBase400); +} + +.subtitle2 { + font-family: var(--fontFamilyBase); + font-size: var(--fontSizeBase400); + font-weight: var(--fontWeightSemibold); + line-height: var(--lineHeightBase400); +} + +.subtitle2Stronger { + font-family: var(--fontFamilyBase); + font-size: var(--fontSizeBase400); + font-weight: var(--fontWeightBold); + line-height: var(--lineHeightBase400); +} + +.subtitle1 { + font-family: var(--fontFamilyBase); + font-size: var(--fontSizeBase500); + font-weight: var(--fontWeightSemibold); + line-height: var(--lineHeightBase500); +} + +.title3 { + font-family: var(--fontFamilyBase); + font-size: var(--fontSizeBase600); + font-weight: var(--fontWeightSemibold); + line-height: var(--lineHeightBase600); +} + +.title2 { + font-family: var(--fontFamilyBase); + font-size: var(--fontSizeHero700); + font-weight: var(--fontWeightSemibold); + line-height: var(--lineHeightHero700); +} + +.title1 { + font-family: var(--fontFamilyBase); + font-size: var(--fontSizeHero800); + font-weight: var(--fontWeightSemibold); + line-height: var(--lineHeightHero800); +} + +.largeTitle { + font-family: var(--fontFamilyBase); + font-size: var(--fontSizeHero900); + font-weight: var(--fontWeightSemibold); + line-height: var(--lineHeightHero900); +} + +.display { + font-family: var(--fontFamilyBase); + font-size: var(--fontSizeHero1000); + font-weight: var(--fontWeightSemibold); + line-height: var(--lineHeightHero1000); +} + +.Light { + --colorNeutralForeground1: #242424; + --colorNeutralForeground1Hover: #242424; + --colorNeutralForeground1Pressed: #242424; + --colorNeutralForeground1Selected: #242424; + --colorNeutralForeground2: #424242; + --colorNeutralForeground2Hover: #242424; + --colorNeutralForeground2Pressed: #242424; + --colorNeutralForeground2Selected: #242424; + --colorNeutralForeground2BrandHover: #0f6cbd; + --colorNeutralForeground2BrandPressed: #115ea3; + --colorNeutralForeground2BrandSelected: #0f6cbd; + --colorNeutralForeground3: #616161; + --colorNeutralForeground3Hover: #424242; + --colorNeutralForeground3Pressed: #424242; + --colorNeutralForeground3Selected: #424242; + --colorNeutralForeground3BrandHover: #0f6cbd; + --colorNeutralForeground3BrandPressed: #115ea3; + --colorNeutralForeground3BrandSelected: #0f6cbd; + --colorNeutralForeground4: #707070; + --colorNeutralForeground5: #616161; + --colorNeutralForeground5Hover: #242424; + --colorNeutralForeground5Pressed: #242424; + --colorNeutralForeground5Selected: #242424; + --colorNeutralForegroundDisabled: #bdbdbd; + --colorNeutralForegroundInvertedDisabled: rgba(255, 255, 255, 0.4); + --colorBrandForegroundLink: #115ea3; + --colorBrandForegroundLinkHover: #0f548c; + --colorBrandForegroundLinkPressed: #0c3b5e; + --colorBrandForegroundLinkSelected: #115ea3; + --colorNeutralForeground2Link: #424242; + --colorNeutralForeground2LinkHover: #242424; + --colorNeutralForeground2LinkPressed: #242424; + --colorNeutralForeground2LinkSelected: #242424; + --colorCompoundBrandForeground1: #0f6cbd; + --colorCompoundBrandForeground1Hover: #115ea3; + --colorCompoundBrandForeground1Pressed: #0f548c; + --colorBrandForeground1: #0f6cbd; + --colorBrandForeground2: #115ea3; + --colorBrandForeground2Hover: #0f548c; + --colorBrandForeground2Pressed: #0a2e4a; + --colorNeutralForeground1Static: #242424; + --colorNeutralForegroundStaticInverted: #ffffff; + --colorNeutralForegroundInverted: #ffffff; + --colorNeutralForegroundInvertedHover: #ffffff; + --colorNeutralForegroundInvertedPressed: #ffffff; + --colorNeutralForegroundInvertedSelected: #ffffff; + --colorNeutralForegroundInverted2: #ffffff; + --colorNeutralForegroundOnBrand: #ffffff; + --colorNeutralForegroundInvertedLink: #ffffff; + --colorNeutralForegroundInvertedLinkHover: #ffffff; + --colorNeutralForegroundInvertedLinkPressed: #ffffff; + --colorNeutralForegroundInvertedLinkSelected: #ffffff; + --colorBrandForegroundInverted: #479ef5; + --colorBrandForegroundInvertedHover: #62abf5; + --colorBrandForegroundInvertedPressed: #479ef5; + --colorBrandForegroundOnLight: #0f6cbd; + --colorBrandForegroundOnLightHover: #115ea3; + --colorBrandForegroundOnLightPressed: #0e4775; + --colorBrandForegroundOnLightSelected: #0f548c; + --colorNeutralBackground1: #ffffff; + --colorNeutralBackground1Hover: #f5f5f5; + --colorNeutralBackground1Pressed: #e0e0e0; + --colorNeutralBackground1Selected: #ebebeb; + --colorNeutralBackground2: #fafafa; + --colorNeutralBackground2Hover: #f0f0f0; + --colorNeutralBackground2Pressed: #dbdbdb; + --colorNeutralBackground2Selected: #e6e6e6; + --colorNeutralBackground3: #f5f5f5; + --colorNeutralBackground3Hover: #ebebeb; + --colorNeutralBackground3Pressed: #d6d6d6; + --colorNeutralBackground3Selected: #e0e0e0; + --colorNeutralBackground4: #f0f0f0; + --colorNeutralBackground4Hover: #fafafa; + --colorNeutralBackground4Pressed: #f5f5f5; + --colorNeutralBackground4Selected: #ffffff; + --colorNeutralBackground5: #ebebeb; + --colorNeutralBackground5Hover: #f5f5f5; + --colorNeutralBackground5Pressed: #f0f0f0; + --colorNeutralBackground5Selected: #fafafa; + --colorNeutralBackground6: #e6e6e6; + --colorNeutralBackground7: #00000000; + --colorNeutralBackground7Hover: #ebebeb; + --colorNeutralBackground7Pressed: #d6d6d6; + --colorNeutralBackground7Selected: #00000000; + --colorNeutralBackground8: #fcfcfc; + --colorNeutralBackgroundInverted: #292929; + --colorNeutralBackgroundInvertedHover: #3d3d3d; + --colorNeutralBackgroundInvertedPressed: #1f1f1f; + --colorNeutralBackgroundInvertedSelected: #383838; + --colorNeutralBackgroundStatic: #333333; + --colorNeutralBackgroundAlpha: rgba(255, 255, 255, 0.5); + --colorNeutralBackgroundAlpha2: rgba(255, 255, 255, 0.8); + --colorSubtleBackground: transparent; + --colorSubtleBackgroundHover: #f5f5f5; + --colorSubtleBackgroundPressed: #e0e0e0; + --colorSubtleBackgroundSelected: #ebebeb; + --colorSubtleBackgroundLightAlphaHover: rgba(255, 255, 255, 0.7); + --colorSubtleBackgroundLightAlphaPressed: rgba(255, 255, 255, 0.5); + --colorSubtleBackgroundLightAlphaSelected: transparent; + --colorSubtleBackgroundInverted: transparent; + --colorSubtleBackgroundInvertedHover: rgba(0, 0, 0, 0.1); + --colorSubtleBackgroundInvertedPressed: rgba(0, 0, 0, 0.3); + --colorSubtleBackgroundInvertedSelected: rgba(0, 0, 0, 0.2); + --colorTransparentBackground: transparent; + --colorTransparentBackgroundHover: transparent; + --colorTransparentBackgroundPressed: transparent; + --colorTransparentBackgroundSelected: transparent; + --colorNeutralBackgroundDisabled: #f0f0f0; + --colorNeutralBackgroundDisabled2: #ffffff; + --colorNeutralBackgroundInvertedDisabled: rgba(255, 255, 255, 0.1); + --colorNeutralStencil1: #e6e6e6; + --colorNeutralStencil2: #fafafa; + --colorNeutralStencil1Alpha: rgba(0, 0, 0, 0.1); + --colorNeutralStencil2Alpha: rgba(0, 0, 0, 0.05); + --colorBackgroundOverlay: rgba(0, 0, 0, 0.4); + --colorScrollbarOverlay: rgba(0, 0, 0, 0.5); + --colorBrandBackground: #0f6cbd; + --colorBrandBackgroundHover: #115ea3; + --colorBrandBackgroundPressed: #0c3b5e; + --colorBrandBackgroundSelected: #0f548c; + --colorCompoundBrandBackground: #0f6cbd; + --colorCompoundBrandBackgroundHover: #115ea3; + --colorCompoundBrandBackgroundPressed: #0f548c; + --colorBrandBackgroundStatic: #0f6cbd; + --colorBrandBackground2: #ebf3fc; + --colorBrandBackground2Hover: #cfe4fa; + --colorBrandBackground2Pressed: #96c6fa; + --colorBrandBackground3Static: #0f548c; + --colorBrandBackground4Static: #0c3b5e; + --colorBrandBackgroundInverted: #ffffff; + --colorBrandBackgroundInvertedHover: #ebf3fc; + --colorBrandBackgroundInvertedPressed: #b4d6fa; + --colorBrandBackgroundInvertedSelected: #cfe4fa; + --colorNeutralCardBackground: #fafafa; + --colorNeutralCardBackgroundHover: #ffffff; + --colorNeutralCardBackgroundPressed: #f5f5f5; + --colorNeutralCardBackgroundSelected: #ebebeb; + --colorNeutralCardBackgroundDisabled: #f0f0f0; + --colorNeutralStrokeAccessible: #616161; + --colorNeutralStrokeAccessibleHover: #575757; + --colorNeutralStrokeAccessiblePressed: #4d4d4d; + --colorNeutralStrokeAccessibleSelected: #0f6cbd; + --colorNeutralStroke1: #d1d1d1; + --colorNeutralStroke1Hover: #c7c7c7; + --colorNeutralStroke1Pressed: #b3b3b3; + --colorNeutralStroke1Selected: #bdbdbd; + --colorNeutralStroke2: #e0e0e0; + --colorNeutralStroke3: #f0f0f0; + --colorNeutralStroke4: #ebebeb; + --colorNeutralStroke4Hover: #e0e0e0; + --colorNeutralStroke4Pressed: #d6d6d6; + --colorNeutralStroke4Selected: #ebebeb; + --colorNeutralStrokeSubtle: #e0e0e0; + --colorNeutralStrokeOnBrand: #ffffff; + --colorNeutralStrokeOnBrand2: #ffffff; + --colorNeutralStrokeOnBrand2Hover: #ffffff; + --colorNeutralStrokeOnBrand2Pressed: #ffffff; + --colorNeutralStrokeOnBrand2Selected: #ffffff; + --colorBrandStroke1: #0f6cbd; + --colorBrandStroke2: #b4d6fa; + --colorBrandStroke2Hover: #77b7f7; + --colorBrandStroke2Pressed: #0f6cbd; + --colorBrandStroke2Contrast: #b4d6fa; + --colorCompoundBrandStroke: #0f6cbd; + --colorCompoundBrandStrokeHover: #115ea3; + --colorCompoundBrandStrokePressed: #0f548c; + --colorNeutralStrokeDisabled: #e0e0e0; + --colorNeutralStrokeDisabled2: #ebebeb; + --colorNeutralStrokeInvertedDisabled: rgba(255, 255, 255, 0.4); + --colorTransparentStroke: transparent; + --colorTransparentStrokeInteractive: transparent; + --colorTransparentStrokeDisabled: transparent; + --colorNeutralStrokeAlpha: rgba(0, 0, 0, 0.05); + --colorNeutralStrokeAlpha2: rgba(255, 255, 255, 0.2); + --colorStrokeFocus1: #ffffff; + --colorStrokeFocus2: #000000; + --colorNeutralShadowAmbient: rgba(0, 0, 0, 0.12); + --colorNeutralShadowKey: rgba(0, 0, 0, 0.14); + --colorNeutralShadowAmbientLighter: rgba(0, 0, 0, 0.06); + --colorNeutralShadowKeyLighter: rgba(0, 0, 0, 0.07); + --colorNeutralShadowAmbientDarker: rgba(0, 0, 0, 0.2); + --colorNeutralShadowKeyDarker: rgba(0, 0, 0, 0.24); + --colorBrandShadowAmbient: rgba(0, 0, 0, 0.3); + --colorBrandShadowKey: rgba(0, 0, 0, 0.25); + --colorPaletteRedBackground1: #fdf6f6; + --colorPaletteRedBackground2: #f1bbbc; + --colorPaletteRedBackground3: #d13438; + --colorPaletteRedForeground1: #bc2f32; + --colorPaletteRedForeground2: #751d1f; + --colorPaletteRedForeground3: #d13438; + --colorPaletteRedBorderActive: #d13438; + --colorPaletteRedBorder1: #f1bbbc; + --colorPaletteRedBorder2: #d13438; + --colorPaletteGreenBackground1: #f1faf1; + --colorPaletteGreenBackground2: #9fd89f; + --colorPaletteGreenBackground3: #107c10; + --colorPaletteGreenForeground1: #0e700e; + --colorPaletteGreenForeground2: #094509; + --colorPaletteGreenForeground3: #107c10; + --colorPaletteGreenBorderActive: #107c10; + --colorPaletteGreenBorder1: #9fd89f; + --colorPaletteGreenBorder2: #107c10; + --colorPaletteDarkOrangeBackground1: #fdf6f3; + --colorPaletteDarkOrangeBackground2: #f4bfab; + --colorPaletteDarkOrangeBackground3: #da3b01; + --colorPaletteDarkOrangeForeground1: #c43501; + --colorPaletteDarkOrangeForeground2: #7a2101; + --colorPaletteDarkOrangeForeground3: #da3b01; + --colorPaletteDarkOrangeBorderActive: #da3b01; + --colorPaletteDarkOrangeBorder1: #f4bfab; + --colorPaletteDarkOrangeBorder2: #da3b01; + --colorPaletteYellowBackground1: #fffef5; + --colorPaletteYellowBackground2: #fef7b2; + --colorPaletteYellowBackground3: #fde300; + --colorPaletteYellowForeground1: #817400; + --colorPaletteYellowForeground2: #817400; + --colorPaletteYellowForeground3: #fde300; + --colorPaletteYellowBorderActive: #fde300; + --colorPaletteYellowBorder1: #fef7b2; + --colorPaletteYellowBorder2: #fde300; + --colorPaletteBerryBackground1: #fdf5fc; + --colorPaletteBerryBackground2: #edbbe7; + --colorPaletteBerryBackground3: #c239b3; + --colorPaletteBerryForeground1: #af33a1; + --colorPaletteBerryForeground2: #6d2064; + --colorPaletteBerryForeground3: #c239b3; + --colorPaletteBerryBorderActive: #c239b3; + --colorPaletteBerryBorder1: #edbbe7; + --colorPaletteBerryBorder2: #c239b3; + --colorPaletteLightGreenBackground1: #f2fbf2; + --colorPaletteLightGreenBackground2: #a7e3a5; + --colorPaletteLightGreenBackground3: #13a10e; + --colorPaletteLightGreenForeground1: #11910d; + --colorPaletteLightGreenForeground2: #0b5a08; + --colorPaletteLightGreenForeground3: #13a10e; + --colorPaletteLightGreenBorderActive: #13a10e; + --colorPaletteLightGreenBorder1: #a7e3a5; + --colorPaletteLightGreenBorder2: #13a10e; + --colorPaletteMarigoldBackground1: #fefbf4; + --colorPaletteMarigoldBackground2: #f9e2ae; + --colorPaletteMarigoldBackground3: #eaa300; + --colorPaletteMarigoldForeground1: #d39300; + --colorPaletteMarigoldForeground2: #835b00; + --colorPaletteMarigoldForeground3: #eaa300; + --colorPaletteMarigoldBorderActive: #eaa300; + --colorPaletteMarigoldBorder1: #f9e2ae; + --colorPaletteMarigoldBorder2: #eaa300; + --colorPaletteRedForegroundInverted: #dc5e62; + --colorPaletteGreenForegroundInverted: #359b35; + --colorPaletteYellowForegroundInverted: #fef7b2; + --colorPaletteDarkRedBackground2: #d69ca5; + --colorPaletteDarkRedForeground2: #420610; + --colorPaletteDarkRedBorderActive: #750b1c; + --colorPaletteCranberryBackground2: #eeacb2; + --colorPaletteCranberryForeground2: #6e0811; + --colorPaletteCranberryBorderActive: #c50f1f; + --colorPalettePumpkinBackground2: #efc4ad; + --colorPalettePumpkinForeground2: #712d09; + --colorPalettePumpkinBorderActive: #ca5010; + --colorPalettePeachBackground2: #ffddb3; + --colorPalettePeachForeground2: #8f4e00; + --colorPalettePeachBorderActive: #ff8c00; + --colorPaletteGoldBackground2: #ecdfa5; + --colorPaletteGoldForeground2: #6c5700; + --colorPaletteGoldBorderActive: #c19c00; + --colorPaletteBrassBackground2: #e0cea2; + --colorPaletteBrassForeground2: #553e06; + --colorPaletteBrassBorderActive: #986f0b; + --colorPaletteBrownBackground2: #ddc3b0; + --colorPaletteBrownForeground2: #50301a; + --colorPaletteBrownBorderActive: #8e562e; + --colorPaletteForestBackground2: #bdd99b; + --colorPaletteForestForeground2: #294903; + --colorPaletteForestBorderActive: #498205; + --colorPaletteSeafoamBackground2: #a8f0cd; + --colorPaletteSeafoamForeground2: #00723b; + --colorPaletteSeafoamBorderActive: #00cc6a; + --colorPaletteDarkGreenBackground2: #9ad29a; + --colorPaletteDarkGreenForeground2: #063b06; + --colorPaletteDarkGreenBorderActive: #0b6a0b; + --colorPaletteLightTealBackground2: #a6e9ed; + --colorPaletteLightTealForeground2: #00666d; + --colorPaletteLightTealBorderActive: #00b7c3; + --colorPaletteTealBackground2: #9bd9db; + --colorPaletteTealForeground2: #02494c; + --colorPaletteTealBorderActive: #038387; + --colorPaletteSteelBackground2: #94c8d4; + --colorPaletteSteelForeground2: #00333f; + --colorPaletteSteelBorderActive: #005b70; + --colorPaletteBlueBackground2: #a9d3f2; + --colorPaletteBlueForeground2: #004377; + --colorPaletteBlueBorderActive: #0078d4; + --colorPaletteRoyalBlueBackground2: #9abfdc; + --colorPaletteRoyalBlueForeground2: #002c4e; + --colorPaletteRoyalBlueBorderActive: #004e8c; + --colorPaletteCornflowerBackground2: #c8d1fa; + --colorPaletteCornflowerForeground2: #2c3c85; + --colorPaletteCornflowerBorderActive: #4f6bed; + --colorPaletteNavyBackground2: #a3b2e8; + --colorPaletteNavyForeground2: #001665; + --colorPaletteNavyBorderActive: #0027b4; + --colorPaletteLavenderBackground2: #d2ccf8; + --colorPaletteLavenderForeground2: #3f3682; + --colorPaletteLavenderBorderActive: #7160e8; + --colorPalettePurpleBackground2: #c6b1de; + --colorPalettePurpleForeground2: #341a51; + --colorPalettePurpleBorderActive: #5c2e91; + --colorPaletteGrapeBackground2: #d9a7e0; + --colorPaletteGrapeForeground2: #4c0d55; + --colorPaletteGrapeBorderActive: #881798; + --colorPaletteLilacBackground2: #e6bfed; + --colorPaletteLilacForeground2: #63276d; + --colorPaletteLilacBorderActive: #b146c2; + --colorPalettePinkBackground2: #f7c0e3; + --colorPalettePinkForeground2: #80215d; + --colorPalettePinkBorderActive: #e43ba6; + --colorPaletteMagentaBackground2: #eca5d1; + --colorPaletteMagentaForeground2: #6b0043; + --colorPaletteMagentaBorderActive: #bf0077; + --colorPalettePlumBackground2: #d696c0; + --colorPalettePlumForeground2: #43002b; + --colorPalettePlumBorderActive: #77004d; + --colorPaletteBeigeBackground2: #d7d4d4; + --colorPaletteBeigeForeground2: #444241; + --colorPaletteBeigeBorderActive: #7a7574; + --colorPaletteMinkBackground2: #cecccb; + --colorPaletteMinkForeground2: #343231; + --colorPaletteMinkBorderActive: #5d5a58; + --colorPalettePlatinumBackground2: #cdd6d8; + --colorPalettePlatinumForeground2: #3b4447; + --colorPalettePlatinumBorderActive: #69797e; + --colorPaletteAnchorBackground2: #bcc3c7; + --colorPaletteAnchorForeground2: #202427; + --colorPaletteAnchorBorderActive: #394146; + --colorStatusSuccessBackground1: #f1faf1; + --colorStatusSuccessBackground2: #9fd89f; + --colorStatusSuccessBackground3: #107c10; + --colorStatusSuccessForeground1: #0e700e; + --colorStatusSuccessForeground2: #094509; + --colorStatusSuccessForeground3: #107c10; + --colorStatusSuccessForegroundInverted: #54b054; + --colorStatusSuccessBorderActive: #107c10; + --colorStatusSuccessBorder1: #9fd89f; + --colorStatusSuccessBorder2: #107c10; + --colorStatusWarningBackground1: #fff9f5; + --colorStatusWarningBackground2: #fdcfb4; + --colorStatusWarningBackground3: #f7630c; + --colorStatusWarningForeground1: #bc4b09; + --colorStatusWarningForeground2: #8a3707; + --colorStatusWarningForeground3: #bc4b09; + --colorStatusWarningForegroundInverted: #faa06b; + --colorStatusWarningBorderActive: #f7630c; + --colorStatusWarningBorder1: #fdcfb4; + --colorStatusWarningBorder2: #bc4b09; + --colorStatusDangerBackground1: #fdf3f4; + --colorStatusDangerBackground2: #eeacb2; + --colorStatusDangerBackground3: #c50f1f; + --colorStatusDangerForeground1: #b10e1c; + --colorStatusDangerForeground2: #6e0811; + --colorStatusDangerForeground3: #c50f1f; + --colorStatusDangerForegroundInverted: #dc626d; + --colorStatusDangerBorderActive: #c50f1f; + --colorStatusDangerBorder1: #eeacb2; + --colorStatusDangerBorder2: #c50f1f; + --colorStatusDangerBackground3Hover: #b10e1c; + --colorStatusDangerBackground3Pressed: #960b18; +} +.Dark { + --colorNeutralForeground1: #ffffff; + --colorNeutralForeground1Hover: #ffffff; + --colorNeutralForeground1Pressed: #ffffff; + --colorNeutralForeground1Selected: #ffffff; + --colorNeutralForeground2: #d6d6d6; + --colorNeutralForeground2Hover: #ffffff; + --colorNeutralForeground2Pressed: #ffffff; + --colorNeutralForeground2Selected: #ffffff; + --colorNeutralForeground2BrandHover: #479ef5; + --colorNeutralForeground2BrandPressed: #2886de; + --colorNeutralForeground2BrandSelected: #479ef5; + --colorNeutralForeground3: #adadad; + --colorNeutralForeground3Hover: #d6d6d6; + --colorNeutralForeground3Pressed: #d6d6d6; + --colorNeutralForeground3Selected: #d6d6d6; + --colorNeutralForeground3BrandHover: #479ef5; + --colorNeutralForeground3BrandPressed: #2886de; + --colorNeutralForeground3BrandSelected: #479ef5; + --colorNeutralForeground4: #999999; + --colorNeutralForeground5: #adadad; + --colorNeutralForeground5Hover: #ffffff; + --colorNeutralForeground5Pressed: #ffffff; + --colorNeutralForeground5Selected: #ffffff; + --colorNeutralForegroundDisabled: #5c5c5c; + --colorNeutralForegroundInvertedDisabled: rgba(255, 255, 255, 0.4); + --colorBrandForegroundLink: #479ef5; + --colorBrandForegroundLinkHover: #62abf5; + --colorBrandForegroundLinkPressed: #2886de; + --colorBrandForegroundLinkSelected: #479ef5; + --colorNeutralForeground2Link: #d6d6d6; + --colorNeutralForeground2LinkHover: #ffffff; + --colorNeutralForeground2LinkPressed: #ffffff; + --colorNeutralForeground2LinkSelected: #ffffff; + --colorCompoundBrandForeground1: #479ef5; + --colorCompoundBrandForeground1Hover: #62abf5; + --colorCompoundBrandForeground1Pressed: #2886de; + --colorBrandForeground1: #479ef5; + --colorBrandForeground2: #62abf5; + --colorBrandForeground2Hover: #96c6fa; + --colorBrandForeground2Pressed: #ebf3fc; + --colorNeutralForeground1Static: #242424; + --colorNeutralForegroundStaticInverted: #ffffff; + --colorNeutralForegroundInverted: #242424; + --colorNeutralForegroundInvertedHover: #242424; + --colorNeutralForegroundInvertedPressed: #242424; + --colorNeutralForegroundInvertedSelected: #242424; + --colorNeutralForegroundInverted2: #242424; + --colorNeutralForegroundOnBrand: #ffffff; + --colorNeutralForegroundInvertedLink: #ffffff; + --colorNeutralForegroundInvertedLinkHover: #ffffff; + --colorNeutralForegroundInvertedLinkPressed: #ffffff; + --colorNeutralForegroundInvertedLinkSelected: #ffffff; + --colorBrandForegroundInverted: #0f6cbd; + --colorBrandForegroundInvertedHover: #115ea3; + --colorBrandForegroundInvertedPressed: #0f548c; + --colorBrandForegroundOnLight: #0f6cbd; + --colorBrandForegroundOnLightHover: #115ea3; + --colorBrandForegroundOnLightPressed: #0e4775; + --colorBrandForegroundOnLightSelected: #0f548c; + --colorNeutralBackground1: #292929; + --colorNeutralBackground1Hover: #3d3d3d; + --colorNeutralBackground1Pressed: #1f1f1f; + --colorNeutralBackground1Selected: #383838; + --colorNeutralBackground2: #1f1f1f; + --colorNeutralBackground2Hover: #333333; + --colorNeutralBackground2Pressed: #141414; + --colorNeutralBackground2Selected: #2e2e2e; + --colorNeutralBackground3: #141414; + --colorNeutralBackground3Hover: #292929; + --colorNeutralBackground3Pressed: #0a0a0a; + --colorNeutralBackground3Selected: #242424; + --colorNeutralBackground4: #0a0a0a; + --colorNeutralBackground4Hover: #1f1f1f; + --colorNeutralBackground4Pressed: #000000; + --colorNeutralBackground4Selected: #1a1a1a; + --colorNeutralBackground5: #000000; + --colorNeutralBackground5Hover: #141414; + --colorNeutralBackground5Pressed: #050505; + --colorNeutralBackground5Selected: #0f0f0f; + --colorNeutralBackground6: #333333; + --colorNeutralBackground7: #00000000; + --colorNeutralBackground7Hover: #1a1a1a; + --colorNeutralBackground7Pressed: #0a0a0a; + --colorNeutralBackground7Selected: #00000000; + --colorNeutralBackground8: #292929; + --colorNeutralBackgroundInverted: #ffffff; + --colorNeutralBackgroundInvertedHover: #f5f5f5; + --colorNeutralBackgroundInvertedPressed: #e0e0e0; + --colorNeutralBackgroundInvertedSelected: #ebebeb; + --colorNeutralBackgroundStatic: #3d3d3d; + --colorNeutralBackgroundAlpha: rgba(26, 26, 26, 0.5); + --colorNeutralBackgroundAlpha2: rgba(31, 31, 31, 0.7); + --colorSubtleBackground: transparent; + --colorSubtleBackgroundHover: #383838; + --colorSubtleBackgroundPressed: #2e2e2e; + --colorSubtleBackgroundSelected: #333333; + --colorSubtleBackgroundLightAlphaHover: rgba(36, 36, 36, 0.8); + --colorSubtleBackgroundLightAlphaPressed: rgba(36, 36, 36, 0.5); + --colorSubtleBackgroundLightAlphaSelected: transparent; + --colorSubtleBackgroundInverted: transparent; + --colorSubtleBackgroundInvertedHover: rgba(0, 0, 0, 0.1); + --colorSubtleBackgroundInvertedPressed: rgba(0, 0, 0, 0.3); + --colorSubtleBackgroundInvertedSelected: rgba(0, 0, 0, 0.2); + --colorTransparentBackground: transparent; + --colorTransparentBackgroundHover: transparent; + --colorTransparentBackgroundPressed: transparent; + --colorTransparentBackgroundSelected: transparent; + --colorNeutralBackgroundDisabled: #141414; + --colorNeutralBackgroundDisabled2: #292929; + --colorNeutralBackgroundInvertedDisabled: rgba(255, 255, 255, 0.1); + --colorNeutralStencil1: #575757; + --colorNeutralStencil2: #333333; + --colorNeutralStencil1Alpha: rgba(255, 255, 255, 0.1); + --colorNeutralStencil2Alpha: rgba(255, 255, 255, 0.05); + --colorBackgroundOverlay: rgba(0, 0, 0, 0.5); + --colorScrollbarOverlay: rgba(255, 255, 255, 0.6); + --colorBrandBackground: #115ea3; + --colorBrandBackgroundHover: #0f6cbd; + --colorBrandBackgroundPressed: #0c3b5e; + --colorBrandBackgroundSelected: #0f548c; + --colorCompoundBrandBackground: #479ef5; + --colorCompoundBrandBackgroundHover: #62abf5; + --colorCompoundBrandBackgroundPressed: #2886de; + --colorBrandBackgroundStatic: #0f6cbd; + --colorBrandBackground2: #082338; + --colorBrandBackground2Hover: #0c3b5e; + --colorBrandBackground2Pressed: #061724; + --colorBrandBackground3Static: #0f548c; + --colorBrandBackground4Static: #0c3b5e; + --colorBrandBackgroundInverted: #ffffff; + --colorBrandBackgroundInvertedHover: #ebf3fc; + --colorBrandBackgroundInvertedPressed: #b4d6fa; + --colorBrandBackgroundInvertedSelected: #cfe4fa; + --colorNeutralCardBackground: #333333; + --colorNeutralCardBackgroundHover: #3d3d3d; + --colorNeutralCardBackgroundPressed: #2e2e2e; + --colorNeutralCardBackgroundSelected: #383838; + --colorNeutralCardBackgroundDisabled: #141414; + --colorNeutralStrokeAccessible: #adadad; + --colorNeutralStrokeAccessibleHover: #bdbdbd; + --colorNeutralStrokeAccessiblePressed: #b3b3b3; + --colorNeutralStrokeAccessibleSelected: #479ef5; + --colorNeutralStroke1: #666666; + --colorNeutralStroke1Hover: #757575; + --colorNeutralStroke1Pressed: #6b6b6b; + --colorNeutralStroke1Selected: #707070; + --colorNeutralStroke2: #525252; + --colorNeutralStroke3: #3d3d3d; + --colorNeutralStroke4: #3d3d3d; + --colorNeutralStroke4Hover: #2e2e2e; + --colorNeutralStroke4Pressed: #242424; + --colorNeutralStroke4Selected: #3d3d3d; + --colorNeutralStrokeSubtle: #0a0a0a; + --colorNeutralStrokeOnBrand: #292929; + --colorNeutralStrokeOnBrand2: #ffffff; + --colorNeutralStrokeOnBrand2Hover: #ffffff; + --colorNeutralStrokeOnBrand2Pressed: #ffffff; + --colorNeutralStrokeOnBrand2Selected: #ffffff; + --colorBrandStroke1: #479ef5; + --colorBrandStroke2: #0e4775; + --colorBrandStroke2Hover: #0e4775; + --colorBrandStroke2Pressed: #0a2e4a; + --colorBrandStroke2Contrast: #0e4775; + --colorCompoundBrandStroke: #479ef5; + --colorCompoundBrandStrokeHover: #62abf5; + --colorCompoundBrandStrokePressed: #2886de; + --colorNeutralStrokeDisabled: #424242; + --colorNeutralStrokeDisabled2: #3d3d3d; + --colorNeutralStrokeInvertedDisabled: rgba(255, 255, 255, 0.4); + --colorTransparentStroke: transparent; + --colorTransparentStrokeInteractive: transparent; + --colorTransparentStrokeDisabled: transparent; + --colorNeutralStrokeAlpha: rgba(255, 255, 255, 0.1); + --colorNeutralStrokeAlpha2: rgba(255, 255, 255, 0.2); + --colorStrokeFocus1: #000000; + --colorStrokeFocus2: #ffffff; + --colorNeutralShadowAmbient: rgba(0, 0, 0, 0.24); + --colorNeutralShadowKey: rgba(0, 0, 0, 0.28); + --colorNeutralShadowAmbientLighter: rgba(0, 0, 0, 0.12); + --colorNeutralShadowKeyLighter: rgba(0, 0, 0, 0.14); + --colorNeutralShadowAmbientDarker: rgba(0, 0, 0, 0.4); + --colorNeutralShadowKeyDarker: rgba(0, 0, 0, 0.48); + --colorBrandShadowAmbient: rgba(0, 0, 0, 0.3); + --colorBrandShadowKey: rgba(0, 0, 0, 0.25); + --colorPaletteRedBackground1: #3f1011; + --colorPaletteRedBackground2: #751d1f; + --colorPaletteRedBackground3: #d13438; + --colorPaletteRedForeground1: #e37d80; + --colorPaletteRedForeground2: #f1bbbc; + --colorPaletteRedForeground3: #e37d80; + --colorPaletteRedBorderActive: #e37d80; + --colorPaletteRedBorder1: #d13438; + --colorPaletteRedBorder2: #e37d80; + --colorPaletteGreenBackground1: #052505; + --colorPaletteGreenBackground2: #094509; + --colorPaletteGreenBackground3: #107c10; + --colorPaletteGreenForeground1: #54b054; + --colorPaletteGreenForeground2: #9fd89f; + --colorPaletteGreenForeground3: #9fd89f; + --colorPaletteGreenBorderActive: #54b054; + --colorPaletteGreenBorder1: #107c10; + --colorPaletteGreenBorder2: #9fd89f; + --colorPaletteDarkOrangeBackground1: #411200; + --colorPaletteDarkOrangeBackground2: #7a2101; + --colorPaletteDarkOrangeBackground3: #da3b01; + --colorPaletteDarkOrangeForeground1: #e9835e; + --colorPaletteDarkOrangeForeground2: #f4bfab; + --colorPaletteDarkOrangeForeground3: #e9835e; + --colorPaletteDarkOrangeBorderActive: #e9835e; + --colorPaletteDarkOrangeBorder1: #da3b01; + --colorPaletteDarkOrangeBorder2: #e9835e; + --colorPaletteYellowBackground1: #4c4400; + --colorPaletteYellowBackground2: #817400; + --colorPaletteYellowBackground3: #fde300; + --colorPaletteYellowForeground1: #feee66; + --colorPaletteYellowForeground2: #fef7b2; + --colorPaletteYellowForeground3: #fdea3d; + --colorPaletteYellowBorderActive: #feee66; + --colorPaletteYellowBorder1: #fde300; + --colorPaletteYellowBorder2: #fdea3d; + --colorPaletteBerryBackground1: #3a1136; + --colorPaletteBerryBackground2: #6d2064; + --colorPaletteBerryBackground3: #c239b3; + --colorPaletteBerryForeground1: #da7ed0; + --colorPaletteBerryForeground2: #edbbe7; + --colorPaletteBerryForeground3: #d161c4; + --colorPaletteBerryBorderActive: #da7ed0; + --colorPaletteBerryBorder1: #c239b3; + --colorPaletteBerryBorder2: #d161c4; + --colorPaletteLightGreenBackground1: #063004; + --colorPaletteLightGreenBackground2: #0b5a08; + --colorPaletteLightGreenBackground3: #13a10e; + --colorPaletteLightGreenForeground1: #5ec75a; + --colorPaletteLightGreenForeground2: #a7e3a5; + --colorPaletteLightGreenForeground3: #3db838; + --colorPaletteLightGreenBorderActive: #5ec75a; + --colorPaletteLightGreenBorder1: #13a10e; + --colorPaletteLightGreenBorder2: #3db838; + --colorPaletteMarigoldBackground1: #463100; + --colorPaletteMarigoldBackground2: #835b00; + --colorPaletteMarigoldBackground3: #eaa300; + --colorPaletteMarigoldForeground1: #f2c661; + --colorPaletteMarigoldForeground2: #f9e2ae; + --colorPaletteMarigoldForeground3: #efb839; + --colorPaletteMarigoldBorderActive: #f2c661; + --colorPaletteMarigoldBorder1: #eaa300; + --colorPaletteMarigoldBorder2: #efb839; + --colorPaletteRedForegroundInverted: #d13438; + --colorPaletteGreenForegroundInverted: #107c10; + --colorPaletteYellowForegroundInverted: #817400; + --colorPaletteDarkRedBackground2: #590815; + --colorPaletteDarkRedForeground2: #d69ca5; + --colorPaletteDarkRedBorderActive: #ac4f5e; + --colorPaletteCranberryBackground2: #6e0811; + --colorPaletteCranberryForeground2: #eeacb2; + --colorPaletteCranberryBorderActive: #dc626d; + --colorPalettePumpkinBackground2: #712d09; + --colorPalettePumpkinForeground2: #efc4ad; + --colorPalettePumpkinBorderActive: #df8e64; + --colorPalettePeachBackground2: #8f4e00; + --colorPalettePeachForeground2: #ffddb3; + --colorPalettePeachBorderActive: #ffba66; + --colorPaletteGoldBackground2: #6c5700; + --colorPaletteGoldForeground2: #ecdfa5; + --colorPaletteGoldBorderActive: #dac157; + --colorPaletteBrassBackground2: #553e06; + --colorPaletteBrassForeground2: #e0cea2; + --colorPaletteBrassBorderActive: #c1a256; + --colorPaletteBrownBackground2: #50301a; + --colorPaletteBrownForeground2: #ddc3b0; + --colorPaletteBrownBorderActive: #bb8f6f; + --colorPaletteForestBackground2: #294903; + --colorPaletteForestForeground2: #bdd99b; + --colorPaletteForestBorderActive: #85b44c; + --colorPaletteSeafoamBackground2: #00723b; + --colorPaletteSeafoamForeground2: #a8f0cd; + --colorPaletteSeafoamBorderActive: #5ae0a0; + --colorPaletteDarkGreenBackground2: #063b06; + --colorPaletteDarkGreenForeground2: #9ad29a; + --colorPaletteDarkGreenBorderActive: #4da64d; + --colorPaletteLightTealBackground2: #00666d; + --colorPaletteLightTealForeground2: #a6e9ed; + --colorPaletteLightTealBorderActive: #58d3db; + --colorPaletteTealBackground2: #02494c; + --colorPaletteTealForeground2: #9bd9db; + --colorPaletteTealBorderActive: #4cb4b7; + --colorPaletteSteelBackground2: #00333f; + --colorPaletteSteelForeground2: #94c8d4; + --colorPaletteSteelBorderActive: #4496a9; + --colorPaletteBlueBackground2: #004377; + --colorPaletteBlueForeground2: #a9d3f2; + --colorPaletteBlueBorderActive: #5caae5; + --colorPaletteRoyalBlueBackground2: #002c4e; + --colorPaletteRoyalBlueForeground2: #9abfdc; + --colorPaletteRoyalBlueBorderActive: #4a89ba; + --colorPaletteCornflowerBackground2: #2c3c85; + --colorPaletteCornflowerForeground2: #c8d1fa; + --colorPaletteCornflowerBorderActive: #93a4f4; + --colorPaletteNavyBackground2: #001665; + --colorPaletteNavyForeground2: #a3b2e8; + --colorPaletteNavyBorderActive: #546fd2; + --colorPaletteLavenderBackground2: #3f3682; + --colorPaletteLavenderForeground2: #d2ccf8; + --colorPaletteLavenderBorderActive: #a79cf1; + --colorPalettePurpleBackground2: #341a51; + --colorPalettePurpleForeground2: #c6b1de; + --colorPalettePurpleBorderActive: #9470bd; + --colorPaletteGrapeBackground2: #4c0d55; + --colorPaletteGrapeForeground2: #d9a7e0; + --colorPaletteGrapeBorderActive: #b55fc1; + --colorPaletteLilacBackground2: #63276d; + --colorPaletteLilacForeground2: #e6bfed; + --colorPaletteLilacBorderActive: #cf87da; + --colorPalettePinkBackground2: #80215d; + --colorPalettePinkForeground2: #f7c0e3; + --colorPalettePinkBorderActive: #ef85c8; + --colorPaletteMagentaBackground2: #6b0043; + --colorPaletteMagentaForeground2: #eca5d1; + --colorPaletteMagentaBorderActive: #d957a8; + --colorPalettePlumBackground2: #5a003b; + --colorPalettePlumForeground2: #d696c0; + --colorPalettePlumBorderActive: #ad4589; + --colorPaletteBeigeBackground2: #444241; + --colorPaletteBeigeForeground2: #d7d4d4; + --colorPaletteBeigeBorderActive: #afabaa; + --colorPaletteMinkBackground2: #343231; + --colorPaletteMinkForeground2: #cecccb; + --colorPaletteMinkBorderActive: #9e9b99; + --colorPalettePlatinumBackground2: #3b4447; + --colorPalettePlatinumForeground2: #cdd6d8; + --colorPalettePlatinumBorderActive: #a0adb2; + --colorPaletteAnchorBackground2: #202427; + --colorPaletteAnchorForeground2: #bcc3c7; + --colorPaletteAnchorBorderActive: #808a90; + --colorStatusSuccessBackground1: #052505; + --colorStatusSuccessBackground2: #094509; + --colorStatusSuccessBackground3: #107c10; + --colorStatusSuccessForeground1: #54b054; + --colorStatusSuccessForeground2: #9fd89f; + --colorStatusSuccessForeground3: #9fd89f; + --colorStatusSuccessForegroundInverted: #0e700e; + --colorStatusSuccessBorderActive: #54b054; + --colorStatusSuccessBorder1: #107c10; + --colorStatusSuccessBorder2: #9fd89f; + --colorStatusWarningBackground1: #4a1e04; + --colorStatusWarningBackground2: #8a3707; + --colorStatusWarningBackground3: #f7630c; + --colorStatusWarningForeground1: #faa06b; + --colorStatusWarningForeground2: #fdcfb4; + --colorStatusWarningForeground3: #f98845; + --colorStatusWarningForegroundInverted: #bc4b09; + --colorStatusWarningBorderActive: #faa06b; + --colorStatusWarningBorder1: #f7630c; + --colorStatusWarningBorder2: #f98845; + --colorStatusDangerBackground1: #3b0509; + --colorStatusDangerBackground2: #6e0811; + --colorStatusDangerBackground3: #c50f1f; + --colorStatusDangerForeground1: #dc626d; + --colorStatusDangerForeground2: #eeacb2; + --colorStatusDangerForeground3: #eeacb2; + --colorStatusDangerForegroundInverted: #b10e1c; + --colorStatusDangerBorderActive: #dc626d; + --colorStatusDangerBorder1: #c50f1f; + --colorStatusDangerBorder2: #dc626d; + --colorStatusDangerBackground3Hover: #b10e1c; + --colorStatusDangerBackground3Pressed: #960b18; +} +.TeamsLight { + --colorNeutralForeground1: #242424; + --colorNeutralForeground1Hover: #242424; + --colorNeutralForeground1Pressed: #242424; + --colorNeutralForeground1Selected: #242424; + --colorNeutralForeground2: #424242; + --colorNeutralForeground2Hover: #242424; + --colorNeutralForeground2Pressed: #242424; + --colorNeutralForeground2Selected: #242424; + --colorNeutralForeground2BrandHover: #5b5fc7; + --colorNeutralForeground2BrandPressed: #4f52b2; + --colorNeutralForeground2BrandSelected: #5b5fc7; + --colorNeutralForeground3: #616161; + --colorNeutralForeground3Hover: #424242; + --colorNeutralForeground3Pressed: #424242; + --colorNeutralForeground3Selected: #424242; + --colorNeutralForeground3BrandHover: #5b5fc7; + --colorNeutralForeground3BrandPressed: #4f52b2; + --colorNeutralForeground3BrandSelected: #5b5fc7; + --colorNeutralForeground4: #707070; + --colorNeutralForeground5: #616161; + --colorNeutralForeground5Hover: #242424; + --colorNeutralForeground5Pressed: #242424; + --colorNeutralForeground5Selected: #242424; + --colorNeutralForegroundDisabled: #bdbdbd; + --colorNeutralForegroundInvertedDisabled: rgba(255, 255, 255, 0.4); + --colorBrandForegroundLink: #4f52b2; + --colorBrandForegroundLinkHover: #444791; + --colorBrandForegroundLinkPressed: #383966; + --colorBrandForegroundLinkSelected: #4f52b2; + --colorNeutralForeground2Link: #424242; + --colorNeutralForeground2LinkHover: #242424; + --colorNeutralForeground2LinkPressed: #242424; + --colorNeutralForeground2LinkSelected: #242424; + --colorCompoundBrandForeground1: #5b5fc7; + --colorCompoundBrandForeground1Hover: #4f52b2; + --colorCompoundBrandForeground1Pressed: #444791; + --colorBrandForeground1: #5b5fc7; + --colorBrandForeground2: #4f52b2; + --colorBrandForeground2Hover: #444791; + --colorBrandForeground2Pressed: #333357; + --colorNeutralForeground1Static: #242424; + --colorNeutralForegroundStaticInverted: #ffffff; + --colorNeutralForegroundInverted: #ffffff; + --colorNeutralForegroundInvertedHover: #ffffff; + --colorNeutralForegroundInvertedPressed: #ffffff; + --colorNeutralForegroundInvertedSelected: #ffffff; + --colorNeutralForegroundInverted2: #ffffff; + --colorNeutralForegroundOnBrand: #ffffff; + --colorNeutralForegroundInvertedLink: #ffffff; + --colorNeutralForegroundInvertedLinkHover: #ffffff; + --colorNeutralForegroundInvertedLinkPressed: #ffffff; + --colorNeutralForegroundInvertedLinkSelected: #ffffff; + --colorBrandForegroundInverted: #7f85f5; + --colorBrandForegroundInvertedHover: #9299f7; + --colorBrandForegroundInvertedPressed: #7f85f5; + --colorBrandForegroundOnLight: #5b5fc7; + --colorBrandForegroundOnLightHover: #4f52b2; + --colorBrandForegroundOnLightPressed: #3d3e78; + --colorBrandForegroundOnLightSelected: #444791; + --colorNeutralBackground1: #ffffff; + --colorNeutralBackground1Hover: #f5f5f5; + --colorNeutralBackground1Pressed: #e0e0e0; + --colorNeutralBackground1Selected: #ebebeb; + --colorNeutralBackground2: #fafafa; + --colorNeutralBackground2Hover: #f0f0f0; + --colorNeutralBackground2Pressed: #dbdbdb; + --colorNeutralBackground2Selected: #e6e6e6; + --colorNeutralBackground3: #f5f5f5; + --colorNeutralBackground3Hover: #ebebeb; + --colorNeutralBackground3Pressed: #d6d6d6; + --colorNeutralBackground3Selected: #e0e0e0; + --colorNeutralBackground4: #f0f0f0; + --colorNeutralBackground4Hover: #fafafa; + --colorNeutralBackground4Pressed: #f5f5f5; + --colorNeutralBackground4Selected: #ffffff; + --colorNeutralBackground5: #ebebeb; + --colorNeutralBackground5Hover: #f5f5f5; + --colorNeutralBackground5Pressed: #f0f0f0; + --colorNeutralBackground5Selected: #fafafa; + --colorNeutralBackground6: #e6e6e6; + --colorNeutralBackground7: #00000000; + --colorNeutralBackground7Hover: #ebebeb; + --colorNeutralBackground7Pressed: #d6d6d6; + --colorNeutralBackground7Selected: #00000000; + --colorNeutralBackground8: #fcfcfc; + --colorNeutralBackgroundInverted: #292929; + --colorNeutralBackgroundInvertedHover: #3d3d3d; + --colorNeutralBackgroundInvertedPressed: #1f1f1f; + --colorNeutralBackgroundInvertedSelected: #383838; + --colorNeutralBackgroundStatic: #333333; + --colorNeutralBackgroundAlpha: rgba(255, 255, 255, 0.5); + --colorNeutralBackgroundAlpha2: rgba(255, 255, 255, 0.8); + --colorSubtleBackground: transparent; + --colorSubtleBackgroundHover: #f5f5f5; + --colorSubtleBackgroundPressed: #e0e0e0; + --colorSubtleBackgroundSelected: #ebebeb; + --colorSubtleBackgroundLightAlphaHover: rgba(255, 255, 255, 0.7); + --colorSubtleBackgroundLightAlphaPressed: rgba(255, 255, 255, 0.5); + --colorSubtleBackgroundLightAlphaSelected: transparent; + --colorSubtleBackgroundInverted: transparent; + --colorSubtleBackgroundInvertedHover: rgba(0, 0, 0, 0.1); + --colorSubtleBackgroundInvertedPressed: rgba(0, 0, 0, 0.3); + --colorSubtleBackgroundInvertedSelected: rgba(0, 0, 0, 0.2); + --colorTransparentBackground: transparent; + --colorTransparentBackgroundHover: transparent; + --colorTransparentBackgroundPressed: transparent; + --colorTransparentBackgroundSelected: transparent; + --colorNeutralBackgroundDisabled: #f0f0f0; + --colorNeutralBackgroundDisabled2: #ffffff; + --colorNeutralBackgroundInvertedDisabled: rgba(255, 255, 255, 0.1); + --colorNeutralStencil1: #e6e6e6; + --colorNeutralStencil2: #fafafa; + --colorNeutralStencil1Alpha: rgba(0, 0, 0, 0.1); + --colorNeutralStencil2Alpha: rgba(0, 0, 0, 0.05); + --colorBackgroundOverlay: rgba(0, 0, 0, 0.4); + --colorScrollbarOverlay: rgba(0, 0, 0, 0.5); + --colorBrandBackground: #5b5fc7; + --colorBrandBackgroundHover: #4f52b2; + --colorBrandBackgroundPressed: #383966; + --colorBrandBackgroundSelected: #444791; + --colorCompoundBrandBackground: #5b5fc7; + --colorCompoundBrandBackgroundHover: #4f52b2; + --colorCompoundBrandBackgroundPressed: #444791; + --colorBrandBackgroundStatic: #5b5fc7; + --colorBrandBackground2: #e8ebfa; + --colorBrandBackground2Hover: #dce0fa; + --colorBrandBackground2Pressed: #b6bcfa; + --colorBrandBackground3Static: #444791; + --colorBrandBackground4Static: #383966; + --colorBrandBackgroundInverted: #ffffff; + --colorBrandBackgroundInvertedHover: #ebf3fc; + --colorBrandBackgroundInvertedPressed: #b4d6fa; + --colorBrandBackgroundInvertedSelected: #cfe4fa; + --colorNeutralCardBackground: #fafafa; + --colorNeutralCardBackgroundHover: #ffffff; + --colorNeutralCardBackgroundPressed: #f5f5f5; + --colorNeutralCardBackgroundSelected: #ebebeb; + --colorNeutralCardBackgroundDisabled: #f0f0f0; + --colorNeutralStrokeAccessible: #616161; + --colorNeutralStrokeAccessibleHover: #575757; + --colorNeutralStrokeAccessiblePressed: #4d4d4d; + --colorNeutralStrokeAccessibleSelected: #5b5fc7; + --colorNeutralStroke1: #d1d1d1; + --colorNeutralStroke1Hover: #c7c7c7; + --colorNeutralStroke1Pressed: #b3b3b3; + --colorNeutralStroke1Selected: #bdbdbd; + --colorNeutralStroke2: #e0e0e0; + --colorNeutralStroke3: #f0f0f0; + --colorNeutralStroke4: #ebebeb; + --colorNeutralStroke4Hover: #e0e0e0; + --colorNeutralStroke4Pressed: #d6d6d6; + --colorNeutralStroke4Selected: #ebebeb; + --colorNeutralStrokeSubtle: #e0e0e0; + --colorNeutralStrokeOnBrand: #ffffff; + --colorNeutralStrokeOnBrand2: #ffffff; + --colorNeutralStrokeOnBrand2Hover: #ffffff; + --colorNeutralStrokeOnBrand2Pressed: #ffffff; + --colorNeutralStrokeOnBrand2Selected: #ffffff; + --colorBrandStroke1: #5b5fc7; + --colorBrandStroke2: #c5cbfa; + --colorBrandStroke2Hover: #aab1fa; + --colorBrandStroke2Pressed: #5b5fc7; + --colorBrandStroke2Contrast: #c5cbfa; + --colorCompoundBrandStroke: #5b5fc7; + --colorCompoundBrandStrokeHover: #4f52b2; + --colorCompoundBrandStrokePressed: #444791; + --colorNeutralStrokeDisabled: #e0e0e0; + --colorNeutralStrokeDisabled2: #ebebeb; + --colorNeutralStrokeInvertedDisabled: rgba(255, 255, 255, 0.4); + --colorTransparentStroke: transparent; + --colorTransparentStrokeInteractive: transparent; + --colorTransparentStrokeDisabled: transparent; + --colorNeutralStrokeAlpha: rgba(0, 0, 0, 0.05); + --colorNeutralStrokeAlpha2: rgba(255, 255, 255, 0.2); + --colorStrokeFocus1: #ffffff; + --colorStrokeFocus2: #000000; + --colorNeutralShadowAmbient: rgba(0, 0, 0, 0.12); + --colorNeutralShadowKey: rgba(0, 0, 0, 0.14); + --colorNeutralShadowAmbientLighter: rgba(0, 0, 0, 0.06); + --colorNeutralShadowKeyLighter: rgba(0, 0, 0, 0.07); + --colorNeutralShadowAmbientDarker: rgba(0, 0, 0, 0.2); + --colorNeutralShadowKeyDarker: rgba(0, 0, 0, 0.24); + --colorBrandShadowAmbient: rgba(0, 0, 0, 0.3); + --colorBrandShadowKey: rgba(0, 0, 0, 0.25); + --colorPaletteRedBackground1: #fdf6f6; + --colorPaletteRedBackground2: #f1bbbc; + --colorPaletteRedBackground3: #d13438; + --colorPaletteRedForeground1: #bc2f32; + --colorPaletteRedForeground2: #751d1f; + --colorPaletteRedForeground3: #d13438; + --colorPaletteRedBorderActive: #d13438; + --colorPaletteRedBorder1: #f1bbbc; + --colorPaletteRedBorder2: #d13438; + --colorPaletteGreenBackground1: #f1faf1; + --colorPaletteGreenBackground2: #9fd89f; + --colorPaletteGreenBackground3: #107c10; + --colorPaletteGreenForeground1: #0e700e; + --colorPaletteGreenForeground2: #094509; + --colorPaletteGreenForeground3: #107c10; + --colorPaletteGreenBorderActive: #107c10; + --colorPaletteGreenBorder1: #9fd89f; + --colorPaletteGreenBorder2: #107c10; + --colorPaletteDarkOrangeBackground1: #fdf6f3; + --colorPaletteDarkOrangeBackground2: #f4bfab; + --colorPaletteDarkOrangeBackground3: #da3b01; + --colorPaletteDarkOrangeForeground1: #c43501; + --colorPaletteDarkOrangeForeground2: #7a2101; + --colorPaletteDarkOrangeForeground3: #da3b01; + --colorPaletteDarkOrangeBorderActive: #da3b01; + --colorPaletteDarkOrangeBorder1: #f4bfab; + --colorPaletteDarkOrangeBorder2: #da3b01; + --colorPaletteYellowBackground1: #fffef5; + --colorPaletteYellowBackground2: #fef7b2; + --colorPaletteYellowBackground3: #fde300; + --colorPaletteYellowForeground1: #817400; + --colorPaletteYellowForeground2: #817400; + --colorPaletteYellowForeground3: #fde300; + --colorPaletteYellowBorderActive: #fde300; + --colorPaletteYellowBorder1: #fef7b2; + --colorPaletteYellowBorder2: #fde300; + --colorPaletteBerryBackground1: #fdf5fc; + --colorPaletteBerryBackground2: #edbbe7; + --colorPaletteBerryBackground3: #c239b3; + --colorPaletteBerryForeground1: #af33a1; + --colorPaletteBerryForeground2: #6d2064; + --colorPaletteBerryForeground3: #c239b3; + --colorPaletteBerryBorderActive: #c239b3; + --colorPaletteBerryBorder1: #edbbe7; + --colorPaletteBerryBorder2: #c239b3; + --colorPaletteLightGreenBackground1: #f2fbf2; + --colorPaletteLightGreenBackground2: #a7e3a5; + --colorPaletteLightGreenBackground3: #13a10e; + --colorPaletteLightGreenForeground1: #11910d; + --colorPaletteLightGreenForeground2: #0b5a08; + --colorPaletteLightGreenForeground3: #13a10e; + --colorPaletteLightGreenBorderActive: #13a10e; + --colorPaletteLightGreenBorder1: #a7e3a5; + --colorPaletteLightGreenBorder2: #13a10e; + --colorPaletteMarigoldBackground1: #fefbf4; + --colorPaletteMarigoldBackground2: #f9e2ae; + --colorPaletteMarigoldBackground3: #eaa300; + --colorPaletteMarigoldForeground1: #d39300; + --colorPaletteMarigoldForeground2: #835b00; + --colorPaletteMarigoldForeground3: #eaa300; + --colorPaletteMarigoldBorderActive: #eaa300; + --colorPaletteMarigoldBorder1: #f9e2ae; + --colorPaletteMarigoldBorder2: #eaa300; + --colorPaletteRedForegroundInverted: #dc5e62; + --colorPaletteGreenForegroundInverted: #359b35; + --colorPaletteYellowForegroundInverted: #fef7b2; + --colorPaletteDarkRedBackground2: #d69ca5; + --colorPaletteDarkRedForeground2: #420610; + --colorPaletteDarkRedBorderActive: #750b1c; + --colorPaletteCranberryBackground2: #eeacb2; + --colorPaletteCranberryForeground2: #6e0811; + --colorPaletteCranberryBorderActive: #c50f1f; + --colorPalettePumpkinBackground2: #efc4ad; + --colorPalettePumpkinForeground2: #712d09; + --colorPalettePumpkinBorderActive: #ca5010; + --colorPalettePeachBackground2: #ffddb3; + --colorPalettePeachForeground2: #8f4e00; + --colorPalettePeachBorderActive: #ff8c00; + --colorPaletteGoldBackground2: #ecdfa5; + --colorPaletteGoldForeground2: #6c5700; + --colorPaletteGoldBorderActive: #c19c00; + --colorPaletteBrassBackground2: #e0cea2; + --colorPaletteBrassForeground2: #553e06; + --colorPaletteBrassBorderActive: #986f0b; + --colorPaletteBrownBackground2: #ddc3b0; + --colorPaletteBrownForeground2: #50301a; + --colorPaletteBrownBorderActive: #8e562e; + --colorPaletteForestBackground2: #bdd99b; + --colorPaletteForestForeground2: #294903; + --colorPaletteForestBorderActive: #498205; + --colorPaletteSeafoamBackground2: #a8f0cd; + --colorPaletteSeafoamForeground2: #00723b; + --colorPaletteSeafoamBorderActive: #00cc6a; + --colorPaletteDarkGreenBackground2: #9ad29a; + --colorPaletteDarkGreenForeground2: #063b06; + --colorPaletteDarkGreenBorderActive: #0b6a0b; + --colorPaletteLightTealBackground2: #a6e9ed; + --colorPaletteLightTealForeground2: #00666d; + --colorPaletteLightTealBorderActive: #00b7c3; + --colorPaletteTealBackground2: #9bd9db; + --colorPaletteTealForeground2: #02494c; + --colorPaletteTealBorderActive: #038387; + --colorPaletteSteelBackground2: #94c8d4; + --colorPaletteSteelForeground2: #00333f; + --colorPaletteSteelBorderActive: #005b70; + --colorPaletteBlueBackground2: #a9d3f2; + --colorPaletteBlueForeground2: #004377; + --colorPaletteBlueBorderActive: #0078d4; + --colorPaletteRoyalBlueBackground2: #9abfdc; + --colorPaletteRoyalBlueForeground2: #002c4e; + --colorPaletteRoyalBlueBorderActive: #004e8c; + --colorPaletteCornflowerBackground2: #c8d1fa; + --colorPaletteCornflowerForeground2: #2c3c85; + --colorPaletteCornflowerBorderActive: #4f6bed; + --colorPaletteNavyBackground2: #a3b2e8; + --colorPaletteNavyForeground2: #001665; + --colorPaletteNavyBorderActive: #0027b4; + --colorPaletteLavenderBackground2: #d2ccf8; + --colorPaletteLavenderForeground2: #3f3682; + --colorPaletteLavenderBorderActive: #7160e8; + --colorPalettePurpleBackground2: #c6b1de; + --colorPalettePurpleForeground2: #341a51; + --colorPalettePurpleBorderActive: #5c2e91; + --colorPaletteGrapeBackground2: #d9a7e0; + --colorPaletteGrapeForeground2: #4c0d55; + --colorPaletteGrapeBorderActive: #881798; + --colorPaletteLilacBackground2: #e6bfed; + --colorPaletteLilacForeground2: #63276d; + --colorPaletteLilacBorderActive: #b146c2; + --colorPalettePinkBackground2: #f7c0e3; + --colorPalettePinkForeground2: #80215d; + --colorPalettePinkBorderActive: #e43ba6; + --colorPaletteMagentaBackground2: #eca5d1; + --colorPaletteMagentaForeground2: #6b0043; + --colorPaletteMagentaBorderActive: #bf0077; + --colorPalettePlumBackground2: #d696c0; + --colorPalettePlumForeground2: #43002b; + --colorPalettePlumBorderActive: #77004d; + --colorPaletteBeigeBackground2: #d7d4d4; + --colorPaletteBeigeForeground2: #444241; + --colorPaletteBeigeBorderActive: #7a7574; + --colorPaletteMinkBackground2: #cecccb; + --colorPaletteMinkForeground2: #343231; + --colorPaletteMinkBorderActive: #5d5a58; + --colorPalettePlatinumBackground2: #cdd6d8; + --colorPalettePlatinumForeground2: #3b4447; + --colorPalettePlatinumBorderActive: #69797e; + --colorPaletteAnchorBackground2: #bcc3c7; + --colorPaletteAnchorForeground2: #202427; + --colorPaletteAnchorBorderActive: #394146; + --colorStatusSuccessBackground1: #f1faf1; + --colorStatusSuccessBackground2: #9fd89f; + --colorStatusSuccessBackground3: #107c10; + --colorStatusSuccessForeground1: #0e700e; + --colorStatusSuccessForeground2: #094509; + --colorStatusSuccessForeground3: #107c10; + --colorStatusSuccessForegroundInverted: #54b054; + --colorStatusSuccessBorderActive: #107c10; + --colorStatusSuccessBorder1: #9fd89f; + --colorStatusSuccessBorder2: #107c10; + --colorStatusWarningBackground1: #fff9f5; + --colorStatusWarningBackground2: #fdcfb4; + --colorStatusWarningBackground3: #f7630c; + --colorStatusWarningForeground1: #bc4b09; + --colorStatusWarningForeground2: #8a3707; + --colorStatusWarningForeground3: #bc4b09; + --colorStatusWarningForegroundInverted: #faa06b; + --colorStatusWarningBorderActive: #f7630c; + --colorStatusWarningBorder1: #fdcfb4; + --colorStatusWarningBorder2: #bc4b09; + --colorStatusDangerBackground1: #fdf3f4; + --colorStatusDangerBackground2: #eeacb2; + --colorStatusDangerBackground3: #c50f1f; + --colorStatusDangerForeground1: #b10e1c; + --colorStatusDangerForeground2: #6e0811; + --colorStatusDangerForeground3: #c50f1f; + --colorStatusDangerForegroundInverted: #dc626d; + --colorStatusDangerBorderActive: #c50f1f; + --colorStatusDangerBorder1: #eeacb2; + --colorStatusDangerBorder2: #c50f1f; + --colorStatusDangerBackground3Hover: #b10e1c; + --colorStatusDangerBackground3Pressed: #960b18; +} +.TeamsDark { + --colorNeutralForeground1: #ffffff; + --colorNeutralForeground1Hover: #ffffff; + --colorNeutralForeground1Pressed: #ffffff; + --colorNeutralForeground1Selected: #ffffff; + --colorNeutralForeground2: #d6d6d6; + --colorNeutralForeground2Hover: #ffffff; + --colorNeutralForeground2Pressed: #ffffff; + --colorNeutralForeground2Selected: #ffffff; + --colorNeutralForeground2BrandHover: #7f85f5; + --colorNeutralForeground2BrandPressed: #7579eb; + --colorNeutralForeground2BrandSelected: #7f85f5; + --colorNeutralForeground3: #adadad; + --colorNeutralForeground3Hover: #d6d6d6; + --colorNeutralForeground3Pressed: #d6d6d6; + --colorNeutralForeground3Selected: #d6d6d6; + --colorNeutralForeground3BrandHover: #7f85f5; + --colorNeutralForeground3BrandPressed: #7579eb; + --colorNeutralForeground3BrandSelected: #7f85f5; + --colorNeutralForeground4: #999999; + --colorNeutralForeground5: #adadad; + --colorNeutralForeground5Hover: #ffffff; + --colorNeutralForeground5Pressed: #ffffff; + --colorNeutralForeground5Selected: #ffffff; + --colorNeutralForegroundDisabled: #5c5c5c; + --colorNeutralForegroundInvertedDisabled: rgba(255, 255, 255, 0.4); + --colorBrandForegroundLink: #7f85f5; + --colorBrandForegroundLinkHover: #9299f7; + --colorBrandForegroundLinkPressed: #7579eb; + --colorBrandForegroundLinkSelected: #7f85f5; + --colorNeutralForeground2Link: #d6d6d6; + --colorNeutralForeground2LinkHover: #ffffff; + --colorNeutralForeground2LinkPressed: #ffffff; + --colorNeutralForeground2LinkSelected: #ffffff; + --colorCompoundBrandForeground1: #7f85f5; + --colorCompoundBrandForeground1Hover: #9299f7; + --colorCompoundBrandForeground1Pressed: #7579eb; + --colorBrandForeground1: #7f85f5; + --colorBrandForeground2: #aab1fa; + --colorBrandForeground2Hover: #b6bcfa; + --colorBrandForeground2Pressed: #e8ebfa; + --colorNeutralForeground1Static: #242424; + --colorNeutralForegroundStaticInverted: #ffffff; + --colorNeutralForegroundInverted: #242424; + --colorNeutralForegroundInvertedHover: #242424; + --colorNeutralForegroundInvertedPressed: #242424; + --colorNeutralForegroundInvertedSelected: #242424; + --colorNeutralForegroundInverted2: #242424; + --colorNeutralForegroundOnBrand: #ffffff; + --colorNeutralForegroundInvertedLink: #ffffff; + --colorNeutralForegroundInvertedLinkHover: #ffffff; + --colorNeutralForegroundInvertedLinkPressed: #ffffff; + --colorNeutralForegroundInvertedLinkSelected: #ffffff; + --colorBrandForegroundInverted: #5b5fc7; + --colorBrandForegroundInvertedHover: #4f52b2; + --colorBrandForegroundInvertedPressed: #444791; + --colorBrandForegroundOnLight: #5b5fc7; + --colorBrandForegroundOnLightHover: #4f52b2; + --colorBrandForegroundOnLightPressed: #3d3e78; + --colorBrandForegroundOnLightSelected: #444791; + --colorNeutralBackground1: #292929; + --colorNeutralBackground1Hover: #3d3d3d; + --colorNeutralBackground1Pressed: #1f1f1f; + --colorNeutralBackground1Selected: #383838; + --colorNeutralBackground2: #242424; + --colorNeutralBackground2Hover: #383838; + --colorNeutralBackground2Pressed: #1a1a1a; + --colorNeutralBackground2Selected: #333333; + --colorNeutralBackground3: #1f1f1f; + --colorNeutralBackground3Hover: #333333; + --colorNeutralBackground3Pressed: #141414; + --colorNeutralBackground3Selected: #2e2e2e; + --colorNeutralBackground4: #141414; + --colorNeutralBackground4Hover: #292929; + --colorNeutralBackground4Pressed: #0a0a0a; + --colorNeutralBackground4Selected: #242424; + --colorNeutralBackground5: #0a0a0a; + --colorNeutralBackground5Hover: #1f1f1f; + --colorNeutralBackground5Pressed: #000000; + --colorNeutralBackground5Selected: #1a1a1a; + --colorNeutralBackground6: #333333; + --colorNeutralBackground7: #00000000; + --colorNeutralBackground7Hover: #1a1a1a; + --colorNeutralBackground7Pressed: #0a0a0a; + --colorNeutralBackground7Selected: #00000000; + --colorNeutralBackground8: #292929; + --colorNeutralBackgroundInverted: #ffffff; + --colorNeutralBackgroundInvertedHover: #f5f5f5; + --colorNeutralBackgroundInvertedPressed: #e0e0e0; + --colorNeutralBackgroundInvertedSelected: #ebebeb; + --colorNeutralBackgroundStatic: #3d3d3d; + --colorNeutralBackgroundAlpha: rgba(26, 26, 26, 0.5); + --colorNeutralBackgroundAlpha2: rgba(31, 31, 31, 0.7); + --colorSubtleBackground: transparent; + --colorSubtleBackgroundHover: #383838; + --colorSubtleBackgroundPressed: #2e2e2e; + --colorSubtleBackgroundSelected: #333333; + --colorSubtleBackgroundLightAlphaHover: rgba(36, 36, 36, 0.8); + --colorSubtleBackgroundLightAlphaPressed: rgba(36, 36, 36, 0.5); + --colorSubtleBackgroundLightAlphaSelected: transparent; + --colorSubtleBackgroundInverted: transparent; + --colorSubtleBackgroundInvertedHover: rgba(0, 0, 0, 0.1); + --colorSubtleBackgroundInvertedPressed: rgba(0, 0, 0, 0.3); + --colorSubtleBackgroundInvertedSelected: rgba(0, 0, 0, 0.2); + --colorTransparentBackground: transparent; + --colorTransparentBackgroundHover: transparent; + --colorTransparentBackgroundPressed: transparent; + --colorTransparentBackgroundSelected: transparent; + --colorNeutralBackgroundDisabled: #141414; + --colorNeutralBackgroundDisabled2: #292929; + --colorNeutralBackgroundInvertedDisabled: rgba(255, 255, 255, 0.1); + --colorNeutralStencil1: #575757; + --colorNeutralStencil2: #333333; + --colorNeutralStencil1Alpha: rgba(255, 255, 255, 0.1); + --colorNeutralStencil2Alpha: rgba(255, 255, 255, 0.05); + --colorBackgroundOverlay: rgba(0, 0, 0, 0.5); + --colorScrollbarOverlay: rgba(255, 255, 255, 0.6); + --colorBrandBackground: #4f52b2; + --colorBrandBackgroundHover: #5b5fc7; + --colorBrandBackgroundPressed: #383966; + --colorBrandBackgroundSelected: #444791; + --colorCompoundBrandBackground: #7f85f5; + --colorCompoundBrandBackgroundHover: #9299f7; + --colorCompoundBrandBackgroundPressed: #7579eb; + --colorBrandBackgroundStatic: #5b5fc7; + --colorBrandBackground2: #2f2f4a; + --colorBrandBackground2Hover: #383966; + --colorBrandBackground2Pressed: #2b2b40; + --colorBrandBackground3Static: #444791; + --colorBrandBackground4Static: #383966; + --colorBrandBackgroundInverted: #ffffff; + --colorBrandBackgroundInvertedHover: #e8ebfa; + --colorBrandBackgroundInvertedPressed: #c5cbfa; + --colorBrandBackgroundInvertedSelected: #dce0fa; + --colorNeutralCardBackground: #333333; + --colorNeutralCardBackgroundHover: #3d3d3d; + --colorNeutralCardBackgroundPressed: #2e2e2e; + --colorNeutralCardBackgroundSelected: #383838; + --colorNeutralCardBackgroundDisabled: #141414; + --colorNeutralStrokeAccessible: #adadad; + --colorNeutralStrokeAccessibleHover: #bdbdbd; + --colorNeutralStrokeAccessiblePressed: #b3b3b3; + --colorNeutralStrokeAccessibleSelected: #7f85f5; + --colorNeutralStroke1: #666666; + --colorNeutralStroke1Hover: #757575; + --colorNeutralStroke1Pressed: #6b6b6b; + --colorNeutralStroke1Selected: #707070; + --colorNeutralStroke2: #525252; + --colorNeutralStroke3: #3d3d3d; + --colorNeutralStroke4: #3d3d3d; + --colorNeutralStroke4Hover: #2e2e2e; + --colorNeutralStroke4Pressed: #242424; + --colorNeutralStroke4Selected: #3d3d3d; + --colorNeutralStrokeSubtle: #0a0a0a; + --colorNeutralStrokeOnBrand: #292929; + --colorNeutralStrokeOnBrand2: #ffffff; + --colorNeutralStrokeOnBrand2Hover: #ffffff; + --colorNeutralStrokeOnBrand2Pressed: #ffffff; + --colorNeutralStrokeOnBrand2Selected: #ffffff; + --colorBrandStroke1: #7f85f5; + --colorBrandStroke2: #3d3e78; + --colorBrandStroke2Hover: #3d3e78; + --colorBrandStroke2Pressed: #333357; + --colorBrandStroke2Contrast: #3d3e78; + --colorCompoundBrandStroke: #7f85f5; + --colorCompoundBrandStrokeHover: #9299f7; + --colorCompoundBrandStrokePressed: #7579eb; + --colorNeutralStrokeDisabled: #424242; + --colorNeutralStrokeDisabled2: #3d3d3d; + --colorNeutralStrokeInvertedDisabled: rgba(255, 255, 255, 0.4); + --colorTransparentStroke: transparent; + --colorTransparentStrokeInteractive: transparent; + --colorTransparentStrokeDisabled: transparent; + --colorNeutralStrokeAlpha: rgba(255, 255, 255, 0.1); + --colorNeutralStrokeAlpha2: rgba(255, 255, 255, 0.2); + --colorStrokeFocus1: #000000; + --colorStrokeFocus2: #ffffff; + --colorNeutralShadowAmbient: rgba(0, 0, 0, 0.24); + --colorNeutralShadowKey: rgba(0, 0, 0, 0.28); + --colorNeutralShadowAmbientLighter: rgba(0, 0, 0, 0.12); + --colorNeutralShadowKeyLighter: rgba(0, 0, 0, 0.14); + --colorNeutralShadowAmbientDarker: rgba(0, 0, 0, 0.4); + --colorNeutralShadowKeyDarker: rgba(0, 0, 0, 0.48); + --colorBrandShadowAmbient: rgba(0, 0, 0, 0.3); + --colorBrandShadowKey: rgba(0, 0, 0, 0.25); + --colorPaletteRedBackground1: #3f1011; + --colorPaletteRedBackground2: #751d1f; + --colorPaletteRedBackground3: #d13438; + --colorPaletteRedForeground1: #e37d80; + --colorPaletteRedForeground2: #f1bbbc; + --colorPaletteRedForeground3: #e37d80; + --colorPaletteRedBorderActive: #e37d80; + --colorPaletteRedBorder1: #d13438; + --colorPaletteRedBorder2: #e37d80; + --colorPaletteGreenBackground1: #052505; + --colorPaletteGreenBackground2: #094509; + --colorPaletteGreenBackground3: #107c10; + --colorPaletteGreenForeground1: #54b054; + --colorPaletteGreenForeground2: #9fd89f; + --colorPaletteGreenForeground3: #9fd89f; + --colorPaletteGreenBorderActive: #54b054; + --colorPaletteGreenBorder1: #107c10; + --colorPaletteGreenBorder2: #9fd89f; + --colorPaletteDarkOrangeBackground1: #411200; + --colorPaletteDarkOrangeBackground2: #7a2101; + --colorPaletteDarkOrangeBackground3: #da3b01; + --colorPaletteDarkOrangeForeground1: #e9835e; + --colorPaletteDarkOrangeForeground2: #f4bfab; + --colorPaletteDarkOrangeForeground3: #e9835e; + --colorPaletteDarkOrangeBorderActive: #e9835e; + --colorPaletteDarkOrangeBorder1: #da3b01; + --colorPaletteDarkOrangeBorder2: #e9835e; + --colorPaletteYellowBackground1: #4c4400; + --colorPaletteYellowBackground2: #817400; + --colorPaletteYellowBackground3: #fde300; + --colorPaletteYellowForeground1: #feee66; + --colorPaletteYellowForeground2: #fef7b2; + --colorPaletteYellowForeground3: #fdea3d; + --colorPaletteYellowBorderActive: #feee66; + --colorPaletteYellowBorder1: #fde300; + --colorPaletteYellowBorder2: #fdea3d; + --colorPaletteBerryBackground1: #3a1136; + --colorPaletteBerryBackground2: #6d2064; + --colorPaletteBerryBackground3: #c239b3; + --colorPaletteBerryForeground1: #da7ed0; + --colorPaletteBerryForeground2: #edbbe7; + --colorPaletteBerryForeground3: #d161c4; + --colorPaletteBerryBorderActive: #da7ed0; + --colorPaletteBerryBorder1: #c239b3; + --colorPaletteBerryBorder2: #d161c4; + --colorPaletteLightGreenBackground1: #063004; + --colorPaletteLightGreenBackground2: #0b5a08; + --colorPaletteLightGreenBackground3: #13a10e; + --colorPaletteLightGreenForeground1: #5ec75a; + --colorPaletteLightGreenForeground2: #a7e3a5; + --colorPaletteLightGreenForeground3: #3db838; + --colorPaletteLightGreenBorderActive: #5ec75a; + --colorPaletteLightGreenBorder1: #13a10e; + --colorPaletteLightGreenBorder2: #3db838; + --colorPaletteMarigoldBackground1: #463100; + --colorPaletteMarigoldBackground2: #835b00; + --colorPaletteMarigoldBackground3: #eaa300; + --colorPaletteMarigoldForeground1: #f2c661; + --colorPaletteMarigoldForeground2: #f9e2ae; + --colorPaletteMarigoldForeground3: #efb839; + --colorPaletteMarigoldBorderActive: #f2c661; + --colorPaletteMarigoldBorder1: #eaa300; + --colorPaletteMarigoldBorder2: #efb839; + --colorPaletteRedForegroundInverted: #d13438; + --colorPaletteGreenForegroundInverted: #107c10; + --colorPaletteYellowForegroundInverted: #817400; + --colorPaletteDarkRedBackground2: #590815; + --colorPaletteDarkRedForeground2: #d69ca5; + --colorPaletteDarkRedBorderActive: #ac4f5e; + --colorPaletteCranberryBackground2: #6e0811; + --colorPaletteCranberryForeground2: #eeacb2; + --colorPaletteCranberryBorderActive: #dc626d; + --colorPalettePumpkinBackground2: #712d09; + --colorPalettePumpkinForeground2: #efc4ad; + --colorPalettePumpkinBorderActive: #df8e64; + --colorPalettePeachBackground2: #8f4e00; + --colorPalettePeachForeground2: #ffddb3; + --colorPalettePeachBorderActive: #ffba66; + --colorPaletteGoldBackground2: #6c5700; + --colorPaletteGoldForeground2: #ecdfa5; + --colorPaletteGoldBorderActive: #dac157; + --colorPaletteBrassBackground2: #553e06; + --colorPaletteBrassForeground2: #e0cea2; + --colorPaletteBrassBorderActive: #c1a256; + --colorPaletteBrownBackground2: #50301a; + --colorPaletteBrownForeground2: #ddc3b0; + --colorPaletteBrownBorderActive: #bb8f6f; + --colorPaletteForestBackground2: #294903; + --colorPaletteForestForeground2: #bdd99b; + --colorPaletteForestBorderActive: #85b44c; + --colorPaletteSeafoamBackground2: #00723b; + --colorPaletteSeafoamForeground2: #a8f0cd; + --colorPaletteSeafoamBorderActive: #5ae0a0; + --colorPaletteDarkGreenBackground2: #063b06; + --colorPaletteDarkGreenForeground2: #9ad29a; + --colorPaletteDarkGreenBorderActive: #4da64d; + --colorPaletteLightTealBackground2: #00666d; + --colorPaletteLightTealForeground2: #a6e9ed; + --colorPaletteLightTealBorderActive: #58d3db; + --colorPaletteTealBackground2: #02494c; + --colorPaletteTealForeground2: #9bd9db; + --colorPaletteTealBorderActive: #4cb4b7; + --colorPaletteSteelBackground2: #00333f; + --colorPaletteSteelForeground2: #94c8d4; + --colorPaletteSteelBorderActive: #4496a9; + --colorPaletteBlueBackground2: #004377; + --colorPaletteBlueForeground2: #a9d3f2; + --colorPaletteBlueBorderActive: #5caae5; + --colorPaletteRoyalBlueBackground2: #002c4e; + --colorPaletteRoyalBlueForeground2: #9abfdc; + --colorPaletteRoyalBlueBorderActive: #4a89ba; + --colorPaletteCornflowerBackground2: #2c3c85; + --colorPaletteCornflowerForeground2: #c8d1fa; + --colorPaletteCornflowerBorderActive: #93a4f4; + --colorPaletteNavyBackground2: #001665; + --colorPaletteNavyForeground2: #a3b2e8; + --colorPaletteNavyBorderActive: #546fd2; + --colorPaletteLavenderBackground2: #3f3682; + --colorPaletteLavenderForeground2: #d2ccf8; + --colorPaletteLavenderBorderActive: #a79cf1; + --colorPalettePurpleBackground2: #341a51; + --colorPalettePurpleForeground2: #c6b1de; + --colorPalettePurpleBorderActive: #9470bd; + --colorPaletteGrapeBackground2: #4c0d55; + --colorPaletteGrapeForeground2: #d9a7e0; + --colorPaletteGrapeBorderActive: #b55fc1; + --colorPaletteLilacBackground2: #63276d; + --colorPaletteLilacForeground2: #e6bfed; + --colorPaletteLilacBorderActive: #cf87da; + --colorPalettePinkBackground2: #80215d; + --colorPalettePinkForeground2: #f7c0e3; + --colorPalettePinkBorderActive: #ef85c8; + --colorPaletteMagentaBackground2: #6b0043; + --colorPaletteMagentaForeground2: #eca5d1; + --colorPaletteMagentaBorderActive: #d957a8; + --colorPalettePlumBackground2: #5a003b; + --colorPalettePlumForeground2: #d696c0; + --colorPalettePlumBorderActive: #ad4589; + --colorPaletteBeigeBackground2: #444241; + --colorPaletteBeigeForeground2: #d7d4d4; + --colorPaletteBeigeBorderActive: #afabaa; + --colorPaletteMinkBackground2: #343231; + --colorPaletteMinkForeground2: #cecccb; + --colorPaletteMinkBorderActive: #9e9b99; + --colorPalettePlatinumBackground2: #3b4447; + --colorPalettePlatinumForeground2: #cdd6d8; + --colorPalettePlatinumBorderActive: #a0adb2; + --colorPaletteAnchorBackground2: #202427; + --colorPaletteAnchorForeground2: #bcc3c7; + --colorPaletteAnchorBorderActive: #808a90; + --colorStatusSuccessBackground1: #052505; + --colorStatusSuccessBackground2: #094509; + --colorStatusSuccessBackground3: #107c10; + --colorStatusSuccessForeground1: #54b054; + --colorStatusSuccessForeground2: #9fd89f; + --colorStatusSuccessForeground3: #9fd89f; + --colorStatusSuccessForegroundInverted: #0e700e; + --colorStatusSuccessBorderActive: #54b054; + --colorStatusSuccessBorder1: #107c10; + --colorStatusSuccessBorder2: #9fd89f; + --colorStatusWarningBackground1: #4a1e04; + --colorStatusWarningBackground2: #8a3707; + --colorStatusWarningBackground3: #f7630c; + --colorStatusWarningForeground1: #faa06b; + --colorStatusWarningForeground2: #fdcfb4; + --colorStatusWarningForeground3: #f98845; + --colorStatusWarningForegroundInverted: #bc4b09; + --colorStatusWarningBorderActive: #faa06b; + --colorStatusWarningBorder1: #f7630c; + --colorStatusWarningBorder2: #f98845; + --colorStatusDangerBackground1: #3b0509; + --colorStatusDangerBackground2: #6e0811; + --colorStatusDangerBackground3: #c50f1f; + --colorStatusDangerForeground1: #dc626d; + --colorStatusDangerForeground2: #eeacb2; + --colorStatusDangerForeground3: #eeacb2; + --colorStatusDangerForegroundInverted: #b10e1c; + --colorStatusDangerBorderActive: #dc626d; + --colorStatusDangerBorder1: #c50f1f; + --colorStatusDangerBorder2: #dc626d; + --colorStatusDangerBackground3Hover: #b10e1c; + --colorStatusDangerBackground3Pressed: #960b18; +} diff --git a/packages/vue-spa/src/assets/vue.svg b/packages/vue-spa/src/assets/vue.svg new file mode 100644 index 00000000..770e9d33 --- /dev/null +++ b/packages/vue-spa/src/assets/vue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/vue-spa/src/components/HelloWorld.vue b/packages/vue-spa/src/components/HelloWorld.vue new file mode 100644 index 00000000..da659a4d --- /dev/null +++ b/packages/vue-spa/src/components/HelloWorld.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/packages/vue-spa/src/main.ts b/packages/vue-spa/src/main.ts new file mode 100644 index 00000000..181b67c6 --- /dev/null +++ b/packages/vue-spa/src/main.ts @@ -0,0 +1,35 @@ +import { createApp } from "vue"; +import { createPinia } from "pinia"; +import { QueryClient, VueQueryPlugin } from "@tanstack/vue-query"; +import "virtual:uno.css"; +import App from "@/App.vue"; +import { router } from "@/router"; +import "@/assets/fluent.css"; + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + staleTime: 1000 * 60, + gcTime: 1000 * 60 * 2, + + refetchOnMount: true, + refetchOnReconnect: true, + refetchOnWindowFocus: true, + + retry: 1, + retryDelay(attemptIndex) { + return Math.min(1000 * 2 ** attemptIndex, 1000 * 8); + }, + + experimental_prefetchInRender: true, + }, + }, +}); + +const app = createApp(App); +app.use(createPinia()); +app.use(router); +app.use(VueQueryPlugin, { + queryClient, +}); +app.mount("#app"); diff --git a/packages/vue-spa/src/pages/AboutPage.vue b/packages/vue-spa/src/pages/AboutPage.vue new file mode 100644 index 00000000..469ba926 --- /dev/null +++ b/packages/vue-spa/src/pages/AboutPage.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/vue-spa/src/pages/HomePage.vue b/packages/vue-spa/src/pages/HomePage.vue new file mode 100644 index 00000000..94f9230a --- /dev/null +++ b/packages/vue-spa/src/pages/HomePage.vue @@ -0,0 +1,9 @@ + + + + + diff --git a/packages/vue-spa/src/router/index.ts b/packages/vue-spa/src/router/index.ts new file mode 100644 index 00000000..c3d88dda --- /dev/null +++ b/packages/vue-spa/src/router/index.ts @@ -0,0 +1,7 @@ +import { createRouter, createWebHashHistory } from "vue-router"; +import { routes } from "./routes"; + +export const router = createRouter({ + history: createWebHashHistory(), + routes, +}); diff --git a/packages/vue-spa/src/router/routes.ts b/packages/vue-spa/src/router/routes.ts new file mode 100644 index 00000000..31cc8f9c --- /dev/null +++ b/packages/vue-spa/src/router/routes.ts @@ -0,0 +1,20 @@ +import type { RouteRecordRaw } from "vue-router"; + +export const routes: RouteRecordRaw[] = [ + { + name: "root", + path: "/", + children: [ + { + name: "home", + path: "", + component: () => import("../pages/HomePage.vue"), + }, + { + name: "about", + path: "about", + component: () => import("../pages/AboutPage.vue"), + }, + ], + }, +]; diff --git a/packages/vue-spa/tsconfig.app.json b/packages/vue-spa/tsconfig.app.json new file mode 100644 index 00000000..382b0d8a --- /dev/null +++ b/packages/vue-spa/tsconfig.app.json @@ -0,0 +1,20 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "types": ["vite/client"], + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true, + + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["./src/**/*.ts", "./src/**/*.tsx", "./src/**/*.vue"] +} diff --git a/packages/vue-spa/tsconfig.json b/packages/vue-spa/tsconfig.json new file mode 100644 index 00000000..1ffef600 --- /dev/null +++ b/packages/vue-spa/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/packages/vue-spa/tsconfig.node.json b/packages/vue-spa/tsconfig.node.json new file mode 100644 index 00000000..37714929 --- /dev/null +++ b/packages/vue-spa/tsconfig.node.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2023", + "lib": ["ES2023"], + "module": "ESNext", + "types": ["node"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts", "uno.config.ts"] +} diff --git a/packages/vue-spa/uno.config.ts b/packages/vue-spa/uno.config.ts new file mode 100644 index 00000000..3bcd25d8 --- /dev/null +++ b/packages/vue-spa/uno.config.ts @@ -0,0 +1,10 @@ +import { + defineConfig, + presetWind4, + presetAttributify, + presetIcons, +} from "unocss"; + +export default defineConfig({ + presets: [presetWind4(), presetAttributify(), presetIcons()], +}); diff --git a/packages/vue-spa/vite.config.ts b/packages/vue-spa/vite.config.ts new file mode 100644 index 00000000..6c1281ff --- /dev/null +++ b/packages/vue-spa/vite.config.ts @@ -0,0 +1,18 @@ +import path from "node:path"; +import url from "node:url"; +import { defineConfig } from "vite"; +import vue from "@vitejs/plugin-vue"; +import UnoCSS from "unocss/vite"; + +const __dirname = path.dirname(url.fileURLToPath(import.meta.url)); + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [vue(), UnoCSS()], + + resolve: { + alias: { + "@": path.resolve(__dirname, "src"), + }, + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1dee05fd..560a4814 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,39 @@ settings: importers: .: + devDependencies: + '@eslint/js': + specifier: ^9.39.2 + version: 9.39.2 + '@types/node': + specifier: ^25.3.0 + version: 25.3.0 + '@vue/tsconfig': + specifier: ^0.8.1 + version: 0.8.1(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)) + eslint: + specifier: ^9.39.2 + version: 9.39.2(jiti@2.6.1) + eslint-plugin-react-hooks: + specifier: 7.0.1 + version: 7.0.1(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-react-refresh: + specifier: ^0.4.24 + version: 0.4.24(eslint@9.39.2(jiti@2.6.1)) + globals: + specifier: ^16.5.0 + version: 16.5.0 + prettier: + specifier: ^3.8.1 + version: 3.8.1 + typescript: + specifier: ^5.9.3 + version: 5.9.3 + typescript-eslint: + specifier: ^8.49.0 + version: 8.49.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + + packages/react-spa: dependencies: '@dnd-kit/core': specifier: ^6.3.1 @@ -180,12 +213,6 @@ importers: specifier: ^5.0.9 version: 5.0.9(@types/react@19.2.7)(immer@11.0.1)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)) devDependencies: - '@eslint/js': - specifier: ^9.39.2 - version: 9.39.2 - '@types/node': - specifier: ^25.0.1 - version: 25.0.1 '@types/nprogress': specifier: ^0.2.3 version: 0.2.3 @@ -200,37 +227,53 @@ importers: version: 19.2.3(@types/react@19.2.7) '@vitejs/plugin-react': specifier: ^5.1.2 - version: 5.1.2(vite@7.2.7(@types/node@25.0.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.5.1)) + version: 5.1.2(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2)) babel-plugin-react-compiler: specifier: ^1.0.0 version: 1.0.0 - eslint: - specifier: ^9.39.2 - version: 9.39.2 - eslint-plugin-react-hooks: - specifier: 7.0.1 - version: 7.0.1(eslint@9.39.2) - eslint-plugin-react-refresh: - specifier: ^0.4.24 - version: 0.4.24(eslint@9.39.2) - globals: - specifier: ^16.5.0 - version: 16.5.0 - prettier: - specifier: ^3.7.4 - version: 3.7.4 - typescript: - specifier: ^5.9.3 - version: 5.9.3 - typescript-eslint: - specifier: ^8.49.0 - version: 8.49.0(eslint@9.39.2)(typescript@5.9.3) vite: - specifier: ^7.2.7 - version: 7.2.7(@types/node@25.0.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.5.1) + specifier: ^7.3.1 + version: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2) + + packages/vue-spa: + dependencies: + '@tanstack/vue-form': + specifier: ^1.28.3 + version: 1.28.3(vue@3.5.28(typescript@5.9.3)) + '@tanstack/vue-query': + specifier: ^5.92.9 + version: 5.92.9(vue@3.5.28(typescript@5.9.3)) + '@tanstack/vue-query-devtools': + specifier: ^6.1.5 + version: 6.1.5(@tanstack/vue-query@5.92.9(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) + pinia: + specifier: ^3.0.4 + version: 3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)) + unocss: + specifier: ^66.6.0 + version: 66.6.0(postcss@8.5.6)(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2)) + vue: + specifier: ^3.5.25 + version: 3.5.28(typescript@5.9.3) + vue-router: + specifier: ^5.0.3 + version: 5.0.3(@vue/compiler-sfc@3.5.28)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) + devDependencies: + '@vitejs/plugin-vue': + specifier: ^6.0.2 + version: 6.0.4(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) + vite: + specifier: ^7.3.1 + version: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2) + vue-tsc: + specifier: ^3.1.5 + version: 3.2.4(typescript@5.9.3) packages: + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} @@ -247,6 +290,10 @@ packages: resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} 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.27.2': resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} @@ -285,11 +332,21 @@ packages: resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} + '@babel/parser@7.27.7': + resolution: {integrity: sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/parser@7.28.5': resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.29.0': + resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-transform-react-jsx-self@7.27.1': resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} engines: {node: '>=6.9.0'} @@ -310,6 +367,10 @@ packages: resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.27.7': + resolution: {integrity: sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.28.5': resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} engines: {node: '>=6.9.0'} @@ -318,6 +379,10 @@ packages: resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} + '@dnd-kit/accessibility@3.1.1': resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} peerDependencies: @@ -400,158 +465,158 @@ packages: '@emotion/weak-memoize@0.4.0': resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} - '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + '@esbuild/aix-ppc64@0.27.3': + resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + '@esbuild/android-arm64@0.27.3': + resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + '@esbuild/android-arm@0.27.3': + resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + '@esbuild/android-x64@0.27.3': + resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + '@esbuild/darwin-arm64@0.27.3': + resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + '@esbuild/darwin-x64@0.27.3': + resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + '@esbuild/freebsd-arm64@0.27.3': + resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + '@esbuild/freebsd-x64@0.27.3': + resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + '@esbuild/linux-arm64@0.27.3': + resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + '@esbuild/linux-arm@0.27.3': + resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + '@esbuild/linux-ia32@0.27.3': + resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.12': - resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + '@esbuild/linux-loong64@0.27.3': + resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.12': - resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + '@esbuild/linux-mips64el@0.27.3': + resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.12': - resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + '@esbuild/linux-ppc64@0.27.3': + resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.12': - resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + '@esbuild/linux-riscv64@0.27.3': + resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.12': - resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + '@esbuild/linux-s390x@0.27.3': + resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.12': - resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + '@esbuild/linux-x64@0.27.3': + resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.12': - resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + '@esbuild/netbsd-arm64@0.27.3': + resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.12': - resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + '@esbuild/netbsd-x64@0.27.3': + resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.12': - resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + '@esbuild/openbsd-arm64@0.27.3': + resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.12': - resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + '@esbuild/openbsd-x64@0.27.3': + resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.12': - resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + '@esbuild/openharmony-arm64@0.27.3': + resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.12': - resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + '@esbuild/sunos-x64@0.27.3': + resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.12': - resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + '@esbuild/win32-arm64@0.27.3': + resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.12': - resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + '@esbuild/win32-ia32@0.27.3': + resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.12': - resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + '@esbuild/win32-x64@0.27.3': + resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -837,6 +902,12 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@3.1.0': + resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1010,6 +1081,9 @@ packages: react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} @@ -1043,6 +1117,9 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@quansync/fs@1.0.0': + resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} + '@radix-ui/number@1.1.1': resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} @@ -1156,6 +1233,9 @@ packages: '@rolldown/pluginutils@1.0.0-beta.53': resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} + '@rolldown/pluginutils@1.0.0-rc.2': + resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} + '@rollup/rollup-android-arm-eabi@4.53.3': resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} cpu: [arm] @@ -1190,56 +1270,67 @@ packages: resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.53.3': resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.53.3': resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.53.3': resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.53.3': resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-ppc64-gnu@4.53.3': resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.53.3': resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.53.3': resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.53.3': resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.53.3': resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.53.3': resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-openharmony-arm64@4.53.3': resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} @@ -1300,9 +1391,20 @@ packages: resolution: {integrity: sha512-RL1f5ZlfZMpghrCIdzl6mLOFLTuhqmPNblZgBaeKfdtk5rfbjykurv+VfYydOFXj0vxVIoA2d/zT7xfD7Ph8fw==} engines: {node: '>=18'} + '@tanstack/devtools-event-client@0.4.0': + resolution: {integrity: sha512-RPfGuk2bDZgcu9bAJodvO2lnZeHuz4/71HjZ0bGb/SPg8+lyTA+RLSKQvo7fSmPSi8/vcH3aKQ8EM9ywf1olaw==} + engines: {node: '>=18'} + '@tanstack/form-core@1.27.3': resolution: {integrity: sha512-dFllZ1JEVmFVwvbXL+l1NWbj4X++FL+D9EK3Xksw7JA+V48wLHq7uzNHQy76al0M+ry0reLqfm65fgd8BWR7/Q==} + '@tanstack/form-core@1.28.3': + resolution: {integrity: sha512-DBhnu1d5VfACAYOAZJO8tsEUHjWczZMJY8v/YrtAJNWpwvL/3ogDuz8e6yUB2m/iVTNq6K8yrnVN2nrX0/BX/w==} + + '@tanstack/match-sorter-utils@8.19.4': + resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} + engines: {node: '>=12'} + '@tanstack/pacer-lite@0.1.1': resolution: {integrity: sha512-y/xtNPNt/YeyoVxE/JCx+T7yjEzpezmbb+toK8DDD1P4m7Kzs5YR956+7OKexG3f8aXgC3rLZl7b1V+yNUSy5w==} engines: {node: '>=18'} @@ -1310,9 +1412,15 @@ packages: '@tanstack/query-core@5.90.12': resolution: {integrity: sha512-T1/8t5DhV/SisWjDnaiU2drl6ySvsHj1bHBCWNXd+/T+Hh1cf6JodyEYMd5sgwm+b/mETT4EV3H+zCVczCU5hg==} + '@tanstack/query-core@5.90.20': + resolution: {integrity: sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==} + '@tanstack/query-devtools@5.91.1': resolution: {integrity: sha512-l8bxjk6BMsCaVQH6NzQEE/bEgFy1hAs5qbgXl0xhzezlaQbPk6Mgz9BqEg2vTLPOHD8N4k+w/gdgCbEzecGyNg==} + '@tanstack/query-devtools@5.93.0': + resolution: {integrity: sha512-+kpsx1NQnOFTZsw6HAFCW3HkKg0+2cepGtAWXjiiSOJJ1CtQpt72EE2nyZb+AjAbLRPoeRmPJ8MtQd8r8gsPdg==} + '@tanstack/react-form@1.27.3': resolution: {integrity: sha512-GLGJC5PuY1OUgkBy9ZHornOAucWrVOCNHyMBCTf1kjmuDCzIvufrQlkLja9jwVwye8tta1K4Z0IkC/pqPM1Hjg==} peerDependencies: @@ -1358,6 +1466,9 @@ packages: '@tanstack/store@0.8.0': resolution: {integrity: sha512-Om+BO0YfMZe//X2z0uLF2j+75nQga6TpTJgLJQBiq85aOyZNIhkCgleNcud2KQg4k4v9Y9l+Uhru3qWMPGTOzQ==} + '@tanstack/store@0.8.1': + resolution: {integrity: sha512-PtOisLjUZPz5VyPRSCGjNOlwTvabdTBQ2K80DpVL1chGVr35WRxfeavAPdNq6pm/t7F8GhoR2qtmkkqtCEtHYw==} + '@tanstack/table-core@8.21.3': resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==} engines: {node: '>=12'} @@ -1365,6 +1476,35 @@ packages: '@tanstack/virtual-core@3.13.13': resolution: {integrity: sha512-uQFoSdKKf5S8k51W5t7b2qpfkyIbdHMzAn+AMQvHPxKUPeo1SsGaA4JRISQT87jm28b7z8OEqPcg1IOZagQHcA==} + '@tanstack/vue-form@1.28.3': + resolution: {integrity: sha512-WHs9oBmMLvp5RIqa33mSLYgEM9nbG6UlwXEXWyG8S25gn8gOgcaLpPoE7kvqlT+nyPbZhPAjJXBsn7Uzsd8xvA==} + peerDependencies: + vue: ^3.4.0 + + '@tanstack/vue-query-devtools@6.1.5': + resolution: {integrity: sha512-5tQf/4GKfDyvu+Jqv/Fq1im93nXQyge0yWphCmwNHz6Y6+kqA9swJY2G/kLU2TaT2s1CE+elt5EfYNGE1tsDqQ==} + peerDependencies: + '@tanstack/vue-query': ^5.92.9 + vue: ^3.3.0 + + '@tanstack/vue-query@5.92.9': + resolution: {integrity: sha512-jjAZcqKveyX0C4w/6zUqbnqk/XzuxNWaFsWjGTJWULVFizUNeLGME2gf9vVSDclIyiBhR13oZJPPs6fJgfpIJQ==} + peerDependencies: + '@vue/composition-api': ^1.1.2 + vue: ^2.6.0 || ^3.3.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + '@tanstack/vue-store@0.8.1': + resolution: {integrity: sha512-37rNptEo86+2Jm2kTLvgVtboRRwHkksjxCKCrdl73eeZIU0jU34ZMP/ayd5+bCCo6epdbrqcb13gjUBSGp4Blg==} + peerDependencies: + '@vue/composition-api': ^1.2.1 + vue: ^2.5.0 || ^3.0.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + '@toolpad/core@0.16.0': resolution: {integrity: sha512-/Iiyubp1u8L4DZqIgP1N0mhOxXpk9+I05xg+Hbk7VYUVEMlVmF+x7+FzPxocOWrvgAdeNZfyCZhY9u99SEQbtQ==} engines: {node: '>=14.0.0'} @@ -1605,6 +1745,9 @@ packages: '@types/node@25.0.1': resolution: {integrity: sha512-czWPzKIAXucn9PtsttxmumiQ9N0ok9FrBwgRWrwmVLlp86BrMExzvXRLFYRJ+Ex3g6yqj+KuaxfX1JTgV2lpfg==} + '@types/node@25.3.0': + resolution: {integrity: sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==} + '@types/nprogress@0.2.3': resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==} @@ -1698,12 +1841,187 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@unocss/astro@66.6.0': + resolution: {integrity: sha512-HCDgZnoXv6pZGUK9N4ko7ZeBP1YTIP8IFj0Vr7pXVdv9sGR9CofoueFbclTvPQ065UHSsG+WI+JO5z9/BGd5fw==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 || ^8.0.0-0 + peerDependenciesMeta: + vite: + optional: true + + '@unocss/cli@66.6.0': + resolution: {integrity: sha512-wtA6YBIvW2f8FISdYS8rx+B3ZGTUjw3YO3Fxz1ApUCHinYSdz8SoNWShH1I61LWbcjJ4hbjI/D9t/Dmgp6vmiQ==} + engines: {node: '>=14'} + hasBin: true + + '@unocss/config@66.6.0': + resolution: {integrity: sha512-YvNk/b9jGmT1TQGDbHR+0VALnTsPLzSTzw90t09ggny9YxeF0XnsP06M5+H0EJPwpmdigBC++KEIMaK8SYDsaQ==} + engines: {node: '>=14'} + + '@unocss/core@66.6.0': + resolution: {integrity: sha512-Sxm7HmhsPIIzxbPnWembPyobuCeA5j9KxL+jIOW2c+kZiTFjHeju7vuVWX9jmAMMC+UyDuuCQ4yE+kBo3Y7SWQ==} + + '@unocss/extractor-arbitrary-variants@66.6.0': + resolution: {integrity: sha512-AsCmpbre4hQb+cKOf3gHUeYlF7guR/aCKZvw53VBk12qY5wNF7LdfIx4zWc5LFVCoRxIZlU2C7L4/Tt7AkiFMA==} + + '@unocss/inspector@66.6.0': + resolution: {integrity: sha512-BvdY8ah+OTmzFMb+z8RZkaF15+PWRFt9S2bOARkkRBubybX9EE1rxM07l74kO5Dj16++CS4nO15XFq39pPoBvg==} + + '@unocss/postcss@66.6.0': + resolution: {integrity: sha512-Tn8l8JMXJcTgzrPHSukpRBnVIt561bQCUle7jW8NXk61vYBy8p52nEBkNy5QMXybaCih5ghg2d/+nDIAl9YIpw==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + + '@unocss/preset-attributify@66.6.0': + resolution: {integrity: sha512-IfGZT9LjQkfpJaVjDtFMxOlrEoj7m1DCztRdby0FaptXChE7vdgRkYFl8HDeXMkEIlzV1YTHuIarwJ+tV+1SRQ==} + + '@unocss/preset-icons@66.6.0': + resolution: {integrity: sha512-ObgmN9SsqU7TiClNvy+mQDyqzwOhlBXT0whXFp3iiBfSbnxUIDyf4Pr/2hwxnAWrCWCQj7xw2H0Y0sDtXq8XkA==} + + '@unocss/preset-mini@66.6.0': + resolution: {integrity: sha512-8bQyTuMJcry/z4JTDsQokI0187/1CJIkVx9hr9eEbKf/gWti538P8ktKEmHCf8IyT0At5dfP9oLHLCUzVetdbA==} + + '@unocss/preset-tagify@66.6.0': + resolution: {integrity: sha512-Vy9olM61lqTDxcHbfDkIJNp9LF2m8K9I/F2J0diD+BVZgpym1QRK6+aZaeAPJuMCyQrOk87dm7VIiAPFtLOXFA==} + + '@unocss/preset-typography@66.6.0': + resolution: {integrity: sha512-vDogO+jaatGSAoZqqa9+GJ18WbrwYzJr5UyIFUQqXJ5TUDaWzKb4Qhty2WnOtjQaf4sOMML8JFA/cydZl+Rjjw==} + + '@unocss/preset-uno@66.6.0': + resolution: {integrity: sha512-xDppgdgFk+JNrL9jhqhrn6H9IS8P10p1HSsWOYF+9owg43zqpeNpzDMvZGwq8uxq6guyB1fu6l4YzO+bDZnwvw==} + + '@unocss/preset-web-fonts@66.6.0': + resolution: {integrity: sha512-Mqb8bVSAfDEnkGyAl8ZPdvaojq3YSow4lvxGCOm7nHJFIXkRKgYBgD3tmm+rvO81CUtihZd7hdw0Ay+8pYrlTw==} + + '@unocss/preset-wind3@66.6.0': + resolution: {integrity: sha512-7gzswF810BCSru7pF01BsMzGZbfrsWT5GV6JJLkhROS2pPjeNOpqy2VEfiavv5z09iGSIESeOFMlXr5ORuLZrg==} + + '@unocss/preset-wind4@66.6.0': + resolution: {integrity: sha512-1yyo9fmB+r5C92kSHU7lIaqGJdvz5UQyYZxYDxSmWLAUzWEK5HBRj6OkSF6rUnz+Yd4JvgOgACZNOShVOezPlA==} + + '@unocss/preset-wind@66.6.0': + resolution: {integrity: sha512-6uVq3/gV1MD9ZsycrYLP6OvAS9kI1oGAIuccKKspZHW3jqwEhJmPofDD4pYwbkx4i4zSWzoLakcfp9d67Szjqg==} + + '@unocss/reset@66.6.0': + resolution: {integrity: sha512-OQK5F7Dzx0wWDSPTYEz7NRP9pekufSAkjxfKOyKokiXOUzVTg8Yx8sOvCsA3Oi0Rx5WlsO2LN+MOBekpkrttXg==} + + '@unocss/rule-utils@66.6.0': + resolution: {integrity: sha512-v16l6p5VrefDx8P/gzWnp0p6/hCA0vZ4UMUN6SxHGVE6V+IBpX6I6Du3Egk9TdkhZ7o+Pe1NHxksHcjT0V/tww==} + engines: {node: '>=14'} + + '@unocss/transformer-attributify-jsx@66.6.0': + resolution: {integrity: sha512-fzjLVlhYO8JdHzIusRKAva5ZOnA4deOVYuiM6HVpbX7P19479TVHZgeSV+AG0BWLhmIJ2cer+n3/CIO5nodT6g==} + + '@unocss/transformer-compile-class@66.6.0': + resolution: {integrity: sha512-OkwdbIfsbs8dtHIfBaoya/SPHZUJeogvJl2BpJb4/3nY/tWBZB/+i2vPMAML3D9aQYZAuC7uqcTRGNbuvyyy+w==} + + '@unocss/transformer-directives@66.6.0': + resolution: {integrity: sha512-2Z4FFjJI/bH6kKGuuuO0DpFEVSFOhFnGLTFK8y9BGz0cIOQOIuEKTemM7QLqPuyRSORBO1RKvcKvA3DV0n1X7g==} + + '@unocss/transformer-variant-group@66.6.0': + resolution: {integrity: sha512-kWYYcrn8ZFKLVCU6kB8yaQY9iYgx3/XhPb9c0XZZ5QzWjoGffrl6XLUk8XrjR/yxC3qwHg/WizzsmsQ2OXF6Qg==} + + '@unocss/vite@66.6.0': + resolution: {integrity: sha512-SC0/rX0xSjdu8Jaj98XztHOuvXHWDVk0YaHKRAQks2Oj3yyqAOrhzhDUH0zzFaQWf5bsKVYK40H+h4rMk9vm5Q==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 || ^8.0.0-0 + '@vitejs/plugin-react@5.1.2': resolution: {integrity: sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + '@vitejs/plugin-vue@6.0.4': + resolution: {integrity: sha512-uM5iXipgYIn13UUQCZNdWkYk+sysBeA97d5mHsAoAt1u/wpN3+zxOmsVJWosuzX+IMGRzeYUNytztrYznboIkQ==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + vue: ^3.2.25 + + '@volar/language-core@2.4.27': + resolution: {integrity: sha512-DjmjBWZ4tJKxfNC1F6HyYERNHPYS7L7OPFyCrestykNdUZMFYzI9WTyvwPcaNaHlrEUwESHYsfEw3isInncZxQ==} + + '@volar/source-map@2.4.27': + resolution: {integrity: sha512-ynlcBReMgOZj2i6po+qVswtDUeeBRCTgDurjMGShbm8WYZgJ0PA4RmtebBJ0BCYol1qPv3GQF6jK7C9qoVc7lg==} + + '@volar/typescript@2.4.27': + resolution: {integrity: sha512-eWaYCcl/uAPInSK2Lze6IqVWaBu/itVqR5InXcHXFyles4zO++Mglt3oxdgj75BDcv1Knr9Y93nowS8U3wqhxg==} + + '@vue-macros/common@3.1.2': + resolution: {integrity: sha512-h9t4ArDdniO9ekYHAD95t9AZcAbb19lEGK+26iAjUODOIJKmObDNBSe4+6ELQAA3vtYiFPPBtHh7+cQCKi3Dng==} + engines: {node: '>=20.19.0'} + peerDependencies: + vue: ^2.7.0 || ^3.2.25 + peerDependenciesMeta: + vue: + optional: true + + '@vue/compiler-core@3.5.28': + resolution: {integrity: sha512-kviccYxTgoE8n6OCw96BNdYlBg2GOWfBuOW4Vqwrt7mSKWKwFVvI8egdTltqRgITGPsTFYtKYfxIG8ptX2PJHQ==} + + '@vue/compiler-dom@3.5.28': + resolution: {integrity: sha512-/1ZepxAb159jKR1btkefDP+J2xuWL5V3WtleRmxaT+K2Aqiek/Ab/+Ebrw2pPj0sdHO8ViAyyJWfhXXOP/+LQA==} + + '@vue/compiler-sfc@3.5.28': + resolution: {integrity: sha512-6TnKMiNkd6u6VeVDhZn/07KhEZuBSn43Wd2No5zaP5s3xm8IqFTHBj84HJah4UepSUJTro5SoqqlOY22FKY96g==} + + '@vue/compiler-ssr@3.5.28': + resolution: {integrity: sha512-JCq//9w1qmC6UGLWJX7RXzrGpKkroubey/ZFqTpvEIDJEKGgntuDMqkuWiZvzTzTA5h2qZvFBFHY7fAAa9475g==} + + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + + '@vue/devtools-api@7.7.9': + resolution: {integrity: sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==} + + '@vue/devtools-api@8.0.6': + resolution: {integrity: sha512-+lGBI+WTvJmnU2FZqHhEB8J1DXcvNlDeEalz77iYgOdY1jTj1ipSBaKj3sRhYcy+kqA8v/BSuvOz1XJucfQmUA==} + + '@vue/devtools-kit@7.7.9': + resolution: {integrity: sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==} + + '@vue/devtools-kit@8.0.6': + resolution: {integrity: sha512-9zXZPTJW72OteDXeSa5RVML3zWDCRcO5t77aJqSs228mdopYj5AiTpihozbsfFJ0IodfNs7pSgOGO3qfCuxDtw==} + + '@vue/devtools-shared@7.7.9': + resolution: {integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==} + + '@vue/devtools-shared@8.0.6': + resolution: {integrity: sha512-Pp1JylTqlgMJvxW6MGyfTF8vGvlBSCAvMFaDCYa82Mgw7TT5eE5kkHgDvmOGHWeJE4zIDfCpCxHapsK2LtIAJg==} + + '@vue/language-core@3.2.4': + resolution: {integrity: sha512-bqBGuSG4KZM45KKTXzGtoCl9cWju5jsaBKaJJe3h5hRAAWpZUuj5G+L+eI01sPIkm4H6setKRlw7E85wLdDNew==} + + '@vue/reactivity@3.5.28': + resolution: {integrity: sha512-gr5hEsxvn+RNyu9/9o1WtdYdwDjg5FgjUSBEkZWqgTKlo/fvwZ2+8W6AfKsc9YN2k/+iHYdS9vZYAhpi10kNaw==} + + '@vue/runtime-core@3.5.28': + resolution: {integrity: sha512-POVHTdbgnrBBIpnbYU4y7pOMNlPn2QVxVzkvEA2pEgvzbelQq4ZOUxbp2oiyo+BOtiYlm8Q44wShHJoBvDPAjQ==} + + '@vue/runtime-dom@3.5.28': + resolution: {integrity: sha512-4SXxSF8SXYMuhAIkT+eBRqOkWEfPu6nhccrzrkioA6l0boiq7sp18HCOov9qWJA5HML61kW8p/cB4MmBiG9dSA==} + + '@vue/server-renderer@3.5.28': + resolution: {integrity: sha512-pf+5ECKGj8fX95bNincbzJ6yp6nyzuLDhYZCeFxUNp8EBrQpPpQaLX3nNCp49+UbgbPun3CeVE+5CXVV1Xydfg==} + peerDependencies: + vue: 3.5.28 + + '@vue/shared@3.5.28': + resolution: {integrity: sha512-cfWa1fCGBxrvaHRhvV3Is0MgmrbSCxYTXCSCau2I0a1Xw1N1pHAvkWCiXPRAqjvToILvguNyEwjevUqAuBQWvQ==} + + '@vue/tsconfig@0.8.1': + resolution: {integrity: sha512-aK7feIWPXFSUhsCP9PFqPyFOcz4ENkb8hZ2pneL6m2UjCkccvaOhC/5KCKluuBufvp2KzkbdA2W2pk20vLzu3g==} + peerDependencies: + typescript: 5.x + vue: ^3.4.0 + peerDependenciesMeta: + typescript: + optional: true + vue: + optional: true + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1717,6 +2035,9 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + alien-signals@3.1.2: + resolution: {integrity: sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -1735,6 +2056,14 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + ast-kit@2.2.0: + resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} + engines: {node: '>=20.19.0'} + + ast-walker-scope@0.8.3: + resolution: {integrity: sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg==} + engines: {node: '>=20.19.0'} + asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -1766,6 +2095,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + birpc@2.9.0: + resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -1781,6 +2113,10 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -1817,6 +2153,10 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} @@ -1849,6 +2189,9 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -1862,6 +2205,16 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.4: + resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} @@ -1872,6 +2225,10 @@ packages: resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} + copy-anything@4.0.5: + resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} + engines: {node: '>=18'} + cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -1880,6 +2237,10 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -1955,6 +2316,9 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -1963,6 +2327,9 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -1990,12 +2357,19 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + electron-to-chromium@1.5.267: resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} @@ -2018,8 +2392,8 @@ packages: es-toolkit@1.43.0: resolution: {integrity: sha512-SKCT8AsWvYzBBuUqMk4NPwFlSdqLpJwmy6AP322ERn8W2YLIB6JBXnwMI2Qsh2gfphT3q7EKAxKb23cvFHFwKA==} - esbuild@0.25.12: - resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + esbuild@0.27.3: + resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} engines: {node: '>=18'} hasBin: true @@ -2083,6 +2457,9 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -2094,6 +2471,9 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + exsolve@1.0.8: + resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} + extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -2207,6 +2587,10 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -2224,6 +2608,10 @@ packages: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -2258,6 +2646,9 @@ packages: hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + html-parse-stringify@3.0.1: resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} @@ -2362,6 +2753,10 @@ packages: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-what@5.5.0: + resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} + engines: {node: '>=18'} + is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} @@ -2376,6 +2771,10 @@ packages: javascript-natural-sort@0.7.1: resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -2444,24 +2843,28 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] lightningcss-linux-arm64-musl@1.30.1: resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [musl] lightningcss-linux-x64-gnu@1.30.1: resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [glibc] lightningcss-linux-x64-musl@1.30.1: resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [musl] lightningcss-win32-arm64-msvc@1.30.1: resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} @@ -2482,6 +2885,10 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + local-pkg@1.1.2: + resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + engines: {node: '>=14'} + localforage@1.10.0: resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} @@ -2509,6 +2916,13 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + magic-string-ast@1.0.3: + resolution: {integrity: sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==} + engines: {node: '>=20.19.0'} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -2521,6 +2935,9 @@ packages: mdast-util-to-hast@13.2.1: resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -2558,9 +2975,22 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -2569,6 +2999,9 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} @@ -2594,6 +3027,9 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + ofetch@1.5.1: + resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} + onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} @@ -2632,6 +3068,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -2640,6 +3079,9 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -2662,6 +3104,15 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + perfect-debounce@2.1.0: + resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -2673,6 +3124,21 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + pinia@3.0.4: + resolution: {integrity: sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==} + peerDependencies: + typescript: '>=4.5.0' + vue: ^3.5.11 + peerDependenciesMeta: + typescript: + optional: true + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + pngjs@5.0.0: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} @@ -2690,8 +3156,8 @@ packages: engines: {node: '>=14'} hasBin: true - prettier@3.7.4: - resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} + prettier@3.8.1: + resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} engines: {node: '>=14'} hasBin: true @@ -2717,6 +3183,12 @@ packages: engines: {node: '>=10.13.0'} hasBin: true + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + + quansync@1.0.0: + resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} + react-dom@19.2.4: resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} peerDependencies: @@ -2807,6 +3279,10 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + recharts@3.5.1: resolution: {integrity: sha512-+v+HJojK7gnEgG6h+b2u7k8HH7FhyFUzAc4+cPrsjL4Otdgqr/ecXzAnHciqlzV1ko064eNcsdzrYOM78kankA==} engines: {node: '>=18'} @@ -2832,6 +3308,9 @@ packages: regex@6.1.0: resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} + remove-accents@0.5.0: + resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==} + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -2851,6 +3330,9 @@ packages: engines: {node: '>= 0.4'} hasBin: true + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rollup@4.53.3: resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -2867,6 +3349,9 @@ packages: scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + seedrandom@3.0.5: resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==} @@ -2900,6 +3385,10 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} + engines: {node: '>=18'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -2911,6 +3400,10 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -2933,6 +3426,10 @@ packages: stylis@4.2.0: resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + superjson@2.2.6: + resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} + engines: {node: '>=16'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -2951,6 +3448,10 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -2963,6 +3464,10 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -2998,9 +3503,21 @@ packages: engines: {node: '>=14.17'} hasBin: true + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + + unconfig-core@7.5.0: + resolution: {integrity: sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==} + + unconfig@7.5.0: + resolution: {integrity: sha512-oi8Qy2JV4D3UQ0PsopR28CzdQ3S/5A1zwsUwp/rosSbfhJ5z7b90bIyTwi/F7hCLD4SGcZVjDzd4XoUQcEanvA==} + undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -3019,6 +3536,26 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + unocss@66.6.0: + resolution: {integrity: sha512-B5QsMJzFKeTHPzF5Ehr8tSMuhxzbCR9n+XP0GyhK9/2jTcBdI0/T+rCDDr9m6vUz+lku/coCVz7VAQ2BRAbZJw==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 66.6.0 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 || ^8.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + + unplugin-utils@0.3.1: + resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==} + engines: {node: '>=20.19.0'} + + unplugin@3.0.0: + resolution: {integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==} + engines: {node: ^20.19.0 || >=22.12.0} + update-browserslist-db@1.2.2: resolution: {integrity: sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==} hasBin: true @@ -3048,8 +3585,8 @@ packages: victory-vendor@37.3.6: resolution: {integrity: sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==} - vite@7.2.7: - resolution: {integrity: sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==} + vite@7.3.1: + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -3092,22 +3629,71 @@ packages: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} - web-vitals@4.2.4: - resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} - websocket-driver@0.7.4: - resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} - engines: {node: '>=0.8.0'} + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true - websocket-extensions@0.1.4: - resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} - engines: {node: '>=0.8.0'} + vue-flow-layout@0.2.0: + resolution: {integrity: sha512-zKgsWWkXq0xrus7H4Mc+uFs1ESrmdTXlO0YNbR6wMdPaFvosL3fMB8N7uTV308UhGy9UvTrGhIY7mVz9eN+L0Q==} - which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + vue-router@5.0.3: + resolution: {integrity: sha512-nG1c7aAFac7NYj8Hluo68WyWfc41xkEjaR0ViLHCa3oDvTQ/nIuLJlXJX1NUPw/DXzx/8+OKMng045HHQKQKWw==} + peerDependencies: + '@pinia/colada': '>=0.21.2' + '@vue/compiler-sfc': ^3.5.17 + pinia: ^3.0.4 + vue: ^3.5.0 + peerDependenciesMeta: + '@pinia/colada': + optional: true + '@vue/compiler-sfc': + optional: true + pinia: + optional: true - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + vue-tsc@3.2.4: + resolution: {integrity: sha512-xj3YCvSLNDKt1iF9OcImWHhmYcihVu9p4b9s4PGR/qp6yhW+tZJaypGxHScRyOrdnHvaOeF+YkZOdKwbgGvp5g==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + + vue@3.5.28: + resolution: {integrity: sha512-BRdrNfeoccSoIZeIhyPBfvWSLFP4q8J3u8Ju8Ug5vu3LdD+yTM13Sg4sKtljxozbnuMu1NB1X5HBHRYUzFocKg==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + web-vitals@4.2.4: + resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + + websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true @@ -3147,6 +3733,11 @@ packages: engines: {node: '>= 14'} hasBin: true + yaml@2.8.2: + resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -3199,6 +3790,11 @@ packages: snapshots: + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.6.0 + tinyexec: 1.0.2 + '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.28.5 @@ -3229,12 +3825,20 @@ snapshots: '@babel/generator@7.28.5': dependencies: - '@babel/parser': 7.28.5 + '@babel/parser': 7.29.0 '@babel/types': 7.28.5 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 + '@babel/generator@7.29.1': + dependencies: + '@babel/parser': 7.29.0 + '@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.27.2': dependencies: '@babel/compat-data': 7.28.5 @@ -3274,10 +3878,18 @@ snapshots: '@babel/template': 7.27.2 '@babel/types': 7.28.5 + '@babel/parser@7.27.7': + dependencies: + '@babel/types': 7.29.0 + '@babel/parser@7.28.5': dependencies: '@babel/types': 7.28.5 + '@babel/parser@7.29.0': + dependencies: + '@babel/types': 7.29.0 + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 @@ -3293,15 +3905,27 @@ snapshots: '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.5 + '@babel/parser': 7.29.0 '@babel/types': 7.28.5 + '@babel/traverse@7.27.7': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.0 + '@babel/template': 7.27.2 + '@babel/types': 7.29.0 + debug: 4.4.3 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/traverse@7.28.5': dependencies: '@babel/code-frame': 7.27.1 '@babel/generator': 7.28.5 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.5 + '@babel/parser': 7.29.0 '@babel/template': 7.27.2 '@babel/types': 7.28.5 debug: 4.4.3 @@ -3313,6 +3937,11 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@dnd-kit/accessibility@3.1.1(react@19.2.4)': dependencies: react: 19.2.4 @@ -3428,87 +4057,87 @@ snapshots: '@emotion/weak-memoize@0.4.0': {} - '@esbuild/aix-ppc64@0.25.12': + '@esbuild/aix-ppc64@0.27.3': optional: true - '@esbuild/android-arm64@0.25.12': + '@esbuild/android-arm64@0.27.3': optional: true - '@esbuild/android-arm@0.25.12': + '@esbuild/android-arm@0.27.3': optional: true - '@esbuild/android-x64@0.25.12': + '@esbuild/android-x64@0.27.3': optional: true - '@esbuild/darwin-arm64@0.25.12': + '@esbuild/darwin-arm64@0.27.3': optional: true - '@esbuild/darwin-x64@0.25.12': + '@esbuild/darwin-x64@0.27.3': optional: true - '@esbuild/freebsd-arm64@0.25.12': + '@esbuild/freebsd-arm64@0.27.3': optional: true - '@esbuild/freebsd-x64@0.25.12': + '@esbuild/freebsd-x64@0.27.3': optional: true - '@esbuild/linux-arm64@0.25.12': + '@esbuild/linux-arm64@0.27.3': optional: true - '@esbuild/linux-arm@0.25.12': + '@esbuild/linux-arm@0.27.3': optional: true - '@esbuild/linux-ia32@0.25.12': + '@esbuild/linux-ia32@0.27.3': optional: true - '@esbuild/linux-loong64@0.25.12': + '@esbuild/linux-loong64@0.27.3': optional: true - '@esbuild/linux-mips64el@0.25.12': + '@esbuild/linux-mips64el@0.27.3': optional: true - '@esbuild/linux-ppc64@0.25.12': + '@esbuild/linux-ppc64@0.27.3': optional: true - '@esbuild/linux-riscv64@0.25.12': + '@esbuild/linux-riscv64@0.27.3': optional: true - '@esbuild/linux-s390x@0.25.12': + '@esbuild/linux-s390x@0.27.3': optional: true - '@esbuild/linux-x64@0.25.12': + '@esbuild/linux-x64@0.27.3': optional: true - '@esbuild/netbsd-arm64@0.25.12': + '@esbuild/netbsd-arm64@0.27.3': optional: true - '@esbuild/netbsd-x64@0.25.12': + '@esbuild/netbsd-x64@0.27.3': optional: true - '@esbuild/openbsd-arm64@0.25.12': + '@esbuild/openbsd-arm64@0.27.3': optional: true - '@esbuild/openbsd-x64@0.25.12': + '@esbuild/openbsd-x64@0.27.3': optional: true - '@esbuild/openharmony-arm64@0.25.12': + '@esbuild/openharmony-arm64@0.27.3': optional: true - '@esbuild/sunos-x64@0.25.12': + '@esbuild/sunos-x64@0.27.3': optional: true - '@esbuild/win32-arm64@0.25.12': + '@esbuild/win32-arm64@0.27.3': optional: true - '@esbuild/win32-ia32@0.25.12': + '@esbuild/win32-ia32@0.27.3': optional: true - '@esbuild/win32-x64@0.25.12': + '@esbuild/win32-x64@0.27.3': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2)': + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.6.1))': dependencies: - eslint: 9.39.2 + eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -3900,6 +4529,14 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} + '@iconify/types@2.0.0': {} + + '@iconify/utils@3.1.0': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@iconify/types': 2.0.0 + mlly: 1.8.0 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -4085,6 +4722,8 @@ snapshots: transitivePeerDependencies: - '@types/react' + '@polka/url@1.0.0-next.29': {} + '@popperjs/core@2.11.8': {} '@protobufjs/aspromise@1.1.2': {} @@ -4110,6 +4749,10 @@ snapshots: '@protobufjs/utf8@1.1.0': {} + '@quansync/fs@1.0.0': + dependencies: + quansync: 1.0.0 + '@radix-ui/number@1.1.1': {} '@radix-ui/primitive@1.1.3': {} @@ -4201,6 +4844,8 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.53': {} + '@rolldown/pluginutils@1.0.0-rc.2': {} + '@rollup/rollup-android-arm-eabi@4.53.3': optional: true @@ -4315,18 +4960,34 @@ snapshots: '@tanstack/devtools-event-client@0.3.5': {} + '@tanstack/devtools-event-client@0.4.0': {} + '@tanstack/form-core@1.27.3': dependencies: '@tanstack/devtools-event-client': 0.3.5 '@tanstack/pacer-lite': 0.1.1 '@tanstack/store': 0.7.7 + '@tanstack/form-core@1.28.3': + dependencies: + '@tanstack/devtools-event-client': 0.4.0 + '@tanstack/pacer-lite': 0.1.1 + '@tanstack/store': 0.8.1 + + '@tanstack/match-sorter-utils@8.19.4': + dependencies: + remove-accents: 0.5.0 + '@tanstack/pacer-lite@0.1.1': {} '@tanstack/query-core@5.90.12': {} + '@tanstack/query-core@5.90.20': {} + '@tanstack/query-devtools@5.91.1': {} + '@tanstack/query-devtools@5.93.0': {} + '@tanstack/react-form@1.27.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@tanstack/form-core': 1.27.3 @@ -4369,10 +5030,40 @@ snapshots: '@tanstack/store@0.8.0': {} + '@tanstack/store@0.8.1': {} + '@tanstack/table-core@8.21.3': {} '@tanstack/virtual-core@3.13.13': {} + '@tanstack/vue-form@1.28.3(vue@3.5.28(typescript@5.9.3))': + dependencies: + '@tanstack/form-core': 1.28.3 + '@tanstack/vue-store': 0.8.1(vue@3.5.28(typescript@5.9.3)) + vue: 3.5.28(typescript@5.9.3) + transitivePeerDependencies: + - '@vue/composition-api' + + '@tanstack/vue-query-devtools@6.1.5(@tanstack/vue-query@5.92.9(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3))': + dependencies: + '@tanstack/query-devtools': 5.93.0 + '@tanstack/vue-query': 5.92.9(vue@3.5.28(typescript@5.9.3)) + vue: 3.5.28(typescript@5.9.3) + + '@tanstack/vue-query@5.92.9(vue@3.5.28(typescript@5.9.3))': + dependencies: + '@tanstack/match-sorter-utils': 8.19.4 + '@tanstack/query-core': 5.90.20 + '@vue/devtools-api': 6.6.4 + vue: 3.5.28(typescript@5.9.3) + vue-demi: 0.14.10(vue@3.5.28(typescript@5.9.3)) + + '@tanstack/vue-store@0.8.1(vue@3.5.28(typescript@5.9.3))': + dependencies: + '@tanstack/store': 0.8.1 + vue: 3.5.28(typescript@5.9.3) + vue-demi: 0.14.10(vue@3.5.28(typescript@5.9.3)) + '@toolpad/core@0.16.0(c293b658800ea9b57a0fcad7d3f5356e)': dependencies: '@babel/runtime': 7.28.4 @@ -4697,7 +5388,7 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.5 + '@babel/parser': 7.29.0 '@babel/types': 7.28.5 '@types/babel__traverse@7.28.0': @@ -4744,6 +5435,10 @@ snapshots: dependencies: undici-types: 7.16.0 + '@types/node@25.3.0': + dependencies: + undici-types: 7.18.2 + '@types/nprogress@0.2.3': {} '@types/parse-json@4.0.2': {} @@ -4770,15 +5465,15 @@ snapshots: '@types/use-sync-external-store@0.0.6': {} - '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.49.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.49.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.49.0 - '@typescript-eslint/type-utils': 8.49.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.49.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.49.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.49.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.49.0 - eslint: 9.39.2 + eslint: 9.39.2(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.1.0(typescript@5.9.3) @@ -4786,14 +5481,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.49.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.49.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.49.0 '@typescript-eslint/types': 8.49.0 '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.49.0 debug: 4.4.3 - eslint: 9.39.2 + eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -4816,13 +5511,13 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.49.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.49.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.49.0 '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.49.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.49.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3 - eslint: 9.39.2 + eslint: 9.39.2(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -4845,13 +5540,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.49.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.49.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.49.0 '@typescript-eslint/types': 8.49.0 '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) - eslint: 9.39.2 + eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -4863,7 +5558,156 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@5.1.2(vite@7.2.7(@types/node@25.0.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.5.1))': + '@unocss/astro@66.6.0(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2))': + dependencies: + '@unocss/core': 66.6.0 + '@unocss/reset': 66.6.0 + '@unocss/vite': 66.6.0(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2)) + optionalDependencies: + vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2) + + '@unocss/cli@66.6.0': + dependencies: + '@jridgewell/remapping': 2.3.5 + '@unocss/config': 66.6.0 + '@unocss/core': 66.6.0 + '@unocss/preset-wind3': 66.6.0 + '@unocss/preset-wind4': 66.6.0 + '@unocss/transformer-directives': 66.6.0 + cac: 6.7.14 + chokidar: 5.0.0 + colorette: 2.0.20 + consola: 3.4.2 + magic-string: 0.30.21 + pathe: 2.0.3 + perfect-debounce: 2.1.0 + tinyglobby: 0.2.15 + unplugin-utils: 0.3.1 + + '@unocss/config@66.6.0': + dependencies: + '@unocss/core': 66.6.0 + unconfig: 7.5.0 + + '@unocss/core@66.6.0': {} + + '@unocss/extractor-arbitrary-variants@66.6.0': + dependencies: + '@unocss/core': 66.6.0 + + '@unocss/inspector@66.6.0': + dependencies: + '@unocss/core': 66.6.0 + '@unocss/rule-utils': 66.6.0 + colorette: 2.0.20 + gzip-size: 6.0.0 + sirv: 3.0.2 + vue-flow-layout: 0.2.0 + + '@unocss/postcss@66.6.0(postcss@8.5.6)': + dependencies: + '@unocss/config': 66.6.0 + '@unocss/core': 66.6.0 + '@unocss/rule-utils': 66.6.0 + css-tree: 3.1.0 + postcss: 8.5.6 + tinyglobby: 0.2.15 + + '@unocss/preset-attributify@66.6.0': + dependencies: + '@unocss/core': 66.6.0 + + '@unocss/preset-icons@66.6.0': + dependencies: + '@iconify/utils': 3.1.0 + '@unocss/core': 66.6.0 + ofetch: 1.5.1 + + '@unocss/preset-mini@66.6.0': + dependencies: + '@unocss/core': 66.6.0 + '@unocss/extractor-arbitrary-variants': 66.6.0 + '@unocss/rule-utils': 66.6.0 + + '@unocss/preset-tagify@66.6.0': + dependencies: + '@unocss/core': 66.6.0 + + '@unocss/preset-typography@66.6.0': + dependencies: + '@unocss/core': 66.6.0 + '@unocss/rule-utils': 66.6.0 + + '@unocss/preset-uno@66.6.0': + dependencies: + '@unocss/core': 66.6.0 + '@unocss/preset-wind3': 66.6.0 + + '@unocss/preset-web-fonts@66.6.0': + dependencies: + '@unocss/core': 66.6.0 + ofetch: 1.5.1 + + '@unocss/preset-wind3@66.6.0': + dependencies: + '@unocss/core': 66.6.0 + '@unocss/preset-mini': 66.6.0 + '@unocss/rule-utils': 66.6.0 + + '@unocss/preset-wind4@66.6.0': + dependencies: + '@unocss/core': 66.6.0 + '@unocss/extractor-arbitrary-variants': 66.6.0 + '@unocss/rule-utils': 66.6.0 + + '@unocss/preset-wind@66.6.0': + dependencies: + '@unocss/core': 66.6.0 + '@unocss/preset-wind3': 66.6.0 + + '@unocss/reset@66.6.0': {} + + '@unocss/rule-utils@66.6.0': + dependencies: + '@unocss/core': 66.6.0 + magic-string: 0.30.21 + + '@unocss/transformer-attributify-jsx@66.6.0': + dependencies: + '@babel/parser': 7.27.7 + '@babel/traverse': 7.27.7 + '@unocss/core': 66.6.0 + transitivePeerDependencies: + - supports-color + + '@unocss/transformer-compile-class@66.6.0': + dependencies: + '@unocss/core': 66.6.0 + + '@unocss/transformer-directives@66.6.0': + dependencies: + '@unocss/core': 66.6.0 + '@unocss/rule-utils': 66.6.0 + css-tree: 3.1.0 + + '@unocss/transformer-variant-group@66.6.0': + dependencies: + '@unocss/core': 66.6.0 + + '@unocss/vite@66.6.0(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2))': + dependencies: + '@jridgewell/remapping': 2.3.5 + '@unocss/config': 66.6.0 + '@unocss/core': 66.6.0 + '@unocss/inspector': 66.6.0 + chokidar: 5.0.0 + magic-string: 0.30.21 + pathe: 2.0.3 + tinyglobby: 0.2.15 + unplugin-utils: 0.3.1 + vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2) + + '@vitejs/plugin-react@5.1.2(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -4871,10 +5715,145 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.53 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.2.7(@types/node@25.0.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.5.1) + vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2) transitivePeerDependencies: - supports-color + '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': + dependencies: + '@rolldown/pluginutils': 1.0.0-rc.2 + vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2) + vue: 3.5.28(typescript@5.9.3) + + '@volar/language-core@2.4.27': + dependencies: + '@volar/source-map': 2.4.27 + + '@volar/source-map@2.4.27': {} + + '@volar/typescript@2.4.27': + dependencies: + '@volar/language-core': 2.4.27 + path-browserify: 1.0.1 + vscode-uri: 3.1.0 + + '@vue-macros/common@3.1.2(vue@3.5.28(typescript@5.9.3))': + dependencies: + '@vue/compiler-sfc': 3.5.28 + ast-kit: 2.2.0 + local-pkg: 1.1.2 + magic-string-ast: 1.0.3 + unplugin-utils: 0.3.1 + optionalDependencies: + vue: 3.5.28(typescript@5.9.3) + + '@vue/compiler-core@3.5.28': + dependencies: + '@babel/parser': 7.29.0 + '@vue/shared': 3.5.28 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.28': + dependencies: + '@vue/compiler-core': 3.5.28 + '@vue/shared': 3.5.28 + + '@vue/compiler-sfc@3.5.28': + dependencies: + '@babel/parser': 7.29.0 + '@vue/compiler-core': 3.5.28 + '@vue/compiler-dom': 3.5.28 + '@vue/compiler-ssr': 3.5.28 + '@vue/shared': 3.5.28 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.6 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.28': + dependencies: + '@vue/compiler-dom': 3.5.28 + '@vue/shared': 3.5.28 + + '@vue/devtools-api@6.6.4': {} + + '@vue/devtools-api@7.7.9': + dependencies: + '@vue/devtools-kit': 7.7.9 + + '@vue/devtools-api@8.0.6': + dependencies: + '@vue/devtools-kit': 8.0.6 + + '@vue/devtools-kit@7.7.9': + dependencies: + '@vue/devtools-shared': 7.7.9 + birpc: 2.9.0 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.6 + + '@vue/devtools-kit@8.0.6': + dependencies: + '@vue/devtools-shared': 8.0.6 + birpc: 2.9.0 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 2.1.0 + speakingurl: 14.0.1 + superjson: 2.2.6 + + '@vue/devtools-shared@7.7.9': + dependencies: + rfdc: 1.4.1 + + '@vue/devtools-shared@8.0.6': + dependencies: + rfdc: 1.4.1 + + '@vue/language-core@3.2.4': + dependencies: + '@volar/language-core': 2.4.27 + '@vue/compiler-dom': 3.5.28 + '@vue/shared': 3.5.28 + alien-signals: 3.1.2 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + picomatch: 4.0.3 + + '@vue/reactivity@3.5.28': + dependencies: + '@vue/shared': 3.5.28 + + '@vue/runtime-core@3.5.28': + dependencies: + '@vue/reactivity': 3.5.28 + '@vue/shared': 3.5.28 + + '@vue/runtime-dom@3.5.28': + dependencies: + '@vue/reactivity': 3.5.28 + '@vue/runtime-core': 3.5.28 + '@vue/shared': 3.5.28 + csstype: 3.2.3 + + '@vue/server-renderer@3.5.28(vue@3.5.28(typescript@5.9.3))': + dependencies: + '@vue/compiler-ssr': 3.5.28 + '@vue/shared': 3.5.28 + vue: 3.5.28(typescript@5.9.3) + + '@vue/shared@3.5.28': {} + + '@vue/tsconfig@0.8.1(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3))': + optionalDependencies: + typescript: 5.9.3 + vue: 3.5.28(typescript@5.9.3) + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -4888,6 +5867,8 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + alien-signals@3.1.2: {} + ansi-regex@5.0.1: {} ansi-styles@4.3.0: @@ -4904,6 +5885,16 @@ snapshots: argparse@2.0.1: {} + ast-kit@2.2.0: + dependencies: + '@babel/parser': 7.29.0 + pathe: 2.0.3 + + ast-walker-scope@0.8.3: + dependencies: + '@babel/parser': 7.29.0 + ast-kit: 2.2.0 + asynckit@0.4.0: {} attr-accept@2.2.5: {} @@ -4935,6 +5926,8 @@ snapshots: binary-extensions@2.3.0: optional: true + birpc@2.9.0: {} + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -4957,6 +5950,8 @@ snapshots: node-releases: 2.0.27 update-browserslist-db: 1.2.2(browserslist@4.28.1) + cac@6.7.14: {} + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -4994,6 +5989,10 @@ snapshots: fsevents: 2.3.3 optional: true + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + classnames@2.5.1: {} client-only@0.0.1: {} @@ -5026,6 +6025,8 @@ snapshots: color-name@1.1.4: {} + colorette@2.0.20: {} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -5036,12 +6037,22 @@ snapshots: concat-map@0.0.1: {} + confbox@0.1.8: {} + + confbox@0.2.4: {} + + consola@3.4.2: {} + convert-source-map@1.9.0: {} convert-source-map@2.0.0: {} cookie@1.1.1: {} + copy-anything@4.0.5: + dependencies: + is-what: 5.5.0 + cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.2 @@ -5056,6 +6067,11 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + csstype@3.2.3: {} d3-array@3.2.4: @@ -5112,10 +6128,14 @@ snapshots: deep-is@0.1.4: {} + defu@6.1.4: {} + delayed-stream@1.0.0: {} dequal@2.0.3: {} + destr@2.0.5: {} + detect-libc@2.1.2: optional: true @@ -5144,10 +6164,14 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + duplexer@0.1.2: {} + electron-to-chromium@1.5.267: {} emoji-regex@8.0.0: {} + entities@7.0.1: {} + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -5169,34 +6193,34 @@ snapshots: es-toolkit@1.43.0: {} - esbuild@0.25.12: + esbuild@0.27.3: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.12 - '@esbuild/android-arm': 0.25.12 - '@esbuild/android-arm64': 0.25.12 - '@esbuild/android-x64': 0.25.12 - '@esbuild/darwin-arm64': 0.25.12 - '@esbuild/darwin-x64': 0.25.12 - '@esbuild/freebsd-arm64': 0.25.12 - '@esbuild/freebsd-x64': 0.25.12 - '@esbuild/linux-arm': 0.25.12 - '@esbuild/linux-arm64': 0.25.12 - '@esbuild/linux-ia32': 0.25.12 - '@esbuild/linux-loong64': 0.25.12 - '@esbuild/linux-mips64el': 0.25.12 - '@esbuild/linux-ppc64': 0.25.12 - '@esbuild/linux-riscv64': 0.25.12 - '@esbuild/linux-s390x': 0.25.12 - '@esbuild/linux-x64': 0.25.12 - '@esbuild/netbsd-arm64': 0.25.12 - '@esbuild/netbsd-x64': 0.25.12 - '@esbuild/openbsd-arm64': 0.25.12 - '@esbuild/openbsd-x64': 0.25.12 - '@esbuild/openharmony-arm64': 0.25.12 - '@esbuild/sunos-x64': 0.25.12 - '@esbuild/win32-arm64': 0.25.12 - '@esbuild/win32-ia32': 0.25.12 - '@esbuild/win32-x64': 0.25.12 + '@esbuild/aix-ppc64': 0.27.3 + '@esbuild/android-arm': 0.27.3 + '@esbuild/android-arm64': 0.27.3 + '@esbuild/android-x64': 0.27.3 + '@esbuild/darwin-arm64': 0.27.3 + '@esbuild/darwin-x64': 0.27.3 + '@esbuild/freebsd-arm64': 0.27.3 + '@esbuild/freebsd-x64': 0.27.3 + '@esbuild/linux-arm': 0.27.3 + '@esbuild/linux-arm64': 0.27.3 + '@esbuild/linux-ia32': 0.27.3 + '@esbuild/linux-loong64': 0.27.3 + '@esbuild/linux-mips64el': 0.27.3 + '@esbuild/linux-ppc64': 0.27.3 + '@esbuild/linux-riscv64': 0.27.3 + '@esbuild/linux-s390x': 0.27.3 + '@esbuild/linux-x64': 0.27.3 + '@esbuild/netbsd-arm64': 0.27.3 + '@esbuild/netbsd-x64': 0.27.3 + '@esbuild/openbsd-arm64': 0.27.3 + '@esbuild/openbsd-x64': 0.27.3 + '@esbuild/openharmony-arm64': 0.27.3 + '@esbuild/sunos-x64': 0.27.3 + '@esbuild/win32-arm64': 0.27.3 + '@esbuild/win32-ia32': 0.27.3 + '@esbuild/win32-x64': 0.27.3 escalade@3.2.0: {} @@ -5204,20 +6228,20 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-plugin-react-hooks@7.0.1(eslint@9.39.2): + eslint-plugin-react-hooks@7.0.1(eslint@9.39.2(jiti@2.6.1)): dependencies: '@babel/core': 7.28.5 - '@babel/parser': 7.28.5 - eslint: 9.39.2 + '@babel/parser': 7.29.0 + eslint: 9.39.2(jiti@2.6.1) hermes-parser: 0.25.1 zod: 4.1.13 zod-validation-error: 4.0.2(zod@4.1.13) transitivePeerDependencies: - supports-color - eslint-plugin-react-refresh@0.4.24(eslint@9.39.2): + eslint-plugin-react-refresh@0.4.24(eslint@9.39.2(jiti@2.6.1)): dependencies: - eslint: 9.39.2 + eslint: 9.39.2(jiti@2.6.1) eslint-scope@8.4.0: dependencies: @@ -5228,9 +6252,9 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.39.2: + eslint@9.39.2(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.2 @@ -5264,6 +6288,8 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 + optionalDependencies: + jiti: 2.6.1 transitivePeerDependencies: - supports-color @@ -5283,6 +6309,8 @@ snapshots: estraverse@5.3.0: {} + estree-walker@2.0.2: {} + esutils@2.0.3: {} eventemitter3@5.0.1: {} @@ -5299,6 +6327,8 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + exsolve@1.0.8: {} + extend@3.0.2: {} fast-deep-equal@3.1.3: {} @@ -5432,6 +6462,8 @@ snapshots: dependencies: is-glob: 4.0.3 + globals@11.12.0: {} + globals@14.0.0: {} globals@16.5.0: {} @@ -5442,6 +6474,10 @@ snapshots: gopd@1.2.0: {} + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + has-flag@4.0.0: {} has-symbols@1.1.0: {} @@ -5486,6 +6522,8 @@ snapshots: dependencies: react-is: 16.13.1 + hookable@5.5.3: {} + html-parse-stringify@3.0.1: dependencies: void-elements: 3.1.0 @@ -5562,6 +6600,8 @@ snapshots: is-stream@3.0.0: {} + is-what@5.5.0: {} + is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 @@ -5574,6 +6614,8 @@ snapshots: javascript-natural-sort@0.7.1: {} + jiti@2.6.1: {} + js-tokens@4.0.0: {} js-yaml@4.1.1: @@ -5653,6 +6695,12 @@ snapshots: lines-and-columns@1.2.4: {} + local-pkg@1.1.2: + dependencies: + mlly: 1.8.0 + pkg-types: 2.3.0 + quansync: 0.2.11 + localforage@1.10.0: dependencies: lie: 3.1.1 @@ -5679,6 +6727,14 @@ snapshots: dependencies: yallist: 3.1.1 + magic-string-ast@1.0.3: + dependencies: + magic-string: 0.30.21 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + math-intrinsics@1.1.0: {} mathjs@15.1.0: @@ -5705,6 +6761,8 @@ snapshots: unist-util-visit: 5.0.0 vfile: 6.0.3 + mdn-data@2.12.2: {} + merge-stream@2.0.0: {} micromark-util-character@2.1.1: @@ -5740,12 +6798,27 @@ snapshots: dependencies: brace-expansion: 2.0.2 + mitt@3.0.1: {} + + mlly@1.8.0: + dependencies: + acorn: 8.15.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.3 + + mrmime@2.0.1: {} + ms@2.1.3: {} + muggle-string@0.4.1: {} + nanoid@3.3.11: {} natural-compare@1.4.0: {} + node-fetch-native@1.6.7: {} + node-releases@2.0.27: {} normalize-path@3.0.0: @@ -5768,6 +6841,12 @@ snapshots: object-assign@4.1.1: {} + ofetch@1.5.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.3 + onetime@6.0.0: dependencies: mimic-fn: 4.0.0 @@ -5811,6 +6890,8 @@ snapshots: p-try@2.2.0: {} + package-manager-detector@1.6.0: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -5822,6 +6903,8 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + path-browserify@1.0.1: {} + path-exists@4.0.0: {} path-key@3.1.1: {} @@ -5834,6 +6917,12 @@ snapshots: path-type@4.0.0: {} + pathe@2.0.3: {} + + perfect-debounce@1.0.0: {} + + perfect-debounce@2.1.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: @@ -5841,6 +6930,25 @@ snapshots: picomatch@4.0.3: {} + pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)): + dependencies: + '@vue/devtools-api': 7.7.9 + vue: 3.5.28(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.0 + pathe: 2.0.3 + + pkg-types@2.3.0: + dependencies: + confbox: 0.2.4 + exsolve: 1.0.8 + pathe: 2.0.3 + pngjs@5.0.0: {} postcss@8.5.6: @@ -5853,7 +6961,7 @@ snapshots: prettier@3.5.3: {} - prettier@3.7.4: {} + prettier@3.8.1: {} prop-types@15.8.1: dependencies: @@ -5888,6 +6996,10 @@ snapshots: pngjs: 5.0.0 yargs: 15.4.1 + quansync@0.2.11: {} + + quansync@1.0.0: {} + react-dom@19.2.4(react@19.2.4): dependencies: react: 19.2.4 @@ -5964,6 +7076,8 @@ snapshots: picomatch: 2.3.1 optional: true + readdirp@5.0.0: {} + recharts@3.5.1(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.3)(react@19.2.4)(redux@5.0.1): dependencies: '@reduxjs/toolkit': 2.11.1(react-redux@9.2.0(@types/react@19.2.7)(react@19.2.4)(redux@5.0.1))(react@19.2.4) @@ -6000,6 +7114,8 @@ snapshots: dependencies: regex-utilities: 2.3.0 + remove-accents@0.5.0: {} + require-directory@2.1.1: {} require-main-filename@2.0.0: {} @@ -6014,6 +7130,8 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + rfdc@1.4.1: {} + rollup@4.53.3: dependencies: '@types/estree': 1.0.8 @@ -6053,6 +7171,8 @@ snapshots: scheduler@0.27.0: {} + scule@1.3.0: {} + seedrandom@3.0.5: {} semver@6.3.1: {} @@ -6082,12 +7202,20 @@ snapshots: signal-exit@4.1.0: {} + sirv@3.0.2: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + source-map-js@1.2.1: {} source-map@0.5.7: {} space-separated-tokens@2.0.2: {} + speakingurl@14.0.1: {} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -6109,6 +7237,10 @@ snapshots: stylis@4.2.0: {} + superjson@2.2.6: + dependencies: + copy-anything: 4.0.5 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -6121,6 +7253,8 @@ snapshots: tiny-invariant@1.3.3: {} + tinyexec@1.0.2: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -6137,6 +7271,8 @@ snapshots: is-number: 7.0.0 optional: true + totalist@3.0.1: {} + trim-lines@3.0.1: {} trough@2.2.0: {} @@ -6153,21 +7289,38 @@ snapshots: typed-function@4.2.2: {} - typescript-eslint@8.49.0(eslint@9.39.2)(typescript@5.9.3): + typescript-eslint@8.49.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.49.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.49.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.49.0(eslint@9.39.2)(typescript@5.9.3) - eslint: 9.39.2 + '@typescript-eslint/utils': 8.49.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color typescript@5.9.3: {} + ufo@1.6.3: {} + + unconfig-core@7.5.0: + dependencies: + '@quansync/fs': 1.0.0 + quansync: 1.0.0 + + unconfig@7.5.0: + dependencies: + '@quansync/fs': 1.0.0 + defu: 6.1.4 + jiti: 2.6.1 + quansync: 1.0.0 + unconfig-core: 7.5.0 + undici-types@7.16.0: {} + undici-types@7.18.2: {} + unified@11.0.5: dependencies: '@types/unist': 3.0.3 @@ -6201,6 +7354,44 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 + unocss@66.6.0(postcss@8.5.6)(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2)): + dependencies: + '@unocss/astro': 66.6.0(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2)) + '@unocss/cli': 66.6.0 + '@unocss/core': 66.6.0 + '@unocss/postcss': 66.6.0(postcss@8.5.6) + '@unocss/preset-attributify': 66.6.0 + '@unocss/preset-icons': 66.6.0 + '@unocss/preset-mini': 66.6.0 + '@unocss/preset-tagify': 66.6.0 + '@unocss/preset-typography': 66.6.0 + '@unocss/preset-uno': 66.6.0 + '@unocss/preset-web-fonts': 66.6.0 + '@unocss/preset-wind': 66.6.0 + '@unocss/preset-wind3': 66.6.0 + '@unocss/preset-wind4': 66.6.0 + '@unocss/transformer-attributify-jsx': 66.6.0 + '@unocss/transformer-compile-class': 66.6.0 + '@unocss/transformer-directives': 66.6.0 + '@unocss/transformer-variant-group': 66.6.0 + '@unocss/vite': 66.6.0(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2)) + optionalDependencies: + vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2) + transitivePeerDependencies: + - postcss + - supports-color + + unplugin-utils@0.3.1: + dependencies: + pathe: 2.0.3 + picomatch: 4.0.3 + + unplugin@3.0.0: + dependencies: + '@jridgewell/remapping': 2.3.5 + picomatch: 4.0.3 + webpack-virtual-modules: 0.6.2 + update-browserslist-db@1.2.2(browserslist@4.28.1): dependencies: browserslist: 4.28.1 @@ -6247,25 +7438,76 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - vite@7.2.7(@types/node@25.0.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.5.1): + vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.77.8)(yaml@2.8.2): dependencies: - esbuild: 0.25.12 + esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 rollup: 4.53.3 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.0.1 + '@types/node': 25.3.0 fsevents: 2.3.3 + jiti: 2.6.1 lightningcss: 1.30.1 sass: 1.77.8 - yaml: 2.5.1 + yaml: 2.8.2 void-elements@3.1.0: {} + vscode-uri@3.1.0: {} + + vue-demi@0.14.10(vue@3.5.28(typescript@5.9.3)): + dependencies: + vue: 3.5.28(typescript@5.9.3) + + vue-flow-layout@0.2.0: {} + + vue-router@5.0.3(@vue/compiler-sfc@3.5.28)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)): + dependencies: + '@babel/generator': 7.29.1 + '@vue-macros/common': 3.1.2(vue@3.5.28(typescript@5.9.3)) + '@vue/devtools-api': 8.0.6 + ast-walker-scope: 0.8.3 + chokidar: 5.0.0 + json5: 2.2.3 + local-pkg: 1.1.2 + magic-string: 0.30.21 + mlly: 1.8.0 + muggle-string: 0.4.1 + pathe: 2.0.3 + picomatch: 4.0.3 + scule: 1.3.0 + tinyglobby: 0.2.15 + unplugin: 3.0.0 + unplugin-utils: 0.3.1 + vue: 3.5.28(typescript@5.9.3) + yaml: 2.8.2 + optionalDependencies: + '@vue/compiler-sfc': 3.5.28 + pinia: 3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)) + + vue-tsc@3.2.4(typescript@5.9.3): + dependencies: + '@volar/typescript': 2.4.27 + '@vue/language-core': 3.2.4 + typescript: 5.9.3 + + vue@3.5.28(typescript@5.9.3): + dependencies: + '@vue/compiler-dom': 3.5.28 + '@vue/compiler-sfc': 3.5.28 + '@vue/runtime-dom': 3.5.28 + '@vue/server-renderer': 3.5.28(vue@3.5.28(typescript@5.9.3)) + '@vue/shared': 3.5.28 + optionalDependencies: + typescript: 5.9.3 + web-vitals@4.2.4: {} + webpack-virtual-modules@0.6.2: {} + websocket-driver@0.7.4: dependencies: http-parser-js: 0.5.10 @@ -6310,6 +7552,8 @@ snapshots: yaml@2.5.1: {} + yaml@2.8.2: {} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 7caf2dee..d7acde4f 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,5 +1,9 @@ +packages: + - packages/* + onlyBuiltDependencies: - '@firebase/util' - '@tsparticles/engine' - esbuild - protobufjs + - vue-demi diff --git a/src/pages/invoices/component.tsx b/src/pages/invoices/component.tsx deleted file mode 100644 index 473050b5..00000000 --- a/src/pages/invoices/component.tsx +++ /dev/null @@ -1,457 +0,0 @@ -import { - AddOutlined, - CloseOutlined, - DeleteOutlined, - OutputOutlined, -} from "@mui/icons-material"; -import { - Box, - Button, - Card, - CardContent, - CardHeader, - Checkbox, - Divider, - Grid, - IconButton, - Table, - TableBody, - TableCell, - TableContainer, - TableHead, - TablePagination, - TableRow, - Typography, -} from "@mui/material"; -import { DatePicker } from "@mui/x-date-pickers"; -import { - createColumnHelper, - flexRender, - getCoreRowModel, - useReactTable, -} from "@tanstack/react-table"; -import dayjs from "dayjs"; -import * as mathjs from "mathjs"; -import React from "react"; -import { Link, useParams } from "react-router"; -import { db } from "@/lib/db"; -import type { Invoice } from "@/lib/db"; -import { useLiveQuery } from "dexie-react-hooks"; - -const columnHelper = createColumnHelper(); - -const columns = [ - columnHelper.display({ - id: "selection", - header(props) { - return ( - - ); - }, - cell(props) { - return ( - - ); - }, - }), - columnHelper.accessor("id", {}), - columnHelper.accessor("amount", {}), - columnHelper.accessor("staff", { - cell(props) { - return props.getValue().join(";"); - }, - }), - columnHelper.accessor("note", {}), - columnHelper.accessor("date", { - cell(props) { - return new Date(props.getValue()).toLocaleDateString(); - }, - }), - columnHelper.display({ - id: "actions", - header: () => Actions, - cell: (info) => ( - { - db.invoices.delete(info.row.getValue("id")); - }} - > - - - ), - }), -]; - -const cellPaddingMap = new Map([ - ["selection", "checkbox"], -]); - -type SearchValue = { - startDate: string; - endDate: string; - pageIndex: number; - pageSize: number; -}; - -const renderDayjsValue = (value: string) => (value ? dayjs(value) : null); -const initSearch = (): SearchValue => ({ - startDate: new Date().toISOString(), - endDate: new Date().toISOString(), - pageIndex: 0, - pageSize: 20, -}); - -type InvoiceTableProps = { - onView: (rows: Invoice[]) => void; - search: SearchValue; - onSearchChange: React.Dispatch>; -}; - -const InvoiceTable = (props: InvoiceTableProps) => { - "use no memo"; - - const { search, onSearchChange: setSearchValue } = props; - - const params = useParams(); - - const invoices = useLiveQuery(async () => { - const count = await db.invoices - .where("date") - .between( - dayjs(search.startDate).startOf("day").toISOString(), - dayjs(search.endDate).endOf("day").toISOString(), - ) - .count(); - const rows = await db.invoices - .where("date") - .between( - dayjs(search.startDate).startOf("day").toISOString(), - dayjs(search.endDate).endOf("day").toISOString(), - ) - /** - * NOTE: - * offset must be called before limit - * if called limt before offset, it will not work as expected - * it will limit the number of rows first, then offset the rows - * this is same as SQL - * @link https://dexie.org/docs/api-classes/Dexie.Table/offset#note - */ - .offset(search.pageIndex * search.pageSize) - .limit(search.pageSize) - .toArray(); - return { rows, count }; - }, [search.startDate, search.endDate, search.pageIndex, search.pageSize]); - - const data = React.useMemo(() => invoices?.rows || [], [invoices]); - - const table = useReactTable({ - getCoreRowModel: getCoreRowModel(), - columns, - data, - getRowId: (r) => r.id.toString(), - rowCount: invoices?.count || 0, - - manualPagination: true, - }); - - const renderBody = () => { - if (!table.getRowCount()) { - return ( - - - No Data - - - ); - } - - return table.getRowModel().rows.map((r) => ( - - {r.getVisibleCells().map((c) => ( - - {c.getIsPlaceholder() || - flexRender(c.column.columnDef.cell, c.getContext())} - - ))} - - )); - }; - - return ( - - - - - - { - setSearchValue((prev) => { - if (!prev) { - return { - startDate: e?.toISOString() || "", - endDate: search.endDate, - pageIndex: search.pageIndex, - pageSize: search.pageSize, - }; - } - - return { - ...prev, - startDate: e?.toISOString() || "", - }; - }); - }} - slotProps={{ - textField: { fullWidth: true, label: "Date" }, - // field: { clearable: true }, - }} - /> - - - { - setSearchValue((prev) => { - if (!prev) { - return { - startDate: search.startDate, - endDate: e?.endOf("day").toISOString() || "", - pageIndex: search.pageIndex, - pageSize: search.pageSize, - }; - } - - return { - ...prev, - endDate: e?.endOf("day").toISOString() || "", - }; - }); - }} - slotProps={{ - textField: { fullWidth: true, label: "Date" }, - // field: { clearable: true }, - }} - /> - - - - - - - - - - - - - - - {table.getHeaderGroups().map((hg) => ( - - {hg.headers.map((h) => ( - - {h.isPlaceholder || - flexRender(h.column.columnDef.header, h.getContext())} - - ))} - - ))} - - {renderBody()} -
-
- { - void e; - setSearchValue((prev) => { - if (!prev) { - return { - startDate: search.startDate, - endDate: search.endDate, - pageIndex: idx, - pageSize: search.pageSize, - }; - } - - return { - ...prev, - pageIndex: idx, - }; - }); - }} - onRowsPerPageChange={(e) => { - const pageSize = Number.parseInt(e.target.value); - setSearchValue((prev) => { - if (!prev) { - return { - startDate: search.startDate, - endDate: search.endDate, - pageIndex: search.pageIndex, - pageSize, - }; - } - - return { - ...prev, - pageSize, - }; - }); - }} - rowsPerPageOptions={[20, 50, 100]} - /> -
- ); -}; - -type ResultPanelProps = { - rows: Invoice[]; - onClose: () => void; -}; - -const ResultPanel = (props: ResultPanelProps) => { - const staffs = [...new Set(props.rows.flatMap((i) => i.staff))]; - - const map = new Map(); - - staffs.forEach((staff) => { - map.set( - staff, - props.rows - .filter((i) => i.staff.includes(staff)) - .reduce((r, i) => { - return mathjs - .add( - mathjs.divide( - mathjs.bignumber(i.amount), - mathjs.bignumber(i.staff.length), - ), - mathjs.bignumber(r), - ) - .toString(); - }, "0"), - ); - }); - - return ( - - - - - } - /> - - - STAFF - AMOUNT - - - {[...map.entries()].map((i) => ( - - {i[0]} - {i[1]} - - ))} - -
-
- ); -}; - -export const Component = () => { - const [rows, setRows] = React.useState(null); - const [search, setSearchValue] = React.useState(initSearch); - - if (!rows) { - return ( - - ); - } - - return setRows(null)} />; -}; diff --git a/src/pages/invoices_new/component.tsx b/src/pages/invoices_new/component.tsx deleted file mode 100644 index e05ce8b0..00000000 --- a/src/pages/invoices_new/component.tsx +++ /dev/null @@ -1,527 +0,0 @@ -import { - AddOutlined, - CloseOutlined, - RestoreOutlined, - SaveOutlined, -} from "@mui/icons-material"; -import { - Box, - Button, - Card, - CardActions, - CardContent, - CardHeader, - Divider, - FormControlLabel, - FormLabel, - Grid, - IconButton, - ToggleButtonGroup, - TextField, - type TextFieldProps, - ToggleButton, - Typography, - RadioGroup, - Radio, -} from "@mui/material"; -import { zodResolver } from "@hookform/resolvers/zod"; -import React from "react"; -import { Controller, useFieldArray, useForm } from "react-hook-form"; -import { useNavigate, useParams } from "react-router"; -import { z } from "zod"; -import { DatePicker } from "@mui/x-date-pickers"; -import dayjs from "dayjs"; -import * as mathjs from "mathjs"; -import { error } from "@/lib/utils"; -import { db } from "@/lib/db"; - -const renderVal = ( - focused: boolean, - focusVal: number | string, - value: number, -) => { - if (focused) { - return focusVal; - } - - if (Number.isNaN(value)) { - return ""; - } - - return value; -}; - -const valToFocusVal = (val: number) => { - if (Number.isNaN(val)) { - return ""; - } - - return val; -}; - -type NumberFieldProps = Omit & { - value: number; - onChange(val: number): void; -}; - -const NumberField = (props: NumberFieldProps) => { - const { value, onChange, onBlur, onFocus, ...restProps } = props; - const [focused, setFocused] = React.useState(false); - const [focusVal, setFocusVal] = React.useState(""); - - return ( - { - onFocus?.(e); - setFocused(true); - setFocusVal(valToFocusVal(value)); - }} - onBlur={(e) => { - onBlur?.(e); - setFocused(false); - onChange(Number.parseFloat(e.target.value.trim())); - }} - onChange={(e) => { - setFocusVal(e.target.value); - }} - slotProps={{ htmlInput: { inputMode: "numeric" } }} - {...restProps} - /> - ); -}; - -const getDate = () => { - return dayjs(new Date()).startOf("day").toISOString(); -}; - -const calculatorSubsidy = ( - start: string, - end: string, - subsidyPerDay: string, -) => { - const startVal = dayjs(start).startOf("day").valueOf(); - const endVal = dayjs(end).endOf("day").valueOf(); - - return mathjs - .multiply( - mathjs.divide( - mathjs.subtract( - mathjs.sum(mathjs.bignumber(endVal), mathjs.bignumber(1)), - mathjs.bignumber(startVal), - ), - mathjs.bignumber(1000 * 60 * 60 * 24), - ), - mathjs.bignumber(subsidyPerDay), - ) - .toString(); -}; - -const calculatorAmount = ( - start: string, - end: string, - subsidyPerDay: string, - enableDate: boolean, - amount: number, -) => { - if (!enableDate) return amount; - return calculatorSubsidy(start, end, subsidyPerDay); -}; - -const schema = z.object({ - invoices: z - .object({ - amount: z.number().or(z.nan()), - staff: z.string().min(1), - note: z.string(), - start: z.string(), - end: z.string(), - subsidyPerDay: z.string(), - type: z.enum(["invoice", "subsidy"] as const), - }) - .refine( - (val) => { - if (val.type === "invoice") { - return !Number.isNaN(val.amount); - } - - return true; - }, - { message: "must be a number", path: ["amount"] }, - ) - .array() - .min(1), -}); - -type FormValues = z.infer; - -const useAddForm = () => - useForm({ - defaultValues: { - invoices: [ - { - amount: Number.NaN, - staff: "", - note: "", - start: getDate(), - end: getDate(), - subsidyPerDay: "100", - type: "invoice", - }, - ], - }, - - resolver: zodResolver(schema), - }); - -export const Component = () => { - const formId = React.useId(); - const datalistId = React.useId(); - - const params = useParams(); - const navigate = useNavigate(); - const form = useAddForm(); - const fields = useFieldArray({ control: form.control, name: "invoices" }); - - const renderInvoice = (idx: number) => { - return ( - <> - - ( - - )} - /> - - - ( - - )} - /> - - - ( - - )} - /> - - - ); - }; - - const renderSubsidy = (idx: number) => { - const startVal = form.watch(`invoices.${idx}.start`); - const endVal = form.watch(`invoices.${idx}.end`); - const subsidyPerDay = form.watch(`invoices.${idx}.subsidyPerDay`); - - return ( - <> - - ( - { - if (!val) return; - field.onChange(val.startOf("day").toISOString()); - }} - maxDate={dayjs(endVal)} - slotProps={{ - textField: { fullWidth: true, label: "Start Date" }, - }} - /> - )} - /> - - - ( - { - if (!val) return; - field.onChange(val.startOf("day").toISOString()); - }} - minDate={dayjs(startVal)} - slotProps={{ - textField: { fullWidth: true, label: "End Date" }, - }} - /> - )} - /> - - - ( - - )} - /> - - - ( - - )} - /> - - - ( - - )} - /> - - - Subsidy per day - ( - { - void e; - field.onChange(val); - }} - row - > - } /> - } /> - - )} - /> - - - ); - }; - - return ( - - - - - - - - { - navigate(`/${params.lang}/invoices`); - }} - > - - - } - /> - -
- form.handleSubmit(async (data) => { - const staffs = await db.staffs - .where("alias") - .anyOf(data.invoices.flatMap((i) => i.staff.split("@"))) - .toArray(); - const alias = staffs.filter((s) => s.enable); - const aliasMap = new Map( - alias.map((staff) => [staff.alias, staff]), - ); - - await db.invoices.bulkAdd( - data.invoices.map((i) => ({ - staff: i.staff.split("@").map((s) => { - const staffName = s.trim(); - return aliasMap.get(staffName)?.name || staffName; - }), - note: i.note, - date: getDate(), - amount: +calculatorAmount( - i.start, - i.end, - i.subsidyPerDay, - i.type === "subsidy", - i.amount, - ), - })), - ); - - await navigate("/" + params.lang + "/invoices"); - }, error)() - } - onReset={() => form.reset()} - noValidate - > - - {fields.fields.map((f, idx) => { - const typeVal = form.watch(`invoices.${idx}.type`); - const isSubsidy = typeVal === "subsidy"; - - return ( - - {!!idx && ( - - - - )} - - - t.palette.primary.main }}> - #{idx + 1} - - {!!idx && ( - fields.remove(idx)} - sx={{ marginInlineStart: "auto" }} - > - - - )} - - - - ( - { - field.onChange(val); - void e; - }} - exclusive - > - Invoice - Subsidy - - )} - /> - - {isSubsidy ? renderSubsidy(idx) : renderInvoice(idx)} - - ); - })} - -
-
- - - - - -
- ); -}; diff --git a/src/pages/snackbar/component.tsx b/src/pages/snackbar/component.tsx deleted file mode 100644 index bb0236f0..00000000 --- a/src/pages/snackbar/component.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import { useLocaleDate } from "@/hooks/dom/useLocaleDate"; -import { useLocaleTime } from "@/hooks/dom/useLocaleTime"; -import { - Button, - Card, - CardActions, - CardContent, - CardHeader, - Paper, - Stack, - Typography, -} from "@mui/material"; -import dayjs from "dayjs"; -import { useSnackbar } from "notistack"; - -const createToday = () => { - const today = dayjs(); - const date = today.format("YYYY-MM-DD"); - const time = today.format("HH:mm:ss"); - - return [date, time] as const; -}; - -export const Component = () => { - const snackbar = useSnackbar(); - const time = useLocaleTime(); - const date = useLocaleDate(); - - /** - * 1. React Compiler treats functions executed in components as pure functions - * 2. During re-render, the function is only executed again if the parameters of the pure function change - * 3. The dateString and timeString returned below remain consistent due to React Compiler's optimization - */ - const [dateString, timeString] = createToday(); - - return ( - - - - {time} - - - {date} - - - - - - - - - - - - - - - - - ); -}; diff --git a/src/router/guard.tsx b/src/router/guard.tsx deleted file mode 100644 index 3b8b4fe2..00000000 --- a/src/router/guard.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import React from "react"; -import { useQuery } from "@tanstack/react-query"; -import { Outlet } from "react-router"; -import { useLocalStore } from "@/hooks/store/useLocalStore"; -import { fetchUserByFirebase, netlify } from "@/api/netlify"; -import { useCurrentUser } from "@/hooks/firebase/useCurrentUser"; -import { NavigateToHome, NavigateToLogin } from "./nav"; - -export const GuestGuard = () => - useCurrentUser() ? : ; - -export const AuthGuard = () => { - const user = useCurrentUser(); - const netlifyToken = useLocalStore((s) => s.netlifyToken); - const setNetlifyToken = useLocalStore.setState; - - const auth = useQuery({ - ...fetchUserByFirebase({ - data: { - firebaseId: user?.uid || "", - name: user?.displayName || "", - }, - }), - enabled: !!user?.uid, - }); - - React.useInsertionEffect(() => { - if (!auth.data?.data.token) return; - setNetlifyToken({ netlifyToken: auth.data.data.token }); - }, [auth.data?.data.token]); - - React.useInsertionEffect(() => { - if (!netlifyToken) return; - - const id = netlify.interceptors.request.use((config) => { - config.headers.setAuthorization(`Bearer ${netlifyToken}`, false); - return config; - }); - - return () => { - netlify.interceptors.request.eject(id); - }; - }, [netlifyToken]); - - return user ? : ; -}; diff --git a/src/router/routes.ts b/src/router/routes.ts deleted file mode 100644 index d3442a83..00000000 --- a/src/router/routes.ts +++ /dev/null @@ -1,150 +0,0 @@ -import { AuthLayout } from "@/components/layout/auth"; -import { DashLayout } from "./layout"; -import { AuthGuard, GuestGuard } from "./guard"; -import { RootRoute, RootErrorBoundary, RootHydrateFallback } from "./root"; -import type { RouteObject } from "react-router"; - -export const createRoutes = (): RouteObject[] => { - return [ - { - path: ":lang?", - Component: RootRoute, - ErrorBoundary: RootErrorBoundary, - HydrateFallback: RootHydrateFallback, - loader: async () => {}, - middleware: [], - children: [ - { - path: "*", - lazy: () => import("@/pages/not-fount/component"), - }, - { - Component: GuestGuard, - children: [ - { - path: "login", - lazy: () => import("@/pages/login/component"), - }, - ], - }, - { - Component: AuthGuard, - children: [ - { - Component: DashLayout, - children: [ - { - path: "overtime", - children: [ - { - index: true, - lazy: () => import("@/pages/overtime"), - }, - { - path: "new", - lazy: () => import("@/pages/overtime_new/component"), - }, - ], - }, - ], - }, - ], - }, - { - Component: DashLayout, - children: [ - { - path: "dashboard", - lazy: () => import("@/pages/dashboard/component"), - }, - { - path: "rank", - lazy: () => import("@/pages/rank/component"), - }, - { - path: "lab", - lazy: () => import("@/pages/lab/component"), - }, - { - path: "animate", - lazy: () => import("@/pages/animate/component"), - }, - { - path: "invoices", - children: [ - { - index: true, - lazy: () => import("@/pages/invoices/component"), - }, - { - path: "new", - lazy: () => import("@/pages/invoices_new/component"), - }, - ], - }, - { - index: true, - lazy: () => import("@/pages/lab/component"), - }, - { - path: "snackbar", - lazy: () => import("@/pages/snackbar/component"), - }, - { - path: "dnd/:tab?", - lazy: () => - import("@/pages/stories/1 - Core/Draggable/1-Draggable.story"), - }, - { - path: "dragoverlay/:tab?", - lazy: () => - import("@/pages/stories/1 - Core/Draggable/2-DragOverlay.story"), - }, - { - path: "dropable/:tab?", - lazy: () => - import("@/pages/stories/1 - Core/Droppable/Droppable.story"), - }, - { - path: "sortable-vertical/:tab?", - lazy: () => - import("@/pages/stories/2 - Presets/Sortable/1-Vertical.story"), - }, - { - path: "sortable-horizontal/:tab?", - lazy: () => - import("@/pages/stories/2 - Presets/Sortable/2-Horizontal.story"), - }, - { - path: "sortable-grid/:tab?", - lazy: () => - import("@/pages/stories/2 - Presets/Sortable/3-Grid.story"), - }, - { - path: "sortable-multiple-containers/:tab?", - lazy: () => - import("@/pages/stories/2 - Presets/Sortable/4-MultipleContainers.story"), - }, - ], - }, - { - Component: AuthLayout, - children: [ - { - path: "scrollbar", - lazy: () => import("@/pages/scrollbar/component"), - }, - { - path: "virtual", - lazy: () => import("@/pages/virtual/component"), - }, - { - path: "electric", - lazy: () => import("@/pages/electric/component"), - }, - ], - }, - ], - }, - ]; -}; diff --git a/vite.config.ts b/vite.config.ts deleted file mode 100644 index 28348bfc..00000000 --- a/vite.config.ts +++ /dev/null @@ -1,158 +0,0 @@ -import { dirname, resolve } from "node:path"; -import { fileURLToPath } from "node:url"; -import react from "@vitejs/plugin-react"; -import { defineConfig } from "vite"; - -const ReactCompilerConfig = { - target: "19", // '17' | '18' | '19' -}; -const __dirname = dirname(fileURLToPath(import.meta.url)); - -// https://vitejs.dev/config/ -export default defineConfig(() => { - return { - plugins: [ - react({ - babel: { - plugins: [["babel-plugin-react-compiler", ReactCompilerConfig]], - }, - }), - ], - resolve: { - alias: { - "@": resolve(__dirname, "./src"), - }, - preserveSymlinks: false, - }, - css: { - preprocessorOptions: {}, - modules: { - // localsConvention: "camelCaseOnly", - }, - }, - // experimental: { enableNativePlugin: true }, - base: "./", - envDir: resolve(__dirname, "./"), - assetsInclude: [], - - build: { - outDir: resolve(__dirname, "./docs"), - emptyOutDir: true, - - rollupOptions: { - input: { - index: resolve(__dirname, "./index.html"), - }, - external: [], - output: { - manualChunks(id) { - if (id.includes("node_modules/firebase/")) { - return "firebase"; - } - if (id.includes("node_modules/recharts/")) { - return "recharts"; - } - if (id.includes("node_modules/zustand/")) { - return "zustand"; - } - if ( - id.includes("node_modules/@tsparticles/engine/") || - id.includes("node_modules/@tsparticles/slim/") || - id.includes("node_modules/@tsparticles/react/") || - id.includes("node_modules/@tsparticles/preset-") - ) { - return "tsparticles-full"; - } - if (id.includes("node_modules/notistack/")) { - return "notistack"; - } - if ( - id.includes("node_modules/react/") || - id.includes("node_modules/react-dom/") - ) { - return "react-dom"; - } - if ( - id.includes("node_modules/i18next/") || - id.includes("node_modules/react-i18next/") - ) { - return "react-i18next"; - } - if ( - id.includes("node_modules/immer/") || - id.includes("node_modules/use-immer/") - ) { - return "use-immer"; - } - if ( - id.includes("node_modules/zod/") || - id.includes("node_modules/react-hook-form/") || - id.includes("node_modules/@hookform/resolvers/") - ) { - return "react-hook-form"; - } - if ( - id.includes("node_modules/dexie/") || - id.includes("node_modules/dexie-react-hooks/") - ) { - return "dexie-react-hooks"; - } - if (id.includes("node_modules/@tanstack/react-query/")) { - return "tanstack-react-query"; - } - if (id.includes("node_modules/@tanstack/react-table/")) { - return "tanstack-react-table"; - } - if (id.includes("node_modules/@tanstack/react-virtual/")) { - return "tanstack-react-virtual"; - } - if (id.includes("node_modules/@tanstack/react-form/")) { - return "tanstack-react-form"; - } - if (id.includes("node_modules/react-router/")) { - return "react-router"; - } - }, - entryFileNames: "assets/[name]-[hash].js", - chunkFileNames: "assets/[name]-[hash].js", - assetFileNames: "assets/[name]-[hash][extname]", - }, - }, - - target: "baseline-widely-available", - minify: "esbuild", - - cssTarget: ["edge107", "firefox107", "chrome107", "safari16"], - cssMinify: "esbuild", - cssCodeSplit: true, - // lib: { cssFileName: "style.css" }, - - manifest: true, - sourcemap: false, - chunkSizeWarningLimit: 500, - assetsInlineLimit: 4096, - }, - - server: { - port: 3006, - strictPort: true, - hmr: { - port: 3006, - }, - host: false, - proxy: { - "/dev": { - target: "http://localhost:3002", - rewrite(path) { - return path.replace(/^\/dev/, ""); - }, - changeOrigin: true, - ws: true, - }, - }, - fs: { - allow: [resolve(__dirname, "./")], - }, - }, - }; -});