From 656eefe33f8c6360b3bcc1e711ce1171ab4177f2 Mon Sep 17 00:00:00 2001 From: chy031202 Date: Sun, 1 Jun 2025 01:27:01 +0900 Subject: [PATCH 1/3] feat: Create Week10 Mission1 --- Week10/joyeeon/Mission/.gitignore | 27 + Week10/joyeeon/Mission/README.md | 54 + Week10/joyeeon/Mission/eslint.config.js | 28 + Week10/joyeeon/Mission/index.html | 13 + Week10/joyeeon/Mission/package-lock.json | 4109 +++++++++++++++++ Week10/joyeeon/Mission/package.json | 43 + Week10/joyeeon/Mission/public/vite.svg | 1 + Week10/joyeeon/Mission/src/App.tsx | 76 + Week10/joyeeon/Mission/src/apis/api.ts | 23 + Week10/joyeeon/Mission/src/apis/auth.ts | 23 + .../joyeeon/Mission/src/apis/interceptor.ts | 92 + .../Mission/src/apis/refreshTokenApi.ts | 9 + Week10/joyeeon/Mission/src/apis/users.ts | 7 + Week10/joyeeon/Mission/src/assets/Spinner.gif | Bin 0 -> 58124 bytes Week10/joyeeon/Mission/src/assets/google.png | Bin 0 -> 201955 bytes Week10/joyeeon/Mission/src/assets/react.svg | 1 + .../Mission/src/components/ProtectedRoute.tsx | 32 + .../components/detailModals/DetatilModal.tsx | 86 + .../src/components/moviescomp/MovieItem.tsx | 50 + .../src/components/moviescomp/MovieList.tsx | 85 + .../src/components/moviescomp/Slidebar.tsx | 40 + .../src/components/navbar/NavSigns.tsx | 18 + .../Mission/src/components/navbar/Navbar.tsx | 49 + .../src/components/register/AbledButton.tsx | 20 + .../src/components/register/AuthHeader.tsx | 35 + .../src/components/register/EmailComp.tsx | 25 + .../src/components/register/Google.tsx | 19 + .../src/components/register/LoginComp.tsx | 100 + .../src/components/register/PassComp.tsx | 46 + .../src/components/register/SignupComp.tsx | 183 + .../components/searchMovies/SearchComp.tsx | 82 + .../Mission/src/components/state/IsError.tsx | 12 + .../src/components/state/IsLoading.tsx | 12 + Week10/joyeeon/Mission/src/constants/key.ts | 4 + .../Mission/src/context/AuthContext.tsx | 55 + .../Mission/src/hooks/UseCustomFetch.ts | 47 + Week10/joyeeon/Mission/src/hooks/UseForm.ts | 48 + .../joyeeon/Mission/src/hooks/UseLoading.ts | 38 + .../Mission/src/hooks/state/useDebounce.ts | 19 + .../Mission/src/hooks/state/useThrottle.ts | 15 + .../Mission/src/hooks/useLocalStorage.ts | 26 + .../Mission/src/layout/Root-layout.tsx | 13 + Week10/joyeeon/Mission/src/main.tsx | 13 + .../src/pages/GoogleLoginRedirectPage.tsx | 31 + Week10/joyeeon/Mission/src/pages/Homepage.tsx | 9 + .../joyeeon/Mission/src/pages/Loginpage.tsx | 11 + Week10/joyeeon/Mission/src/pages/Logout.tsx | 9 + .../joyeeon/Mission/src/pages/Moviepage.tsx | 60 + Week10/joyeeon/Mission/src/pages/Mypage.tsx | 44 + Week10/joyeeon/Mission/src/pages/Notfound.tsx | 7 + .../joyeeon/Mission/src/pages/SignupPage.tsx | 11 + .../Mission/src/schemas/signupSchema.ts | 22 + .../joyeeon/Mission/src/stores/modalStore.ts | 17 + .../joyeeon/Mission/src/stores/movieStore.ts | 34 + .../joyeeon/Mission/src/styles/CustomModal.ts | 25 + .../joyeeon/Mission/src/styles/components.css | 23 + Week10/joyeeon/Mission/src/styles/index.css | 12 + Week10/joyeeon/Mission/src/types/credit.ts | 6 + Week10/joyeeon/Mission/src/types/details.ts | 10 + Week10/joyeeon/Mission/src/types/movie.ts | 6 + Week10/joyeeon/Mission/src/utils/validate.ts | 57 + Week10/joyeeon/Mission/src/vite-env.d.ts | 1 + Week10/joyeeon/Mission/tsconfig.app.json | 26 + Week10/joyeeon/Mission/tsconfig.json | 7 + Week10/joyeeon/Mission/tsconfig.node.json | 24 + Week10/joyeeon/Mission/vite.config.ts | 7 + 66 files changed, 6137 insertions(+) create mode 100644 Week10/joyeeon/Mission/.gitignore create mode 100644 Week10/joyeeon/Mission/README.md create mode 100644 Week10/joyeeon/Mission/eslint.config.js create mode 100644 Week10/joyeeon/Mission/index.html create mode 100644 Week10/joyeeon/Mission/package-lock.json create mode 100644 Week10/joyeeon/Mission/package.json create mode 100644 Week10/joyeeon/Mission/public/vite.svg create mode 100644 Week10/joyeeon/Mission/src/App.tsx create mode 100644 Week10/joyeeon/Mission/src/apis/api.ts create mode 100644 Week10/joyeeon/Mission/src/apis/auth.ts create mode 100644 Week10/joyeeon/Mission/src/apis/interceptor.ts create mode 100644 Week10/joyeeon/Mission/src/apis/refreshTokenApi.ts create mode 100644 Week10/joyeeon/Mission/src/apis/users.ts create mode 100644 Week10/joyeeon/Mission/src/assets/Spinner.gif create mode 100644 Week10/joyeeon/Mission/src/assets/google.png create mode 100644 Week10/joyeeon/Mission/src/assets/react.svg create mode 100644 Week10/joyeeon/Mission/src/components/ProtectedRoute.tsx create mode 100644 Week10/joyeeon/Mission/src/components/detailModals/DetatilModal.tsx create mode 100644 Week10/joyeeon/Mission/src/components/moviescomp/MovieItem.tsx create mode 100644 Week10/joyeeon/Mission/src/components/moviescomp/MovieList.tsx create mode 100644 Week10/joyeeon/Mission/src/components/moviescomp/Slidebar.tsx create mode 100644 Week10/joyeeon/Mission/src/components/navbar/NavSigns.tsx create mode 100644 Week10/joyeeon/Mission/src/components/navbar/Navbar.tsx create mode 100644 Week10/joyeeon/Mission/src/components/register/AbledButton.tsx create mode 100644 Week10/joyeeon/Mission/src/components/register/AuthHeader.tsx create mode 100644 Week10/joyeeon/Mission/src/components/register/EmailComp.tsx create mode 100644 Week10/joyeeon/Mission/src/components/register/Google.tsx create mode 100644 Week10/joyeeon/Mission/src/components/register/LoginComp.tsx create mode 100644 Week10/joyeeon/Mission/src/components/register/PassComp.tsx create mode 100644 Week10/joyeeon/Mission/src/components/register/SignupComp.tsx create mode 100644 Week10/joyeeon/Mission/src/components/searchMovies/SearchComp.tsx create mode 100644 Week10/joyeeon/Mission/src/components/state/IsError.tsx create mode 100644 Week10/joyeeon/Mission/src/components/state/IsLoading.tsx create mode 100644 Week10/joyeeon/Mission/src/constants/key.ts create mode 100644 Week10/joyeeon/Mission/src/context/AuthContext.tsx create mode 100644 Week10/joyeeon/Mission/src/hooks/UseCustomFetch.ts create mode 100644 Week10/joyeeon/Mission/src/hooks/UseForm.ts create mode 100644 Week10/joyeeon/Mission/src/hooks/UseLoading.ts create mode 100644 Week10/joyeeon/Mission/src/hooks/state/useDebounce.ts create mode 100644 Week10/joyeeon/Mission/src/hooks/state/useThrottle.ts create mode 100644 Week10/joyeeon/Mission/src/hooks/useLocalStorage.ts create mode 100644 Week10/joyeeon/Mission/src/layout/Root-layout.tsx create mode 100644 Week10/joyeeon/Mission/src/main.tsx create mode 100644 Week10/joyeeon/Mission/src/pages/GoogleLoginRedirectPage.tsx create mode 100644 Week10/joyeeon/Mission/src/pages/Homepage.tsx create mode 100644 Week10/joyeeon/Mission/src/pages/Loginpage.tsx create mode 100644 Week10/joyeeon/Mission/src/pages/Logout.tsx create mode 100644 Week10/joyeeon/Mission/src/pages/Moviepage.tsx create mode 100644 Week10/joyeeon/Mission/src/pages/Mypage.tsx create mode 100644 Week10/joyeeon/Mission/src/pages/Notfound.tsx create mode 100644 Week10/joyeeon/Mission/src/pages/SignupPage.tsx create mode 100644 Week10/joyeeon/Mission/src/schemas/signupSchema.ts create mode 100644 Week10/joyeeon/Mission/src/stores/modalStore.ts create mode 100644 Week10/joyeeon/Mission/src/stores/movieStore.ts create mode 100644 Week10/joyeeon/Mission/src/styles/CustomModal.ts create mode 100644 Week10/joyeeon/Mission/src/styles/components.css create mode 100644 Week10/joyeeon/Mission/src/styles/index.css create mode 100644 Week10/joyeeon/Mission/src/types/credit.ts create mode 100644 Week10/joyeeon/Mission/src/types/details.ts create mode 100644 Week10/joyeeon/Mission/src/types/movie.ts create mode 100644 Week10/joyeeon/Mission/src/utils/validate.ts create mode 100644 Week10/joyeeon/Mission/src/vite-env.d.ts create mode 100644 Week10/joyeeon/Mission/tsconfig.app.json create mode 100644 Week10/joyeeon/Mission/tsconfig.json create mode 100644 Week10/joyeeon/Mission/tsconfig.node.json create mode 100644 Week10/joyeeon/Mission/vite.config.ts diff --git a/Week10/joyeeon/Mission/.gitignore b/Week10/joyeeon/Mission/.gitignore new file mode 100644 index 00000000..d823d0d1 --- /dev/null +++ b/Week10/joyeeon/Mission/.gitignore @@ -0,0 +1,27 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + + +.env \ No newline at end of file diff --git a/Week10/joyeeon/Mission/README.md b/Week10/joyeeon/Mission/README.md new file mode 100644 index 00000000..40ede56e --- /dev/null +++ b/Week10/joyeeon/Mission/README.md @@ -0,0 +1,54 @@ +# 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/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## 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 tseslint.config({ + extends: [ + // 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, + ], + languageOptions: { + // other options... + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + }, +}) +``` + +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 tseslint.config({ + plugins: { + // Add the react-x and react-dom plugins + 'react-x': reactX, + 'react-dom': reactDom, + }, + rules: { + // other rules... + // Enable its recommended typescript rules + ...reactX.configs['recommended-typescript'].rules, + ...reactDom.configs.recommended.rules, + }, +}) +``` diff --git a/Week10/joyeeon/Mission/eslint.config.js b/Week10/joyeeon/Mission/eslint.config.js new file mode 100644 index 00000000..092408a9 --- /dev/null +++ b/Week10/joyeeon/Mission/eslint.config.js @@ -0,0 +1,28 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +) diff --git a/Week10/joyeeon/Mission/index.html b/Week10/joyeeon/Mission/index.html new file mode 100644 index 00000000..e4b78eae --- /dev/null +++ b/Week10/joyeeon/Mission/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/Week10/joyeeon/Mission/package-lock.json b/Week10/joyeeon/Mission/package-lock.json new file mode 100644 index 00000000..50d6fcc8 --- /dev/null +++ b/Week10/joyeeon/Mission/package-lock.json @@ -0,0 +1,4109 @@ +{ + "name": "mission1", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "mission1", + "version": "0.0.0", + "dependencies": { + "@hookform/resolvers": "^5.0.1", + "@tailwindcss/vite": "^4.1.2", + "@types/react-modal": "^3.16.3", + "axios": "^1.8.4", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-hook-form": "^7.55.0", + "react-icons": "^5.5.0", + "react-modal": "^3.16.3", + "react-router-dom": "^7.5.0", + "zod": "^3.24.2", + "zustand": "^5.0.5" + }, + "devDependencies": { + "@eslint/js": "^9.21.0", + "@tailwindcss/line-clamp": "^0.4.4", + "@types/react": "^19.0.10", + "@types/react-dom": "^19.0.4", + "@vitejs/plugin-react-swc": "^3.8.0", + "autoprefixer": "^10.4.21", + "eslint": "^9.21.0", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^15.15.0", + "postcss": "^8.5.3", + "tailwindcss": "^4.1.3", + "typescript": "~5.7.2", + "typescript-eslint": "^8.24.1", + "vite": "^6.2.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", + "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", + "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", + "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", + "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", + "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", + "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", + "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", + "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", + "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", + "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", + "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", + "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", + "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", + "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", + "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", + "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", + "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", + "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", + "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", + "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", + "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", + "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", + "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", + "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", + "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", + "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.1.tgz", + "integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", + "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", + "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.13.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", + "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@hookform/resolvers": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.0.1.tgz", + "integrity": "sha512-u/+Jp83luQNx9AdyW2fIPGY6Y7NG68eN2ZW8FOJYL+M0i4s49+refdJdOp/A9n9HFQtQs3HIDHQvX3ZET2o7YA==", + "license": "MIT", + "dependencies": { + "@standard-schema/utils": "^0.3.0" + }, + "peerDependencies": { + "react-hook-form": "^7.55.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.39.0.tgz", + "integrity": "sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.39.0.tgz", + "integrity": "sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.39.0.tgz", + "integrity": "sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.39.0.tgz", + "integrity": "sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.39.0.tgz", + "integrity": "sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.39.0.tgz", + "integrity": "sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.39.0.tgz", + "integrity": "sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.39.0.tgz", + "integrity": "sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.39.0.tgz", + "integrity": "sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.39.0.tgz", + "integrity": "sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.39.0.tgz", + "integrity": "sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.39.0.tgz", + "integrity": "sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.39.0.tgz", + "integrity": "sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.39.0.tgz", + "integrity": "sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.39.0.tgz", + "integrity": "sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.39.0.tgz", + "integrity": "sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.39.0.tgz", + "integrity": "sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.39.0.tgz", + "integrity": "sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.39.0.tgz", + "integrity": "sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.39.0.tgz", + "integrity": "sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", + "license": "MIT" + }, + "node_modules/@swc/core": { + "version": "1.11.16", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.16.tgz", + "integrity": "sha512-wgjrJqVUss8Lxqilg0vkiE0tkEKU3mZkoybQM1Ehy+PKWwwB6lFAwKi20cAEFlSSWo8jFR8hRo19ZELAoLDowg==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.21" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.11.16", + "@swc/core-darwin-x64": "1.11.16", + "@swc/core-linux-arm-gnueabihf": "1.11.16", + "@swc/core-linux-arm64-gnu": "1.11.16", + "@swc/core-linux-arm64-musl": "1.11.16", + "@swc/core-linux-x64-gnu": "1.11.16", + "@swc/core-linux-x64-musl": "1.11.16", + "@swc/core-win32-arm64-msvc": "1.11.16", + "@swc/core-win32-ia32-msvc": "1.11.16", + "@swc/core-win32-x64-msvc": "1.11.16" + }, + "peerDependencies": { + "@swc/helpers": "*" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.11.16", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.16.tgz", + "integrity": "sha512-l6uWMU+MUdfLHCl3dJgtVEdsUHPskoA4BSu0L1hh9SGBwPZ8xeOz8iLIqZM27lTuXxL4KsYH6GQR/OdQ/vhLtg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.11.16", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.16.tgz", + "integrity": "sha512-TH0IW8Ao1WZ4ARFHIh29dAQHYBEl4YnP74n++rjppmlCjY+8v3s5nXMA7IqxO3b5LVHyggWtU4+46DXTyMJM7g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.11.16", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.16.tgz", + "integrity": "sha512-2IxD9t09oNZrbv37p4cJ9cTHMUAK6qNiShi9s2FJ9LcqSnZSN4iS4hvaaX6KZuG54d58vWnMU7yycjkdOTQcMg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.11.16", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.16.tgz", + "integrity": "sha512-AYkN23DOiPh1bf3XBf/xzZQDKSsgZTxlbyTyUIhprLJpAAAT0ZCGAUcS5mHqydk0nWQ13ABUymodvHoroutNzw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.11.16", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.16.tgz", + "integrity": "sha512-n/nWXDRCIhM51dDGELfBcTMNnCiFatE7LDvsbYxb7DJt1HGjaCNvHHCKURb/apJTh/YNtWfgFap9dbsTgw8yPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.11.16", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.16.tgz", + "integrity": "sha512-xr182YQrF47n7Awxj+/ruI21bYw+xO/B26KFVnb+i3ezF9NOhqoqTX+33RL1ZLA/uFTq8ksPZO/y+ZVS/odtQA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.11.16", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.16.tgz", + "integrity": "sha512-k2JBfiwWfXCIKrBRjFO9/vEdLSYq0QLJ+iNSLdfrejZ/aENNkbEg8O7O2GKUSb30RBacn6k8HMfJrcPLFiEyCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.11.16", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.16.tgz", + "integrity": "sha512-taOb5U+abyEhQgex+hr6cI48BoqSvSdfmdirWcxprIEUBHCxa1dSriVwnJRAJOFI9T+5BEz88by6rgbB9MjbHA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.11.16", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.16.tgz", + "integrity": "sha512-b7yYggM9LBDiMY+XUt5kYWvs5sn0U3PXSOGvF3CbLufD/N/YQiDcYON2N3lrWHYL8aYnwbuZl45ojmQHSQPcdA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.11.16", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.16.tgz", + "integrity": "sha512-/ibq/YDc3B5AROkpOKPGxVkSyCKOg+ml8k11RxrW7FAPy6a9y5y9KPcWIqV74Ahq4RuaMNslTQqHWAGSm0xJsQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/types": { + "version": "0.1.21", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.21.tgz", + "integrity": "sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@tailwindcss/line-clamp": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/line-clamp/-/line-clamp-0.4.4.tgz", + "integrity": "sha512-5U6SY5z8N42VtrCrKlsTAA35gy2VSyYtHWCsg1H87NU1SXnEfekTVlrga9fzUDrrHcGi2Lb5KenUWb4lRQT5/g==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.2.tgz", + "integrity": "sha512-ZwFnxH+1z8Ehh8bNTMX3YFrYdzAv7JLY5X5X7XSFY+G9QGJVce/P9xb2mh+j5hKt8NceuHmdtllJvAHWKtsNrQ==", + "license": "MIT", + "dependencies": { + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "lightningcss": "1.29.2", + "tailwindcss": "4.1.2" + } + }, + "node_modules/@tailwindcss/node/node_modules/tailwindcss": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.2.tgz", + "integrity": "sha512-VCsK+fitIbQF7JlxXaibFhxrPq4E2hDcG8apzHUdWFMCQWD8uLdlHg4iSkZ53cgLCCcZ+FZK7vG8VjvLcnBgKw==", + "license": "MIT" + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.2.tgz", + "integrity": "sha512-Zwz//1QKo6+KqnCKMT7lA4bspGfwEgcPAHlSthmahtgrpKDfwRGk8PKQrW8Zg/ofCDIlg6EtjSTKSxxSufC+CQ==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.2", + "@tailwindcss/oxide-darwin-arm64": "4.1.2", + "@tailwindcss/oxide-darwin-x64": "4.1.2", + "@tailwindcss/oxide-freebsd-x64": "4.1.2", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.2", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.2", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.2", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.2", + "@tailwindcss/oxide-linux-x64-musl": "4.1.2", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.2", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.2" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.2.tgz", + "integrity": "sha512-IxkXbntHX8lwGmwURUj4xTr6nezHhLYqeiJeqa179eihGv99pRlKV1W69WByPJDQgSf4qfmwx904H6MkQqTA8w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.2.tgz", + "integrity": "sha512-ZRtiHSnFYHb4jHKIdzxlFm6EDfijTCOT4qwUhJ3GWxfDoW2yT3z/y8xg0nE7e72unsmSj6dtfZ9Y5r75FIrlpA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.2.tgz", + "integrity": "sha512-BiKUNZf1A0pBNzndBvnPnBxonCY49mgbOsPfILhcCE5RM7pQlRoOgN7QnwNhY284bDbfQSEOWnFR0zbPo6IDTw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.2.tgz", + "integrity": "sha512-Z30VcpUfRGkiddj4l5NRCpzbSGjhmmklVoqkVQdkEC0MOelpY+fJrVhzSaXHmWrmSvnX8yiaEqAbdDScjVujYQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.2.tgz", + "integrity": "sha512-w3wsK1ChOLeQ3gFOiwabtWU5e8fY3P1Ss8jR3IFIn/V0va3ir//hZ8AwURveS4oK1Pu6b8i+yxesT4qWnLVUow==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.2.tgz", + "integrity": "sha512-oY/u+xJHpndTj7B5XwtmXGk8mQ1KALMfhjWMMpE8pdVAznjJsF5KkCceJ4Fmn5lS1nHMCwZum5M3/KzdmwDMdw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.2.tgz", + "integrity": "sha512-k7G6vcRK/D+JOWqnKzKN/yQq1q4dCkI49fMoLcfs2pVcaUAXEqCP9NmA8Jv+XahBv5DtDjSAY3HJbjosEdKczg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.2.tgz", + "integrity": "sha512-fLL+c678TkYKgkDLLNxSjPPK/SzTec7q/E5pTwvpTqrth867dftV4ezRyhPM5PaiCqX651Y8Yk0wRQMcWUGnmQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.2.tgz", + "integrity": "sha512-0tU1Vjd1WucZ2ooq6y4nI9xyTSaH2g338bhrqk+2yzkMHskBm+pMsOCfY7nEIvALkA1PKPOycR4YVdlV7Czo+A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.2.tgz", + "integrity": "sha512-r8QaMo3QKiHqUcn+vXYCypCEha+R0sfYxmaZSgZshx9NfkY+CHz91aS2xwNV/E4dmUDkTPUag7sSdiCHPzFVTg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.2.tgz", + "integrity": "sha512-lYCdkPxh9JRHXoBsPE8Pu/mppUsC2xihYArNAESub41PKhHTnvn6++5RpmFM+GLSt3ewyS8fwCVvht7ulWm6cw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.2.tgz", + "integrity": "sha512-3r/ZdMW0gxY8uOx1To0lpYa4coq4CzINcCX4laM1rS340Kcn0ac4A/MMFfHN8qba51aorZMYwMcOxYk4wJ9FYg==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.2", + "@tailwindcss/oxide": "4.1.2", + "tailwindcss": "4.1.2" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6" + } + }, + "node_modules/@tailwindcss/vite/node_modules/tailwindcss": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.2.tgz", + "integrity": "sha512-VCsK+fitIbQF7JlxXaibFhxrPq4E2hDcG8apzHUdWFMCQWD8uLdlHg4iSkZ53cgLCCcZ+FZK7vG8VjvLcnBgKw==", + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.0.tgz", + "integrity": "sha512-UaicktuQI+9UKyA4njtDOGBD/67t8YEBt2xdfqu8+gP9hqPUPsiXlNPcpS2gVdjmis5GKPG3fCxbQLVgxsQZ8w==", + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.1.tgz", + "integrity": "sha512-jFf/woGTVTjUJsl2O7hcopJ1r0upqoq/vIOoCj0yLh3RIXxWcljlpuZ+vEBRXsymD1jhfeJrlyTy/S1UW+4y1w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "node_modules/@types/react-modal": { + "version": "3.16.3", + "resolved": "https://registry.npmjs.org/@types/react-modal/-/react-modal-3.16.3.tgz", + "integrity": "sha512-xXuGavyEGaFQDgBv4UVm8/ZsG+qxeQ7f77yNrW3n+1J6XAstUy5rYHeIHPh1KzsGc6IkCIdu6lQ2xWzu1jBTLg==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.0.tgz", + "integrity": "sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/type-utils": "8.29.0", + "@typescript-eslint/utils": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.0.tgz", + "integrity": "sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/typescript-estree": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz", + "integrity": "sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.29.0.tgz", + "integrity": "sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.29.0", + "@typescript-eslint/utils": "8.29.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz", + "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz", + "integrity": "sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.0.tgz", + "integrity": "sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/typescript-estree": "8.29.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz", + "integrity": "sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.29.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.8.1.tgz", + "integrity": "sha512-aEUPCckHDcFyxpwFm0AIkbtv6PpUp3xTb9wYGFjtABynXjCYKkWoxX0AOK9NT9XCrdk6mBBUOeHQS+RKdcNO1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@swc/core": "^1.11.11" + }, + "peerDependencies": { + "vite": "^4 || ^5 || ^6" + } + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axios": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001710", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001710.tgz", + "integrity": "sha512-B5C0I0UmaGqHgo5FuqJ7hBd4L57A4dDD+Xi+XX1nXOoxGeDdY4Ko38qJYOyqznBVJEqON5p8P1x5zRR3+rsnxA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.132", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.132.tgz", + "integrity": "sha512-QgX9EBvWGmvSRa74zqfnG7+Eno0Ak0vftBll0Pt2/z5b3bEGYL6OUXLgKPtvx73dn3dvwrlyVkjPKRRlhLYTEg==", + "dev": true, + "license": "ISC" + }, + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", + "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.2", + "@esbuild/android-arm": "0.25.2", + "@esbuild/android-arm64": "0.25.2", + "@esbuild/android-x64": "0.25.2", + "@esbuild/darwin-arm64": "0.25.2", + "@esbuild/darwin-x64": "0.25.2", + "@esbuild/freebsd-arm64": "0.25.2", + "@esbuild/freebsd-x64": "0.25.2", + "@esbuild/linux-arm": "0.25.2", + "@esbuild/linux-arm64": "0.25.2", + "@esbuild/linux-ia32": "0.25.2", + "@esbuild/linux-loong64": "0.25.2", + "@esbuild/linux-mips64el": "0.25.2", + "@esbuild/linux-ppc64": "0.25.2", + "@esbuild/linux-riscv64": "0.25.2", + "@esbuild/linux-s390x": "0.25.2", + "@esbuild/linux-x64": "0.25.2", + "@esbuild/netbsd-arm64": "0.25.2", + "@esbuild/netbsd-x64": "0.25.2", + "@esbuild/openbsd-arm64": "0.25.2", + "@esbuild/openbsd-x64": "0.25.2", + "@esbuild/sunos-x64": "0.25.2", + "@esbuild/win32-arm64": "0.25.2", + "@esbuild/win32-ia32": "0.25.2", + "@esbuild/win32-x64": "0.25.2" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", + "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.2.0", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.23.0", + "@eslint/plugin-kit": "^0.2.7", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.19.tgz", + "integrity": "sha512-eyy8pcr/YxSYjBoqIFSrlbn9i/xvxUFa8CjzAYo9cFjgGXqq1hyjihcpZvxRLalpaWmueWR81xn7vuKmAFijDQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==", + "license": "BSD-3-Clause" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz", + "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.29.2", + "lightningcss-darwin-x64": "1.29.2", + "lightningcss-freebsd-x64": "1.29.2", + "lightningcss-linux-arm-gnueabihf": "1.29.2", + "lightningcss-linux-arm64-gnu": "1.29.2", + "lightningcss-linux-arm64-musl": "1.29.2", + "lightningcss-linux-x64-gnu": "1.29.2", + "lightningcss-linux-x64-musl": "1.29.2", + "lightningcss-win32-arm64-msvc": "1.29.2", + "lightningcss-win32-x64-msvc": "1.29.2" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz", + "integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz", + "integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz", + "integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz", + "integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz", + "integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz", + "integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz", + "integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz", + "integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz", + "integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz", + "integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/react-hook-form": { + "version": "7.55.0", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.55.0.tgz", + "integrity": "sha512-XRnjsH3GVMQz1moZTW53MxfoWN7aDpUg/GpVNc4A3eXRVNdGXfbzJ4vM4aLQ8g6XCUh1nIbx70aaNCl7kxnjog==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, + "node_modules/react-icons": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz", + "integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==", + "license": "MIT", + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "license": "MIT" + }, + "node_modules/react-modal": { + "version": "3.16.3", + "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.3.tgz", + "integrity": "sha512-yCYRJB5YkeQDQlTt17WGAgFJ7jr2QYcWa1SHqZ3PluDmnKJ/7+tVU+E6uKyZ0nODaeEj+xCpK4LcSnKXLMC0Nw==", + "license": "MIT", + "dependencies": { + "exenv": "^1.2.0", + "prop-types": "^15.7.2", + "react-lifecycles-compat": "^3.0.0", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 || ^19", + "react-dom": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 || ^19" + } + }, + "node_modules/react-router": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.1.tgz", + "integrity": "sha512-hPJXXxHJZEsPFNVbtATH7+MMX43UDeOauz+EAU4cgqTn7ojdI9qQORqS8Z0qmDlL1TclO/6jLRYUEtbWidtdHQ==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.1.tgz", + "integrity": "sha512-vxU7ei//UfPYQ3iZvHuO1D/5fX3/JOqhNTbRR+WjSBWxf9bIvpWK+ftjmdfJHzPOuMQKe2fiEdG+dZX6E8uUpA==", + "license": "MIT", + "dependencies": { + "react-router": "7.6.1" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.39.0.tgz", + "integrity": "sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.39.0", + "@rollup/rollup-android-arm64": "4.39.0", + "@rollup/rollup-darwin-arm64": "4.39.0", + "@rollup/rollup-darwin-x64": "4.39.0", + "@rollup/rollup-freebsd-arm64": "4.39.0", + "@rollup/rollup-freebsd-x64": "4.39.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.39.0", + "@rollup/rollup-linux-arm-musleabihf": "4.39.0", + "@rollup/rollup-linux-arm64-gnu": "4.39.0", + "@rollup/rollup-linux-arm64-musl": "4.39.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.39.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.39.0", + "@rollup/rollup-linux-riscv64-gnu": "4.39.0", + "@rollup/rollup-linux-riscv64-musl": "4.39.0", + "@rollup/rollup-linux-s390x-gnu": "4.39.0", + "@rollup/rollup-linux-x64-gnu": "4.39.0", + "@rollup/rollup-linux-x64-musl": "4.39.0", + "@rollup/rollup-win32-arm64-msvc": "4.39.0", + "@rollup/rollup-win32-ia32-msvc": "4.39.0", + "@rollup/rollup-win32-x64-msvc": "4.39.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.3.tgz", + "integrity": "sha512-2Q+rw9vy1WFXu5cIxlvsabCwhU2qUwodGq03ODhLJ0jW4ek5BUtoCsnLB0qG+m8AHgEsSJcJGDSDe06FXlP74g==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", + "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.29.0.tgz", + "integrity": "sha512-ep9rVd9B4kQsZ7ZnWCVxUE/xDLUUUsRzE0poAeNu+4CkFErLfuvPt/qtm2EpnSyfvsR0S6QzDFSrPCFBwf64fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.29.0", + "@typescript-eslint/parser": "8.29.0", + "@typescript-eslint/utils": "8.29.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", + "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.24.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", + "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zustand": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.5.tgz", + "integrity": "sha512-mILtRfKW9xM47hqxGIxCv12gXusoY/xTSHBYApXozR0HmQv299whhBeeAcRy+KrPPybzosvJBCOmVjq6x12fCg==", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } + } + } +} diff --git a/Week10/joyeeon/Mission/package.json b/Week10/joyeeon/Mission/package.json new file mode 100644 index 00000000..6516fa1e --- /dev/null +++ b/Week10/joyeeon/Mission/package.json @@ -0,0 +1,43 @@ +{ + "name": "mission1", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@hookform/resolvers": "^5.0.1", + "@tailwindcss/vite": "^4.1.2", + "@types/react-modal": "^3.16.3", + "axios": "^1.8.4", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-hook-form": "^7.55.0", + "react-icons": "^5.5.0", + "react-modal": "^3.16.3", + "react-router-dom": "^7.5.0", + "zod": "^3.24.2", + "zustand": "^5.0.5" + }, + "devDependencies": { + "@eslint/js": "^9.21.0", + "@tailwindcss/line-clamp": "^0.4.4", + "@types/react": "^19.0.10", + "@types/react-dom": "^19.0.4", + "@vitejs/plugin-react-swc": "^3.8.0", + "autoprefixer": "^10.4.21", + "eslint": "^9.21.0", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^15.15.0", + "postcss": "^8.5.3", + "tailwindcss": "^4.1.3", + "typescript": "~5.7.2", + "typescript-eslint": "^8.24.1", + "vite": "^6.2.0" + } +} diff --git a/Week10/joyeeon/Mission/public/vite.svg b/Week10/joyeeon/Mission/public/vite.svg new file mode 100644 index 00000000..e7b8dfb1 --- /dev/null +++ b/Week10/joyeeon/Mission/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/App.tsx b/Week10/joyeeon/Mission/src/App.tsx new file mode 100644 index 00000000..1cef66ef --- /dev/null +++ b/Week10/joyeeon/Mission/src/App.tsx @@ -0,0 +1,76 @@ +import RootLayout from './layout/Root-layout' + +import { createBrowserRouter, RouterProvider } from 'react-router-dom' +import Notfound from './pages/Notfound' +import Homepage from './pages/Homepage' +import MoviePage from './pages/Moviepage' +import Loginpage from './pages/Loginpage' +import Signuppage from './pages/SignupPage' +import ProtectedRoute from './components/ProtectedRoute' +import Logoutpage from './pages/Logout' +import Mypage from './pages/Mypage' + +import { setupInterceptors } from './apis/interceptor' +import { useEffect } from 'react' +import GoogleLoginRedirectPage from './pages/GoogleLoginRedirectPage' + + +const router = createBrowserRouter([ + { + path: '/', + element: , + errorElement: , + children:[ + { + index:true, + element: + + }, + { + path: '/movies', + children : [ + { + path:':category', + element: + }, + ] + }, + { + path: '/login', + element: + }, + + { + path: '/signup', + element: + }, + + { + path:'/signout', + element: + + + }, + { + path:'/v1/auth/google/callback', + element: + }, + + { + path:'/mypage', + element: + } + ] + }, +]) + +function App() { + useEffect(() =>{ + setupInterceptors(); + }, []); + return ( + + ) +} + +export default App diff --git a/Week10/joyeeon/Mission/src/apis/api.ts b/Week10/joyeeon/Mission/src/apis/api.ts new file mode 100644 index 00000000..847fa5b7 --- /dev/null +++ b/Week10/joyeeon/Mission/src/apis/api.ts @@ -0,0 +1,23 @@ +import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios'; + +const BASE_URL = import.meta.env.VITE_BASE_URL + +const api: AxiosInstance = axios.create({ + baseURL: BASE_URL, + withCredentials: true, +}); + +async function getNewAccessToken(): Promise { + try { + const response: AxiosResponse<{ accessToken: string }> = await api.post( + '/auth/refresh', + {}, + { withCredentials: true } + ); + return response.data.accessToken; + } catch (error) { + throw error; + } +} + +export { api, getNewAccessToken }; diff --git a/Week10/joyeeon/Mission/src/apis/auth.ts b/Week10/joyeeon/Mission/src/apis/auth.ts new file mode 100644 index 00000000..1bba4ca3 --- /dev/null +++ b/Week10/joyeeon/Mission/src/apis/auth.ts @@ -0,0 +1,23 @@ +import {api} from './api'; +const BASE_URL = "/auth"; + +//로그인 +export const loginApi = async (email: string, password: string) => { + const response = await api.post(`${BASE_URL}/signin`, { + email, + password, + }); + return response.data; // 호출한 쪽에서는 .accessToken, .refreshToken 꺼내쓰면 돼 +}; + +// 회원가입 API +export const signupApi = async (userData: { + email: string; + password: string; + name: string; + bio?: string; + avatar?: string; +}) => { + const response = await api.post(`${BASE_URL}/signup`, userData); + return response.data; +}; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/apis/interceptor.ts b/Week10/joyeeon/Mission/src/apis/interceptor.ts new file mode 100644 index 00000000..d5999d81 --- /dev/null +++ b/Week10/joyeeon/Mission/src/apis/interceptor.ts @@ -0,0 +1,92 @@ +import { api } from "./api"; +import { refreshTokenApi } from "./refreshTokenApi"; +import { AxiosError, AxiosRequestConfig } from "axios"; + +interface CustomAxiosRequestConfig extends AxiosRequestConfig { + _retry?: boolean; +} + +let isRefreshing = false; +let failedQueue: { + resolve: (token: string) => void; + reject: (error: AxiosError) => void; +}[] = []; + +const processQueue = (error: AxiosError | null, token: string | null = null) => { + failedQueue.forEach(prom => { + if (error) { + prom.reject(error); + } else if (token) { + prom.resolve(token); + } + }); + failedQueue = []; +}; + + +export const setupInterceptors = () => { + api.interceptors.response.use( + response => response, + async (error: AxiosError) => { + const originalRequest = error.config as CustomAxiosRequestConfig; + + if (error.response?.status === 401 && !originalRequest._retry) { + originalRequest._retry = true; + + if (isRefreshing) { + return new Promise((resolve, reject) => { + failedQueue.push({ resolve, reject }); + }) + .then((token: string) => { + if (originalRequest.headers) { + originalRequest.headers['Authorization'] = `Bearer ${token}`; + } + return api(originalRequest); + }) + .catch(err => Promise.reject(err)); + } + + isRefreshing = true; + + try { + const refreshToken = localStorage.getItem('REFRESH_TOKEN'); + if (!refreshToken) throw new Error('No refresh token found'); + + console.log('[interceptor] accessToken 만료 감지, 새 토큰 요청 시작...'); + + const data = await refreshTokenApi(refreshToken); + const newAccessToken = data.data.accessToken; + + console.log('새 AccessToken 발급 완료:', newAccessToken); + + + // 새 accessToken 저장 + localStorage.setItem('ACCESS_TOKEN', newAccessToken); + + // 기본 헤더 업데이트 + api.defaults.headers.common['Authorization'] = `Bearer ${newAccessToken}`; + + processQueue(null, newAccessToken); + + if (originalRequest.headers) { + originalRequest.headers['Authorization'] = `Bearer ${newAccessToken}`; + } + + return api(originalRequest); + } catch (err) { + console.error(' 리프레시 토큰으로 새 AccessToken 발급 실패:', err); + processQueue(err as AxiosError, null); + // 토큰 재발급 실패 -> 로그아웃 처리 + localStorage.removeItem('ACCESS_TOKEN'); + localStorage.removeItem('REFRESH_TOKEN'); + window.location.href = '/login'; // 로그인 페이지로 이동 + return Promise.reject(err); + } finally { + isRefreshing = false; + } + } + + return Promise.reject(error); + } + ); +}; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/apis/refreshTokenApi.ts b/Week10/joyeeon/Mission/src/apis/refreshTokenApi.ts new file mode 100644 index 00000000..af4cde30 --- /dev/null +++ b/Week10/joyeeon/Mission/src/apis/refreshTokenApi.ts @@ -0,0 +1,9 @@ +import { api } from "./api"; + +export const refreshTokenApi = async (refreshToken: string) => { + const response = await api.post('/auth/refresh', + { refresh: refreshToken }); + console.log("토큰 재발급",response.data); + return response.data; // { accessToken: "새로운토큰" } + +}; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/apis/users.ts b/Week10/joyeeon/Mission/src/apis/users.ts new file mode 100644 index 00000000..d88b0a62 --- /dev/null +++ b/Week10/joyeeon/Mission/src/apis/users.ts @@ -0,0 +1,7 @@ +import {api} from './api'; + + +export const getMyInfo = async () => { + const response = await api.get('/users/me'); + return response.data; + }; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/assets/Spinner.gif b/Week10/joyeeon/Mission/src/assets/Spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..f1294be751d2664a37fbe601ac01585a75cdcd22 GIT binary patch literal 58124 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

