summaryrefslogtreecommitdiff
path: root/opendc-web/opendc-web-ui/src/components/navigation/Navbar.js
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-07-14 22:23:40 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2021-07-15 15:55:56 +0200
commit803e13b32cf0ff8b496649fb0a4d6e32400e98a4 (patch)
tree263a6f9741c5ca0dd64ecf3f7f07b580331aec9d /opendc-web/opendc-web-ui/src/components/navigation/Navbar.js
parente200dbfdc076ac6263c9ac6f9dabdcc475f01d6e (diff)
feat(ui): Migrate to PatternFly 4 design framework
This change is a rewrite of the existing OpenDC frontend in order to migrate to the PatternFly 4 design framework. PatternFly is used by Red Hat for various computing related services such as OpenShift, Red Hat Virtualization and Cockpit. Since their design requirements are very similar to those of OpenDC (modeling computing services), migrating to PatternFly 4 allows us to re-use design choices from these services. See https://www.patternfly.org/v4/ for more information about PatternFly.
Diffstat (limited to 'opendc-web/opendc-web-ui/src/components/navigation/Navbar.js')
-rw-r--r--opendc-web/opendc-web-ui/src/components/navigation/Navbar.js120
1 files changed, 0 insertions, 120 deletions
diff --git a/opendc-web/opendc-web-ui/src/components/navigation/Navbar.js b/opendc-web/opendc-web-ui/src/components/navigation/Navbar.js
deleted file mode 100644
index dc74bb8f..00000000
--- a/opendc-web/opendc-web-ui/src/components/navigation/Navbar.js
+++ /dev/null
@@ -1,120 +0,0 @@
-import PropTypes from 'prop-types'
-import React, { useState } from 'react'
-import Link from 'next/link'
-import { useRouter } from 'next/router'
-import Image from 'next/image'
-import {
- Navbar as RNavbar,
- NavItem as RNavItem,
- NavLink,
- NavbarBrand,
- NavbarToggler,
- Collapse,
- Nav,
- Container,
-} from 'reactstrap'
-import Login from '../../containers/auth/Login'
-import Logout from '../../containers/auth/Logout'
-import ProfileName from '../../containers/auth/ProfileName'
-import { login, navbar, opendcBrand } from './Navbar.module.scss'
-import { useAuth } from '../../auth'
-import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
-import { faGithub } from '@fortawesome/free-brands-svg-icons'
-
-export const NAVBAR_HEIGHT = 60
-
-const GitHubLink = () => (
- <a
- href="https://github.com/atlarge-research/opendc"
- className="ml-2 mr-3 text-dark"
- style={{ position: 'relative', top: 7 }}
- >
- <FontAwesomeIcon icon={faGithub} size="2x" />
- </a>
-)
-
-export const NavItem = ({ route, children }) => {
- const router = useRouter()
- const handleClick = (e) => {
- e.preventDefault()
- router.push(route)
- }
- return (
- <RNavItem onClick={handleClick} active={router.asPath === route}>
- {children}
- </RNavItem>
- )
-}
-
-NavItem.propTypes = {
- route: PropTypes.string.isRequired,
- children: PropTypes.node,
-}
-
-export const LoggedInSection = () => {
- const router = useRouter()
- const { isAuthenticated } = useAuth()
- return (
- <Nav navbar className="auth-links">
- {isAuthenticated ? (
- [
- router.asPath === '/' ? (
- <NavItem route="/projects" key="projects">
- <Link href="/projects" passHref>
- <NavLink title="My Projects" to="/projects">
- My Projects
- </NavLink>
- </Link>
- </NavItem>
- ) : (
- <RNavItem key="profile">
- <NavLink title="My Profile">
- <ProfileName />
- </NavLink>
- </RNavItem>
- ),
- <NavItem route="logout" key="logout">
- <Logout />
- </NavItem>,
- ]
- ) : (
- <RNavItem>
- <GitHubLink />
- <Login visible={true} className={login} />
- </RNavItem>
- )}
- </Nav>
- )
-}
-
-const Navbar = ({ fullWidth, children }) => {
- const [isOpen, setIsOpen] = useState(false)
- const toggle = () => setIsOpen(!isOpen)
-
- return (
- <RNavbar fixed="top" color="light" light expand="lg" id="navbar" className={navbar}>
- <Container fluid={fullWidth}>
- <NavbarToggler onClick={toggle} />
- <NavbarBrand href="/" title="OpenDC" className={opendcBrand}>
- <div className="mb-n1">
- <Image src="/img/logo.png" layout="fixed" width={30} height={30} alt="OpenDC" />
- </div>
- </NavbarBrand>
-
- <Collapse isOpen={isOpen} navbar>
- <Nav className="mr-auto" navbar>
- {children}
- </Nav>
- <LoggedInSection />
- </Collapse>
- </Container>
- </RNavbar>
- )
-}
-
-Navbar.propTypes = {
- fullWidth: PropTypes.bool,
- children: PropTypes.node,
-}
-
-export default Navbar