From a864d74f195302869c81f39b76ed51649e7afc1c Mon Sep 17 00:00:00 2001 From: sssssoyoung Date: Sat, 22 Mar 2025 16:36:05 +0900 Subject: [PATCH 1/6] Initial commit --- .gitignore | 24 + README.md | 14 +- eslint.config.js | 33 + index.html | 13 + package-lock.json | 2718 ++++++++++++++++++++++++++++++++++++++++++ package.json | 27 + public/vite.svg | 1 + src/App.css | 42 + src/App.jsx | 35 + src/assets/react.svg | 1 + src/index.css | 68 ++ src/main.jsx | 10 + vite.config.js | 7 + 13 files changed, 2991 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 eslint.config.js create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/vite.svg create mode 100644 src/App.css create mode 100644 src/App.jsx create mode 100644 src/assets/react.svg create mode 100644 src/index.css create mode 100644 src/main.jsx create mode 100644 vite.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/README.md b/README.md index 09c2750..fd3b758 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,12 @@ -# study-frontend -프론트엔드 스터디를 위한 레포지토리입니다. +# React + 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 using TypeScript and enable type-aware lint rules. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project. diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..ec2b712 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,33 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' + +export default [ + { ignores: ['dist'] }, + { + files: ['**/*.{js,jsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + ecmaVersion: 'latest', + ecmaFeatures: { jsx: true }, + sourceType: 'module', + }, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...js.configs.recommended.rules, + ...reactHooks.configs.recommended.rules, + 'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }], + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +] diff --git a/index.html b/index.html new file mode 100644 index 0000000..0c589ec --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..b229e5e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2718 @@ +{ + "name": "study-frontend", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "study-frontend", + "version": "0.0.0", + "dependencies": { + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@eslint/js": "^9.21.0", + "@types/react": "^19.0.10", + "@types/react-dom": "^19.0.4", + "@vitejs/plugin-react": "^4.3.4", + "eslint": "^9.21.0", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^15.15.0", + "vite": "^6.2.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz", + "integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.10", + "@babel/types": "^7.26.10", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz", + "integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz", + "integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.10" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", + "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", + "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.10.tgz", + "integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.10", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz", + "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz", + "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz", + "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz", + "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz", + "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz", + "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz", + "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz", + "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz", + "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz", + "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz", + "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz", + "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz", + "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz", + "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz", + "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz", + "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz", + "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz", + "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz", + "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz", + "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz", + "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz", + "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz", + "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz", + "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz", + "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz", + "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==", + "cpu": [ + "x64" + ], + "dev": true, + "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.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz", + "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==", + "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.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.12.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.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/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.36.0.tgz", + "integrity": "sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.36.0.tgz", + "integrity": "sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.36.0.tgz", + "integrity": "sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.36.0.tgz", + "integrity": "sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.36.0.tgz", + "integrity": "sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.36.0.tgz", + "integrity": "sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.36.0.tgz", + "integrity": "sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.36.0.tgz", + "integrity": "sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.36.0.tgz", + "integrity": "sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.36.0.tgz", + "integrity": "sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.36.0.tgz", + "integrity": "sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.36.0.tgz", + "integrity": "sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.36.0.tgz", + "integrity": "sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.36.0.tgz", + "integrity": "sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.36.0.tgz", + "integrity": "sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.36.0.tgz", + "integrity": "sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.36.0.tgz", + "integrity": "sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.36.0.tgz", + "integrity": "sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.36.0.tgz", + "integrity": "sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.0.12", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.12.tgz", + "integrity": "sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.4.tgz", + "integrity": "sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", + "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.26.0", + "@babel/plugin-transform-react-jsx-self": "^7.25.9", + "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + } + }, + "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/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/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/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.30001706", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001706.tgz", + "integrity": "sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==", + "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/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/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true, + "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/electron-to-chromium": { + "version": "1.5.123", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.123.tgz", + "integrity": "sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==", + "dev": true, + "license": "ISC" + }, + "node_modules/esbuild": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz", + "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.1", + "@esbuild/android-arm": "0.25.1", + "@esbuild/android-arm64": "0.25.1", + "@esbuild/android-x64": "0.25.1", + "@esbuild/darwin-arm64": "0.25.1", + "@esbuild/darwin-x64": "0.25.1", + "@esbuild/freebsd-arm64": "0.25.1", + "@esbuild/freebsd-x64": "0.25.1", + "@esbuild/linux-arm": "0.25.1", + "@esbuild/linux-arm64": "0.25.1", + "@esbuild/linux-ia32": "0.25.1", + "@esbuild/linux-loong64": "0.25.1", + "@esbuild/linux-mips64el": "0.25.1", + "@esbuild/linux-ppc64": "0.25.1", + "@esbuild/linux-riscv64": "0.25.1", + "@esbuild/linux-s390x": "0.25.1", + "@esbuild/linux-x64": "0.25.1", + "@esbuild/netbsd-arm64": "0.25.1", + "@esbuild/netbsd-x64": "0.25.1", + "@esbuild/openbsd-arm64": "0.25.1", + "@esbuild/openbsd-x64": "0.25.1", + "@esbuild/sunos-x64": "0.25.1", + "@esbuild/win32-arm64": "0.25.1", + "@esbuild/win32-ia32": "0.25.1", + "@esbuild/win32-x64": "0.25.1" + } + }, + "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/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-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/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/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/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "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/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/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/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/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "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/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "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/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "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/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/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "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==", + "dev": true, + "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/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==", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "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/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/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/react": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", + "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", + "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.25.0" + }, + "peerDependencies": { + "react": "^19.0.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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/rollup": { + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.36.0.tgz", + "integrity": "sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.36.0", + "@rollup/rollup-android-arm64": "4.36.0", + "@rollup/rollup-darwin-arm64": "4.36.0", + "@rollup/rollup-darwin-x64": "4.36.0", + "@rollup/rollup-freebsd-arm64": "4.36.0", + "@rollup/rollup-freebsd-x64": "4.36.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.36.0", + "@rollup/rollup-linux-arm-musleabihf": "4.36.0", + "@rollup/rollup-linux-arm64-gnu": "4.36.0", + "@rollup/rollup-linux-arm64-musl": "4.36.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.36.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.36.0", + "@rollup/rollup-linux-riscv64-gnu": "4.36.0", + "@rollup/rollup-linux-s390x-gnu": "4.36.0", + "@rollup/rollup-linux-x64-gnu": "4.36.0", + "@rollup/rollup-linux-x64-musl": "4.36.0", + "@rollup/rollup-win32-arm64-msvc": "4.36.0", + "@rollup/rollup-win32-ia32-msvc": "4.36.0", + "@rollup/rollup-win32-x64-msvc": "4.36.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", + "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "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==", + "dev": true, + "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/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/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.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.2.tgz", + "integrity": "sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "postcss": "^8.5.3", + "rollup": "^4.30.1" + }, + "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/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/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "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" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..6d20991 --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "study-frontend", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@eslint/js": "^9.21.0", + "@types/react": "^19.0.10", + "@types/react-dom": "^19.0.4", + "@vitejs/plugin-react": "^4.3.4", + "eslint": "^9.21.0", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^15.15.0", + "vite": "^6.2.0" + } +} diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000..b9d355d --- /dev/null +++ b/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/src/App.jsx b/src/App.jsx new file mode 100644 index 0000000..f67355a --- /dev/null +++ b/src/App.jsx @@ -0,0 +1,35 @@ +import { useState } from 'react' +import reactLogo from './assets/react.svg' +import viteLogo from '/vite.svg' +import './App.css' + +function App() { + const [count, setCount] = useState(0) + + return ( + <> +
+ + Vite logo + + + React logo + +
+

Vite + React

+
+ +

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

+
+

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

+ + ) +} + +export default App diff --git a/src/assets/react.svg b/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..08a3ac9 --- /dev/null +++ b/src/index.css @@ -0,0 +1,68 @@ +:root { + font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/src/main.jsx b/src/main.jsx new file mode 100644 index 0000000..b9a1a6d --- /dev/null +++ b/src/main.jsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.jsx' + +createRoot(document.getElementById('root')).render( + + + , +) diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..8b0f57b --- /dev/null +++ b/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From d76636fa0a917a667aabeb2a3b3565c6b45520c7 Mon Sep 17 00:00:00 2001 From: sssssoyoung Date: Sat, 22 Mar 2025 16:52:50 +0900 Subject: [PATCH 2/6] =?UTF-8?q?readme=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/README.md b/README.md index fd3b758..7acc5bf 100644 --- a/README.md +++ b/README.md @@ -1,12 +1 @@ -# React + 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 using TypeScript and enable type-aware lint rules. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project. +안녕하세요 From 16e762cac643a3376c91b70e0caf77adf3602316 Mon Sep 17 00:00:00 2001 From: sssssoyoung Date: Fri, 4 Apr 2025 17:51:54 +0900 Subject: [PATCH 3/6] =?UTF-8?q?2=EC=A3=BC=EC=B0=A8=20=EA=B3=BC=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.css | 109 +++++++++++++++++++++++++++++++------------ src/App.jsx | 47 ++++++++++--------- src/Header.jsx | 23 +++++++++ src/assets/react.svg | 1 - src/index.css | 68 --------------------------- src/main.jsx | 2 +- 6 files changed, 130 insertions(+), 120 deletions(-) create mode 100644 src/Header.jsx delete mode 100644 src/assets/react.svg delete mode 100644 src/index.css diff --git a/src/App.css b/src/App.css index b9d355d..0611f0a 100644 --- a/src/App.css +++ b/src/App.css @@ -1,42 +1,93 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; +html, body, #root { + height: 100%; + margin: 0; } -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; +/* 컨테이너를 세로로 정렬 */ +.container { + display: flex; + flex-direction: column; + height: 100%; } -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); + +/* header와 nav는 고정 높이 */ +.header { + height: 60px; + background-color: #faf2e0; + display: flex; /*자식 요소들이 flex 항목으로*/ + align-items: center; /* 세로 중앙 */ + padding: 0 20px; /* 좌우 여백 */ + justify-content: space-between; /* 텍스트와 박스를 양 끝에 배치 */ +} + +.site-name { + font-size: 18px; + font-weight: bold; + color: #000; } -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); + +/* 사각형 박스 3개를 오른쪽에 배치 */ +.boxes { + display: flex;/*자식요소들 가로로 정렬*/ + gap: 10px; /* 자식 요소들간의 간격 */ +} + +.box { + width: 30px; + height: 30px; + background-color: #e0d8b0; } -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } +.nav { + height: 60px; + background-color: #faf2e0; + display: flex; /*자식 요소들이 flex 항목으로*/ + align-items: center; /* 세로 중앙 */ + padding: 0 20px; /* 좌우 여백 */ } -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } +.nav-boxes { + display: flex; + gap: 60px; /* 자식 요소들간의 간격 */ } -.card { - padding: 2em; +.nav-box { + width: 30px; + height: 30px; + background-color: #e0d8b0; + align-items: center; + justify-content: center; } -.read-the-docs { - color: #888; +/* content는 나머지 공간을 꽉 채움 */ +.content { + flex-grow: 1; /* 남은 공간을 모두 차지 */ + background-color: #f8ebd0; + display: flex; + flex-direction: column; + padding: 0 20px; /* 좌우 여백 */ } + +/* 위젯 영역 */ +.widget-container { + width: 100%; + overflow-x: auto; /* 가로 스크롤 활성화 */ + padding: 20px 0; /* 상하 여백 */ + display: flex; +} + +.widget { + display: flex; + gap: 10px; /* 박스 간격 */ +} + +.widget-box { + width: 60px; + height: 60px; + background-color: #e0d8b0; + display: flex; + align-items: center; + justify-content: center; /*박스 안의 숫자 정렬*/ + font-size: 18px; + color: #5c4b3d; +} \ No newline at end of file diff --git a/src/App.jsx b/src/App.jsx index f67355a..0ca1a55 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,33 +1,38 @@ import { useState } from 'react' -import reactLogo from './assets/react.svg' +//import reactLogo from './assets/react.svg' import viteLogo from '/vite.svg' import './App.css' +import Header from './Header' function App() { const [count, setCount] = useState(0) return ( <> -
- - Vite logo - - - React logo - -
-

Vite + React

-
- -

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

-
-

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

+
+
+
+

Hello
World!!!

+

setCount(count+1)}>{count}