jlIdgJ>D82hB|dOKC#`u=t0zUhq^ykl&_GJY zwvI>Y;Pt_UH4ue)#UWr?(m4JMiGC)40}LW|Ai&S(aNh~AI{-W)z8`@Tf5Ic`oLcXi`tWt}X&p1O(F1%B!9?Gq zk$@#Apcex84?j@ghf}0)xw1bXMLi~XQHKLt!8z>N)KjKGz>g4V=v*bX3_Qxc;@lv!>)4bX{Rul zC|lEB1zwE0X}F?Xdv;8e+*aKCL7rgrT(Z}^L{5TlGB@?p0A(vYWk=5QG9We$Yk)!Y z)j94MgU&vFb_;NhhcD3P zXrqNzMgirOzCByRbsP|d^zq|fT*L1AaABh-h-pm;pV})9$cas|uO|`VD^xx)tQ*%t zU8-AL>tuA%PKD8lG_GxLg~qX#!{l>sJ2&G+Y^ww4Vh@%RB|Y+?Mx<9sL_z$R zG-b>kQX2Kp57O82&DF@oV-QS;5O{Nx9>I* zZqkLAF&D8Fvy9+1sOtAfTxG2UZ;_N!msOyq}(_c{7wD;PxAO#_f-xl=cU`mzeyr2nXp%@wMLgNQ2^0LKpAIH2UCI zEpL>%c_akF_wdH%Vtohzg|Q?zUAyfEB3ESdmlhgG(*<9Iq^khI6=}gclhLOF9UOAT zm07`OHG|nJG}Rw`?1?cB5iZtB)fZTyLxyh7-r~R$FL|XIChhYn?l&Rx3j=|o{=W_2 z5qizdAQAH1v(Yy-7@|R1&@>u+J=gYUy4t{#9Ks-0+g!&uOCn3vyuyQ1+q$(nOU1Tt z@Jx~;t{R!_B`m0s;`w&aBH0%VE0T6yw5*^=QJF3m2u`q@*BKNg-=T+kqK ze#5-n`(b%`d7{Y+3*du*e4fP|;d<-E+ojzAowafy=6Qk0hoMFNMsV%(q5>-2rM&Z} z_N?_ggmv>uv%637KbKI`<=5+fTZ62~X>eIqop97$LSS2C7Udvp6H#Dd#UPa4z%}ej zJyX;3Rk?OfSAhoTJg=bRmjlKk^xlF-Q4_dbLoLZIy$>+@ z7te=UnN*jGUlIrNty`R~O~kaba%HZ+jxHY&>O9+lDltEwNGkG5s$WSMeqj#f^a^I@ z<KJ8W98zsxU^+w%<@5x)TlgbWoSvc(nxB=tn=8Ib*ONc>=Q+nF%6duxQ zt*XMzJTTYsy9lK*Pr4wN@q4MH7siB6_+a|)|J7h57Bd+@~ literal 0 HcmV?d00001 diff --git a/Week10/joyeeon/Mission/src/assets/google.png b/Week10/joyeeon/Mission/src/assets/google.png new file mode 100644 index 0000000000000000000000000000000000000000..277f892b81cf870c37d2972e7d7ad92c3db0605a GIT binary patch literal 201955 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 literal 0 HcmV?d00001 diff --git a/Week10/joyeeon/Mission/src/assets/react.svg b/Week10/joyeeon/Mission/src/assets/react.svg new file mode 100644 index 00000000..6c87de9b --- /dev/null +++ b/Week10/joyeeon/Mission/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/components/ProtectedRoute.tsx b/Week10/joyeeon/Mission/src/components/ProtectedRoute.tsx new file mode 100644 index 00000000..93cd3d8c --- /dev/null +++ b/Week10/joyeeon/Mission/src/components/ProtectedRoute.tsx @@ -0,0 +1,32 @@ +import { Navigate } from "react-router-dom"; +import { useAuth } from "../context/AuthContext"; +import { useEffect, useState } from "react"; + +interface ProtectedRouteProps { + children: React.ReactNode; +} + +const ProtectedRoute = ({ children }: ProtectedRouteProps) => { + const { accessToken } = useAuth(); + const [loading, setLoading] = useState(true); + + useEffect(() => { + // accessToken이 바뀔 때마다 로딩 종료 + setLoading(false); + }, [accessToken]); + + console.log("[ProtectedRoute] accessToken 상태:", accessToken); + + if (loading) { + return

