From 5863646c339c20c8c00b58ed5d2fefc1298b67d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=98=81=EC=9A=B0?= Date: Wed, 29 Oct 2025 21:11:18 +0900 Subject: [PATCH 1/8] init --- PAND-MARKET/.gitignore | 24 + PAND-MARKET/README.md | 73 ++ PAND-MARKET/eslint.config.js | 23 + PAND-MARKET/index.html | 13 + PAND-MARKET/package.json | 30 + PAND-MARKET/pnpm-lock.yaml | 2115 ++++++++++++++++++++++++++++++ PAND-MARKET/public/vite.svg | 1 + PAND-MARKET/src/App.css | 42 + PAND-MARKET/src/App.tsx | 35 + PAND-MARKET/src/assets/react.svg | 1 + PAND-MARKET/src/index.css | 68 + PAND-MARKET/src/main.tsx | 10 + PAND-MARKET/tsconfig.app.json | 28 + PAND-MARKET/tsconfig.json | 7 + PAND-MARKET/tsconfig.node.json | 26 + PAND-MARKET/vite.config.ts | 7 + 16 files changed, 2503 insertions(+) create mode 100644 PAND-MARKET/.gitignore create mode 100644 PAND-MARKET/README.md create mode 100644 PAND-MARKET/eslint.config.js create mode 100644 PAND-MARKET/index.html create mode 100644 PAND-MARKET/package.json create mode 100644 PAND-MARKET/pnpm-lock.yaml create mode 100644 PAND-MARKET/public/vite.svg create mode 100644 PAND-MARKET/src/App.css create mode 100644 PAND-MARKET/src/App.tsx create mode 100644 PAND-MARKET/src/assets/react.svg create mode 100644 PAND-MARKET/src/index.css create mode 100644 PAND-MARKET/src/main.tsx create mode 100644 PAND-MARKET/tsconfig.app.json create mode 100644 PAND-MARKET/tsconfig.json create mode 100644 PAND-MARKET/tsconfig.node.json create mode 100644 PAND-MARKET/vite.config.ts diff --git a/PAND-MARKET/.gitignore b/PAND-MARKET/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/PAND-MARKET/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/PAND-MARKET/README.md b/PAND-MARKET/README.md new file mode 100644 index 0000000..d2e7761 --- /dev/null +++ b/PAND-MARKET/README.md @@ -0,0 +1,73 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## React Compiler + +The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + + // Remove tseslint.configs.recommended and replace with this + tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + tseslint.configs.stylisticTypeChecked, + + // Other configs... + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + // Enable lint rules for React + reactX.configs['recommended-typescript'], + // Enable lint rules for React DOM + reactDom.configs.recommended, + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` diff --git a/PAND-MARKET/eslint.config.js b/PAND-MARKET/eslint.config.js new file mode 100644 index 0000000..b19330b --- /dev/null +++ b/PAND-MARKET/eslint.config.js @@ -0,0 +1,23 @@ +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' +import { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs['recommended-latest'], + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + }, +]) diff --git a/PAND-MARKET/index.html b/PAND-MARKET/index.html new file mode 100644 index 0000000..dd18eb4 --- /dev/null +++ b/PAND-MARKET/index.html @@ -0,0 +1,13 @@ + + + + + + + pand-market + + +
+ + + diff --git a/PAND-MARKET/package.json b/PAND-MARKET/package.json new file mode 100644 index 0000000..5cf2a67 --- /dev/null +++ b/PAND-MARKET/package.json @@ -0,0 +1,30 @@ +{ + "name": "pand-market", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^19.1.1", + "react-dom": "^19.1.1" + }, + "devDependencies": { + "@eslint/js": "^9.36.0", + "@types/node": "^24.6.0", + "@types/react": "^19.1.16", + "@types/react-dom": "^19.1.9", + "@vitejs/plugin-react": "^5.0.4", + "eslint": "^9.36.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.22", + "globals": "^16.4.0", + "typescript": "~5.9.3", + "typescript-eslint": "^8.45.0", + "vite": "^7.1.7" + } +} diff --git a/PAND-MARKET/pnpm-lock.yaml b/PAND-MARKET/pnpm-lock.yaml new file mode 100644 index 0000000..9640d1c --- /dev/null +++ b/PAND-MARKET/pnpm-lock.yaml @@ -0,0 +1,2115 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + react: + specifier: ^19.1.1 + version: 19.2.0 + react-dom: + specifier: ^19.1.1 + version: 19.2.0(react@19.2.0) + devDependencies: + '@eslint/js': + specifier: ^9.36.0 + version: 9.38.0 + '@types/node': + specifier: ^24.6.0 + version: 24.9.1 + '@types/react': + specifier: ^19.1.16 + version: 19.2.2 + '@types/react-dom': + specifier: ^19.1.9 + version: 19.2.2(@types/react@19.2.2) + '@vitejs/plugin-react': + specifier: ^5.0.4 + version: 5.1.0(vite@7.1.12(@types/node@24.9.1)) + eslint: + specifier: ^9.36.0 + version: 9.38.0 + eslint-plugin-react-hooks: + specifier: ^5.2.0 + version: 5.2.0(eslint@9.38.0) + eslint-plugin-react-refresh: + specifier: ^0.4.22 + version: 0.4.24(eslint@9.38.0) + globals: + specifier: ^16.4.0 + version: 16.4.0 + typescript: + specifier: ~5.9.3 + version: 5.9.3 + typescript-eslint: + specifier: ^8.45.0 + version: 8.46.2(eslint@9.38.0)(typescript@5.9.3) + vite: + specifier: ^7.1.7 + version: 7.1.12(@types/node@24.9.1) + +packages: + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.28.5': + resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.28.5': + resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.5': + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.5': + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.5': + resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + engines: {node: '>=6.9.0'} + + '@esbuild/aix-ppc64@0.25.11': + resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.11': + resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.11': + resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.11': + resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.11': + resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.11': + resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.11': + resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.11': + resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.11': + resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.11': + resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.11': + resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.11': + resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.11': + resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.11': + resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.11': + resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.11': + resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.11': + resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.11': + resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.11': + resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.11': + resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.11': + resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.11': + resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.11': + resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.11': + resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.11': + resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.11': + resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.0': + resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.21.1': + resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.4.1': + resolution: {integrity: sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.16.0': + resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.38.0': + resolution: {integrity: sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.0': + resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@rolldown/pluginutils@1.0.0-beta.43': + resolution: {integrity: sha512-5Uxg7fQUCmfhax7FJke2+8B6cqgeUJUD9o2uXIKXhD+mG0mL6NObmVoi9wXEU1tY89mZKgAYA6fTbftx3q2ZPQ==} + + '@rollup/rollup-android-arm-eabi@4.52.5': + resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.52.5': + resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.52.5': + resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.52.5': + resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.52.5': + resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.52.5': + resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.52.5': + resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.52.5': + resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.52.5': + resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.52.5': + resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.52.5': + resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.52.5': + resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.52.5': + resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.52.5': + resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.52.5': + resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.52.5': + resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.52.5': + resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openharmony-arm64@4.52.5': + resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.52.5': + resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.52.5': + resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.52.5': + resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.52.5': + resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==} + cpu: [x64] + os: [win32] + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/node@24.9.1': + resolution: {integrity: sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==} + + '@types/react-dom@19.2.2': + resolution: {integrity: sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==} + peerDependencies: + '@types/react': ^19.2.0 + + '@types/react@19.2.2': + resolution: {integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==} + + '@typescript-eslint/eslint-plugin@8.46.2': + resolution: {integrity: sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.46.2 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/parser@8.46.2': + resolution: {integrity: sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/project-service@8.46.2': + resolution: {integrity: sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/scope-manager@8.46.2': + resolution: {integrity: sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.46.2': + resolution: {integrity: sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/type-utils@8.46.2': + resolution: {integrity: sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/types@8.46.2': + resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.46.2': + resolution: {integrity: sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/utils@8.46.2': + resolution: {integrity: sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/visitor-keys@8.46.2': + resolution: {integrity: sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vitejs/plugin-react@5.1.0': + resolution: {integrity: sha512-4LuWrg7EKWgQaMJfnN+wcmbAW+VSsCmqGohftWjuct47bv8uE4n/nPpq4XjJPsxgq00GGG5J8dvBczp8uxScew==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + baseline-browser-mapping@2.8.20: + resolution: {integrity: sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==} + hasBin: true + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.27.0: + resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001751: + resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + electron-to-chromium@1.5.240: + resolution: {integrity: sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ==} + + esbuild@0.25.11: + resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-react-hooks@5.2.0: + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} + 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 + + eslint-plugin-react-refresh@0.4.24: + resolution: {integrity: sha512-nLHIW7TEq3aLrEYWpVaJ1dRgFR+wLDPN8e8FpYAql/bMV2oBEfC37K0gLEGgv9fy66juNShSMV8OkTqzltcG/w==} + peerDependencies: + eslint: '>=8.40' + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.38.0: + resolution: {integrity: sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@16.4.0: + resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + engines: {node: '>=18'} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-releases@2.0.26: + resolution: {integrity: sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-dom@19.2.0: + resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} + peerDependencies: + react: ^19.2.0 + + react-refresh@0.18.0: + resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} + engines: {node: '>=0.10.0'} + + react@19.2.0: + resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup@4.52.5: + resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + typescript-eslint@8.46.2: + resolution: {integrity: sha512-vbw8bOmiuYNdzzV3lsiWv6sRwjyuKJMQqWulBOU7M0RrxedXledX8G8kBbQeiOYDnTfiXz0Y4081E1QMNB6iQg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + + update-browserslist-db@1.1.4: + resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + vite@7.1.12: + resolution: {integrity: sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.28.5': {} + + '@babel/core@7.28.5': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.28.5': + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.28.5 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.27.0 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.28.4': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 + + '@babel/parser@7.28.5': + dependencies: + '@babel/types': 7.28.5 + + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + + '@babel/traverse@7.28.5': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.28.5': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@esbuild/aix-ppc64@0.25.11': + optional: true + + '@esbuild/android-arm64@0.25.11': + optional: true + + '@esbuild/android-arm@0.25.11': + optional: true + + '@esbuild/android-x64@0.25.11': + optional: true + + '@esbuild/darwin-arm64@0.25.11': + optional: true + + '@esbuild/darwin-x64@0.25.11': + optional: true + + '@esbuild/freebsd-arm64@0.25.11': + optional: true + + '@esbuild/freebsd-x64@0.25.11': + optional: true + + '@esbuild/linux-arm64@0.25.11': + optional: true + + '@esbuild/linux-arm@0.25.11': + optional: true + + '@esbuild/linux-ia32@0.25.11': + optional: true + + '@esbuild/linux-loong64@0.25.11': + optional: true + + '@esbuild/linux-mips64el@0.25.11': + optional: true + + '@esbuild/linux-ppc64@0.25.11': + optional: true + + '@esbuild/linux-riscv64@0.25.11': + optional: true + + '@esbuild/linux-s390x@0.25.11': + optional: true + + '@esbuild/linux-x64@0.25.11': + optional: true + + '@esbuild/netbsd-arm64@0.25.11': + optional: true + + '@esbuild/netbsd-x64@0.25.11': + optional: true + + '@esbuild/openbsd-arm64@0.25.11': + optional: true + + '@esbuild/openbsd-x64@0.25.11': + optional: true + + '@esbuild/openharmony-arm64@0.25.11': + optional: true + + '@esbuild/sunos-x64@0.25.11': + optional: true + + '@esbuild/win32-arm64@0.25.11': + optional: true + + '@esbuild/win32-ia32@0.25.11': + optional: true + + '@esbuild/win32-x64@0.25.11': + optional: true + + '@eslint-community/eslint-utils@4.9.0(eslint@9.38.0)': + dependencies: + eslint: 9.38.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.21.1': + dependencies: + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.1': + dependencies: + '@eslint/core': 0.16.0 + + '@eslint/core@0.16.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.38.0': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.0': + dependencies: + '@eslint/core': 0.16.0 + levn: 0.4.1 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.7': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.4.3 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@rolldown/pluginutils@1.0.0-beta.43': {} + + '@rollup/rollup-android-arm-eabi@4.52.5': + optional: true + + '@rollup/rollup-android-arm64@4.52.5': + optional: true + + '@rollup/rollup-darwin-arm64@4.52.5': + optional: true + + '@rollup/rollup-darwin-x64@4.52.5': + optional: true + + '@rollup/rollup-freebsd-arm64@4.52.5': + optional: true + + '@rollup/rollup-freebsd-x64@4.52.5': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.52.5': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.52.5': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.52.5': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.52.5': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.52.5': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.52.5': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.52.5': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.52.5': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.52.5': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.52.5': + optional: true + + '@rollup/rollup-linux-x64-musl@4.52.5': + optional: true + + '@rollup/rollup-openharmony-arm64@4.52.5': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.52.5': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.52.5': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.52.5': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.52.5': + optional: true + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.28.5 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.28.5 + + '@types/estree@1.0.8': {} + + '@types/json-schema@7.0.15': {} + + '@types/node@24.9.1': + dependencies: + undici-types: 7.16.0 + + '@types/react-dom@19.2.2(@types/react@19.2.2)': + dependencies: + '@types/react': 19.2.2 + + '@types/react@19.2.2': + dependencies: + csstype: 3.1.3 + + '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.46.2(eslint@9.38.0)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.2 + '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.38.0)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.2 + eslint: 9.38.0 + graphemer: 1.4.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.46.2 + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.2 + debug: 4.4.3 + eslint: 9.38.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.46.2(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) + '@typescript-eslint/types': 8.46.2 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.46.2': + dependencies: + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/visitor-keys': 8.46.2 + + '@typescript-eslint/tsconfig-utils@8.46.2(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.46.2(eslint@9.38.0)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.38.0)(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.38.0 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.46.2': {} + + '@typescript-eslint/typescript-estree@8.46.2(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.46.2(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/visitor-keys': 8.46.2 + debug: 4.4.3 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.3 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.46.2(eslint@9.38.0)(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0) + '@typescript-eslint/scope-manager': 8.46.2 + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + eslint: 9.38.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.46.2': + dependencies: + '@typescript-eslint/types': 8.46.2 + eslint-visitor-keys: 4.2.1 + + '@vitejs/plugin-react@5.1.0(vite@7.1.12(@types/node@24.9.1))': + dependencies: + '@babel/core': 7.28.5 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5) + '@rolldown/pluginutils': 1.0.0-beta.43 + '@types/babel__core': 7.20.5 + react-refresh: 0.18.0 + vite: 7.1.12(@types/node@24.9.1) + transitivePeerDependencies: + - supports-color + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + argparse@2.0.1: {} + + balanced-match@1.0.2: {} + + baseline-browser-mapping@2.8.20: {} + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.27.0: + dependencies: + baseline-browser-mapping: 2.8.20 + caniuse-lite: 1.0.30001751 + electron-to-chromium: 1.5.240 + node-releases: 2.0.26 + update-browserslist-db: 1.1.4(browserslist@4.27.0) + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001751: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + concat-map@0.0.1: {} + + convert-source-map@2.0.0: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + csstype@3.1.3: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + deep-is@0.1.4: {} + + electron-to-chromium@1.5.240: {} + + esbuild@0.25.11: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.11 + '@esbuild/android-arm': 0.25.11 + '@esbuild/android-arm64': 0.25.11 + '@esbuild/android-x64': 0.25.11 + '@esbuild/darwin-arm64': 0.25.11 + '@esbuild/darwin-x64': 0.25.11 + '@esbuild/freebsd-arm64': 0.25.11 + '@esbuild/freebsd-x64': 0.25.11 + '@esbuild/linux-arm': 0.25.11 + '@esbuild/linux-arm64': 0.25.11 + '@esbuild/linux-ia32': 0.25.11 + '@esbuild/linux-loong64': 0.25.11 + '@esbuild/linux-mips64el': 0.25.11 + '@esbuild/linux-ppc64': 0.25.11 + '@esbuild/linux-riscv64': 0.25.11 + '@esbuild/linux-s390x': 0.25.11 + '@esbuild/linux-x64': 0.25.11 + '@esbuild/netbsd-arm64': 0.25.11 + '@esbuild/netbsd-x64': 0.25.11 + '@esbuild/openbsd-arm64': 0.25.11 + '@esbuild/openbsd-x64': 0.25.11 + '@esbuild/openharmony-arm64': 0.25.11 + '@esbuild/sunos-x64': 0.25.11 + '@esbuild/win32-arm64': 0.25.11 + '@esbuild/win32-ia32': 0.25.11 + '@esbuild/win32-x64': 0.25.11 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-plugin-react-hooks@5.2.0(eslint@9.38.0): + dependencies: + eslint: 9.38.0 + + eslint-plugin-react-refresh@0.4.24(eslint@9.38.0): + dependencies: + eslint: 9.38.0 + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint@9.38.0: + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.1 + '@eslint/config-helpers': 0.4.1 + '@eslint/core': 0.16.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.38.0 + '@eslint/plugin-kit': 0.4.0 + '@humanfs/node': 0.16.7 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + + fsevents@2.3.3: + optional: true + + gensync@1.0.0-beta.2: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + globals@14.0.0: {} + + globals@16.4.0: {} + + graphemer@1.4.0: {} + + has-flag@4.0.0: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + isexe@2.0.0: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + natural-compare@1.4.0: {} + + node-releases@2.0.26: {} + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.3: {} + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + react-dom@19.2.0(react@19.2.0): + dependencies: + react: 19.2.0 + scheduler: 0.27.0 + + react-refresh@0.18.0: {} + + react@19.2.0: {} + + resolve-from@4.0.0: {} + + reusify@1.1.0: {} + + rollup@4.52.5: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.52.5 + '@rollup/rollup-android-arm64': 4.52.5 + '@rollup/rollup-darwin-arm64': 4.52.5 + '@rollup/rollup-darwin-x64': 4.52.5 + '@rollup/rollup-freebsd-arm64': 4.52.5 + '@rollup/rollup-freebsd-x64': 4.52.5 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.5 + '@rollup/rollup-linux-arm-musleabihf': 4.52.5 + '@rollup/rollup-linux-arm64-gnu': 4.52.5 + '@rollup/rollup-linux-arm64-musl': 4.52.5 + '@rollup/rollup-linux-loong64-gnu': 4.52.5 + '@rollup/rollup-linux-ppc64-gnu': 4.52.5 + '@rollup/rollup-linux-riscv64-gnu': 4.52.5 + '@rollup/rollup-linux-riscv64-musl': 4.52.5 + '@rollup/rollup-linux-s390x-gnu': 4.52.5 + '@rollup/rollup-linux-x64-gnu': 4.52.5 + '@rollup/rollup-linux-x64-musl': 4.52.5 + '@rollup/rollup-openharmony-arm64': 4.52.5 + '@rollup/rollup-win32-arm64-msvc': 4.52.5 + '@rollup/rollup-win32-ia32-msvc': 4.52.5 + '@rollup/rollup-win32-x64-gnu': 4.52.5 + '@rollup/rollup-win32-x64-msvc': 4.52.5 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + scheduler@0.27.0: {} + + semver@6.3.1: {} + + semver@7.7.3: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + source-map-js@1.2.1: {} + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-api-utils@2.1.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + typescript-eslint@8.46.2(eslint@9.38.0)(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.38.0)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.38.0)(typescript@5.9.3) + eslint: 9.38.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + typescript@5.9.3: {} + + undici-types@7.16.0: {} + + update-browserslist-db@1.1.4(browserslist@4.27.0): + dependencies: + browserslist: 4.27.0 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + vite@7.1.12(@types/node@24.9.1): + dependencies: + esbuild: 0.25.11 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.52.5 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.9.1 + fsevents: 2.3.3 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + yallist@3.1.1: {} + + yocto-queue@0.1.0: {} diff --git a/PAND-MARKET/public/vite.svg b/PAND-MARKET/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/PAND-MARKET/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/PAND-MARKET/src/App.css b/PAND-MARKET/src/App.css new file mode 100644 index 0000000..b9d355d --- /dev/null +++ b/PAND-MARKET/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/PAND-MARKET/src/App.tsx b/PAND-MARKET/src/App.tsx new file mode 100644 index 0000000..3d7ded3 --- /dev/null +++ b/PAND-MARKET/src/App.tsx @@ -0,0 +1,35 @@ +import { useState } from 'react' +import reactLogo from './assets/react.svg' +import viteLogo from '/vite.svg' +import './App.css' + +function App() { + const [count, setCount] = useState(0) + + return ( + <> +
+ + Vite logo + + + React logo + +
+

Vite + React

+
+ +

+ Edit src/App.tsx and save to test HMR +

+
+

+ Click on the Vite and React logos to learn more +

+ + ) +} + +export default App diff --git a/PAND-MARKET/src/assets/react.svg b/PAND-MARKET/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/PAND-MARKET/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/PAND-MARKET/src/index.css b/PAND-MARKET/src/index.css new file mode 100644 index 0000000..08a3ac9 --- /dev/null +++ b/PAND-MARKET/src/index.css @@ -0,0 +1,68 @@ +:root { + font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/PAND-MARKET/src/main.tsx b/PAND-MARKET/src/main.tsx new file mode 100644 index 0000000..bef5202 --- /dev/null +++ b/PAND-MARKET/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.tsx' + +createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/PAND-MARKET/tsconfig.app.json b/PAND-MARKET/tsconfig.app.json new file mode 100644 index 0000000..a9b5a59 --- /dev/null +++ b/PAND-MARKET/tsconfig.app.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "types": ["vite/client"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/PAND-MARKET/tsconfig.json b/PAND-MARKET/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/PAND-MARKET/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/PAND-MARKET/tsconfig.node.json b/PAND-MARKET/tsconfig.node.json new file mode 100644 index 0000000..8a67f62 --- /dev/null +++ b/PAND-MARKET/tsconfig.node.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2023", + "lib": ["ES2023"], + "module": "ESNext", + "types": ["node"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/PAND-MARKET/vite.config.ts b/PAND-MARKET/vite.config.ts new file mode 100644 index 0000000..8b0f57b --- /dev/null +++ b/PAND-MARKET/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From e6f912a9a1f1bdf7f8c342102b90a69363819203 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=98=81=EC=9A=B0?= Date: Wed, 29 Oct 2025 23:39:38 +0900 Subject: [PATCH 2/8] =?UTF-8?q?Header=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 0 -> 6148 bytes PAND-MARKET/.eslintrc.json | 32 + PAND-MARKET/.prettierrc | 7 + PAND-MARKET/package.json | 19 +- PAND-MARKET/pnpm-lock.yaml | 2023 ++++++++++++++++- PAND-MARKET/src/App.css | 43 +- PAND-MARKET/src/App.tsx | 43 +- PAND-MARKET/src/assets/logo.svg | 15 + PAND-MARKET/src/assets/profile.svg | 24 + PAND-MARKET/src/assets/react.svg | 1 - .../src/components/layout/Layout.module.css | 0 PAND-MARKET/src/components/layout/Layout.tsx | 10 + .../layout/footer/Footer.module.css | 0 .../src/components/layout/footer/Footer.tsx | 0 .../layout/header/Header.module.css | 52 + .../src/components/layout/header/Header.tsx | 45 + .../components/layout/main/Main.module.css | 0 .../src/components/layout/main/Main.tsx | 0 PAND-MARKET/src/index.css | 68 - PAND-MARKET/src/main.tsx | 14 +- PAND-MARKET/src/pages/home/Home.module.css | 0 PAND-MARKET/src/pages/home/Home.tsx | 11 + .../src/pages/products/Products.module.css | 0 PAND-MARKET/src/pages/products/Products.tsx | 5 + PAND-MARKET/src/styles/reset.css | 64 + PAND-MARKET/tsconfig.app.json | 13 +- PAND-MARKET/vite.config.ts | 17 +- 27 files changed, 2315 insertions(+), 191 deletions(-) create mode 100644 .DS_Store create mode 100644 PAND-MARKET/.eslintrc.json create mode 100644 PAND-MARKET/.prettierrc create mode 100644 PAND-MARKET/src/assets/logo.svg create mode 100644 PAND-MARKET/src/assets/profile.svg delete mode 100644 PAND-MARKET/src/assets/react.svg create mode 100644 PAND-MARKET/src/components/layout/Layout.module.css create mode 100644 PAND-MARKET/src/components/layout/Layout.tsx create mode 100644 PAND-MARKET/src/components/layout/footer/Footer.module.css create mode 100644 PAND-MARKET/src/components/layout/footer/Footer.tsx create mode 100644 PAND-MARKET/src/components/layout/header/Header.module.css create mode 100644 PAND-MARKET/src/components/layout/header/Header.tsx create mode 100644 PAND-MARKET/src/components/layout/main/Main.module.css create mode 100644 PAND-MARKET/src/components/layout/main/Main.tsx delete mode 100644 PAND-MARKET/src/index.css create mode 100644 PAND-MARKET/src/pages/home/Home.module.css create mode 100644 PAND-MARKET/src/pages/home/Home.tsx create mode 100644 PAND-MARKET/src/pages/products/Products.module.css create mode 100644 PAND-MARKET/src/pages/products/Products.tsx create mode 100644 PAND-MARKET/src/styles/reset.css diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8e4b82046e56fd03c6d591a343787680d1d3f2f3 GIT binary patch literal 6148 zcmeHKO=}x55FOc0vx^D%&_a$2xhAd~#|6{N#t}qGrQ=DX@k^D;m9=N<-nv)yK1W~lESd}^({X1oI^o)p)>(WL58_YhaMrIqf2;G! zAkBv(Lr9Y$QcjQ4Jkhg`p61Eea3kB{`JUgeZO-S-c56G>Yqu8L!MwfOK-_%2Soq$H zt(R{O`(LxmTwj~-Cxtm{Y{TIVd`GZClW)-|&vbr)3}*Y7>pdvb#k}uPoh~W)N3|cw zx~&?jVxoX3APPLX0&e~Ds*nC9@&TfNDDc!2;PoMZGlmWei)QISVXgo`K1Lct%!fth z1P()og+=thl%)bKRk= 8'} + '@pkgr/core@0.2.9': + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@rolldown/pluginutils@1.0.0-beta.43': resolution: {integrity: sha512-5Uxg7fQUCmfhax7FJke2+8B6cqgeUJUD9o2uXIKXhD+mG0mL6NObmVoi9wXEU1tY89mZKgAYA6fTbftx3q2ZPQ==} @@ -488,6 +531,99 @@ packages: cpu: [x64] os: [win32] + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@tailwindcss/node@4.1.16': + resolution: {integrity: sha512-BX5iaSsloNuvKNHRN3k2RcCuTEgASTo77mofW0vmeHkfrDWaoFAFvNHpEgtu0eqyypcyiBkDWzSMxJhp3AUVcw==} + + '@tailwindcss/oxide-android-arm64@4.1.16': + resolution: {integrity: sha512-8+ctzkjHgwDJ5caq9IqRSgsP70xhdhJvm+oueS/yhD5ixLhqTw9fSL1OurzMUhBwE5zK26FXLCz2f/RtkISqHA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.16': + resolution: {integrity: sha512-C3oZy5042v2FOALBZtY0JTDnGNdS6w7DxL/odvSny17ORUnaRKhyTse8xYi3yKGyfnTUOdavRCdmc8QqJYwFKA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.16': + resolution: {integrity: sha512-vjrl/1Ub9+JwU6BP0emgipGjowzYZMjbWCDqwA2Z4vCa+HBSpP4v6U2ddejcHsolsYxwL5r4bPNoamlV0xDdLg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.16': + resolution: {integrity: sha512-TSMpPYpQLm+aR1wW5rKuUuEruc/oOX3C7H0BTnPDn7W/eMw8W+MRMpiypKMkXZfwH8wqPIRKppuZoedTtNj2tg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.16': + resolution: {integrity: sha512-p0GGfRg/w0sdsFKBjMYvvKIiKy/LNWLWgV/plR4lUgrsxFAoQBFrXkZ4C0w8IOXfslB9vHK/JGASWD2IefIpvw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.16': + resolution: {integrity: sha512-DoixyMmTNO19rwRPdqviTrG1rYzpxgyYJl8RgQvdAQUzxC1ToLRqtNJpU/ATURSKgIg6uerPw2feW0aS8SNr/w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.16': + resolution: {integrity: sha512-H81UXMa9hJhWhaAUca6bU2wm5RRFpuHImrwXBUvPbYb+3jo32I9VIwpOX6hms0fPmA6f2pGVlybO6qU8pF4fzQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.16': + resolution: {integrity: sha512-ZGHQxDtFC2/ruo7t99Qo2TTIvOERULPl5l0K1g0oK6b5PGqjYMga+FcY1wIUnrUxY56h28FxybtDEla+ICOyew==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.16': + resolution: {integrity: sha512-Oi1tAaa0rcKf1Og9MzKeINZzMLPbhxvm7rno5/zuP1WYmpiG0bEHq4AcRUiG2165/WUzvxkW4XDYCscZWbTLZw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.16': + resolution: {integrity: sha512-B01u/b8LteGRwucIBmCQ07FVXLzImWESAIMcUU6nvFt/tYsQ6IHz8DmZ5KtvmwxD+iTYBtM1xwoGXswnlu9v0Q==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.16': + resolution: {integrity: sha512-zX+Q8sSkGj6HKRTMJXuPvOcP8XfYON24zJBRPlszcH1Np7xuHXhWn8qfFjIujVzvH3BHU+16jBXwgpl20i+v9A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.16': + resolution: {integrity: sha512-m5dDFJUEejbFqP+UXVstd4W/wnxA4F61q8SoL+mqTypId2T2ZpuxosNSgowiCnLp2+Z+rivdU0AqpfgiD7yCBg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.16': + resolution: {integrity: sha512-2OSv52FRuhdlgyOQqgtQHuCgXnS8nFSYRp2tJ+4WZXKgTxqPy7SMSls8c3mPT5pkZ17SBToGM5LHEJBO7miEdg==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.1.16': + resolution: {integrity: sha512-bbguNBcDxsRmi9nnlWJxhfDWamY3lmcyACHcdO1crxfzuLpOhHLLtEIN/nCbbAtj5rchUgQD17QVAKi1f7IsKg==} + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -506,6 +642,9 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + '@types/node@24.9.1': resolution: {integrity: sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==} @@ -602,6 +741,61 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.11.0: + resolution: {integrity: sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==} + engines: {node: '>=4'} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -624,6 +818,18 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -645,9 +851,16 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cookie@1.0.2: + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -655,6 +868,29 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -667,9 +903,68 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + electron-to-chromium@1.5.240: resolution: {integrity: sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ==} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + engines: {node: '>=10.13.0'} + + es-abstract@1.24.0: + resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + esbuild@0.25.11: resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} engines: {node: '>=18'} @@ -683,6 +978,90 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + eslint-config-airbnb-base@15.0.0: + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + + eslint-config-airbnb-typescript@18.0.0: + resolution: {integrity: sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^7.0.0 + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + + eslint-config-airbnb@19.0.4: + resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} + engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + eslint-plugin-jsx-a11y: ^6.5.1 + eslint-plugin-react: ^7.28.0 + eslint-plugin-react-hooks: ^4.3.0 + + eslint-config-prettier@10.1.8: + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-module-utils@2.12.1: + resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.32.0: + resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jsx-a11y@6.10.2: + resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + + eslint-plugin-prettier@5.5.4: + resolution: {integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + eslint-plugin-react-hooks@5.2.0: resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} engines: {node: '>=10'} @@ -694,6 +1073,12 @@ packages: peerDependencies: eslint: '>=8.40' + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + eslint-scope@8.4.0: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -739,6 +1124,9 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -780,15 +1168,45 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -805,13 +1223,47 @@ packages: resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} engines: {node: '>=18'} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -828,21 +1280,124 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} + engines: {node: '>= 0.4'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -864,18 +1419,103 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lightningcss-android-arm64@1.30.2: + resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.30.2: + resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.2: + resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.2: + resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.2: + resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.2: + resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.2: + resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.2: + resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.2: + resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.2: + resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.2: + resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.2: + resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} + engines: {node: '>= 12.0.0'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -883,9 +1523,20 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -901,6 +1552,9 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -915,10 +1569,46 @@ packages: node-releases@2.0.26: resolution: {integrity: sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==} + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -939,6 +1629,9 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -950,6 +1643,10 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -958,6 +1655,18 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier@3.6.2: + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + engines: {node: '>=14'} + hasBin: true + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -970,18 +1679,55 @@ packages: peerDependencies: react: ^19.2.0 + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-refresh@0.18.0: resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} engines: {node: '>=0.10.0'} + react-router-dom@7.9.4: + resolution: {integrity: sha512-f30P6bIkmYvnHHa5Gcu65deIXoA2+r3Eb6PJIAddvsT9aGlchMatJ51GgpU470aSqRRbFX22T70yQNUGuW3DfA==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + + react-router@7.9.4: + resolution: {integrity: sha512-SD3G8HKviFHg9xj7dNODUKDFgpG4xqD5nhyd0mYoB5iISepuZAvzSr8ywxgxKJ52yRzf/HWtVHc9AWwoTbljvA==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true + react@19.2.0: resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} engines: {node: '>=0.10.0'} + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -994,6 +1740,18 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} @@ -1006,6 +1764,21 @@ packages: engines: {node: '>=10'} hasBin: true + set-cookie-parser@2.7.2: + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -1014,10 +1787,57 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + + string.prototype.includes@2.0.1: + resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + engines: {node: '>= 0.4'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -1026,6 +1846,21 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + synckit@0.11.11: + resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} + engines: {node: ^14.18.0 || >=16.0.0} + + tailwindcss@4.1.16: + resolution: {integrity: sha512-pONL5awpaQX4LN5eiv7moSiSPd/DLDzKVRJz8Q9PgzmAdd1R4307GQS2ZpfiN7ZmekdQrfhZZiSE5jkLR4WNaA==} + + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + engines: {node: '>=6'} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -1040,10 +1875,29 @@ packages: peerDependencies: typescript: '>=4.8.4' + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + typescript-eslint@8.46.2: resolution: {integrity: sha512-vbw8bOmiuYNdzzV3lsiWv6sRwjyuKJMQqWulBOU7M0RrxedXledX8G8kBbQeiOYDnTfiXz0Y4081E1QMNB6iQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1056,6 +1910,10 @@ packages: engines: {node: '>=14.17'} hasBin: true + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} @@ -1108,6 +1966,22 @@ packages: yaml: optional: true + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -1316,9 +2190,9 @@ snapshots: '@esbuild/win32-x64@0.25.11': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.38.0)': + '@eslint-community/eslint-utils@4.9.0(eslint@9.38.0(jiti@2.6.1))': dependencies: - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -1404,6 +2278,8 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 + '@pkgr/core@0.2.9': {} + '@rolldown/pluginutils@1.0.0-beta.43': {} '@rollup/rollup-android-arm-eabi@4.52.5': @@ -1472,6 +2348,76 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.5': optional: true + '@rtsao/scc@1.1.0': {} + + '@tailwindcss/node@4.1.16': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.18.3 + jiti: 2.6.1 + lightningcss: 1.30.2 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.1.16 + + '@tailwindcss/oxide-android-arm64@4.1.16': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.16': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.16': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.16': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.16': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.16': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.16': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.16': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.16': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.16': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.16': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.16': + optional: true + + '@tailwindcss/oxide@4.1.16': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.16 + '@tailwindcss/oxide-darwin-arm64': 4.1.16 + '@tailwindcss/oxide-darwin-x64': 4.1.16 + '@tailwindcss/oxide-freebsd-x64': 4.1.16 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.16 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.16 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.16 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.16 + '@tailwindcss/oxide-linux-x64-musl': 4.1.16 + '@tailwindcss/oxide-wasm32-wasi': 4.1.16 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.16 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.16 + + '@tailwindcss/vite@4.1.16(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2))': + dependencies: + '@tailwindcss/node': 4.1.16 + '@tailwindcss/oxide': 4.1.16 + tailwindcss: 4.1.16 + vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2) + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.28.5 @@ -1497,6 +2443,8 @@ snapshots: '@types/json-schema@7.0.15': {} + '@types/json5@0.0.29': {} + '@types/node@24.9.1': dependencies: undici-types: 7.16.0 @@ -1509,15 +2457,15 @@ snapshots: dependencies: csstype: 3.1.3 - '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0)(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.46.2 - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -1526,14 +2474,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3)': + '@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.46.2 '@typescript-eslint/types': 8.46.2 '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.46.2 debug: 4.4.3 - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -1556,13 +2504,13 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.2(eslint@9.38.0)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.46.2 '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3 - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -1586,13 +2534,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.2(eslint@9.38.0)(typescript@5.9.3)': + '@typescript-eslint/utils@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.46.2 '@typescript-eslint/types': 8.46.2 '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -1602,7 +2550,7 @@ snapshots: '@typescript-eslint/types': 8.46.2 eslint-visitor-keys: 4.2.1 - '@vitejs/plugin-react@5.1.0(vite@7.1.12(@types/node@24.9.1))': + '@vitejs/plugin-react@5.1.0(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -1610,7 +2558,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.43 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.1.12(@types/node@24.9.1) + vite: 7.1.12(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2) transitivePeerDependencies: - supports-color @@ -1633,6 +2581,87 @@ snapshots: argparse@2.0.1: {} + aria-query@5.3.2: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-includes@3.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.findlastindex@1.2.6: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-shim-unscopables: 1.1.0 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + ast-types-flow@0.0.8: {} + + async-function@1.0.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + axe-core@4.11.0: {} + + axobject-query@4.1.0: {} + balanced-match@1.0.2: {} baseline-browser-mapping@2.8.20: {} @@ -1658,6 +2687,23 @@ snapshots: node-releases: 2.0.26 update-browserslist-db: 1.1.4(browserslist@4.27.0) + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + callsites@3.1.0: {} caniuse-lite@1.0.30001751: {} @@ -1675,8 +2721,12 @@ snapshots: concat-map@0.0.1: {} + confusing-browser-globals@1.0.11: {} + convert-source-map@2.0.0: {} + cookie@1.0.2: {} + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -1685,14 +2735,170 @@ snapshots: csstype@3.1.3: {} + damerau-levenshtein@1.0.8: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + debug@4.4.3: dependencies: ms: 2.1.3 deep-is@0.1.4: {} + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + detect-libc@2.1.2: {} + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + electron-to-chromium@1.5.240: {} + emoji-regex@9.2.2: {} + + enhanced-resolve@5.18.3: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.0 + + es-abstract@1.24.0: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-negative-zero: 2.0.3 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-iterator-helpers@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + safe-array-concat: 1.1.3 + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + esbuild@0.25.11: optionalDependencies: '@esbuild/aix-ppc64': 0.25.11 @@ -1726,13 +2932,143 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-plugin-react-hooks@5.2.0(eslint@9.38.0): + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)))(eslint@9.38.0(jiti@2.6.1)): + dependencies: + confusing-browser-globals: 1.0.11 + eslint: 9.38.0(jiti@2.6.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)) + object.assign: 4.1.7 + object.entries: 1.1.9 + semver: 6.3.1 + + eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)))(eslint@9.38.0(jiti@2.6.1)): + dependencies: + '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.38.0(jiti@2.6.1) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)))(eslint@9.38.0(jiti@2.6.1)) + transitivePeerDependencies: + - eslint-plugin-import + + eslint-config-airbnb@19.0.4(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)))(eslint-plugin-jsx-a11y@6.10.2(eslint@9.38.0(jiti@2.6.1)))(eslint-plugin-react-hooks@5.2.0(eslint@9.38.0(jiti@2.6.1)))(eslint-plugin-react@7.37.5(eslint@9.38.0(jiti@2.6.1)))(eslint@9.38.0(jiti@2.6.1)): + dependencies: + eslint: 9.38.0(jiti@2.6.1) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)))(eslint@9.38.0(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.38.0(jiti@2.6.1)) + eslint-plugin-react: 7.37.5(eslint@9.38.0(jiti@2.6.1)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.38.0(jiti@2.6.1)) + object.assign: 4.1.7 + object.entries: 1.1.9 + + eslint-config-prettier@10.1.8(eslint@9.38.0(jiti@2.6.1)): + dependencies: + eslint: 9.38.0(jiti@2.6.1) + + eslint-import-resolver-node@0.3.9: dependencies: - eslint: 9.38.0 + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.11 + transitivePeerDependencies: + - supports-color - eslint-plugin-react-refresh@0.4.24(eslint@9.38.0): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.38.0(jiti@2.6.1)): dependencies: - eslint: 9.38.0 + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.38.0(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.38.0(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.38.0(jiti@2.6.1)) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jsx-a11y@6.10.2(eslint@9.38.0(jiti@2.6.1)): + dependencies: + aria-query: 5.3.2 + array-includes: 3.1.9 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.8 + axe-core: 4.11.0 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 9.38.0(jiti@2.6.1) + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + + eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.38.0(jiti@2.6.1)))(eslint@9.38.0(jiti@2.6.1))(prettier@3.6.2): + dependencies: + eslint: 9.38.0(jiti@2.6.1) + prettier: 3.6.2 + prettier-linter-helpers: 1.0.0 + synckit: 0.11.11 + optionalDependencies: + eslint-config-prettier: 10.1.8(eslint@9.38.0(jiti@2.6.1)) + + eslint-plugin-react-hooks@5.2.0(eslint@9.38.0(jiti@2.6.1)): + dependencies: + eslint: 9.38.0(jiti@2.6.1) + + eslint-plugin-react-refresh@0.4.24(eslint@9.38.0(jiti@2.6.1)): + dependencies: + eslint: 9.38.0(jiti@2.6.1) + + eslint-plugin-react@7.37.5(eslint@9.38.0(jiti@2.6.1)): + dependencies: + array-includes: 3.1.9 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.1 + eslint: 9.38.0(jiti@2.6.1) + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 eslint-scope@8.4.0: dependencies: @@ -1743,9 +3079,9 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.38.0: + eslint@9.38.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.1 @@ -1779,6 +3115,8 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 + optionalDependencies: + jiti: 2.6.1 transitivePeerDependencies: - supports-color @@ -1802,6 +3140,8 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-diff@1.3.0: {} + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -1842,11 +3182,54 @@ snapshots: flatted@3.3.3: {} + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + fsevents@2.3.3: optional: true + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + generator-function@2.0.1: {} + gensync@1.0.0-beta.2: {} + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -1859,10 +3242,39 @@ snapshots: globals@16.4.0: {} + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + graphemer@1.4.0: {} + has-bigints@1.1.0: {} + has-flag@4.0.0: {} + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + ignore@5.3.2: {} ignore@7.0.5: {} @@ -1874,16 +3286,135 @@ snapshots: imurmurhash@0.1.4: {} + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-extglob@2.1.1: {} + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-number@7.0.0: {} + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + isarray@2.0.5: {} + isexe@2.0.0: {} + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + + jiti@2.6.1: {} + js-tokens@4.0.0: {} js-yaml@4.1.0: @@ -1898,27 +3429,103 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} + json5@1.0.2: + dependencies: + minimist: 1.2.8 + json5@2.2.3: {} + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.9 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + lightningcss-android-arm64@1.30.2: + optional: true + + lightningcss-darwin-arm64@1.30.2: + optional: true + + lightningcss-darwin-x64@1.30.2: + optional: true + + lightningcss-freebsd-x64@1.30.2: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.2: + optional: true + + lightningcss-linux-arm64-gnu@1.30.2: + optional: true + + lightningcss-linux-arm64-musl@1.30.2: + optional: true + + lightningcss-linux-x64-gnu@1.30.2: + optional: true + + lightningcss-linux-x64-musl@1.30.2: + optional: true + + lightningcss-win32-arm64-msvc@1.30.2: + optional: true + + lightningcss-win32-x64-msvc@1.30.2: + optional: true + + lightningcss@1.30.2: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.30.2 + lightningcss-darwin-arm64: 1.30.2 + lightningcss-darwin-x64: 1.30.2 + lightningcss-freebsd-x64: 1.30.2 + lightningcss-linux-arm-gnueabihf: 1.30.2 + lightningcss-linux-arm64-gnu: 1.30.2 + lightningcss-linux-arm64-musl: 1.30.2 + lightningcss-linux-x64-gnu: 1.30.2 + lightningcss-linux-x64-musl: 1.30.2 + lightningcss-win32-arm64-msvc: 1.30.2 + lightningcss-win32-x64-msvc: 1.30.2 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 lodash.merge@4.6.2: {} + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + lru-cache@5.1.1: dependencies: yallist: 3.1.1 + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + math-intrinsics@1.1.0: {} + merge2@1.4.1: {} micromatch@4.0.8: @@ -1934,6 +3541,8 @@ snapshots: dependencies: brace-expansion: 2.0.2 + minimist@1.2.8: {} + ms@2.1.3: {} nanoid@3.3.11: {} @@ -1942,6 +3551,48 @@ snapshots: node-releases@2.0.26: {} + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -1951,6 +3602,12 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -1967,12 +3624,16 @@ snapshots: path-key@3.1.1: {} + path-parse@1.0.7: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} picomatch@4.0.3: {} + possible-typed-array-names@1.1.0: {} + postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -1981,6 +3642,18 @@ snapshots: prelude-ls@1.2.1: {} + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier@3.6.2: {} + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + punycode@2.3.1: {} queue-microtask@1.2.3: {} @@ -1990,12 +3663,60 @@ snapshots: react: 19.2.0 scheduler: 0.27.0 + react-is@16.13.1: {} + react-refresh@0.18.0: {} + react-router-dom@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-router: 7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + + react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + cookie: 1.0.2 + react: 19.2.0 + set-cookie-parser: 2.7.2 + optionalDependencies: + react-dom: 19.2.0(react@19.2.0) + react@19.2.0: {} + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + resolve-from@4.0.0: {} + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + reusify@1.1.0: {} rollup@4.52.5: @@ -2030,26 +3751,164 @@ snapshots: dependencies: queue-microtask: 1.2.3 + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + scheduler@0.27.0: {} semver@6.3.1: {} semver@7.7.3: {} + set-cookie-parser@2.7.2: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 shebang-regex@3.0.0: {} + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + source-map-js@1.2.1: {} + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + + string.prototype.includes@2.0.1: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.0 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.24.0 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + strip-bom@3.0.0: {} + strip-json-comments@3.1.1: {} supports-color@7.2.0: dependencies: has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} + + synckit@0.11.11: + dependencies: + '@pkgr/core': 0.2.9 + + tailwindcss@4.1.16: {} + + tapable@2.3.0: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -2063,23 +3922,70 @@ snapshots: dependencies: typescript: 5.9.3 + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - typescript-eslint@8.46.2(eslint@9.38.0)(typescript@5.9.3): + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: dependencies: - '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0)(typescript@5.9.3) + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript-eslint@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0)(typescript@5.9.3) - eslint: 9.38.0 + '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.38.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color typescript@5.9.3: {} + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + undici-types@7.16.0: {} update-browserslist-db@1.1.4(browserslist@4.27.0): @@ -2092,7 +3998,7 @@ snapshots: dependencies: punycode: 2.3.1 - vite@7.1.12(@types/node@24.9.1): + vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2): dependencies: esbuild: 0.25.11 fdir: 6.5.0(picomatch@4.0.3) @@ -2103,6 +4009,49 @@ snapshots: optionalDependencies: '@types/node': 24.9.1 fsevents: 2.3.3 + jiti: 2.6.1 + lightningcss: 1.30.2 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.2 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 which@2.0.2: dependencies: diff --git a/PAND-MARKET/src/App.css b/PAND-MARKET/src/App.css index b9d355d..6a1acd9 100644 --- a/PAND-MARKET/src/App.css +++ b/PAND-MARKET/src/App.css @@ -1,42 +1 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); -} - -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; -} +@import url('@styles/Reset'); \ No newline at end of file diff --git a/PAND-MARKET/src/App.tsx b/PAND-MARKET/src/App.tsx index 3d7ded3..7f765a8 100644 --- a/PAND-MARKET/src/App.tsx +++ b/PAND-MARKET/src/App.tsx @@ -1,35 +1,18 @@ -import { useState } from 'react' -import reactLogo from './assets/react.svg' -import viteLogo from '/vite.svg' -import './App.css' +import { Routes, Route } from 'react-router-dom'; +import Layout from '@components/layout/Layout'; +import Home from '@pages/home/Home'; +import Products from '@pages/products/Products'; +import './App.css'; function App() { - const [count, setCount] = useState(0) - return ( - <> -
- - Vite logo - - - React logo - -
-

Vite + React

-
- -

- Edit src/App.tsx and save to test HMR -

-
-

- Click on the Vite and React logos to learn more -

- - ) + + }> + } /> + } /> + + + ); } -export default App +export default App; diff --git a/PAND-MARKET/src/assets/logo.svg b/PAND-MARKET/src/assets/logo.svg new file mode 100644 index 0000000..ceaa7bf --- /dev/null +++ b/PAND-MARKET/src/assets/logo.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/PAND-MARKET/src/assets/profile.svg b/PAND-MARKET/src/assets/profile.svg new file mode 100644 index 0000000..891a258 --- /dev/null +++ b/PAND-MARKET/src/assets/profile.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PAND-MARKET/src/assets/react.svg b/PAND-MARKET/src/assets/react.svg deleted file mode 100644 index 6c87de9..0000000 --- a/PAND-MARKET/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/PAND-MARKET/src/components/layout/Layout.module.css b/PAND-MARKET/src/components/layout/Layout.module.css new file mode 100644 index 0000000..e69de29 diff --git a/PAND-MARKET/src/components/layout/Layout.tsx b/PAND-MARKET/src/components/layout/Layout.tsx new file mode 100644 index 0000000..9f90384 --- /dev/null +++ b/PAND-MARKET/src/components/layout/Layout.tsx @@ -0,0 +1,10 @@ +import Header from '@components/layout/header/Header'; +const Layout = () => { + return ( + <> +
+ + ); +}; + +export default Layout; diff --git a/PAND-MARKET/src/components/layout/footer/Footer.module.css b/PAND-MARKET/src/components/layout/footer/Footer.module.css new file mode 100644 index 0000000..e69de29 diff --git a/PAND-MARKET/src/components/layout/footer/Footer.tsx b/PAND-MARKET/src/components/layout/footer/Footer.tsx new file mode 100644 index 0000000..e69de29 diff --git a/PAND-MARKET/src/components/layout/header/Header.module.css b/PAND-MARKET/src/components/layout/header/Header.module.css new file mode 100644 index 0000000..81ad4b1 --- /dev/null +++ b/PAND-MARKET/src/components/layout/header/Header.module.css @@ -0,0 +1,52 @@ +.header { + display: flex; + justify-content: space-between; + align-items: center; + padding-inline: 200px; + border-bottom: 1px solid #dfdfdf; +} +.header .left { + display: flex; + align-items: center; + gap: 32px; +} +.header .left .logo { + display: flex; + align-items: center; + height: 70px; +} +.header .left .menus { + display: flex; +} +.header .left .menus .menu { + display: inline-block; + height: 70px; + line-height: 70px; + padding-inline: 15px; + font-size: 18px; + font-weight: 700; + color: #4b5563; +} + +@media (max-width: 1020px) { + .header { + padding-inline: 24px; + } + .header .left { + gap: 20px; + } + + } + @media (max-width: 768px) { + .header .left .logo { + width: 120px; + } + .header .left .menus { + gap: 8px; + } + + .header .left .menus .menu { + padding-inline: 0; + font-size: 16px; + } + } \ No newline at end of file diff --git a/PAND-MARKET/src/components/layout/header/Header.tsx b/PAND-MARKET/src/components/layout/header/Header.tsx new file mode 100644 index 0000000..5355f12 --- /dev/null +++ b/PAND-MARKET/src/components/layout/header/Header.tsx @@ -0,0 +1,45 @@ +import { Link } from 'react-router-dom'; +import s from './Header.module.css'; +import LogoImg from '@assets/logo.svg'; +import ProfileImg from '@assets/profile.svg'; +interface Menus { + name: string; + link: string; +} +const Header = () => { + const menus: Menus[] = [ + { + name: '자유게시판', + link: '/notice', + }, + { + name: '중고마켓', + link: '/items', + }, + ]; + return ( +
+
+

+ 판다마켓 +

+
+ {menus.map((menu) => { + return ( + + {menu.name} + + ); + })} +
+
+
+
+ 프로필 +
+
+
+ ); +}; + +export default Header; diff --git a/PAND-MARKET/src/components/layout/main/Main.module.css b/PAND-MARKET/src/components/layout/main/Main.module.css new file mode 100644 index 0000000..e69de29 diff --git a/PAND-MARKET/src/components/layout/main/Main.tsx b/PAND-MARKET/src/components/layout/main/Main.tsx new file mode 100644 index 0000000..e69de29 diff --git a/PAND-MARKET/src/index.css b/PAND-MARKET/src/index.css deleted file mode 100644 index 08a3ac9..0000000 --- a/PAND-MARKET/src/index.css +++ /dev/null @@ -1,68 +0,0 @@ -:root { - font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - -body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; -} - -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } -} diff --git a/PAND-MARKET/src/main.tsx b/PAND-MARKET/src/main.tsx index bef5202..34def5f 100644 --- a/PAND-MARKET/src/main.tsx +++ b/PAND-MARKET/src/main.tsx @@ -1,10 +1,12 @@ -import { StrictMode } from 'react' -import { createRoot } from 'react-dom/client' -import './index.css' -import App from './App.tsx' +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; +import { BrowserRouter } from 'react-router-dom'; +import App from './App.tsx'; createRoot(document.getElementById('root')!).render( - + + + , -) +); diff --git a/PAND-MARKET/src/pages/home/Home.module.css b/PAND-MARKET/src/pages/home/Home.module.css new file mode 100644 index 0000000..e69de29 diff --git a/PAND-MARKET/src/pages/home/Home.tsx b/PAND-MARKET/src/pages/home/Home.tsx new file mode 100644 index 0000000..937cef0 --- /dev/null +++ b/PAND-MARKET/src/pages/home/Home.tsx @@ -0,0 +1,11 @@ +import { Link } from 'react-router-dom'; +const Home = () => { + return ( + <> +
Home
+ 상품 보러가기 + + ); +}; + +export default Home; diff --git a/PAND-MARKET/src/pages/products/Products.module.css b/PAND-MARKET/src/pages/products/Products.module.css new file mode 100644 index 0000000..e69de29 diff --git a/PAND-MARKET/src/pages/products/Products.tsx b/PAND-MARKET/src/pages/products/Products.tsx new file mode 100644 index 0000000..217a095 --- /dev/null +++ b/PAND-MARKET/src/pages/products/Products.tsx @@ -0,0 +1,5 @@ +const Products = () => { + return
Products
; +}; + +export default Products; diff --git a/PAND-MARKET/src/styles/reset.css b/PAND-MARKET/src/styles/reset.css new file mode 100644 index 0000000..de0a940 --- /dev/null +++ b/PAND-MARKET/src/styles/reset.css @@ -0,0 +1,64 @@ +/* Modern CSS Reset */ +*, +*::before, +*::after { + box-sizing: border-box; +} + +* { + margin: 0; + padding: 0; +} + +html, +body { + height: 100%; +} + +body { + line-height: 1.5; + -webkit-font-smoothing: antialiased; +} + +img, +picture, +video, +canvas, +svg { + display: block; + max-width: 100%; +} + +input, +button, +textarea, +select { + font: inherit; +} + +p, +h1, +h2, +h3, +h4, +h5, +h6 { + overflow-wrap: break-word; +} + +button { + cursor: pointer; + border: none; + background: none; + text-decoration: none; +} + +a { + text-decoration: none; + color: inherit; +} + +ul, +ol { + list-style: none; +} \ No newline at end of file diff --git a/PAND-MARKET/tsconfig.app.json b/PAND-MARKET/tsconfig.app.json index a9b5a59..92e7185 100644 --- a/PAND-MARKET/tsconfig.app.json +++ b/PAND-MARKET/tsconfig.app.json @@ -22,7 +22,18 @@ "noUnusedParameters": true, "erasableSyntaxOnly": true, "noFallthroughCasesInSwitch": true, - "noUncheckedSideEffectImports": true + "noUncheckedSideEffectImports": true, + + /* Path Alias 추가 */ + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"], + "@assets/*": ["./src/assets/*"], + "@components/*": ["./src/components/*"], + "@pages/*": ["./src/pages/*"], + "@styles/*": ["./src/styles/*"] + } }, + "include": ["src"] } diff --git a/PAND-MARKET/vite.config.ts b/PAND-MARKET/vite.config.ts index 8b0f57b..766f8bf 100644 --- a/PAND-MARKET/vite.config.ts +++ b/PAND-MARKET/vite.config.ts @@ -1,7 +1,16 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import path from 'path'; -// https://vite.dev/config/ export default defineConfig({ plugins: [react()], -}) + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + '@assets': path.resolve(__dirname, './src/assets'), + '@components': path.resolve(__dirname, './src/components'), + '@pages': path.resolve(__dirname, './src/pages'), + '@styles': path.resolve(__dirname, './src/styles'), + }, + }, +}); From 71b2f45312187ec2c277b665640f83b27321b51c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=98=81=EC=9A=B0?= Date: Sun, 2 Nov 2025 22:05:06 +0900 Subject: [PATCH 3/8] =?UTF-8?q?=EC=A0=84=EC=B2=B4=EC=83=81=ED=92=88=20?= =?UTF-8?q?=EC=9E=91=EC=97=85,=20useProducts.ts=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PAND-MARKET/.github/workflows/tsc.yml | 32 ++++++++ PAND-MARKET/package.json | 1 + PAND-MARKET/pnpm-lock.yaml | 75 ++++++++++++++++++ .../src/assets/images/temp/product1.png | Bin 0 -> 121428 bytes PAND-MARKET/src/assets/like_default.svg | 3 + PAND-MARKET/src/assets/like_on.svg | 3 + .../src/components/common/Title.module.css | 21 +++++ PAND-MARKET/src/components/common/Title.tsx | 12 +++ .../src/components/layout/Layout.module.css | 12 +++ PAND-MARKET/src/components/layout/Layout.tsx | 5 ++ .../layout/header/Header.module.css | 2 +- .../src/components/layout/header/Header.tsx | 30 +++---- .../components/layout/main/Main.module.css | 0 .../src/components/layout/main/Main.tsx | 0 PAND-MARKET/src/pages/products/Products.tsx | 9 ++- .../components/ProductCard.module.css | 36 +++++++++ .../pages/products/components/ProductCard.tsx | 29 +++++++ .../src/pages/products/hooks/useProducts.ts | 42 ++++++++++ .../BestProductList.module.css | 25 ++++++ .../best-product-list/BestProductList.tsx | 27 +++++++ .../GeneralProductList.module.css | 28 +++++++ .../GeneralProductList.tsx | 24 ++++++ 22 files changed, 399 insertions(+), 17 deletions(-) create mode 100644 PAND-MARKET/.github/workflows/tsc.yml create mode 100644 PAND-MARKET/src/assets/images/temp/product1.png create mode 100644 PAND-MARKET/src/assets/like_default.svg create mode 100644 PAND-MARKET/src/assets/like_on.svg create mode 100644 PAND-MARKET/src/components/common/Title.module.css create mode 100644 PAND-MARKET/src/components/common/Title.tsx delete mode 100644 PAND-MARKET/src/components/layout/main/Main.module.css delete mode 100644 PAND-MARKET/src/components/layout/main/Main.tsx create mode 100644 PAND-MARKET/src/pages/products/components/ProductCard.module.css create mode 100644 PAND-MARKET/src/pages/products/components/ProductCard.tsx create mode 100644 PAND-MARKET/src/pages/products/hooks/useProducts.ts create mode 100644 PAND-MARKET/src/pages/products/module/best-product-list/BestProductList.module.css create mode 100644 PAND-MARKET/src/pages/products/module/best-product-list/BestProductList.tsx create mode 100644 PAND-MARKET/src/pages/products/module/general-produc-list/GeneralProductList.module.css create mode 100644 PAND-MARKET/src/pages/products/module/general-produc-list/GeneralProductList.tsx diff --git a/PAND-MARKET/.github/workflows/tsc.yml b/PAND-MARKET/.github/workflows/tsc.yml new file mode 100644 index 0000000..0070fc9 --- /dev/null +++ b/PAND-MARKET/.github/workflows/tsc.yml @@ -0,0 +1,32 @@ +# .github/workflows/tsc.yml +name: tsc check + +on: + pull_request: + branches: [main] # ✅ PR의 대상(base)이 main인 경우에만 실행 + # paths: [ "src/**", "tsconfig.json" ] # (선택) 특정 변경에만 실행 + +jobs: + tsc: + # (선택) 내 브랜치 패턴에서 온 PR만 실행하고 싶으면 추가 + # if: startsWith(github.head_ref, 'lywoo/') + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: 8 # 또는 9 (프로젝트 버전에 맞게) + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: 'pnpm' # ← pnpm으로 변경 + + - name: Install deps + run: pnpm install --frozen-lockfile # pnpm-lock.yaml 고정 + + - name: Build + run: pnpm run build diff --git a/PAND-MARKET/package.json b/PAND-MARKET/package.json index cbf347d..9c50e6a 100644 --- a/PAND-MARKET/package.json +++ b/PAND-MARKET/package.json @@ -13,6 +13,7 @@ }, "dependencies": { "@tailwindcss/vite": "^4.1.16", + "axios": "^1.13.1", "react": "^19.1.1", "react-dom": "^19.1.1", "react-router-dom": "^7.9.4", diff --git a/PAND-MARKET/pnpm-lock.yaml b/PAND-MARKET/pnpm-lock.yaml index 4149cbc..970d30b 100644 --- a/PAND-MARKET/pnpm-lock.yaml +++ b/PAND-MARKET/pnpm-lock.yaml @@ -11,6 +11,9 @@ importers: '@tailwindcss/vite': specifier: ^4.1.16 version: 4.1.16(vite@7.1.12(@types/node@24.9.1)(jiti@2.6.1)(lightningcss@1.30.2)) + axios: + specifier: ^1.13.1 + version: 1.13.1 react: specifier: ^19.1.1 version: 19.2.0 @@ -784,6 +787,9 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -792,6 +798,9 @@ packages: resolution: {integrity: sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==} engines: {node: '>=4'} + axios@1.13.1: + resolution: {integrity: sha512-hU4EGxxt+j7TQijx1oYdAjw4xuIp1wRQSsbMFwSthCWeBQur1eF+qJ5iQ5sN3Tw8YRzQNKb8jszgBdMDVqwJcw==} + axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -848,6 +857,10 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -911,6 +924,10 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -1168,10 +1185,23 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} + form-data@4.0.4: + resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + engines: {node: '>= 6'} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -1545,6 +1575,14 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -1667,6 +1705,9 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -2654,12 +2695,22 @@ snapshots: async-function@1.0.0: {} + asynckit@0.4.0: {} + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 axe-core@4.11.0: {} + axios@1.13.1: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.4 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + axobject-query@4.1.0: {} balanced-match@1.0.2: {} @@ -2719,6 +2770,10 @@ snapshots: color-name@1.1.4: {} + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + concat-map@0.0.1: {} confusing-browser-globals@1.0.11: {} @@ -2777,6 +2832,8 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + delayed-stream@1.0.0: {} + detect-libc@2.1.2: {} doctrine@2.1.0: @@ -3182,10 +3239,20 @@ snapshots: flatted@3.3.3: {} + follow-redirects@1.15.11: {} + for-each@0.3.5: dependencies: is-callable: 1.2.7 + form-data@4.0.4: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + fsevents@2.3.3: optional: true @@ -3533,6 +3600,12 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 @@ -3654,6 +3727,8 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 + proxy-from-env@1.1.0: {} + punycode@2.3.1: {} queue-microtask@1.2.3: {} diff --git a/PAND-MARKET/src/assets/images/temp/product1.png b/PAND-MARKET/src/assets/images/temp/product1.png new file mode 100644 index 0000000000000000000000000000000000000000..c793ed3eebd438cf2bad3e8f0443091c1378e455 GIT binary patch literal 121428 zcmV(#K;*xPP)mCi-vQ)jIq#14 z9{c2ZKHZ1!96X%MFxi;kW1XuZa}HUphRJ3Fkc0HQaCDx-d(VI8;k(Q?!#7#@&+)O| z<;b!O;V{(0$9Xu&`y9(--bcEx=b;G}3-SP-tSh^Zx6XW5t zX1IqBm(I`(f75TzHvwM@G>%NJNn@>LH5o?uz8UW6_#e;+f9K);bWi$#p0^gpNY6n( z{A`eCbKwFs7J7bq<@y=@t7op5i}0^W4=KX|J(b;qu34ioL#|J!@O_*Nt`@FM*X3*T zm|Q%D-zP6S&$l_YdR(T@B=eugHA9=@?K>Bat%vc@_l-tFp3fJ@$MfYP$;rh$$bU}e ziD)AHo7UHX;}4jElit>gxl_8()76KL&hGH+4&x)E7#SPJ#AE~AUG!O_ezP&j&mQSX*O6$NXn}bt@JS=kFs*Z~vjZ-?9~~PD&)L94IKMZH zxiidF7M^W58ULZ8k6})YW4bbdI(}xI+2+~C^k%F z2S!Fm_#tQ!Ju{Ez1uM}O6BI4xq%cdEP$BAYQ222*5JVI=F!mNB>5(G+U zCghwklNX83e67L+iD0*}+x3byagliA=k%Eg*5tUB=TC_#8Asemev7cO?c}KJb9K7dLoN>fl9KLs8ijEA!qobgO%EG4BWEvvo?oa{jF&;JZsJA!Zv1Ohwlb0ZHrA)!7q-g>70wuRYy8@i}PyI%*v}X1Xs(NaU0JS#NKD_`Ht6 z!Ck!hc82i~-Q?lglYthA7Hafa5I{t?^q%R)$tINXx|7f;)`H%XkfLiemA-tOzgl?C zF{YP}FiAX~a1PA@ZB4`{V0-{mj$fVcmaQX+aq{<$s1u|Cc`l_F3$uf zgszO_bg5Jr%F2aB_Kk>cya^*hX0&L!!$l?&t|>86%3O64d=Nq02=}k+7o{tkX*hBJX;?U?A3jXdL|`7;iL<~Y zgg5GeQ3&bOc$|5>f1Wp(9vb2J$$(~jbCMZnbZj6na}Y2AwRF-oXniuF7ox3tt&^_A zb7bg=-aDPZdJr-mLXU*B21kZ?{d;=?dZ}gltX}6WTqg(_5;TSc>2Kax8zM02SQ45x zUvypH%;R-#lR90u-q^g_r4Wp(%WjBKEStW2nM?UgIv!hc+MKZeG}BSNAVkJAZ( z)3r>EF=P{&N9Iig0DNhZoT?N#t8ev)5`07=1u8(QPBAeR(@g3R-JexCMht=s3Dw9> zB!Y{CWK&h9RP_+mEQ?GoJFh&CbG{@9RD+3XlBq>Tz%ChgeAYy@N`(~P#|zqW&bK3* zwrHvPis&T~IO+5FHV6)t&*+Id17jV!pdaTPItPa?n#1Z)BYf36eJ}LRTF8qzIJh-1 zQ$N$9r;Ur}B;30xDikTE1DjT3aOZlSzmCpMR(}X>+gjEb<#eiw>ly73J$LGFQpboX zp>sp8!J%EeL3MYNQ0j=!ZYZf4gd437sY=W%MAslQLB<;n_}nfY<5*CA=omt7Ir50A z2?@Dy?JN=6B(P}VNQidSJ6ZS;sv&i1JX~jZWH<<&{va%S!n1ZU4bpEyF*Gk3n+=4v zC&D#GM+bPW=>9bZ8FhU|Sp(t)np;{U(q_gdCssEH{W*X5%hy&{*S%K#;M(tf;pp%v zcLcq2pG;K}VW=h}4;mcnguLSPBBzpuONactPOQ*AnexM&BX%doIiwZa6AQ^=a@LK|Pn zF^DKAq84QYWBxo5GAsa)r~`>gz(mG`m8nYRqhMuQkUnp{qb3BaJ1Gld8Hfmqn%a~S z)WPV)zGu|nq6*^L{MdO$tTsNgC#ByfAGEwJ?uTf*XnQWo!XrzNUvfZ66?LZLBy;YQ z_zCFHVXs6)>H4Ef@VN2^`8D<-{=jr(}B+Lx9jK$e+MQDD5*v&1=DH}IF9U(L8S<) z7pX&p5O|#-8yk(6Yf!lQ)5P%b0D}rKoite`B>o#29S%Zqboy{}_#NjQ(DTs!uZ?Uh z(M)p1|oWXlT{#BvI{^tGh;zyIwHZrCQG|!Sbz?ZdNdh?XuKFa zNtm#@!w*>J-?AYT$RG<3C&;8BkTaZD&uS40M}iH%SFYKNA6|D48-OP#>G~|AqJfVV zh3-j{S7GTI=V`8`^MA>KHJn2Q?DH2oUyuTs6g#OnTr-w zMkqNO;2QkAMqE{O#)L;R8juya0d1JQkQeFsBqVsV>DN3cz-S+g8nq!MK{Rf}AlL!uor#AdpwGOf@Y6Y2?S2wjhCF_;Wy zgJ8!PA0J>O&2*+JkEu6elWZ^@v+a+NEeQ+SaEZUdwMpO*>LweLY4tP)+t7&S=tXFW zRXRdljEZtrizdPkZOVjV9AtCr2`U`TLsw9dNJS&zOKWLAB!rEBS%o6OYNi5^7BCi` zYnWA3n)l8yMxsrcr-?Amq2XahQB9Qv;keb|iO#wD#+|Ee9ZQJj-It#JLKxgWa*v$7 zFSf|SP$EP~*M%KZQ$zuj2##K67`C0ZrW55A-G~6n;0rfJ0jp~Q)7aXrur=;(k$}}h z5A%_W|q1nH;%l(~}m2Yd^&C6PPxoCm1_B z)r;fRz~8~@4lxzob?cVRfpL3aM)Xzey zxnfZX5{nJhsj%~MEKhbFQ14Nm2(x9Y*WYRZmHt2)k6U+Ita7@)^TU{!&n%*v`$iRj61^og3#fQQP#NS38(d2# z<`WN>3TidHqlHN`ooA=Vw7S6~s&I+wmwuQ0HiLe85B^-;?shE`I^_+bR=QqQ?J@+E z-Xk4HDu7&Ne5`T?`_|Cd1Xiuvh9_TIiM5-yqa$2v*7SZx81)WvHRsG!S@?U~){Q~X z^a^r7qNd7)d8ZdoCp}l;3@}@sSGRmK7#F*z%tkXK<8fg1=2-N)k^sq-8QE^5ArP#F zb=3Koi6De>rdRS{^)bqFYRe&lR%?Ih}=6ZMqEvm&r8E1~2sK&}yJH zW-K8@yhL{U>@`4(a7jPQ6X9Cg0PGokJb`~rgt^|heF!hSz825Dz79Kv zcVXt#-oR8&4Z0oJzH1wLIKCv)>nJjFuB7(H?Wvg;8x_FnH>>ovUgY@+cA`97dvbJ; z5dfhXMiYu`YMBV)VAp`DusnAp{4&{;N5@B5T_L)O&Iz)isB^@O)+DHUdV0_uHt@b6 zpz7hiJzb|AVnA&1K3B)Rk*3qQIJxwGjw5;!Ed8k6G^b3}aOJZmiEQRcA{ z&y7#0yL*C#SFS>s1eI41P-jE5Klz*^`v3dBB||&wvL^mZ25VFOoTXI_;%?5(o#*4k zo8Le6Hd!2l5LO_FhF6ze&Vy&&RP}0+@WnOg!t{BQE!{QNF&ho>TIIT{m|4lGTKDqO zRd{pbwiv9Gxzr=&`HBUjIYwp{z$XTNxi61{gkeoak-^3I9@*&-y=gvScKhv98-$M1 zc3kqXH7y1whj^`&a0o&AV6Y~Ylx$jzq*%=iYJX&|JTiEu_eyOiNKgS(Es4S*8l-*c zJB!CjUs)waCknLWy$L;3&|LaTJzOP0lAzE+y)NABNYu0_%(ATP6|>(JL4=ChXVQ$3 zhlUEQ-@FqWw+-OIXIA5oeP`o>lMlmT2ktBD;Y6+S4Gq>K|6iUO(Cx=*e2!NK1Ju@7 zxOye@BY3N(&JBzhJUF{Hp{pig8f4q(2_7ZS!E_^hZ*rOQJ;HCI$&t}fH6J*3BMb5= z;=ni-i)hiwy~z+wpLcfFS?!_g884G78@zEgB`z)8k7%grCmA`@@vQE3I2IhFc8!gS z;hDapgGPhPo^7cN5+2LWt-^3``OgX++?SY1y(~1cgNu#k;*4C^dLV z9o==Gl-z#>oR{d_45`7usVc$|!?};t>k{In=O)8e&D12Q zx`V<7WxIB2uP{?&4O(^}oI_B!R>9e%Gt_k_- z7?bgL1lrhZ&J-LJ49KS)yFX@3?Frr_W0YLIgy5L2x>MVMz+4T#kN`fr2ZwI}(f(-Y zcy#+Z5Dx_nPBxk6YIQ+b#A{tasMPeH zO)^G@74Pi}-Z8I1i{wCQG?fN|{U(@5h-b+@Bk^WrU+Q4>l?=J0J`#_Qk55E*b<;N( z?a??U8zUM4Ee2~6H1y&y5k+}TFOHio_Pk}{A`kyY0_v%|Z0BU%?OUJTIprPV9!@^jVrMdOIcKi$Qt+;A$FcyasSN}bn}h1uB+PUy#GE8x$a`gO zbru$35U($L6YGQiP2;Gs&g-J9oyW_bA+-@@sTas|oC-x#nper|IOQIm2`krF9-dA` z1CjB)FMc3a4|;~f4%`p_-^YGmpk~;aNSIE99paVOm*KXD9_1sO(OoV?>zb;vISIWt zm~0UX$~`3pOjQSt=TKXiotp}V$f#M_YiO=jSGjHpfh1}bP!@P8`i)V{bbdvswG$Y= zje3>__@(Mx{M%T)jo@jyp8n1ggvRG5$4!JWzqxT2)@&NUqc1GS0gLA0q{9~Bkp1^U zcU{(jHctx3V^pB_%Upx!YUTlT7L9AXB9ZM9zTtxleO?eEqX8L=@cH$6HwOj^nimyb zNKJwRNuaO+HrPUXIwhi)Y%jUm_AJn^9t4chFGmeKC(-HQ`-$Kw;`AH`<{hFlimeg! zm9sFZ>xMoyHpvbivTdi!G+HPCCJ!YDw_Gxa5Y9~SX9cR!9@gJje$yiAq@WDuXnRm-9p6zMF&V^d3< z>0`n$Y?D^vbcG=~O`E71iD_H|L&JD=`7#`J)R8#*th2HIfd}G%LkaUN;SX4Io&1$eWPn~#HCxeHEBGxGYkm!g~05bJZj&t7CFnf?_jmafFbH+?e znL35n$$|mvs`}6vB)3cQkO-X+V~fjLH4HXWWa_dmge~2h+~A|5BSB3YVmpxWA_w>d z;X~h%t%i^ed7S7(3gTnI)zQU5MggLjN-~X+a}x0nzE1~VD{S^V>*2$r3uq}qLVV;! ztV&ihTScO~tAt_Uka>PkVe+O(b3;a6ybN9qtFB2qU{m8*pvc9u<($H$=^71PDh>Y}zE4eF84 zj5vX^4I?3RhT2Rp4Xl3iEi7NL9A}(*IzJ~7@y~yKBc_EN=+J}q#~yp`$)CR&j(g?x z6~RR~4%7ch01A@xEMzm+QS8b@L2=dFq_(8p37M)5$0sN(KAZQEIjiU@*Nv2H7dd-(a%|W>f(_eN z;F%ZS!~uKH#BoO~2sWMh0bSIYc}qGSARQ2x(0wZ{WCdgY8&~8Vw z&Q1^00!S$J^mKEiE(-^Z>7keyHem#&)sQwu*JM8t)G@|x=9)S<*l9v;=&r6Pba)Oa zeka_kGi-Ph4GHR_=j~)(4Yr&y%?+dcD2fScN;EYYoJmEafU+7HJZT@RM#ee!%#)f;A2DD8q7J1Y|w!$mK?cY=@-ep_`xA`(3Z`8j1A zHKH-0aTIZp2g4!Onr{Oy(TS4D+RzE~$^f+>fF^M7Q;Xy7FAHinM?^-vfNDACXP_@@ z#jf78c$=(dIsrpv@sN>%muV1^sA|T1w&R;ki3O~w9pR_HzaJN#f4&mD!;T%>@&5O` z3;XT&w(wmqhk%3C9ghub-@=c6{9`=$_|r_}X20@2f&6;!7G^}DBJnep5DWxn^D{Yn zdd;a4Vl@P_JNr!(1Skue$jrWQ@mI&xPAF7gyZgL!jfz083aPwuZyRrVOqSfIrdj4b z6=dGWK)86#@Y%rVIG$gzk$+}PS%RYv*bB!Wx&RCJnt@;{4eR8k`hcpAP&fCa2BZx6F$aaSX4vn5HIhYA|b~F%caPbX-SWo{J));Vce{RI6H~9hXyX zS;iYVsb)r}G|urLpjZHRbnH{R>f+P>siB5c$srOuNmhxWpaByzi-9+1*R`vwM?@U- ze6FOdiz~WJRAO-uDcaSF3LIE^#yFN-qKsKe>W)#S3A#mHjn0a|u{6QayG zPNGYpC@TavvWod`&E z<4!!aWDS(_=LcfC^$wZ5?dBglo^xAWgZ2gJfNyjC`G9nv)QicD@1C) z(*(xu0I%Qw?)M0Tgnv&z_XK`^+L74|<@8Jop9 zrFO0Az2awiUfP`ESTafGwY6vlI(>890N&d0B5r^5RUEee92|4d-q>&c98B%&;e_D0 z8PGG5$F?RBz-069?CeEjY?O1F$lF7KsO0W8dyCk9Wa>HRh-@}B!6W3xrZfYJyW(U{ zFCHqQi{_*k*D?)2wGA;82TxHDl9SB|uFpfM7(|LBSU5}~T!Yjy`b@%EYU;9By}GKM6QvaK<^+cmHY+r!V$=osqWTd9SbM*Ze$c=bg*3rok0 zvrEa|03~R)htR}kg?+$l9?zt@znE}+QTT@?wAZ>atQN_Ayt)f54@1xqNqM<9O+GEw zvjNR)+BTq`Ckd7k1D$#aoW;~y?vVv~sdpx|;W+(YWGWxyg-rK0Vnd=Xq{JG76j_DJ zaMnr3Vef^D1Qi9Mxc0gm75&a--pGY(&k*yM z^g7K-4VqM#7}BXGM%w4;d_+cd<#Y$5iKwbLv6U49!~!JCLPpM$zfHAFy;G$OaFkIX zlK1WM*3#eUiv@Gyne%Zz1SJdwL+O*RNFdQA%oxUdS5RD+B7 zWC_%jP;M@Tpy~O|rs>j72~x5}&D}~DA|X)oH6b&+F{<0z zEb?YEGT2IjjF><3s)si<8(M{(FQ`qPPv4q>(WN6cLQDuc-Ul+i{@zZ!=c@Na2>QT9B`V5*I)zRRND*KpiZEA)7EYH>NmcHtKM-X6Vi`=@oU~qMWMBI5Jx(P z&ZCIBH3o}}R~4>au8=v`Hjqw)OqzO9cAJ|3kJsnVQ?)QfKt5ibZrxPm#w*8bsLuds z#=kf-QZ#7e_7#*}%FU`3Zt95k5~F#pHkXJ16P1dtK|H=;+aT_GdKvD0?sY7fI}OJl zyb#9+q0<)(ygV1mU!7B?1#a(WMz(Bz4vd4i#Tl_cqUy;B!aTtnWNK)JchZqp%8glZWe0G{zP2c#X8LGrw>`C0$6hmB#pljBdxk@G#ptrv`guZ_gwb8mn_yviH$2>unIZ5P&f; z>t9mNPc6zdhKaI3brn!zv~6njJYz-{Voo9%g~+nFOElGpmTO{WrfxFJAoVdKImctq zF2}a*gJQ|f&B!UQSU*H7^06_F3~ej~YieXwSDgOMg|S?j$y_RQDm!~r&y)~j=?9(@ z;OsL`4+h_Z_<+%{$iKe+1~vvpVDE*&Nx1H_Z~=}w`dHQGJZ``37F-upto2(qLBeVr zPCDjDeCkg>g*^!6oOvNW7bfuk{_DSDj0I{Ab7=FLap?h8#(7*%KKBBie*T4s3P|;( z(DaEwkXKxIKIYAxi{Zhc-~k!u(DJd7Aw2);YZw|DWv^fI;4La+iUO)$Avra-Swf-i z>;^p~DzCSBk{k2?ttO9!RnVt370z)(aOHENR_xll#p84N!kFzjw!}x3E>AMrOQ^}l zntHmRS>A+P0#mG9y8~}-*oixySc=0J&BY0aFT}nJ=Aes$Uz;Kry4cYnv0SpDHdP&| zG0JH+q_ihH8XBTmKs5m}^inBKDj$)n$C2oYg^m;SBBesbk-{Z*=@~LXSM(EhGmhD* zTfpsvhFxUhA*R|lWRKz0AmplX1m5x*8Bao$bzhNL-!pLPz#dxY!OwGfNWz(?^|;kUrBOCa*@|j4E3Z_hL2`^AA~9lQ~kQ+laO!jO~((FTj+k zQ~BIY>(}9DzrGHex9v1b1kcGcFTITKeDB}z_h0!66TwL*o{TAdy`1RA0f@$VQ1vwz zFNS#zI7mEt^)f9diC`RFiA4+M{gYGpF?6xC8dUaR<&qFWrxdQ+0N;ah5_u zXniO`*vgU8+OnaTkcjf$2t$2h<@HxqF_ZkLJtLw()8C%kH38BizMGF_Q^rtZGYl3a2IUxd%P}XF#V6wS;?12l;zd$_$8ScLO zPHfq>4V-9|n`)V}3bt+AcCBa_2rw9$`+Iw_dHawsTuq)P=G@fNNYkQB1+Oa$8)1f5 z-*^LSHmt*mr<{U?^Y>xcymRZ;V7Pt}2`5EV=ag}+{!YrI)j&OGn-5R~68hGZh<0vi zy)n!{Pl8j*p*qo@>3O(pgEBh*ZFx84b*l#Zp|ZX<*y?+8Raa{>qYZr+qH|6?K^*U@ z#p%7E=ZwY|$av$95#09FD%|tJO6)ze3uhiY4Tmmp=;i#R8pn+ZO$Rk6AQmn=s+%k$ zm5Gs2|oT9m?%*IGS!c_d6%m6fgiU*_dc6aq+>XZ&PT0@hm>$bRp zXk4rU=1>s4B|b8wBk8Fn9*R6A-utwuGT3-DF+oMD1QyCMnHmb!U8Yft#^4!>g61`q zzB19k+D#krLO?TcMfR>!ua5jD2+E>|&2Y#95w!>*35rITo8(@pn2tMH-X=hdQ5F(g zgsZVZkLGgWf<5tp5B@G&>`BPJ@Z7UlwsJM3W{72COE5Cc+f`Ry9FWNrzQ?w0n{oTS z53;?%_Vie4A^bc1@I%Cf2qM6s0}l?tQYq-dmtAxg+X04#hOuksAbaI@?FwFzbz3l+ zM67ZdRNFkljrN(pH}=|NPk2qZyZ(k7!|pV$aZ&-&({HE3#%y&p(c5FaoRqPBVucb}_U0$wrXJAW9KJ60vLdEs#t^V2QEZ%mV4FYLnqnS#`#|ePCwW z_ckUKkWq#bqbI5%y(T6cR&O51>MffwyKg&=+jj=eJ#sdBIds3yk-9{mmNzxHYnKM( ziBXp7z;LGnQnP|;LTVIKITcLjZXgBfGqRR=oKAG19&64JUyyfM5}hSJ8j7CcJi`l@Im!pVHUpJ$lONiCE)FK2- zo7#gff8no!SD*`X=k9?SGiS;SgfU!u{dEj2y_5DXX0W8Y&);(%&O7GzMOD>h9r|>AxJo7Au$0oEkkmG!;9YLrZcgzVm>&&wl9r9OU zy}thSujA$i9x3g{##}_SmtA(L21EioHgCcm_dm$HC`~yD(7*e_pJVSu3s``S3=Z;~ z?b@{izxdT}uxjI01szG+LL26d)S;@kFec5XpkT8fr3jJjl3Dx6;w)Nmytt8lo3sQ} z1%itkAb+oj#nc`N;VAB7?Mn&hD7LX-j(Bymp0>prQ5OB zoKBp$e?N}hXC`KLb#M^hSTL$G>h&^LW5G>q$k3wi#cWWE$&izy;~X;L8ZLT63F(k< zrvN+}hSUhAd8w(rQVML5FtOAe%9R=oLXYl4Cy}?AqMCOE8_eLSc+&`}lWX40E>!o1 z)Flq+rK?a#N=;OE0fU0Mw(Q)6&;HHd;D|#H#XGLN62~5MH2Qk`*`2s{?FNaNiOhu9G2%T} zT!v}Wrt$k7TQ}q8JML!P+QXIH#H0_Oar_C`Z=ZeSIm51U^R2gsIg6#1m|Y)#YB64W zeH9Km_>iEI&EuG;^}*)zGtJ zYFkyBc1X*-S@g0zwJ6BEFOnP8&XA5heOW*z3!#e2m{;P3(q~V{QbJY&g#tQgVCA|= ztX@Bid!FBhqZjt!=mou)+fOcUr_xh9gk;k0g`S24N2Z-M*vt?HOQSylSRfX#p{X%h z>=g7ewaKD=n`&F28*v#5QpF}c9)9K(jBBB+0upQLfiH>^afwkfm}%5xvCWuj$K)V= zoDxH4N)Y^aVhBbhfGZ|zLedk+wDjEKSFre%W!Q7>Y@B}TvAE*$EAhF{{u#dgz3<|! z_1hG^31jWI-+WF@kTeI6TkgCg*jsj}7t585&>aDj{?2=^3II;ZDK38LIlR1lMS#rG z_J+%qLYRE7J@>@SnKPt-)i-1q2X z>=6{ZiU=DD^4hXxE0;8=bDfk74?p|})^6S*F*MMp$ zn7C19ih=}1J)Kn8WSJ|)?^vBxVUN03g<{{+`DG7T>$6Qsj+I=21 zf$;Utk!CTgTq7I_lXimyGaGhB(AP*fl(G$7A}8T|;8x-#0)NKsKa#co5aTAO2<5hW zaO_b>;)LUl$Jz~dWBy*VuzmXgdi#3t`yYHidX>R9Z(N5PZo5shqeZ})VVxqaPd?!k z?03L{LJVPDuDR~|Kv+4bYHX%Z)ppp+F27Lv5rw(jv~ewNz5ju*`!wL2YBSOPQY66V z?==snpLqt9<8k{Pw_@GaT~a{XYo zipcHi=n;>s@-*i>O^O|c){P?T!_gcM!zD$vT@2UzC9fpKwgr?jI6TNU9G(Z(4kXs6 zpX%O_2GrHdbBP;xUbdCjezK4 zX4iT^0gYgndGzV$Sdw=JL~;2=7vYT4PDkIA>A|iuRSC@Du}2@mj$pin%VLg_3HPZ} zy77T`zgz7H!1K>M!GV9d3jDY;hkNWhKM0PKPgM_06E_DnXmDgwM(@PDBQQa{bC(9U z`s`V=`8jq4#6pH>hTUF55jr>ozJ|X3ZoKCm?*JJn>Anx%e=pwJxLJ6x;4VdMWm}1< zo7Ek@%9N1-D|Q;Ak7|@M)M=4^R3MV9tx#k7&9as;SbZU1T)Mcw#*gv(+cWsWh89mr z1xxZ>wS-9Zm}XKGOs1(Elf!DUS4B2_6>RiavSt{st`FcBCJ>ezc$AG@l# z^ldJ-Q!e3<)iih&ya6?8lR*GYY9aH6mD!ZKG`ZwjQHcrSKWZ9B8#UDlCRJ$0^jSDz7v1Tf8V!dE}4l6EB ziz9JK!RQ>`fB(ln$FF{KGfofa;G&B!#(@VOz*hY&o41wK0WFYD*FX7$D zuJY?|48~ZE-{IOlg%G^_vP%MNox*}*8yR(j0T@2%ZEk^#L7*=THk=F3yHIy+;Kn;{ z!}@JI)h;IYZfL=&&P%b0$RHbx*wnha~$NQo!l!DNL5dGUqU8%J9}6K z9aY!BxoX@?s*WHE-*(8#Xs&uq+6dS(riOJxzt-m2&`c3ZkqSe!jMuJ_j(nmhZ8DV?+<1$4Yx?*-bg87TaQ4=C}SYs$99k zuXei@;7Vcq$ON&BhX;7zsaN7GJGeB*RL`#k=vfc$?{_gArn6sq;aMzs?F}s!jbCuuhLl*Rw33ifhn}NlDtA zZ6i{vx+%!qJ9uC2Q&ql(T|2Sy{bEbC3dQyB28Ed<`cvCfcpddl%0W~IVdm%`l=#K(8={czM#2817 zj|C@3uZ$}f$B<)#_yi*;s!`L)eZPZOIPfJ49V&93OBDiWm`OcX6{5kdnrf=6CJ*Js z@FWu37icFwys5OcxD)u?(2k3!$g1}>)rBgRzqGp^*>kAiPbN2C6_Cu@OQ5mIbyW+Pog$E4NCNd0jVGEKRfk}Fjh`r1L?l+b3)nuZI43z^~= zsI@2+<)WCD^_w>b7xS`Vo#tSbl#*)QLF?;4z9DCd`VUaQ{ zoc}hq!wd`#;Hr0ChC>cJMA29Szx>s&!-7vJlrMq=3F>~}z3)axa4FI~w{8h&=D|l< zxK$a0{+>H~HZHi}!pJCh-gPIoZQmvK8;+p}=FeZib21im?3-@6O>)+d zL`zp*?P8BwU*%0kv`$4qveN+Ay}D)3Vz#op>6PHh=cHvW(sP9#m1bR$c9J2F$S7A; z+qbcyxVXWj5mm{{7phnkGOnyzrmA>~Uh;I)ipN{m*YXBk60qU-)}aYp`}9^&qtk`6 zyKv@#{Wx^NG*1U~j)Z@-OZpYx@AR;rnBJPLAaQVfAW~TG-MhAA{w!7~Y z7qU0kuV;ifZAw4h$+j60md`%@6qc@Bi$X_1As`}uwHkU0_jRlN#t;{DJ&FLo!p369 zwnG$!XVAl9zN)YI?6uY&Qj)r$NI`{%^tJ>zh^(A5Ua39@i1o8?CR=}{#P1k%Z1Zw1QNPfz|atjREEOlG&VLO zIgjLG4_B(o!#nmgsQ*JEXuaIj;$b?qSUBy<#)zWBCc8-#vOac65d9V+WXvO^y?!Mq zN}h?}9F^@{x?&C1Z`{tGli-`=nxmHBCaK&UY?NC(i83(6l_{+xWFQX7A_Fm4kgLHv zNeigjGGd!np!D~yp;7$wx?8Y%!zO&?i+{_4n7(-6p$9R{r8vE+7Mg!$>XcnOB@m~K z>LrZ+<=0-tUw`E**lX_GfI7~=1?OB4yhHPY`*4ii+|;|uqY!@d>-}%Pf~()tb8iVA zuUmuQ@DOy^v?_YKEc5rA6KpdV*jA1^gSxh9+jgCsq8$#6@7&W*z@mNjl`#gC_3ImM z;*E#z%f*;7cAHbUxy+4M#E3{UW#&uN0$BYR6DCS94rQiG&Tpso6y7DoOl@Oe=UT5} zqpz!0s>)OMy3tb9fO>oaBDoa7hqvScJ5};FO%#iGDK?wEu&<%~f zU{!>A!F1FF>5$sdA%S*vpCyxJJC7w(7QK|rB`(I}yyO9pW93}3juV4EqH!|4;)+;6X5@bi;;M9tyo5|d2{5uqMY6XdZPACq`E>SC#} zb8u2Ep~>}#y|(-H5)n)>G(lF(nmLD6vY1p!2BZ#kdu6(qoR2gq70{i`EH4^GCdM*> zvRAV|7ZJ=Yelmc;8g zwSQ!))ACRo#X7_suon$!2S2$g>_rD38O$t zMTja=?BFTWSb$-=0|KeKk+bb!FrcTq?|&HgJopd}+J9e05hopgH1^qhFKpeq1t0jG z-$8%aiRik!b_N&qefOx>uZRMstCJ0EZrDxUe#I4XpYZR2`|k+?ZIcQ{sXxodh9R7M z!qGVJfP-be!|wFcYktXPB_J9W6V=f0U~sj+jF0`^NAaN#d;kwU@+j`T?|wY_{0o6d z8zmR8Z9d96;;Zt4CJ27}+yX@lCaKyX(h?L^1~ZPeIpq`z6g6)Md2tRM*G=+L$H>q| zp0`I!xk}8I&&@8QncDwPHmO3G%JGPZON5DQ5ktlEBRNOzD4c0b`7@Sz`*HN1(%+(oyc5kt=}?>71Fx(xXJ> zW8)*yyG$OhdT?lvk(q+_>J+%wJtY`}b+<6+SafC-!%tmHdYWz~)!Q7G9PkRgX~QGw z6}<{73}{edmyjmnma?8}Bw1n50>;Dj$kWu|CRSS3lM9Pm1hOC%3HED<`o^&%MMNzd zqP&e95v^E&T}-&E5D^kMUXVxSxWHsrTzWC4&zj3)9tyhc^|#(3wOhPT@~<>AymFoD zE*T4sqs(A-EPDgPe@m9FkhY^?{tnu2KYa8zXN?7p~% zIVq6PKyi)YcX50na9ifaxwe9{Y8o)rc3W_H-t@u_-1qWM>>UiqC+|NMNAv)F-CfM{ z)Q5_)#=SSdkh9rCavrmYL?>hNbBzU5Pp{-V(KQ6!b#hW@-4;c%vUBYLti-NrReT^- zU97Mas|Y|0^Oo~FP*mxwu{VqQ8~d~vk}vApuq!Z}^X&7l1vIlOrWc67qC+w**9kzq zOj(rhO?G!9fxTvwX3IWx*K~zJv8Jk1GpPY<&&P!0Tr7fQ=ka%8QWxwo4;No}iIPx` zdxC3t&Bl#_njjIH7AUA%Wh}E;B?KoQv?Yobf>XVG`_4i9?Aq(`tLtyV(MKGLcLt;M z@kbxaty^YH>&K?;JNQ_hS0`w0YHv3#zvN<7>6*Ads90;(lbhO#iAgJ9BAOGAJqCv! zd???LbnSZ{d;sU1aw1MWu#;x35hOR?7 zEmNjRMZioA{#E-)!7S}zf6F{20-$*Iu1{X8iH5}Pkaw!L zw~tFrh;1jsWKhFuyrb307%YUAdkIUH1=N7F%)zo`JXb)LPIMfytk91F$T(?>awL#? z9}olm*dwHEIdjd)AR(49v?Vw`#2MPs>LueAn@;U6-siCrUejvJdbvKsZ|X#81dUp( zbmp`$w9^b$*25`vLLpy_m4SG$a-^zKv18S1Qcvc}i!Z`7&CnhRUYnb5xiu1_Ja5s& zj*(w8k7&WVG^C;DR=C;-psF^cM4J*T8HS&EX$hWR{A$p#_r?Y1o{lem{xkUMH@}Ou z>o>Fghvt_Ghh2H;MN$fasRboas+qZb}R0C^eMc$az(I9jWCgtbAUrh)s8S4cE8arJ9TZE%HUaLmo~N8#lO>6 zJBBSWQ#u!M{o=t^o zPYnIYbC))66lhm2kqDyXKJrV>&$2=wnTjq>di~V5&p%5y&+_>AFAR=`wSI9M9$c~& z3xW;j_P95KJTIbzEyh85$z&peAptm=IL*5S37$H9;_fTL_zj`R^EehfWDlyV(4knFXJ2|F z7&8Z8t#h5aA!-^8ELG(5NS7WdV~Xl#4b_nBaF#Geh=dz#d9Q|U$32b3izP-}(&u?| zRx6<)Ao@Lb)=Zpp-g&AHHF58~cVf+!Z4m*f*F|9o;w^apyRXEC4QsJy5HKJ7oeyvpCEfk0CmzQe zYd1oIz}3a9IP<6@59aJ|&W{O`@Si{V5&q~8{s_~i&*DPE4?p=N9)IB_p07-6!f>4x zCv{VJBhk9iDGkBmO%j#GjI>JnC4&EL3|?&!(}EO$crG~w*g9iXXnElza@7J<<2*Z& zl~z0~8t*G;wB==E^ogV2w+azwJ7eO7DqS-XmOhz_l2E81p=dACuPuPojK3z#+6lDu zWx=0@a@d7U?OGZR%Y%!2*~V>{ws;3l*uNjg?K=evXLg|$HhXGLM}$MhN;eJ62k6Ko2pTNO4lSkXZ-4u*XFb*Y#hGh+>;xgzCVP=Xn0EheXv>(ov( z#SLnGuIX7VsE3Z?Y+Onr3}L)cFm~JBoG(gKq zkfP7kL*%&=U^Bv2?bS`q*^@fLPA~uV%P+;unX~w~k-?q#*{`qXYf)KEI%j-zEI>%@ z0MRURVq)N5N}qY&5)jxfKrj+R@;)UDjxAEbIy`1ANNZT~>dV2FbQw+$Do;mmug+By zk39Uah6%WYxT&5uwmYC5thpJFb3&MM}7OUdz%N2&+C|oKGBr3kB2BkO`-KV^TW4MHd zfEJZIjis@B77v8@dAw(euG01Pg%iWjGAeUq8&HanEGRY=682trRgCLM=G0<}99&z~ zu7&3EvMnvnhw=&?H!zY1JI){;TsnjU=5^wXLuTTrg?*Sar4L;_JzP)=PCQTSBvCK2 zw1bhlHVhV;P0NLmat)TTO~zZx#+K5AG6|eu*^syn>)~r9Jbj`fkP(+8nfTYG6Q5MV zYp}Y-2D;DEQ`&?Aq)BSBb5c)C}+8gOi|_Z)HfQ8FjNYxA3%ZVtM2jwhdf z2Jg7?9n7#NhwF6x=)WN(^sa(c~fmo&6Ll78_d`Di9y#8 zG>rbVHLalur=2M>fmT}e(6{dP&P5?(!Z21mOza^o>-1a3X>Mvk;-aRt*n?20vWEVv zb7{iW0xZquRS3kwHq=%P2TIO|mW@r(c52rY0ZO#&ux!I5mT%Y?JXTw9&XKcl`r!*O zZ;EF$Lk!bsjBzBg@jR)foC!c6Xzg>Att z+dH>{$4*+TaH-Iy7>&2>8pN&lJ{w$U;|dS+==QW-gp;-6METg`*g~b1y7RWlM3wF~{QUQ%}Z|&pa!EmOF>tpKK&`|vB%!LMz04n^pl_ef>GVTuAR8- zvP(Eqw{OZcJowQ4*tT;}Gwq9=H-;=Y*H&=Gu{u}eh=sS*FRPafxK~%$Kqw&hWsqr;r>LwzXUS5dMJ;p%^Or&*lKYpDqg~JGPixplJT~#ZR@JnsO6rP#=I{06J9AyrVxo_YQa>=+zj`-|24jimv+#DU}r=ggXJ?O6=PNUoEGVkZl) zMAx*QJW5_Rb#={TWg;{)nzN>OVj$mp-aMRr##wxCl9xAMe;t1CKR@TPmd;Bn+Kw>p z55E5@yg%4OIs#Mv{zpHCN1uE)K+Z70 zi!Z%|v(7k^$93Lmr{Ik@uVX_!k0USl#ey<-z8hxsiC6Az3m4+*FMJLQ7wyLmfz2B? zgz>zEOE118==MFh<+hvfn;UPz<{i6`?(BXyNHDeQxXO+$2vupvOPrM<2WN(16;v78 zs9`AF-l@$bym8U1dFd++x|{lAr(fA)UaGGj}g(I(v&sF zLlxDvxt~3UQ=v_KGCb+=#Opio^zxn9V@40IJYjE~eCQl>vRR_RF*qb>xbfV(FFg5b z(aBWU)N2amiiydRCT(6BTc!?L{!d^bGrzgPa>?HGiQdh-JJrv~IuMsK|DDJ~7z z)IQthBIo!RHu9Q*&_z3p0T>fxJO-~J|E{dV+hloNtXfu}3}y_kLdLn6;%*VqwO}#- z(C_>XjymRO);)J_+lp`g`}eSG*N`l%8PCHx>({-7D=)u--SiYm`N+c$VH-#4S_(%2 z#mj^u^V)95E*bLxq@^}cK|d)`M-@T^4KtCVIWp7@4UgjCM;_2Z^8^NhJO@7 z8l`74+g|mRjwAi7`YLw}l{p<4nZ$FewqxEFZziUE_YG=%47W&dU27Z@aF?hEymEuC|C8ehgYpL27INE zl9^3|f@C*P;piM2cFlz>>W{=kL?|66u@)mja~M?S!V!$9>YOYlD%0M3>=B6lY(9tV zKKI>sC+A=_G&5Z^GJ%tQebZt+8Tvm3D8ZiHH#F`dvj<8RHH-CS@)q?qS#*6iV-ox? zI}ZmhTD}@&w-fb2&?RN^-uLk1_=~^38h`fZpTjLTUC&|Y?|;|3F>PwUJO|l(US7t@ zqjdR&`|gW*bEdsZM?vuy1!u6ukfHtrflUr)c5ou#6HYTd4B#X9Sc?M2})?YhleJPlT}CL$Xz ziF}p{U?_)=36!Su5~6Tk zjm#osxFMVxtC8#yY#+#*Cgizc8VB?dZE4^X9dBg~DbjV?tXaIfQ?~QXx803#>i8#j z<09c)Ff5#N#+fHe98vgt+xE@aMDZl9$*p2U#d228ke|QK4c;Albhxdst3|}(A|gTS zE|%u?TGRWt&8bzHGb}&Tk$JjxG)J{x9GDH~hyB{|#UJ`ak2|C!b=( zWY0&AtyODQ^R=c5MiOj;&C8igj1;+B)K%M_$C(xHPP9BpI`&W?9=1=z@s~MX?)6sZE_Uws0q|LoOeY zME61^v)7e(HV$MZ7iv_wKrK=Bz`19i$7qIbeCw^ZV$J65EO4!>rNoR-S%q#~cJZZA z{kr?EJGqk}R1Nc949rvk?VQt3!^tO|i2e854?Vqo7#kbM^5x6%{EIK*z6T%1mYoAU z56z_Zt-UOIo9|td9y~2OokGc2{m(vw6gD$q@3rVxw1qj zHciI&$5Von_OB}>~|vk5~g7!<4VFKWssDit2=y)YrP!;Na+d{n@}ov zljP&VcIaXrUL0>S7U=lPODOZ0Zv0LWHIL7XzoqfE3e0pa(&vLO=FMtU$(ofTsH;LR zjj*k7iMIja7qO3hPj-7nL^f-WJ4bKc<}XpyWJtTPpLV>XR+JqzQ!I z+DgWh=G>xWb@J<4SL2=UxDtJVz$w3I+ty9E;nv%`~h)YO&?-6-@++GV^ZQgvt_U==)yLPW(%bw8;|AsN}`scIJK3E}vA zpI(ef3JBLk%alN6x6Y!zCk3t(h(`sOX`(V2pGpyZ;G8Gg>=;%YyQV=-a$ZsUm5ym@ zo0%G4P?&7rMGJ7=x#!3EzURJsuyy+`Axb2S8h+26F&&p*bUC*~p`#yp?4h83NS$Lk zj>5Fxcje{yy$^p_x(S45y7Ag;@sn$R6YNu(6&wEDcJJNzi%)+RfBFZ1gnff2=v&|a zFXR(G?ougHq{NxNBJm{ZlS_9S?@Nrqxh@of;PQgFl;LPcBfHf4E!*%v*ZvyU-EtF- zKk^t{`Swfkr=R>}IP}|ir(%*h5GWFn&ZTLas zrxC@-2xv``Tqvc9=-M?2kT7LBqbVx0_x7AEP4bKxkyO?*i=8V3jvZTl3D~Z>$IA!A zp_n?u?(eLGW@P=$x9X7!x?<_eD94a|^<{HL3z}=Sirvv(JSQylNe9kGUoZlXj7_39 zcwuQXVRJ#=6kVG7xkQz~N!kI-jG*7Yy%&_2ibxt%(4rNra&Ff?B_M z8Xa9GwajC1bnS@?&mzryrG%=6%b4+VA7l0}6Es6pSGYt||QNtyK9@4SIL2*8L?v(H1 zd9fgzxw6a073iR95k1%AzHw4mNNEWEqRmNHsK6Xwj8w-ruI&XHr z&al{LAGMJGo;GEg*nK%or85W`qy>X&Oc+gt-Bi@LC5ed_-4V>q4TY(q zCXwn<*KT>VNDn;r5*N|2dcF0uzm2Il9C_U2z&@YAPs>Z`2!bS6q4o4* z595thYhXc}3m448@BZ!wH2@LVux<^0^7CJ6WG+~kT74QC?dmn_ux!P09De8#c<=9A zg$EyfnCr$goE`4C;ktENH1CID3M+^RW;AF6PXd$4P>#SH6b7{__9D+OX;HZs{fL zfTs4s;L`4&CPIF2$9CL!%N@GYCp&5Q@9eYBj6s$(562yS42KttjyKWU8=MaTs^{GH z_w9K4`6uzUfB6mv8&0Z0xN2vp+Wl;!;y}xWXXE&pC!fG5e0+R_=Vfw?>hKO@ZE(Mn z$E<}(l{-@wPH8rEY7}Ft*n5(5t2VwZ`}5Z39yMKiJI^e*k?En^y=80FTwb;)ox50Zf(GF z(O757+!wZiG>DOjs8qtCKuz$wcc(@o^(c^mF-b&2CVS-gSwX!#?6AXNaah;ga2+-V zcedDIJkKjh;{G5YuDJ4@u~7PB4+kN?eS4{p7C9+qOr3(uF1Z9+;S5ha^%#B`(9!Z0 zt1(Whc)0H|M;wMf`J+z+o7f^8f6R&aXDcsIaBy~ z|6_|ekcS0^_bia2CqgGkT&FUcSlF8h!$nV$6uQ#B-d;Kz2nzFP=BTKDg~u!!!Mwx) zXOTI;sAM9jW7Ht+zkcy+{N~m>1A!iicfI{eeCdmSgKvH3yI3E*GTgy2EZFSnQ*hBm zmnsU&@zi6FW8J#Vv0iIeX9vzanT(F@#VkyOZ0V5!O-9?3Y(|Y{!=G!qmJXR2Ztzi`oCm1}U z4qtKSR(8@n5hAXN{ZWSD>8r>`^NcR2rmUSXFgOzJIm~QcY-FdMdJ5*unakfb0&2MC z#v4i=6afexXPkU2X3m(!VFRN+jl;~VkwQN!|)q|T}J8P;G_X?MH4G!VnhaSU&k311P zE%SpBau^q1a7Nfor*WwKRquE^=FOWYDq}EyUw4BD1g^O{L49y~Fn7*eA(rsp>#r@r z)&SibNfkd+JH%LB=h_|f=FH(8od|38teLWxh2wVZ8o^&*{f~IZ#TVfJ`@|o{XWG7H zBYu73?Xr70G0t<^L6##m-j$fj`xZ6JzONpi84)_y^1U%rYRoSj2`+l+Hg4X6jln=Z zZ_hngHGjvYm*LqLUdE`kEe=Yx?m0cVkWPPBy%{aP`_#`g?HsWtWPo zAHI9$nWwR8?Rr?%0YSb(ql3Y|W@xsjw+lVNFu7|;0x8=WGkpm;m9y#TnMeRF2q?F^ zuTPnA0@vSiW3c}eNG{Hc&XFlYEjAOmVcDqcTtuOEZgD;Nq%cTZvMy9%5)WO0Vp`R( zLLF*V(;QlDF4b2I&dZBZEHd9jXf>RB%szn`C}*+8Icu~gqodTCXizjALLZD=nie0T zB_V5wl92-2i1?|%6@4nL7gPm8QQOo?{aG1^jLJleHSpjwOGMq_#%F-k2o?gK5(r>t z*r6%9mr0gX?=2k6W0XdS6fA^<~S8;zr?*n{T`>pr;H6 z?sov@?>Rp(RCho*oACPb71%ZqYza=*$htq+%QB>y$n1AQWT_gJGD+EMx9D0M1{n(RE!#Dr=pK$jB_w&v-e~)?CZ~y(U?>=wiwaO<) z1ERbO?2&@j4pQuN`fBn zisuQYX36~l6vft|LdP38X%#fZIP6+zS@(3Daig*Cbi=Xt#dUo^+Q8|D?G=z~&UV|( zi+mstH1TA2M>ln=hD~NbE0@EEOe!xW*G*jM@qTa7o@ZPuhht$3da)T6h?2zwIFW{15=L1_Vd%a*>1Wvkwj(1*IlEQMEhXASSU>fHfJck*Y?J^wtGyzz$GLPRJ^C`2A? z0$n)c^t1RoLXIy!_dHh!@X-Pz&rQY7=FFVNYTFTq928LK9Ck#kU%wuYKlN--!CvOv zFtVb~-)jy|KlKcy3y1q3cpw;q$D-gZGap)*HO_G&z;)K*FBTZ4O!-zMB$|d8f6`8x zOjB@idD^#ekynb=Oem$@GTWVF&yucjydG@;hs{GzUE1u9jSWW=2!V&b-abs9Hl2#! ztJfkECgmWTy7s;Cx-5zaa<$*&C?I8B?K1Q?p%$vXWf|cUV@*8v{4$CD^)9LNT0~V& zm=`7`dVMbeb(T;UuJ5&36%=(i(eceqTr=+kqb14zXe#5>ID)v)KjSOei7m!L>{Ez2 zFCK$Dex%PrkSqZ(Fzk7hZ54{_^vGfv^7aH?U^YW>CMX;n5Ln+_(mN?6oMO zM6Xgua&_|9(2ia`!G3V%<(I=sBQ%0e`|R_J1*v7==3Wc-n2VE7Jxy0V$MerVfhV4M z4nMu-S`J*BHER}5JLP!1ByAHh}`w3TVW+&~Onr=8KN-@!^i zC_?ZW4J_5vBq)s#kR?f)$7p2l5u=w@mBBatWyZF^*E5c&u z!L9zg;n{;dBp9=Ay!!!2N>&+(z~()H#kXbV(3M zuXBK(AksXJl`00l^X-?QljFi1UVC*ho?G&YctI(tG5j37?_T(;KmRi<-1i_>*I$42 z6@25n|Bh8}t_ea>HoiUP&cf$E^C|rOm%fC*|HrQePuHbtkMOwr?z^#>+U(@TJc*sK z966g7X@kyV%E-;=@j)AeXC3joROmU3^xsF?Mx!i@nu3>FdNdj&QPrjg}p?PDo8TA;P9ssk2T3 zHi5A?mCuueGhieT(__ysm8&|noWmt;NnA9P#^6o0Nc+vhYiJKH@YhrOE>S>DSCWVt!iAbYUPR*kznVM`@N}MJPnoUv#@IG z3pno`O1oFp?!arJYnD|aj?rd5(;eJiEjzmR9NY4_;Mu!0*gs|mZ_<{aPEn7jw}QG& zFIu;APCo&M9B~xSdm{+>U*2#7hQs_s_kG+nfMX6l2*)0Mq9UDO$GP#wAUwR72Ey@g zTd-#k9)F8j^Y&z+zVxNV_`;X}fd!tavNXE&n|9!9|N0$#_nY6q7ytSTZ2zKR4+opm zT@O6S_BTTVDL<4|lghIr2^`%GTJQ-vE1{4!Odi*#613S4UD->#P^Mm)ut~<5yleMq zx`B`*OC(>y8f>%zQL5@u@6ed#_!)%Qg!pb~!aKBs;5SAlDwg*8r zW}Fk0VC4;(Ns(i+<-GXHa&E3hrV2?XXsQY!g`h1UOuQDN{$yHnG&k5tjqTWOY~>y_ zjwMQ98ABtNKtp{@G7s{``eJ zwv8Ls;Ok%gXKdKMgY7NSh`xb$U4AiVGLu*v8`_1NgZrI4W|Jh`y(SrI>=5-`GS9_8 zFetN)3kfkMq{HD@VmM;dWHvI}2oh?J#GY;t)k5MWLTm%!?Nw@UAO71lFpgi`a7Q4{ z4AKe5RWyZ)_}c;VsxazD1wh^4(z)N%1%>-~ZS zkO&cJnMq{E9wbPlC{<3g%wW0!70#k0xkq1Es%Z*!wyj8s2T?Dm-KNCYWMXWNlU|f- zaLVL0SCosa>26>)9t%?9Lj7=HEX3oYL=bXz6MxQ@$-@U=`yo=R14uW#UPDVS)x#yn8 zYeWL%>1UtjJhP_HW0EB^WI%dk1U>A)1H%3HWcTv6pnAQ$lvLeKK{d?9aG#qS)s=V1 zBqpg!oGIg{43d6l9Y*bY$w~&dRW;cD$dk`ua9|LZTzGES5rg#UmWbC?0kI8_jO%8s zYMc0Z@wP<^apG|&=!P;G1oG_|qzqLjHsf>8I2nf?ahwXsCT_d+7OZ+}1EUjHK_R^B zXXG`V&;n@zxsH$Gx?Ar^@|jvuL!>oBeU*7i|E{8y>Z>YbO4m>3-82sP)|8W2!A~Em z`n{>URhymhgCS;@+KcqQXB{~|cteNL7;j?gv?)Q*bh6N)Rx5QaCqpqbgF^$Ti@~fZ zjpGuv&AL^lP1v}GuvM08`e^jEU5*3~H4A^}*(KPzV^E-OQ-zX-PkR)SnJpDwiy8Ss zO<|WIKTrl~bBZG5+!rqj5EANK|*{%qKJ zspq)4>&d80R{P5@zcei348HE*&`$i~`Ws_1s*K+}W*!%xeOkEo93E?9Vib4Z`yi{L z7E?sm*n7{p_~5(W9t6@woDIG5jb*`0Hi$Vvm6$zePrSPLMO<^;uL5d#6_Y@Vt2Skx z)E42<3e$HF$O#iR{#)apdi%T!O5XT;W8csd_5j-9| zS(6%8;k1kDMHgMb9yprAw^qN2`yP8nt{Y~%JJ=yF4(A)~?b3JIq_K&-PAbO=o<3oCS>}Mo(hL zj&0$yF>XG{Wg@sKTvMV`Sv~3!PZS46v7{6uCw*sigy}pI0;DD}u{nvap^gU6zPy4T zlCIfkik+vCHzFd*l{w`hT%3K8+~K+nt@!71RZVIoshcU>7a}TjNmm4YN)TX^I_+7G z2aBX=11b#3C_zt$q#lef8_C2jWXXBCBC(9)i=1^jR6dmIf+BfFCMNOJb1&nW=a%p> z-QCjjW^_ziQHZ)PW00I7FjAR5tq&JpbRm142=d;2=WW=ueW$2{fToK`Fk^pTH?F+m z3Roz>bI&}DS5~|sVFO;&ydw`e0AKiv&tk9O4WqU!|Ni|SVCn0@fE?DSE7*w6JNs08 z@{c}=zx%s?!1cfRHGc5lzmz^biJ&lBjjdlHD11rSv?I`znIaTVgjF+bORO6LJ>-so z5&Y_gTX4gzcj53u4#Y(PKSi{gF$WY3qpTJu)7feshiHm9SUmH+`F4D6;+I)(3SLUu?OH9HOas% z(elX`UgiWg$B{0Rywhh|2gdq$yF@C>B5Tl{O}^96Y&NcRU*0()Y71ouDsWTAqG+w3uORzPrl zFy>vle3|A^xuoGhF@8ek?|%Cgl4AyPeJ{r1C9g#^N5^tpnf9Jes|=*5qtFJ5LTtVw zxXXt3L=b3PTkJ)p^B|{J5D}}!784V{iQ~w2qspcCEPaLqU8UcJ>vRWUa@t|@7({Ts zKrW_`v60DOZ`;P>o*qzmZ%+@e6NNHl#@td=Tz7dzHq6`!EHvqzYnHWT4oji#8g>nh z;JH^;1=!wTa8jhuWupJf-zb@j!b|8x-)9ixwm@3 zc0M7~#jh>Lr#}C;`0fvXh{qmz5W_(oqJfT%j<9`)ErU)%2y)wrbX|srhE)xhnnXrl zHvYp7-XDh@d9*kZ!g0U3=@yJm$_8bxyjk`fSuLcr+$T_0KOJ0)fK3Gst8y&)@)$Bv zzJ{v)-nS9d2F_h+p3?-$q9TGd18BBgKU6l10?B(E`?i^wH@#16qE7M_hlU3*FtmeR z+|$G6*uk5x;}oVD!I6jBYW;IO<;p9yn(rb8!QYC#Gn@@z9 zK<1=As;UVF8?8ED-b^|^>i5PZLfF1g#&xVkj!2LNh zUOXm2&^+-(A(Z3JBo{yBgcE|H`2aqjT#48I=6ddbY+d3{4&NVr%&~mhD=)u*&;8Y3 z(n#@-|L}MC*4O?CmtAlU`g=N5AU3%#I$gS}uODZfev+mEIKIw*{qR465d0YSSumf& z2eNi$DiZHq6&>2#rpy@ChSZyqr#UqRQIwb~d_{=$i5HjP%U}OCJ`{}Z|Mnl>2`bYL z{PpKQ#|7poMS+9~xy>hnx@Ae#vw|&)J)PRM1Ge_zeP?F}-f{Vr0U>qr{of2K=+iF* z6s3L6?5C-QG~Z5W+3%8Z*h$F9g~#s8=_5qD<82q(zpcYVQLQMpn++X-Ku4cSP3nA-gae;lR!xy#* zscx@ACYOLh@f`YieHMaEsk75G21;DCR^WX&*c)D1x(xT+cRv=t{1O`^=LL5xg$up# zA{mUEVx&_~3%L|O`>8+W%xAJGEq>{F{Pfq?b4UTb$mRRzpZp`t;iSe4H~!{2+)o9e zo_PlM-FF}FG*`a;O1$@~_cB_UKX)$94qh(ke6L!y63@Q0gg5bXhB>3w@wbtz{EMU-z!gDC>E@Q+A^E>%N$1pF?JBNfyrqr=h| zlg-KUrmV(|YqJTrdyakP_2Y`u55#CdFjPWy=gytnM3ItKiRQ?lPj#LtD%eaWq+ZtE zdH#u43kTa3i=E#qw9@C7tZdq4vn&?6A||5+dFaWP@%q{gQjSdFbqHWck5ua@x# zTIlcX!D*+Q%4rm$TR2JBJ-c1Z0Nw5ind8VC+qQ4R*=L@~Ytz@)gW-XJU{GG6ZUPro#NT`WyK%@N zhx47*uU~_2fB!!@DAOhPXklV|pSYn@+LKeVC}e;n_X({+HZmi!_{=d%UVq2=NS_~t z>QkN_qv?JSO*bkncStq2;251o4udOIeA-DQNsU1kQ=+Co%%y1Fqvs7c+y zHp9kYD!)21B<^m@0ik5FdN4rpPN)^nh#{GgwQO9>%GMoRb%J12+=*viUM{X|?O0%5 z9q0r#QS@svlq70MS*V!I^US=(q7~M26*^ws;JMVeu?lil7PMjl;B%?E9YblT3hIkg z{g%*rJ;+d0o`z-T60BvZ7;-J$F`U5TEOFISkuDLswW!*OhpZ^@W$K9}hGwce2V-`a zpXDpx#IiU3JM0|6TNP|GfAF#Q2YbsrZhL$FdFM%8pz!aF6|b>Nn2RkriLTy%-+co? zbjf|f+71p53Pa_Z$Qq6#6!rA8FXGwfU&7vd?SYHWISUtFZ~wqIx$?;AV*=0n$zZkq#;W zapmQz*gkx57#ZrHdFf^R>K8x9dq40&Zff>_KK2o=<$TMXcVWlQ0j`^Kz{0(7@p%_( zf+=u!K$e5U6A{^_=*xbWib8o`5=e#mBWI+WUsb&{;am1t#VJi5IWKR3a%8-J@oGg{ z=It}~6+4)zN_lCFV|;$*5UtrVm84 z>}jIXtQczq!Mu~{djsBGwg)>I-Gw5~>Hc*qBxQPG^x*g`O0pu& zfYgryp}4Gx&0DtzXuXD+Nf3@2ZArcImX?5+ZUFVx2#Qcaq0^Bofk}-MVKz%4VAaZr zu&be_fmX6N)>Mc!7-8tN(j3)_mNBuMWm-MVCGA0zRg4+UH7V0j?UNJ@aP&TjnTU3% z45i3d=OxmX=8;MhP{D8Vn$&BV*2}Tt06B-k^WDg14-xnrW7JB__qzAw9pekGry~T@IIcB}$sS=iy+ZdhUhbbvq!a zNC$IS6tXpJ-Mkr}_{1M#`m8y;7F)M$W`^=wpT+`1+igrGQvk{@UmBOF_Qu%us>a^< z%(R< zjOoEqFlXjW&NZZswGnJ}MAH=fIT^gpWTs%-O;<0+-qqfD!3kH_G7Het1WQd1ker@I zY(txAj7Kq9HQe>+^H{ldix3Gz>ROWhX$h2B6dbm57wH71w)hws3||z8hNc&o5!klj zTy=O>ITWpAaYwT#US%S4StoXwXfX3W7VS1-NC^nZd-F&Yix0IcIE8@>-R7C17$)jXPCchKZrF^} zb5^B;l1(?@RRF?tW$a3~&rO7Us)ub6^-Q3k;KaeVUoYUl- z3K^?9XVvO6-SL5S8@J-+6>GGrnKrY}^JoC(dczEvCAwEsA#)MSHLMV_^>g9}(|Z_$ zIu$0)OIgpRW^$V?rm3m@+`fg%T5$bV-CB(}xVX5?TC6yy#8BNaqbDRKa94@U)cf&u zYnsPpMc!R4q9PM8HI1nDTAq}XI<+;7MaAZtTEN$C3cAU>*mk_4ytwPAs+Q}9Ff=-W z2OoO^4?g+?_giw3pC1s-Fdn@BZd`Q9+nMO*&f5!r@h5+R|NGDXf`K56YMJEdtG!0Gg-N01+_AzJMDN+2=kUHOgJ1cMkRE7V!<~KOvs1vZ)UVAfGoht{b*}TF8k_sUWx}&>|1Y6TfuP&FO0JMf#;gR&|&8r9tE^Z=KL|jE<_IdiU z?~4}2F5$JTh}(jTsxJ2<_eNi>*Fs{!;w!l{7aubO~-<{Q`wV5 z>pK?E;Mm9r#z#k37IfA-Sn!Zxy{3V@S>Qp+eWLm84{BCjFVDNCw7#WCzb@9p4Y?SD z5aW_%nHr=~)3e3F79iyoRBCIKu0}V=11MDVO%IEfa_F&k*`M2kSnVNK;+6kNv4g%Hm)&7t)2Nq9=Q{wYW9%`r+u zSG37&r-Ex?>>ZRu9fZteQ|O|L?o*SZbt6F#(fG)@L?72v9glv*`_zaQY-awvh`yyV zlk{Lz)M}z>_7)m@7UNr_`J1XWxdfus^!eD^cP?I zT{y1VX4Z3y3E;_RIcCDgv#~Q%X0`=3uap(LN{PoOySRO4i*LInFQ-9hbGxQc*-;Vg z2}T~yY*l$-qiR-+e_4WftXxI9vx%|Q@pCbJ_hq9h^c>48i)ur-@Y3Zg@Y%oqt6*Qb z2$x@UNpO$PVdMJDnbU)7vL8#AF2#5L?ceeEGtXgsq7j8xRW+eMsndfQ`KgK;GfsHE zJ?6~7U;p`^Iqp7&HlQk67pU#ch<%HJL zx=AJ!s^cs?P%>{qnnu&*P>vJeaGKfIsh5-~lUU0eVw)9$wPSv^yGf>pkwSK3hCT-p|NM)2tMRjcvpigo-6*>tEd zHVG%gCymKQRFUM`HP+cF5HHt&KHAm9woBl=Mo%_v9f6f4!s4zK;PS%5kT<&V2e zCWwa&P$XS^CTg75n#Hb|&CM4Jesyz^?tF@43CV;IK$lc_V%%W+&>_tzxm6*#KL_R;Wxkf zIllLkUveL>^p)BJQluEa^F9gyuY*WcSW!)CQOJ~;tGGrfu0>x}kB+6XG_`h-t+AD^ zjcWe66Plj`UQ=$GbgY;>62-NeTOqhsOkF6CL0 z6XMJn3&4bqt<#{%ZJlLl-54{*6AjjdMa59cPw@(N^I1!796hwB;6oU5*W$a zwY*XxleJ+G*?0>gYbM3Ny$K;F>WiQ)C1my!i@nR>a|)G#eHSh7rQ5b`|MqnwC8x5U-T%Z$)$0OaFI|L(yN z2Oof|16u0upN@b1);DqM-48)}4!R^wBP$S$Pp?_1Q4vk1^N(_Dhg0K1HRlKLXs>RS z4V=bOQjfZbNSCH;Ss{d+)5Ky|QHOuawOyiG?`AA%H;Poqq)571u}>Mws6KC0i;@iz zDAdsZSEN^9JyHL;#$`BvW`7+=@4qKDty>Bo=7KsJ5buo)k1$_TG9~3ac@5hjIYP8a z^Eb*}Cump=?g~<;3z8tAlc=yT>0D`HZWA)nL)&5Xstv)Ny_t`hWUq&l;?wpFnJ`t+ z$xeh$Q@u?zKpud0zx1&nR;Ck_vyqF-NkF1I8@cXuHBp~khiW%4wqi>tY1zL0k+c++dK5MtlF zr2f|w70Kr!gn4%K8K65a^J~4P0tw==QZbyXeG6(wV;>SjadE>l!t{B(Kd(`4#9Yh? z1x=0y<1g3X4OcnutTS-fQOAUJ%J8>e`68ZqVF|qUurhwB+Ac)hv2>KgMrHR(1XCG( zTG|0$DXxe8T~%??wT+)UL#H{?>I*4CGNcjH3DmY@)d#At^d8mwNuRVvq0Z=hc%u`P z1wcFX-2`tGV$sG@-lwrp!8UW)d<^f{z+P!emZZpf z7Al=oId77aPst(Ekm~nbU6X?KCbc6dX*N`qkdSlT2!STBsm$-xFl!K;Bs;5B;lKNz zUJ{JKIal|$9!{C2DWr_b=UGi)WxSfY*93Xg`Cg4!h)M|Cg8E{o1+P&Z8fnZfY*izq zzOoT!4H{P!$JI*+Q^}z@|&98~)DKq=sE~d3|(Jly?i)k9R!z*4E z<}+K5H_T@QV{;&aPXL3Ds)8WD!k}*UG9&`lD-z^jE+*Pqp^@4>^Q26tOG#CUJzQg8 zU{Lo!hf~iyAM4hx!QXxLpMpBQN^L_ml5&Eud@Iu6(w$ibvjGXcRJ?qy)jndOMSw4< zN!2)zstQxJW5snz3b7%%PaaVq;)c{z8jZ-TLJR4AQdLRXH5X2YIHSJR8)et1Ue{DR zm#90%v&AbWxWwkwwY?9kjD<;2)(e(UEzjQBk>ThA=VNroTDHSc*%v}9l$=VrO9V&= zwV)?>9y=tffKp;;fvD{YnM$TloyG;(n6D|n$>e61S+)EkugD}lU2MtgtFUs-hTt-t zWLIUh8RSj%SZTB_p`A%-%QC@jE}Zd>q9rlFN-9IK$WXx|lOgx#C}Zjn;DtG3ed4@a z%M@B^4z>&Cxu!WFerALTpoj=g2+*~KoXIZPhH01pvO?`i2_t^y)Zh$5B}EuPUO`G} zVw<^5o0`w%)uU&;A3HW=R&ytho-^i1O$w8kiM$X#`YPQ^AGzwSDRxtNFuEk|T4q0b z?bRjto4@@cUU~hEn73xZkty>6yJz@RaK{oI=?eH1v6MG~l!-DGw)RZkw^yg)v*ngr zQAQPc1?k$F#?M^g)vDTxY@CLmsc%`V*DMjFKqa21`kd9j?Rl&7W#wA*oA_MmSgT0f zMYgN>^7my1RQAxo|)DV7nu=iqt5| zeWL4)jgRxWb%H?Yf^h}7;M%5OCCTWN?g+!-CJ#UUqPlWL5V)p~F6Nk}?agnG*s_Fs zXVdk0=hS)DSdS=qImk|BL@}$eY-FyvGN8_y+r&>CRy8QRQ)Z9u}uHLhb*Yz)M6ryY4926k=WH6I-x;eu9F=zcH=80rK%y>~i?IgIYy z!Jg>x@H3^a7qe#1V7{h!E3&Ef_V&u08gilg3tI4T7lsO+&T!!;o_`e^w(nw9hy3JO zmPILB&dN3~i$uQ?V>P|Nb%SX%+1xp@={WDleEDJ=)(l@?#HB#H9tcy=bu>?i#@7@i z=B);dPGlssl(1EYO$mhb@z^Rx8M7pKb;qj`qcxSQrq;*MdK4%w5-dbTaR&EwhqkEO z6z*3U$lB;C=kc$Gd7adj!qxKl{00)LRW+-%!I{e2IF_yem*;B8J!LaX@Tj7}@UzF9 z+4!qJ{|pX4>@eJV!*%%9fBhs7o7llphIAF?i}n^2LL+60DwEn&n>q#EyzCjEwjET~ zr5(CJGOwnNmjq1Zy$MKXv}1FY+EZ*is>_wtZDsgovoz<0aMuzd7WM3kt{N%LWqNM2 zX+`GJ4N2!Gp_LTDRn@vwm6Ume@>-m^$S3s8!nyrnt*2n)nsxjfjQg z>#?9hjf@OqIC!4A!)Np7?!m2AsE^ZRa1N1RqV5{COjV}gHBwDmUBYE-N*LK(bS0 zQJRy7hjvaf06qKSE7-DQfJY*2UB!XgREv@=fb@B4N}UrvS|lVxa9v#RaiT+cm%>KR zI+YklHDJlB3IN;jZ8y`sL7{$TYJ!jt&lx9sq3BZ;>&+yR-F8bOCfmXC#IumFYiUu_ z#Y=ZIBkXiX&l`;vLJ(~+F9l!4Tox4?W>}7;C~Rj+h(-uk(lKaJNvGzo7*=RJl9peX ztc1vWCIk`MU4cMOJ@vGpUw2~mthxB(Kl~#cb;zN3@X<$c*dYhw(ktE(j+?;0eEqAq z_t9r!V?nPuGd9+g8B>?G&66=~wO3R+w}{8_TB8QgiM0DjA)FCcV*&U(K(>ygIWGH*o`8*n) z6$=zznXIVhR)xB#K+d+igMF_H-OS4gpr|rVLbU1kDM6V!1~Vu-wQ*QY+X}Jyl-Qhl z?@+j7IcC>UC7@%q!~sZ+*T*=rog}?{+;T=hK-d zAF&WSw{K*6nQV#&iH_^(?cw0ufuP+`?ow}87k6D99}mJQAex!M!&IwN=D;Lpc+>qT zL6^##P|j1G@|Gm!KV>2@xY58Ke{nfi&;ttt(k%mHIkiP-nE}fLHOnU3XR>D0N##KW z4%75D)xFCBWVuOt&&M{sM17bu$_kn{8%c9F=+18ptHx=`>IPraxhxU_FGj7X!^$c~ zvglQPmhY1ox6_>>O~{PPV-=(-f~ES3M4&raL{!eTWq=ZsB%hZEu{fB+_nPYRrif{7 zjYhVt%shBbqXF`mz91z>#n}9xKmI8;ty_cB&pZp$ru4JNaLrq5@aW@D;E|`F=X{r< z|B+lLEkvHG9;pzpXYtASBhoaXS*t~NxH#TD8@E*%Y!Oyf#-&%iCjGyv?M|u;SUo>= zZ&y)O6v|PkdziI96$GXpwpqkhl`9!zdhHUuCS$d6WUjqkt2D=cH@2B{J#60dq(w~l zY)VfJ#~-#Zpqa&NN2F(>+P|dn>uFJ@jix{7mJ3LU87jQv{G7` zkQ|a-qs{rc)-qEq8&KKqz&oU=brp1gBtVpdq|Q$6`!w-ppNQ8V&qQ0Gy6lFn+j57TLpd2nfi$K9MJ|f zy2#6B;4&9OE2^Oa)!)@I#Pv(oHAPzhS`a9IWwHo}B~4nck-TqNeWN!$7tWz=ajyzp zU^jDFJtqqMia<~AZLd6;|6>l?6JvurxmyGUzEUTRo!bX7rMDCP!FxoAhBN)cmvd&% z!qk9lNTnhJu+v&U3|c%mO@*?(d%}6sr%jj0V3DFOW(D)k9R~5lb4!9@a5xTz%Q4o} zed>#d*-T4wmcq%+>q0xNt1+)MV~v%Zt9*IYY?$zCrhB&h?qZ_H-9 zp0K&|h5abqWvjblx}&6votpq`v%|@6eM)EdZm%Y!FJGJpQ|Y383S}Xfo|#6ew!3aT z#)Q5xD$4CLY!DKhXC*&n?bBK<6B7+gy24J?@Oe!5^eK~7h`VL?uL_{*m@7<~C+_T~ zy78UnSBTKmYn!kkbWHJF>PoixExa{x!ivqR!kkuiwuFN8ob-8UY#mx&)VoAj0j=w; zf}?~mT!L(>!Y^<2pwVl0IaTR=r_W>?uni-toKxNO()U5@!EuN0gH0QyOvcFA1a^gu zXYR~t=nLK?LNvtpvu8{XZtU*xS&wWOUew!Mof}jHZESpyLj31y(+4Q`qikVGF-oXk%TlGPQGP71+Ot@;d*c~yl%2czp z0Xk^6_liWIbLvFJu@JJ%;3}db9d8vew%bKh7+)p&(zWtD zR#>db&LRcR>=`pFtfm4-(To|)tGPnvMN02wzq8#iaQYs4K6zd3Sxl(;ihat~D!orC ztg1pNexJl;r5lzNY>Oco2`#3_8Q)kF$d+e7n~g7-|3mhfjlOWNwL^p4;b2Ozuk1Tx zCiBzg&0ATR%$++seBQ&hM9OjEhKcn~UK>hZqTsx)fN03;M98LAmju;8DjCs{)nY1s zp*Gd<)Qc-IHad>feLTt0yv?H2L1vlLlEWbdpOW$gUUFk7{G+Lp7~7Cq$po7)-i0kQ z)yFJs2~d;c2{{p(d40t)%-MSZX3Uv}FMi=Oxb~W#;QTXA6~U!&n(3313X9H@NYH{$ z>@{XcwCK&aFdAt}u{QQTCC2n`2^OSR8V>JZ*rdE$sl6%_CXOX7_1i3s&q;_XRqN~( zk($15HVd_;q4Vi=&aLPa-P}}>^!nZqXjYFqy3AV^)n=avYRg#H2aL?*sylI2=;*l9 zdzgCUfoQa6I&v;{I*lGW6tO2-T{_N>Z3^l9W$Arie_!^;Jrwg$fcQd>o>&$AaEO80c=Q-^FqYS<(5DUQNwt z=EO zi{|eoE>B2poOI%iq3w5Gfw+;G6T_KLcA_d=Ef~+MI#FFz*K&V5##ad-&QG)C93pXhxc;&O^Ls8?_@9HtCpC0g)PGt3soSHvYGDNzrDDN2!>EQd&S21+^UO z%c@WHxO5%TakU$>ojY%44`xqw!KN}ARHNApD5wV(jehRTnT%4P9a5-#t2~cq*Y}of z+b|w%H#27io6Xdz94|*+Cko~xnwvUx8mmwBBAHJHK?a}aUw(}b<}#7WK&h9-Yn+VP zbVN_Cb1HeNQkZeI$n$W~P-->=sOLf^+Hrjp=~QWjx^ufNUvs~G7U0AaPr*YE+>84j zevBXZ&;I=L>?P~z?!>1)`ANL{UGKzu-uHX#|0mT@o}(aUz8n#9f&@wgp6t4Ij>}pT z_w09OyOMkopI4U|=T4uwy@53?Gmu^@)6X-F14RG+)My)LGV|9;8H`K7W;|Kf%; zvUMeElcEc>5rS}KwT_>)jnJvSO4rrvRE1Yn=(a-~?dGZ~G}_&}JObJU5RKD&rZ>o=PrkZYo)4R5QkP zX*w~bzmHRe$P2~xHOfbzi;!+l8JSzQ?!w~N-ohB^qeKu)_*q;Sp9mZ&Vg+tQPeEf& zN1r7DRB=M|cT`VwXJdj>_b>2ZqQtPqnC ze98FgecSksmV3G)vp37MGzSU-E~!y%2tUh;k{9r0H)hF(kXv;_{frFiw$rL7hls|6 zi_L|vj62;$Vo==}QG}$zLZezj}9l(_x z0_hWRGH;^7Mq!eSC0+B>uIMZ3Y;_LOS6)HMDUHRHB-EljbZ#W7BBVys8A6NmVybz z=CxD;L3b*jfP;;GeILe5jStaD|z zZ#(#%yeZIW%DBaZ#JOl|%gBqYdbb~q?8w5#LSEsnE13gj3Hg`S^=TQ(J2_BLo17jo1Gj;8tN>Rgg zi_#^-?wjj3V#%`ATr-v{+%+48akL`w?K9E1ieA1k;<1>4V)0FP2a@ywnhdG(ZqiSJ z<>WWJu>-mq3f6Ga^|ox?iXA(*i~UFg|0r7d$U_dqQO6yJn{K=TYc_0QTHkl!-Z<)* zXwz;J380!rgduUmcXPFR-ELzQuDgP`Bd zqIzUWfG2{sG8HXrT?*!N1wu>btaM%l;iRgvsmba5q|a2nH+F-7>9$<~ydHblzF778 zGoZfg-000o!SU`+$yFNVEbImgmhPUeAT+wU?##&WQ1CAG1_9N_<$dWs6XO$n4emk` z)GqqIJGjQjf|^yQ#$vML)$zcSFJpYXp(;s`NFB9;q0@y|C$<#H_R{-VyXaZ;Vvbfj zgxND}2aZv;xy0g#3tNwccoZ7yMcEh()Ia_Cukg!X--wfrJv=;code9EmHDo?_|o8F z8^>Mu-WzKQzvmrq=SuC@{Q7#3M{4bc^+B~-h`sjQ3){DC$HGMmv3C7h{Oa24v3lbc zQQySMhyxEe0Pnr(eR$%jC$M;C!BC$FTL-l4KD8K~T%drsW2w!kErBIF zqNxW}w3Nni(<=vu~JD%2wP4^K$8bO}Brs+LgDxQ%@-Xe#xs9uB&Y3lv z9Y-90q`8uX`tC4u`gEQ@5;7#5>f+7=R=xEmUSGM6^BZV@q%zdJlxuWZQMlYR&nR%b zPGqJIM2Zg{|42oBioIXn+prv2H)TbeRze2PSUXead2=ZHsbj09T^p&p8tq4Ox8iBer?ZONES^=ZgkHDyX4 zKP)FzPKJv; z>3dVNEInTwPsX&SR^(B2qd#xI;}-nkAAS;l_qTt8bsN@U|F<2;L~+Y4H}g2UyE^dR z_q;bq*u87ZBNK$ z6|5Z-q=daYv|-24*JXxo^_EnHnZ?Dpc8I~b(tQkJx@40|&q<#p*HRqvRja^A&)ePo z_&VMfs7&Xwqz=1^eX24q_LBQ1M&0rRmxZJ&>~r0-s~EH>a*~ zmO!HFSZ`?~cALaP?NSD^UAVF^f^G`*l%B`NDlQ=^>RQ~z!@ryEdH_#9|1zcr30ez+ z@tfbd3`2thTyl^m=j32WKJ<{o@vEQz57uv%hGx|Mg^kbFdpvyljw>$3MVDNHJA;7w z$8Y~TGm_og=4Y>YbMVD4{uRd#{O#X-8PC14v@OvY;Xq@7(#1xV*iAUNR_I?4ZN<23 zHW45(>e`!vz^a~_-3gY`cdQWB7aLO&BEAS6h)mu_NThRES|gn+Ijs;RyL;}4b@ceOYihay+x^^TZMHKFO?~7U=`m`lid3oKPQAD9a z+Hcp!bER_{kxa$2BV`#2k03Lt&a1_#q>N>5^>jRu3B6Bh!4$>l?f$l;w!G=4onD7_ z$XelR68&HbKA`R^3-s$tSBF7wi&gjR1d(XkEFR$Qb*fp?=Hwfy{MDMAR z9;s6l{YxqpAyE3hHy|9cc~Y;YU4uJglrj}Br`kqS0?O}TZ|_JfFEMS}G*-dtZ>-sX zH{RSNbzkbzrBWDNUDn<_M9?w}!sxck6}A-(`zN=!dM0dPt(cSztf|DCd*60);-nan zS<6}#V3cSl^~hY@UA$KlP);gehL@Kvi-y{BPdyn29)37B1)EH+9V3H44#wX11XMBy z-}u(QV(0Jx4&HZPoO;Tsc=VBng1zcZsqW?kjTkl4J3TecJU=kYBAO6S$SwP(n`CW73_yxMdWTiThvR6EBsW z;Ui{^*G$6*QWbf3_fPE$@jLu>L>7f3&?1~uVdQ|e2&CN{nb2!Nq58XBOix*Gnhi^8 zM03CFT=@xA6;#KfsuJ5y4NY1QW+fCLwaM_aoBc`WD;2E8JZ3oUm;~a8J`$s*EiLhq0jsK`dCdO-Y1U~8IyZ@ zNFD2B4;IaS{o&`AVw75-vU|Cq#43!-wgKlF>om-}^qi zx%!P@lztpdRf%fJc5dAUOh^@=#kVD}tU~xm2-)Vrh~9`XCgz#?sf1Kkb6QoQcx~rO z$5f?YRq(KZ-n%%*Hs9ry)B4RG$q4j_yfp+r3KZ{425w@sW-5yPDS*k=UAh}V#qQtwJh-n=?0qCLux@Q_PnWm)46oQkB+OmPG zFj5u(@jSIs>F(-bTaBe0k({9VHN8DOY@;EY**Mh@4(O)7a?K`4pP!6X2kw_kB_Sso zq9rwWyve}*KhuN zF#7J`@$b9Oe4KvfnRw=jM}kp!6|@oti!=&ogn9zbJN;BF3U2X#`{p-;4m*Z@f~%bT zUvCEWt6_rF`d1~kk}7O3y;NYB>XelXpC()r;gk{}T+G--R-}2D*C|zXQWe&AzbL?b zIfNl)xPsZeE|-%=fGPB+Z*x(h5$jL4MEG4TnKA~k_msRTm1%2de@KhcXT>05 zxP{##IY}8+53LAupQy0a=ZPDmPwV?yk91$qLTS*J)Kkob_Z81ka-U|!Mq~Fjdnury zAQdl~{Z7##3A`f@+zY$5Z)HS6LH`uNOHK_kF|Z4p4E16ABm*%cl%OJwkB#ax<-r^= zgM|ordWl}ijzfWbGlC(QPz*Jfqq~oejRyfW%HAh>=K9!JLt1e-+hM`_Rvci{+^#&M z5U&p}7bN`NM@W|GHCS^}w_dc~D^bTlvP7!KNl#qHg*qYxl$BHp69U0XzJ0KOhhAYj zt8q0he{s+u2Vs182rs?77}N@SYV6VyZZps~2ZUQuG0 ziYjA*F4{@F9iz;eJWrXx6;Zax09U%F(Lm`vOkMG?!eUidbjmw0S>3ligUQJA6tja2G`I_l7 z^#w$7+Hr^Ajipa>Z?^G?3FZSzhOARbk$^s^Z&S^6vnzWzI8w+MO!G^1fM?E_&cS$e zZ$dn@E?vR?x#u2xY7;rx%&7m9^uCui+I0VVL<(9>jqAPUk|9fk++==5FU2m^K*hzPSxC~kc@fj$RlgK$6A+ zSEx_FZS2*2qiXs``iv$7N~%BFY%nfSc`L%+#Cp}4;(${8Rr+cXeDPWV;V+`Rr6G1< zcXUu4;4Y?z$%!%4f{ljCJP^N!@0Ajc+*{pIhqQiO-155GEIpGV1!c3N(qL!wb88! z(uk^+&Wk8Hj&mlW5cB20HF{Y=>q6Tv7A;G55+s6!1)a;Zj%|);j`evY91)%hgHeX5 z$?EWDo%Kwri4Bf$g+A}ZAV*+!&eT49{cHaiAY~t(eEdE8y(am)I z*)yi#^Pl@H7YSOwel4DP`gz=X?|oqhkrpe3P%IOrJ-=c(87B)_2+%$#`?+O93fQO5$$r*NT-R1}dErP(IluySTU0 zB+G-TQ>F$%)FsH-fi)u1U`EG=!)7S$u_<+kYu40_uAxXJFu`P_5f_W?F+Q#Nnnmx6 zxl40Zxj4ShYN#m8u4j_OmnR|fslc+G%7`sbgjc4S(gkRo<3YC~AtNaiy3pa!!}eW>cU^fI_TJ|JTzBntc4uOj+Vu7Gf)+ zjGe;f1l#bU)U-BhuH8Q^f|_-I-&BO+P_+ojoN6X8pdCZ=-zrpo+vjC z`l?ktFX_Fi74p0N+_!Y_Rm6j>)nP7CfXrQ5RU|8M4C!)H6IdAYDAdQ;{0g8xRlCDjh@S z5>^~@U(}mT1A;Ow(IDy&L?!VB(Q}rm6ZM1RZj_K4L1I!}8;%SnCQ(Bw*Fmv`Qew27 zDQ(9Z7o@W5l=N&hfJ6fKg+0L_r3u3{uP0L@T46KvrSaq~uHhWrL7h6_phJ)cx8BmF zOR(aN)ffoU|AdoHW|gG@HG~JZ`+W~Tg?GQ_gLwM+S1~d?8FbxYoP5%$=np#wiM|sK zKNz!TO=C5PX1Q(#bj~TGq)u+H$7?dtkW6+#Ct_qI1(j3-`e`(kIV_`
i}!XVIP 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 B`8fap literal 0 HcmV?d00001 diff --git a/PAND-MARKET/src/assets/like_default.svg b/PAND-MARKET/src/assets/like_default.svg new file mode 100644 index 0000000..3247885 --- /dev/null +++ b/PAND-MARKET/src/assets/like_default.svg @@ -0,0 +1,3 @@ + + + diff --git a/PAND-MARKET/src/assets/like_on.svg b/PAND-MARKET/src/assets/like_on.svg new file mode 100644 index 0000000..e08d59d --- /dev/null +++ b/PAND-MARKET/src/assets/like_on.svg @@ -0,0 +1,3 @@ + + + diff --git a/PAND-MARKET/src/components/common/Title.module.css b/PAND-MARKET/src/components/common/Title.module.css new file mode 100644 index 0000000..ce123ed --- /dev/null +++ b/PAND-MARKET/src/components/common/Title.module.css @@ -0,0 +1,21 @@ +.sm { + font-size: 14px; +} +.md { + font-size: 16px; +} +.lg { + font-size: 18px; +} +.xlg { + font-size: 20px; +} +.light { + font-weight: 300; +} +.regiular { + font-weight: 400; +} +.bold { + font-weight: 700; +} \ No newline at end of file diff --git a/PAND-MARKET/src/components/common/Title.tsx b/PAND-MARKET/src/components/common/Title.tsx new file mode 100644 index 0000000..f1ae1bf --- /dev/null +++ b/PAND-MARKET/src/components/common/Title.tsx @@ -0,0 +1,12 @@ +import type { ReactNode } from 'react'; +import s from './Title.module.css'; +interface TitleProps { + children: ReactNode; + size: string; + whight: string; +} +const Title = ({ children, size, whight }: TitleProps) => { + return {children}; +}; + +export default Title; diff --git a/PAND-MARKET/src/components/layout/Layout.module.css b/PAND-MARKET/src/components/layout/Layout.module.css index e69de29..a933a02 100644 --- a/PAND-MARKET/src/components/layout/Layout.module.css +++ b/PAND-MARKET/src/components/layout/Layout.module.css @@ -0,0 +1,12 @@ +.main { + max-width: 1200px; + margin: 24px auto 0; + padding: 0 24px; +} + +@media (max-width: 768px) { + .main { + max-width: 100%; + padding: 0 24px; + } +} \ No newline at end of file diff --git a/PAND-MARKET/src/components/layout/Layout.tsx b/PAND-MARKET/src/components/layout/Layout.tsx index 9f90384..7affb36 100644 --- a/PAND-MARKET/src/components/layout/Layout.tsx +++ b/PAND-MARKET/src/components/layout/Layout.tsx @@ -1,8 +1,13 @@ +import { Outlet } from 'react-router-dom'; import Header from '@components/layout/header/Header'; +import s from './Layout.module.css'; const Layout = () => { return ( <>

+
+ +
); }; diff --git a/PAND-MARKET/src/components/layout/header/Header.module.css b/PAND-MARKET/src/components/layout/header/Header.module.css index 81ad4b1..1470dd6 100644 --- a/PAND-MARKET/src/components/layout/header/Header.module.css +++ b/PAND-MARKET/src/components/layout/header/Header.module.css @@ -28,7 +28,7 @@ color: #4b5563; } -@media (max-width: 1020px) { +@media (max-width: 1024px) { .header { padding-inline: 24px; } diff --git a/PAND-MARKET/src/components/layout/header/Header.tsx b/PAND-MARKET/src/components/layout/header/Header.tsx index 5355f12..6281c68 100644 --- a/PAND-MARKET/src/components/layout/header/Header.tsx +++ b/PAND-MARKET/src/components/layout/header/Header.tsx @@ -6,27 +6,27 @@ interface Menus { name: string; link: string; } +const menus: Menus[] = [ + { + name: '자유게시판', + link: '/notice', + }, + { + name: '중고마켓', + link: '/items', + }, +]; const Header = () => { - const menus: Menus[] = [ - { - name: '자유게시판', - link: '/notice', - }, - { - name: '중고마켓', - link: '/items', - }, - ]; return ( -
+
-

+ 판다마켓 -

+
{menus.map((menu) => { return ( - + {menu.name} ); @@ -38,7 +38,7 @@ const Header = () => { 프로필
-
+
); }; diff --git a/PAND-MARKET/src/components/layout/main/Main.module.css b/PAND-MARKET/src/components/layout/main/Main.module.css deleted file mode 100644 index e69de29..0000000 diff --git a/PAND-MARKET/src/components/layout/main/Main.tsx b/PAND-MARKET/src/components/layout/main/Main.tsx deleted file mode 100644 index e69de29..0000000 diff --git a/PAND-MARKET/src/pages/products/Products.tsx b/PAND-MARKET/src/pages/products/Products.tsx index 217a095..f75ecc3 100644 --- a/PAND-MARKET/src/pages/products/Products.tsx +++ b/PAND-MARKET/src/pages/products/Products.tsx @@ -1,5 +1,12 @@ +import BestProductList from './module/best-product-list/BestProductList'; +import GeneralProductList from './module/general-produc-list/GeneralProductList'; const Products = () => { - return
Products
; + return ( +
+ + +
+ ); }; export default Products; diff --git a/PAND-MARKET/src/pages/products/components/ProductCard.module.css b/PAND-MARKET/src/pages/products/components/ProductCard.module.css new file mode 100644 index 0000000..ebad7a0 --- /dev/null +++ b/PAND-MARKET/src/pages/products/components/ProductCard.module.css @@ -0,0 +1,36 @@ +.productCard { + +} +.productCard .image { + aspect-ratio: 1; + border-radius: 16px; + overflow: hidden; +} +.productCard .image img { + height: 100%; +} + +.productCard .info { + margin-top: 16px; + +} +.productCard .info .tit { + font-size: 14px; + line-height: 24px; +} +.productCard .info .price { + margin-top: 6px; + font-size: 16px; + font-weight: 700; + line-height: 26px; +} +.productCard .info .like { + display: flex; + align-items: center; + gap: 4px; +} +.productCard .info .like .count { + margin-top: 6px; + font-size: 12px; + color: #4B5563; +} \ No newline at end of file diff --git a/PAND-MARKET/src/pages/products/components/ProductCard.tsx b/PAND-MARKET/src/pages/products/components/ProductCard.tsx new file mode 100644 index 0000000..4a44389 --- /dev/null +++ b/PAND-MARKET/src/pages/products/components/ProductCard.tsx @@ -0,0 +1,29 @@ +import s from './ProductCard.module.css'; +import likeDefault from '@assets/like_default.svg'; +import likeOn from '@assets/like_on.svg'; +import { Link } from 'react-router-dom'; +interface ProductProps { + id?: number; + name?: string; + price?: number; + images?: string[]; +} +const ProductCard = ({ product }: { product: ProductProps }) => { + return ( + +
+ 상품1 +
+
+

아이패드 미니 팝니다.

+

50,000원

+ +
+ + ); +}; + +export default ProductCard; diff --git a/PAND-MARKET/src/pages/products/hooks/useProducts.ts b/PAND-MARKET/src/pages/products/hooks/useProducts.ts new file mode 100644 index 0000000..8c63b07 --- /dev/null +++ b/PAND-MARKET/src/pages/products/hooks/useProducts.ts @@ -0,0 +1,42 @@ +import axios from 'axios'; +import { useState, useEffect } from 'react'; + +interface ProductProps { + id?: number; + name?: string; + price?: number; + images?: string[]; +} + +interface useProductsPrams { + page?: number; + size?: number; + order?: string; +} + +export function useProducts({ + page, + size, + order = 'recent', +}: useProductsPrams) { + const [products, setProducts] = useState([]); + const [loading, setLoading] = useState(false); + useEffect(() => { + setLoading(true); + axios + .get( + `https://panda-market-api.vercel.app/products?page=${page}&pageSize=${size}&orderBy=${order}`, + ) + .then((response) => { + setProducts(response.data.list); + }) + .catch((error) => { + console.log(error); + }) + .finally(() => { + setLoading(false); + }); + }, [page, size]); + + return { products, loading }; +} diff --git a/PAND-MARKET/src/pages/products/module/best-product-list/BestProductList.module.css b/PAND-MARKET/src/pages/products/module/best-product-list/BestProductList.module.css new file mode 100644 index 0000000..050b15c --- /dev/null +++ b/PAND-MARKET/src/pages/products/module/best-product-list/BestProductList.module.css @@ -0,0 +1,25 @@ +.bestProductList { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 24px; + margin-top: 16px; +} + +@media (max-width: 1024px) { + .bestProductList { + grid-template-columns: repeat(2, 1fr); + gap: 10px; + } + .bestProductList > *:nth-child(n+3) { + display: none; + } +} + +@media (max-width: 768px) { + .bestProductList { + grid-template-columns: 1fr; + } + .bestProductList > *:nth-child(n+2) { + display: none; + } +} \ No newline at end of file diff --git a/PAND-MARKET/src/pages/products/module/best-product-list/BestProductList.tsx b/PAND-MARKET/src/pages/products/module/best-product-list/BestProductList.tsx new file mode 100644 index 0000000..5ef4711 --- /dev/null +++ b/PAND-MARKET/src/pages/products/module/best-product-list/BestProductList.tsx @@ -0,0 +1,27 @@ +import s from './BestProductList.module.css'; +import Title from '@/components/common/Title'; +import ProductCard from '../../components/ProductCard'; +import { useProducts } from '../../hooks/useProducts'; +const BestProductList = () => { + const { products, loading } = useProducts({ + page: 1, + size: 4, + order: 'favorite', + }); + console.log(products); + if (loading) return
Loading...
; + return ( +
+ + 베스트 상품 + +
+ {products.map((product) => ( + + ))} +
+
+ ); +}; + +export default BestProductList; diff --git a/PAND-MARKET/src/pages/products/module/general-produc-list/GeneralProductList.module.css b/PAND-MARKET/src/pages/products/module/general-produc-list/GeneralProductList.module.css new file mode 100644 index 0000000..6ebbef9 --- /dev/null +++ b/PAND-MARKET/src/pages/products/module/general-produc-list/GeneralProductList.module.css @@ -0,0 +1,28 @@ +.generalWrap { + margin-top: 40px; +} +.generalPsoructList { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 24px; + margin-top: 16px; +} + +@media (max-width: 1024px) { + .generalPsoructList { + grid-template-columns: repeat(3, 1fr); + gap: 10px; + } + .generalPsoructList > *:nth-child(n+6) { + display: none; + } +} + +@media (max-width: 768px) { + .generalPsoructList { + grid-template-columns: repeat(2, 1fr); + } + .generalPsoructList > *:nth-child(n+3) { + display: none; + } +} \ No newline at end of file diff --git a/PAND-MARKET/src/pages/products/module/general-produc-list/GeneralProductList.tsx b/PAND-MARKET/src/pages/products/module/general-produc-list/GeneralProductList.tsx new file mode 100644 index 0000000..8e54ede --- /dev/null +++ b/PAND-MARKET/src/pages/products/module/general-produc-list/GeneralProductList.tsx @@ -0,0 +1,24 @@ +import { useProducts } from '../../hooks/useProducts'; +import Title from '@/components/common/Title'; +import ProductCard from '../../components/ProductCard'; +import s from './GeneralProductList.module.css'; + +const GeneralProductList = () => { + const { products, loading } = useProducts({ page: 1, size: 10 }); + + if (loading) return
loading...
; + return ( +
+ + 전체 상품 + +
+ {products.map((product) => ( + + ))} +
+
+ ); +}; + +export default GeneralProductList; From adcfdf24b83286c45da2c2103d96ddb44b263042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=98=81=EC=9A=B0?= Date: Sun, 2 Nov 2025 22:27:18 +0900 Subject: [PATCH 4/8] =?UTF-8?q?=ED=8F=B4=EB=8D=94=20=EA=B5=AC=EC=A1=B0=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PAND-MARKET/.eslintrc.json => .eslintrc.json | 0 .../.github => .github}/workflows/tsc.yml | 0 PAND-MARKET/.gitignore => .gitignore | 0 PAND-MARKET/.prettierrc => .prettierrc | 0 PAND-MARKET/README.md | 73 ------------------ .../eslint.config.js => eslint.config.js | 0 PAND-MARKET/index.html => index.html | 0 PAND-MARKET/package.json => package.json | 0 PAND-MARKET/pnpm-lock.yaml => pnpm-lock.yaml | 0 {PAND-MARKET/public => public}/vite.svg | 0 {PAND-MARKET/src => src}/App.css | 0 {PAND-MARKET/src => src}/App.tsx | 0 .../assets/images/temp/product1.png | Bin .../src => src}/assets/like_default.svg | 0 {PAND-MARKET/src => src}/assets/like_on.svg | 0 {PAND-MARKET/src => src}/assets/logo.svg | 0 {PAND-MARKET/src => src}/assets/profile.svg | 0 .../components/common/Title.module.css | 0 .../src => src}/components/common/Title.tsx | 0 .../components/layout/Layout.module.css | 0 .../src => src}/components/layout/Layout.tsx | 0 .../layout/footer/Footer.module.css | 0 .../components/layout/footer/Footer.tsx | 0 .../layout/header/Header.module.css | 0 .../components/layout/header/Header.tsx | 0 {PAND-MARKET/src => src}/main.tsx | 0 .../src => src}/pages/home/Home.module.css | 0 {PAND-MARKET/src => src}/pages/home/Home.tsx | 0 .../pages/products/Products.module.css | 0 .../src => src}/pages/products/Products.tsx | 0 .../components/ProductCard.module.css | 0 .../pages/products/components/ProductCard.tsx | 0 .../pages/products/hooks/useProducts.ts | 0 .../BestProductList.module.css | 0 .../best-product-list/BestProductList.tsx | 0 .../GeneralProductList.module.css | 0 .../GeneralProductList.tsx | 0 {PAND-MARKET/src => src}/styles/reset.css | 0 .../tsconfig.app.json => tsconfig.app.json | 0 PAND-MARKET/tsconfig.json => tsconfig.json | 0 .../tsconfig.node.json => tsconfig.node.json | 0 PAND-MARKET/vite.config.ts => vite.config.ts | 0 42 files changed, 73 deletions(-) rename PAND-MARKET/.eslintrc.json => .eslintrc.json (100%) rename {PAND-MARKET/.github => .github}/workflows/tsc.yml (100%) rename PAND-MARKET/.gitignore => .gitignore (100%) rename PAND-MARKET/.prettierrc => .prettierrc (100%) delete mode 100644 PAND-MARKET/README.md rename PAND-MARKET/eslint.config.js => eslint.config.js (100%) rename PAND-MARKET/index.html => index.html (100%) rename PAND-MARKET/package.json => package.json (100%) rename PAND-MARKET/pnpm-lock.yaml => pnpm-lock.yaml (100%) rename {PAND-MARKET/public => public}/vite.svg (100%) rename {PAND-MARKET/src => src}/App.css (100%) rename {PAND-MARKET/src => src}/App.tsx (100%) rename {PAND-MARKET/src => src}/assets/images/temp/product1.png (100%) rename {PAND-MARKET/src => src}/assets/like_default.svg (100%) rename {PAND-MARKET/src => src}/assets/like_on.svg (100%) rename {PAND-MARKET/src => src}/assets/logo.svg (100%) rename {PAND-MARKET/src => src}/assets/profile.svg (100%) rename {PAND-MARKET/src => src}/components/common/Title.module.css (100%) rename {PAND-MARKET/src => src}/components/common/Title.tsx (100%) rename {PAND-MARKET/src => src}/components/layout/Layout.module.css (100%) rename {PAND-MARKET/src => src}/components/layout/Layout.tsx (100%) rename {PAND-MARKET/src => src}/components/layout/footer/Footer.module.css (100%) rename {PAND-MARKET/src => src}/components/layout/footer/Footer.tsx (100%) rename {PAND-MARKET/src => src}/components/layout/header/Header.module.css (100%) rename {PAND-MARKET/src => src}/components/layout/header/Header.tsx (100%) rename {PAND-MARKET/src => src}/main.tsx (100%) rename {PAND-MARKET/src => src}/pages/home/Home.module.css (100%) rename {PAND-MARKET/src => src}/pages/home/Home.tsx (100%) rename {PAND-MARKET/src => src}/pages/products/Products.module.css (100%) rename {PAND-MARKET/src => src}/pages/products/Products.tsx (100%) rename {PAND-MARKET/src => src}/pages/products/components/ProductCard.module.css (100%) rename {PAND-MARKET/src => src}/pages/products/components/ProductCard.tsx (100%) rename {PAND-MARKET/src => src}/pages/products/hooks/useProducts.ts (100%) rename {PAND-MARKET/src => src}/pages/products/module/best-product-list/BestProductList.module.css (100%) rename {PAND-MARKET/src => src}/pages/products/module/best-product-list/BestProductList.tsx (100%) rename {PAND-MARKET/src => src}/pages/products/module/general-produc-list/GeneralProductList.module.css (100%) rename {PAND-MARKET/src => src}/pages/products/module/general-produc-list/GeneralProductList.tsx (100%) rename {PAND-MARKET/src => src}/styles/reset.css (100%) rename PAND-MARKET/tsconfig.app.json => tsconfig.app.json (100%) rename PAND-MARKET/tsconfig.json => tsconfig.json (100%) rename PAND-MARKET/tsconfig.node.json => tsconfig.node.json (100%) rename PAND-MARKET/vite.config.ts => vite.config.ts (100%) diff --git a/PAND-MARKET/.eslintrc.json b/.eslintrc.json similarity index 100% rename from PAND-MARKET/.eslintrc.json rename to .eslintrc.json diff --git a/PAND-MARKET/.github/workflows/tsc.yml b/.github/workflows/tsc.yml similarity index 100% rename from PAND-MARKET/.github/workflows/tsc.yml rename to .github/workflows/tsc.yml diff --git a/PAND-MARKET/.gitignore b/.gitignore similarity index 100% rename from PAND-MARKET/.gitignore rename to .gitignore diff --git a/PAND-MARKET/.prettierrc b/.prettierrc similarity index 100% rename from PAND-MARKET/.prettierrc rename to .prettierrc diff --git a/PAND-MARKET/README.md b/PAND-MARKET/README.md deleted file mode 100644 index d2e7761..0000000 --- a/PAND-MARKET/README.md +++ /dev/null @@ -1,73 +0,0 @@ -# React + TypeScript + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh - -## React Compiler - -The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). - -## Expanding the ESLint configuration - -If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: - -```js -export default defineConfig([ - globalIgnores(['dist']), - { - files: ['**/*.{ts,tsx}'], - extends: [ - // Other configs... - - // Remove tseslint.configs.recommended and replace with this - tseslint.configs.recommendedTypeChecked, - // Alternatively, use this for stricter rules - tseslint.configs.strictTypeChecked, - // Optionally, add this for stylistic rules - tseslint.configs.stylisticTypeChecked, - - // Other configs... - ], - languageOptions: { - parserOptions: { - project: ['./tsconfig.node.json', './tsconfig.app.json'], - tsconfigRootDir: import.meta.dirname, - }, - // other options... - }, - }, -]) -``` - -You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: - -```js -// eslint.config.js -import reactX from 'eslint-plugin-react-x' -import reactDom from 'eslint-plugin-react-dom' - -export default defineConfig([ - globalIgnores(['dist']), - { - files: ['**/*.{ts,tsx}'], - extends: [ - // Other configs... - // Enable lint rules for React - reactX.configs['recommended-typescript'], - // Enable lint rules for React DOM - reactDom.configs.recommended, - ], - languageOptions: { - parserOptions: { - project: ['./tsconfig.node.json', './tsconfig.app.json'], - tsconfigRootDir: import.meta.dirname, - }, - // other options... - }, - }, -]) -``` diff --git a/PAND-MARKET/eslint.config.js b/eslint.config.js similarity index 100% rename from PAND-MARKET/eslint.config.js rename to eslint.config.js diff --git a/PAND-MARKET/index.html b/index.html similarity index 100% rename from PAND-MARKET/index.html rename to index.html diff --git a/PAND-MARKET/package.json b/package.json similarity index 100% rename from PAND-MARKET/package.json rename to package.json diff --git a/PAND-MARKET/pnpm-lock.yaml b/pnpm-lock.yaml similarity index 100% rename from PAND-MARKET/pnpm-lock.yaml rename to pnpm-lock.yaml diff --git a/PAND-MARKET/public/vite.svg b/public/vite.svg similarity index 100% rename from PAND-MARKET/public/vite.svg rename to public/vite.svg diff --git a/PAND-MARKET/src/App.css b/src/App.css similarity index 100% rename from PAND-MARKET/src/App.css rename to src/App.css diff --git a/PAND-MARKET/src/App.tsx b/src/App.tsx similarity index 100% rename from PAND-MARKET/src/App.tsx rename to src/App.tsx diff --git a/PAND-MARKET/src/assets/images/temp/product1.png b/src/assets/images/temp/product1.png similarity index 100% rename from PAND-MARKET/src/assets/images/temp/product1.png rename to src/assets/images/temp/product1.png diff --git a/PAND-MARKET/src/assets/like_default.svg b/src/assets/like_default.svg similarity index 100% rename from PAND-MARKET/src/assets/like_default.svg rename to src/assets/like_default.svg diff --git a/PAND-MARKET/src/assets/like_on.svg b/src/assets/like_on.svg similarity index 100% rename from PAND-MARKET/src/assets/like_on.svg rename to src/assets/like_on.svg diff --git a/PAND-MARKET/src/assets/logo.svg b/src/assets/logo.svg similarity index 100% rename from PAND-MARKET/src/assets/logo.svg rename to src/assets/logo.svg diff --git a/PAND-MARKET/src/assets/profile.svg b/src/assets/profile.svg similarity index 100% rename from PAND-MARKET/src/assets/profile.svg rename to src/assets/profile.svg diff --git a/PAND-MARKET/src/components/common/Title.module.css b/src/components/common/Title.module.css similarity index 100% rename from PAND-MARKET/src/components/common/Title.module.css rename to src/components/common/Title.module.css diff --git a/PAND-MARKET/src/components/common/Title.tsx b/src/components/common/Title.tsx similarity index 100% rename from PAND-MARKET/src/components/common/Title.tsx rename to src/components/common/Title.tsx diff --git a/PAND-MARKET/src/components/layout/Layout.module.css b/src/components/layout/Layout.module.css similarity index 100% rename from PAND-MARKET/src/components/layout/Layout.module.css rename to src/components/layout/Layout.module.css diff --git a/PAND-MARKET/src/components/layout/Layout.tsx b/src/components/layout/Layout.tsx similarity index 100% rename from PAND-MARKET/src/components/layout/Layout.tsx rename to src/components/layout/Layout.tsx diff --git a/PAND-MARKET/src/components/layout/footer/Footer.module.css b/src/components/layout/footer/Footer.module.css similarity index 100% rename from PAND-MARKET/src/components/layout/footer/Footer.module.css rename to src/components/layout/footer/Footer.module.css diff --git a/PAND-MARKET/src/components/layout/footer/Footer.tsx b/src/components/layout/footer/Footer.tsx similarity index 100% rename from PAND-MARKET/src/components/layout/footer/Footer.tsx rename to src/components/layout/footer/Footer.tsx diff --git a/PAND-MARKET/src/components/layout/header/Header.module.css b/src/components/layout/header/Header.module.css similarity index 100% rename from PAND-MARKET/src/components/layout/header/Header.module.css rename to src/components/layout/header/Header.module.css diff --git a/PAND-MARKET/src/components/layout/header/Header.tsx b/src/components/layout/header/Header.tsx similarity index 100% rename from PAND-MARKET/src/components/layout/header/Header.tsx rename to src/components/layout/header/Header.tsx diff --git a/PAND-MARKET/src/main.tsx b/src/main.tsx similarity index 100% rename from PAND-MARKET/src/main.tsx rename to src/main.tsx diff --git a/PAND-MARKET/src/pages/home/Home.module.css b/src/pages/home/Home.module.css similarity index 100% rename from PAND-MARKET/src/pages/home/Home.module.css rename to src/pages/home/Home.module.css diff --git a/PAND-MARKET/src/pages/home/Home.tsx b/src/pages/home/Home.tsx similarity index 100% rename from PAND-MARKET/src/pages/home/Home.tsx rename to src/pages/home/Home.tsx diff --git a/PAND-MARKET/src/pages/products/Products.module.css b/src/pages/products/Products.module.css similarity index 100% rename from PAND-MARKET/src/pages/products/Products.module.css rename to src/pages/products/Products.module.css diff --git a/PAND-MARKET/src/pages/products/Products.tsx b/src/pages/products/Products.tsx similarity index 100% rename from PAND-MARKET/src/pages/products/Products.tsx rename to src/pages/products/Products.tsx diff --git a/PAND-MARKET/src/pages/products/components/ProductCard.module.css b/src/pages/products/components/ProductCard.module.css similarity index 100% rename from PAND-MARKET/src/pages/products/components/ProductCard.module.css rename to src/pages/products/components/ProductCard.module.css diff --git a/PAND-MARKET/src/pages/products/components/ProductCard.tsx b/src/pages/products/components/ProductCard.tsx similarity index 100% rename from PAND-MARKET/src/pages/products/components/ProductCard.tsx rename to src/pages/products/components/ProductCard.tsx diff --git a/PAND-MARKET/src/pages/products/hooks/useProducts.ts b/src/pages/products/hooks/useProducts.ts similarity index 100% rename from PAND-MARKET/src/pages/products/hooks/useProducts.ts rename to src/pages/products/hooks/useProducts.ts diff --git a/PAND-MARKET/src/pages/products/module/best-product-list/BestProductList.module.css b/src/pages/products/module/best-product-list/BestProductList.module.css similarity index 100% rename from PAND-MARKET/src/pages/products/module/best-product-list/BestProductList.module.css rename to src/pages/products/module/best-product-list/BestProductList.module.css diff --git a/PAND-MARKET/src/pages/products/module/best-product-list/BestProductList.tsx b/src/pages/products/module/best-product-list/BestProductList.tsx similarity index 100% rename from PAND-MARKET/src/pages/products/module/best-product-list/BestProductList.tsx rename to src/pages/products/module/best-product-list/BestProductList.tsx diff --git a/PAND-MARKET/src/pages/products/module/general-produc-list/GeneralProductList.module.css b/src/pages/products/module/general-produc-list/GeneralProductList.module.css similarity index 100% rename from PAND-MARKET/src/pages/products/module/general-produc-list/GeneralProductList.module.css rename to src/pages/products/module/general-produc-list/GeneralProductList.module.css diff --git a/PAND-MARKET/src/pages/products/module/general-produc-list/GeneralProductList.tsx b/src/pages/products/module/general-produc-list/GeneralProductList.tsx similarity index 100% rename from PAND-MARKET/src/pages/products/module/general-produc-list/GeneralProductList.tsx rename to src/pages/products/module/general-produc-list/GeneralProductList.tsx diff --git a/PAND-MARKET/src/styles/reset.css b/src/styles/reset.css similarity index 100% rename from PAND-MARKET/src/styles/reset.css rename to src/styles/reset.css diff --git a/PAND-MARKET/tsconfig.app.json b/tsconfig.app.json similarity index 100% rename from PAND-MARKET/tsconfig.app.json rename to tsconfig.app.json diff --git a/PAND-MARKET/tsconfig.json b/tsconfig.json similarity index 100% rename from PAND-MARKET/tsconfig.json rename to tsconfig.json diff --git a/PAND-MARKET/tsconfig.node.json b/tsconfig.node.json similarity index 100% rename from PAND-MARKET/tsconfig.node.json rename to tsconfig.node.json diff --git a/PAND-MARKET/vite.config.ts b/vite.config.ts similarity index 100% rename from PAND-MARKET/vite.config.ts rename to vite.config.ts From f91c2a4c2200b0f0aa85778806bc043ec070e591 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=98=81=EC=9A=B0?= Date: Sun, 2 Nov 2025 22:41:44 +0900 Subject: [PATCH 5/8] tsc.yml tnwjd --- .github/workflows/tsc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tsc.yml b/.github/workflows/tsc.yml index 0070fc9..2720a28 100644 --- a/.github/workflows/tsc.yml +++ b/.github/workflows/tsc.yml @@ -26,7 +26,7 @@ jobs: cache: 'pnpm' # ← pnpm으로 변경 - name: Install deps - run: pnpm install --frozen-lockfile # pnpm-lock.yaml 고정 + run: pnpm install --no-frozen-lockfile # pnpm-lock.yaml 고정 - name: Build run: pnpm run build From b37314803859125332b4388525c530de0274b648 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=98=81=EC=9A=B0?= Date: Sun, 2 Nov 2025 22:45:02 +0900 Subject: [PATCH 6/8] =?UTF-8?q?=EC=96=B4=EC=9D=B4=EC=97=86=EB=8A=94=20?= =?UTF-8?q?=EC=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/products/components/ProductCard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/products/components/ProductCard.tsx b/src/pages/products/components/ProductCard.tsx index 4a44389..0092fa7 100644 --- a/src/pages/products/components/ProductCard.tsx +++ b/src/pages/products/components/ProductCard.tsx @@ -1,6 +1,6 @@ import s from './ProductCard.module.css'; import likeDefault from '@assets/like_default.svg'; -import likeOn from '@assets/like_on.svg'; +// import likeOn from '@assets/like_on.svg'; import { Link } from 'react-router-dom'; interface ProductProps { id?: number; From d9573993c59a927af7b526c45a140cd7dd67aefd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=98=81=EC=9A=B0?= Date: Sun, 2 Nov 2025 22:47:26 +0900 Subject: [PATCH 7/8] =?UTF-8?q?=EC=96=B4=EC=9D=B4=EC=97=86=EB=8A=94=20?= =?UTF-8?q?=EC=88=98=EC=A0=952?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.css b/src/App.css index 6a1acd9..efdcbd3 100644 --- a/src/App.css +++ b/src/App.css @@ -1 +1 @@ -@import url('@styles/Reset'); \ No newline at end of file +@import url('@styles/Reset.css'); \ No newline at end of file From 581591e1049c02d6f037fb1eac2208ee504a6f2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=98=81=EC=9A=B0?= Date: Sun, 2 Nov 2025 22:49:11 +0900 Subject: [PATCH 8/8] =?UTF-8?q?=EC=96=B4=EC=9D=B4=EC=97=86=EB=8A=94=20?= =?UTF-8?q?=EC=88=98=EC=A0=953?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.css b/src/App.css index efdcbd3..78cbfb3 100644 --- a/src/App.css +++ b/src/App.css @@ -1 +1 @@ -@import url('@styles/Reset.css'); \ No newline at end of file +@import url('@styles/reset.css'); \ No newline at end of file