chordia-ui 3.4.2 → 3.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/Timeline.cjs.js +6 -1
  2. package/dist/Timeline.cjs.js.map +1 -1
  3. package/dist/Timeline.es.js +597 -129
  4. package/dist/Timeline.es.js.map +1 -1
  5. package/dist/UpdatedInteractionRecording.cjs.js +1 -1
  6. package/dist/UpdatedInteractionRecording.cjs.js.map +1 -1
  7. package/dist/UpdatedInteractionRecording.es.js +260 -258
  8. package/dist/UpdatedInteractionRecording.es.js.map +1 -1
  9. package/dist/components/UpdatedInteractionDetails.cjs.js +2 -2
  10. package/dist/components/UpdatedInteractionDetails.cjs.js.map +1 -1
  11. package/dist/components/UpdatedInteractionDetails.es.js +349 -322
  12. package/dist/components/UpdatedInteractionDetails.es.js.map +1 -1
  13. package/dist/components/media.cjs.js +1 -1
  14. package/dist/components/media.cjs.js.map +1 -1
  15. package/dist/components/media.es.js +8 -9
  16. package/dist/components/media.es.js.map +1 -1
  17. package/dist/index.cjs.js +1 -1
  18. package/dist/index.es.js +52 -53
  19. package/dist/index.es.js.map +1 -1
  20. package/dist/pages/interactionDetails.cjs.js +2 -2
  21. package/dist/pages/interactionDetails.cjs.js.map +1 -1
  22. package/dist/pages/interactionDetails.es.js +16 -17
  23. package/dist/pages/interactionDetails.es.js.map +1 -1
  24. package/package.json +1 -1
  25. package/src/components/UpdatedInteractionDetails/UpdatedInteractionDetails.jsx +35 -1
  26. package/src/components/UpdatedInteractionDetails/UpdatedInteractionRecording.jsx +142 -124
  27. package/src/components/UpdatedInteractionDetails/UpdatedInteractionSignals.jsx +14 -6
  28. package/dist/TranscriptCard.cjs.js +0 -7
  29. package/dist/TranscriptCard.cjs.js.map +0 -1
  30. package/dist/TranscriptCard.es.js +0 -474
  31. package/dist/TranscriptCard.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"UpdatedInteractionDetails.es.js","sources":["../../src/components/UpdatedInteractionDetails/UpdatedCoachingSynthesisCard.jsx","../../src/components/UpdatedInteractionDetails/UpdatedInteractionContext.jsx","../../src/components/UpdatedInteractionDetails/UpdatedInteractionScores.jsx","../../src/components/UpdatedInteractionDetails/UpdatedInteractionSignals.jsx","../../src/components/UpdatedInteractionDetails/UpdatedCompassScore.jsx","../../src/components/UpdatedInteractionDetails/UpdatedInteractionDetails.jsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport { ShieldCheck, ThumbsUp, TrendingUp, Lightbulb } from \"lucide-react\";\n\n/**\n * UpdatedCoachingSynthesisCard — \"COACHING SUMMARY\" section matching Figma node 113-7216.\n *\n * Props:\n * - data object Coaching synthesis response\n * - loading boolean Show shimmer loading state\n * - error string Error message to display\n *\n * Data shape:\n * - one_liner string\n * - context string\n * - strengths Array<{ text: string, quote?: string }>\n * - improvements Array<{ text: string, quote?: string }>\n * - overall string \"effective\" | \"strong\" | \"needs_improvement\" | \"mixed\"\n */\n\nconst COLORS = {\n strong: \"var(--Grey-Strong, #2E3236)\",\n muted: \"var(--Grey-Muted, #808183)\",\n absent: \"var(--Grey-absent, #D9D9D9)\",\n accent: \"var(--rail-orange, #C98A5A)\",\n itemText: \"var(--text-item, #3F3F3F)\",\n quoteLine: \"var(--border-warm, #B2AEA8)\",\n quoteText: \"var(--text-subtle-warm, #767473)\",\n iconBg: \"var(--surface-hover, #F3F7F7)\",\n};\n\nconst OVERALL_MAP = {\n effective: \"Effective\",\n strong: \"Strong\",\n needs_improvement: \"Needs Improvement\",\n mixed: \"Mixed\",\n};\n\nconst STYLE_ID = \"updated-coaching-synthesis-keyframes\";\n\nfunction ensureKeyframes() {\n if (typeof document === \"undefined\") return;\n if (document.getElementById(STYLE_ID)) return;\n const style = document.createElement(\"style\");\n style.id = STYLE_ID;\n style.textContent = `\n @keyframes updated-coaching-shimmer {\n 0% { background-position: -200% 0; }\n 100% { background-position: 200% 0; }\n }\n @keyframes updated-coaching-pulse {\n 0%, 100% { opacity: 0.4; }\n 50% { opacity: 1; }\n }\n `;\n document.head.appendChild(style);\n}\n\nfunction OverallBadge({ overall }) {\n const label = OVERALL_MAP[overall] || (overall ? overall.replace(/_/g, \" \") : \"\");\n\n return (\n <div style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n flexShrink: 0,\n }}>\n <span style={{\n fontSize: 13,\n fontWeight: 400,\n color: COLORS.strong,\n fontFamily: \"var(--font-sans)\",\n lineHeight: 1.2,\n }}>\n Overall:\n </span>\n <div style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n }}>\n <ThumbsUp size={14} color={COLORS.strong} strokeWidth={1.5} />\n <span style={{\n fontSize: 13,\n fontWeight:600,\n color: COLORS.strong,\n fontFamily: \"var(--font-sans)\",\n lineHeight: 1.2,\n }}>\n {label}\n </span>\n </div>\n </div>\n );\n}\n\nfunction SectionItem({ item }) {\n const text = typeof item === \"string\" ? item : item?.text || \"\";\n const quote = typeof item === \"object\" ? item?.quote : null;\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n <div style={{\n fontSize: 14,\n fontWeight: 600,\n color: COLORS.itemText,\n fontFamily: \"var(--font-sans)\",\n lineHeight: 1.5,\n }}>\n {text}\n </div>\n {quote && (\n <div style={{\n display: \"flex\",\n gap: 10,\n }}>\n <div style={{\n width: 1,\n flexShrink: 0,\n alignSelf: \"stretch\",\n background: COLORS.quoteLine,\n }} />\n <div style={{\n fontSize: 14,\n fontWeight: 400,\n color: COLORS.quoteText,\n fontFamily: \"var(--font-sans)\",\n lineHeight: 1.5,\n }}>\n &ldquo;{quote}&rdquo;\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction CoachingColumn({ icon, label, items }) {\n if (!items || items.length === 0) return null;\n\n return (\n <div style={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 16,\n borderRadius: 12,\n }}>\n {/* Column header */}\n <div style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 16,\n }}>\n {/* Icon with circular bg */}\n <div style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 24,\n height: 24,\n borderRadius: 9999,\n background: COLORS.iconBg,\n flexShrink: 0,\n }}>\n {icon}\n </div>\n <span style={{\n fontSize: 16,\n fontWeight: 600,\n color: COLORS.strong,\n fontFamily: \"var(--font-sans)\",\n lineHeight: \"normal\",\n }}>\n {label}\n </span>\n </div>\n\n {/* Items */}\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 24 }}>\n {items.map((item, i) => (\n <SectionItem key={i} item={item} />\n ))}\n </div>\n </div>\n );\n}\n\nconst UpdatedCoachingSynthesisCard = ({ data, loading, error }) => {\n React.useEffect(() => { ensureKeyframes(); }, []);\n\n // Loading state\n if (loading) {\n return (\n <div style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 12,\n }}>\n <div style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n }}>\n <div style={{\n width: 6,\n height: 6,\n borderRadius: \"50%\",\n background: COLORS.accent,\n animation: \"updated-coaching-pulse 1.5s ease-in-out infinite\",\n }} />\n <span style={{\n fontSize: 14,\n color: COLORS.muted,\n fontWeight: 500,\n }}>\n Synthesizing coaching summary...\n </span>\n </div>\n {[180, 260, 220].map((w, i) => (\n <div\n key={i}\n style={{\n height: 10,\n width: w,\n maxWidth: \"100%\",\n borderRadius: 4,\n background: `linear-gradient(90deg, ${COLORS.absent} 25%, var(--shimmer-mid, #ECECEC) 50%, ${COLORS.absent} 75%)`,\n backgroundSize: \"200% 100%\",\n animation: \"updated-coaching-shimmer 1.8s ease-in-out infinite\",\n animationDelay: `${i * 0.2}s`,\n }}\n />\n ))}\n </div>\n );\n }\n\n // Error state\n if (error) {\n return (\n <div style={{\n fontSize: 14,\n color: COLORS.muted,\n }}>\n Unable to generate coaching summary.\n </div>\n );\n }\n\n // No data\n if (!data) return null;\n\n const strengths = data.strengths || [];\n const improvements = data.improvements || [];\n const oneLiner = typeof data.one_liner === \"string\" ? data.one_liner : data.one_liner?.text || \"\";\n const context = typeof data.context === \"string\" ? data.context : data.context?.text || \"\";\n\n return (\n <div style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 16,\n background: \"#FFF\",\n }}>\n {/* Section header — Figma: icon + \"Coaching Summary\" 16px / 700 / #2E3236 */}\n <div style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n }}>\n <ShieldCheck size={20} color={COLORS.accent} strokeWidth={2} />\n <span style={{\n fontSize: 16,\n fontWeight: 600,\n color: COLORS.strong,\n fontFamily: \"var(--font-sans)\",\n lineHeight: 1.2,\n textTransform: \"uppercase\",\n }}>\n Coaching Summary\n </span>\n </div>\n\n {/* One-liner — Figma: 14px / 600 / #2E3236 */}\n {oneLiner && (\n <div style={{\n fontSize: 14,\n fontWeight: 500,\n color: COLORS.strong,\n fontFamily: \"var(--font-sans)\",\n lineHeight: 1.5,\n }}>\n {oneLiner}\n </div>\n )}\n\n {/* Context row + Overall badge — Figma: horizontal, space-between */}\n <div style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: 16,\n justifyContent: \"space-between\",\n }}>\n {context && (\n <div style={{\n fontSize: 14,\n fontWeight: 400,\n color: COLORS.muted,\n fontFamily: \"var(--font-sans)\",\n lineHeight: 1.5,\n flex: 1,\n }}>\n {context}\n </div>\n )}\n {data.overall && <OverallBadge overall={data.overall} />}\n </div>\n\n {/* Two-column layout: Key Strengths + Improvements */}\n {/* Figma: border-top 1px #D9D9D9, padding-top 24px, gap 24px */}\n {(strengths.length > 0 || improvements.length > 0) && (\n <div style={{\n display: \"flex\",\n gap: 24,\n paddingTop: 24,\n borderTop: `1px solid ${COLORS.absent}`,\n }}>\n <CoachingColumn\n icon={<TrendingUp size={14} color={COLORS.strong} strokeWidth={1.5} />}\n label=\"Key Strengths\"\n items={strengths}\n />\n <CoachingColumn\n icon={<Lightbulb size={14} color={COLORS.strong} strokeWidth={1.5} />}\n label=\"Improvements\"\n items={improvements}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default UpdatedCoachingSynthesisCard;\n","import { ExternalLink } from 'lucide-react';\n\n/*\n * Figma node: 101-2385 (Context grid — right column top, inside Frame 53 > Frame 56)\n *\n * Outer: display: flex; gap: 24px; horizontal\n * Two columns: flex: 1, vertical, gap: 12px\n *\n * Each metadata row:\n * padding: 8px 8px 12px 8px;\n * justify-content: space-between;\n * align-items: center;\n * border-bottom: 1px solid #D9D9D9;\n *\n * Label: 13px / 400 / #2E3236 (Grey/Strong)\n * Value: 13px / 400 / #808183 (Grey/Muted)\n *\n * More Details: ExternalLink icon 16px #808183 + \"More Details\" 13px/400/#2E3236\n */\n\nfunction fmtDur(seconds) {\n const m = Math.floor(seconds / 60);\n const s = Math.round(seconds % 60);\n return `${m}:${s.toString().padStart(2, '0')}`;\n}\n\nconst ROW_STYLE = {\n display: 'flex',\n justifyContent: 'space-between',\n padding: '8px 8px 12px 8px',\n alignItems: 'center',\n gap: 24,\n fontFamily: 'var(--font-sans)',\n fontSize: 13,\n fontWeight: 400,\n lineHeight: 'normal',\n borderBottom: '1px solid var(--Grey-absent, #D9D9D9)',\n};\n\nconst COLUMN_STYLE = {\n display: 'flex',\n flexDirection: 'column',\n flex: '1 0 0',\n gap: 12,\n minWidth: 0,\n};\n\nconst UpdatedInteractionContext = ({\n meta = {},\n callPurpose = {},\n classification = {},\n dimensions = [],\n outcomeQuality = 'Neutral',\n onMoreDetails,\n}) => {\n const duration = meta.duration_seconds != null ? fmtDur(meta.duration_seconds) : null;\n const messages = meta.message_count;\n const driver = callPurpose.interaction_driver;\n const paradigm = classification.interaction_paradigm;\n\n // Left column rows\n const leftRows = [\n duration != null && { label: 'Duration', value: duration },\n driver != null && { label: 'Driver', value: driver },\n ...dimensions.filter((_, i) => i % 2 === 0).map((d) => ({ label: d.label || d.key, value: d.value })),\n { label: 'Outcome Quality', value: outcomeQuality },\n ].filter(Boolean);\n\n // Right column rows\n const rightRows = [\n messages != null && { label: 'Messages', value: messages },\n paradigm != null && { label: 'Paradigm', value: paradigm },\n ...dimensions.filter((_, i) => i % 2 === 1).map((d) => ({ label: d.label || d.key, value: d.value })),\n { label: 'More Details', isLink: true },\n ].filter(Boolean);\n\n const renderRow = (item) => {\n if (item.isLink) {\n return (\n <div\n key={item.label}\n onClick={onMoreDetails}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 6,\n padding: '8px 0 8px 0',\n cursor: 'pointer',\n fontFamily: 'var(--font-sans)',\n }}\n >\n <ExternalLink size={16} color=\"#808183\" strokeWidth={1.5} />\n <span style={{ color: 'var(--Grey-Strong, #2E3236)', fontSize: 13, fontWeight: 400 }}>\n {item.label}\n </span>\n </div>\n );\n }\n\n return (\n <div\n key={item.label}\n style={ROW_STYLE}\n >\n <span style={{ color: 'var(--Grey-Strong, #2E3236)', whiteSpace: 'nowrap', flexShrink: 0 }}>\n {item.label}\n </span>\n <span style={{ color: 'var(--Grey-Muted, #808183)', textAlign: 'right' }}>\n {item.value}\n </span>\n </div>\n );\n };\n\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: 24,\n alignSelf: 'stretch',\n }}\n >\n {/* Left column */}\n <div style={COLUMN_STYLE}>\n {leftRows.map((row) => renderRow(row))}\n </div>\n\n {/* Right column */}\n <div style={COLUMN_STYLE}>\n {rightRows.map((row) => renderRow(row))}\n </div>\n </div>\n );\n};\n\nexport default UpdatedInteractionContext;\n","import React from 'react';\nimport { ThumbsUp, Plus } from 'lucide-react';\n\n/*\n * Figma node: 101-2386 (Agent Lift Analysis)\n *\n * Container: fill=#F3F1E5, padding: 24px, gap: 24px, vertical,\n * border-radius: 8px, border: 1px solid #D9D9D9\n *\n * Header (Frame 12): vertical, gap: 32\n * Row (Frame 20): horizontal, space-between, center\n * \"Agent Lift Analysis\" — 15px/700/#2E3236, lh=120%\n * Right (Frame 18): horizontal, gap: 8, center\n * \"vs. Average Agent:\" — 13px/400/#2E3236, lh=120%\n * \"+4.3pp\" — 14px/700/#2E3236, lh=120%\n * Divider: border-left 1px #D9D9D9, padding-left: 8\n * ThumbsUp 14x14 + \"Positive\" 13px/700/#2E3236\n *\n * Metrics (Frame 15): horizontal, gap: 24, align: bottom\n * Col 1 (Frame 8): vertical, gap: 16, center\n * \"94%\" — 28px/400/#808183, lh=120%\n * Labels: vertical, gap: 8\n * \"Expected Outcome\" — 13px/400/#2E3236\n * \"Based on call type & difficulty\" — 13px/400/#808183\n * Plus icon: 16x16, fill=#2E3236, radius: 24, white stroke\n * Col 2 (Frame 9): vertical, gap: 16, pad-left: 24, border-left: 1px #D9D9D9\n * \"-11.0pp\" — 28px/400/#808183\n * \"Agent Impact\" — 13px/400/#2E3236\n * \"Behavior-driven change\" — 13px/400/#808183\n * Col 3 (Frame 7): vertical, gap: 16, pad-left: 24, border-left: 1px #D9D9D9\n * \"83%\" — 28px/400/#2E3236 (highlighted)\n * \"Predicted Outcome\" — 13px/700/#2E3236\n * \"With agent behaviors\" — 13px/400/#808183\n *\n * Key Drivers (Frame 13): vertical, gap: 4\n * \"Key Drivers\" — 12px/700/#2E3236, lh=120%\n * Chips (Frame 16): horizontal, gap: 4\n * Each: bg=#FFF, pad=8, radius=4, border 1px #D9D9D9\n * Text: 12px/400/#2E3236, lh=120%\n */\n\nconst COLORS = {\n strong: 'var(--Grey-Strong, #2E3236)',\n muted: 'var(--Grey-Muted, #808183)',\n absent: 'var(--Grey-absent, #D9D9D9)',\n white: 'var(--Grey-White, #FFF)',\n cardBg: 'var(--surface-warm-40, rgba(243, 241, 229, 0.40))',\n};\n\nconst LH = 1.2;\nconst MAX_VISIBLE_DRIVERS = 3;\n\nconst fmtPct = (v) => (v != null ? Math.round(v * 100) + '%' : '\\u2014');\n\nconst fmtPp = (v) => {\n if (v == null) return '\\u2014';\n const pp = (v * 100).toFixed(1);\n return v > 0 ? `+${pp}pp` : `${pp}pp`;\n};\n\nconst UpdatedInteractionScores = ({ outcomeLift, driverLabels = [] }) => {\n if (!outcomeLift || outcomeLift.lift == null) return null;\n\n const pExpected = outcomeLift.p_expected;\n const pFull = outcomeLift.p_full;\n const liftRaw =\n outcomeLift.lift_raw ??\n (pFull != null && pExpected != null ? pFull - pExpected : null);\n const liftRecentered = outcomeLift.lift;\n\n const liftBand = outcomeLift.interpretation?.lift_band\n ? outcomeLift.interpretation.lift_band.replace(/_/g, ' ')\n : liftRecentered >= 0\n ? 'Positive'\n : 'Negative';\n\n const liftBandCapitalized =\n liftBand.charAt(0).toUpperCase() + liftBand.slice(1);\n\n const visibleDrivers = driverLabels.slice(0, MAX_VISIBLE_DRIVERS);\n const overflowCount = driverLabels.length - MAX_VISIBLE_DRIVERS;\n\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n padding: 24,\n gap: 24,\n borderRadius: 8,\n border: `1px solid ${COLORS.absent}`,\n background: COLORS.cardBg,\n alignSelf: 'stretch',\n }}\n >\n {/* Frame 12: Header + Metrics — vertical, gap: 32 */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: 32 }}>\n\n {/* Frame 20: Title row — horizontal, space-between, center */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 24,\n alignSelf: 'stretch',\n }}\n >\n <span\n style={{\n fontSize: 15,\n fontWeight: 600,\n color: COLORS.strong,\n fontFamily: 'var(--font-sans)',\n lineHeight: LH,\n }}\n >\n Agent Lift Analysis\n </span>\n\n {/* Frame 18: right meta — horizontal, gap: 8, center */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n fontFamily: 'var(--font-sans)',\n }}\n >\n <span style={{ fontSize: 13, fontWeight: 400, color: COLORS.strong, lineHeight: LH }}>\n vs. Average Agent:\n </span>\n {/* Frame 19: value */}\n <span style={{ fontSize: 14, fontWeight: 600, color: COLORS.strong, lineHeight: LH }}>\n {fmtPp(liftRecentered)}\n </span>\n {/* Frame 21: divider + thumbsup + band */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 6,\n paddingLeft: 8,\n borderLeft: `1px solid ${COLORS.absent}`,\n }}\n >\n <ThumbsUp size={14} color={COLORS.strong} />\n <span style={{ fontSize: 13, fontWeight: 600, color: COLORS.strong, lineHeight: LH }}>\n {liftBandCapitalized}\n </span>\n </div>\n </div>\n </div>\n\n {/* Frame 15: Metrics row — horizontal, gap: 24, align: bottom */}\n <div\n style={{\n display: 'flex',\n alignItems: 'flex-end',\n gap: 24,\n }}\n >\n {/* Frame 8: Expected Outcome — vertical, gap: 16, center */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: 16, alignItems: 'center' }}>\n <span style={{ fontSize: 28, fontWeight: 400, color: COLORS.muted, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n {fmtPct(pExpected)}\n </span>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>\n <span style={{ fontSize: 13, fontWeight: 400, color: COLORS.strong, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n Expected Outcome\n </span>\n <span style={{ fontSize: 13, fontWeight: 400, color: COLORS.muted, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n Based on call type & difficulty\n </span>\n </div>\n </div>\n\n {/* Plus icon: 16x16, fill=#2E3236, radius: 24 */}\n {/* <div\n style={{\n width: 16,\n height: 16,\n borderRadius: 24,\n background: COLORS.strong,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n }}\n >\n <Plus size={9.33} color={COLORS.white} strokeWidth={1} />\n </div> */}\n\n {/* Frame 9: Agent Impact — vertical, gap: 16, pad-left: 24, border-left */}\n <div style={{\n display: 'flex', flexDirection: 'column', gap: 16, alignItems: 'center',\n paddingLeft: 24, borderLeft: `1px solid ${COLORS.absent}`,\n }}>\n <span style={{ fontSize: 28, fontWeight: 400, color: COLORS.muted, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n {fmtPp(liftRaw)}\n </span>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>\n <span style={{ fontSize: 13, fontWeight: 400, color: COLORS.strong, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n Agent Impact\n </span>\n <span style={{ fontSize: 13, fontWeight: 400, color: COLORS.muted, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n Behavior-driven change\n </span>\n </div>\n </div>\n\n {/* Frame 7: Predicted Outcome — vertical, gap: 16, pad-left: 24, border-left */}\n <div style={{\n display: 'flex', flexDirection: 'column', gap: 16, alignItems: 'center',\n paddingLeft: 24, borderLeft: `1px solid ${COLORS.absent}`,\n }}>\n <span style={{ fontSize: 28, fontWeight: 400, color: COLORS.strong, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n {fmtPct(pFull)}\n </span>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>\n <span style={{ fontSize: 13, fontWeight: 600, color: COLORS.strong, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n Predicted Outcome\n </span>\n <span style={{ fontSize: 13, fontWeight: 400, color: COLORS.muted, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n With agent behaviors\n </span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Frame 13: Key Drivers — vertical, gap: 4 */}\n {driverLabels.length > 0 && (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 4, alignSelf: 'stretch' }}>\n <span\n style={{\n fontSize: 12,\n fontWeight: 600,\n color: COLORS.strong,\n fontFamily: 'var(--font-sans)',\n lineHeight: LH,\n }}\n >\n Key Drivers\n </span>\n {/* Frame 16: chips — horizontal, gap: 4 */}\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: 4 }}>\n {visibleDrivers.map((label, i) => (\n <div\n key={i}\n style={{\n display: 'flex',\n padding: 8,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 4,\n border: `1px solid ${COLORS.absent}`,\n background: COLORS.white,\n }}\n >\n <span\n style={{\n fontSize: 12,\n fontWeight: 400,\n color: COLORS.strong,\n fontFamily: 'var(--font-sans)',\n lineHeight: LH,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: 200,\n }}\n >\n {label}\n </span>\n </div>\n ))}\n {overflowCount > 0 && (\n <div\n style={{\n display: 'flex',\n padding: 8,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 4,\n border: `1px solid ${COLORS.absent}`,\n background: COLORS.white,\n }}\n >\n <span\n style={{\n fontSize: 12,\n fontWeight: 400,\n color: COLORS.strong,\n fontFamily: 'var(--font-sans)',\n lineHeight: LH,\n whiteSpace: 'nowrap',\n }}\n >\n + {overflowCount}\n </span>\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default UpdatedInteractionScores;\n","import { useState } from 'react';\nimport { ChevronDown, ChevronUp, PlayCircle, FileSignal, ScrollText } from 'lucide-react';\n\n/* Hover circle wrapper for icons */\nconst HoverIcon = ({ children, size = 28, onClick, title }) => {\n const [hovered, setHovered] = useState(false);\n return (\n <div\n title={title}\n onClick={onClick}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: size,\n height: size,\n borderRadius: 9999,\n background: hovered ? 'var(--surface-hover, #F3F7F7)' : 'transparent',\n cursor: 'pointer',\n flexShrink: 0,\n transition: 'background 0.15s',\n }}\n >\n {children}\n </div>\n );\n};\n\n/*\n * Figma node: 222-672 (Signals accordion)\n *\n * Header: FileSignal icon in #F3F7F7 circle + \"Signals\" 15px/500 + \"N Signals Detected\" 14px/500\n *\n * Accordion Title (collapsed): horizontal, gap: 12, pad: 8 0, border-bottom: 1px #D9D9D9\n * Name: 14px/600/#0B0A0A, lh: 171%\n * Chevron: 20x20, stroke #767473\n *\n * Accordion Body (reason): horizontal, gap: 12, pad: 8 0, space-between\n * Reason: 14px/400/#767473, lh: 150%\n * Right: ScrollText icon 16x16 #808183 + time 13px/400/#808183\n *\n * Evidence (Frame 39): horizontal, gap: 8, pad: 8 0\n * Play circle: ~17px, stroke #808183\n * Quote: 13px/400/#2E3236, lh: 120%\n */\n\nconst UpdatedInteractionSignals = ({\n signals = { signals: [], present_count: 0, total_signals_evaluated: 0 },\n expandedSignals = new Set(),\n toggleSignal = () => {},\n playEvidence = () => {},\n highlightTurns = () => {},\n onShowInTranscript = () => {},\n timelinePlaying = false,\n currentTimeSeconds = 0,\n}) => {\n const signalList = signals?.signals ?? [];\n const presentCount = signals?.present_count ?? signalList.length;\n\n const fmtMs = (ms) => {\n const minutes = Math.floor(ms / 60000);\n const seconds = Math.floor((ms % 60000) / 1000);\n return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\n };\n\n const isEvPlaying = (ev) =>\n timelinePlaying &&\n ev.start_ms != null &&\n currentTimeSeconds * 1000 >= ev.start_ms &&\n currentTimeSeconds * 1000 <= (ev.end_ms ?? ev.start_ms + 5000);\n\n return (\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n alignSelf: 'stretch',\n width: '100%',\n gap: 16,\n }}>\n {/* ── Header: icon + \"Signals\" + count ── */}\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: 16,\n width: '100%',\n }}>\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 34,\n height: 34,\n borderRadius: 9999,\n background: 'var(--surface-hover, #F3F7F7)',\n flexShrink: 0,\n }}>\n <FileSignal size={20} color=\"#2E3236\" strokeWidth={1.5} />\n </div>\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n flex: 1,\n }}>\n <span style={{\n fontSize: 15,\n fontWeight: 500,\n color: 'var(--Grey-Strong, #2E3236)',\n }}>\n Signals\n </span>\n <span style={{\n fontSize: 14,\n fontWeight: 500,\n color: 'var(--Grey-Strong, #2E3236)',\n }}>\n {presentCount} Signals Detected\n </span>\n </div>\n </div>\n\n {/* ── Signal list (accordion) ── */}\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n alignSelf: 'stretch',\n background: 'var(--Grey-White, #FFF)',\n gap: 8,\n }}>\n {signalList.length === 0 && (\n <div style={{\n padding: '8px 0',\n fontSize: 14,\n color: 'var(--Grey-Muted, #808183)',\n }}>\n No signals detected.\n </div>\n )}\n\n {signalList.map((signal, idx) => {\n const key = signal.key ?? signal.id ?? idx;\n const isExpanded = expandedSignals.has(key);\n const obsCount = signal.observations?.length ?? 0;\n\n return (\n <div\n key={key}\n id={`signal-${key}`}\n style={{\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n gap: 8,\n }}\n >\n {/* ── Accordion Title — signal row ── */}\n <button\n onClick={() => toggleSignal(key)}\n style={{\n display: 'flex',\n padding: '8px 0',\n alignItems: 'center',\n gap: 12,\n alignSelf: 'stretch',\n width: '100%',\n background: 'none',\n border: 'none',\n borderBottom: '1px solid var(--Grey-absent, #D9D9D9)',\n cursor: 'pointer',\n }}\n >\n <span style={{\n flex: 1,\n textAlign: 'left',\n fontSize: 14,\n fontWeight: 600,\n color: 'var(--text-dark, #0B0A0A)',\n lineHeight: 1.71,\n }}>\n {signal.display_name || signal.key?.replace(/_/g, ' ')}\n {obsCount > 0 && (\n <span style={{\n fontWeight: 600,\n color: 'var(--text-dark, #0B0A0A)',\n marginLeft: 6,\n }}>\n ({obsCount})\n </span>\n )}\n </span>\n {isExpanded ? (\n <ChevronUp size={20} color=\"#767473\" />\n ) : (\n <ChevronDown size={20} color=\"#767473\" />\n )}\n </button>\n\n {/* ── Expanded: Observations ── */}\n {isExpanded && signal.observations?.length > 0 && (\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n alignSelf: 'stretch',\n gap: 0,\n }}>\n {signal.observations.map((obs, obsIdx) => (\n <div\n key={obs.key ?? obsIdx}\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignSelf: 'stretch',\n gap: 8,\n }}\n >\n {/* Accordion Body — reason + timestamp */}\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: 12,\n padding: '8px 0',\n justifyContent: 'space-between',\n }}>\n <span style={{\n flex: 1,\n fontSize: 14,\n fontWeight: 400,\n color: 'var(--text-subtle-warm, #767473)',\n lineHeight: 1.5,\n }}>\n {obs.reason || obs.explanation}\n </span>\n {obs.evidence?.[0]?.start_ms != null && (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n flexShrink: 0,\n }}\n >\n <HoverIcon\n size={28}\n title=\"Show in transcript\"\n onClick={(e) => {\n e.stopPropagation();\n onShowInTranscript(obs.evidence[0].start_ms);\n }}\n >\n <ScrollText size={16} color=\"#808183\" strokeWidth={1.5} />\n </HoverIcon>\n <span style={{\n fontSize: 13,\n fontWeight: 400,\n color: 'var(--Grey-Muted, #808183)',\n lineHeight: 1.2,\n whiteSpace: 'nowrap',\n }}>\n {fmtMs(obs.evidence[0].start_ms)}\n </span>\n </div>\n )}\n </div>\n\n {/* Evidence quotes — Frame 39 */}\n {obs.evidence?.map((ev, evIdx) => (\n ev.text && (\n <div\n key={evIdx}\n onClick={(e) => {\n e.stopPropagation();\n playEvidence(ev);\n }}\n onMouseEnter={() => highlightTurns(ev.turn_ids ?? [])}\n onMouseLeave={() => highlightTurns([])}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n padding: '8px 0',\n cursor: 'pointer',\n }}\n >\n <HoverIcon size={28}>\n <PlayCircle\n size={17}\n color={isEvPlaying(ev) ? 'var(--rail-orange, #C98A5A)' : 'var(--Grey-Muted, #808183)'}\n strokeWidth={1}\n />\n </HoverIcon>\n <span style={{\n fontSize: 13,\n fontWeight: 400,\n color: 'var(--Grey-Strong, #2E3236)',\n lineHeight: 1.2,\n }}>\n &ldquo;{ev.text}&rdquo;\n </span>\n </div>\n )\n ))}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default UpdatedInteractionSignals;\n","import React from 'react';\nimport { Info } from 'lucide-react';\n\n/*\n * Figma node: 270-6494 (Compass Score card)\n *\n * Container: padding: 24px, border-radius: 8px, border: 1px solid #D9D9D9,\n * background: #FFF, gap: 24px, vertical\n *\n * Title: \"Compass Score\" 15px/700/#2E3236\n * Description: 14px/400/#808183\n *\n * Content: horizontal, gap: 48, center both axes\n * Left: Meter 243x200 (SVG from Figma export)\n * Right: Legends vertical, gap: 8, centered\n * Each: label 12px/400/#2E3236 + Info 14px stroke=#ACACAD\n * Score bar: 5 segments 22x6, gap: 2, filled=#2E3236, empty=#E3E1D7\n */\n\nconst COLORS = {\n strong: 'var(--Grey-Strong, #2E3236)',\n muted: 'var(--Grey-Muted, #808183)',\n absent: 'var(--Grey-absent, #D9D9D9)',\n white: 'var(--Grey-White, #FFF)',\n accent: 'var(--rail-orange, #C98A5A)',\n track: 'var(--rail-surface-2, #E3E1D7)',\n infoIcon: 'var(--color-input-border, #ACACAD)',\n};\n\n// Gauge using stroke-based semi-circle arcs — matching Figma node 270-6499\nconst GaugeMeter = ({ score = 4, maxScore = 10 }) => {\n const svgW = 243;\n const svgH = 130;\n const cx = svgW / 2;\n const cy = svgH - 7;\n const r = 85; // mid-radius of the arc\n const sw = 30; // stroke-width (thickness of the arc band)\n const totalSeg = 5;\n const filledSeg = Math.min(Math.round((score / maxScore) * totalSeg), totalSeg);\n const segDeg = 180 / totalSeg; // 36° per segment\n\n // Convert polar (degrees, 0°=right, CCW) to SVG x,y (Y-down)\n const toXY = (angleDeg) => {\n const rad = (angleDeg * Math.PI) / 180;\n return {\n x: cx + r * Math.cos(rad),\n y: cy - r * Math.sin(rad),\n };\n };\n\n // SVG arc from startDeg to endDeg (both in math convention: 0=right, 180=left)\n // We draw clockwise in SVG (sweep-flag=1) from higher angle to lower angle\n const strokeArc = (fromDeg, toDeg) => {\n const s = toXY(fromDeg);\n const e = toXY(toDeg);\n const large = (fromDeg - toDeg) > 180 ? 1 : 0;\n return `M ${s.x} ${s.y} A ${r} ${r} 0 ${large} 1 ${e.x} ${e.y}`;\n };\n\n const gap = 2; // degrees gap between segments\n\n return (\n <svg width={svgW} height={svgH} viewBox={`0 0 ${svgW} ${svgH}`} fill=\"none\">\n {/* Segments from left (180°) to right (0°) */}\n {Array.from({ length: totalSeg }, (_, i) => {\n const fromA = 180 - i * segDeg - (i > 0 ? gap / 2 : 0);\n const toA = 180 - (i + 1) * segDeg + (i < totalSeg - 1 ? gap / 2 : 0);\n const isFilled = i < filledSeg;\n return (\n <path\n key={i}\n d={strokeArc(fromA, toA)}\n stroke={isFilled ? COLORS.strong : COLORS.track}\n strokeWidth={sw}\n strokeLinecap=\"butt\"\n fill=\"none\"\n />\n );\n })}\n </svg>\n );\n};\n\nconst ScoreBar = ({ value = 0, maxValue = 5 }) => (\n <div style={{ display: 'flex', gap: 2 }}>\n {Array.from({ length: maxValue }, (_, i) => (\n <div\n key={i}\n style={{\n width: 22,\n height: 6,\n borderRadius: 1,\n background: i < value ? COLORS.strong : COLORS.track,\n }}\n />\n ))}\n </div>\n);\n\nconst LegendItem = ({ label, value = 0, maxValue = 5 }) => (\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n gap: 8,\n padding: 8,\n alignItems: 'center',\n }}>\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n }}>\n <span style={{\n fontSize: 12,\n fontWeight: 400,\n color: COLORS.strong,\n fontFamily: 'var(--font-sans)',\n lineHeight: 'normal',\n }}>\n {label}\n </span>\n <Info size={14} color={COLORS.infoIcon} strokeWidth={1} />\n </div>\n <ScoreBar value={value} maxValue={maxValue} />\n </div>\n);\n\nconst UpdatedCompassScore = ({\n score = 83,\n maxScore = 100,\n predictedScore = 4,\n predictedLabel = 'Predicted Objective',\n description = '',\n legends = [\n { label: 'CSAT', value: 3 },\n { label: 'Resolution', value: 4 },\n { label: 'Process Adherence', value: 5 },\n { label: 'Communication', value: 3 },\n ],\n}) => {\n const formattedPredicted = String(predictedScore).padStart(2, '0');\n\n return (\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n padding: 24,\n borderRadius: 8,\n border: `1px solid ${COLORS.absent}`,\n background: COLORS.white,\n alignSelf: 'stretch',\n gap: 24,\n }}>\n {/* Section Title — left-aligned, vertical, gap: 8 */}\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n gap: 8,\n }}>\n <span style={{\n fontSize: 15,\n fontWeight: 600,\n color: COLORS.strong,\n fontFamily: 'var(--font-sans)',\n lineHeight: 1.2,\n }}>\n Compass Score\n </span>\n <span style={{\n fontSize: 14,\n fontWeight: 400,\n color: COLORS.muted,\n fontFamily: 'var(--font-sans)',\n lineHeight: 'normal',\n }}>\n {description}\n </span>\n </div>\n\n {/* Content: Meter (left) + Legends (right) */}\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 48,\n flex: 1,\n }}>\n {/* Left: Gauge + Pin + Score number */}\n <div style={{\n display: 'flex',\n width: 243,\n flexDirection: 'column',\n alignItems: 'center',\n flexShrink: 0,\n }}>\n <GaugeMeter score={score} maxScore={maxScore} />\n\n {/* Compass pin icon — exact Figma export */}\n <svg width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style={{ marginTop: -24 }}>\n <path d=\"M16 25.2169C19.958 25.2169 23.1667 22.0083 23.1667 18.0503C23.1667 14.0922 19.958 10.8836 16 10.8836C12.042 10.8836 8.83334 14.0922 8.83334 18.0503C8.83334 22.0083 12.042 25.2169 16 25.2169Z\" fill=\"var(--rail-orange, #C98A5A)\" />\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M30.4791 11.2328L33.4351 0L21.6888 3.09113C19.9212 2.41855 18.0036 2.05025 16 2.05025C7.16344 2.05025 0 9.2137 0 18.0503C0 26.8868 7.16344 34.0503 16 34.0503C24.8366 34.0503 32 26.8868 32 18.0503C32 15.6119 31.4546 13.301 30.4791 11.2328ZM16 30.5503C22.9036 30.5503 28.5 24.9538 28.5 18.0503C28.5 11.1467 22.9036 5.55025 16 5.55025C9.09644 5.55025 3.5 11.1467 3.5 18.0503C3.5 24.9538 9.09644 30.5503 16 30.5503Z\" fill=\"var(--rail-orange, #C98A5A)\" />\n </svg>\n\n {/* Score number below gauge */}\n <div style={{\n fontSize: 28,\n fontWeight: 400,\n color: COLORS.strong,\n fontFamily: 'var(--font-sans)',\n lineHeight: 1,\n textAlign: 'center',\n marginTop: 8,\n }}>\n {score}\n </div>\n </div>\n\n {/* Right: Predicted Score + Legends */}\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n gap: 8,\n alignItems: 'center',\n justifyContent: 'center',\n flex: 1,\n }}>\n {/* Predicted Score + Label */}\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n }}>\n <div style={{\n fontSize: 28,\n fontWeight: 400,\n color: COLORS.strong,\n fontFamily: 'var(--font-sans)',\n lineHeight: 1,\n textAlign: 'center',\n }}>\n {formattedPredicted}\n </div>\n <div style={{\n fontSize: 14,\n fontWeight: 400,\n color: COLORS.muted,\n fontFamily: 'var(--font-sans)',\n lineHeight: 1.43,\n textAlign: 'center',\n }}>\n {predictedLabel}\n </div>\n </div>\n\n {/* Divider */}\n <div style={{\n width: '100%',\n height: 1,\n background: COLORS.absent,\n }} />\n\n {/* Legend items */}\n {legends.map((legend, i) => (\n <LegendItem\n key={i}\n label={legend.label}\n value={legend.value}\n />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default UpdatedCompassScore;\n","import { useState, useRef } from 'react';\nimport { ArrowLeft, ArrowRight, CalendarDays, PhoneIncoming, ClipboardList, FileSignal, Repeat, ChevronDown, ChevronUp, Headset, CircleUser, History, ExternalLink } from 'lucide-react';\nimport UpdatedInteractionContext from './UpdatedInteractionContext';\nimport UpdatedInteractionRecording from './UpdatedInteractionRecording';\nimport UpdatedInteractionScores from './UpdatedInteractionScores';\nimport UpdatedCoachingSynthesisCard from './UpdatedCoachingSynthesisCard';\nimport UpdatedInteractionSignals from './UpdatedInteractionSignals';\nimport UpdatedCompassScore from './UpdatedCompassScore';\n\nconst TABS = [\n { key: 'overview', label: 'Overview' },\n { key: 'coaching', label: 'Coaching Summary' },\n { key: 'signals', label: 'Signals & Recording' },\n { key: 'comments', label: 'Comments' },\n];\n\nconst UpdatedInteractionDetails = ({\n title = 'Wheel Stud Replacement Enquiry',\n onBack,\n // Data props — all optional with defaults for demo\n data,\n coachingData,\n audioUrl,\n // Audio/playback props — pass these when the host app manages audio externally\n // (like InteractionDetailPanel does). If omitted, UpdatedInteractionRecording\n // manages its own audio element internally.\n audioRef: externalAudioRef,\n currentTimeSeconds,\n timelinePlaying,\n playbackRate,\n timelineSegments,\n onSeek,\n onTogglePlay,\n onSeekBack,\n onSeekForward,\n onSetPlaybackRate,\n // Speaker names\n agentName: externalAgentName,\n customerName: externalCustomerName,\n // Transcript props — pass real transcript data from the host app\n transcript,\n activeTurnIndex,\n turnObservations,\n highlightedTurns,\n onTurnPlayPause,\n // Footer navigation\n prevSessionTitle,\n prevSessionDesc,\n nextSessionTitle,\n nextSessionDesc,\n onPreviousSession,\n onNextSession,\n}) => {\n const [activeTab, setActiveTab] = useState('overview');\n const [expandedSignals, setExpandedSignals] = useState(new Set());\n const [showSessionDropdown, setShowSessionDropdown] = useState(false);\n const [hoveredSessionIdx, setHoveredSessionIdx] = useState(null);\n const recordingRef = useRef(null);\n\n // Section refs for scroll-to-section tab behavior\n const overviewRef = useRef(null);\n const coachingRef = useRef(null);\n const signalsRef = useRef(null);\n const commentsRef = useRef(null);\n const sectionRefs = { overview: overviewRef, coaching: coachingRef, signals: signalsRef, comments: commentsRef };\n\n const handleTabClick = (key) => {\n setActiveTab(key);\n const ref = sectionRefs[key];\n if (ref?.current) {\n ref.current.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n };\n\n const sessionHistory = [\n { title: 'Tire Repair Appointment', date: '11/12/2025, 2:30:00 PM' },\n { title: 'Quote Confirmation', date: '10/1/2025, 9:00:00 AM' },\n { title: 'Automative Repair Enquiry', date: '09/15/2025, 11:45:00 AM' },\n { title: 'Vehicle Inspection Reminder', date: '07/20/2025, 1:00:00 PM' },\n { title: 'Oil Change Service', date: '05/5/2025, 10:00:00 AM' },\n ];\n\n /* Called from Signals \"Show in transcript\" icon — seeks recording to that time */\n const handleShowInTranscript = (startMs) => {\n const timeSec = startMs / 1000;\n // Call the recording component's seek via ref\n if (recordingRef.current?.seekTo) {\n recordingRef.current.seekTo(timeSec);\n }\n };\n\n const toggleSignal = (key) => {\n setExpandedSignals((prev) => {\n const next = new Set(prev);\n if (next.has(key)) next.delete(key);\n else next.add(key);\n return next;\n });\n };\n\n // Extract data from blocks if provided\n const blocks = data?.blocks || [];\n const findBlock = (id) => blocks.find((b) => b.block_id === id)?.payload || {};\n\n const meta = findBlock('interaction-metadata');\n const ctx = findBlock('interaction-context');\n const signals = findBlock('interaction-signals');\n const outcomeLift = findBlock('interaction-outcome-lift');\n const callPurpose = ctx.call_purpose || {};\n const classification = ctx.classification || {};\n\n // Demo defaults\n const demoMeta = { duration_seconds: 156, message_count: 25, ...meta };\n const demoCallPurpose = { interaction_driver: 'General Information', interaction_direction: 'inbound', ...callPurpose };\n const demoClassification = { interaction_paradigm: 'Informational', ...classification };\n const demoOutcomeLift = { p_expected: 0.94, p_full: 0.83, lift_raw: -0.11, lift: 0.043, interpretation: { lift_band: 'positive' }, ...outcomeLift };\n const demoDriverLabels = outcomeLift.driver_signal_keys?.map((k) => k.replace(/^sig\\./, '').replace(/_/g, ' ')) || [\n 'customer needs fully addressed',\n 'call flow expectations set',\n 'Opening expectations set',\n 'Active listening demonstrated',\n 'Resolution confirmed',\n ];\n const demoCoaching = coachingData || {\n one_liner: 'David provided the customer with information on wheel stud replacement and pricing, but did not secure an appointment.',\n context: 'The customer was seeking information on wheel stud replacement for a 2013 Chevy Bolt and was unsure about doing the repair themselves.',\n strengths: [\n { text: 'Anthony effectively scheduled the appointment and confirmed the details clearly.', quote: 'Alright. That is all set up for Saturday, the twenty eighth, at 12:00.' },\n { text: 'Handled customer objections well by explaining the need for a separate appointment for alignment.', quote: \"I don't have the alignment changeover the weekend. So I would have to set up a separate appointment for the alignment.\" },\n { text: 'Demonstrated courtesy and professionalism throughout the call.', quote: 'Have a great day.' },\n ],\n improvements: [\n { text: 'Close the loop by restating the plan and confirming next steps to ensure customer certainty.', quote: 'Alright. That is all set up for Saturday, the twenty eighth, at 12:00.' },\n { text: 'Frame solutions positively by leading with what can be done rather than limitations.', quote: \"I don't have the alignment changeover the weekend.\" },\n ],\n overall: 'effective',\n };\n const demoSignals = signals?.signals?.length ? signals : {\n present_count: 9,\n total_signals_evaluated: 146,\n signals: [\n {\n key: 'price_estimate_provided', display_name: 'Price Estimate Provided',\n observations: [\n {\n key: 'obs1', reason: 'Evidence shows a price estimate or quote was provided.', evidence: [\n { start_ms: 92000, end_ms: 97000, text: 'From Casper, you\\'re probably looking at, like, a half hour labor plus a stud, so you\\'d probably be somewhere around $90 or something.', turn_ids: [8] },\n ]\n },\n ],\n },\n { key: 'fee_or_cost_discussed', display_name: 'Fee or Cost Discussed', observations: [{ key: 'obs2', reason: 'Agent discussed pricing details with the customer.' }] },\n { key: 'engagement_budget', display_name: 'Engagement Budget Discussed', observations: [{ key: 'obs3a', reason: 'Budget expectations were set.' }, { key: 'obs3b', reason: 'Customer confirmed budget range.' }] },\n { key: 'projected_revenue', display_name: 'Projected Revenue Discussed', observations: [{ key: 'obs4a', reason: 'Revenue projection shared.' }, { key: 'obs4b', reason: 'Timeline for revenue discussed.' }, { key: 'obs4c', reason: 'Quarterly targets mentioned.' }] },\n { key: 'market_analysis', display_name: 'Market Analysis Completed', observations: [{ key: 'obs5a', reason: 'Market analysis referenced.' }, { key: 'obs5b', reason: 'Competitive landscape discussed.' }, { key: 'obs5c', reason: 'Market trends mentioned.' }, { key: 'obs5d', reason: 'Regional analysis provided.' }] },\n { key: 'target_audience', display_name: 'Target Audience Defined', observations: [{ key: 'obs6a', reason: 'Target audience identified.' }, { key: 'obs6b', reason: 'Demographics discussed.' }, { key: 'obs6c', reason: 'Audience segmentation reviewed.' }, { key: 'obs6d', reason: 'Persona mapping completed.' }, { key: 'obs6e', reason: 'Channel preferences noted.' }] },\n { key: 'concept_approval', display_name: 'Concept Approval Received', observations: [{ key: 'obs7a', reason: 'Concept approved by stakeholder.' }, { key: 'obs7b', reason: 'Feedback incorporated.' }, { key: 'obs7c', reason: 'Sign-off confirmed.' }, { key: 'obs7d', reason: 'Revisions requested.' }, { key: 'obs7e', reason: 'Final version accepted.' }, { key: 'obs7f', reason: 'Timeline approved.' }] },\n { key: 'prototype_developed', display_name: 'Prototype Developed', observations: [{ key: 'obs8a', reason: 'Prototype shared.' }, { key: 'obs8b', reason: 'Testing initiated.' }, { key: 'obs8c', reason: 'Feedback collected.' }, { key: 'obs8d', reason: 'Iterations completed.' }, { key: 'obs8e', reason: 'Usability tested.' }, { key: 'obs8f', reason: 'Design finalized.' }, { key: 'obs8g', reason: 'Stakeholder demo done.' }] },\n { key: 'user_testing', display_name: 'User Testing Scheduled', observations: [{ key: 'obs9a', reason: 'Testing sessions planned.' }, { key: 'obs9b', reason: 'Participants recruited.' }, { key: 'obs9c', reason: 'Test scripts prepared.' }, { key: 'obs9d', reason: 'Environment set up.' }, { key: 'obs9e', reason: 'Accessibility testing included.' }, { key: 'obs9f', reason: 'Results framework defined.' }, { key: 'obs9g', reason: 'Timeline confirmed.' }, { key: 'obs9h', reason: 'Backup plan discussed.' }] },\n ],\n };\n\n const agentName = externalAgentName || 'Agent';\n const customerName = externalCustomerName || 'Customer';\n const customerSessions = 8;\n const dateStr = meta.evaluated_dt ? new Date(meta.evaluated_dt).toLocaleString() : '3/29/2026, 8:30:00 AM';\n const direction = demoCallPurpose.interaction_direction === 'inbound' ? 'Inbound' : 'Outbound';\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', width: '100%', background: 'var(--Grey-White, #FFF)' }}>\n {/* Header */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 12, padding: '24px 24px 0' }}>\n <button\n onClick={onBack}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n }}\n >\n <ArrowLeft size={24} color=\"var(--Grey-Strong, #2E3236)\" />\n </button>\n <div style={{ width: 1, height: 28, background: 'var(--Base-absent, #D9D9D9)' }} />\n <h1 style={{\n color: 'var(--Grey-Strong, #2E3236)',\n fontSize: 24,\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: 'normal',\n margin: 0,\n }}>\n {title}\n </h1>\n </div>\n\n {/* Tabs */}\n <div style={{\n display: 'flex',\n alignItems: 'flex-start',\n background: 'var(--Grey-White, #FFF)',\n borderBottom: '1px solid var(--Grey-Faint, #ACADAD)',\n padding: '0 24px',\n marginTop: 8,\n }}>\n {TABS.map((tab) => (\n <button\n key={tab.key}\n onClick={() => handleTabClick(tab.key)}\n style={{\n display: 'flex',\n padding: 16,\n alignItems: 'center',\n gap: 10,\n background: 'none',\n border: 'none',\n borderBottom: activeTab === tab.key\n ? '3px solid var(--Grey-Strong, #2E3236)'\n : '3px solid transparent',\n cursor: 'pointer',\n fontSize: 15,\n fontWeight: activeTab === tab.key ? 500 : 400,\n color: activeTab === tab.key\n ? 'var(--Grey-Strong, #2E3236)'\n : 'var(--Grey-Muted, #808183)',\n whiteSpace: 'nowrap',\n transition: 'border-color 0.2s ease, color 0.2s ease',\n }}\n >\n {tab.label}\n </button>\n ))}\n </div>\n\n {/* All sections rendered — tabs scroll to them */}\n <div style={{ padding: 24, flex: 1, overflowY: 'auto' }}>\n {/* ═══ OVERVIEW SECTION ═══ */}\n <div ref={overviewRef} style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-end',\n alignItems: 'flex-start',\n gap: 24,\n alignSelf: 'stretch',\n }}>\n {/* Figma node 106-3508: Section Header — horizontal, gap: 16, height: 40, center */}\n <div style={{\n display: 'flex',\n height: 40,\n alignItems: 'center',\n gap: 16,\n alignSelf: 'stretch',\n }}>\n {/* Left: Icon + Title — fills remaining space */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, flex: 1 }}>\n <ClipboardList size={24} color=\"var(--rail-orange, #C98A5A)\" strokeWidth={2} />\n <span style={{\n fontSize: 16,\n fontWeight: 600,\n color: 'var(--Grey-Strong, #2E3236)',\n lineHeight: 1.2,\n textTransform: 'uppercase',\n }}>\n Overview\n </span>\n </div>\n\n {/* Right: Metadata — horizontal, gap: 16, center */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 16, flexShrink: 0 }}>\n {/* Date */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 6, padding: '8px 0' }}>\n <CalendarDays size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1.5} />\n <span style={{ fontSize: 13, fontWeight: 400, color: 'var(--Grey-Strong, #2E3236)', fontFamily: 'var(--font-sans)', lineHeight: 1.2 }}>\n {dateStr}\n </span>\n </div>\n\n {/* Direction */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 6, padding: '8px 0' }}>\n <PhoneIncoming size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1.5} />\n <span style={{ fontSize: 13, fontWeight: 400, color: 'var(--Grey-Strong, #2E3236)', fontFamily: 'var(--font-sans)', lineHeight: 1.2 }}>\n {direction}\n </span>\n </div>\n\n {/* Agent + Customer — border-left separator */}\n <div style={{\n display: 'flex', alignItems: 'center', gap: 16,\n paddingLeft: 16,\n borderLeft: '1px solid var(--Grey-absent, #D9D9D9)',\n }}>\n {/* Agent — Headset icon */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 6, padding: '8px 0' }}>\n <Headset size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1.5} />\n <span style={{ fontSize: 13, fontWeight: 400, color: 'var(--Grey-Strong, #2E3236)', fontFamily: 'var(--font-sans)', lineHeight: 1.2 }}>\n {agentName}\n </span>\n </div>\n\n {/* Repeat icon */}\n <Repeat size={16} color=\"var(--color-input-border, #ACACAD)\" strokeWidth={1.5} />\n\n {/* Customer — CircleUser icon + dropdown */}\n <div style={{ position: 'relative' }}>\n <button\n onClick={() => setShowSessionDropdown((prev) => !prev)}\n style={{\n display: 'flex', alignItems: 'center', gap: 4, padding: '8px 0',\n background: 'none', border: 'none', cursor: 'pointer',\n }}\n >\n <CircleUser size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1.5} />\n <span style={{ fontSize: 13, fontWeight: 400, color: 'var(--Grey-Strong, #2E3236)', lineHeight: 1.2 }}>\n {customerName} ({customerSessions} Sessions)\n </span>\n {showSessionDropdown\n ? <ChevronUp size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1.5} />\n : <ChevronDown size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1.5} />\n }\n </button>\n\n {/* Figma node 311-1302: Session history dropdown */}\n {showSessionDropdown && (\n <div style={{\n position: 'absolute',\n top: '100%',\n right: 0,\n marginTop: 4,\n width: 264,\n background: 'var(--Grey-White, #FFF)',\n borderRadius: 4,\n border: '1px solid var(--Grey-absent, #D9D9D9)',\n boxShadow: '0 4px 16px rgba(0,0,0,0.12)',\n zIndex: 50,\n overflow: 'hidden',\n }}>\n {/* Header: customer name + session count */}\n {/* Header — Figma node 312-1321: horizontal, gap: 8 */}\n <div style={{\n display: 'flex', alignItems: 'flex-start', gap: 8,\n padding: 16,\n }}>\n <CircleUser size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1.5} style={{ marginTop: 2, flexShrink: 0 }} />\n <div style={{ display: 'flex', flexDirection: 'column', gap: 4 }}>\n <span style={{\n fontSize: 16, fontWeight: 600,\n color: 'var(--Grey-Strong, #2E3236)',\n lineHeight: 1,\n }}>\n {customerName}\n </span>\n <span style={{\n fontSize: 13, fontWeight: 400,\n color: 'var(--Grey-Muted, #808183)',\n lineHeight: 1,\n }}>\n {customerSessions} Sessions in past\n </span>\n </div>\n </div>\n\n {/* Session list — Figma: 264px, pad 12 16, space-between, center */}\n {sessionHistory.map((session, i) => (\n <div\n key={i}\n onMouseEnter={() => setHoveredSessionIdx(i)}\n onMouseLeave={() => setHoveredSessionIdx(null)}\n style={{\n display: 'flex',\n width: 264,\n padding: '12px 16px',\n justifyContent: 'space-between',\n alignItems: 'center',\n background: hoveredSessionIdx === i\n ? 'var(--surface-hover, #F3F7F7)'\n : 'var(--Grey-White, #FFF)',\n borderTop: '1px solid var(--Grey-absent, #D9D9D9)',\n cursor: 'pointer',\n boxSizing: 'border-box',\n transition: 'background 0.15s',\n }}\n >\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\n <span style={{\n fontSize: 13, fontWeight: 400,\n color: 'var(--Grey-Strong, #2E3236)',\n lineHeight: 1,\n }}>\n {session.title}\n </span>\n <span style={{\n fontSize: 12, fontWeight: 400,\n color: 'var(--Grey-Muted, #808183)',\n lineHeight: 1,\n }}>\n {session.date}\n </span>\n </div>\n {hoveredSessionIdx === i && (\n <ExternalLink size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1} style={{ flexShrink: 0 }} />\n )}\n </div>\n ))}\n\n {/* View All Sessions button — Figma node 312-1347 */}\n <div style={{\n padding: 16,\n borderTop: '1px solid var(--Grey-absent, #D9D9D9)',\n display: 'flex',\n justifyContent: 'center',\n }}>\n <button style={{\n display: 'flex',\n height: 32,\n padding: '16px 16px 16px 12px',\n justifyContent: 'center',\n alignItems: 'center',\n gap: 6,\n background: 'var(--Grey-White, #FFF)',\n border: '1px solid var(--Grey-absent, #D9D9D9)',\n borderRadius: 10,\n cursor: 'pointer',\n }}>\n <History size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1.5} />\n <span style={{\n fontSize: 14, fontWeight: 600,\n color: 'var(--Grey-Strong, #2E3236)',\n }}>\n View All Sessions\n </span>\n </button>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n\n {/*\n Figma node 101-2385\n Row: Compass Score (left) | Context + Agent Lift Analysis stacked (right)\n */}\n <div style={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: 24,\n alignSelf: 'stretch',\n }}>\n {/* Left — Compass Score */}\n <div style={{ flex: 1, minWidth: 0 }}>\n <UpdatedCompassScore />\n </div>\n\n {/* Right — Context grid + Agent Lift Analysis stacked */}\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n justifyContent: 'flex-end',\n gap: 24,\n flex: 1,\n minWidth: 0,\n }}>\n <UpdatedInteractionContext\n meta={demoMeta}\n callPurpose={demoCallPurpose}\n classification={demoClassification}\n outcomeQuality=\"Neutral\"\n />\n <UpdatedInteractionScores\n outcomeLift={demoOutcomeLift}\n driverLabels={demoDriverLabels}\n />\n </div>\n </div>\n\n </div>\n\n {/* ═══ COACHING SUMMARY SECTION ═══ */}\n <div ref={coachingRef} style={{ paddingTop: 24 }}>\n <UpdatedCoachingSynthesisCard data={demoCoaching} />\n </div>\n\n {/* ═══ SIGNALS & RECORDING SECTION ═══ */}\n <div ref={signalsRef} style={{\n display: 'flex',\n flexDirection: 'column',\n gap: 16,\n alignSelf: 'stretch',\n paddingTop: 24,\n }}>\n {/* Section header */}\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n }}>\n <FileSignal size={24} color=\"#C98A5A\" strokeWidth={2} />\n <span style={{\n fontSize: 16,\n fontWeight: 600,\n color: 'var(--Grey-Strong, #2E3236)',\n lineHeight: 1.2,\n textTransform: 'uppercase',\n }}>\n Signals & Recording\n </span>\n </div>\n\n {/* Content: Signals (left) | Recording+Transcript (right) */}\n <div style={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: 24,\n alignSelf: 'stretch',\n paddingTop: 16,\n borderTop: '1px solid #D9D9D9',\n }}>\n <div style={{ flex: 1, minWidth: 0 }}>\n <UpdatedInteractionSignals\n signals={demoSignals}\n expandedSignals={expandedSignals}\n toggleSignal={toggleSignal}\n onShowInTranscript={handleShowInTranscript}\n />\n </div>\n <div style={{ flex: 1, minWidth: 0 }}>\n <UpdatedInteractionRecording\n ref={recordingRef}\n audioUrl={audioUrl}\n durationSeconds={demoMeta.duration_seconds}\n audioRef={externalAudioRef}\n agentName={agentName}\n customerName={customerName.split(' ')[0]}\n currentTimeSeconds={currentTimeSeconds}\n timelinePlaying={timelinePlaying}\n playbackRate={playbackRate}\n timelineSegments={timelineSegments}\n onSeek={onSeek}\n onTogglePlay={onTogglePlay}\n onSeekBack={onSeekBack}\n onSeekForward={onSeekForward}\n onSetPlaybackRate={onSetPlaybackRate}\n transcript={transcript}\n activeTurnIndex={activeTurnIndex}\n turnObservations={turnObservations}\n highlightedTurns={highlightedTurns}\n onTurnPlayPause={onTurnPlayPause}\n setExpandedSignals={setExpandedSignals}\n />\n </div>\n </div>\n </div>\n\n {/* ═══ COMMENTS SECTION ═══ */}\n <div ref={commentsRef} style={{ paddingTop: 24 }}>\n <div style={{ fontSize: 14, color: 'var(--Grey-Muted, #808183)', fontFamily: 'var(--font-sans)' }}>\n No comments yet.\n </div>\n </div>\n </div>\n\n {/* Figma node 113-8262: Sticky Footer — Previous / Next Session */}\n <div style={{\n display: 'flex',\n position: 'sticky',\n bottom: 0,\n zIndex: 10,\n }}>\n {/* Previous Session */}\n <button\n onClick={onPreviousSession}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 30,\n padding: '12px 28px',\n flex: 1,\n background: 'var(--Grey-White, #FFF)',\n border: '1px solid var(--Grey-absent, #D9D9D9)',\n cursor: 'pointer',\n }}\n >\n <ArrowLeft size={24} color=\"var(--Grey-Muted, #808183)\" strokeWidth={2} />\n <div style={{ display: 'flex', flexDirection: 'column', gap: 10 }}>\n <span style={{\n fontSize: 14, fontWeight: 400,\n color: '#000',\n lineHeight: 1.2,\n textAlign: 'left',\n }}>\n {prevSessionTitle || 'Previous Session Title'}\n </span>\n <span style={{\n fontSize: 13, fontWeight: 400,\n color: '#000',\n lineHeight: 1.2,\n opacity: 0.5,\n textAlign: 'left',\n }}>\n {prevSessionDesc || 'Short description of the session'}\n </span>\n </div>\n </button>\n\n {/* Next Session */}\n <button\n onClick={onNextSession}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: 30,\n padding: '12px 28px',\n flex: 1,\n background: 'var(--Grey-White, #FFF)',\n border: '1px solid var(--Grey-absent, #D9D9D9)',\n cursor: 'pointer',\n }}\n >\n <div style={{ display: 'flex', flexDirection: 'column', gap: 10 }}>\n <span style={{\n fontSize: 14, fontWeight: 400,\n color: '#000',\n lineHeight: 1.2,\n textAlign: 'left',\n }}>\n {nextSessionTitle || 'Next Session Title'}\n </span>\n <span style={{\n fontSize: 13, fontWeight: 400,\n color: '#000',\n lineHeight: 1.2,\n opacity: 0.5,\n textAlign: 'left',\n }}>\n {nextSessionDesc || 'Short description of the session'}\n </span>\n </div>\n <ArrowRight size={24} color=\"var(--Grey-Muted, #808183)\" strokeWidth={2} />\n </button>\n </div>\n </div>\n );\n};\n\nexport default UpdatedInteractionDetails;\n"],"names":["COLORS","OVERALL_MAP","STYLE_ID","ensureKeyframes","style","OverallBadge","overall","label","jsxs","jsx","ThumbsUp","SectionItem","item","text","quote","CoachingColumn","icon","items","i","UpdatedCoachingSynthesisCard","data","loading","error","React","w","strengths","improvements","oneLiner","_a","context","_b","ShieldCheck","TrendingUp","Lightbulb","fmtDur","seconds","m","s","ROW_STYLE","COLUMN_STYLE","UpdatedInteractionContext","meta","callPurpose","classification","dimensions","outcomeQuality","onMoreDetails","duration","messages","driver","paradigm","leftRows","_","d","rightRows","renderRow","ExternalLink","row","LH","MAX_VISIBLE_DRIVERS","fmtPct","v","fmtPp","pp","UpdatedInteractionScores","outcomeLift","driverLabels","pExpected","pFull","liftRaw","liftRecentered","liftBand","liftBandCapitalized","visibleDrivers","overflowCount","HoverIcon","children","size","onClick","title","hovered","setHovered","useState","UpdatedInteractionSignals","signals","expandedSignals","toggleSignal","playEvidence","highlightTurns","onShowInTranscript","timelinePlaying","currentTimeSeconds","signalList","presentCount","fmtMs","ms","minutes","isEvPlaying","ev","FileSignal","signal","idx","key","isExpanded","obsCount","ChevronUp","ChevronDown","_c","obs","obsIdx","e","ScrollText","evIdx","PlayCircle","GaugeMeter","score","maxScore","filledSeg","segDeg","toXY","angleDeg","rad","strokeArc","fromDeg","toDeg","large","gap","fromA","toA","isFilled","ScoreBar","value","maxValue","LegendItem","Info","UpdatedCompassScore","predictedScore","predictedLabel","description","legends","formattedPredicted","legend","TABS","UpdatedInteractionDetails","onBack","coachingData","audioUrl","externalAudioRef","playbackRate","timelineSegments","onSeek","onTogglePlay","onSeekBack","onSeekForward","onSetPlaybackRate","externalAgentName","externalCustomerName","transcript","activeTurnIndex","turnObservations","highlightedTurns","onTurnPlayPause","prevSessionTitle","prevSessionDesc","nextSessionTitle","nextSessionDesc","onPreviousSession","onNextSession","activeTab","setActiveTab","setExpandedSignals","showSessionDropdown","setShowSessionDropdown","hoveredSessionIdx","setHoveredSessionIdx","recordingRef","useRef","overviewRef","coachingRef","signalsRef","commentsRef","sectionRefs","handleTabClick","ref","sessionHistory","handleShowInTranscript","startMs","timeSec","prev","next","blocks","findBlock","id","b","ctx","demoMeta","demoCallPurpose","demoClassification","demoOutcomeLift","demoDriverLabels","k","demoCoaching","demoSignals","agentName","customerName","customerSessions","dateStr","direction","ArrowLeft","tab","ClipboardList","CalendarDays","PhoneIncoming","Headset","Repeat","CircleUser","session","History","UpdatedInteractionRecording","ArrowRight"],"mappings":"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"}
