From ca9a2122700b94fdcb6768180f6d540c21b57d74 Mon Sep 17 00:00:00 2001
From: danieldeng2 <danieldeng223@gmail.com>
Date: Thu, 30 Jul 2020 15:21:45 +0100
Subject: [PATCH] Add topbar to page and refactor existing code

---
 frontend/src/components/App.scss              |  14 ++--
 frontend/src/components/App.tsx               |  17 ++---
 frontend/src/components/molecules/Buttons.tsx |   4 +-
 frontend/src/components/molecules/Toasts.tsx  |   6 +-
 .../src/components/organisms/Buttonbar.tsx    |  14 ----
 .../src/components/organisms/Toastbar.tsx     |  14 ----
 .../components/organisms/TopBar/TopBar.tsx    |  62 ++++++++++++++++++
 .../components/organisms/TopBar/style.scss    |   0
 frontend/src/components/organisms/Topbar.tsx  |  17 -----
 frontend/src/components/pages/ExamplePage.tsx |  25 +++++++
 frontend/src/components/pages/Scientia.tsx    |  17 -----
 frontend/src/images/logo.svg                  |   7 ++
 frontend/src/images/user.png                  | Bin 0 -> 45426 bytes
 frontend/src/index.tsx                        |  10 +--
 frontend/src/scss/custom.scss                 |   5 +-
 15 files changed, 122 insertions(+), 90 deletions(-)
 delete mode 100644 frontend/src/components/organisms/Buttonbar.tsx
 delete mode 100644 frontend/src/components/organisms/Toastbar.tsx
 create mode 100644 frontend/src/components/organisms/TopBar/TopBar.tsx
 create mode 100644 frontend/src/components/organisms/TopBar/style.scss
 delete mode 100644 frontend/src/components/organisms/Topbar.tsx
 create mode 100644 frontend/src/components/pages/ExamplePage.tsx
 delete mode 100644 frontend/src/components/pages/Scientia.tsx
 create mode 100644 frontend/src/images/logo.svg
 create mode 100644 frontend/src/images/user.png

diff --git a/frontend/src/components/App.scss b/frontend/src/components/App.scss
index 3db269c31..f9901b6e1 100644
--- a/frontend/src/components/App.scss
+++ b/frontend/src/components/App.scss
@@ -1,16 +1,16 @@
-@import '../scss/custom';
+@import "../scss/custom";
 
 body {
   margin: 0;
-  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
-    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
+  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;
-	// background-color: $teal-300;
+  -moz-osx-font-smoothing: grayscale;
+  // background-color: $teal-300;
 }
 
 code {
-  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
+  font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
     monospace;
-}
\ No newline at end of file
+}
diff --git a/frontend/src/components/App.tsx b/frontend/src/components/App.tsx
index 926d90eca..23f90d237 100644
--- a/frontend/src/components/App.tsx
+++ b/frontend/src/components/App.tsx
@@ -1,14 +1,15 @@
-import React from 'react';
-import './App.scss';	
-import Scientia from './pages/Scientia'
-import Container from 'react-bootstrap/Container';
+import React from "react";
+import "./App.scss";
+import ExamplePage from "./pages/ExamplePage";
+import TopBar from "./organisms/TopBar/TopBar";
 
 const App: React.FC = () => {
   return (
-    <Container className="p-3">
-      <Scientia/>
-    </Container>
+    <>
+      <TopBar />
+      <ExamplePage />
+    </>
   );
 };
 
-export default App;
\ No newline at end of file
+export default App;
diff --git a/frontend/src/components/molecules/Buttons.tsx b/frontend/src/components/molecules/Buttons.tsx
index ab34cd928..6a3366b67 100644
--- a/frontend/src/components/molecules/Buttons.tsx
+++ b/frontend/src/components/molecules/Buttons.tsx
@@ -1,6 +1,6 @@
-import React from 'react';
+import React from "react";
 
