diff --git a/package.json b/package.json index 743a6773eff03e2be5ef503da4d4a1459d37de40..9df453b76c57f3b1887ce2607214fb0826cabb40 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,6 @@ "@types/node": "^18.0.0", "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", - "@types/react-router-dom": "^5.1.8", "@typescript-eslint/eslint-plugin": "^6.1.0", "@typescript-eslint/parser": "^6.1.0", "eslint": "^8.49.0", @@ -61,7 +60,7 @@ "react": "^17.0.2", "react-dom": "^17.0.2", "react-draft-wysiwyg": "^1.15.0", - "react-router-dom": "^5.2.0", + "react-router-dom": "^6.0.0", "react-scripts": "^5.0.1", "react-toastify": "^9.0.0", "sass": "^1.35.2", diff --git a/src/components/Consents/Consents.tsx b/src/components/Consents/Consents.tsx index d404d5c6ce29451424b35c88884a9793d0bb8546..23cee71179f7453373205a13dea6a2984ca0e0bb 100644 --- a/src/components/Consents/Consents.tsx +++ b/src/components/Consents/Consents.tsx @@ -263,7 +263,7 @@ const Consents: React.FC = () => { return ( <> <div className="header"> - <p className="title pageTitle">Gestion des consentements Enedis</p> + <h1 className="title pageTitle">Gestion des consentements Enedis</h1> </div> <div className={styles.content}> <div className={styles.searchField}> diff --git a/src/components/Consents/consents.module.scss b/src/components/Consents/consents.module.scss index 3d40ea62df56e6c19bad85801f4eac5bbe35be8f..6362b64844118a402bde0468a56d88057b847a59 100644 --- a/src/components/Consents/consents.module.scss +++ b/src/components/Consents/consents.module.scss @@ -1,5 +1,4 @@ @import '../../styles/config/colors'; -@import '../../styles/config/layout'; @import '../../styles/config/breakpoints'; @import '../../styles/config/typography'; diff --git a/src/components/Layout/Layout.tsx b/src/components/Layout/Layout.tsx index e33fe680b515fc2e33d7ab7526328effb1c99b67..672c2eaf7e034e6f6d06b8c3279a1455e6e5b099 100644 --- a/src/components/Layout/Layout.tsx +++ b/src/components/Layout/Layout.tsx @@ -1,41 +1,12 @@ -import React, { useEffect, useState } from 'react' -import BottomBar from '../Navigation/BottomBar' -import SideBar from '../Navigation/SideBar' +import React from 'react' +import SideBar from '../SideBar/SideBar' import styles from './layout.module.scss' const Layout: React.FC = ({ children }) => { - const [isMobile, setIsMobile] = useState<boolean>(false) - useEffect(() => { - function handleResize() { - const test: boolean = - /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( - navigator.userAgent - ) || window.innerWidth < 768 - ? true - : false - setIsMobile(test) - } - handleResize() - - window.addEventListener('resize', handleResize) - return () => { - window.removeEventListener('resize', handleResize) - } - }, []) return ( <div className={styles.root}> - {!isMobile ? ( - <div className={styles.menuWrapper}> - <SideBar /> - </div> - ) : ( - <div className={styles.mobileNavWrapper}> - <BottomBar /> - </div> - )} - <div className={styles.wrapper}> - <main>{children}</main> - </div> + <SideBar /> + <main className={styles.wrapper}>{children}</main> </div> ) } diff --git a/src/components/Layout/layout.module.scss b/src/components/Layout/layout.module.scss index c62142238a2faf974cdd9d32f7d9fcaad7784c95..e4a59aad9007b5cf80fbd08be387d040758a0dc1 100644 --- a/src/components/Layout/layout.module.scss +++ b/src/components/Layout/layout.module.scss @@ -1,45 +1,22 @@ -@import '../../styles/config/layout'; @import '../../styles/config/colors'; @import '../../styles/config/breakpoints'; + .root { display: flex; - min-height: 100vh; - box-sizing: border-box; } -.menuWrapper { - position: fixed; - top: 0; - left: 0; - width: $menu-width; - height: 100vh; - z-index: 1501; - @media screen and (max-width: $width-tablet) { - width: 0; - display: none; - } -} -.mobileNavWrapper { - position: fixed; - bottom: 0; - left: 0; - height: $navbar-height; - width: 100%; - z-index: 1500; -} .wrapper { flex: 1; - display: flex; - flex-direction: row; - margin-left: $menu-width; - box-shadow: 0px 5px 5px rgb(0 0 0 / 20%), 0px 3px 14px rgb(0 0 0 / 12%), + box-shadow: + 0px 5px 5px rgb(0 0 0 / 20%), + 0px 3px 14px rgb(0 0 0 / 12%), 0px 8px 10px rgb(0 0 0 / 14%); background: $dark-bg; + overflow-y: scroll; + height: 100vh; + @media screen and (max-width: $width-tablet) { margin-left: 0; - padding-bottom: $navbar-height; - } - main { - width: 100%; + padding-bottom: 5rem; } } diff --git a/src/components/Navigation/BottomBar.tsx b/src/components/Navigation/BottomBar.tsx deleted file mode 100644 index 1b6e39e8e7afe77b334dc189bb56645e61df6ad4..0000000000000000000000000000000000000000 --- a/src/components/Navigation/BottomBar.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import React, { useContext } from 'react' -import { NavLink } from 'react-router-dom' -import { useAuth } from '../../hooks/useAuth' -import { UserContext } from '../../hooks/userContext' -import { routes } from '../Routes/Router' -import './bottombar.scss' - -const BottomBar: React.FC = () => { - const { user } = useContext(UserContext) - const { logoutUser } = useAuth() - - return ( - <div className="navbar"> - <div className="menu-list"> - {user && - routes.map( - route => - (!route.adminOnly || user?.isAdmin) && ( - <NavLink - key={route.label} - to={route.path} - activeClassName="active" - > - {route.label} - </NavLink> - ) - )} - {process.env.NODE_ENV === 'development' && ( - <a href="/doc/" target="_blank"> - Swagger doc - </a> - )} - </div> - {user && ( - <button className="btnValid logButton" onClick={logoutUser}> - Logout - </button> - )} - </div> - ) -} - -export default BottomBar diff --git a/src/components/Navigation/bottombar.scss b/src/components/Navigation/bottombar.scss deleted file mode 100644 index 78f8bc8988fac89c94c76cbae9026bed80928374..0000000000000000000000000000000000000000 --- a/src/components/Navigation/bottombar.scss +++ /dev/null @@ -1,44 +0,0 @@ -@import '../../styles/config/colors'; -.navbar { - height: inherit; - background: radial-gradient( - 74.83% 76.97% at 50% 13.64%, - #343641 0%, - #1b1c22 100% - ); - display: flex; - align-items: center; - justify-content: center; - padding: 0 1rem; - z-index: 1500; - .menu-list { - display: flex; - align-items: center; - justify-content: center; - } - a { - text-decoration: none; - display: flex; - align-items: center; - flex-direction: column; - font-size: 0.9rem; - &:not(:first-of-type) { - margin-left: 2rem; - } - img { - margin-bottom: 0.3rem; - } - } - .active { - color: $gold; - } - .navbar-icon { - width: 1.3rem; - } - .logButton { - width: 100px; - min-width: 0; - margin-left: auto; - margin-top: 0; - } -} diff --git a/src/components/Navigation/sidebar.scss b/src/components/Navigation/sidebar.scss deleted file mode 100644 index e6917fe46f2dcd36c62247699aea73b2f5f75742..0000000000000000000000000000000000000000 --- a/src/components/Navigation/sidebar.scss +++ /dev/null @@ -1,42 +0,0 @@ -@import '../../styles/config/colors'; -@import '../../styles/config/layout'; - -.menu { - display: flex; - flex-direction: column; - height: inherit; - padding: 1.875rem; - box-shadow: 0px 5px 5px rgb(0 0 0 / 20%), 0px 3px 14px rgb(0 0 0 / 12%), - 0px 8px 10px rgb(0 0 0 / 14%); - background-color: $grey-light; - - .logo-container { - display: flex; - } - .logo { - margin: auto; - max-width: 4rem; - } - a { - display: block; - padding: 0.5rem 0; - text-decoration: none; - color: $text-grey; - font-size: 1rem; - - &.active { - color: $gold; - font-weight: 700; - } - - &:hover { - color: $gold; - } - } - .menu-list { - margin-top: 1.5rem; - } - .administration { - margin-top: auto; - } -} diff --git a/src/components/Newsletter/Newsletter.tsx b/src/components/Newsletter/Newsletter.tsx index 2aa75148f9e461a5f5120a02f0de6bb6bf0f1602..8d2fbf56dd7439e2a333b96d39dcee768fc2befc 100644 --- a/src/components/Newsletter/Newsletter.tsx +++ b/src/components/Newsletter/Newsletter.tsx @@ -286,7 +286,7 @@ const Newsletter: React.FC = () => { return ( <> <div className="header"> - <p className="title pageTitle">Édition de la newsletter</p> + <h1 className="title pageTitle">Édition de la newsletter</h1> <DateSelector date={date} setDate={setDate} isEmpty={isEmpty} /> </div> {isLoading && <Loader />} diff --git a/src/components/Newsletter/newsletter.scss b/src/components/Newsletter/newsletter.scss index e2c8832d1fb4a5cd2225123ea730f4d5fc3b96fa..2b44822a80a73aa7c99300973026e99f03c175a9 100644 --- a/src/components/Newsletter/newsletter.scss +++ b/src/components/Newsletter/newsletter.scss @@ -1,5 +1,4 @@ @import '../../styles/config/typography.scss'; -@import '../../styles/config/layout.scss'; @import '../../styles/config/breakpoints'; .header { @@ -10,7 +9,9 @@ #343641 0%, #1b1c22 100% ); - box-shadow: 0px 5px 5px rgb(0 0 0 / 0%), 0px 3px 14px rgb(0 0 0 / 0%), + box-shadow: + 0px 5px 5px rgb(0 0 0 / 0%), + 0px 3px 14px rgb(0 0 0 / 0%), 0px 8px 10px rgb(0 0 0 / 15%); } .content { diff --git a/src/components/Popups/Popups.tsx b/src/components/Popups/Popups.tsx index aa43131ee855fb64f3efde93bdc147c7f2e8679b..f5a8a2ebec3bfeffeb8c51fc9af8191784a3ec02 100644 --- a/src/components/Popups/Popups.tsx +++ b/src/components/Popups/Popups.tsx @@ -227,14 +227,13 @@ const Popups: React.FC = () => { return ( <> <div className="header"> - <p className="title pageTitle">Paramètres de l'appli</p> + <h1 className="title pageTitle">Création de Pop-up</h1> </div> <div className="content popups"> {isLoading && <Loader />} {!isLoading && ( <> - <h1>Création de Pop-up</h1> <div className="partnersInfo"> <h2 className="title">Affichage des pop-up de panne</h2> <div className={customPopup.popupEnabled ? 'disabled' : ''}> diff --git a/src/components/Prices/Prices.tsx b/src/components/Prices/Prices.tsx index 75cadeb53eeea30a23e7d37bdcd682022e0dd857..e8aeaab89dcf6c09c787015f28043a495a720e5d 100644 --- a/src/components/Prices/Prices.tsx +++ b/src/components/Prices/Prices.tsx @@ -9,7 +9,7 @@ const Prices: React.FC = () => { return ( <> <div className="header"> - <p className="title pageTitle">Prix des fluides</p> + <h1 className="title pageTitle">Prix des fluides</h1> </div> <div className="prices"> <PriceSection diff --git a/src/components/Prices/prices.scss b/src/components/Prices/prices.scss index 0f0d367b909bda1b5261d7f54ddf888a5923411a..d4d057641eabeb72e33f4b90ec0bee299b85ee50 100644 --- a/src/components/Prices/prices.scss +++ b/src/components/Prices/prices.scss @@ -1,10 +1,8 @@ @import '../../styles/config/typography.scss'; -@import '../../styles/config/layout.scss'; @import '../../styles/config/breakpoints'; @import '../../styles/config/colors'; .prices { - margin-top: $navigator-height; padding: 1rem; .title { margin: 1rem 0; diff --git a/src/components/Routes/Router.tsx b/src/components/Routes/Router.tsx index 2ed946db654b101d137e1bfa4005e03ea1425029..7a048cc8cc586d3cf48aa40a9a977036d45741c9 100644 --- a/src/components/Routes/Router.tsx +++ b/src/components/Routes/Router.tsx @@ -1,5 +1,5 @@ import React, { useContext } from 'react' -import { Redirect, Route, Switch } from 'react-router-dom' +import { Navigate, Route, Routes } from 'react-router-dom' import { UserContext } from '../../hooks/userContext' import Consents from '../Consents/Consents' import Login from '../Login/Login' @@ -40,24 +40,27 @@ const Router: React.FC = () => { const { user } = useContext(UserContext) return ( - <Switch> + <Routes> {user ? ( <> - <Route exact path={links.newsletter.path} component={Newsletter} /> - <Route exact path={links.prices.path} component={Prices} /> - <Route exact path={links.popups.path} component={Popups} /> + <Route path={links.newsletter.path} element={<Newsletter />} /> + <Route path={links.prices.path} element={<Prices />} /> + <Route path={links.popups.path} element={<Popups />} /> {user.isAdmin && ( - <Route exact path={links.consents.path} component={Consents} /> + <Route path={links.consents.path} element={<Consents />} /> )} - <Redirect path="*" to={links.newsletter.path} /> + <Route + path="*" + element={<Navigate replace to={links.newsletter.path} />} + /> </> ) : ( <> - <Route path="/login" component={Login} /> - <Redirect path="*" to="/login" /> + <Route path="/login" element={<Login />} /> + <Route path="*" element={<Navigate replace to="/login" />} /> </> )} - </Switch> + </Routes> ) } diff --git a/src/components/Navigation/SideBar.tsx b/src/components/SideBar/SideBar.tsx similarity index 84% rename from src/components/Navigation/SideBar.tsx rename to src/components/SideBar/SideBar.tsx index 83b29903b6984e027e381fbb559d0a82a1d23b6e..e55ec3a6dd8adae32e68639335be416507cfba3c 100644 --- a/src/components/Navigation/SideBar.tsx +++ b/src/components/SideBar/SideBar.tsx @@ -11,7 +11,7 @@ const SideBar: React.FC = () => { const { logoutUser } = useAuth() return ( - <nav className={'menu'}> + <nav className="menu"> <div className="logo-container"> <img src={logo} alt="Ecolyo logo" className="logo" /> </div> @@ -23,7 +23,7 @@ const SideBar: React.FC = () => { <NavLink key={route.label} to={route.path} - activeClassName="active" + className={({ isActive }) => (isActive ? 'active' : '')} > {route.label} </NavLink> @@ -35,13 +35,13 @@ const SideBar: React.FC = () => { </a> )} </div> - <div className="administration"> + <div className="bottom"> {user ? ( <button className="btnValid" onClick={logoutUser}> Logout </button> ) : ( - <NavLink to="/login" activeClassName="active"> + <NavLink to="/login" className="active"> Login </NavLink> )} diff --git a/src/components/SideBar/sidebar.scss b/src/components/SideBar/sidebar.scss new file mode 100644 index 0000000000000000000000000000000000000000..80955ed55157d63ed653b9db2a47ae96d96cfaa5 --- /dev/null +++ b/src/components/SideBar/sidebar.scss @@ -0,0 +1,68 @@ +@import '../../styles/config/colors'; +@import '../../styles/config/breakpoints'; + +.menu { + z-index: 1500; + display: flex; + flex-direction: column; + padding: 1.5rem; + gap: 1.5rem; + box-shadow: + 0px 5px 5px rgb(0 0 0 / 20%), + 0px 3px 14px rgb(0 0 0 / 12%), + 0px 8px 10px rgb(0 0 0 / 14%); + background-color: $grey-light; + + @media screen and (max-width: $width-tablet) { + position: fixed; + top: unset; + bottom: 0; + height: auto; + width: 100%; + } + + @media screen and (max-width: $width-tablet) { + flex-direction: row; + align-items: center; + justify-content: space-between; + } + + .logo-container { + display: flex; + .logo { + margin: auto; + max-width: 4rem; + } + + @media screen and (max-width: $width-tablet) { + display: none; + } + } + + .menu-list { + display: flex; + flex-direction: column; + gap: 1rem; + @media screen and (max-width: $width-tablet) { + flex-direction: row; + } + a { + text-decoration: none; + + &.active { + color: $gold; + font-weight: 700; + } + &:hover { + color: $gold; + } + } + } + + .bottom { + margin-top: auto; + button { + margin: 0; + } + } +} diff --git a/src/hooks/useAuth.ts b/src/hooks/useAuth.ts index 5f261372785f50855eaf6735b999520efe54c34a..dd4cc745f85a855a0f2dc2fbe93c0bf93257cb3d 100644 --- a/src/hooks/useAuth.ts +++ b/src/hooks/useAuth.ts @@ -1,18 +1,18 @@ import axios from 'axios' import { useContext, useState } from 'react' -import { useHistory } from 'react-router-dom' +import { useNavigate } from 'react-router-dom' import { links } from '../components/Routes/Router' import { UserContext } from './userContext' interface Auth { loginUser: () => Promise<void> - error: null + error: unknown logoutUser: () => void } export const useAuth = (): Auth => { - const [error, setError] = useState<any>(null) + const navigate = useNavigate() const { setUser } = useContext(UserContext) - const history = useHistory() + const [error, setError] = useState<unknown>(null) //login user const loginUser = async (): Promise<void> => { @@ -39,7 +39,7 @@ export const useAuth = (): Auth => { const { data } = await axios.get(`/api/common/WhoAmI`) if (data && setUser) { setUser(data) - history.push(links.newsletter.path) + navigate(links.newsletter.path) } } catch (e) { setError(e) diff --git a/src/styles/config/_layout.scss b/src/styles/config/_layout.scss deleted file mode 100644 index ea910ee76cb86683e19120a8d0770332157625ed..0000000000000000000000000000000000000000 --- a/src/styles/config/_layout.scss +++ /dev/null @@ -1,4 +0,0 @@ -$menu-width: 11.25rem; -$navbar-height: 3.5rem; -$navigator-height: 8rem; -$small-nav-height: 5.5rem; diff --git a/src/styles/index.scss b/src/styles/index.scss index d847b57488a78145c8da1b58cba349fbd5cbdf15..f3868b9d894b58b5d4a1733054be5befc4658217 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -1,7 +1,6 @@ @import 'config/breakpoints'; @import 'config/colors'; @import 'config/typography'; -@import 'config/layout'; * { margin: 0; diff --git a/yarn.lock b/yarn.lock index 4cf694e54185f413d3bdb162fd4366dc4a0bd948..c71cbde79cfecf000eeebd075b8c7137ea83346a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1182,7 +1182,7 @@ core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": +"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== @@ -1845,6 +1845,11 @@ schema-utils "^3.0.0" source-map "^0.7.3" +"@remix-run/router@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.8.0.tgz#e848d2f669f601544df15ce2a313955e4bf0bafc" + integrity sha512-mrfKqIHnSZRyIzBcanNJmVQELTnX+qagEDlcKO90RgRBVOZGSGvZKeDihTRfWcqoDn5N/NkUcwWTccnpN18Tfg== + "@rollup/plugin-babel@^5.2.0": version "5.3.1" resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" @@ -2164,11 +2169,6 @@ dependencies: "@types/node" "*" -"@types/history@^4.7.11": - version "4.7.11" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" - integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== - "@types/html-minifier-terser@^6.0.0": version "6.1.0" resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" @@ -2287,23 +2287,6 @@ "@types/draft-js" "*" "@types/react" "*" -"@types/react-router-dom@^5.1.8": - version "5.3.3" - resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83" - integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router" "*" - -"@types/react-router@*": - version "5.1.18" - resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.18.tgz#c8851884b60bc23733500d86c1266e1cfbbd9ef3" - integrity sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-transition-group@^4.2.0": version "4.4.5" resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.5.tgz#aae20dcf773c5aa275d5b9f7cdbca638abc5e416" @@ -5458,19 +5441,7 @@ he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -history@^4.9.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" - integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== - dependencies: - "@babel/runtime" "^7.1.2" - loose-envify "^1.2.0" - resolve-pathname "^3.0.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - value-equal "^1.0.1" - -hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.2: +hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -5955,11 +5926,6 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -6853,7 +6819,7 @@ loglevel@^1.4.1: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.0.tgz#e7ec73a57e1e7b419cb6c6ac06bf050b67356114" integrity sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA== -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -6977,14 +6943,6 @@ mimic-fn@^4.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== -mini-create-react-context@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" - integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== - dependencies: - "@babel/runtime" "^7.12.1" - tiny-warning "^1.0.3" - mini-css-extract-plugin@^2.4.5: version "2.6.1" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz#9a1251d15f2035c342d99a468ab9da7a0451b71e" @@ -7464,13 +7422,6 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -8339,7 +8290,7 @@ react-error-overlay@^6.0.11: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== -react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -8359,34 +8310,20 @@ react-refresh@^0.11.0: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== -react-router-dom@^5.2.0: - version "5.3.3" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.3.tgz#8779fc28e6691d07afcaf98406d3812fe6f11199" - integrity sha512-Ov0tGPMBgqmbu5CDmN++tv2HQ9HlWDuWIIqn4b88gjlAN5IHI+4ZUZRcpz9Hl0azFIwihbLDYw1OiHGRo7ZIng== +react-router-dom@^6.0.0: + version "6.15.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.15.0.tgz#6da7db61e56797266fbbef0d5e324d6ac443ee40" + integrity sha512-aR42t0fs7brintwBGAv2+mGlCtgtFQeOzK0BM1/OiqEzRejOZtpMZepvgkscpMUnKb8YO84G7s3LsHnnDNonbQ== dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - loose-envify "^1.3.1" - prop-types "^15.6.2" - react-router "5.3.3" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" + "@remix-run/router" "1.8.0" + react-router "6.15.0" -react-router@5.3.3: - version "5.3.3" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.3.tgz#8e3841f4089e728cf82a429d92cdcaa5e4a3a288" - integrity sha512-mzQGUvS3bM84TnbtMYR8ZjKnuPJ71IjSzR+DE6UkUqvN4czWIqEs17yLL8xkAycv4ev0AiN+IGrWu88vJs/p2w== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - hoist-non-react-statics "^3.1.0" - loose-envify "^1.3.1" - mini-create-react-context "^0.4.0" - path-to-regexp "^1.7.0" - prop-types "^15.6.2" - react-is "^16.6.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" +react-router@6.15.0: + version "6.15.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.15.0.tgz#bf2cb5a4a7ed57f074d4ea88db0d95033f39cac8" + integrity sha512-NIytlzvzLwJkCQj2HLefmeakxxWHWAP+02EGqWEZy+DgfHHKQMUoBBjUQLOtFInBMhWtb3hiUy6MfFgwLjXhqg== + dependencies: + "@remix-run/router" "1.8.0" react-scripts@^5.0.1: version "5.0.1" @@ -8631,11 +8568,6 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-pathname@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" - integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== - resolve-url-loader@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" @@ -9422,12 +9354,7 @@ thunky@^1.0.2: resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -tiny-invariant@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" - integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== - -tiny-warning@^1.0.0, tiny-warning@^1.0.2, tiny-warning@^1.0.3: +tiny-warning@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== @@ -9722,11 +9649,6 @@ v8-to-istanbul@^8.1.0: convert-source-map "^1.6.0" source-map "^0.7.3" -value-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" - integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== - vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"