chordia-ui 3.9.0 → 3.9.2

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 (48) hide show
  1. package/dist/DataTable2.cjs.js +1 -1
  2. package/dist/DataTable2.cjs.js.map +1 -1
  3. package/dist/DataTable2.es.js +611 -604
  4. package/dist/DataTable2.es.js.map +1 -1
  5. package/dist/PerformancePanel.cjs.js +1 -1
  6. package/dist/PerformancePanel.cjs.js.map +1 -1
  7. package/dist/PerformancePanel.es.js +1068 -816
  8. package/dist/PerformancePanel.es.js.map +1 -1
  9. package/dist/SupervisorSelect.cjs.js +2 -0
  10. package/dist/SupervisorSelect.cjs.js.map +1 -0
  11. package/dist/SupervisorSelect.es.js +352 -0
  12. package/dist/SupervisorSelect.es.js.map +1 -0
  13. package/dist/components/Signals.cjs.js +1 -1
  14. package/dist/components/Signals.cjs.js.map +1 -1
  15. package/dist/components/Signals.es.js +273 -318
  16. package/dist/components/Signals.es.js.map +1 -1
  17. package/dist/components/UpdatedInteractionDetails.cjs.js +3 -3
  18. package/dist/components/UpdatedInteractionDetails.cjs.js.map +1 -1
  19. package/dist/components/UpdatedInteractionDetails.es.js +98 -92
  20. package/dist/components/UpdatedInteractionDetails.es.js.map +1 -1
  21. package/dist/components/performance.cjs.js +1 -1
  22. package/dist/components/performance.cjs.js.map +1 -1
  23. package/dist/components/performance.es.js +116 -349
  24. package/dist/components/performance.es.js.map +1 -1
  25. package/dist/components/reports.cjs.js +2 -2
  26. package/dist/components/reports.cjs.js.map +1 -1
  27. package/dist/components/reports.es.js +122 -141
  28. package/dist/components/reports.es.js.map +1 -1
  29. package/dist/index.cjs.js +1 -1
  30. package/dist/index.es.js +1 -1
  31. package/dist/pages/interactionDetails.cjs.js +2 -2
  32. package/dist/pages/interactionDetails.cjs.js.map +1 -1
  33. package/dist/pages/interactionDetails.es.js +130 -124
  34. package/dist/pages/interactionDetails.es.js.map +1 -1
  35. package/package.json +1 -1
  36. package/src/components/Signals/SignalDetailsPage.jsx +2 -29
  37. package/src/components/Signals/SignalsListPage.jsx +2 -24
  38. package/src/components/UpdatedInteractionDetails/UpdatedCoachingSynthesisCard.jsx +8 -1
  39. package/src/components/data/DataTable2.jsx +19 -5
  40. package/src/components/pages/interactionDetails/CoachingSynthesisCard.jsx +8 -1
  41. package/src/components/performance/PerformanceDetailsPage.jsx +230 -75
  42. package/src/components/performance/PerformancePanel.jsx +42 -45
  43. package/src/components/performance/index.js +27 -0
  44. package/src/components/performance/performanceApiMap.js +133 -0
  45. package/src/components/performance/performanceMetrics.js +63 -0
  46. package/src/components/performance/performanceRangeFormat.js +92 -0
  47. package/src/components/performance/performanceSparkline.js +52 -0
  48. package/src/components/reports/ReportsList.jsx +2 -25
@@ -1,8 +1,8 @@
1
- import { C as Zt, M as Xt, O as Ut, b as en, c as tn, S as nn, a as rn, d as on } from "../SummarySection.es.js";
1
+ import { C as Xt, M as Ut, O as en, b as tn, c as nn, S as rn, a as on, d as an } from "../SummarySection.es.js";
2
2
  import { E as Ye, A as Xe } from "../AgentLiftCard.es.js";
3
3
  import { jsxs as o, jsx as e, Fragment as $e } from "react/jsx-runtime";
4
4
  import Ge, { useMemo as oe, useState as T, useRef as fe, useEffect as ge, useLayoutEffect as Ue } from "react";
5
- import { TrendingUp as et, Lightbulb as Ae, Building as tt, MessageSquareQuote as nt, ChevronDown as He, Zap as Me, CheckCircle as qe, Target as Ve, FileText as rt, Scale as it, MessageSquare as ot, CornerDownRight as at, Send as lt, Clock as st, ChevronRight as Je } from "lucide-react";
5
+ import { TrendingUp as et, Lightbulb as Ae, Building as tt, MessageSquareQuote as nt, ChevronDown as He, Zap as Me, CheckCircle as Ve, Target as qe, FileText as rt, Scale as it, MessageSquare as ot, CornerDownRight as at, Send as lt, Clock as st, ChevronRight as Je } from "lucide-react";
6
6
  import { C as ct, a as ae } from "../SmallButton.es.js";
7
7
  import { S as dt, T as pt } from "../SectionLabel.es.js";
8
8
  import "../sortable.esm.es.js";
@@ -18,7 +18,13 @@ import "../UpdatedInteractionRecording.es.js";
18
18
  import { a as ut, T as gt } from "../Timeline.es.js";
19
19
  import "../Tooltip.es.js";
20
20
  const Oe = "coaching-synthesis-keyframes";
