function FreeSeoLeadDiscoveryView() {
  var React = window.React;
  var useEffect = React.useEffect;
  var useState = React.useState;
  var api = window.JS_API && window.JS_API.freeSeo && window.JS_API.freeSeo.leadDiscovery;
  var providersPair = useState([]), providers = providersPair[0], setProviders = providersPair[1];
  var runPair = useState(null), run = runPair[0], setRun = runPair[1];
  var selectedPair = useState(null), selected = selectedPair[0], setSelected = selectedPair[1];
  var errorPair = useState(''), error = errorPair[0], setError = errorPair[1];
  var loadingPair = useState(false), loading = loadingPair[0], setLoading = loadingPair[1];
  useEffect(function () { if (api) api.providers().then(function (r) { setProviders(r.providers || []); }).catch(function (e) { setError(e.message); }); }, []);
  function create(payload) { setLoading(true); setError(''); api.createRun(payload).then(function (r) { setRun(r.run); }).catch(function (e) { setError(e.message); }).finally(function () { setLoading(false); }); }
  function exportRun(format) { api.exportRun(run.id, format).then(function (body) { var w = window.open(); if (w) w.document.write('<pre>' + String(body).replace(/[&<>]/g, function (c) { return { '&': '&amp;', '<': '&lt;', '>': '&gt;' }[c]; }) + '</pre>'); }); }
  function assets() { api.createImplementationAssets(run.id).then(function (r) { setRun(r.run); }); }
  if (!api) return <div className="free-seo-card">Lead Discovery API client is not loaded.</div>;
  return <div className="free-seo-lab-view">
    <h2>Competitor Lead Discovery</h2>
    <p>Discover competitor websites from safe seed sources, score their SEO/GEO visibility signals, and turn gaps into implementation work.</p>
    {error ? <div className="free-seo-error">{error}</div> : null}
    <LeadSourceConfigPanel providers={providers} />
    <LeadDiscoveryRunForm onSubmit={create} />
    {loading ? <p>Creating run...</p> : null}
    {run ? <LeadCompetitorScoreCards summary={run.competitorSummary} /> : null}
    {run ? <LeadCandidateTable leads={run.discoveredLeads} onSelect={setSelected} /> : null}
    {run ? <LeadOpportunityMatrix recommendations={run.recommendations} /> : null}
    <LeadDetailDrawer lead={selected} />
    <LeadDiscoveryExportPanel run={run} onExport={exportRun} onAssets={assets} />
  </div>;
}
window.FreeSeoLeadDiscoveryView = FreeSeoLeadDiscoveryView;
