From 9ac7e8c241b80f31ac53c283df9ffe0b4e57f6cf Mon Sep 17 00:00:00 2001 From: CarlosScaldaferri Date: Wed, 22 Feb 2023 07:12:34 -0300 Subject: [PATCH 1/6] Primriro commit --- .gitignore | 24 + index.html | 13 + package-lock.json | 2704 +++++++++++++++++++++++ package.json | 24 + public/vite.svg | 1 + src/App.jsx | 15 + src/GlobalStyle.jsx | 12 + src/assets/react.svg | 1 + src/components/cardsList/CardsList.jsx | 58 + src/components/cardsList/Style.jsx | 7 + src/components/cardsList/card/Card.jsx | 30 + src/components/cardsList/card/Style.jsx | 10 + src/components/header/Header.jsx | 43 + src/components/header/Style.jsx | 37 + src/main.jsx | 12 + src/pages/details/Details.jsx | 9 + src/pages/details/Style.jsx | 5 + src/pages/home/Home.jsx | 12 + src/pages/home/Style.jsx | 5 + src/pages/pokedex/Pokedex.jsx | 10 + src/pages/pokedex/Style.jsx | 5 + src/router/Coordinator.jsx | 9 + src/router/Router.jsx | 14 + vite.config.js | 7 + 24 files changed, 3067 insertions(+) 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.jsx create mode 100644 src/GlobalStyle.jsx create mode 100644 src/assets/react.svg create mode 100644 src/components/cardsList/CardsList.jsx create mode 100644 src/components/cardsList/Style.jsx create mode 100644 src/components/cardsList/card/Card.jsx create mode 100644 src/components/cardsList/card/Style.jsx create mode 100644 src/components/header/Header.jsx create mode 100644 src/components/header/Style.jsx create mode 100644 src/main.jsx create mode 100644 src/pages/details/Details.jsx create mode 100644 src/pages/details/Style.jsx create mode 100644 src/pages/home/Home.jsx create mode 100644 src/pages/home/Style.jsx create mode 100644 src/pages/pokedex/Pokedex.jsx create mode 100644 src/pages/pokedex/Style.jsx create mode 100644 src/router/Coordinator.jsx create mode 100644 src/router/Router.jsx create mode 100644 vite.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..a547bf36d --- /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 000000000..79c470191 --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..246f09c53 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2704 @@ +{ + "name": "projeto-react-apis", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "projeto-react-apis", + "version": "0.0.0", + "dependencies": { + "axios": "^1.3.3", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.8.1", + "styled-components": "^5.3.6" + }, + "devDependencies": { + "@types/react": "^18.0.27", + "@types/react-dom": "^18.0.10", + "@vitejs/plugin-react": "^3.1.0", + "vite": "^4.1.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ampproject/remapping/node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", + "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", + "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.0", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.0", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.0", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", + "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", + "dependencies": { + "@babel/types": "^7.21.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.0.tgz", + "integrity": "sha512-eD/JQ21IG2i1FraJnTMbUarAUkA7G988ofehG5MDCRXaUU91rEBJuCeSoou2Sk1y4RbLYXzqEg1QLwEmRU4qcQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.1.tgz", + "integrity": "sha512-JzhBFpkuhBNYUY7qs+wTzNmyCWUHEaAFpQQD2YfU1rPL38/L43Wvid0fFkiOCnHvsGncRZgEPyGnltABLcVDTg==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz", + "integrity": "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.0.tgz", + "integrity": "sha512-Xdt2P1H4LKTO8ApPfnO1KmzYMFpp7D/EinoXzLYN/cHcBNrVCAkAtGUcXnHXrl/VGktureU6fkQrHSBE2URfoA==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.0", + "@babel/types": "^7.21.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.0.tgz", + "integrity": "sha512-uR7NWq2VNFnDi7EYqiRz2Jv/VQIu38tu64Zy8TX2nQFQ6etJ9V/Rr2msW8BS132mum2rL645qpDrLtAJtVpuow==", + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", + "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", + "dependencies": { + "@emotion/memoize": "^0.8.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", + "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + }, + "node_modules/@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, + "node_modules/@esbuild/android-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", + "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", + "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", + "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", + "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", + "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", + "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", + "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", + "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", + "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", + "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", + "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", + "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", + "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", + "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", + "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", + "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", + "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", + "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", + "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", + "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", + "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@remix-run/router": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.3.2.tgz", + "integrity": "sha512-t54ONhl/h75X94SWsHGQ4G/ZrCEguKSRQr7DrjTciJXW0YU1QhlwYeycvK5JgkzlxmvrK7wq1NB/PLtHxoiDcA==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.0.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz", + "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.0.11", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz", + "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "node_modules/@vitejs/plugin-react": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz", + "integrity": "sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.12", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "magic-string": "^0.27.0", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.1.0-beta.0" + } + }, + "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==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.3.tgz", + "integrity": "sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-plugin-styled-components": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz", + "integrity": "sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-module-imports": "^7.16.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "lodash": "^4.17.11", + "picomatch": "^2.3.0" + }, + "peerDependencies": { + "styled-components": ">= 2" + } + }, + "node_modules/babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==" + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "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.30001457", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001457.tgz", + "integrity": "sha512-SDIV6bgE1aVbK6XyxdURbUE89zY7+k1BBBaOwYwkNCglXlel/E7mELiHC64HQ+W0xSKlqWhV9Wh7iHxUjMs4fA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "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==", + "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==", + "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==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "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.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.304", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.304.tgz", + "integrity": "sha512-6c8M+ojPgDIXN2NyfGn8oHASXYnayj+gSEnGeLMKb9zjsySeVB/j7KkNAAG9yDcv8gNlhvFg5REa1N/kQU6pgA==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", + "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.16.17", + "@esbuild/android-arm64": "0.16.17", + "@esbuild/android-x64": "0.16.17", + "@esbuild/darwin-arm64": "0.16.17", + "@esbuild/darwin-x64": "0.16.17", + "@esbuild/freebsd-arm64": "0.16.17", + "@esbuild/freebsd-x64": "0.16.17", + "@esbuild/linux-arm": "0.16.17", + "@esbuild/linux-arm64": "0.16.17", + "@esbuild/linux-ia32": "0.16.17", + "@esbuild/linux-loong64": "0.16.17", + "@esbuild/linux-mips64el": "0.16.17", + "@esbuild/linux-ppc64": "0.16.17", + "@esbuild/linux-riscv64": "0.16.17", + "@esbuild/linux-s390x": "0.16.17", + "@esbuild/linux-x64": "0.16.17", + "@esbuild/netbsd-x64": "0.16.17", + "@esbuild/openbsd-x64": "0.16.17", + "@esbuild/sunos-x64": "0.16.17", + "@esbuild/win32-arm64": "0.16.17", + "@esbuild/win32-ia32": "0.16.17", + "@esbuild/win32-x64": "0.16.17" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "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==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "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/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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==", + "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/hoist-non-react-statics/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/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "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/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "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/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "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/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "peer": true + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.8.1.tgz", + "integrity": "sha512-Jgi8BzAJQ8MkPt8ipXnR73rnD7EmZ0HFFb7jdQU24TynGW1Ooqin2KVDN9voSC+7xhqbbCd2cjGUepb6RObnyg==", + "dependencies": { + "@remix-run/router": "1.3.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.8.1.tgz", + "integrity": "sha512-67EXNfkQgf34P7+PSb6VlBuaacGhkKn3kpE51+P6zYSG2kiRoumXEL6e27zTa9+PGF2MNXbgIUHTVlleLbIcHQ==", + "dependencies": { + "@remix-run/router": "1.3.2", + "react-router": "6.8.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rollup": { + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.17.2.tgz", + "integrity": "sha512-qMNZdlQPCkWodrAZ3qnJtvCAl4vpQ8q77uEujVCCbC/6CLB7Lcmvjq7HyiOSnf4fxTT9XgsE36oLHJBH49xjqA==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "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/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/styled-components": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.6.tgz", + "integrity": "sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg==", + "hasInstallScript": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^1.1.0", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1.12.0", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0", + "react-is": ">= 16.8.0" + } + }, + "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==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vite": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.3.tgz", + "integrity": "sha512-0Zqo4/Fr/swSOBmbl+HAAhOjrqNwju+yTtoe4hQX9UsARdcuc9njyOdr6xU0DDnV7YP0RT6mgTTOiRtZgxfCxA==", + "dev": true, + "dependencies": { + "esbuild": "^0.16.14", + "postcss": "^8.4.21", + "resolve": "^1.22.1", + "rollup": "^3.10.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": 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 + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", + "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", + "dev": true + }, + "@babel/core": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", + "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.0", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.0", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.0", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", + "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", + "requires": { + "@babel/types": "^7.21.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + }, + "@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "requires": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.0.tgz", + "integrity": "sha512-eD/JQ21IG2i1FraJnTMbUarAUkA7G988ofehG5MDCRXaUU91rEBJuCeSoou2Sk1y4RbLYXzqEg1QLwEmRU4qcQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + }, + "@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true + }, + "@babel/helpers": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.1.tgz", + "integrity": "sha512-JzhBFpkuhBNYUY7qs+wTzNmyCWUHEaAFpQQD2YfU1rPL38/L43Wvid0fFkiOCnHvsGncRZgEPyGnltABLcVDTg==" + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz", + "integrity": "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + }, + "@babel/traverse": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.0.tgz", + "integrity": "sha512-Xdt2P1H4LKTO8ApPfnO1KmzYMFpp7D/EinoXzLYN/cHcBNrVCAkAtGUcXnHXrl/VGktureU6fkQrHSBE2URfoA==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.0", + "@babel/types": "^7.21.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.0.tgz", + "integrity": "sha512-uR7NWq2VNFnDi7EYqiRz2Jv/VQIu38tu64Zy8TX2nQFQ6etJ9V/Rr2msW8BS132mum2rL645qpDrLtAJtVpuow==", + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@emotion/is-prop-valid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", + "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", + "requires": { + "@emotion/memoize": "^0.8.0" + } + }, + "@emotion/memoize": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", + "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + }, + "@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, + "@esbuild/android-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", + "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", + "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", + "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", + "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", + "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", + "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", + "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", + "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", + "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", + "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", + "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", + "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", + "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", + "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", + "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", + "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", + "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", + "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", + "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", + "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", + "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", + "dev": true, + "optional": true + }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@remix-run/router": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.3.2.tgz", + "integrity": "sha512-t54ONhl/h75X94SWsHGQ4G/ZrCEguKSRQr7DrjTciJXW0YU1QhlwYeycvK5JgkzlxmvrK7wq1NB/PLtHxoiDcA==" + }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "@types/react": { + "version": "18.0.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz", + "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "18.0.11", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz", + "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "@vitejs/plugin-react": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz", + "integrity": "sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==", + "dev": true, + "requires": { + "@babel/core": "^7.20.12", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "magic-string": "^0.27.0", + "react-refresh": "^0.14.0" + } + }, + "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==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "axios": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.3.tgz", + "integrity": "sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "babel-plugin-styled-components": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz", + "integrity": "sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-module-imports": "^7.16.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "lodash": "^4.17.11", + "picomatch": "^2.3.0" + } + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==" + }, + "browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + } + }, + "camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==" + }, + "caniuse-lite": { + "version": "1.0.30001457", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001457.tgz", + "integrity": "sha512-SDIV6bgE1aVbK6XyxdURbUE89zY7+k1BBBaOwYwkNCglXlel/E7mELiHC64HQ+W0xSKlqWhV9Wh7iHxUjMs4fA==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "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==" + }, + "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==", + "requires": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, + "csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "electron-to-chromium": { + "version": "1.4.304", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.304.tgz", + "integrity": "sha512-6c8M+ojPgDIXN2NyfGn8oHASXYnayj+gSEnGeLMKb9zjsySeVB/j7KkNAAG9yDcv8gNlhvFg5REa1N/kQU6pgA==", + "dev": true + }, + "esbuild": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", + "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.16.17", + "@esbuild/android-arm64": "0.16.17", + "@esbuild/android-x64": "0.16.17", + "@esbuild/darwin-arm64": "0.16.17", + "@esbuild/darwin-x64": "0.16.17", + "@esbuild/freebsd-arm64": "0.16.17", + "@esbuild/freebsd-x64": "0.16.17", + "@esbuild/linux-arm": "0.16.17", + "@esbuild/linux-arm64": "0.16.17", + "@esbuild/linux-ia32": "0.16.17", + "@esbuild/linux-loong64": "0.16.17", + "@esbuild/linux-mips64el": "0.16.17", + "@esbuild/linux-ppc64": "0.16.17", + "@esbuild/linux-riscv64": "0.16.17", + "@esbuild/linux-s390x": "0.16.17", + "@esbuild/linux-x64": "0.16.17", + "@esbuild/netbsd-x64": "0.16.17", + "@esbuild/openbsd-x64": "0.16.17", + "@esbuild/sunos-x64": "0.16.17", + "@esbuild/win32-arm64": "0.16.17", + "@esbuild/win32-ia32": "0.16.17", + "@esbuild/win32-x64": "0.16.17" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "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==" + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "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 + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "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==" + }, + "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==", + "requires": { + "react-is": "^16.7.0" + }, + "dependencies": { + "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==" + } + } + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "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==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "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, + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.13" + } + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true + }, + "node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "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==" + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "peer": true + }, + "react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true + }, + "react-router": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.8.1.tgz", + "integrity": "sha512-Jgi8BzAJQ8MkPt8ipXnR73rnD7EmZ0HFFb7jdQU24TynGW1Ooqin2KVDN9voSC+7xhqbbCd2cjGUepb6RObnyg==", + "requires": { + "@remix-run/router": "1.3.2" + } + }, + "react-router-dom": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.8.1.tgz", + "integrity": "sha512-67EXNfkQgf34P7+PSb6VlBuaacGhkKn3kpE51+P6zYSG2kiRoumXEL6e27zTa9+PGF2MNXbgIUHTVlleLbIcHQ==", + "requires": { + "@remix-run/router": "1.3.2", + "react-router": "6.8.1" + } + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "rollup": { + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.17.2.tgz", + "integrity": "sha512-qMNZdlQPCkWodrAZ3qnJtvCAl4vpQ8q77uEujVCCbC/6CLB7Lcmvjq7HyiOSnf4fxTT9XgsE36oLHJBH49xjqA==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "styled-components": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.6.tgz", + "integrity": "sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^1.1.0", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1.12.0", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "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==" + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "vite": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.3.tgz", + "integrity": "sha512-0Zqo4/Fr/swSOBmbl+HAAhOjrqNwju+yTtoe4hQX9UsARdcuc9njyOdr6xU0DDnV7YP0RT6mgTTOiRtZgxfCxA==", + "dev": true, + "requires": { + "esbuild": "^0.16.14", + "fsevents": "~2.3.2", + "postcss": "^8.4.21", + "resolve": "^1.22.1", + "rollup": "^3.10.0" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..a63a6924c --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "projeto-react-apis", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "axios": "^1.3.3", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.8.1", + "styled-components": "^5.3.6" + }, + "devDependencies": { + "@types/react": "^18.0.27", + "@types/react-dom": "^18.0.10", + "@vitejs/plugin-react": "^3.1.0", + "vite": "^4.1.0" + } +} diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 000000000..e7b8dfb1b --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/App.jsx b/src/App.jsx new file mode 100644 index 000000000..b67b5b133 --- /dev/null +++ b/src/App.jsx @@ -0,0 +1,15 @@ +import { ContainerStyled, GlobalStyle } from "./GlobalStyle"; +import { Router } from "./router/Router"; + +function App() { + return ( +
+ + + + +
+ ); +} + +export default App; diff --git a/src/GlobalStyle.jsx b/src/GlobalStyle.jsx new file mode 100644 index 000000000..4f61b2a75 --- /dev/null +++ b/src/GlobalStyle.jsx @@ -0,0 +1,12 @@ +import styled, { createGlobalStyle } from "styled-components"; +export const GlobalStyle = createGlobalStyle` +* { + padding: 0; + margin: 0; + box-sizing: border-box; +} +`; +export const ContainerStyled = styled.div` + display: flex; + flex-direction: column; +`; diff --git a/src/assets/react.svg b/src/assets/react.svg new file mode 100644 index 000000000..6c87de9bb --- /dev/null +++ b/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/cardsList/CardsList.jsx b/src/components/cardsList/CardsList.jsx new file mode 100644 index 000000000..c3ff97add --- /dev/null +++ b/src/components/cardsList/CardsList.jsx @@ -0,0 +1,58 @@ +import axios from "axios"; +import { useEffect, useState } from "react"; +import Card from "./card/Card"; +import { ContainerStyled } from "./Style"; + +export default function CardsList() { + const [count, setCount] = useState(0); + + let [pagnatedPokemons, setPagnatedPokemons] = useState([]); + const limit = 500; + const [offSet, setOffSet] = useState(0); + + const getPokemons = async () => { + try { + const response = await axios.get(`https://pokeapi.co/api/v2/pokemon`, { + params: { + limit: limit, + offset: offSet, + }, + }); + setCount(response.data.count); + setPagnatedPokemons(response.data.results); + console.log(response.data); + } catch (error) { + console.log(error); + } + }; + + useEffect(() => { + getPokemons(); + }, [offSet]); + + return ( + + {pagnatedPokemons.map((pokemon) => ( +
+ +
+ ))} + + +
+ ); +} diff --git a/src/components/cardsList/Style.jsx b/src/components/cardsList/Style.jsx new file mode 100644 index 000000000..99174326f --- /dev/null +++ b/src/components/cardsList/Style.jsx @@ -0,0 +1,7 @@ +import styled from "styled-components"; + +export const ContainerStyled = styled.div` + background-color: purple; + display: flex; + flex-wrap: wrap; +`; diff --git a/src/components/cardsList/card/Card.jsx b/src/components/cardsList/card/Card.jsx new file mode 100644 index 000000000..f595ddd21 --- /dev/null +++ b/src/components/cardsList/card/Card.jsx @@ -0,0 +1,30 @@ +import axios from "axios"; +import { useEffect, useState } from "react"; +import { ContainerStyled, ImgPokemon } from "./Style"; + +export default function Card({ url }) { + let [pokemonResponse, setPokemonResponse] = useState([]); + const getPokemon = async () => { + try { + const response = await axios.get(url); + setPokemonResponse(response.data); + } catch (error) { + console.log(error); + } + }; + + useEffect(() => { + getPokemon(); + }, []); + + return ( + + +

{pokemonResponse.id}

+

{pokemonResponse.name}

+
+ ); +} diff --git a/src/components/cardsList/card/Style.jsx b/src/components/cardsList/card/Style.jsx new file mode 100644 index 000000000..a71f4b8f7 --- /dev/null +++ b/src/components/cardsList/card/Style.jsx @@ -0,0 +1,10 @@ +import styled from "styled-components"; + +export const ContainerStyled = styled.div` + background-color: purple; + display: flex; +`; +export const ImgPokemon = styled.img` + width: 70px; + height: 70px; +`; diff --git a/src/components/header/Header.jsx b/src/components/header/Header.jsx new file mode 100644 index 000000000..2cd191b21 --- /dev/null +++ b/src/components/header/Header.jsx @@ -0,0 +1,43 @@ +import { useNavigate } from "react-router-dom"; +import { + ButtonAllPokemons, + ButtonDeleteFromPokedex, + ButtonPokedex, + ContainerStyled, + HeaderCenter, + HeaderLeft, + HeaderRight, +} from "./Style"; +import { goToPokedex, goToHome } from "../../router/Coordinator"; + +export default function Header({ calledFor }) { + const navigate = useNavigate(); + return ( + + + {calledFor == "pokedex" || calledFor == "details" ? ( + goToHome(navigate)}> + All pokemons + + ) : ( + <> + )} + + + + {calledFor == "details" ? ( + Delete from pokédex + ) : ( + <> + )} + {calledFor == "home" ? ( + goToPokedex(navigate)}> + Pokédex + + ) : ( + <> + )} + + + ); +} diff --git a/src/components/header/Style.jsx b/src/components/header/Style.jsx new file mode 100644 index 000000000..ce072a4e4 --- /dev/null +++ b/src/components/header/Style.jsx @@ -0,0 +1,37 @@ +import styled from "styled-components"; + +export const ContainerStyled = styled.header` + background-color: red; + height: 200px; + display: flex; +`; +export const HeaderLeft = styled.div` + background-color: green; + width: 20%; + display: flex; + align-items: center; + justify-content: center; +`; +export const HeaderCenter = styled.div` + background-color: yellow; + width: 60%; +`; +export const HeaderRight = styled.div` + background-color: blue; + width: 20%; + display: flex; + align-items: center; + justify-content: center; +`; +export const ButtonAllPokemons = styled.button` + width: 100px; + height: 50px; +`; +export const ButtonPokedex = styled.button` + width: 100px; + height: 50px; +`; +export const ButtonDeleteFromPokedex = styled.button` + width: 100px; + height: 50px; +`; diff --git a/src/main.jsx b/src/main.jsx new file mode 100644 index 000000000..655db4721 --- /dev/null +++ b/src/main.jsx @@ -0,0 +1,12 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import { BrowserRouter } from "react-router-dom"; +import App from "./App"; + +ReactDOM.createRoot(document.getElementById("root")).render( + + + + + +); diff --git a/src/pages/details/Details.jsx b/src/pages/details/Details.jsx new file mode 100644 index 000000000..baf3ea268 --- /dev/null +++ b/src/pages/details/Details.jsx @@ -0,0 +1,9 @@ +import Header from "../../components/header/Header"; + +export default function Details() { + return ( + +
+ + ); +} diff --git a/src/pages/details/Style.jsx b/src/pages/details/Style.jsx new file mode 100644 index 000000000..ecb9f8bea --- /dev/null +++ b/src/pages/details/Style.jsx @@ -0,0 +1,5 @@ +import styled from "styled-components"; + +export const ContainerStyled = styled.div` + background-color: yellow; +`; diff --git a/src/pages/home/Home.jsx b/src/pages/home/Home.jsx new file mode 100644 index 000000000..24ea53cc6 --- /dev/null +++ b/src/pages/home/Home.jsx @@ -0,0 +1,12 @@ +import CardsList from "../../components/cardsList/CardsList"; +import Header from "../../components/header/Header"; +import { ContainerStyled } from "./Style"; + +export default function Home() { + return ( + +
+ + + ); +} diff --git a/src/pages/home/Style.jsx b/src/pages/home/Style.jsx new file mode 100644 index 000000000..1ce92d06f --- /dev/null +++ b/src/pages/home/Style.jsx @@ -0,0 +1,5 @@ +import styled from "styled-components"; + +export const ContainerStyled = styled.header` + background-color: red; +`; diff --git a/src/pages/pokedex/Pokedex.jsx b/src/pages/pokedex/Pokedex.jsx new file mode 100644 index 000000000..15565b9aa --- /dev/null +++ b/src/pages/pokedex/Pokedex.jsx @@ -0,0 +1,10 @@ +import Header from "../../components/header/Header"; +import { ContainerStyled } from "./Style"; + +export default function Pokedex() { + return ( + +
+ + ); +} diff --git a/src/pages/pokedex/Style.jsx b/src/pages/pokedex/Style.jsx new file mode 100644 index 000000000..5cee006fa --- /dev/null +++ b/src/pages/pokedex/Style.jsx @@ -0,0 +1,5 @@ +import styled from "styled-components"; + +export const ContainerStyled = styled.div` + background-color: Blue; +`; diff --git a/src/router/Coordinator.jsx b/src/router/Coordinator.jsx new file mode 100644 index 000000000..73bf7179b --- /dev/null +++ b/src/router/Coordinator.jsx @@ -0,0 +1,9 @@ +export const goToHome = (navigate) => { + navigate("/"); +}; +export const goToPokedex = (navigate) => { + navigate("/pokedex"); +}; +export const goToDetails = (navigate) => { + navigate("/details"); +}; diff --git a/src/router/Router.jsx b/src/router/Router.jsx new file mode 100644 index 000000000..092cbc2a0 --- /dev/null +++ b/src/router/Router.jsx @@ -0,0 +1,14 @@ +import { Routes, Route } from "react-router-dom"; +import Details from "../pages/details/Details"; +import Home from "../pages/home/Home"; +import Pokedex from "../pages/pokedex/Pokedex"; + +export const Router = () => { + return ( + + } /> + } /> + } /> + + ); +}; diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 000000000..5a33944a9 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From 6dfe148f3aa11786857bbb047eb415de8ecc6ec6 Mon Sep 17 00:00:00 2001 From: CarlosScaldaferri Date: Mon, 6 Mar 2023 06:56:51 -0300 Subject: [PATCH 2/6] =?UTF-8?q?Antes=20de=20alterar=20a=20pagina=C3=A7?= =?UTF-8?q?=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 470 ++++++++++++++++++++++- package.json | 2 + src/components/card/Card.jsx | 67 ++++ src/components/card/Style.jsx | 22 ++ src/components/cardsList/CardsList.jsx | 92 +++-- src/components/cardsList/Style.jsx | 56 ++- src/components/cardsList/card/Card.jsx | 30 -- src/components/cardsList/card/Style.jsx | 10 - src/components/header/Header.jsx | 4 +- src/components/header/Style.jsx | 4 - src/components/pagination/Pagination.jsx | 36 ++ src/components/pagination/Style.jsx | 50 +++ src/components/pokedex/Pokedex.jsx | 51 +++ src/components/pokedex/Style.jsx | 14 + src/pages/details/Details.jsx | 10 + src/pages/details/Style.jsx | 4 +- src/pages/home/Style.jsx | 4 +- src/pages/pokedex/Pokedex.jsx | 2 + src/pages/pokedex/Style.jsx | 4 +- src/router/Coordinator.jsx | 12 +- src/router/Router.jsx | 7 +- 21 files changed, 832 insertions(+), 119 deletions(-) create mode 100644 src/components/card/Card.jsx create mode 100644 src/components/card/Style.jsx delete mode 100644 src/components/cardsList/card/Card.jsx delete mode 100644 src/components/cardsList/card/Style.jsx create mode 100644 src/components/pagination/Pagination.jsx create mode 100644 src/components/pagination/Style.jsx create mode 100644 src/components/pokedex/Pokedex.jsx create mode 100644 src/components/pokedex/Style.jsx diff --git a/package-lock.json b/package-lock.json index 246f09c53..410083659 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,9 @@ "dependencies": { "axios": "^1.3.3", "react": "^18.2.0", + "react-bootstrap": "^2.7.2", "react-dom": "^18.2.0", + "react-paginate": "^8.1.4", "react-router-dom": "^6.8.1", "styled-components": "^5.3.6" }, @@ -327,6 +329,17 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", @@ -791,6 +804,26 @@ "@jridgewell/sourcemap-codec": "1.4.14" } }, + "node_modules/@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.4.1.tgz", + "integrity": "sha512-NmhoilMDyIfQiOSdQgxpVH2tC2u85Y0mVijtBNbI9kcDYLEiW/r6vKYVKtkyU+C4qobXhGMPfZ70PTc0lysSVA==", + "dependencies": { + "@swc/helpers": "^0.4.14" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, "node_modules/@remix-run/router": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.3.2.tgz", @@ -799,17 +832,54 @@ "node": ">=14" } }, + "node_modules/@restart/hooks": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.9.tgz", + "integrity": "sha512-3BekqcwB6Umeya+16XPooARn4qEPW6vNvwYnlofIYe6h9qG1/VeD7UvShCWx11eFz5ELYmwIEshz+MkPX3wjcQ==", + "dependencies": { + "dequal": "^2.0.2" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@restart/ui": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.6.1.tgz", + "integrity": "sha512-cMI9DdqZV5VGEyANYM4alHK9/2Lh/mKZAMydztMl6PBLm6EetFbwE2RfYqliloR+EtEULlI4TiZk/XPhQAovxw==", + "dependencies": { + "@babel/runtime": "^7.20.7", + "@popperjs/core": "^2.11.6", + "@react-aria/ssr": "^3.4.1", + "@restart/hooks": "^0.4.7", + "@types/warning": "^3.0.0", + "dequal": "^2.0.3", + "dom-helpers": "^5.2.0", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + } + }, + "node_modules/@swc/helpers": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", + "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "node_modules/@types/react": { "version": "18.0.28", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz", "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==", - "dev": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -825,11 +895,23 @@ "@types/react": "*" } }, + "node_modules/@types/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==", + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "dev": true + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "node_modules/@types/warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", + "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==" }, "node_modules/@vitejs/plugin-react": { "version": "3.1.0", @@ -961,6 +1043,11 @@ "node": ">=4" } }, + "node_modules/classnames": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -1012,8 +1099,7 @@ "node_modules/csstype": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", - "dev": true + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" }, "node_modules/debug": { "version": "4.3.4", @@ -1039,6 +1125,23 @@ "node": ">=0.4.0" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.304", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.304.tgz", @@ -1201,6 +1304,14 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/is-core-module": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", @@ -1320,6 +1431,14 @@ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "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/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -1372,6 +1491,38 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, + "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/prop-types-extra": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "dependencies": { + "react-is": "^16.3.2", + "warning": "^4.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/prop-types-extra/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/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -1388,6 +1539,35 @@ "node": ">=0.10.0" } }, + "node_modules/react-bootstrap": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.7.2.tgz", + "integrity": "sha512-WDSln+mG4RLLFO01stkj2bEx/3MF4YihK9D/dWnHaSxOiQZLbhhlf95D2Jb20X3t2m7vMxRe888FVrfLJoGmmA==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@restart/hooks": "^0.4.6", + "@restart/ui": "^1.4.1", + "@types/react-transition-group": "^4.4.4", + "classnames": "^2.3.1", + "dom-helpers": "^5.2.1", + "invariant": "^2.2.4", + "prop-types": "^15.8.1", + "prop-types-extra": "^1.1.0", + "react-transition-group": "^4.4.2", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "@types/react": ">=16.14.8", + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/react-dom": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", @@ -1406,6 +1586,22 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "peer": true }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-paginate": { + "version": "8.1.4", + "resolved": "https://registry.npmjs.org/react-paginate/-/react-paginate-8.1.4.tgz", + "integrity": "sha512-c3rxjcTEqeDQa6LqXifxLeFguY2qy2CHGRphVjHLFFMGfIHyaJ+v3bOvIlLYEeohwQ1q+cQpknjsqBVrkc/SNA==", + "dependencies": { + "prop-types": "^15" + }, + "peerDependencies": { + "react": "^16 || ^17 || ^18" + } + }, "node_modules/react-refresh": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", @@ -1445,6 +1641,26 @@ "react-dom": ">=16.8" } }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -1570,6 +1786,25 @@ "node": ">=4" } }, + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + }, + "node_modules/uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", @@ -1645,6 +1880,14 @@ } } }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -1873,6 +2116,14 @@ "@babel/helper-plugin-utils": "^7.19.0" } }, + "@babel/runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "requires": { + "regenerator-runtime": "^0.13.11" + } + }, "@babel/template": { "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", @@ -2121,22 +2372,65 @@ "@jridgewell/sourcemap-codec": "1.4.14" } }, + "@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + }, + "@react-aria/ssr": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.4.1.tgz", + "integrity": "sha512-NmhoilMDyIfQiOSdQgxpVH2tC2u85Y0mVijtBNbI9kcDYLEiW/r6vKYVKtkyU+C4qobXhGMPfZ70PTc0lysSVA==", + "requires": { + "@swc/helpers": "^0.4.14" + } + }, "@remix-run/router": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.3.2.tgz", "integrity": "sha512-t54ONhl/h75X94SWsHGQ4G/ZrCEguKSRQr7DrjTciJXW0YU1QhlwYeycvK5JgkzlxmvrK7wq1NB/PLtHxoiDcA==" }, + "@restart/hooks": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.9.tgz", + "integrity": "sha512-3BekqcwB6Umeya+16XPooARn4qEPW6vNvwYnlofIYe6h9qG1/VeD7UvShCWx11eFz5ELYmwIEshz+MkPX3wjcQ==", + "requires": { + "dequal": "^2.0.2" + } + }, + "@restart/ui": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.6.1.tgz", + "integrity": "sha512-cMI9DdqZV5VGEyANYM4alHK9/2Lh/mKZAMydztMl6PBLm6EetFbwE2RfYqliloR+EtEULlI4TiZk/XPhQAovxw==", + "requires": { + "@babel/runtime": "^7.20.7", + "@popperjs/core": "^2.11.6", + "@react-aria/ssr": "^3.4.1", + "@restart/hooks": "^0.4.7", + "@types/warning": "^3.0.0", + "dequal": "^2.0.3", + "dom-helpers": "^5.2.0", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + } + }, + "@swc/helpers": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", + "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", + "requires": { + "tslib": "^2.4.0" + } + }, "@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "@types/react": { "version": "18.0.28", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz", "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==", - "dev": true, "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -2152,11 +2446,23 @@ "@types/react": "*" } }, + "@types/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==", + "requires": { + "@types/react": "*" + } + }, "@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "dev": true + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "@types/warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", + "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==" }, "@vitejs/plugin-react": { "version": "3.1.0", @@ -2244,6 +2550,11 @@ "supports-color": "^5.3.0" } }, + "classnames": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -2289,8 +2600,7 @@ "csstype": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", - "dev": true + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" }, "debug": { "version": "4.3.4", @@ -2305,6 +2615,20 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" + }, + "dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "requires": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "electron-to-chromium": { "version": "1.4.304", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.304.tgz", @@ -2420,6 +2744,14 @@ } } }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, "is-core-module": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", @@ -2506,6 +2838,11 @@ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true }, + "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==" + }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -2539,6 +2876,39 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + }, + "dependencies": { + "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==" + } + } + }, + "prop-types-extra": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "requires": { + "react-is": "^16.3.2", + "warning": "^4.0.0" + }, + "dependencies": { + "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==" + } + } + }, "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -2552,6 +2922,25 @@ "loose-envify": "^1.1.0" } }, + "react-bootstrap": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.7.2.tgz", + "integrity": "sha512-WDSln+mG4RLLFO01stkj2bEx/3MF4YihK9D/dWnHaSxOiQZLbhhlf95D2Jb20X3t2m7vMxRe888FVrfLJoGmmA==", + "requires": { + "@babel/runtime": "^7.17.2", + "@restart/hooks": "^0.4.6", + "@restart/ui": "^1.4.1", + "@types/react-transition-group": "^4.4.4", + "classnames": "^2.3.1", + "dom-helpers": "^5.2.1", + "invariant": "^2.2.4", + "prop-types": "^15.8.1", + "prop-types-extra": "^1.1.0", + "react-transition-group": "^4.4.2", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + } + }, "react-dom": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", @@ -2567,6 +2956,19 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "peer": true }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "react-paginate": { + "version": "8.1.4", + "resolved": "https://registry.npmjs.org/react-paginate/-/react-paginate-8.1.4.tgz", + "integrity": "sha512-c3rxjcTEqeDQa6LqXifxLeFguY2qy2CHGRphVjHLFFMGfIHyaJ+v3bOvIlLYEeohwQ1q+cQpknjsqBVrkc/SNA==", + "requires": { + "prop-types": "^15" + } + }, "react-refresh": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", @@ -2590,6 +2992,22 @@ "react-router": "6.8.1" } }, + "react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "requires": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + } + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -2671,6 +3089,22 @@ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" }, + "tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + }, + "uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "requires": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + } + }, "update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", @@ -2694,6 +3128,14 @@ "rollup": "^3.10.0" } }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", diff --git a/package.json b/package.json index a63a6924c..933aba914 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,9 @@ "dependencies": { "axios": "^1.3.3", "react": "^18.2.0", + "react-bootstrap": "^2.7.2", "react-dom": "^18.2.0", + "react-paginate": "^8.1.4", "react-router-dom": "^6.8.1", "styled-components": "^5.3.6" }, diff --git a/src/components/card/Card.jsx b/src/components/card/Card.jsx new file mode 100644 index 000000000..14b53183a --- /dev/null +++ b/src/components/card/Card.jsx @@ -0,0 +1,67 @@ +import axios from "axios"; +import { useEffect, useState } from "react"; +import { useNavigate } from "react-router-dom"; +import { goToDetails } from "../../router/Coordinator"; +import { + Capture, + ContainerStyled, + Details, + ImgPokemon, + Captured, +} from "./Style"; + +export default function Card({ url, setpokedex }) { + const navigate = useNavigate(); + + let [pokemonResponse, setPokemonResponse] = useState([]); + + const getPokemon = async () => { + try { + const response = await axios.get(url); + setPokemonResponse(response.data); + } catch (error) { + console.log(error); + } + }; + + useEffect(() => { + getPokemon(); + }, []); + + let pokedex = JSON.parse(localStorage.getItem("pokedex")); + pokedex = pokedex == null ? [] : pokedex; + + return ( + + +

