From f05ea4b23e76dc587e43ad9e28029ff187f56379 Mon Sep 17 00:00:00 2001 From: Bhanu Prakash Sai Potteri Date: Sat, 23 May 2026 15:00:38 +0530 Subject: [PATCH] PhaseDots: distinguish failed states with halo ring, STALLED tag, dashed connector --- src/components/variants/VariantB.tsx | 32 ++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/components/variants/VariantB.tsx b/src/components/variants/VariantB.tsx index 5ac953e..1945627 100644 --- a/src/components/variants/VariantB.tsx +++ b/src/components/variants/VariantB.tsx @@ -11,7 +11,7 @@ import { ChevronLeft, ChevronRight, Search, ArrowUp, ArrowDown, X, RefreshCw, CheckCircle2, LogOut, Sparkles, Car, ClipboardList, PhoneOutgoing, CalendarCheck2, MessageSquareHeart, Trophy, ArrowLeft, ChevronDown, ChevronUp, - Plus, + Plus, AlertTriangle, } from "lucide-react"; import { BarChart as RBarChart, Bar, XAxis, YAxis, Tooltip, CartesianGrid, @@ -76,28 +76,52 @@ function phaseIndexFor(state: string | null | undefined): number { if (state === STATE_IDS.AWAITING_SCHEDULER_CALL || state === STATE_IDS.SCHEDULING_CALL_FAILED) return 1; return 0; } +function failedPhaseIndex(state: string | null | undefined): number { + if (state === STATE_IDS.SCHEDULING_CALL_FAILED) return 1; + if (state === STATE_IDS.FEEDBACK_CALL_FAILED) return 3; + return -1; +} function PhaseDots({ state }: { state: string | null | undefined }) { const current = phaseIndexFor(state); + const failedAt = failedPhaseIndex(state); return (
{PHASES.map((label, i) => { const reached = i <= current; + const isFailed = i === failedAt; return (
- + {label} + {isFailed && ( + + + STALLED + + )}
- {i < PHASES.length - 1 && } + {i < PHASES.length - 1 && ( + + )}
); })}