+
+
+
1
+
2
+
3
+
4
+
5
+
+
+
+ +
) } diff --git a/src/Header.jsx b/src/Header.jsx new file mode 100644 index 0000000..3723827 --- /dev/null +++ b/src/Header.jsx @@ -0,0 +1,23 @@ +import { useState } from 'react' +//import reactLogo from './assets/react.svg' +import viteLogo from '/vite.svg' +import './App.css' + +function Header(props) { + + return ( + <> +
+
SiteName
+

{props.title}

+
+
+
+
+
+
+ + ) +} + +export default Header \ No newline at end of file diff --git a/src/assets/react.svg b/src/assets/react.svg deleted file mode 100644 index 6c87de9..0000000 --- a/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/index.css b/src/index.css deleted file mode 100644 index 08a3ac9..0000000 --- a/src/index.css +++ /dev/null @@ -1,68 +0,0 @@ -:root { - font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - -body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; -} - -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } -} diff --git a/src/main.jsx b/src/main.jsx index b9a1a6d..2b8d7d3 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,6 +1,6 @@ import { StrictMode } from 'react' import { createRoot } from 'react-dom/client' -import './index.css' +//import './index.css' import App from './App.jsx' createRoot(document.getElementById('root')).render( From 2561b2a1b983e2218b8e8a288967558f40011b4c Mon Sep 17 00:00:00 2001 From: sssssoyoung Date: Fri, 4 Apr 2025 17:56:07 +0900 Subject: [PATCH 4/6] =?UTF-8?q?2=EC=A3=BC=EC=B0=A8=20=EC=A1=B0=EC=82=AC?= =?UTF-8?q?=ED=95=B4=EB=B3=B4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7acc5bf..fb77b8d 100644 --- a/README.md +++ b/README.md @@ -1 +1,67 @@ -안녕하세요 +# React + +- 프론트엔드 프로그래밍에서, 상태가 변했을 때 실제 dom을 뜯어버리는 대신, dom과 구조가 거의 동일하지만 메모리에 위치해있는 Virtual dom을 갈아엎은 후, 실제 dom과 비교하여 변경사항이 있는 부분만 실제 dom 요소에 반영 +- 프론트엔드 UI라이브러리 + +# 리액트는 Client Side Rendering 방식의 웹앱을 위한 UI 라이브러리입니다. Client Side Rendering이란 무엇일까요? 전통적인 SSR 방식의 웹앱과의 차이점은 무엇일까요? + +- Client Side Rendering : 웹 페이지 콘텐츠를 클라이언트에서 렌더링한다 + - 페이지의 초기 로딩을 위해 서버가 제공하는 정적인 HTML, CSS 및 JavaScript 파일을 받아오고, 이후에 클라이언트 측에서 동적으로 페이지를 렌더링하는 방식 + - 초기 페이지는 정적 콘텐츠만을 담은 HTML 파일을 받아와서 렌더링되며, 이후 JavaScript 파일을 로드하고 실행하여 동적 데이터를 가져오고 화면을 갱신한다 + - 인터랙션 빠름, 초기 구동 속도는 느림 +- SSR (Server Side Rendering) : 웹 페이지 콘텐츠를 서버에서 초기 렌더링 후, 클라이언트에 완전한 html을 전달한다 + +# 리액트는 상태에 따른 선언적 프로그래밍이 가능하도록 돕도록 한다고 말씀드렸습니다. 선언적 프로그래밍과 명령형 프로그래밍의 차이는 무엇일까요? + +- 선언적 프로그래밍 + - 내가 **무엇을** 원하는지에 관심 + - 결과 중심 + - "우리 집 주소는 298 West Immutable Alley, Eden, Utah 84310 이야.” + - 명령적 코드를 추상화한 것 + + ```html +
+
+

Declarative Programming

+

Sprinkle Declarative in your verbiage to sound smart

