added router and updated base-layout
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
"bootstrap-icons": "^1.7.2",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-router-dom": "^6.2.1",
|
||||
"react-scripts": "5.0.0",
|
||||
"sass": "^1.49.0",
|
||||
"sass-loader": "^12.4.0",
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<html class="h-100" lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
||||
@@ -26,9 +26,9 @@
|
||||
-->
|
||||
<title>React Base /w Bootstrap</title>
|
||||
</head>
|
||||
<body>
|
||||
<body class="h-100">
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
<div id="root"></div>
|
||||
<div id="root" class="d-flex flex-column h-100"></div>
|
||||
<!--
|
||||
This HTML file is a template.
|
||||
If you open it directly in the browser, you will see an empty page.
|
||||
|
23
src/App.js
23
src/App.js
@@ -1,10 +1,29 @@
|
||||
import './App.css';
|
||||
|
||||
import {BrowserRouter as Router} from "react-router-dom";
|
||||
import {ScrollTopButton} from "./components/ScrollTopButton";
|
||||
|
||||
import {Nav} from "./components/Nav";
|
||||
import {Routing} from "./components/Routing";
|
||||
import {Footer} from "./components/Footer";
|
||||
|
||||
function App() {
|
||||
return (
|
||||
<div className="App">
|
||||
<Router>
|
||||
<header>
|
||||
<Nav/>
|
||||
</header>
|
||||
|
||||
</div>
|
||||
<main className="flex-shrink-0">
|
||||
<Routing/>
|
||||
</main>
|
||||
|
||||
<footer className="footer mt-auto bg-light pt-4 pb-2">
|
||||
<Footer/>
|
||||
</footer>
|
||||
|
||||
<ScrollTopButton/>
|
||||
</Router>
|
||||
);
|
||||
}
|
||||
|
||||
|
13
src/components/Footer.js
Normal file
13
src/components/Footer.js
Normal file
@@ -0,0 +1,13 @@
|
||||
import React from 'react'
|
||||
|
||||
export const Footer = () => {
|
||||
return (
|
||||
<div className='container d-flex justify-content-between'>
|
||||
<p>© COPYRIGHT</p>
|
||||
|
||||
<span>
|
||||
LINKS
|
||||
</span>
|
||||
</div>
|
||||
)
|
||||
}
|
9
src/components/Nav.js
Normal file
9
src/components/Nav.js
Normal file
@@ -0,0 +1,9 @@
|
||||
import React from 'react'
|
||||
|
||||
export const Nav = () => {
|
||||
return (
|
||||
<div>
|
||||
NAV
|
||||
</div>
|
||||
)
|
||||
}
|
14
src/components/Routing.js
Normal file
14
src/components/Routing.js
Normal file
@@ -0,0 +1,14 @@
|
||||
import React from 'react'
|
||||
import {Routes, Route} from "react-router-dom";
|
||||
import {Home} from "../pages/Home";
|
||||
import {NotFound} from "../pages/NotFound";
|
||||
|
||||
export const Routing = () => {
|
||||
return (
|
||||
<Routes>
|
||||
<Route exact path="/" element={<Home/>}/>
|
||||
|
||||
<Route path="*" element={<NotFound/>}/>
|
||||
</Routes>
|
||||
)
|
||||
}
|
31
src/components/ScrollTopButton.js
Normal file
31
src/components/ScrollTopButton.js
Normal file
@@ -0,0 +1,31 @@
|
||||
import React, {useState} from 'react'
|
||||
|
||||
export const ScrollTopButton = () => {
|
||||
const [visible, setVisible] = useState(false)
|
||||
|
||||
const toggleVisible = () => {
|
||||
const scrolled = document.documentElement.scrollTop
|
||||
if (scrolled > 300) {
|
||||
setVisible(true)
|
||||
} else if (scrolled <= 300) {
|
||||
setVisible(false)
|
||||
}
|
||||
}
|
||||
|
||||
const scrollToTop = () => {
|
||||
window.scrollTo({
|
||||
top: 0,
|
||||
behavior: 'smooth'
|
||||
})
|
||||
}
|
||||
|
||||
window.addEventListener('scroll', toggleVisible)
|
||||
|
||||
return (
|
||||
<i
|
||||
className="bi bi-arrow-up-square scroll-top-btn text-info"
|
||||
onClick={() => scrollToTop()}
|
||||
style={{display: visible ? 'inline' : 'none'}}
|
||||
/>
|
||||
)
|
||||
}
|
9
src/pages/Home.js
Normal file
9
src/pages/Home.js
Normal file
@@ -0,0 +1,9 @@
|
||||
import React from 'react'
|
||||
|
||||
export const Home = () => {
|
||||
return (
|
||||
<div>
|
||||
HOME
|
||||
</div>
|
||||
)
|
||||
}
|
9
src/pages/NotFound.js
Normal file
9
src/pages/NotFound.js
Normal file
@@ -0,0 +1,9 @@
|
||||
import React from 'react'
|
||||
|
||||
export const NotFound = () => {
|
||||
return (
|
||||
<div className='container'>
|
||||
<h2>Site not found</h2>
|
||||
</div>
|
||||
)
|
||||
}
|
36
yarn.lock
36
yarn.lock
@@ -1429,7 +1429,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2":
|
||||
"@babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2":
|
||||
version: 7.16.7
|
||||
resolution: "@babel/runtime@npm:7.16.7"
|
||||
dependencies:
|
||||
@@ -6104,6 +6104,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"history@npm:^5.2.0":
|
||||
version: 5.2.0
|
||||
resolution: "history@npm:5.2.0"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.7.6
|
||||
checksum: 2c6a05aa86793e0a0857013457f34474c17f81a012c6bdb00bf30862389ac6a8c2df113d82176f67af2fd534ea9dc4e1218470c5526355b6fc1aefcc971f2eb2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"hoopy@npm:^0.1.4":
|
||||
version: 0.1.4
|
||||
resolution: "hoopy@npm:0.1.4"
|
||||
@@ -9672,6 +9681,7 @@ __metadata:
|
||||
postcss-loader: ^6.2.1
|
||||
react: ^17.0.2
|
||||
react-dom: ^17.0.2
|
||||
react-router-dom: ^6.2.1
|
||||
react-scripts: 5.0.0
|
||||
sass: ^1.49.0
|
||||
sass-loader: ^12.4.0
|
||||
@@ -9752,6 +9762,30 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"react-router-dom@npm:^6.2.1":
|
||||
version: 6.2.1
|
||||
resolution: "react-router-dom@npm:6.2.1"
|
||||
dependencies:
|
||||
history: ^5.2.0
|
||||
react-router: 6.2.1
|
||||
peerDependencies:
|
||||
react: ">=16.8"
|
||||
react-dom: ">=16.8"
|
||||
checksum: fa0edc69fddf0cb1313bcb3dbd5eb2b2ff24a75ee03ba928995e16a6a251585750f91d966612e868eb68a5aebc4a5240be40fd96c4acf1d8d48d33f54ad3f4e2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"react-router@npm:6.2.1":
|
||||
version: 6.2.1
|
||||
resolution: "react-router@npm:6.2.1"
|
||||
dependencies:
|
||||
history: ^5.2.0
|
||||
peerDependencies:
|
||||
react: ">=16.8"
|
||||
checksum: 081a89237ab4f32195d1f2173bc4b3d95637cd6942a4d1a9e90d4ac8c80faa95528255ca2ec44c1e88c1b369e712c4ca74cba5ae3acef6fc30a51a62805b95a4
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"react-scripts@npm:5.0.0":
|
||||
version: 5.0.0
|
||||
resolution: "react-scripts@npm:5.0.0"
|
||||
|
Reference in New Issue
Block a user