"use client";

import { useEffect, useState } from "react";
import { institution } from "../config/institution";
import { branding } from "../config/branding";
import { navigation } from "../content/navigation";

export function SiteHeader() {
  const [scrolled, setScrolled] = useState(false);
  const [menuOpen, setMenuOpen] = useState(false);

  useEffect(() => {
    const update = () => setScrolled(window.scrollY > 56);
    update();
    window.addEventListener("scroll", update, { passive: true });
    return () => window.removeEventListener("scroll", update);
  }, []);

  useEffect(() => {
    const closeOnEscape = (event: KeyboardEvent) => {
      if (event.key === "Escape") setMenuOpen(false);
    };

    document.documentElement.style.overflow = menuOpen ? "hidden" : "";
    window.addEventListener("keydown", closeOnEscape);
    return () => {
      document.documentElement.style.overflow = "";
      window.removeEventListener("keydown", closeOnEscape);
    };
  }, [menuOpen]);

  const closeMenu = () => setMenuOpen(false);

  return (
    <>
      <header
        className={`site-header${scrolled ? " is-scrolled" : ""}${menuOpen ? " menu-is-open" : ""}`}
      >
        <div className="utility-bar">
          <div className="shell">
            <span>Ao serviço do Laranjeiro e Feijó há mais de 50 anos</span>
            <a href={`tel:${institution.phone.replaceAll(" ", "")}`}>
              {institution.phone}
            </a>
            <a href="/contactos">Sede e extensão</a>
          </div>
        </div>
        <div className="shell header-inner">
          <a href="/" className="brand" aria-label={`${institution.name} — início`}>
            <img
              src={branding.logo}
              width="110"
              height="143"
              alt={institution.name}
            />
          </a>
          <nav className="desktop-nav" aria-label="Navegação principal">
            {navigation.map((item) => (
              <a href={item.href} key={item.href}>
                {item.label}
              </a>
            ))}
          </nav>
          <a className="button header-button" href="/inscricoes">
            Inscrições <span aria-hidden="true">↗</span>
          </a>
          <button
            className={`menu-toggle${menuOpen ? " is-open" : ""}`}
            type="button"
            aria-expanded={menuOpen}
            aria-controls="mobile-navigation"
            aria-label={menuOpen ? "Fechar menu" : "Abrir menu"}
            onClick={() => setMenuOpen((open) => !open)}
          >
            <span />
            <span />
          </button>
        </div>
      </header>
      <div
        className={`mobile-menu${menuOpen ? " is-open" : ""}`}
        id="mobile-navigation"
        aria-hidden={!menuOpen}
      >
        <div className="mobile-menu-inner shell">
          <p>Menu</p>
          <nav aria-label="Navegação móvel">
            {navigation.map((item, index) => (
              <a href={item.href} key={item.href} onClick={closeMenu} tabIndex={menuOpen ? 0 : -1}>
                <span>{String(index + 1).padStart(2, "0")}</span>
                <strong>{item.label}</strong>
                <b aria-hidden="true">↗</b>
              </a>
            ))}
          </nav>
          <div className="mobile-menu-footer">
            <a href="/inscricoes" onClick={closeMenu} tabIndex={menuOpen ? 0 : -1}>
              Iniciar inscrição
            </a>
            <a
              href={`tel:${institution.phone.replaceAll(" ", "")}`}
              onClick={closeMenu}
              tabIndex={menuOpen ? 0 : -1}
            >
              {institution.phone}
            </a>
          </div>
        </div>
      </div>
    </>
  );
}
