import { AlertCircle } from "lucide-react"; import { Alert, Button, Center, Loader, Paper, Skeleton, Stack } from "@mantine/core"; import { useOverviewBillingTab, useOverviewBookingsTab, useOverviewContractsTab, useOverviewCustomersTab, useOverviewOperationsTab, useOverviewStaffTab, } from "@/hooks/useOverview"; import type { OverviewRange, OverviewTabKey } from "@/types/overview"; import { OverviewBillingTabPanel } from "./tabs/OverviewBillingTabPanel"; import { OverviewBookingsTabPanel } from "./tabs/OverviewBookingsTabPanel"; import { OverviewContractsTabPanel } from "./tabs/OverviewContractsTabPanel"; import { OverviewCustomersTabPanel } from "./tabs/OverviewCustomersTabPanel"; import { OverviewOperationsTabPanel } from "./tabs/OverviewOperationsTabPanel"; import { OverviewStaffTabPanel } from "./tabs/OverviewStaffTabPanel"; function TabSkeleton() { return ( ); } interface OverviewTabContentProps { tab: OverviewTabKey; range: OverviewRange; } export function OverviewTabContent({ tab, range }: OverviewTabContentProps) { const bookings = useOverviewBookingsTab(range, tab === "bookings"); const contracts = useOverviewContractsTab(range, tab === "contracts"); const billing = useOverviewBillingTab(range, tab === "billing"); const operations = useOverviewOperationsTab(tab === "operations"); const customers = useOverviewCustomersTab(range, tab === "customers"); const staff = useOverviewStaffTab(range, tab === "staff"); const query = tab === "bookings" ? bookings : tab === "contracts" ? contracts : tab === "billing" ? billing : tab === "operations" ? operations : tab === "customers" ? customers : staff; const { isLoading, isError, refetch, isFetching } = query; if (isLoading) { return ; } if (isError || !query.data) { return ( } color="red" title="Failed to load tab data" variant="light" > Could not load {tab} metrics. Please try again. ); } return ( {isFetching && (
)} {tab === "bookings" && bookings.data && ( )} {tab === "contracts" && contracts.data && ( )} {tab === "billing" && billing.data && ( )} {tab === "operations" && operations.data && ( )} {tab === "customers" && customers.data && ( )} {tab === "staff" && staff.data && ( )}
); }