"use client"; import { AlertTriangle, Building2, Clock, FileText, Plus, Radio, ServerCog } from "lucide-react"; import Link from "next/link"; import { useCurrentUser, useSystemStatus } from "@/hooks/use-auth"; import { useCompanies } from "@/hooks/use-companies"; import { useDashboardAnalytics } from "@/hooks/use-analytics"; import { StatCard } from "@/components/ui/stat-card"; import { DashboardAnalyticsSection } from "@/components/dashboard/analytics-section"; import { formatDateTime } from "@/lib/format"; import type { CompanyResponse } from "@/lib/types"; function mostRecentLastRun(companies: CompanyResponse[]): string | null { const runs = companies .map((c) => c.monitor_configuration?.last_run) .filter((v): v is string => Boolean(v)); if (runs.length === 0) return null; return runs.sort().at(-1) ?? null; } function nextUpcomingRun(companies: CompanyResponse[]): string | null { const runs = companies .filter((c) => c.monitor_configuration?.enabled) .map((c) => c.monitor_configuration?.next_run) .filter((v): v is string => Boolean(v)); if (runs.length === 0) return null; return runs.sort().at(0) ?? null; } export default function DashboardPage() { const { data: user } = useCurrentUser(); const { data: systemStatus } = useSystemStatus(); const { data: companies, isLoading } = useCompanies(); const { data: analytics } = useDashboardAnalytics(); const companyList = companies ?? []; const activeCount = companyList.filter((c) => c.status === "active").length; const reportCount = companyList.reduce((sum, c) => sum + c.report_count, 0); const unreadAlertCount = companyList.reduce((sum, c) => sum + c.unresolved_alert_count, 0); return (
Here's what's happening across your monitors.
Loading…
) : companyList.length === 0 ? (You're not monitoring any companies yet.
Add your first company