1
Fork 0
mirror of https://github.com/pds-nest/nest.git synced 2024-11-22 21:14:18 +00:00
pds-2021-g2-nest/nest_frontend/components/interactive/Sidebar.js

58 lines
2 KiB
JavaScript
Raw Normal View History

2021-05-11 21:27:42 +00:00
import React, { useContext } from "react"
2021-04-21 13:08:54 +00:00
import Style from "./Sidebar.module.css"
import classNames from "classnames"
2021-04-29 14:58:31 +00:00
import Logo from "../interactive/Logo"
import ButtonSidebar from "../base/ButtonSidebar"
2021-05-11 21:27:42 +00:00
import {
faCog,
faExclamationTriangle,
faFolder,
faHome,
faKey,
2021-05-12 02:10:36 +00:00
faUserCog,
2021-05-11 21:27:42 +00:00
} from "@fortawesome/free-solid-svg-icons"
2021-04-29 14:58:31 +00:00
import ContextUser from "../../contexts/ContextUser"
2021-05-18 00:04:06 +00:00
import ContextLanguage from "../../contexts/ContextLanguage"
2021-04-21 13:08:54 +00:00
/**
* The sidebar of the website, with the logo, buttons to switch between the various pages and a notification counter.
*
* @todo The notification counter is still missing.
* @param className - Additional class(es) to be added to the outer container.
* @param props - Additional props to be passed to the outer container.
* @returns {JSX.Element}
* @constructor
*/
export default function Sidebar({ className, ...props }) {
2021-05-11 14:37:15 +00:00
const { user } = useContext(ContextUser)
2021-05-18 00:04:06 +00:00
const {strings} = useContext(ContextLanguage)
2021-04-21 13:08:54 +00:00
return (
2021-04-26 16:36:41 +00:00
<aside className={classNames(Style.Sidebar, className)} {...props}>
2021-04-21 13:37:12 +00:00
<Logo/>
{
2021-04-26 16:36:41 +00:00
user ?
2021-05-11 21:27:42 +00:00
<>
2021-05-18 00:04:06 +00:00
<ButtonSidebar to={"/dashboard"} icon={faHome}>{strings.dashboard}</ButtonSidebar>
<ButtonSidebar to={"/repositories"} icon={faFolder}>{strings.repositories}</ButtonSidebar>
<ButtonSidebar to={"/alerts"} icon={faExclamationTriangle}>{strings.alerts}</ButtonSidebar>
<ButtonSidebar to={"/settings"} icon={faCog}>{strings.settings}</ButtonSidebar>
2021-05-11 21:27:42 +00:00
</>
2021-05-11 14:37:15 +00:00
:
2021-05-11 21:27:42 +00:00
<>
2021-05-18 00:04:06 +00:00
<ButtonSidebar to={"/login"} icon={faKey}>{strings.login}</ButtonSidebar>
2021-05-11 21:27:42 +00:00
</>
}
{
user && user.isAdmin ?
2021-05-11 21:27:42 +00:00
<>
2021-05-18 00:04:06 +00:00
<ButtonSidebar to={"/users"} icon={faUserCog}>{strings.users}</ButtonSidebar>
2021-05-11 21:27:42 +00:00
</>
:
2021-05-11 21:27:42 +00:00
null
}
2021-04-26 16:36:41 +00:00
</aside>
2021-04-21 13:08:54 +00:00
)
}