1
+ {"version":3,"file":"UpdatedInteractionDetails.es.js","sources":["../../src/components/UpdatedInteractionDetails/UpdatedCoachingSynthesisCard.jsx","../../src/components/UpdatedInteractionDetails/UpdatedInteractionContext.jsx","../../src/components/UpdatedInteractionDetails/UpdatedInteractionScores.jsx","../../src/components/UpdatedInteractionDetails/UpdatedInteractionSignals.jsx","../../src/components/UpdatedInteractionDetails/UpdatedCompassScore.jsx","../../src/components/UpdatedInteractionDetails/UpdatedInteractionDetails.jsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport { ShieldCheck, ThumbsUp, TrendingUp, Lightbulb } from \"lucide-react\";\n\n/**\n * UpdatedCoachingSynthesisCard — \"COACHING SUMMARY\" section matching Figma node 113-7216.\n *\n * Props:\n * - data object Coaching synthesis response\n * - loading boolean Show shimmer loading state\n * - error string Error message to display\n *\n * Data shape:\n * - one_liner string\n * - context string\n * - strengths Array<{ text: string, quote?: string }>\n * - improvements Array<{ text: string, quote?: string }>\n * - overall string \"effective\" | \"strong\" | \"needs_improvement\" | \"mixed\"\n */\n\nconst COLORS = {\n strong: \"var(--Grey-Strong, #2E3236)\",\n muted: \"var(--Grey-Muted, #808183)\",\n absent: \"var(--Grey-absent, #D9D9D9)\",\n accent: \"var(--rail-orange, #C98A5A)\",\n itemText: \"var(--text-item, #3F3F3F)\",\n quoteLine: \"var(--border-warm, #B2AEA8)\",\n quoteText: \"var(--text-subtle-warm, #767473)\",\n iconBg: \"var(--surface-hover, #F3F7F7)\",\n};\n\nconst OVERALL_MAP = {\n effective: \"Effective\",\n strong: \"Strong\",\n needs_improvement: \"Needs Improvement\",\n mixed: \"Mixed\",\n};\n\nconst STYLE_ID = \"updated-coaching-synthesis-keyframes\";\n\nfunction ensureKeyframes() {\n if (typeof document === \"undefined\") return;\n if (document.getElementById(STYLE_ID)) return;\n const style = document.createElement(\"style\");\n style.id = STYLE_ID;\n style.textContent = `\n @keyframes updated-coaching-shimmer {\n 0% { background-position: -200% 0; }\n 100% { background-position: 200% 0; }\n }\n @keyframes updated-coaching-pulse {\n 0%, 100% { opacity: 0.4; }\n 50% { opacity: 1; }\n }\n `;\n document.head.appendChild(style);\n}\n\nfunction OverallBadge({ overall }) {\n const label = OVERALL_MAP[overall] || (overall ? overall.replace(/_/g, \" \") : \"\");\n\n return (\n <div style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n flexShrink: 0,\n }}>\n <span style={{\n fontSize: 13,\n fontWeight: 400,\n color: COLORS.strong,\n fontFamily: \"var(--font-sans)\",\n lineHeight: 1.2,\n }}>\n Overall:\n </span>\n <div style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n }}>\n <ThumbsUp size={14} color={COLORS.strong} strokeWidth={1.5} />\n <span style={{\n fontSize: 13,\n fontWeight:600,\n color: COLORS.strong,\n fontFamily: \"var(--font-sans)\",\n lineHeight: 1.2,\n }}>\n {label}\n </span>\n </div>\n </div>\n );\n}\n\nfunction SectionItem({ item }) {\n const text = typeof item === \"string\" ? item : item?.text || \"\";\n const quote = typeof item === \"object\" ? item?.quote : null;\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 14 }}>\n <div style={{\n fontSize: 14,\n fontWeight: 600,\n color: COLORS.itemText,\n fontFamily: \"var(--font-sans)\",\n lineHeight: 1.5,\n }}>\n {text}\n </div>\n {quote && (\n <div style={{\n display: \"flex\",\n gap: 10,\n }}>\n <div style={{\n width: 1,\n flexShrink: 0,\n alignSelf: \"stretch\",\n background: COLORS.quoteLine,\n }} />\n <div style={{\n fontSize: 14,\n fontWeight: 400,\n color: COLORS.quoteText,\n fontFamily: \"var(--font-sans)\",\n lineHeight: 1.5,\n }}>\n &ldquo;{quote}&rdquo;\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction CoachingColumn({ icon, label, items }) {\n if (!items || items.length === 0) return null;\n\n return (\n <div style={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 16,\n borderRadius: 12,\n }}>\n {/* Column header */}\n <div style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 16,\n }}>\n {/* Icon with circular bg */}\n <div style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 24,\n height: 24,\n borderRadius: 9999,\n background: COLORS.iconBg,\n flexShrink: 0,\n }}>\n {icon}\n </div>\n <span style={{\n fontSize: 16,\n fontWeight: 600,\n color: COLORS.strong,\n fontFamily: \"var(--font-sans)\",\n lineHeight: \"normal\",\n }}>\n {label}\n </span>\n </div>\n\n {/* Items */}\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 24 }}>\n {items.map((item, i) => (\n <SectionItem key={i} item={item} />\n ))}\n </div>\n </div>\n );\n}\n\nconst UpdatedCoachingSynthesisCard = ({ data, loading, error }) => {\n React.useEffect(() => { ensureKeyframes(); }, []);\n\n // Loading state\n if (loading) {\n return (\n <div style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 12,\n }}>\n <div style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n }}>\n <div style={{\n width: 6,\n height: 6,\n borderRadius: \"50%\",\n background: COLORS.accent,\n animation: \"updated-coaching-pulse 1.5s ease-in-out infinite\",\n }} />\n <span style={{\n fontSize: 14,\n color: COLORS.muted,\n fontWeight: 500,\n }}>\n Synthesizing coaching summary...\n </span>\n </div>\n {[180, 260, 220].map((w, i) => (\n <div\n key={i}\n style={{\n height: 10,\n width: w,\n maxWidth: \"100%\",\n borderRadius: 4,\n background: `linear-gradient(90deg, ${COLORS.absent} 25%, var(--shimmer-mid, #ECECEC) 50%, ${COLORS.absent} 75%)`,\n backgroundSize: \"200% 100%\",\n animation: \"updated-coaching-shimmer 1.8s ease-in-out infinite\",\n animationDelay: `${i * 0.2}s`,\n }}\n />\n ))}\n </div>\n );\n }\n\n // Error state\n if (error) {\n return (\n <div style={{\n fontSize: 14,\n color: COLORS.muted,\n }}>\n Unable to generate coaching summary.\n </div>\n );\n }\n\n // No data\n if (!data) return null;\n\n const strengths = data.strengths || [];\n const improvements = data.improvements || [];\n const oneLiner = typeof data.one_liner === \"string\" ? data.one_liner : data.one_liner?.text || \"\";\n const context = typeof data.context === \"string\" ? data.context : data.context?.text || \"\";\n\n return (\n <div style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 16,\n background: \"#FFF\",\n }}>\n {/* Section header — Figma: icon + \"Coaching Summary\" 16px / 700 / #2E3236 */}\n <div style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n }}>\n <ShieldCheck size={20} color={COLORS.accent} strokeWidth={2} />\n <span style={{\n fontSize: 16,\n fontWeight: 600,\n color: COLORS.strong,\n fontFamily: \"var(--font-sans)\",\n lineHeight: 1.2,\n textTransform: \"uppercase\",\n }}>\n Coaching Summary\n </span>\n </div>\n\n {/* One-liner — Figma: 14px / 600 / #2E3236 */}\n {oneLiner && (\n <div style={{\n fontSize: 14,\n fontWeight: 500,\n color: COLORS.strong,\n fontFamily: \"var(--font-sans)\",\n lineHeight: 1.5,\n }}>\n {oneLiner}\n </div>\n )}\n\n {/* Context row + Overall badge — Figma: horizontal, space-between */}\n <div style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: 16,\n justifyContent: \"space-between\",\n }}>\n {context && (\n <div style={{\n fontSize: 14,\n fontWeight: 400,\n color: COLORS.muted,\n fontFamily: \"var(--font-sans)\",\n lineHeight: 1.5,\n flex: 1,\n }}>\n {context}\n </div>\n )}\n {data.overall && <OverallBadge overall={data.overall} />}\n </div>\n\n {/* Two-column layout: Key Strengths + Improvements */}\n {/* Figma: border-top 1px #D9D9D9, padding-top 24px, gap 24px */}\n {(strengths.length > 0 || improvements.length > 0) && (\n <div style={{\n display: \"flex\",\n gap: 24,\n paddingTop: 24,\n borderTop: `1px solid ${COLORS.absent}`,\n }}>\n <CoachingColumn\n icon={<TrendingUp size={14} color={COLORS.strong} strokeWidth={1.5} />}\n label=\"Key Strengths\"\n items={strengths}\n />\n <CoachingColumn\n icon={<Lightbulb size={14} color={COLORS.strong} strokeWidth={1.5} />}\n label=\"Improvements\"\n items={improvements}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default UpdatedCoachingSynthesisCard;\n","import { ExternalLink } from 'lucide-react';\n\n/*\n * Figma node: 101-2385 (Context grid — right column top, inside Frame 53 > Frame 56)\n *\n * Outer: display: flex; gap: 24px; horizontal\n * Two columns: flex: 1, vertical, gap: 12px\n *\n * Each metadata row:\n * padding: 8px 8px 12px 8px;\n * justify-content: space-between;\n * align-items: center;\n * border-bottom: 1px solid #D9D9D9;\n *\n * Label: 13px / 400 / #2E3236 (Grey/Strong)\n * Value: 13px / 400 / #808183 (Grey/Muted)\n *\n * More Details: ExternalLink icon 16px #808183 + \"More Details\" 13px/400/#2E3236\n */\n\nfunction fmtDur(seconds) {\n const m = Math.floor(seconds / 60);\n const s = Math.round(seconds % 60);\n return `${m}:${s.toString().padStart(2, '0')}`;\n}\n\nconst ROW_STYLE = {\n display: 'flex',\n justifyContent: 'space-between',\n padding: '8px 8px 12px 8px',\n alignItems: 'center',\n gap: 24,\n fontFamily: 'var(--font-sans)',\n fontSize: 13,\n fontWeight: 400,\n lineHeight: 'normal',\n borderBottom: '1px solid var(--Grey-absent, #D9D9D9)',\n};\n\nconst COLUMN_STYLE = {\n display: 'flex',\n flexDirection: 'column',\n flex: '1 0 0',\n gap: 12,\n minWidth: 0,\n};\n\nconst UpdatedInteractionContext = ({\n meta = {},\n callPurpose = {},\n classification = {},\n dimensions = [],\n outcomeQuality = 'Neutral',\n onMoreDetails,\n}) => {\n const duration = meta.duration_seconds != null ? fmtDur(meta.duration_seconds) : null;\n const messages = meta.message_count;\n const driver = callPurpose.interaction_driver;\n const paradigm = classification.interaction_paradigm;\n\n // Left column rows\n const leftRows = [\n duration != null && { label: 'Duration', value: duration },\n driver != null && { label: 'Driver', value: driver },\n ...dimensions.filter((_, i) => i % 2 === 0).map((d) => ({ label: d.label || d.key, value: d.value })),\n { label: 'Outcome Quality', value: outcomeQuality },\n ].filter(Boolean);\n\n // Right column rows\n const rightRows = [\n messages != null && { label: 'Messages', value: messages },\n paradigm != null && { label: 'Paradigm', value: paradigm },\n ...dimensions.filter((_, i) => i % 2 === 1).map((d) => ({ label: d.label || d.key, value: d.value })),\n { label: 'More Details', isLink: true },\n ].filter(Boolean);\n\n const renderRow = (item) => {\n if (item.isLink) {\n return (\n <div\n key={item.label}\n onClick={onMoreDetails}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 6,\n padding: '8px 0 8px 0',\n cursor: 'pointer',\n fontFamily: 'var(--font-sans)',\n }}\n >\n <ExternalLink size={16} color=\"#808183\" strokeWidth={1.5} />\n <span style={{ color: 'var(--Grey-Strong, #2E3236)', fontSize: 13, fontWeight: 400 }}>\n {item.label}\n </span>\n </div>\n );\n }\n\n return (\n <div\n key={item.label}\n style={ROW_STYLE}\n >\n <span style={{ color: 'var(--Grey-Strong, #2E3236)', whiteSpace: 'nowrap', flexShrink: 0 }}>\n {item.label}\n </span>\n <span style={{ color: 'var(--Grey-Muted, #808183)', textAlign: 'right' }}>\n {item.value}\n </span>\n </div>\n );\n };\n\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: 24,\n alignSelf: 'stretch',\n }}\n >\n {/* Left column */}\n <div style={COLUMN_STYLE}>\n {leftRows.map((row) => renderRow(row))}\n </div>\n\n {/* Right column */}\n <div style={COLUMN_STYLE}>\n {rightRows.map((row) => renderRow(row))}\n </div>\n </div>\n );\n};\n\nexport default UpdatedInteractionContext;\n","import React from 'react';\nimport { ThumbsUp, Plus } from 'lucide-react';\n\n/*\n * Figma node: 101-2386 (Agent Lift Analysis)\n *\n * Container: fill=#F3F1E5, padding: 24px, gap: 24px, vertical,\n * border-radius: 8px, border: 1px solid #D9D9D9\n *\n * Header (Frame 12): vertical, gap: 32\n * Row (Frame 20): horizontal, space-between, center\n * \"Agent Lift Analysis\" — 15px/700/#2E3236, lh=120%\n * Right (Frame 18): horizontal, gap: 8, center\n * \"vs. Average Agent:\" — 13px/400/#2E3236, lh=120%\n * \"+4.3pp\" — 14px/700/#2E3236, lh=120%\n * Divider: border-left 1px #D9D9D9, padding-left: 8\n * ThumbsUp 14x14 + \"Positive\" 13px/700/#2E3236\n *\n * Metrics (Frame 15): horizontal, gap: 24, align: bottom\n * Col 1 (Frame 8): vertical, gap: 16, center\n * \"94%\" — 28px/400/#808183, lh=120%\n * Labels: vertical, gap: 8\n * \"Expected Outcome\" — 13px/400/#2E3236\n * \"Based on call type & difficulty\" — 13px/400/#808183\n * Plus icon: 16x16, fill=#2E3236, radius: 24, white stroke\n * Col 2 (Frame 9): vertical, gap: 16, pad-left: 24, border-left: 1px #D9D9D9\n * \"-11.0pp\" — 28px/400/#808183\n * \"Agent Impact\" — 13px/400/#2E3236\n * \"Behavior-driven change\" — 13px/400/#808183\n * Col 3 (Frame 7): vertical, gap: 16, pad-left: 24, border-left: 1px #D9D9D9\n * \"83%\" — 28px/400/#2E3236 (highlighted)\n * \"Predicted Outcome\" — 13px/700/#2E3236\n * \"With agent behaviors\" — 13px/400/#808183\n *\n * Key Drivers (Frame 13): vertical, gap: 4\n * \"Key Drivers\" — 12px/700/#2E3236, lh=120%\n * Chips (Frame 16): horizontal, gap: 4\n * Each: bg=#FFF, pad=8, radius=4, border 1px #D9D9D9\n * Text: 12px/400/#2E3236, lh=120%\n */\n\nconst COLORS = {\n strong: 'var(--Grey-Strong, #2E3236)',\n muted: 'var(--Grey-Muted, #808183)',\n absent: 'var(--Grey-absent, #D9D9D9)',\n white: 'var(--Grey-White, #FFF)',\n cardBg: 'var(--surface-warm-40, rgba(243, 241, 229, 0.40))',\n};\n\nconst LH = 1.2;\nconst MAX_VISIBLE_DRIVERS = 3;\n\nconst fmtPct = (v) => (v != null ? Math.round(v * 100) + '%' : '\\u2014');\n\nconst fmtPp = (v) => {\n if (v == null) return '\\u2014';\n const pp = (v * 100).toFixed(1);\n return v > 0 ? `+${pp}pp` : `${pp}pp`;\n};\n\nconst UpdatedInteractionScores = ({ outcomeLift, driverLabels = [] }) => {\n if (!outcomeLift || outcomeLift.lift == null) return null;\n\n const pExpected = outcomeLift.p_expected;\n const pFull = outcomeLift.p_full;\n const liftRaw =\n outcomeLift.lift_raw ??\n (pFull != null && pExpected != null ? pFull - pExpected : null);\n const liftRecentered = outcomeLift.lift;\n\n const liftBand = outcomeLift.interpretation?.lift_band\n ? outcomeLift.interpretation.lift_band.replace(/_/g, ' ')\n : liftRecentered >= 0\n ? 'Positive'\n : 'Negative';\n\n const liftBandCapitalized =\n liftBand.charAt(0).toUpperCase() + liftBand.slice(1);\n\n const visibleDrivers = driverLabels.slice(0, MAX_VISIBLE_DRIVERS);\n const overflowCount = driverLabels.length - MAX_VISIBLE_DRIVERS;\n\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n padding: 24,\n gap: 24,\n borderRadius: 8,\n border: `1px solid ${COLORS.absent}`,\n background: COLORS.cardBg,\n alignSelf: 'stretch',\n }}\n >\n {/* Frame 12: Header + Metrics — vertical, gap: 32 */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: 32 }}>\n\n {/* Frame 20: Title row — horizontal, space-between, center */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 24,\n alignSelf: 'stretch',\n }}\n >\n <span\n style={{\n fontSize: 15,\n fontWeight: 600,\n color: COLORS.strong,\n fontFamily: 'var(--font-sans)',\n lineHeight: LH,\n }}\n >\n Agent Lift Analysis\n </span>\n\n {/* Frame 18: right meta — horizontal, gap: 8, center */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n fontFamily: 'var(--font-sans)',\n }}\n >\n <span style={{ fontSize: 13, fontWeight: 400, color: COLORS.strong, lineHeight: LH }}>\n vs. Average Agent:\n </span>\n {/* Frame 19: value */}\n <span style={{ fontSize: 14, fontWeight: 600, color: COLORS.strong, lineHeight: LH }}>\n {fmtPp(liftRecentered)}\n </span>\n {/* Frame 21: divider + thumbsup + band */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 6,\n paddingLeft: 8,\n borderLeft: `1px solid ${COLORS.absent}`,\n }}\n >\n <ThumbsUp size={14} color={COLORS.strong} />\n <span style={{ fontSize: 13, fontWeight: 600, color: COLORS.strong, lineHeight: LH }}>\n {liftBandCapitalized}\n </span>\n </div>\n </div>\n </div>\n\n {/* Frame 15: Metrics row — horizontal, gap: 24, align: bottom */}\n <div\n style={{\n display: 'flex',\n alignItems: 'flex-end',\n gap: 24,\n }}\n >\n {/* Frame 8: Expected Outcome — vertical, gap: 16, center */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: 16, alignItems: 'center' }}>\n <span style={{ fontSize: 28, fontWeight: 400, color: COLORS.muted, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n {fmtPct(pExpected)}\n </span>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>\n <span style={{ fontSize: 13, fontWeight: 400, color: COLORS.strong, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n Expected Outcome\n </span>\n <span style={{ fontSize: 13, fontWeight: 400, color: COLORS.muted, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n Based on call type & difficulty\n </span>\n </div>\n </div>\n\n {/* Plus icon: 16x16, fill=#2E3236, radius: 24 */}\n {/* <div\n style={{\n width: 16,\n height: 16,\n borderRadius: 24,\n background: COLORS.strong,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n }}\n >\n <Plus size={9.33} color={COLORS.white} strokeWidth={1} />\n </div> */}\n\n {/* Frame 9: Agent Impact — vertical, gap: 16, pad-left: 24, border-left */}\n <div style={{\n display: 'flex', flexDirection: 'column', gap: 16, alignItems: 'center',\n paddingLeft: 24, borderLeft: `1px solid ${COLORS.absent}`,\n }}>\n <span style={{ fontSize: 28, fontWeight: 400, color: COLORS.muted, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n {fmtPp(liftRaw)}\n </span>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>\n <span style={{ fontSize: 13, fontWeight: 400, color: COLORS.strong, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n Agent Impact\n </span>\n <span style={{ fontSize: 13, fontWeight: 400, color: COLORS.muted, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n Behavior-driven change\n </span>\n </div>\n </div>\n\n {/* Frame 7: Predicted Outcome — vertical, gap: 16, pad-left: 24, border-left */}\n <div style={{\n display: 'flex', flexDirection: 'column', gap: 16, alignItems: 'center',\n paddingLeft: 24, borderLeft: `1px solid ${COLORS.absent}`,\n }}>\n <span style={{ fontSize: 28, fontWeight: 400, color: COLORS.strong, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n {fmtPct(pFull)}\n </span>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>\n <span style={{ fontSize: 13, fontWeight: 600, color: COLORS.strong, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n Predicted Outcome\n </span>\n <span style={{ fontSize: 13, fontWeight: 400, color: COLORS.muted, fontFamily: 'var(--font-sans)', lineHeight: LH }}>\n With agent behaviors\n </span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Frame 13: Key Drivers — vertical, gap: 4 */}\n {driverLabels.length > 0 && (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 4, alignSelf: 'stretch' }}>\n <span\n style={{\n fontSize: 12,\n fontWeight: 600,\n color: COLORS.strong,\n fontFamily: 'var(--font-sans)',\n lineHeight: LH,\n }}\n >\n Key Drivers\n </span>\n {/* Frame 16: chips — horizontal, gap: 4 */}\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: 4 }}>\n {visibleDrivers.map((label, i) => (\n <div\n key={i}\n style={{\n display: 'flex',\n padding: 8,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 4,\n border: `1px solid ${COLORS.absent}`,\n background: COLORS.white,\n }}\n >\n <span\n style={{\n fontSize: 12,\n fontWeight: 400,\n color: COLORS.strong,\n fontFamily: 'var(--font-sans)',\n lineHeight: LH,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: 200,\n }}\n >\n {label}\n </span>\n </div>\n ))}\n {overflowCount > 0 && (\n <div\n style={{\n display: 'flex',\n padding: 8,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 4,\n border: `1px solid ${COLORS.absent}`,\n background: COLORS.white,\n }}\n >\n <span\n style={{\n fontSize: 12,\n fontWeight: 400,\n color: COLORS.strong,\n fontFamily: 'var(--font-sans)',\n lineHeight: LH,\n whiteSpace: 'nowrap',\n }}\n >\n + {overflowCount}\n </span>\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default UpdatedInteractionScores;\n","import { useState } from 'react';\nimport { ChevronDown, ChevronUp, PlayCircle, PauseCircle, FileSignal, ScrollText } from 'lucide-react';\n\n/* Hover circle wrapper for icons */\nconst HoverIcon = ({ children, size = 28, onClick, title }) => {\n const [hovered, setHovered] = useState(false);\n return (\n <div\n title={title}\n onClick={onClick}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: size,\n height: size,\n borderRadius: 9999,\n background: hovered ? 'var(--surface-hover, #F3F7F7)' : 'transparent',\n cursor: 'pointer',\n flexShrink: 0,\n transition: 'background 0.15s',\n }}\n >\n {children}\n </div>\n );\n};\n\n/*\n * Figma node: 222-672 (Signals accordion)\n *\n * Header: FileSignal icon in #F3F7F7 circle + \"Signals\" 15px/500 + \"N Signals Detected\" 14px/500\n *\n * Accordion Title (collapsed): horizontal, gap: 12, pad: 8 0, border-bottom: 1px #D9D9D9\n * Name: 14px/600/#0B0A0A, lh: 171%\n * Chevron: 20x20, stroke #767473\n *\n * Accordion Body (reason): horizontal, gap: 12, pad: 8 0, space-between\n * Reason: 14px/400/#767473, lh: 150%\n * Right: ScrollText icon 16x16 #808183 + time 13px/400/#808183\n *\n * Evidence (Frame 39): horizontal, gap: 8, pad: 8 0\n * Play circle: ~17px, stroke #808183\n * Quote: 13px/400/#2E3236, lh: 120%\n */\n\nconst UpdatedInteractionSignals = ({\n signals = { signals: [], present_count: 0, total_signals_evaluated: 0 },\n expandedSignals = new Set(),\n toggleSignal = () => {},\n playEvidence = () => {},\n highlightTurns = () => {},\n onShowInTranscript = () => {},\n timelinePlaying = false,\n currentTimeSeconds = 0,\n}) => {\n const signalList = signals?.signals ?? [];\n const presentCount = signals?.present_count ?? signalList.length;\n\n const fmtMs = (ms) => {\n const minutes = Math.floor(ms / 60000);\n const seconds = Math.floor((ms % 60000) / 1000);\n return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\n };\n\n const isEvPlaying = (ev) =>\n timelinePlaying &&\n ev.start_ms != null &&\n currentTimeSeconds * 1000 >= ev.start_ms &&\n currentTimeSeconds * 1000 <= (ev.end_ms ?? ev.start_ms + 5000);\n\n return (\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n alignSelf: 'stretch',\n width: '100%',\n gap: 16,\n }}>\n {/* ── Header: icon + \"Signals\" + count ── */}\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: 16,\n width: '100%',\n }}>\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 34,\n height: 34,\n borderRadius: 9999,\n background: 'var(--surface-hover, #F3F7F7)',\n flexShrink: 0,\n }}>\n <FileSignal size={20} color=\"#2E3236\" strokeWidth={1.5} />\n </div>\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n flex: 1,\n }}>\n <span style={{\n fontSize: 15,\n fontWeight: 500,\n color: 'var(--Grey-Strong, #2E3236)',\n }}>\n Signals\n </span>\n <span style={{\n fontSize: 14,\n fontWeight: 500,\n color: 'var(--Grey-Strong, #2E3236)',\n }}>\n {presentCount} Signals Detected\n </span>\n </div>\n </div>\n\n {/* ── Signal list (accordion) ── */}\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n alignSelf: 'stretch',\n background: 'var(--Grey-White, #FFF)',\n gap: 8,\n }}>\n {signalList.length === 0 && (\n <div style={{\n padding: '8px 0',\n fontSize: 14,\n color: 'var(--Grey-Muted, #808183)',\n }}>\n No signals detected.\n </div>\n )}\n\n {signalList.map((signal, idx) => {\n const key = signal.key ?? signal.id ?? idx;\n const isExpanded = expandedSignals.has(key);\n const obsCount = signal.observations?.length ?? 0;\n\n return (\n <div\n key={key}\n id={`signal-${key}`}\n style={{\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n gap: 8,\n }}\n >\n {/* ── Accordion Title — signal row ── */}\n <button\n onClick={() => toggleSignal(key)}\n style={{\n display: 'flex',\n padding: '8px 0',\n alignItems: 'center',\n gap: 12,\n alignSelf: 'stretch',\n width: '100%',\n background: 'none',\n border: 'none',\n borderBottom: '1px solid var(--Grey-absent, #D9D9D9)',\n cursor: 'pointer',\n }}\n >\n <span style={{\n flex: 1,\n textAlign: 'left',\n fontSize: 14,\n fontWeight: 600,\n color: 'var(--text-dark, #0B0A0A)',\n lineHeight: 1.71,\n }}>\n {signal.display_name || signal.key?.replace(/_/g, ' ')}\n {obsCount > 0 && (\n <span style={{\n fontWeight: 600,\n color: 'var(--text-dark, #0B0A0A)',\n marginLeft: 6,\n }}>\n ({obsCount})\n </span>\n )}\n </span>\n {isExpanded ? (\n <ChevronUp size={20} color=\"#767473\" />\n ) : (\n <ChevronDown size={20} color=\"#767473\" />\n )}\n </button>\n\n {/* ── Expanded: Observations ── */}\n {isExpanded && signal.observations?.length > 0 && (\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n alignSelf: 'stretch',\n gap: 0,\n }}>\n {signal.observations.map((obs, obsIdx) => (\n <div\n key={obs.key ?? obsIdx}\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignSelf: 'stretch',\n gap: 8,\n }}\n >\n {/* Accordion Body — reason + timestamp */}\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: 12,\n padding: '8px 0',\n justifyContent: 'space-between',\n }}>\n <span style={{\n flex: 1,\n fontSize: 14,\n fontWeight: 400,\n color: 'var(--text-subtle-warm, #767473)',\n lineHeight: 1.5,\n }}>\n {obs.reason || obs.explanation}\n </span>\n {obs.evidence?.[0]?.start_ms != null && (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n flexShrink: 0,\n }}\n >\n <HoverIcon\n size={28}\n title=\"Show in transcript\"\n onClick={(e) => {\n e.stopPropagation();\n onShowInTranscript(obs.evidence[0].start_ms);\n }}\n >\n <ScrollText size={16} color=\"#808183\" strokeWidth={1.5} />\n </HoverIcon>\n <span style={{\n fontSize: 13,\n fontWeight: 400,\n color: 'var(--Grey-Muted, #808183)',\n lineHeight: 1.2,\n whiteSpace: 'nowrap',\n }}>\n {fmtMs(obs.evidence[0].start_ms)}\n </span>\n </div>\n )}\n </div>\n\n {/* Evidence quotes — Frame 39 */}\n {obs.evidence?.map((ev, evIdx) => (\n ev.text && (\n <div\n key={evIdx}\n onClick={(e) => {\n e.stopPropagation();\n playEvidence(ev);\n }}\n onMouseEnter={() => highlightTurns(ev.turn_ids ?? [])}\n onMouseLeave={() => highlightTurns([])}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n padding: '8px 0',\n cursor: 'pointer',\n }}\n >\n <HoverIcon size={28}>\n {isEvPlaying(ev) ? (\n <PauseCircle\n size={17}\n color=\"var(--Grey-Muted, #808183)\"\n strokeWidth={1.5}\n />\n ) : (\n <PlayCircle\n size={17}\n color=\"var(--Grey-Muted, #808183)\"\n strokeWidth={1}\n />\n )}\n </HoverIcon>\n <span style={{\n fontSize: 13,\n fontWeight: 400,\n color: 'var(--Grey-Strong, #2E3236)',\n lineHeight: 1.2,\n }}>\n &ldquo;{ev.text}&rdquo;\n </span>\n </div>\n )\n ))}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default UpdatedInteractionSignals;\n","import React from 'react';\nimport { Info } from 'lucide-react';\n\n/*\n * Figma node: 270-6494 (Compass Score card)\n *\n * Container: padding: 24px, border-radius: 8px, border: 1px solid #D9D9D9,\n * background: #FFF, gap: 24px, vertical\n *\n * Title: \"Compass Score\" 15px/700/#2E3236\n * Description: 14px/400/#808183\n *\n * Content: horizontal, gap: 48, center both axes\n * Left: Meter 243x200 (SVG from Figma export)\n * Right: Legends vertical, gap: 8, centered\n * Each: label 12px/400/#2E3236 + Info 14px stroke=#ACACAD\n * Score bar: 5 segments 22x6, gap: 2, filled=#2E3236, empty=#E3E1D7\n */\n\nconst COLORS = {\n strong: 'var(--Grey-Strong, #2E3236)',\n muted: 'var(--Grey-Muted, #808183)',\n absent: 'var(--Grey-absent, #D9D9D9)',\n white: 'var(--Grey-White, #FFF)',\n accent: 'var(--rail-orange, #C98A5A)',\n track: 'var(--rail-surface-2, #E3E1D7)',\n infoIcon: 'var(--color-input-border, #ACACAD)',\n};\n\n// Gauge using stroke-based semi-circle arcs — matching Figma node 270-6499\nconst GaugeMeter = ({ score = 4, maxScore = 10 }) => {\n const svgW = 243;\n const svgH = 130;\n const cx = svgW / 2;\n const cy = svgH - 7;\n const r = 85; // mid-radius of the arc\n const sw = 30; // stroke-width (thickness of the arc band)\n const totalSeg = 5;\n const filledSeg = Math.min(Math.round((score / maxScore) * totalSeg), totalSeg);\n const segDeg = 180 / totalSeg; // 36° per segment\n\n // Convert polar (degrees, 0°=right, CCW) to SVG x,y (Y-down)\n const toXY = (angleDeg) => {\n const rad = (angleDeg * Math.PI) / 180;\n return {\n x: cx + r * Math.cos(rad),\n y: cy - r * Math.sin(rad),\n };\n };\n\n // SVG arc from startDeg to endDeg (both in math convention: 0=right, 180=left)\n // We draw clockwise in SVG (sweep-flag=1) from higher angle to lower angle\n const strokeArc = (fromDeg, toDeg) => {\n const s = toXY(fromDeg);\n const e = toXY(toDeg);\n const large = (fromDeg - toDeg) > 180 ? 1 : 0;\n return `M ${s.x} ${s.y} A ${r} ${r} 0 ${large} 1 ${e.x} ${e.y}`;\n };\n\n const gap = 2; // degrees gap between segments\n\n return (\n <svg width={svgW} height={svgH} viewBox={`0 0 ${svgW} ${svgH}`} fill=\"none\">\n {/* Segments from left (180°) to right (0°) */}\n {Array.from({ length: totalSeg }, (_, i) => {\n const fromA = 180 - i * segDeg - (i > 0 ? gap / 2 : 0);\n const toA = 180 - (i + 1) * segDeg + (i < totalSeg - 1 ? gap / 2 : 0);\n const isFilled = i < filledSeg;\n return (\n <path\n key={i}\n d={strokeArc(fromA, toA)}\n stroke={isFilled ? COLORS.strong : COLORS.track}\n strokeWidth={sw}\n strokeLinecap=\"butt\"\n fill=\"none\"\n />\n );\n })}\n </svg>\n );\n};\n\nconst ScoreBar = ({ value = 0, maxValue = 5 }) => (\n <div style={{ display: 'flex', gap: 2 }}>\n {Array.from({ length: maxValue }, (_, i) => (\n <div\n key={i}\n style={{\n width: 22,\n height: 6,\n borderRadius: 1,\n background: i < value ? COLORS.strong : COLORS.track,\n }}\n />\n ))}\n </div>\n);\n\nconst LegendItem = ({ label, value = 0, maxValue = 5 }) => (\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n gap: 8,\n padding: 8,\n alignItems: 'center',\n }}>\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n }}>\n <span style={{\n fontSize: 12,\n fontWeight: 400,\n color: COLORS.strong,\n fontFamily: 'var(--font-sans)',\n lineHeight: 'normal',\n }}>\n {label}\n </span>\n <Info size={14} color={COLORS.infoIcon} strokeWidth={1} />\n </div>\n <ScoreBar value={value} maxValue={maxValue} />\n </div>\n);\n\nconst UpdatedCompassScore = ({\n score = 83,\n maxScore = 100,\n predictedScore = 4,\n predictedLabel = 'Predicted Objective',\n description = '',\n legends = [\n { label: 'CSAT', value: 3 },\n { label: 'Resolution', value: 4 },\n { label: 'Process Adherence', value: 5 },\n { label: 'Communication', value: 3 },\n ],\n}) => {\n const formattedPredicted = String(predictedScore).padStart(2, '0');\n\n return (\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n padding: 24,\n borderRadius: 8,\n border: `1px solid ${COLORS.absent}`,\n background: COLORS.white,\n alignSelf: 'stretch',\n gap: 24,\n }}>\n {/* Section Title — left-aligned, vertical, gap: 8 */}\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n gap: 8,\n }}>\n <span style={{\n fontSize: 15,\n fontWeight: 600,\n color: COLORS.strong,\n fontFamily: 'var(--font-sans)',\n lineHeight: 1.2,\n }}>\n Compass Score\n </span>\n <span style={{\n fontSize: 14,\n fontWeight: 400,\n color: COLORS.muted,\n fontFamily: 'var(--font-sans)',\n lineHeight: 'normal',\n }}>\n {description}\n </span>\n </div>\n\n {/* Content: Meter (left) + Legends (right) */}\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 48,\n flex: 1,\n }}>\n {/* Left: Gauge + Pin + Score number */}\n <div style={{\n display: 'flex',\n width: 243,\n flexDirection: 'column',\n alignItems: 'center',\n flexShrink: 0,\n }}>\n <GaugeMeter score={score} maxScore={maxScore} />\n\n {/* Compass pin icon — exact Figma export */}\n <svg width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style={{ marginTop: -24 }}>\n <path d=\"M16 25.2169C19.958 25.2169 23.1667 22.0083 23.1667 18.0503C23.1667 14.0922 19.958 10.8836 16 10.8836C12.042 10.8836 8.83334 14.0922 8.83334 18.0503C8.83334 22.0083 12.042 25.2169 16 25.2169Z\" fill=\"var(--rail-orange, #C98A5A)\" />\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M30.4791 11.2328L33.4351 0L21.6888 3.09113C19.9212 2.41855 18.0036 2.05025 16 2.05025C7.16344 2.05025 0 9.2137 0 18.0503C0 26.8868 7.16344 34.0503 16 34.0503C24.8366 34.0503 32 26.8868 32 18.0503C32 15.6119 31.4546 13.301 30.4791 11.2328ZM16 30.5503C22.9036 30.5503 28.5 24.9538 28.5 18.0503C28.5 11.1467 22.9036 5.55025 16 5.55025C9.09644 5.55025 3.5 11.1467 3.5 18.0503C3.5 24.9538 9.09644 30.5503 16 30.5503Z\" fill=\"var(--rail-orange, #C98A5A)\" />\n </svg>\n\n {/* Score number below gauge */}\n <div style={{\n fontSize: 28,\n fontWeight: 400,\n color: COLORS.strong,\n fontFamily: 'var(--font-sans)',\n lineHeight: 1,\n textAlign: 'center',\n marginTop: 8,\n }}>\n {score}\n </div>\n </div>\n\n {/* Right: Predicted Score + Legends */}\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n gap: 8,\n alignItems: 'center',\n justifyContent: 'center',\n flex: 1,\n }}>\n {/* Predicted Score + Label */}\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n }}>\n <div style={{\n fontSize: 28,\n fontWeight: 400,\n color: COLORS.strong,\n fontFamily: 'var(--font-sans)',\n lineHeight: 1,\n textAlign: 'center',\n }}>\n {formattedPredicted}\n </div>\n <div style={{\n fontSize: 14,\n fontWeight: 400,\n color: COLORS.muted,\n fontFamily: 'var(--font-sans)',\n lineHeight: 1.43,\n textAlign: 'center',\n }}>\n {predictedLabel}\n </div>\n </div>\n\n {/* Divider */}\n <div style={{\n width: '100%',\n height: 1,\n background: COLORS.absent,\n }} />\n\n {/* Legend items */}\n {legends.map((legend, i) => (\n <LegendItem\n key={i}\n label={legend.label}\n value={legend.value}\n />\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default UpdatedCompassScore;\n","import { useState, useRef } from 'react';\nimport { ArrowLeft, ArrowRight, CalendarDays, PhoneIncoming, ClipboardList, FileSignal, Repeat, ChevronDown, ChevronUp, Headset, CircleUser, History, ExternalLink } from 'lucide-react';\nimport UpdatedInteractionContext from './UpdatedInteractionContext';\nimport UpdatedInteractionRecording from './UpdatedInteractionRecording';\nimport UpdatedInteractionScores from './UpdatedInteractionScores';\nimport UpdatedCoachingSynthesisCard from './UpdatedCoachingSynthesisCard';\nimport UpdatedInteractionSignals from './UpdatedInteractionSignals';\nimport UpdatedCompassScore from './UpdatedCompassScore';\n\nconst TABS = [\n { key: 'overview', label: 'Overview' },\n { key: 'coaching', label: 'Coaching Summary' },\n { key: 'signals', label: 'Signals & Recording' },\n { key: 'comments', label: 'Comments' },\n];\n\nconst UpdatedInteractionDetails = ({\n title = 'Wheel Stud Replacement Enquiry',\n onBack,\n // Data props — all optional with defaults for demo\n data,\n coachingData,\n audioUrl,\n // Audio/playback props — pass these when the host app manages audio externally\n // (like InteractionDetailPanel does). If omitted, UpdatedInteractionRecording\n // manages its own audio element internally.\n audioRef: externalAudioRef,\n currentTimeSeconds,\n timelinePlaying,\n playbackRate,\n timelineSegments,\n onSeek,\n onTogglePlay,\n onSeekBack,\n onSeekForward,\n onSetPlaybackRate,\n // Speaker names\n agentName: externalAgentName,\n customerName: externalCustomerName,\n // Transcript props — pass real transcript data from the host app\n transcript,\n activeTurnIndex,\n turnObservations,\n highlightedTurns,\n onTurnPlayPause,\n // Signal evidence playback — host app can provide to play audio segments from signals\n onPlayEvidence,\n onHighlightTurns,\n // Footer navigation\n prevSessionTitle,\n prevSessionDesc,\n nextSessionTitle,\n nextSessionDesc,\n onPreviousSession,\n onNextSession,\n}) => {\n const [activeTab, setActiveTab] = useState('overview');\n const [expandedSignals, setExpandedSignals] = useState(new Set());\n const [showSessionDropdown, setShowSessionDropdown] = useState(false);\n const [hoveredSessionIdx, setHoveredSessionIdx] = useState(null);\n const [internalPlaying, setInternalPlaying] = useState(false);\n const [internalCurrentTime, setInternalCurrentTime] = useState(0);\n const recordingRef = useRef(null);\n\n // Section refs for scroll-to-section tab behavior\n const overviewRef = useRef(null);\n const coachingRef = useRef(null);\n const signalsRef = useRef(null);\n const commentsRef = useRef(null);\n const sectionRefs = { overview: overviewRef, coaching: coachingRef, signals: signalsRef, comments: commentsRef };\n\n const handleTabClick = (key) => {\n setActiveTab(key);\n const ref = sectionRefs[key];\n if (ref?.current) {\n ref.current.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n };\n\n const sessionHistory = [\n { title: 'Tire Repair Appointment', date: '11/12/2025, 2:30:00 PM' },\n { title: 'Quote Confirmation', date: '10/1/2025, 9:00:00 AM' },\n { title: 'Automative Repair Enquiry', date: '09/15/2025, 11:45:00 AM' },\n { title: 'Vehicle Inspection Reminder', date: '07/20/2025, 1:00:00 PM' },\n { title: 'Oil Change Service', date: '05/5/2025, 10:00:00 AM' },\n ];\n\n /* Called from Signals \"Show in transcript\" icon — seeks recording to that time */\n const handleShowInTranscript = (startMs) => {\n const timeSec = startMs / 1000;\n if (recordingRef.current?.seekTo) {\n recordingRef.current.seekTo(timeSec);\n }\n };\n\n /* Called from Signals evidence play button — seeks + plays audio segment */\n const handlePlayEvidence = (ev) => {\n if (onPlayEvidence) {\n onPlayEvidence(ev);\n } else {\n // Default: seek to evidence start time via recording ref\n const startMs = ev.start_ms ?? ev.startMs;\n if (startMs != null && recordingRef.current?.seekTo) {\n recordingRef.current.seekTo(startMs / 1000);\n setInternalPlaying(true);\n setInternalCurrentTime(startMs / 1000);\n // Stop playing after evidence duration\n const endMs = ev.end_ms ?? ev.endMs ?? (startMs + 5000);\n const durationMs = endMs - startMs;\n setTimeout(() => setInternalPlaying(false), durationMs);\n }\n }\n };\n\n /* Called to highlight transcript turns related to evidence */\n const handleHighlightTurns = (turnIds) => {\n if (onHighlightTurns) {\n onHighlightTurns(turnIds);\n }\n };\n\n const toggleSignal = (key) => {\n setExpandedSignals((prev) => {\n const next = new Set(prev);\n if (next.has(key)) next.delete(key);\n else next.add(key);\n return next;\n });\n };\n\n // Extract data from blocks if provided\n const blocks = data?.blocks || [];\n const findBlock = (id) => blocks.find((b) => b.block_id === id)?.payload || {};\n\n const meta = findBlock('interaction-metadata');\n const ctx = findBlock('interaction-context');\n const signals = findBlock('interaction-signals');\n const outcomeLift = findBlock('interaction-outcome-lift');\n const callPurpose = ctx.call_purpose || {};\n const classification = ctx.classification || {};\n\n // Demo defaults\n const demoMeta = { duration_seconds: 156, message_count: 25, ...meta };\n const demoCallPurpose = { interaction_driver: 'General Information', interaction_direction: 'inbound', ...callPurpose };\n const demoClassification = { interaction_paradigm: 'Informational', ...classification };\n const demoOutcomeLift = { p_expected: 0.94, p_full: 0.83, lift_raw: -0.11, lift: 0.043, interpretation: { lift_band: 'positive' }, ...outcomeLift };\n const demoDriverLabels = outcomeLift.driver_signal_keys?.map((k) => k.replace(/^sig\\./, '').replace(/_/g, ' ')) || [\n 'customer needs fully addressed',\n 'call flow expectations set',\n 'Opening expectations set',\n 'Active listening demonstrated',\n 'Resolution confirmed',\n ];\n const demoCoaching = coachingData || {\n one_liner: 'David provided the customer with information on wheel stud replacement and pricing, but did not secure an appointment.',\n context: 'The customer was seeking information on wheel stud replacement for a 2013 Chevy Bolt and was unsure about doing the repair themselves.',\n strengths: [\n { text: 'Anthony effectively scheduled the appointment and confirmed the details clearly.', quote: 'Alright. That is all set up for Saturday, the twenty eighth, at 12:00.' },\n { text: 'Handled customer objections well by explaining the need for a separate appointment for alignment.', quote: \"I don't have the alignment changeover the weekend. So I would have to set up a separate appointment for the alignment.\" },\n { text: 'Demonstrated courtesy and professionalism throughout the call.', quote: 'Have a great day.' },\n ],\n improvements: [\n { text: 'Close the loop by restating the plan and confirming next steps to ensure customer certainty.', quote: 'Alright. That is all set up for Saturday, the twenty eighth, at 12:00.' },\n { text: 'Frame solutions positively by leading with what can be done rather than limitations.', quote: \"I don't have the alignment changeover the weekend.\" },\n ],\n overall: 'effective',\n };\n const demoSignals = signals?.signals?.length ? signals : {\n present_count: 9,\n total_signals_evaluated: 146,\n signals: [\n {\n key: 'price_estimate_provided', display_name: 'Price Estimate Provided',\n observations: [\n {\n key: 'obs1', reason: 'Evidence shows a price estimate or quote was provided.', evidence: [\n { start_ms: 92000, end_ms: 97000, text: 'From Casper, you\\'re probably looking at, like, a half hour labor plus a stud, so you\\'d probably be somewhere around $90 or something.', turn_ids: [8] },\n ]\n },\n ],\n },\n { key: 'fee_or_cost_discussed', display_name: 'Fee or Cost Discussed', observations: [{ key: 'obs2', reason: 'Agent discussed pricing details with the customer.' }] },\n { key: 'engagement_budget', display_name: 'Engagement Budget Discussed', observations: [{ key: 'obs3a', reason: 'Budget expectations were set.' }, { key: 'obs3b', reason: 'Customer confirmed budget range.' }] },\n { key: 'projected_revenue', display_name: 'Projected Revenue Discussed', observations: [{ key: 'obs4a', reason: 'Revenue projection shared.' }, { key: 'obs4b', reason: 'Timeline for revenue discussed.' }, { key: 'obs4c', reason: 'Quarterly targets mentioned.' }] },\n { key: 'market_analysis', display_name: 'Market Analysis Completed', observations: [{ key: 'obs5a', reason: 'Market analysis referenced.' }, { key: 'obs5b', reason: 'Competitive landscape discussed.' }, { key: 'obs5c', reason: 'Market trends mentioned.' }, { key: 'obs5d', reason: 'Regional analysis provided.' }] },\n { key: 'target_audience', display_name: 'Target Audience Defined', observations: [{ key: 'obs6a', reason: 'Target audience identified.' }, { key: 'obs6b', reason: 'Demographics discussed.' }, { key: 'obs6c', reason: 'Audience segmentation reviewed.' }, { key: 'obs6d', reason: 'Persona mapping completed.' }, { key: 'obs6e', reason: 'Channel preferences noted.' }] },\n { key: 'concept_approval', display_name: 'Concept Approval Received', observations: [{ key: 'obs7a', reason: 'Concept approved by stakeholder.' }, { key: 'obs7b', reason: 'Feedback incorporated.' }, { key: 'obs7c', reason: 'Sign-off confirmed.' }, { key: 'obs7d', reason: 'Revisions requested.' }, { key: 'obs7e', reason: 'Final version accepted.' }, { key: 'obs7f', reason: 'Timeline approved.' }] },\n { key: 'prototype_developed', display_name: 'Prototype Developed', observations: [{ key: 'obs8a', reason: 'Prototype shared.' }, { key: 'obs8b', reason: 'Testing initiated.' }, { key: 'obs8c', reason: 'Feedback collected.' }, { key: 'obs8d', reason: 'Iterations completed.' }, { key: 'obs8e', reason: 'Usability tested.' }, { key: 'obs8f', reason: 'Design finalized.' }, { key: 'obs8g', reason: 'Stakeholder demo done.' }] },\n { key: 'user_testing', display_name: 'User Testing Scheduled', observations: [{ key: 'obs9a', reason: 'Testing sessions planned.' }, { key: 'obs9b', reason: 'Participants recruited.' }, { key: 'obs9c', reason: 'Test scripts prepared.' }, { key: 'obs9d', reason: 'Environment set up.' }, { key: 'obs9e', reason: 'Accessibility testing included.' }, { key: 'obs9f', reason: 'Results framework defined.' }, { key: 'obs9g', reason: 'Timeline confirmed.' }, { key: 'obs9h', reason: 'Backup plan discussed.' }] },\n ],\n };\n\n const agentName = externalAgentName || 'Agent';\n const customerName = externalCustomerName || 'Customer';\n const customerSessions = 8;\n const dateStr = meta.evaluated_dt ? new Date(meta.evaluated_dt).toLocaleString() : '3/29/2026, 8:30:00 AM';\n const direction = demoCallPurpose.interaction_direction === 'inbound' ? 'Inbound' : 'Outbound';\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', width: '100%', background: 'var(--Grey-White, #FFF)' }}>\n {/* Header */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 12, padding: '24px 24px 0' }}>\n <button\n onClick={onBack}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n padding: 0,\n flexShrink: 0,\n }}\n >\n <ArrowLeft size={24} color=\"var(--Grey-Strong, #2E3236)\" />\n </button>\n <div style={{ width: 1, height: 28, background: 'var(--Base-absent, #D9D9D9)' }} />\n <h1 style={{\n color: 'var(--Grey-Strong, #2E3236)',\n fontSize: 24,\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: 'normal',\n margin: 0,\n }}>\n {title}\n </h1>\n </div>\n\n {/* Tabs */}\n <div style={{\n display: 'flex',\n alignItems: 'flex-start',\n background: 'var(--Grey-White, #FFF)',\n borderBottom: '1px solid var(--Grey-Faint, #ACADAD)',\n padding: '0 24px',\n marginTop: 8,\n }}>\n {TABS.map((tab) => (\n <button\n key={tab.key}\n onClick={() => handleTabClick(tab.key)}\n style={{\n display: 'flex',\n padding: 16,\n alignItems: 'center',\n gap: 10,\n background: 'none',\n border: 'none',\n borderBottom: activeTab === tab.key\n ? '3px solid var(--Grey-Strong, #2E3236)'\n : '3px solid transparent',\n cursor: 'pointer',\n fontSize: 15,\n fontWeight: activeTab === tab.key ? 500 : 400,\n color: activeTab === tab.key\n ? 'var(--Grey-Strong, #2E3236)'\n : 'var(--Grey-Muted, #808183)',\n whiteSpace: 'nowrap',\n transition: 'border-color 0.2s ease, color 0.2s ease',\n }}\n >\n {tab.label}\n </button>\n ))}\n </div>\n\n {/* All sections rendered — tabs scroll to them */}\n <div style={{ padding: 24, flex: 1, overflowY: 'auto' }}>\n {/* ═══ OVERVIEW SECTION ═══ */}\n <div ref={overviewRef} style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-end',\n alignItems: 'flex-start',\n gap: 24,\n alignSelf: 'stretch',\n }}>\n {/* Figma node 106-3508: Section Header — horizontal, gap: 16, height: 40, center */}\n <div style={{\n display: 'flex',\n height: 40,\n alignItems: 'center',\n gap: 16,\n alignSelf: 'stretch',\n }}>\n {/* Left: Icon + Title — fills remaining space */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, flex: 1 }}>\n <ClipboardList size={24} color=\"var(--rail-orange, #C98A5A)\" strokeWidth={2} />\n <span style={{\n fontSize: 16,\n fontWeight: 600,\n color: 'var(--Grey-Strong, #2E3236)',\n lineHeight: 1.2,\n textTransform: 'uppercase',\n }}>\n Overview\n </span>\n </div>\n\n {/* Right: Metadata — horizontal, gap: 16, center */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 16, flexShrink: 0 }}>\n {/* Date */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 6, padding: '8px 0' }}>\n <CalendarDays size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1.5} />\n <span style={{ fontSize: 13, fontWeight: 400, color: 'var(--Grey-Strong, #2E3236)', fontFamily: 'var(--font-sans)', lineHeight: 1.2 }}>\n {dateStr}\n </span>\n </div>\n\n {/* Direction */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 6, padding: '8px 0' }}>\n <PhoneIncoming size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1.5} />\n <span style={{ fontSize: 13, fontWeight: 400, color: 'var(--Grey-Strong, #2E3236)', fontFamily: 'var(--font-sans)', lineHeight: 1.2 }}>\n {direction}\n </span>\n </div>\n\n {/* Agent + Customer — border-left separator */}\n <div style={{\n display: 'flex', alignItems: 'center', gap: 16,\n paddingLeft: 16,\n borderLeft: '1px solid var(--Grey-absent, #D9D9D9)',\n }}>\n {/* Agent — Headset icon */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 6, padding: '8px 0' }}>\n <Headset size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1.5} />\n <span style={{ fontSize: 13, fontWeight: 400, color: 'var(--Grey-Strong, #2E3236)', fontFamily: 'var(--font-sans)', lineHeight: 1.2 }}>\n {agentName}\n </span>\n </div>\n\n {/* Repeat icon */}\n <Repeat size={16} color=\"var(--color-input-border, #ACACAD)\" strokeWidth={1.5} />\n\n {/* Customer — CircleUser icon + dropdown */}\n <div style={{ position: 'relative' }}>\n <button\n onClick={() => setShowSessionDropdown((prev) => !prev)}\n style={{\n display: 'flex', alignItems: 'center', gap: 4, padding: '8px 0',\n background: 'none', border: 'none', cursor: 'pointer',\n }}\n >\n <CircleUser size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1.5} />\n <span style={{ fontSize: 13, fontWeight: 400, color: 'var(--Grey-Strong, #2E3236)', lineHeight: 1.2 }}>\n {customerName} ({customerSessions} Sessions)\n </span>\n {showSessionDropdown\n ? <ChevronUp size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1.5} />\n : <ChevronDown size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1.5} />\n }\n </button>\n\n {/* Figma node 311-1302: Session history dropdown */}\n {showSessionDropdown && (\n <div style={{\n position: 'absolute',\n top: '100%',\n right: 0,\n marginTop: 4,\n width: 264,\n background: 'var(--Grey-White, #FFF)',\n borderRadius: 4,\n border: '1px solid var(--Grey-absent, #D9D9D9)',\n boxShadow: '0 4px 16px rgba(0,0,0,0.12)',\n zIndex: 50,\n overflow: 'hidden',\n }}>\n {/* Header: customer name + session count */}\n {/* Header — Figma node 312-1321: horizontal, gap: 8 */}\n <div style={{\n display: 'flex', alignItems: 'flex-start', gap: 8,\n padding: 16,\n }}>\n <CircleUser size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1.5} style={{ marginTop: 2, flexShrink: 0 }} />\n <div style={{ display: 'flex', flexDirection: 'column', gap: 4 }}>\n <span style={{\n fontSize: 16, fontWeight: 600,\n color: 'var(--Grey-Strong, #2E3236)',\n lineHeight: 1,\n }}>\n {customerName}\n </span>\n <span style={{\n fontSize: 13, fontWeight: 400,\n color: 'var(--Grey-Muted, #808183)',\n lineHeight: 1,\n }}>\n {customerSessions} Sessions in past\n </span>\n </div>\n </div>\n\n {/* Session list — Figma: 264px, pad 12 16, space-between, center */}\n {sessionHistory.map((session, i) => (\n <div\n key={i}\n onMouseEnter={() => setHoveredSessionIdx(i)}\n onMouseLeave={() => setHoveredSessionIdx(null)}\n style={{\n display: 'flex',\n width: 264,\n padding: '12px 16px',\n justifyContent: 'space-between',\n alignItems: 'center',\n background: hoveredSessionIdx === i\n ? 'var(--surface-hover, #F3F7F7)'\n : 'var(--Grey-White, #FFF)',\n borderTop: '1px solid var(--Grey-absent, #D9D9D9)',\n cursor: 'pointer',\n boxSizing: 'border-box',\n transition: 'background 0.15s',\n }}\n >\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\n <span style={{\n fontSize: 13, fontWeight: 400,\n color: 'var(--Grey-Strong, #2E3236)',\n lineHeight: 1,\n }}>\n {session.title}\n </span>\n <span style={{\n fontSize: 12, fontWeight: 400,\n color: 'var(--Grey-Muted, #808183)',\n lineHeight: 1,\n }}>\n {session.date}\n </span>\n </div>\n {hoveredSessionIdx === i && (\n <ExternalLink size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1} style={{ flexShrink: 0 }} />\n )}\n </div>\n ))}\n\n {/* View All Sessions button — Figma node 312-1347 */}\n <div style={{\n padding: 16,\n borderTop: '1px solid var(--Grey-absent, #D9D9D9)',\n display: 'flex',\n justifyContent: 'center',\n }}>\n <button style={{\n display: 'flex',\n height: 32,\n padding: '16px 16px 16px 12px',\n justifyContent: 'center',\n alignItems: 'center',\n gap: 6,\n background: 'var(--Grey-White, #FFF)',\n border: '1px solid var(--Grey-absent, #D9D9D9)',\n borderRadius: 10,\n cursor: 'pointer',\n }}>\n <History size={16} color=\"var(--Grey-Muted, #808183)\" strokeWidth={1.5} />\n <span style={{\n fontSize: 14, fontWeight: 600,\n color: 'var(--Grey-Strong, #2E3236)',\n }}>\n View All Sessions\n </span>\n </button>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n\n {/*\n Figma node 101-2385\n Row: Compass Score (left) | Context + Agent Lift Analysis stacked (right)\n */}\n <div style={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: 24,\n alignSelf: 'stretch',\n }}>\n {/* Left — Compass Score */}\n <div style={{ flex: 1, minWidth: 0 }}>\n <UpdatedCompassScore />\n </div>\n\n {/* Right — Context grid + Agent Lift Analysis stacked */}\n <div style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n justifyContent: 'flex-end',\n gap: 24,\n flex: 1,\n minWidth: 0,\n }}>\n <UpdatedInteractionContext\n meta={demoMeta}\n callPurpose={demoCallPurpose}\n classification={demoClassification}\n outcomeQuality=\"Neutral\"\n />\n <UpdatedInteractionScores\n outcomeLift={demoOutcomeLift}\n driverLabels={demoDriverLabels}\n />\n </div>\n </div>\n\n </div>\n\n {/* ═══ COACHING SUMMARY SECTION ═══ */}\n <div ref={coachingRef} style={{ paddingTop: 24 }}>\n <UpdatedCoachingSynthesisCard data={demoCoaching} />\n </div>\n\n {/* ═══ SIGNALS & RECORDING SECTION ═══ */}\n <div ref={signalsRef} style={{\n display: 'flex',\n flexDirection: 'column',\n gap: 16,\n alignSelf: 'stretch',\n paddingTop: 24,\n }}>\n {/* Section header */}\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n }}>\n <FileSignal size={24} color=\"#C98A5A\" strokeWidth={2} />\n <span style={{\n fontSize: 16,\n fontWeight: 600,\n color: 'var(--Grey-Strong, #2E3236)',\n lineHeight: 1.2,\n textTransform: 'uppercase',\n }}>\n Signals & Recording\n </span>\n </div>\n\n {/* Content: Signals (left) | Recording+Transcript (right) */}\n <div style={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: 24,\n alignSelf: 'stretch',\n paddingTop: 16,\n borderTop: '1px solid #D9D9D9',\n }}>\n <div style={{ flex: 1, minWidth: 0 }}>\n <UpdatedInteractionSignals\n signals={demoSignals}\n expandedSignals={expandedSignals}\n toggleSignal={toggleSignal}\n playEvidence={handlePlayEvidence}\n highlightTurns={handleHighlightTurns}\n onShowInTranscript={handleShowInTranscript}\n timelinePlaying={timelinePlaying || internalPlaying}\n currentTimeSeconds={currentTimeSeconds ?? internalCurrentTime}\n />\n </div>\n <div style={{ flex: 1, minWidth: 0 }}>\n <UpdatedInteractionRecording\n ref={recordingRef}\n audioUrl={audioUrl}\n durationSeconds={demoMeta.duration_seconds}\n audioRef={externalAudioRef}\n agentName={agentName}\n customerName={customerName.split(' ')[0]}\n currentTimeSeconds={currentTimeSeconds}\n timelinePlaying={timelinePlaying}\n playbackRate={playbackRate}\n timelineSegments={timelineSegments}\n onSeek={onSeek}\n onTogglePlay={onTogglePlay}\n onSeekBack={onSeekBack}\n onSeekForward={onSeekForward}\n onSetPlaybackRate={onSetPlaybackRate}\n transcript={transcript}\n activeTurnIndex={activeTurnIndex}\n turnObservations={turnObservations}\n highlightedTurns={highlightedTurns}\n onTurnPlayPause={onTurnPlayPause}\n setExpandedSignals={setExpandedSignals}\n />\n </div>\n </div>\n </div>\n\n {/* ═══ COMMENTS SECTION ═══ */}\n <div ref={commentsRef} style={{ paddingTop: 24 }}>\n <div style={{ fontSize: 14, color: 'var(--Grey-Muted, #808183)', fontFamily: 'var(--font-sans)' }}>\n No comments yet.\n </div>\n </div>\n </div>\n\n {/* Figma node 113-8262: Sticky Footer — Previous / Next Session */}\n <div style={{\n display: 'flex',\n position: 'sticky',\n bottom: 0,\n zIndex: 10,\n }}>\n {/* Previous Session */}\n <button\n onClick={onPreviousSession}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 30,\n padding: '12px 28px',\n flex: 1,\n background: 'var(--Grey-White, #FFF)',\n border: '1px solid var(--Grey-absent, #D9D9D9)',\n cursor: 'pointer',\n }}\n >\n <ArrowLeft size={24} color=\"var(--Grey-Muted, #808183)\" strokeWidth={2} />\n <div style={{ display: 'flex', flexDirection: 'column', gap: 10 }}>\n <span style={{\n fontSize: 14, fontWeight: 400,\n color: '#000',\n lineHeight: 1.2,\n textAlign: 'left',\n }}>\n {prevSessionTitle || 'Previous Session Title'}\n </span>\n <span style={{\n fontSize: 13, fontWeight: 400,\n color: '#000',\n lineHeight: 1.2,\n opacity: 0.5,\n textAlign: 'left',\n }}>\n {prevSessionDesc || 'Short description of the session'}\n </span>\n </div>\n </button>\n\n {/* Next Session */}\n <button\n onClick={onNextSession}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: 30,\n padding: '12px 28px',\n flex: 1,\n background: 'var(--Grey-White, #FFF)',\n border: '1px solid var(--Grey-absent, #D9D9D9)',\n cursor: 'pointer',\n }}\n >\n <div style={{ display: 'flex', flexDirection: 'column', gap: 10 }}>\n <span style={{\n fontSize: 14, fontWeight: 400,\n color: '#000',\n lineHeight: 1.2,\n textAlign: 'left',\n }}>\n {nextSessionTitle || 'Next Session Title'}\n </span>\n <span style={{\n fontSize: 13, fontWeight: 400,\n color: '#000',\n lineHeight: 1.2,\n opacity: 0.5,\n textAlign: 'left',\n }}>\n {nextSessionDesc || 'Short description of the session'}\n </span>\n </div>\n <ArrowRight size={24} color=\"var(--Grey-Muted, #808183)\" strokeWidth={2} />\n </button>\n </div>\n </div>\n );\n};\n\nexport default UpdatedInteractionDetails;\n"],"names":["COLORS","OVERALL_MAP","STYLE_ID","ensureKeyframes","style","OverallBadge","overall","label","jsxs","jsx","ThumbsUp","SectionItem","item","text","quote","CoachingColumn","icon","items","i","UpdatedCoachingSynthesisCard","data","loading","error","React","strengths","improvements","oneLiner","_a","context","_b","ShieldCheck","TrendingUp","Lightbulb","fmtDur","seconds","m","s","ROW_STYLE","COLUMN_STYLE","UpdatedInteractionContext","meta","callPurpose","classification","dimensions","outcomeQuality","onMoreDetails","duration","messages","driver","paradigm","leftRows","_","d","rightRows","renderRow","ExternalLink","row","LH","MAX_VISIBLE_DRIVERS","fmtPct","v","fmtPp","pp","UpdatedInteractionScores","outcomeLift","driverLabels","pExpected","pFull","liftRaw","liftRecentered","liftBand","liftBandCapitalized","visibleDrivers","overflowCount","HoverIcon","children","size","onClick","title","hovered","setHovered","useState","UpdatedInteractionSignals","signals","expandedSignals","toggleSignal","playEvidence","highlightTurns","onShowInTranscript","timelinePlaying","currentTimeSeconds","signalList","presentCount","fmtMs","ms","minutes","isEvPlaying","ev","FileSignal","signal","idx","key","isExpanded","obsCount","ChevronUp","ChevronDown","_c","obs","obsIdx","e","ScrollText","evIdx","PauseCircle","PlayCircle","GaugeMeter","score","maxScore","filledSeg","segDeg","toXY","angleDeg","rad","strokeArc","fromDeg","toDeg","large","gap","fromA","toA","isFilled","ScoreBar","value","maxValue","LegendItem","Info","UpdatedCompassScore","predictedScore","predictedLabel","description","legends","formattedPredicted","legend","TABS","UpdatedInteractionDetails","onBack","coachingData","audioUrl","externalAudioRef","playbackRate","timelineSegments","onSeek","onTogglePlay","onSeekBack","onSeekForward","onSetPlaybackRate","externalAgentName","externalCustomerName","transcript","activeTurnIndex","turnObservations","highlightedTurns","onTurnPlayPause","onPlayEvidence","onHighlightTurns","prevSessionTitle","prevSessionDesc","nextSessionTitle","nextSessionDesc","onPreviousSession","onNextSession","activeTab","setActiveTab","setExpandedSignals","showSessionDropdown","setShowSessionDropdown","hoveredSessionIdx","setHoveredSessionIdx","internalPlaying","setInternalPlaying","internalCurrentTime","setInternalCurrentTime","recordingRef","useRef","overviewRef","coachingRef","signalsRef","commentsRef","sectionRefs","handleTabClick","ref","sessionHistory","handleShowInTranscript","startMs","timeSec","handlePlayEvidence","durationMs","handleHighlightTurns","turnIds","prev","next","blocks","findBlock","id","ctx","demoMeta","demoCallPurpose","demoClassification","demoOutcomeLift","demoDriverLabels","k","demoCoaching","demoSignals","agentName","customerName","customerSessions","dateStr","direction","ArrowLeft","tab","ClipboardList","CalendarDays","PhoneIncoming","Headset","Repeat","CircleUser","session","History","UpdatedInteractionRecording","ArrowRight"],"mappings":"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"}