diff --git a/README.md b/README.md index 653c9cc..3c2209e 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,35 @@ This project was bootstrapped with [Create React App](https://github.com/faceboo This project use `yarn` +## minicss and mui + +In this project, two styling frameworks have beeen added: + +### mini.css + +See: https://www.npmjs.com/package/mini.css + +Note: there are similar project called: mini-css and minicss + +`yarn add mini.css` + +### Material UI (MUI) + +See: https://mui.com/material-ui/getting-started/installation/ + +`yarn add @mui/material @emotion/react @emotion/styled @mui/icons-material` + +### Use React Router DOM + +Install with typescript: + +`yarn add react-router-dom` +`yarn add --dev @types/react-router-dom` + +for typescript + +--save-dev typescript @types/node @types/react @types/react-dom @types/jest @types/react-router-dom + ## Before you start After cloning this project to your local environment, run install: diff --git a/package.json b/package.json index 4ead2c8..9f7b680 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,10 @@ "version": "0.1.0", "private": true, "dependencies": { + "@emotion/react": "^11.10.5", + "@emotion/styled": "^11.10.5", + "@mui/icons-material": "^5.11.0", + "@mui/material": "^5.11.4", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", @@ -10,10 +14,9 @@ "@types/node": "^16.18.11", "@types/react": "^18.0.26", "@types/react-dom": "^18.0.10", - "mini-css": "^1.0.3", - "mini.css": "^3.0.1", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-router-dom": "^6.6.2", "react-scripts": "5.0.1", "typescript": "^4.9.4", "web-vitals": "^2.1.4" @@ -41,5 +44,8 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "devDependencies": { + "@types/react-router-dom": "^5.3.3" } } diff --git a/public/index.html b/public/index.html index aa069f2..cb8d494 100644 --- a/public/index.html +++ b/public/index.html @@ -24,7 +24,7 @@ work correctly both with client-side routing and a non-root public URL. Learn how to configure a non-root public URL by running `npm run build`. --> - React App + Self-learning Project for ReactJS - Context API (2023) diff --git a/src/App.test.tsx b/src/App.test.tsx deleted file mode 100644 index 2a68616..0000000 --- a/src/App.test.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; -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/src/App.tsx b/src/App.tsx index 1be64a8..8c3bf97 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,53 +1,28 @@ -import React, { Component } from 'react'; -import { AppContext, AppState } from './context/AppContext'; -import { Counter, Hello } from './components/TestA'; -import { CompB, CompC, CompD } from './components/TestB'; +import React from 'react'; +import { Routes, Route } from 'react-router-dom'; + import './App.css'; +// import Layout from './pages/Layout'; +import Home from './pages/Home'; +import Header from './pages/Header'; +import NotFound from './pages/NotFound'; +// import * as try1app from './try1/Try1'; +// const Try1App = try1app.default +import Try1App from './try1/Try1'; +import {Try2App} from './try2/Try2'; - -// const sampleContextProp = { -// name: "Fong", -// value: 123, -// } - -class App extends Component { - - constructor(props: any) { - super(props); - this.state = { - test: { - name: "Fong", - value: 123, - } - }; - } - - update = (appState: any) => { - this.setState(prevState => (appState)) - // let thePrevstate; - // this.setState(prevState => { - // thePrevstate = prevState; - // return appState; - // }); - // return thePrevstate; - }; - - render() { - const { update } = this; - const appState = this.state; - +const App = () => { return ( -
- - - - - - - -
- ); - } -} +
+
+ + } /> + } /> + } /> + }/> + +
+ ) +}; -export default App; +export default App \ No newline at end of file diff --git a/src/components/TestA.tsx b/src/components/TestA.tsx deleted file mode 100644 index 8bd1000..0000000 --- a/src/components/TestA.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import React, { Component } from 'react'; - -type CounterProps = { - header: string; -}; - -type CounterState = { - value: number; -}; - -class Counter extends Component { - // constructor(props: CounterProps) { - // super(props); - // this.state = { - // value: 0, - // } - // } - - state: CounterState = { - value: 0, - }; - - incByOne = ( - event: React.MouseEvent, - ) => { - this.setState(prevState => ({ - value: prevState.value + 1 - })); - } - - render() { - const { header } = this.props; - const { value } = this.state; - - return ( -
-

{header}

-
-
-
Current Value: {value}
-
-
-
-
- ); - } -} - -type HelloProps = { - name: string; -} - -class Hello extends React.Component { - render() { - const { name } = this.props; - return ( -
-

Hello Comp

-

Prop:Name = {name}

-
- ) - } -} - -export { Counter, Hello }; \ No newline at end of file diff --git a/src/components/TestB.tsx b/src/components/TestB.tsx deleted file mode 100644 index d9020b0..0000000 --- a/src/components/TestB.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import React, { Component } from 'react'; -import { AppContext } from '../context/AppContext'; -// import { AppContextType } from '../context/AppContext'; - -// Class Component -class CompB extends Component { - // Set the context - static contextType = AppContext; - context!: React.ContextType; - - setCtxClicked = () => { - const { update } = this.context!; - update({ - test:{ - value: 9, - } - }) - } - - render() { - const { appState } = this.context!; - - console.log("-------PROP----"); - console.log(this.props); - console.log("-------State----"); - console.log(this.state); - // console.log("-------Context----"); - return ( -
-

