Spaces:
Build error
Build error
| 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> | |
| ); | |
| } |