"use client"; import * as React from "react"; import { gateLabelForStatus } from "@tasks/shared/convoy-lifecycle"; import type { ConvoyStatus } from "@tasks/shared/convoy-lifecycle"; import { Loader2 } from "lucide-react"; import { cn } from "@/lib/utils"; import { api } from "@/lib/trpc"; type ConvoyCard = { id: string; title: string; status: ConvoyStatus; content: { convoySlug: string; classification: string; successMetric: string } | null; }; export function ConvoyKanban({ workspaceSlug, selectedId, onSelect, }: { workspaceSlug: string; selectedId: string | null; onSelect: (id: string) => void; }) { const kanbanQuery = api.convoys.kanban.useQuery( { workspace: workspaceSlug }, { enabled: Boolean(workspaceSlug) }, ); if (kanbanQuery.isLoading) { return (
Loading kanban…
); } const columns = kanbanQuery.data?.columns ?? []; return (
{columns.map((column) => (

{column.label}

{column.convoys.length}

))}
); } export function GateInbox({ workspaceSlug, selectedId, onSelect, }: { workspaceSlug: string; selectedId: string | null; onSelect: (id: string) => void; }) { const kanbanQuery = api.convoys.kanban.useQuery( { workspace: workspaceSlug }, { enabled: Boolean(workspaceSlug) }, ); const inbox = kanbanQuery.data?.gateInbox ?? []; return (

Needs you

Gate 1, 2, and 3 approvals

{inbox.length === 0 ? (

No pending gates.

) : ( )}
); }