"use client";
import { useQuery } from "@tanstack/react-query";
import Link from "next/link";
import { hospitalityApi } from "@/modules/hospitality/services/hospitality-api";
import { useTenantId } from "@/hooks/useTenantId";
import { useHospitalityCapabilities } from "@/modules/hospitality/hooks/useHospitalityCapabilities";
import { HospitalityPageLoader, HospitalityPageError } from "@/modules/hospitality/pages/shared";
import { PageHeader, StatCard, Card, CardContent, Button, Badge } from "@/components/ds";
import { HospitalityBreadcrumbs } from "@/modules/hospitality/components/HospitalityBreadcrumbs";
export const ExecutiveDashboard = function HospitalityDashboard() {
const { tenantId } = useTenantId();
const caps = useHospitalityCapabilities();
const countsQ = useQuery({
queryKey: ["hospitality", tenantId, "dashboard-counts"],
queryFn: async () => {
const [venues, reservations, tickets, kitchen] = await Promise.all([
hospitalityApi.venues.list(tenantId!, { page: 1, page_size: 500 }),
hospitalityApi.reservations.list(tenantId!, { page: 1, page_size: 500 }),
hospitalityApi.posTickets.list(tenantId!, { page: 1, page_size: 500 }),
hospitalityApi.kitchenTickets.list(tenantId!, { page: 1, page_size: 500 }),
]);
return {
venues: venues.length,
reservations: reservations.length,
openOrders: tickets.filter((t) => t.status === "open" || t.status === "draft").length,
kitchenActive: kitchen.filter((k) => k.status !== "completed" && k.status !== "cancelled").length,
};
},
enabled: !!tenantId,
});
if (!tenantId || countsQ.isLoading || caps.isLoading) return ;
if (countsQ.error) return countsQ.refetch()} />;
const c = countsQ.data!;
return (
Torbat Food v{caps.data?.version}}
/>
);
};
export default ExecutiveDashboard;