diff --git a/client/src/components/Header.jsx b/client/src/components/Header.jsx index 85ee95e..9effedd 100644 --- a/client/src/components/Header.jsx +++ b/client/src/components/Header.jsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from "react"; +import { useState, useEffect } from "react"; import { NavLink, Link, useNavigate } from "react-router-dom"; import { useSelector, useDispatch } from "react-redux"; import { logout } from "../store/slices/userSlice.jsx"; @@ -24,7 +24,7 @@ import ThemeToggle from "./ThemeToggle"; export default function Header() { const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); const [isScrolled, setIsScrolled] = useState(false); - const { user, isAuthenticated } = useSelector(state => state.user); + const { user, isAuthenticated } = useSelector((state) => state.user); const dispatch = useDispatch(); const navigate = useNavigate(); @@ -34,188 +34,142 @@ export default function Header() { return () => window.removeEventListener("scroll", handleScroll); }, []); + useEffect(() => { + document.body.style.overflow = isMobileMenuOpen ? "hidden" : "unset"; + }, [isMobileMenuOpen]); + const handleLogout = () => { - localStorage.removeItem('token'); - localStorage.removeItem('userData'); + localStorage.removeItem("token"); + localStorage.removeItem("userData"); dispatch(logout()); - navigate('/'); + navigate("/"); }; - useEffect(() => { - if (isMobileMenuOpen) { - document.body.style.overflow = "hidden"; - } else { - document.body.style.overflow = "unset"; - } - return () => { - document.body.style.overflow = "unset"; - }; - }, [isMobileMenuOpen]); - const navItems = [ { to: "/", label: "Home", icon: }, { to: "/about", label: "About", icon: }, { to: "/blog", label: "Blog", icon: }, { to: "/contactus", label: "Contact", icon: }, { to: "/news", label: "News", icon: }, - { - to: "/consultation", - label: "Consultation", - icon: , - }, - { - to: "/care-co-pilot", - label: "Care Co-Pilot", - icon: , - }, - { - to: "/growth-tracker", - label: "Growth Tracker", - icon: , - }, - { - to: "/contributors", - label: "Contributors", - icon: , - }, + { to: "/consultation", label: "Consultation", icon: }, + { to: "/care-co-pilot", label: "Care Co-Pilot", icon: }, + { to: "/growth-tracker", label: "Growth Tracker", icon: }, + { to: "/contributors", label: "Contributors", icon: }, ]; return ( <> - {/* HEADER */}
+
+ {/* Logo */} + + Logo +
+

InfantCare

+

Compass

+
+ + + {/* Desktop Nav */} +
+ {navItems.map(({ to, label, icon }) => ( + + `flex items-center gap-1.5 px-2 py-1 text-sm font-medium rounded-full transition-all duration-300 whitespace-nowrap ${ + isActive + ? "bg-gradient-to-r from-purple-600 to-pink-500 text-white shadow" + : "text-gray-700 dark:text-gray-200 hover:bg-purple-100 dark:hover:bg-gray-800 hover:text-purple-600 dark:hover:text-purple-400" + }` + } + > + {icon} + {label} + + ))} +
-
-
- {/* Logo */} - - - Logo -
-

- InfantCare -

-

- Compass -

+ {/* Right side: Theme toggle + Auth buttons */} +
+ + + {isAuthenticated && user ? ( +
+
+ + + {user.name} ({user.role === "doctor" ? "Doctor" : "Patient"}) + +
+
- - - {/* Desktop Nav */} - -
- - {navItems.map(({ to, label, icon }) => ( - - `flex items-center gap-1.5 px-2.5 py-1.5 text-sm font-medium rounded-full transition-all duration-300 whitespace-nowrap ${ - isActive - ? "bg-gradient-to-r from-purple-600 to-pink-500 text-white shadow" - : "text-gray-700 dark:text-gray-200 hover:bg-purple-100 dark:hover:bg-gray-800 hover:text-purple-600 dark:hover:text-purple-400" - }` - } + ) : ( +
+ - {icon} - {label} - - ))} -
- - {/* Theme Toggle */} - -
- - -
- - {/* Auth Buttons */} -
- {isAuthenticated && user ? ( - <> -
- - - {user.name} ({user.role === 'doctor' ? 'Doctor' : 'Patient'}) - -
- - + Sign In + + + Get Started + +
+ )} + + {/* Mobile Hamburger */} +
- - {/* Hamburger */} -
- -
+
- {/* Mobile Menu - OUTSIDE header container */} + {/* Overlay */} {isMobileMenuOpen && (
setIsMobileMenuOpen(false)} /> )} + {/* Mobile Menu */} {isMobileMenuOpen && (
-
-
- Menu - -
+
+ Menu +
@@ -230,20 +184,15 @@ export default function Header() { {label} ))} - - {/* Theme Toggle in Mobile Menu */} -
- -
-
+
{isAuthenticated && user ? ( <>
- {user.name} ({user.role === 'doctor' ? 'Doctor' : 'Patient'}) + {user.name} ({user.role === "doctor" ? "Doctor" : "Patient"})
); };