From e96b6a8d621efa2474f45f9c54e795453d5619ef Mon Sep 17 00:00:00 2001 From: Andrew Trieu Date: Fri, 14 Jul 2023 12:51:49 +0300 Subject: [PATCH] Navbar --- README.md | 1 + client/src/scenes/navbar/index.jsx | 187 ++++++++++++++++++++++++++++- 2 files changed, 185 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e57e93f..15ea86d 100644 --- a/README.md +++ b/README.md @@ -16,3 +16,4 @@ Table: | 12.07.2023 | Add mock assets and initialize frontend | 3 | | 13.07.2023 | Setup frontend | 6 | | 13.07.2023 | Theme and styling | 10 | +| 14.07.2023 | Navbar | 10 | diff --git a/client/src/scenes/navbar/index.jsx b/client/src/scenes/navbar/index.jsx index 63b9947..df9a8a1 100644 --- a/client/src/scenes/navbar/index.jsx +++ b/client/src/scenes/navbar/index.jsx @@ -1,7 +1,188 @@ +import { useState } from "react"; +import { + Box, + IconButton, + InputBase, + Typography, + Select, + MenuItem, + FormControl, + useTheme, + useMediaQuery, +} from "@mui/material"; +import { + Search, + Message, + DarkMode, + LightMode, + Notifications, + Menu, + Help, + Close, +} from "@mui/icons-material"; +import { useDispatch, useSelector } from "react-redux"; +import { setMode, setLogout } from "state"; +import { useNavigate } from "react-router-dom"; +import FlexBetween from "components/FlexBetween"; + const Navbar = () => { - return ( -
navbar
- ) + const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); + const dispatch = useDispatch(); + const navigate = useNavigate(); + const user = useSelector((state) => state.user); + const isNotMobile = useMediaQuery("(min-width: 1000px)"); + + const theme = useTheme(); + const neutralLight = theme.palette.neutral.light; + const dark = theme.palette.neutral.dark; + const background = theme.palette.background.default; + const primaryLight = theme.palette.primary.light; + const alt = theme.palette.background.alt; + + const userName = `${user.firstName} ${user.lastName}`; + + return ( + + + navigate("/home")} + sx={{ + "&:hover": { + color: primaryLight, + cursor: "pointer", + }, + }} + > + ChatHive + + {isNotMobile && ( + + + + + + + )} + + {/* Desktop */} + {isNotMobile ? ( + + dispatch(setMode())}> + {theme.palette.mode === "dark" ? ( + + ) : ( + + )} + + + + + + + + + ) : ( + setIsMobileMenuOpen(!isMobileMenuOpen)}> + + + )} + + {/* Mobile */} + {!isNotMobile && isMobileMenuOpen && ( + + {/* Close button */} + + setIsMobileMenuOpen(!isMobileMenuOpen)}> + + + + {/* Menu items */} + + dispatch(setMode())}> + {theme.palette.mode === "dark" ? ( + + ) : ( + + )} + + + + + + + + + + )} + + ); }; export default Navbar;