// Simple hash routes: #/terms, #/privacy, #/guidelines, #/contact (+ SL aliases)

function linkifyEmails(text) {
  const re = /([a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,})/gi;
  const parts = String(text).split(re);
  return parts.map((part, i) =>
    /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$/i.test(part)
      ? <a key={i} href={`mailto:${part}`} className="static-page-mail">{part}</a>
      : part
  );
}

function readStaticPageFromHash() {
  let raw = (window.location.hash || "").slice(1);
  if (raw.startsWith("/")) raw = raw.slice(1);
  if (!raw || raw.toLowerCase().startsWith("izvajalec/") || raw.toLowerCase().startsWith("blog")) return null;
  const seg = raw.split("/")[0].toLowerCase();
  const map = {
    terms: "terms",
    pogoji: "terms",
    privacy: "privacy",
    zasebnost: "privacy",
    guidelines: "guidelines",
    smernice: "guidelines",
    contact: "contact",
    kontakt: "contact",
    cookies: "cookies",
    piskotki: "cookies",
  };
  return map[seg] || null;
}

const STATIC_COPY = {
  terms: {
    sl: {
      title: "Pogoji uporabe",
      sections: [
        {
          h: "1. Splošno",
          p: [
            "Storitev likovne-delavnice.si (v nadaljevanju: stran) je informativni vodič po likovnih delavnicah in ustvarjalnih tečajih v Sloveniji. Z uporabo strani sprejemaš te pogoje.",
            "Upravljavec je v fazi vzpostavitve; kontakt za vprašanja glede pogojev je na strani Kontakt.",
          ],
        },
        {
          h: "2. Vsebina in zunanje povezave",
          p: [
            "Podatki o delavnicah so zbrani iz javno dostopnih virov in pri izvajalcih. Ne jamčimo za popolnost, cene ali razpoložljivost mest — vedno preveri podrobnosti na uradni strani izvajalca.",
            "Stran lahko vsebuje povezave na tretje strani. Za njihovo vsebino odgovarajo izključno lastniki teh strani.",
          ],
        },
        {
          h: "3. Ocene in mnenja",
          p: [
            "Uporabniške ocene in mnenja izražajo mnenja posameznikov, ne mnenje upravljavca strani. Objavljanje žaljive, zavajajoče ali nezakonite vsebine ni dovoljeno.",
          ],
        },
        {
          h: "4. Omejitev odgovornosti",
          p: [
            "Stran in njena vsebina sta na voljo »kot sta«. V največji dopustni meri po zakonu izključujemo odgovornost za škodo, ki bi nastala zaradi zanašanja na informacije na strani.",
          ],
        },
      ],
    },
    en: {
      title: "Terms of use",
      sections: [
        {
          h: "1. General",
          p: [
            "likovne-delavnice.si (the “site”) is an informational guide to art and creative workshops in Slovenia. By using the site you accept these terms.",
            "The operator is being established; use the Contact page for questions about these terms.",
          ],
        },
        {
          h: "2. Content and external links",
          p: [
            "Workshop listings are compiled from public sources and providers. We do not guarantee completeness, pricing or availability — always confirm details on the host’s official website.",
            "The site may link to third-party websites; their owners are solely responsible for their content.",
          ],
        },
        {
          h: "3. Ratings and reviews",
          p: [
            "User ratings and reviews reflect individual opinions, not the site operator. Posting abusive, misleading or unlawful content is not allowed.",
          ],
        },
        {
          h: "4. Limitation of liability",
          p: [
            "The site is provided “as is”. To the fullest extent permitted by law, we disclaim liability for loss arising from reliance on information on the site.",
          ],
        },
      ],
    },
  },
  privacy: {
    sl: {
      title: "Zasebnost",
      sections: [
        {
          h: "1. Kaj zbiramo",
          p: [
            "Pri prijavi (demo) lahko shranimo ime in e-naslov, ki ju vneseš v obrazec. Priljubljene delavnice, ocene in mnenja se lahko shranijo v brskalniku (localStorage) na tvoji napravi.",
            "Ob obisku strežnik lahko zabeleži standardne tehnične podatke (npr. IP, čas zahtevka) v skladu z uredbo strežnika.",
          ],
        },
        {
          h: "2. Namen obdelave",
          p: [
            "Podatke uporabljamo za delovanje strani (npr. prijava, shranjevanje priljubljenih), izboljšanje vsebine in, kjer je dogovorjeno, komunikacijo z izvajalci delavnic.",
          ],
        },
        {
          h: "3. Piškotki",
          p: [
            "Stran lahko uporablja nujne piškotke za delovanje seje. Če dodamo analitiko ali marketing, bomo posodobili to stran in kjer je potrebno, prosili za soglasje.",
          ],
        },
        {
          h: "4. Tvoje pravice",
          p: [
            "Lahko zahtevaš vpogled, popravek ali izbris podatkov, kjer to zakon dopušča. Za zahteve uporabi kontakt na strani Kontakt.",
          ],
        },
      ],
    },
    en: {
      title: "Privacy",
      sections: [
        {
          h: "1. What we collect",
          p: [
            "If you sign in (demo), we may store the name and email you enter. Favourites, ratings and reviews may be stored in your browser (localStorage) on your device.",
            "Our server may log standard technical data (e.g. IP, request time) as configured on the server.",
          ],
        },
        {
          h: "2. How we use data",
          p: [
            "We use data to run the site (e.g. sign-in, saved favourites), improve content and, where agreed, communicate with workshop hosts.",
          ],
        },
        {
          h: "3. Cookies",
          p: [
            "The site may use essential cookies for sessions. If we add analytics or marketing, we will update this page and ask for consent where required.",
          ],
        },
        {
          h: "4. Your rights",
          p: [
            "You may request access, correction or deletion of personal data where the law allows. Use the Contact page for requests.",
          ],
        },
      ],
    },
  },
  guidelines: {
    sl: {
      title: "Smernice za izvajalce",
      sections: [
        {
          h: "Kdo lahko odda delavnico",
          p: [
            "Na stran lahko oddaš delavnico, če si izvajalec ali pooblaščena oseba in imaš pravico oglaševati program.",
          ],
        },
        {
          h: "Natančni podatki",
          p: [
            "Navedi resničen naziv, lokacijo, ceno (ali okvir), trajanje in povezavo do uradne strani ali prijavnice. Ne zavajaj glede vsebine ali kvalifikacij.",
          ],
        },
        {
          h: "Fotografije",
          p: [
            "Uporabi fotografije, za katere imaš pravice. Če uporabiš tuje fotografije, navedi vir ali pridobi dovoljenje.",
          ],
        },
        {
          h: "Pregled in objava",
          p: [
            "Oddane vnose lahko uredniško pregledamo. Obdržimo si pravico, da neobjavimo vnosov, ki kršijo zakon ali te smernice.",
          ],
        },
      ],
    },
    en: {
      title: "Guidelines for hosts",
      sections: [
        {
          h: "Who may submit",
          p: [
            "You may submit a workshop if you are the host or authorised to advertise the programme.",
          ],
        },
        {
          h: "Accurate information",
          p: [
            "Provide a truthful title, location, price (or range), duration and a link to your official site or booking page. Do not misrepresent content or qualifications.",
          ],
        },
        {
          h: "Photos",
          p: [
            "Use images you have the right to use. If you use third-party photos, credit the source or obtain permission.",
          ],
        },
        {
          h: "Review and publication",
          p: [
            "We may editorially review submissions. We may decline listings that violate the law or these guidelines.",
          ],
        },
      ],
    },
  },
  contact: {
    sl: {
      title: "Kontakt",
      sections: [
        {
          h: "Splošna vprašanja",
          p: [
            "Piši na likovne.delavnice@yahoo.com — odgovorimo v 2–3 delovnih dneh.",
          ],
        },
        {
          h: "Izvajalci in promocija",
          p: [
            "Za predstavitev delavnice ali promocijska mesta: likovne.delavnice@yahoo.com",
          ],
        },
        {
          h: "Pritožbe na vsebino",
          p: [
            "Če meniš, da vnos krši tvoje pravice ali je netočen, nas obvesti na isti naslov z jasnim opisom in povezavo na delavnico.",
          ],
        },
      ],
    },
    en: {
      title: "Contact",
      sections: [
        {
          h: "General enquiries",
          p: [
            "Email likovne.delavnice@yahoo.com — we aim to reply within 2–3 business days.",
          ],
        },
        {
          h: "Hosts and promotion",
          p: [
            "For listings or promotional placements: likovne.delavnice@yahoo.com",
          ],
        },
        {
          h: "Content concerns",
          p: [
            "If you believe a listing infringes your rights or is inaccurate, email us with a clear description and link to the workshop.",
          ],
        },
      ],
    },
  },
  cookies: {
    sl: {
      title: "Politika piškotkov",
      sections: [
        {
          h: "Kaj so piškotki",
          p: [
            "Piškotki so majhne besedilne datoteke, ki jih spletna stran shrani v tvoj brskalnik ob obisku. Omogočajo, da si stran zapomni tvoje nastavitve in preference med sejami.",
          ],
        },
        {
          h: "Piškotki, ki jih uporabljamo",
          p: [
            "Nujni piškotki (localStorage): za shranjevanje priljubljenih delavnic, jezikovne nastavitve in stanja seje. Ti so nujni za delovanje strani in ne zahtevajo soglasja.",
            "Oglaševalski piškotki: stran prikazuje oglaševalske vsebine izvajalcev delavnic. Oglaševalski partnerji lahko shranjujejo piškotke v tvojem brskalniku za namen prikazovanja ustreznih oglasov. Teh piškotkov ne potrebuješ za osnovno delovanje strani.",
            "Analitični piškotki: za merjenje obiskanosti strani. Ob uvedbi posameznega orodja bomo posodobili to politiko.",
          ],
        },
        {
          h: "Upravljanje piškotkov",
          p: [
            "Nujne piškotke lahko odstraniš z brisanjem podatkov brskalnika (localStorage). V večini brskalnikov to storiš v nastavitvah pod »Zasebnost« ali »Piškotki«.",
            "Popolna blokada vseh piškotkov bo onemogočila shranjevanje priljubljenih in jezikovne preference.",
          ],
        },
        {
          h: "Spremembe politike",
          p: [
            "Ob spremembi politike piškotkov bomo posodobili to stran in kjer je potrebno, znova zaprosili za soglasje. Datum zadnje spremembe: april 2026.",
          ],
        },
        {
          h: "Kontakt",
          p: [
            "Za vprašanja glede piškotkov nas kontaktiraj na likovne.delavnice@yahoo.com.",
          ],
        },
      ],
    },
    en: {
      title: "Cookie policy",
      sections: [
        {
          h: "What are cookies",
          p: [
            "Cookies are small text files that a website stores in your browser when you visit. They allow the site to remember your settings and preferences between sessions.",
          ],
        },
        {
          h: "Cookies we use",
          p: [
            "Essential cookies (localStorage): to store saved workshops, language preference, and session state. These are required for the site to function and do not require consent.",
            "Advertising cookies: the site displays promotional content from workshop hosts. Advertising partners may store cookies in your browser to show relevant ads. These are not required for the site's basic functionality.",
            "Analytics cookies: for measuring site traffic. We will update this policy when any specific tool is introduced.",
          ],
        },
        {
          h: "Managing cookies",
          p: [
            "You can remove essential cookies by clearing your browser's data (localStorage). In most browsers this is under Settings → Privacy → Cookies or Site Data.",
            "Blocking all cookies will disable saved favourites and language preferences.",
          ],
        },
        {
          h: "Policy changes",
          p: [
            "If this policy changes, we will update this page and re-request consent where required. Last updated: April 2026.",
          ],
        },
        {
          h: "Contact",
          p: [
            "For questions about cookies, contact us at likovne.delavnice@yahoo.com.",
          ],
        },
      ],
    },
  },
};

