From a5baccf106de896f14cc535271e291cedd5f7bfd Mon Sep 17 00:00:00 2001 From: Samandar Turgunboyev Date: Tue, 23 Sep 2025 17:38:49 +0500 Subject: [PATCH] first commit --- .env | 1 + .example.env | 1 + .gitignore | 22 + .prettierrc | 8 + README.md | 3 + components.json | 21 + eslint.config.js | 40 + index.html | 13 + package-lock.json | 6439 +++++++++++++++++ package.json | 79 + public/favicon.ico | Bin 0 -> 107774 bytes public/fias.svg | 3 + public/logo.png | Bin 0 -> 13948 bytes public/panda-icon-2.png | Bin 0 -> 84603 bytes public/panda-icon.png | Bin 0 -> 4755 bytes src/App.tsx | 67 + src/features/auth/lib/index.ts | 1 + src/features/auth/model/index.ts | 1 + src/features/auth/ui/index.ts | 1 + src/index.css | 126 + src/main.tsx | 12 + src/providers/main.tsx | 17 + src/providers/react-query/QueryProvider.tsx | 25 + src/providers/theme/ThemeProvider.tsx | 73 + src/shared/config/api/URLs.ts | 9 + src/shared/config/api/analytics/analytics.ts | 32 + src/shared/config/api/auth/authApi.ts | 19 + src/shared/config/api/httpClient.ts | 39 + src/shared/config/api/test/test.model.ts | 6 + src/shared/config/api/test/test.request.ts | 14 + src/shared/config/api/types.ts | 20 + src/shared/config/i18n/index.ts | 28 + .../config/i18n/locales/ki/translation.json | 4 + .../config/i18n/locales/ru/translation.json | 4 + .../config/i18n/locales/uz/translation.json | 4 + src/shared/config/i18n/type.ts | 5 + src/shared/constants/data.ts | 8 + src/shared/hooks/use-closer.ts | 39 + src/shared/hooks/use-mobile.ts | 27 + src/shared/hooks/use-window-size.ts | 38 + src/shared/lib/addBaseUrl.ts | 10 + src/shared/lib/formatDate.ts | 70 + src/shared/lib/formatPhone.ts | 38 + src/shared/lib/formatPrice.ts | 32 + src/shared/lib/utils.ts | 6 + src/shared/ui/button.tsx | 59 + src/shared/ui/card.tsx | 92 + src/shared/ui/carousel.tsx | 239 + src/shared/ui/chart.tsx | 355 + src/shared/ui/dropdown-menu.tsx | 255 + src/shared/ui/form.tsx | 167 + src/shared/ui/input.tsx | 21 + src/shared/ui/label.tsx | 22 + src/shared/ui/pagination.tsx | 127 + src/shared/ui/responsiveSidebar.tsx | 20 + src/shared/ui/select.tsx | 183 + src/shared/ui/separator.tsx | 26 + src/shared/ui/sheet.tsx | 139 + src/shared/ui/sidebar.tsx | 725 ++ src/shared/ui/skeleton.tsx | 13 + src/shared/ui/sonner.tsx | 23 + src/shared/ui/table.tsx | 114 + src/shared/ui/tooltip.tsx | 59 + src/vite-env.d.ts | 1 + src/widgets/all-movies/ui/all-movies.tsx | 260 + src/widgets/lang-toggle/lib/data.ts | 18 + src/widgets/lang-toggle/ui/lang-toggle.tsx | 38 + src/widgets/login/lib/form.ts | 7 + src/widgets/login/ui/Login.tsx | 120 + src/widgets/movie-card/ui/movie-card.tsx | 76 + src/widgets/orders-chart/ui/orders-chart.tsx | 69 + src/widgets/plan-chart/ui/plan-chart.tsx | 66 + src/widgets/sidebar/ui/Sidebar.tsx | 74 + src/widgets/theme-toggle/ui/theme-toggle.tsx | 39 + src/widgets/user-info/ui/user-info.tsx | 76 + src/widgets/user-statiks/ui/UserStatiks.tsx | 90 + src/widgets/welcome/ui/welcome.tsx | 141 + tsconfig.app.json | 27 + tsconfig.json | 13 + tsconfig.node.json | 24 + vite.config.ts | 13 + 81 files changed, 11196 insertions(+) create mode 100644 .env create mode 100644 .example.env create mode 100644 .gitignore create mode 100644 .prettierrc create mode 100644 README.md create mode 100644 components.json create mode 100644 eslint.config.js create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.ico create mode 100644 public/fias.svg create mode 100644 public/logo.png create mode 100644 public/panda-icon-2.png create mode 100644 public/panda-icon.png create mode 100644 src/App.tsx create mode 100644 src/features/auth/lib/index.ts create mode 100644 src/features/auth/model/index.ts create mode 100644 src/features/auth/ui/index.ts create mode 100644 src/index.css create mode 100644 src/main.tsx create mode 100644 src/providers/main.tsx create mode 100644 src/providers/react-query/QueryProvider.tsx create mode 100644 src/providers/theme/ThemeProvider.tsx create mode 100644 src/shared/config/api/URLs.ts create mode 100644 src/shared/config/api/analytics/analytics.ts create mode 100644 src/shared/config/api/auth/authApi.ts create mode 100644 src/shared/config/api/httpClient.ts create mode 100644 src/shared/config/api/test/test.model.ts create mode 100644 src/shared/config/api/test/test.request.ts create mode 100644 src/shared/config/api/types.ts create mode 100644 src/shared/config/i18n/index.ts create mode 100644 src/shared/config/i18n/locales/ki/translation.json create mode 100644 src/shared/config/i18n/locales/ru/translation.json create mode 100644 src/shared/config/i18n/locales/uz/translation.json create mode 100644 src/shared/config/i18n/type.ts create mode 100644 src/shared/constants/data.ts create mode 100644 src/shared/hooks/use-closer.ts create mode 100644 src/shared/hooks/use-mobile.ts create mode 100644 src/shared/hooks/use-window-size.ts create mode 100644 src/shared/lib/addBaseUrl.ts create mode 100644 src/shared/lib/formatDate.ts create mode 100644 src/shared/lib/formatPhone.ts create mode 100644 src/shared/lib/formatPrice.ts create mode 100644 src/shared/lib/utils.ts create mode 100644 src/shared/ui/button.tsx create mode 100644 src/shared/ui/card.tsx create mode 100644 src/shared/ui/carousel.tsx create mode 100644 src/shared/ui/chart.tsx create mode 100644 src/shared/ui/dropdown-menu.tsx create mode 100644 src/shared/ui/form.tsx create mode 100644 src/shared/ui/input.tsx create mode 100644 src/shared/ui/label.tsx create mode 100644 src/shared/ui/pagination.tsx create mode 100644 src/shared/ui/responsiveSidebar.tsx create mode 100644 src/shared/ui/select.tsx create mode 100644 src/shared/ui/separator.tsx create mode 100644 src/shared/ui/sheet.tsx create mode 100644 src/shared/ui/sidebar.tsx create mode 100644 src/shared/ui/skeleton.tsx create mode 100644 src/shared/ui/sonner.tsx create mode 100644 src/shared/ui/table.tsx create mode 100644 src/shared/ui/tooltip.tsx create mode 100644 src/vite-env.d.ts create mode 100644 src/widgets/all-movies/ui/all-movies.tsx create mode 100644 src/widgets/lang-toggle/lib/data.ts create mode 100644 src/widgets/lang-toggle/ui/lang-toggle.tsx create mode 100644 src/widgets/login/lib/form.ts create mode 100644 src/widgets/login/ui/Login.tsx create mode 100644 src/widgets/movie-card/ui/movie-card.tsx create mode 100644 src/widgets/orders-chart/ui/orders-chart.tsx create mode 100644 src/widgets/plan-chart/ui/plan-chart.tsx create mode 100644 src/widgets/sidebar/ui/Sidebar.tsx create mode 100644 src/widgets/theme-toggle/ui/theme-toggle.tsx create mode 100644 src/widgets/user-info/ui/user-info.tsx create mode 100644 src/widgets/user-statiks/ui/UserStatiks.tsx create mode 100644 src/widgets/welcome/ui/welcome.tsx create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.env b/.env new file mode 100644 index 0000000..2afe060 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +VITE_API_URL=https://api.pandatv.uz/api/v2/ \ No newline at end of file diff --git a/.example.env b/.example.env new file mode 100644 index 0000000..6b9c50b --- /dev/null +++ b/.example.env @@ -0,0 +1 @@ +VITE_API_URL=string \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8b7e502 --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..03cfe14 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "semi": true, + "singleQuote": true, + "trailingComma": "all", + "tabWidth": 2, + "bracketSpacing": true, + "arrowParens": "always" +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..07697ad --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. \ No newline at end of file diff --git a/components.json b/components.json new file mode 100644 index 0000000..297da4f --- /dev/null +++ b/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/index.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/widgets", + "utils": "@/shared/lib/utils", + "ui": "@/shared/ui", + "lib": "@/shared/lib", + "hooks": "@/shared/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..3ea31d9 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,40 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + 'max-len': [ + 'error', + { + code: 200, + ignoreUrls: true, + ignoreComments: true, + ignoreStrings: true, + }, + ], + 'no-console': ['warn', { allow: ['error'] }], + eqeqeq: 'warn', + 'no-duplicate-imports': 'error', + }, + }, +) diff --git a/index.html b/index.html new file mode 100644 index 0000000..1c51996 --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + PandaTv + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e574894 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6439 @@ +{ + "name": "panda-analytics", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "panda-analytics", + "version": "0.0.0", + "dependencies": { + "@hookform/resolvers": "^5.2.2", + "@radix-ui/react-dialog": "^1.1.15", + "@radix-ui/react-dropdown-menu": "^2.1.15", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-select": "^2.2.6", + "@radix-ui/react-separator": "^1.1.7", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-tooltip": "^1.2.8", + "@tailwindcss/vite": "^4.1.7", + "@tanstack/react-query": "^5.77.1", + "apexcharts": "^5.3.5", + "axios": "^1.9.0", + "chart.js": "^4.5.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "dayjs": "^1.11.13", + "embla-carousel-react": "^8.6.0", + "i18next": "^25.2.1", + "i18next-browser-languagedetector": "^8.1.0", + "js-cookie": "^3.0.5", + "lucide-react": "^0.511.0", + "next-themes": "^0.4.6", + "react": "^19.1.0", + "react-apexcharts": "^1.7.0", + "react-chartjs-2": "^5.3.0", + "react-dom": "^19.1.0", + "react-github-btn": "^1.4.0", + "react-hook-form": "^7.62.0", + "react-i18next": "^15.5.2", + "react-router-dom": "^7.9.1", + "recharts": "^2.15.4", + "sonner": "^2.0.7", + "swiper": "^12.0.2", + "tailwind-merge": "^3.3.0", + "tailwindcss": "^4.1.7", + "zod": "^4.1.9" + }, + "devDependencies": { + "@eslint/js": "^9.25.0", + "@types/chart.js": "^2.9.41", + "@types/js-cookie": "^3.0.6", + "@types/node": "^22.15.21", + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.2", + "@vitejs/plugin-react": "^4.4.1", + "eslint": "^9.25.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^16.0.0", + "husky": "^9.1.7", + "lint-staged": "^16.0.0", + "prettier": "^3.5.3", + "tw-animate-css": "^1.3.0", + "typescript": "~5.8.3", + "typescript-eslint": "^8.30.1", + "vite": "^6.3.5", + "vite-tsconfig-paths": "^5.1.4" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.2.tgz", + "integrity": "sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz", + "integrity": "sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helpers": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz", + "integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.27.1", + "@babel/types": "^7.27.1", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz", + "integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", + "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.2.tgz", + "integrity": "sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.27.1" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.1.tgz", + "integrity": "sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", + "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", + "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz", + "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz", + "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz", + "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz", + "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz", + "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz", + "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz", + "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz", + "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz", + "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz", + "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz", + "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz", + "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz", + "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz", + "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz", + "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz", + "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz", + "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz", + "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz", + "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz", + "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz", + "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz", + "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz", + "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz", + "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz", + "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", + "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", + "dev": true, + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz", + "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", + "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.27.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.27.0.tgz", + "integrity": "sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz", + "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==", + "dev": true, + "dependencies": { + "@eslint/core": "^0.14.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.0.tgz", + "integrity": "sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==", + "dependencies": { + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.0.tgz", + "integrity": "sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==", + "dependencies": { + "@floating-ui/core": "^1.7.0", + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==" + }, + "node_modules/@hookform/resolvers": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.2.2.tgz", + "integrity": "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==", + "license": "MIT", + "dependencies": { + "@standard-schema/utils": "^0.3.0" + }, + "peerDependencies": { + "react-hook-form": "^7.55.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", + "license": "MIT" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", + "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==" + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "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 + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "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 + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", + "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "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 + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.10.tgz", + "integrity": "sha512-IM1zzRV4W3HtVgftdQiiOmA0AdJlCtMLe00FXaHwgt3rAnNsIyDqshvkIW3hj/iu5hu8ERP7KIYki6NkqDxAwQ==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.15.tgz", + "integrity": "sha512-mIBnOjgwo9AH3FyKaSWoSu/dYj6VdhJ7frEPiGTeXCdUFHjl9h3mFh2wwhEtINOmYXWhdpf1rY2minFsmaNgVQ==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.15", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz", + "integrity": "sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz", + "integrity": "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.15.tgz", + "integrity": "sha512-tVlmA3Vb9n8SZSd+YSbuFR66l87Wiy4du+YE+0hzKQEANA+7cWKH1WgqcEX4pXqxUFQKrWQGHdvEfw00TjFiew==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.7", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.10", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.7.tgz", + "integrity": "sha512-IUFAccz1JyKcf/RjB552PlWwxjeCJB8/4KxT7EhBHOJM+mN7LdW+B3kacJXILm32xawcMMjb2i0cIZpo+f9kiQ==", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.4.tgz", + "integrity": "sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.10.tgz", + "integrity": "sha512-dT9aOXUen9JSsxnMPv/0VqySQf5eDQ6LCk5Sw28kamz8wSOW2bJdlX2Bg5VUIIcV+6XlHpWTIuTPCf/UNIyq8Q==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz", + "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-separator": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.7.tgz", + "integrity": "sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", + "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "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 + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "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 + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "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 + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==" + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.9.tgz", + "integrity": "sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==", + "dev": true + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz", + "integrity": "sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz", + "integrity": "sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz", + "integrity": "sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz", + "integrity": "sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz", + "integrity": "sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz", + "integrity": "sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz", + "integrity": "sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz", + "integrity": "sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz", + "integrity": "sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz", + "integrity": "sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz", + "integrity": "sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz", + "integrity": "sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz", + "integrity": "sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz", + "integrity": "sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz", + "integrity": "sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz", + "integrity": "sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz", + "integrity": "sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz", + "integrity": "sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz", + "integrity": "sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz", + "integrity": "sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", + "license": "MIT" + }, + "node_modules/@svgdotjs/svg.draggable.js": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.draggable.js/-/svg.draggable.js-3.0.6.tgz", + "integrity": "sha512-7iJFm9lL3C40HQcqzEfezK2l+dW2CpoVY3b77KQGqc8GXWa6LhhmX5Ckv7alQfUXBuZbjpICZ+Dvq1czlGx7gA==", + "license": "MIT", + "peerDependencies": { + "@svgdotjs/svg.js": "^3.2.4" + } + }, + "node_modules/@svgdotjs/svg.filter.js": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.filter.js/-/svg.filter.js-3.0.9.tgz", + "integrity": "sha512-/69XMRCDoam2HgC4ldHIaDgeQf1ViHIsa0Ld4uWgiXtZ+E24DWHe/9Ib6kbNiZ7WRIdlVokUDR1Fg0kjIpkfbw==", + "license": "MIT", + "dependencies": { + "@svgdotjs/svg.js": "^3.2.4" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@svgdotjs/svg.js": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.js/-/svg.js-3.2.5.tgz", + "integrity": "sha512-/VNHWYhNu+BS7ktbYoVGrCmsXDh+chFMaONMwGNdIBcFHrWqk2jY8fNyr3DLdtQUIalvkPfM554ZSFa3dm3nxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Fuzzyma" + } + }, + "node_modules/@svgdotjs/svg.resize.js": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.resize.js/-/svg.resize.js-2.0.5.tgz", + "integrity": "sha512-4heRW4B1QrJeENfi7326lUPYBCevj78FJs8kfeDxn5st0IYPIRXoTtOSYvTzFWgaWWXd3YCDE6ao4fmv91RthA==", + "license": "MIT", + "engines": { + "node": ">= 14.18" + }, + "peerDependencies": { + "@svgdotjs/svg.js": "^3.2.4", + "@svgdotjs/svg.select.js": "^4.0.1" + } + }, + "node_modules/@svgdotjs/svg.select.js": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.select.js/-/svg.select.js-4.0.3.tgz", + "integrity": "sha512-qkMgso1sd2hXKd1FZ1weO7ANq12sNmQJeGDjs46QwDVsxSRcHmvWKL2NDF7Yimpwf3sl5esOLkPqtV2bQ3v/Jg==", + "license": "MIT", + "engines": { + "node": ">= 14.18" + }, + "peerDependencies": { + "@svgdotjs/svg.js": "^3.2.4" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.7.tgz", + "integrity": "sha512-9rsOpdY9idRI2NH6CL4wORFY0+Q6fnx9XP9Ju+iq/0wJwGD5IByIgFmwVbyy4ymuyprj8Qh4ErxMKTUL4uNh3g==", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "lightningcss": "1.30.1", + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.7" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.7.tgz", + "integrity": "sha512-5SF95Ctm9DFiUyjUPnDGkoKItPX/k+xifcQhcqX5RA85m50jw1pT/KzjdvlqxRja45Y52nR4MR9fD1JYd7f8NQ==", + "hasInstallScript": true, + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.7", + "@tailwindcss/oxide-darwin-arm64": "4.1.7", + "@tailwindcss/oxide-darwin-x64": "4.1.7", + "@tailwindcss/oxide-freebsd-x64": "4.1.7", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.7", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.7", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.7", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.7", + "@tailwindcss/oxide-linux-x64-musl": "4.1.7", + "@tailwindcss/oxide-wasm32-wasi": "4.1.7", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.7", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.7" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.7.tgz", + "integrity": "sha512-IWA410JZ8fF7kACus6BrUwY2Z1t1hm0+ZWNEzykKmMNM09wQooOcN/VXr0p/WJdtHZ90PvJf2AIBS/Ceqx1emg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.7.tgz", + "integrity": "sha512-81jUw9To7fimGGkuJ2W5h3/oGonTOZKZ8C2ghm/TTxbwvfSiFSDPd6/A/KE2N7Jp4mv3Ps9OFqg2fEKgZFfsvg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.7.tgz", + "integrity": "sha512-q77rWjEyGHV4PdDBtrzO0tgBBPlQWKY7wZK0cUok/HaGgbNKecegNxCGikuPJn5wFAlIywC3v+WMBt0PEBtwGw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.7.tgz", + "integrity": "sha512-RfmdbbK6G6ptgF4qqbzoxmH+PKfP4KSVs7SRlTwcbRgBwezJkAO3Qta/7gDy10Q2DcUVkKxFLXUQO6J3CRvBGw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.7.tgz", + "integrity": "sha512-OZqsGvpwOa13lVd1z6JVwQXadEobmesxQ4AxhrwRiPuE04quvZHWn/LnihMg7/XkN+dTioXp/VMu/p6A5eZP3g==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.7.tgz", + "integrity": "sha512-voMvBTnJSfKecJxGkoeAyW/2XRToLZ227LxswLAwKY7YslG/Xkw9/tJNH+3IVh5bdYzYE7DfiaPbRkSHFxY1xA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.7.tgz", + "integrity": "sha512-PjGuNNmJeKHnP58M7XyjJyla8LPo+RmwHQpBI+W/OxqrwojyuCQ+GUtygu7jUqTEexejZHr/z3nBc/gTiXBj4A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.7.tgz", + "integrity": "sha512-HMs+Va+ZR3gC3mLZE00gXxtBo3JoSQxtu9lobbZd+DmfkIxR54NO7Z+UQNPsa0P/ITn1TevtFxXTpsRU7qEvWg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.7.tgz", + "integrity": "sha512-MHZ6jyNlutdHH8rd+YTdr3QbXrHXqwIhHw9e7yXEBcQdluGwhpQY2Eku8UZK6ReLaWtQ4gijIv5QoM5eE+qlsA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.7.tgz", + "integrity": "sha512-ANaSKt74ZRzE2TvJmUcbFQ8zS201cIPxUDm5qez5rLEwWkie2SkGtA4P+GPTj+u8N6JbPrC8MtY8RmJA35Oo+A==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@emnapi/wasi-threads": "^1.0.2", + "@napi-rs/wasm-runtime": "^0.2.9", + "@tybys/wasm-util": "^0.9.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.7.tgz", + "integrity": "sha512-HUiSiXQ9gLJBAPCMVRk2RT1ZrBjto7WvqsPBwUrNK2BcdSxMnk19h4pjZjI7zgPhDxlAbJSumTC4ljeA9y0tEw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.7.tgz", + "integrity": "sha512-rYHGmvoHiLJ8hWucSfSOEmdCBIGZIq7SpkPRSqLsH2Ab2YUNgKeAPT1Fi2cx3+hnYOrAb0jp9cRyode3bBW4mQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.7.tgz", + "integrity": "sha512-tYa2fO3zDe41I7WqijyVbRd8oWT0aEID1Eokz5hMT6wShLIHj3yvwj9XbfuloHP9glZ6H+aG2AN/+ZrxJ1Y5RQ==", + "dependencies": { + "@tailwindcss/node": "4.1.7", + "@tailwindcss/oxide": "4.1.7", + "tailwindcss": "4.1.7" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6" + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.77.1", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.77.1.tgz", + "integrity": "sha512-nfxVhy4UynChMFfN4NxwI8pktV9R3Zt/ROxOAe6pdOf8CigDLn26p+ex1YW5uien26BBICLmN0dTvIELHCs5vw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.77.1", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.77.1.tgz", + "integrity": "sha512-qBwpxFg0+MZF0fICQwgvzwrVbcs7TdQlLyEd1f1dN83oeIALofCIAJHV7sPWu+BCS5tcXkG5CvOuf7yla8GYqQ==", + "dependencies": { + "@tanstack/query-core": "5.77.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/chart.js": { + "version": "2.9.41", + "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.9.41.tgz", + "integrity": "sha512-3dvkDvueckY83UyUXtJMalYoH6faOLkWQoaTlJgB4Djde3oORmNP0Jw85HtzTuXyliUHcdp704s0mZFQKio/KQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "moment": "^2.10.2" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==" + }, + "node_modules/@types/js-cookie": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz", + "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "22.15.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.21.tgz", + "integrity": "sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==", + "devOptional": true, + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/react": { + "version": "19.1.5", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.5.tgz", + "integrity": "sha512-piErsCVVbpMMT2r7wbawdZsq4xMvIAhQuac2gedQHysu1TZYEigE6pnFfgZT+/jQnrRuF5r+SHzuehFjfRjr4g==", + "devOptional": true, + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.1.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.5.tgz", + "integrity": "sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==", + "devOptional": true, + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.1.tgz", + "integrity": "sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.32.1", + "@typescript-eslint/type-utils": "8.32.1", + "@typescript-eslint/utils": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz", + "integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.32.1.tgz", + "integrity": "sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.32.1", + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/typescript-estree": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.1.tgz", + "integrity": "sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.32.1.tgz", + "integrity": "sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "8.32.1", + "@typescript-eslint/utils": "8.32.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.1.tgz", + "integrity": "sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.1.tgz", + "integrity": "sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.1.tgz", + "integrity": "sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.32.1", + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/typescript-estree": "8.32.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.1.tgz", + "integrity": "sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.32.1", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.5.0.tgz", + "integrity": "sha512-JuLWaEqypaJmOJPLWwO335Ig6jSgC1FTONCWAxnqcQthLTK/Yc9aH6hr9z/87xciejbQcnP3GnA1FWUSWeXaeg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.26.10", + "@babel/plugin-transform-react-jsx-self": "^7.25.9", + "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@rolldown/pluginutils": "1.0.0-beta.9", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + } + }, + "node_modules/@yr/monotone-cubic-spline": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", + "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==", + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "dev": true, + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/apexcharts": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-5.3.5.tgz", + "integrity": "sha512-I04DY/WBZbJgJD2uixeV5EzyiL+J5LgKQXEu8rctqAwyRmKv44aDVeofJoLdTJe3ao4r2KEQfCgtVzXn6pqirg==", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@svgdotjs/svg.draggable.js": "^3.0.4", + "@svgdotjs/svg.filter.js": "^3.0.8", + "@svgdotjs/svg.js": "^3.2.4", + "@svgdotjs/svg.resize.js": "^2.0.2", + "@svgdotjs/svg.select.js": "^4.0.1", + "@yr/monotone-cubic-spline": "^1.0.3" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", + "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz", + "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001716", + "electron-to-chromium": "^1.5.149", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001718", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz", + "integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chart.js": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.0.tgz", + "integrity": "sha512-aYeC/jDgSEx8SHWZvANYMioYMZ2KX02W6f6uVfyteuCGcadDLcYVHdfdygsTQkQ4TKn5lghoojAsPj5pu0SnvQ==", + "license": "MIT", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "engines": { + "node": ">=18" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.157", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.157.tgz", + "integrity": "sha512-/0ybgsQd1muo8QlnuTpKwtl0oX5YMlUGbm8xyqgDU00motRkKFFbUJySAQBWcY79rVqNLWIWa87BGVGClwAB2w==", + "dev": true + }, + "node_modules/embla-carousel": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", + "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", + "license": "MIT" + }, + "node_modules/embla-carousel-react": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.6.0.tgz", + "integrity": "sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==", + "license": "MIT", + "dependencies": { + "embla-carousel": "8.6.0", + "embla-carousel-reactive-utils": "8.6.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/embla-carousel-reactive-utils": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.6.0.tgz", + "integrity": "sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", + "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.4", + "@esbuild/android-arm": "0.25.4", + "@esbuild/android-arm64": "0.25.4", + "@esbuild/android-x64": "0.25.4", + "@esbuild/darwin-arm64": "0.25.4", + "@esbuild/darwin-x64": "0.25.4", + "@esbuild/freebsd-arm64": "0.25.4", + "@esbuild/freebsd-x64": "0.25.4", + "@esbuild/linux-arm": "0.25.4", + "@esbuild/linux-arm64": "0.25.4", + "@esbuild/linux-ia32": "0.25.4", + "@esbuild/linux-loong64": "0.25.4", + "@esbuild/linux-mips64el": "0.25.4", + "@esbuild/linux-ppc64": "0.25.4", + "@esbuild/linux-riscv64": "0.25.4", + "@esbuild/linux-s390x": "0.25.4", + "@esbuild/linux-x64": "0.25.4", + "@esbuild/netbsd-arm64": "0.25.4", + "@esbuild/netbsd-x64": "0.25.4", + "@esbuild/openbsd-arm64": "0.25.4", + "@esbuild/openbsd-x64": "0.25.4", + "@esbuild/sunos-x64": "0.25.4", + "@esbuild/win32-arm64": "0.25.4", + "@esbuild/win32-ia32": "0.25.4", + "@esbuild/win32-x64": "0.25.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.27.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.27.0.tgz", + "integrity": "sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.20.0", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.14.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.27.0", + "@eslint/plugin-kit": "^0.3.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz", + "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==", + "dev": true, + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-equals": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.2.2.tgz", + "integrity": "sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/github-buttons": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/github-buttons/-/github-buttons-2.29.1.tgz", + "integrity": "sha512-TV3YgAKda5hPz75n7QXmGCsSzgVya1vvmBieebg3EB5ScmashTZ0FldViG1aU2d4V5rcAGrtQ7k5uAaCo0A4PA==" + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz", + "integrity": "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "dependencies": { + "void-elements": "3.1.0" + } + }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true, + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/i18next": { + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.2.1.tgz", + "integrity": "sha512-+UoXK5wh+VlE1Zy5p6MjcvctHXAhRwQKCxiJD8noKZzIXmnAX8gdHX5fLPA3MEVxEN4vbZkQFy8N0LyD9tUqPw==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "dependencies": { + "@babel/runtime": "^7.27.1" + }, + "peerDependencies": { + "typescript": "^5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/i18next-browser-languagedetector": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.1.0.tgz", + "integrity": "sha512-mHZxNx1Lq09xt5kCauZ/4bsXOEA2pfpwSoU11/QTJB+pD94iONFwp+ohqi///PwiFvjFOxe1akYCdHyFo1ng5Q==", + "dependencies": { + "@babel/runtime": "^7.23.2" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "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" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lint-staged": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.0.0.tgz", + "integrity": "sha512-sUCprePs6/rbx4vKC60Hez6X10HPkpDJaGcy3D1NdwR7g1RcNkWL8q9mJMreOqmHBTs+1sNFp+wOiX9fr+hoOQ==", + "dev": true, + "dependencies": { + "chalk": "^5.4.1", + "commander": "^13.1.0", + "debug": "^4.4.0", + "lilconfig": "^3.1.3", + "listr2": "^8.3.3", + "micromatch": "^4.0.8", + "nano-spawn": "^1.0.0", + "pidtree": "^0.6.0", + "string-argv": "^0.3.2", + "yaml": "^2.7.1" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=20.18" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/listr2": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.3.3.tgz", + "integrity": "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==", + "dev": true, + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "dev": true, + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "0.511.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.511.0.tgz", + "integrity": "sha512-VK5a2ydJ7xm8GvBeKLS9mu1pVK6ucef9780JVUjw6bAjJL/QXnd4Y0p7SPeOUMC27YhzNCZvm5d/QX0Tp3rc0w==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/nano-spawn": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nano-spawn/-/nano-spawn-1.0.2.tgz", + "integrity": "sha512-21t+ozMQDAL/UGgQVBbZ/xXvNO10++ZPuTmKRO8k9V3AClVRht49ahtDjfY8l1q6nSHOrE5ASfthzH3ol6R/hg==", + "dev": true, + "engines": { + "node": ">=20.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/nano-spawn?sponsor=1" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/next-themes": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", + "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-apexcharts": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/react-apexcharts/-/react-apexcharts-1.7.0.tgz", + "integrity": "sha512-03oScKJyNLRf0Oe+ihJxFZliBQM9vW3UWwomVn4YVRTN1jsIR58dLWt0v1sb8RwJVHDMbeHiKQueM0KGpn7nOA==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "apexcharts": ">=4.0.0", + "react": ">=0.13" + } + }, + "node_modules/react-chartjs-2": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-5.3.0.tgz", + "integrity": "sha512-UfZZFnDsERI3c3CZGxzvNJd02SHjaSJ8kgW1djn65H1KK8rehwTjyrRKOG3VTMG8wtHZ5rgAO5oTHtHi9GCCmw==", + "license": "MIT", + "peerDependencies": { + "chart.js": "^4.1.1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/react-github-btn": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-github-btn/-/react-github-btn-1.4.0.tgz", + "integrity": "sha512-lV4FYClAfjWnBfv0iNlJUGhamDgIq6TayD0kPZED6VzHWdpcHmPfsYOZ/CFwLfPv4Zp+F4m8QKTj0oy2HjiGXg==", + "dependencies": { + "github-buttons": "^2.22.0" + }, + "peerDependencies": { + "react": ">=16.3.0" + } + }, + "node_modules/react-hook-form": { + "version": "7.62.0", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.62.0.tgz", + "integrity": "sha512-7KWFejc98xqG/F4bAxpL41NB3o1nnvQO1RWZT3TqRZYL8RryQETGfEdVnJN2fy1crCiBLLjkRBVK05j24FxJGA==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, + "node_modules/react-i18next": { + "version": "15.5.2", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-15.5.2.tgz", + "integrity": "sha512-ePODyXgmZQAOYTbZXQn5rRsSBu3Gszo69jxW6aKmlSgxKAI1fOhDwSu6bT4EKHciWPKQ7v7lPrjeiadR6Gi+1A==", + "dependencies": { + "@babel/runtime": "^7.25.0", + "html-parse-stringify": "^3.0.1" + }, + "peerDependencies": { + "i18next": ">= 23.2.3", + "react": ">= 16.8.0", + "typescript": "^5" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.0.tgz", + "integrity": "sha512-sGsQtcjMqdQyijAHytfGEELB8FufGbfXIsvUTe+NLx1GDRJCXtCFLBLUI1eyZCKXXvbEU2C6gai0PZKoIE9Vbg==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-router": { + "version": "7.9.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.9.1.tgz", + "integrity": "sha512-pfAByjcTpX55mqSDGwGnY9vDCpxqBLASg0BMNAuMmpSGESo/TaOUG6BllhAtAkCGx8Rnohik/XtaqiYUJtgW2g==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.9.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.9.1.tgz", + "integrity": "sha512-U9WBQssBE9B1vmRjo9qTM7YRzfZ3lUxESIZnsf4VjR/lXYz9MHjvOxHzr/aUm4efpktbVOrF09rL/y4VHa8RMw==", + "license": "MIT", + "dependencies": { + "react-router": "7.9.1" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/react-smooth": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.4.tgz", + "integrity": "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==", + "license": "MIT", + "dependencies": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/recharts": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.4.tgz", + "integrity": "sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==", + "license": "MIT", + "dependencies": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^18.3.1", + "react-smooth": "^4.0.4", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "license": "MIT", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, + "node_modules/recharts/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true + }, + "node_modules/rollup": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz", + "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.41.1", + "@rollup/rollup-android-arm64": "4.41.1", + "@rollup/rollup-darwin-arm64": "4.41.1", + "@rollup/rollup-darwin-x64": "4.41.1", + "@rollup/rollup-freebsd-arm64": "4.41.1", + "@rollup/rollup-freebsd-x64": "4.41.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.41.1", + "@rollup/rollup-linux-arm-musleabihf": "4.41.1", + "@rollup/rollup-linux-arm64-gnu": "4.41.1", + "@rollup/rollup-linux-arm64-musl": "4.41.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.41.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-musl": "4.41.1", + "@rollup/rollup-linux-s390x-gnu": "4.41.1", + "@rollup/rollup-linux-x64-gnu": "4.41.1", + "@rollup/rollup-linux-x64-musl": "4.41.1", + "@rollup/rollup-win32-arm64-msvc": "4.41.1", + "@rollup/rollup-win32-ia32-msvc": "4.41.1", + "@rollup/rollup-win32-x64-msvc": "4.41.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/sonner": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-2.0.7.tgz", + "integrity": "sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==", + "license": "MIT", + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/swiper": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-12.0.2.tgz", + "integrity": "sha512-y8F6fDGXmTVVgwqJj6I00l4FdGuhpFJn0U/9Ucn1MwWOw3NdLV8aH88pZOjyhBgU/6PyBlUx+JuAQ5KMWz906Q==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "license": "MIT", + "engines": { + "node": ">= 4.7.0" + } + }, + "node_modules/tailwind-merge": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.3.0.tgz", + "integrity": "sha512-fyW/pEfcQSiigd5SNn0nApUOxx0zB/dm6UDU/rEwc2c3sX2smWUNbapHv+QRqLGVp9GWX3THIa7MUGPo+YkDzQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.7.tgz", + "integrity": "sha512-kr1o/ErIdNhTz8uzAYL7TpaUuzKIE6QPQ4qmSdxnoX/lo+5wmUHQA6h3L5yIqEImSRnAAURDirLu/BgiXGPAhg==" + }, + "node_modules/tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "engines": { + "node": ">=18" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/tsconfck": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz", + "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==", + "dev": true, + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "node_modules/tw-animate-css": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.3.0.tgz", + "integrity": "sha512-jrJ0XenzS9KVuDThJDvnhalbl4IYiMQ/XvpA0a2FL8KmlK+6CSMviO7ROY/I7z1NnUs5NnDhlM6fXmF40xPxzw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/Wombosvideo" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.32.1.tgz", + "integrity": "sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.32.1", + "@typescript-eslint/parser": "8.32.1", + "@typescript-eslint/utils": "8.32.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "devOptional": true + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "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 + } + } + }, + "node_modules/vite-tsconfig-paths": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-5.1.4.tgz", + "integrity": "sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "globrex": "^0.1.2", + "tsconfck": "^3.0.3" + }, + "peerDependencies": { + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "devOptional": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.9.tgz", + "integrity": "sha512-HI32jTq0AUAC125z30E8bQNz0RQ+9Uc+4J7V97gLYjZVKRjeydPgGt6dvQzFrav7MYOUGFqqOGiHpA/fdbd0cQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..da06188 --- /dev/null +++ b/package.json @@ -0,0 +1,79 @@ +{ + "name": "panda-analytics", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint src --fix", + "preview": "vite preview", + "prettier": "prettier src --write", + "prepare": "husky" + }, + "dependencies": { + "@hookform/resolvers": "^5.2.2", + "@radix-ui/react-dialog": "^1.1.15", + "@radix-ui/react-dropdown-menu": "^2.1.15", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-select": "^2.2.6", + "@radix-ui/react-separator": "^1.1.7", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-tooltip": "^1.2.8", + "@tailwindcss/vite": "^4.1.7", + "@tanstack/react-query": "^5.77.1", + "apexcharts": "^5.3.5", + "axios": "^1.9.0", + "chart.js": "^4.5.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "dayjs": "^1.11.13", + "embla-carousel-react": "^8.6.0", + "i18next": "^25.2.1", + "i18next-browser-languagedetector": "^8.1.0", + "js-cookie": "^3.0.5", + "lucide-react": "^0.511.0", + "next-themes": "^0.4.6", + "react": "^19.1.0", + "react-apexcharts": "^1.7.0", + "react-chartjs-2": "^5.3.0", + "react-dom": "^19.1.0", + "react-github-btn": "^1.4.0", + "react-hook-form": "^7.62.0", + "react-i18next": "^15.5.2", + "react-router-dom": "^7.9.1", + "recharts": "^2.15.4", + "sonner": "^2.0.7", + "swiper": "^12.0.2", + "tailwind-merge": "^3.3.0", + "tailwindcss": "^4.1.7", + "zod": "^4.1.9" + }, + "devDependencies": { + "@eslint/js": "^9.25.0", + "@types/chart.js": "^2.9.41", + "@types/js-cookie": "^3.0.6", + "@types/node": "^22.15.21", + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.2", + "@vitejs/plugin-react": "^4.4.1", + "eslint": "^9.25.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^16.0.0", + "husky": "^9.1.7", + "lint-staged": "^16.0.0", + "prettier": "^3.5.3", + "tw-animate-css": "^1.3.0", + "typescript": "~5.8.3", + "typescript-eslint": "^8.30.1", + "vite": "^6.3.5", + "vite-tsconfig-paths": "^5.1.4" + }, + "lint-staged": { + "*.{js,ts,jsx,tsx}": [ + "prettier --write", + "eslint src --fix" + ] + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..328715df1a737638a9ee8a55660e479641f01d02 GIT binary patch literal 107774 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 CTpm^c literal 0 HcmV?d00001 diff --git a/public/fias.svg b/public/fias.svg new file mode 100644 index 0000000..64495cd --- /dev/null +++ b/public/fias.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0ef396241e8f0b9ba4df479ca5326ca3fee01e9f GIT binary patch literal 13948 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