Component: CompB

-

Ctx:Name = {appState!.test.name}

-

Ctx:Value = {appState!.test.value}

- - -
- ); - } -} - -function Toolbar(props: any) { - // context via Hooks - // Note: 'useContext' should only be used in functional component, not class comp. - const ctx = React.useContext(AppContext); - return ( -
-
Component: ToolBar
-

Prop:pTest = {props.pTest}

-

Ctx:Name = {ctx!.appState!.test.name}

-

Ctx:Value = {ctx!.appState!.test.value}

-
- ); -} - -// Class Component -// context via Consumer -class CompC extends Component { - render() { - return ( - - {value => ( -
-
Component: CompC
-

value:Name = {value!.appState!.test.name}

-

value:Value = {value!.appState!.test.value}

-
- )} -
- - ) - } -} - -// Class Component -// context via Consumer -class CompD extends Component { - context!: React.ContextType; - render() { - return ( -
-
Component: CompD
-

value:Name = {this.context!.appState!.test.name}

-

value:Value = {this.context!.appState!.test.value}

-
- ) - } -} -CompD.contextType = AppContext; - -export { CompB, CompC, CompD }; \ No newline at end of file diff --git a/src/components/Widget.tsx b/src/components/Widget.tsx new file mode 100644 index 0000000..b49f5bd --- /dev/null +++ b/src/components/Widget.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import Card from '@mui/material/Card'; +import CardActions from '@mui/material/CardActions'; +import CardContent from '@mui/material/CardContent'; +import { CardHeader } from '@mui/material'; +import Button from '@mui/material/Button'; + +type WidgetProps = { + headerTitle?: string, + actionBtnTitle?: string, + onActionBtnClicked?: (event: any) => void + children?: React.ReactNode +} + +const Widget: React.FC = (props) => { + const headerTitle = props.headerTitle; + const actionBtnTitle = props.actionBtnTitle; + let hasHeaderTitle = (headerTitle && headerTitle.length > 0); + + return ( + + {hasHeaderTitle && + + } + + {props.children} + + {(props.actionBtnTitle !== undefined) && + + + + } + + ); +} + +// Widget.defaultProps = { +// title: '' +// }; + +export default Widget; diff --git a/src/index.css b/src/index.css index 4598e5f..e69de29 100644 --- a/src/index.css +++ b/src/index.css @@ -1 +0,0 @@ -@import '../node_modules/mini.css/dist/mini-default.min.css'; \ No newline at end of file diff --git a/src/index.tsx b/src/index.tsx index 032464f..1f5b125 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,5 +1,6 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; +import { BrowserRouter } from 'react-router-dom' import './index.css'; import App from './App'; import reportWebVitals from './reportWebVitals'; @@ -8,9 +9,9 @@ const root = ReactDOM.createRoot( document.getElementById('root') as HTMLElement ); root.render( - + - + ); // If you want to start measuring performance in your app, pass a function diff --git a/src/pages/Header.tsx b/src/pages/Header.tsx new file mode 100644 index 0000000..171a954 --- /dev/null +++ b/src/pages/Header.tsx @@ -0,0 +1,55 @@ +import React from 'react'; +import AppBar from '@mui/material/AppBar'; +import Box from '@mui/material/Box'; +import Toolbar from '@mui/material/Toolbar'; +import Typography from '@mui/material/Typography'; +import Button from '@mui/material/Button'; +import IconButton from '@mui/material/IconButton'; +import MenuIcon from '@mui/icons-material/Menu'; +import { Outlet, Link } from "react-router-dom"; + +const mainmenuItems = [ + { text: 'Home', href: '/' }, + { text: 'Try1', href: '/try1' }, + { text: 'Try2', href: '/try2' } +] + +const HeaderAppBar = () => { + return ( + + + + + + + + Self-learning Project + + { + mainmenuItems.map((item, idx) => { + return ( + + + ) + }) + } + + + + ); +} + +export default function Header() { + return ( + <> + + + + ) +}; diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx new file mode 100644 index 0000000..a0e6b0a --- /dev/null +++ b/src/pages/Home.tsx @@ -0,0 +1,11 @@ +// import { Link } from "react-router-dom"; +const Home = () => { + return ( +
+

