"use client"; import { ExternalLink } from "lucide-react"; import { Badge } from "@/components/ui/badge"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Separator } from "@/components/ui/separator"; import { formatCategory } from "@/lib/format-enums"; import type { ChatSession } from "../lib/types"; import CountryDisplay from "./CountryDisplay"; import LanguageDisplay from "./LanguageDisplay"; interface SessionDetailsProps { session: ChatSession; } /** * Component for basic session information */ function SessionBasicInfo({ session }: { session: ChatSession }) { return (

Basic Information

Session ID: {session.id.slice(0, 8)}...
Start Time: {new Date(session.startTime).toLocaleString()}
{session.endTime && (
End Time: {new Date(session.endTime).toLocaleString()}
)}
); } /** * Component for session location and language */ function SessionLocationInfo({ session }: { session: ChatSession }) { return (

Location & Language

{session.countryCode && (
Country:
)} {session.language && (
Language:
)} {session.ipAddress && (
IP Address: {session.ipAddress}
)}
); } /** * Component for session metrics */ function SessionMetrics({ session }: { session: ChatSession }) { return (

Session Metrics

{session.messagesSent !== null && session.messagesSent !== undefined && (
Messages Sent: {session.messagesSent}
)} {session.userId && (
User ID: {session.userId}
)}
); } /** * Component for session analysis and status */ function SessionAnalysis({ session }: { session: ChatSession }) { return (

AI Analysis

{session.category && (
Category: {formatCategory(session.category)}
)} {session.sentiment && (
Sentiment: {session.sentiment.charAt(0).toUpperCase() + session.sentiment.slice(1)}
)}
); } /** * Component for session status flags */ function SessionStatusFlags({ session }: { session: ChatSession }) { const hasStatusFlags = session.escalated !== null || session.forwardedHr !== null; if (!hasStatusFlags) return null; return (

Status Flags

{session.escalated !== null && session.escalated !== undefined && (
Escalated: {session.escalated ? "Yes" : "No"}
)} {session.forwardedHr !== null && session.forwardedHr !== undefined && (
Forwarded to HR: {session.forwardedHr ? "Yes" : "No"}
)}
); } /** * Component for session summary */ function SessionSummary({ session }: { session: ChatSession }) { if (!session.summary) return null; return (

AI Summary

{session.summary}

); } /** * Component to display session details with formatted country and language names */ export default function SessionDetails({ session }: SessionDetailsProps) { return ( Session Information
{!session.summary && session.initialMsg && (

Initial Message

"{session.initialMsg}"

)} {session.fullTranscriptUrl && ( <> )}
); }