diff --git a/src/assets/icons/profile.svg b/src/assets/icons/profile.svg new file mode 100644 index 0000000..9f88d04 --- /dev/null +++ b/src/assets/icons/profile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/styles/_aside.scss b/src/assets/styles/_aside.scss index 6cbeec6..3728c58 100644 --- a/src/assets/styles/_aside.scss +++ b/src/assets/styles/_aside.scss @@ -12,7 +12,6 @@ } &__list { - background: #e0dfdf; width: 100%; padding: 1rem; display: flex; diff --git a/src/assets/styles/_nav.scss b/src/assets/styles/_nav.scss index 3c7e319..d7ba8e5 100644 --- a/src/assets/styles/_nav.scss +++ b/src/assets/styles/_nav.scss @@ -1,4 +1,39 @@ .nav { + &__dropdown { + border-radius: 1rem; + width: 100%; + opacity: 0; + overflow: hidden; + position: absolute; + @include transition-std; + top: calc(100% + 1rem); + left: 0; + height: 0; + + border: 0.1rem solid #c8c8c8; + + &.active { + height: 15rem; + opacity: 1; + @include transition-std; + } + + &__wrapper { + display: flex; + flex-direction: column; + + li { + display: flex; + flex-direction: column; + gap: 0.2rem; + + &:nth-child(2n) { + padding-bottom: 1rem; + } + } + } + } + &__left { display: flex; align-items: center; @@ -7,36 +42,67 @@ } &__right { + justify-self: flex-end; + max-width: 10rem; display: flex; align-items: center; - justify-content: flex-end; &__user { + cursor: pointer; + position: relative; + background: #f1f4f8; border: 0.1rem solid #c8c8c8; border-radius: 1rem; padding: 1rem; display: flex; - flex-direction: column; align-items: center; - gap: 1rem; + gap: 0.5rem; + @include transition-std; - h2 { - width: 100%; - font-weight: normal; + &:hover { + @include transition-std; + background: #b9b9b9; + } + + button { + border-top: 0.1rem solid #c8c8c8; + padding: 1rem; + padding-bottom: 0.5rem; + cursor: pointer; + color: rgb(37, 172, 218); + } + + span { font-size: 1.6rem; + } + p { + font-size: 1.2rem; + padding: 0 1rem; + } - span { - font-weight: bold; + &__img { + width: 3rem; + height: 3rem; + + img { + width: 3rem; + height: 3rem; + object-fit: contain; } } - h3 { + h2 { + padding: 1rem; + padding-bottom: 0.5rem; + width: 100%; + font-size: 1.4rem; + } + + h3 { + padding: 1rem; + padding-bottom: 0.5rem; width: 100%; font-size: 1.4rem; - font-weight: normal; - span { - font-weight: bold; - } } } } diff --git a/src/components/Nav.tsx b/src/components/Nav.tsx index 57d5bdf..30014ad 100644 --- a/src/components/Nav.tsx +++ b/src/components/Nav.tsx @@ -1,10 +1,11 @@ // Modules -import { useContext } from "react"; +import { useContext, useState } from "react"; import { UserContext } from "../context/UserContext"; // Icons import Orient from "../assets/icons/logo_orient.svg"; import Burger from "../assets/icons/burger.svg"; +import Profile from "../assets/icons/profile.svg"; // Types import { userContextType } from "../types/user"; @@ -15,6 +16,7 @@ interface Props { const Nav = ({ aside, setAside }: Props) => { const { user, setUser }: userContextType = useContext(UserContext); + const [dropdown, setDropdown] = useState(false); return ( @@ -32,14 +34,41 @@ const Nav = ({ aside, setAside }: Props) => { - - - User: {" " + user.username && user.username} - - - Access:{" "} - {" " + user.accessLevel && user.accessLevel} - + { + setDropdown(!dropdown); + }} + > + + + + Profile + + + + Username: + {user.username} + + + Access: + {user.accessLevel} + + + { + localStorage.removeItem("userData"); + setUser({ username: "", accessLevel: "" }); + }} + > + Log out + + + +
{user.username}
{user.accessLevel}