// Shared chrome — Header, Footer, breadcrumbs, badges, etc.
// All scope-isolated; exports to window at end so other Babel scripts can use them.

const { useState, useMemo } = React;

// ---------- Format helpers ----------
const ISK = (n) => new Intl.NumberFormat("is-IS").format(n) + " kr";
const t = (lang, is, en) => (lang === "en" ? en : is);

// ---------- Logo (matches penninn.is mark; word + nib) ----------
function PenninnLogo({ height = 28, ink = "#1a1a1a" }) {
  return (
    <svg viewBox="0 0 220 40" height={height} aria-label="Penninn Eymundsson" style={{ display: "block" }}>
      <g fill={ink}>
        {/* Nib mark */}
        <path d="M8 6 L26 6 L20 22 L26 34 L8 34 L14 22 Z" opacity="0.95"/>
        <circle cx="17" cy="20" r="2.2" fill="#faf8f3"/>
      </g>
      <text x="36" y="20" fontFamily="'Fraunces','Cormorant Garamond',Georgia,serif" fontSize="15" fontWeight="600" letterSpacing="0.5" fill={ink}>PENNINN</text>
      <text x="36" y="34" fontFamily="'Inter',ui-sans-serif,system-ui" fontSize="9" letterSpacing="2.4" fill={ink} opacity="0.65">EYMUNDSSON</text>
    </svg>
  );
}

// ---------- Top utility strip ----------
function UtilityStrip({ lang, setLang, b2b, setB2b }) {
  return (
    <div className="util-strip">
      <div className="util-inner">
        <span className="util-pill">
          <span className="dot dot-green" /> {t(lang, "Frí heimsending yfir 15.000 kr", "Free shipping over 15.000 kr")}
        </span>
        <span className="util-sep">·</span>
        <span>{t(lang, "Sækja í verslun samdægurs", "Same-day store pickup")}</span>
        <span className="util-sep">·</span>
        <span>{t(lang, "Þjónustuver 540 2000", "Customer service 540 2000")}</span>
        <span className="util-flex" />
        <button className="util-link" onClick={() => setB2b(!b2b)}>
          {b2b ? t(lang, "Fyrirtækjasýn", "Business view") : t(lang, "Skipta í fyrirtækjasýn", "Switch to business view")}
        </button>
        <span className="util-sep">·</span>
        <button className="util-link" onClick={() => setLang(lang === "is" ? "en" : "is")}>
          {lang === "is" ? "EN" : "IS"}
        </button>
      </div>
    </div>
  );
}

// ---------- Main header (mode-aware) ----------
function Header({ mode, setMode, lang, setLang, b2b, setB2b, signedIn, setSignedIn }) {
  const accent = window.PENNINN_DATA.accents[mode] || window.PENNINN_DATA.accents.home;
  return (
    <header className="hdr" style={{ "--accent": accent.accent, "--ink": accent.ink, "--bg": accent.bg, "--soft": accent.soft, "--muted": accent.muted }}>
      <UtilityStrip lang={lang} setLang={setLang} b2b={b2b} setB2b={setB2b} />
      <div className="hdr-main">
        <a href="#home" className="hdr-logo" onClick={(e) => { e.preventDefault(); setMode("home"); }}>
          <PenninnLogo ink={accent.ink} />
        </a>
        <div className="hdr-search">
          <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><circle cx="11" cy="11" r="7"/><path d="m21 21-4.3-4.3"/></svg>
          <input placeholder={t(lang, "Leita að bókum, vörum, höfundum…", "Search books, products, authors…")} />
          <kbd>⌘K</kbd>
        </div>
        <div className="hdr-actions">
          <button className="hdr-icon" title={t(lang,"Verslanir","Stores")}>
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.6"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 1 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg>
          </button>
          <button className="hdr-icon" title={t(lang,"Óskalisti","Wishlist")}>
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.6"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
          </button>
          <button className="hdr-account" onClick={() => setSignedIn(!signedIn)} title={signedIn ? "Sigrún J." : t(lang,"Skrá inn","Sign in")}>
            {signedIn ? (
              <span className="avatar">SJ</span>
            ) : (
              <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.6"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>
            )}
          </button>
          <button className="hdr-cart">
            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.6"><path d="M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z"/><path d="M3 6h18"/><path d="M16 10a4 4 0 0 1-8 0"/></svg>
            <span>{t(lang, "Karfa", "Cart")}</span>
            <em>3</em>
          </button>
        </div>
      </div>
      <nav className="hdr-nav">
        <div className="nav-inner">
          {window.PENNINN_DATA.nav.map((n) => (
            <button
              key={n.id}
              className={"nav-item" + (mode === n.id || (mode === "furniture" && n.id === "home") ? " is-active" : "")}
              onClick={() => setMode(n.id === "home" ? "furniture" : n.id)}
            >
              {t(lang, n.is, n.en)}
            </button>
          ))}
          <span className="nav-flex" />
          <a className="nav-deal" onClick={() => setMode("deals")}>{t(lang, "Tilboð mánaðarins", "Deals this month")}</a>
          <a className="nav-biz" onClick={() => setMode("quote")}>{t(lang, "Fyrirtækjaþjónusta", "For business")}</a>
        </div>
      </nav>
    </header>
  );
}