{url.split("/")[url.split("/").length - 2]}

+ +
+ goToDetails( + navigate, + encodeURIComponent(JSON.stringify(pokemonResponse)) + ) + } + > + Details +
+ {!pokedex.some((pokemon) => pokemon == url) ? ( + { + pokedex.push(url); + localStorage.setItem("pokedex", JSON.stringify(pokedex)); + setpokedex(pokedex); + }} + > + Capture + + ) : ( + Captured + )} +
+ ); +} diff --git a/src/components/card/Style.jsx b/src/components/card/Style.jsx new file mode 100644 index 000000000..2b8425bd5 --- /dev/null +++ b/src/components/card/Style.jsx @@ -0,0 +1,22 @@ +import styled from "styled-components"; + +export const ContainerStyled = styled.div` + display: flex; +`; +export const ImgPokemon = styled.img` + width: 70px; + height: 70px; +`; +export const Details = styled.button` + width: 70px; + height: 70px; +`; +export const Capture = styled.button` + width: 70px; + height: 70px; +`; +export const Captured = styled.button` + width: 70px; + height: 70px; + background-color: red; +`; diff --git a/src/components/cardsList/CardsList.jsx b/src/components/cardsList/CardsList.jsx index c3ff97add..af01a1d76 100644 --- a/src/components/cardsList/CardsList.jsx +++ b/src/components/cardsList/CardsList.jsx @@ -1,58 +1,70 @@ import axios from "axios"; -import { useEffect, useState } from "react"; -import Card from "./card/Card"; -import { ContainerStyled } from "./Style"; +import { useEffect, useLayoutEffect, useState } from "react"; +import { useNavigate, useParams } from "react-router-dom"; +import { goToHome } from "../../router/Coordinator"; +import Card from "../card/Card"; +import Pagination from "../pagination/Pagination"; +import { ContainerStyled, Pokemons, PaginationContainer } from "./Style"; + +export default function CardsList({ calledFor }) { + const pathParams = useParams(); -export default function CardsList() { const [count, setCount] = useState(0); + const [globaLimit, setGlobalLimit] = useState(20); + const [currentPokemons, setCurrentPokemons] = useState([]); + const [pokedex, setpokedex] = useState( + JSON.parse( + localStorage.getItem("pokedex") == null + ? "[]" + : localStorage.getItem("pokedex") + ) + ); + const [isLoading, setIsLoading] = useState(false); - let [pagnatedPokemons, setPagnatedPokemons] = useState([]); - const limit = 500; - const [offSet, setOffSet] = useState(0); + const globalOffSet = !pathParams.pageIndex + ? 0 + : pathParams.pageIndex * globaLimit; - const getPokemons = async () => { + const getPokemons = async (url) => { try { - const response = await axios.get(`https://pokeapi.co/api/v2/pokemon`, { - params: { - limit: limit, - offset: offSet, - }, - }); + let response = await axios.get(url); setCount(response.data.count); - setPagnatedPokemons(response.data.results); - console.log(response.data); + setCurrentPokemons(response.data.results); } catch (error) { console.log(error); } }; - useEffect(() => { - getPokemons(); - }, [offSet]); + useLayoutEffect(() => { + setIsLoading(true); + getPokemons( + `https://pokeapi.co/api/v2/pokemon?limit=${globaLimit}&offset=${globalOffSet}` + ); + setIsLoading(false); + }, [pathParams.pageIndex, pokedex]); + + const navigate = useNavigate(); return ( - {pagnatedPokemons.map((pokemon) => ( -
- -
- ))} - - + {isLoading ? ( + <>loading... + ) : ( + + {currentPokemons?.map((pokemon) => ( +
+ +
+ ))} +
+ )} + +
); } diff --git a/src/components/cardsList/Style.jsx b/src/components/cardsList/Style.jsx index 99174326f..99fb03077 100644 --- a/src/components/cardsList/Style.jsx +++ b/src/components/cardsList/Style.jsx @@ -1,7 +1,61 @@ import styled from "styled-components"; +import Pagination from "react-paginate"; export const ContainerStyled = styled.div` - background-color: purple; display: flex; + align-items: center; + flex-direction: column; + gap: 20px; flex-wrap: wrap; `; +export const Pokemons = styled.div` + display: flex; + flex-wrap: wrap; +`; +export const PaginationContainer = styled(Pagination)` + display: flex; + justify-content: center; + align-items: center; + width: fit-content; + height: fit-content; + border: 1px solid black; + color: black; + + .item { + align-items: center; + cursor: pointer; + display: flex; + font-size: 20px; + height: 30px; + justify-content: center; + width: 40px; + } + + .disabled-page { + color: #808e9b; + } + + .active { + border: solid 1px #808e9b; + color: #808e9b; + } + + .next { + font-size: 20px; + height: 30px; + width: 100px; + border-left: 1px solid black; + } + + .pagination { + background-color: #0fbcf9; + display: flex; + } + + .previous { + font-size: 20px; + height: 30px; + width: 100px; + border-right: 1px solid black; + } +`; diff --git a/src/components/cardsList/card/Card.jsx b/src/components/cardsList/card/Card.jsx deleted file mode 100644 index f595ddd21..000000000 --- a/src/components/cardsList/card/Card.jsx +++ /dev/null @@ -1,30 +0,0 @@ -import axios from "axios"; -import { useEffect, useState } from "react"; -import { ContainerStyled, ImgPokemon } from "./Style"; - -export default function Card({ url }) { - let [pokemonResponse, setPokemonResponse] = useState([]); - const getPokemon = async () => { - try { - const response = await axios.get(url); - setPokemonResponse(response.data); - } catch (error) { - console.log(error); - } - }; - - useEffect(() => { - getPokemon(); - }, []); - - return ( - - -

{pokemonResponse.id}

-

{pokemonResponse.name}

-
- ); -} diff --git a/src/components/cardsList/card/Style.jsx b/src/components/cardsList/card/Style.jsx deleted file mode 100644 index a71f4b8f7..000000000 --- a/src/components/cardsList/card/Style.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import styled from "styled-components"; - -export const ContainerStyled = styled.div` - background-color: purple; - display: flex; -`; -export const ImgPokemon = styled.img` - width: 70px; - height: 70px; -`; diff --git a/src/components/header/Header.jsx b/src/components/header/Header.jsx index 2cd191b21..983844951 100644 --- a/src/components/header/Header.jsx +++ b/src/components/header/Header.jsx @@ -16,7 +16,7 @@ export default function Header({ calledFor }) { {calledFor == "pokedex" || calledFor == "details" ? ( - goToHome(navigate)}> + goToHome(navigate, 0)}> All pokemons ) : ( @@ -31,7 +31,7 @@ export default function Header({ calledFor }) { <> )} {calledFor == "home" ? ( - goToPokedex(navigate)}> + goToPokedex(navigate, 0)}> Pokédex ) : ( diff --git a/src/components/header/Style.jsx b/src/components/header/Style.jsx index ce072a4e4..32ae0a555 100644 --- a/src/components/header/Style.jsx +++ b/src/components/header/Style.jsx @@ -1,23 +1,19 @@ import styled from "styled-components"; export const ContainerStyled = styled.header` - background-color: red; height: 200px; display: flex; `; export const HeaderLeft = styled.div` - background-color: green; width: 20%; display: flex; align-items: center; justify-content: center; `; export const HeaderCenter = styled.div` - background-color: yellow; width: 60%; `; export const HeaderRight = styled.div` - background-color: blue; width: 20%; display: flex; align-items: center; diff --git a/src/components/pagination/Pagination.jsx b/src/components/pagination/Pagination.jsx new file mode 100644 index 000000000..33a6d8e04 --- /dev/null +++ b/src/components/pagination/Pagination.jsx @@ -0,0 +1,36 @@ +import { useEffect, useState } from "react"; +import { useNavigate } from "react-router-dom"; +import { PaginationContainer } from "./Style"; + +export default function Pagination({ count, globaLimit, pageIndex, goTo }) { + const navigate = useNavigate(); + + const [currentPage, setCurrentPage] = useState(pageIndex); + useEffect(() => { + setCurrentPage(pageIndex); + }, [pageIndex]); + + const onPageChange = (selectedPage) => { + goTo(navigate, selectedPage.selected); + }; + + return ( + + ); +} diff --git a/src/components/pagination/Style.jsx b/src/components/pagination/Style.jsx new file mode 100644 index 000000000..f9ef34f95 --- /dev/null +++ b/src/components/pagination/Style.jsx @@ -0,0 +1,50 @@ +import styled from "styled-components"; +import Pagination from "react-paginate"; + +export const PaginationContainer = styled(Pagination)` + display: flex; + justify-content: center; + align-items: center; + width: fit-content; + height: fit-content; + border: 1px solid black; + color: black; + + .item { + align-items: center; + cursor: pointer; + display: flex; + font-size: 20px; + height: 30px; + justify-content: center; + width: 40px; + } + + .disabled-page { + color: #808e9b; + } + + .active { + border: solid 1px #808e9b; + color: #808e9b; + } + + .next { + font-size: 20px; + height: 30px; + width: 100px; + border-left: 1px solid black; + } + + .pagination { + background-color: #0fbcf9; + display: flex; + } + + .previous { + font-size: 20px; + height: 30px; + width: 100px; + border-right: 1px solid black; + } +`; diff --git a/src/components/pokedex/Pokedex.jsx b/src/components/pokedex/Pokedex.jsx new file mode 100644 index 000000000..b383f473e --- /dev/null +++ b/src/components/pokedex/Pokedex.jsx @@ -0,0 +1,51 @@ +import { useState } from "react"; +import { useNavigate, useParams } from "react-router-dom"; +import { goToPokedex } from "../../router/Coordinator"; +import Card from "../card/Card"; +import Pagination from "../pagination/Pagination"; +import { ContainerStyled, Pokemons } from "./Style"; + +export default function Pokedex() { + const pathParams = useParams(); + const navigate = useNavigate(); + + const [globaLimit, setGlobalLimit] = useState(20); + const globalOffSet = !pathParams.pageIndex + ? 0 + : pathParams.pageIndex * globaLimit; + + let [pokedex, setpokedex] = useState( + JSON.parse( + localStorage.getItem("pokedex") == null + ? "[]" + : localStorage.getItem("pokedex") + ) + ); + + const [count, setCount] = useState(pokedex.length); + + pokedex = pokedex.slice(globalOffSet, globaLimit + globalOffSet); + + const handlePageChange = (data) => { + goToPokedex(navigate, data.selected); + }; + + console.log(pokedex); + return ( + + + {pokedex?.map((url) => ( +
+ +
+ ))} +
+ +
+ ); +} diff --git a/src/components/pokedex/Style.jsx b/src/components/pokedex/Style.jsx new file mode 100644 index 000000000..84c8aa775 --- /dev/null +++ b/src/components/pokedex/Style.jsx @@ -0,0 +1,14 @@ +import styled from "styled-components"; +import Pagination from "react-paginate"; + +export const ContainerStyled = styled.div` + display: flex; + align-items: center; + flex-direction: column; + gap: 20px; + flex-wrap: wrap; +`; +export const Pokemons = styled.div` + display: flex; + flex-wrap: wrap; +`; diff --git a/src/pages/details/Details.jsx b/src/pages/details/Details.jsx index baf3ea268..545ac57f9 100644 --- a/src/pages/details/Details.jsx +++ b/src/pages/details/Details.jsx @@ -1,9 +1,19 @@ +import { useEffect, useState } from "react"; +import { useParams } from "react-router-dom"; import Header from "../../components/header/Header"; +import { ContainerStyled } from "./Style"; export default function Details() { + const params = useParams(); + + let [pokemon, setPokemon] = useState([ + JSON.parse(decodeURIComponent(params.pokemon)), + ]); return (
+ + ); } diff --git a/src/pages/details/Style.jsx b/src/pages/details/Style.jsx index ecb9f8bea..96759e0f7 100644 --- a/src/pages/details/Style.jsx +++ b/src/pages/details/Style.jsx @@ -1,5 +1,3 @@ import styled from "styled-components"; -export const ContainerStyled = styled.div` - background-color: yellow; -`; +export const ContainerStyled = styled.div``; diff --git a/src/pages/home/Style.jsx b/src/pages/home/Style.jsx index 1ce92d06f..495f26b31 100644 --- a/src/pages/home/Style.jsx +++ b/src/pages/home/Style.jsx @@ -1,5 +1,3 @@ import styled from "styled-components"; -export const ContainerStyled = styled.header` - background-color: red; -`; +export const ContainerStyled = styled.header``; diff --git a/src/pages/pokedex/Pokedex.jsx b/src/pages/pokedex/Pokedex.jsx index 15565b9aa..60522ab21 100644 --- a/src/pages/pokedex/Pokedex.jsx +++ b/src/pages/pokedex/Pokedex.jsx @@ -1,10 +1,12 @@ import Header from "../../components/header/Header"; import { ContainerStyled } from "./Style"; +import PokedexComponent from "../../components/pokedex/Pokedex"; export default function Pokedex() { return (
+ ); } diff --git a/src/pages/pokedex/Style.jsx b/src/pages/pokedex/Style.jsx index 5cee006fa..96759e0f7 100644 --- a/src/pages/pokedex/Style.jsx +++ b/src/pages/pokedex/Style.jsx @@ -1,5 +1,3 @@ import styled from "styled-components"; -export const ContainerStyled = styled.div` - background-color: Blue; -`; +export const ContainerStyled = styled.div``; diff --git a/src/router/Coordinator.jsx b/src/router/Coordinator.jsx index 73bf7179b..2df145068 100644 --- a/src/router/Coordinator.jsx +++ b/src/router/Coordinator.jsx @@ -1,9 +1,9 @@ -export const goToHome = (navigate) => { - navigate("/"); +export const goToHome = (navigate, pageIndex) => { + navigate(`/${pageIndex}`); }; -export const goToPokedex = (navigate) => { - navigate("/pokedex"); +export const goToPokedex = (navigate, pageIndex) => { + navigate(`/pokedex/${pageIndex}`); }; -export const goToDetails = (navigate) => { - navigate("/details"); +export const goToDetails = (navigate, pokemon) => { + navigate(`/details/${pokemon}`); }; diff --git a/src/router/Router.jsx b/src/router/Router.jsx index 092cbc2a0..dafb1b129 100644 --- a/src/router/Router.jsx +++ b/src/router/Router.jsx @@ -6,9 +6,10 @@ import Pokedex from "../pages/pokedex/Pokedex"; export const Router = () => { return ( - } /> - } /> - } /> + } /> + } /> + } /> + } /> ); }; From 2b72c8bcf6b5c4a94b1ad517011a9f5e1f5e164b Mon Sep 17 00:00:00 2001 From: CarlosScaldaferri Date: Mon, 13 Mar 2023 07:04:55 -0300 Subject: [PATCH 3/6] Paginacao completa --- index.html | 3 +- package-lock.json | 1513 ++++++++++++++++------ package.json | 6 +- postcss.config.cjs | 6 + public/images/Background.png | Bin 0 -> 9480 bytes public/images/pokemon-types/bug.png | Bin 0 -> 1619 bytes public/images/pokemon-types/dark.png | Bin 0 -> 1675 bytes public/images/pokemon-types/dragon.png | Bin 0 -> 1795 bytes public/images/pokemon-types/electric.png | Bin 0 -> 1632 bytes public/images/pokemon-types/fairy.png | Bin 0 -> 1444 bytes public/images/pokemon-types/fighting.png | Bin 0 -> 1750 bytes public/images/pokemon-types/fire.png | Bin 0 -> 1414 bytes public/images/pokemon-types/flying.png | Bin 0 -> 1653 bytes public/images/pokemon-types/ghost.png | Bin 0 -> 1744 bytes public/images/pokemon-types/grass.png | Bin 0 -> 1710 bytes public/images/pokemon-types/ground.png | Bin 0 -> 1649 bytes public/images/pokemon-types/ice.png | Bin 0 -> 1408 bytes public/images/pokemon-types/normal.png | Bin 0 -> 1493 bytes public/images/pokemon-types/poison.png | Bin 0 -> 1720 bytes public/images/pokemon-types/psychic.png | Bin 0 -> 2066 bytes public/images/pokemon-types/rock.png | Bin 0 -> 1519 bytes public/images/pokemon-types/steel.png | Bin 0 -> 1489 bytes public/images/pokemon-types/water.png | Bin 0 -> 1667 bytes public/vite.svg | 1 - src/App.jsx | 6 +- src/GlobalStyle.jsx | 12 - src/components/card/Card.jsx | 104 +- src/components/card/Style.jsx | 22 - src/components/cardsList/CardsList.jsx | 42 +- src/components/cardsList/Style.jsx | 61 - src/components/header/Header.jsx | 55 +- src/components/header/Style.jsx | 33 - src/components/pagination/Pagination.jsx | 110 +- src/components/pagination/Style.jsx | 87 +- src/components/pokedex/Pokedex.jsx | 37 +- src/components/pokedex/Style.jsx | 14 - src/index.css | 9 + src/main.jsx | 1 + src/pages/details/Details.jsx | 5 +- src/pages/details/Style.jsx | 3 - src/pages/home/Home.jsx | 5 +- src/pages/home/Style.jsx | 3 - src/pages/pokedex/Pokedex.jsx | 5 +- src/pages/pokedex/Style.jsx | 3 - src/router/Coordinator.jsx | 8 +- src/router/Router.jsx | 4 +- tailwind.config.cjs | 32 + vite.config.js | 9 +- 48 files changed, 1461 insertions(+), 738 deletions(-) create mode 100644 postcss.config.cjs create mode 100644 public/images/Background.png create mode 100644 public/images/pokemon-types/bug.png create mode 100644 public/images/pokemon-types/dark.png create mode 100644 public/images/pokemon-types/dragon.png create mode 100644 public/images/pokemon-types/electric.png create mode 100644 public/images/pokemon-types/fairy.png create mode 100644 public/images/pokemon-types/fighting.png create mode 100644 public/images/pokemon-types/fire.png create mode 100644 public/images/pokemon-types/flying.png create mode 100644 public/images/pokemon-types/ghost.png create mode 100644 public/images/pokemon-types/grass.png create mode 100644 public/images/pokemon-types/ground.png create mode 100644 public/images/pokemon-types/ice.png create mode 100644 public/images/pokemon-types/normal.png create mode 100644 public/images/pokemon-types/poison.png create mode 100644 public/images/pokemon-types/psychic.png create mode 100644 public/images/pokemon-types/rock.png create mode 100644 public/images/pokemon-types/steel.png create mode 100644 public/images/pokemon-types/water.png delete mode 100644 public/vite.svg delete mode 100644 src/GlobalStyle.jsx delete mode 100644 src/components/card/Style.jsx delete mode 100644 src/components/cardsList/Style.jsx delete mode 100644 src/components/header/Style.jsx delete mode 100644 src/components/pokedex/Style.jsx create mode 100644 src/index.css delete mode 100644 src/pages/details/Style.jsx delete mode 100644 src/pages/home/Style.jsx delete mode 100644 src/pages/pokedex/Style.jsx create mode 100644 tailwind.config.cjs diff --git a/index.html b/index.html index 79c470191..a36313a1f 100644 --- a/index.html +++ b/index.html @@ -2,9 +2,8 @@ - - Vite + React + Pokedex
diff --git a/package-lock.json b/package-lock.json index 410083659..7c2836559 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,9 @@ "version": "0.0.0", "dependencies": { "axios": "^1.3.3", + "classnames": "^2.3.2", "react": "^18.2.0", - "react-bootstrap": "^2.7.2", "react-dom": "^18.2.0", - "react-paginate": "^8.1.4", "react-router-dom": "^6.8.1", "styled-components": "^5.3.6" }, @@ -20,6 +19,9 @@ "@types/react": "^18.0.27", "@types/react-dom": "^18.0.10", "@vitejs/plugin-react": "^3.1.0", + "autoprefixer": "^10.4.13", + "postcss": "^8.4.21", + "tailwindcss": "^3.2.7", "vite": "^4.1.0" } }, @@ -329,17 +331,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", - "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", - "dependencies": { - "regenerator-runtime": "^0.13.11" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/template": { "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", @@ -804,24 +795,39 @@ "@jridgewell/sourcemap-codec": "1.4.14" } }, - "node_modules/@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" + "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/@react-aria/ssr": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.4.1.tgz", - "integrity": "sha512-NmhoilMDyIfQiOSdQgxpVH2tC2u85Y0mVijtBNbI9kcDYLEiW/r6vKYVKtkyU+C4qobXhGMPfZ70PTc0lysSVA==", + "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": { - "@swc/helpers": "^0.4.14" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "engines": { + "node": ">= 8" } }, "node_modules/@remix-run/router": { @@ -832,54 +838,17 @@ "node": ">=14" } }, - "node_modules/@restart/hooks": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.9.tgz", - "integrity": "sha512-3BekqcwB6Umeya+16XPooARn4qEPW6vNvwYnlofIYe6h9qG1/VeD7UvShCWx11eFz5ELYmwIEshz+MkPX3wjcQ==", - "dependencies": { - "dequal": "^2.0.2" - }, - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/@restart/ui": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.6.1.tgz", - "integrity": "sha512-cMI9DdqZV5VGEyANYM4alHK9/2Lh/mKZAMydztMl6PBLm6EetFbwE2RfYqliloR+EtEULlI4TiZk/XPhQAovxw==", - "dependencies": { - "@babel/runtime": "^7.20.7", - "@popperjs/core": "^2.11.6", - "@react-aria/ssr": "^3.4.1", - "@restart/hooks": "^0.4.7", - "@types/warning": "^3.0.0", - "dequal": "^2.0.3", - "dom-helpers": "^5.2.0", - "uncontrollable": "^7.2.1", - "warning": "^4.0.3" - }, - "peerDependencies": { - "react": ">=16.14.0", - "react-dom": ">=16.14.0" - } - }, - "node_modules/@swc/helpers": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true }, "node_modules/@types/react": { "version": "18.0.28", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz", "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==", + "dev": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -895,23 +864,11 @@ "@types/react": "*" } }, - "node_modules/@types/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==", - "dependencies": { - "@types/react": "*" - } - }, "node_modules/@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "node_modules/@types/warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", - "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==" + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true }, "node_modules/@vitejs/plugin-react": { "version": "3.1.0", @@ -932,6 +889,38 @@ "vite": "^4.1.0-beta.0" } }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -943,11 +932,63 @@ "node": ">=4" } }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, + "node_modules/autoprefixer": { + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/axios": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.3.tgz", @@ -978,6 +1019,27 @@ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==" }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/browserslist": { "version": "4.21.5", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", @@ -1006,6 +1068,15 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/camelize": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", @@ -1043,6 +1114,45 @@ "node": ">=4" } }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/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/classnames": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", @@ -1096,10 +1206,23 @@ "postcss-value-parser": "^4.0.2" } }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/csstype": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "dev": true }, "node_modules/debug": { "version": "4.3.4", @@ -1117,6 +1240,15 @@ } } }, + "node_modules/defined": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1125,23 +1257,35 @@ "node": ">=0.4.0" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/dom-helpers": { + "node_modules/detective": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" + "acorn-node": "^1.8.2", + "defined": "^1.0.0", + "minimist": "^1.2.6" + }, + "bin": { + "detective": "bin/detective.js" + }, + "engines": { + "node": ">=0.8.0" } }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, "node_modules/electron-to-chromium": { "version": "1.4.304", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.304.tgz", @@ -1202,6 +1346,55 @@ "node": ">=0.8.0" } }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "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/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/follow-redirects": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", @@ -1234,6 +1427,19 @@ "node": ">= 6" } }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", @@ -1263,6 +1469,18 @@ "node": ">=6.9.0" } }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -1304,12 +1522,16 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "dependencies": { - "loose-envify": "^1.0.0" + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/is-core-module": { @@ -1324,6 +1546,36 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -1352,6 +1604,15 @@ "node": ">=6" } }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -1389,6 +1650,28 @@ "node": ">=12" } }, + "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.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -1408,6 +1691,15 @@ "node": ">= 0.6" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -1431,14 +1723,33 @@ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "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==", + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -1462,6 +1773,15 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/postcss": { "version": "8.4.21", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", @@ -1486,48 +1806,145 @@ "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/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "node_modules/postcss-import": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "dev": true, "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" } }, - "node_modules/prop-types-extra": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", - "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, "dependencies": { - "react-is": "^16.3.2", - "warning": "^4.0.0" + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" }, "peerDependencies": { - "react": ">=0.14.0" + "postcss": "^8.4.21" } }, - "node_modules/prop-types-extra/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/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "node_modules/postcss-nested": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz", + "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "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/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "node_modules/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/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -1539,35 +1956,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-bootstrap": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.7.2.tgz", - "integrity": "sha512-WDSln+mG4RLLFO01stkj2bEx/3MF4YihK9D/dWnHaSxOiQZLbhhlf95D2Jb20X3t2m7vMxRe888FVrfLJoGmmA==", - "dependencies": { - "@babel/runtime": "^7.17.2", - "@restart/hooks": "^0.4.6", - "@restart/ui": "^1.4.1", - "@types/react-transition-group": "^4.4.4", - "classnames": "^2.3.1", - "dom-helpers": "^5.2.1", - "invariant": "^2.2.4", - "prop-types": "^15.8.1", - "prop-types-extra": "^1.1.0", - "react-transition-group": "^4.4.2", - "uncontrollable": "^7.2.1", - "warning": "^4.0.3" - }, - "peerDependencies": { - "@types/react": ">=16.14.8", - "react": ">=16.14.0", - "react-dom": ">=16.14.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/react-dom": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", @@ -1586,22 +1974,6 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "peer": true }, - "node_modules/react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, - "node_modules/react-paginate": { - "version": "8.1.4", - "resolved": "https://registry.npmjs.org/react-paginate/-/react-paginate-8.1.4.tgz", - "integrity": "sha512-c3rxjcTEqeDQa6LqXifxLeFguY2qy2CHGRphVjHLFFMGfIHyaJ+v3bOvIlLYEeohwQ1q+cQpknjsqBVrkc/SNA==", - "dependencies": { - "prop-types": "^15" - }, - "peerDependencies": { - "react": "^16 || ^17 || ^18" - } - }, "node_modules/react-refresh": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", @@ -1641,25 +2013,26 @@ "react-dom": ">=16.8" } }, - "node_modules/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" + "pify": "^2.3.0" } }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } }, "node_modules/resolve": { "version": "1.22.1", @@ -1678,6 +2051,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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/rollup": { "version": "3.17.2", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.17.2.tgz", @@ -1694,6 +2077,29 @@ "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.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", @@ -1778,6 +2184,53 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tailwindcss": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.7.tgz", + "integrity": "sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==", + "dev": true, + "dependencies": { + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "detective": "^5.2.1", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.12", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "lilconfig": "^2.0.6", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.0.9", + "postcss-import": "^14.1.0", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.4", + "postcss-nested": "6.0.0", + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.1" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/tailwindcss/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/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -1786,23 +2239,16 @@ "node": ">=4" } }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/uncontrollable": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", - "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "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": { - "@babel/runtime": "^7.6.3", - "@types/react": ">=16.9.11", - "invariant": "^2.2.4", - "react-lifecycles-compat": "^3.0.4" + "is-number": "^7.0.0" }, - "peerDependencies": { - "react": ">=15.0.0" + "engines": { + "node": ">=8.0" } }, "node_modules/update-browserslist-db": { @@ -1831,6 +2277,12 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, "node_modules/vite": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.3.tgz", @@ -1880,12 +2332,13 @@ } } }, - "node_modules/warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "dependencies": { - "loose-envify": "^1.0.0" + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" } }, "node_modules/yallist": { @@ -1893,6 +2346,15 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } } }, "dependencies": { @@ -2116,14 +2578,6 @@ "@babel/helper-plugin-utils": "^7.19.0" } }, - "@babel/runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", - "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", - "requires": { - "regenerator-runtime": "^0.13.11" - } - }, "@babel/template": { "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", @@ -2372,17 +2826,30 @@ "@jridgewell/sourcemap-codec": "1.4.14" } }, - "@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + "@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, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } }, - "@react-aria/ssr": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.4.1.tgz", - "integrity": "sha512-NmhoilMDyIfQiOSdQgxpVH2tC2u85Y0mVijtBNbI9kcDYLEiW/r6vKYVKtkyU+C4qobXhGMPfZ70PTc0lysSVA==", + "@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 + }, + "@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, "requires": { - "@swc/helpers": "^0.4.14" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" } }, "@remix-run/router": { @@ -2390,47 +2857,17 @@ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.3.2.tgz", "integrity": "sha512-t54ONhl/h75X94SWsHGQ4G/ZrCEguKSRQr7DrjTciJXW0YU1QhlwYeycvK5JgkzlxmvrK7wq1NB/PLtHxoiDcA==" }, - "@restart/hooks": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.9.tgz", - "integrity": "sha512-3BekqcwB6Umeya+16XPooARn4qEPW6vNvwYnlofIYe6h9qG1/VeD7UvShCWx11eFz5ELYmwIEshz+MkPX3wjcQ==", - "requires": { - "dequal": "^2.0.2" - } - }, - "@restart/ui": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.6.1.tgz", - "integrity": "sha512-cMI9DdqZV5VGEyANYM4alHK9/2Lh/mKZAMydztMl6PBLm6EetFbwE2RfYqliloR+EtEULlI4TiZk/XPhQAovxw==", - "requires": { - "@babel/runtime": "^7.20.7", - "@popperjs/core": "^2.11.6", - "@react-aria/ssr": "^3.4.1", - "@restart/hooks": "^0.4.7", - "@types/warning": "^3.0.0", - "dequal": "^2.0.3", - "dom-helpers": "^5.2.0", - "uncontrollable": "^7.2.1", - "warning": "^4.0.3" - } - }, - "@swc/helpers": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", - "requires": { - "tslib": "^2.4.0" - } - }, "@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true }, "@types/react": { "version": "18.0.28", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz", "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==", + "dev": true, "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -2446,23 +2883,11 @@ "@types/react": "*" } }, - "@types/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==", - "requires": { - "@types/react": "*" - } - }, "@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "@types/warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", - "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==" + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true }, "@vitejs/plugin-react": { "version": "3.1.0", @@ -2477,6 +2902,29 @@ "react-refresh": "^0.14.0" } }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -2485,11 +2933,41 @@ "color-convert": "^1.9.0" } }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, + "autoprefixer": { + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, "axios": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.3.tgz", @@ -2517,6 +2995,21 @@ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==" }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, "browserslist": { "version": "4.21.5", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", @@ -2529,6 +3022,12 @@ "update-browserslist-db": "^1.0.10" } }, + "camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true + }, "camelize": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", @@ -2550,6 +3049,33 @@ "supports-color": "^5.3.0" } }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "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, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, "classnames": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", @@ -2597,10 +3123,17 @@ "postcss-value-parser": "^4.0.2" } }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, "csstype": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "dev": true }, "debug": { "version": "4.3.4", @@ -2610,25 +3143,40 @@ "ms": "2.1.2" } }, + "defined": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", + "dev": true + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, - "dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" - }, - "dom-helpers": { + "detective": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "dev": true, "requires": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" + "acorn-node": "^1.8.2", + "defined": "^1.0.0", + "minimist": "^1.2.6" } }, + "didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, "electron-to-chromium": { "version": "1.4.304", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.304.tgz", @@ -2676,6 +3224,48 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "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, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, "follow-redirects": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", @@ -2691,6 +3281,12 @@ "mime-types": "^2.1.12" } }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true + }, "fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", @@ -2710,6 +3306,15 @@ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, + "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, + "requires": { + "is-glob": "^4.0.3" + } + }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -2744,12 +3349,13 @@ } } }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "requires": { - "loose-envify": "^1.0.0" + "binary-extensions": "^2.0.0" } }, "is-core-module": { @@ -2761,6 +3367,27 @@ "has": "^1.0.3" } }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "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, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "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 + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2777,6 +3404,12 @@ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, + "lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true + }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -2808,6 +3441,22 @@ "@jridgewell/sourcemap-codec": "^1.4.13" } }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -2821,6 +3470,12 @@ "mime-db": "1.52.0" } }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -2838,10 +3493,23 @@ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true }, - "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==" + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true }, "path-parse": { "version": "1.0.7", @@ -2860,6 +3528,12 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, "postcss": { "version": "8.4.21", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", @@ -2871,49 +3545,77 @@ "source-map-js": "^1.0.2" } }, - "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==" + "postcss-import": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - }, - "dependencies": { - "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==" - } + "camelcase-css": "^2.0.1" } }, - "prop-types-extra": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", - "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, "requires": { - "react-is": "^16.3.2", - "warning": "^4.0.0" - }, - "dependencies": { - "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==" - } + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + } + }, + "postcss-nested": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz", + "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-selector-parser": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" } }, + "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==" + }, "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "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 + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true + }, "react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -2922,25 +3624,6 @@ "loose-envify": "^1.1.0" } }, - "react-bootstrap": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.7.2.tgz", - "integrity": "sha512-WDSln+mG4RLLFO01stkj2bEx/3MF4YihK9D/dWnHaSxOiQZLbhhlf95D2Jb20X3t2m7vMxRe888FVrfLJoGmmA==", - "requires": { - "@babel/runtime": "^7.17.2", - "@restart/hooks": "^0.4.6", - "@restart/ui": "^1.4.1", - "@types/react-transition-group": "^4.4.4", - "classnames": "^2.3.1", - "dom-helpers": "^5.2.1", - "invariant": "^2.2.4", - "prop-types": "^15.8.1", - "prop-types-extra": "^1.1.0", - "react-transition-group": "^4.4.2", - "uncontrollable": "^7.2.1", - "warning": "^4.0.3" - } - }, "react-dom": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", @@ -2956,19 +3639,6 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "peer": true }, - "react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, - "react-paginate": { - "version": "8.1.4", - "resolved": "https://registry.npmjs.org/react-paginate/-/react-paginate-8.1.4.tgz", - "integrity": "sha512-c3rxjcTEqeDQa6LqXifxLeFguY2qy2CHGRphVjHLFFMGfIHyaJ+v3bOvIlLYEeohwQ1q+cQpknjsqBVrkc/SNA==", - "requires": { - "prop-types": "^15" - } - }, "react-refresh": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", @@ -2992,21 +3662,23 @@ "react-router": "6.8.1" } }, - "react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, "requires": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" + "pify": "^2.3.0" } }, - "regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } }, "resolve": { "version": "1.22.1", @@ -3019,6 +3691,12 @@ "supports-preserve-symlinks-flag": "^1.0.0" } }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rollup": { "version": "3.17.2", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.17.2.tgz", @@ -3028,6 +3706,15 @@ "fsevents": "~2.3.2" } }, + "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, + "requires": { + "queue-microtask": "^1.2.2" + } + }, "scheduler": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", @@ -3084,25 +3771,57 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "tailwindcss": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.7.tgz", + "integrity": "sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==", + "dev": true, + "requires": { + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "detective": "^5.2.1", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.12", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "lilconfig": "^2.0.6", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.0.9", + "postcss-import": "^14.1.0", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.4", + "postcss-nested": "6.0.0", + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.1" + }, + "dependencies": { + "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 + } + } + }, "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==" }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "uncontrollable": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", - "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "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, "requires": { - "@babel/runtime": "^7.6.3", - "@types/react": ">=16.9.11", - "invariant": "^2.2.4", - "react-lifecycles-compat": "^3.0.4" + "is-number": "^7.0.0" } }, "update-browserslist-db": { @@ -3115,6 +3834,12 @@ "picocolors": "^1.0.0" } }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, "vite": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.3.tgz", @@ -3128,19 +3853,23 @@ "rollup": "^3.10.0" } }, - "warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "requires": { - "loose-envify": "^1.0.0" - } + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true } } } diff --git a/package.json b/package.json index 933aba914..7676779b0 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,9 @@ }, "dependencies": { "axios": "^1.3.3", + "classnames": "^2.3.2", "react": "^18.2.0", - "react-bootstrap": "^2.7.2", "react-dom": "^18.2.0", - "react-paginate": "^8.1.4", "react-router-dom": "^6.8.1", "styled-components": "^5.3.6" }, @@ -21,6 +20,9 @@ "@types/react": "^18.0.27", "@types/react-dom": "^18.0.10", "@vitejs/plugin-react": "^3.1.0", + "autoprefixer": "^10.4.13", + "postcss": "^8.4.21", + "tailwindcss": "^3.2.7", "vite": "^4.1.0" } } diff --git a/postcss.config.cjs b/postcss.config.cjs new file mode 100644 index 000000000..33ad091d2 --- /dev/null +++ b/postcss.config.cjs @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/public/images/Background.png b/public/images/Background.png new file mode 100644 index 0000000000000000000000000000000000000000..64a26fca099823c8f389977c73ca16fef319c65f GIT binary patch literal 9480 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 literal 0 HcmV?d00001 diff --git a/public/images/pokemon-types/bug.png b/public/images/pokemon-types/bug.png new file mode 100644 index 0000000000000000000000000000000000000000..cb1eed742866ff55aa7eb1462db4213d03685e57 GIT binary patch literal 1619 zcmV-Z2CVssP)5ftAR;;C5C5LHoXV4%rtF7x$s_jU{0~gUImg6W0C7eu}v;MQg zW9t&q?y%fyFc_xflXD2Iv)f{?jyhW$Lw}@E5c48w#oDelucQ=|Y%aSlepECmO+n~^^W%3*-rN3u>3^_Pqx7Y9;4eor1_mcJCGd4A&?Tc{%MC%5OHHT=j) zT)4c*><0a=p7Z(^vSt=gQ)!zZSBZ%5C@Rd}K{-rna(pTU0yr6M5*EszQP-JCCtA-Q zpi86Y1$ot~+MA?+IEzU(g0G0^XkI;ydAhdtvJlT#_()7K%6bKk-x@HJLtF@-^ zW%31Z_Xsyh2j{x)-}O706?ryJe31`j=<9Z#ek!2`Tq1^A^;`s^PVVUu*?ae) qv zujV}5knL!tn15uKo#LYs$RDu8r_kt)A!<0WSByyxI|x4+=6C2Rz={|;sOO4C&gviu z*?n7eE)!ZS$ioeoq7!KP{uG@XI8FVWu;N*+DQ*x}T(iA_ax1g^VzDDPhJ`+$UnI&% zdW+Z7?L0*mQ>yrEJNo^cYY?tR$A@{Xr-Y1qvc8=!)(jw_B5Y}0>j8ryTszr0hI%y{ zwWaLhSb+V99zkZynS&zh%dkjE3du=^Sa4>(TZ>*uEa5T^WB`$@H^aQ)5mG=jiX9M& zwZTwkI7GFaJt+R^AlxARmbZk0OT^H0Z(}HGOEo|mtTX$oH^o9wlQxyLXFZnEEd{+)#cs*Cx6jE#XjFyp3s)0(qUQTBO> zdZY3IlP5qyE7xf5AiLHGcP;Lql}Vo@CfPf*^ux8=zO@TuQO-dO)#Fj}erUP37od38 zS`d_WON4gz9d|otvF<*>YeJt}N^RUCV~;mS+8hVb-*LF`7U0rIIsl>&Yt%ruB$MdQ zlB;>w3E6is0&C8#%A!V&nHfnNn9$AKLeGAucg+UuGIOWoBpuJ+5xgt%XX`vzUiO!d z#xeZ2O;TTsq!0ib%}!2=86t+d9#Ds#E8*545t*`(+chm<^BKE9*boVXU3(W^fM70# zg|?n)uCg7gDxn~J#xFY$f4%P2w0$AMLS3%Dp26-U$8hkC5no_lv9^oJyrX>4!M-Zi zyp@km3PK+Ybj9*oN&$arofQ?RYq!Prk2wxF|GBuHf|wU6E7N;dnao>DvQ+Oj$&lW@ zvtIbScUe)jc==(q!Jz*U^Ro<2KG*or@x_O`jk)Xd(DvEqZH|KPhx-10=>NC@?K529 RI-mdm002ovPDHLkV1lLu3t<2N literal 0 HcmV?d00001 diff --git a/public/images/pokemon-types/dark.png b/public/images/pokemon-types/dark.png new file mode 100644 index 0000000000000000000000000000000000000000..380bf8552925f70e107d6c2e5ae198b5141b44e3 GIT binary patch literal 1675 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 literal 0 HcmV?d00001 diff --git a/public/images/pokemon-types/electric.png b/public/images/pokemon-types/electric.png new file mode 100644 index 0000000000000000000000000000000000000000..e0d626f8346753b980eb4dbf81f655fbe63d793a GIT binary patch literal 1632 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 literal 0 HcmV?d00001 diff --git a/public/images/pokemon-types/fire.png b/public/images/pokemon-types/fire.png new file mode 100644 index 0000000000000000000000000000000000000000..ba17d41c0cfed6fe854b7761849999a6b17e1210 GIT binary patch literal 1414 zcmV;11$p|3P)7nFcbKqhlHSMK}gp`I$BLbpGM9@n~5fW-7 zNGc`0aKJvemjs%&LXCQvBMs4Si#VE?qY3a#?h_ zExHWd0~TF97F}+$E|cy_i|n%FMzSGlL=At}m$*Eh=CY4354~K7N)km|rkDSby+aRK zzA8!5mhodYVGC1TiNEhGs&|*(rUppve&;vId-QbcN7E0CIzgDQti{hdwil+uT=P0L zU`EstobtB>zuJVQ$$DiVv3B#v23fZ7YCP-sE_|g7>q1xtnP_ocEPpbVcBmjP{ilN`N+r2er&wLtSHb0od$$*NOhHz*aF5iTLc&RC7D zP^|#26ut+jM8J|TqGrDZvN8ptwz+>PF?o#A8|zd}z=G7bH=_^c1L zLjZ)uO8Ey;h?Z}ziz#S^b}uUK7-30oQw!44_oKEJ>w+!oF2q zzCtPf4Fj$C$3>7rS^ICDl8axK(#IHlSftq2xyS;f!(P!5Oi3Ygo9CHsC`^!%4??$c ze3Y6e=7=^PJSC*{!U{S2Kgd{V_!3%X-ls_43$Eb91`7EwbOcIsktH6+N?X6boBcne z8^fcNT%MlH6pZLc|o|2_-Kd9X$>Wrxit82M%otoG>cV-KxMc@j$ z2MRTG^m8`^oP@!*nWq{oUj(Ioe|AHzlMfZ0w+q5B zCBM$s%F)N>ez?5c7FJeGq?YE(9spRKgDunyjSV4vZ>`uzL=>Kvu}3HJw*pyq^Bg0l zE?psdr6Vi7uy(Q@AS|x4i*_!a%Bok`;);!~;7T^OeDgNU@zM$Q2blXi7e^^^?pUT{ z7UhU)^#I;&$oN!Fhm7~ZAeR!Dz!jE8?t%?%M!*`5jf63Ic_OP_ibHxm0PlbScCtma z{rr&HuW8hDW`=fWCrU}Q-4a&d93}JGBqE7*+411iU5IWV2(=l z0$7;DZlu&4kxA~5%^Uo=kXkCvN(s*1~<7Xdg4*CInMWcpi7+HLhtY11d(;3qyu-h@ zbiWyttlw4`(7)aZ;3Qle?&7?%!XvmB5bJz}o6dYIJAG$Yxg05&+&8`t%l&=W6HeV< U9+k~%;Q#;t07*qoM6N<$g80FdJOBUy literal 0 HcmV?d00001 diff --git a/public/images/pokemon-types/flying.png b/public/images/pokemon-types/flying.png new file mode 100644 index 0000000000000000000000000000000000000000..09d7fa16a4a60709fa9039f4c76e2574d1a60a32 GIT binary patch literal 1653 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 Ef+^rH&Hw-a literal 0 HcmV?d00001 diff --git a/public/images/pokemon-types/ground.png b/public/images/pokemon-types/ground.png new file mode 100644 index 0000000000000000000000000000000000000000..5438079135d975afe545e8f7502c1eeb63fb05c9 GIT binary patch literal 1649 zcmV-%29EiOP)KC z%&mXpXwm+bIar)2RB2xrANkl2SjtixaNq1@pFEbEU}e6E5zF%J(F0_VvMjl-TRkk- zfV@mFx2f*-Dl$lU?jbpZdxYc+x41E2aykNerLl8IP@!7Vfz6iftLpw;UZjA3i41h1 zoE;7b%}Y9vSy4mJzIkC)eZap+u8t-$&~)E4&``K##LoGVLGn*eP)2bjS*%Tz&yK0?Q}oa?OHUAX2yIl$ z9hf9&wZJp-2&KR{-r*}$ezJ=Sn@_Q8r+Gcj z@w|C^5A#&)e*a2jfcu6w5H1S$&JPcU$0&H^1TFk>E#moM8Roh}G;{evxQ*}jD5V!w zguPC5KOm2dlUw~VpA#t4U*GnSMn)0S2DIFPhsD6+z_-t151)u_lA!ehlZ>%vzUW+K z#Q`SB$q!D1Cl%m%i(AjqmZu8n!L*ClS!_+*QZa#lfBzLNGT{_3cO@%kPPLVdRTyLJ z`iM4#&F^wypdTL-Fq8ytT7W*$w}0Br+kj`-*rv=JQVZmjhMy~bYgZq0%#whX-8YzK zRjRrVmWCLkr;FTD^c>GlAFxRf#7cVPWycZ|%Dw(axtGP-NcX?#B2Q=%(F!gWg7mTP zr^P!gj$Pw@iE#j2H2M}EYUXk$v%V|gHc-04=F_UjfV{BxXj6Lw29^V+mzlmK|r#8O7=pQs9dcFf2;A zT%lk>U;>miDzXhR4es%MHLVdp1YE=Kx>aXAAcv*4LZkKIp=X9qifq9megVXnvUe`> zXI%?Wv}6eQ7sBVU6l{$QAf~BKMC7y{u0XA86hOdwrs2XOwjFAVdEH`rjk|E!eab-T zKzfu#K@nhqaE}5^y3D3bZ2}bvmR?*DQ4ht^GAEFiN&M8G2;oWuT3n-y-Y)Xbo(`T6 zAn0R4R$O=uj}!Qm6Om|;tibZoR!k=DDQ@jxf}RM+GkjOXCblY56{i3sv#Col3kOaih)HET4HIEZ@z(sVgl z@eHjb5~2;pTwtC?&J5K61&V&oyPuzDi|e8I-4V7^IyVdQZ{TND<0%ua>9M<#Oh4lHwDv>|<=Djs3sT%|t3+fO8^~)0@=8R(}EP}BZHJjp`bJTjz~d+V-p#qJSE4^kMnm#xTOVy zKP>+G)1GD5b>q$A6a{Y@XI0jEzjPy1ZUzpovLl vU43kO%am_D`Xeh3B-{is{y#0X|3B?NrIc@#xAMxR00000NkvXXu0mjfm);jp literal 0 HcmV?d00001 diff --git a/public/images/pokemon-types/ice.png b/public/images/pokemon-types/ice.png new file mode 100644 index 0000000000000000000000000000000000000000..bb043ce32c2575aca8ff1bc1bd35eafb0b886e41 GIT binary patch literal 1408 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 O0000`cOro z76q-?2Tkoty;O)Xv{Z!@lR`D?tr*`D1FhN1>`edf-#MF^$;O?{u6C9AU^6+h=gge* z-@gApGb=;^n5H>Z9_h0aAKQ2Nw(a{4kL`%nZY$DmvD$MzwqsU1=CM83YPWc7N33>R zk#>jGp6an(P_}mY7t)VXKv^x>?w(iDCpr!Kx|P~9g^wqVUPV!QLz~)fsL|*!wU1JJ zM1JX1TKtz8>AN?NWUt>?EPPZ2l*XACMB|I?;g;oh^5^h}J?!-9X%EkLb<&BKg^y}O zZ+OMZwc_<<58!dCb+RpW>+ZL{!m1YY(tjt8(2==Zg_jxE6Lm)7)^g#aYLWeGU@>wH z=u3mU{kwI0RGGwulyI#GELszD_80b$s3&O$u{xP-K6ItNBKZ< zIHfr@qCs;Hx9uo7ECyG;CIZbdR-79+r!+MRl|F!e=Df(9IVXIS3#FCxwM(P_I>^iB zc^*az3AMkSSBMvAD_5{LroP$FUg%@em`R@wBqAfFj4D-O5=ujZ2)?;q_$V7ADskFA zuf2ohF@+RnCX*t2@sh}No)YO}Kk(5U9?xTeIWGxyR+D&EpoGIhTeP4cMdbSs*N4bh zAJwO%dy>AuX_3)wJBoLvn+FyyaGZm(^q zvQ}f@rbvFgtCC#a2Blr|(lfAVzN4L?jF1&ZLJF>3J-$C#mpc79N}o?Fj~mRexCqQ1myF`Yfg-7;Iz1xo^CEPteYS+1i)dbz54}1ZIY~leUuEXV_wCaRN`2zd5L4JW{(P_1bD4EI?CfASZ&n` zQo&R2e=&~zCxJK(6uC>l%R{JK?6E@3jj~A zq3dXLopb^2hJp~KP`l=@N%9C_9;C!#fW8nOi>g?0d4@?=0;o2QlLCU!lyHCEo6O-M z^0-*R@s&bg6&3nRW7f5Y$#4#_;Q&VBrU!Ugn;J))Kr0IxtY0p4bV zr2lz6WN>=tPmX&b45tS6JI_&gcK1iBe$2X4B>| z3V9>aes=Tb+>;$_Wr^CbBSC>sDqUdfCr(Ys2`K2n$FO8=Db33yZ=f)aNP+o7soI>` z>=hc#TPN>hl#-&C8ac{~G;wfR(L}_Zg-OCShaTk5p$0?0^s(dY`UsN<8SW${>z#1R z2Jel+izqav4;~W9Pj|B+*~<{{5JF-Ao-rjn7DidA6iOSM)WC_2D^vCi?8(wc%FlgG zPirE5sq#_(qaYU`fraGK_MD|kKtaLQHEh{I;y1U#kgOOLs8zf}5kX1{WU`T~C7opp zLYYbZkUa4Jwsq=f&*nB1EFoij4fVtNCKD|nFYqYBwWJoz2g#CqUK3t}^o8&k@zNP_ z7#1l3LBL9pR`X3Q%j07KD?~DqK6vneN)Wh9Kd6?(=$Ak5DMQ zhu)|4)z;?6XDEtH7Dz(Cmo=a49J_ztpIj1nL`1(iuDAsa{6oo7qG|@VJ%o# zU14j1hq1ycSeum!wq#ObArFzeD&W7#jDH++nh4>qKA*;!_`|K+O)mpNWU=-_nKLzu z)B#EONU4!MBHSQBkcDrxqL!>)KRcGTS2L#U`9eXRw$sbrBY;pC!nTwZCV4ZIyiY2w zSn7(*60tmOt9$-$U`Gc<p1@*Xj$kbPJ5N#5&7qXk2JGTKYrKM!kt*V-XBnZ6 zcW;<`c2C8Q$VhPMl3xSS7kY$`s)gG4`~@}IG;DuaHEu*2HqxGDO{_oSO`}b-80jhj-FiWOn`2YX_07*qoM6N<$f>u1#u>b%7 literal 0 HcmV?d00001 diff --git a/public/images/pokemon-types/rock.png b/public/images/pokemon-types/rock.png new file mode 100644 index 0000000000000000000000000000000000000000..0574650f5b608592e4d6d0dd8fdbf4bfdad0bc0c GIT binary patch literal 1519 zcmV4Qeo zhw1~V4=qg}6rvRAhR-m$}O<-Lf;wY$9Pk$<6G{oZY$i+;hJ7 z?932lK-cwv+;aO8&2-M)&#-Uy8D&5*?-)j>pG5mw9!7fB6h--f_e1286-B2(T~P)b zkA8eFP+A+~Lzmcp@zi;<@#DxZTI|_h7ZdXnZRCz+_?ZBds#n%x2}I}`Ac4o z%J8vIEnjqbIU%-1{&FEB-aUIAm5;inQ(_V&D}Tpna_lB=6XYbg&i$e5G&l7J*#$mE z9o=c?ORpa8ur;%YXdlZADDW1N>Tp#1OM>DWa4s5nv#pD-SxzqzozUnZtJXF3tyEHB z&rvU)ucSqszoaIosMw07#ktg4fGwPig?edtUAB;g2el)7?OL&qiJ6Y}rA0l0r;=@u zd0=kp?*H}^zo#8KVPsD)Szrhn-EGD4VCaZ&v|W}KXQ|j2ASkJLO~^++S!Icmz=2Jz zUBb!h&bv!0_W|-J`vDv5%f%Wt7;E_0CmDYqS&dABofY6?)X~SY8KS}n@eJApkp_JJ zjWmXQ6d6*I58zO=1ui9l435a{DXem>zWyx8B3)tK=mP0-3hQzp#cnjeE8SY??Xm1NdO#* zN&>nLo7u+kjdl&H?n-w@J>R*EL4pB?ulww07uy zvIBe!jkZ@5xu}N6>8jAPo|^& zoI&*>vrsL_iUCP6Q8VeirH);A;CPB2z%44@X8NkP0+6L0`Xq%(m>6M3}Y_HM7gOuIoYj^bCVdjh3e z%=`jP_dZ|sSzQ-;;^G8r^tILDtZVK?pFy9bdQS~4;5-C}IAom_GT>Y(~c&sK#` zroVe9G2SNajL%2a$ekY=@V-Z`uOjS1#!*zf5^neK)0|tp-)(-IG$Zc&(aygg{V#YF V#V`DDN7euU002ovPDHLkV1iM4&&&V- literal 0 HcmV?d00001 diff --git a/public/images/pokemon-types/steel.png b/public/images/pokemon-types/steel.png new file mode 100644 index 0000000000000000000000000000000000000000..ffb9b5ed065332f34b84907e16e00dfaafa1270d GIT binary patch literal 1489 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 N002ovPDHLkV1i>-4h{eS literal 0 HcmV?d00001 diff --git a/public/vite.svg b/public/vite.svg deleted file mode 100644 index e7b8dfb1b..000000000 --- a/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/App.jsx b/src/App.jsx index b67b5b133..bd4eb6822 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,13 +1,11 @@ -import { ContainerStyled, GlobalStyle } from "./GlobalStyle"; import { Router } from "./router/Router"; function App() { return (
- - +
- +
); } diff --git a/src/GlobalStyle.jsx b/src/GlobalStyle.jsx deleted file mode 100644 index 4f61b2a75..000000000 --- a/src/GlobalStyle.jsx +++ /dev/null @@ -1,12 +0,0 @@ -import styled, { createGlobalStyle } from "styled-components"; -export const GlobalStyle = createGlobalStyle` -* { - padding: 0; - margin: 0; - box-sizing: border-box; -} -`; -export const ContainerStyled = styled.div` - display: flex; - flex-direction: column; -`; diff --git a/src/components/card/Card.jsx b/src/components/card/Card.jsx index 14b53183a..9c66fb794 100644 --- a/src/components/card/Card.jsx +++ b/src/components/card/Card.jsx @@ -2,15 +2,8 @@ import axios from "axios"; import { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; import { goToDetails } from "../../router/Coordinator"; -import { - Capture, - ContainerStyled, - Details, - ImgPokemon, - Captured, -} from "./Style"; -export default function Card({ url, setpokedex }) { +export default function Card({ url, setPokedex }) { const navigate = useNavigate(); let [pokemonResponse, setPokemonResponse] = useState([]); @@ -18,6 +11,7 @@ export default function Card({ url, setpokedex }) { const getPokemon = async () => { try { const response = await axios.get(url); + setPokemonResponse(response.data); } catch (error) { console.log(error); @@ -30,38 +24,70 @@ export default function Card({ url, setpokedex }) { let pokedex = JSON.parse(localStorage.getItem("pokedex")); pokedex = pokedex == null ? [] : pokedex; - return ( - - -

{url.split("/")[url.split("/").length - 2]}

- -
- goToDetails( - navigate, - encodeURIComponent(JSON.stringify(pokemonResponse)) - ) - } +
+
- Details -
- {!pokedex.some((pokemon) => pokemon == url) ? ( - { - pokedex.push(url); - localStorage.setItem("pokedex", JSON.stringify(pokedex)); - setpokedex(pokedex); - }} - > - Capture - - ) : ( - Captured - )} -
+
+
+

#{url.split("/")[url.split("/").length - 2]}

+

{pokemonResponse.name}

+
+
+ {pokemonResponse.types?.map((item) => ( + + ))} +
+ +
+
+ + {!pokedex.some((pokemon) => pokemon == url) ? ( + + ) : ( + + )} +
+ + ); } diff --git a/src/components/card/Style.jsx b/src/components/card/Style.jsx deleted file mode 100644 index 2b8425bd5..000000000 --- a/src/components/card/Style.jsx +++ /dev/null @@ -1,22 +0,0 @@ -import styled from "styled-components"; - -export const ContainerStyled = styled.div` - display: flex; -`; -export const ImgPokemon = styled.img` - width: 70px; - height: 70px; -`; -export const Details = styled.button` - width: 70px; - height: 70px; -`; -export const Capture = styled.button` - width: 70px; - height: 70px; -`; -export const Captured = styled.button` - width: 70px; - height: 70px; - background-color: red; -`; diff --git a/src/components/cardsList/CardsList.jsx b/src/components/cardsList/CardsList.jsx index af01a1d76..cc70d7b39 100644 --- a/src/components/cardsList/CardsList.jsx +++ b/src/components/cardsList/CardsList.jsx @@ -4,15 +4,20 @@ import { useNavigate, useParams } from "react-router-dom"; import { goToHome } from "../../router/Coordinator"; import Card from "../card/Card"; import Pagination from "../pagination/Pagination"; -import { ContainerStyled, Pokemons, PaginationContainer } from "./Style"; +import "../../index.css"; -export default function CardsList({ calledFor }) { +export default function CardsList() { const pathParams = useParams(); - const [count, setCount] = useState(0); const [globaLimit, setGlobalLimit] = useState(20); const [currentPokemons, setCurrentPokemons] = useState([]); - const [pokedex, setpokedex] = useState( + const [currentPage, setCurrentPage] = useState(pathParams.page); + + useEffect(() => { + setCurrentPage(pathParams.page); + }, [pathParams.page]); + + const [pokedex, setPokedex] = useState( JSON.parse( localStorage.getItem("pokedex") == null ? "[]" @@ -21,9 +26,9 @@ export default function CardsList({ calledFor }) { ); const [isLoading, setIsLoading] = useState(false); - const globalOffSet = !pathParams.pageIndex - ? 0 - : pathParams.pageIndex * globaLimit; + const globalOffSet = !pathParams.page + ? 1 + : (pathParams.page - 1) * globaLimit; const getPokemons = async (url) => { try { @@ -41,30 +46,33 @@ export default function CardsList({ calledFor }) { `https://pokeapi.co/api/v2/pokemon?limit=${globaLimit}&offset=${globalOffSet}` ); setIsLoading(false); - }, [pathParams.pageIndex, pokedex]); + }, [pathParams.page, pokedex]); const navigate = useNavigate(); return ( - +
{isLoading ? ( <>loading... ) : ( - +
{currentPokemons?.map((pokemon) => (
- +
))} - +
)} { + setCurrentPage(page); + goToHome(navigate, page); + }} /> - +
); } diff --git a/src/components/cardsList/Style.jsx b/src/components/cardsList/Style.jsx deleted file mode 100644 index 99fb03077..000000000 --- a/src/components/cardsList/Style.jsx +++ /dev/null @@ -1,61 +0,0 @@ -import styled from "styled-components"; -import Pagination from "react-paginate"; - -export const ContainerStyled = styled.div` - display: flex; - align-items: center; - flex-direction: column; - gap: 20px; - flex-wrap: wrap; -`; -export const Pokemons = styled.div` - display: flex; - flex-wrap: wrap; -`; -export const PaginationContainer = styled(Pagination)` - display: flex; - justify-content: center; - align-items: center; - width: fit-content; - height: fit-content; - border: 1px solid black; - color: black; - - .item { - align-items: center; - cursor: pointer; - display: flex; - font-size: 20px; - height: 30px; - justify-content: center; - width: 40px; - } - - .disabled-page { - color: #808e9b; - } - - .active { - border: solid 1px #808e9b; - color: #808e9b; - } - - .next { - font-size: 20px; - height: 30px; - width: 100px; - border-left: 1px solid black; - } - - .pagination { - background-color: #0fbcf9; - display: flex; - } - - .previous { - font-size: 20px; - height: 30px; - width: 100px; - border-right: 1px solid black; - } -`; diff --git a/src/components/header/Header.jsx b/src/components/header/Header.jsx index 983844951..e4a6110e7 100644 --- a/src/components/header/Header.jsx +++ b/src/components/header/Header.jsx @@ -1,43 +1,50 @@ import { useNavigate } from "react-router-dom"; -import { - ButtonAllPokemons, - ButtonDeleteFromPokedex, - ButtonPokedex, - ContainerStyled, - HeaderCenter, - HeaderLeft, - HeaderRight, -} from "./Style"; import { goToPokedex, goToHome } from "../../router/Coordinator"; export default function Header({ calledFor }) { const navigate = useNavigate(); return ( - - +
+
{calledFor == "pokedex" || calledFor == "details" ? ( - goToHome(navigate, 0)}> + ) : ( - <> +
)} - - - +
+ +
+ Pokemon logo +
+ +
{calledFor == "details" ? ( - Delete from pokédex + ) : ( - <> +
)} {calledFor == "home" ? ( - goToPokedex(navigate, 0)}> + ) : ( - <> +
)} - - +
+
); } diff --git a/src/components/header/Style.jsx b/src/components/header/Style.jsx deleted file mode 100644 index 32ae0a555..000000000 --- a/src/components/header/Style.jsx +++ /dev/null @@ -1,33 +0,0 @@ -import styled from "styled-components"; - -export const ContainerStyled = styled.header` - height: 200px; - display: flex; -`; -export const HeaderLeft = styled.div` - width: 20%; - display: flex; - align-items: center; - justify-content: center; -`; -export const HeaderCenter = styled.div` - width: 60%; -`; -export const HeaderRight = styled.div` - width: 20%; - display: flex; - align-items: center; - justify-content: center; -`; -export const ButtonAllPokemons = styled.button` - width: 100px; - height: 50px; -`; -export const ButtonPokedex = styled.button` - width: 100px; - height: 50px; -`; -export const ButtonDeleteFromPokedex = styled.button` - width: 100px; - height: 50px; -`; diff --git a/src/components/pagination/Pagination.jsx b/src/components/pagination/Pagination.jsx index 33a6d8e04..cb84a8016 100644 --- a/src/components/pagination/Pagination.jsx +++ b/src/components/pagination/Pagination.jsx @@ -1,36 +1,88 @@ -import { useEffect, useState } from "react"; -import { useNavigate } from "react-router-dom"; +import classNames from "classnames"; import { PaginationContainer } from "./Style"; +const range = (start, end) => { + return [...Array(end - start).keys()].map((el) => el + start); +}; -export default function Pagination({ count, globaLimit, pageIndex, goTo }) { - const navigate = useNavigate(); +const getPagesCut = ({ pagesCount, pagesCutCount, currentPage }) => { + const ceiling = Math.ceil(pagesCutCount / 2); + const floor = Math.floor(pagesCutCount / 2); - const [currentPage, setCurrentPage] = useState(pageIndex); - useEffect(() => { - setCurrentPage(pageIndex); - }, [pageIndex]); + if (Number(pagesCount) < Number(pagesCutCount)) { + return { start: 1, end: Number(pagesCount) + 1 }; + } else if (Number(currentPage) >= 1 && Number(currentPage) <= ceiling) { + return { start: 1, end: Number(pagesCutCount) + 1 }; + } else if (Number(currentPage) + floor >= Number(pagesCount)) { + return { + start: Number(pagesCount) - Number(pagesCutCount) + 1, + end: Number(pagesCount) + 1, + }; + } else { + return { + start: Number(currentPage) - ceiling + 1, + end: Number(currentPage) + floor + 2, + }; + } +}; - const onPageChange = (selectedPage) => { - goTo(navigate, selectedPage.selected); - }; +const PaginationItem = ({ page, currentPage, onPageChange, isDisabled }) => { + const liClasses = classNames({ + "page-item": true, + active: Number(page) === Number(currentPage), + disabled: isDisabled, + }); return ( - +
  • onPageChange(page)}> + {page} +
  • ); -} +}; + +const Pagination = ({ currentPage, total, limit, onPageChange }) => { + const pagesCount = Math.ceil(total / limit); + + console.log(pagesCount, 5, currentPage); + + const pagesCut = getPagesCut({ pagesCount, pagesCutCount: 5, currentPage }); + const pages = range(pagesCut.start, pagesCut.end); + const isFirstPage = Number(currentPage) === 1; + const isLastPage = Number(currentPage) === Number(pagesCount); + return ( + + onPageChange(1)} + isDisabled={isFirstPage} + /> + onPageChange(Number(currentPage) - 1)} + isDisabled={isFirstPage} + /> + {pages.map((page) => ( + + ))} + onPageChange(Number(currentPage) + 1)} + isDisabled={isLastPage} + /> + onPageChange(pagesCount)} + isDisabled={isLastPage} + /> + + ); +}; +export default Pagination; diff --git a/src/components/pagination/Style.jsx b/src/components/pagination/Style.jsx index f9ef34f95..4d0eedf9c 100644 --- a/src/components/pagination/Style.jsx +++ b/src/components/pagination/Style.jsx @@ -1,50 +1,57 @@ import styled from "styled-components"; -import Pagination from "react-paginate"; -export const PaginationContainer = styled(Pagination)` - display: flex; - justify-content: center; - align-items: center; - width: fit-content; - height: fit-content; - border: 1px solid black; - color: black; +export const PaginationContainer = styled.div` + display: inline-block; + padding-left: 0; + margin-top: 1rem; + margin-bottom: 1rem; + border-radius: 0.25rem; - .item { - align-items: center; - cursor: pointer; - display: flex; - font-size: 20px; - height: 30px; - justify-content: center; - width: 40px; + .page-item { + display: inline; } - - .disabled-page { - color: #808e9b; + .page-item:first-child .page-link { + margin-left: 0; + border-bottom-left-radius: 0.25rem; + border-top-left-radius: 0.25rem; } - - .active { - border: solid 1px #808e9b; - color: #808e9b; + .page-item:last-child .page-link { + border-bottom-right-radius: 0.25rem; + border-top-right-radius: 0.25rem; } - - .next { - font-size: 20px; - height: 30px; - width: 100px; - border-left: 1px solid black; + .page-item.active .page-link, + .page-item.active .page-link:focus, + .page-item.active .page-link:hover { + z-index: 2; + color: #fff; + cursor: default; + background-color: #5cb85c; + border-color: #5cb85c; } - - .pagination { - background-color: #0fbcf9; - display: flex; + .page-item.disabled .page-link, + .page-item.disabled .page-link:focus, + .page-item.disabled .page-link:hover { + color: #818a91; + pointer-events: none; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; } - - .previous { - font-size: 20px; - height: 30px; - width: 100px; - border-right: 1px solid black; + .page-link { + position: relative; + float: left; + padding: 0.5rem 0.75rem; + margin-left: -1px; + color: #5cb85c; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; + cursor: pointer; + } + .page-link:focus, + .page-link:hover { + color: #3d8b3d; + background-color: #eceeef; + border-color: #ddd; } `; diff --git a/src/components/pokedex/Pokedex.jsx b/src/components/pokedex/Pokedex.jsx index b383f473e..231c57e6d 100644 --- a/src/components/pokedex/Pokedex.jsx +++ b/src/components/pokedex/Pokedex.jsx @@ -1,18 +1,21 @@ -import { useState } from "react"; +import { useState, useEffect } from "react"; import { useNavigate, useParams } from "react-router-dom"; import { goToPokedex } from "../../router/Coordinator"; import Card from "../card/Card"; import Pagination from "../pagination/Pagination"; -import { ContainerStyled, Pokemons } from "./Style"; export default function Pokedex() { const pathParams = useParams(); const navigate = useNavigate(); const [globaLimit, setGlobalLimit] = useState(20); - const globalOffSet = !pathParams.pageIndex - ? 0 - : pathParams.pageIndex * globaLimit; + const [currentPage, setCurrentPage] = useState(pathParams.page); + useEffect(() => { + setCurrentPage(pathParams.page); + }, [pathParams.page]); + const globalOffSet = !pathParams.page + ? 1 + : (pathParams.page - 1) * globaLimit; let [pokedex, setpokedex] = useState( JSON.parse( @@ -26,26 +29,24 @@ export default function Pokedex() { pokedex = pokedex.slice(globalOffSet, globaLimit + globalOffSet); - const handlePageChange = (data) => { - goToPokedex(navigate, data.selected); - }; - - console.log(pokedex); return ( - - +
    +
    {pokedex?.map((url) => (
    ))} - +
    { + setCurrentPage(page); + goToPokedex(navigate, page); + }} /> - +
    ); } diff --git a/src/components/pokedex/Style.jsx b/src/components/pokedex/Style.jsx deleted file mode 100644 index 84c8aa775..000000000 --- a/src/components/pokedex/Style.jsx +++ /dev/null @@ -1,14 +0,0 @@ -import styled from "styled-components"; -import Pagination from "react-paginate"; - -export const ContainerStyled = styled.div` - display: flex; - align-items: center; - flex-direction: column; - gap: 20px; - flex-wrap: wrap; -`; -export const Pokemons = styled.div` - display: flex; - flex-wrap: wrap; -`; diff --git a/src/index.css b/src/index.css new file mode 100644 index 000000000..daec16995 --- /dev/null +++ b/src/index.css @@ -0,0 +1,9 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +/* * { + margin: 0, + padding: 0, + border-sizing: border-box +} */ diff --git a/src/main.jsx b/src/main.jsx index 655db4721..d71996935 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -2,6 +2,7 @@ import React from "react"; import ReactDOM from "react-dom/client"; import { BrowserRouter } from "react-router-dom"; import App from "./App"; +import "./index.css"; ReactDOM.createRoot(document.getElementById("root")).render( diff --git a/src/pages/details/Details.jsx b/src/pages/details/Details.jsx index 545ac57f9..2e35786ad 100644 --- a/src/pages/details/Details.jsx +++ b/src/pages/details/Details.jsx @@ -1,7 +1,6 @@ import { useEffect, useState } from "react"; import { useParams } from "react-router-dom"; import Header from "../../components/header/Header"; -import { ContainerStyled } from "./Style"; export default function Details() { const params = useParams(); @@ -10,10 +9,10 @@ export default function Details() { JSON.parse(decodeURIComponent(params.pokemon)), ]); return ( - +
    - +
    ); } diff --git a/src/pages/details/Style.jsx b/src/pages/details/Style.jsx deleted file mode 100644 index 96759e0f7..000000000 --- a/src/pages/details/Style.jsx +++ /dev/null @@ -1,3 +0,0 @@ -import styled from "styled-components"; - -export const ContainerStyled = styled.div``; diff --git a/src/pages/home/Home.jsx b/src/pages/home/Home.jsx index 24ea53cc6..16e5f061c 100644 --- a/src/pages/home/Home.jsx +++ b/src/pages/home/Home.jsx @@ -1,12 +1,11 @@ import CardsList from "../../components/cardsList/CardsList"; import Header from "../../components/header/Header"; -import { ContainerStyled } from "./Style"; export default function Home() { return ( - +
    - +
    ); } diff --git a/src/pages/home/Style.jsx b/src/pages/home/Style.jsx deleted file mode 100644 index 495f26b31..000000000 --- a/src/pages/home/Style.jsx +++ /dev/null @@ -1,3 +0,0 @@ -import styled from "styled-components"; - -export const ContainerStyled = styled.header``; diff --git a/src/pages/pokedex/Pokedex.jsx b/src/pages/pokedex/Pokedex.jsx index 60522ab21..75131811c 100644 --- a/src/pages/pokedex/Pokedex.jsx +++ b/src/pages/pokedex/Pokedex.jsx @@ -1,12 +1,11 @@ import Header from "../../components/header/Header"; -import { ContainerStyled } from "./Style"; import PokedexComponent from "../../components/pokedex/Pokedex"; export default function Pokedex() { return ( - +
    - +
    ); } diff --git a/src/pages/pokedex/Style.jsx b/src/pages/pokedex/Style.jsx deleted file mode 100644 index 96759e0f7..000000000 --- a/src/pages/pokedex/Style.jsx +++ /dev/null @@ -1,3 +0,0 @@ -import styled from "styled-components"; - -export const ContainerStyled = styled.div``; diff --git a/src/router/Coordinator.jsx b/src/router/Coordinator.jsx index 2df145068..7f990b62d 100644 --- a/src/router/Coordinator.jsx +++ b/src/router/Coordinator.jsx @@ -1,8 +1,8 @@ -export const goToHome = (navigate, pageIndex) => { - navigate(`/${pageIndex}`); +export const goToHome = (navigate, page) => { + navigate(`/${page}`); }; -export const goToPokedex = (navigate, pageIndex) => { - navigate(`/pokedex/${pageIndex}`); +export const goToPokedex = (navigate, page) => { + navigate(`/pokedex/${page}`); }; export const goToDetails = (navigate, pokemon) => { navigate(`/details/${pokemon}`); diff --git a/src/router/Router.jsx b/src/router/Router.jsx index dafb1b129..d61dc755b 100644 --- a/src/router/Router.jsx +++ b/src/router/Router.jsx @@ -7,8 +7,8 @@ export const Router = () => { return ( } /> - } /> - } /> + } /> + } /> } /> ); diff --git a/tailwind.config.cjs b/tailwind.config.cjs new file mode 100644 index 000000000..f5a071a7f --- /dev/null +++ b/tailwind.config.cjs @@ -0,0 +1,32 @@ +/** @type {import('tailwindcss').Config} */ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], + theme: { + extend: { + fontFamily: {}, + backgroundColor: { + bug: "#76A866", + dark: "#70657B", + dragon: "#004170", + electric: "#E7BF0D", + fairy: "#EA85E4", + fighting: "#D96D8C", + fire: "#EAAB7D", + flying: "#6892B0", + ghost: "#7587BD", + grass: "#729F92", + ground: "#E7A888", + ice: "#59C5B4", + normal: "#BF9762", + poison: "#B978BA", + psychic: "#F88C90", + rock: "#C7B78B", + steel: "#ADADAD", + water: "#71C3FF", + default: "#BF9762", + }, + }, + }, + plugins: [], +}; diff --git a/vite.config.js b/vite.config.js index 5a33944a9..182674be7 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,7 +1,8 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; +import tailwindcss from "tailwindcss"; // https://vitejs.dev/config/ export default defineConfig({ - plugins: [react()], -}) + plugins: [react(), tailwindcss("./tailwind.config.js")], +}); From 3c7e306cdbb7b7bb28282094d107b2be49e53053 Mon Sep 17 00:00:00 2001 From: CarlosScaldaferri Date: Mon, 13 Mar 2023 09:34:52 -0300 Subject: [PATCH 4/6] alterando cores de fundo dos cards --- src/components/card/Card.jsx | 51 +++++++++++++++++++++--- src/components/cardsList/CardsList.jsx | 1 - src/components/pagination/Pagination.jsx | 1 + src/index.css | 6 --- tailwind.config.cjs | 4 +- 5 files changed, 49 insertions(+), 14 deletions(-) diff --git a/src/components/card/Card.jsx b/src/components/card/Card.jsx index 9c66fb794..b5b5b0340 100644 --- a/src/components/card/Card.jsx +++ b/src/components/card/Card.jsx @@ -22,17 +22,57 @@ export default function Card({ url, setPokedex }) { getPokemon(); }, []); + function getColor() { + return "bg-" + pokemonResponse?.types[0]?.type?.name; + // switch (pokemonResponse?.types[0]?.type?.name) { + // case "bug": + // return "bg-bug"; + // case "dark": + // return "bg-dark"; + // case "dragon": + // return "bg-dragon"; + // case "electric": + // return "bg-electric"; + // case "fairy": + // return "bg-fairy"; + // case "fighting": + // return "bg-fighting"; + // case "fire": + // return "bg-fire"; + // case "flying": + // return "bg-flying"; + // case "ghost": + // return "bg-ghost"; + // case "grass": + // return "bg-grass"; + // case "ground": + // return "bg-ground"; + // case "ice": + // return "bg-ice"; + // case "normal": + // return "bg-normal"; + // case "poison": + // return "bg-poison"; + // case "psychic": + // return "bg-psychic"; + // case "rock": + // return "bg-rock"; + // case "steel": + // return "bg-steel"; + // case "water": + // return "bg-water"; + // default: + // return "bg-default"; + // } + } + let pokedex = JSON.parse(localStorage.getItem("pokedex")); pokedex = pokedex == null ? [] : pokedex; return (
    @@ -44,6 +84,7 @@ export default function Card({ url, setPokedex }) {
    {pokemonResponse.types?.map((item) => ( { console.log(pagesCount, 5, currentPage); const pagesCut = getPagesCut({ pagesCount, pagesCutCount: 5, currentPage }); + const pages = range(pagesCut.start, pagesCut.end); const isFirstPage = Number(currentPage) === 1; const isLastPage = Number(currentPage) === Number(pagesCount); diff --git a/src/index.css b/src/index.css index daec16995..b5c61c956 100644 --- a/src/index.css +++ b/src/index.css @@ -1,9 +1,3 @@ @tailwind base; @tailwind components; @tailwind utilities; - -/* * { - margin: 0, - padding: 0, - border-sizing: border-box -} */ diff --git a/tailwind.config.cjs b/tailwind.config.cjs index f5a071a7f..ce9614699 100644 --- a/tailwind.config.cjs +++ b/tailwind.config.cjs @@ -1,11 +1,11 @@ /** @type {import('tailwindcss').Config} */ /** @type {import('tailwindcss').Config} */ + module.exports = { content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], theme: { extend: { - fontFamily: {}, - backgroundColor: { + colors: { bug: "#76A866", dark: "#70657B", dragon: "#004170", From 64dc94d5d1712dae525fabe0107ff476ca7d1952 Mon Sep 17 00:00:00 2001 From: CarlosScaldaferri Date: Fri, 17 Mar 2023 11:38:59 -0300 Subject: [PATCH 5/6] alteracaoes para globalContext --- index.html | 9 + .../{Background.png => Card-Background.png} | Bin public/images/Details-Background.png | Bin 0 -> 31348 bytes src/App.jsx | 16 +- src/components/card/Card.jsx | 213 ++++++++++-------- src/components/cardsList/CardsList.jsx | 54 ++--- src/components/header/Header.jsx | 61 ++++- src/components/pagination/Pagination.jsx | 75 +++--- src/components/pokedex/Pokedex.jsx | 26 ++- src/context/index.jsx | 72 ++++++ src/main.jsx | 6 +- src/pages/details/Details.jsx | 89 +++++++- src/pages/home/Home.jsx | 5 +- src/pages/pokedex/Pokedex.jsx | 5 +- 14 files changed, 433 insertions(+), 198 deletions(-) rename public/images/{Background.png => Card-Background.png} (100%) create mode 100644 public/images/Details-Background.png create mode 100644 src/context/index.jsx diff --git a/index.html b/index.html index a36313a1f..72e61114d 100644 --- a/index.html +++ b/index.html @@ -3,6 +3,15 @@ + + + Pokedex diff --git a/public/images/Background.png b/public/images/Card-Background.png similarity index 100% rename from public/images/Background.png rename to public/images/Card-Background.png diff --git a/public/images/Details-Background.png b/public/images/Details-Background.png new file mode 100644 index 0000000000000000000000000000000000000000..89e7c839579c486ffd6d61c447c00f34cd60c0ad GIT binary patch literal 31348 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 -
    - -
    -
    + + +
    +
    + +
    +
    +
    +
    ); } diff --git a/src/components/card/Card.jsx b/src/components/card/Card.jsx index b5b5b0340..7ea63b76a 100644 --- a/src/components/card/Card.jsx +++ b/src/components/card/Card.jsx @@ -1,131 +1,166 @@ import axios from "axios"; -import { useEffect, useState } from "react"; -import { useNavigate } from "react-router-dom"; +import { useContext, useEffect, useState } from "react"; +import { useLocation, useNavigate } from "react-router-dom"; +import { GlobalContext } from "../../context"; import { goToDetails } from "../../router/Coordinator"; -export default function Card({ url, setPokedex }) { - const navigate = useNavigate(); +export default function Card({ url }) { + // const { setPokedex, pokedex, pokemon, getPokemon } = useContext(GlobalContext); - let [pokemonResponse, setPokemonResponse] = useState([]); + const navigate = useNavigate(); + const location = useLocation(); + const [pokemon, setPokemon] = useState([]); const getPokemon = async () => { try { const response = await axios.get(url); - setPokemonResponse(response.data); + setPokemon(response.data); } catch (error) { console.log(error); } }; + const [pokedex, setPokedex] = useState( + JSON.parse( + localStorage.getItem("pokedex") == null + ? "[]" + : localStorage.getItem("pokedex") + ) + ); + useEffect(() => { - getPokemon(); + getPokemon(url); }, []); function getColor() { - return "bg-" + pokemonResponse?.types[0]?.type?.name; - // switch (pokemonResponse?.types[0]?.type?.name) { - // case "bug": - // return "bg-bug"; - // case "dark": - // return "bg-dark"; - // case "dragon": - // return "bg-dragon"; - // case "electric": - // return "bg-electric"; - // case "fairy": - // return "bg-fairy"; - // case "fighting": - // return "bg-fighting"; - // case "fire": - // return "bg-fire"; - // case "flying": - // return "bg-flying"; - // case "ghost": - // return "bg-ghost"; - // case "grass": - // return "bg-grass"; - // case "ground": - // return "bg-ground"; - // case "ice": - // return "bg-ice"; - // case "normal": - // return "bg-normal"; - // case "poison": - // return "bg-poison"; - // case "psychic": - // return "bg-psychic"; - // case "rock": - // return "bg-rock"; - // case "steel": - // return "bg-steel"; - // case "water": - // return "bg-water"; - // default: - // return "bg-default"; - // } + switch (pokemon?.types[0]?.type?.name) { + case "bug": + return "bg-bug"; + case "dark": + return "bg-dark"; + case "dragon": + return "bg-dragon"; + case "electric": + return "bg-electric"; + case "fairy": + return "bg-fairy"; + case "fighting": + return "bg-fighting"; + case "fire": + return "bg-fire"; + case "flying": + return "bg-flying"; + case "ghost": + return "bg-ghost"; + case "grass": + return "bg-grass"; + case "ground": + return "bg-ground"; + case "ice": + return "bg-ice"; + case "normal": + return "bg-normal"; + case "poison": + return "bg-poison"; + case "psychic": + return "bg-psychic"; + case "rock": + return "bg-rock"; + case "steel": + return "bg-steel"; + case "water": + return "bg-water"; + default: + return "bg-default"; + } } - let pokedex = JSON.parse(localStorage.getItem("pokedex")); - pokedex = pokedex == null ? [] : pokedex; return (
    -
    -
    -

    #{url.split("/")[url.split("/").length - 2]}

    -

    {pokemonResponse.name}

    +
    +
    +
    +

    + #{pokemon.id} +

    +

    + {pokemon && + pokemon.name && + pokemon.name[0].toUpperCase() + pokemon.name.slice(1)} +

    +
    +
    + {pokemon.types?.map((item) => ( + + ))} +
    -
    - {pokemonResponse.types?.map((item) => ( - - ))} +
    +
    +
    + +
    -
    -
    - - {!pokedex.some((pokemon) => pokemon == url) ? ( + +
    + + {!isNaN(location.pathname.split("/")[1]) ? ( + !pokedex.some((pokemon) => pokemon == url) ? ( + + ) : ( + + ) + ) : location.pathname.indexOf("pokedex") > -1 ? ( ) : ( - + <> )}
    diff --git a/src/components/cardsList/CardsList.jsx b/src/components/cardsList/CardsList.jsx index e5fb97f6d..84a0b5a72 100644 --- a/src/components/cardsList/CardsList.jsx +++ b/src/components/cardsList/CardsList.jsx @@ -1,63 +1,37 @@ -import axios from "axios"; -import { useEffect, useLayoutEffect, useState } from "react"; +import { useContext, useEffect, useState } from "react"; import { useNavigate, useParams } from "react-router-dom"; +import { GlobalContext } from "../../context"; + import { goToHome } from "../../router/Coordinator"; import Card from "../card/Card"; import Pagination from "../pagination/Pagination"; export default function CardsList() { + const { + pokemons, + count, + globaLimit, + setCurrentPage, + currentPage, + isLoading, + } = useContext(GlobalContext); const pathParams = useParams(); - const [count, setCount] = useState(0); - const [globaLimit, setGlobalLimit] = useState(20); - const [currentPokemons, setCurrentPokemons] = useState([]); - const [currentPage, setCurrentPage] = useState(pathParams.page); useEffect(() => { setCurrentPage(pathParams.page); }, [pathParams.page]); - const [pokedex, setPokedex] = useState( - JSON.parse( - localStorage.getItem("pokedex") == null - ? "[]" - : localStorage.getItem("pokedex") - ) - ); - const [isLoading, setIsLoading] = useState(false); - - const globalOffSet = !pathParams.page - ? 1 - : (pathParams.page - 1) * globaLimit; - - const getPokemons = async (url) => { - try { - let response = await axios.get(url); - setCount(response.data.count); - setCurrentPokemons(response.data.results); - } catch (error) { - console.log(error); - } - }; - - useLayoutEffect(() => { - setIsLoading(true); - getPokemons( - `https://pokeapi.co/api/v2/pokemon?limit=${globaLimit}&offset=${globalOffSet}` - ); - setIsLoading(false); - }, [pathParams.page, pokedex]); - const navigate = useNavigate(); return ( -
    +
    {isLoading ? ( <>loading... ) : (
    - {currentPokemons?.map((pokemon) => ( + {pokemons?.map((pokemon) => (
    - +
    ))}
    diff --git a/src/components/header/Header.jsx b/src/components/header/Header.jsx index e4a6110e7..68d0c3431 100644 --- a/src/components/header/Header.jsx +++ b/src/components/header/Header.jsx @@ -1,12 +1,44 @@ -import { useNavigate } from "react-router-dom"; +import { useContext, useState } from "react"; +import { useLocation, useNavigate } from "react-router-dom"; +import { GlobalContext } from "../../context"; import { goToPokedex, goToHome } from "../../router/Coordinator"; -export default function Header({ calledFor }) { +export default function Header({ id }) { const navigate = useNavigate(); + const location = useLocation(); + + const [pokedex, setPokedex] = useState( + JSON.parse( + localStorage.getItem("pokedex") == null + ? "[]" + : localStorage.getItem("pokedex") + ) + ); + + function deleteFromPokedex() { + const auxPokedex = [...pokedex]; + const index = auxPokedex.findIndex( + (item) => item.split("/")[item.split("/").length - 2] == id + ); + auxPokedex.splice(index, 1); + + setPokedex(auxPokedex); + localStorage.setItem("pokedex", JSON.stringify(auxPokedex)); + } + const { baseUrl } = useContext(GlobalContext); + + function addToPokedex() { + const auxPokedex = [...pokedex]; + auxPokedex.push(baseUrl + "/" + id + "/"); + localStorage.setItem("pokedex", JSON.stringify(auxPokedex)); + setPokedex(auxPokedex); + } + return ( -
    +
    - {calledFor == "pokedex" || calledFor == "details" ? ( + {location.pathname.indexOf("pokedex") > -1 || + location.pathname.indexOf("details") > -1 ? (
    - {calledFor == "details" ? ( - + ) : location.pathname.indexOf("details") > -1 ? ( + ) : ( -
    + <> )} - {calledFor == "home" ? ( + {!isNaN(location.pathname.split("/")[1]) ? (