+
+
+ ``` + + ```bash + function add (arr) { + return arr.reduce((prev, current) => prev + current, 0) + } + ``` + + - 선언형 언어 HTML 예시에서는 '웹 브라우저가 어떻게 article 엘리먼트를 파싱해서 화면에 보여주는가'는 고려하지 않는다 +- 명령형 프로그래밍 + - 내가 실제로 **어떻게** 할지에 관심 + - 과정 중심 + - "주차장 북쪽 출구로 나와서 좌회전을 해. 12번가 출구에 도착할 때까지 I-15 북쪽 도로를 타고 와야 해. 거기서 IKEA에 가는 것처럼 출구에서 우회전을 해. 그리고 거기서 직진하다가 첫 번째 신호등에서 우회전을 해. 그 다음에 나오는 신호등을 통과한 후에 좌회전을 하면 돼. 우리 집은 #298 이야." + +```bash +function add (arr) { + let result = 0 + for (let i = 0; i < arr.length; i++){ + result += arr[i] + } + return result +} +``` + +# 브라우저가 웹 페이지를 표시하는 과정을 단계를 나누어 자세히 설명해주세요 + +1. HTML 파일과 CSS 파일을 파싱해서 각각 DOM Tree, CSSOM Tree를 만든다(**Parsing**) +2. 두 Tree를 결합하여 Rendering Tree를 만든다(**Style**) + - 실제로 화면에 그려질 Tree구조 + - 레이아웃과 페인팅에 필요한 정보를 추출하고 숨겨진 요소나 비표시 요소를 필터링한다 +3. Rendering Tree에서 각 노드의 위치와 크기를 계산해 **배치**한다(**Layout**) +4. 계산된 위치에 요소들을 표시한다, 레이어를 만든다(**Paint**) +5. 레이어를 합성하여 실제 화면에 나타낸다(**Composite**) + +# 리액트를 사용하는 이유를 조사해주세요. + +- **페이지 전환을 부드럽게 동작**시키는 것을, 일반 자바스크립트가 아닌, 리액트라는 자바스크립트 라이브러리로 쉽게 만들 수 있다 +- html 재사용이 편리하다 +- 컴포넌트 단위로 개발하기에 분업하기 좋다 From ffb581f1b397cf0ea716f35e888b3cbff0b9dda6 Mon Sep 17 00:00:00 2001 From: sssssoyoung Date: Fri, 9 May 2025 16:08:32 +0900 Subject: [PATCH 5/6] =?UTF-8?q?3=EC=A3=BC=EC=B0=A8=20=EA=B3=BC=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 243 ++++++++++++++++++++++++++++++-------- src/App.jsx | 45 +++---- src/pages/HomePage.jsx | 11 ++ src/pages/Navbar.jsx | 44 +++++++ src/pages/RankingPage.jsx | 48 ++++++++ src/pages/cat.jpg | Bin 0 -> 86068 bytes src/pages/heart.png | Bin 0 -> 597 bytes src/pages/home.png | Bin 0 -> 348 bytes src/pages/ranking.png | Bin 0 -> 421 bytes src/pages/script.jsx | 22 ++++ src/pages/shortform.png | Bin 0 -> 205 bytes src/pages/upload.png | Bin 0 -> 232 bytes 12 files changed, 333 insertions(+), 80 deletions(-) create mode 100644 src/pages/HomePage.jsx create mode 100644 src/pages/Navbar.jsx create mode 100644 src/pages/RankingPage.jsx create mode 100644 src/pages/cat.jpg create mode 100644 src/pages/heart.png create mode 100644 src/pages/home.png create mode 100644 src/pages/ranking.png create mode 100644 src/pages/script.jsx create mode 100644 src/pages/shortform.png create mode 100644 src/pages/upload.png diff --git a/README.md b/README.md index fb77b8d..832cc20 100644 --- a/README.md +++ b/README.md @@ -1,67 +1,206 @@ -# React +## 컴포넌트를 설계할 때 명확한 기준이 있다면 조금 더 수월한 설계가 가능합니다. 컴포넌트를 설계하고 나누는 기준에는 어떤 것들이 있을까요? -- 프론트엔드 프로그래밍에서, 상태가 변했을 때 실제 dom을 뜯어버리는 대신, dom과 구조가 거의 동일하지만 메모리에 위치해있는 Virtual dom을 갈아엎은 후, 실제 dom과 비교하여 변경사항이 있는 부분만 실제 dom 요소에 반영 -- 프론트엔드 UI라이브러리 +1. 단일 책임 원칙 + - 각 컴포넌트는 하나의 명확한 역할(UI조각, 기능)만 수행해야 한다 +2. 재사용 가능성 + - 다양한 상황에서 재사용할 수 있도록, 인풋을 매개변수로 받아서 컴포넌트의 동작을 제어하도록 설계한다 +3. 상위와 하위 컴포넌트 관계 (Parent-Child) + - 계층적으로 설계하여 부모 컴포넌트는 상태를 관리하고, 자식 컴포넌트는 해당 상태를 받아 UI를 렌더링하도록 한다 → 상태가 어디서 관리되고 있는지 명확하게 하여 디버깅이나 수정이 용이하도록 +4. 컴포넌트 크기 +5. UI와 로직 분리 +6. 컨테이너 컴포넌트와 프레젠테이셔널 컴포넌트 + - **컨테이너 컴포넌트**는 상태를 관리하고, **프레젠테이셔널 컴포넌트**는 상태를 받아서 UI를 렌더링합니다. → UI와 로직 명확 분리 -# 리액트는 Client Side Rendering 방식의 웹앱을 위한 UI 라이브러리입니다. Client Side Rendering이란 무엇일까요? 전통적인 SSR 방식의 웹앱과의 차이점은 무엇일까요? +## `대부분에 상황에서는 함수 컴포넌트를 사용`한다고 언급했습니다. 클래스 컴포넌트를 지양하게 된 이유에는 어떤 것들이 있을까요? -- Client Side Rendering : 웹 페이지 콘텐츠를 클라이언트에서 렌더링한다 - - 페이지의 초기 로딩을 위해 서버가 제공하는 정적인 HTML, CSS 및 JavaScript 파일을 받아오고, 이후에 클라이언트 측에서 동적으로 페이지를 렌더링하는 방식 - - 초기 페이지는 정적 콘텐츠만을 담은 HTML 파일을 받아와서 렌더링되며, 이후 JavaScript 파일을 로드하고 실행하여 동적 데이터를 가져오고 화면을 갱신한다 - - 인터랙션 빠름, 초기 구동 속도는 느림 -- SSR (Server Side Rendering) : 웹 페이지 콘텐츠를 서버에서 초기 렌더링 후, 클라이언트에 완전한 html을 전달한다 +1. 복잡한 코드 구조 + - `class` 키워드를 사용하여 정의하며, 함수형 컴포넌트에 비해 코드 구조가 더 복잡하다 + - 생명주기 메서드, `render` 함수, `state` 관리 등 다양한 부분을 직접 처리해야 한다 +2. 코드 재사용성 저하 + - 클래스 내부에서 로직을 처리할 때, 다른 컴포넌트에서 그 로직을 재사용하려면 클래스를 상속하거나, 메서드를 복사해야 할 수 있습니다 + - 반면, 함수 컴포넌트는 hook을 통해 로직을 재사용할 수 있어 더 유연하고 간편하다 +3. this 바인딩 문제 + - 클래스 컴포넌트에서는 메서드 내부에서 `this`를 사용할 때, `this`가 예상과 다르게 동작할 수 있다 + - 이를 해결하기 위해, 메서드를 `constructor`에서 바인딩하거나, 화살표 함수를 사용하여 `this`를 명시적으로 바인딩해야 한다. 이 과정은 코드가 복잡하고 실수할 여지가 많다 +4. 생명주기 메서드 관리 어려움 + - 여러 라이프사이클 메서드(`componentDidMount`, `componentDidUpdate`, `componentWillUnmount` 등)를 사용하여 컴포넌트의 생명주기를 관리해야 한다 + - 이 메서드들을 적절히 활용하려면 코드가 길어지고, 관리가 복잡해질 수 있다 -# 리액트는 상태에 따른 선언적 프로그래밍이 가능하도록 돕도록 한다고 말씀드렸습니다. 선언적 프로그래밍과 명령형 프로그래밍의 차이는 무엇일까요? +## 클래스 컴포넌트를 반드시 사용해야 하는 경우는 언제일까요? -- 선언적 프로그래밍 - - 내가 **무엇을** 원하는지에 관심 - - 결과 중심 - - "우리 집 주소는 298 West Immutable Alley, Eden, Utah 84310 이야.” - - 명령적 코드를 추상화한 것 +1. 구형 코드베이스와 호환 +2. 상속 통한 컴포넌트 확장 + - 상속을 통해 기능을 확장 할 수 있는데, 함수 컴포넌트는 상속을 지원하지 않기 때문에, 상속이 필요한 경우 클래스 컴포넌트를 사용해야 한다 +3. 고급 라이프사이클 메서드 활용 + +## 컴포넌트 간에는 부모-자식 관계가 존재할 수 있습니다. 어떨 때 부모-자식 관계가 성립하는 걸까요? + +부모-자식 컴포넌트 관계는 **컴포넌트 간 데이터 흐름과 역할**에 따라 성립한다. 자식 컴포넌트는 부모로부터 데이터를 전달받거나, 부모 컴포넌트에게 특정 데이터를 전달하는 관계이다 + +1. 부모 컴포넌트가 자식 컴포넌트를 포함 시 + + ```jsx + // 부모 컴포넌트 + const Parent = () => { + return ; + }; + + // 자식 컴포넌트 + const Child = () => { + return
Hello from Child!
; + }; + ``` + +2. 부모 컴포넌트가 자식 컴포넌트에 `props`를 전달 시 + - 부모는 `props`를 통해 데이터를 전달 + - 자식은 `props`를 사용하여 UI를 렌더링하거나, 부모로부터 받은 데이터를 기반으로 동작 + + ```jsx + // 부모 컴포넌트 + const Parent = () => { + return ; + }; - ```html -
-
-

Declarative Programming

-

Sprinkle Declarative in your verbiage to sound smart

-
-
+ // 자식 컴포넌트 + const Child = ({ name }) => { + return
Hello, {name}!
; + }; ``` - ```bash - function add (arr) { - return arr.reduce((prev, current) => prev + current, 0) - } +3. 자식 컴포넌트가 부모 컴포넌트에 이벤트를 전달 시 + - 자식은 이벤트(이벤트 핸들러)를 부모 컴포넌트에 전달 + - 부모는 그 이벤트를 처리(이벤트 핸들러 실행) + + ```jsx + // 부모 컴포넌트 + const Parent = () => { + const handleClick = () => { + alert('Button clicked!'); + }; + return ; + }; + + // 자식 컴포넌트 + const Child = ({ onButtonClick }) => { + return ; + }; + ``` + +4. 상태 관리에서, 부모 컴포넌트가 상태를 관리하고 자식 컴포넌트가 이를 참조하는 경우 + - 부모는 상태를 관리, `props`로 전달 + - 자식은 그 상태를 사용 + + ```jsx + // 부모 컴포넌트 + const Parent = () => { + const [count, setCount] = useState(0); + + return ( +
+ + +
+ ); + }; + + // 자식 컴포넌트 + const Child = ({ count }) => { + return
Current count: {count}
; + }; ``` - - 선언형 언어 HTML 예시에서는 '웹 브라우저가 어떻게 article 엘리먼트를 파싱해서 화면에 보여주는가'는 고려하지 않는다 -- 명령형 프로그래밍 - - 내가 실제로 **어떻게** 할지에 관심 - - 과정 중심 - - "주차장 북쪽 출구로 나와서 좌회전을 해. 12번가 출구에 도착할 때까지 I-15 북쪽 도로를 타고 와야 해. 거기서 IKEA에 가는 것처럼 출구에서 우회전을 해. 그리고 거기서 직진하다가 첫 번째 신호등에서 우회전을 해. 그 다음에 나오는 신호등을 통과한 후에 좌회전을 하면 돼. 우리 집은 #298 이야." +5. 부모 컴포넌트가 자식 컴포넌트에게 콜백 함수를 전달하는 경우 + - 부모는 **콜백 함수**를 `props`로 전달하여, 자식이 특정 행동을 실행할 때 부모에게 알린 + + ```jsx + // 부모 컴포넌트 + const Parent = () => { + const handleAction = (data) => { + console.log("Received from child:", data); + }; + + return ; + }; + + // 자식 컴포넌트 + const Child = ({ onAction }) => { + return ; + }; + + ``` + -```bash -function add (arr) { - let result = 0 - for (let i = 0; i < arr.length; i++){ - result += arr[i] - } - return result -} -``` +## 배열을 렌더링할 때, 각 컴포넌트에 key값을 만들어 전달해줘야 합니다. key는 왜 필요한 걸까요? key값을 정하는 기준은 무엇인가요? -# 브라우저가 웹 페이지를 표시하는 과정을 단계를 나누어 자세히 설명해주세요 +key값은 각 항목을 고유하게 식별할 수 있는 값을 말한다 -1. HTML 파일과 CSS 파일을 파싱해서 각각 DOM Tree, CSSOM Tree를 만든다(**Parsing**) -2. 두 Tree를 결합하여 Rendering Tree를 만든다(**Style**) - - 실제로 화면에 그려질 Tree구조 - - 레이아웃과 페인팅에 필요한 정보를 추출하고 숨겨진 요소나 비표시 요소를 필터링한다 -3. Rendering Tree에서 각 노드의 위치와 크기를 계산해 **배치**한다(**Layout**) -4. 계산된 위치에 요소들을 표시한다, 레이어를 만든다(**Paint**) -5. 레이어를 합성하여 실제 화면에 나타낸다(**Composite**) +- key가 필요한 이유 + 1. 리액트 효율적 랜더링 + - 배열의 아이템이 변경될 때 리액트는 각 아이템을 식별할 수 있는 고유한 값을 필요로 한다 + - key 값은 **리액트가 배열 아이템을 추적**하고, 배열의 **변경 사항을 빠르게 파악**하여 최소한의 DOM 변경만을 수행하게 해준다 + 2. 배열의 항목 재정렬, 추가, 삭제 시 성능 최적화 + - key 값이 없으면, 리액트는 배열을 렌더링할 때 모든 항목을 새로 렌더링하려고 시도할 수 있다 + - 하지만 key 값이 있으면 리액트는 각 항목을 비교하여 최소한의 변경만을 수행할 수 있다 +- key값 정하는 기준 + - 항목이 고유한 ID를 갖는 경우 + - 그 ID를 key 로 사용 + + ```jsx + const items = [ + { id: 1, name: 'Apple' }, + { id: 2, name: 'Banana' }, + { id: 3, name: 'Cherry' } + ]; + + const List = () => { + return ( +
    + {items.map((item) => ( +
  • {item.name}
  • + ))} +
