"use client" import { useMemo } from "react" import { useSearchParams } from "next/navigation" import { Loader2 } from "lucide-react" import { useDashboardData } from "./use-dashboard-data" import { FinancialTotalsCards } from "./financial-totals-cards" import { IncomeExpenseChart } from "./income-expense-chart" import { FinancialSummaryChart } from "./financial-summary-chart" import { WorkOrdersStatusCard } from "./work-orders-status-card" import { AppointmentsSummaryCard } from "./appointments-summary-card" import { UpcomingAppointmentsCard } from "./upcoming-appointments-card" import { ItemsTotalsCard } from "./items-totals-card" import { CustomersTotalsCard } from "./customers-totals-card" import { SalesPurchaseCards } from "./sales-purchase-cards" import { VehicleStatsCards } from "./vehicle-stats-cards" import { QuickShortcuts } from "./quick-shortcuts" import { DashboardPeriods, type DashboardPeriod, type HomeDashboardQuery } from "@garage/api" const DEFAULT_PERIOD: DashboardPeriod = "this_month" function isDashboardPeriod(value: string | null): value is DashboardPeriod { return Boolean(value && (DashboardPeriods as readonly string[]).includes(value)) } export function DashboardContent() { const searchParams = useSearchParams() const filters = useMemo(() => { const periodValue = searchParams.get("period") const period = isDashboardPeriod(periodValue) ? periodValue : DEFAULT_PERIOD const nextFilters: HomeDashboardQuery = { period } if (period === "custom") { const startDate = searchParams.get("start_date") const endDate = searchParams.get("end_date") if (startDate) { nextFilters.start_date = startDate } if (endDate) { nextFilters.end_date = endDate } } return nextFilters }, [searchParams]) const { data, isLoading, isError, error } = useDashboardData(filters) if (isLoading) { return (
) } if (isError || !data) { return (

Failed to load dashboard

{error?.message ?? "An unexpected error occurred"}

) } return (
{/* Quick Shortcuts */} {/* Financial Overview */} {/* Charts Row */}
{/* Work Orders + Appointments */}
{/* Upcoming Appointments */} {/* Sales & Purchase Documents */} {/* Quick Stats Row */}
{/* Vehicle Statistics */}
) }