ZAIDX11's picture
Add files using upload-large-folder tool
c4e3b10 verified
import React, { useContext } from 'react';
import { sections } from '../constants';
import { ThemeContext } from '../App';
interface HeaderProps {
activeSection: string;
onSectionChange: (sectionId: string) => void;
}
const Header: React.FC<HeaderProps> = ({ activeSection, onSectionChange }) => {
const { theme } = useContext(ThemeContext);
const buttonBaseClasses = "relative overflow-hidden transition-all duration-300 ease-in-out py-3 px-6 text-sm font-semibold tracking-wider uppercase rounded-full backdrop-blur-lg focus:outline-none";
const darkClasses = "bg-white/5 border border-white/20 text-[#00ffff] hover:bg-white/10 hover:shadow-[0_0_30px_#00ffff] hover:-translate-y-0.5 hover:border-[#00ffff]";
const lightClasses = "bg-black/5 border border-black/20 text-[#0066cc] hover:bg-black/10 hover:shadow-[0_0_30px_#0066cc] hover:-translate-y-0.5 hover:border-[#0066cc]";
return (
<header className="fixed top-0 w-full p-5 z-50">
<nav className="w-full bg-gray-500/10 backdrop-blur-xl border border-white/10 dark:border-white/20 rounded-full">
<ul className="flex justify-center items-center p-2 flex-wrap gap-2 md:gap-4">
{sections.map(section => (
<li key={section.id}>
<button
onClick={() => onSectionChange(section.id)}
className={`${buttonBaseClasses} ${theme === 'dark' ? darkClasses : lightClasses} ${activeSection === section.id ? (theme === 'dark' ? 'bg-white/20 border-[#00ffff]' : 'bg-black/20 border-[#0066cc]') : ''}`}
>
{section.title.startsWith('🚀') ? 'Home' : section.id.replace(/-/g, ' ')}
<span className="absolute top-0 left-[-100%] w-full h-full bg-gradient-to-r from-transparent via-white/30 to-transparent transition-all duration-700 ease-in-out group-hover:left-full"></span>
</button>
</li>
))}
</ul>
</nav>
</header>
);
};
export default Header;