import { UserCheck, UserX } from "lucide-react"; import { useTranslation } from "react-i18next"; import type { ServerMetrics } from "@/main-axios"; import { MetricCard } from "@/components/metric-card"; export function LoginStatsCard({ metrics }: { metrics: ServerMetrics | null }) { const { t } = useTranslation(); const loginStats = metrics?.login_stats; const recentLogins = loginStats?.recentLogins ?? []; const failedLogins = loginStats?.failedLogins ?? []; const allLogins = [ ...recentLogins.map((l) => ({ ...l, status: "success" as const })), ...failedLogins.map((l) => ({ ...l, status: "failed" as const })), ] .sort((a, b) => new Date(b.time).getTime() - new Date(a.time).getTime()) .slice(0, 10); return ( } scroll > {allLogins.length === 0 ? ( {t("hostMetrics.noRecentLoginData")} ) : (
{allLogins.map((login, i) => (
{login.status === "failed" ? ( ) : ( )} {login.user}
{login.ip}
{new Date(login.time).toLocaleTimeString()}
))}
)}
); }