You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.5 KiB

import React, { useContext, useState } from 'react';
6 months ago
import { Button } from "@/components/ui/button";
import { Menu, X } from "lucide-react";
import { DesktopNav } from '../Navbar/desktopNav';
import { MobileNav } from '../Navbar/mobileNav';
import SearchBar from './_partials/searchBar';
import Link from 'next/link';
import { routes } from '@/lib/routes';
import { AuthContext } from '@/helpers/context/AuthProvider';
import UserProfileDropDown from './_partials/userProfileDropDown';
6 months ago
import BrandLogo from '@/assets/img/brandLogo.png'
import Image from 'next/image';
6 months ago
const Header = () => {
const [isMenuOpen, setIsMenuOpen] = useState(false);
const { user } = useContext(AuthContext)
6 months ago
const toggleMenu = () => {
setIsMenuOpen(!isMenuOpen);
};
6 months ago
return (
<header className="relative bg-zinc-900">
<div className="container mx-auto px-4">
<div className="flex items-center justify-between py-4">
{/* Logo */}
6 months ago
<Link href={routes.INDEX_PAGE} className='flex gap-2 items-center'>
6 months ago
<Image src={BrandLogo} width={50} height={30} alt={'brand_logo'} className='bg-blend-darken'/>
<h1 className="brand-logo text-purple-700 font-bold text-2xl">
6 months ago
EduCONNECT
6 months ago
</h1>
6 months ago
</Link>
6 months ago
<SearchBar />
<div className='flex gap-8'>
<DesktopNav />
<div className="hidden md:block space-x-4">
{
!user ? (
<>
<Button className='bg-purple-700' asChild>
<Link href={routes.LOGIN_ROUTES}>
Login
</Link>
</Button>
<Button className='bg-purple-700' asChild>
<Link href={routes.REGISTER_ROUTES}>
Register
</Link>
</Button>
</>
) : <UserProfileDropDown />
}
6 months ago
</div>
</div>
{/* Hamburger Menu Button */}
<button
onClick={toggleMenu}
className="md:hidden p-2 rounded-md hover:bg-gray-100"
>
{isMenuOpen ? (
<X className="h-6 w-6" />
) : (
<Menu className="h-6 w-6" />
)}
</button>
</div>
{/* Mobile Navigation */}
<MobileNav isOpen={isMenuOpen} />
</div>
</header>
);
};
export default Header;