import { CheckCircleIcon, ExclamationTriangleIcon, XCircleIcon } from "@heroicons/react/20/solid"; import type { BatchTaskRunStatus } from "@trigger.dev/database"; import assertNever from "assert-never"; import { Spinner } from "~/components/primitives/Spinner"; import { cn } from "~/utils/cn"; export const allBatchStatuses = [ "PROCESSING", "PENDING", "COMPLETED", "PARTIAL_FAILED", "ABORTED", ] as const satisfies Readonly>; const descriptions: Record = { PROCESSING: "The batch is being processed and runs are being created.", PENDING: "The batch has child runs that have not yet completed.", COMPLETED: "All the batch child runs have finished.", PARTIAL_FAILED: "Some runs failed to be created. Successfully created runs are still executing.", ABORTED: "The batch was aborted because child tasks could not be triggered.", }; export function descriptionForBatchStatus(status: BatchTaskRunStatus): string { return descriptions[status]; } export function BatchStatusCombo({ status, className, iconClassName, }: { status: BatchTaskRunStatus; className?: string; iconClassName?: string; }) { return ( ); } export function BatchStatusLabel({ status }: { status: BatchTaskRunStatus }) { return {batchStatusTitle(status)}; } export function BatchStatusIcon({ status, className, }: { status: BatchTaskRunStatus; className: string; }) { switch (status) { case "PROCESSING": return ; case "PENDING": return ; case "COMPLETED": return ; case "PARTIAL_FAILED": return ; case "ABORTED": return ; default: { assertNever(status); } } } export function batchStatusColor(status: BatchTaskRunStatus): string { switch (status) { case "PROCESSING": return "text-blue-500"; case "PENDING": return "text-pending"; case "COMPLETED": return "text-success"; case "PARTIAL_FAILED": return "text-warning"; case "ABORTED": return "text-error"; default: { assertNever(status); } } } export function batchStatusTitle(status: BatchTaskRunStatus): string { switch (status) { case "PROCESSING": return "Processing"; case "PENDING": return "In progress"; case "COMPLETED": return "Completed"; case "PARTIAL_FAILED": return "Partial failure"; case "ABORTED": return "Aborted"; default: { assertNever(status); } } }