diff --git a/client-side/src/components/NavBar/NavBar.jsx b/client-side/src/components/NavBar/NavBar.jsx index ee681e6..d0cafa4 100644 --- a/client-side/src/components/NavBar/NavBar.jsx +++ b/client-side/src/components/NavBar/NavBar.jsx @@ -1,4 +1,3 @@ - // import { useNavigate } from "react-router-dom"; // import CodeHubLogo from "./Assets/Logos/CodeHubSmall.png"; // import HamburgerMenu from "./HamburgerMenu"; @@ -17,7 +16,6 @@ // navigate("/"); // }; - // return ( // <> // {/* Render for larger screens */} @@ -114,145 +112,176 @@ // export default Navbar; - - - - import { useNavigate } from "react-router-dom"; import CodeHubLogo from "./Assets/Logos/CodeHubSmall.png"; import HamburgerMenu from "./HamburgerMenu"; import { useSelector, useDispatch } from "react-redux"; import { useState, useRef, useEffect } from "react"; import { logout } from "../../redux/slices/authSlice"; +import { motion, AnimatePresence } from "framer-motion"; function Navbar() { - const auth = useSelector(state => state.auth.user); - const navigate = useNavigate(); - const dispatch = useDispatch(); - const [dropdownOpen, setDropdownOpen] = useState(false); - const dropdownRef = useRef(null); + const auth = useSelector((state) => state.auth.user); + const navigate = useNavigate(); - const handleLogoClick = (e) => { - e.preventDefault(); - e.stopPropagation(); - navigate("/"); - }; + const handleLogoClick = (e) => { + e.preventDefault(); + e.stopPropagation(); + navigate("/"); + }; - const handleLogout = async() => { - console.log("Inside HandleLogout navbar"); - await dispatch(logout()); - navigate("/login"); - }; + return ( + <> +
+ Codehub Website's Logo - const handleDropdownToggle = () => { - setDropdownOpen(!dropdownOpen); - }; +
+

navigate("/")}> + HOME +

+

navigate("/contact-us")}> + Contact Us +

+

navigate("/notice-board")}> + NoticeBoard +

+
- // Close dropdown if clicked outside - useEffect(() => { - const handleClickOutside = (event) => { - if (dropdownRef.current && !dropdownRef.current.contains(event.target)) { - setDropdownOpen(false); - } - }; - document.addEventListener("mousedown", handleClickOutside); - return () => { - document.removeEventListener("mousedown", handleClickOutside); - }; - }, []); + {auth ? ( + + ) : ( + + )} +
- return ( - <> -
- +
+
+
+ Codehub Website's Logo +
+
+ +
+
+ + ); +} -
-

navigate("/")} - > - Home -

-

navigate("/contact-us")} - > - Contact Us -

-

navigate("/notice-board")} - > - Notice Board -

-
+const DropdownMenu = () => { + const [dropdownOpen, setDropdownOpen] = useState(false); + const [arrowColor, setArrowColor] = useState(false); + const dropdownRef = useRef(null); + const dispatch = useDispatch(); + const navigate = useNavigate(); - {auth ? ( -
- - {dropdownOpen && ( -
-

navigate("/dashboard")} - > - Dashboard -

-

navigate("/education")} - > - Education -

-

navigate("/leader-board")} - > - Leaderboard -

-

- Logout -

-
- )} -
- ) : ( - - )} -
+ const handleLogout = async () => { + console.log("Inside HandleLogout navbar"); + await dispatch(logout()); + navigate("/login"); + }; -
-
-
- -
-
- -
-
- - ); -} + const handleDropdownToggle = () => { + setDropdownOpen(!dropdownOpen); + }; + + // Close dropdown if clicked outside + useEffect(() => { + const handleClickOutside = (event) => { + if (dropdownRef.current && !dropdownRef.current.contains(event.target)) { + setDropdownOpen(false); + } + }; + document.addEventListener("mousedown", handleClickOutside); + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, []); + + // Change Square color back to white incase mouseLeave is not triggered + useEffect(() => { + setArrowColor(false); + }, [navigate]) + + return ( +
+ + + {dropdownOpen && ( + +
+

setArrowColor(true)} + onMouseLeave={() => setArrowColor(false)} + onClick={() => { + navigate("/dashboard"); + setDropdownOpen(false); + }}> + Dashboard +

+

{ + navigate("/education"); + setDropdownOpen(false); + }}> + Education +

+

{ + navigate("/leader-board"); + setDropdownOpen(false); + }}> + Leaderboard +

+

{ + handleLogout(); + setDropdownOpen(false); + }}> + Logout +

+ + )} + +
+ ); +}; export default Navbar;