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

  function normalizedAnswerScore(result) {
    if (result.answerability && Number.isFinite(Number(result.answerability.score))) return Number(result.answerability.score);
    if (Number.isFinite(Number(result.answerabilityScore))) return Math.round(Number(result.answerabilityScore) * 100);
    return 0;
  }

  function normalizedCitationScore(result) {
    if (result.citationReadiness && Number.isFinite(Number(result.citationReadiness.score))) return Number(result.citationReadiness.score);
    if (Number.isFinite(Number(result.citationReadinessScore))) return Math.round(Number(result.citationReadinessScore) * 100);
    return 0;
  }

  function intentLabel(result) {
    const value = (result.intent && (result.intent.type || result.intent)) || 'intent';
    return String(value).replace(/_/g, ' ');
  }

  function promptText(result) {
    return result.prompt || result.query || (result.prompt && result.prompt.query) || '';
  }

  function scoreClass(score) {
    if (score >= 80) return 'score-strong';
    if (score >= 60) return 'score-moderate';
    if (score >= 40) return 'score-weak';
    return 'score-low';
  }

  function PromptResultCards({ results = [], onSelect }) {
    if (!results.length) return <div className="free-seo-empty">No prompt results yet.</div>;
    return <div className="free-seo-result-list">
      {results.map((result, index) => {
        const answerScore = normalizedAnswerScore(result);
        const citationScore = normalizedCitationScore(result);
        const evidencePages = result.evidencePages || [];
        return <button key={result.id || index} type="button" className="free-seo-result-card" onClick={() => onSelect && onSelect(result)}>
          <div className="free-seo-result-topline">
            <span>{intentLabel(result)}</span>
            <span>{result.confidence || result.scoreLabel || 'local'}</span>
          </div>
          <h4>{promptText(result)}</h4>
          <div className="free-seo-score-row">
            <div className={scoreClass(answerScore)}><strong>{answerScore}</strong><span>Answerability</span></div>
            <div className={scoreClass(citationScore)}><strong>{citationScore}</strong><span>Citation</span></div>
          </div>
          <p>{evidencePages.length ? `Top evidence: ${evidencePages[0].title || evidencePages[0].url}` : 'No ranked evidence page.'}</p>
        </button>;
      })}
    </div>;
  }

  global.FreeSeoPromptResultCards = PromptResultCards;
})(window);
