import React from 'react' function KpiCard({ icon, label, value, color = 'text-sky-400' }) { return (

{Number(value ?? 0).toLocaleString()}

{label}

) } /** * TabStats * KPI overview cards. Charts can be added here once chart infrastructure exists. */ export default function TabStats({ stats, followerCount, followAnalytics }) { const medalTotals = stats?.medal_totals ?? null const kpis = [ { icon: 'fa-eye', label: 'Profile Views', value: stats?.profile_views_count, color: 'text-sky-400' }, { icon: 'fa-images', label: 'Uploads', value: stats?.uploads_count, color: 'text-violet-400' }, { icon: 'fa-download', label: 'Downloads', value: stats?.downloads_received_count, color: 'text-green-400' }, { icon: 'fa-eye', label: 'Artwork Views', value: stats?.artwork_views_received_count, color: 'text-blue-400' }, { icon: 'fa-heart', label: 'Favourites Received', value: stats?.favourites_received_count, color: 'text-pink-400' }, { icon: 'fa-users', label: 'Followers', value: followerCount, color: 'text-amber-400' }, { icon: 'fa-trophy', label: 'Awards Received', value: stats?.awards_received_count, color: 'text-yellow-400' }, { icon: 'fa-comment', label: 'Comments Received', value: stats?.comments_received_count, color: 'text-orange-400' }, ] const trendCards = [ { icon: 'fa-arrow-trend-up', label: 'Followers Today', value: followAnalytics?.daily?.gained ?? 0, color: 'text-emerald-400' }, { icon: 'fa-user-minus', label: 'Unfollows Today', value: followAnalytics?.daily?.lost ?? 0, color: 'text-rose-400' }, { icon: 'fa-chart-line', label: 'Weekly Net', value: followAnalytics?.weekly?.net ?? 0, color: 'text-sky-400' }, { icon: 'fa-percent', label: 'Weekly Growth %', value: followAnalytics?.weekly?.growth_rate ?? 0, color: 'text-amber-400' }, ] const hasStats = stats !== null && stats !== undefined return (
{!hasStats ? (

No stats available yet

Stats will appear once there is activity on this profile.

) : ( <>

Lifetime Statistics

{kpis.map((kpi) => ( ))}

Medal Breakdown

Real medal totals collected across all public artworks.

Weighted Score
{Number(medalTotals?.score_total ?? 0).toLocaleString()}
{[ { label: 'Gold', value: medalTotals?.gold ?? 0, color: 'text-amber-300' }, { label: 'Silver', value: medalTotals?.silver ?? 0, color: 'text-slate-300' }, { label: 'Bronze', value: medalTotals?.bronze ?? 0, color: 'text-orange-300' }, { label: 'Total Medals', value: medalTotals?.count ?? 0, color: 'text-cyan-300' }, ].map((item) => (
{item.label}
{Number(item.value).toLocaleString()}
))}

Follow Growth

{trendCards.map((card) => ( ))}

More detailed analytics (charts, trends) coming soon.

)}
) }