>1H^F33d<+D{ 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 A>A*CNkwMmWv=#INgC`aGJ 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 z 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 Bk+c8+ literal 0 HcmV?d00001 diff --git a/public/panda-icon.png b/public/panda-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2e62728efc7da59214a22bbdf4e921eda96877b0 GIT binary patch literal 4755 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 literal 0 HcmV?d00001 diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..56a94c2 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,67 @@ +import MainProvider from '@/providers/main'; +import '@/shared/config/i18n'; +import { Menu } from 'lucide-react'; +import { BrowserRouter, Route, Routes } from 'react-router-dom'; +import { SidebarProvider, SidebarTrigger } from './shared/ui/sidebar'; +import AllMovies from './widgets/all-movies/ui/all-movies'; +import Login from './widgets/login/ui/Login'; +import { AppSidebar } from './widgets/sidebar/ui/Sidebar'; +import Welcome from './widgets/welcome/ui/welcome'; + +const App = () => { + return ( + + + + + + +

+ + + } + /> + } /> + + +
+ + + + +
+ + + } + /> + + + + + ); +}; + +export default App; diff --git a/src/features/auth/lib/index.ts b/src/features/auth/lib/index.ts new file mode 100644 index 0000000..2b42e9e --- /dev/null +++ b/src/features/auth/lib/index.ts @@ -0,0 +1 @@ +// Ushbu fayl loyiha structurasi uchun qo'shilgan. O'chirib tashlasangiz bo'ladi diff --git a/src/features/auth/model/index.ts b/src/features/auth/model/index.ts new file mode 100644 index 0000000..2b42e9e --- /dev/null +++ b/src/features/auth/model/index.ts @@ -0,0 +1 @@ +// Ushbu fayl loyiha structurasi uchun qo'shilgan. O'chirib tashlasangiz bo'ladi diff --git a/src/features/auth/ui/index.ts b/src/features/auth/ui/index.ts new file mode 100644 index 0000000..2b42e9e --- /dev/null +++ b/src/features/auth/ui/index.ts @@ -0,0 +1 @@ +// Ushbu fayl loyiha structurasi uchun qo'shilgan. O'chirib tashlasangiz bo'ladi diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..195642f --- /dev/null +++ b/src/index.css @@ -0,0 +1,126 @@ +@import 'tailwindcss'; +@import 'tw-animate-css'; + +@custom-variant dark (&:is(.dark *)); + +@theme inline { + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +:root { + --radius: 0.625rem; + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.205 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +.dark { + --background: #141414; + --foreground: oklch(0.985 0 0); + --card: oklch(0.205 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.205 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.922 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.704 0.191 22.216); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.556 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.556 0 0); +} + +@layer components { + .custom-container { + @apply container px-4 mx-auto; + } +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..81dc195 --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,12 @@ +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; +import { Toaster } from 'sonner'; +import App from './App.tsx'; +import './index.css'; + +createRoot(document.getElementById('root')!).render( + + + + , +); diff --git a/src/providers/main.tsx b/src/providers/main.tsx new file mode 100644 index 0000000..462e523 --- /dev/null +++ b/src/providers/main.tsx @@ -0,0 +1,17 @@ +import { ThemeProvider } from '@/providers/theme/ThemeProvider'; +import type { ReactNode } from 'react'; +import QueryProvider from './react-query/QueryProvider'; + +interface Props { + children: ReactNode; +} + +const MainProvider = ({ children }: Props) => { + return ( + + {children} + + ); +}; + +export default MainProvider; diff --git a/src/providers/react-query/QueryProvider.tsx b/src/providers/react-query/QueryProvider.tsx new file mode 100644 index 0000000..8c765e7 --- /dev/null +++ b/src/providers/react-query/QueryProvider.tsx @@ -0,0 +1,25 @@ +import { useState, type ReactNode } from 'react'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; + +const QueryProvider = ({ children }: { children: ReactNode }) => { + const [queryClient] = useState( + () => + new QueryClient({ + defaultOptions: { + queries: { + refetchOnWindowFocus: false, + retry: 1, + staleTime: 1000 * 60 * 5, + refetchOnReconnect: false, + refetchOnMount: false, + refetchInterval: 1000 * 60 * 5, + }, + }, + }), + ); + return ( + {children} + ); +}; + +export default QueryProvider; diff --git a/src/providers/theme/ThemeProvider.tsx b/src/providers/theme/ThemeProvider.tsx new file mode 100644 index 0000000..d6b3eaa --- /dev/null +++ b/src/providers/theme/ThemeProvider.tsx @@ -0,0 +1,73 @@ +import { createContext, useContext, useEffect, useState } from 'react'; + +type Theme = 'dark' | 'light' | 'system'; + +type ThemeProviderProps = { + children: React.ReactNode; + defaultTheme?: Theme; + storageKey?: string; +}; + +type ThemeProviderState = { + theme: Theme; + setTheme: (theme: Theme) => void; +}; + +const initialState: ThemeProviderState = { + theme: 'system', + setTheme: () => null, +}; + +const ThemeProviderContext = createContext(initialState); + +export function ThemeProvider({ + children, + defaultTheme = 'system', + storageKey = 'vite-ui-theme', + ...props +}: ThemeProviderProps) { + const [theme, setTheme] = useState( + () => (localStorage.getItem(storageKey) as Theme) || defaultTheme, + ); + + useEffect(() => { + const root = window.document.documentElement; + + root.classList.remove('light', 'dark'); + + if (theme === 'system') { + const systemTheme = window.matchMedia('(prefers-color-scheme: dark)') + .matches + ? 'dark' + : 'light'; + + root.classList.add(systemTheme); + return; + } + + root.classList.add(theme); + }, [theme]); + + const value = { + theme, + setTheme: (theme: Theme) => { + localStorage.setItem(storageKey, theme); + setTheme(theme); + }, + }; + + return ( + + {children} + + ); +} + +export const useTheme = () => { + const context = useContext(ThemeProviderContext); + + if (context === undefined) + throw new Error('useTheme must be used within a ThemeProvider'); + + return context; +}; diff --git a/src/shared/config/api/URLs.ts b/src/shared/config/api/URLs.ts new file mode 100644 index 0000000..040ac03 --- /dev/null +++ b/src/shared/config/api/URLs.ts @@ -0,0 +1,9 @@ +const BASE_URL = + import.meta.env.VITE_API_URL || 'https://api.pandatv.uz/api/v2/'; + +const ENDP_POSTS = '/posts/'; +const STATS_USER = '/stats/'; +const MOVIE_STATS = '/cinema/'; +const CATEGORY_STATS = '/cinema/category/'; + +export { BASE_URL, CATEGORY_STATS, ENDP_POSTS, MOVIE_STATS, STATS_USER }; diff --git a/src/shared/config/api/analytics/analytics.ts b/src/shared/config/api/analytics/analytics.ts new file mode 100644 index 0000000..865ac50 --- /dev/null +++ b/src/shared/config/api/analytics/analytics.ts @@ -0,0 +1,32 @@ +import httpClient from '../httpClient'; +import { CATEGORY_STATS, MOVIE_STATS, STATS_USER } from '../URLs'; + +const AnalyticsApi = { + getStats: async () => { + const data = await httpClient.get(STATS_USER); + return data.data; + }, + getMovieStats: async ({ + page, + page_size, + search, + category, + }: { + page: number; + page_size: number; + search?: string; + category?: number; + }) => { + const data = await httpClient.get(MOVIE_STATS, { + params: { page, page_size, search, popular: 'true', category }, + }); + return data.data; + }, + + getCategoryStats: async () => { + const data = await httpClient.get(CATEGORY_STATS); + return data.data; + }, +}; + +export default AnalyticsApi; diff --git a/src/shared/config/api/auth/authApi.ts b/src/shared/config/api/auth/authApi.ts new file mode 100644 index 0000000..b4318e8 --- /dev/null +++ b/src/shared/config/api/auth/authApi.ts @@ -0,0 +1,19 @@ +import httpClient from '../httpClient'; + +export interface Loginbody { + phone: string; + password: string; +} + +const AuthApi = { + getMe: async () => { + const data = await httpClient.get('auth/me/'); + return data.data; + }, + login: async (body: Loginbody) => { + const data = await httpClient.post('auth/token/', body); + return data.data; + }, +}; + +export default AuthApi; diff --git a/src/shared/config/api/httpClient.ts b/src/shared/config/api/httpClient.ts new file mode 100644 index 0000000..14536e6 --- /dev/null +++ b/src/shared/config/api/httpClient.ts @@ -0,0 +1,39 @@ +import i18n from '@/shared/config/i18n'; +import axios from 'axios'; +import Cookies from 'js-cookie'; +import { BASE_URL } from './URLs'; + +const httpClient = axios.create({ + baseURL: BASE_URL, + timeout: 10000, +}); + +httpClient.interceptors.request.use( + (config) => { + const language = i18n.language; + config.headers['Accept-Language'] = language; + + const token = Cookies.get('panda_admin'); + if (token) { + config.headers['Authorization'] = `Bearer ${token}`; + } + + return config; + }, + (error) => Promise.reject(error), +); + +// Response interceptor +httpClient.interceptors.response.use( + (response) => response, + async (error) => { + if (error.response?.status === 401) { + Cookies.remove('panda_admin'); // tokenni tozalash + window.location.href = '/login'; // login pagega redirect + } + + return Promise.reject(error); + }, +); + +export default httpClient; diff --git a/src/shared/config/api/test/test.model.ts b/src/shared/config/api/test/test.model.ts new file mode 100644 index 0000000..874d514 --- /dev/null +++ b/src/shared/config/api/test/test.model.ts @@ -0,0 +1,6 @@ +export interface TestApiType { + userId: number; + id: number; + title: string; + body: string; +} diff --git a/src/shared/config/api/test/test.request.ts b/src/shared/config/api/test/test.request.ts new file mode 100644 index 0000000..a8d9bcb --- /dev/null +++ b/src/shared/config/api/test/test.request.ts @@ -0,0 +1,14 @@ +import httpClient from '@/shared/config/api/httpClient'; +import type { TestApiType } from '@/shared/config/api/test/test.model'; +import type { ReqWithPagination } from '@/shared/config/api/types'; +import { ENDP_POSTS } from '@/shared/config/api/URLs'; +import type { AxiosResponse } from 'axios'; + +const getPosts = async ( + pagination?: ReqWithPagination, +): Promise> => { + const response = await httpClient.get(ENDP_POSTS, { params: pagination }); + return response; +}; + +export { getPosts }; diff --git a/src/shared/config/api/types.ts b/src/shared/config/api/types.ts new file mode 100644 index 0000000..063c748 --- /dev/null +++ b/src/shared/config/api/types.ts @@ -0,0 +1,20 @@ +export interface ResWithPagination { + success: boolean; + message: string; + links: Links; + total_items: number; + total_pages: number; + page_size: number; + current_page: number; + data: T[]; +} + +interface Links { + next: number | null; + previous: number | null; +} + +export interface ReqWithPagination { + _start?: number; + _limit?: number; +} diff --git a/src/shared/config/i18n/index.ts b/src/shared/config/i18n/index.ts new file mode 100644 index 0000000..d8a0529 --- /dev/null +++ b/src/shared/config/i18n/index.ts @@ -0,0 +1,28 @@ +import i18n from 'i18next'; +import { initReactI18next } from 'react-i18next'; +import LanguageDetector from 'i18next-browser-languagedetector'; + +import uz from './locales/uz/translation.json'; +import ki from './locales/ki/translation.json'; +import ru from './locales/ru/translation.json'; + +i18n + .use(LanguageDetector) + .use(initReactI18next) + .init({ + resources: { + uz: { translation: uz }, + ru: { translation: ru }, + ki: { translation: ki }, + }, + fallbackLng: 'uz', + interpolation: { + escapeValue: false, + }, + detection: { + order: ['localStorage', 'navigator'], + caches: ['localStorage'], + }, + }); + +export default i18n; diff --git a/src/shared/config/i18n/locales/ki/translation.json b/src/shared/config/i18n/locales/ki/translation.json new file mode 100644 index 0000000..044e3b0 --- /dev/null +++ b/src/shared/config/i18n/locales/ki/translation.json @@ -0,0 +1,4 @@ +{ + "welcome": "Kiril. Bizning saytga xush kelibsiz", + "language": "Til" +} diff --git a/src/shared/config/i18n/locales/ru/translation.json b/src/shared/config/i18n/locales/ru/translation.json new file mode 100644 index 0000000..0fb3186 --- /dev/null +++ b/src/shared/config/i18n/locales/ru/translation.json @@ -0,0 +1,4 @@ +{ + "welcome": "Rus. Bizning saytga xush kelibsiz", + "language": "Til" +} diff --git a/src/shared/config/i18n/locales/uz/translation.json b/src/shared/config/i18n/locales/uz/translation.json new file mode 100644 index 0000000..19a817e --- /dev/null +++ b/src/shared/config/i18n/locales/uz/translation.json @@ -0,0 +1,4 @@ +{ + "welcome": "Uzbek. Bizning saytga xush kelibsiz", + "language": "Til" +} diff --git a/src/shared/config/i18n/type.ts b/src/shared/config/i18n/type.ts new file mode 100644 index 0000000..e64b8bc --- /dev/null +++ b/src/shared/config/i18n/type.ts @@ -0,0 +1,5 @@ +export enum LanguageRoutes { + UZ = 'uz', // o'zbekcha + RU = 'ru', // ruscha + KI = 'ki', // kirilcha +} diff --git a/src/shared/constants/data.ts b/src/shared/constants/data.ts new file mode 100644 index 0000000..ffdbd89 --- /dev/null +++ b/src/shared/constants/data.ts @@ -0,0 +1,8 @@ +const PRODUCT_INFO = { + name: 'PandaTv', + description: 'PandaTv', + logo: '/favicon.ico', + favicon: '/favicon.ico', +}; + +export { PRODUCT_INFO }; diff --git a/src/shared/hooks/use-closer.ts b/src/shared/hooks/use-closer.ts new file mode 100644 index 0000000..4e005d4 --- /dev/null +++ b/src/shared/hooks/use-closer.ts @@ -0,0 +1,39 @@ +import React, { useEffect } from 'react'; + +/** + * Hook for closing some items when they are unnecessary to the user + * @param ref For an item that needs to be closed when the outer part is pressed + * @param closeFunction Closing function + * @param scrollClose If it shouldn't close when scrolling, false will be sent. Default true + */ + +const useCloser = ( + ref: React.RefObject, + closeFunction: () => void, + scrollClose: boolean = true, +) => { + useEffect(() => { + // call function when click outside is ref element + function handleClickOutside(event: MouseEvent) { + if (ref.current && !ref.current.contains(event.target as Node)) { + closeFunction(); + } + } + + // call function when page is scrolling + function handleScroll() { + if (scrollClose) { + closeFunction(); + } + } + + document.addEventListener('mousedown', handleClickOutside); + document.addEventListener('scroll', handleScroll); + return () => { + document.removeEventListener('mousedown', handleClickOutside); + document.removeEventListener('scroll', handleScroll); + }; + }, [ref, closeFunction]); +}; + +export default useCloser; diff --git a/src/shared/hooks/use-mobile.ts b/src/shared/hooks/use-mobile.ts new file mode 100644 index 0000000..2d10e30 --- /dev/null +++ b/src/shared/hooks/use-mobile.ts @@ -0,0 +1,27 @@ +import * as React from 'react'; + +const MOBILE_BREAKPOINT = 768; + +/** + * Determine if it's on the current mobile screen (768px) + * @returns boolean + */ +const useIsMobile = () => { + const [isMobile, setIsMobile] = React.useState( + undefined, + ); + + React.useEffect(() => { + const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`); + const onChange = () => { + setIsMobile(window.innerWidth < MOBILE_BREAKPOINT); + }; + mql.addEventListener('change', onChange); + setIsMobile(window.innerWidth < MOBILE_BREAKPOINT); + return () => mql.removeEventListener('change', onChange); + }, []); + + return !!isMobile; +}; + +export default useIsMobile; diff --git a/src/shared/hooks/use-window-size.ts b/src/shared/hooks/use-window-size.ts new file mode 100644 index 0000000..e76b009 --- /dev/null +++ b/src/shared/hooks/use-window-size.ts @@ -0,0 +1,38 @@ +import { useEffect, useState } from 'react'; + +interface ISize { + width: number | undefined; + height: number | undefined; +} + +/** + * Screen size determination + * @returns number + */ +const useWindowSize = () => { + const [size, setSize] = useState({ + width: undefined, + height: undefined, + }); + + useEffect(() => { + const getScreenSize = () => { + setSize({ + width: window.innerWidth, + height: window.innerHeight, + }); + }; + + getScreenSize(); + + window.addEventListener('resize', getScreenSize); + + return () => { + window.removeEventListener('resize', getScreenSize); + }; + }, []); + + return size; +}; + +export default useWindowSize; diff --git a/src/shared/lib/addBaseUrl.ts b/src/shared/lib/addBaseUrl.ts new file mode 100644 index 0000000..8b25c71 --- /dev/null +++ b/src/shared/lib/addBaseUrl.ts @@ -0,0 +1,10 @@ +/** + * Add base url to url + * @param url Current url + * @returns string + */ +const addBaseUrl = (url: string) => { + return import.meta.env.VITE_API_URL + url; +}; + +export default addBaseUrl; diff --git a/src/shared/lib/formatDate.ts b/src/shared/lib/formatDate.ts new file mode 100644 index 0000000..5976b37 --- /dev/null +++ b/src/shared/lib/formatDate.ts @@ -0,0 +1,70 @@ +import dayjs from 'dayjs'; +import 'dayjs/locale/uz-latn'; +import 'dayjs/locale/uz'; +import 'dayjs/locale/ru'; +import localizedFormat from 'dayjs/plugin/localizedFormat'; +import relativeTime from 'dayjs/plugin/relativeTime'; +import i18n from '@/shared/config/i18n'; + +// Install Dayjs plugins +dayjs.extend(localizedFormat); +dayjs.extend(relativeTime); + +const formatDate = { + /** + * Show date in specified format + * @param time Date object or string or number + * @param format type + * @param locale Language (optional) + * @returns string + */ + to: ( + time: Date | string | number, + format: string, + locale?: string, + ): string => { + const currentLocale = locale || i18n.language; + return dayjs(time).locale(currentLocale).format(format); + }, + + /** + * Sync date in specified format (for client-side) + * @param time Date object or string or number + * @param format type + * @param locale Language (optional, standard Uzbek) + * @returns string + */ + format: ( + time: Date | string | number, + format: string, + locale: string = 'uz', + ): string => { + return dayjs(time).locale(locale).format(format); + }, + + /** + * Show date in relative time format (today, yesterday, 2 days ago,...) + * @param time Date object or string or number + * @param locale Language (optional, standard Uzbek) + * @returns string + */ + relative: (time: Date | string | number, locale?: string): string => { + const currentLocale = locale || i18n.language; + return dayjs(time).locale(currentLocale).fromNow(); + }, + + /** + * Show relative time synchronously (for client-side) + * @param time Date object or string or number + * @param locale Language (optional, standard Uzbek) + * @returns string + */ + relativeFormat: ( + time: Date | string | number, + locale: string = 'uz', + ): string => { + return dayjs(time).locale(locale).fromNow(); + }, +}; + +export default formatDate; diff --git a/src/shared/lib/formatPhone.ts b/src/shared/lib/formatPhone.ts new file mode 100644 index 0000000..47486b6 --- /dev/null +++ b/src/shared/lib/formatPhone.ts @@ -0,0 +1,38 @@ +/** + * Format the number (+998 00 111-22-33) + * @param value Number to be formatted (XXXYYZZZAABB) + * @returns string +998 00 111-22-33 + */ +const formatPhone = (value: string) => { + // Keep only numbers + const digits = value.replace(/\D/g, ''); + + // Return empty string if data is not available + if (digits.length === 0) { + return ''; + } + + const prefix = digits.startsWith('998') ? '+998 ' : '+998 '; + + let formattedNumber = prefix; + + if (digits.length > 3) { + formattedNumber += digits.slice(3, 5); + } + + if (digits.length > 5) { + formattedNumber += ' ' + digits.slice(5, 8); + } + + if (digits.length > 8) { + formattedNumber += '-' + digits.slice(8, 10); + } + + if (digits.length > 10) { + formattedNumber += '-' + digits.slice(10, 12); + } + + return formattedNumber.trim(); +}; + +export default formatPhone; diff --git a/src/shared/lib/formatPrice.ts b/src/shared/lib/formatPrice.ts new file mode 100644 index 0000000..4bf4d23 --- /dev/null +++ b/src/shared/lib/formatPrice.ts @@ -0,0 +1,32 @@ +import i18n from '@/shared/config/i18n'; +import { LanguageRoutes } from '@/shared/config/i18n/type'; + +/** + * Format price. With label. + * @param amount Price + * @param withLabel Show label. Default false + * @returns string. Ex. X XXX XXX sum + */ +const formatPrice = (amount: number | string, withLabel?: boolean) => { + const locale = i18n.language; + const label = withLabel + ? locale == LanguageRoutes.RU + ? ' сум' + : locale == LanguageRoutes.KI + ? ' сўм' + : ' so‘m' + : ''; + const parts = String(amount).split('.'); + const dollars = parts[0]; + const cents = parts.length > 1 ? parts[1] : '00'; + + const formattedDollars = dollars.replace(/\B(?=(\d{3})+(?!\d))/g, ' '); + + if (String(amount).length == 0) { + return formattedDollars + '.' + cents + label; + } else { + return formattedDollars + label; + } +}; + +export default formatPrice; diff --git a/src/shared/lib/utils.ts b/src/shared/lib/utils.ts new file mode 100644 index 0000000..2819a83 --- /dev/null +++ b/src/shared/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from 'clsx'; +import { twMerge } from 'tailwind-merge'; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} diff --git a/src/shared/ui/button.tsx b/src/shared/ui/button.tsx new file mode 100644 index 0000000..8d1aace --- /dev/null +++ b/src/shared/ui/button.tsx @@ -0,0 +1,59 @@ +import * as React from 'react'; +import { Slot } from '@radix-ui/react-slot'; +import { cva, type VariantProps } from 'class-variance-authority'; + +import { cn } from '@/shared/lib/utils'; + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", + { + variants: { + variant: { + default: + 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90', + destructive: + 'bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60', + outline: + 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50', + secondary: + 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80', + ghost: + 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50', + link: 'text-primary underline-offset-4 hover:underline', + }, + size: { + default: 'h-9 px-4 py-2 has-[>svg]:px-3', + sm: 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5', + lg: 'h-10 rounded-md px-6 has-[>svg]:px-4', + icon: 'size-9', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + }, +); + +function Button({ + className, + variant, + size, + asChild = false, + ...props +}: React.ComponentProps<'button'> & + VariantProps & { + asChild?: boolean; + }) { + const Comp = asChild ? Slot : 'button'; + + return ( + + ); +} + +export { Button, buttonVariants }; diff --git a/src/shared/ui/card.tsx b/src/shared/ui/card.tsx new file mode 100644 index 0000000..c913fdf --- /dev/null +++ b/src/shared/ui/card.tsx @@ -0,0 +1,92 @@ +import * as React from "react" + +import { cn } from "@/shared/lib/utils" + +function Card({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardHeader({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardTitle({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardDescription({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardAction({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardContent({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardFooter({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +export { + Card, + CardHeader, + CardFooter, + CardTitle, + CardAction, + CardDescription, + CardContent, +} diff --git a/src/shared/ui/carousel.tsx b/src/shared/ui/carousel.tsx new file mode 100644 index 0000000..5e957d0 --- /dev/null +++ b/src/shared/ui/carousel.tsx @@ -0,0 +1,239 @@ +import * as React from "react" +import useEmblaCarousel, { + type UseEmblaCarouselType, +} from "embla-carousel-react" +import { ArrowLeft, ArrowRight } from "lucide-react" + +import { cn } from "@/shared/lib/utils" +import { Button } from "@/shared/ui/button" + +type CarouselApi = UseEmblaCarouselType[1] +type UseCarouselParameters = Parameters +type CarouselOptions = UseCarouselParameters[0] +type CarouselPlugin = UseCarouselParameters[1] + +type CarouselProps = { + opts?: CarouselOptions + plugins?: CarouselPlugin + orientation?: "horizontal" | "vertical" + setApi?: (api: CarouselApi) => void +} + +type CarouselContextProps = { + carouselRef: ReturnType[0] + api: ReturnType[1] + scrollPrev: () => void + scrollNext: () => void + canScrollPrev: boolean + canScrollNext: boolean +} & CarouselProps + +const CarouselContext = React.createContext(null) + +function useCarousel() { + const context = React.useContext(CarouselContext) + + if (!context) { + throw new Error("useCarousel must be used within a ") + } + + return context +} + +function Carousel({ + orientation = "horizontal", + opts, + setApi, + plugins, + className, + children, + ...props +}: React.ComponentProps<"div"> & CarouselProps) { + const [carouselRef, api] = useEmblaCarousel( + { + ...opts, + axis: orientation === "horizontal" ? "x" : "y", + }, + plugins + ) + const [canScrollPrev, setCanScrollPrev] = React.useState(false) + const [canScrollNext, setCanScrollNext] = React.useState(false) + + const onSelect = React.useCallback((api: CarouselApi) => { + if (!api) return + setCanScrollPrev(api.canScrollPrev()) + setCanScrollNext(api.canScrollNext()) + }, []) + + const scrollPrev = React.useCallback(() => { + api?.scrollPrev() + }, [api]) + + const scrollNext = React.useCallback(() => { + api?.scrollNext() + }, [api]) + + const handleKeyDown = React.useCallback( + (event: React.KeyboardEvent) => { + if (event.key === "ArrowLeft") { + event.preventDefault() + scrollPrev() + } else if (event.key === "ArrowRight") { + event.preventDefault() + scrollNext() + } + }, + [scrollPrev, scrollNext] + ) + + React.useEffect(() => { + if (!api || !setApi) return + setApi(api) + }, [api, setApi]) + + React.useEffect(() => { + if (!api) return + onSelect(api) + api.on("reInit", onSelect) + api.on("select", onSelect) + + return () => { + api?.off("select", onSelect) + } + }, [api, onSelect]) + + return ( + +
+ {children} +
+
+ ) +} + +function CarouselContent({ className, ...props }: React.ComponentProps<"div">) { + const { carouselRef, orientation } = useCarousel() + + return ( +
+
+
+ ) +} + +function CarouselItem({ className, ...props }: React.ComponentProps<"div">) { + const { orientation } = useCarousel() + + return ( +
+ ) +} + +function CarouselPrevious({ + className, + variant = "outline", + size = "icon", + ...props +}: React.ComponentProps) { + const { orientation, scrollPrev, canScrollPrev } = useCarousel() + + return ( + + ) +} + +function CarouselNext({ + className, + variant = "outline", + size = "icon", + ...props +}: React.ComponentProps) { + const { orientation, scrollNext, canScrollNext } = useCarousel() + + return ( + + ) +} + +export { + type CarouselApi, + Carousel, + CarouselContent, + CarouselItem, + CarouselPrevious, + CarouselNext, +} diff --git a/src/shared/ui/chart.tsx b/src/shared/ui/chart.tsx new file mode 100644 index 0000000..996e8ef --- /dev/null +++ b/src/shared/ui/chart.tsx @@ -0,0 +1,355 @@ +import * as React from 'react'; +import * as RechartsPrimitive from 'recharts'; + +import { cn } from '@/shared/lib/utils'; + +// Format: { THEME_NAME: CSS_SELECTOR } +const THEMES = { light: '', dark: '.dark' } as const; + +export type ChartConfig = { + [k in string]: { + label?: React.ReactNode; + icon?: React.ComponentType; + } & ( + | { color?: string; theme?: never } + | { color?: never; theme: Record } + ); +}; + +type ChartContextProps = { + config: ChartConfig; +}; + +const ChartContext = React.createContext(null); + +function useChart() { + const context = React.useContext(ChartContext); + + if (!context) { + throw new Error('useChart must be used within a '); + } + + return context; +} + +function ChartContainer({ + id, + className, + children, + config, + ...props +}: React.ComponentProps<'div'> & { + config: ChartConfig; + children: React.ComponentProps< + typeof RechartsPrimitive.ResponsiveContainer + >['children']; +}) { + const uniqueId = React.useId(); + const chartId = `chart-${id || uniqueId.replace(/:/g, '')}`; + + return ( + +
+ + + {children} + +
+
+ ); +} + +const ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => { + const colorConfig = Object.entries(config).filter( + ([, config]) => config.theme || config.color, + ); + + if (!colorConfig.length) { + return null; + } + + return ( +