function StaticPage({ slug, onBack }) {
  const lang = React.useContext(LangContext);
  const t = useT();
  const copy = STATIC_COPY[slug] && STATIC_COPY[slug][lang === "en" ? "en" : "sl"];
  if (!copy) {
    return (
      <div className="static-page-wrap">
        <button type="button" className="host-back mono tiny" onClick={onBack}>{t.staticBackHome}</button>
        <p className="mono tiny muted">{lang === "en" ? "Page not found." : "Stran ne obstaja."}</p>
      </div>
    );
  }

  return (
    <div className="static-page-wrap">
      <button type="button" className="host-back mono tiny" onClick={onBack}>{t.staticBackHome}</button>
      <article className="static-page-article">
        <h1 className="static-page-title">{copy.title}</h1>
        {copy.sections.map((sec, i) => (
          <section key={i} className="static-page-section">
            {sec.h ? <h2>{sec.h}</h2> : null}
            {sec.p.map((para, j) => (
              <p key={j}>{linkifyEmails(para)}</p>
            ))}
          </section>
        ))}
      </article>
    </div>
  );
}

const COOKIE_KEY = "ld_cookie_consent";

function CookieBanner({ lang }) {
  const [visible, setVisible] = React.useState(() => {
    try { return !localStorage.getItem(COOKIE_KEY); } catch { return true; }
  });

  if (!visible) return null;

  const acceptAll = () => {
    try { localStorage.setItem(COOKIE_KEY, "all"); } catch {}
    setVisible(false);
    if (typeof window.initGoogleAnalytics === "function") window.initGoogleAnalytics();
  };
  const acceptEssential = () => {
    try { localStorage.setItem(COOKIE_KEY, "essential"); } catch {}
    setVisible(false);
  };

  const sl = lang !== "en";
  return (
    <div className="cookie-banner" role="dialog" aria-live="polite">
      <div className="cookie-banner-text">
        <span className="mono tiny" style={{ fontWeight: 600, marginRight: 6 }}>
          🍪 {sl ? "Piškotki" : "Cookies"}
        </span>
        {sl
          ? "Uporabljamo nujne piškotke za delovanje strani ter oglaševalske piškotke za prikaz ustreznih vsebin izvajalcev. Sprejemaš vse ali samo nujne?"
          : "We use essential cookies for site functionality and advertising cookies to show relevant workshop content. Accept all or essential only?"}
        {" "}
        <a className="cookie-banner-link" href="#/piskotki">{sl ? "Več o piškotkih" : "Cookie policy"}</a>
      </div>
      <div className="cookie-banner-actions">
        <button type="button" className="cookie-btn-essential" onClick={acceptEssential}>
          {sl ? "Samo nujni" : "Essential only"}
        </button>
        <button type="button" className="cookie-btn-accept" onClick={acceptAll}>
          {sl ? "Sprejmi vse →" : "Accept all →"}
        </button>
      </div>
    </div>
  );
}

Object.assign(window, { readStaticPageFromHash, StaticPage, STATIC_COPY, CookieBanner });
