react-admin-panel-orient/src/components/Nav.tsx

93 lines
2.8 KiB
TypeScript
Raw Normal View History

2022-09-05 14:35:20 +00:00
// Modules
2022-09-06 11:33:04 +00:00
import { useContext, useState } from "react";
2022-09-05 14:35:20 +00:00
import { UserContext } from "../context/UserContext";
2022-09-06 12:43:26 +00:00
import { Link } from "react-router-dom";
2022-09-19 09:35:37 +00:00
import { IconContext } from "react-icons";
2022-09-05 14:35:20 +00:00
// Icons
2022-09-19 12:28:11 +00:00
import { FaMeteor } from "react-icons/fa";
2022-09-06 12:43:26 +00:00
import { GiHamburgerMenu } from "react-icons/gi";
2022-09-19 12:28:11 +00:00
import { FaUserCog } from "react-icons/fa";
2022-09-05 14:35:20 +00:00
// Types
import { userContextType } from "../types/user";
2022-09-06 12:43:26 +00:00
2022-09-05 14:35:20 +00:00
interface Props {
aside: boolean;
setAside: React.Dispatch<boolean>;
}
const Nav = ({ aside, setAside }: Props) => {
const { user, setUser }: userContextType = useContext(UserContext);
2022-09-06 11:33:04 +00:00
const [dropdown, setDropdown] = useState<boolean>(false);
2022-09-05 14:35:20 +00:00
return (
<nav className="nav">
<div className="container">
<div className="nav inner">
<div className="nav__left">
2022-09-10 11:35:48 +00:00
<Link
to={"/dashboard"}
className="nav__img"
2022-09-10 14:13:19 +00:00
onClick={() => {
localStorage.setItem("lastLocation", "/dashboard");
}}
2022-09-10 11:35:48 +00:00
>
2022-09-19 12:28:11 +00:00
<IconContext.Provider value={{ color: "#8DD77F" }}>
<FaMeteor />
2022-09-19 09:35:37 +00:00
</IconContext.Provider>
2022-09-06 12:43:26 +00:00
</Link>
2022-09-19 12:28:11 +00:00
<IconContext.Provider value={{ color: "#8DD77F" }}>
2022-09-19 09:35:37 +00:00
<GiHamburgerMenu
type="button"
className="nav__btn"
onClick={() => setAside(!aside)}
/>
</IconContext.Provider>
2022-09-05 14:35:20 +00:00
</div>
<div className="nav__right">
2022-09-06 11:33:04 +00:00
<div
className="nav__right__user"
onClick={() => {
setDropdown(!dropdown);
}}
>
2022-09-19 12:28:11 +00:00
<IconContext.Provider value={{ color: "#8DD77F" }}>
<FaUserCog className="nav__right__user__img" />
2022-09-19 09:35:37 +00:00
</IconContext.Provider>
2022-09-06 11:33:04 +00:00
<span>Profile</span>
<div
className={dropdown ? "nav__dropdown active" : "nav__dropdown"}
>
<ul className="nav__dropdown__wrapper">
<li>
<h2>Username:</h2>
<p>{user.username}</p>
</li>
<li>
<h2>Access:</h2>
<p>{user.accessLevel}</p>
</li>
<li>
<button
type="button"
onClick={() => {
localStorage.removeItem("userData");
setUser({ username: "", accessLevel: "" });
}}
>
Log out
</button>
</li>
</ul>
</div>
2022-09-05 14:35:20 +00:00
</div>
</div>
</div>
</div>
</nav>
);
};
export default Nav;