Skip to content
Snippets Groups Projects
Commit 42d33667 authored by danieldeng2's avatar danieldeng2
Browse files

Refactor top bar to use modular css

parent 9070f472
No related branches found
No related tags found
No related merge requests found
Showing
with 98 additions and 86 deletions
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
"@types/react-dom": "^16.9.0", "@types/react-dom": "^16.9.0",
"@types/react-router-dom": "^5.1.5", "@types/react-router-dom": "^5.1.5",
"bootstrap": "^4.5.0", "bootstrap": "^4.5.0",
"classnames": "^2.2.6",
"node-sass": "^4.14.1", "node-sass": "^4.14.1",
"react": "^16.13.1", "react": "^16.13.1",
"react-bootstrap": "^1.3.0", "react-bootstrap": "^1.3.0",
......
...@@ -7,7 +7,6 @@ body { ...@@ -7,7 +7,6 @@ body {
sans-serif; sans-serif;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
// background-color: $teal-300;
} }
code { code {
...@@ -15,78 +14,6 @@ code { ...@@ -15,78 +14,6 @@ code {
monospace; monospace;
} }
//-----------------------------------Top Bar-----------------------------------
.top-bar {
padding: 12px 16px;
background: #fff;
border-bottom: 1px solid #cdd4db;
}
//------------------------------------Brand------------------------------------
.brand-image {
margin-right: 10px;
}
.brand-container {
font-family: "IBM Plex Sans";
font-weight: 500;
font-size: 24px;
color: #000;
text-align: left;
padding: 0px;
display: flex;
justify-content: left;
align-items: center;
margin: 0px;
}
.brand-container a{
color: #000;
}
//--------------------------------Page Buttons---------------------------------
@media (min-width: 992px) {
.page-button {
background: $gray-100;
border-radius: 5px;
font-family: "IBM Plex Sans";
font-size: 18px;
color: $black !important;
text-align: center;
line-height: 22px;
width: 120px;
height: 36px;
margin-right: 10px;
margin-left: 10px;
}
.page-button:hover {
background: $gray-200;
color: $black !important;
}
.page-button.active {
background: $black !important;
font-weight: 500 !important;
color: $white !important;
}
.page-button-group {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
@media (max-width: 992px) {
.page-button-group {
display: none;
}
}
//----------------Bottom Bar ------------------------- //----------------Bottom Bar -------------------------
@media (max-width: 992px) { @media (max-width: 992px) {
.bottom-bar { .bottom-bar {
......
import React from "react"; import React from "react";
import Nav from "react-bootstrap/Nav"; import Nav from "react-bootstrap/Nav";
import { NavLink } from "react-router-dom"; import { NavLink } from "react-router-dom";
import styles from "./style.module.scss"
export interface NavBarItemProps { export interface NavBarItemProps {
page: { page: {
...@@ -16,9 +17,9 @@ const NavBarTabItem: React.FC<NavBarItemProps> = ({ ...@@ -16,9 +17,9 @@ const NavBarTabItem: React.FC<NavBarItemProps> = ({
<Nav.Item> <Nav.Item>
<Nav.Link <Nav.Link
as={NavLink} as={NavLink}
activeClassName="active" activeClassName={styles.active}
to={page.path} to={page.path}
className="page-button" className={styles.pageButton}
> >
{page.name} {page.name}
</Nav.Link> </Nav.Link>
......
@import "scss/custom";
@media (min-width: 992px) {
.pageButton {
background: $gray-100;
border-radius: 5px;
font-family: "IBM Plex Sans";
font-size: 18px;
color: $black !important;
text-align: center;
line-height: 22px;
width: 120px;
height: 36px;
margin-right: 10px;
margin-left: 10px;
}
.pageButton:hover {
background: $gray-200;
color: $black !important;
}
.pageButton.active {
background: $black !important;
font-weight: 500 !important;
color: $white !important;
}
}
\ No newline at end of file
...@@ -2,6 +2,8 @@ import React from "react"; ...@@ -2,6 +2,8 @@ import React from "react";
import Navbar from "react-bootstrap/Navbar"; import Navbar from "react-bootstrap/Navbar";
import logo from "images/logo.svg"; import logo from "images/logo.svg";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import styles from "./style.module.scss";
import cx from "classnames";
interface NavBarBrandProps { interface NavBarBrandProps {
onClick: (event: React.MouseEvent<HTMLImageElement>) => void; onClick: (event: React.MouseEvent<HTMLImageElement>) => void;
...@@ -11,18 +13,20 @@ const NavBarBrand: React.FC<NavBarBrandProps> = ({ ...@@ -11,18 +13,20 @@ const NavBarBrand: React.FC<NavBarBrandProps> = ({
onClick, onClick,
}: NavBarBrandProps) => { }: NavBarBrandProps) => {
return ( return (
<Navbar.Brand className="brand-container"> <Navbar.Brand className={styles.brandContainer}>
<img <img
src={logo} src={logo}
width="30" width="30"
height="30" height="30"
className="d-inline-block align-center brand-image" className={cx(
"d-inline-block",
"align-center",
styles.brandImage
)}
alt="React Bootstrap logo" alt="React Bootstrap logo"
onClick={(e) => onClick(e)} onClick={(e) => onClick(e)}
/>{" "} />
<Link to="/" style={{ textDecoration: "none" }}> <Link to="/">Scientia</Link>
Scientia
</Link>
</Navbar.Brand> </Navbar.Brand>
); );
}; };
......
@import "scss/custom";
.brandImage {
margin-right: 10px;
}
.brandContainer {
font-family: "IBM Plex Sans";
font-weight: 500;
font-size: 24px;
color: #000;
text-align: left;
padding: 0px;
display: flex;
justify-content: left;
align-items: center;
margin: 0px;
}
.brandContainer a{
color: #000 !important;
text-decoration: none !important;
}
...@@ -2,6 +2,8 @@ import React from "react"; ...@@ -2,6 +2,8 @@ import React from "react";
import Navbar from "react-bootstrap/Navbar"; import Navbar from "react-bootstrap/Navbar";
import Nav from "react-bootstrap/Nav"; import Nav from "react-bootstrap/Nav";
import NavBarTabItem from "components/atoms/NavBarTabItem"; import NavBarTabItem from "components/atoms/NavBarTabItem";
import styles from "./style.module.scss"
import cx from "classnames";
export interface NavBarTabGroupProps { export interface NavBarTabGroupProps {
pages: { pages: {
...@@ -14,7 +16,7 @@ const NavBarTabGroup: React.FC<NavBarTabGroupProps> = ({ ...@@ -14,7 +16,7 @@ const NavBarTabGroup: React.FC<NavBarTabGroupProps> = ({
pages, pages,
}: NavBarTabGroupProps) => { }: NavBarTabGroupProps) => {
return ( return (
<Navbar className="page-button-group m-auto" id="responsive-navbar-nav"> <Navbar className={cx("m-auto", styles.pageButtonGroup)} id="responsive-navbar-nav">
<Nav variant="pills"> <Nav variant="pills">
{pages.map((page) => ( {pages.map((page) => (
<NavBarTabItem page={page} key={page.name} /> <NavBarTabItem page={page} key={page.name} />
......
@import "scss/custom";
@media (min-width: 992px) {
.pageButtonGroup {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
@media (max-width: 992px) {
.pageButtonGroup {
display: none;
}
}
\ No newline at end of file
...@@ -4,6 +4,7 @@ import Navbar from "react-bootstrap/Navbar"; ...@@ -4,6 +4,7 @@ import Navbar from "react-bootstrap/Navbar";
import userPic from "images/user.png"; import userPic from "images/user.png";
import NavBarTabGroup from "components/molecules/NavBarTabGroup"; import NavBarTabGroup from "components/molecules/NavBarTabGroup";
import NavBarBrand from "components/molecules/NavBarBrand"; import NavBarBrand from "components/molecules/NavBarBrand";
import styles from "./style.module.scss";
export interface TopBarProps { export interface TopBarProps {
pages: { pages: {
...@@ -15,7 +16,7 @@ export interface TopBarProps { ...@@ -15,7 +16,7 @@ export interface TopBarProps {
const TopBar: React.FC<TopBarProps> = ({ pages, onIconClick }: TopBarProps) => { const TopBar: React.FC<TopBarProps> = ({ pages, onIconClick }: TopBarProps) => {
return ( return (
<Navbar className="top-bar" sticky="top" expand="lg" variant="light"> <Navbar className={styles.navBar} sticky="top" expand="lg" variant="light">
<Container fluid> <Container fluid>
<NavBarBrand onClick={onIconClick} /> <NavBarBrand onClick={onIconClick} />
......
@import "scss/custom";
.navBar {
padding: 12px 16px;
background: #fff;
border-bottom: 1px solid #cdd4db;
}
\ No newline at end of file
// Override default variables before the import // Override default variables before the import
$nav-pills-link-active-color: black;
//Bootstrap 5 scss from: https://github.com/twbs/bootstrap/tree/main/scss //Bootstrap 5 scss from: https://github.com/twbs/bootstrap/tree/main/scss
@import "./bootstrapV5/bootstrap.scss"; // @import "./bootstrapV5/bootstrap.scss";
@import "~bootstrap/dist/css/bootstrap.min.css"; // @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 //and uncomment below to fall back to default scss option
// @import '~bootstrap/scss/bootstrap.scss'; @import '~bootstrap/scss/bootstrap.scss';
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment