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

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

  function PromptRunForm({ onSubmit, loading }) {
    const [websiteUrl, setWebsiteUrl] = React.useState('');
    const [prompts, setPrompts] = React.useState('Who is the best emergency dentist in Rome?\nCan I book same-day dental care?');
    const [businessName, setBusinessName] = React.useState('');
    const [services, setServices] = React.useState('');
    const [locations, setLocations] = React.useState('');
    const [evidenceUrl, setEvidenceUrl] = React.useState('');
    const [evidenceTitle, setEvidenceTitle] = React.useState('');
    const [evidenceContent, setEvidenceContent] = React.useState('');

    function submit(event) {
      event.preventDefault();
      const payload = {
        websiteUrl,
        prompts: splitLines(prompts),
        businessContext: {
          name: businessName,
          services: splitLines(services),
          locations: splitLines(locations)
        },
        evidencePages: evidenceUrl ? [{
          url: evidenceUrl,
          title: evidenceTitle,
          content: evidenceContent,
          hasDirectAnswerBlock: /answer|summary|same-day|same day/i.test(evidenceContent),
          hasFaq: /faq|question|frequently/i.test(evidenceContent),
          hasSchema: /schema|structured data|localbusiness|service/i.test(evidenceContent)
        }] : []
      };
      onSubmit(payload);
    }

    return <form className="free-seo-card" onSubmit={submit}>
      <div className="free-seo-card-header">
        <div>
          <h3>Run local AI prompt simulation</h3>
          <p>Scores answerability and citation readiness using local evidence only.</p>
        </div>
      </div>
      <label>Website URL<input value={websiteUrl} onChange={(e) => setWebsiteUrl(e.target.value)} placeholder="https://example.com" required /></label>
      <label>Prompts, one per line<textarea value={prompts} onChange={(e) => setPrompts(e.target.value)} rows="5" required /></label>
      <div className="free-seo-grid-3">
        <label>Business name<input value={businessName} onChange={(e) => setBusinessName(e.target.value)} placeholder="Example Dental" /></label>
        <label>Services, one per line<textarea value={services} onChange={(e) => setServices(e.target.value)} rows="3" placeholder="emergency dentist" /></label>
        <label>Locations, one per line<textarea value={locations} onChange={(e) => setLocations(e.target.value)} rows="3" placeholder="Rome" /></label>
      </div>
      <details>
        <summary>Optional direct evidence page for immediate testing</summary>
        <label>Evidence URL<input value={evidenceUrl} onChange={(e) => setEvidenceUrl(e.target.value)} placeholder="https://example.com/service" /></label>
        <label>Evidence title<input value={evidenceTitle} onChange={(e) => setEvidenceTitle(e.target.value)} placeholder="Emergency Dentist in Rome" /></label>
        <label>Evidence content<textarea value={evidenceContent} onChange={(e) => setEvidenceContent(e.target.value)} rows="6" placeholder="Paste relevant page copy..." /></label>
      </details>
      <button type="submit" disabled={loading}>{loading ? 'Running...' : 'Run simulator'}</button>
    </form>;
  }

  global.FreeSeoPromptRunForm = PromptRunForm;
})(window);