+ ); + }; + ``` + + - 항목에 고유한 ID가 없고, 배열이 고정되어 있고 순서가 중요한 경우 + - index를 key로 사용 + - 배열이 동적으로 변경될 가능성이 있는 경우, 리액트는 최적화된 방식으로 렌더링을 하지 못하고 모든 항목을 다시 렌더링할 수 있어 성능 저하 + + ```jsx + const items = ['Apple', 'Banana', 'Cherry']; + + const List = () => { + return ( +
    + {items.map((item, index) => ( +
  • {item}
  • + ))} +
+ ); + }; + ``` + -# 리액트를 사용하는 이유를 조사해주세요. +## 조건부 렌더링이란 무엇일까요? 어떨 때 사용할 수 있을까요? -- **페이지 전환을 부드럽게 동작**시키는 것을, 일반 자바스크립트가 아닌, 리액트라는 자바스크립트 라이브러리로 쉽게 만들 수 있다 -- html 재사용이 편리하다 -- 컴포넌트 단위로 개발하기에 분업하기 좋다 +- 조건부 렌더링 + - **특정 조건에 따라 UI를 다르게 렌더링**하는 기법 + - 리액트에서는 **조건문**(`if`, `ternary operator`, `&&`)을 사용하여 어떤 요소를 렌더링할지 결정할 수 있다 + - 즉, 조건이 맞을 때 만 UI의 일부가 표시되거나 변경된다 +- 조건부 렌더링을 사용할 수 있는 경우 + 1. **사용자 인증 여부**에 따라, 화면을 다르게 보여야 할 때 + 2. 버튼, 링크 등을 조건에 맞게 표시하거나 숨기고 싶을 때 + 3. **사용자가 선택**한 옵션에 따라 콘텐츠를 다르게 렌더링할 때 + 4. **특정 조건에서 에러**를 표시해야 할 때 + 5. **데이터 로딩 중**인 상태 표시 - 데이터 로딩 중에 로딩 스피너나 메시지를 표시하고, 데이터가 로드된 후 실제 데이터를 보여주는 경우 + + ```jsx + const MyComponent = ({ isLoggedIn }) => { + if (isLoggedIn) { + return
Welcome!
; + } else { + return
Please log in.
; + } + }; + ``` \ No newline at end of file diff --git a/src/App.jsx b/src/App.jsx index 0ca1a55..d313ffe 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -2,39 +2,28 @@ import { useState } from 'react' //import reactLogo from './assets/react.svg' import viteLogo from '/vite.svg' import './App.css' -import Header from './Header' +//import Header from './Header' +import React, { useState } from "react"; +import Navbar from "../src/pages/Navbar"; +import HomePage from "../src/pages/HomePage"; +import RankingPage from "../src/pages/RankingPage"; function App() { - const [count, setCount] = useState(0) + const [activePage, setActivePage] = useState("home"); // 기본 페이지를 'home'으로 설정 + + const handlePageChange = (page) => { + setActivePage(page); // 페이지 상태 변경 + }; return ( - <> -
-
-
-

Hello
World!!!

-

setCount(count+1)}>{count}

-
-
-
1
-
2
-
3
-
4
-
5
-
-
-
- +
+
순위 상세 페이지
+ + + {activePage === "home" && } + {activePage === "ranking" && } {/* 조건부 렌더링: 랭킹 페이지 */}
- - ) + ); } export default App diff --git a/src/pages/HomePage.jsx b/src/pages/HomePage.jsx new file mode 100644 index 0000000..2dc0cae --- /dev/null +++ b/src/pages/HomePage.jsx @@ -0,0 +1,11 @@ +import React from "react"; + +function Home() { + return ( +
+

홈 페이지

+
+ ); +} + +export default HomePage; diff --git a/src/pages/Navbar.jsx b/src/pages/Navbar.jsx new file mode 100644 index 0000000..ae43a07 --- /dev/null +++ b/src/pages/Navbar.jsx @@ -0,0 +1,44 @@ +import React from "react"; +import HomeIcon from './home.png'; +import RankingIcon from './ranking.png'; +import ShortsIcon from './shortform.png'; +import UploadIcon from './upload.png'; + +function Navbar({ activePage, onPageChange }) { + return ( +
+ + + + +
+ ); +} + +export default Navbar; + + + + diff --git a/src/pages/RankingPage.jsx b/src/pages/RankingPage.jsx new file mode 100644 index 0000000..f63a52f --- /dev/null +++ b/src/pages/RankingPage.jsx @@ -0,0 +1,48 @@ +import React from 'react'; + +const weeklyData = [ + { rank: 1, city: '부산광역시', count: '2억 6천만회', views: '12.3k' }, + { rank: 2, city: '부산광역시', count: '2억 6천만회', views: '12.3k' }, + { rank: 3, city: '부산광역시', count: '2억 6천만회', views: '12.3k' }, + { rank: 4, city: '부산광역시', count: '2억 6천만회', views: '12.3k' }, + { rank: 5, city: '부산광역시', count: '2억 6천만회', views: '12.3k' }, + { rank: 6, city: '부산광역시', count: '2억 6천만회', views: '12.3k' }, + { rank: 7, city: '부산광역시', count: '2억 6천만회', views: '12.3k' }, + { rank: 8, city: '부산광역시', count: '2억 6천만회', views: '12.3k' }, +]; + +const cumulativeData = [ + { rank: 1, city: '부산광역시', count: '5억 3천만회', views: '50k' }, + { rank: 2, city: '부산광역시', count: '5억 3천만회', views: '45k' }, + { rank: 3, city: '부산광역시', count: '5억 3천만회', views: '40k' }, + { rank: 4, city: '부산광역시', count: '5억 3천만회', views: '35k' }, + { rank: 5, city: '부산광역시', count: '5억 3천만회', views: '30k' }, + { rank: 6, city: '부산광역시', count: '5억 3천만회', views: '25k' }, + { rank: 7, city: '부산광역시', count: '5억 3천만회', views: '20k' }, + { rank: 8, city: '부산광역시', count: '5억 3천만회', views: '15k' }, +]; + +function RankingList({ tab }) { + const data = tab === 'weekly' ? weeklyData : cumulativeData; + + return ( +
+ {data.map(item => ( +
+ {item.city} +
+

{item.city}

+

{item.count}

+
+ {item.views} + +
+
+
+ ))} +
+ ); +} + +export default RankingList; + diff --git a/src/pages/cat.jpg b/src/pages/cat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..85324904366af58b564a9d51f022e051b534038d GIT binary patch literal 86068 zcmbTdcQjm4`!+nH1xZAWPC_IxMD$JyqeTrS+6bbKK6(v;=+Qe7y-t+TOGGz%nbCV^ zFv{qBp6C62@4MFb*So&!oORB<*4gLY>pJH?`|N$~d*4ppE&?7affPXiJUjqE;cf%m zE&;yDxm%e704gc~E&u>5ZB4wF|5N5301#pY zAo!m$dUxml;Lh`Z?*5!#l%0z%7Nq+ z6qP<{Y3qPL>*|?)H8Z!cw6cadySTc!dw2$Z4+;+X5gHa77oU)rl$?_KJ0~|Uzo4+F zxU#AmQBzx2-|(-!qqD2Kr?+o(YLvCLPSXPzpwpY8@F?JVfpfQ8t?!g z?=G0|DF8Bn8^WK*k)EklHop}W?79gqNA-UvY1XZjIrHiM_@ZUjws7?I@Riu}dWXQT zKilohh{G;Q7G>HLz13V>I8a)7sm$0{^hb=tVH?sUSB!O7-zvhnZMzCqFQE$yGh^sd zBbko?=-s-^#gBNOh0|u>I$zzn@{*J|b?7dJ=NJ*L@+b6bQ=I{aX$-{$c(es@=0O_} z?pN~oH2QS%sCG-fJu8^v%*Su(>4ZY!&F0s{&7A3G7Tjj^JhJT={=9AcEE>e8Yyxw% zC*W~uwZhP^ilFMCd0D#25XFQ@RVlm+tsSE7?Zij94 zWSZ^32r)8Jro>BoncC70s!Y0VV|qn?Mz|sq$?_ub!$I}OKX0aZ=4IR%{CMUkuJNxZ zuCuPF4%Gf(Eq&=~9|B)oXpaY;R<^hiGqfWQm?Kx zzItapN~?_zoUYLs6xz)7fo2~pgtXS4XpQ|$;1&^x`qwx_dBxj2{7Xb9maMQ_6R%T< z_J)F9hSXX4p?ufyXY04d!KM#~2DXgs+_M(DqL+Q{Eq~@g&9C#NzwGpOJ6LF&hKDsN zQ(01ZQ0j?ftSb&lC!C&!O1fDbth8_5JgrSZzLxB1YiGqpTOT_;$QQyg6>nr^tjyhq z8JyWK!Tm8Vygw?=Obv|cW}&h8}uEudV_R!!=>f=bc@vFA_ ziY(QJ*sc>-Wkwn^DW_&DY@Zac0Gruburoa|UsS-!R+rL4;5})V&@R{~3W4?x@%I`- zy~J#MK>Crmk@Xml5jCX&4iXWTc(?=$p?NRgTul>0titg_Bfi$5TR?G2HKMxL26vkbTTZB!i}*;`@P0hts9q?ep|5%^<2Dqa%!!yFKjcb>B|in zhvR)acnBGG9mw7ViubUI?t_K#7ag$v z9=_5(_&)82gHLOKSsgNA$MA6Jr#B-3Dw<0un{tPuOg;$vGLNsarF8H8wiBA8n>;A) zG8FROX<{y7@J~Fe5PQh$-U^`?NR7;e(wmVdaK#vTd4td8 z0~K|*b772kJb}k_Y=pr(qT$&w4Sr-&A3mSeKOEf?y;py!Mjsw}$oQq6AbYpx?$8#R%4Oj#<|rp zgL0!SQ$)oHKofW(ws8pG;a#o`M(u;rvj_K5;2S%*mNT2@!O(BXv^l}-VnWALCOEa! z7yavkaRwDqNSxGJOG8FNan;qioDJ;M6Mam6VA@IIL;aBcoV?lZNmf-sM@cKbdyrr~ zD;fJy6ra&p$Zjk4oe z_6N|m8VdvrN5RhbFdbvI$tecvb8Vko>m8TdovH$RX%?ot zQjjRy>joUn#RfB;N-t1mPV*o#xo;KJs?)hByyK0yVa;{0 zcDz0&t5!bg^quAjy9FRWQW$gtdKfTAJqCcI*V21+X)jpaliW6l6 zW!EL=P9#M4?Ujzc9fGvKgPJun^?MDs0LO0F z&4i!$jqrhR&QhfHJ_t+GI0MmFtQhHfBqd*X3U}k`6dzl&pndio{MRGGb}eEhENp#{ zY;$@P)W_Q3Rc6Q+?%_KmL$-tZ&7t4>58e12)-Nq~wsufCWKa<+k!HrxefWmvoNNVt z&-#Xbf-q=wPm@14lNdeP`dfx#@}a$4mV$$fd!4RdgHOp4Z^Qyw+1{yq@%!vm13p!; zTYv?sIHF!ypmV4GcKGJu@s9eQHaO2qq+KQi4UtAIkMaDzC#t%YE7g65dJ^a@;>U@&d-1n`65@>3ARo#R zZan208ZdFx$3FvZym|Q@-)-VRMT)iXL!p-Q4pS*k>eg6 zM!FQpx;GP-$a`|no3Ix8E53v7e?t%S&(!{nka@X_{}lUq3-B27>^pmR5ZAUq*o0@h zI7h_Ym&O47_U2Hj*~zaS1L`+73)QdA z?~-q>8^F^HRi&#DebKC;N&U_1xQwmcDO#!35{Zl0krXNu_AhHI0`V96xwp>KoJIx0 z@}Q|&F@B}BDQ@YeYb+<{i^+p9L)C=khpPXCqg68%RvZyYQgSY9j(N8LUQ&2}_5l9u z4efS=pTFlGtCp|W9~niBU!3r!e<33dOW)t#QkI@J}QT9fUSP`Vawyq|md zGI3r~en3}3-a1%}227NYtJ4L{>_<-X_Zv5kfA%vvI@fk>jQ7-h2+|=4G9cB7k=}4x zTC@{<1X|J^-5z9Lli$#aGn`@N0_H}WN^i)TY5b=*AT!?S6&z@gt*t@^I*Xf1TprA^7I)@c6X`OiG^ruyNQf&vV`KZ>X=#As!%dNYA3x+mD0iQvI5!dr#aP=|cOB1>;V$XgzA0(V~ z1k1k%lmlD3EpUO7=2~|>7uVhxE%t+Z&{K`%xQC24F8ik}L?m|f@-LGb3Tzu7nz_185*Ni%!XR1^4DxEdzVn3qM zXgZr;n~3F=R~(*aud2|;`;YbB^etWkE2EYr>OQziBM!}z%4YSEW7gc{_Lqq6nRS}+sjb+LL=Ryj0}b}vkD!fX_h$kGE>LvITS%&W%C*TOjGGd< zeJpUz?}5v%`@l1W^;g`3VR`W~@= z0`JY5u39>PDu;g_7Vn**xtKN@sMEeI2Cl0`&p!w|Rr5;D>4BHGLo1H#a%7_6^joKy zWZ3l4Z+#D{1k+#1^Vnrh2 z*O$7RCEO`|IIvXw6?-BJVsOEbWYLmCz3rl+T&Y;YEnkiyGOLF*qUm|z8B90pJ(>;b z)o4}I6CutEAFb0Jmdr9wrr5!pz&BZOjn|3JS)rabEnEk)j%~&7j!OIkRxZnSjDjI= z4)Smbk_|2wf+CM^0j0BV)KD#fBvI?pt@Q~X`Q?*aY*)YTP@d5AoVEXRWqCOUAz4=6 zxc;;e0|};zp66vV^WQo5L>XWUfA%{OAB63%t1U^+D&CIVn8{cy1fp&zM~qP?U!UD< zy0A--BYY+n)d+3@b_+Z=zv`m|5JVCa*>;Hd~k`ysi8!mM}zALMLPAP=-TgPw+AQrGPiyNDF~GgT&(i6_Yh@ zWWB=q)zF>~a05OWjkBsbP)*LF_WqoP(C@qj$b*?WpNv&`p||+&=RMc_LoX%w@KPw{&GJlel?m!8TVSs65mdcQH`@&Q%-KV@P$&k zQ<~hz9N4h3s-}Bh+roUn>h(g>NnwK0Ndaq8nGmDR*8-F3h`xF2^eol!Oe-nt>dJUl zVY#z2iE9%-H_ARlm8GX(0uH%thJ?m?!f-Ln&zs`^MXUhT z6+Q3w80%JAS9GPl6Lez3#RxVqF$~rDiw| zm7@j5NdvAURAZ&A?GG)}^#0TLvR)ZUcCoG}ua(c%uEpPf z{+8YXD7@c8&*{gMaGKY7-sSS7fcuZaxUrxg5eW-IN z@wn%pV-&U%N8fG%dI`3RR=7K%YG8#g%!p)v>2Tg~NHAO}hG;oqn}x(H+*u)?z{gs) zB67wgD-P8NeJDN;bcu6SfJ@BpLfsi@Pf1^&QgwRL#yQ1#k7OX0(5G zL$d)AWQCx0y`87+M3pkD^?B8DW*WOb$ulN&YlgD7-z%ZDOcA2x_I}B*bw``&`TbW1 z1gA-~)BZt|SX6bBVy>U9yQM;_Ou6R-D@{kuMU^NM!@eXv@r?5=VE#e$2P4x2APb?A zuna+~jbAXU&DcKKd+(tvH)av%PG91gGnnQm;sgEcZ zM1=fATbZsXY_r|-a%$fe@zS%-!$I0>q|+?Vm8|u%v~D_Oo~(}8b35yAT^tg@4$&us z2khOz!q58EA4Q@fJkeNrHU4*_DEMv+R&zmnv@8>Z#QwbnK=XVc zoLtS!ZqmLHW+3l^J=^&FCD}#1)OkdTqVAiwH0uxmDtp2?NRes1nPs+VgtDD($B0Z+ zrrPH#XG^cs3C-Zr=%3fw52A>Gd6rW-=dI#>^|e}aRm~nkzlM~ufU`$lXMNHN<@^_O zb5kK7#)P&TA|BlWoJki?UMln92XGnZcY~ivZtH&JX(%zEon<nTFKjF!*)-=Vmj=EA zI+-tmn#`8!TF0KzCkoL~`aqATu{9Arz?i1mfX|R8cnL`aLQblZ@D!Hxc*w@#O8J=` z)Pv!b>DRi*TE)!!_8&dL&y2ax9mvT0T6ON85$n{+E<6ug8_X{1csZe(0w1{kq~!nI zsYAHN;a_uU6=k~1?D?)O(8lj}^o;$lG-IF|BFy5`I^W-(eMlUPTl}l^=ePUmzCu-| zruO#t6Xn+A@#iZcMD1!0(pE;<7^7svEMqmpL5T7@YE6;_q)eGl$R&d}o?qxZcXZc0 z=lAlsf@mQyD>r;=$Qm0RWJHF5M@aM59-tEF--Ps6x=gp6T%r$d0d1*j{@y}XOReOx zPit!p2w6LPcD%n*w@?)j$|o(0BSoJEkIUNyu;o}s{neSM=1^>9_S6a($n%T$Mr0Gn z+78(vh8}R6zW(a0?R~gz%*2#s-TL68V}w?P{vVzQn9d?Xiw^eTdytx8S2pRC&>Mo| zlAHGzq+cxsqK+93pT_(RkYF)=UL`c8zR#)^Z-Lhc=_H`s9iIV{v?Jw%d@8X!>65V_GJT2l~tuh zU!k38nNS;eHfZ)fd;pcQ;wLiDJ&cAe$^3Yd`tI`{(;sFh>*uQE4&&EUN3ov=`yv!V zvf-QuNztVz?ko4+4b8(G~9*K=j3gMB0*|kANY;=k0PAoASvY zS37Yn6XqI+lzt2wdwa>Rmvo2cnvv(Gfp0%grfI>(H?XCFMFtjuI>GT9`|D}aDb*O7 zq-rw?kE*8P>yTz>UKL}|r1Ys$f&CZtuMAtiINce(0Dz;vHpGx6uDa6JBeCdy#F3WY zBN+zYUpWr2`RdX!*HnXJYP=rdjAti>{alTe())V5vqW9QdTT;iv!?cRm*aRrlUYi( z?eE%VP$fu_II1U149LXQI?aMS= zm7MWvuOF+A($|Zu`9Cl(B<7meNr~vy1F&yk)e{i=y-g{N;5HnEfMKl4W+R*j}(^mIF%@a&R>won(H z*;P?0Q=IicwJ2R z0!$Qs;Co9b&)twQlB)k?*=MMZ2MXHQcPk`#rwX{X+NOKtAj2>y$TR#YOL%var{cNu z8`ZOESlEhfd5537PVu%1>-@cf?f$`$=i}6N3**`tc5Q`LXZ_T+y78u-3-Bw>-v>kS z0AE2L-6W!%ioKYfS8LbXYlz5qpFIqyFVIgd$~?mVL|OY)dvre{f+lT`3gWs4TZG5% zkN?HzxBz<{>?nkqki6_UE^3l5=$bMAW^b&=N^X*cxA$ml3xXp#+;u>wiK<1-Glpv( z90&6u-g|d9`-%7=EZVntIO}tfL&4GC~$HY$-ZH9 zr_7WREw7VppqEJ#aH+d}W++%%lH9C8v^Ia?j9l;Jk8WcGhCP}O2?ut=E~d_&FBhJW zNjQ9`k@0M4ttR6RxvX@C_uc}g^gGF1jP2|=F592Af+eK{-4Y)oSzpkv*E?3ni8)OV zWhH{@B6iz~kKRWR)BM&74C9c4lPYagFhnxBtl|?#C3F}~r3+3ns(GF$BOOFo^;UTo z8KsA=q!Dek9bQ`NnHxX1U$OXV7+iM%gr_kljPAW$;$dqR!1XU!!}x7ZjV=gC7(;`c zm-R&3dXSllF4rUL=#FV7dZHk*PT+TbVf7N5A?br5anp@Hszi{4fq}AJ)XY?H2OheMyO*nZV)5d|t%< zuGU3AlF*5nfTB1>0E~CnK+2l=TJI_Vi`One+zxNNd){!hy7}VGH#gT~ zIN@2`vWBTSw&-5NQ`HTbYKt^)MeHmE2+O{R?m3;V7%!g&i4hkFWvr-C8CW-jb7eks zns!e~lU#1#bE!V!3TEln!u`qo!0>C@`%Z9vC02Hytj9HGz_!zP!}mxM9D||XJY-M$ zTt3Q-8O=8X8~7()l^|54%J18Gyjr)*9vY{ioi0&a~jf73F|EjG48E5p4R#n?7fohVNXJmp{_8oAR$MG44 z8r@3kR|-48H0~??oAkYF+@Sna)jIi~&@hOU zY{r_3Mxb^^azz&*4CR*ZMU;M;he%FdU>z*R?wMie7py$fQ&gd4}+j5U!% zY_&0MSqygrqEk1W9~wufmS6EIVNb_tSNevq&gJ1BlYfNr zM9u;8vAoj))5d6#_SL-s8(qjoo<~c-_e@nNVyy21B|Y-fO5Pc=wp^arCl{-#;&4!* zyzVMW)DS6d&?09c9Z= zdEV?X*UvUym^Z=o(DoxO10=S`#MKt#SqB-V{wwmt7J6%TSKt?!oEd-Aj3K;$#y@}f z1=gbV%IpgbXX}#jpF)0r!$n-YM|YAFJX@A;XPH1*He?LuUCv(B4f>S)tL91xyGy8%kPxOgP-|9_TMjg zxgiR%{p5g%;KHSx@=z$sf^5JHWV4TpSTp}n^#GXC@ZixXuq;EFmnO)=&TS6^$*TFv z&$M7S{3T^&!PLd7jf4XsXxl>=y71?dCz!wY~QGnULfU z^4sy{Cc;H#p73*-CIHUggzi70%w)^LX{p|KjH$KbT-NRE{)bKeMXmA zy#4M{COT3Twv*LdPcUzC3&^?!Xp27f)UpZk91n{igfUzS8oVdg1Br>{k7kMwi?;DZ zTK3s=d&d7^b*;#8W*)F2c_!0ADF5tb=A3eiimsdXB16~BSXGtiYp&dR_CFf2a-SKK zYQrte5BWCcTcujW-IqVFyMIZNQM%aaf^d!vX0FkNUA3R3cuyymE|DW4=@zE1K~Czk zLmq4i^>f2$a6#n4>x(tPn4j4VVSBqg3+`rrhm;O0XqfVxJ++NEyWiO;wJZa3tLjwd zC;X}Tzdq1OD62PWPVK1r^O$=iSd}EVw#LQ&nMO2BweodOwnw+#KHDh!gl(;?>MbBo z#R6H8RBgfGeByExqj&|>L@K75;C&i!Wl#<0R$Cq9gZLXSottW>+4o6_Pf%z!*NCY+ z65CxnoJ_wk4Lgyb`}v{XQ%l2&#q``CAk_M>q2r(Qw_%Sp(CgV(19D{D)Gc2YFErrZ6C|VROt(_Kiw7fXI!Y@^DfF8h;U!(Hq6FyQ(^Hjq;=MKx z{;q+`OpJ_v2=|=-JuW>e1ePx8@87_jp>)dw9Txr(!0 z2r_oH(vxgtfj^uzS?J?-+|k$;8E&5c>rrma_*)%MH#KiR!95lmvNhm3;ysh>B?z?! z%ifRiz%MGT@YKkdiP0UMhwpm~&L<4^7E&;#PcV9c4C25MJr;9Eq|4qPoNIMbm{K!V zcp8bzV5j`ljB3vs9{E}J#aOd|;!VUJ0AZk5MPsLlHmDmZ!^;q+r541vr3lZ%ra-Yy zi`@~(0CPfVqb*0LRrMw}AG6b_At*aRji~(ju$N(&N7;j@5(P*8*oC&yh8;yMehll& za&ozJ4(@)(%!CQuei48>=buKQyZ;$8vAT2f;Y^;Zh9NiapD^rzg!eHX!tzy*H6D0i zY-B{{#LC!?F=(}WLw}wT)iUP%t42Ze7jjx)>NU6Qk8C10=R9fJFa>c`wFqBXsZKAF zbjpqm&ujSIYHcPyH2Y_E&GC>>i1C5JozmxLsrp;Z`a)STfQogW2WV659v8CR8_}KCl!^AfZk#UfB<&CAX zUlW;2KDY5iA^-N&H-~1ygb6=9%3g2R2oD7apYbV_PpB<+A%7YsYKP8SBK%TiAG@7nr=!=hDy(phA2gR@$P*$?9&%x=g}F)TjxFuSjV4ik}u zkCD|bG;oprZkll4zqCU(U_y(_7SrO)#`N;+%Ly|(0f>+1d!>GHhGWKxx>Ybq5htn> zHY|mo{PPQDU(0TsCBf5<)v-7(vin{$K&TTaWa>M-^zn!@L8zx$sK>4(qZCYYcyUR_C(=C8T zJE^B~^ZW{WbhcG-Y7nutgdYWctIVX5Xbkb=L_Fa2e{MSGUW)&Xc;nMxWYJFjwz+za z^LJCUz6Cmu+EE^-qQNt&aCgHtL(BoI?ZO!$|r>H zpCEXU^zfU{&T2DQGs;%uv`%sb?s-YI3=YOw)lwF)&cO#Tp37c7I`301Pnsn^wu~U? zj_f>}GiLb$lzrwAo1WUUZd|3J_(yQOVSB>~whXm_adgWj!&j$>e^d5K|0p9|g*)0< z{Bs+6g*j*@+AXM~*C+zDy`^%pcww)IntjLGG>2?)h5o$Cb9)xFHzS=^sTxMD32>be z8@B3@A^%fWB|*%q-?xD1?*q{5ANnGD?zqC#_1UBADse91*EW_hVLl?wnT z=$|EeG5(3o1Qs@+%5o#^oL8z@Pre^T=edk!!x*})PlfyD^|9I~V(h^}vBFH?B(>$9 zthJPQ5mbH2Er5~n%a`~yV$a&7{*|K8nr@hf`{+IG5SEjknx;@MoRx!2f`{!whrYg5 ztLGy7v5+zt{j8yLu7V)*yN(Rlyk!!H%y`@3KfcP65L&oH0dfsH1d`J!6t`Obv}MUh z*a;PuXSsr;pkYT+K-pbh7e@)FcKc?h$~i_eikz>kp6m7}1W7MLX!;@6_CXOc_{|nN zRr-%z7@~6Nc8ODaqLx3w=zGpD*8i{^Ao*M*A5~Y(omUZ=Mm7UuVK(TPC;JFSfAPdc z#nbDSglvNFn3tQ^P<)N7Av5Xt9sTA#c1S?U)UQrv1HB(_-9(f+Q7)DlOJ-YtgHEDL7s))yfV+s`2zpAc>1OBA@z+= zfjBVc$;UCm2c9e^{%*juSot{!!c{r?Eb+HRmfm2)7dZV+Yncnv%>Ywofm5baRVKc9 zEe0+t@n}EcPChC9Jot2#d7=tNoK*1P<&HtiRH9363YBLqP2PjSA9(u)HEGTkHJTD= z+&lQ9R&t7>&f2jkYa0TVPMVFHag~-ZRSrpG$Lm8?>JY&Z`nKvP?Ce|vg^JS;Y zR2hbYyhl$Ei?2am)ED!hzjCgbWaEGR_!XZ>RGop5JIi8ZYqMatB|l0~0h7g!+#>8y zV6U0?v*Mb1Sr1&kwk1kVma|3ap!LW1nAJZ+sOHR>4vlV7T6P(|05xYH5To-nU_Iu9 z4TJ}$j_br`GL2KYCu7bz%8J^g`U`}IEW9&-tkHmjWIE8TQop4n6Yv2bwEZ82T%v&n8Wp zlso3FyWU5vl=-liS>>;T006Z-_mEKAwWy^r3z~M#G<}vJarEp#NeN+)e?nDbo+DUX z^NCej`UN_FyTN&B+DUr%*iypAbhT)P!kQS| z(30JoPgc%roRIwnC;4_O!f^8OaY%swQ3j9fci zawjfYY4Jp1vX;4Ic>lNa3!0AYH;VNonc_B{w}8X_pE5&fS1!g@WtmRejQHzkCLX1|Ee~)!+B+$&&v`f& zUB)u-1Vev|x^{2G%JRXO?iA*;vaezT9x$>kavq(fKdBIY=#i1l(CEXG3{MN&zFF;; z8>zm^4E03e0@sTVoly{0=>#N(o-aV3DWFYoZosNLUv)o`{w^QT-A8>5)u7;Y(D%Eq z&+~jxOmIE)fgV{H9;obW+w`S8zxxa}{UQ*`X+ZNtz9yEgra+L2NJphW*OS2y0l#a~ zwQ7On+L?q)LjZHx$T56WOYp&ve^;VhKeSPLVkgz&J2&nr-LZf#615VhG5A2eBj#y@ z-CvqOH#?0}A=7Qo>(0uReXxYrGS2AaJ6Ns4Cra8Gmic^qS@)~5`ZKk2`w+T~i0z;(ilGaSF}TRsrRejMa$2Ks zhdTGy&+%u`UDASQdDNef90KJ-OYl_0LUgKaZuG+e^h)Y6IhSV3#-`d2->0%}3NN^G zey>+Lt3_2H0b{vYU&9>UNupO<5SQ{~iZ2xG^t5kSpvc!ZQXCkT9IIEl@7JRI!r)V~ zaLb{2g_f6kgV|(6rZYlg?taU1RYd`c0)bJ8v$$VZzUKaRU*r2$iin91;j#z&-6`CA z56smBYxjv5BM}?p$mz-BEwnuhH%(66=5aq!AlAAG{afdwAFI;U!2!6t!cE*R-i9T= zrRr`HDymE5GXMt_dO za-EpwSybS!%q4{$Aqd&zFO@!3=yQAg*JGa>%Etbt$yvT?Lptd<=J2Drh%jL@EIeFa};8iMoZTL+$ZCNa^Rd| zQ?aOrx?)pmJ80-f@?*!t)D>QYPpX#yRh&WDVDZ;TSC#~%tBI%SSwz3JH9wrARos&Zg;edA)^1 zi3uwOXf|iPMPl^oD;j@2j%G&>)X207@I20$$`RPQufzC5dKelsaqM0m*jsH^(g3P4 z^#1L{g<0rh(3XOxR@47Sp21&Md8F^2lI#MKYmg+p_-&v=s_+<#zx+mbpb=s|L15WbOFd|EuAt z{y`N&^M_a2x%7OW*>}ws;``I`!^3JR;tjn}mj@OI$DxgW*Q95q?Ibcjk@8hm%;gd+zFUf|X>5(wHcRIT7m4Dova?7VvC_hO&)0Xq9`QlIpX zvWczrZbK5m7cX?uc0*)xXukPBxL!`Fd*tuXSot=g#g^CDhRp-zjW=e}C&REyL8yC4 zXCex>J2Qc|KixulhQKQIq2_YjH2*F#;Yy6CrC)S~%1q5TTkI7sw+b|wt*97vq$2)3 z*5ez2HY7eQn?k;-f%(z;@)-2G@dU@bl<@osUBy^*GUT0`XK}0L`4GPNckY6ZyX>$} zw_6DSy&W1`C*IP9FJ^EKbU6LuI1rd!;qZC8IzCahFvjO7I)XB znxDd%USOeRa>BBP=6*ojCUBq}^EI?zE-VI3(^M>MMW0uJD+s#b8nVNJDwm>Fp?gN( zjj9R91=>s<*|>amu;N3X>Vty+ec=6wg`6zOFe};|^wK{aD|1quJ>Epg6tae}@YZ6b z((U@`!(8D;#P&VnVOKHNDL4F`JRP)2pZK`z=-9y9`O%(9iT|7(rr@dFBT@`@yf7U` zSC?5tR^fE@p!y>@R~+sm*v7@(GESMp2^+m!I+$fSBspdrhUyF?PifEz%Z{BFVWQI9 z`I(oNYxNiAuNJAx!#+11$TgH?nq2<}+CjLJtFOybs$l|gbt@RM6`u+y=_#v@8=?pn zb*k%brV*T6qIx^VdB4Svj()x1TfZ@p*gKl)ffJw*=U47 zVXmgaB>oy19hGD~G|j0^+rN3!s(Du?jYK0MJiMy<|IPyall6Z&fPd zlP7ql4vgNgPlhHB{(ZT#W0Y|tb~dfjfqc-OrG({y;sP6Lf=V%T=OJeUp2>Q`XA#9F zdXv{_aVw~#tg5MoXP4;{9xY;9k^G42wjbMszGQ~p&J&m?yuxa=LaN9WRH61{|L0yb zF&*4(k||3s=5m6#JNy-+&1(@atRX4^tH+qANcl1IPTVsZ5`tq$Jdj0c$TLV7Nms+VLM>(fxTPa&uylrcKKGpx` z$8c$MmwiP|xi!)>4L7A=E%BtSr{<<>)jNg)&v@BcWgrO$1wq~pRmJ;0GtfC_R_b6` z0Q$M>^-7cC%#-jebck2ZklerfwAP<0Y;;@oHW(OiXoDf+FNam zy&?lON5|@R8gl)mifZBG>9Eo6XM6klszu4TJTN zbmp%b=t%!!o>~ekFgQP3LST{ubmSP;-H2$18H!7<&N`+Jq{_^DPaLN2Pdl-cI!`X; zSHez{%3$C`Gb&QxxLLR)g#l(Q!Xj$ii!MWJ$Kc@Fd;(S1Ydq8=jz(BFIMwxjItOPO zSwZpltT(<-i(jXT(w;wJsN{Ta@TdIu`gqBD)$^K8&-uxomGZKQG{F2%^Av5kFiA$Z7AaG$m#<+2P$0*f_{Wu`r71Jt|$E3KW8YyoK z)=+mTjr5=(1=0R2f*@cf!`tLa55i*Dq=4BK)t6}%x``u{B6x;_S^1&D7!2y0AUB4Q zWWdEix7J`HjYs0gB2=B4a*;a*&TCo z|JbRj*xmgqoKj^;$M}-H^Ba;5*5W(uF(4+FqE5L5ZO^mr`C2z5I)03s(Z_#qNUx$pY}iS$d>0&%7mX{=W<@? zFqi$xBv)^Eo_7jX99s|oCJr!~m*x~jWCHFiEPm>amy*{4g7ts-#IxEo# zQL26YjZ#MZJi2pUC~2TSclX59U#Yr)Hz@tC!Mx_a1qArq++}=WBC-FNiEJgUrD;d( zY||jY^xlnmH4Wze!k)jT$=+NdjE$PQfZMh9=VgEA5&0aiLku2z&FMew}AW~us{Re zD{3$fgZ8sk3qSScZB4Zpv9){6C|g^%?gbQ^Rm8zwUO zAQ|re(giL0?lf1?iN5!3KQKFYi||&u4i#(Z-(LfEAkSgNJ?1dV2%O!HVW6dWR2Ix; z+MlbIi-lf1u<_RgI^izsoP9F~GQ$#{?>?xT-p0RL`&Q+Huk(ObpX)h{*KQ%mqw@;3 zHN@f3?ngF$q55aDcK>1du2mVT+VvuMIw=C0BV z;1{jcX`P`f=2A~Y$b8xIP_3yP)C=XwrRq|eKp6nm0Lybl@SYM{HTF;#PKS#F$e);J zhf}|9E_#aHUJiUcN%BODCV&U3V3=s{@|lB*-?1#$XRYG4%~%7lX@0g#;?B^pxA{fQ%_IqK$93T4~aVVFX!IJbUC=X_>S|s7CB}VPKZR+t@+tby9 zyJJX#(spy>T{e*q9;`mvOLp?$4vo42);nSzdRS;TUIiF-r!Qme>r4|eh{Oz0;BSgL zopoXUlr7Gz&wI4%6uv|fajHw8LN(tEbc~7Tsm1|ye)-WoMZT4<^*<{q5;l*6&{U7+ zX_Q+mWg;!a&FqFFP)U7_{9qMJTL_uS&yZ1i`3AIPsUIKu!xtU_dd1y$UgSNOCPK|6 z*Uf^%h@Wgp8WEr8X@a#^lt~wj+W=^v;5s>b8Y> zxoMxLLWM?HNjW9_w_D8@rga79ZL|4}$P*@O^BL?E5&p|zyh@neLsq;{+CD2P%;EeZ zmp~J+7>DCR>qiTHxgCrdR(ezyF~uE%7};masaF5qRU|RIeB}h^&1(zGY39%g*w1)Z z7qjvn$P$32Sy6mhR{LiaJ5_8JbsFz$t}V<6)jKIN!EId~9v3tFR#c=pTe)AM5h0^s zKv|88#H?xU%-ut)eai&)=f@Gh%bntQg06FX8jk8hz)`DRhPu=9$K*sFGdgi?PREQD zNbg{N5VyTvr~GT?RUF-?-r>S|Lj6D^0t2x)E>auXy(zQ zR8#BY3v&ffxk{crJ>o6*89Dixz=A2O4YzXW{Zk6vxfu)}hET+e?;bQcFPt|PnK_~E z*=hIE7y84&V@>i!!`Gjc1$KCj$kN?e_(E*9%@Bfp&N>b6uN;r*b!+Q1))Fhv;bV(o z|48Wb>z>5TD4XC8ElFl)et=Xeu)xY7xyHtE1VEGW);ncprMkh9Ik(6V5vWmal6WG{ z7+w}6xFV)U4LK#GT&El%yE0(ok2BFTEsRsk3q`*FRb_$F_L(lh5t1uDQmYnlyK?T_ z=zH2h$;_87aPr{uak!$ z>s+uM2JyMSwf~9h^(Jf$ai5&7l83LP+aV3EBj@46i;O{%jnV~^fNt>d0s;$JRgR3o z9+cAu1^~NT?<=vjS2e{mF)c2l3qH$vY;1DV>opGxUYKOn(5PX$X&dA>T5}gendgA0 z+HB1^Gh2ug!6$?c(_9p7jjVw<=*MBvhdOPPC?UD0-y5p3Z=JzCveciPRBsA)HPkBo zBMJZI5PE0VU?bKm|K1efw~aH!J_?4s*(SD3=;;=F1(1nXC<-d=e%#fsU51V{dIT7z zNKAjQ{mvy8?z=-=}v#J(u5ui_^~mwflO_$-;MP>G%q-D z#!ijsRMrC)d!uA2lf6A}!l*gCRATmck#@T=Jx##vn1d#ge`EMxseNgG%JL}LN~`K( zpj6*}do?nMkGU;6%%!hojn)dyCUHWlW;AZjHlDU$2L{ z?7kcsj*n&e;78Ci-$*2}$gPxU1pg=(oIGO_8NudBu;@XgHg$5h`5eBdl#gz8=`t<_ z8eT@$yn3KjE`_%8EG!(pa<=a@`Kq4#zdFI< z6}7)bJ|2N;1|TXKCcgBS7ezYOxum{iVnyV;1_(;7>DapC4?^d@2(_?NCXNJ9YRtym zB-B?|oY%i73i5*~?-13{IFPQ4@+~(xkvUii(JZ-eXmuFLQP6l!9VY`g<$xRn{W7a) zga2uA>MNSnY(#|k1o>Pg7CK5Lbx`LGTI4pfw!~&{@`<$y_x$ifntsii>H(YrJ6-%A zSNN_1DqU87p7#XCh9<^kvVJ{>lU*g2UN4V}-K7oacwpRKBp@4Ht>krFUi(O4TzSBf zEJ*Kos;)j*l0#tr#r_%mcgs`Ievy%e{;yrj9B5{mTz2mG^SR*NYFc^Lt7s#bcgg&< zEhUxhp)BDa3CvSkF0(RZmnZIU1Z$D=W}z1mY_9p_ed@6^5)bzq{BDlMB_U(!A+60L|-wZ-Kx#$EL(>E3A@_kKzdmF;<1TAY|$*Kv=sfcLZf z;#~o!KacB!k9gLI{D`P8qX-_?#Xlo=ydG!!X=9JB1A{O4td|q6+2Q(F;D)t zGK0QtLvxM(s;`}ZQiCDxxl*Jy`s)l?E8DxJV)gn?=BZSO?4iG6P*70AX zt7!ZmIb@$ZmCLi}H4n|NnD+Kuwgv*w+aWY*`oy<(_wcuZiLyAlzkWLuiX^P)Uykb% z&89gGgT3kv=P-(kL1<5VDchPInbgfObaJ95*2mtF9wagkC=jl{GlfxkK)O)#EM%1G zRi`wTm|Ak^CAM}rS{2Q`uIztK?!AJvnsj!t5#w44{ie7pH$1Ikx2|kvuQa(i{^2hT zD#Wx{RxuKV;7l`WZE*OO{MV&bgcZ$luZS0snI6fafkZtvccBBd6r zsOs7CF52W%iw)Pj&I#w5Nb7iB;;m7ZU6|&$)>V7Aau`}3?kA{WJ<&?7v{inoW3H^1 zWDs`5+jiLHBOTxaeJsMqdMi7t)Xiad;dPK@d5~<(WZXTqo&+0Y-xAw-4wnmfubbCuo7b?zO*r@`;Uey5( zTDXpaJMZ#U%g&;j1}tlnIN`E=0QMm!cEuHC8Vry8K00;R@?Ma0R*juN>ywvB!KG)P z3==kJ$_0rj-iykKw*i2zHEtH&HONK46ww$0D=pTjCmfvT+&6y}r$(Ea+XAYpS%7=< z^9I<%0^Aa8we`Dz?^A~P_-9FBp4BsgZw4OyRSXZTvm3Z)8${r9HBC1$FS^KDoXKO- zF~PIpqm^xR;*=3-oxMtcpnDT{4)Q-HfYN6LX%H=WtFd_ z8Mf2`crf_y9k4Ta#_d82pQ^+QA~FizRKeVx+`7^_JOy{==bPNESpwZBf5@_U##K7q zIG6JIWu>29ce}AZ^e++28A9(H909u)tL=N-=z?w^Pjv7VFUMBee;y@<;MV>lf`ESa zJ*0tsn3jfayDu_ktn`+aAv4M~YI#^)!bG;z)pZGm%0Ec6c);&ZKwHt}=e&C>GGi2% ze8dCSkhkgH_Lm{(GAwPf=$NhMn5H8=>-VwU{MT9fQ;W!DIP=_Gr6c4WqDy<}kKNe4 zMo+#;sz#;UdNy%gEVmdvy1?!kb70E;NNtdEsfk62#H2`;yugpt##vOjaxBIMuR=X{9;*gcM*=0HU)2Q~5!F1L9SwTj_Q^ zm|MQZ>BhGmNLNzIK9p=cpF!kV_be%Q(9%!74$}myFPrwoL|B|3w}!jHx`z@3x8T&f z?@PK%W`Qf4@hiI%V~t)~<|C13 z9HAy0p(33y3P;iGV9*}%FhAh*ig=7r^&g3nxVF?~*8y9AP)(GDKh1d20)YvFwam`` zQ@Qo^5X70k!mbiHw!l&A?2lCO#NEo*^~xSSo;WhvQGNXq2g zFYmc#L9%VBgOPxAP~FOYW&a{6a@VY@-I`B-p^<9xS`D-5#yx0zC@ayQyjLA1%c^!mq z1F8lKKA#Z4YkPWL9cp~jyx;$m?X>Gtg(vu~)SqowI%e;>-zL#qDD3X~i+xm!Ps`Qp zFUJk-aZbzks-Ka{HUCH=%2+OmEXA$~*bcZcs}j5W5Hi~Q*!oA-&z0uZcBo#&+DAL> zkk2@N{4X!?L-V%UD$3VcFBH%_zF%T2jd-@dDS}d)rE;Fpz6&d>Z(vU;Fm2ndIW|08 zO?X1euX2qF?&_5K&Y(teSx(y7!b8S(acT>pEKE@dxFV= z)uflDN*=w~Xt*3Pj=y~ow=Y!QGTKPFQCV0A9an>}GWR0uK!%ISF85jP>+&CHcT4i8~~WhDc1F4_WW-Ro!n}b@dxTfK|ZkzZ|`;ojEQO zn}VPO4}!b{#I0;z{573M1~=1xEv2`3A9-?jcTQ%Ocr?c!Mlk;XT2Q3g-+sqPLm0b3 z|M1IRJ)D!__irn;q{IPTFT@>r(SY=o^2bo60v7IVOGSubn&?a~B)mm(-kNFbo@$V{ zTfOfaN?hsANQ_YvvOZPpbNvV`=ts~P%M%_?25u+NHU(@n;&s}A3w&{i8X>;n3^lMo#}Ogc-QW9s!u8Oy4e2UwAYV9 zdNG~BQIHwPh5ba$zU|zb#cdk?j5}?c;0n0Tl_gew_hzBeog>zZ_AH3cBeTLHpBN~Q zj0mCFYIv7HZSv�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 literal 0 HcmV?d00001 diff --git a/src/pages/heart.png b/src/pages/heart.png new file mode 100644 index 0000000000000000000000000000000000000000..ec432ad11587ef50adab1b9085deb2108e19966b GIT binary patch literal 597 zcmV-b0;>IqP)Px%4@pEpR7gv`R6UCmQ4~GbB*Y}TEEpk>aqggED{P^{Y9->Y&>tY$*{Pk{Sn4m( zKVcy@u8J00*vX>InG6;Zl(1B{H)u5lMVbI@ntPYa&t}Vb4ikOz+15f*?3&X0MZr;c(dQbUL3>qh_;t zxY1~Qb6?!=_gA{z?skf`+wD{3a{2w}f1Tv3K{NC2JD|!DTah3SgV$N;ZHc0Lg!vELEN0aWnWo0Ys!0hT*Se^x=74tyC)g za4X?v@EE`q053`IPSReFs%`*S2k?aC)rlUA=6knHW_BWqqK|tC;QRh@5&4kqV^#;( z0X$r$*=chD+#vaAN(U*Rs#~d$icXY6{*L5nH}jbzxw9_5@2rbPkxU%&KFLGbvd*1( zRUM{6oR^71ZX^%P>e)h3IRsMzTy&RPBG*7wlew-XSfx@q*z5Hw^?E(sK|e{>7foBC zwcz`HBqGOLA~WkmQRL^1a-jetjf_`0fDMut^2n!zmgnI6{(TWyC3!8+cCHSJIu^An jT%w|cg>|qjVbPx$7D+@wR7gwhR7+07Kn%5u;23#xiWXMwvItfjlvOKO(iNXm%*!!A)F{zJnx>g# zQc;A|W)(U1``C_Ej{NA6@#TLJ0C=n%lYGc^p6vj@r-)nz;4hL_IV6Jw&bezdd+h>K z)f?~qTOUy`0e~kFSyljM_EDDQta>ks;$2mz0r;8ZZHgpG0N`6hCZX`2d;WnXg5`@&BRdwOL-^96l4ggq4*pOW03=%*kXdX6f2Qx`P za&Q4!EvtpK>rR9qn#;~e;&wDS2es(W2pV-=YJbJSnV{Z~)Ij5(C?}^`x4u)ccO}|0 u=sF{VYnpR=#^j8;H)DX4Ejk3GujU6`fxa0thTgsa0000Px$Ur9tkR7gwRl)XyDFcinnp&6Xiy)_9UIyk%QJGi>|0*Y6>&!FfPU~;#Hh@#JsjankEz7b;FQE7-r9390BUdO?gQ*ze ziBf9p`g-SpbH0p-_W&?g8jrNr6W5V*zJrKY<-ZRiS~tc#*IT@G(Be2w7-KJm6C&;^ zr7nvz=X@IxuZy#_b}7rUv}xjlyGRIe_Eorp27!szdepW~f`Gy~Ns^T)itYelu@rmF z^L!&s)2Gm`>IA4nLT&4V{d2&~*LD332M2^Yq|1G;B6kt&HOW5_towWd4rZtsJ-_YK P00000NkvXXu0mjfpCi2o literal 0 HcmV?d00001 diff --git a/src/pages/script.jsx b/src/pages/script.jsx new file mode 100644 index 0000000..9c247b5 --- /dev/null +++ b/src/pages/script.jsx @@ -0,0 +1,22 @@ +function changeTab(tab) { + // 모든 탭 버튼에 active 클래스를 제거 + const buttons = document.querySelectorAll('.navbar button'); + buttons.forEach(button => button.classList.remove('active')); + + // 클릭한 버튼에 active 클래스를 추가 + const clickedButton = Array.from(buttons).find(button => button.innerText === tab); + clickedButton.classList.add('active'); + + // 모든 탭 내용을 숨김 + const contents = document.querySelectorAll('.ranking-list-container'); + contents.forEach(content => content.classList.remove('active')); + + // 선택된 탭을 활성화 + const activeTab = document.getElementById(tab); + activeTab.classList.add('active'); +} + +// 기본적으로 '주간 조회수 순위' 탭을 활성화 +document.addEventListener('DOMContentLoaded', () => { + changeTab('weekly'); +}); diff --git a/src/pages/shortform.png b/src/pages/shortform.png new file mode 100644 index 0000000000000000000000000000000000000000..89e42fdb572194e9be3b849c88dc28351229bee9 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|+C5zyLp;3S zPW2UPP~d2Ns!}nLw28*#sNjr?-uK0(r`CioK2NerH@elF{r5}E*| Cv`g{; literal 0 HcmV?d00001 diff --git a/src/pages/upload.png b/src/pages/upload.png new file mode 100644 index 0000000000000000000000000000000000000000..15c078d318541205fb6c2c26856dd3c1e5d1c58d GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|7J0fjhIn}2 zof^p3puo}gRHbT)Ri&(}f6`~i=N>L|uB7EJ{c!NVdQ)JXgXR9491rGLC-q$KNnt3c zdjCEwXX1${>GVm@X9ze2zY}k`<#Dh$aXyof33I#Ei_p&NAAScpynXzMZ-cu|!|&Ba zOj-B;H|%;UIQgiMC!?oO=;V#+YuFbjFIJuZW5L&iM}dY>mZ@6*;`}!K+A(kKobKB% fPCbd58(YsHAG$#@eU45F(6tPnu6{1-oD!M Date: Fri, 9 May 2025 17:01:06 +0900 Subject: [PATCH 6/6] =?UTF-8?q?App.jsx=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index d313ffe..9c00d96 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,4 +1,4 @@ -import { useState } from 'react' +//import { useState } from 'react' //import reactLogo from './assets/react.svg' import viteLogo from '/vite.svg' import './App.css'