Loading...
; + } + if (!accessToken) { + console.log("[ProtectedRoute] 토큰 없음 -> 로그인 페이지로 리다이렉트"); + return ; + } + + console.log("[ProtectedRoute] 토큰 있음 -> 페이지 접근 허용"); + return <>{children}; +}; + +export default ProtectedRoute; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/components/detailModals/DetatilModal.tsx b/Week10/joyeeon/Mission/src/components/detailModals/DetatilModal.tsx new file mode 100644 index 00000000..f1d9c16b --- /dev/null +++ b/Week10/joyeeon/Mission/src/components/detailModals/DetatilModal.tsx @@ -0,0 +1,86 @@ +import Modal from 'react-modal'; +import type { Detail } from '../../types/details'; +import { customModalStyles } from "../../styles/CustomModal"; +Modal.setAppElement('#root'); +import { useModalStore } from '../../stores/modalStore'; +import useCustomFetch from '../../hooks/UseCustomFetch'; +import { ImCross } from "react-icons/im"; + +const DetailModal = () => { + const { isOpen, closeModal, movieId } = useModalStore(); + const endpoint = movieId ? `movie/${movieId}?language=ko-KR` : null; + const { data: detail, isLoading, error } = useCustomFetch(endpoint); + + + const imgURL: string = 'https://image.tmdb.org/t/p/w1280' + console.log(detail) + + + return ( + closeModal()} + contentLabel='detail modal' + style={customModalStyles} + > + +
+ + background + +
+ {/* 포스터 */} + poster + + {/* 텍스트 영역 */} +
+

{detail?.title}

+

{detail?.title}

+ +
+ {/* {detail.vote_average.toFixed(1)} */} + | + {detail?.release_date} +
+ +

줄거리

+

+ {detail?.overview} +

+ + {/* 버튼 */} +
+ + IMDb에서 검색 + + +
+
+
+
+ + +
+ ) +} + +export default DetailModal; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/components/moviescomp/MovieItem.tsx b/Week10/joyeeon/Mission/src/components/moviescomp/MovieItem.tsx new file mode 100644 index 00000000..75ff7a4d --- /dev/null +++ b/Week10/joyeeon/Mission/src/components/moviescomp/MovieItem.tsx @@ -0,0 +1,50 @@ +import type { Movie } from "../../types/movie"; +import { useModalStore } from "../../stores/modalStore"; +import DetailModal from "../detailModals/DetatilModal"; +import React from "react"; + +interface MovieItemProps { + movie: Movie; +} + +const MovieItem = ({ movie }: MovieItemProps) => { + const imgURL: string = 'https://image.tmdb.org/t/p/w500' + const openModal = useModalStore((state) => state.openModal); // 모달 열기 + + const handleClick = () => { + openModal(movie.id); + }; + + return ( + <> +
  • + {/*

    {movie.title}

    */} + 포스터 + + +
    +

    {movie.title}

    +
    {movie.overview}
    +
    +
  • + + + + + ) +}; + +//React.memo로 감싸서 동일한 props일 경우 리렌더링 방지 +export default React.memo(MovieItem); \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/components/moviescomp/MovieList.tsx b/Week10/joyeeon/Mission/src/components/moviescomp/MovieList.tsx new file mode 100644 index 00000000..75c832e6 --- /dev/null +++ b/Week10/joyeeon/Mission/src/components/moviescomp/MovieList.tsx @@ -0,0 +1,85 @@ + +import { useEffect, useState, useMemo } from "react"; +import MovieItem from "./MovieItem"; +import type { Movie } from "../../types/movie"; +import IsLoading from "../state/IsLoading"; +import IsError from "../state/IsError"; +import useCustomFetch from "../../hooks/UseCustomFetch"; +import { useMovieStore } from "../../stores/movieStore"; + +type Category = 'popular' | 'top_rated' | 'upcoming' | 'now_playing'; + +interface CategoryProps { + category: Category; + page: number; + setTotalPages: (total: number) => void; + searchKeyword?: string; +} + +const MovieList = ({ category, page, setTotalPages, searchKeyword }: CategoryProps) => { + const trimmedKeyword = (searchKeyword ?? "").trim(); // 안전 처리 + const isSearching = trimmedKeyword.length > 0; + + const endpoint = isSearching + ? `search/movie?query=${encodeURIComponent(trimmedKeyword)}&language=ko-KR&page=${page}` + : `movie/${category}?language=ko-KR&page=${page}`; // 여기에 movie/ 붙어야 함!! + + const { data, isLoading, error } = useCustomFetch<{ results: Movie[]; total_pages: number }>(endpoint); + + + + useEffect(() => { + if (data) { + setTotalPages(data.total_pages); + console.log(data.results) + } + }, [data, setTotalPages]); + + + + // useEffect(() => { + // const endpoint = `movie/${category}?language=ko-KR&page=${page}`; + // fetchMovies(endpoint); + // }, [category, page]); + + const hasResults = (data?.results?.length ?? 0) > 0; + + const renderedMovies = useMemo(() => { + if (!data?.results) return null; + return data.results.map((movie) => ( + + )); + }, [data?.results]); + + return ( + <> + {isLoading && +
    +
    + } + { + error && +
    +
    + } + { + !isLoading && !error && hasResults && ( +
    +
      + {/* {data?.results?.map((movie: any) => ( + + ))} */} + {renderedMovies} +
    +
    + ) + } + {!isLoading && !error && !hasResults && isSearching && ( +
    검색 결과가 없습니다.
    + )} + + ) +}; + +export default MovieList; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/components/moviescomp/Slidebar.tsx b/Week10/joyeeon/Mission/src/components/moviescomp/Slidebar.tsx new file mode 100644 index 00000000..02f03a27 --- /dev/null +++ b/Week10/joyeeon/Mission/src/components/moviescomp/Slidebar.tsx @@ -0,0 +1,40 @@ +import { BsCaretRightSquareFill } from "react-icons/bs"; +import { BsCaretLeftSquareFill } from "react-icons/bs"; + +interface SlidebarProps { + page:number; + setPage:(page:number) =>void; + totalPages:number; +} + +const Slidebar = ({page, setPage, totalPages} : SlidebarProps) => { + const handleprev = () =>{ + if(page > 1 ) setPage(page-1); + console.log("prev 버튼 클릭"); + }; + + const handlenext = () => { + if(page < totalPages) setPage(page+1); + console.log("next 버튼 클릭"); + } + + return( +
    + + {page} 페이지 + +
    + ) +} + +export default Slidebar; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/components/navbar/NavSigns.tsx b/Week10/joyeeon/Mission/src/components/navbar/NavSigns.tsx new file mode 100644 index 00000000..d86a9692 --- /dev/null +++ b/Week10/joyeeon/Mission/src/components/navbar/NavSigns.tsx @@ -0,0 +1,18 @@ +import { useNavigate } from "react-router-dom"; +import { MouseEvent } from "react"; + +const NavSign = () =>{ + const navigate = useNavigate(); + + + return( +
    + + +
    + ) +} + +export default NavSign; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/components/navbar/Navbar.tsx b/Week10/joyeeon/Mission/src/components/navbar/Navbar.tsx new file mode 100644 index 00000000..a2fc4c2f --- /dev/null +++ b/Week10/joyeeon/Mission/src/components/navbar/Navbar.tsx @@ -0,0 +1,49 @@ +import { useNavigate , useParams} from "react-router-dom"; +import { MouseEvent } from "react"; +import NavSign from "./NavSigns"; + +interface NavItem { + label: string; + path: string; + category: string | undefined; +} + +const Navbar = () =>{ + const {category} = useParams(); + //console.log(`params 값: ${category}`); + const navigate = useNavigate(); + + const navItems: NavItem[] = [ + { label: '홈', path: '/', category: undefined }, + { label: '인기 영화', path: '/movies/popular', category: 'popular' }, + { label: '상영 중', path: '/movies/now_playing', category: 'now_playing' }, + { label: '평점 높은', path: '/movies/top_rated', category: 'top_rated' }, + { label: '개봉 예정', path: '/movies/upcoming', category: 'upcoming' }, + ]; + + const handleNavigate = (path:string) => (e:MouseEvent) => { + navigate(path); + }; + + + return ( + + ) +} + +export default Navbar; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/components/register/AbledButton.tsx b/Week10/joyeeon/Mission/src/components/register/AbledButton.tsx new file mode 100644 index 00000000..4ca6b251 --- /dev/null +++ b/Week10/joyeeon/Mission/src/components/register/AbledButton.tsx @@ -0,0 +1,20 @@ +interface AbledButtonProps { + label :string; + disabled?:boolean; + onClick?:() =>void; + className?:string; + type?:"button" | "submit" | "reset"; +} + +const AbledButton = ({label, disabled = false, onClick, className = "" , type = "button", }: AbledButtonProps) =>{ + return( + + ) +} + +export default AbledButton; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/components/register/AuthHeader.tsx b/Week10/joyeeon/Mission/src/components/register/AuthHeader.tsx new file mode 100644 index 00000000..145460d2 --- /dev/null +++ b/Week10/joyeeon/Mission/src/components/register/AuthHeader.tsx @@ -0,0 +1,35 @@ +import Google from "./Google"; +import { SlArrowLeft } from "react-icons/sl"; +import { useNavigate } from "react-router-dom"; + +interface AuthProps { + path: string; + step?: number; +} + +const AuthHeader = ({ path, step }: AuthProps) => { + const navigate = useNavigate(); + + return ( +
    + + + + {step === 1 && ( + <> + +
    +
    + OR +
    +
    + + )} +
    + ) +} + +export default AuthHeader \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/components/register/EmailComp.tsx b/Week10/joyeeon/Mission/src/components/register/EmailComp.tsx new file mode 100644 index 00000000..11137db9 --- /dev/null +++ b/Week10/joyeeon/Mission/src/components/register/EmailComp.tsx @@ -0,0 +1,25 @@ +import { UseFormRegister, FieldValues, Path } from "react-hook-form"; + +interface EmailCompProps { + register: UseFormRegister; + error?: string; +} + +const EmailComp = ({ + register, + error, +}: EmailCompProps) => { + return ( + <> + )} // 핵심: Path로 타입 보장 + placeholder="이메일을 입력해 주세요!" + /> + {error &&
    {error}
    } + + ); +}; + +export default EmailComp; diff --git a/Week10/joyeeon/Mission/src/components/register/Google.tsx b/Week10/joyeeon/Mission/src/components/register/Google.tsx new file mode 100644 index 00000000..6b46240c --- /dev/null +++ b/Week10/joyeeon/Mission/src/components/register/Google.tsx @@ -0,0 +1,19 @@ +import GoogleIcon from '../../assets/google.png' +import React from 'react'; + +const Google = () =>{ + const Googlehandler = () =>{ + window.location.href = `${import.meta.env.VITE_BASE_URL}/auth/google/login`; + }; + + return( + + ) +} + +export default Google; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/components/register/LoginComp.tsx b/Week10/joyeeon/Mission/src/components/register/LoginComp.tsx new file mode 100644 index 00000000..d67ac511 --- /dev/null +++ b/Week10/joyeeon/Mission/src/components/register/LoginComp.tsx @@ -0,0 +1,100 @@ +import { z } from "zod"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { FormProvider, useForm, useFormContext } from "react-hook-form"; +import { useNavigate } from "react-router-dom"; + +import AuthHeader from "./AuthHeader"; +import EmailComp from "./EmailComp"; +import AbledButton from "./AbledButton"; +import PassComp from "./PassComp"; +import useLocalStorage from "../../hooks/useLocalStorage"; + +import { useAuth } from "../../context/AuthContext"; +import { loginApi } from "../../apis/auth"; +import { api } from "../../apis/api"; + +const loginSchema = z.object({ + email: z.string().email({ message: "올바른 이메일 형식이 아닙니다." }), + password: z.string().min(1, { message: "비밀번호를 입력해주세요." }), +}); + +type LoginFormValues = z.infer; + +const LoginComp = () => { + const navigate = useNavigate(); + //const [token, setToken] = useLocalStorage("token", null); + const {login} = useAuth(); + + const methods = useForm({ + resolver: zodResolver(loginSchema), + mode: "onChange", + defaultValues: { + email: "", + password: "", + }, + }); + + const { + register, + handleSubmit, + watch, + formState: { errors }, + } = methods; + + const onSubmit = async (data: LoginFormValues) => { + try { + console.log("로그인 요청 시작"); + const response = await loginApi(data.email, data.password); + + console.log("로그인 성공", response.data); + const accessToken = response.data.accessToken; + const refreshToken = response.data.refreshToken; + + login(accessToken, refreshToken); + + api.defaults.headers.common['Authorization'] = `Bearer ${accessToken}`; + + navigate("/"); + } catch(error) { + console.error("로그인 실패", error); + } + }; + + const isDisabled = + !!errors.email || + !!errors.password || + watch("email") === "" || + watch("password") === ""; + + return ( + +
    + + + + + + + + + + +
    + + ) +} + +export default LoginComp; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/components/register/PassComp.tsx b/Week10/joyeeon/Mission/src/components/register/PassComp.tsx new file mode 100644 index 00000000..f2624b0b --- /dev/null +++ b/Week10/joyeeon/Mission/src/components/register/PassComp.tsx @@ -0,0 +1,46 @@ +import { FaRegEye, FaRegEyeSlash } from "react-icons/fa"; +import { useState } from "react"; +import { UseFormRegister, FieldValues, Path } from "react-hook-form"; +import { FormValues } from "./SignupComp"; + +interface PassCompProps { + register: UseFormRegister; + name: Path; + error?: string; + placeholder?: string; +} + +const PassComp = >({ + register, name, error, placeholder }: PassCompProps) => { + // 비밀번호 상태 + const [passwordType, setPasswordType] = useState('password'); + const [passwordIcon, setPasswordIcon] = useState(); + + const handleTogglePassword = () => { + if (passwordType === 'password') { + setPasswordType('text'); + setPasswordIcon(); + } else { + setPasswordType('password'); + setPasswordIcon(); + } + }; + + return ( + <> +
    + + +
    + {error &&
    {error}
    } + + ) +} + +export default PassComp; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/components/register/SignupComp.tsx b/Week10/joyeeon/Mission/src/components/register/SignupComp.tsx new file mode 100644 index 00000000..7574001d --- /dev/null +++ b/Week10/joyeeon/Mission/src/components/register/SignupComp.tsx @@ -0,0 +1,183 @@ +import axios from "axios"; +import { useState, useEffect } from "react"; +import { z } from "zod"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { FormProvider, useForm, useFormContext } from "react-hook-form"; +import { useNavigate } from "react-router-dom"; + +import AuthHeader from "./AuthHeader" +import EmailComp from "./EmailComp" +import AbledButton from "./AbledButton"; +import PassComp from "./PassComp"; + +import { signupApi } from "../../apis/auth"; + +const signupSchema = z + .object({ + email: z.string().email({ message: "올바른 이메일 형식이 아닙니다." }), + password: z + .string() + .min(8, { message: "비밀번호는 8자 이상이어야 합니다" }) + .max(20, { message: "비밀번호는 20자 이하여야 합니다." }), + passcheck: z.string(), + name: z.string().min(1, { message: "이름을 입력해주세요." }), + bio:z.string().optional().or(z.literal("")), + avatar: z.string().url({ message: "올바른 URL 형식이 아닙니다." }).optional().or(z.literal("")), + }) + .refine((data) => data.password === data.passcheck, { + message: "비밀번호가 일치하지 않습니다.", + path: ["passcheck"], + }); + +export type FormValues = z.infer; + +const SignupComp = () => { + const [step, setStep] = useState<1 | 2 | 3>(1); + const navigate = useNavigate(); + + + const methods = useForm({ + resolver: zodResolver(signupSchema), + mode: "onChange", + defaultValues: { + email: "", + password: "", + passcheck: "", + name: "", + bio:"", + avatar: "", + }, + }); + + const { + register, + handleSubmit, + watch, + trigger, + formState: { errors }, + } = methods; + + const step1Invalid = !!errors.email || watch("email") === ""; + const step2Invalid = + !!errors.password || + !!errors.passcheck || + watch("password") === "" || + watch("passcheck") === ""; + const step3Invalid = !!errors.name || watch("name") === ""; + + const nextStep = async () => { + const stepFields = { + 1: ["email"], + 2: ["password", "passcheck"], + 3: ["name"], + }[step] as (keyof FormValues)[]; + + const valid = await trigger(stepFields); + if (valid) setStep((prev) => (prev < 3 ? (prev + 1) as 2 | 3 : prev)); + }; + + + + const onSubmit = async (data: FormValues) => { + try { + console.log("🔥 API 요청 전송 시작"); + await signupApi({ + email: data.email, + password: data.password, + name: data.name, + bio: data.bio, + avatar: data.avatar, + }); + + console.log("회원가입 성공:"); + navigate("/login"); + }catch(error) { + console.error("회원가입 실패:", error); + } + + + }; + + useEffect(() => { + // password가 바뀌면 passcheck도 다시 검사 + if (step === 2 && watch("passcheck")) { + trigger("passcheck"); + } + }, [watch("password")]); + + + return ( + +
    + + + {step === 1 && ( + <> + + + + + )} + + {step === 2 && ( + <> +
    {watch("email")}
    + + + + + + + )} + + { + step === 3 && ( + <> + 프로필 이미지 + + + + {errors.name &&
    {errors.name.message}
    } + + {console.log("버튼 disabled 상태?", step3Invalid)} + + + ) + } + +
    + ) +} + +export default SignupComp; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/components/searchMovies/SearchComp.tsx b/Week10/joyeeon/Mission/src/components/searchMovies/SearchComp.tsx new file mode 100644 index 00000000..3d83b24e --- /dev/null +++ b/Week10/joyeeon/Mission/src/components/searchMovies/SearchComp.tsx @@ -0,0 +1,82 @@ +import { FaFilm } from "react-icons/fa"; +import { GrSettingsOption } from "react-icons/gr"; +import { FaSearch } from "react-icons/fa"; +import { FaGlobe } from "react-icons/fa"; + + +interface SearchInputProps { + value: string; + onChange: (value: string) => void; + onSearch: (keyword: string) => void; +} + +const SearchComp = ({ value, onChange, onSearch }: SearchInputProps) => { + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + onSearch(value); // 상위로 전달 + //console.log(inputValue); + }; + + return ( +
    +
    + +
    +
    + + onChange(e.target.value)} + /> +
    + +
    + +
    + + +
    +
    +
    + + + +
    + + +
    + + {/* 검색 버튼 */} + +
    +
    + + ) +} + +export default SearchComp \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/components/state/IsError.tsx b/Week10/joyeeon/Mission/src/components/state/IsError.tsx new file mode 100644 index 00000000..576f7ae4 --- /dev/null +++ b/Week10/joyeeon/Mission/src/components/state/IsError.tsx @@ -0,0 +1,12 @@ +import { MdError } from "react-icons/md"; + +const IsError = () =>{ + return ( +
    + +
    에러가 발생했습니다.
    +
    + ) +} + +export default IsError; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/components/state/IsLoading.tsx b/Week10/joyeeon/Mission/src/components/state/IsLoading.tsx new file mode 100644 index 00000000..bdc73e86 --- /dev/null +++ b/Week10/joyeeon/Mission/src/components/state/IsLoading.tsx @@ -0,0 +1,12 @@ +import Spinner from "../../assets/Spinner.gif" + +const IsLoading = () =>{ + return ( +
    + 로딩중 +
    로딩중...
    +
    + ) +} + +export default IsLoading; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/constants/key.ts b/Week10/joyeeon/Mission/src/constants/key.ts new file mode 100644 index 00000000..60ff955d --- /dev/null +++ b/Week10/joyeeon/Mission/src/constants/key.ts @@ -0,0 +1,4 @@ +export const LOCAL_STORAGE_KEY = { + accessToken: "ACCESS_TOKEN", + refreshToken: "REFRESH_TOKEN", +} \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/context/AuthContext.tsx b/Week10/joyeeon/Mission/src/context/AuthContext.tsx new file mode 100644 index 00000000..35320a58 --- /dev/null +++ b/Week10/joyeeon/Mission/src/context/AuthContext.tsx @@ -0,0 +1,55 @@ +import { createContext, useContext, useEffect, useState } from "react"; + +import { LOCAL_STORAGE_KEY } from "../constants/key"; + +interface AuthContextType { + accessToken: string | null; + refreshToken: string | null; + login: (accessToken: string, refreshToken: string) => void; + logout: () => void; +} + +const AuthContext = createContext({ + accessToken: null, + refreshToken: null, + login: () => { }, + logout: () => { }, +}); + +export const AuthProvider = ({ children }: { children: React.ReactNode }) => { + const [accessToken, setAccessToken] = useState(null); + const [refreshToken, setRefreshToken] = useState(null); + + useEffect(() => { + const storedAccessToken = localStorage.getItem(LOCAL_STORAGE_KEY.accessToken); + const storedRefreshToken = localStorage.getItem(LOCAL_STORAGE_KEY.refreshToken); + + if (storedAccessToken) setAccessToken(storedAccessToken); + if (storedRefreshToken) setRefreshToken(storedRefreshToken); + }, []); + + const login = (newAccessToken: string, newRefreshToken: string) => { + console.log("[AuthContext] login() 호출됨"); + console.log("[AuthContext] accessToken 저장할 값:", newAccessToken); + console.log("[AuthContext] refreshToken 저장할 값:", newRefreshToken); + setAccessToken(newAccessToken); + setRefreshToken(newRefreshToken); + localStorage.setItem(LOCAL_STORAGE_KEY.accessToken, newAccessToken); + localStorage.setItem(LOCAL_STORAGE_KEY.refreshToken, newRefreshToken); + }; + + const logout = () => { + setAccessToken(null); + setRefreshToken(null); + localStorage.removeItem(LOCAL_STORAGE_KEY.accessToken); + localStorage.removeItem(LOCAL_STORAGE_KEY.refreshToken); + }; + + return ( + + {children} + + ); +}; + +export const useAuth = () => useContext(AuthContext); \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/hooks/UseCustomFetch.ts b/Week10/joyeeon/Mission/src/hooks/UseCustomFetch.ts new file mode 100644 index 00000000..0f11abb5 --- /dev/null +++ b/Week10/joyeeon/Mission/src/hooks/UseCustomFetch.ts @@ -0,0 +1,47 @@ +import axios from "axios"; +import { useEffect } from "react"; +import { useState } from "react"; + +interface UseCustomFetchResult { + data: T | null; + isLoading: boolean; + error: Error | null; +} + +const useCustomFetch = (endpoint: string | null): UseCustomFetchResult => { + const [data, setData] = useState(null); + const [isLoading, setIsLoading] = useState(true); + const [error, setError] = useState(null); + + const defaultURL : string = "https://api.themoviedb.org/3/movie/" + const token = import.meta.env.VITE_TMDB_TOKEN; + + useEffect(() => { + if (!endpoint) return; + + const fetchData = async () => { + setIsLoading(true); + try { + const response = await axios.get( + `https://api.themoviedb.org/3/${endpoint}`, // 여기 수정 + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + setData(response.data); + } catch (err: any) { + setError(err); + } finally { + setIsLoading(false); + } + }; + + fetchData(); + }, [endpoint]); + + return {data, isLoading, error}; + +}; +export default useCustomFetch; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/hooks/UseForm.ts b/Week10/joyeeon/Mission/src/hooks/UseForm.ts new file mode 100644 index 00000000..5ee07e1a --- /dev/null +++ b/Week10/joyeeon/Mission/src/hooks/UseForm.ts @@ -0,0 +1,48 @@ +import { ChangeEvent, useState , useEffect} from "react"; + +interface UseFormProps { + initialValue : T; //이메일. 패스워드 등 + validate:(values:T) => Record; + deps?: any[]; +} + +function useForm>({initialValue, validate, deps = []} : UseFormProps) { + const [values , setValues] = useState(initialValue); + const [touched, setTouched] = useState>(); + const [errors, setErrors] = useState>(); + + const handleChange = (name: keyof T, text:string) =>{ + setValues({ + ...values, + [name]:text, + }); + }; + + const handleBlur = (name:keyof T) =>{ + setTouched({ + ...touched, + [name]: true, + }); + }; + + const getInputProps = (name: keyof T) =>{ + const value = values[name]; + + const onChange = (e:ChangeEvent) => + handleChange(name, e.target.value); + + const onBlur = () => handleBlur(name); + + return {value, onChange, onBlur} + }; + + useEffect( () =>{ + const newErrors = validate(values); + setErrors(newErrors); + }, [validate, values, ...(deps || [])]); + + return {values, errors, touched, getInputProps} ; + +} + +export default useForm; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/hooks/UseLoading.ts b/Week10/joyeeon/Mission/src/hooks/UseLoading.ts new file mode 100644 index 00000000..840801e4 --- /dev/null +++ b/Week10/joyeeon/Mission/src/hooks/UseLoading.ts @@ -0,0 +1,38 @@ +import { useState } from "react"; + +type UseLoadingReturnType = { + isLoading: boolean; + error: Error | null; + execute: (...args: any[]) => Promise; +}; + +const useLoading = ( + action: (...args: any[]) => Promise +): UseLoadingReturnType => { + const [isLoading, setIsLoading] = useState(false); + const [error, setError] = useState(null); + + + const execute = async (...args: any[]): Promise => { + setIsLoading(true); + setError(null); // 실행 전 에러 초기화 + + try { + const result = await action(...args); + return result; + } catch (err: unknown) { + if (err instanceof Error) { + setError(err); + } else { + setError(new Error("알 수 없는 에러가 발생했습니다.")); + } + return undefined; + } finally { + setIsLoading(false); + } + }; + + return { isLoading, error, execute }; +}; + +export default useLoading; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/hooks/state/useDebounce.ts b/Week10/joyeeon/Mission/src/hooks/state/useDebounce.ts new file mode 100644 index 00000000..ed2f2e84 --- /dev/null +++ b/Week10/joyeeon/Mission/src/hooks/state/useDebounce.ts @@ -0,0 +1,19 @@ +import { useEffect, useState } from "react"; + +const useDebounce = (value: T, delay: number): T => { + const [debouncedValue, setDebouncedValue] = useState(value); + + useEffect(() => { + const handler = setTimeout(() => { + setDebouncedValue(value); + }, delay || 2000); + + return () => { + clearTimeout(handler); + }; + }, [value, delay]); + + return debouncedValue; +}; + +export default useDebounce; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/hooks/state/useThrottle.ts b/Week10/joyeeon/Mission/src/hooks/state/useThrottle.ts new file mode 100644 index 00000000..631d2456 --- /dev/null +++ b/Week10/joyeeon/Mission/src/hooks/state/useThrottle.ts @@ -0,0 +1,15 @@ +import { useRef } from "react" + +const useThrottle = (callback: (...args: T) => void, timeout: number) => { + const timer = useRef | null>(null); + return (...args: T) => { + if (!timer.current) { + timer.current = setTimeout(() => { + callback(...args); + timer.current = null; + }, timeout); + } + }; +}; + +export default useThrottle; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/hooks/useLocalStorage.ts b/Week10/joyeeon/Mission/src/hooks/useLocalStorage.ts new file mode 100644 index 00000000..f479a5c8 --- /dev/null +++ b/Week10/joyeeon/Mission/src/hooks/useLocalStorage.ts @@ -0,0 +1,26 @@ +import { useState, useEffect } from "react"; + +function useLocalStorage(key: string, initialValue: T) { + const [storedValue, setStoredValue] = useState(() => { + try { + const item = localStorage.getItem(key); + return item ? JSON.parse(item) : initialValue; + } catch (error) { + console.error("Error accessing localStorage", error); + return initialValue; + } + }); + + const setValue = (value: T) => { + try { + setStoredValue(value); + localStorage.setItem(key, JSON.stringify(value)); + } catch (error) { + console.error("Error setting localStorage", error); + } + }; + + return [storedValue, setValue] as const; +} + +export default useLocalStorage; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/layout/Root-layout.tsx b/Week10/joyeeon/Mission/src/layout/Root-layout.tsx new file mode 100644 index 00000000..a80c21bd --- /dev/null +++ b/Week10/joyeeon/Mission/src/layout/Root-layout.tsx @@ -0,0 +1,13 @@ +import { Outlet } from "react-router-dom"; +import Navbar from "../components/navbar/Navbar"; + +const RootLayout = () => { + return ( +
    + + +
    + ) +} + +export default RootLayout; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/main.tsx b/Week10/joyeeon/Mission/src/main.tsx new file mode 100644 index 00000000..5e84eb8d --- /dev/null +++ b/Week10/joyeeon/Mission/src/main.tsx @@ -0,0 +1,13 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './styles/index.css' +import App from './App.tsx' +import { AuthProvider } from './context/AuthContext.tsx' + +createRoot(document.getElementById('root')!).render( + + + + + , +) diff --git a/Week10/joyeeon/Mission/src/pages/GoogleLoginRedirectPage.tsx b/Week10/joyeeon/Mission/src/pages/GoogleLoginRedirectPage.tsx new file mode 100644 index 00000000..78fb9ba0 --- /dev/null +++ b/Week10/joyeeon/Mission/src/pages/GoogleLoginRedirectPage.tsx @@ -0,0 +1,31 @@ +import { useEffect } from "react" +import useLocalStorage from "../hooks/useLocalStorage" +import { LOCAL_STORAGE_KEY } from "../constants/key" +import { useNavigate } from "react-router-dom" + +const GoogleLoginRedirectPage = () =>{ + const [, setAccessToken] = useLocalStorage(LOCAL_STORAGE_KEY.accessToken, ""); + const [, setRefreshToken] = useLocalStorage(LOCAL_STORAGE_KEY.refreshToken, ""); + + const navigate = useNavigate(); + + useEffect(() =>{ + const urlParams = new URLSearchParams(window.location.search); + const accessToken = urlParams.get('accessToken'); + const refreshToken = urlParams.get('refreshToken'); + + if (accessToken) { + setAccessToken(accessToken); + setRefreshToken(refreshToken ?? ""); + navigate('/'); + } + + }, [setAccessToken,setRefreshToken, navigate]); + return( + <> + 리다이렉트 페이지 + + ) +} + +export default GoogleLoginRedirectPage \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/pages/Homepage.tsx b/Week10/joyeeon/Mission/src/pages/Homepage.tsx new file mode 100644 index 00000000..06a5a6c5 --- /dev/null +++ b/Week10/joyeeon/Mission/src/pages/Homepage.tsx @@ -0,0 +1,9 @@ +const Homepage = () =>{ + return( +

    + 홈페이지 +

    + ) +} + +export default Homepage; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/pages/Loginpage.tsx b/Week10/joyeeon/Mission/src/pages/Loginpage.tsx new file mode 100644 index 00000000..c277c6c4 --- /dev/null +++ b/Week10/joyeeon/Mission/src/pages/Loginpage.tsx @@ -0,0 +1,11 @@ +import LoginComp from "../components/register/LoginComp" + +const Loginpage = () =>{ + return( +
    + +
    + ) +} + +export default Loginpage \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/pages/Logout.tsx b/Week10/joyeeon/Mission/src/pages/Logout.tsx new file mode 100644 index 00000000..c43d8d55 --- /dev/null +++ b/Week10/joyeeon/Mission/src/pages/Logout.tsx @@ -0,0 +1,9 @@ +const Logoutpage = () =>{ + return( + <> +

    로그아웃 페이지

    + + ) +} + +export default Logoutpage; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/pages/Moviepage.tsx b/Week10/joyeeon/Mission/src/pages/Moviepage.tsx new file mode 100644 index 00000000..91eda2b7 --- /dev/null +++ b/Week10/joyeeon/Mission/src/pages/Moviepage.tsx @@ -0,0 +1,60 @@ +import MovieList from "../components/moviescomp/MovieList"; +import { useParams, Navigate } from "react-router-dom"; +import Slidebar from "../components/moviescomp/Slidebar"; +import { useState } from "react"; +import SearchComp from "../components/searchMovies/SearchComp"; +import useDebounce from "../hooks/state/useDebounce"; +import { useEffect } from "react"; +import { useCallback } from "react"; + +type Category = 'popular' | 'top_rated' | 'upcoming' | 'now_playing'; + +const MoviePage = () => { + const { category } = useParams(); + //console.log(`params 값: ${category}`); + + const [page, setPage] = useState(1); + const [totalPages, setTotalPages] = useState(1); + + const [searchKeyword, setSearchKeyword] = useState(""); + const [searchInput, setSearchInput] = useState(""); + const debouncedSearch = useDebounce(searchInput, 300); // 디바운스된 검색어 상태 + + useEffect(() => { + setSearchKeyword(debouncedSearch); // 실제 검색어 상태 + }, [debouncedSearch]); + + const validCategories: Category[] = ['popular', 'top_rated', 'upcoming', 'now_playing']; + + // 2. category 값이 유효하지 않다면 에러 처리 (ex. 잘못된 경로로 접근한 경우) + if (!category || !validCategories.includes(category as Category)) { + return

    잘못된 경로입니다.

    ; + } + + const handleInputChange = useCallback((value: string) => { + setSearchInput(value); + }, []); + + const handleSearch = useCallback((keyword: string) => { + setSearchKeyword(keyword); + }, []); + + return ( +
    + + + +
    + ) +} + +export default MoviePage; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/pages/Mypage.tsx b/Week10/joyeeon/Mission/src/pages/Mypage.tsx new file mode 100644 index 00000000..0fa80d3b --- /dev/null +++ b/Week10/joyeeon/Mission/src/pages/Mypage.tsx @@ -0,0 +1,44 @@ +import { useEffect, useState } from 'react'; +import { getMyInfo } from '../apis/users'; + +interface UserInfo { + id: number; + email: string; + name: string; + bio?: string; + avatar?: string; +} + +const Mypage = () => { + const [userInfo, setUserInfo] = useState(null); + + useEffect(() => { + const fetchUserInfo = async () => { + try { + const data = await getMyInfo(); + setUserInfo(data); + console.log("사용자 정보 마이페이지에 가져오기",data); + } catch (error) { + console.error('사용자 정보 가져오기 실패:', error); + } + }; + + fetchUserInfo(); + }, []); + + if (!userInfo) { + return
    Loading...
    ; + } + + return ( +
    +

    마이 페이지

    + {/*

    이메일: {userInfo.email}

    +

    이름: {userInfo.name}

    + {userInfo.bio &&

    소개: {userInfo.bio}

    } + {userInfo.avatar && 프로필 이미지} */} +
    + ); +}; + +export default Mypage; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/pages/Notfound.tsx b/Week10/joyeeon/Mission/src/pages/Notfound.tsx new file mode 100644 index 00000000..0cea7ae7 --- /dev/null +++ b/Week10/joyeeon/Mission/src/pages/Notfound.tsx @@ -0,0 +1,7 @@ +const Notfound = () => { + return( +

    잘못된 경로입니다.

    + ) +} + +export default Notfound \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/pages/SignupPage.tsx b/Week10/joyeeon/Mission/src/pages/SignupPage.tsx new file mode 100644 index 00000000..16f872bb --- /dev/null +++ b/Week10/joyeeon/Mission/src/pages/SignupPage.tsx @@ -0,0 +1,11 @@ +import SignupComp from "../components/register/SignupComp" + +const Signuppage = () =>{ + return ( +
    + +
    + ) +} + +export default Signuppage \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/schemas/signupSchema.ts b/Week10/joyeeon/Mission/src/schemas/signupSchema.ts new file mode 100644 index 00000000..8392da3d --- /dev/null +++ b/Week10/joyeeon/Mission/src/schemas/signupSchema.ts @@ -0,0 +1,22 @@ +import { z } from "zod"; + + +const schema = z.object({ + email: z.string().email({ message: "올바른 이메일 형식이 아닙니다." }), + password: z + .string() + .min(8, { + message: "비밀번호는 8자 이상이어야 합니다", + }) + .max(20, { + message: "비밀번호는 20자 이하여야 합니다. " + }), + passcheck: z.string(), + name: z.string().min(1, { message: "이름을 입력해주세요." }), +}).refine( + data => data.password === data.passcheck, { + message: "비밀번호가 일치하지 않습니다.", + path: ["passcheck"], // 이 에러를 어디에 표시할지 지정 + }); + +export type SignupFormValues = z.infer; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/stores/modalStore.ts b/Week10/joyeeon/Mission/src/stores/modalStore.ts new file mode 100644 index 00000000..fca6bd2d --- /dev/null +++ b/Week10/joyeeon/Mission/src/stores/modalStore.ts @@ -0,0 +1,17 @@ +import { create } from 'zustand'; + +export interface ModatState{ + isOpen: boolean; + movieId: number | null; + openModal: (id: number) => void; + closeModal: () => void; +} + +export const useModalStore = create() ( + (set) => ({ + isOpen: false, + movieId: null, + openModal: (id: number) => set({ isOpen: true, movieId: id }), // 중요 + closeModal: () => set({ isOpen: false, movieId: null }), + }) +) \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/stores/movieStore.ts b/Week10/joyeeon/Mission/src/stores/movieStore.ts new file mode 100644 index 00000000..c763eed0 --- /dev/null +++ b/Week10/joyeeon/Mission/src/stores/movieStore.ts @@ -0,0 +1,34 @@ +import { create } from 'zustand' +import axios from 'axios'; + +interface MovieState { + data: T | null; + isLoading: boolean; + error: Error | null; + fetchMovies: (endpoint: string) => void; +} + +const baseURL = "https://api.themoviedb.org/3"; + +export const useMovieStore = create((set) => ({ + data: null, + isLoading: false, + error: null, + + fetchMovies: async (endpoint: string) => { + const token = import.meta.env.VITE_TMDB_TOKEN; + set({ isLoading: true, error: null }); + + try { + const response = await axios.get(`${baseURL}/${endpoint}`, { + headers: { + Authorization: `Bearer ${token}`, + }, + }); + set({ data: response.data, isLoading: false }); + } catch (error: any) { + set({ error, isLoading: false }); + } + } + +})); \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/styles/CustomModal.ts b/Week10/joyeeon/Mission/src/styles/CustomModal.ts new file mode 100644 index 00000000..55e0c5f7 --- /dev/null +++ b/Week10/joyeeon/Mission/src/styles/CustomModal.ts @@ -0,0 +1,25 @@ +export const customModalStyles = { + content: { //내부 부분 + position: 'absolute', + top: '50%', + left: '50%', + transform: 'translate(-50%, -50%)', + width: '500px', + maxWidth: '500px', + height:'400px', + backgroundColor: '#fff', + borderRadius: '8px', + + boxShadow: '0 2px 10px rgba(0, 0, 0, 0.1)', + justifyContent: 'center', + alignItems: 'center', + }, + overlay: { //바깥 부분 + backgroundColor: 'rgba(0, 0, 0, 0.1)', + zIndex: 1000, + width: '100%', + height: '100%', + top: '0', + left: '0', + }, +} as const; \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/styles/components.css b/Week10/joyeeon/Mission/src/styles/components.css new file mode 100644 index 00000000..3b3f6b81 --- /dev/null +++ b/Week10/joyeeon/Mission/src/styles/components.css @@ -0,0 +1,23 @@ +.btn { + @apply w-full border-1 rounded-lg h-10 p-3 text-sm box-border flex items-center justify-center +} + +.input { + @apply w-full border-1 rounded-lg h-10 p-3 text-sm box-border placeholder:text-xs +} + +.inputpass { + @apply w-full border-1 rounded-lg h-10 p-3 text-sm box-border placeholder:text-xs flex items-center justify-between +} + +.customHr { + @apply h-0.5 bg-white mt-1 mb-1 +} + +.loginbtn { + @apply w-full border-2 rounded-lg h-10 p-3 text-sm box-border +} + +.errorMSG { + @apply text-xs text-red-400 italic mt-2 +} \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/styles/index.css b/Week10/joyeeon/Mission/src/styles/index.css new file mode 100644 index 00000000..a3801b26 --- /dev/null +++ b/Week10/joyeeon/Mission/src/styles/index.css @@ -0,0 +1,12 @@ +@import "tailwindcss"; +@import './components.css'; + +:root { + margin: 0; + padding: 0; +} + +body { + margin: 0; + padding: 0; +} diff --git a/Week10/joyeeon/Mission/src/types/credit.ts b/Week10/joyeeon/Mission/src/types/credit.ts new file mode 100644 index 00000000..140497f0 --- /dev/null +++ b/Week10/joyeeon/Mission/src/types/credit.ts @@ -0,0 +1,6 @@ +export interface Credit{ + cast_id:string; + profile_path:string; + name:string; + character:string; +} \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/types/details.ts b/Week10/joyeeon/Mission/src/types/details.ts new file mode 100644 index 00000000..cf7bba3d --- /dev/null +++ b/Week10/joyeeon/Mission/src/types/details.ts @@ -0,0 +1,10 @@ +export interface Detail{ + title:string; + vote_average:string; + release_date:string; + runtime:string; + tagline:string; + overview:string; + backdrop_path:string; + poster_path:string; +} \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/types/movie.ts b/Week10/joyeeon/Mission/src/types/movie.ts new file mode 100644 index 00000000..a689dce9 --- /dev/null +++ b/Week10/joyeeon/Mission/src/types/movie.ts @@ -0,0 +1,6 @@ +export interface Movie { + id: number; + title: string; + overview: string; + poster_path: string; +} \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/utils/validate.ts b/Week10/joyeeon/Mission/src/utils/validate.ts new file mode 100644 index 00000000..8555b120 --- /dev/null +++ b/Week10/joyeeon/Mission/src/utils/validate.ts @@ -0,0 +1,57 @@ +export type UserSigninInformation = { + email: string; + password: string; + passcheck: string; +}; + +export function validateEmail(email: string): string { + const regex = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i; + if (!regex.test(email)) { + return "올바른 이메일 형식이 아닙니다!"; + } + return ""; +} + +export function validatePassword(password: string): string { + if (password.length < 8 || password.length >= 20) { + return "비밀번호는 8~20 사이로 입력해주세요."; + } + return ""; +} + +export function validatePassCheck(passcheck: string, password: string): string { + if (password != passcheck) { + return "비밀번호가 일치하지 않습니다."; + } + return ""; +} + + +export function validateSignin(values: UserSigninInformation): Record { + return { + email: validateEmail(values.email), + password: validatePassword(values.password), + passcheck: "", + }; +} + +// 회원가입 Step1 (이메일만) +export function validateSignupEmail(values: Pick): { email: string } { + return { + email: validateEmail(values.email), + }; +} + +// 회원가입 Step2 (비밀번호만) +export function validateSignupPassword(values: Pick): { password: string } { + return { + password: validatePassword(values.password), + }; +} + +//step3 (비밀번호 확인) +export function validateSignupPassCheck(values: { password: string; passcheck: string }): { passcheck: string } { + return { + passcheck: validatePassCheck(values.passcheck, values.password), + }; +} \ No newline at end of file diff --git a/Week10/joyeeon/Mission/src/vite-env.d.ts b/Week10/joyeeon/Mission/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/Week10/joyeeon/Mission/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/Week10/joyeeon/Mission/tsconfig.app.json b/Week10/joyeeon/Mission/tsconfig.app.json new file mode 100644 index 00000000..358ca9ba --- /dev/null +++ b/Week10/joyeeon/Mission/tsconfig.app.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/Week10/joyeeon/Mission/tsconfig.json b/Week10/joyeeon/Mission/tsconfig.json new file mode 100644 index 00000000..1ffef600 --- /dev/null +++ b/Week10/joyeeon/Mission/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/Week10/joyeeon/Mission/tsconfig.node.json b/Week10/joyeeon/Mission/tsconfig.node.json new file mode 100644 index 00000000..db0becc8 --- /dev/null +++ b/Week10/joyeeon/Mission/tsconfig.node.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/Week10/joyeeon/Mission/vite.config.ts b/Week10/joyeeon/Mission/vite.config.ts new file mode 100644 index 00000000..4022c866 --- /dev/null +++ b/Week10/joyeeon/Mission/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import tailwindcss from '@tailwindcss/vite' +export default defineConfig({ + plugins: [ + tailwindcss(), + ], +}) \ No newline at end of file From 4daf965b98e7e9c1c81500c00961f8415eb3124c Mon Sep 17 00:00:00 2001 From: chy031202 Date: Sun, 1 Jun 2025 01:54:38 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat=20:=20=20=EA=B2=80=EC=83=89=EC=97=90?= =?UTF-8?q?=20=EC=96=B8=EC=96=B4=EC=99=80=20=EC=84=B1=EC=9D=B8=20=EC=BD=98?= =?UTF-8?q?=ED=85=90=EC=B8=A0=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/moviescomp/MovieList.tsx | 47 ++++++++++++------- .../components/searchMovies/SearchComp.tsx | 34 ++++++++++---- .../joyeeon/Mission/src/pages/Moviepage.tsx | 5 +- Week10/joyeeon/Mission/src/types/movie.ts | 2 + 4 files changed, 59 insertions(+), 29 deletions(-) diff --git a/Week10/joyeeon/Mission/src/components/moviescomp/MovieList.tsx b/Week10/joyeeon/Mission/src/components/moviescomp/MovieList.tsx index 75c832e6..48566515 100644 --- a/Week10/joyeeon/Mission/src/components/moviescomp/MovieList.tsx +++ b/Week10/joyeeon/Mission/src/components/moviescomp/MovieList.tsx @@ -14,15 +14,21 @@ interface CategoryProps { page: number; setTotalPages: (total: number) => void; searchKeyword?: string; + searchOptions?: { + language: string; + includeAdult: boolean; + }; } -const MovieList = ({ category, page, setTotalPages, searchKeyword }: CategoryProps) => { +const MovieList = ({ category, page, setTotalPages, searchKeyword, searchOptions }: CategoryProps) => { const trimmedKeyword = (searchKeyword ?? "").trim(); // 안전 처리 const isSearching = trimmedKeyword.length > 0; + const lang = searchOptions?.language || 'en'; + const endpoint = isSearching - ? `search/movie?query=${encodeURIComponent(trimmedKeyword)}&language=ko-KR&page=${page}` - : `movie/${category}?language=ko-KR&page=${page}`; // 여기에 movie/ 붙어야 함!! + ? `search/movie?query=${encodeURIComponent(trimmedKeyword)}&language=${lang}&page=${page}` + : `movie/${category}?language=${lang}&page=${page}`; const { data, isLoading, error } = useCustomFetch<{ results: Movie[]; total_pages: number }>(endpoint); @@ -31,7 +37,6 @@ const MovieList = ({ category, page, setTotalPages, searchKeyword }: CategoryPro useEffect(() => { if (data) { setTotalPages(data.total_pages); - console.log(data.results) } }, [data, setTotalPages]); @@ -46,11 +51,20 @@ const MovieList = ({ category, page, setTotalPages, searchKeyword }: CategoryPro const renderedMovies = useMemo(() => { if (!data?.results) return null; + console.log(data.results) return data.results.map((movie) => ( )); }, [data?.results]); + //성인 콘텐츠 필터링 + const filteredResults = useMemo(() => { + if (!data?.results) return []; + return data.results.filter(movie => { + return searchOptions?.includeAdult ? true : !movie.adult; + }); + }, [data?.results, searchOptions]); + return ( <> {isLoading && @@ -62,20 +76,17 @@ const MovieList = ({ category, page, setTotalPages, searchKeyword }: CategoryPro
    } - { - !isLoading && !error && hasResults && ( -
    -
      - {/* {data?.results?.map((movie: any) => ( - - ))} */} - {renderedMovies} -
    -
    - ) - } - {!isLoading && !error && !hasResults && isSearching && ( + {!isLoading && !error && filteredResults.length > 0 && ( +
    +
      + {filteredResults.map(movie => ( + + ))} +
    +
    + )} + + {!isLoading && !error && filteredResults.length === 0 && isSearching && (
    검색 결과가 없습니다.
    )} diff --git a/Week10/joyeeon/Mission/src/components/searchMovies/SearchComp.tsx b/Week10/joyeeon/Mission/src/components/searchMovies/SearchComp.tsx index 3d83b24e..dd000073 100644 --- a/Week10/joyeeon/Mission/src/components/searchMovies/SearchComp.tsx +++ b/Week10/joyeeon/Mission/src/components/searchMovies/SearchComp.tsx @@ -2,19 +2,23 @@ import { FaFilm } from "react-icons/fa"; import { GrSettingsOption } from "react-icons/gr"; import { FaSearch } from "react-icons/fa"; import { FaGlobe } from "react-icons/fa"; - +import { useState } from "react"; interface SearchInputProps { value: string; onChange: (value: string) => void; - onSearch: (keyword: string) => void; + onSearch: ( + keyword: string, + options: { language: string; includeAdult: boolean }) => void; } const SearchComp = ({ value, onChange, onSearch }: SearchInputProps) => { + const [language, setLanguage] = useState("ko-KR"); + const [includeAdult, setIncludeAdult] = useState(false); + const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); - onSearch(value); // 상위로 전달 - //console.log(inputValue); + onSearch(value, { language, includeAdult }); }; return ( @@ -44,7 +48,12 @@ const SearchComp = ({ value, onChange, onSearch }: SearchInputProps) => { 옵션
    - + setIncludeAdult(e.target.checked)} + /> @@ -59,15 +68,20 @@ const SearchComp = ({ value, onChange, onSearch }: SearchInputProps) => { 언어 - setLanguage(e.target.value)} + > + + + +
    {/* 검색 버튼 */} - -
    + > +
    - background +
    + {/* 백드롭 이미지 (배경) */} + background -
    + {/* 텍스트 위에 올라오도록 */} +
    +

    {detail?.title}

    +
    +
    +
    {/* 포스터 */} { {/* 텍스트 영역 */}
    -

    {detail?.title}

    -

    {detail?.title}

    +

    개봉일

    {/* {detail.vote_average.toFixed(1)} */} |