From 1dcc6f00f5b958298d1d4ca5ff6db708c5b5a46c Mon Sep 17 00:00:00 2001 From: Djalim Simaila Date: Mon, 25 Mar 2024 14:32:09 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20refactor(App.js):=20remove=20boi?= =?UTF-8?q?lerplate=20code=20and=20add=20new=20components=20for=20game=20c?= =?UTF-8?q?onsole=20=F0=9F=94=A7=20refactor(index.css):=20change=20backgro?= =?UTF-8?q?und=20color=20to=20improve=20UI=20=F0=9F=94=A7=20refactor(serve?= =?UTF-8?q?r.ts):=20change=20port=20variable=20case=20and=20add=20support?= =?UTF-8?q?=20for=20environment=20variable=20=F0=9F=94=A7=20refactor(packa?= =?UTF-8?q?ge.json):=20add=20new=20dependencies=20for=20the=20project=20?= =?UTF-8?q?=F0=9F=94=A7=20refactor(.env):=20add=20new=20environment=20vari?= =?UTF-8?q?able=20for=20API=20URL=20=F0=9F=94=A7=20refactor(App.js):=20add?= =?UTF-8?q?=20new=20components=20and=20states=20for=20game=20console=20?= =?UTF-8?q?=F0=9F=94=A7=20refactor(ConsoleCard.js):=20add=20new=20componen?= =?UTF-8?q?t=20for=20displaying=20game=20console=20=F0=9F=94=A7=20refactor?= =?UTF-8?q?(ConsoleList.js):=20add=20new=20component=20for=20listing=20gam?= =?UTF-8?q?e=20consoles=20=F0=9F=94=A7=20refactor(GameCard.js):=20add=20ne?= =?UTF-8?q?w=20component=20for=20displaying=20game=20=F0=9F=94=A7=20refact?= =?UTF-8?q?or(GameList.js):=20add=20new=20component=20for=20listing=20game?= =?UTF-8?q?s=20=F0=9F=94=A7=20refactor(GamePlayer.js):=20add=20new=20compo?= =?UTF-8?q?nent=20for=20game=20player=20=F0=9F=94=A7=20refactor(Topbar.js)?= =?UTF-8?q?:=20add=20new=20component=20for=20topbar=20=F0=9F=94=A7=20refac?= =?UTF-8?q?tor(ConsolePage.jsx):=20add=20new=20page=20for=20console=20?= =?UTF-8?q?=F0=9F=94=A7=20refactor(GamePage.jsx):=20add=20new=20page=20for?= =?UTF-8?q?=20game=20=F0=9F=94=A7=20refactor(HomePage.jsx):=20add=20new=20?= =?UTF-8?q?page=20for=20home=20=F0=9F=94=A7=20refactor(router.js):=20add?= =?UTF-8?q?=20new=20router=20for=20navigation=20=F0=9F=94=A7=20refactor(ro?= =?UTF-8?q?utes.js):=20add=20new=20routes=20for=20navigation=20?= =?UTF-8?q?=F0=9F=94=A7=20refactor(placeholder.jpg):=20add=20new=20placeho?= =?UTF-8?q?lder=20image=20for=20game=20console=20and=20game?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 1 + package-lock.json | 972 ++++++++++++++++++++++++++++++- package.json | 8 + src/App.js | 65 ++- src/images/placeholder.jpg | Bin 0 -> 171243 bytes src/index.css | 1 + src/page_elements/ConsoleCard.js | 53 ++ src/page_elements/ConsoleList.js | 59 ++ src/page_elements/GameCard.js | 47 ++ src/page_elements/GameCard.js~ | 45 ++ src/page_elements/GameList.js | 70 +++ src/page_elements/GamePlayer.js | 45 ++ src/page_elements/Topbar.js | 80 +++ src/page_elements/Topbar.js~ | 79 +++ src/pages/ConsolePage.jsx | 12 + src/pages/GamePage.jsx | 11 + src/pages/HomePage.jsx | 16 + src/routes/router.js | 20 + src/routes/routes.js | 18 + 19 files changed, 1576 insertions(+), 26 deletions(-) create mode 100644 .env create mode 100644 src/images/placeholder.jpg create mode 100644 src/page_elements/ConsoleCard.js create mode 100644 src/page_elements/ConsoleList.js create mode 100644 src/page_elements/GameCard.js create mode 100644 src/page_elements/GameCard.js~ create mode 100644 src/page_elements/GameList.js create mode 100644 src/page_elements/GamePlayer.js create mode 100644 src/page_elements/Topbar.js create mode 100644 src/page_elements/Topbar.js~ create mode 100644 src/pages/ConsolePage.jsx create mode 100644 src/pages/GamePage.jsx create mode 100644 src/pages/HomePage.jsx create mode 100644 src/routes/router.js create mode 100644 src/routes/routes.js diff --git a/.env b/.env new file mode 100644 index 0000000..9f5d9ab --- /dev/null +++ b/.env @@ -0,0 +1 @@ +VIDEOGAME_API_URL=https://videogamedb.simailadjalim.fr diff --git a/package-lock.json b/package-lock.json index 2a3f460..93a6cd2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,11 +8,19 @@ "name": "retro", "version": "0.1.0", "dependencies": { + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", + "@fontsource/roboto": "^5.0.5", + "@mui/icons-material": "^5.14.0", + "@mui/material": "^5.14.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "axios": "^1.4.0", + "dotenv": "^16.3.1", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-router-dom": "^6.22.3", "react-scripts": "5.0.1", "web-vitals": "^2.1.4" } @@ -2284,6 +2292,158 @@ "postcss-selector-parser": "^6.0.10" } }, + "node_modules/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "dependencies": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@emotion/react": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "dependencies": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "node_modules/@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -2377,6 +2537,11 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@fontsource/roboto": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.0.5.tgz", + "integrity": "sha512-IMXFq5AMgGx0sgNLfwWsmPuy3qa7lmDmQcXXihqwF4mT2UpD725cbxZj93ERY793OWon+6V1ANax02I3nt9+4w==" + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", @@ -3151,6 +3316,262 @@ "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" }, + "node_modules/@mui/base": { + "version": "5.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.7.tgz", + "integrity": "sha512-Pjbwm6gjiS96kOMF7E5fjEJsenc0tZBesrLQ4rrdi3eT/c/yhSWnPbCUkHSz8bnS0l3/VQ8bA+oERSGSV2PK6A==", + "dependencies": { + "@babel/runtime": "^7.22.5", + "@emotion/is-prop-valid": "^1.2.1", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.13.7", + "@popperjs/core": "^2.11.8", + "clsx": "^1.2.1", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/base/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==" + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.0.tgz", + "integrity": "sha512-SYBOVCatVDUf/lbrLGah09bHhX5WfUXg7kSskfLILr6SvKRni0NLp0aonxQ0SMALVVK3Qwa6cW4CdWuwS0gC1w==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + } + }, + "node_modules/@mui/icons-material": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.0.tgz", + "integrity": "sha512-z7lYNteDi1GMkF9JP/m2RWuCYK1M/FlaeBSUK7/IhIYzIXNhAVjfD8jRq5vFBV31qkEi2aGBS2z5SfLXwH6U0A==", + "dependencies": { + "@babel/runtime": "^7.22.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@mui/material": "^5.0.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.0.tgz", + "integrity": "sha512-HP7CP71NhMkui2HUIEKl2/JfuHMuoarSUWAKlNw6s17bl/Num9rN61EM6uUzc2A2zHjj/00A66GnvDnmixEJEw==", + "dependencies": { + "@babel/runtime": "^7.22.5", + "@mui/base": "5.0.0-beta.7", + "@mui/core-downloads-tracker": "^5.14.0", + "@mui/system": "^5.14.0", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.13.7", + "@types/react-transition-group": "^4.4.6", + "clsx": "^1.2.1", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/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==" + }, + "node_modules/@mui/private-theming": { + "version": "5.13.7", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.13.7.tgz", + "integrity": "sha512-qbSr+udcij5F9dKhGX7fEdx2drXchq7htLNr2Qg2Ma+WJ6q0ERlEqGSBiPiVDJkptcjeVL4DGmcf1wl5+vD4EA==", + "dependencies": { + "@babel/runtime": "^7.22.5", + "@mui/utils": "^5.13.7", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.13.2.tgz", + "integrity": "sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw==", + "dependencies": { + "@babel/runtime": "^7.21.0", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.0.tgz", + "integrity": "sha512-0HZGkX8miJbiNw+rjlZ9l0Cfkz1bSqfSHQH0EH9J+nx0aAm5cBleg9piOlLdCNIWGgecCqsw4x62erGrGjjcJg==", + "dependencies": { + "@babel/runtime": "^7.22.5", + "@mui/private-theming": "^5.13.7", + "@mui/styled-engine": "^5.13.2", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.13.7", + "clsx": "^1.2.1", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.4.tgz", + "integrity": "sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==", + "peerDependencies": { + "@types/react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.13.7", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.13.7.tgz", + "integrity": "sha512-/3BLptG/q0u36eYED7Nhf4fKXmcKb6LjjT7ZMwhZIZSdSxVqDqSTmATW3a56n3KEPQUXCU9TpxAfCBQhs6brVA==", + "dependencies": { + "@babel/runtime": "^7.22.5", + "@types/prop-types": "^15.7.5", + "@types/react-is": "^18.2.1", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } + }, + "node_modules/@mui/utils/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==" + }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", @@ -3268,6 +3689,23 @@ } } }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@remix-run/router": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3.tgz", + "integrity": "sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -4377,6 +4815,22 @@ "@types/react": "*" } }, + "node_modules/@types/react-is": { + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-18.2.1.tgz", + "integrity": "sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", + "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/resolve": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", @@ -5282,6 +5736,29 @@ "node": ">=4" } }, + "node_modules/axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/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/axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", @@ -5971,6 +6448,14 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -6890,6 +7375,15 @@ "utila": "~0.4" } }, + "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/dom-serializer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", @@ -6970,11 +7464,14 @@ } }, "node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" } }, "node_modules/dotenv-expand": { @@ -8224,6 +8721,11 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -8853,6 +9355,19 @@ "he": "bin/he" } }, + "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/hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", @@ -14232,6 +14747,11 @@ "node": ">= 0.10" } }, + "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/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -14523,6 +15043,36 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "6.22.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.3.tgz", + "integrity": "sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==", + "dependencies": { + "@remix-run/router": "1.15.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.22.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.3.tgz", + "integrity": "sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==", + "dependencies": { + "@remix-run/router": "1.15.3", + "react-router": "6.22.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, "node_modules/react-scripts": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", @@ -14595,6 +15145,29 @@ } } }, + "node_modules/react-scripts/node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "engines": { + "node": ">=10" + } + }, + "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/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -15735,6 +16308,11 @@ "postcss": "^8.2.15" } }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, "node_modules/sucrase": { "version": "3.33.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.33.0.tgz", @@ -18965,6 +19543,132 @@ "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", "requires": {} }, + "@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + } + } + }, + "@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "requires": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "requires": { + "@emotion/memoize": "^0.8.1" + } + }, + "@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "@emotion/react": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "requires": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + } + }, + "@emotion/serialize": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "requires": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "requires": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + } + }, + "@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "requires": {} + }, + "@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + }, "@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -19027,6 +19731,11 @@ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==" }, + "@fontsource/roboto": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.0.5.tgz", + "integrity": "sha512-IMXFq5AMgGx0sgNLfwWsmPuy3qa7lmDmQcXXihqwF4mT2UpD725cbxZj93ERY793OWon+6V1ANax02I3nt9+4w==" + }, "@humanwhocodes/config-array": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", @@ -19604,6 +20313,128 @@ "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" }, + "@mui/base": { + "version": "5.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.7.tgz", + "integrity": "sha512-Pjbwm6gjiS96kOMF7E5fjEJsenc0tZBesrLQ4rrdi3eT/c/yhSWnPbCUkHSz8bnS0l3/VQ8bA+oERSGSV2PK6A==", + "requires": { + "@babel/runtime": "^7.22.5", + "@emotion/is-prop-valid": "^1.2.1", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.13.7", + "@popperjs/core": "^2.11.8", + "clsx": "^1.2.1", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "dependencies": { + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + } + } + }, + "@mui/core-downloads-tracker": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.0.tgz", + "integrity": "sha512-SYBOVCatVDUf/lbrLGah09bHhX5WfUXg7kSskfLILr6SvKRni0NLp0aonxQ0SMALVVK3Qwa6cW4CdWuwS0gC1w==" + }, + "@mui/icons-material": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.0.tgz", + "integrity": "sha512-z7lYNteDi1GMkF9JP/m2RWuCYK1M/FlaeBSUK7/IhIYzIXNhAVjfD8jRq5vFBV31qkEi2aGBS2z5SfLXwH6U0A==", + "requires": { + "@babel/runtime": "^7.22.5" + } + }, + "@mui/material": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.0.tgz", + "integrity": "sha512-HP7CP71NhMkui2HUIEKl2/JfuHMuoarSUWAKlNw6s17bl/Num9rN61EM6uUzc2A2zHjj/00A66GnvDnmixEJEw==", + "requires": { + "@babel/runtime": "^7.22.5", + "@mui/base": "5.0.0-beta.7", + "@mui/core-downloads-tracker": "^5.14.0", + "@mui/system": "^5.14.0", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.13.7", + "@types/react-transition-group": "^4.4.6", + "clsx": "^1.2.1", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "dependencies": { + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + } + } + }, + "@mui/private-theming": { + "version": "5.13.7", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.13.7.tgz", + "integrity": "sha512-qbSr+udcij5F9dKhGX7fEdx2drXchq7htLNr2Qg2Ma+WJ6q0ERlEqGSBiPiVDJkptcjeVL4DGmcf1wl5+vD4EA==", + "requires": { + "@babel/runtime": "^7.22.5", + "@mui/utils": "^5.13.7", + "prop-types": "^15.8.1" + } + }, + "@mui/styled-engine": { + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.13.2.tgz", + "integrity": "sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw==", + "requires": { + "@babel/runtime": "^7.21.0", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + } + }, + "@mui/system": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.0.tgz", + "integrity": "sha512-0HZGkX8miJbiNw+rjlZ9l0Cfkz1bSqfSHQH0EH9J+nx0aAm5cBleg9piOlLdCNIWGgecCqsw4x62erGrGjjcJg==", + "requires": { + "@babel/runtime": "^7.22.5", + "@mui/private-theming": "^5.13.7", + "@mui/styled-engine": "^5.13.2", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.13.7", + "clsx": "^1.2.1", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + } + }, + "@mui/types": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.4.tgz", + "integrity": "sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==", + "requires": {} + }, + "@mui/utils": { + "version": "5.13.7", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.13.7.tgz", + "integrity": "sha512-/3BLptG/q0u36eYED7Nhf4fKXmcKb6LjjT7ZMwhZIZSdSxVqDqSTmATW3a56n3KEPQUXCU9TpxAfCBQhs6brVA==", + "requires": { + "@babel/runtime": "^7.22.5", + "@types/prop-types": "^15.7.5", + "@types/react-is": "^18.2.1", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "dependencies": { + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + } + } + }, "@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", @@ -19672,6 +20503,16 @@ "source-map": "^0.7.3" } }, + "@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" + }, + "@remix-run/router": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3.tgz", + "integrity": "sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==" + }, "@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -20519,6 +21360,22 @@ "@types/react": "*" } }, + "@types/react-is": { + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-18.2.1.tgz", + "integrity": "sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw==", + "requires": { + "@types/react": "*" + } + }, + "@types/react-transition-group": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", + "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", + "requires": { + "@types/react": "*" + } + }, "@types/resolve": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", @@ -21188,6 +22045,28 @@ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==" }, + "axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + }, + "dependencies": { + "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" + } + } + } + }, "axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", @@ -21695,6 +22574,11 @@ "wrap-ansi": "^7.0.0" } }, + "clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -22359,6 +23243,15 @@ "utila": "~0.4" } }, + "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" + } + }, "dom-serializer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", @@ -22417,9 +23310,9 @@ } }, "dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==" }, "dotenv-expand": { "version": "5.1.0", @@ -23358,6 +24251,11 @@ "pkg-dir": "^4.1.0" } }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -23779,6 +24677,21 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, + "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==" + } + } + }, "hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", @@ -27476,6 +28389,11 @@ } } }, + "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==" + }, "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -27687,6 +28605,23 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==" }, + "react-router": { + "version": "6.22.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.3.tgz", + "integrity": "sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==", + "requires": { + "@remix-run/router": "1.15.3" + } + }, + "react-router-dom": { + "version": "6.22.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.3.tgz", + "integrity": "sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==", + "requires": { + "@remix-run/router": "1.15.3", + "react-router": "6.22.3" + } + }, "react-scripts": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", @@ -27740,6 +28675,24 @@ "webpack-dev-server": "^4.6.0", "webpack-manifest-plugin": "^4.0.2", "workbox-webpack-plugin": "^6.4.1" + }, + "dependencies": { + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" + } + } + }, + "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" } }, "read-cache": { @@ -28575,6 +29528,11 @@ "postcss-selector-parser": "^6.0.4" } }, + "stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, "sucrase": { "version": "3.33.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.33.0.tgz", diff --git a/package.json b/package.json index 955a018..283f688 100644 --- a/package.json +++ b/package.json @@ -3,11 +3,19 @@ "version": "0.1.0", "private": true, "dependencies": { + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", + "@fontsource/roboto": "^5.0.5", + "@mui/icons-material": "^5.14.0", + "@mui/material": "^5.14.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "axios": "^1.4.0", + "dotenv": "^16.3.1", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-router-dom": "^6.22.3", "react-scripts": "5.0.1", "web-vitals": "^2.1.4" }, diff --git a/src/App.js b/src/App.js index 3784575..298aac5 100644 --- a/src/App.js +++ b/src/App.js @@ -1,25 +1,52 @@ -import logo from './logo.svg'; import './App.css'; +import '@fontsource/roboto/300.css'; +import '@fontsource/roboto/400.css'; +import '@fontsource/roboto/500.css'; +import '@fontsource/roboto/700.css'; + +import Router from './routes/router'; +import ConsoleList from './page_elements/ConsoleList'; +import GameList from './page_elements/GameList'; +import GamePlayer from './page_elements/GamePlayer'; +import Topbar from './page_elements/Topbar'; + +import * as React from 'react'; +var API_URL = process.env.VIDEOGAME_API_URL function App() { - return ( -
-
- logo -

