'use client';

import { useState, useEffect } from 'react';
import Link from 'next/link';
import { WebsiteData } from '@/lib/hbfc-data';
import {
  Menu,
  X,
  Shield,
  Sparkles,
  MapPin,
  Compass,
} from 'lucide-react';
import { motion, AnimatePresence } from 'motion/react';

interface NavbarProps {
  data: WebsiteData;
  activeSection: string;
  onNavigate?: (sectionId: string) => void;
  onOpenWalkathonModal?: () => void;
}

export function Navbar({
  data,
  activeSection,
  onNavigate,
  onOpenWalkathonModal,
}: NavbarProps) {
  const [isScrolled, setIsScrolled] = useState(false);
  const [mobileMenuOpen, setMobileMenuOpen] = useState(false);

  useEffect(() => {
    const handleScroll = () => {
      if (window.scrollY > 15) {
        setIsScrolled(true);
      } else {
        setIsScrolled(false);
      }
    };
    window.addEventListener('scroll', handleScroll);
    return () => window.removeEventListener('scroll', handleScroll);
  }, []);

  // 6 core subpages: home, about, events, membership, gallery, contact
  const navLinks = [
    { id: 'home', label: 'Home', href: '/home' },
    { id: 'about', label: 'About', href: '/about' },
    { id: 'events', label: 'Events', href: '/events' },
    { id: 'membership', label: 'Membership', href: '/membership' },
    { id: 'gallery', label: 'Gallery', href: '/gallery' },
    { id: 'contact', label: 'Contact', href: '/contact' },
  ];

  return (
    <header
      id="main-navbar"
      className={`fixed top-0 left-0 right-0 z-50 transition-all duration-300 ${
        isScrolled
          ? 'bg-white/95 backdrop-blur-md border-b border-neutral-200 shadow-sm py-2 sm:py-3'
          : 'bg-white/90 backdrop-blur-sm border-b border-neutral-100 py-2.5 sm:py-3.5'
      }`}
    >
      <div className="max-w-7xl mx-auto px-3.5 sm:px-6 lg:px-8 flex items-center justify-between">
        {/* Brand Logo & Motto */}
        <Link
          href="/home"
          id="nav-logo-btn"
          className="flex items-center gap-1.5 sm:gap-2.5 group text-left focus:outline-none min-w-0"
        >
          {/* Official Crest Logo Badge */}
          <motion.div
            whileHover={{ scale: 1.05 }}
            transition={{ type: 'spring', stiffness: 350, damping: 25 }}
            className="w-8 h-8 sm:w-10 sm:h-10 rounded-lg sm:rounded-xl bg-black border border-amber-400/60 overflow-hidden flex items-center justify-center shadow-sm shrink-0"
          >
            <img
              src="/hbfc-logo.jpg"
              alt="Healthy Billionaires Official Logo"
              className="w-full h-full object-contain p-0.5"
              referrerPolicy="no-referrer"
            />
          </motion.div>
          <div className="min-w-0">
            <div className="flex items-center gap-1 sm:gap-2">
              <span className="font-black text-neutral-900 text-[11px] sm:text-xs md:text-sm tracking-tight group-hover:text-emerald-700 transition-colors truncate">
                HEALTHY BILLIONAIRES
              </span>
              <span className="hidden md:inline-block px-1.5 py-0.5 rounded text-[9px] font-bold uppercase tracking-wider bg-amber-50 text-amber-800 border border-amber-200 shrink-0">
                Est. 2019
              </span>
            </div>
            <p className="text-[9px] sm:text-[10px] text-emerald-700 font-semibold tracking-wide flex items-center gap-1 truncate">
              <span className="truncate">{data.brand.motto}</span>
              <span className="text-neutral-400 hidden sm:inline">•</span>
              <span className="text-neutral-500 hidden sm:inline">Calabar, Nigeria</span>
            </p>
          </div>
        </Link>

        {/* Desktop Navigation Links */}
        <nav className="hidden lg:flex items-center gap-1">
          {navLinks.map((link) => {
            const isActive = activeSection === link.id;
            return (
              <Link
                key={link.id}
                href={link.href}
                id={`nav-link-${link.id}`}
                className={`relative px-3.5 py-1.5 rounded-lg text-xs font-bold uppercase tracking-wider transition-all ${
                  isActive
                    ? 'text-emerald-900 bg-emerald-50 border border-emerald-300 shadow-xs'
                    : 'text-neutral-700 hover:text-neutral-950 hover:bg-neutral-100'
                }`}
              >
                {link.label}
              </Link>
            );
          })}
        </nav>

        {/* Desktop Action Buttons: Join HBFC, Admin Login */}
        <div className="hidden sm:flex items-center gap-2.5">
          <Link
            id="nav-join-club-btn"
            href="/membership"
            className="px-4 py-2 rounded-lg text-xs font-bold uppercase tracking-wider bg-emerald-700 hover:bg-emerald-800 text-white shadow-xs border border-emerald-600 hover:shadow-sm transition-all cursor-pointer flex items-center gap-1.5 active:scale-95"
          >
            <Sparkles className="w-3.5 h-3.5 text-amber-300" />
            <span>Join HBFC</span>
          </Link>

          <Link
            id="nav-admin-link"
            href="/admin"
            title="Admin Login & Control"
            className="p-2 rounded-lg border border-neutral-200 text-neutral-600 hover:text-amber-600 hover:bg-amber-50/50 hover:border-amber-300 transition-all cursor-pointer active:scale-95 flex items-center justify-center"
          >
            <Shield className="w-4 h-4" />
          </Link>
        </div>

        {/* Mobile menu and quick action - polished and compact */}
        <div className="flex lg:hidden items-center gap-1.5 sm:gap-2 shrink-0">
          <Link
            id="mobile-register-quick-btn"
            href="/membership"
            className="px-2.5 py-1.5 rounded-lg text-[10px] sm:text-xs font-bold uppercase bg-emerald-700 hover:bg-emerald-800 text-white flex items-center gap-1 shadow-xs border border-emerald-600 active:scale-95 transition-all"
          >
            <Sparkles className="w-3 h-3 text-amber-300" />
            <span>Join HBFC</span>
          </Link>

          <button
            id="mobile-menu-btn"
            onClick={() => setMobileMenuOpen(!mobileMenuOpen)}
            className="p-1.5 sm:p-2 rounded-lg text-neutral-700 hover:text-neutral-900 bg-neutral-100 hover:bg-neutral-200 border border-neutral-200 active:scale-95 transition-all"
            aria-label="Toggle navigation menu"
          >
            {mobileMenuOpen ? <X className="w-4 h-4 sm:w-5 sm:h-5" /> : <Menu className="w-4 h-4 sm:w-5 sm:h-5" />}
          </button>
        </div>
      </div>

      {/* Mobile Drawer */}
      <AnimatePresence>
        {mobileMenuOpen && (
          <motion.div
            initial={{ opacity: 0, height: 0 }}
            animate={{ opacity: 1, height: 'auto' }}
            exit={{ opacity: 0, height: 0 }}
            transition={{ duration: 0.2 }}
            id="mobile-nav-drawer"
            className="lg:hidden bg-white/95 backdrop-blur-md border-b border-neutral-200 px-4 pt-3 pb-5 space-y-3 mt-1.5 shadow-xl overflow-hidden rounded-b-2xl mx-1"
          >
            <div className="grid grid-cols-2 gap-2 pb-3 border-b border-neutral-100">
              {navLinks.map((link) => (
                <Link
                  key={link.id}
                  href={link.href}
                  id={`mobile-nav-${link.id}`}
                  onClick={() => setMobileMenuOpen(false)}
                  className={`text-left px-3 py-2 rounded-xl text-xs font-bold uppercase tracking-wider transition-all ${
                    activeSection === link.id
                      ? 'text-emerald-900 bg-emerald-50 border border-emerald-300 shadow-xs'
                      : 'text-neutral-700 hover:text-neutral-900 hover:bg-neutral-100'
                  }`}
                >
                  {link.label}
                </Link>
              ))}
            </div>

            <div className="flex flex-col gap-2 pt-0.5">
              <Link
                href="/membership"
                id="mobile-membership-btn"
                onClick={() => setMobileMenuOpen(false)}
                className="w-full py-2.5 rounded-xl text-xs font-bold uppercase tracking-wider bg-gradient-to-r from-emerald-600 to-emerald-700 hover:from-emerald-700 hover:to-emerald-800 text-white flex items-center justify-center gap-2 shadow-sm active:scale-98 transition-all"
              >
                <Sparkles className="w-3.5 h-3.5 text-amber-300" />
                <span>Volunteer & Participate</span>
              </Link>

              <Link
                id="mobile-admin-link"
                href="/admin"
                onClick={() => setMobileMenuOpen(false)}
                className="w-full py-2.5 rounded-xl text-xs font-semibold uppercase tracking-wider bg-neutral-100 hover:bg-amber-50 border border-neutral-200 text-neutral-700 hover:text-amber-800 flex items-center justify-center gap-1.5 shadow-xs active:scale-98 transition-all"
                title="Admin Login & Control"
              >
                <Shield className="w-3.5 h-3.5 text-amber-600" />
                <span>Admin Console</span>
              </Link>
            </div>
          </motion.div>
        )}
      </AnimatePresence>
    </header>
  );
}

export default Navbar;
