import React, { useState } from 'react';
import { useCollege } from '../context/CollegeContext';
import {
  Bell,
  GraduationCap,
  Calendar,
  FileText,
  UserCheck,
  CreditCard,
  BookOpen,
  ChevronDown,
  Sparkles,
  ShieldCheck,
  Phone,
  Building2,
  Mail,
  SlidersHorizontal,
  Clock,
} from 'lucide-react';
import { Role } from '../types';

interface HeaderProps {
  activeTab: string;
  setActiveTab: (tab: string) => void;
  onOpenRegisterModal: () => void;
  onOpenNotifications: () => void;
  onOpenAuthModal: () => void;
  onOpenCalendarSync: () => void;
  onOpenBankPayment: () => void;
}

export const Header: React.FC<HeaderProps> = ({
  activeTab,
  setActiveTab,
  onOpenRegisterModal,
  onOpenNotifications,
  onOpenAuthModal,
  onOpenCalendarSync,
  onOpenBankPayment,
}) => {
  const { currentUser, switchRole, unreadCount, isResultsLocked } = useCollege();
  const [showRoleMenu, setShowRoleMenu] = useState(false);

  const getRoleBadge = (role: Role) => {
    switch (role) {
      case 'admin':
        return { label: 'Principal / Admin', color: 'bg-amber-100 text-amber-900 border-amber-300' };
      case 'teacher':
        return { label: 'Lecturer', color: 'bg-emerald-100 text-emerald-900 border-emerald-300' };
      case 'student':
        return { label: 'Student Portal', color: 'bg-blue-100 text-blue-900 border-blue-300' };
      case 'parent':
        return { label: 'Guardian Portal', color: 'bg-purple-100 text-purple-900 border-purple-300' };
    }
  };

  const roleInfo = getRoleBadge(currentUser.role);
  const studentLockStatus = currentUser.role === 'student' && currentUser.studentId
    ? isResultsLocked(currentUser.studentId)
    : null;

  return (
    <header className="sticky top-0 z-40 bg-slate-900 text-white border-b border-slate-800 shadow-md">
      {/* Top Banner for official institution branding & intake notice */}
      <div className="bg-gradient-to-r from-emerald-900 via-teal-900 to-slate-900 text-emerald-100 text-xs px-4 py-1.5 border-b border-emerald-800/40">
        <div className="max-w-7xl mx-auto flex flex-wrap items-center justify-between gap-2">
          <div className="flex items-center gap-3">
            <span className="font-semibold tracking-wide flex items-center gap-1.5 text-emerald-200">
              <span className="inline-block w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
              JULY 2026 INTAKE ADVERT
            </span>
            <span className="hidden sm:inline text-slate-300">|</span>
            <span className="hidden md:inline text-slate-300">Semester Opens 13th July, 2026</span>
            <span className="hidden lg:inline text-amber-300 font-medium">National Bank A/C: 1003452219 (Customs Road)</span>
          </div>
          <div className="flex items-center gap-3 text-xs">
            <span className="hidden sm:flex items-center gap-1 text-slate-300">
              <Phone className="w-3 h-3 text-emerald-400" />
              +265 1 845 384 / +265 882 497 114
            </span>
            <span className="text-slate-400">Limbe, Malawi</span>
          </div>
        </div>
      </div>

      {/* Main Top Bar - Exhaustive 3-Zone Single Row Contract */}
      <div className="max-w-7xl mx-auto px-4 sm:px-6">
        <div className="flex items-center justify-between h-16 gap-4">
          
          {/* ZONE 1: Single-line Brand Title */}
          <div className="flex items-center gap-3 shrink-0">
            <button
              onClick={() => setActiveTab('dashboard')}
              className="flex items-center gap-2.5 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-400 rounded-md"
            >
              <div className="w-10 h-10 rounded-lg bg-emerald-600 border border-emerald-400 flex items-center justify-center font-bold text-white shadow-sm">
                <GraduationCap className="w-6 h-6" />
              </div>
              <div>
                <span className="text-lg font-bold tracking-tight text-white block leading-tight whitespace-nowrap">
                  SOCHE TECHNICAL COLLEGE
                </span>
                <span className="text-[10px] tracking-wider uppercase text-emerald-400 font-semibold block leading-none">
                  Continuing Education Management
                </span>
              </div>
            </button>
          </div>

          {/* ZONE 2: 4-6 Nav links, single line, 1-2 word labels */}
          <nav className="hidden md:flex items-center gap-1 lg:gap-2">
            <button
              onClick={() => setActiveTab('dashboard')}
              className={`px-3 py-2 text-sm font-medium rounded-lg transition-colors whitespace-nowrap ${
                activeTab === 'dashboard'
                  ? 'bg-slate-800 text-white shadow-sm'
                  : 'text-slate-300 hover:text-white hover:bg-slate-800/60'
              }`}
            >
              Dashboard
            </button>

            <button
              onClick={() => setActiveTab('php-codebase')}
              className={`px-3 py-2 text-sm font-medium rounded-lg transition-colors whitespace-nowrap flex items-center gap-1.5 ${
                activeTab === 'php-codebase'
                  ? 'bg-blue-600 text-white shadow-sm font-bold'
                  : 'text-blue-300 hover:text-white hover:bg-slate-800/60'
              }`}
            >
              <FileText className="w-4 h-4 text-blue-400" />
              PHP & MySQL Codebase
            </button>

            <button
              onClick={() => setActiveTab('courses')}
              className={`px-3 py-2 text-sm font-medium rounded-lg transition-colors whitespace-nowrap ${
                activeTab === 'courses'
                  ? 'bg-slate-800 text-white shadow-sm'
                  : 'text-slate-300 hover:text-white hover:bg-slate-800/60'
              }`}
            >
              Courses & Fees
            </button>

            <button
              onClick={() => setActiveTab('academics')}
              className={`px-3 py-2 text-sm font-medium rounded-lg transition-colors whitespace-nowrap ${
                activeTab === 'academics'
                  ? 'bg-slate-800 text-white shadow-sm'
                  : 'text-slate-300 hover:text-white hover:bg-slate-800/60'
              }`}
            >
              Grades & Attendance
            </button>

            <button
              onClick={() => setActiveTab('learning-hub')}
              className={`px-3 py-2 text-sm font-medium rounded-lg transition-colors whitespace-nowrap ${
                activeTab === 'learning-hub'
                  ? 'bg-slate-800 text-white shadow-sm'
                  : 'text-slate-300 hover:text-white hover:bg-slate-800/60'
              }`}
            >
              Study Hub
            </button>

            <button
              onClick={() => setActiveTab('messages')}
              className={`px-3 py-2 text-sm font-medium rounded-lg transition-colors whitespace-nowrap ${
                activeTab === 'messages'
                  ? 'bg-slate-800 text-white shadow-sm'
                  : 'text-slate-300 hover:text-white hover:bg-slate-800/60'
              }`}
            >
              Messages
            </button>

            <button
              onClick={onOpenCalendarSync}
              className="px-3 py-2 text-sm font-medium text-slate-300 hover:text-white hover:bg-slate-800/60 rounded-lg transition-colors whitespace-nowrap flex items-center gap-1.5"
            >
              <Calendar className="w-4 h-4 text-emerald-400" />
              Calendar
            </button>
          </nav>

          {/* ZONE 3: 1-2 Primary actions & Quick Switch */}
          <div className="flex items-center gap-2 sm:gap-3 shrink-0">
            {/* Admission Application CTA */}
            <button
              onClick={onOpenRegisterModal}
              className="hidden sm:inline-flex items-center gap-1.5 bg-emerald-600 hover:bg-emerald-500 text-white text-xs font-semibold px-3.5 py-2 rounded-lg transition shadow-sm whitespace-nowrap active:scale-95"
            >
              <FileText className="w-3.5 h-3.5" />
              Apply / Register
            </button>

            {/* Pay via Bank CTA */}
            <button
              onClick={onOpenBankPayment}
              className="hidden lg:inline-flex items-center gap-1.5 bg-slate-800 hover:bg-slate-700 text-amber-300 border border-amber-500/30 text-xs font-semibold px-3 py-2 rounded-lg transition shadow-sm whitespace-nowrap"
            >
              <CreditCard className="w-3.5 h-3.5 text-amber-400" />
              Pay Fees (Bank)
            </button>

            {/* Notification Bell */}
            <button
              onClick={onOpenNotifications}
              aria-label="View notifications"
              className="relative p-2 text-slate-300 hover:text-white hover:bg-slate-800 rounded-lg transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-400"
            >
              <Bell className="w-5 h-5" />
              {unreadCount > 0 && (
                <span className="absolute top-1 right-1 w-4 h-4 bg-rose-500 text-[10px] font-bold rounded-full flex items-center justify-center text-white ring-2 ring-slate-900">
                  {unreadCount}
                </span>
              )}
            </button>

            {/* User Profile & Role Switcher */}
            <div className="relative">
              <button
                onClick={() => setShowRoleMenu(!showRoleMenu)}
                className="flex items-center gap-2 p-1.5 sm:px-3 sm:py-1.5 bg-slate-800 hover:bg-slate-700 border border-slate-700 rounded-lg text-left transition focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-400"
              >
                <img
                  src={currentUser.avatarUrl || 'https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=100&auto=format&fit=crop&q=80'}
                  alt={currentUser.name}
                  className="w-7 h-7 rounded-full object-cover border border-slate-600"
                />
                <div className="hidden sm:block text-left max-w-[130px]">
                  <div className="text-xs font-semibold text-white truncate">{currentUser.name}</div>
                  <div className="text-[10px] text-slate-400 truncate">{roleInfo.label}</div>
                </div>
                <ChevronDown className="w-3.5 h-3.5 text-slate-400" />
              </button>

              {/* Role Dropdown */}
              {showRoleMenu && (
                <div className="absolute right-0 mt-2 w-72 bg-slate-800 border border-slate-700 rounded-xl shadow-xl py-2 z-50 animate-in fade-in slide-in-from-top-2">
                  <div className="px-4 py-2 border-b border-slate-700">
                    <p className="text-xs font-semibold text-slate-300">Signed in as</p>
                    <p className="text-sm font-bold text-white truncate">{currentUser.name}</p>
                    <p className="text-xs text-emerald-400 font-mono truncate">{currentUser.email}</p>
                    <div className="mt-1">
                      <span className={`inline-block text-[10px] px-2 py-0.5 rounded font-semibold border ${roleInfo.color}`}>
                        {roleInfo.label}
                      </span>
                    </div>
                  </div>

                  <div className="px-2 py-2">
                    <p className="px-2 pb-1 text-[10px] font-bold uppercase tracking-wider text-slate-400">
                      Quick Demo Role Switcher
                    </p>

                    <button
                      onClick={() => {
                        switchRole('admin', 'user-admin-1');
                        setShowRoleMenu(false);
                      }}
                      className={`w-full text-left px-3 py-2 text-xs rounded-md transition flex items-center justify-between ${
                        currentUser.role === 'admin' && currentUser.id === 'user-admin-1'
                          ? 'bg-emerald-600/20 text-emerald-300 font-medium'
                          : 'text-slate-300 hover:bg-slate-700'
                      }`}
                    >
                      <div className="flex items-center gap-2">
                        <ShieldCheck className="w-4 h-4 text-amber-400" />
                        <div>
                          <div>Dr. Eddie Njunga</div>
                          <div className="text-[10px] text-slate-400">Principal & Registrar</div>
                        </div>
                      </div>
                    </button>

                    <button
                      onClick={() => {
                        switchRole('admin', 'user-accounts-1');
                        setShowRoleMenu(false);
                      }}
                      className={`w-full text-left px-3 py-2 text-xs rounded-md transition flex items-center justify-between ${
                        currentUser.role === 'admin' && currentUser.id === 'user-accounts-1'
                          ? 'bg-emerald-600/20 text-emerald-300 font-medium'
                          : 'text-slate-300 hover:bg-slate-700'
                      }`}
                    >
                      <div className="flex items-center gap-2">
                        <CreditCard className="w-4 h-4 text-emerald-400" />
                        <div>
                          <div>Mr. T. Mweghama</div>
                          <div className="text-[10px] text-slate-400">Senior Accounts / Bursar</div>
                        </div>
                      </div>
                    </button>

                    <button
                      onClick={() => {
                        switchRole('teacher', 'user-teacher-1');
                        setShowRoleMenu(false);
                      }}
                      className={`w-full text-left px-3 py-2 text-xs rounded-md transition flex items-center justify-between ${
                        currentUser.role === 'teacher' && currentUser.id === 'user-teacher-1'
                          ? 'bg-emerald-600/20 text-emerald-300 font-medium'
                          : 'text-slate-300 hover:bg-slate-700'
                      }`}
                    >
                      <div className="flex items-center gap-2">
                        <BookOpen className="w-4 h-4 text-blue-400" />
                        <div>
                          <div>Eng. Patrick Chisale</div>
                          <div className="text-[10px] text-emerald-400">Commissioned Exam Officer (Active)</div>
                        </div>
                      </div>
                    </button>

                    <button
                      onClick={() => {
                        switchRole('teacher', 'user-teacher-2');
                        setShowRoleMenu(false);
                      }}
                      className={`w-full text-left px-3 py-2 text-xs rounded-md transition flex items-center justify-between ${
                        currentUser.role === 'teacher' && currentUser.id === 'user-teacher-2'
                          ? 'bg-amber-600/20 text-amber-300 font-medium'
                          : 'text-slate-300 hover:bg-slate-700'
                      }`}
                    >
                      <div className="flex items-center gap-2">
                        <Clock className="w-4 h-4 text-amber-400" />
                        <div>
                          <div>Grace Chiumia (Accounting)</div>
                          <div className="text-[10px] text-amber-400 font-semibold">Pending Principal Approval</div>
                        </div>
                      </div>
                    </button>

                    <button
                      onClick={() => {
                        switchRole('teacher', 'user-teacher-3');
                        setShowRoleMenu(false);
                      }}
                      className={`w-full text-left px-3 py-2 text-xs rounded-md transition flex items-center justify-between ${
                        currentUser.role === 'teacher' && currentUser.id === 'user-teacher-3'
                          ? 'bg-indigo-600/20 text-indigo-300 font-medium'
                          : 'text-slate-300 hover:bg-slate-700'
                      }`}
                    >
                      <div className="flex items-center gap-2">
                        <BookOpen className="w-4 h-4 text-indigo-400" />
                        <div>
                          <div>Mr. Bright Kumwenda</div>
                          <div className="text-[10px] text-slate-400">Classwork Only (Exam Prep Locked)</div>
                        </div>
                      </div>
                    </button>

                    <button
                      onClick={() => {
                        switchRole('student', 'user-student-2');
                        setShowRoleMenu(false);
                      }}
                      className={`w-full text-left px-3 py-2 text-xs rounded-md transition flex items-center justify-between ${
                        currentUser.id === 'user-student-2'
                          ? 'bg-emerald-600/20 text-emerald-300 font-medium'
                          : 'text-slate-300 hover:bg-slate-700'
                      }`}
                    >
                      <div className="flex items-center gap-2">
                        <GraduationCap className="w-4 h-4 text-rose-400" />
                        <div>
                          <div>Chimwemwe Phiri (ICT)</div>
                          <div className="text-[10px] text-amber-400 font-semibold">Fee Due (MK54k) - Results Locked</div>
                        </div>
                      </div>
                    </button>

                    <button
                      onClick={() => {
                        switchRole('student', 'user-student-1');
                        setShowRoleMenu(false);
                      }}
                      className={`w-full text-left px-3 py-2 text-xs rounded-md transition flex items-center justify-between ${
                        currentUser.id === 'user-student-1'
                          ? 'bg-emerald-600/20 text-emerald-300 font-medium'
                          : 'text-slate-300 hover:bg-slate-700'
                      }`}
                    >
                      <div className="flex items-center gap-2">
                        <GraduationCap className="w-4 h-4 text-emerald-400" />
                        <div>
                          <div>Kondwani Banda (ICAM)</div>
                          <div className="text-[10px] text-emerald-400">Fees Cleared (Results Accessible)</div>
                        </div>
                      </div>
                    </button>

                    <button
                      onClick={() => {
                        switchRole('parent', 'user-parent-1');
                        setShowRoleMenu(false);
                      }}
                      className={`w-full text-left px-3 py-2 text-xs rounded-md transition flex items-center justify-between ${
                        currentUser.role === 'parent'
                          ? 'bg-emerald-600/20 text-emerald-300 font-medium'
                          : 'text-slate-300 hover:bg-slate-700'
                      }`}
                    >
                      <div className="flex items-center gap-2">
                        <UserCheck className="w-4 h-4 text-purple-400" />
                        <div>
                          <div>Mr. William Phiri</div>
                          <div className="text-[10px] text-slate-400">Guardian of Chimwemwe</div>
                        </div>
                      </div>
                    </button>
                  </div>

                  <div className="px-2 pt-2 border-t border-slate-700">
                    <button
                      onClick={() => {
                        setShowRoleMenu(false);
                        onOpenAuthModal();
                      }}
                      className="w-full text-center px-3 py-2 text-xs text-emerald-400 hover:text-white hover:bg-emerald-600/20 rounded-md font-semibold transition flex items-center justify-center gap-1.5"
                    >
                      <Mail className="w-3.5 h-3.5" />
                      Login via Email Verification
                    </button>
                  </div>
                </div>
              )}
            </div>
          </div>
        </div>

        {/* Mobile Sub-Navigation */}
        <div className="md:hidden flex items-center justify-between overflow-x-auto py-2.5 border-t border-slate-800 gap-2 no-scrollbar">
          <button
            onClick={() => setActiveTab('dashboard')}
            className={`px-3 py-1.5 text-xs font-medium rounded-md whitespace-nowrap ${
              activeTab === 'dashboard' ? 'bg-slate-800 text-white font-semibold' : 'text-slate-400'
            }`}
          >
            Dashboard
          </button>
          <button
            onClick={() => setActiveTab('php-codebase')}
            className={`px-3 py-1.5 text-xs font-medium rounded-md whitespace-nowrap ${
              activeTab === 'php-codebase' ? 'bg-blue-600 text-white font-bold' : 'text-blue-300'
            }`}
          >
            PHP & MySQL Code
          </button>
          <button
            onClick={() => setActiveTab('courses')}
            className={`px-3 py-1.5 text-xs font-medium rounded-md whitespace-nowrap ${
              activeTab === 'courses' ? 'bg-slate-800 text-white font-semibold' : 'text-slate-400'
            }`}
          >
            Courses & Fees
          </button>
          <button
            onClick={() => setActiveTab('academics')}
            className={`px-3 py-1.5 text-xs font-medium rounded-md whitespace-nowrap ${
              activeTab === 'academics' ? 'bg-slate-800 text-white font-semibold' : 'text-slate-400'
            }`}
          >
            Grades & Attendance
          </button>
          <button
            onClick={() => setActiveTab('learning-hub')}
            className={`px-3 py-1.5 text-xs font-medium rounded-md whitespace-nowrap ${
              activeTab === 'learning-hub' ? 'bg-slate-800 text-white font-semibold' : 'text-slate-400'
            }`}
          >
            Study Hub
          </button>
          <button
            onClick={() => setActiveTab('messages')}
            className={`px-3 py-1.5 text-xs font-medium rounded-md whitespace-nowrap ${
              activeTab === 'messages' ? 'bg-slate-800 text-white font-semibold' : 'text-slate-400'
            }`}
          >
            Messages
          </button>
          <button
            onClick={onOpenRegisterModal}
            className="px-3 py-1.5 text-xs font-semibold rounded-md bg-emerald-600 text-white whitespace-nowrap"
          >
            Apply Now
          </button>
        </div>
      </div>
    </header>
  );
};
