'use client';

import Link from 'next/link';
import { usePathname } from 'next/navigation';
import { useEffect, useState } from 'react';
import Cookies from 'js-cookie';

/** Top navigation for the public careers portal (no sidebar). */
export default function CareersHeader() {
  const pathname = usePathname();
  const [loggedIn, setLoggedIn] = useState(false);
  const [menuOpen, setMenuOpen] = useState(false);

  useEffect(() => {
    setLoggedIn(!!Cookies.get('access_token'));
  }, [pathname]);

  // Close the mobile menu whenever the route changes.
  useEffect(() => {
    setMenuOpen(false);
  }, [pathname]);

  const navLink = (href: string, label: string) => {
    const active = pathname === href;
    return (
      <Link
        href={href}
        className={`text-sm font-semibold px-3 py-2 transition ${
          active ? 'text-[#405189]' : 'text-slate-600 hover:text-[#405189]'
        }`}
      >
        {label}
      </Link>
    );
  };

  // The nav items, reused in both the desktop bar and the mobile dropdown.
  const items = (
    <>
      {navLink('/', 'Home')}
      {navLink('/careers/jobs', 'Jobs')}
      {loggedIn ? (
        <>
          {navLink('/careers/profile', 'Profile')}
          <Link
            href="/dashboard"
            className="text-sm font-bold px-4 py-2 bg-[#405189] text-white hover:bg-[#334267] transition text-center"
          >
            My Dashboard
          </Link>
        </>
      ) : (
        <>
          <Link href="/login" className="text-sm font-semibold px-3 py-2 text-slate-600 hover:text-[#405189]">
            Login
          </Link>
          <Link
            href="/register"
            className="text-sm font-bold px-4 py-2 bg-[#405189] text-white hover:bg-[#334267] transition text-center"
          >
            Register
          </Link>
        </>
      )}
    </>
  );

  return (
    <header className="sticky top-0 z-40 bg-white border-b border-slate-200 px-4 py-5">
      <div className="max-w-6xl mx-auto flex items-center justify-between gap-2">
        <Link href="/" className="flex items-center gap-2 min-w-0">
          <span className="w-8 h-8 shrink-0 flex items-center justify-center bg-[#405189] text-white font-black">TA</span>
          <span className="font-black text-base sm:text-lg text-slate-800 tracking-tight truncate">
            Indovision <span className="text-[#405189]">Careers</span>
          </span>
        </Link>

        {/* Desktop nav */}
        <nav className="hidden md:flex items-center gap-1 sm:gap-2">
          {items}
        </nav>

        {/* Mobile hamburger */}
        <button
          type="button"
          onClick={() => setMenuOpen((o) => !o)}
          aria-label="Toggle menu"
          aria-expanded={menuOpen}
          className="md:hidden w-10 h-10 inline-flex items-center justify-center rounded text-slate-600 hover:bg-slate-100 transition"
        >
          <i className={`fa-solid ${menuOpen ? 'fa-xmark' : 'fa-bars'} text-lg`} />
        </button>
      </div>

      {/* Mobile left-side drawer */}
      {menuOpen && (
        <div className="md:hidden fixed inset-0 z-50">
          {/* overlay */}
          <div
            className="absolute inset-0 bg-slate-950/50 animate-in fade-in duration-200"
            onClick={() => setMenuOpen(false)}
          />
          {/* sliding panel from the left */}
          <nav className="absolute left-0 top-0 h-full w-72 max-w-[80%] bg-white shadow-2xl flex flex-col animate-in slide-in-from-left duration-200">
            <div className="flex items-center justify-between px-4 h-16 border-b border-slate-200">
              <span className="flex items-center gap-2">
                <span className="w-8 h-8 flex items-center justify-center bg-[#405189] text-white font-black">TA</span>
                <span className="font-black text-slate-800">Indovision <span className="text-[#405189]">Careers</span></span>
              </span>
              <button
                type="button"
                onClick={() => setMenuOpen(false)}
                aria-label="Close menu"
                className="w-9 h-9 inline-flex items-center justify-center rounded text-slate-500 hover:bg-slate-100 transition"
              >
                <i className="fa-solid fa-xmark text-lg" />
              </button>
            </div>
            <div className="flex flex-col gap-1 p-4">
              {items}
            </div>
          </nav>
        </div>
      )}
    </header>
  );
}
