'use client' import { motion } from 'framer-motion' import { cn } from '@/lib/utils' interface Props { scanned: number alerts: number keywords: number uptime: string } const CARDS = [ { id: 'scanned', label: 'Lots Scanned', sub: 'Processed this session', gradFrom: '#00e87b', gradTo: '#06b6d4', icon: ( ), }, { id: 'alerts', label: 'Alerts Fired', sub: 'Qualifying matches', gradFrom: '#fbbf24', gradTo: '#f59e0b', icon: ( ), }, { id: 'keywords', label: 'Active Targets', sub: 'Keyword strategies', gradFrom: '#a78bfa', gradTo: '#3b82f6', icon: ( ), }, { id: 'uptime', label: 'Engine Uptime', sub: 'Continuous runtime', gradFrom: '#3b82f6', gradTo: '#06b6d4', icon: ( ), }, ] export default function StatsGrid({ scanned, alerts, keywords, uptime }: Props) { const values: Record = { scanned: String(scanned), alerts: alerts, keywords: keywords, uptime: uptime, } return ( {CARDS.map((card, i) => { const val = values[card.id] const isAlert = card.id === 'alerts' && alerts > 0 const accentColor = isAlert ? card.gradFrom : undefined return ( {/* Top row: label + icon */} {card.label} {card.icon} {/* Value */} {val} {/* Sub */} {card.sub} {/* Bottom gradient line */} {/* Alert pulse ring for alerts card when active */} {isAlert && ( )} ) })} ) }
{card.sub}