diff --git a/package.json b/package.json index dec4325..0a7343f 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "react-helmet-async": "^1.2.3", "react-icons": "^4.3.1", "react-loading-icons": "^1.0.8", + "react-router-dom": "^6.2.2", "react-scripts": "5.0.0", "styled-components": "^5.3.3", "styled-normalize": "^8.0.7", diff --git a/src/components/App/App.tsx b/src/components/App/App.tsx index 268d125..1b28073 100644 --- a/src/components/App/App.tsx +++ b/src/components/App/App.tsx @@ -1,18 +1,34 @@ -import logo from 'assets/logo.svg'; import './App.css'; +import { useLocation, Routes, Route, Navigate } from 'react-router-dom'; +import Layout from 'pages/Layout/Layout'; +import Home from 'pages/Home/Home'; +import Search from 'pages/Search/Search'; +import MyRecipes from 'pages/MyRecipes/MyRecipes'; +import Modal from 'pages/Modal/Modal'; +import PageNotFound from 'pages/PageNotFound/PageNotFound'; export const App = () => { + const location = useLocation(); + const state = location.state as { backgroundLocation?: Location }; + const backgroundLocation = state?.backgroundLocation; + return ( -
-
- logo -

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

- - Learn React - -
-
+ <> + + }> + } /> + } /> + } /> + } /> + } /> + } /> + + + {backgroundLocation && ( + + } /> + + )} + ); }; diff --git a/src/index.tsx b/src/index.tsx index c3a4a35..773aee7 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,5 +1,6 @@ import { StrictMode } from 'react'; import { render } from 'react-dom'; +import { BrowserRouter } from 'react-router-dom'; import { ThemeProvider } from 'styled-components'; import { GlobalStyle } from 'styles/GlobalStyle'; import { defaultTheme } from 'theme/theme'; @@ -10,7 +11,9 @@ render( - + + + , document.getElementById('root'), diff --git a/src/pages/Home/Home.tsx b/src/pages/Home/Home.tsx new file mode 100644 index 0000000..aa58832 --- /dev/null +++ b/src/pages/Home/Home.tsx @@ -0,0 +1,3 @@ +export default function Home() { + return
Home
; +} diff --git a/src/pages/Layout/Layout.tsx b/src/pages/Layout/Layout.tsx new file mode 100644 index 0000000..ed2d0ad --- /dev/null +++ b/src/pages/Layout/Layout.tsx @@ -0,0 +1,9 @@ +import { Outlet } from 'react-router-dom'; + +export default function Layout() { + return ( +
+ +
+ ); +} diff --git a/src/pages/Modal/Modal.tsx b/src/pages/Modal/Modal.tsx new file mode 100644 index 0000000..7ab549c --- /dev/null +++ b/src/pages/Modal/Modal.tsx @@ -0,0 +1,3 @@ +export default function Modal() { + return
Modal
; +} diff --git a/src/pages/MyRecipes/MyRecipes.tsx b/src/pages/MyRecipes/MyRecipes.tsx new file mode 100644 index 0000000..d9e694b --- /dev/null +++ b/src/pages/MyRecipes/MyRecipes.tsx @@ -0,0 +1,3 @@ +export default function MyRecipes() { + return
MyRecipes
; +} diff --git a/src/pages/PageNotFound/PageNotFound.tsx b/src/pages/PageNotFound/PageNotFound.tsx new file mode 100644 index 0000000..432890c --- /dev/null +++ b/src/pages/PageNotFound/PageNotFound.tsx @@ -0,0 +1,3 @@ +export default function PageNotFound() { + return
PageNotFound
; +} diff --git a/src/pages/Search/Search.tsx b/src/pages/Search/Search.tsx new file mode 100644 index 0000000..0d4f3a3 --- /dev/null +++ b/src/pages/Search/Search.tsx @@ -0,0 +1,3 @@ +export default function Search() { + return
Search
; +} diff --git a/yarn.lock b/yarn.lock index 58d3248..b0f85f8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14287,7 +14287,7 @@ 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.0.0: +react-router-dom@^6.0.0, react-router-dom@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.2.2.tgz#f1a2c88365593c76b9612ae80154a13fcb72e442" integrity sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==