Welcome to Self-learning Project

+

For ReactJS - Context API (2023)

+
+ ); +}; + +export default Home; \ No newline at end of file diff --git a/src/pages/NotFound.tsx b/src/pages/NotFound.tsx new file mode 100644 index 0000000..ba206dc --- /dev/null +++ b/src/pages/NotFound.tsx @@ -0,0 +1,5 @@ +const NotFound = () => { + return

404 Page Not Found

; +}; + +export default NotFound; \ No newline at end of file diff --git a/src/try1/Try1.css b/src/try1/Try1.css new file mode 100644 index 0000000..e69de29 diff --git a/src/try1/Try1.tsx b/src/try1/Try1.tsx new file mode 100644 index 0000000..f928f3d --- /dev/null +++ b/src/try1/Try1.tsx @@ -0,0 +1,57 @@ +import React, { Component } from 'react'; +import { AppContext, AppState } from './context/AppContext'; +import Counter from './components/Counter'; +import { SlaveConsumer, SlaveContextType } from './components/Slaves'; +import './Try1.css'; +import { Box, Grid } from '@mui/material'; +import Master from './components/Master'; + +class App extends Component { + + constructor(props: any) { + super(props); + this.state = { + test: { + name: "XYZ", + value: 123, + } + }; + } + + update = (appState: any) => { + this.setState(prevState => (appState)) + // let thePrevstate; + // this.setState(prevState => { + // thePrevstate = prevState; + // return appState; + // }); + // return thePrevstate; + }; + + render() { + const { update } = this; + const appState = this.state; + + return ( +
+ + + + + + + + + + + + + + + +
+ ); + } +} + +export default App; diff --git a/src/try1/components/Counter.tsx b/src/try1/components/Counter.tsx new file mode 100644 index 0000000..cc7f2fd --- /dev/null +++ b/src/try1/components/Counter.tsx @@ -0,0 +1,42 @@ +import React, { Component } from 'react'; +import Widget from '../../components/Widget'; + +type CounterProps = { + title: string; +}; + +type CounterState = { + value: number; +}; + +class Counter extends Component { + // constructor(props: CounterProps) { + // super(props); + // this.state = { + // value: 0, + // } + // } + + state: CounterState = { + value: 0, + }; + + incByOne = ( + event: React.MouseEvent, + ) => { + this.setState(prevState => ({ + value: prevState.value + 1 + })); + } + + render() { + const { value } = this.state; + return ( + + Current Value in State: {value} + + ); + } +} + +export default Counter; \ No newline at end of file diff --git a/src/try1/components/Master.tsx b/src/try1/components/Master.tsx new file mode 100644 index 0000000..4a79132 --- /dev/null +++ b/src/try1/components/Master.tsx @@ -0,0 +1,51 @@ +import React, { Component } from 'react'; +import Widget from '../../components/Widget'; +import { AppContext } from '../context/AppContext'; + +const ChildWidget = (props: any) => { + // context via Hooks + // Note: 'useContext' should only be used in functional component, not class comp. + const ctx = React.useContext(AppContext); + return ( + +

Prop:pTest = {props.pTest}

+

Ctx:Name = {ctx!.appState!.test.name}

+

Ctx:Value = {ctx!.appState!.test.value}

+
+ ); +} + +// Class Component +class Master extends Component { + // Set the context + static contextType = AppContext; + context!: React.ContextType; + + setCtxClicked = () => { + const { update } = this.context!; + update({ + test: { + value: 9, + } + }) + } + + render() { + const { appState } = this.context!; + + console.log("-------PROP----"); + console.log(this.props); + console.log("-------State----"); + console.log(this.state); + // console.log("-------Context----"); + return ( + +