- Edit src/App.js and save to reload. -

- - Learn React - -
-
- ); + console.log(API_URL); + const [gameId, setGameId] = React.useState(0); + const [consoleState, setConsoleState] = React.useState({console_id: 0, core: "2600"}); + const [current_page, setCurrentPage] = React.useState(0); + + const handleConsoleChange = (console_id, core) => { + setConsoleState({console_id: console_id, core: core}); + setCurrentPage(1); + } + + const handleGameChange = (game_id) => { + setGameId(game_id); + setCurrentPage(2); + } + + const handleBack = () => { + setCurrentPage(current_page - 1); + } + + let element; + if (current_page === 0) { + element = ; + } else if (current_page === 1) { + element = ; + } else if (current_page === 2) { + element = ; + } + + return <> + + + + } export default App; diff --git a/src/images/placeholder.jpg b/src/images/placeholder.jpg new file mode 100644 index 0000000000000000000000000000000000000000..178bfecec35dc2fc26d18675897f8e864f29e0c2 GIT binary patch literal 171243 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 literal 0 HcmV?d00001 diff --git a/src/index.css b/src/index.css index ec2585e..e8c77d2 100644 --- a/src/index.css +++ b/src/index.css @@ -5,6 +5,7 @@ body { sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; + background-color: #282c34; } code { diff --git a/src/page_elements/ConsoleCard.js b/src/page_elements/ConsoleCard.js new file mode 100644 index 0000000..79d7dac --- /dev/null +++ b/src/page_elements/ConsoleCard.js @@ -0,0 +1,53 @@ +import * as React from 'react'; +import Card from '@mui/material/Card'; +import CardContent from '@mui/material/CardContent'; +import CardMedia from '@mui/material/CardMedia'; +import Typography from '@mui/material/Typography'; +import { CardActionArea } from '@mui/material'; +import placeholder from '../images/placeholder.jpg'; +import axios from 'axios'; +import { useNavigate } from 'react-router-dom'; + +export default function ConsoleCard(props) { + const [game_console, setGameConsole] = React.useState(null); + const [console_cores, setConsoleCores] = React.useState(null); + const [hasLoaded, setLoaded] = React.useState(false); + const game_console_id = props.id; + + const navigate = useNavigate(); + let console_name = "console" + game_console_id; + let console_data = JSON.parse(localStorage.getItem(console_name)); + + if (!hasLoaded){ + if (console_data === null){ + axios.get('https://videogamedb.simailadjalim.fr/consoles/' + game_console_id).then((result) => { + localStorage.setItem(console_name,JSON.stringify(result.data)); + setGameConsole(result.data["name"]); + setConsoleCores(result.data["core"]); + setLoaded(true); + }) + } else { + setGameConsole(console_data["name"]); + setConsoleCores(console_data["core"]); + setLoaded(true); + } + } + + return ( + navigate("/console/"+game_console_id)} sx={{ width: 250 }}> + + + + + {game_console} + + + + + ); +} diff --git a/src/page_elements/ConsoleList.js b/src/page_elements/ConsoleList.js new file mode 100644 index 0000000..00ede00 --- /dev/null +++ b/src/page_elements/ConsoleList.js @@ -0,0 +1,59 @@ +import '@fontsource/roboto/300.css'; +import '@fontsource/roboto/400.css'; +import '@fontsource/roboto/500.css'; +import '@fontsource/roboto/700.css'; +import ConsoleCard from './ConsoleCard'; +import axios from 'axios'; +import * as React from 'react'; +import { LinearProgress } from '@mui/material'; + +function ConsoleList(props) { + const [game_consoles, setGameConsoles] = React.useState([]); + const [has_loaded, setHasLoaded] = React.useState(false); + const cached_game_console_ids = [] + + if (!has_loaded){ + let consoles = JSON.parse(localStorage.getItem("consoles")); + + if (consoles !== null) { + console.log("loaded cache"); + for (const game_console of consoles) { + const card = + cached_game_console_ids.push(card); + } + setGameConsoles(cached_game_console_ids); + setHasLoaded(true); + } else { + console.log("making requests"); + axios.get('https://videogamedb.simailadjalim.fr/consoles').then((result) => { + for (const game_console of result.data) { + localStorage.setItem("consoles",JSON.stringify(result.data)); + console.log(game_console["id"]); + const card = + cached_game_console_ids.push(card); + } + setGameConsoles(cached_game_console_ids); + setHasLoaded(true); + }) + + } + } + + + if (!has_loaded){ + return ( +
+ +
+ ); + } + else{ + return ( +
+ {game_consoles} +
+ ); + } +} + +export default ConsoleList; diff --git a/src/page_elements/GameCard.js b/src/page_elements/GameCard.js new file mode 100644 index 0000000..edbde52 --- /dev/null +++ b/src/page_elements/GameCard.js @@ -0,0 +1,47 @@ +import * as React from 'react'; +import Card from '@mui/material/Card'; +import CardContent from '@mui/material/CardContent'; +import CardMedia from '@mui/material/CardMedia'; +import Typography from '@mui/material/Typography'; +import { CardActionArea } from '@mui/material'; +import placeholder from '../images/placeholder.jpg'; +import { useNavigate } from 'react-router-dom'; + +export default function GameCard(props) { + const game_name = props.name; + const game_id = props.id; + const liste = true; + const navigate = useNavigate(); + + if (liste) { + return ( + navigate("/console/"+props.console_id+"/"+game_id)}> + + + + {game_name} + + + + + ); + } else { + return ( + + + + + + {game_name} + + + + + ); + } +} diff --git a/src/page_elements/GameCard.js~ b/src/page_elements/GameCard.js~ new file mode 100644 index 0000000..a76eb49 --- /dev/null +++ b/src/page_elements/GameCard.js~ @@ -0,0 +1,45 @@ +import * as React from 'react'; +import Card from '@mui/material/Card'; +import CardContent from '@mui/material/CardContent'; +import CardMedia from '@mui/material/CardMedia'; +import Typography from '@mui/material/Typography'; +import { CardActionArea } from '@mui/material'; +import placeholder from '../images/placeholder.jpg'; + +export default function GameCard(props) { + const game_name = props.name; + const game_id = props.id; + const liste = true; + + if (liste) { + return ( + props.handleGameChange(game_id)}> + + + + {game_name} + + + + + ); + } else { + return ( + + + + + + {game_name} + + + + + ); + } +} diff --git a/src/page_elements/GameList.js b/src/page_elements/GameList.js new file mode 100644 index 0000000..4c4e6d8 --- /dev/null +++ b/src/page_elements/GameList.js @@ -0,0 +1,70 @@ +import '@fontsource/roboto/300.css'; +import '@fontsource/roboto/400.css'; +import '@fontsource/roboto/500.css'; +import '@fontsource/roboto/700.css'; +import * as React from 'react'; +import { CircularProgress, Popover } from '@mui/material'; +import axios from 'axios'; +import GameCard from './GameCard'; +import { useParams } from 'react-router-dom'; + + +async function loadgamesfromlocalstorage(rom_name,console_id){ + let console_rom = JSON.parse(localStorage.getItem(rom_name)); + let game_components = [] + for (const roms of console_rom) { + const card = + game_components.push(card); + } + return game_components; + +} + +function GameList(props) { + const [game_consoles, setGameConsoles] = React.useState([]); + const [has_loaded, setHasLoaded] = React.useState(false); + const game_components = [] + const params = useParams() + let console_id = params.consoleId; + + + let rom_name = "rom" + props.id; + let console_rom = JSON.parse(localStorage.getItem(rom_name)); + + if (!has_loaded){ + if (console_rom === null){ + console.log("asking rom for console" + console_id) + axios.get('https://videogamedb.simailadjalim.fr/consoles/'+ console_id + '/roms') + .then((result) => { + localStorage.setItem(rom_name,JSON.stringify(result.data)); + for (const roms of result.data) { + const card = + game_components.push(card); + } + setGameConsoles(game_components); + setHasLoaded(true); + }) + }else{ + console.log("loading roms from cache"); + loadgamesfromlocalstorage(rom_name,props.id).then(game_components =>{ + setGameConsoles(game_components); + setHasLoaded(true); + }); + } + } + if (!has_loaded){ + return <> +
+ + + } + else{ + return ( +
+

Jeux

+ {game_consoles} +
+ ); + } +} +export default GameList; diff --git a/src/page_elements/GamePlayer.js b/src/page_elements/GamePlayer.js new file mode 100644 index 0000000..8ba73be --- /dev/null +++ b/src/page_elements/GamePlayer.js @@ -0,0 +1,45 @@ +import * as React from 'react'; +import axios from 'axios'; +import Button from '@mui/material/Button'; +import { Box } from '@mui/material'; + + + + +export default function GamePlayer(props) { + const [game, setGame] = React.useState(null); + var game_id = props.id; + var console_core = JSON.parse(localStorage.getItem("console"+props.consoleId)).core; + console.log(console_core); + axios.get('https://videogamedb.simailadjalim.fr/roms/' + game_id).then((result) => { + setGame(result.data["name"]); + }) + function handleDownload(){ + const fileUrl = 'https://videogamedb.simailadjalim.fr/roms/' + props.id + '?romfile=true'; + const link = document.createElement('a'); + link.href = fileUrl; + document.body.appendChild(link); + link.click(); + // Clean up the temporary URL and remove the element + document.body.removeChild(link); + }; + return ( +
+

GamePlayer

+

{game}

+