From 622c431b1786c9c36177d97b0e27d2bc62b5db36 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 22:08:55 -0300 Subject: [PATCH 01/20] initial setup --- .eslintrc.cjs | 18 + .gitignore | 24 + index.html | 13 + package-lock.json | 3406 ++++++++++++++++++++++++++++++++++++++++++ package.json | 30 + public/vite.svg | 1 + src/App.tsx | 15 + src/assets/react.svg | 1 + src/index.css | 68 + src/main.tsx | 10 + src/vite-env.d.ts | 1 + tsconfig.app.json | 27 + tsconfig.json | 11 + tsconfig.node.json | 13 + vite.config.ts | 7 + 15 files changed, 3645 insertions(+) create mode 100644 .eslintrc.cjs create mode 100644 .gitignore 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.tsx create mode 100644 src/assets/react.svg create mode 100644 src/index.css create mode 100644 src/main.tsx create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 00000000..d6c95379 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,18 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parser: '@typescript-eslint/parser', + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..a547bf36 --- /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/index.html b/index.html new file mode 100644 index 00000000..e4b78eae --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..091da9e0 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3406 @@ +{ + "name": "web-developer-challenge", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "web-developer-challenge", + "version": "0.0.0", + "dependencies": { + "@types/styled-components": "^5.1.34", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "styled-components": "^6.1.11" + }, + "devDependencies": { + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@typescript-eslint/eslint-plugin": "^7.13.1", + "@typescript-eslint/parser": "^7.13.1", + "@vitejs/plugin-react": "^4.3.1", + "eslint": "^8.57.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7", + "typescript": "^5.2.2", + "vite": "^5.3.1" + } + }, + "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, + "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.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", + "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/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", + "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", + "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.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": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "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, + "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, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "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, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "cpu": [ + "x64" + ], + "dev": true, + "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, + "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, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" + }, + "node_modules/@types/react": { + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", + "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/styled-components": { + "version": "5.1.34", + "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.34.tgz", + "integrity": "sha512-mmiVvwpYklFIv9E8qfxuPyIt/OuyIrn6gMOAMOFUO3WJfSrSE+sGUoa4PiZj77Ut7bKZpaa6o1fBKS/4TOEvnA==", + "dependencies": { + "@types/hoist-non-react-statics": "*", + "@types/react": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/stylis": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz", + "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.15.0.tgz", + "integrity": "sha512-uiNHpyjZtFrLwLDpHnzaDlP3Tt6sGMqTCiqmxaN4n4RP0EfYZDODJyddiFDF44Hjwxr5xAcaYxVKm9QKQFJFLA==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.15.0", + "@typescript-eslint/type-utils": "7.15.0", + "@typescript-eslint/utils": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.15.0.tgz", + "integrity": "sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.15.0", + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/typescript-estree": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.15.0.tgz", + "integrity": "sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.15.0.tgz", + "integrity": "sha512-SkgriaeV6PDvpA6253PDVep0qCqgbO1IOBiycjnXsszNTVQe5flN5wR5jiczoEoDEnAqYFSFFc9al9BSGVltkg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.15.0", + "@typescript-eslint/utils": "7.15.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.15.0.tgz", + "integrity": "sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.15.0.tgz", + "integrity": "sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.15.0.tgz", + "integrity": "sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.15.0", + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/typescript-estree": "7.15.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.15.0.tgz", + "integrity": "sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.15.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz", + "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.24.5", + "@babel/plugin-transform-react-jsx-self": "^7.24.5", + "@babel/plugin-transform-react-jsx-source": "^7.24.1", + "@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" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" + }, + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001640", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz", + "integrity": "sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "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 + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.816", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.816.tgz", + "integrity": "sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.7.tgz", + "integrity": "sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "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, + "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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", + "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", + "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" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "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, + "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, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-components": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.11.tgz", + "integrity": "sha512-Ui0jXPzbp1phYij90h12ksljKGqF8ncGx+pjrNPsSPhbUUjWT2tD1FwGo2LF6USCnbrsIhNngDfodhxbegfEOA==", + "dependencies": { + "@emotion/is-prop-valid": "1.2.2", + "@emotion/unitless": "0.8.1", + "@types/stylis": "4.2.5", + "css-to-react-native": "3.2.0", + "csstype": "3.1.3", + "postcss": "8.4.38", + "shallowequal": "1.1.0", + "stylis": "4.3.2", + "tslib": "2.6.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0" + } + }, + "node_modules/styled-components/node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/stylis": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", + "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==" + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.3.tgz", + "integrity": "sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.39", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.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", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "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, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..3d9e7b71 --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "web-developer-challenge", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "@types/styled-components": "^5.1.34", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "styled-components": "^6.1.11" + }, + "devDependencies": { + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@typescript-eslint/eslint-plugin": "^7.13.1", + "@typescript-eslint/parser": "^7.13.1", + "@vitejs/plugin-react": "^4.3.1", + "eslint": "^8.57.0", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.7", + "typescript": "^5.2.2", + "vite": "^5.3.1" + } +} diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 00000000..e7b8dfb1 --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 00000000..27f4c073 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,15 @@ +function App() { + return ( + +
+ + + + + + + + ); +} + +export default App; diff --git a/src/assets/react.svg b/src/assets/react.svg new file mode 100644 index 00000000..6c87de9b --- /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 00000000..6119ad9a --- /dev/null +++ b/src/index.css @@ -0,0 +1,68 @@ +:root { + font-family: Inter, 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.tsx b/src/main.tsx new file mode 100644 index 00000000..3d7150da --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.tsx' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 00000000..d739292a --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "composite": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..ea9d0cd8 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,11 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.node.json" + } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 00000000..3afdd6e3 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "composite": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true, + "noEmit": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 00000000..5a33944a --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From 3ac2731aa401945506869bff6901c207c574c1e5 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 22:15:12 -0300 Subject: [PATCH 02/20] chore: created some components --- README.md | 44 +++++++++++++------------- src/App.styles.ts | 20 ++++++++++++ src/App.tsx | 5 +++ src/components/FeedForm/FeedForm.tsx | 3 ++ src/components/FeedList/FeedList.tsx | 3 ++ src/components/Header/Header.styles.ts | 8 +++++ src/components/Header/Header.tsx | 9 ++++++ 7 files changed, 70 insertions(+), 22 deletions(-) create mode 100644 src/App.styles.ts create mode 100644 src/components/FeedForm/FeedForm.tsx create mode 100644 src/components/FeedList/FeedList.tsx create mode 100644 src/components/Header/Header.styles.ts create mode 100644 src/components/Header/Header.tsx diff --git a/README.md b/README.md index 8897818e..0d6babed 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,30 @@ -# web-developer-challenge +# React + TypeScript + Vite -Olá! +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. -Este desafio consiste em identificar seu conhecimento em desenvolvimento Web, portanto esperamos que você tente resolve-lo usando toda a sua capacidade e conhecimento da tecnologia. +Currently, two official plugins are available: -O Desafio é o seguinte: +- [@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 -Monte uma página utilizando React.js que contenha uma lista de posts com a possíbilidade de adicionar e remover. Cada post deve conter nome, mensagem e foto. Não é necessário fazer o Back-End, os dados podem estar apenas em tempo de execução no Front-End. +## Expanding the ESLint configuration -**Projetos que encontramos Typescript, Styled Compoments, Responsividade, terão pontos adicionais!** +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: -Tente colocar ao máximo todos os recursos técnicos que você conhece, padrão de arquitetura, boas práticas de código, bibliotecas, etc. +- Configure the top-level `parserOptions` property like this: -Você deve fazer um Fork deste repositório e solicitar um Pull Request com seu nome, email e celular na descrição para nossa avaliação e contato. +```js +export default { + // other rules... + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + project: ['./tsconfig.json', './tsconfig.node.json'], + tsconfigRootDir: __dirname, + }, +} +``` -Abaixo segue o link do XD com protótipo navegável para conhecer a dinâmica da interface e os dados para Logar no Zeplin para ter acesso ao Design com suas medidas. - - -## Interface XD -https://adobe.ly/2BVcy5C - -## Design - Zeplin -https://app.zeplin.io/login - -E-mail - buildbox.guest@gmail.com - -Senha - JhZ5dAPG - -![footer](https://cdn-images-1.medium.com/max/2600/1*_DOHv30w-0eI-Ysz5U47Yg.png) +- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` +- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list diff --git a/src/App.styles.ts b/src/App.styles.ts new file mode 100644 index 00000000..60e98236 --- /dev/null +++ b/src/App.styles.ts @@ -0,0 +1,20 @@ +import styled from "styled-components"; + +export const AppContainer = styled.div` + display: flex; + flex-direction: column; + justify-content: center; + width: 100vw; + height: 100vh; +`; + +export const AppMain = styled.div` + display: flex; + flex-direction: column; + align-items: center; + height: 100%; + width: 100%; + max-width: 640px; + + margin: 0 auto; +`; diff --git a/src/App.tsx b/src/App.tsx index 27f4c073..6a4b3767 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,3 +1,8 @@ +import { AppContainer, AppMain } from "./App.styles"; +import FeedForm from "./components/FeedForm/FeedForm"; +import FeedList from "./components/FeedList/FeedList"; +import Header from "./components/Header/Header"; + function App() { return ( diff --git a/src/components/FeedForm/FeedForm.tsx b/src/components/FeedForm/FeedForm.tsx new file mode 100644 index 00000000..759593bb --- /dev/null +++ b/src/components/FeedForm/FeedForm.tsx @@ -0,0 +1,3 @@ +export default function FeedForm() { + return
FeedForm
; +} diff --git a/src/components/FeedList/FeedList.tsx b/src/components/FeedList/FeedList.tsx new file mode 100644 index 00000000..6ba651a8 --- /dev/null +++ b/src/components/FeedList/FeedList.tsx @@ -0,0 +1,3 @@ +export default function FeedList() { + return
FeedList
; +} diff --git a/src/components/Header/Header.styles.ts b/src/components/Header/Header.styles.ts new file mode 100644 index 00000000..c0c942d7 --- /dev/null +++ b/src/components/Header/Header.styles.ts @@ -0,0 +1,8 @@ +import styled from "styled-components"; + +export const HeaderContainer = styled.div` + display: flex; + justify-content: center; + width: 100%; + height: 104px; +`; diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx new file mode 100644 index 00000000..9a236242 --- /dev/null +++ b/src/components/Header/Header.tsx @@ -0,0 +1,9 @@ +import { HeaderContainer } from "./Header.styles"; + +export default function Header() { + return ( + + BuildBlock + + ); +} From e1bec53c1e339523cc91ad908b54a7e13dd51cf1 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 23:45:20 -0300 Subject: [PATCH 03/20] chore: react icons --- package-lock.json | 9 +++++++++ package.json | 1 + 2 files changed, 10 insertions(+) diff --git a/package-lock.json b/package-lock.json index 091da9e0..e75b19fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "@types/styled-components": "^5.1.34", "react": "^18.3.1", "react-dom": "^18.3.1", + "react-icons": "^5.2.1", "styled-components": "^6.1.11" }, "devDependencies": { @@ -2914,6 +2915,14 @@ "react": "^18.3.1" } }, + "node_modules/react-icons": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.2.1.tgz", + "integrity": "sha512-zdbW5GstTzXaVKvGSyTaBalt7HSfuK5ovrzlpyiWHAFXndXTdd/1hdDHI4xBM1Mn7YriT6aqESucFl9kEXzrdw==", + "peerDependencies": { + "react": "*" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", diff --git a/package.json b/package.json index 3d9e7b71..5a1347aa 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@types/styled-components": "^5.1.34", "react": "^18.3.1", "react-dom": "^18.3.1", + "react-icons": "^5.2.1", "styled-components": "^6.1.11" }, "devDependencies": { From 09d0db2662922e8c4a494cae3fdbc8fb2942dadd Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 23:45:49 -0300 Subject: [PATCH 04/20] chore: static feed form --- src/components/FeedForm/FeedForm.styles.ts | 61 ++++++++++++++++++++++ src/components/FeedForm/FeedForm.tsx | 57 +++++++++++++++++++- 2 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 src/components/FeedForm/FeedForm.styles.ts diff --git a/src/components/FeedForm/FeedForm.styles.ts b/src/components/FeedForm/FeedForm.styles.ts new file mode 100644 index 00000000..c52856f8 --- /dev/null +++ b/src/components/FeedForm/FeedForm.styles.ts @@ -0,0 +1,61 @@ +import styled from "styled-components"; + +export const FeedFormContainer = styled.section` + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + height: 100%; + max-height: 320px; + padding: 16px 32px; + box-sizing: border-box; + background-color: #242424; + border: 1px solid #474747; +`; + +export const InputImg = styled.input` + margin-bottom: 24px; +`; + +export const InputName = styled.input` + margin-bottom: 8px; + width: 100%; + height: 40px; + border: none; + border-radius: 8px; + padding: 0 16px; + box-sizing: border-box; +`; + +export const TextareaMessage = styled.textarea` + margin-bottom: 8px; + width: 100%; + height: 90px; + border: none; + border-radius: 8px; + padding: 8px 16px; + box-sizing: border-box; + font-family: sans-serif; + resize: none; +`; + +export const ActionContainerButton = styled.div` + display: flex; + align-items: center; + justify-content: end; + width: 100%; + margin-top: 24px; +`; + +export const DiscardButton = styled.button` + background-color: transparent; + border: none; + text-decoration: underline; + margin-right: 8px; +`; + +export const PublishButton = styled.button` + border-radius: 8px; + border: none; + padding: 12px 24px; +`; diff --git a/src/components/FeedForm/FeedForm.tsx b/src/components/FeedForm/FeedForm.tsx index 759593bb..558480fa 100644 --- a/src/components/FeedForm/FeedForm.tsx +++ b/src/components/FeedForm/FeedForm.tsx @@ -1,3 +1,58 @@ +import { useState } from "react"; +import { + ActionContainerButton, + DiscardButton, + FeedFormContainer, + InputImg, + InputName, + PublishButton, + TextareaMessage, +} from "./FeedForm.styles"; + export default function FeedForm() { - return
FeedForm
; + const [selectedImage, setSelectedImage] = useState(null); + const [name, setName] = useState(""); + const [message, setMessage] = useState(""); + + const handleImageChange = (event: React.ChangeEvent) => { + const files = event.target.files; + if (files && files.length > 0) { + const file = files[0]; + setSelectedImage(URL.createObjectURL(file)); + } + }; + + return ( + + + {selectedImage && ( +
+

Preview:

+ Selected +
+ )} + + setName(e.target.value)} + /> + + setMessage(e.target.value)} + /> + + + Descartar + Publicar + +
+ ); } From 22461001f63e1603abffa0895fae400bfd6a3cc6 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 23:46:08 -0300 Subject: [PATCH 05/20] chore: created static feed item --- .../FeedList/FeedItem/FeedItem.styles.ts | 48 +++++++++++++++++++ src/components/FeedList/FeedItem/FeedItem.tsx | 36 ++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 src/components/FeedList/FeedItem/FeedItem.styles.ts create mode 100644 src/components/FeedList/FeedItem/FeedItem.tsx diff --git a/src/components/FeedList/FeedItem/FeedItem.styles.ts b/src/components/FeedList/FeedItem/FeedItem.styles.ts new file mode 100644 index 00000000..519b72b3 --- /dev/null +++ b/src/components/FeedList/FeedItem/FeedItem.styles.ts @@ -0,0 +1,48 @@ +import styled from "styled-components"; + +export const FeedItemContainer = styled.li` + display: flex; + flex-direction: row; + align-items: center; + width: 100%; + height: 100%; + max-height: 320px; + padding: 16px 32px; + box-sizing: border-box; + background-color: #242424; + margin-bottom: 32px; + border: 1px solid #474747; + position: relative; +`; + +export const Avatar = styled.img` + height: 100%; + width: 100%; + max-height: 96px; + max-width: 96px; + border-radius: 40%; + margin-right: 24px; +`; + +export const AuthorContent = styled.section` + display: flex; + flex-direction: column; +`; + +export const RemoveFeedItem = styled.button` + position: absolute; + top: 16px; + right: 16px; + background-color: transparent; + border: none; + display: flex; + align-items: center; +`; + +export const SendBy = styled.span` + font-size: 12px; +`; + +export const Name = styled.strong` + font-size: 13px; +`; diff --git a/src/components/FeedList/FeedItem/FeedItem.tsx b/src/components/FeedList/FeedItem/FeedItem.tsx new file mode 100644 index 00000000..5410099b --- /dev/null +++ b/src/components/FeedList/FeedItem/FeedItem.tsx @@ -0,0 +1,36 @@ +import { CiCircleRemove } from "react-icons/ci"; +import { + AuthorContent, + Avatar, + FeedItemContainer, + Name, + RemoveFeedItem, + SendBy, +} from "./FeedItem.styles"; + +export default function FeedItem() { + return ( + + + +
+

+ Lorem ipsum dolor sit, amet consectetur adipisicing elit. Ducimus quo + explicabo qui voluptates, eaque distinctio dolor, ab facilis sequi + eius aliquid recusandae consequuntur hic voluptas deserunt +

+ + + Enviado por + Manuela Oliveira + +
+ + + +
+ ); +} From 828a3bd05ba93094e20940bf10f2199a5a0198ba Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 23:46:22 -0300 Subject: [PATCH 06/20] chore: created static FeedList --- src/components/FeedList/FeedList.styles.ts | 14 ++++++++++++++ src/components/FeedList/FeedList.tsx | 16 +++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 src/components/FeedList/FeedList.styles.ts diff --git a/src/components/FeedList/FeedList.styles.ts b/src/components/FeedList/FeedList.styles.ts new file mode 100644 index 00000000..8a5938c2 --- /dev/null +++ b/src/components/FeedList/FeedList.styles.ts @@ -0,0 +1,14 @@ +import styled from "styled-components"; + +export const FeedListContainer = styled.div``; + +export const FeedTitle = styled.span` + font-size: 14px; + margin-bottom: 8px; +`; + +export const FeedListUl = styled.ul` + list-style-type: none; + padding-left: 0; + margin: 0; +`; diff --git a/src/components/FeedList/FeedList.tsx b/src/components/FeedList/FeedList.tsx index 6ba651a8..2529491e 100644 --- a/src/components/FeedList/FeedList.tsx +++ b/src/components/FeedList/FeedList.tsx @@ -1,3 +1,17 @@ +import { FeedListUl, FeedListContainer, FeedTitle } from "./FeedList.styles"; +import FeedItem from "./FeedItem/FeedItem"; + export default function FeedList() { - return
FeedList
; + return ( + + Feed + + + + + + + + + ); } From 3586379e625b714c5ce30346b06581926b86903d Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 23:46:40 -0300 Subject: [PATCH 07/20] chore: created static Header --- src/components/Header/Header.styles.ts | 5 +++++ src/components/Header/Header.tsx | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/components/Header/Header.styles.ts b/src/components/Header/Header.styles.ts index c0c942d7..b6829f35 100644 --- a/src/components/Header/Header.styles.ts +++ b/src/components/Header/Header.styles.ts @@ -3,6 +3,11 @@ import styled from "styled-components"; export const HeaderContainer = styled.div` display: flex; justify-content: center; + align-items: center; width: 100%; height: 104px; + background-color: #242424; + position: fixed; + z-index: 9; + top: 0; `; diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx index 9a236242..51915c8b 100644 --- a/src/components/Header/Header.tsx +++ b/src/components/Header/Header.tsx @@ -3,7 +3,7 @@ import { HeaderContainer } from "./Header.styles"; export default function Header() { return ( - BuildBlock + BuildBox ); } From d00427442e8ac2f7970f63bba90100d18f59505e Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 23:47:01 -0300 Subject: [PATCH 08/20] fix: heigth dimension --- src/App.styles.ts | 9 ++++---- src/App.tsx | 1 - src/index.css | 52 +++-------------------------------------------- 3 files changed, 7 insertions(+), 55 deletions(-) diff --git a/src/App.styles.ts b/src/App.styles.ts index 60e98236..799fe949 100644 --- a/src/App.styles.ts +++ b/src/App.styles.ts @@ -5,16 +5,15 @@ export const AppContainer = styled.div` flex-direction: column; justify-content: center; width: 100vw; - height: 100vh; + height: 100%; `; export const AppMain = styled.div` display: flex; flex-direction: column; align-items: center; - height: 100%; + max-width: 540px; width: 100%; - max-width: 640px; - - margin: 0 auto; + min-height: 100vh; + margin: 120px auto 0 auto; `; diff --git a/src/App.tsx b/src/App.tsx index 6a4b3767..75a120fc 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -10,7 +10,6 @@ function App() { -
diff --git a/src/index.css b/src/index.css index 6119ad9a..da3fe66d 100644 --- a/src/index.css +++ b/src/index.css @@ -1,11 +1,11 @@ :root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + font-family: Inter, sans-serif, system-ui, Avenir, Helvetica, Arial; line-height: 1.5; font-weight: 400; color-scheme: light dark; color: rgba(255, 255, 255, 0.87); - background-color: #242424; + background-color: #333333; font-synthesis: none; text-rendering: optimizeLegibility; @@ -13,56 +13,10 @@ -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; - } + overflow-x: hidden; } From 54c0cc7a472977c70da75dab5d4624637931cda6 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 23:59:10 -0300 Subject: [PATCH 09/20] chore: remove item from feed list --- src/App.styles.ts | 2 +- .../FeedList/FeedItem/FeedItem.styles.ts | 9 ++++- src/components/FeedList/FeedItem/FeedItem.tsx | 40 ++++++++++++------- src/components/FeedList/FeedList.tsx | 22 ++++++++-- src/lib/mocks.ts | 25 ++++++++++++ 5 files changed, 77 insertions(+), 21 deletions(-) create mode 100644 src/lib/mocks.ts diff --git a/src/App.styles.ts b/src/App.styles.ts index 799fe949..94f21654 100644 --- a/src/App.styles.ts +++ b/src/App.styles.ts @@ -14,6 +14,6 @@ export const AppMain = styled.div` align-items: center; max-width: 540px; width: 100%; - min-height: 100vh; + min-height: calc(100vh - 120px); margin: 120px auto 0 auto; `; diff --git a/src/components/FeedList/FeedItem/FeedItem.styles.ts b/src/components/FeedList/FeedItem/FeedItem.styles.ts index 519b72b3..339aeb6b 100644 --- a/src/components/FeedList/FeedItem/FeedItem.styles.ts +++ b/src/components/FeedList/FeedItem/FeedItem.styles.ts @@ -29,7 +29,7 @@ export const AuthorContent = styled.section` flex-direction: column; `; -export const RemoveFeedItem = styled.button` +export const RemoveFeedItemButton = styled.button` position: absolute; top: 16px; right: 16px; @@ -37,6 +37,13 @@ export const RemoveFeedItem = styled.button` border: none; display: flex; align-items: center; + + cursor: pointer; + transition: all 0.4s; + + &:hover { + opacity: 0.6; + } `; export const SendBy = styled.span` diff --git a/src/components/FeedList/FeedItem/FeedItem.tsx b/src/components/FeedList/FeedItem/FeedItem.tsx index 5410099b..a4e86a7b 100644 --- a/src/components/FeedList/FeedItem/FeedItem.tsx +++ b/src/components/FeedList/FeedItem/FeedItem.tsx @@ -4,33 +4,43 @@ import { Avatar, FeedItemContainer, Name, - RemoveFeedItem, + RemoveFeedItemButton, SendBy, } from "./FeedItem.styles"; -export default function FeedItem() { +type FeedItemProps = { + feedItem: { + id: number; + imgUrl: string; + description: string; + name: string; + }; + handleRemoveItem: (id: number) => void; +}; + +export default function FeedItem({ + feedItem, + handleRemoveItem, +}: FeedItemProps) { return ( - +
-

- Lorem ipsum dolor sit, amet consectetur adipisicing elit. Ducimus quo - explicabo qui voluptates, eaque distinctio dolor, ab facilis sequi - eius aliquid recusandae consequuntur hic voluptas deserunt -

+

{feedItem.description}

Enviado por - Manuela Oliveira + {feedItem.name}
- - - + + handleRemoveItem(feedItem.id)} + /> +
); } diff --git a/src/components/FeedList/FeedList.tsx b/src/components/FeedList/FeedList.tsx index 2529491e..d6186b01 100644 --- a/src/components/FeedList/FeedList.tsx +++ b/src/components/FeedList/FeedList.tsx @@ -1,16 +1,30 @@ import { FeedListUl, FeedListContainer, FeedTitle } from "./FeedList.styles"; import FeedItem from "./FeedItem/FeedItem"; +import { feedItems, feedItemsMocked } from "../../lib/mocks"; +import { useState } from "react"; export default function FeedList() { + const [feedItems, setFeedItems] = useState(feedItemsMocked); + + const handleRemoveItem = (id) => { + const filteredFeedItems = feedItems.filter( + (feedItem) => feedItem.id !== id + ); + setFeedItems(filteredFeedItems); + }; + return ( Feed - - - - + {feedItems.map((feedItem) => ( + + ))} ); diff --git a/src/lib/mocks.ts b/src/lib/mocks.ts new file mode 100644 index 00000000..eb75fc25 --- /dev/null +++ b/src/lib/mocks.ts @@ -0,0 +1,25 @@ +export const feedItemsMocked = [ + { + id: 1, + imgUrl: + "https://png.pngtree.com/thumb_back/fw800/background/20190221/ourmid/pngtree-hand-painted-beautiful-outdoor-outskirts-image_32488.jpg", + description: `Lorem ipsum dolor sit, amet consectetur adipisicing elit. Ducimus quo + explicabo qui voluptates, eaque distinctio dolor, ab facilis sequi + eius aliquid recusandae consequuntur hic voluptas deserunt`, + name: "Manuela Oliveira", + }, + { + id: 2, + imgUrl: + "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTERXnmbI1gv3m0GaiWvVTQ1PpxyykTASgOYA&s", + description: `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ut nisi justo. Donec scelerisque dui non magna viverra, sit amet feugiat leo vehicula.`, + name: "João Silva", + }, + { + id: 3, + imgUrl: + "https://i.pinimg.com/236x/59/19/26/591926a3eb106ee1851a1e574fec0edb.jpg", + description: `Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Duis laoreet quam eget neque bibendum, sit amet blandit justo tristique.`, + name: "Maria Souza", + }, +]; From 5c840887f1bcc7ab06fac76e89e98b1decbca4e5 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 21:23:25 -0300 Subject: [PATCH 10/20] refactor: rename some components --- .../FeedList/FeedItem/FeedItem.styles.ts | 12 +++++++---- src/components/FeedList/FeedItem/FeedItem.tsx | 20 +++++++++---------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/components/FeedList/FeedItem/FeedItem.styles.ts b/src/components/FeedList/FeedItem/FeedItem.styles.ts index 339aeb6b..de64a086 100644 --- a/src/components/FeedList/FeedItem/FeedItem.styles.ts +++ b/src/components/FeedList/FeedItem/FeedItem.styles.ts @@ -24,12 +24,16 @@ export const Avatar = styled.img` margin-right: 24px; `; -export const AuthorContent = styled.section` +export const Description = styled.p` + padding: 0 4px; +`; + +export const AuthorInfo = styled.section` display: flex; flex-direction: column; `; -export const RemoveFeedItemButton = styled.button` +export const RemoveButton = styled.button` position: absolute; top: 16px; right: 16px; @@ -46,10 +50,10 @@ export const RemoveFeedItemButton = styled.button` } `; -export const SendBy = styled.span` +export const SentBy = styled.span` font-size: 12px; `; -export const Name = styled.strong` +export const AuthorName = styled.strong` font-size: 13px; `; diff --git a/src/components/FeedList/FeedItem/FeedItem.tsx b/src/components/FeedList/FeedItem/FeedItem.tsx index a4e86a7b..9f688046 100644 --- a/src/components/FeedList/FeedItem/FeedItem.tsx +++ b/src/components/FeedList/FeedItem/FeedItem.tsx @@ -1,11 +1,11 @@ import { CiCircleRemove } from "react-icons/ci"; import { - AuthorContent, + AuthorInfo, Avatar, FeedItemContainer, - Name, - RemoveFeedItemButton, - SendBy, + AuthorName, + RemoveButton, + SentBy, } from "./FeedItem.styles"; type FeedItemProps = { @@ -29,18 +29,18 @@ export default function FeedItem({

{feedItem.description}

- - Enviado por - {feedItem.name} - + + Enviado por + {feedItem.name} +
- + handleRemoveItem(feedItem.id)} /> - + ); } From 2a2cfc57418107c863eb68f0d9ed80e7a4e8e5ba Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 21:23:45 -0300 Subject: [PATCH 11/20] chore: remove unused component --- src/components/FeedList/FeedList.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/FeedList/FeedList.tsx b/src/components/FeedList/FeedList.tsx index d6186b01..e201643a 100644 --- a/src/components/FeedList/FeedList.tsx +++ b/src/components/FeedList/FeedList.tsx @@ -1,12 +1,12 @@ import { FeedListUl, FeedListContainer, FeedTitle } from "./FeedList.styles"; import FeedItem from "./FeedItem/FeedItem"; -import { feedItems, feedItemsMocked } from "../../lib/mocks"; +import { feedItemsMocked } from "../../lib/mocks"; import { useState } from "react"; export default function FeedList() { const [feedItems, setFeedItems] = useState(feedItemsMocked); - const handleRemoveItem = (id) => { + const handleRemoveItem = (id: number) => { const filteredFeedItems = feedItems.filter( (feedItem) => feedItem.id !== id ); From be252a0c9d3b34e3eb069312d5def3d1fa014681 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 21:47:02 -0300 Subject: [PATCH 12/20] chore: using zustand --- package-lock.json | 38 +++++++++++++++++++++- package.json | 3 +- src/components/FeedForm/FeedForm.styles.ts | 14 +++++++- src/components/FeedForm/FeedForm.tsx | 19 +++++++++-- src/components/FeedList/FeedList.tsx | 29 +++++++---------- src/lib/types.ts | 6 ++++ src/store/feedListStore.ts | 38 ++++++++++++++++++++++ 7 files changed, 124 insertions(+), 23 deletions(-) create mode 100644 src/lib/types.ts create mode 100644 src/store/feedListStore.ts diff --git a/package-lock.json b/package-lock.json index e75b19fe..4622ad3c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,8 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-icons": "^5.2.1", - "styled-components": "^6.1.11" + "styled-components": "^6.1.11", + "zustand": "^4.5.4" }, "devDependencies": { "@types/react": "^18.3.3", @@ -3308,6 +3309,14 @@ "punycode": "^2.1.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/vite": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.3.tgz", @@ -3410,6 +3419,33 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zustand": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.4.tgz", + "integrity": "sha512-/BPMyLKJPtFEvVL0E9E9BTUM63MNyhPGlvxk1XjrfWTUlV+BR8jufjsovHzrtR6YNcBEcL7cMHovL1n9xHawEg==", + "dependencies": { + "use-sync-external-store": "1.2.0" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } } } } diff --git a/package.json b/package.json index 5a1347aa..3c695ed8 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,8 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-icons": "^5.2.1", - "styled-components": "^6.1.11" + "styled-components": "^6.1.11", + "zustand": "^4.5.4" }, "devDependencies": { "@types/react": "^18.3.3", diff --git a/src/components/FeedForm/FeedForm.styles.ts b/src/components/FeedForm/FeedForm.styles.ts index c52856f8..9c285d4f 100644 --- a/src/components/FeedForm/FeedForm.styles.ts +++ b/src/components/FeedForm/FeedForm.styles.ts @@ -1,6 +1,6 @@ import styled from "styled-components"; -export const FeedFormContainer = styled.section` +export const FeedFormContainer = styled.form` display: flex; flex-direction: column; align-items: center; @@ -52,10 +52,22 @@ export const DiscardButton = styled.button` border: none; text-decoration: underline; margin-right: 8px; + cursor: pointer; + + transition: all 0.4s; + &:hover { + opacity: 0.6; + } `; export const PublishButton = styled.button` border-radius: 8px; border: none; padding: 12px 24px; + cursor: pointer; + + transition: all 0.4s; + &:hover { + opacity: 0.6; + } `; diff --git a/src/components/FeedForm/FeedForm.tsx b/src/components/FeedForm/FeedForm.tsx index 558480fa..f0878267 100644 --- a/src/components/FeedForm/FeedForm.tsx +++ b/src/components/FeedForm/FeedForm.tsx @@ -22,8 +22,19 @@ export default function FeedForm() { } }; + const resetForm = () => { + setName(""); + setMessage(""); + }; + + const handleSubmitFeed = (event: React.FormEvent) => { + event.preventDefault(); + console.log({ name, message }); + resetForm(); + }; + return ( - + handleSubmitFeed(event)}> {selectedImage && (
@@ -50,8 +61,10 @@ export default function FeedForm() { /> - Descartar - Publicar + + Descartar + + Publicar ); diff --git a/src/components/FeedList/FeedList.tsx b/src/components/FeedList/FeedList.tsx index e201643a..93ed5c48 100644 --- a/src/components/FeedList/FeedList.tsx +++ b/src/components/FeedList/FeedList.tsx @@ -1,30 +1,25 @@ import { FeedListUl, FeedListContainer, FeedTitle } from "./FeedList.styles"; import FeedItem from "./FeedItem/FeedItem"; -import { feedItemsMocked } from "../../lib/mocks"; -import { useState } from "react"; +import { useFeedItemsStore } from "../../store/feedListStore"; export default function FeedList() { - const [feedItems, setFeedItems] = useState(feedItemsMocked); - - const handleRemoveItem = (id: number) => { - const filteredFeedItems = feedItems.filter( - (feedItem) => feedItem.id !== id - ); - setFeedItems(filteredFeedItems); - }; + const feedItems = useFeedItemsStore((state) => state.feedItems); + const handleRemoveItem = useFeedItemsStore((state) => state.removeFeedItem); return ( Feed - {feedItems.map((feedItem) => ( - - ))} + {feedItems.length > 0 + ? feedItems.map((feedItem) => ( + + )) + : null} ); diff --git a/src/lib/types.ts b/src/lib/types.ts new file mode 100644 index 00000000..1e1a7699 --- /dev/null +++ b/src/lib/types.ts @@ -0,0 +1,6 @@ +export type TFeedItem = { + id: number; + imgUrl: string; + description: string; + name: string; +}; diff --git a/src/store/feedListStore.ts b/src/store/feedListStore.ts new file mode 100644 index 00000000..2a13ea10 --- /dev/null +++ b/src/store/feedListStore.ts @@ -0,0 +1,38 @@ +import { create } from "zustand"; +import { TFeedItem } from "../lib/types"; +import { feedItemsMocked } from "../lib/mocks"; + +type Store = { + feedItems: TFeedItem[]; + isLoading: boolean; + removeFeedItem: (id: number) => void; + addItemToList: (imgUrl: string, name: string, description: string) => void; +}; + +export const useFeedItemsStore = create((set, get) => ({ + feedItems: [...feedItemsMocked], + isLoading: false, + removeFeedItem: (id: number) => { + const state = get(); + + const filteredFeedItems = state.feedItems.filter( + (feedItem) => feedItem.id !== id + ); + + set(() => ({ + feedItems: filteredFeedItems, + })); + }, + addItemToList: (imgUrl: string, name: string, description: string) => { + const newItem: TFeedItem = { + id: new Date().getTime(), + imgUrl, + name, + description, + }; + + set((state) => ({ + feedItems: [...state.feedItems, newItem], + })); + }, +})); From 309305077683df61a7b3d6238f52e116c269c486 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 22:11:52 -0300 Subject: [PATCH 13/20] chore: dropzone for img --- package-lock.json | 54 +++++++++++++++++++ package.json | 1 + src/components/FeedForm/FeedForm.styles.ts | 29 +++++++++- src/components/FeedForm/FeedForm.tsx | 47 +++++++++------- src/components/FeedList/FeedItem/FeedItem.tsx | 3 +- src/store/feedListStore.ts | 2 +- 6 files changed, 114 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4622ad3c..459cf84c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "@types/styled-components": "^5.1.34", "react": "^18.3.1", "react-dom": "^18.3.1", + "react-dropzone": "^14.2.3", "react-icons": "^5.2.1", "styled-components": "^6.1.11", "zustand": "^4.5.4" @@ -1595,6 +1596,14 @@ "node": ">=8" } }, + "node_modules/attr-accept": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", + "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", + "engines": { + "node": ">=4" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -2227,6 +2236,17 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-selector": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", + "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -2701,6 +2721,14 @@ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2864,6 +2892,16 @@ "node": ">= 0.8.0" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -2916,6 +2954,22 @@ "react": "^18.3.1" } }, + "node_modules/react-dropzone": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", + "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", + "dependencies": { + "attr-accept": "^2.2.2", + "file-selector": "^0.6.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "react": ">= 16.8 || 18.0.0" + } + }, "node_modules/react-icons": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.2.1.tgz", diff --git a/package.json b/package.json index 3c695ed8..cd8a154b 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@types/styled-components": "^5.1.34", "react": "^18.3.1", "react-dom": "^18.3.1", + "react-dropzone": "^14.2.3", "react-icons": "^5.2.1", "styled-components": "^6.1.11", "zustand": "^4.5.4" diff --git a/src/components/FeedForm/FeedForm.styles.ts b/src/components/FeedForm/FeedForm.styles.ts index 9c285d4f..b15093d4 100644 --- a/src/components/FeedForm/FeedForm.styles.ts +++ b/src/components/FeedForm/FeedForm.styles.ts @@ -1,3 +1,4 @@ +import { MdPhotoCamera } from "react-icons/md"; import styled from "styled-components"; export const FeedFormContainer = styled.form` @@ -6,7 +7,6 @@ export const FeedFormContainer = styled.form` align-items: center; width: 100%; height: 100%; - max-height: 320px; padding: 16px 32px; box-sizing: border-box; background-color: #242424; @@ -18,7 +18,7 @@ export const InputImg = styled.input` `; export const InputName = styled.input` - margin-bottom: 8px; + margin-bottom: 24px; width: 100%; height: 40px; border: none; @@ -71,3 +71,28 @@ export const PublishButton = styled.button` opacity: 0.6; } `; + +export const PlaceholderImage = styled.img` + width: 100%; + height: 100%; + object-fit: cover; +`; + +export const ImageContainer = styled.div` + width: 96px; + height: 96px; + border-radius: 50%; + border: 1px dashed #ccc; + border-radius: 8px; + display: flex; + align-items: center; + justify-content: center; + position: relative; + overflow: hidden; + margin-bottom: 24px; +`; + +export const CameraIcon = styled(MdPhotoCamera)` + font-size: 60px; + color: #888; +`; diff --git a/src/components/FeedForm/FeedForm.tsx b/src/components/FeedForm/FeedForm.tsx index f0878267..10f3ca87 100644 --- a/src/components/FeedForm/FeedForm.tsx +++ b/src/components/FeedForm/FeedForm.tsx @@ -1,51 +1,62 @@ import { useState } from "react"; +import { useDropzone } from "react-dropzone"; import { ActionContainerButton, DiscardButton, FeedFormContainer, + ImageContainer, + PlaceholderImage, InputImg, InputName, PublishButton, TextareaMessage, + CameraIcon, } from "./FeedForm.styles"; +import { useFeedItemsStore } from "../../store/feedListStore"; export default function FeedForm() { - const [selectedImage, setSelectedImage] = useState(null); + const [selectedImage, setSelectedImage] = useState(""); const [name, setName] = useState(""); const [message, setMessage] = useState(""); + const addItemToList = useFeedItemsStore((state) => state.addItemToList); - const handleImageChange = (event: React.ChangeEvent) => { - const files = event.target.files; - if (files && files.length > 0) { - const file = files[0]; + const onDrop = (acceptedFiles: File[]) => { + if (acceptedFiles.length > 0) { + const file = acceptedFiles[0]; setSelectedImage(URL.createObjectURL(file)); } }; + const { getRootProps, getInputProps } = useDropzone({ + accept: { + "image/png": [".png"], + "image/jpeg": [".jpg", ".jpeg"], + }, + onDrop, + }); + const resetForm = () => { setName(""); setMessage(""); + setSelectedImage(""); }; const handleSubmitFeed = (event: React.FormEvent) => { event.preventDefault(); - console.log({ name, message }); + addItemToList(selectedImage, name, message); resetForm(); }; return ( - handleSubmitFeed(event)}> - - {selectedImage && ( -
-

Preview:

- Selected -
- )} + + + + {selectedImage ? ( + + ) : ( + + )} +
-

{feedItem.description}

+ {feedItem.description} Enviado por diff --git a/src/store/feedListStore.ts b/src/store/feedListStore.ts index 2a13ea10..81003fc9 100644 --- a/src/store/feedListStore.ts +++ b/src/store/feedListStore.ts @@ -32,7 +32,7 @@ export const useFeedItemsStore = create((set, get) => ({ }; set((state) => ({ - feedItems: [...state.feedItems, newItem], + feedItems: [newItem, ...state.feedItems], })); }, })); From 31999c95b799ec2186fe4049bbb1fd79db34789d Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 22:33:06 -0300 Subject: [PATCH 14/20] chore: styled header --- .../FeedList/FeedItem/FeedItem.styles.ts | 6 +++++- src/components/FeedList/FeedList.styles.ts | 5 ++++- src/components/Header/Header.styles.ts | 18 ++++++++++++++++++ src/components/Header/Header.tsx | 7 +++++-- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/components/FeedList/FeedItem/FeedItem.styles.ts b/src/components/FeedList/FeedItem/FeedItem.styles.ts index de64a086..03aa3769 100644 --- a/src/components/FeedList/FeedItem/FeedItem.styles.ts +++ b/src/components/FeedList/FeedItem/FeedItem.styles.ts @@ -6,13 +6,17 @@ export const FeedItemContainer = styled.li` align-items: center; width: 100%; height: 100%; - max-height: 320px; + min-height: 240px; padding: 16px 32px; box-sizing: border-box; background-color: #242424; margin-bottom: 32px; border: 1px solid #474747; position: relative; + + @media (max-width: 400px) { + flex-direction: column; + } `; export const Avatar = styled.img` diff --git a/src/components/FeedList/FeedList.styles.ts b/src/components/FeedList/FeedList.styles.ts index 8a5938c2..e9c0160b 100644 --- a/src/components/FeedList/FeedList.styles.ts +++ b/src/components/FeedList/FeedList.styles.ts @@ -1,6 +1,9 @@ import styled from "styled-components"; -export const FeedListContainer = styled.div``; +export const FeedListContainer = styled.div` + width: 100%; + margin-top: 16px; +`; export const FeedTitle = styled.span` font-size: 14px; diff --git a/src/components/Header/Header.styles.ts b/src/components/Header/Header.styles.ts index b6829f35..2fbf62de 100644 --- a/src/components/Header/Header.styles.ts +++ b/src/components/Header/Header.styles.ts @@ -4,6 +4,7 @@ export const HeaderContainer = styled.div` display: flex; justify-content: center; align-items: center; + flex-direction: column; width: 100%; height: 104px; background-color: #242424; @@ -11,3 +12,20 @@ export const HeaderContainer = styled.div` z-index: 9; top: 0; `; +export const Content = styled.div` + margin: 0 auto; + display: flex; + flex-direction: column; + align-items: start; +`; +export const Title = styled.h2` + color: #53b950; + margin: 0; + font-weight: 900; +`; + +export const SubTitle = styled.span` + font-size: 12px; + color: buttonface; + text-transform: uppercase; +`; diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx index 51915c8b..00452e58 100644 --- a/src/components/Header/Header.tsx +++ b/src/components/Header/Header.tsx @@ -1,9 +1,12 @@ -import { HeaderContainer } from "./Header.styles"; +import { Content, HeaderContainer, SubTitle, Title } from "./Header.styles"; export default function Header() { return ( - BuildBox + + buildbox + Web Challenge + ); } From 48a41a48f1a41cc5f6f5cc4a00f6bd0f187b436e Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 22:44:43 -0300 Subject: [PATCH 15/20] refactor: renamed and change path --- src/App.tsx | 4 ++-- .../{ => Feed}/FeedForm/FeedForm.styles.ts | 0 src/components/{ => Feed}/FeedForm/FeedForm.tsx | 2 +- .../{FeedList => Feed}/FeedItem/FeedItem.styles.ts | 4 ++-- .../{FeedList => Feed}/FeedItem/FeedItem.tsx | 12 ++++-------- .../{ => Feed}/FeedList/FeedList.styles.ts | 0 src/components/{ => Feed}/FeedList/FeedList.tsx | 4 ++-- src/lib/mocks.ts | 6 +++--- src/lib/types.ts | 2 +- src/store/feedListStore.ts | 6 +++--- 10 files changed, 18 insertions(+), 22 deletions(-) rename src/components/{ => Feed}/FeedForm/FeedForm.styles.ts (100%) rename src/components/{ => Feed}/FeedForm/FeedForm.tsx (96%) rename src/components/{FeedList => Feed}/FeedItem/FeedItem.styles.ts (94%) rename src/components/{FeedList => Feed}/FeedItem/FeedItem.tsx (82%) rename src/components/{ => Feed}/FeedList/FeedList.styles.ts (100%) rename src/components/{ => Feed}/FeedList/FeedList.tsx (85%) diff --git a/src/App.tsx b/src/App.tsx index 75a120fc..49ad6616 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,6 +1,6 @@ import { AppContainer, AppMain } from "./App.styles"; -import FeedForm from "./components/FeedForm/FeedForm"; -import FeedList from "./components/FeedList/FeedList"; +import FeedForm from "./components/Feed/FeedForm/FeedForm"; +import FeedList from "./components/Feed/FeedList/FeedList"; import Header from "./components/Header/Header"; function App() { diff --git a/src/components/FeedForm/FeedForm.styles.ts b/src/components/Feed/FeedForm/FeedForm.styles.ts similarity index 100% rename from src/components/FeedForm/FeedForm.styles.ts rename to src/components/Feed/FeedForm/FeedForm.styles.ts diff --git a/src/components/FeedForm/FeedForm.tsx b/src/components/Feed/FeedForm/FeedForm.tsx similarity index 96% rename from src/components/FeedForm/FeedForm.tsx rename to src/components/Feed/FeedForm/FeedForm.tsx index 10f3ca87..a6fb1d17 100644 --- a/src/components/FeedForm/FeedForm.tsx +++ b/src/components/Feed/FeedForm/FeedForm.tsx @@ -12,7 +12,7 @@ import { TextareaMessage, CameraIcon, } from "./FeedForm.styles"; -import { useFeedItemsStore } from "../../store/feedListStore"; +import { useFeedItemsStore } from "../../../store/feedListStore"; export default function FeedForm() { const [selectedImage, setSelectedImage] = useState(""); diff --git a/src/components/FeedList/FeedItem/FeedItem.styles.ts b/src/components/Feed/FeedItem/FeedItem.styles.ts similarity index 94% rename from src/components/FeedList/FeedItem/FeedItem.styles.ts rename to src/components/Feed/FeedItem/FeedItem.styles.ts index 03aa3769..24d0b8bf 100644 --- a/src/components/FeedList/FeedItem/FeedItem.styles.ts +++ b/src/components/Feed/FeedItem/FeedItem.styles.ts @@ -24,11 +24,11 @@ export const Avatar = styled.img` width: 100%; max-height: 96px; max-width: 96px; - border-radius: 40%; + border-radius: 42%; margin-right: 24px; `; -export const Description = styled.p` +export const Message = styled.p` padding: 0 4px; `; diff --git a/src/components/FeedList/FeedItem/FeedItem.tsx b/src/components/Feed/FeedItem/FeedItem.tsx similarity index 82% rename from src/components/FeedList/FeedItem/FeedItem.tsx rename to src/components/Feed/FeedItem/FeedItem.tsx index e6e8b103..914fe16c 100644 --- a/src/components/FeedList/FeedItem/FeedItem.tsx +++ b/src/components/Feed/FeedItem/FeedItem.tsx @@ -6,16 +6,12 @@ import { AuthorName, RemoveButton, SentBy, - Description, + Message, } from "./FeedItem.styles"; +import { TFeedItem } from "../../../lib/types"; type FeedItemProps = { - feedItem: { - id: number; - imgUrl: string; - description: string; - name: string; - }; + feedItem: TFeedItem; handleRemoveItem: (id: number) => void; }; @@ -28,7 +24,7 @@ export default function FeedItem({
- {feedItem.description} + {feedItem.message} Enviado por diff --git a/src/components/FeedList/FeedList.styles.ts b/src/components/Feed/FeedList/FeedList.styles.ts similarity index 100% rename from src/components/FeedList/FeedList.styles.ts rename to src/components/Feed/FeedList/FeedList.styles.ts diff --git a/src/components/FeedList/FeedList.tsx b/src/components/Feed/FeedList/FeedList.tsx similarity index 85% rename from src/components/FeedList/FeedList.tsx rename to src/components/Feed/FeedList/FeedList.tsx index 93ed5c48..80085f14 100644 --- a/src/components/FeedList/FeedList.tsx +++ b/src/components/Feed/FeedList/FeedList.tsx @@ -1,6 +1,6 @@ import { FeedListUl, FeedListContainer, FeedTitle } from "./FeedList.styles"; -import FeedItem from "./FeedItem/FeedItem"; -import { useFeedItemsStore } from "../../store/feedListStore"; +import FeedItem from "../FeedItem/FeedItem"; +import { useFeedItemsStore } from "../../../store/feedListStore"; export default function FeedList() { const feedItems = useFeedItemsStore((state) => state.feedItems); diff --git a/src/lib/mocks.ts b/src/lib/mocks.ts index eb75fc25..719c7aa3 100644 --- a/src/lib/mocks.ts +++ b/src/lib/mocks.ts @@ -3,7 +3,7 @@ export const feedItemsMocked = [ id: 1, imgUrl: "https://png.pngtree.com/thumb_back/fw800/background/20190221/ourmid/pngtree-hand-painted-beautiful-outdoor-outskirts-image_32488.jpg", - description: `Lorem ipsum dolor sit, amet consectetur adipisicing elit. Ducimus quo + message: `Lorem ipsum dolor sit, amet consectetur adipisicing elit. Ducimus quo explicabo qui voluptates, eaque distinctio dolor, ab facilis sequi eius aliquid recusandae consequuntur hic voluptas deserunt`, name: "Manuela Oliveira", @@ -12,14 +12,14 @@ export const feedItemsMocked = [ id: 2, imgUrl: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTERXnmbI1gv3m0GaiWvVTQ1PpxyykTASgOYA&s", - description: `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ut nisi justo. Donec scelerisque dui non magna viverra, sit amet feugiat leo vehicula.`, + message: `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ut nisi justo. Donec scelerisque dui non magna viverra, sit amet feugiat leo vehicula.`, name: "João Silva", }, { id: 3, imgUrl: "https://i.pinimg.com/236x/59/19/26/591926a3eb106ee1851a1e574fec0edb.jpg", - description: `Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Duis laoreet quam eget neque bibendum, sit amet blandit justo tristique.`, + message: `Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Duis laoreet quam eget neque bibendum, sit amet blandit justo tristique.`, name: "Maria Souza", }, ]; diff --git a/src/lib/types.ts b/src/lib/types.ts index 1e1a7699..fa357d57 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -1,6 +1,6 @@ export type TFeedItem = { id: number; imgUrl: string; - description: string; + message: string; name: string; }; diff --git a/src/store/feedListStore.ts b/src/store/feedListStore.ts index 81003fc9..89196d4b 100644 --- a/src/store/feedListStore.ts +++ b/src/store/feedListStore.ts @@ -6,7 +6,7 @@ type Store = { feedItems: TFeedItem[]; isLoading: boolean; removeFeedItem: (id: number) => void; - addItemToList: (imgUrl: string, name: string, description: string) => void; + addItemToList: (imgUrl: string, name: string, message: string) => void; }; export const useFeedItemsStore = create((set, get) => ({ @@ -23,12 +23,12 @@ export const useFeedItemsStore = create((set, get) => ({ feedItems: filteredFeedItems, })); }, - addItemToList: (imgUrl: string, name: string, description: string) => { + addItemToList: (imgUrl: string, name: string, message: string) => { const newItem: TFeedItem = { id: new Date().getTime(), imgUrl, name, - description, + message, }; set((state) => ({ From 7d0498e27263f74cc65b5800e6a2e3e28a629ff8 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 22:52:48 -0300 Subject: [PATCH 16/20] chore:simple validation --- src/components/Feed/FeedForm/FeedForm.tsx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/components/Feed/FeedForm/FeedForm.tsx b/src/components/Feed/FeedForm/FeedForm.tsx index a6fb1d17..d97a02db 100644 --- a/src/components/Feed/FeedForm/FeedForm.tsx +++ b/src/components/Feed/FeedForm/FeedForm.tsx @@ -43,7 +43,19 @@ export default function FeedForm() { const handleSubmitFeed = (event: React.FormEvent) => { event.preventDefault(); - addItemToList(selectedImage, name, message); + const formattedName = name.trim(); + const formattedMessage = message.trim(); + + if (!formattedName || !formattedMessage) { + alert("Somente o campo de imagem pode estar vazio!"); + return; + } + + const image = + selectedImage || + "https://cdn.pixabay.com/photo/2015/10/05/22/37/blank-profile-picture-973460_640.png"; + + addItemToList(image, formattedName, formattedMessage); resetForm(); }; From ce714747ae5aa67c445b3fe5a3bc0fbe5c1ddcb8 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 23:01:13 -0300 Subject: [PATCH 17/20] update ReadME --- README.md | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 0d6babed..9b42dfa2 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,17 @@ -# React + TypeScript + Vite +### Saudações -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. +Olá! Meu nome é Marcus, e espero que goste do que encontra-rá por aqui! -Currently, two official plugins are available: +### Sobre -- [@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 +Este projeto foi desenvolvido como parte de um desafio técnico para demonstrar minhas habilidades em desenvolvimento de software. Infelizmente, não consegui acessar o design completo encontrado no Adobe devido a restrições de acesso à conta disponibilizada. -## Expanding the ESLint configuration +Estou sempre buscando maneiras de aprimorar o código e aprender novas técnicas. No entanto, durante este desafio, precisei equilibrar a vontade de explorar mais a fundo com a velocidade de entrega. -If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: +### Como Executar -- Configure the top-level `parserOptions` property like this: - -```js -export default { - // other rules... - parserOptions: { - ecmaVersion: 'latest', - sourceType: 'module', - project: ['./tsconfig.json', './tsconfig.node.json'], - tsconfigRootDir: __dirname, - }, -} ``` - -- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` -- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` -- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list +git clone https://github.com/MarcusMartins38/web-developer-challenge.git +npm install +npm run dev +``` From 8f8f5ab9bc02d0c10bbbce7697d95aa6f21c8cd4 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 23:03:09 -0300 Subject: [PATCH 18/20] update ReadME --- README.md | 4 +++- image.png | Bin 0 -> 129954 bytes 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 image.png diff --git a/README.md b/README.md index 9b42dfa2..431a2c37 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,12 @@ Olá! Meu nome é Marcus, e espero que goste do que encontra-rá por aqui! ### Sobre -Este projeto foi desenvolvido como parte de um desafio técnico para demonstrar minhas habilidades em desenvolvimento de software. Infelizmente, não consegui acessar o design completo encontrado no Adobe devido a restrições de acesso à conta disponibilizada. +Este projeto foi desenvolvido como parte de um desafio técnico para demonstrar minhas habilidades em desenvolvimento de software. Infelizmente, não consegui acessar o design completo encontrado no Adobe devido a restrições de acesso à conta disponibilizada. Porém, fiz o mais próximo que consegui no 'olhômetro' kkkk😅. Estou sempre buscando maneiras de aprimorar o código e aprender novas técnicas. No entanto, durante este desafio, precisei equilibrar a vontade de explorar mais a fundo com a velocidade de entrega. +![alt text](image.png) + ### Como Executar ``` diff --git a/image.png b/image.png new file mode 100644 index 0000000000000000000000000000000000000000..fac6136ff7d53f8e6ce928c585a16fba05cf02a6 GIT binary patch literal 129954 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�E-;X>(om%ac43F@Xo)>Q-ijK{IO)5r^ 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

3oJk^PV@Xa$VPx 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 Nr2kZ}Ue_hze*iDU_I&^V literal 0 HcmV?d00001 From 759a4ce318d8474aa893e7d363bf31f46998aef4 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 23:04:07 -0300 Subject: [PATCH 19/20] remove hifen --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 431a2c37..e37bb109 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ### Saudações -Olá! Meu nome é Marcus, e espero que goste do que encontra-rá por aqui! +Olá! Meu nome é Marcus, e espero que goste do que encontrará por aqui! ### Sobre From b21a1618de7c6bcd95098bc8e7a0037d346217ae Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 3 Jul 2024 23:09:39 -0300 Subject: [PATCH 20/20] update contact --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index e37bb109..59003aea 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,11 @@ Olá! Meu nome é Marcus, e espero que goste do que encontrará por aqui! +Contato: +nome: Marcus Martins +email: marcusmartins38@gmail.com +celular: (69) 98401-2555 + ### Sobre Este projeto foi desenvolvido como parte de um desafio técnico para demonstrar minhas habilidades em desenvolvimento de software. Infelizmente, não consegui acessar o design completo encontrado no Adobe devido a restrições de acesso à conta disponibilizada. Porém, fiz o mais próximo que consegui no 'olhômetro' kkkk😅.