21
- function ft() {
21
+ function ft(n) {
22
+ if (n == null)
23
+ return null;
24
+ const a = String(n).trim();
25
+ return !a || a.toLowerCase() === "null" || a.toLowerCase() === "undefined" ? null : a;
26
+ }
27
+ function ht() {
22
28
  if (typeof document > "u" || document.getElementById(Oe))
23
29
  return;
24
30
  const n = document.createElement("style");
@@ -33,10 +39,10 @@ function ft() {
33
39
  }
34
40
  `, document.head.appendChild(n);
35
41
  }
36
- function ht({ data: n, loading: a, error: l }) {
42
+ function yt({ data: n, loading: a, error: l }) {
37
43
  var C, I;
38
44
  if (Ge.useEffect(() => {
39
- ft();
45
+ ht();
40
46
  }, []), a)
41
47
  return /* @__PURE__ */ o("div", { style: {
42
48
  padding: "20px 0",
@@ -108,7 +114,7 @@ function ht({ data: n, loading: a, error: l }) {
108
114
  lineHeight: 1.45
109
115
  }, children: y }),
110
116
  s.length > 0 && /* @__PURE__ */ e(
111
- Fe,
117
+ We,
112
118
  {
113
119
  icon: /* @__PURE__ */ e(et, { size: 13 }),
114
120
  label: "Strengths",
@@ -117,7 +123,7 @@ function ht({ data: n, loading: a, error: l }) {
117
123
  }
118
124
  ),
119
125
  i.length > 0 && /* @__PURE__ */ e(
120
- Fe,
126
+ We,
121
127
  {
122
128
  icon: /* @__PURE__ */ e(Ae, { size: 13 }),
123
129
  label: "Improvements",
@@ -126,7 +132,7 @@ function ht({ data: n, loading: a, error: l }) {
126
132
  }
127
133
  ),
128
134
  m.length > 0 && /* @__PURE__ */ e(
129
- Fe,
135
+ We,
130
136
  {
131
137
  icon: /* @__PURE__ */ e(tt, { size: 13 }),
132
138
  label: "Organizational",
@@ -145,7 +151,7 @@ function ht({ data: n, loading: a, error: l }) {
145
151
  ] })
146
152
  ] });
147
153
  }
148
- function Fe({ icon: n, label: a, color: l, items: s }) {
154
+ function We({ icon: n, label: a, color: l, items: s }) {
149
155
  return /* @__PURE__ */ o("div", { children: [
150
156
  /* @__PURE__ */ o("div", { style: {
151
157
  display: "flex",
@@ -161,7 +167,7 @@ function Fe({ icon: n, label: a, color: l, items: s }) {
161
167
  a
162
168
  ] }),
163
169
  /* @__PURE__ */ e("div", { style: { display: "flex", flexDirection: "column", gap: 6 }, children: s.map((i, m) => {
164
- const b = typeof i == "string" ? i : (i == null ? void 0 : i.text) || "", y = typeof i == "object" ? i == null ? void 0 : i.quote : null;
170
+ const b = typeof i == "string" ? i : (i == null ? void 0 : i.text) || "", y = ft(typeof i == "object" ? i == null ? void 0 : i.quote : null);
165
171
  return /* @__PURE__ */ o("div", { style: { paddingLeft: 14 }, children: [
166
172
  /* @__PURE__ */ o("div", { style: {
167
173
  fontSize: "var(--text-base)",
@@ -204,11 +210,11 @@ function Fe({ icon: n, label: a, color: l, items: s }) {
204
210
  }) })
205
211
  ] });
206
212
  }
207
- function yt(n) {
213
+ function xt(n) {
208
214
  const a = Math.floor(n / 60), l = Math.round(n % 60);
209
215
  return `${a}:${l.toString().padStart(2, "0")}`;
210
216
  }
211
- function xt({ title: n, meta: a, callPurpose: l, classification: s, dimensions: i }) {
217
+ function mt({ title: n, meta: a, callPurpose: l, classification: s, dimensions: i }) {
212
218
  const m = l || {}, b = s || {};
213
219
  return /* @__PURE__ */ o(ct, { variant: "elevated", padding: "sm", children: [
214
220
  /* @__PURE__ */ e("div", { style: { fontSize: "var(--text-md)", fontWeight: 550, color: "var(--text-strong)", lineHeight: 1.375, marginBottom: 6 }, children: n }),
@@ -219,7 +225,7 @@ function xt({ title: n, meta: a, callPurpose: l, classification: s, dimensions:
219
225
  ] }),
220
226
  a.duration_seconds != null && /* @__PURE__ */ o("div", { children: [
221
227
  /* @__PURE__ */ e("span", { style: { fontSize: 11, color: "var(--text-faint)" }, children: "Duration" }),
222
- /* @__PURE__ */ e("div", { style: { fontSize: 12, color: "var(--text-base)" }, children: yt(a.duration_seconds) })
228
+ /* @__PURE__ */ e("div", { style: { fontSize: 12, color: "var(--text-base)" }, children: xt(a.duration_seconds) })
223
229
  ] }),
224
230
  a.message_count && /* @__PURE__ */ o("div", { children: [
225
231
  /* @__PURE__ */ e("span", { style: { fontSize: 11, color: "var(--text-faint)" }, children: "Messages" }),
@@ -249,7 +255,7 @@ function xt({ title: n, meta: a, callPurpose: l, classification: s, dimensions:
249
255
  a.session_id && /* @__PURE__ */ e("div", { style: { fontSize: 10, color: "var(--text-faint)", fontFamily: "var(--font-mono)", marginTop: 4, userSelect: "all" }, children: a.session_id })
250
256
  ] });
251
257
  }
252
- function Gt({ scores: n }) {
258
+ function Vt({ scores: n }) {
253
259
  return n != null && n.length ? /* @__PURE__ */ e(ae, { title: "Scores", children: /* @__PURE__ */ e("div", { style: { display: "flex", gap: 24, flexWrap: "wrap" }, children: n.map((a, l) => {
254
260
  const s = a.value != null ? Math.round(a.value) : null;
255
261
  return /* @__PURE__ */ o("div", { style: { textAlign: "center", minWidth: 48 }, children: [
@@ -259,17 +265,17 @@ function Gt({ scores: n }) {
259
265
  }) }) }) : null;
260
266
  }
261
267
  const je = {
262
- outcome: { label: "Outcome", icon: /* @__PURE__ */ e(Ve, { size: 12 }), color: "var(--rail-outcome)" },
268
+ outcome: { label: "Outcome", icon: /* @__PURE__ */ e(qe, { size: 12 }), color: "var(--rail-outcome)" },
263
269
  process: { label: "Process & Protocol", icon: /* @__PURE__ */ e(rt, { size: 12 }), color: "var(--rail-discovery)" },
264
270
  compliance: { label: "Compliance", icon: /* @__PURE__ */ e(it, { size: 12 }), color: "var(--rail-compliance)" },
265
271
  customer_friction: { label: "Customer Friction", icon: /* @__PURE__ */ e(Me, { size: 12 }), color: "var(--rail-coral)" },
266
272
  experience: { label: "Experience", icon: /* @__PURE__ */ e(ot, { size: 12 }), color: "var(--rail-teal)" }
267
- }, mt = {
273
+ }, bt = {
268
274
  risk: { icon: /* @__PURE__ */ e(Me, { size: 10 }), color: "var(--rail-signal-churn)" },
269
275
  opportunity: { icon: /* @__PURE__ */ e(Ae, { size: 10 }), color: "var(--state-unknown)" },
270
- excellence: { icon: /* @__PURE__ */ e(qe, { size: 10 }), color: "var(--rail-teal)" }
276
+ excellence: { icon: /* @__PURE__ */ e(Ve, { size: 10 }), color: "var(--rail-teal)" }
271
277
  };
272
- function bt({
278
+ function vt({
273
279
  signals: n,
274
280
  expandedSignals: a,
275
281
  toggleSignal: l,
@@ -298,8 +304,8 @@ function bt({
298
304
  /* @__PURE__ */ e("span", { children: S.label })
299
305
  ] }),
300
306
  /* @__PURE__ */ e("div", { style: { marginTop: 4, display: "flex", flexDirection: "column", gap: 6 }, children: g.map((u, x) => {
301
- var E, F, j;
302
- const R = u.display_name || u.key || "", L = (E = u.baseline) == null ? void 0 : E.delta, D = ((F = u.observations) == null ? void 0 : F.length) > 0, _ = a.has(u.key);
307
+ var E, W, j;
308
+ const R = u.display_name || u.key || "", F = (E = u.baseline) == null ? void 0 : E.delta, D = ((W = u.observations) == null ? void 0 : W.length) > 0, _ = a.has(u.key);
303
309
  return /* @__PURE__ */ o(
304
310
  "div",
305
311
  {
@@ -333,7 +339,7 @@ function bt({
333
339
  },
334
340
  title: [
335
341
  u.confidence != null ? `Confidence: ${Math.round(u.confidence * 100)}%` : "",
336
- L != null ? `Δ baseline: ${L > 0 ? "+" : ""}${(L * 100).toFixed(1)}%` : ""
342
+ F != null ? `Δ baseline: ${F > 0 ? "+" : ""}${(F * 100).toFixed(1)}%` : ""
337
343
  ].filter(Boolean).join(" · "),
338
344
  children: [
339
345
  /* @__PURE__ */ o(
@@ -346,7 +352,7 @@ function bt({
346
352
  whiteSpace: "nowrap"
347
353
  },
348
354
  children: [
349
- (j = mt[u.kind]) == null ? void 0 : j.icon,
355
+ (j = bt[u.kind]) == null ? void 0 : j.icon,
350
356
  /* @__PURE__ */ e("span", { children: R }),
351
357
  D && /* @__PURE__ */ o(
352
358
  "span",
@@ -382,7 +388,7 @@ function bt({
382
388
  }
383
389
  ),
384
390
  _ && u.observations && /* @__PURE__ */ e("div", { style: { width: "100%", margin: "0 0 6px" }, children: u.observations.map((w, K) => {
385
- var q;
391
+ var V;
386
392
  return /* @__PURE__ */ e("div", { style: { marginBottom: 6 }, children: /* @__PURE__ */ o(
387
393
  "div",
388
394
  {
@@ -425,7 +431,7 @@ function bt({
425
431
  }
426
432
  ),
427
433
  /* @__PURE__ */ e("div", { style: { marginBottom: 6, lineHeight: 1.4 }, children: w.reason || w.explanation || "" }),
428
- (q = w.evidence) == null ? void 0 : q.map((J, N) => {
434
+ (V = w.evidence) == null ? void 0 : V.map((J, N) => {
429
435
  const A = J.start_ms, M = J.end_ms;
430
436
  let $ = !1;
431
437
  if (A != null && i) {
@@ -462,9 +468,9 @@ function bt({
462
468
  const Ne = {
463
469
  risk: { icon: /* @__PURE__ */ e(Me, { size: 10 }), color: "var(--rail-signal-churn)" },
464
470
  opportunity: { icon: /* @__PURE__ */ e(Ae, { size: 10 }), color: "var(--state-unknown)" },
465
- excellence: { icon: /* @__PURE__ */ e(qe, { size: 10 }), color: "var(--rail-teal)" }
471
+ excellence: { icon: /* @__PURE__ */ e(Ve, { size: 10 }), color: "var(--rail-teal)" }
466
472
  };
467
- function vt({
473
+ function St({
468
474
  guidance: n,
469
475
  playEvidence: a,
470
476
  timelinePlaying: l,
@@ -525,22 +531,22 @@ function vt({
525
531
  ]
526
532
  }
527
533
  ),
528
- (x = S.evidence) == null ? void 0 : x.map((R, L) => {
534
+ (x = S.evidence) == null ? void 0 : x.map((R, F) => {
529
535
  const D = R.start_ms, _ = R.end_ms;
530
536
  let E = !1;
531
537
  if (D != null && l) {
532
- const F = D / 1e3, j = _ != null ? _ / 1e3 : F + 1, w = s ?? 0;
533
- E = w >= F && w <= j + 0.25;
538
+ const W = D / 1e3, j = _ != null ? _ / 1e3 : W + 1, w = s ?? 0;
539
+ E = w >= W && w <= j + 0.25;
534
540
  }
535
541
  return /* @__PURE__ */ e(
536
542
  Ye,
537
543
  {
538
544
  ev: R,
539
545
  isPlaying: E,
540
- onPlay: (F, j) => a == null ? void 0 : a(F, j, R.turn_ids),
546
+ onPlay: (W, j) => a == null ? void 0 : a(W, j, R.turn_ids),
541
547
  onHighlight: i
542
548
  },
543
- L
549
+ F
544
550
  );
545
551
  })
546
552
  ] }, u);
@@ -548,16 +554,16 @@ function vt({
548
554
  ] }, C);
549
555
  }) }) }) : null;
550
556
  }
551
- function St({ nba: n }) {
557
+ function kt({ nba: n }) {
552
558
  const a = (n == null ? void 0 : n.recommendations) || (n == null ? void 0 : n.actions) || [];
553
559
  return a.length ? /* @__PURE__ */ e(ae, { title: "Next Best Actions", children: /* @__PURE__ */ e("div", { style: { display: "flex", flexDirection: "column", gap: 6 }, children: a.slice(0, 8).map((l, s) => /* @__PURE__ */ o("div", { style: { fontSize: 11, color: "var(--text-muted)", display: "flex", alignItems: "center", gap: 4 }, children: [
554
- /* @__PURE__ */ e(Ve, { size: 12 }),
560
+ /* @__PURE__ */ e(qe, { size: 12 }),
555
561
  " ",
556
562
  /* @__PURE__ */ e("strong", { style: { color: "var(--text-base)" }, children: l.action || l.title || "" }),
557
563
  l.rationale && ` — ${l.rationale}`
558
564
  ] }, s)) }) }) : null;
559
565
  }
560
- function kt({
566
+ function wt({
561
567
  audioUrl: n,
562
568
  timelineSegments: a,
563
569
  durationSeconds: l,
@@ -592,7 +598,7 @@ function kt({
592
598
  /* @__PURE__ */ e("audio", { ref: g, preload: "none", style: { display: "none" }, children: /* @__PURE__ */ e("source", { src: n, type: "audio/mpeg" }) })
593
599
  ] }) : null;
594
600
  }
595
- function wt({
601
+ function Ct({
596
602
  transcript: n,
597
603
  audioUrl: a,
598
604
  highlightedTurns: l,
@@ -608,8 +614,8 @@ function wt({
608
614
  const C = (g, S) => {
609
615
  if (g == null)
610
616
  return;
611
- const u = (L) => {
612
- const D = Math.floor(L / 6e4), _ = Math.floor(L % 6e4 / 1e3);
617
+ const u = (F) => {
618
+ const D = Math.floor(F / 6e4), _ = Math.floor(F % 6e4 / 1e3);
613
619
  return `${D.toString().padStart(2, "0")}:${_.toString().padStart(2, "0")}`;
614
620
  }, x = u(g), R = S != null ? u(S) : x;
615
621
  return `${x}–${R}`;
@@ -625,9 +631,9 @@ function wt({
625
631
  observations: (m[S] || []).map((R) => ({
626
632
  ...R,
627
633
  onClick: () => {
628
- b((L) => /* @__PURE__ */ new Set([...L, R.signalKey])), setTimeout(() => {
629
- const L = document.getElementById(`signal-${R.signalKey}`);
630
- L && L.scrollIntoView({ behavior: "smooth", block: "nearest" });
634
+ b((F) => /* @__PURE__ */ new Set([...F, R.signalKey])), setTimeout(() => {
635
+ const F = document.getElementById(`signal-${R.signalKey}`);
636
+ F && F.scrollIntoView({ behavior: "smooth", block: "nearest" });
631
637
  }, 100);
632
638
  }
633
639
  }))
@@ -645,7 +651,7 @@ function wt({
645
651
  }
646
652
  ) });
647
653
  }
648
- const Le = {
654
+ const Fe = {
649
655
  padding: 0,
650
656
  border: "none",
651
657
  background: "transparent",
@@ -695,7 +701,7 @@ const Le = {
695
701
  ...Pe(i.replies, S, l + s.length)
696
702
  );
697
703
  }), s;
698
- }, Ct = (n) => {
704
+ }, zt = (n) => {
699
705
  if (!n)
700
706
  return "";
701
707
  if (!/^\d{4}-\d{2}-\d{2}T/.test(n))
@@ -725,7 +731,7 @@ const Le = {
725
731
  return n;
726
732
  }
727
733
  };
728
- function zt({
734
+ function Tt({
729
735
  sessionTitle: n,
730
736
  sessionSubtitle: a,
731
737
  threadLabel: l,
@@ -742,7 +748,7 @@ function zt({
742
748
  currentUser: g,
743
749
  isLoading: S = !1
744
750
  }) {
745
- const [u, x] = T(""), [R, L] = T(!1), [D, _] = T(s || []), [E, F] = T(!1), [j, w] = T(null), [K, q] = T([]), [J, N] = T(null), [A, M] = T(null), [$, O] = T(""), [H, Y] = T(null), [P, Z] = T(""), [le, te] = T(null), [Te, ne] = T(!1), [X, se] = T(""), [V, he] = T(!1), [Ie, U] = T(/* @__PURE__ */ new Set()), ee = fe(null), _e = fe(null), re = g && g.role && String(g.role).toLowerCase() || "", ie = oe(() => {
751
+ const [u, x] = T(""), [R, F] = T(!1), [D, _] = T(s || []), [E, W] = T(!1), [j, w] = T(null), [K, V] = T([]), [J, N] = T(null), [A, M] = T(null), [$, O] = T(""), [H, Y] = T(null), [P, Z] = T(""), [le, te] = T(null), [Te, ne] = T(!1), [X, se] = T(""), [q, he] = T(!1), [Ie, U] = T(/* @__PURE__ */ new Set()), ee = fe(null), _e = fe(null), re = g && g.role && String(g.role).toLowerCase() || "", ie = oe(() => {
746
752
  if (!g)
747
753
  return {
748
754
  name: "You",
@@ -773,10 +779,10 @@ function zt({
773
779
  const t = Array.isArray(i.threads) ? i.threads : Array.isArray(i.items) ? i.items : [];
774
780
  if (t.length > 0) {
775
781
  const v = t.map((c, p) => {
776
- const h = c.id || c.thread_id || `thread-${p + 1}`, B = c.label || c.title || (p === 0 ? l || "Session" : `Thread ${p + 1}`), d = Ke(c), W = Pe(d);
777
- return { id: h, label: B, messages: W };
782
+ const h = c.id || c.thread_id || `thread-${p + 1}`, B = c.label || c.title || (p === 0 ? l || "Session" : `Thread ${p + 1}`), d = Ke(c), L = Pe(d);
783
+ return { id: h, label: B, messages: L };
778
784
  });
779
- q(v);
785
+ V(v);
780
786
  const z = v.find((c) => (c.messages || []).length > 0) || v[0], r = (z == null ? void 0 : z.messages) || [];
781
787
  _(r), U(/* @__PURE__ */ new Set()), N((z == null ? void 0 : z.id) || null);
782
788
  return;
@@ -786,7 +792,7 @@ function zt({
786
792
  const v = Pe(f);
787
793
  _(v), U(/* @__PURE__ */ new Set());
788
794
  const z = i.id || "thread-1", r = i.title || l || "Thread 1";
789
- q([
795
+ V([
790
796
  {
791
797
  id: z,
792
798
  label: r
@@ -794,7 +800,7 @@ function zt({
794
800
  ]), N(z);
795
801
  }
796
802
  }, [i, l]), ge(() => {
797
- l && q(
803
+ l && V(
798
804
  (t) => t.map(
799
805
  (f, v) => v === 0 ? { ...f, label: l } : f
800
806
  )
@@ -811,7 +817,7 @@ function zt({
811
817
  he(!0);
812
818
  try {
813
819
  const f = `thread-${Date.now()}`;
814
- q((v) => [
820
+ V((v) => [
815
821
  ...v,
816
822
  {
817
823
  id: f,
@@ -840,7 +846,7 @@ function zt({
840
846
  parentId: A || null
841
847
  };
842
848
  if (_((r) => [...r, z]), m) {
843
- F(!0);
849
+ W(!0);
844
850
  try {
845
851
  await m({
846
852
  content: f,
@@ -853,7 +859,7 @@ function zt({
853
859
  } catch {
854
860
  _((r) => r.filter((c) => c.id !== v));
855
861
  } finally {
856
- F(!1);
862
+ W(!1);
857
863
  }
858
864
  M(null);
859
865
  return;
@@ -863,7 +869,7 @@ function zt({
863
869
  (c) => c.id === v ? { ...c, isOptimistic: !1 } : c
864
870
  )
865
871
  ), M(null);
866
- }, We = (t) => {
872
+ }, Le = (t) => {
867
873
  t.key === "Enter" && !t.shiftKey && (t.preventDefault(), ve());
868
874
  }, Se = (t) => {
869
875
  M(t.id), O(""), Y(null), Z(""), w(null), b == null || b(t);
@@ -880,7 +886,7 @@ function zt({
880
886
  isOptimistic: !m,
881
887
  parentId: t
882
888
  };
883
- _((r) => [...r, z]), F(!0);
889
+ _((r) => [...r, z]), W(!0);
884
890
  try {
885
891
  m && (await m({
886
892
  content: f,
@@ -893,7 +899,7 @@ function zt({
893
899
  } catch {
894
900
  m && _((r) => r.filter((c) => c.id !== v));
895
901
  } finally {
896
- F(!1);
902
+ W(!1);
897
903
  }
898
904
  }, we = (t) => {
899
905
  Y(t.id), Z(t.content || ""), M(null), O(""), w(null);
@@ -1016,7 +1022,7 @@ function zt({
1016
1022
  fontFamily: "var(--default-mono-font-family)",
1017
1023
  color: "rgba(30, 33, 37, 0.5)"
1018
1024
  },
1019
- children: Ct(t.timestamp)
1025
+ children: zt(t.timestamp)
1020
1026
  }
1021
1027
  ),
1022
1028
  ((h = t.author) == null ? void 0 : h.role) && /* @__PURE__ */ e(
@@ -1068,7 +1074,7 @@ function zt({
1068
1074
  onClick: (d) => {
1069
1075
  d.preventDefault(), d.stopPropagation(), Se(t);
1070
1076
  },
1071
- style: Le,
1077
+ style: Fe,
1072
1078
  children: "Reply"
1073
1079
  }
1074
1080
  ),
@@ -1079,7 +1085,7 @@ function zt({
1079
1085
  onClick: (d) => {
1080
1086
  d.preventDefault(), d.stopPropagation(), we(t);
1081
1087
  },
1082
- style: Le,
1088
+ style: Fe,
1083
1089
  children: "Edit"
1084
1090
  }
1085
1091
  ),
@@ -1091,7 +1097,7 @@ function zt({
1091
1097
  d.preventDefault(), d.stopPropagation(), Ce(t);
1092
1098
  },
1093
1099
  style: {
1094
- ...Le,
1100
+ ...Fe,
1095
1101
  color: "rgba(198, 99, 99, 0.9)"
1096
1102
  },
1097
1103
  children: "Delete"
@@ -1296,8 +1302,8 @@ function zt({
1296
1302
  {
1297
1303
  type: "button",
1298
1304
  onClick: () => U((d) => {
1299
- const W = new Set(d);
1300
- return W.has(t.id) ? W.delete(t.id) : W.add(t.id), W;
1305
+ const L = new Set(d);
1306
+ return L.has(t.id) ? L.delete(t.id) : L.add(t.id), L;
1301
1307
  }),
1302
1308
  style: {
1303
1309
  display: "inline-flex",
@@ -1619,7 +1625,7 @@ function zt({
1619
1625
  t.key === "Enter" && !t.shiftKey && (t.preventDefault(), be());
1620
1626
  },
1621
1627
  placeholder: "Start a new thread...",
1622
- disabled: V,
1628
+ disabled: q,
1623
1629
  style: {
1624
1630
  width: "100%",
1625
1631
  minHeight: "64px",
@@ -1643,7 +1649,7 @@ function zt({
1643
1649
  {
1644
1650
  type: "button",
1645
1651
  onClick: Be,
1646
- disabled: V,
1652
+ disabled: q,
1647
1653
  style: {
1648
1654
  padding: "6px 14px",
1649
1655
  fontSize: "12px",
@@ -1652,7 +1658,7 @@ function zt({
1652
1658
  background: "rgba(30, 33, 37, 0.08)",
1653
1659
  border: "none",
1654
1660
  borderRadius: "6px",
1655
- cursor: V ? "not-allowed" : "pointer"
1661
+ cursor: q ? "not-allowed" : "pointer"
1656
1662
  },
1657
1663
  children: "Cancel"
1658
1664
  }
@@ -1662,18 +1668,18 @@ function zt({
1662
1668
  {
1663
1669
  type: "button",
1664
1670
  onClick: be,
1665
- disabled: !X.trim() || V,
1671
+ disabled: !X.trim() || q,
1666
1672
  style: {
1667
1673
  padding: "6px 14px",
1668
1674
  fontSize: "12px",
1669
1675
  fontWeight: 600,
1670
1676
  color: "white",
1671
- background: X.trim() && !V ? "#5e88b0" : "rgba(30, 33, 37, 0.25)",
1677
+ background: X.trim() && !q ? "#5e88b0" : "rgba(30, 33, 37, 0.25)",
1672
1678
  border: "none",
1673
1679
  borderRadius: "6px",
1674
- cursor: X.trim() && !V ? "pointer" : "not-allowed"
1680
+ cursor: X.trim() && !q ? "pointer" : "not-allowed"
1675
1681
  },
1676
- children: V ? "Sending..." : "Send"
1682
+ children: q ? "Sending..." : "Send"
1677
1683
  }
1678
1684
  )
1679
1685
  ] })
@@ -2533,9 +2539,9 @@ function zt({
2533
2539
  ref: _e,
2534
2540
  value: u,
2535
2541
  onChange: (t) => x(t.target.value),
2536
- onKeyDown: We,
2537
- onFocus: () => L(!0),
2538
- onBlur: () => L(!1),
2542
+ onKeyDown: Le,
2543
+ onFocus: () => F(!0),
2544
+ onBlur: () => F(!1),
2539
2545
  placeholder: Ee ? "Type your reply..." : "Add a comment...",
2540
2546
  style: {
2541
2547
  width: "100%",
@@ -2621,7 +2627,7 @@ function zt({
2621
2627
  function G(n, a) {
2622
2628
  return n.find((l) => l.block_id === a);
2623
2629
  }
2624
- function Tt({
2630
+ function It({
2625
2631
  data: n,
2626
2632
  audioUrl: a,
2627
2633
  coachingData: l,
@@ -2640,7 +2646,7 @@ function Tt({
2640
2646
  var Se, ke, we, de, pe, Ce, ze, ue, t, f, v, z;
2641
2647
  const u = n.blocks || [];
2642
2648
  n.evidence_index;
2643
- const x = fe(null), R = fe(null), [L, D] = T(/* @__PURE__ */ new Set()), [_, E] = T(/* @__PURE__ */ new Set()), [F, j] = T(0), [w, K] = T(!1), [q, J] = T(1), N = ((Se = G(u, "interaction-metadata")) == null ? void 0 : Se.payload) || {}, A = ((ke = G(u, "interaction-context")) == null ? void 0 : ke.payload) || {}, M = ((we = G(u, "interaction-summary")) == null ? void 0 : we.payload) || {};
2649
+ const x = fe(null), R = fe(null), [F, D] = T(/* @__PURE__ */ new Set()), [_, E] = T(/* @__PURE__ */ new Set()), [W, j] = T(0), [w, K] = T(!1), [V, J] = T(1), N = ((Se = G(u, "interaction-metadata")) == null ? void 0 : Se.payload) || {}, A = ((ke = G(u, "interaction-context")) == null ? void 0 : ke.payload) || {}, M = ((we = G(u, "interaction-summary")) == null ? void 0 : we.payload) || {};
2644
2650
  (de = G(u, "interaction-scores")) != null && de.payload;
2645
2651
  const $ = ((pe = G(u, "interaction-signals")) == null ? void 0 : pe.payload) || {}, O = ((Ce = G(u, "interaction-guidance")) == null ? void 0 : Ce.payload) || {}, H = ((ze = G(u, "interaction-transcript")) == null ? void 0 : ze.payload) || {}, Y = ((ue = G(u, "interaction-nba")) == null ? void 0 : ue.payload) || {}, Z = ((((t = G(u, "interaction-dimensions")) == null ? void 0 : t.payload) || {}).dimensions || []).filter((r) => r.value), le = ((f = G(u, "interaction-outcome-lift")) == null ? void 0 : f.payload) || {}, te = oe(() => {
2646
2652
  var p;
@@ -2654,9 +2660,9 @@ function Tt({
2654
2660
  for (const h of $.signals || []) {
2655
2661
  const B = c[h.group] || {};
2656
2662
  for (const d of h.observations || [])
2657
- for (const W of d.evidence || [])
2658
- if ((p = W.turn_ids) != null && p.length)
2659
- for (const Q of W.turn_ids)
2663
+ for (const L of d.evidence || [])
2664
+ if ((p = L.turn_ids) != null && p.length)
2665
+ for (const Q of L.turn_ids)
2660
2666
  r[Q] || (r[Q] = []), r[Q].some((Ze) => Ze.label === (d.key || h.display_name || h.key)) || r[Q].push({
2661
2667
  label: d.key || h.display_name || h.key,
2662
2668
  reason: d.reason || d.explanation || "",
@@ -2666,8 +2672,8 @@ function Tt({
2666
2672
  }
2667
2673
  return r;
2668
2674
  }, [$.signals]), Te = ((v = H.messages) == null ? void 0 : v.map((r, c) => {
2669
- var W, Q;
2670
- const p = r.start ?? r.start_ms ? (r.start ?? r.start_ms) / 1e3 : 0, h = r.end ?? r.end_ms ? (r.end ?? r.end_ms) / 1e3 : p + 1, B = r.actor === "agent", d = B ? ((W = H.actor_map) == null ? void 0 : W.agent) || "Agent" : ((Q = H.actor_map) == null ? void 0 : Q.customer) || "Customer";
2675
+ var L, Q;
2676
+ const p = r.start ?? r.start_ms ? (r.start ?? r.start_ms) / 1e3 : 0, h = r.end ?? r.end_ms ? (r.end ?? r.end_ms) / 1e3 : p + 1, B = r.actor === "agent", d = B ? ((L = H.actor_map) == null ? void 0 : L.agent) || "Agent" : ((Q = H.actor_map) == null ? void 0 : Q.customer) || "Customer";
2671
2677
  return {
2672
2678
  startTime: p,
2673
2679
  endTime: h,
@@ -2675,16 +2681,16 @@ function Tt({
2675
2681
  actorColor: B ? "var(--rail-outcome)" : "var(--rail-discovery)"
2676
2682
  };
2677
2683
  })) || [], ne = oe(() => {
2678
- if (!w && F === 0)
2684
+ if (!w && W === 0)
2679
2685
  return -1;
2680
- const r = H.messages || [], c = F * 1e3;
2686
+ const r = H.messages || [], c = W * 1e3;
2681
2687
  for (let p = r.length - 1; p >= 0; p--) {
2682
2688
  const h = r[p].start ?? r[p].start_ms;
2683
2689
  if (h != null && c >= h)
2684
2690
  return p;
2685
2691
  }
2686
2692
  return -1;
2687
- }, [F, w, H.messages]), X = (r) => {
2693
+ }, [W, w, H.messages]), X = (r) => {
2688
2694
  x.current && (x.current.currentTime = r, j(r));
2689
2695
  }, se = () => {
2690
2696
  if (x.current)
@@ -2695,7 +2701,7 @@ function Tt({
2695
2701
  r !== void 0 && r.catch(() => {
2696
2702
  }), K(!0);
2697
2703
  }
2698
- }, V = () => {
2704
+ }, q = () => {
2699
2705
  x.current && (x.current.currentTime = Math.max(0, x.current.currentTime - 15));
2700
2706
  }, he = () => {
2701
2707
  if (x.current) {
@@ -2723,17 +2729,17 @@ function Tt({
2723
2729
  const B = p.play();
2724
2730
  if (B !== void 0 && B.catch(() => {
2725
2731
  }), R.current && (p.removeEventListener("timeupdate", R.current), R.current = null), c != null) {
2726
- const d = c / 1e3, W = () => {
2732
+ const d = c / 1e3, L = () => {
2727
2733
  p.currentTime >= d && (p.pause(), R.current && (p.removeEventListener("timeupdate", R.current), R.current = null));
2728
2734
  };
2729
- R.current = W, p.addEventListener("timeupdate", W);
2735
+ R.current = L, p.addEventListener("timeupdate", L);
2730
2736
  }
2731
2737
  }, ee = (r, c, p) => {
2732
2738
  const h = x.current;
2733
2739
  if (!h || r == null)
2734
2740
  return;
2735
- const B = r / 1e3, d = c != null ? c / 1e3 : B + 1, W = h.currentTime;
2736
- if (w && W >= B && (d == null || W <= d + 0.25)) {
2741
+ const B = r / 1e3, d = c != null ? c / 1e3 : B + 1, L = h.currentTime;
2742
+ if (w && L >= B && (d == null || L <= d + 0.25)) {
2737
2743
  h.pause();
2738
2744
  return;
2739
2745
  }
@@ -2742,12 +2748,12 @@ function Tt({
2742
2748
  const h = (H.messages || [])[c], B = x.current;
2743
2749
  if (!h || !B)
2744
2750
  return;
2745
- const d = h.start ?? h.start_ms, W = h.end ?? h.end_ms;
2751
+ const d = h.start ?? h.start_ms, L = h.end ?? h.end_ms;
2746
2752
  if (w && ne === c) {
2747
2753
  B.pause();
2748
2754
  return;
2749
2755
  }
2750
- d != null && U(d, W);
2756
+ d != null && U(d, L);
2751
2757
  }, re = (r) => {
2752
2758
  D(new Set(r));
2753
2759
  const c = document.getElementById("transcript-container");
@@ -2788,7 +2794,7 @@ function Tt({
2788
2794
  await I(r);
2789
2795
  return;
2790
2796
  }
2791
- }, We = s && Object.keys(s).length > 0 ? s : void 0;
2797
+ }, Le = s && Object.keys(s).length > 0 ? s : void 0;
2792
2798
  return /* @__PURE__ */ o("div", { style: { display: "flex", flexDirection: "column", gap: 10 }, children: [
2793
2799
  /* @__PURE__ */ o(
2794
2800
  "div",
@@ -2814,7 +2820,7 @@ function Tt({
2814
2820
  },
2815
2821
  children: [
2816
2822
  /* @__PURE__ */ e(
2817
- xt,
2823
+ mt,
2818
2824
  {
2819
2825
  title: ye,
2820
2826
  meta: N,
@@ -2825,7 +2831,7 @@ function Tt({
2825
2831
  ),
2826
2832
  /* @__PURE__ */ e(Xe, { outcomeLift: le }),
2827
2833
  (i || l || m) && /* @__PURE__ */ e(ae, { title: "Coaching Summary", children: /* @__PURE__ */ e(
2828
- ht,
2834
+ yt,
2829
2835
  {
2830
2836
  data: l,
2831
2837
  loading: i,
@@ -2873,29 +2879,29 @@ function Tt({
2873
2879
  },
2874
2880
  children: [
2875
2881
  xe === "signals" ? /* @__PURE__ */ e(
2876
- bt,
2882
+ vt,
2877
2883
  {
2878
2884
  signals: $,
2879
2885
  expandedSignals: _,
2880
2886
  toggleSignal: ie,
2881
2887
  playEvidence: ee,
2882
2888
  timelinePlaying: w,
2883
- currentTimeSeconds: F,
2889
+ currentTimeSeconds: W,
2884
2890
  highlightTurns: re,
2885
2891
  borderRadius: "0px 0px 12px 12px"
2886
2892
  }
2887
2893
  ) : /* @__PURE__ */ e(
2888
- vt,
2894
+ St,
2889
2895
  {
2890
2896
  guidance: O,
2891
2897
  playEvidence: ee,
2892
2898
  timelinePlaying: w,
2893
- currentTimeSeconds: F,
2899
+ currentTimeSeconds: W,
2894
2900
  highlightTurns: re,
2895
2901
  borderRadius: "0px 0px 12px 12px"
2896
2902
  }
2897
2903
  ),
2898
- /* @__PURE__ */ e(St, { nba: Y })
2904
+ /* @__PURE__ */ e(kt, { nba: Y })
2899
2905
  ]
2900
2906
  }
2901
2907
  )
@@ -2906,28 +2912,28 @@ function Tt({
2906
2912
  }
2907
2913
  ),
2908
2914
  /* @__PURE__ */ e(
2909
- kt,
2915
+ wt,
2910
2916
  {
2911
2917
  audioUrl: a,
2912
2918
  timelineSegments: Te,
2913
2919
  durationSeconds: N.duration_seconds,
2914
- currentTimeSeconds: F,
2920
+ currentTimeSeconds: W,
2915
2921
  timelinePlaying: w,
2916
- playbackRate: q,
2922
+ playbackRate: V,
2917
2923
  onSeek: X,
2918
2924
  onTogglePlay: se,
2919
- onSeekBack: V,
2925
+ onSeekBack: q,
2920
2926
  onSeekForward: he,
2921
2927
  onSetPlaybackRate: Ie,
2922
2928
  audioRef: x
2923
2929
  }
2924
2930
  ),
2925
2931
  /* @__PURE__ */ e(
2926
- wt,
2932
+ Ct,
2927
2933
  {
2928
2934
  transcript: H,
2929
2935
  audioUrl: a,
2930
- highlightedTurns: L,
2936
+ highlightedTurns: F,
2931
2937
  activeTurnIndex: ne,
2932
2938
  timelinePlaying: w,
2933
2939
  turnObservations: te,
@@ -2936,10 +2942,10 @@ function Tt({
2936
2942
  }
2937
2943
  ),
2938
2944
  /* @__PURE__ */ e(
2939
- zt,
2945
+ Tt,
2940
2946
  {
2941
2947
  sessionTitle: ye,
2942
- messageThread: We,
2948
+ messageThread: Le,
2943
2949
  currentUser: S,
2944
2950
  isLoading: g,
2945
2951
  onSendMessage: Ee,
@@ -2951,7 +2957,7 @@ function Tt({
2951
2957
  )
2952
2958
  ] });
2953
2959
  }
2954
- class It extends Ge.Component {
2960
+ class _t extends Ge.Component {
2955
2961
  constructor(a) {
2956
2962
  super(a), this.state = { hasError: !1 };
2957
2963
  }
@@ -2966,9 +2972,9 @@ class It extends Ge.Component {
2966
2972
  }
2967
2973
  }
2968
2974
  function qt(n) {
2969
- return /* @__PURE__ */ e(It, { fallback: /* @__PURE__ */ e("div", { style: { padding: 16, color: "var(--state-unknown)", fontSize: 12 }, children: "Error rendering detail." }), children: /* @__PURE__ */ e(Tt, { ...n }) });
2975
+ return /* @__PURE__ */ e(_t, { fallback: /* @__PURE__ */ e("div", { style: { padding: 16, color: "var(--state-unknown)", fontSize: 12 }, children: "Error rendering detail." }), children: /* @__PURE__ */ e(It, { ...n }) });
2970
2976
  }
2971
- function Vt({ pattern: n }) {
2977
+ function Jt({ pattern: n }) {
2972
2978
  const [a, l] = T(!1), s = {
2973
2979
  name: "Customer Escalation Likelihood",
2974
2980
  description: "Based on observed patterns, this session shows indicators consistent with potential escalation.",
@@ -3468,24 +3474,24 @@ function Vt({ pattern: n }) {
3468
3474
  }
3469
3475
  export {
3470
3476
  Xe as AgentLiftCard,
3471
- ht as CoachingSynthesisCard,
3472
- Zt as ConditionCard,
3477
+ yt as CoachingSynthesisCard,
3478
+ Xt as ConditionCard,
3473
3479
  Ye as EvidenceItem,
3474
- Vt as ExpandPatternComparison,
3475
- xt as InteractionContext,
3480
+ Jt as ExpandPatternComparison,
3481
+ mt as InteractionContext,
3476
3482
  qt as InteractionDetailPanel,
3477
- vt as InteractionGuidance,
3478
- St as InteractionNBA,
3479
- kt as InteractionRecording,
3480
- Gt as InteractionScores,
3481
- bt as InteractionSignals,
3482
- wt as InteractionTranscript,
3483
- Xt as ModelScoreCard,
3484
- Ut as ObservationCard,
3485
- en as ScoreDriverCard,
3486
- tn as ScoreDriverCardVariant,
3487
- nn as SignalCard,
3488
- rn as SmallObservationCard,
3489
- on as SummarySection
3483
+ St as InteractionGuidance,
3484
+ kt as InteractionNBA,
3485
+ wt as InteractionRecording,
3486
+ Vt as InteractionScores,
3487
+ vt as InteractionSignals,
3488
+ Ct as InteractionTranscript,
3489
+ Ut as ModelScoreCard,
3490
+ en as ObservationCard,
3491
+ tn as ScoreDriverCard,
3492
+ nn as ScoreDriverCardVariant,
3493
+ rn as SignalCard,
3494
+ on as SmallObservationCard,
3495
+ an as SummarySection
3490
3496
  };
3491
3497
  //# sourceMappingURL=interactionDetails.es.js.map