/* Nav.jsx — sticky nav for Cawi Media (DE/EN aware) */

const Nav = ({ variant = 'hero', current = '' }) => {
  const [scrolled, setScrolled] = React.useState(false);
  const [menuOpen, setMenuOpen] = React.useState(false);

  /* ─── i18n: detect language from URL ─── */
  /* Vercel strips trailing slashes, so '/en' and '/en/' must both count as EN. */
  const isEn = typeof window !== 'undefined' && (window.location.pathname === '/en' || window.location.pathname.startsWith('/en/'));
  const lang = isEn ? 'en' : 'de';

  const T = {
    de: {
      ariaNav: 'Hauptnavigation',
      ariaLogo: 'Cawi Media — Startseite',
      ariaMenuOpen: 'Menü öffnen',
      ariaMenuClose: 'Menü schließen',
      ariaLang: 'Sprache',
      kiAudit: 'KI-Audit',
      transformation: 'Transformation',
      ueberUns: 'Über uns',
      kontakt: 'Kontakt',
      cta: 'Gespräch buchen',
    },
    en: {
      ariaNav: 'Main navigation',
      ariaLogo: 'Cawi Media — Home',
      ariaMenuOpen: 'Open menu',
      ariaMenuClose: 'Close menu',
      ariaLang: 'Language',
      kiAudit: 'AI Audit',
      transformation: 'Transformation',
      ueberUns: 'About',
      kontakt: 'Contact',
      cta: 'Book a call',
    },
  };
  const t = T[lang];

  /* Asset path prefix: EN-pages live in /en/, so they need '../' */
  const assetPrefix = isEn ? '../' : '';

  /* Slug-aware language toggle target */
  const path = typeof window !== 'undefined' ? window.location.pathname : '/';
  const slug = (() => {
    const parts = path.split('/').filter(Boolean);
    if (isEn) {
      /* /en/<slug> or /en/ */
      const s = parts[1];
      return s || 'index.html';
    }
    return parts[0] || 'index.html';
  })();
  const toggleHref = isEn
    ? '/' + (slug === 'index.html' ? '' : slug)
    : '/en/' + (slug === 'index.html' ? '' : slug);
  const otherLangLabel = isEn ? 'DE' : 'EN';

  React.useEffect(() => {
    if (variant !== 'hero') { setScrolled(true); return; }
    const onScroll = () => setScrolled(window.scrollY > 12);
    onScroll();
    window.addEventListener('scroll', onScroll, { passive: true });
    return () => window.removeEventListener('scroll', onScroll);
  }, [variant]);

  React.useEffect(() => {
    document.body.style.overflow = menuOpen ? 'hidden' : '';
    return () => { document.body.style.overflow = ''; };
  }, [menuOpen]);

  const navStyle = {
    position: 'fixed',
    top: 0, left: 0, right: 0,
    zIndex: 100,
    transition: 'background 220ms var(--ease-out), border-color 220ms var(--ease-out), backdrop-filter 220ms var(--ease-out)',
    background: menuOpen ? '#0c0e13' : (scrolled ? 'rgba(255,255,255,0.9)' : 'transparent'),
    backdropFilter: menuOpen ? 'none' : (scrolled ? 'saturate(180%) blur(14px)' : 'none'),
    WebkitBackdropFilter: menuOpen ? 'none' : (scrolled ? 'saturate(180%) blur(14px)' : 'none'),
    borderBottom: menuOpen ? '1px solid rgba(255,255,255,0.08)' : (scrolled ? '1px solid var(--border-hairline)' : '1px solid transparent'),
  };

  const rowStyle = {
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'space-between',
    height: 72,
  };

  const dark = menuOpen || (variant === 'hero' && !scrolled);
  const textColor = dark ? '#fff' : 'var(--fg-1)';

  const linkStyle = {
    fontSize: 14,
    fontWeight: 500,
    color: textColor,
    letterSpacing: '-0.005em',
    whiteSpace: 'nowrap',
    transition: 'opacity 140ms var(--ease-out)',
  };

  const logoStyle = { display: 'inline-flex', alignItems: 'center' };
  const logoImgStyle = { height: 28, width: 'auto', display: 'block', transition: 'opacity 220ms var(--ease-out)' };

  const ctaClass = dark ? 'btn btn-white btn-sm' : 'btn btn-sm';

  const navItem = (href, label, key) => {
    const active = current === key;
    return (
      <a href={href} style={{ ...linkStyle, opacity: active ? 1 : 0.82, borderBottom: active && !dark ? '1px solid currentColor' : '1px solid transparent', paddingBottom: 2 }}>
        {label}
      </a>
    );
  };

  return (
    <nav style={navStyle} aria-label={t.ariaNav}>
      <div className="container" style={rowStyle}>
        <a href={isEn ? '/en/' : '/'} style={logoStyle} aria-label={t.ariaLogo}>
          <img src={assetPrefix + 'assets/cawi-media-logo.png'} alt="Cawi Media" style={logoImgStyle} />
        </a>

        {/* Desktop links */}
        <div style={{ display: 'flex', alignItems: 'center', gap: 36 }} className="nav-desktop">
          {navItem('ki-audit.html', t.kiAudit, 'ki-audit')}
          {navItem('transformation.html', t.transformation, 'transformation')}
          {navItem('ueber-uns.html', t.ueberUns, 'ueber-uns')}
          <a href={toggleHref} style={{ display: 'inline-flex', alignItems: 'center', gap: 6, fontSize: 12, fontWeight: 500, color: textColor, letterSpacing: '0.06em', opacity: 0.78, textDecoration: 'none' }} className="lang-switch" aria-label={t.ariaLang}>
            <span style={{ fontWeight: 600, opacity: 1 }}>{lang.toUpperCase()}</span>
            <span style={{ opacity: 0.35 }}>|</span>
            <span style={{ opacity: 0.6 }}>{otherLangLabel}</span>
          </a>
          <a href="kontakt.html" className={ctaClass} style={{ height: 38 }}>
            {t.cta}
          </a>
        </div>

        {/* Mobile hamburger */}
        <button
          type="button"
          aria-label={menuOpen ? t.ariaMenuClose : t.ariaMenuOpen}
          aria-expanded={menuOpen}
          onClick={() => setMenuOpen(o => !o)}
          className="nav-burger"
          style={{
            display: 'none',
            background: 'transparent',
            border: 0,
            padding: 8,
            cursor: 'pointer',
            color: textColor,
            width: 44,
            height: 44,
            alignItems: 'center',
            justifyContent: 'center',
          }}
        >
          <span aria-hidden style={{ position: 'relative', width: 22, height: 14, display: 'block' }}>
            <span style={{ position: 'absolute', left: 0, right: 0, top: menuOpen ? 6 : 0, height: 1.5, background: 'currentColor', transform: menuOpen ? 'rotate(45deg)' : 'none', transition: 'transform 220ms var(--ease-out), top 220ms var(--ease-out)' }} />
            <span style={{ position: 'absolute', left: 0, right: 0, top: 6, height: 1.5, background: 'currentColor', opacity: menuOpen ? 0 : 1, transition: 'opacity 160ms var(--ease-out)' }} />
            <span style={{ position: 'absolute', left: 0, right: 0, top: menuOpen ? 6 : 12, height: 1.5, background: 'currentColor', transform: menuOpen ? 'rotate(-45deg)' : 'none', transition: 'transform 220ms var(--ease-out), top 220ms var(--ease-out)' }} />
          </span>
        </button>
      </div>

      {/* Mobile drawer */}
      <div
        className="nav-mobile-drawer"
        aria-hidden={!menuOpen}
        style={{
          position: 'fixed',
          left: 0, right: 0, top: 72, bottom: 0,
          background: 'linear-gradient(180deg, #0c0e13 0%, #14171f 100%)',
          padding: 'clamp(24px, 5vw, 40px)',
          display: 'flex',
          flexDirection: 'column',
          gap: 0,
          transform: menuOpen ? 'translateY(0)' : 'translateY(-8px)',
          opacity: menuOpen ? 1 : 0,
          pointerEvents: menuOpen ? 'auto' : 'none',
          transition: 'opacity 240ms var(--ease-out), transform 240ms var(--ease-out)',
          zIndex: 99,
        }}
      >
        <div aria-hidden style={{ position: 'absolute', top: -120, right: -80, width: 380, height: 380, background: 'radial-gradient(circle, rgba(52,131,224,0.18) 0%, transparent 65%)', pointerEvents: 'none', zIndex: 0 }} />
        <div style={{ position: 'relative', zIndex: 1, display: 'flex', flexDirection: 'column', height: '100%' }}>
        {[
          ['ki-audit.html', t.kiAudit, 'ki-audit'],
          ['transformation.html', t.transformation, 'transformation'],
          ['ueber-uns.html', t.ueberUns, 'ueber-uns'],
          ['kontakt.html', t.kontakt, 'kontakt'],
        ].map(([href, label, key]) => (
          <a
            key={key}
            href={href}
            onClick={() => setMenuOpen(false)}
            style={{
              fontSize: 28,
              fontWeight: 500,
              letterSpacing: '-0.02em',
              color: current === key ? 'var(--color-accent)' : '#fff',
              padding: '20px 0',
              borderBottom: '1px solid rgba(255,255,255,0.12)',
              textDecoration: 'none',
            }}
          >
            {label}
          </a>
        ))}
        <div style={{ marginTop: 32, display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
          <a href={toggleHref} onClick={() => setMenuOpen(false)} style={{ fontSize: 12, fontWeight: 500, color: 'rgba(255,255,255,0.55)', letterSpacing: '0.08em', textDecoration: 'none' }}>
            <span style={{ fontWeight: 600, color: '#fff' }}>{lang.toUpperCase()}</span>
            <span style={{ margin: '0 8px', opacity: 0.4 }}>|</span>
            <span style={{ opacity: 0.7 }}>{otherLangLabel}</span>
          </a>
          <a href="kontakt.html" onClick={() => setMenuOpen(false)} className="btn btn-white btn-sm">{t.cta}</a>
        </div>
        </div>
      </div>

      <style>{`
        @media (max-width: 760px) {
          .nav-desktop { display: none !important; }
          .nav-burger { display: inline-flex !important; }
        }
      `}</style>
    </nav>
  );
};

window.Nav = Nav;
