From 4008f0e50ff33dd21cafe2d013a7e8b5addaae79 Mon Sep 17 00:00:00 2001 From: Sylvia McLaughlin <85905333+sylviamclaughlin@users.noreply.github.com> Date: Tue, 19 Sep 2023 14:08:57 -0700 Subject: [PATCH] Main page layout of the SRE bot (#266) * Committing google app frontend * Adding backend and frontend url as env. variables * Additional changes to the frontedn * Adding static files * Reverting using env for frontend/backend * Adding a catch all route * Adding final Google login elements * Adding env variables to the ci_code action tests * Update App.js Removing comments. * Removing the SRE bot logo image from App.js * Committing initial dashboard * Added dashboard components * Adding changes to the dashboard * Adding logout button to the sidebar * Adding files to make dashboard * Changing the names of the topbar and sidebar components * Linting code --- app/package-lock.json | 6 + app/server/server.py | 2 +- frontend/package-lock.json | 2161 ++++++++++++++++- frontend/package.json | 18 +- frontend/public/static/favicon.ico | Bin 0 -> 27453 bytes frontend/public/static/sre_bot_logo.png | Bin 0 -> 24693 bytes frontend/src/App.css | 14 - frontend/src/App.js | 179 +- frontend/src/App.test.js | 8 - frontend/src/components/Header.jsx | 24 + frontend/src/index.css | 44 +- frontend/src/index.js | 13 +- frontend/src/pages/LandingPage.js | 16 +- frontend/src/reportWebVitals.js | 13 - frontend/src/scenes/dashboard/index.jsx | 15 + frontend/src/scenes/faq/index.jsx | 14 + frontend/src/scenes/geolocate/index.jsx | 14 + frontend/src/scenes/global/Sidemenu.jsx | 204 ++ frontend/src/scenes/global/Topmenu.jsx | 49 + frontend/src/scenes/incident/index.jsx | 15 + .../src/scenes/incident_history/index.jsx | 14 + frontend/src/scenes/webhooks/index.jsx | 14 + frontend/src/setupTests.js | 5 - frontend/src/static/sre_bot_logo.png | Bin 0 -> 24693 bytes frontend/src/theme.js | 234 ++ package-lock.json | 1651 +++++++++++++ package.json | 9 + 27 files changed, 4556 insertions(+), 180 deletions(-) create mode 100644 app/package-lock.json create mode 100644 frontend/public/static/favicon.ico create mode 100644 frontend/public/static/sre_bot_logo.png delete mode 100644 frontend/src/App.css delete mode 100644 frontend/src/App.test.js create mode 100644 frontend/src/components/Header.jsx delete mode 100644 frontend/src/reportWebVitals.js create mode 100644 frontend/src/scenes/dashboard/index.jsx create mode 100644 frontend/src/scenes/faq/index.jsx create mode 100644 frontend/src/scenes/geolocate/index.jsx create mode 100644 frontend/src/scenes/global/Sidemenu.jsx create mode 100644 frontend/src/scenes/global/Topmenu.jsx create mode 100644 frontend/src/scenes/incident/index.jsx create mode 100644 frontend/src/scenes/incident_history/index.jsx create mode 100644 frontend/src/scenes/webhooks/index.jsx delete mode 100644 frontend/src/setupTests.js create mode 100644 frontend/src/static/sre_bot_logo.png create mode 100644 frontend/src/theme.js create mode 100644 package-lock.json create mode 100644 package.json diff --git a/app/package-lock.json b/app/package-lock.json new file mode 100644 index 00000000..0a77be79 --- /dev/null +++ b/app/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "app", + "lockfileVersion": 2, + "requires": true, + "packages": {} +} diff --git a/app/server/server.py b/app/server/server.py index 4d1b75e7..e7d24ee7 100644 --- a/app/server/server.py +++ b/app/server/server.py @@ -146,7 +146,7 @@ async def auth(request: Request): user_data = access_token.get("userinfo") if user_data: request.session["user"] = dict(user_data) - return RedirectResponse(url="/home") + return RedirectResponse(url="/") # User route. Returns the user's first name that is currently logged into the application diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 56e5df79..a5e57b48 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,15 +8,29 @@ "name": "frontend", "version": "0.1.0", "dependencies": { + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", + "@mui/icons-material": "^5.14.9", + "@mui/material": "^5.14.9", + "@mui/x-data-grid": "^6.14.0", + "@nivo/bar": "^0.83.0", + "@nivo/core": "^0.83.0", + "@nivo/geo": "^0.83.0", + "@nivo/line": "^0.83.0", + "@nivo/pie": "^0.83.0", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", "axios": "^1.5.0", + "formik": "^2.4.4", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "^6.15.0", + "react-pro-sidebar": "^0.7.1", + "react-router-dom": "^6.16.0", "react-scripts": "5.0.1", - "web-vitals": "^2.1.4" + "recharts": "^2.8.0", + "web-vitals": "^2.1.4", + "yup": "^1.2.0" }, "devDependencies": { "autoprefixer": "^10.4.15", @@ -2406,6 +2420,147 @@ "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/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", @@ -2499,6 +2654,40 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.2.tgz", + "integrity": "sha512-olUakR5nr9v2ueVr1yomoJnBTkHGqHzL/iK4AhforiJS/wKJgFphAYpZHZzADLv/zNUFuQwqLH3bcoUhFh2E1Q==", + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "dependencies": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", + "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", + "dependencies": { + "@floating-ui/dom": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.3.tgz", + "integrity": "sha512-uvnFKtPgzLnpzzTRfhDlvXX0kLYi9lDRQbcDmT8iXl71Rx+uwSuaUIQl3DNC7w5OweAQ7XQMDObML+KaYDQfng==" + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.11", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", @@ -3339,141 +3528,1354 @@ "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" }, - "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", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "node_modules/@mui/base": { + "version": "5.0.0-beta.15", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.15.tgz", + "integrity": "sha512-Xtom3YSdi0iwYPtyVRFUEGoRwi6IHWixPwifDKaK+4PkEPtUWMU5YOIJfTsmC59ri+dFvA3oBNSiTPUGGrklZw==", "dependencies": { - "eslint-scope": "5.1.1" + "@babel/runtime": "^7.22.15", + "@floating-ui/react-dom": "^2.0.2", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.9", + "@popperjs/core": "^2.11.8", + "clsx": "^2.0.0", + "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", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/@mui/core-downloads-tracker": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.9.tgz", + "integrity": "sha512-JAU/R5hM3l2zP1Q4KnioDRhq5V3vZ4mmjEZ+TwARDb2xFhg3p59McacQuzkSu0sUHJnH9aJos36+hU5sPQBcFQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + } + }, + "node_modules/@mui/icons-material": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.9.tgz", + "integrity": "sha512-xTRQbDsogsJo7tY5Og8R9zbuG2q+KIPVIM6JQoKxtJlz9DPOw1u0T2fGrvwD+XAOVifQf6epNMcGCDLfJAz4Nw==", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "@babel/runtime": "^7.22.15" }, "engines": { - "node": ">=8.0.0" + "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/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/@mui/material": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.9.tgz", + "integrity": "sha512-pbBy5kc5iUGXPxgbb+t+yEPvLK5nE3bPUb8WbAafJ8iZ40ZGui0xC4xiiIyzbVexzsLmyN7MaSo4LkxLmPKqUQ==", + "dependencies": { + "@babel/runtime": "^7.22.15", + "@mui/base": "5.0.0-beta.15", + "@mui/core-downloads-tracker": "^5.14.9", + "@mui/system": "^5.14.9", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.9", + "@types/react-transition-group": "^4.4.6", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, "engines": { - "node": ">=4.0" + "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/@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==", + "node_modules/@mui/material/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": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" } }, - "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==", - "engines": { - "node": ">= 8" + "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/material/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/@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==", + "node_modules/@mui/private-theming": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.9.tgz", + "integrity": "sha512-0PzoUFqFXTXiNchhR7K4b7kZunasPOjx6Qf7AagCmfZDNASHedA0x6evHVhnST918x/AHY9xykYNKfB0Z4xMBg==", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@babel/runtime": "^7.22.15", + "@mui/utils": "^5.14.9", + "prop-types": "^15.8.1" }, "engines": { - "node": ">= 8" + "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/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", - "integrity": "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==", + "node_modules/@mui/styled-engine": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.9.tgz", + "integrity": "sha512-LEQxLrW9oWvea33pge08+oyNeTz704jb6Nhe26xEJKojXWd34Rr327Zzx3dmo70AcS4h0b99vQjEpUzm6ASqUw==", "dependencies": { - "ansi-html-community": "^0.0.8", - "common-path-prefix": "^3.0.0", - "core-js-pure": "^3.23.3", - "error-stack-parser": "^2.0.6", - "find-up": "^5.0.0", - "html-entities": "^2.1.0", - "loader-utils": "^2.0.4", - "schema-utils": "^3.0.0", - "source-map": "^0.7.3" + "@babel/runtime": "^7.22.15", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react": "^18.2.0" }, "engines": { - "node": ">= 10.13" + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" }, "peerDependencies": { - "@types/webpack": "4.x || 5.x", - "react-refresh": ">=0.10.0 <1.0.0", - "sockjs-client": "^1.4.0", - "type-fest": ">=0.17.0 <5.0.0", - "webpack": ">=4.43.0 <6.0.0", - "webpack-dev-server": "3.x || 4.x", - "webpack-hot-middleware": "2.x", - "webpack-plugin-serve": "0.x || 1.x" + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { - "@types/webpack": { + "@emotion/react": { "optional": true }, - "sockjs-client": { - "optional": true - }, - "type-fest": { + "@emotion/styled": { "optional": true - }, - "webpack-dev-server": { + } + } + }, + "node_modules/@mui/system": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.9.tgz", + "integrity": "sha512-Z00Wj590QXk5+SIxmxayBo7SWrao+y433LKGChneJxO4QcT/caSCeEWtyeoLs1Q8ys0zOzl2kkKee6n8TaKzhQ==", + "dependencies": { + "@babel/runtime": "^7.22.15", + "@mui/private-theming": "^5.14.9", + "@mui/styled-engine": "^5.14.9", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.9", + "clsx": "^2.0.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.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 }, - "webpack-hot-middleware": { + "@emotion/styled": { "optional": true }, - "webpack-plugin-serve": { + "@types/react": { "optional": true } } }, - "node_modules/@remix-run/router": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz", - "integrity": "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==", - "engines": { - "node": ">=14.0.0" + "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/@rollup/plugin-babel": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", - "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "node_modules/@mui/utils": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.9.tgz", + "integrity": "sha512-9ysB5e+RwS7ofn0n3nwAg1/3c81vBTmSvauD3EuK9LmqMzhmF//BFDaC44U4yITvB/0m1kWyDqg924Ll3VHCcg==", "dependencies": { - "@babel/helper-module-imports": "^7.10.4", - "@rollup/pluginutils": "^3.1.0" + "@babel/runtime": "^7.22.15", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" }, "engines": { - "node": ">= 10.0.0" + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" }, "peerDependencies": { - "@babel/core": "^7.0.0", - "@types/babel__core": "^7.1.9", - "rollup": "^1.20.0||^2.0.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": { - "@types/babel__core": { + "@types/react": { + "optional": true + } + } + }, + "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/@mui/x-data-grid": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@mui/x-data-grid/-/x-data-grid-6.14.0.tgz", + "integrity": "sha512-EMkPT0YQsjqfH8f/UpPscpPFlywWuyrkS6aaB90t821Z6khoheFS1XeKbCa3L6byC/fwt1cAmIljlh8xJxIueg==", + "dependencies": { + "@babel/runtime": "^7.22.15", + "@mui/utils": "^5.14.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1", + "reselect": "^4.1.8" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@mui/material": "^5.4.1", + "@mui/system": "^5.4.1", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + } + }, + "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", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@nivo/annotations": { + "version": "0.83.0", + "resolved": "https://registry.npmjs.org/@nivo/annotations/-/annotations-0.83.0.tgz", + "integrity": "sha512-FkfCprk1a3WCCNcQOfI2+Ww7vqTP/nJjQDVhFYf1YAaEGwXi4+OO4uJAtKtNcGE5cJWdOp+f0Gt4aNPGx7RtEw==", + "dependencies": { + "@nivo/colors": "0.83.0", + "@nivo/core": "0.83.0", + "@react-spring/web": "9.4.5 || ^9.7.2", + "@types/prop-types": "^15.7.2", + "lodash": "^4.17.21", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/arcs": { + "version": "0.83.0", + "resolved": "https://registry.npmjs.org/@nivo/arcs/-/arcs-0.83.0.tgz", + "integrity": "sha512-UcbNbtp28lbI5V/Sm6TIgYzZmtuhSxW3eTma+YBsgXi1AN/THSwEg0gSV8owyDT/8kaL+jcBQ6c54gzSLClhkw==", + "dependencies": { + "@nivo/colors": "0.83.0", + "@nivo/core": "0.83.0", + "@react-spring/web": "9.4.5 || ^9.7.2", + "@types/d3-shape": "^2.0.0", + "d3-shape": "^1.3.5" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/arcs/node_modules/@types/d3-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-2.0.2.tgz", + "integrity": "sha512-3YHpvDw9LzONaJzejXLOwZ3LqwwkoXb9LI2YN7Hbd6pkGo5nIlJ09ul4bQhBN4hQZJKmUpX8HkVqbzgUKY48cg==" + }, + "node_modules/@nivo/arcs/node_modules/@types/d3-shape": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-2.1.3.tgz", + "integrity": "sha512-HAhCel3wP93kh4/rq+7atLdybcESZ5bRHDEZUojClyZWsRuEMo3A52NGYJSh48SxfxEU6RZIVbZL2YFZ2OAlzQ==", + "dependencies": { + "@types/d3-path": "^2" + } + }, + "node_modules/@nivo/arcs/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "node_modules/@nivo/arcs/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/@nivo/axes": { + "version": "0.83.0", + "resolved": "https://registry.npmjs.org/@nivo/axes/-/axes-0.83.0.tgz", + "integrity": "sha512-rHMl+DdXQlY2wl7VCSQNcJi4QNISUWOkcWzJeJeVaYR73Z13SVGgiC7kW0czJuogDTSnDAJ/EcFCGmyGVuznGQ==", + "dependencies": { + "@nivo/core": "0.83.0", + "@nivo/scales": "0.83.0", + "@react-spring/web": "9.4.5 || ^9.7.2", + "@types/d3-format": "^1.4.1", + "@types/d3-time-format": "^2.3.1", + "@types/prop-types": "^15.7.2", + "d3-format": "^1.4.4", + "d3-time-format": "^3.0.0", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/axes/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/@nivo/axes/node_modules/d3-format": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", + "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==" + }, + "node_modules/@nivo/axes/node_modules/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "dependencies": { + "d3-array": "2" + } + }, + "node_modules/@nivo/axes/node_modules/d3-time-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", + "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "dependencies": { + "d3-time": "1 - 2" + } + }, + "node_modules/@nivo/axes/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "node_modules/@nivo/bar": { + "version": "0.83.0", + "resolved": "https://registry.npmjs.org/@nivo/bar/-/bar-0.83.0.tgz", + "integrity": "sha512-QXN6BcT1PiT/YViyoDU4G5mytbOUP1jYbuQmJhDDxKPMLNcZ/pHfThedRGVfDoD1poHBRJtV6mbgeCpAVmlTtw==", + "dependencies": { + "@nivo/annotations": "0.83.0", + "@nivo/axes": "0.83.0", + "@nivo/colors": "0.83.0", + "@nivo/core": "0.83.0", + "@nivo/legends": "0.83.0", + "@nivo/scales": "0.83.0", + "@nivo/tooltip": "0.83.0", + "@react-spring/web": "9.4.5 || ^9.7.2", + "@types/d3-scale": "^3.2.3", + "@types/d3-shape": "^2.0.0", + "d3-scale": "^3.2.3", + "d3-shape": "^1.3.5", + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/bar/node_modules/@types/d3-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-2.0.2.tgz", + "integrity": "sha512-3YHpvDw9LzONaJzejXLOwZ3LqwwkoXb9LI2YN7Hbd6pkGo5nIlJ09ul4bQhBN4hQZJKmUpX8HkVqbzgUKY48cg==" + }, + "node_modules/@nivo/bar/node_modules/@types/d3-scale": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-3.3.2.tgz", + "integrity": "sha512-gGqr7x1ost9px3FvIfUMi5XA/F/yAf4UkUDtdQhpH92XCT0Oa7zkkRzY61gPVJq+DxpHn/btouw5ohWkbBsCzQ==", + "dependencies": { + "@types/d3-time": "^2" + } + }, + "node_modules/@nivo/bar/node_modules/@types/d3-shape": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-2.1.3.tgz", + "integrity": "sha512-HAhCel3wP93kh4/rq+7atLdybcESZ5bRHDEZUojClyZWsRuEMo3A52NGYJSh48SxfxEU6RZIVbZL2YFZ2OAlzQ==", + "dependencies": { + "@types/d3-path": "^2" + } + }, + "node_modules/@nivo/bar/node_modules/@types/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-9MVYlmIgmRR31C5b4FVSWtuMmBHh2mOWQYfl7XAYOa8dsnb7iEmUmRSWSFgXFtkjxO65d7hTUHQC+RhR/9IWFg==" + }, + "node_modules/@nivo/bar/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/@nivo/bar/node_modules/d3-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", + "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + }, + "node_modules/@nivo/bar/node_modules/d3-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", + "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + }, + "node_modules/@nivo/bar/node_modules/d3-interpolate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", + "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "dependencies": { + "d3-color": "1 - 2" + } + }, + "node_modules/@nivo/bar/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "node_modules/@nivo/bar/node_modules/d3-scale": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", + "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "dependencies": { + "d3-array": "^2.3.0", + "d3-format": "1 - 2", + "d3-interpolate": "1.2.0 - 2", + "d3-time": "^2.1.1", + "d3-time-format": "2 - 3" + } + }, + "node_modules/@nivo/bar/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/@nivo/bar/node_modules/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "dependencies": { + "d3-array": "2" + } + }, + "node_modules/@nivo/bar/node_modules/d3-time-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", + "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "dependencies": { + "d3-time": "1 - 2" + } + }, + "node_modules/@nivo/bar/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "node_modules/@nivo/colors": { + "version": "0.83.0", + "resolved": "https://registry.npmjs.org/@nivo/colors/-/colors-0.83.0.tgz", + "integrity": "sha512-n34LWYtE2hbd1fdCDP7TCHNZdbiO1PwcvXLo0VsKK5lNPY/FA5SXA7Z9Ubl/ChSwBwbzAsaAhjTy8KzKzSjDcA==", + "dependencies": { + "@nivo/core": "0.83.0", + "@types/d3-color": "^2.0.0", + "@types/d3-scale": "^3.2.3", + "@types/d3-scale-chromatic": "^2.0.0", + "@types/prop-types": "^15.7.2", + "d3-color": "^3.1.0", + "d3-scale": "^3.2.3", + "d3-scale-chromatic": "^2.0.0", + "lodash": "^4.17.21", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/colors/node_modules/@types/d3-color": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-2.0.3.tgz", + "integrity": "sha512-+0EtEjBfKEDtH9Rk3u3kLOUXM5F+iZK+WvASPb0MhIZl8J8NUvGeZRwKCXl+P3HkYx5TdU4YtcibpqHkSR9n7w==" + }, + "node_modules/@nivo/colors/node_modules/@types/d3-scale": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-3.3.2.tgz", + "integrity": "sha512-gGqr7x1ost9px3FvIfUMi5XA/F/yAf4UkUDtdQhpH92XCT0Oa7zkkRzY61gPVJq+DxpHn/btouw5ohWkbBsCzQ==", + "dependencies": { + "@types/d3-time": "^2" + } + }, + "node_modules/@nivo/colors/node_modules/@types/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-9MVYlmIgmRR31C5b4FVSWtuMmBHh2mOWQYfl7XAYOa8dsnb7iEmUmRSWSFgXFtkjxO65d7hTUHQC+RhR/9IWFg==" + }, + "node_modules/@nivo/colors/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/@nivo/colors/node_modules/d3-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", + "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + }, + "node_modules/@nivo/colors/node_modules/d3-interpolate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", + "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "dependencies": { + "d3-color": "1 - 2" + } + }, + "node_modules/@nivo/colors/node_modules/d3-interpolate/node_modules/d3-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", + "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + }, + "node_modules/@nivo/colors/node_modules/d3-scale": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", + "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "dependencies": { + "d3-array": "^2.3.0", + "d3-format": "1 - 2", + "d3-interpolate": "1.2.0 - 2", + "d3-time": "^2.1.1", + "d3-time-format": "2 - 3" + } + }, + "node_modules/@nivo/colors/node_modules/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "dependencies": { + "d3-array": "2" + } + }, + "node_modules/@nivo/colors/node_modules/d3-time-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", + "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "dependencies": { + "d3-time": "1 - 2" + } + }, + "node_modules/@nivo/colors/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "node_modules/@nivo/core": { + "version": "0.83.0", + "resolved": "https://registry.npmjs.org/@nivo/core/-/core-0.83.0.tgz", + "integrity": "sha512-I9fjZAbIPz41JA2WP8Avsud/xk0iiM1nWUzcvZBDebBGFDB5Y1lrldUt9l5kvOeMth3Qj/1lVFTiJxQuojxH4Q==", + "dependencies": { + "@nivo/recompose": "0.83.0", + "@nivo/tooltip": "0.83.0", + "@react-spring/web": "9.4.5 || ^9.7.2", + "@types/d3-shape": "^2.0.0", + "d3-color": "^3.1.0", + "d3-format": "^1.4.4", + "d3-interpolate": "^2.0.1", + "d3-scale": "^3.2.3", + "d3-scale-chromatic": "^2.0.0", + "d3-shape": "^1.3.5", + "d3-time-format": "^3.0.0", + "lodash": "^4.17.21" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nivo/donate" + }, + "peerDependencies": { + "prop-types": ">= 15.5.10 < 16.0.0", + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/core/node_modules/@types/d3-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-2.0.2.tgz", + "integrity": "sha512-3YHpvDw9LzONaJzejXLOwZ3LqwwkoXb9LI2YN7Hbd6pkGo5nIlJ09ul4bQhBN4hQZJKmUpX8HkVqbzgUKY48cg==" + }, + "node_modules/@nivo/core/node_modules/@types/d3-shape": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-2.1.3.tgz", + "integrity": "sha512-HAhCel3wP93kh4/rq+7atLdybcESZ5bRHDEZUojClyZWsRuEMo3A52NGYJSh48SxfxEU6RZIVbZL2YFZ2OAlzQ==", + "dependencies": { + "@types/d3-path": "^2" + } + }, + "node_modules/@nivo/core/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/@nivo/core/node_modules/d3-format": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", + "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==" + }, + "node_modules/@nivo/core/node_modules/d3-interpolate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", + "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "dependencies": { + "d3-color": "1 - 2" + } + }, + "node_modules/@nivo/core/node_modules/d3-interpolate/node_modules/d3-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", + "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + }, + "node_modules/@nivo/core/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "node_modules/@nivo/core/node_modules/d3-scale": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", + "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "dependencies": { + "d3-array": "^2.3.0", + "d3-format": "1 - 2", + "d3-interpolate": "1.2.0 - 2", + "d3-time": "^2.1.1", + "d3-time-format": "2 - 3" + } + }, + "node_modules/@nivo/core/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/@nivo/core/node_modules/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "dependencies": { + "d3-array": "2" + } + }, + "node_modules/@nivo/core/node_modules/d3-time-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", + "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "dependencies": { + "d3-time": "1 - 2" + } + }, + "node_modules/@nivo/core/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "node_modules/@nivo/geo": { + "version": "0.83.0", + "resolved": "https://registry.npmjs.org/@nivo/geo/-/geo-0.83.0.tgz", + "integrity": "sha512-Jl9EdhwYVGGmZynCTsvrAeANqKdZMZz5yeunHjQlG9tfb0k2KTevI9w+rrW0SO6XXIA+p8mCm6laGbIqEr+Ezw==", + "dependencies": { + "@nivo/colors": "0.83.0", + "@nivo/core": "0.83.0", + "@nivo/legends": "0.83.0", + "@nivo/tooltip": "0.83.0", + "d3-format": "^1.4.4", + "d3-geo": "^1.11.3", + "lodash": "^4.17.21", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/geo/node_modules/d3-format": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", + "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==" + }, + "node_modules/@nivo/legends": { + "version": "0.83.0", + "resolved": "https://registry.npmjs.org/@nivo/legends/-/legends-0.83.0.tgz", + "integrity": "sha512-WWl3/hTpFJ7/2L0RG53Gbr9KQk+ZjD71a/RIPMJ5ArEvAvKKfWuWQCtEm3FpqAazX8eYMnsQ3Pi17c8ohEIXRg==", + "dependencies": { + "@nivo/colors": "0.83.0", + "@nivo/core": "0.83.0", + "@types/d3-scale": "^3.2.3", + "@types/prop-types": "^15.7.2", + "d3-scale": "^3.2.3", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/legends/node_modules/@types/d3-scale": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-3.3.2.tgz", + "integrity": "sha512-gGqr7x1ost9px3FvIfUMi5XA/F/yAf4UkUDtdQhpH92XCT0Oa7zkkRzY61gPVJq+DxpHn/btouw5ohWkbBsCzQ==", + "dependencies": { + "@types/d3-time": "^2" + } + }, + "node_modules/@nivo/legends/node_modules/@types/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-9MVYlmIgmRR31C5b4FVSWtuMmBHh2mOWQYfl7XAYOa8dsnb7iEmUmRSWSFgXFtkjxO65d7hTUHQC+RhR/9IWFg==" + }, + "node_modules/@nivo/legends/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/@nivo/legends/node_modules/d3-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", + "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + }, + "node_modules/@nivo/legends/node_modules/d3-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", + "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + }, + "node_modules/@nivo/legends/node_modules/d3-interpolate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", + "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "dependencies": { + "d3-color": "1 - 2" + } + }, + "node_modules/@nivo/legends/node_modules/d3-scale": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", + "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "dependencies": { + "d3-array": "^2.3.0", + "d3-format": "1 - 2", + "d3-interpolate": "1.2.0 - 2", + "d3-time": "^2.1.1", + "d3-time-format": "2 - 3" + } + }, + "node_modules/@nivo/legends/node_modules/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "dependencies": { + "d3-array": "2" + } + }, + "node_modules/@nivo/legends/node_modules/d3-time-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", + "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "dependencies": { + "d3-time": "1 - 2" + } + }, + "node_modules/@nivo/legends/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "node_modules/@nivo/line": { + "version": "0.83.0", + "resolved": "https://registry.npmjs.org/@nivo/line/-/line-0.83.0.tgz", + "integrity": "sha512-tF/HcUM7dRf+0uk4E0Ywg7nMYD7NsmF03tp5nIbBSB35PRFoVnczxlzHWw2qoRYwUhCFy2gL6Dyf/6kTHXnIdA==", + "dependencies": { + "@nivo/annotations": "0.83.0", + "@nivo/axes": "0.83.0", + "@nivo/colors": "0.83.0", + "@nivo/core": "0.83.0", + "@nivo/legends": "0.83.0", + "@nivo/scales": "0.83.0", + "@nivo/tooltip": "0.83.0", + "@nivo/voronoi": "0.83.0", + "@react-spring/web": "9.4.5 || ^9.7.2", + "d3-shape": "^1.3.5", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/line/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "node_modules/@nivo/line/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/@nivo/pie": { + "version": "0.83.0", + "resolved": "https://registry.npmjs.org/@nivo/pie/-/pie-0.83.0.tgz", + "integrity": "sha512-98j/h4T/QmQ10gFh1cMh6uLfcGurFcYZN97Lu3ig3D9bbsLuLgpUED/d5O+8w7qLJtnlg3zptqy+N9UgRAqbOg==", + "dependencies": { + "@nivo/arcs": "0.83.0", + "@nivo/colors": "0.83.0", + "@nivo/core": "0.83.0", + "@nivo/legends": "0.83.0", + "@nivo/tooltip": "0.83.0", + "@types/d3-shape": "^2.0.0", + "d3-shape": "^1.3.5" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/pie/node_modules/@types/d3-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-2.0.2.tgz", + "integrity": "sha512-3YHpvDw9LzONaJzejXLOwZ3LqwwkoXb9LI2YN7Hbd6pkGo5nIlJ09ul4bQhBN4hQZJKmUpX8HkVqbzgUKY48cg==" + }, + "node_modules/@nivo/pie/node_modules/@types/d3-shape": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-2.1.3.tgz", + "integrity": "sha512-HAhCel3wP93kh4/rq+7atLdybcESZ5bRHDEZUojClyZWsRuEMo3A52NGYJSh48SxfxEU6RZIVbZL2YFZ2OAlzQ==", + "dependencies": { + "@types/d3-path": "^2" + } + }, + "node_modules/@nivo/pie/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "node_modules/@nivo/pie/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/@nivo/recompose": { + "version": "0.83.0", + "resolved": "https://registry.npmjs.org/@nivo/recompose/-/recompose-0.83.0.tgz", + "integrity": "sha512-3cLEoi9ZoE4LTn6B98oUVd0MRAy5bWK7W3yb0u4EkjLoXXCRvUAI08Wr2AAagOzVOg5PmvghIDgvkz1tlFZTGQ==", + "dependencies": { + "@types/prop-types": "^15.7.2", + "@types/react-lifecycles-compat": "^3.0.1", + "prop-types": "^15.7.2", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/scales": { + "version": "0.83.0", + "resolved": "https://registry.npmjs.org/@nivo/scales/-/scales-0.83.0.tgz", + "integrity": "sha512-DZn5IcMJErCURDuQPmYltu6GTPphTDVLMvbeN/Id/VSVbD1uYKvdXPKUNOe/N2IvnE8wjjCPv88DLcRhw6VTVg==", + "dependencies": { + "@types/d3-scale": "^3.2.3", + "@types/d3-time": "^1.1.1", + "@types/d3-time-format": "^3.0.0", + "d3-scale": "^3.2.3", + "d3-time": "^1.0.11", + "d3-time-format": "^3.0.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@nivo/scales/node_modules/@types/d3-scale": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-3.3.2.tgz", + "integrity": "sha512-gGqr7x1ost9px3FvIfUMi5XA/F/yAf4UkUDtdQhpH92XCT0Oa7zkkRzY61gPVJq+DxpHn/btouw5ohWkbBsCzQ==", + "dependencies": { + "@types/d3-time": "^2" + } + }, + "node_modules/@nivo/scales/node_modules/@types/d3-scale/node_modules/@types/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-9MVYlmIgmRR31C5b4FVSWtuMmBHh2mOWQYfl7XAYOa8dsnb7iEmUmRSWSFgXFtkjxO65d7hTUHQC+RhR/9IWFg==" + }, + "node_modules/@nivo/scales/node_modules/@types/d3-time": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-1.1.1.tgz", + "integrity": "sha512-ULX7LoqXTCYtM+tLYOaeAJK7IwCT+4Gxlm2MaH0ErKLi07R5lh8NHCAyWcDkCCmx1AfRcBEV6H9QE9R25uP7jw==" + }, + "node_modules/@nivo/scales/node_modules/@types/d3-time-format": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-3.0.1.tgz", + "integrity": "sha512-5GIimz5IqaRsdnxs4YlyTZPwAMfALu/wA4jqSiuqgdbCxUZ2WjrnwANqOtoBJQgeaUTdYNfALJO0Yb0YrDqduA==" + }, + "node_modules/@nivo/scales/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/@nivo/scales/node_modules/d3-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", + "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + }, + "node_modules/@nivo/scales/node_modules/d3-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", + "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + }, + "node_modules/@nivo/scales/node_modules/d3-interpolate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", + "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "dependencies": { + "d3-color": "1 - 2" + } + }, + "node_modules/@nivo/scales/node_modules/d3-scale": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", + "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "dependencies": { + "d3-array": "^2.3.0", + "d3-format": "1 - 2", + "d3-interpolate": "1.2.0 - 2", + "d3-time": "^2.1.1", + "d3-time-format": "2 - 3" + } + }, + "node_modules/@nivo/scales/node_modules/d3-scale/node_modules/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "dependencies": { + "d3-array": "2" + } + }, + "node_modules/@nivo/scales/node_modules/d3-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", + "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==" + }, + "node_modules/@nivo/scales/node_modules/d3-time-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", + "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "dependencies": { + "d3-time": "1 - 2" + } + }, + "node_modules/@nivo/scales/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "node_modules/@nivo/tooltip": { + "version": "0.83.0", + "resolved": "https://registry.npmjs.org/@nivo/tooltip/-/tooltip-0.83.0.tgz", + "integrity": "sha512-HewujRqZNmcVnAv/LPLVyYwViad+rYTsFMdzLRzuTPq2hju1R+cfxokTomunG8e1SDtUPtULEVXtPg2ATIzNYg==", + "dependencies": { + "@nivo/core": "0.83.0", + "@react-spring/web": "9.4.5 || ^9.7.2" + } + }, + "node_modules/@nivo/voronoi": { + "version": "0.83.0", + "resolved": "https://registry.npmjs.org/@nivo/voronoi/-/voronoi-0.83.0.tgz", + "integrity": "sha512-wVpskesX2IEJHG82v0rbIUZ2y3MpvzTYM+DQl2gx8K1/Hucxwzk5ltg/aF9e/gfKU8gt24uct3M9TQTEfyhzgg==", + "dependencies": { + "@nivo/core": "0.83.0", + "@types/d3-delaunay": "^5.3.0", + "@types/d3-scale": "^3.2.3", + "d3-delaunay": "^5.3.0", + "d3-scale": "^3.2.3" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/voronoi/node_modules/@types/d3-scale": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-3.3.2.tgz", + "integrity": "sha512-gGqr7x1ost9px3FvIfUMi5XA/F/yAf4UkUDtdQhpH92XCT0Oa7zkkRzY61gPVJq+DxpHn/btouw5ohWkbBsCzQ==", + "dependencies": { + "@types/d3-time": "^2" + } + }, + "node_modules/@nivo/voronoi/node_modules/@types/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-9MVYlmIgmRR31C5b4FVSWtuMmBHh2mOWQYfl7XAYOa8dsnb7iEmUmRSWSFgXFtkjxO65d7hTUHQC+RhR/9IWFg==" + }, + "node_modules/@nivo/voronoi/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/@nivo/voronoi/node_modules/d3-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", + "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + }, + "node_modules/@nivo/voronoi/node_modules/d3-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", + "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" + }, + "node_modules/@nivo/voronoi/node_modules/d3-interpolate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", + "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "dependencies": { + "d3-color": "1 - 2" + } + }, + "node_modules/@nivo/voronoi/node_modules/d3-scale": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", + "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", + "dependencies": { + "d3-array": "^2.3.0", + "d3-format": "1 - 2", + "d3-interpolate": "1.2.0 - 2", + "d3-time": "^2.1.1", + "d3-time-format": "2 - 3" + } + }, + "node_modules/@nivo/voronoi/node_modules/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "dependencies": { + "d3-array": "2" + } + }, + "node_modules/@nivo/voronoi/node_modules/d3-time-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", + "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "dependencies": { + "d3-time": "1 - 2" + } + }, + "node_modules/@nivo/voronoi/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "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==", + "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==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", + "integrity": "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==", + "dependencies": { + "ansi-html-community": "^0.0.8", + "common-path-prefix": "^3.0.0", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "find-up": "^5.0.0", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.4", + "schema-utils": "^3.0.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "@types/webpack": "4.x || 5.x", + "react-refresh": ">=0.10.0 <1.0.0", + "sockjs-client": "^1.4.0", + "type-fest": ">=0.17.0 <5.0.0", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x || 4.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } + } + }, + "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/@react-spring/animated": { + "version": "9.7.3", + "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.3.tgz", + "integrity": "sha512-5CWeNJt9pNgyvuSzQH+uy2pvTg8Y4/OisoscZIR8/ZNLIOI+CatFBhGZpDGTF/OzdNFsAoGk3wiUYTwoJ0YIvw==", + "dependencies": { + "@react-spring/shared": "~9.7.3", + "@react-spring/types": "~9.7.3" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/core": { + "version": "9.7.3", + "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.3.tgz", + "integrity": "sha512-IqFdPVf3ZOC1Cx7+M0cXf4odNLxDC+n7IN3MDcVCTIOSBfqEcBebSv+vlY5AhM0zw05PDbjKrNmBpzv/AqpjnQ==", + "dependencies": { + "@react-spring/animated": "~9.7.3", + "@react-spring/shared": "~9.7.3", + "@react-spring/types": "~9.7.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-spring/donate" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/shared": { + "version": "9.7.3", + "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.3.tgz", + "integrity": "sha512-NEopD+9S5xYyQ0pGtioacLhL2luflh6HACSSDUZOwLHoxA5eku1UPuqcJqjwSD6luKjjLfiLOspxo43FUHKKSA==", + "dependencies": { + "@react-spring/types": "~9.7.3" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/types": { + "version": "9.7.3", + "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.3.tgz", + "integrity": "sha512-Kpx/fQ/ZFX31OtlqVEFfgaD1ACzul4NksrvIgYfIFq9JpDHFwQkMVZ10tbo0FU/grje4rcL4EIrjekl3kYwgWw==" + }, + "node_modules/@react-spring/web": { + "version": "9.7.3", + "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.7.3.tgz", + "integrity": "sha512-BXt6BpS9aJL/QdVqEIX9YoUy8CE6TJrU0mNCqSoxdXlIeNcEBWOfIyE6B14ENNsyQKS3wOWkiJfco0tCr/9tUg==", + "dependencies": { + "@react-spring/animated": "~9.7.3", + "@react-spring/core": "~9.7.3", + "@react-spring/shared": "~9.7.3", + "@react-spring/types": "~9.7.3" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@remix-run/router": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz", + "integrity": "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==", + "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", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { "optional": true } } @@ -3964,10 +5366,84 @@ "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz", "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==", "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.7.tgz", + "integrity": "sha512-4/Q0FckQ8TBjsB0VdGFemJOG8BLXUB2KKlL0VmZ+eOYeOnTb/wDRQqYWpBmQ6IlvWkXwkYiot+n9Px2aTJ7zGQ==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==" + }, + "node_modules/@types/d3-delaunay": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-5.3.1.tgz", + "integrity": "sha512-F6itHi2DxdatHil1rJ2yEFUNhejj8+0Acd55LZ6Ggwbdoks0+DxVY2cawNj16sjCBiWvubVlh6eBMVsYRNGLew==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz", + "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==" + }, + "node_modules/@types/d3-format": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-1.4.2.tgz", + "integrity": "sha512-WeGCHAs7PHdZYq6lwl/+jsl+Nfc1J2W1kNcMeIMYzQsT6mtBDBgtJ/rcdjZ0k0rVIvqEZqhhuD5TK/v3P2gFHQ==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz", + "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.4.tgz", + "integrity": "sha512-eq1ZeTj0yr72L8MQk6N6heP603ubnywSDRfNpi5enouR112HzGLS6RIvExCzZTraFF4HdzNpJMwA/zGiMoHUUw==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-2.0.1.tgz", + "integrity": "sha512-3EuZlbPu+pvclZcb1DhlymTWT2W+lYsRKBjvkH2ojDbCWDYavifqu1vYX9WGzlPgCgcS4Alhk1+zapXbGEGylQ==" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.2.tgz", + "integrity": "sha512-NN4CXr3qeOUNyK5WasVUV8NCSAx/CRVcwcb0BuuS1PiTqwIm6ABi1SyasLZ/vsVCFDArF+W4QiGzSry1eKYQ7w==", + "dependencies": { + "@types/d3-path": "*" } }, + "node_modules/@types/d3-time": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==" + }, + "node_modules/@types/d3-time-format": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-2.3.1.tgz", + "integrity": "sha512-fck0Z9RGfIQn3GJIEKVrp15h9m6Vlg0d5XXeiE/6+CQiBmMDZxfR21XtjEPuDeg7gC3bBM0SdieA5XF3GW1wKA==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz", + "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==" + }, "node_modules/@types/eslint": { "version": "8.44.2", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", @@ -4166,6 +5642,22 @@ "@types/react": "*" } }, + "node_modules/@types/react-lifecycles-compat": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/react-lifecycles-compat/-/react-lifecycles-compat-3.0.1.tgz", + "integrity": "sha512-4KiU5s1Go4xRbf7t6VxUUpBeN5PGjpjpBv9VvET4uiPHC500VNYBclU13f8ehHkHoZL39b2cfwHu6RzbV3b44A==", + "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", @@ -5115,6 +6607,19 @@ "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", @@ -5745,6 +7250,11 @@ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" }, + "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/clean-css": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", @@ -5774,6 +7284,14 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -6330,6 +7848,11 @@ "node": ">=0.10.0" } }, + "node_modules/css-unit-converter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", + "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==" + }, "node_modules/css-what": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", @@ -6507,6 +8030,159 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", + "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", + "dependencies": { + "delaunator": "4" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz", + "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==", + "dependencies": { + "d3-array": "1" + } + }, + "node_modules/d3-geo/node_modules/d3-array": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-2.0.0.tgz", + "integrity": "sha512-LLqy7dJSL8yDy7NRmf6xSlsFZ6zYvJ4BcWFE4zBrOPnQERv9zj24ohnXKRbyi9YHnYV+HN1oEO3iFK971/gkzA==", + "dependencies": { + "d3-color": "1 - 2", + "d3-interpolate": "1 - 2" + } + }, + "node_modules/d3-scale-chromatic/node_modules/d3-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", + "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + }, + "node_modules/d3-scale-chromatic/node_modules/d3-interpolate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", + "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "dependencies": { + "d3-color": "1 - 2" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, "node_modules/daisyui": { "version": "3.7.5", "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-3.7.5.tgz", @@ -6566,6 +8242,11 @@ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -6660,6 +8341,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delaunator": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", + "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -6804,6 +8490,14 @@ "utila": "~0.4" } }, + "node_modules/dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "dependencies": { + "@babel/runtime": "^7.1.2" + } + }, "node_modules/dom-serializer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", @@ -7898,6 +9592,14 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "node_modules/fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/fast-glob": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", @@ -8089,6 +9791,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", @@ -8254,6 +9961,37 @@ "node": ">= 6" } }, + "node_modules/formik": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/formik/-/formik-2.4.4.tgz", + "integrity": "sha512-MV99upag7fCC3JfsI60WcxhymwNZnJUcMcnGuoz6mDf78SUfBbKjmfcA9LzHx4lEmjzmOflhP7oqz+ZQv5eStg==", + "funding": [ + { + "type": "individual", + "url": "https://opencollective.com/formik" + } + ], + "dependencies": { + "deepmerge": "^2.1.1", + "hoist-non-react-statics": "^3.3.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "react-fast-compare": "^2.0.1", + "tiny-warning": "^1.0.2", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/formik/node_modules/deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -8655,6 +10393,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", @@ -9035,6 +10786,14 @@ "node": ">= 0.4" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, "node_modules/ipaddr.js": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", @@ -11747,6 +13506,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -14014,6 +15778,11 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/property-expr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", + "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==" + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -14247,11 +16016,48 @@ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" }, + "node_modules/react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "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-pro-sidebar": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/react-pro-sidebar/-/react-pro-sidebar-0.7.1.tgz", + "integrity": "sha512-Iy1X8ce4t5Vqz4CsyzjwokGUE3/IObgmYzS0ins7/2eWKle0SMUPaWdgMKFIVjtVrMr5vmjPbRicq8FxnVaf8A==", + "dependencies": { + "@popperjs/core": "^2.4.0", + "classnames": "^2.2.6", + "react-slidedown": "^2.4.5", + "resize-observer-polyfill": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/react-pro-sidebar/node_modules/react-slidedown": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/react-slidedown/-/react-slidedown-2.4.7.tgz", + "integrity": "sha512-HGDfrqo70r1WVE0DwrySPdCT27/2wcZaJYh5kOnmuPSCtjDDJrNkDdn4Ep/cma2VVfwupeAGhbc2pbrGThU6VQ==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.3.0 || 17", + "react-dom": "^16.3.0 || 17" + } + }, "node_modules/react-refresh": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", @@ -14260,6 +16066,18 @@ "node": ">=0.10.0" } }, + "node_modules/react-resize-detector": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-8.1.0.tgz", + "integrity": "sha512-S7szxlaIuiy5UqLhLL1KY3aoyGHbZzsTpYal9eYMwCyKqoqoVLCmIgAgNyIM1FhnP2KyBygASJxdhejrzjMb+w==", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-router": { "version": "6.16.0", "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.16.0.tgz", @@ -14362,6 +16180,35 @@ } } }, + "node_modules/react-smooth": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-2.0.4.tgz", + "integrity": "sha512-OkFsrrMBTvQUwEJthE1KXSOj79z57yvEWeFefeXPib+RmQEI9B1Ub1PgzlzzUyBOvl/TjXt5nF2hmD4NsgAh8A==", + "dependencies": { + "fast-equals": "^5.0.0", + "react-transition-group": "2.9.0" + }, + "peerDependencies": { + "prop-types": "^15.6.0", + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "dependencies": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0", + "react-dom": ">=15.0.0" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -14394,6 +16241,43 @@ "node": ">=8.10.0" } }, + "node_modules/recharts": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.8.0.tgz", + "integrity": "sha512-nciXqQDh3aW8abhwUlA4EBOBusRHLNiKHfpRZiG/yjups1x+auHb2zWPuEcTn/IMiN47vVMMuF8Sr+vcQJtsmw==", + "dependencies": { + "classnames": "^2.2.5", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.19", + "react-is": "^16.10.2", + "react-resize-detector": "^8.0.4", + "react-smooth": "^2.0.2", + "recharts-scale": "^0.4.4", + "reduce-css-calc": "^2.1.8", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "prop-types": "^15.6.0", + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, + "node_modules/recharts/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/recursive-readdir": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", @@ -14417,6 +16301,20 @@ "node": ">=8" } }, + "node_modules/reduce-css-calc": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz", + "integrity": "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==", + "dependencies": { + "css-unit-converter": "^1.1.1", + "postcss-value-parser": "^3.3.0" + } + }, + "node_modules/reduce-css-calc/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, "node_modules/reflect.getprototypeof": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", @@ -14562,6 +16460,16 @@ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, + "node_modules/reselect": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", + "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==" + }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, "node_modules/resolve": { "version": "1.22.6", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", @@ -15609,6 +17517,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.34.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", @@ -16042,6 +17955,16 @@ "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" }, + "node_modules/tiny-case": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", + "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -16074,6 +17997,11 @@ "node": ">=0.6" } }, + "node_modules/toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" + }, "node_modules/tough-cookie": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", @@ -16283,16 +18211,16 @@ } }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=14.17" + "node": ">=4.2.0" } }, "node_modules/unbox-primitive": { @@ -16498,6 +18426,27 @@ "node": ">= 0.8" } }, + "node_modules/victory-vendor": { + "version": "36.6.11", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.6.11.tgz", + "integrity": "sha512-nT8kCiJp8dQh8g991J/R5w5eE2KnO8EAIP0xocWlh9l2okngMWglOPoMZzJvek8Q1KUc4XE/mJxTZnvOB1sTYg==", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, "node_modules/w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -17436,6 +19385,28 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/yup": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/yup/-/yup-1.2.0.tgz", + "integrity": "sha512-PPqYKSAXjpRCgLgLKVGPA33v5c/WgEx3wi6NFjIiegz90zSwyMpvTFp/uGcVnnbx6to28pgnzp/q8ih3QRjLMQ==", + "dependencies": { + "property-expr": "^2.0.5", + "tiny-case": "^1.0.3", + "toposort": "^2.0.2", + "type-fest": "^2.19.0" + } + }, + "node_modules/yup/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/frontend/package.json b/frontend/package.json index cf7f38e2..bc76ce96 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -3,15 +3,29 @@ "version": "0.1.0", "private": true, "dependencies": { + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", + "@mui/icons-material": "^5.14.9", + "@mui/material": "^5.14.9", + "@mui/x-data-grid": "^6.14.0", + "@nivo/bar": "^0.83.0", + "@nivo/core": "^0.83.0", + "@nivo/geo": "^0.83.0", + "@nivo/line": "^0.83.0", + "@nivo/pie": "^0.83.0", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", "axios": "^1.5.0", + "formik": "^2.4.4", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "^6.15.0", + "react-pro-sidebar": "^0.7.1", + "react-router-dom": "^6.16.0", "react-scripts": "5.0.1", - "web-vitals": "^2.1.4" + "recharts": "^2.8.0", + "web-vitals": "^2.1.4", + "yup": "^1.2.0" }, "scripts": { "start": "react-scripts start", diff --git a/frontend/public/static/favicon.ico b/frontend/public/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..64d788c0a8b54f3a597fab0e05e50c6d54368ec0 GIT binary patch literal 27453 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 KO|DMHJp6wdEqQ7H literal 0 HcmV?d00001 diff --git a/frontend/public/static/sre_bot_logo.png b/frontend/public/static/sre_bot_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..117b224e8d5336e7fc2963c19f2146a67f0c1a33 GIT binary patch literal 24693 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 - -
+ + // Get the current theme and color mode + const [theme, colorMode] = useMode(); + + // Set the initial state of the Sidemenu + const [isSidemenu, setIsSidemenu] = useState(true); + + /** + * Custom hook to get user data from the server. + * @returns {boolean} Whether the user is authenticated or not. + */ + const useUserData = () => { + const [userData, setUserData] = useState(null); + + useEffect(() => { + // Make a GET request to the "/user" endpoint + fetch('/user') + .then(response => { + // Check if the response status code is OK (200) + if (!response.ok) { + throw new Error('Network response was not ok'); + } + // Parse the JSON response + return response.json(); + }) + .then(data => { + // Handle the JSON data from the response + setUserData(data); + }) + .catch(error => { + console.error('There was a problem with the fetch operation:', error); + }); + }, []); + + // if the user is not logged in, then return false. Otherwise, return true + if (userData && userData.error === "Not logged in") { + return false; + } + return true; + }; + + // Check if the user is authenticated + const isAuthenticated = useUserData(); - sre_bot -
+ // Render the application. If the user is authenticated, show the Sidemenu, Topmenu and menu items. + // Otherwise (ie user is not logged in), show the landing page where an user can log in. + return ( - - } /> - } /> - - -
-
- - ); -} - -export default App; + + {isAuthenticated ? ( + <> + + + +
+ +
+ + +
+
+
+ + } /> + + + +
+ +
+ + +
+
+
+ } /> + + + +
+ +
+ + +
+
+
+ } /> + + + +
+ +
+ + +
+
+
+ } /> + + + +
+ +
+ + +
+
+
+ } /> + + + +
+ +
+ + +
+
+
+ } /> + } /> + + ) : ( + } /> + )} +
+ + ); + } + + + export default App; diff --git a/frontend/src/App.test.js b/frontend/src/App.test.js deleted file mode 100644 index 1f03afee..00000000 --- a/frontend/src/App.test.js +++ /dev/null @@ -1,8 +0,0 @@ -import { render, screen } from '@testing-library/react'; -import App from './App'; - -test('renders learn react link', () => { - render(); - const linkElement = screen.getByText(/learn react/i); - expect(linkElement).toBeInTheDocument(); -}); diff --git a/frontend/src/components/Header.jsx b/frontend/src/components/Header.jsx new file mode 100644 index 00000000..0fb9cf54 --- /dev/null +++ b/frontend/src/components/Header.jsx @@ -0,0 +1,24 @@ +import { Typography, Box, useTheme } from "@mui/material"; +import { tokens } from "../theme"; + +const Header = ({ title, subtitle }) => { + const theme = useTheme(); + const colors = tokens(theme.palette.mode); + return ( + + + {title} + + + {subtitle} + + + ); +}; + +export default Header; \ No newline at end of file diff --git a/frontend/src/index.css b/frontend/src/index.css index 17df0e7e..a2092998 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -2,16 +2,40 @@ @tailwind components; @tailwind utilities; -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; +/* @import url('https://fonts.googleapis.com/css2?family=Source+Serif+4:opsz,wght@8..60,400;8..60,600;8..60,700&display=swap'); */ +@import url('https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&family=Source+Serif+4:opsz,wght@8..60,400;8..60,600;8..60,700&display=swap'); + +html, +body, +#root, +.app, +.content { + height: 100%; + width: 100%; + /* font-family: 'Source Serif 4', sans-serif; */ + font-family: 'Lato', sans-serif; +} + +.app { + display: flex; + position: relative; +} + +::-webkit-scrollbar { + width: 10px; +} + +/* Track */ +::-webkit-scrollbar-track { + background: #e0e0e0; } -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; + +/* Handle */ +::-webkit-scrollbar-thumb { + background: #888; } +/* Handle on hover */ +::-webkit-scrollbar-thumb:hover { + background: #555; +} \ No newline at end of file diff --git a/frontend/src/index.js b/frontend/src/index.js index d563c0fb..20bcb858 100644 --- a/frontend/src/index.js +++ b/frontend/src/index.js @@ -1,17 +1,16 @@ +/** + * Entry point of the React application. + * Renders the component inside the root element of the HTML document. + */ import React from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; import App from './App'; -import reportWebVitals from './reportWebVitals'; + const root = ReactDOM.createRoot(document.getElementById('root')); root.render( -); - -// If you want to start measuring performance in your app, pass a function -// to log results (for example: reportWebVitals(console.log)) -// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals -reportWebVitals(); +); \ No newline at end of file diff --git a/frontend/src/pages/LandingPage.js b/frontend/src/pages/LandingPage.js index b9fcb53f..8959c6b6 100644 --- a/frontend/src/pages/LandingPage.js +++ b/frontend/src/pages/LandingPage.js @@ -1,13 +1,24 @@ import React, {} from 'react'; +import sre_bot_logo from '../sre_bot_logo.png'; + +// Landing page. This is the initial screen that the user sees when they visit the site, prompting them to log in. +// You can login with a google account tied only to the organization export default function LoginPage() { + // Google login function to handling logging in. const googleLogin = () => { var login_url = "/login" console.log("login_url", login_url) window.location.href = login_url } return ( +
+ +
+ + sre_bot +