-import Button from 'react-bootstrap/Button';
+import Button from "react-bootstrap/Button";
 
 const ButtonsShowcase: React.FC = () => (
   <div className="p-1">
diff --git a/frontend/src/components/molecules/Toasts.tsx b/frontend/src/components/molecules/Toasts.tsx
index ac753fecb..3d69a0bf4 100644
--- a/frontend/src/components/molecules/Toasts.tsx
+++ b/frontend/src/components/molecules/Toasts.tsx
@@ -1,7 +1,7 @@
-import React, { useState } from 'react';
+import React, { useState } from "react";
 
-import Toast from 'react-bootstrap/Toast';
-import Button from 'react-bootstrap/Button';
+import Toast from "react-bootstrap/Toast";
+import Button from "react-bootstrap/Button";
 
 const ToastsShowcase: React.FC = () => {
   const [show, toggleShow] = useState(true);
diff --git a/frontend/src/components/organisms/Buttonbar.tsx b/frontend/src/components/organisms/Buttonbar.tsx
deleted file mode 100644
index 210635913..000000000
--- a/frontend/src/components/organisms/Buttonbar.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import React from 'react';
-
-import ButtonsShowcase from '../molecules/Buttons';
-
-const Buttonbar: React.FC = () => {
-  return (
-    <>
-      <h2>Buttons</h2>
-      <ButtonsShowcase />
-    </>
-  );
-};
-
-export default Buttonbar;
\ No newline at end of file
diff --git a/frontend/src/components/organisms/Toastbar.tsx b/frontend/src/components/organisms/Toastbar.tsx
deleted file mode 100644
index aac823d8f..000000000
--- a/frontend/src/components/organisms/Toastbar.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import React from "react";
-
-import ToastsShowcase from '../molecules/Toasts';
-
-const Toastbar: React.FC = () => {
-  return (
-    <>
-      <h2>Toasts</h2>
-      <ToastsShowcase />
-    </>
-  );
-};
-
-export default Toastbar;
diff --git a/frontend/src/components/organisms/TopBar/TopBar.tsx b/frontend/src/components/organisms/TopBar/TopBar.tsx
new file mode 100644
index 000000000..38a20fde4
--- /dev/null
+++ b/frontend/src/components/organisms/TopBar/TopBar.tsx
@@ -0,0 +1,62 @@
+import React from "react";
+import Container from "react-bootstrap/Container";
+import Navbar from "react-bootstrap/Navbar";
+import Nav from "react-bootstrap/Nav";
+import logo from "../../../images/logo.svg";
+import userPic from "../../../images/user.png";
+import "./style.scss";
+
+const TopBar: React.FC = () => {
+  return (
+    <>
+      <Navbar
+        className="justify-content-center"
+        sticky="top"
+        expand="lg"
+        variant="light"
+        bg="light"
+      >
+        <Container>
+          <Navbar.Brand href="#">
+            <img
+              src={logo}
+              width="30"
+              height="30"
+              className="d-inline-block align-top"
+              alt="React Bootstrap logo"
+            />{" "}
+            Scientia
+          </Navbar.Brand>
+
+          <Nav variant="pills" activeKey="/">
+            <Nav.Item>
+              <Nav.Link href="/">Courses</Nav.Link>
+            </Nav.Item>
+
+            <Nav.Item>
+              <Nav.Link eventKey="link-1">Timetable</Nav.Link>
+            </Nav.Item>
+
+            <Nav.Item>
+              <Nav.Link eventKey="link-2">Exams</Nav.Link>
+            </Nav.Item>
+
+            <Nav.Item>
+              <Nav.Link eventKey="link-3">Other</Nav.Link>
+            </Nav.Item>
+          </Nav>
+
+          <img
+            src={userPic}
+            width="40"
+            height="40"
+            className="d-inline-block align-top"
+            alt="userPic"
+          />
+        </Container>
+      </Navbar>
+    </>
+  );
+};
+
+export default TopBar;
diff --git a/frontend/src/components/organisms/TopBar/style.scss b/frontend/src/components/organisms/TopBar/style.scss
new file mode 100644
index 000000000..e69de29bb
diff --git a/frontend/src/components/organisms/Topbar.tsx b/frontend/src/components/organisms/Topbar.tsx
deleted file mode 100644
index 5e3104da3..000000000
--- a/frontend/src/components/organisms/Topbar.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import React from "react";
-
-import Jumbotron from "react-bootstrap/Jumbotron";
-
-const Topbar: React.FC = () => {
-  return (
-    <>
-      <Jumbotron>
-        <h1 className="header">
-          Welcome To React-Bootstrap TypeScript Example
-        </h1>
-      </Jumbotron>
-    </>
-  );
-};
-
-export default Topbar;
diff --git a/frontend/src/components/pages/ExamplePage.tsx b/frontend/src/components/pages/ExamplePage.tsx
new file mode 100644
index 000000000..5d72c072a
--- /dev/null
+++ b/frontend/src/components/pages/ExamplePage.tsx
@@ -0,0 +1,25 @@
+import React from "react";
+
+import Jumbotron from "react-bootstrap/Jumbotron";
+import Container from "react-bootstrap/Container";
+
+import ButtonsShowcase from "../molecules/Buttons";
+import ToastsShowcase from "../molecules/Toasts";
+
+const ExamplePage: React.FC = () => {
+  return (
+    <Container className="p-3">
+      <Jumbotron>
+        <h1 className="header">
+          Welcome To React-Bootstrap TypeScript Example
+        </h1>
+      </Jumbotron>
+      <h2>Buttons</h2>
+      <ButtonsShowcase />
+      <h2>Toasts</h2>
+      <ToastsShowcase />
+    </Container>
+  );
+};
+
+export default ExamplePage;
diff --git a/frontend/src/components/pages/Scientia.tsx b/frontend/src/components/pages/Scientia.tsx
deleted file mode 100644
index acd5fe3a2..000000000
--- a/frontend/src/components/pages/Scientia.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import React from 'react';
-
-import Buttonbar from '../organisms/Buttonbar';
-import Toastbar from '../organisms/Toastbar';
-import Topbar from '../organisms/Topbar';
-
-const Scientia: React.FC = () => {
-  return (
-    <>
-      <Topbar />
-			<Buttonbar/>
-      <Toastbar />
-    </>
-  );
-};
-
-export default Scientia;
\ No newline at end of file
diff --git a/frontend/src/images/logo.svg b/frontend/src/images/logo.svg
new file mode 100644
index 000000000..efb061fa8
--- /dev/null
+++ b/frontend/src/images/logo.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="100%" height="100%" viewBox="0 0 1001 1000" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
+    <g transform="matrix(1,0,0,1,-999,-500)">
+        <path d="M1500,769.603L1765.21,504.39C1768.02,501.577 1771.84,499.996 1775.82,499.996C1794.76,499.996 1853.1,499.996 1896.3,499.996C1902.98,499.996 1908.86,504.411 1910.71,510.826C1912.57,517.241 1909.96,524.111 1904.31,527.678C1843.48,569.565 1719.47,661.503 1550.24,819.842L1680.15,949.761C1838.49,780.535 1930.43,656.517 1972.32,595.686C1975.88,590.04 1982.75,587.432 1989.17,589.289C1995.58,591.145 2000,597.019 2000,603.697C2000,646.9 2000,705.245 2000,724.184C2000,728.162 1998.42,731.977 1995.6,734.79L1730.39,1000L1995.61,1265.21C1998.42,1268.03 2000,1271.84 2000,1275.82C2000,1294.76 2000,1353.1 1999.98,1396.31C1999.98,1402.97 1995.57,1408.84 1989.16,1410.69C1982.76,1412.55 1975.9,1409.94 1972.34,1404.31C1930.43,1343.48 1838.48,1219.44 1680.15,1050.24L1550.24,1180.16C1719.47,1338.5 1843.48,1430.43 1904.3,1472.34C1909.93,1475.9 1912.54,1482.76 1910.68,1489.16C1908.83,1495.57 1902.97,1499.98 1896.3,1499.98C1853.1,1500 1794.75,1500 1775.81,1500C1771.83,1500 1768.02,1498.42 1765.21,1495.61L1500,1230.4L1234.78,1495.61C1231.97,1498.42 1228.15,1500 1224.18,1500C1205.24,1500 1146.89,1500 1103.69,1499.98C1097.02,1499.98 1091.16,1495.57 1089.3,1489.17C1087.45,1482.76 1090.05,1475.9 1095.69,1472.34C1156.52,1430.43 1280.55,1338.48 1449.76,1180.16L1319.84,1050.24C1161.5,1219.47 1069.56,1343.48 1027.66,1404.3C1024.1,1409.94 1017.24,1412.54 1010.83,1410.69C1004.43,1408.84 1000.02,1402.97 1000.02,1396.3C999.996,1353.1 999.996,1294.76 999.996,1275.82C999.996,1271.84 1001.58,1268.02 1004.39,1265.21L1269.6,1000L1004.39,734.787C1001.57,731.974 999.992,728.158 999.993,724.18C999.993,705.241 999.993,646.896 999.993,603.694C999.993,597.015 1004.41,591.142 1010.82,589.285C1017.24,587.428 1024.11,590.036 1027.67,595.682C1069.56,656.513 1161.5,780.531 1319.84,949.761L1449.76,819.842C1280.53,661.507 1156.51,569.569 1095.68,527.681C1090.04,524.114 1087.43,517.245 1089.29,510.83C1091.14,504.415 1097.02,500 1103.69,500C1146.9,500 1205.24,500 1224.18,500C1228.16,500 1231.97,501.58 1234.79,504.393L1500,769.603ZM1500,867.553C1478.33,888.425 1456.05,910.28 1433.16,933.171C1410.27,956.062 1388.42,978.341 1367.55,1000C1388.42,1021.66 1410.28,1043.94 1433.17,1066.83C1456.06,1089.72 1478.34,1111.58 1500,1132.45C1521.65,1111.58 1543.93,1089.73 1566.82,1066.84C1589.71,1043.95 1611.57,1021.67 1632.44,1000C1611.58,978.345 1589.72,956.065 1566.83,933.175C1543.94,910.284 1521.66,888.429 1500,867.553Z"/>
+    </g>
+</svg>
diff --git a/frontend/src/images/user.png b/frontend/src/images/user.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc76d95c9e673bb21d89d9bfa6f3dce02803aec5
GIT binary patch
literal 45426
zcmeH{F=|y|7zOXcCIr%22o|=k!N!mf1M&zlSlijDg@s@t*oa_n;R3AUGF*U-;tpKJ
zGwJLy{2u@FBookpocrCmGvND^_0it$t=(l=_KqJMoL>C?cKK)L#>L+|N6%g?%Z=sa
z;o0G4v-$Yp$HhPTqk(H^;NI<bua{-DygXe$+H9_&fImL@?$hsIm*xD<@xlGGS3g%b
z&wpM1zu}JtG@t<uXg~uR(0~RspaBicGqAe)XC6%EO;>->D)XXwSNx=TuE*bGrEz!j
zp0v_D*W+)p(zv^MPg-f7>+v^PY24ksC#^Kk_4u2tH12NRlUADNdi+gR8h1DENh{5B
zJ^m&ujk}xoq?P8m9)FXS#@)?((n|AOkH5)E<L>4?xmA?_%r;F(rETH`EPfJ@RG(O>
zo&W$?2}r6>tW-|`0IUQg)hAY}CjbCe0+Q+zE7cPK04o7W^@)}02>^hVfTa4wO7#Q)
zz)C<;ePX400svqoAgMmFQau3xxTclBXJ_PPt^iyz$-rc;5MHp!z+|ofTr$bPWUdfi
zu*tw=t^iyz$-rc;5MHp!z+|ofTr$bPWUdfiu*tw=t^iyz$-rc;5MHp!z+|ofTr$bP
zWUdfiu*tw=t^iyz$-rc;5MHp!z+|ofTr$bPWUdfiu*tw=t^iyz$-rc;5MHp!z+|of
zTr$bPWUdfiu*tw=t^iyz$-rc;5MHp!z+|ofTr$bPWUdfiu*tw=t^iyz$-rc;5MHp!
zz+|ofTr$bPWUdfiu*tw=t^iyz$-rc;5MHp!z+|ofTr$bPWUdfiu*tw=t^iyz$-rc;
z5MHp!z+|of+|cBI;{~7XCjm+IiIwUJ0DzT%r2524^#lOGN<dP5Vx@Wl0AM8`sXnn%
zJpll)5|C7%SgD=>09Xk~s!yy`PXGX{1SHibR;nie09FE$>Jux~6951!0ZD%`0e-h>
zLcVmHcma!_1SHibR;nie09FE$>Jux~6951!0ZH|VmFfuqfR%ux`ov201OUKFKvI2T
zrFsGYU?m`_KCx0g0RXTPkW`;osh$7;SP4j~Ppni=006FOCGy#BG@t<uXg~uR(0~Rs
hpaBhNKm!{1HwHeh_cxE9zxi}|{rGTw@MZtW+us*5Vjlni

literal 0
HcmV?d00001

diff --git a/frontend/src/index.tsx b/frontend/src/index.tsx
index 4a6f683a3..68d6c0e29 100644
--- a/frontend/src/index.tsx
+++ b/frontend/src/index.tsx
@@ -1,13 +1,13 @@
-import React from 'react';
-import ReactDOM from 'react-dom';
-import App from './components/App';
-import * as serviceWorker from './serviceWorker';
+import React from "react";
+import ReactDOM from "react-dom";
+import App from "./components/App";
+import * as serviceWorker from "./serviceWorker";
 
 ReactDOM.render(
   <React.StrictMode>
     <App />
   </React.StrictMode>,
-  document.getElementById('root')
+  document.getElementById("root")
 );
 
 // If you want your app to work offline and load faster, you can change
diff --git a/frontend/src/scss/custom.scss b/frontend/src/scss/custom.scss
index 6080b316d..699d0cdfc 100644
--- a/frontend/src/scss/custom.scss
+++ b/frontend/src/scss/custom.scss
@@ -4,8 +4,7 @@
 @import "./bootstrapV5/bootstrap.scss";
 @import "~bootstrap/dist/css/bootstrap.min.css";
 
-
-//Delete bootstrapV5/bootstrap.scss and bootstrap.min.css import 
+//Delete bootstrapV5/bootstrap.scss and bootstrap.min.css import
 //and uncomment below to fall back to default scss option
 
-// @import '~bootstrap/scss/bootstrap.scss';
\ No newline at end of file
+// @import '~bootstrap/scss/bootstrap.scss';
-- 
GitLab