// ---------- Pickup availability badge ----------
function PickupBadge({ stock, lang, compact = false }) {
  const stores = window.PENNINN_DATA.stores;
  const available = stores.filter((s) => (stock?.[s.id] ?? 0) > 0);
  const total = stores.length;
  if (compact) {
    return (
      <span className="pickup pickup-compact" title={available.map(s => s.name).join(", ")}>
        <span className="dot dot-green" />
        {available.length}/{total} {t(lang, "verslanir", "stores")}
      </span>
    );
  }
  return (
    <div className="pickup">
      <div className="pickup-row">
        <span className="dot dot-green" />
        <strong>{t(lang, "Sækja í verslun", "Pick up in store")}</strong>
        <span className="pickup-count">{available.length}/{total}</span>
      </div>
      <div className="pickup-stores">
        {stores.map((s) => {
          const qty = stock?.[s.id] ?? 0;
          return (
            <span key={s.id} className={"pickup-store " + (qty > 0 ? "in" : "out")} title={`${s.name}: ${qty} ${t(lang,"á lager","in stock")}`}>
              {s.short}
              {qty > 0 && <em>{qty}</em>}
            </span>
          );
        })}
      </div>
    </div>
  );
}

// ---------- Discount tag ----------
function DiscountTag({ pct, style = "ribbon" }) {
  if (!pct) return null;
  return <span className={"disc disc-" + style}>−{pct}%</span>;
}

// ---------- Breadcrumbs ----------
function Crumbs({ items }) {
  return (
    <nav className="crumbs">
      {items.map((it, i) => (
        <React.Fragment key={i}>
          {i > 0 && <span className="crumbs-sep">/</span>}
          <a className={i === items.length - 1 ? "is-here" : ""}>{it}</a>
        </React.Fragment>
      ))}
    </nav>
  );
}

// ---------- Footer ----------
function Footer({ lang }) {
  return (
    <footer className="ftr">
      <div className="ftr-top">
        <div className="ftr-brand">
          <PenninnLogo height={32} />
          <p>{t(lang,
            "Bækur, ritföng, gjafavara og húsgögn — síðan 1922.",
            "Books, stationery, gifts and furniture — since 1922.")}
          </p>
        </div>
        <div className="ftr-cols">
          <div>
            <h4>{t(lang,"Þjónusta","Service")}</h4>
            <a>{t(lang,"Hafa samband","Contact")}</a>
            <a>{t(lang,"Sendingar","Shipping")}</a>
            <a>{t(lang,"Skil","Returns")}</a>
            <a>{t(lang,"Algengar spurningar","FAQ")}</a>
          </div>
          <div>
            <h4>{t(lang,"Verslanir","Stores")}</h4>
            {window.PENNINN_DATA.stores.slice(0,4).map(s => <a key={s.id}>{s.name}</a>)}
          </div>
          <div>
            <h4>{t(lang,"Fyrirtæki","Business")}</h4>
            <a>{t(lang,"Fyrirtækjaþjónusta","Business services")}</a>
            <a>{t(lang,"Skólar","Schools")}</a>
            <a>{t(lang,"Innskráning","Sign in")}</a>
          </div>
          <div className="ftr-news">
            <h4>{t(lang,"Fáðu fréttir","Newsletter")}</h4>
            <p>{t(lang,"Nýjar bækur, tilboð, viðburðir.","New books, deals, events.")}</p>
            <form onSubmit={(e)=>e.preventDefault()}>
              <input placeholder="netfang@example.is" />
              <button>{t(lang,"Skrá","Subscribe")}</button>
            </form>
          </div>
        </div>
      </div>
      <div className="ftr-bot">
        <span>© Penninn ehf · Kt. 410169-0299</span>
        <span>{t(lang,"Hagaþing 1, 113 Reykjavík","Hagaþing 1, 113 Reykjavík")}</span>
        <span>{t(lang,"Greiðslumátar: Valitor · SaltPay · Aur · Greiðsludreifing","Payments: Valitor · SaltPay · Aur · Installments")}</span>
      </div>
    </footer>
  );
}

Object.assign(window, {
  ISK, t,
  PenninnLogo, Header, Footer,
  PickupBadge, DiscountTag, Crumbs,
});
