// Markdown legal page renderer.
// Fetches a .md file from legal/content/{slug-lang}.md, parses frontmatter,
// renders with `marked`. Frontmatter expected: title, lastUpdated, version.

/* eslint no-undef:0 */
const MarkdownPage = ({ slugBase, eyebrowTr, eyebrowEn }) => {
  const { lang } = useI18n();
  const tr = lang === 'tr';
  const slug = `${slugBase}-${lang}`;
  const [state, setState] = React.useState({ loading: true, error: null, frontmatter: {}, html: '' });

  React.useEffect(() => {
    let cancelled = false;
    setState({ loading: true, error: null, frontmatter: {}, html: '' });
    fetch(`content/${slug}.md`)
      .then(r => {
        if (!r.ok) throw new Error('Markdown not found: ' + slug);
        return r.text();
      })
      .then(text => {
        if (cancelled) return;
        // Parse frontmatter
        const fm = {};
        const m = text.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
        const body = m ? m[2] : text;
        if (m) {
          m[1].split('\n').forEach(line => {
            const idx = line.indexOf(':');
            if (idx === -1) return;
            const k = line.slice(0, idx).trim();
            let v = line.slice(idx + 1).trim();
            v = v.replace(/^["']|["']$/g, '');
            fm[k] = v;
          });
        }
        // Render with marked (assumed available globally)
        const html = window.marked
          ? window.marked.parse(body, { headerIds: false, mangle: false })
          : '<pre>' + body.replace(/</g, '&lt;') + '</pre>';
        setState({ loading: false, error: null, frontmatter: fm, html });
      })
      .catch(err => {
        if (!cancelled) setState({ loading: false, error: err.message, frontmatter: {}, html: '' });
      });
    return () => { cancelled = true; };
  }, [slug]);

  const title = (state.frontmatter.title || (tr ? 'Yasal' : 'Legal')).replace(/^["']|["']$/g, '');
  const lastUpdated = state.frontmatter.lastUpdated
    ? (tr ? 'Son güncelleme: ' : 'Last updated: ') + state.frontmatter.lastUpdated
    : '';

  return (
    <LegalShell
      eyebrow={tr ? eyebrowTr : eyebrowEn}
      title={title}
      lastUpdated={lastUpdated}
    >
      {state.loading && (
        <p style={{ color: 'var(--text-muted)' }}>
          {tr ? 'Yükleniyor…' : 'Loading…'}
        </p>
      )}
      {state.error && (
        <div className="legal-callout">
          <b>{tr ? 'İçerik yüklenemedi.' : 'Could not load content.'}</b><br/>
          {state.error}
        </div>
      )}
      {!state.loading && !state.error && (
        // Title is already in shell — strip the leading <h1> from rendered html.
        <div dangerouslySetInnerHTML={{ __html: state.html.replace(/^[\s\S]*?<h1[^>]*>[\s\S]*?<\/h1>/, '') }}/>
      )}
    </LegalShell>
  );
};

Object.assign(window, { MarkdownPage });
