"use client"; import dayjs from "@calcom/dayjs"; import { DomainIcon } from "@calcom/features/routing-trace/components/DomainIcon"; import { getDomainLabel } from "@calcom/features/routing-trace/presenters/getDomainLabel"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import { Button } from "@calcom/ui/components/button"; import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetBody, } from "@calcom/ui/components/sheet"; interface RoutingTraceSheetProps { isOpen: boolean; setIsOpen: (open: boolean) => void; bookingUid: string; /** Callback to open the wrong assignment report dialog. If not provided, report button is hidden */ onReport?: () => void; hasExistingReport?: boolean; } export function RoutingTraceSheet({ isOpen, setIsOpen, bookingUid, onReport, hasExistingReport, }: RoutingTraceSheetProps) { const { t } = useLocale(); const showReportButton = !!onReport; const { data, isLoading } = trpc.viewer.bookings.getRoutingTrace.useQuery( { bookingUid }, { enabled: isOpen, staleTime: 10 * 60 * 1000, } ); return ( {showReportButton ? (
{t("routing_trace")}
) : ( {t("routing_trace")} )}
{isLoading && (
{[1, 2, 3].map((i) => (
))}
)} {!isLoading && !data?.steps?.length && (

{t("no_results_found")}

)} {!isLoading && data?.steps && data.steps.length > 0 && (
{data.steps.map((step, idx) => { const isLast = idx === data.steps.length - 1; return (
{/* Timeline connector line */} {!isLast && (
)} {/* Icon circle */}
{/* Content */}
{getDomainLabel(step.domain)} {dayjs(step.timestamp).format("h:mm:ss.SSS A")}

{step.message}

); })}
)} ); }