Welcome!

@@ -17,5 +28,8 @@ export default function LoginPage() {
- ); +
+
+
+); } diff --git a/frontend/src/reportWebVitals.js b/frontend/src/reportWebVitals.js deleted file mode 100644 index 5253d3ad..00000000 --- a/frontend/src/reportWebVitals.js +++ /dev/null @@ -1,13 +0,0 @@ -const reportWebVitals = onPerfEntry => { - if (onPerfEntry && onPerfEntry instanceof Function) { - import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { - getCLS(onPerfEntry); - getFID(onPerfEntry); - getFCP(onPerfEntry); - getLCP(onPerfEntry); - getTTFB(onPerfEntry); - }); - } -}; - -export default reportWebVitals; diff --git a/frontend/src/scenes/dashboard/index.jsx b/frontend/src/scenes/dashboard/index.jsx new file mode 100644 index 00000000..e0c9c975 --- /dev/null +++ b/frontend/src/scenes/dashboard/index.jsx @@ -0,0 +1,15 @@ +import Header from "../../components/Header"; +import { Box } from "@mui/material"; + + +// Return dashboard component. Right now it just displays the title and subtitle. +const Dashboard = () => { + return ( + + +
+ + + ); + } +export default Dashboard; \ No newline at end of file diff --git a/frontend/src/scenes/faq/index.jsx b/frontend/src/scenes/faq/index.jsx new file mode 100644 index 00000000..ca2e61a7 --- /dev/null +++ b/frontend/src/scenes/faq/index.jsx @@ -0,0 +1,14 @@ +import { Box } from "@mui/material"; +import Header from "../../components/Header"; + + +const Faq = () => { + return ( + + +
+ + +)}; + +export default Faq; \ No newline at end of file diff --git a/frontend/src/scenes/geolocate/index.jsx b/frontend/src/scenes/geolocate/index.jsx new file mode 100644 index 00000000..5835a9e9 --- /dev/null +++ b/frontend/src/scenes/geolocate/index.jsx @@ -0,0 +1,14 @@ +import { Box } from "@mui/material"; +import Header from "../../components/Header"; + +// Return a geolocate component. Right now it just displays the title and subtitle. +const Geolocate = () => { + return ( + + +
+ + +)}; + +export default Geolocate; \ No newline at end of file diff --git a/frontend/src/scenes/global/Sidemenu.jsx b/frontend/src/scenes/global/Sidemenu.jsx new file mode 100644 index 00000000..da0b281b --- /dev/null +++ b/frontend/src/scenes/global/Sidemenu.jsx @@ -0,0 +1,204 @@ +import React, {useEffect, useState} from 'react'; +import {ProSidebar, Menu, MenuItem} from "react-pro-sidebar"; +import "react-pro-sidebar/dist/css/styles.css"; +import {Box, IconButton, useTheme, Typography} from "@mui/material"; +import { Link } from "react-router-dom"; +import { tokens } from "../../theme"; +import HomeOutlinedIcon from "@mui/icons-material/HomeOutlined"; +import MenuOutlinedIcon from "@mui/icons-material/MenuOutlined"; +import AccessAlarmsIcon from '@mui/icons-material/AccessAlarms'; +import HistoryIcon from '@mui/icons-material/History'; +import WebhookIcon from '@mui/icons-material/Webhook'; +import LocationSearchingIcon from '@mui/icons-material/LocationSearching'; +import InfoIcon from '@mui/icons-material/Info'; +import LogoutIcon from '@mui/icons-material/Logout'; + +// Menu item component +const Item = ({ title, to, icon, selected, setSelected }) => { + const theme = useTheme(); + const colors = tokens(theme.palette.mode); + return ( + setSelected(title)} + icon={icon} + > + {title} + + + ); + }; + +// Sidemenu component to display the Sidemenu in a scene +const Sidemenu = () => { + const theme = useTheme(); + const colors = tokens(theme.palette.mode); + const [isCollapsed, setIsCollapsed] = useState(false); + const [selected, setSelected] = useState("Dashboard"); + + // Get the user data to see who is the logged in user + const useUserData = () => { + const [userData, setUserData] = useState(null); + + useEffect(() => { + // Make a GET request to the "/user" endpoint + fetch('/user') + .then(response => { + // Check if the response status code is OK (200) + if (!response.ok) { + throw new Error('Network response was not ok'); + } + // Parse the JSON response + return response.json(); + }) + .then(data => { + // Handle the JSON data from the response + setUserData(data); + }) + .catch(error => { + console.error('There was a problem with the fetch operation:', error); + }); + }, []); + + return userData; + }; + + // call the useUserData function to get the user data + const userData = useUserData(); + + return ( + // setup the links behaviour and colors + + + + {/* Set the up the logo and Menu items. In particular, flush out the behaviour of the Menu when it is collapsed or expanded. */} + setIsCollapsed(!isCollapsed)} + icon={isCollapsed ? : undefined} + style={{ + margin: "10px 0 20px 0", + color: colors.grey[100], + }} + > + {!isCollapsed && ( + + + SRE Bot + + setIsCollapsed(!isCollapsed)}> + + + + )} + + + {/* If the menu is not collapsed, setup the logo and first name of the logged in user */} + {!isCollapsed && ( + + + sre-bot-user + + + + Hello {userData && userData.name}! + + + + )} + + {/* Setup the menu items and the links to the different pages. */} + + } + selected={selected} + setSelected={setSelected} + /> + } + selected={selected} + setSelected={setSelected} + /> + } + selected={selected} + setSelected={setSelected} + /> + } + selected={selected} + setSelected={setSelected} + /> + } + selected={selected} + setSelected={setSelected} + /> + } + selected={selected} + setSelected={setSelected} + /> + } + selected={selected} + setSelected={setSelected} + /> + + + + + ); + }; + + export default Sidemenu; \ No newline at end of file diff --git a/frontend/src/scenes/global/Topmenu.jsx b/frontend/src/scenes/global/Topmenu.jsx new file mode 100644 index 00000000..92c1e54f --- /dev/null +++ b/frontend/src/scenes/global/Topmenu.jsx @@ -0,0 +1,49 @@ +import {Box, IconButton, useTheme} from "@mui/material"; +import { useContext } from "react"; +import { ColorModeContext, tokens } from "../../theme"; +import InputBase from "@mui/material/InputBase"; +import LightModeOutlinedIcon from "@mui/icons-material/LightModeOutlined"; +import DarkModeOutlinedIcon from "@mui/icons-material/DarkModeOutlined"; +import PersonOutlinedIcon from "@mui/icons-material/PersonOutlined"; +import SearchIcon from "@mui/icons-material/Search"; + + + +const Topmenu= () => { + //allows us to toggle different states for the theme and colors + const theme = useTheme(); + const colors = tokens(theme.palette.mode); + const colorMode = useContext(ColorModeContext); + + return ( + + {/* Setup the search bar and icons here */} + + + + + + + + {/* Setup dark and light mode. When you click on the icon, it will toggle the theme and the pallete mode (ie dark or light) */} + + + {theme.palette.mode === "dark" ? ( + + ) : ( + + )} + + + + + + + ); + }; + + export default Topmenu; \ No newline at end of file diff --git a/frontend/src/scenes/incident/index.jsx b/frontend/src/scenes/incident/index.jsx new file mode 100644 index 00000000..cd241bc5 --- /dev/null +++ b/frontend/src/scenes/incident/index.jsx @@ -0,0 +1,15 @@ +import { Box } from "@mui/material"; +import Header from "../../components/Header"; + + +// Return a Incident component. Right now it just displays the title and subtitle. +const Incident= () => { + return ( + + +
+ + +)}; + +export default Incident; \ No newline at end of file diff --git a/frontend/src/scenes/incident_history/index.jsx b/frontend/src/scenes/incident_history/index.jsx new file mode 100644 index 00000000..cb532403 --- /dev/null +++ b/frontend/src/scenes/incident_history/index.jsx @@ -0,0 +1,14 @@ +import { Box } from "@mui/material"; +import Header from "../../components/Header"; + + +const IncidentHistory= () => { + return ( + + +
+ + +)}; + +export default IncidentHistory; \ No newline at end of file diff --git a/frontend/src/scenes/webhooks/index.jsx b/frontend/src/scenes/webhooks/index.jsx new file mode 100644 index 00000000..b62a2060 --- /dev/null +++ b/frontend/src/scenes/webhooks/index.jsx @@ -0,0 +1,14 @@ +import { Box } from "@mui/material"; +import Header from "../../components/Header"; + +// Setup the webhooks component. Right now it just displays the title and subtitle. +const Webhooks= () => { + return ( + + +
+ + +)}; + +export default Webhooks; \ No newline at end of file diff --git a/frontend/src/setupTests.js b/frontend/src/setupTests.js deleted file mode 100644 index 8f2609b7..00000000 --- a/frontend/src/setupTests.js +++ /dev/null @@ -1,5 +0,0 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom'; diff --git a/frontend/src/static/sre_bot_logo.png b/frontend/src/static/sre_bot_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..117b224e8d5336e7fc2963c19f2146a67f0c1a33 GIT binary patch literal 24693 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 ({ + ...(mode === "dark" + ? { + grey: { + 100: "#e0e0e0", + 200: "#c2c2c2", + 300: "#a3a3a3", + 400: "#858585", + 500: "#666666", + 600: "#525252", + 700: "#3d3d3d", + 800: "#292929", + 900: "#141414", + }, + primary: { + 100: "#d0d1d5", + 200: "#a1a4ab", + 300: "#727681", + 400: "#1F2A40", + 500: "#141b2d", + 600: "#101624", + 700: "#0c101b", + 800: "#080b12", + 900: "#040509", + }, + greenAccent: { + 100: "#dbf5ee", + 200: "#b7ebde", + 300: "#94e2cd", + 400: "#70d8bd", + 500: "#4cceac", + 600: "#3da58a", + 700: "#2e7c67", + 800: "#1e5245", + 900: "#0f2922", + }, + redAccent: { + 100: "#f8dcdb", + 200: "#f1b9b7", + 300: "#e99592", + 400: "#e2726e", + 500: "#db4f4a", + 600: "#af3f3b", + 700: "#832f2c", + 800: "#58201e", + 900: "#2c100f", + }, + blueAccent: { + 100: "#e1e2fe", + 200: "#c3c6fd", + 300: "#a4a9fc", + 400: "#868dfb", + 500: "#6870fa", + 600: "#535ac8", + 700: "#3e4396", + 800: "#2a2d64", + 900: "#151632", + }, + } + : { + grey: { + 100: "#141414", + 200: "#292929", + 300: "#3d3d3d", + 400: "#525252", + 500: "#666666", + 600: "#858585", + 700: "#a3a3a3", + 800: "#c2c2c2", + 900: "#e0e0e0", + }, + primary: { + 100: "#040509", + 200: "#080b12", + 300: "#0c101b", + 400: "#f2f0f0", + 500: "#141b2d", + 600: "#1F2A40", + 700: "#727681", + 800: "#a1a4ab", + 900: "#d0d1d5", + }, + greenAccent: { + 100: "#0f2922", + 200: "#1e5245", + 300: "#2e7c67", + 400: "#3da58a", + 500: "#4cceac", + 600: "#70d8bd", + 700: "#94e2cd", + 800: "#b7ebde", + 900: "#dbf5ee", + }, + redAccent: { + 100: "#2c100f", + 200: "#58201e", + 300: "#832f2c", + 400: "#af3f3b", + 500: "#db4f4a", + 600: "#e2726e", + 700: "#e99592", + 800: "#f1b9b7", + 900: "#f8dcdb", + }, + blueAccent: { + 100: "#151632", + 200: "#2a2d64", + 300: "#3e4396", + 400: "#535ac8", + 500: "#6870fa", + 600: "#868dfb", + 700: "#a4a9fc", + 800: "#c3c6fd", + 900: "#e1e2fe", + }, + }), + }); + + //material ui theme settings + // Return the colors scheme/objects based on the mode (dark/light) + export const themeSettings = (mode) => { + const colors = tokens(mode); + + return { + palette: { + mode: mode, + // official setup for dark mode + ...(mode === "dark" + ? { + primary: + { + main: colors.primary[500], + }, + secondary: + { + main: colors.greenAccent[500], + }, + neutral: + { + dark: colors.grey[800], + main: colors.grey[500], + light: colors.grey[100], + }, + background: { + default: colors.primary[500], + } + } : { + // palette values for light mode + primary: { + main: colors.primary[100], + }, + secondary: { + main: colors.greenAccent[500], + }, + neutral: { + dark: colors.grey[700], + main: colors.grey[500], + light: colors.grey[100], + }, + background: { + // a little bit of a gray color since white is too bright + default: "#fcfcfc", + }, + }), + }, + // set up the typographty for the headings + typography: { + // join the font names + fontFamily: ["Lato", "sans-serif"].join(","), + fontSize: 12, + h1: { + // h1 font and size configuration + fontFamily: ["Lato", "sans-serif"].join(","), + fontSize: 40, + }, + h2: { + // h2 font and size configuration + fontFamily: ["Lato", "sans-serif"].join(","), + fontSize: 32, + }, + h3: { + // h3 font and size configuration + fontFamily: ["Lato", "sans-serif"].join(","), + fontSize: 24, + }, + h4: { + // h4 font and size configuration + fontFamily: ["Lato", "sans-serif"].join(","), + fontSize: 20, + }, + h5: { + // h5 font and size configuration + fontFamily: ["Lato", "sans-serif"].join(","), + fontSize: 16, + }, + h6: { + // h6 font and size configuration + fontFamily: ["Lato", "sans-serif"].join(","), + fontSize: 14, + }, + }, + }; + }; + + //context for color mode + //function that allows us to color change + export const ColorModeContext = createContext({ toggleColorMode: () => {} }); + + + export const useMode = () => { + // set the initial state of the mode to light + const [mode, setMode] = useState("light"); + + // toggle color mode. If the mode is light, set it to dark and vice versa + const colorMode = useMemo( + () => ({ + // The dark mode switch would invoke this method + toggleColorMode: () => { + // set the mode to the opposite of what it is + setMode((prevMode) => (prevMode === "light" ? "dark" : "light")); + }, + }), + [] + ); + + // create the theme based on the mode + const theme = useMemo(() => createTheme(themeSettings(mode)), [mode]); + //return the theme and colorMode so that we can use it + return [theme, colorMode]; +}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..0cbc82b0 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1651 @@ +{ + "name": "workspace", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", + "@fontsource/roboto": "^5.0.8", + "@mui/icons-material": "^5.14.9", + "@mui/material": "^5.14.9" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.19", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.19.tgz", + "integrity": "sha512-Tinq7ybnEPFFXhlYOYFiSjespWQk0dq2dRNAiMdRTOYQzEGqnnNyrTxPYHP5r6wGjlF1rFgABdDV0g8EwD6Qbg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", + "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.22.19", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz", + "integrity": "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==", + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.19", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "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/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/@floating-ui/core": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.2.tgz", + "integrity": "sha512-olUakR5nr9v2ueVr1yomoJnBTkHGqHzL/iK4AhforiJS/wKJgFphAYpZHZzADLv/zNUFuQwqLH3bcoUhFh2E1Q==", + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "dependencies": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", + "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", + "dependencies": { + "@floating-ui/dom": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.3.tgz", + "integrity": "sha512-uvnFKtPgzLnpzzTRfhDlvXX0kLYi9lDRQbcDmT8iXl71Rx+uwSuaUIQl3DNC7w5OweAQ7XQMDObML+KaYDQfng==" + }, + "node_modules/@fontsource/roboto": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.0.8.tgz", + "integrity": "sha512-XxPltXs5R31D6UZeLIV1td3wTXU3jzd3f2DLsXI8tytMGBkIsGcc9sIyiupRtA8y73HAhuSCeweOoBqf6DbWCA==" + }, + "node_modules/@mui/base": { + "version": "5.0.0-beta.15", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.15.tgz", + "integrity": "sha512-Xtom3YSdi0iwYPtyVRFUEGoRwi6IHWixPwifDKaK+4PkEPtUWMU5YOIJfTsmC59ri+dFvA3oBNSiTPUGGrklZw==", + "dependencies": { + "@babel/runtime": "^7.22.15", + "@floating-ui/react-dom": "^2.0.2", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.9", + "@popperjs/core": "^2.11.8", + "clsx": "^2.0.0", + "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", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.9.tgz", + "integrity": "sha512-JAU/R5hM3l2zP1Q4KnioDRhq5V3vZ4mmjEZ+TwARDb2xFhg3p59McacQuzkSu0sUHJnH9aJos36+hU5sPQBcFQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + } + }, + "node_modules/@mui/icons-material": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.9.tgz", + "integrity": "sha512-xTRQbDsogsJo7tY5Og8R9zbuG2q+KIPVIM6JQoKxtJlz9DPOw1u0T2fGrvwD+XAOVifQf6epNMcGCDLfJAz4Nw==", + "dependencies": { + "@babel/runtime": "^7.22.15" + }, + "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.9", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.9.tgz", + "integrity": "sha512-pbBy5kc5iUGXPxgbb+t+yEPvLK5nE3bPUb8WbAafJ8iZ40ZGui0xC4xiiIyzbVexzsLmyN7MaSo4LkxLmPKqUQ==", + "dependencies": { + "@babel/runtime": "^7.22.15", + "@mui/base": "5.0.0-beta.15", + "@mui/core-downloads-tracker": "^5.14.9", + "@mui/system": "^5.14.9", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.9", + "@types/react-transition-group": "^4.4.6", + "clsx": "^2.0.0", + "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/private-theming": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.9.tgz", + "integrity": "sha512-0PzoUFqFXTXiNchhR7K4b7kZunasPOjx6Qf7AagCmfZDNASHedA0x6evHVhnST918x/AHY9xykYNKfB0Z4xMBg==", + "dependencies": { + "@babel/runtime": "^7.22.15", + "@mui/utils": "^5.14.9", + "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.14.9", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.9.tgz", + "integrity": "sha512-LEQxLrW9oWvea33pge08+oyNeTz704jb6Nhe26xEJKojXWd34Rr327Zzx3dmo70AcS4h0b99vQjEpUzm6ASqUw==", + "dependencies": { + "@babel/runtime": "^7.22.15", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react": "^18.2.0" + }, + "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.9", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.9.tgz", + "integrity": "sha512-Z00Wj590QXk5+SIxmxayBo7SWrao+y433LKGChneJxO4QcT/caSCeEWtyeoLs1Q8ys0zOzl2kkKee6n8TaKzhQ==", + "dependencies": { + "@babel/runtime": "^7.22.15", + "@mui/private-theming": "^5.14.9", + "@mui/styled-engine": "^5.14.9", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.9", + "clsx": "^2.0.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.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.14.9", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.9.tgz", + "integrity": "sha512-9ysB5e+RwS7ofn0n3nwAg1/3c81vBTmSvauD3EuK9LmqMzhmF//BFDaC44U4yITvB/0m1kWyDqg924Ll3VHCcg==", + "dependencies": { + "@babel/runtime": "^7.22.15", + "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/@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/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "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==" + }, + "node_modules/@types/react": { + "version": "18.2.21", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz", + "integrity": "sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "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/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + }, + "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/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "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/chalk/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/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "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/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==" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "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/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "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/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/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "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/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "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/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "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/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/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "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/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react": { + "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==", + "peer": true, + "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==" + }, + "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.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "dependencies": { + "is-core-module": "^2.13.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/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "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/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, + "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==", + "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/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "requires": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + } + }, + "@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" + }, + "@babel/helper-validator-identifier": { + "version": "7.22.19", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.19.tgz", + "integrity": "sha512-Tinq7ybnEPFFXhlYOYFiSjespWQk0dq2dRNAiMdRTOYQzEGqnnNyrTxPYHP5r6wGjlF1rFgABdDV0g8EwD6Qbg==" + }, + "@babel/highlight": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", + "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", + "requires": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@babel/types": { + "version": "7.22.19", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz", + "integrity": "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==", + "requires": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.19", + "to-fast-properties": "^2.0.0" + } + }, + "@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" + } + }, + "@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==" + }, + "@floating-ui/core": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.2.tgz", + "integrity": "sha512-olUakR5nr9v2ueVr1yomoJnBTkHGqHzL/iK4AhforiJS/wKJgFphAYpZHZzADLv/zNUFuQwqLH3bcoUhFh2E1Q==", + "requires": { + "@floating-ui/utils": "^0.1.3" + } + }, + "@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "requires": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "@floating-ui/react-dom": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", + "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", + "requires": { + "@floating-ui/dom": "^1.5.1" + } + }, + "@floating-ui/utils": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.3.tgz", + "integrity": "sha512-uvnFKtPgzLnpzzTRfhDlvXX0kLYi9lDRQbcDmT8iXl71Rx+uwSuaUIQl3DNC7w5OweAQ7XQMDObML+KaYDQfng==" + }, + "@fontsource/roboto": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.0.8.tgz", + "integrity": "sha512-XxPltXs5R31D6UZeLIV1td3wTXU3jzd3f2DLsXI8tytMGBkIsGcc9sIyiupRtA8y73HAhuSCeweOoBqf6DbWCA==" + }, + "@mui/base": { + "version": "5.0.0-beta.15", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.15.tgz", + "integrity": "sha512-Xtom3YSdi0iwYPtyVRFUEGoRwi6IHWixPwifDKaK+4PkEPtUWMU5YOIJfTsmC59ri+dFvA3oBNSiTPUGGrklZw==", + "requires": { + "@babel/runtime": "^7.22.15", + "@floating-ui/react-dom": "^2.0.2", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.9", + "@popperjs/core": "^2.11.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1" + } + }, + "@mui/core-downloads-tracker": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.9.tgz", + "integrity": "sha512-JAU/R5hM3l2zP1Q4KnioDRhq5V3vZ4mmjEZ+TwARDb2xFhg3p59McacQuzkSu0sUHJnH9aJos36+hU5sPQBcFQ==" + }, + "@mui/icons-material": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.9.tgz", + "integrity": "sha512-xTRQbDsogsJo7tY5Og8R9zbuG2q+KIPVIM6JQoKxtJlz9DPOw1u0T2fGrvwD+XAOVifQf6epNMcGCDLfJAz4Nw==", + "requires": { + "@babel/runtime": "^7.22.15" + } + }, + "@mui/material": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.9.tgz", + "integrity": "sha512-pbBy5kc5iUGXPxgbb+t+yEPvLK5nE3bPUb8WbAafJ8iZ40ZGui0xC4xiiIyzbVexzsLmyN7MaSo4LkxLmPKqUQ==", + "requires": { + "@babel/runtime": "^7.22.15", + "@mui/base": "5.0.0-beta.15", + "@mui/core-downloads-tracker": "^5.14.9", + "@mui/system": "^5.14.9", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.9", + "@types/react-transition-group": "^4.4.6", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + } + }, + "@mui/private-theming": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.9.tgz", + "integrity": "sha512-0PzoUFqFXTXiNchhR7K4b7kZunasPOjx6Qf7AagCmfZDNASHedA0x6evHVhnST918x/AHY9xykYNKfB0Z4xMBg==", + "requires": { + "@babel/runtime": "^7.22.15", + "@mui/utils": "^5.14.9", + "prop-types": "^15.8.1" + } + }, + "@mui/styled-engine": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.9.tgz", + "integrity": "sha512-LEQxLrW9oWvea33pge08+oyNeTz704jb6Nhe26xEJKojXWd34Rr327Zzx3dmo70AcS4h0b99vQjEpUzm6ASqUw==", + "requires": { + "@babel/runtime": "^7.22.15", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react": "^18.2.0" + } + }, + "@mui/system": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.9.tgz", + "integrity": "sha512-Z00Wj590QXk5+SIxmxayBo7SWrao+y433LKGChneJxO4QcT/caSCeEWtyeoLs1Q8ys0zOzl2kkKee6n8TaKzhQ==", + "requires": { + "@babel/runtime": "^7.22.15", + "@mui/private-theming": "^5.14.9", + "@mui/styled-engine": "^5.14.9", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.9", + "clsx": "^2.0.0", + "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.14.9", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.9.tgz", + "integrity": "sha512-9ysB5e+RwS7ofn0n3nwAg1/3c81vBTmSvauD3EuK9LmqMzhmF//BFDaC44U4yITvB/0m1kWyDqg924Ll3VHCcg==", + "requires": { + "@babel/runtime": "^7.22.15", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + } + }, + "@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@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==" + }, + "@types/react": { + "version": "18.2.21", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz", + "integrity": "sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==", + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@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/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + }, + "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" + } + }, + "babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "requires": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "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" + }, + "dependencies": { + "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==" + } + } + }, + "clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==" + }, + "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==" + }, + "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==" + }, + "cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "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" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "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==" + }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "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==" + } + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "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==" + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "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" + } + }, + "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==" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "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==" + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "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==" + } + } + }, + "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==", + "peer": true, + "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==" + }, + "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.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + }, + "stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, + "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==" + }, + "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==" + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..26b9f188 --- /dev/null +++ b/package.json @@ -0,0 +1,9 @@ +{ + "dependencies": { + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", + "@fontsource/roboto": "^5.0.8", + "@mui/icons-material": "^5.14.9", + "@mui/material": "^5.14.9" + } +}