Ctx:Name = {appState!.test.name}

+

Ctx:Value = {appState!.test.value}

+ +
+ ); + } +} + +export default Master; \ No newline at end of file diff --git a/src/try1/components/Slaves.tsx b/src/try1/components/Slaves.tsx new file mode 100644 index 0000000..b578920 --- /dev/null +++ b/src/try1/components/Slaves.tsx @@ -0,0 +1,41 @@ +import React, { Component } from 'react'; +import Widget from '../../components/Widget'; +import { AppContext } from '../context/AppContext'; +// import { AppContextType } from '../context/AppContext'; + + +// Class Component +// context via Consumer +class SlaveConsumer extends Component { + render() { + return ( + + {value => ( + +

Ctx:Name = {value!.appState!.test.name}

+

Ctx:Value = {value!.appState!.test.value}

+
+ )} +
+ + ) + } +} + +// Class Component +// context via contextType +class SlaveContextType extends Component { + context!: React.ContextType; + render() { + return ( + +

Ctx:Name = {this.context!.appState!.test.name}

+

Ctx:Value = {this.context!.appState!.test.value}

+
+ ) + } +} +SlaveContextType.contextType = AppContext; + + +export { SlaveConsumer, SlaveContextType }; \ No newline at end of file diff --git a/src/context/AppContext.ts b/src/try1/context/AppContext.ts similarity index 100% rename from src/context/AppContext.ts rename to src/try1/context/AppContext.ts diff --git a/src/try2/Try2.css b/src/try2/Try2.css new file mode 100644 index 0000000..e69de29 diff --git a/src/try2/Try2.tsx b/src/try2/Try2.tsx new file mode 100644 index 0000000..90dc30a --- /dev/null +++ b/src/try2/Try2.tsx @@ -0,0 +1,42 @@ +import React, { createContext, useEffect, useState } from 'react'; +import './Try2.css'; + +import Container from '@mui/material/Container'; +import { Card1 } from './components/Cards'; +import { Box, Button } from '@mui/material'; + +type CardContent = { + content: string +} + +const defaultCardContent = { content: '' }; + +// create context +const SharedCardContext = createContext(defaultCardContent); + +function Try2App() { + // the value that will be given to the context + const [cardContent, setCardContent] = useState(defaultCardContent); + useEffect(() => { + setCardContent({ content: 'David'}); + },[]); + + const handleChangeCtx = () => { + console.log(cardContent) + setCardContent({ content: cardContent.content + ' !'}); + } + + return ( + + + + + + + + + + ); +} + +export { Try2App, SharedCardContext }; diff --git a/src/try2/components/Cards.tsx b/src/try2/components/Cards.tsx new file mode 100644 index 0000000..2bb6bf2 --- /dev/null +++ b/src/try2/components/Cards.tsx @@ -0,0 +1,30 @@ +import React, { useContext } from 'react'; +import { SharedCardContext } from '../Try2'; +import Widget from '../../components/Widget'; + +// Card1 is a functional component and use "useContext" + +type Card1Props = { + title?: string +} + +const Card1: React.FC = (props) => { + + // access the context value + const cardContent = useContext(SharedCardContext); + + return ( + + {cardContent.content} + + + ); +} + +// Card1.defaultProps = { +// title: '' +// }; + + + +export { Card1 }; diff --git a/src/try2/components/fcSample.tsx b/src/try2/components/fcSample.tsx new file mode 100644 index 0000000..d25aa34 --- /dev/null +++ b/src/try2/components/fcSample.tsx @@ -0,0 +1,46 @@ +import React, { useContext } from 'react'; +import Card from '@mui/material/Card'; +import CardActions from '@mui/material/CardActions'; +import CardContent from '@mui/material/CardContent'; +import { CardHeader, Grid } from '@mui/material'; +import Button from '@mui/material/Button'; +import { SharedCardContext } from '../Try2'; + +type Card1Props = { + title?: string +} + +const Card1: React.FC = (props) => { + const headerTitle = props.title; + let hasHeaderTitle = (headerTitle && headerTitle.length > 0); + + // access the context value + const cardContent = useContext(SharedCardContext); + + return ( + + {hasHeaderTitle && + + } + + + + Context Content: + + + {cardContent.content} + + + + + + + + ); +} + +// Card1.defaultProps = { +// title: '' +// }; + +export { Card1 }; diff --git a/yarn.lock b/yarn.lock index 4f2a36b..364746f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -169,7 +169,7 @@ dependencies: "@babel/types" "^7.20.7" -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.18.6": +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== @@ -526,7 +526,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.18.6": +"@babel/plugin-syntax-jsx@^7.17.12", "@babel/plugin-syntax-jsx@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== @@ -1029,7 +1029,7 @@ "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-transform-typescript" "^7.18.6" -"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.20.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.6", "@babel/runtime@^7.20.7", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.7.tgz#fcb41a5a70550e04a7b708037c7c32f7f356d8fd" integrity sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ== @@ -1186,6 +1186,114 @@ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz#1bfafe4b7ed0f3e4105837e056e0a89b108ebe36" integrity sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg== +"@emotion/babel-plugin@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz#65fa6e1790ddc9e23cc22658a4c5dea423c55c3c" + integrity sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/plugin-syntax-jsx" "^7.17.12" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.0" + "@emotion/memoize" "^0.8.0" + "@emotion/serialize" "^1.1.1" + 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.1.3" + +"@emotion/cache@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.5.tgz#c142da9351f94e47527ed458f7bbbbe40bb13c12" + integrity sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA== + dependencies: + "@emotion/memoize" "^0.8.0" + "@emotion/sheet" "^1.2.1" + "@emotion/utils" "^1.2.0" + "@emotion/weak-memoize" "^0.3.0" + stylis "4.1.3" + +"@emotion/hash@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7" + integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== + +"@emotion/is-prop-valid@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" + integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== + dependencies: + "@emotion/memoize" "^0.8.0" + +"@emotion/memoize@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" + integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== + +"@emotion/react@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.5.tgz#95fff612a5de1efa9c0d535384d3cfa115fe175d" + integrity sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.10.5" + "@emotion/cache" "^11.10.5" + "@emotion/serialize" "^1.1.1" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@emotion/utils" "^1.2.0" + "@emotion/weak-memoize" "^0.3.0" + hoist-non-react-statics "^3.3.1" + +"@emotion/serialize@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.1.tgz#0595701b1902feded8a96d293b26be3f5c1a5cf0" + integrity sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA== + dependencies: + "@emotion/hash" "^0.9.0" + "@emotion/memoize" "^0.8.0" + "@emotion/unitless" "^0.8.0" + "@emotion/utils" "^1.2.0" + csstype "^3.0.2" + +"@emotion/sheet@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.1.tgz#0767e0305230e894897cadb6c8df2c51e61a6c2c" + integrity sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA== + +"@emotion/styled@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.5.tgz#1fe7bf941b0909802cb826457e362444e7e96a79" + integrity sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.10.5" + "@emotion/is-prop-valid" "^1.2.0" + "@emotion/serialize" "^1.1.1" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@emotion/utils" "^1.2.0" + +"@emotion/unitless@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" + integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== + +"@emotion/use-insertion-effect-with-fallbacks@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" + integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== + +"@emotion/utils@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561" + integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw== + +"@emotion/weak-memoize@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" + integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== + "@eslint/eslintrc@^1.4.1": version "1.4.1" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" @@ -1525,6 +1633,99 @@ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== +"@mui/base@5.0.0-alpha.113": + version "5.0.0-alpha.113" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.113.tgz#51ab20c3a4cf31db4a5540ecf17d7ea6f73b3001" + integrity sha512-XSjvyQWATM8uk+EJZvYna8D21kOXC42lwb3q4K70btuGieKlCIQLaHTTDV2OfD4+JfT4o3NJy3I4Td2co31RZA== + dependencies: + "@babel/runtime" "^7.20.7" + "@emotion/is-prop-valid" "^1.2.0" + "@mui/types" "^7.2.3" + "@mui/utils" "^5.11.2" + "@popperjs/core" "^2.11.6" + clsx "^1.2.1" + prop-types "^15.8.1" + react-is "^18.2.0" + +"@mui/core-downloads-tracker@^5.11.4": + version "5.11.4" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.11.4.tgz#def5937e21443b197fd1998fd66721bd9c49a1bb" + integrity sha512-jWVwGM3vG4O0sXcW0VcIl+njCWbGCBF5vvjRpuKJajrz51AD7D6+fP1SkInZXVk5pRHf6Bnk/Yj9Of9gXxb/hA== + +"@mui/icons-material@^5.11.0": + version "5.11.0" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.11.0.tgz#9ea6949278b2266d2683866069cd43009eaf6464" + integrity sha512-I2LaOKqO8a0xcLGtIozC9xoXjZAto5G5gh0FYUMAlbsIHNHIjn4Xrw9rvjY20vZonyiGrZNMAlAXYkY6JvhF6A== + dependencies: + "@babel/runtime" "^7.20.6" + +"@mui/material@^5.11.4": + version "5.11.4" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.11.4.tgz#4dda0f993c9aa9678e1b9bce16adfe11e984dbd4" + integrity sha512-ZL/czK9ynrQJ6uyDwQgK+j7m1iKA1XKPON+rEPupwAu/bJ1XJxD+H/H2bkMM8UpOkzaucx/WuMbJJGQ60l7gBg== + dependencies: + "@babel/runtime" "^7.20.7" + "@mui/base" "5.0.0-alpha.113" + "@mui/core-downloads-tracker" "^5.11.4" + "@mui/system" "^5.11.4" + "@mui/types" "^7.2.3" + "@mui/utils" "^5.11.2" + "@types/react-transition-group" "^4.4.5" + clsx "^1.2.1" + csstype "^3.1.1" + prop-types "^15.8.1" + react-is "^18.2.0" + react-transition-group "^4.4.5" + +"@mui/private-theming@^5.11.2": + version "5.11.2" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.11.2.tgz#93eafb317070888a988efa8d6a9ec1f69183a606" + integrity sha512-qZwMaqRFPwlYmqwVKblKBGKtIjJRAj3nsvX93pOmatsXyorW7N/0IPE/swPgz1VwChXhHO75DwBEx8tB+aRMNg== + dependencies: + "@babel/runtime" "^7.20.7" + "@mui/utils" "^5.11.2" + prop-types "^15.8.1" + +"@mui/styled-engine@^5.11.0": + version "5.11.0" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.11.0.tgz#79afb30c612c7807c4b77602cf258526d3997c7b" + integrity sha512-AF06K60Zc58qf0f7X+Y/QjaHaZq16znliLnGc9iVrV/+s8Ln/FCoeNuFvhlCbZZQ5WQcJvcy59zp0nXrklGGPQ== + dependencies: + "@babel/runtime" "^7.20.6" + "@emotion/cache" "^11.10.5" + csstype "^3.1.1" + prop-types "^15.8.1" + +"@mui/system@^5.11.4": + version "5.11.4" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.11.4.tgz#a097d6451e12ac442a92ca6e9717b6b8e68ecd45" + integrity sha512-fE2Ts33V5zh7ouciwXgMm/a6sLvjIj9OMeojuHNYY7BStTxparC/Fp9CNUZNJwt76U6ZJC59aYScFSRQKbW08g== + dependencies: + "@babel/runtime" "^7.20.7" + "@mui/private-theming" "^5.11.2" + "@mui/styled-engine" "^5.11.0" + "@mui/types" "^7.2.3" + "@mui/utils" "^5.11.2" + clsx "^1.2.1" + csstype "^3.1.1" + prop-types "^15.8.1" + +"@mui/types@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.3.tgz#06faae1c0e2f3a31c86af6f28b3a4a42143670b9" + integrity sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw== + +"@mui/utils@^5.11.2": + version "5.11.2" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.11.2.tgz#29764311acb99425159b159b1cb382153ad9be1f" + integrity sha512-AyizuHHlGdAtH5hOOXBW3kriuIwUIKUIgg0P7LzMvzf6jPhoQbENYqY6zJqfoZ7fAWMNNYT8mgN5EftNGzwE2w== + dependencies: + "@babel/runtime" "^7.20.7" + "@types/prop-types" "^15.7.5" + "@types/react-is" "^16.7.1 || ^17.0.0" + prop-types "^15.8.1" + react-is "^18.2.0" + "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" @@ -1568,6 +1769,16 @@ schema-utils "^3.0.0" source-map "^0.7.3" +"@popperjs/core@^2.11.6": + version "2.11.6" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" + integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== + +"@remix-run/router@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.2.1.tgz#812edd4104a15a493dda1ccac0b352270d7a188c" + integrity sha512-XiY0IsyHR+DXYS5vBxpoBe/8veTeoRpMHP+vDosLZxL5bnpetzI0igkxkLZS235ldLzyfkxF+2divEwWHP3vMQ== + "@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" @@ -1922,6 +2133,11 @@ 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" @@ -2004,7 +2220,7 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== -"@types/prop-types@*": +"@types/prop-types@*", "@types/prop-types@^15.7.5": version "15.7.5" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== @@ -2031,6 +2247,37 @@ dependencies: "@types/react" "*" +"@types/react-is@^16.7.1 || ^17.0.0": + version "17.0.3" + resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-17.0.3.tgz#2d855ba575f2fc8d17ef9861f084acc4b90a137a" + integrity sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw== + dependencies: + "@types/react" "*" + +"@types/react-router-dom@^5.3.3": + 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.20" + resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.20.tgz#88eccaa122a82405ef3efbcaaa5dcdd9f021387c" + integrity sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + +"@types/react-transition-group@^4.4.5": + version "4.4.5" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.5.tgz#aae20dcf773c5aa275d5b9f7cdbca638abc5e416" + integrity sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA== + dependencies: + "@types/react" "*" + "@types/react@*", "@types/react@^18.0.26": version "18.0.26" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.26.tgz#8ad59fc01fef8eaf5c74f4ea392621749f0b7917" @@ -3067,6 +3314,11 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +clsx@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -3204,7 +3456,7 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== @@ -3467,7 +3719,7 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" -csstype@^3.0.2: +csstype@^3.0.2, csstype@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== @@ -3687,6 +3939,14 @@ dom-converter@^0.2.0: dependencies: utila "~0.4" +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + dom-serializer@0: version "0.2.2" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" @@ -4428,6 +4688,11 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -4778,6 +5043,13 @@ he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +hoist-non-react-statics@^3.3.1: + 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== + dependencies: + react-is "^16.7.0" + hoopy@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" @@ -6250,16 +6522,6 @@ mini-css-extract-plugin@^2.4.5: dependencies: schema-utils "^4.0.0" -mini-css@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/mini-css/-/mini-css-1.0.3.tgz#b844564896f9cbb71b86c728badad67eacf3dfd2" - integrity sha512-q1RGrhrP6CfVaAic8mmiZ7+sLZjfXoLXIirtrjNZWDCRObgmszvXrWiYVIJfD+kUmDVysWbCzA5+Nd7QMn78Ow== - -mini.css@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/mini.css/-/mini.css-3.0.1.tgz#f6236e99997bbd19484d5655d087ec96b887af68" - integrity sha512-FmuuBL0wuyDO1UA66TkAo8w2RxxuHmNPaUqUHcYlHtM9CJkrscQaNAJ/ParEahYFwtZOSgfEA7flbMoSPkzrPA== - minimalistic-assert@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -7343,7 +7605,7 @@ prompts@^2.0.1, prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.8.1: +prop-types@^15.6.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -7481,7 +7743,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.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== @@ -7491,7 +7753,7 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-is@^18.0.0: +react-is@^18.0.0, react-is@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== @@ -7501,6 +7763,21 @@ 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@^6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.6.2.tgz#bbf1f9b45855b218d22fc2d294b79408a084740a" + integrity sha512-6SCDXxRQqW5af8ImOqKza7icmQ47/EMbz572uFjzvcArg3lZ+04PxSPp8qGs+p2Y+q+b+S/AjXv8m8dyLndIIA== + dependencies: + "@remix-run/router" "1.2.1" + react-router "6.6.2" + +react-router@6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.6.2.tgz#556f7b56cff7fe32c5c02429fef3fcb2ecd08111" + integrity sha512-uJPG55Pek3orClbURDvfljhqFvMgJRo59Pktywkk8hUUkTY2aRfza8Yhl/vZQXs+TNQyr6tu+uqz/fLxPICOGQ== + dependencies: + "@remix-run/router" "1.2.1" + react-scripts@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.1.tgz#6285dbd65a8ba6e49ca8d651ce30645a6d980003" @@ -7556,6 +7833,16 @@ react-scripts@5.0.1: optionalDependencies: fsevents "^2.3.2" +react-transition-group@^4.4.5: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" @@ -8074,6 +8361,11 @@ source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, sourc resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + source-map@^0.7.3: version "0.7.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" @@ -8297,6 +8589,11 @@ stylehacks@^5.1.1: browserslist "^4.21.4" postcss-selector-parser "^6.0.4" +stylis@4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" + integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"