
(function registerFreeSeoBriefCreateForm(global) {
  const React = global.React;
  if (!React) return;

  function parseLines(value) {
    return String(value || '').split('\n').map((line) => line.trim()).filter(Boolean);
  }

  function parseEvidence(value) {
    const raw = String(value || '').trim();
    if (!raw) return [];
    try {
      const parsed = JSON.parse(raw);
      return Array.isArray(parsed) ? parsed : [parsed];
    } catch (error) {
      return [{
        url: 'manual://content-brief-evidence',
        title: 'Manual evidence',
        bodyText: raw,
        headings: raw.split('\n').map((line) => line.trim()).filter(Boolean).slice(0, 12),
        sourceType: 'manual_paste'
      }];
    }
  }

  function BriefCreateForm(props) {
    const [targetQuery, setTargetQuery] = React.useState('AI SEO audit for dentists in Rome');
    const [websiteUrl, setWebsiteUrl] = React.useState('https://example.com');
    const [targetPageUrl, setTargetPageUrl] = React.useState('');
    const [intent, setIntent] = React.useState('local');
    const [businessName, setBusinessName] = React.useState('');
    const [services, setServices] = React.useState('SEO audit\nAI search visibility');
    const [location, setLocation] = React.useState('Rome, Italy');
    const [audiences, setAudiences] = React.useState('local businesses\nagencies');
    const [evidence, setEvidence] = React.useState('');

    function submit(event) {
      event.preventDefault();
      props.onSubmit({
        targetQuery,
        websiteUrl,
        targetPageUrl: targetPageUrl || undefined,
        intent,
        location,
        businessContext: {
          name: businessName || undefined,
          services: parseLines(services),
          locations: location ? [location] : [],
          audiences: parseLines(audiences)
        },
        evidencePages: parseEvidence(evidence),
        sourceMode: evidence ? 'mixed' : 'local'
      });
    }

    return <form className="free-seo-card free-seo-form" onSubmit={submit}>
      <div className="free-seo-card-header"><div><h3>Create content brief</h3><p>Generate a deterministic SEO/GEO brief from local evidence and pasted page data.</p></div></div>
      <label>Target query<input value={targetQuery} onChange={(event) => setTargetQuery(event.target.value)} required /></label>
      <div className="free-seo-grid-2">
        <label>Website URL<input value={websiteUrl} onChange={(event) => setWebsiteUrl(event.target.value)} placeholder="https://example.com" /></label>
        <label>Target page URL<input value={targetPageUrl} onChange={(event) => setTargetPageUrl(event.target.value)} placeholder="optional existing page" /></label>
      </div>
      <div className="free-seo-grid-2">
        <label>Intent<select value={intent} onChange={(event) => setIntent(event.target.value)}><option value="local">Local</option><option value="commercial">Commercial</option><option value="informational">Informational</option><option value="transactional">Transactional</option><option value="comparison">Comparison</option><option value="generic">Generic</option></select></label>
        <label>Location<input value={location} onChange={(event) => setLocation(event.target.value)} placeholder="optional" /></label>
      </div>
      <label>Business or brand name<input value={businessName} onChange={(event) => setBusinessName(event.target.value)} placeholder="optional" /></label>
      <div className="free-seo-grid-2">
        <label>Services / products<textarea rows="4" value={services} onChange={(event) => setServices(event.target.value)} /></label>
        <label>Audiences<textarea rows="4" value={audiences} onChange={(event) => setAudiences(event.target.value)} /></label>
      </div>
      <label>Optional evidence pages JSON or pasted text<textarea rows="8" value={evidence} onChange={(event) => setEvidence(event.target.value)} placeholder='[{"url":"https://example.com/service","title":"...","bodyText":"..."}] or paste page copy' /></label>
      <button type="submit" disabled={props.loading}>{props.loading ? 'Generating...' : 'Generate content brief'}</button>
    </form>;
  }

  global.FreeSeoBriefCreateForm = BriefCreateForm;
})(window);
