import { useState } from 'react'; import Link from 'next/link'; import Image from 'next/image'; import { motion } from 'framer-motion'; import { FiSun, FiMoon, FiX, FiMenu } from 'react-icons/fi'; import HireMeModal from '../HireMeModal'; import Button from '../reusable/Button'; import logoLight from '../../public/images/logo-light.svg'; import logoDark from '../../public/images/logo-dark.svg'; import useThemeSwitcher from '../../hooks/useThemeSwitcher'; const navLinks = [ { href: '/projects', label: 'Projects' }, { href: '/about', label: 'About Me' }, { href: '/contact', label: 'Contact' }, ]; function AppHeader() { const [showMenu, setShowMenu] = useState(false); const [showModal, setShowModal] = useState(false); const [activeTheme, setTheme, mounted] = useThemeSwitcher(); function toggleMenu() { if (!showMenu) { setShowMenu(true); } else { setShowMenu(false); } } function showHireMeModal() { if (!showModal) { if (typeof document !== 'undefined') { document.documentElement.classList.add('overflow-y-hidden'); } setShowModal(true); } else { if (typeof document !== 'undefined') { document.documentElement.classList.remove('overflow-y-hidden'); } setShowModal(false); } } return ( {/* Header */}
{/* Header menu links and small screen hamburger menu */}
Logo
{/* Theme switcher + hamburger menu small screen */}
setTheme(activeTheme)} aria-label="Theme Switcher" className="bg-primary-light dark:bg-ternary-dark p-3 shadow-sm rounded-xl cursor-pointer" > {mounted && activeTheme === 'dark' ? ( ) : ( )}
{/* Header links small screen */}
{navLinks.map((link, i) => (
0 ? ' border-t-2 pt-3 sm:pt-2 sm:border-t-0 border-primary-light dark:border-secondary-dark' : ''}`} > {link.label}
))}
{/* Header links large screen */}
{navLinks.map((link) => (
{link.label}
))}
{/* Header right section buttons */}
{/* Theme switcher large screen */}
setTheme(activeTheme)} aria-label="Theme Switcher" className="ml-8 bg-primary-light dark:bg-ternary-dark p-3 shadow-sm rounded-xl cursor-pointer" > {mounted && activeTheme === 'dark' ? ( ) : ( )}
{showModal ? ( ) : null}
); } export default AppHeader;