import Link from 'next/link';
import { Activity, MessageCircle, AtSign, MoonStar } from 'lucide-react';
export interface CardsData {
active_groups: number;
total_groups: number;
total_messages: number;
mentions: number;
silent_groups: number;
avg_per_group: number;
}
export default function StatGrid({ cards, days }: { cards?: CardsData; days: number }) {
return (
}
label="活跃群"
value={cards?.active_groups ?? '—'}
sub={cards ? `共扫 ${cards.total_groups} 个群` : '等待扫描'}
/>
}
label="总消息"
value={cards?.total_messages?.toLocaleString() ?? '—'}
sub={
cards
? `过去 ${days * 24}h · 平均每群 ${cards.avg_per_group} 条`
: '等待扫描'
}
/>
}
label="@ 我的"
value={cards?.mentions ?? 0}
sub={cards ? '需要回复' : '等待扫描'}
accent="warn"
href="/mentions"
/>
}
label="静默群"
value={cards?.silent_groups ?? '—'}
sub={cards ? `过去 ${days * 24}h 无活动` : '等待扫描'}
/>
);
}
function Card({
icon,
label,
value,
sub,
accent,
href,
}: {
icon: React.ReactNode;
label: string;
value: number | string;
sub: string;
accent?: 'warn';
href?: string;
}) {
const className = `card group relative overflow-hidden px-5 py-4 ${
href
? 'block transition-colors hover:border-[rgba(213,162,83,0.5)] hover:bg-[var(--surface-2)] focus:outline-none focus:ring-1 focus:ring-[var(--warn)]'
: ''
}`;
const content = (
<>
{icon}
{label}
Metric
{value}
{sub}
>
);
if (href) {
return (
{content}
);
}
return (
{content}
);
}