// Shared status → badge class mapping so success/warning/error colors can't drift // between SqlViewer, CteResultViewer and PhaseSummaryViewer. // ok/success/passed/promoted -> green (--success) // warn/untested-with-warning -> amber (--warning) // error/failed -> destructive/red // anything else -> neutral outline const SUCCESS_STATUSES = new Set(["ok", "success", "passed", "promoted"]); const WARN_STATUSES = new Set(["warn", "warning"]); const ERROR_STATUSES = new Set(["error", "failed", "fail"]); export const STATUS_BADGE_CLASSES = { success: "bg-[oklch(var(--success)/0.15)] text-[oklch(0.45_0.12_165)] ring-1 ring-[oklch(var(--success)/0.3)]", warning: "bg-[oklch(var(--warning)/0.15)] text-[oklch(0.46_0.11_79)] ring-1 ring-[oklch(var(--warning)/0.4)]", error: "bg-destructive/10 text-destructive ring-1 ring-destructive/25", neutral: "bg-muted text-muted-foreground ring-1 ring-border", } as const; export function statusBadgeClass(status: string): string { if (SUCCESS_STATUSES.has(status)) return STATUS_BADGE_CLASSES.success; if (WARN_STATUSES.has(status)) return STATUS_BADGE_CLASSES.warning; if (ERROR_STATUSES.has(status)) return STATUS_BADGE_CLASSES.error; return STATUS_BADGE_CLASSES.neutral; }