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 (
+ <>
+
+

- 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 (
- <>
-
-

+
+
+
+

+
+
+
+
+
+ >
+ );
+}
-
-
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;