tv-game's picture
Upload components/Navbar.jsx with huggingface_hub
58f2ded verified
Raw
History Blame Contribute Delete
2.98 kB
import { useState, useEffect } from 'react';
import { motion } from 'framer-motion';
export default function Navbar() {
const [scrolled, setScrolled] = useState(false);
const [menuOpen, setMenuOpen] = useState(false);
useEffect(() => {
const handleScroll = () => {
setScrolled(window.scrollY > 50);
};
window.addEventListener('scroll', handleScroll);
return () => window.removeEventListener('scroll', handleScroll);
}, []);
const navItems = [
{ name: '讘讬转', href: '#home' },
{ name: '砖讬专讜转讬诐', href: '#services' },
{ name: '注诇讬谞讜', href: '#about' },
{ name: '爪讜专 拽砖专', href: '#contact' },
];
return (
<motion.nav
initial={{ y: -100 }}
animate={{ y: 0 }}
className={`fixed top-0 left-0 right-0 z-50 transition-all duration-500 ${
scrolled ? 'glass py-3' : 'bg-transparent py-6'
}`}
>
<div className="max-w-7xl mx-auto px-6 flex items-center justify-between">
<motion.a
href="#home"
className="text-2xl font-bold gradient-text"
whileHover={{ scale: 1.05 }}
>
谞讜讙讛
</motion.a>
<div className="hidden md:flex items-center gap-8">
{navItems.map((item, i) => (
<motion.a
key={item.name}
href={item.href}
initial={{ opacity: 0, y: -20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ delay: i * 0.1 }}
className="text-gray-300 hover:text-white transition-colors relative group"
>
{item.name}
<span className="absolute -bottom-1 left-0 w-0 h-0.5 bg-gradient-to-r from-purple-500 to-pink-500 group-hover:w-full transition-all duration-300" />
</motion.a>
))}
</div>
<button
onClick={() => setMenuOpen(!menuOpen)}
className="md:hidden text-white p-2"
>
<svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
{menuOpen ? (
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" />
) : (
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M4 6h16M4 12h16M4 18h16" />
)}
</svg>
</button>
</div>
{menuOpen && (
<motion.div
initial={{ opacity: 0, height: 0 }}
animate={{ opacity: 1, height: 'auto' }}
className="md:hidden glass border-t border-white/10"
>
{navItems.map((item) => (
<a
key={item.name}
href={item.href}
onClick={() => setMenuOpen(false)}
className="block py-4 px-6 text-gray-300 hover:text-white hover:bg-white/5 transition-colors"
>
{item.name}
</a>
))}
</motion.div>
)}
</motion.nav>
);
}