import React, { useState } from 'react' import './ComprehensiveMetrics.css' function ComprehensiveMetrics({ metricsData, hookpilotStatus }) { const [expandedDomain, setExpandedDomain] = useState(null) if (!metricsData || metricsData.length === 0) { return null } const toggleDomainDetails = (domain) => { setExpandedDomain(expandedDomain === domain ? null : domain) } const getStageColor = (stage) => { switch (stage) { case 'NEW': return '#ff6b6b' case 'GROWING': return '#ffa726' case 'ESTABLISHED': return '#66bb6a' case 'ERROR': return '#9e9e9e' default: return '#9e9e9e' } } const getStageIcon = (stage) => { switch (stage) { case 'NEW': return '🌱' case 'GROWING': return '📈' case 'ESTABLISHED': return '🏆' case 'ERROR': return '❌' default: return '❓' } } const renderTopKeywords = (keywords) => { if (!keywords || keywords.length === 0) { return No keywords data } return (
{keywords.slice(0, 5).map((keyword, index) => (
{keyword.phrase} SV: {keyword.searchVolume?.toLocaleString() || 'N/A'} | KD: {keyword.keywordDifficulty || 'N/A'} | Pos: {keyword.position || 'N/A'}
))} {keywords.length > 5 && (
+{keywords.length - 5} more keywords
)}
) } const renderTopCategories = (categories) => { if (!categories || categories.length === 0) { return No categories data } return (
{categories.map((category, index) => (
{category.url} {category.traffic?.toLocaleString() || 0} visits
))}
) } const renderDetailedView = (domainData) => { if (!domainData || domainData.error) return null return (

📊 Complete Metrics

Authority Score: {domainData.authorityScore}
Organic Traffic: {domainData.organicTraffic?.toLocaleString()}
Organic Keywords: {domainData.organicKeywords?.toLocaleString()}
Paid Traffic: {domainData.paidTraffic?.toLocaleString()}
Paid Keywords: {domainData.paidKeywords?.toLocaleString()}
Total Backlinks: {domainData.totalBacklinks?.toLocaleString()}

🔍 Top 10 Keywords

{domainData.top10Keywords?.map((keyword, index) => (
#{index + 1} {keyword.phrase}
SV: {keyword.searchVolume?.toLocaleString() || 'N/A'} KD: {keyword.keywordDifficulty || 'N/A'} Pos: {keyword.position || 'N/A'} CPC: ${keyword.cpc?.toFixed(2) || 'N/A'}
))}

📄 Top Categories/Pages

{domainData.topCategories?.map((category, index) => (
{category.url}
Traffic: {category.traffic?.toLocaleString() || 0} Keywords: {category.positionCount || 1}
))}
) } return (

📊 Comprehensive Domain Metrics

Complete SEO analysis with all required metrics for SEO maturity assessment

{hookpilotStatus && (
{hookpilotStatus.success ? '✅ Sent to Hookpilot' : '❌ Hookpilot Error'}
)}
{metricsData.map((domainData, index) => ( {expandedDomain === domainData.domain && !domainData.error && ( )} ))}
Actions Domain Authority Score Organic Keywords Top 10 Keywords Referring Domains Monthly Traffic Top Categories Stage
{!domainData.error && ( )} {domainData.domain} {index === 0 && Client} {domainData.error ? 'Error' : domainData.authorityScore?.toLocaleString()} {domainData.error ? 'Error' : domainData.organicKeywords?.toLocaleString()} {domainData.error ? 'Error' : renderTopKeywords(domainData.top10Keywords)} {domainData.error ? 'Error' : domainData.referringDomains?.toLocaleString()} {domainData.error ? 'Error' : domainData.monthlyTraffic?.toLocaleString()} {domainData.error ? 'Error' : renderTopCategories(domainData.topCategories)} {getStageIcon(domainData.stage)} {domainData.stage}
{renderDetailedView(domainData)}
{/* Classification Legend */}

📋 SEO Maturity Classification Criteria

NEW: AS < 20 OR Organic KW < 500 OR < 10 Ref Domains
GROWING: AS 20–40 OR Organic KW 500–3000
ESTABLISHED: AS > 40 OR Organic KW > 3000 OR > 100 Ref Domains
) } export default ComprehensiveMetrics