"use client" import { useQuery } from "convex/react" import { api } from "@/convex/_generated/api" import { DEFAULT_TENANT_ID } from "@/lib/constants" import type { TicketQueueSummary } from "@/lib/schemas/ticket" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Progress } from "@/components/ui/progress" import { useAuth } from "@/lib/auth-client" import type { Id } from "@/convex/_generated/dataModel" interface TicketQueueSummaryProps { queues?: TicketQueueSummary[] layout?: "default" | "compact" } export function TicketQueueSummaryCards({ queues, layout = "default" }: TicketQueueSummaryProps) { const { convexUserId, isStaff } = useAuth() const enabled = Boolean(isStaff && convexUserId) const shouldFetch = Boolean(!queues && enabled) const fromServer = useQuery( api.queues.summary, shouldFetch ? { tenantId: DEFAULT_TENANT_ID, viewerId: convexUserId as Id<"users"> } : "skip" ) as TicketQueueSummary[] | undefined const data: TicketQueueSummary[] = queues ?? fromServer ?? [] const gridLayoutClass = layout === "compact" ? "mx-auto grid w-full max-w-5xl grid-cols-1 gap-5 pb-3 md:grid-cols-2" : "grid w-full grid-cols-1 gap-5 pb-3 sm:grid-cols-2 md:grid-cols-3" if (!queues && shouldFetch && fromServer === undefined) { return ( // Usa o mesmo grid do estado carregado para não “pular”
Pendentes
{queue.pending}
Em andamento
{queue.inProgress}
Pausados
{queue.paused}