import type { Dispatch } from "react"; import type { CallDetailsAction, CallDetailsState } from "@calcom/features/ee/workflows/lib/types"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { Badge } from "@calcom/ui/components/badge"; import { Button } from "@calcom/ui/components/button"; import { Sheet, SheetContent, SheetBody, SheetHeader, SheetFooter, SheetClose, } from "@calcom/ui/components/sheet"; import { UserIcon } from "@coss/ui/icons"; interface CallDetailsSheetProps { state: CallDetailsState; dispatch: Dispatch; } export function CallDetailsSheet({ state, dispatch }: CallDetailsSheetProps) { const { t } = useLocale(); const { selectedCall } = state.callDetailsSheet; if (!selectedCall) return null; const formatDuration = (durationMs: number) => { const totalSeconds = Math.round(durationMs / 1000); const minutes = Math.floor(totalSeconds / 60); const seconds = totalSeconds % 60; return `${minutes}:${seconds.toString().padStart(2, "0")}`; }; const formatTimestamp = (timestamp: number) => { const date = new Date(timestamp); return date.toLocaleString(); }; return ( { dispatch({ type: "CLOSE_MODAL" }); }}>

{t("call_details")}

{t("call_id")}: {selectedCall.call_id}{" "} {selectedCall.call_status}

{/* Call Information */}

{t("call_information")}

{t("start_time")}

{selectedCall.start_timestamp ? formatTimestamp(selectedCall.start_timestamp) : t("unknown")}

{t("duration")}

{selectedCall.duration_ms ? formatDuration(selectedCall.duration_ms) : t("unknown")}

{t("from")}

{"from_number" in selectedCall ? selectedCall.from_number || t("unknown") : t("unknown")}

{t("to")}

{"to_number" in selectedCall ? selectedCall.to_number || t("unknown") : t("unknown")}

{t("sentiment")}

{selectedCall.call_analysis?.user_sentiment || "Unknown"}

{t("disconnect_reason")}

{selectedCall.disconnection_reason?.replace(/_/g, " ")}

{/* Call Summary */} {selectedCall.call_analysis?.call_summary && (

{t("call_summary")}

{selectedCall.call_analysis.call_summary}

)} {/* Recording Section */}

{t("recording")}

{/* Transcription */}

{t("transcription")}

{selectedCall.transcript ? ( selectedCall.transcript .split("\n") .filter((line) => line.trim()) .map((line, index) => { const isAgent = line.startsWith("Agent:"); const isUser = line.startsWith("User:"); const content = line.replace(/^(Agent:|User:)\s*/, ""); if (!isAgent && !isUser) return null; return (
{isAgent ? t("agent") : t("user")}

{content}

); }) ) : (

{t("no_transcript_available")}

)}
{/* Event Details */} {selectedCall.retell_llm_dynamic_variables && (

{t("event_details")}

                  {JSON.stringify(selectedCall.retell_llm_dynamic_variables, null, 2)}
                
)}
); }