const { useState: useStateNav, useEffect: useEffectNav } = React;

function Clock() {
  const [t, setT] = useStateNav(() => new Date());
  useEffectNav(() => {
    const id = setInterval(() => setT(new Date()), 1000);
    return () => clearInterval(id);
  }, []);
  const berOpts = { timeZone: "Europe/Berlin", hour: "2-digit", minute: "2-digit", hour12: false };
  const localOpts = { hour: "2-digit", minute: "2-digit", hour12: false };
  const berTime = t.toLocaleTimeString("en-GB", berOpts);
  const localTime = t.toLocaleTimeString("en-GB", localOpts);
  const tzAbbr = t.toLocaleTimeString("en-GB", { timeZoneName: "short" }).split(" ").pop();
  const showLocal = localTime !== berTime;
  return (
    <>
      <div>{berTime} BER</div>
      {showLocal && <div>{localTime} {tzAbbr}</div>}
    </>
  );
}

function Nav() {
  const [menuOpen, setMenuOpen] = useStateNav(false);
  const isHome = window.location.pathname === "/" || window.location.pathname === "/index.html";

  useEffectNav(() => {
    const val = menuOpen ? "hidden" : "";
    document.body.style.overflow = val;
    document.documentElement.style.overflow = val;
    document.documentElement.classList.toggle("menu-open", menuOpen);
    return () => {
      document.body.style.overflow = "";
      document.documentElement.style.overflow = "";
      document.documentElement.classList.remove("menu-open");
    };
  }, [menuOpen]);

  return (
    <>
      <nav className="nav">
        <a className="nav-mark" href="/" data-cursor="link">
          <span className="mark-text">Bernd&nbsp;Mantz</span>
        </a>
        <ul className="nav-list mono">
          <li><a href="/#work" data-cursor="link">Work</a></li>
          <li><a href="/work" data-cursor="link">Index</a></li>
          <li><a href="/about" data-cursor="link">About</a></li>
          <li><a href="/contact" data-cursor="link">Contact</a></li>
        </ul>
        <div className="nav-right">
          <a href="/journal" className="nav-journal mono" data-cursor="link">Journal</a>
          <div className="nav-clock mono"><Clock /></div>
          <button
            className={`nav-burger${menuOpen ? " is-open" : ""}`}
            onClick={() => setMenuOpen(o => !o)}
            aria-label={menuOpen ? "Close menu" : "Open menu"}
          >
            {menuOpen ? (
              <svg width="14" height="14" viewBox="0 0 14 14" fill="none" aria-hidden>
                <line x1="1" y1="1" x2="13" y2="13" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round"/>
                <line x1="13" y1="1" x2="1" y2="13" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round"/>
              </svg>
            ) : (
              <svg width="16" height="11" viewBox="0 0 16 11" fill="none" aria-hidden>
                <line x1="0" y1="0.75" x2="16" y2="0.75" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round"/>
                <line x1="0" y1="5.5" x2="16" y2="5.5" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round"/>
                <line x1="0" y1="10.25" x2="16" y2="10.25" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round"/>
              </svg>
            )}
          </button>
        </div>
      </nav>

      {menuOpen && (
        <div className={`mobile-menu${isHome ? "" : " mobile-menu-blur"}`} onClick={() => setMenuOpen(false)}>
          <div className="mobile-menu-inner" onClick={e => e.stopPropagation()}>
            <nav className="mobile-menu-links">
              <a href="/#work" onClick={() => setMenuOpen(false)}>Work</a>
              <a href="/work">Index</a>
              <a href="/about">About</a>
              <a href="/journal">Journal</a>
              <a href="/contact">Contact</a>
            </nav>
          </div>
        </div>
      )}
    </>
  );
}

window.Nav = Nav;
