@edvak99/voice-receptionist-widget 1.1.2 → 1.1.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 (60) hide show
  1. package/README.md +3 -0
  2. package/fesm2022/{edvak99-voice-receptionist-widget-analytics-page.component-CW5OKmik.mjs → edvak99-voice-receptionist-widget-analytics-page.component-Dsujn5az.mjs} +4 -4
  3. package/fesm2022/{edvak99-voice-receptionist-widget-analytics-page.component-CW5OKmik.mjs.map → edvak99-voice-receptionist-widget-analytics-page.component-Dsujn5az.mjs.map} +1 -1
  4. package/fesm2022/edvak99-voice-receptionist-widget-audit-page.component-xoLlHj8K.mjs +67 -0
  5. package/fesm2022/edvak99-voice-receptionist-widget-audit-page.component-xoLlHj8K.mjs.map +1 -0
  6. package/fesm2022/{edvak99-voice-receptionist-widget-call-history-detail-page.component-CTwfUHUf.mjs → edvak99-voice-receptionist-widget-call-history-detail-page.component-2K9W77As.mjs} +11 -11
  7. package/fesm2022/{edvak99-voice-receptionist-widget-call-history-detail-page.component-CTwfUHUf.mjs.map → edvak99-voice-receptionist-widget-call-history-detail-page.component-2K9W77As.mjs.map} +1 -1
  8. package/fesm2022/{edvak99-voice-receptionist-widget-call-history-page.component-Cj4wxd4e.mjs → edvak99-voice-receptionist-widget-call-history-page.component-B5AnEjoh.mjs} +62 -26
  9. package/fesm2022/edvak99-voice-receptionist-widget-call-history-page.component-B5AnEjoh.mjs.map +1 -0
  10. package/fesm2022/{edvak99-voice-receptionist-widget-call-recording-player.component-AN6GcSDq.mjs → edvak99-voice-receptionist-widget-call-recording-player.component-B8_qp7Fe.mjs} +4 -4
  11. package/fesm2022/{edvak99-voice-receptionist-widget-call-recording-player.component-AN6GcSDq.mjs.map → edvak99-voice-receptionist-widget-call-recording-player.component-B8_qp7Fe.mjs.map} +1 -1
  12. package/fesm2022/{edvak99-voice-receptionist-widget-call-review.service-Cy_Bf7AO.mjs → edvak99-voice-receptionist-widget-call-review.service-Cj2XTeK4.mjs} +2 -2
  13. package/fesm2022/{edvak99-voice-receptionist-widget-call-review.service-Cy_Bf7AO.mjs.map → edvak99-voice-receptionist-widget-call-review.service-Cj2XTeK4.mjs.map} +1 -1
  14. package/fesm2022/{edvak99-voice-receptionist-widget-call-review.util-DQLIw7xb.mjs → edvak99-voice-receptionist-widget-call-review.util-BgsBCKgZ.mjs} +2 -2
  15. package/fesm2022/{edvak99-voice-receptionist-widget-call-review.util-DQLIw7xb.mjs.map → edvak99-voice-receptionist-widget-call-review.util-BgsBCKgZ.mjs.map} +1 -1
  16. package/fesm2022/{edvak99-voice-receptionist-widget-dashboard-page.component-DzdIt2A7.mjs → edvak99-voice-receptionist-widget-dashboard-page.component-BNdnbAVM.mjs} +10 -10
  17. package/fesm2022/{edvak99-voice-receptionist-widget-dashboard-page.component-DzdIt2A7.mjs.map → edvak99-voice-receptionist-widget-dashboard-page.component-BNdnbAVM.mjs.map} +1 -1
  18. package/fesm2022/{edvak99-voice-receptionist-widget-eds-avatar.component-PCnIWeOA.mjs → edvak99-voice-receptionist-widget-eds-avatar.component-CbphhP6o.mjs} +3 -3
  19. package/fesm2022/{edvak99-voice-receptionist-widget-eds-avatar.component-PCnIWeOA.mjs.map → edvak99-voice-receptionist-widget-eds-avatar.component-CbphhP6o.mjs.map} +1 -1
  20. package/fesm2022/{edvak99-voice-receptionist-widget-eds-elapsed.pipe-ouRlPpwT.mjs → edvak99-voice-receptionist-widget-eds-elapsed.pipe-BgLsnq6A.mjs} +2 -2
  21. package/fesm2022/{edvak99-voice-receptionist-widget-eds-elapsed.pipe-ouRlPpwT.mjs.map → edvak99-voice-receptionist-widget-eds-elapsed.pipe-BgLsnq6A.mjs.map} +1 -1
  22. package/fesm2022/{edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-CMhknpGf.mjs → edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-Dn0GrZ6_.mjs} +106 -48
  23. package/fesm2022/edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-Dn0GrZ6_.mjs.map +1 -0
  24. package/fesm2022/{edvak99-voice-receptionist-widget-knowledge-hub.page-cZqBuull.mjs → edvak99-voice-receptionist-widget-knowledge-hub.page-BngGx_Lc.mjs} +70 -36
  25. package/fesm2022/edvak99-voice-receptionist-widget-knowledge-hub.page-BngGx_Lc.mjs.map +1 -0
  26. package/fesm2022/{edvak99-voice-receptionist-widget-live-calls-list.service-CDtFRW8w.mjs → edvak99-voice-receptionist-widget-live-calls-list.service-0kGWO6sh.mjs} +3 -3
  27. package/fesm2022/{edvak99-voice-receptionist-widget-live-calls-list.service-CDtFRW8w.mjs.map → edvak99-voice-receptionist-widget-live-calls-list.service-0kGWO6sh.mjs.map} +1 -1
  28. package/fesm2022/{edvak99-voice-receptionist-widget-live-calls-page.component-DrYzXJQW.mjs → edvak99-voice-receptionist-widget-live-calls-page.component-DfLmK89M.mjs} +7 -7
  29. package/fesm2022/{edvak99-voice-receptionist-widget-live-calls-page.component-DrYzXJQW.mjs.map → edvak99-voice-receptionist-widget-live-calls-page.component-DfLmK89M.mjs.map} +1 -1
  30. package/fesm2022/{edvak99-voice-receptionist-widget-live-monitor-page.component-D7dlk0y2.mjs → edvak99-voice-receptionist-widget-live-monitor-page.component-DNpLFqBw.mjs} +11 -11
  31. package/fesm2022/{edvak99-voice-receptionist-widget-live-monitor-page.component-D7dlk0y2.mjs.map → edvak99-voice-receptionist-widget-live-monitor-page.component-DNpLFqBw.mjs.map} +1 -1
  32. package/fesm2022/{edvak99-voice-receptionist-widget-outbound-purposes-page.component-CJ8NEjcj.mjs → edvak99-voice-receptionist-widget-outbound-purposes-page.component-CYSZ832p.mjs} +6 -6
  33. package/fesm2022/{edvak99-voice-receptionist-widget-outbound-purposes-page.component-CJ8NEjcj.mjs.map → edvak99-voice-receptionist-widget-outbound-purposes-page.component-CYSZ832p.mjs.map} +1 -1
  34. package/fesm2022/{edvak99-voice-receptionist-widget-settings-page.component-Bo3XNK3b.mjs → edvak99-voice-receptionist-widget-settings-page.component-B9nv6wtB.mjs} +4 -4
  35. package/fesm2022/{edvak99-voice-receptionist-widget-settings-page.component-Bo3XNK3b.mjs.map → edvak99-voice-receptionist-widget-settings-page.component-B9nv6wtB.mjs.map} +1 -1
  36. package/fesm2022/{edvak99-voice-receptionist-widget-tasks-page.component-CBwl15NP.mjs → edvak99-voice-receptionist-widget-tasks-page.component-DXxjMVUv.mjs} +40 -11
  37. package/fesm2022/edvak99-voice-receptionist-widget-tasks-page.component-DXxjMVUv.mjs.map +1 -0
  38. package/fesm2022/{edvak99-voice-receptionist-widget-wizard-page.component-CJLa5pia.mjs → edvak99-voice-receptionist-widget-wizard-page.component-C1Z6yC0q.mjs} +4 -4
  39. package/fesm2022/{edvak99-voice-receptionist-widget-wizard-page.component-CJLa5pia.mjs.map → edvak99-voice-receptionist-widget-wizard-page.component-C1Z6yC0q.mjs.map} +1 -1
  40. package/fesm2022/edvak99-voice-receptionist-widget.mjs +1 -1
  41. package/lib/knowledge/models/practice-faq.model.d.ts +3 -0
  42. package/lib/knowledge/pages/knowledge-hub.page.d.ts +8 -1
  43. package/lib/knowledge/services/practice-faq-api.service.d.ts +6 -2
  44. package/lib/models/ai-receptionist.types.d.ts +1 -0
  45. package/lib/models/pagination.d.ts +11 -0
  46. package/lib/pages/audit-page/audit-page.component.d.ts +7 -0
  47. package/lib/pages/call-history-page/call-history-page.component.d.ts +7 -3
  48. package/lib/pages/tasks-page/tasks-page.component.d.ts +6 -0
  49. package/lib/services/ai-receptionist-api.mock.d.ts +10 -9
  50. package/lib/services/ai-receptionist-api.service.d.ts +9 -9
  51. package/package.json +1 -1
  52. package/styles/_index.scss +5 -40
  53. package/styles/chat-ui.scss +18 -18
  54. package/styles/eds.scss +135 -95
  55. package/fesm2022/edvak99-voice-receptionist-widget-audit-page.component-DL1GfQyF.mjs +0 -35
  56. package/fesm2022/edvak99-voice-receptionist-widget-audit-page.component-DL1GfQyF.mjs.map +0 -1
  57. package/fesm2022/edvak99-voice-receptionist-widget-call-history-page.component-Cj4wxd4e.mjs.map +0 -1
  58. package/fesm2022/edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-CMhknpGf.mjs.map +0 -1
  59. package/fesm2022/edvak99-voice-receptionist-widget-knowledge-hub.page-cZqBuull.mjs.map +0 -1
  60. package/fesm2022/edvak99-voice-receptionist-widget-tasks-page.component-CBwl15NP.mjs.map +0 -1
@@ -4,10 +4,10 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { ActivatedRoute, RouterLink } from '@angular/router';
5
5
  import * as i1 from '@angular/forms';
6
6
  import { FormsModule } from '@angular/forms';
7
- import { r as resolveToolKey, d as resolveToolDisplayName, V as VOICE_RECEPTIONIST_CONFIG, b as EdsIconComponent, A as AiReceptionistApiService, t as toolEventTrackKey } from './edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-CMhknpGf.mjs';
8
- import { D as DashboardSocketService, E as EdsElapsedPipe } from './edvak99-voice-receptionist-widget-eds-elapsed.pipe-ouRlPpwT.mjs';
9
- import { C as CallRecordingPlayerComponent } from './edvak99-voice-receptionist-widget-call-recording-player.component-AN6GcSDq.mjs';
10
- import { E as EdsAvatarComponent } from './edvak99-voice-receptionist-widget-eds-avatar.component-PCnIWeOA.mjs';
7
+ import { r as resolveToolKey, d as resolveToolDisplayName, V as VOICE_RECEPTIONIST_CONFIG, b as EdsIconComponent, A as AiReceptionistApiService, t as toolEventTrackKey } from './edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-Dn0GrZ6_.mjs';
8
+ import { D as DashboardSocketService, E as EdsElapsedPipe } from './edvak99-voice-receptionist-widget-eds-elapsed.pipe-BgLsnq6A.mjs';
9
+ import { C as CallRecordingPlayerComponent } from './edvak99-voice-receptionist-widget-call-recording-player.component-B8_qp7Fe.mjs';
10
+ import { E as EdsAvatarComponent } from './edvak99-voice-receptionist-widget-eds-avatar.component-CbphhP6o.mjs';
11
11
 
12
12
  function mapChunkToLine(chunk) {
13
13
  const at = Date.parse(chunk.timestamp);
@@ -280,7 +280,7 @@ class EdsWaveformComponent {
280
280
  <span class="eds-waveform__bar" [style.animation-delay.ms]="i * 70"></span>
281
281
  }
282
282
  </div>
283
- `, isInline: true, styles: [".eds-waveform{display:flex;align-items:flex-end;gap:3px;height:20px}.eds-waveform__bar{width:3px;height:100%;border-radius:3px;transform-origin:bottom;animation:eds-wave 1.1s ease-in-out infinite}.eds-waveform[data-tone=brand] .eds-waveform__bar{background:var(--brand-400, #5aa3f6)}.eds-waveform[data-tone=violet] .eds-waveform__bar{background:var(--violet-400, #a684ff)}.eds-waveform--inactive .eds-waveform__bar{height:4px;opacity:.3;animation:none;align-self:flex-end}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
283
+ `, isInline: true, styles: [".eds-waveform{display:flex;align-items:flex-end;gap:3px;height:20px}.eds-waveform__bar{width:3px;height:100%;border-radius:3px;transform-origin:bottom;animation:eds-wave 1.1s ease-in-out infinite}.eds-waveform[data-tone=brand] .eds-waveform__bar{background:var(--eds-brand-400, #5aa3f6)}.eds-waveform[data-tone=violet] .eds-waveform__bar{background:var(--eds-violet-400, #a684ff)}.eds-waveform--inactive .eds-waveform__bar{height:4px;opacity:.3;animation:none;align-self:flex-end}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
284
284
  }
285
285
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EdsWaveformComponent, decorators: [{
286
286
  type: Component,
@@ -295,7 +295,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
295
295
  <span class="eds-waveform__bar" [style.animation-delay.ms]="i * 70"></span>
296
296
  }
297
297
  </div>
298
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".eds-waveform{display:flex;align-items:flex-end;gap:3px;height:20px}.eds-waveform__bar{width:3px;height:100%;border-radius:3px;transform-origin:bottom;animation:eds-wave 1.1s ease-in-out infinite}.eds-waveform[data-tone=brand] .eds-waveform__bar{background:var(--brand-400, #5aa3f6)}.eds-waveform[data-tone=violet] .eds-waveform__bar{background:var(--violet-400, #a684ff)}.eds-waveform--inactive .eds-waveform__bar{height:4px;opacity:.3;animation:none;align-self:flex-end}\n"] }]
298
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".eds-waveform{display:flex;align-items:flex-end;gap:3px;height:20px}.eds-waveform__bar{width:3px;height:100%;border-radius:3px;transform-origin:bottom;animation:eds-wave 1.1s ease-in-out infinite}.eds-waveform[data-tone=brand] .eds-waveform__bar{background:var(--eds-brand-400, #5aa3f6)}.eds-waveform[data-tone=violet] .eds-waveform__bar{background:var(--eds-violet-400, #a684ff)}.eds-waveform--inactive .eds-waveform__bar{height:4px;opacity:.3;animation:none;align-self:flex-end}\n"] }]
299
299
  }] });
300
300
 
301
301
  class LiveTranscriptPanelComponent {
@@ -397,11 +397,11 @@ class LiveTranscriptPanelComponent {
397
397
  this.shouldScroll = true;
398
398
  }
399
399
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LiveTranscriptPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
400
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: LiveTranscriptPanelComponent, isStandalone: true, selector: "eds-live-transcript-panel", inputs: { live: { classPropertyName: "live", publicName: "live", isSignal: true, isRequired: false, transformFunction: null }, paused: { classPropertyName: "paused", publicName: "paused", isSignal: true, isRequired: false, transformFunction: null }, humanTakeover: { classPropertyName: "humanTakeover", publicName: "humanTakeover", isSignal: true, isRequired: false, transformFunction: null }, showStaffInput: { classPropertyName: "showStaffInput", publicName: "showStaffInput", isSignal: true, isRequired: false, transformFunction: null }, staffMessage: { classPropertyName: "staffMessage", publicName: "staffMessage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { staffMessageChange: "staffMessageChange", sendMessage: "sendMessage" }, viewQueries: [{ propertyName: "scrollHost", first: true, predicate: ["scrollHost"], descendants: true }], ngImport: i0, template: "<section class=\"live-transcript-panel\" aria-labelledby=\"live-transcript-title\">\n <header class=\"live-transcript-panel__header\">\n <h2 id=\"live-transcript-title\" class=\"live-transcript-panel__title\">Live transcript</h2>\n <div class=\"live-transcript-panel__rec\">\n <eds-waveform [active]=\"waveformActive()\" [tone]=\"waveformTone()\" />\n <span class=\"live-transcript-panel__rec-label\">{{ recLabel() }}</span>\n </div>\n </header>\n\n <div #scrollHost class=\"live-transcript-panel__scroll\" role=\"log\" aria-live=\"polite\">\n @for (line of lines(); track $index) {\n @if (line.who === 'system') {\n <div class=\"live-transcript-panel__system eds-animate-fade-up\" [class]=\"systemClass(line.flag)\">\n <eds-icon [name]=\"systemIcon(line.flag)\" [size]=\"14\" />\n <span>{{ line.text }}</span>\n </div>\n } @else {\n <article class=\"live-transcript-panel__msg eds-animate-fade-up\" [class]=\"msgClass(line.who)\">\n <div class=\"live-transcript-panel__avatar\" [class]=\"avatarClass(line.who)\">\n <eds-icon [name]=\"speakerIcon(line.who)\" [size]=\"16\" />\n </div>\n <div class=\"live-transcript-panel__content\">\n <span class=\"live-transcript-panel__label\">{{ roleLabel(line.who) }}</span>\n <div class=\"live-transcript-panel__bubble\">\n <p>{{ line.text }}</p>\n </div>\n </div>\n </article>\n }\n }\n\n @if (patientInterim(); as interim) {\n <article class=\"live-transcript-panel__msg live-transcript-panel__msg--patient eds-animate-fade-up\">\n <div class=\"live-transcript-panel__avatar live-transcript-panel__avatar--patient\">\n <eds-icon name=\"person\" [size]=\"16\" />\n </div>\n <div class=\"live-transcript-panel__content\">\n <span class=\"live-transcript-panel__label\">Patient \u00B7 listening</span>\n <div class=\"live-transcript-panel__bubble live-transcript-panel__bubble--interim\">\n <p>{{ interim }}</p>\n </div>\n </div>\n </article>\n }\n\n @if (aiInterim(); as interim) {\n <article class=\"live-transcript-panel__msg live-transcript-panel__msg--ai eds-animate-fade-up\">\n <div class=\"live-transcript-panel__avatar live-transcript-panel__avatar--ai\">\n <eds-icon name=\"graphic_eq\" [size]=\"16\" />\n </div>\n <div class=\"live-transcript-panel__content\">\n <span class=\"live-transcript-panel__label\">Ava \u00B7 AI</span>\n <div class=\"live-transcript-panel__bubble live-transcript-panel__bubble--interim\">\n <p>{{ interim }}<span class=\"live-transcript-panel__caret\" aria-hidden=\"true\"></span></p>\n </div>\n </div>\n </article>\n }\n\n @if (lines().length === 0 && !patientInterim() && !aiInterim()) {\n <p class=\"live-transcript-panel__empty\">Waiting for conversation\u2026</p>\n }\n </div>\n\n @if (showStaffInput()) {\n <footer class=\"live-transcript-panel__footer\">\n <input\n type=\"text\"\n class=\"live-transcript-panel__input\"\n placeholder=\"Type to speak as staff\u2026\"\n [ngModel]=\"staffMessage()\"\n (ngModelChange)=\"onStaffInput($event)\"\n (keyup.enter)=\"onSend()\"\n />\n <button type=\"button\" class=\"live-transcript-panel__send\" (click)=\"onSend()\">\n <eds-icon name=\"send\" [size]=\"18\" />\n Send\n </button>\n </footer>\n }\n</section>\n", styles: [".live-transcript-panel{display:flex;flex-direction:column;min-height:0;height:calc(100vh - 234px);min-height:460px;background:var(--slate-900);border:1px solid var(--slate-800);border-radius:var(--radius-lg)}.live-transcript-panel__header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--slate-800);flex-shrink:0}.live-transcript-panel__title{margin:0;font:600 11px/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--slate-400)}.live-transcript-panel__rec{display:flex;align-items:center;gap:10px}.live-transcript-panel__rec-label{font:600 11px/1 var(--font-mono);letter-spacing:.06em;color:var(--slate-500)}.live-transcript-panel__scroll{flex:1;overflow:auto;padding:18px;display:flex;flex-direction:column;gap:14px}.live-transcript-panel__empty{margin:0;text-align:center;padding:32px 12px;font:400 13px/1.4 var(--font-body);color:var(--slate-500)}.live-transcript-panel__system{align-self:center;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--radius-pill);border:1px solid var(--slate-800);font:500 12px/1 var(--font-mono);max-width:90%;text-align:center}.live-transcript-panel__system--verify{color:var(--green-400);background:#0abf521a;border-color:#0abf524d}.live-transcript-panel__system--warn{color:var(--amber-300);background:#fe9a001a;border-color:#fe9a004d}.live-transcript-panel__system--info{color:var(--slate-300);background:var(--slate-900);border-color:var(--slate-800)}.live-transcript-panel__msg{display:flex;gap:10px;max-width:560px}.live-transcript-panel__msg--ai,.live-transcript-panel__msg--staff{margin-left:auto;flex-direction:row-reverse}.live-transcript-panel__msg--ai .live-transcript-panel__content,.live-transcript-panel__msg--staff .live-transcript-panel__content{align-items:flex-end}.live-transcript-panel__msg--ai .live-transcript-panel__bubble,.live-transcript-panel__msg--staff .live-transcript-panel__bubble{border-radius:12px 4px 12px 12px}.live-transcript-panel__msg--typing .live-transcript-panel__bubble{padding:12px 16px}.live-transcript-panel__avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#fff}.live-transcript-panel__avatar--ai{background:linear-gradient(135deg,var(--brand-500),var(--violet-500))}.live-transcript-panel__avatar--staff{background:#8e51ff2e;color:var(--violet-400);border:1px solid rgba(142,81,255,.35)}.live-transcript-panel__avatar--patient{background:var(--slate-800);color:var(--slate-400)}.live-transcript-panel__content{display:flex;flex-direction:column;gap:4px;min-width:0}.live-transcript-panel__label{font:600 11px/1 var(--font-mono);letter-spacing:.04em;color:var(--slate-500)}.live-transcript-panel__msg--ai .live-transcript-panel__label{color:var(--brand-400)}.live-transcript-panel__msg--staff .live-transcript-panel__label{color:var(--purple-300)}.live-transcript-panel__bubble{padding:9px 13px;border-radius:4px 12px 12px;background:#3681f41f;border:1px solid rgba(54,129,244,.28)}.live-transcript-panel__bubble p{margin:0;font:400 13px/19px var(--font-sans);color:var(--gray-100)}.live-transcript-panel__bubble--interim{opacity:.85;font-style:italic}.live-transcript-panel__msg--patient .live-transcript-panel__bubble{background:var(--slate-900);border-color:var(--slate-800)}.live-transcript-panel__msg--staff .live-transcript-panel__bubble{background:#8e51ff24;border-color:#8e51ff4d}.live-transcript-panel__msg--staff .live-transcript-panel__bubble p{color:var(--purple-300)}.live-transcript-panel__caret{display:inline-block;width:7px;height:14px;margin-left:2px;vertical-align:text-bottom;background:var(--brand-400);animation:eds-caret 1s step-end infinite}.live-transcript-panel__dots{display:inline-flex;align-items:center;gap:5px;height:14px}.live-transcript-panel__dots span{width:6px;height:6px;border-radius:50%;background:var(--brand-400);animation:eds-blink 1.4s ease-in-out infinite}.live-transcript-panel__dots span:nth-child(2){animation-delay:.2s}.live-transcript-panel__dots span:nth-child(3){animation-delay:.4s}.live-transcript-panel__footer{display:flex;gap:8px;padding:12px;border-top:1px solid var(--slate-800);flex-shrink:0}.live-transcript-panel__input{flex:1;height:38px;padding:0 14px;border-radius:var(--radius-md);border:1px solid var(--slate-700);background:var(--slate-950);color:var(--gray-100);font:400 13px/1 var(--font-sans)}.live-transcript-panel__input::placeholder{color:var(--slate-500)}.live-transcript-panel__input:focus{outline:none;border-color:var(--violet-400)}.live-transcript-panel__send{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 14px;border:none;border-radius:var(--radius-md);background:#8e51ff38;color:var(--purple-300);font:600 13px/1 var(--font-sans);cursor:pointer}.live-transcript-panel__send:hover{background:var(--violet-500);color:#fff}@media(max-width:900px){.live-transcript-panel{height:auto;min-height:360px;max-height:60vh}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: EdsIconComponent, selector: "eds-icon", inputs: ["name", "size", "fill", "weight"] }, { kind: "component", type: EdsWaveformComponent, selector: "eds-waveform", inputs: ["active", "tone"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
400
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: LiveTranscriptPanelComponent, isStandalone: true, selector: "eds-live-transcript-panel", inputs: { live: { classPropertyName: "live", publicName: "live", isSignal: true, isRequired: false, transformFunction: null }, paused: { classPropertyName: "paused", publicName: "paused", isSignal: true, isRequired: false, transformFunction: null }, humanTakeover: { classPropertyName: "humanTakeover", publicName: "humanTakeover", isSignal: true, isRequired: false, transformFunction: null }, showStaffInput: { classPropertyName: "showStaffInput", publicName: "showStaffInput", isSignal: true, isRequired: false, transformFunction: null }, staffMessage: { classPropertyName: "staffMessage", publicName: "staffMessage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { staffMessageChange: "staffMessageChange", sendMessage: "sendMessage" }, viewQueries: [{ propertyName: "scrollHost", first: true, predicate: ["scrollHost"], descendants: true }], ngImport: i0, template: "<section class=\"live-transcript-panel\" aria-labelledby=\"live-transcript-title\">\n <header class=\"live-transcript-panel__header\">\n <h2 id=\"live-transcript-title\" class=\"live-transcript-panel__title\">Live transcript</h2>\n <div class=\"live-transcript-panel__rec\">\n <eds-waveform [active]=\"waveformActive()\" [tone]=\"waveformTone()\" />\n <span class=\"live-transcript-panel__rec-label\">{{ recLabel() }}</span>\n </div>\n </header>\n\n <div #scrollHost class=\"live-transcript-panel__scroll\" role=\"log\" aria-live=\"polite\">\n @for (line of lines(); track $index) {\n @if (line.who === 'system') {\n <div class=\"live-transcript-panel__system eds-animate-fade-up\" [class]=\"systemClass(line.flag)\">\n <eds-icon [name]=\"systemIcon(line.flag)\" [size]=\"14\" />\n <span>{{ line.text }}</span>\n </div>\n } @else {\n <article class=\"live-transcript-panel__msg eds-animate-fade-up\" [class]=\"msgClass(line.who)\">\n <div class=\"live-transcript-panel__avatar\" [class]=\"avatarClass(line.who)\">\n <eds-icon [name]=\"speakerIcon(line.who)\" [size]=\"16\" />\n </div>\n <div class=\"live-transcript-panel__content\">\n <span class=\"live-transcript-panel__label\">{{ roleLabel(line.who) }}</span>\n <div class=\"live-transcript-panel__bubble\">\n <p>{{ line.text }}</p>\n </div>\n </div>\n </article>\n }\n }\n\n @if (patientInterim(); as interim) {\n <article class=\"live-transcript-panel__msg live-transcript-panel__msg--patient eds-animate-fade-up\">\n <div class=\"live-transcript-panel__avatar live-transcript-panel__avatar--patient\">\n <eds-icon name=\"person\" [size]=\"16\" />\n </div>\n <div class=\"live-transcript-panel__content\">\n <span class=\"live-transcript-panel__label\">Patient \u00B7 listening</span>\n <div class=\"live-transcript-panel__bubble live-transcript-panel__bubble--interim\">\n <p>{{ interim }}</p>\n </div>\n </div>\n </article>\n }\n\n @if (aiInterim(); as interim) {\n <article class=\"live-transcript-panel__msg live-transcript-panel__msg--ai eds-animate-fade-up\">\n <div class=\"live-transcript-panel__avatar live-transcript-panel__avatar--ai\">\n <eds-icon name=\"graphic_eq\" [size]=\"16\" />\n </div>\n <div class=\"live-transcript-panel__content\">\n <span class=\"live-transcript-panel__label\">Ava \u00B7 AI</span>\n <div class=\"live-transcript-panel__bubble live-transcript-panel__bubble--interim\">\n <p>{{ interim }}<span class=\"live-transcript-panel__caret\" aria-hidden=\"true\"></span></p>\n </div>\n </div>\n </article>\n }\n\n @if (lines().length === 0 && !patientInterim() && !aiInterim()) {\n <p class=\"live-transcript-panel__empty\">Waiting for conversation\u2026</p>\n }\n </div>\n\n @if (showStaffInput()) {\n <footer class=\"live-transcript-panel__footer\">\n <input\n type=\"text\"\n class=\"live-transcript-panel__input\"\n placeholder=\"Type to speak as staff\u2026\"\n [ngModel]=\"staffMessage()\"\n (ngModelChange)=\"onStaffInput($event)\"\n (keyup.enter)=\"onSend()\"\n />\n <button type=\"button\" class=\"live-transcript-panel__send\" (click)=\"onSend()\">\n <eds-icon name=\"send\" [size]=\"18\" />\n Send\n </button>\n </footer>\n }\n</section>\n", styles: [".live-transcript-panel{display:flex;flex-direction:column;min-height:0;height:calc(100vh - 234px);min-height:460px;background:var(--eds-slate-900);border:1px solid var(--eds-slate-800);border-radius:var(--eds-radius-lg)}.live-transcript-panel__header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--eds-slate-800);flex-shrink:0}.live-transcript-panel__title{margin:0;font:600 11px/1 var(--eds-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--eds-slate-400)}.live-transcript-panel__rec{display:flex;align-items:center;gap:10px}.live-transcript-panel__rec-label{font:600 11px/1 var(--eds-font-mono);letter-spacing:.06em;color:var(--eds-slate-500)}.live-transcript-panel__scroll{flex:1;overflow:auto;padding:18px;display:flex;flex-direction:column;gap:14px}.live-transcript-panel__empty{margin:0;text-align:center;padding:32px 12px;font:400 13px/1.4 var(--eds-font-body);color:var(--eds-slate-500)}.live-transcript-panel__system{align-self:center;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--eds-radius-pill);border:1px solid var(--eds-slate-800);font:500 12px/1 var(--eds-font-mono);max-width:90%;text-align:center}.live-transcript-panel__system--verify{color:var(--eds-green-400);background:#0abf521a;border-color:#0abf524d}.live-transcript-panel__system--warn{color:var(--eds-amber-300);background:#fe9a001a;border-color:#fe9a004d}.live-transcript-panel__system--info{color:var(--eds-slate-300);background:var(--eds-slate-900);border-color:var(--eds-slate-800)}.live-transcript-panel__msg{display:flex;gap:10px;max-width:560px}.live-transcript-panel__msg--ai,.live-transcript-panel__msg--staff{margin-left:auto;flex-direction:row-reverse}.live-transcript-panel__msg--ai .live-transcript-panel__content,.live-transcript-panel__msg--staff .live-transcript-panel__content{align-items:flex-end}.live-transcript-panel__msg--ai .live-transcript-panel__bubble,.live-transcript-panel__msg--staff .live-transcript-panel__bubble{border-radius:12px 4px 12px 12px}.live-transcript-panel__msg--typing .live-transcript-panel__bubble{padding:12px 16px}.live-transcript-panel__avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#fff}.live-transcript-panel__avatar--ai{background:linear-gradient(135deg,var(--eds-brand-500),var(--eds-violet-500))}.live-transcript-panel__avatar--staff{background:#8e51ff2e;color:var(--eds-violet-400);border:1px solid rgba(142,81,255,.35)}.live-transcript-panel__avatar--patient{background:var(--eds-slate-800);color:var(--eds-slate-400)}.live-transcript-panel__content{display:flex;flex-direction:column;gap:4px;min-width:0}.live-transcript-panel__label{font:600 11px/1 var(--eds-font-mono);letter-spacing:.04em;color:var(--eds-slate-500)}.live-transcript-panel__msg--ai .live-transcript-panel__label{color:var(--eds-brand-400)}.live-transcript-panel__msg--staff .live-transcript-panel__label{color:var(--eds-purple-300)}.live-transcript-panel__bubble{padding:9px 13px;border-radius:4px 12px 12px;background:#3681f41f;border:1px solid rgba(54,129,244,.28)}.live-transcript-panel__bubble p{margin:0;font:400 13px/19px var(--eds-font-sans);color:var(--eds-gray-100)}.live-transcript-panel__bubble--interim{opacity:.85;font-style:italic}.live-transcript-panel__msg--patient .live-transcript-panel__bubble{background:var(--eds-slate-900);border-color:var(--eds-slate-800)}.live-transcript-panel__msg--staff .live-transcript-panel__bubble{background:#8e51ff24;border-color:#8e51ff4d}.live-transcript-panel__msg--staff .live-transcript-panel__bubble p{color:var(--eds-purple-300)}.live-transcript-panel__caret{display:inline-block;width:7px;height:14px;margin-left:2px;vertical-align:text-bottom;background:var(--eds-brand-400);animation:eds-caret 1s step-end infinite}.live-transcript-panel__dots{display:inline-flex;align-items:center;gap:5px;height:14px}.live-transcript-panel__dots span{width:6px;height:6px;border-radius:50%;background:var(--eds-brand-400);animation:eds-blink 1.4s ease-in-out infinite}.live-transcript-panel__dots span:nth-child(2){animation-delay:.2s}.live-transcript-panel__dots span:nth-child(3){animation-delay:.4s}.live-transcript-panel__footer{display:flex;gap:8px;padding:12px;border-top:1px solid var(--eds-slate-800);flex-shrink:0}.live-transcript-panel__input{flex:1;height:38px;padding:0 14px;border-radius:var(--eds-radius-md);border:1px solid var(--eds-slate-700);background:var(--eds-slate-950);color:var(--eds-gray-100);font:400 13px/1 var(--eds-font-sans)}.live-transcript-panel__input::placeholder{color:var(--eds-slate-500)}.live-transcript-panel__input:focus{outline:none;border-color:var(--eds-violet-400)}.live-transcript-panel__send{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 14px;border:none;border-radius:var(--eds-radius-md);background:#8e51ff38;color:var(--eds-purple-300);font:600 13px/1 var(--eds-font-sans);cursor:pointer}.live-transcript-panel__send:hover{background:var(--eds-violet-500);color:#fff}@media(max-width:900px){.live-transcript-panel{height:auto;min-height:360px;max-height:60vh}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: EdsIconComponent, selector: "eds-icon", inputs: ["name", "size", "fill", "weight"] }, { kind: "component", type: EdsWaveformComponent, selector: "eds-waveform", inputs: ["active", "tone"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
401
401
  }
402
402
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LiveTranscriptPanelComponent, decorators: [{
403
403
  type: Component,
404
- args: [{ selector: 'eds-live-transcript-panel', imports: [FormsModule, EdsIconComponent, EdsWaveformComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"live-transcript-panel\" aria-labelledby=\"live-transcript-title\">\n <header class=\"live-transcript-panel__header\">\n <h2 id=\"live-transcript-title\" class=\"live-transcript-panel__title\">Live transcript</h2>\n <div class=\"live-transcript-panel__rec\">\n <eds-waveform [active]=\"waveformActive()\" [tone]=\"waveformTone()\" />\n <span class=\"live-transcript-panel__rec-label\">{{ recLabel() }}</span>\n </div>\n </header>\n\n <div #scrollHost class=\"live-transcript-panel__scroll\" role=\"log\" aria-live=\"polite\">\n @for (line of lines(); track $index) {\n @if (line.who === 'system') {\n <div class=\"live-transcript-panel__system eds-animate-fade-up\" [class]=\"systemClass(line.flag)\">\n <eds-icon [name]=\"systemIcon(line.flag)\" [size]=\"14\" />\n <span>{{ line.text }}</span>\n </div>\n } @else {\n <article class=\"live-transcript-panel__msg eds-animate-fade-up\" [class]=\"msgClass(line.who)\">\n <div class=\"live-transcript-panel__avatar\" [class]=\"avatarClass(line.who)\">\n <eds-icon [name]=\"speakerIcon(line.who)\" [size]=\"16\" />\n </div>\n <div class=\"live-transcript-panel__content\">\n <span class=\"live-transcript-panel__label\">{{ roleLabel(line.who) }}</span>\n <div class=\"live-transcript-panel__bubble\">\n <p>{{ line.text }}</p>\n </div>\n </div>\n </article>\n }\n }\n\n @if (patientInterim(); as interim) {\n <article class=\"live-transcript-panel__msg live-transcript-panel__msg--patient eds-animate-fade-up\">\n <div class=\"live-transcript-panel__avatar live-transcript-panel__avatar--patient\">\n <eds-icon name=\"person\" [size]=\"16\" />\n </div>\n <div class=\"live-transcript-panel__content\">\n <span class=\"live-transcript-panel__label\">Patient \u00B7 listening</span>\n <div class=\"live-transcript-panel__bubble live-transcript-panel__bubble--interim\">\n <p>{{ interim }}</p>\n </div>\n </div>\n </article>\n }\n\n @if (aiInterim(); as interim) {\n <article class=\"live-transcript-panel__msg live-transcript-panel__msg--ai eds-animate-fade-up\">\n <div class=\"live-transcript-panel__avatar live-transcript-panel__avatar--ai\">\n <eds-icon name=\"graphic_eq\" [size]=\"16\" />\n </div>\n <div class=\"live-transcript-panel__content\">\n <span class=\"live-transcript-panel__label\">Ava \u00B7 AI</span>\n <div class=\"live-transcript-panel__bubble live-transcript-panel__bubble--interim\">\n <p>{{ interim }}<span class=\"live-transcript-panel__caret\" aria-hidden=\"true\"></span></p>\n </div>\n </div>\n </article>\n }\n\n @if (lines().length === 0 && !patientInterim() && !aiInterim()) {\n <p class=\"live-transcript-panel__empty\">Waiting for conversation\u2026</p>\n }\n </div>\n\n @if (showStaffInput()) {\n <footer class=\"live-transcript-panel__footer\">\n <input\n type=\"text\"\n class=\"live-transcript-panel__input\"\n placeholder=\"Type to speak as staff\u2026\"\n [ngModel]=\"staffMessage()\"\n (ngModelChange)=\"onStaffInput($event)\"\n (keyup.enter)=\"onSend()\"\n />\n <button type=\"button\" class=\"live-transcript-panel__send\" (click)=\"onSend()\">\n <eds-icon name=\"send\" [size]=\"18\" />\n Send\n </button>\n </footer>\n }\n</section>\n", styles: [".live-transcript-panel{display:flex;flex-direction:column;min-height:0;height:calc(100vh - 234px);min-height:460px;background:var(--slate-900);border:1px solid var(--slate-800);border-radius:var(--radius-lg)}.live-transcript-panel__header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--slate-800);flex-shrink:0}.live-transcript-panel__title{margin:0;font:600 11px/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--slate-400)}.live-transcript-panel__rec{display:flex;align-items:center;gap:10px}.live-transcript-panel__rec-label{font:600 11px/1 var(--font-mono);letter-spacing:.06em;color:var(--slate-500)}.live-transcript-panel__scroll{flex:1;overflow:auto;padding:18px;display:flex;flex-direction:column;gap:14px}.live-transcript-panel__empty{margin:0;text-align:center;padding:32px 12px;font:400 13px/1.4 var(--font-body);color:var(--slate-500)}.live-transcript-panel__system{align-self:center;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--radius-pill);border:1px solid var(--slate-800);font:500 12px/1 var(--font-mono);max-width:90%;text-align:center}.live-transcript-panel__system--verify{color:var(--green-400);background:#0abf521a;border-color:#0abf524d}.live-transcript-panel__system--warn{color:var(--amber-300);background:#fe9a001a;border-color:#fe9a004d}.live-transcript-panel__system--info{color:var(--slate-300);background:var(--slate-900);border-color:var(--slate-800)}.live-transcript-panel__msg{display:flex;gap:10px;max-width:560px}.live-transcript-panel__msg--ai,.live-transcript-panel__msg--staff{margin-left:auto;flex-direction:row-reverse}.live-transcript-panel__msg--ai .live-transcript-panel__content,.live-transcript-panel__msg--staff .live-transcript-panel__content{align-items:flex-end}.live-transcript-panel__msg--ai .live-transcript-panel__bubble,.live-transcript-panel__msg--staff .live-transcript-panel__bubble{border-radius:12px 4px 12px 12px}.live-transcript-panel__msg--typing .live-transcript-panel__bubble{padding:12px 16px}.live-transcript-panel__avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#fff}.live-transcript-panel__avatar--ai{background:linear-gradient(135deg,var(--brand-500),var(--violet-500))}.live-transcript-panel__avatar--staff{background:#8e51ff2e;color:var(--violet-400);border:1px solid rgba(142,81,255,.35)}.live-transcript-panel__avatar--patient{background:var(--slate-800);color:var(--slate-400)}.live-transcript-panel__content{display:flex;flex-direction:column;gap:4px;min-width:0}.live-transcript-panel__label{font:600 11px/1 var(--font-mono);letter-spacing:.04em;color:var(--slate-500)}.live-transcript-panel__msg--ai .live-transcript-panel__label{color:var(--brand-400)}.live-transcript-panel__msg--staff .live-transcript-panel__label{color:var(--purple-300)}.live-transcript-panel__bubble{padding:9px 13px;border-radius:4px 12px 12px;background:#3681f41f;border:1px solid rgba(54,129,244,.28)}.live-transcript-panel__bubble p{margin:0;font:400 13px/19px var(--font-sans);color:var(--gray-100)}.live-transcript-panel__bubble--interim{opacity:.85;font-style:italic}.live-transcript-panel__msg--patient .live-transcript-panel__bubble{background:var(--slate-900);border-color:var(--slate-800)}.live-transcript-panel__msg--staff .live-transcript-panel__bubble{background:#8e51ff24;border-color:#8e51ff4d}.live-transcript-panel__msg--staff .live-transcript-panel__bubble p{color:var(--purple-300)}.live-transcript-panel__caret{display:inline-block;width:7px;height:14px;margin-left:2px;vertical-align:text-bottom;background:var(--brand-400);animation:eds-caret 1s step-end infinite}.live-transcript-panel__dots{display:inline-flex;align-items:center;gap:5px;height:14px}.live-transcript-panel__dots span{width:6px;height:6px;border-radius:50%;background:var(--brand-400);animation:eds-blink 1.4s ease-in-out infinite}.live-transcript-panel__dots span:nth-child(2){animation-delay:.2s}.live-transcript-panel__dots span:nth-child(3){animation-delay:.4s}.live-transcript-panel__footer{display:flex;gap:8px;padding:12px;border-top:1px solid var(--slate-800);flex-shrink:0}.live-transcript-panel__input{flex:1;height:38px;padding:0 14px;border-radius:var(--radius-md);border:1px solid var(--slate-700);background:var(--slate-950);color:var(--gray-100);font:400 13px/1 var(--font-sans)}.live-transcript-panel__input::placeholder{color:var(--slate-500)}.live-transcript-panel__input:focus{outline:none;border-color:var(--violet-400)}.live-transcript-panel__send{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 14px;border:none;border-radius:var(--radius-md);background:#8e51ff38;color:var(--purple-300);font:600 13px/1 var(--font-sans);cursor:pointer}.live-transcript-panel__send:hover{background:var(--violet-500);color:#fff}@media(max-width:900px){.live-transcript-panel{height:auto;min-height:360px;max-height:60vh}}\n"] }]
404
+ args: [{ selector: 'eds-live-transcript-panel', imports: [FormsModule, EdsIconComponent, EdsWaveformComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"live-transcript-panel\" aria-labelledby=\"live-transcript-title\">\n <header class=\"live-transcript-panel__header\">\n <h2 id=\"live-transcript-title\" class=\"live-transcript-panel__title\">Live transcript</h2>\n <div class=\"live-transcript-panel__rec\">\n <eds-waveform [active]=\"waveformActive()\" [tone]=\"waveformTone()\" />\n <span class=\"live-transcript-panel__rec-label\">{{ recLabel() }}</span>\n </div>\n </header>\n\n <div #scrollHost class=\"live-transcript-panel__scroll\" role=\"log\" aria-live=\"polite\">\n @for (line of lines(); track $index) {\n @if (line.who === 'system') {\n <div class=\"live-transcript-panel__system eds-animate-fade-up\" [class]=\"systemClass(line.flag)\">\n <eds-icon [name]=\"systemIcon(line.flag)\" [size]=\"14\" />\n <span>{{ line.text }}</span>\n </div>\n } @else {\n <article class=\"live-transcript-panel__msg eds-animate-fade-up\" [class]=\"msgClass(line.who)\">\n <div class=\"live-transcript-panel__avatar\" [class]=\"avatarClass(line.who)\">\n <eds-icon [name]=\"speakerIcon(line.who)\" [size]=\"16\" />\n </div>\n <div class=\"live-transcript-panel__content\">\n <span class=\"live-transcript-panel__label\">{{ roleLabel(line.who) }}</span>\n <div class=\"live-transcript-panel__bubble\">\n <p>{{ line.text }}</p>\n </div>\n </div>\n </article>\n }\n }\n\n @if (patientInterim(); as interim) {\n <article class=\"live-transcript-panel__msg live-transcript-panel__msg--patient eds-animate-fade-up\">\n <div class=\"live-transcript-panel__avatar live-transcript-panel__avatar--patient\">\n <eds-icon name=\"person\" [size]=\"16\" />\n </div>\n <div class=\"live-transcript-panel__content\">\n <span class=\"live-transcript-panel__label\">Patient \u00B7 listening</span>\n <div class=\"live-transcript-panel__bubble live-transcript-panel__bubble--interim\">\n <p>{{ interim }}</p>\n </div>\n </div>\n </article>\n }\n\n @if (aiInterim(); as interim) {\n <article class=\"live-transcript-panel__msg live-transcript-panel__msg--ai eds-animate-fade-up\">\n <div class=\"live-transcript-panel__avatar live-transcript-panel__avatar--ai\">\n <eds-icon name=\"graphic_eq\" [size]=\"16\" />\n </div>\n <div class=\"live-transcript-panel__content\">\n <span class=\"live-transcript-panel__label\">Ava \u00B7 AI</span>\n <div class=\"live-transcript-panel__bubble live-transcript-panel__bubble--interim\">\n <p>{{ interim }}<span class=\"live-transcript-panel__caret\" aria-hidden=\"true\"></span></p>\n </div>\n </div>\n </article>\n }\n\n @if (lines().length === 0 && !patientInterim() && !aiInterim()) {\n <p class=\"live-transcript-panel__empty\">Waiting for conversation\u2026</p>\n }\n </div>\n\n @if (showStaffInput()) {\n <footer class=\"live-transcript-panel__footer\">\n <input\n type=\"text\"\n class=\"live-transcript-panel__input\"\n placeholder=\"Type to speak as staff\u2026\"\n [ngModel]=\"staffMessage()\"\n (ngModelChange)=\"onStaffInput($event)\"\n (keyup.enter)=\"onSend()\"\n />\n <button type=\"button\" class=\"live-transcript-panel__send\" (click)=\"onSend()\">\n <eds-icon name=\"send\" [size]=\"18\" />\n Send\n </button>\n </footer>\n }\n</section>\n", styles: [".live-transcript-panel{display:flex;flex-direction:column;min-height:0;height:calc(100vh - 234px);min-height:460px;background:var(--eds-slate-900);border:1px solid var(--eds-slate-800);border-radius:var(--eds-radius-lg)}.live-transcript-panel__header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--eds-slate-800);flex-shrink:0}.live-transcript-panel__title{margin:0;font:600 11px/1 var(--eds-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--eds-slate-400)}.live-transcript-panel__rec{display:flex;align-items:center;gap:10px}.live-transcript-panel__rec-label{font:600 11px/1 var(--eds-font-mono);letter-spacing:.06em;color:var(--eds-slate-500)}.live-transcript-panel__scroll{flex:1;overflow:auto;padding:18px;display:flex;flex-direction:column;gap:14px}.live-transcript-panel__empty{margin:0;text-align:center;padding:32px 12px;font:400 13px/1.4 var(--eds-font-body);color:var(--eds-slate-500)}.live-transcript-panel__system{align-self:center;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--eds-radius-pill);border:1px solid var(--eds-slate-800);font:500 12px/1 var(--eds-font-mono);max-width:90%;text-align:center}.live-transcript-panel__system--verify{color:var(--eds-green-400);background:#0abf521a;border-color:#0abf524d}.live-transcript-panel__system--warn{color:var(--eds-amber-300);background:#fe9a001a;border-color:#fe9a004d}.live-transcript-panel__system--info{color:var(--eds-slate-300);background:var(--eds-slate-900);border-color:var(--eds-slate-800)}.live-transcript-panel__msg{display:flex;gap:10px;max-width:560px}.live-transcript-panel__msg--ai,.live-transcript-panel__msg--staff{margin-left:auto;flex-direction:row-reverse}.live-transcript-panel__msg--ai .live-transcript-panel__content,.live-transcript-panel__msg--staff .live-transcript-panel__content{align-items:flex-end}.live-transcript-panel__msg--ai .live-transcript-panel__bubble,.live-transcript-panel__msg--staff .live-transcript-panel__bubble{border-radius:12px 4px 12px 12px}.live-transcript-panel__msg--typing .live-transcript-panel__bubble{padding:12px 16px}.live-transcript-panel__avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#fff}.live-transcript-panel__avatar--ai{background:linear-gradient(135deg,var(--eds-brand-500),var(--eds-violet-500))}.live-transcript-panel__avatar--staff{background:#8e51ff2e;color:var(--eds-violet-400);border:1px solid rgba(142,81,255,.35)}.live-transcript-panel__avatar--patient{background:var(--eds-slate-800);color:var(--eds-slate-400)}.live-transcript-panel__content{display:flex;flex-direction:column;gap:4px;min-width:0}.live-transcript-panel__label{font:600 11px/1 var(--eds-font-mono);letter-spacing:.04em;color:var(--eds-slate-500)}.live-transcript-panel__msg--ai .live-transcript-panel__label{color:var(--eds-brand-400)}.live-transcript-panel__msg--staff .live-transcript-panel__label{color:var(--eds-purple-300)}.live-transcript-panel__bubble{padding:9px 13px;border-radius:4px 12px 12px;background:#3681f41f;border:1px solid rgba(54,129,244,.28)}.live-transcript-panel__bubble p{margin:0;font:400 13px/19px var(--eds-font-sans);color:var(--eds-gray-100)}.live-transcript-panel__bubble--interim{opacity:.85;font-style:italic}.live-transcript-panel__msg--patient .live-transcript-panel__bubble{background:var(--eds-slate-900);border-color:var(--eds-slate-800)}.live-transcript-panel__msg--staff .live-transcript-panel__bubble{background:#8e51ff24;border-color:#8e51ff4d}.live-transcript-panel__msg--staff .live-transcript-panel__bubble p{color:var(--eds-purple-300)}.live-transcript-panel__caret{display:inline-block;width:7px;height:14px;margin-left:2px;vertical-align:text-bottom;background:var(--eds-brand-400);animation:eds-caret 1s step-end infinite}.live-transcript-panel__dots{display:inline-flex;align-items:center;gap:5px;height:14px}.live-transcript-panel__dots span{width:6px;height:6px;border-radius:50%;background:var(--eds-brand-400);animation:eds-blink 1.4s ease-in-out infinite}.live-transcript-panel__dots span:nth-child(2){animation-delay:.2s}.live-transcript-panel__dots span:nth-child(3){animation-delay:.4s}.live-transcript-panel__footer{display:flex;gap:8px;padding:12px;border-top:1px solid var(--eds-slate-800);flex-shrink:0}.live-transcript-panel__input{flex:1;height:38px;padding:0 14px;border-radius:var(--eds-radius-md);border:1px solid var(--eds-slate-700);background:var(--eds-slate-950);color:var(--eds-gray-100);font:400 13px/1 var(--eds-font-sans)}.live-transcript-panel__input::placeholder{color:var(--eds-slate-500)}.live-transcript-panel__input:focus{outline:none;border-color:var(--eds-violet-400)}.live-transcript-panel__send{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 14px;border:none;border-radius:var(--eds-radius-md);background:#8e51ff38;color:var(--eds-purple-300);font:600 13px/1 var(--eds-font-sans);cursor:pointer}.live-transcript-panel__send:hover{background:var(--eds-violet-500);color:#fff}@media(max-width:900px){.live-transcript-panel{height:auto;min-height:360px;max-height:60vh}}\n"] }]
405
405
  }], ctorParameters: () => [], propDecorators: { scrollHost: [{
406
406
  type: ViewChild,
407
407
  args: ['scrollHost']
@@ -555,7 +555,7 @@ class LiveMonitorPageComponent {
555
555
  });
556
556
  }
557
557
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LiveMonitorPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
558
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: LiveMonitorPageComponent, isStandalone: true, selector: "eds-live-monitor-page", ngImport: i0, template: "<div class=\"eds-page eds-page--dark live-monitor-page\">\n @if (loading()) {\n <p class=\"live-monitor-page__loading\">Loading call\u2026</p>\n } @else {\n @if (call(); as c) {\n <header class=\"live-monitor-page__header\">\n <a routerLink=\"../live\" class=\"live-monitor-page__back\" aria-label=\"Back to live calls\">\n <eds-icon name=\"arrow_back\" [size]=\"19\" />\n </a>\n\n <div class=\"live-monitor-page__header-main\">\n <eds-avatar\n [initials]=\"c.initials\"\n tone=\"brand\"\n [gradient]=\"c.matched\"\n [class.live-monitor-page__avatar--ring]=\"c.matched\"\n />\n\n <div class=\"live-monitor-page__caller\">\n <div class=\"live-monitor-page__name-row\">\n <h1 class=\"live-monitor-page__name\">{{ c.name }}</h1>\n <span class=\"live-monitor-page__patient-tag\" [attr.data-kind]=\"c.matched ? 'registered' : 'new'\">\n <eds-icon [name]=\"c.matched ? 'person_check' : 'person_add'\" [size]=\"14\" />\n {{ c.matched ? 'Registered' : 'New' }}\n </span>\n </div>\n <div class=\"live-monitor-page__meta-row\">\n <eds-icon [name]=\"c.direction === 'inbound' ? 'call_received' : 'call_made'\" [size]=\"14\" />\n <span>{{ c.phone }}</span>\n <span class=\"live-monitor-page__sep\">\u00B7</span>\n <span>{{ c.reason }}</span>\n </div>\n </div>\n\n <div class=\"live-monitor-page__header-right\">\n <span class=\"live-monitor-page__duration\">\n <span class=\"live-monitor-page__duration-dot\" aria-hidden=\"true\"></span>\n {{ c.started | edsElapsed }}\n </span>\n </div>\n </div>\n </header>\n\n @if (callEnded()) {\n <div class=\"live-monitor-page__completed-banner\" role=\"status\">\n <eds-icon name=\"check_circle\" [size]=\"18\" />\n Call ended\n </div>\n }\n\n <div class=\"live-monitor-page__grid\">\n <div class=\"live-monitor-page__main\">\n <eds-live-transcript-panel\n [live]=\"isLive()\"\n [paused]=\"isPaused()\"\n [humanTakeover]=\"isTakeover()\"\n [showStaffInput]=\"isTakeover() && !callEnded()\"\n [staffMessage]=\"staffMessage()\"\n (staffMessageChange)=\"staffMessage.set($event)\"\n (sendMessage)=\"sendMessage()\"\n />\n\n @if (callEnded()) {\n <section class=\"live-monitor-page__post-call\">\n <div class=\"live-monitor-page__summary\">\n <h2 class=\"live-monitor-page__section-title\">Call summary</h2>\n @if (summaryLoading()) {\n <p class=\"live-monitor-page__muted\">Generating summary\u2026</p>\n } @else if (summary()) {\n <p>{{ summary() }}</p>\n } @else {\n <p class=\"live-monitor-page__muted\">Summary will appear when processing completes.</p>\n }\n </div>\n <eds-call-recording-player [callId]=\"callId()\" />\n </section>\n }\n </div>\n\n <aside class=\"live-monitor-page__sidebar\">\n @if (!callEnded()) {\n <div class=\"live-monitor-page__orb-wrap\" [attr.data-mode]=\"c.status === 'transferring' ? 'transfer' : 'ai'\">\n <span class=\"live-monitor-page__ring live-monitor-page__ring--1\"></span>\n <span class=\"live-monitor-page__ring live-monitor-page__ring--2\"></span>\n <span class=\"live-monitor-page__orb\">\n <eds-icon name=\"smart_toy\" [size]=\"28\" />\n </span>\n <span class=\"live-monitor-page__confidence\" [attr.data-level]=\"confidenceLevel(c.confidence)\">\n AI confidence {{ c.confidence }}%\n </span>\n </div>\n\n <section class=\"live-monitor-page__sidebar-block\">\n <h3 class=\"live-monitor-page__section-title\">Patient sentiment</h3>\n <div class=\"live-monitor-page__sentiment-bar\">\n <span\n class=\"live-monitor-page__sentiment-fill\"\n [style.width.%]=\"sentimentPercent(c.sentiment)\"\n [attr.data-sentiment]=\"c.sentiment\"\n ></span>\n </div>\n <span class=\"live-monitor-page__sentiment-label\">{{ c.sentiment }}</span>\n </section>\n }\n\n <section class=\"live-monitor-page__sidebar-block\">\n <h3 class=\"live-monitor-page__section-title\">Tools used</h3>\n <ul class=\"live-monitor-page__tools\">\n @for (tool of liveTools(); track toolTrackKey(tool, $index)) {\n <li [class]=\"toolStateClass(tool.state)\">\n <span class=\"live-monitor-page__tool-time\">{{ tool.t }}</span>\n <div class=\"live-monitor-page__tool-body\">\n <span class=\"live-monitor-page__tool-name\">{{ tool.name }}</span>\n <span class=\"live-monitor-page__tool-result\">{{ tool.result }}</span>\n </div>\n @if (tool.state === 'active') {\n <eds-icon name=\"sync\" [size]=\"16\" class=\"live-monitor-page__tool-spin\" />\n }\n </li>\n } @empty {\n <li class=\"live-monitor-page__tools-empty\">No tool activity yet.</li>\n }\n </ul>\n </section>\n\n <section class=\"live-monitor-page__sidebar-block\">\n <h3 class=\"live-monitor-page__section-title\">Goal</h3>\n <p class=\"live-monitor-page__goal\">{{ c.goal }}</p>\n </section>\n </aside>\n </div>\n\n @if (!callEnded()) {\n <footer class=\"live-monitor-page__control-bar\">\n <div class=\"live-monitor-page__control-group\">\n @if (isTakeover()) {\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--violet\" (click)=\"resumeAi()\">\n <eds-icon name=\"smart_toy\" [size]=\"18\" /> Resume AI\n </button>\n } @else {\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--primary\" (click)=\"takeover()\">\n <eds-icon name=\"pan_tool_alt\" [size]=\"18\" /> Take over\n </button>\n }\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" disabled title=\"Coming soon\">\n <eds-icon name=\"hearing\" [size]=\"18\" /> Listen\n </button>\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" (click)=\"transfer()\">\n <eds-icon name=\"phone_forwarded\" [size]=\"18\" /> Transfer\n </button>\n </div>\n\n <span class=\"live-monitor-page__divider\" aria-hidden=\"true\"></span>\n\n <div class=\"live-monitor-page__control-group\">\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" disabled title=\"Coming soon\">\n <eds-icon name=\"person_search\" [size]=\"18\" /> Open chart\n </button>\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" disabled title=\"Coming soon\">\n <eds-icon name=\"add_task\" [size]=\"18\" /> Create task\n </button>\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" disabled title=\"Coming soon\">\n <eds-icon name=\"edit_note\" [size]=\"18\" /> Add note\n </button>\n </div>\n\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--danger\" (click)=\"endCall()\">\n <eds-icon name=\"call_end\" [size]=\"18\" /> End call\n </button>\n </footer>\n }\n } @else {\n <p class=\"live-monitor-page__loading\">Call ended or not found.</p>\n }\n }\n</div>\n", styles: [".live-monitor-page{display:flex;flex-direction:column;min-height:calc(100vh - var(--eds-topbar-height));padding:var(--space-5);color:var(--gray-200)}.live-monitor-page__loading{font:400 13px/1.4 var(--font-body);color:var(--slate-400)}.live-monitor-page__header{display:flex;align-items:flex-start;gap:12px;margin-bottom:var(--space-4)}.live-monitor-page__back{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-md);background:var(--slate-900);border:1px solid var(--slate-800);color:var(--gray-300);text-decoration:none;flex-shrink:0}.live-monitor-page__back:hover{background:var(--slate-800)}.live-monitor-page__header-main{flex:1;display:flex;align-items:center;gap:14px;min-width:0;flex-wrap:wrap}.live-monitor-page__avatar--ring{box-shadow:0 0 0 2px var(--brand-500)}.live-monitor-page__caller{flex:1;min-width:200px}.live-monitor-page__name-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.live-monitor-page__name{margin:0;font:700 18px/22px var(--font-sans);color:var(--gray-100)}.live-monitor-page__patient-tag{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--radius-pill);font:500 11px/1 var(--font-mono);border:1px solid transparent}.live-monitor-page__patient-tag[data-kind=registered]{color:var(--green-400);background:#0abf5224;border-color:#0abf5247}.live-monitor-page__patient-tag[data-kind=new]{color:var(--brand-300);background:#3681f424;border-color:#3681f44d}.live-monitor-page__meta-row{display:flex;align-items:center;gap:6px;margin-top:4px;font:500 12px/1 var(--font-mono);color:var(--slate-400);flex-wrap:wrap}.live-monitor-page__sep{color:var(--slate-600)}.live-monitor-page__header-right{display:flex;flex-direction:column;align-items:flex-end;gap:4px;margin-left:auto}.live-monitor-page__duration{display:inline-flex;align-items:center;gap:8px;font:700 22px/1 var(--font-mono);color:var(--gray-100)}.live-monitor-page__duration-dot{width:9px;height:9px;border-radius:50%;background:var(--green-400);box-shadow:0 0 0 3px #0abf5224}.live-monitor-page__completed-banner{display:flex;align-items:center;gap:8px;padding:10px 14px;margin-bottom:var(--space-4);border-radius:var(--radius-lg);background:#0abf521f;color:var(--green-400);font:400 13px/1.4 var(--font-body)}.live-monitor-page__grid{display:grid;grid-template-columns:1fr 340px;gap:var(--space-4);flex:1;min-height:0}.live-monitor-page__main{display:flex;flex-direction:column;gap:var(--space-4);min-height:0}.live-monitor-page__main-tabs{display:flex;gap:4px;padding:4px;border-radius:var(--radius-md);background:var(--slate-900);border:1px solid var(--slate-800);width:fit-content}.live-monitor-page__main-tab{border:none;background:transparent;color:var(--slate-400);font:600 12px/1 var(--font-body);padding:8px 14px;border-radius:var(--radius-sm);cursor:pointer}.live-monitor-page__main-tab--active{background:var(--slate-800);color:var(--gray-100)}.live-monitor-page__api-logs{flex:1;min-height:280px;padding:16px;background:var(--slate-900);border:1px solid var(--slate-800)}.live-monitor-page__post-call{display:flex;flex-direction:column;gap:var(--space-4)}.live-monitor-page__summary{padding:16px;border-radius:var(--radius-lg);background:var(--slate-900);border:1px solid var(--slate-800);font:400 13px/1.5 var(--font-body);color:var(--slate-300)}.live-monitor-page__muted{color:var(--slate-500);margin:0}.live-monitor-page__sidebar{display:flex;flex-direction:column;gap:var(--space-4);min-height:0}.live-monitor-page__sidebar-block{padding:16px;border-radius:var(--radius-lg);background:var(--slate-900);border:1px solid var(--slate-800)}.live-monitor-page__section-title{margin:0 0 12px;font:600 11px/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--slate-400)}.live-monitor-page__orb-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px 16px;border-radius:var(--radius-lg);background:var(--slate-900);border:1px solid var(--slate-800);position:relative}.live-monitor-page__orb{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(135deg,var(--brand-500),var(--violet-500));animation:eds-breathe 3s ease-in-out infinite;position:relative;z-index:1}.live-monitor-page__ring{position:absolute;width:64px;height:64px;top:20px;border-radius:50%;border:2px solid var(--brand-400);animation:eds-ring 2s ease-out infinite}.live-monitor-page__ring--2{animation-delay:1s}.live-monitor-page__orb-wrap[data-mode=transfer] .live-monitor-page__orb{background:linear-gradient(135deg,var(--amber-400),var(--violet-500))}.live-monitor-page__confidence{font:500 12px/1 var(--font-mono);color:var(--slate-400)}.live-monitor-page__confidence[data-level=high]{color:var(--green-400)}.live-monitor-page__confidence[data-level=low]{color:var(--amber-400)}.live-monitor-page__sentiment-bar{height:6px;background:var(--slate-800);border-radius:3px;overflow:hidden;margin-bottom:8px}.live-monitor-page__sentiment-fill{display:block;height:100%;border-radius:3px;background:var(--green-400);transition:width .3s ease}.live-monitor-page__sentiment-fill[data-sentiment=frustrated],.live-monitor-page__sentiment-fill[data-sentiment=urgent]{background:var(--red-400)}.live-monitor-page__sentiment-fill[data-sentiment=neutral]{background:var(--amber-400)}.live-monitor-page__sentiment-label{font:500 12px/1 var(--font-mono);color:var(--slate-400);text-transform:capitalize}.live-monitor-page__tools{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;max-height:280px;overflow:auto}.live-monitor-page__tools li{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:start;padding:10px;border-radius:var(--radius-md);background:var(--slate-950);border-left:3px solid var(--slate-700)}.live-monitor-page__tool-time{font:500 11px/1 var(--font-mono);color:var(--slate-500);white-space:nowrap}.live-monitor-page__tool-body{display:flex;flex-direction:column;gap:2px;min-width:0}.live-monitor-page__tool-name{font:600 13px/1.2 var(--font-sans);color:var(--gray-100)}.live-monitor-page__tool-result{font:400 12px/1.4 var(--font-body);color:var(--slate-400)}.live-monitor-page__tool-tech{font:500 10px/1 var(--font-mono);color:var(--slate-500)}.live-monitor-page__tool-spin{animation:eds-spin 1s linear infinite;color:var(--brand-400)}.live-monitor-page__tool--ok{border-left-color:var(--green-400)}.live-monitor-page__tool--warn{border-left-color:var(--amber-400)}.live-monitor-page__tool--error{border-left-color:var(--red-400)}.live-monitor-page__tool--active{border-left-color:var(--brand-400)}.live-monitor-page__tools-empty{border-left:none!important;background:transparent!important;padding:8px 0!important;font:400 13px/1.4 var(--font-body);color:var(--slate-500)}.live-monitor-page__goal{margin:0;font:400 13px/1.5 var(--font-body);color:var(--slate-300)}.live-monitor-page__control-bar{position:sticky;bottom:0;display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:var(--space-4);padding:12px 16px;border-radius:var(--radius-lg);background:var(--slate-900);border:1px solid var(--slate-800);box-shadow:0 -8px 24px #03071780}.live-monitor-page__control-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.live-monitor-page__divider{width:1px;height:24px;background:var(--slate-800);flex-shrink:0}.live-monitor-page__ctrl{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 14px;border:none;border-radius:var(--radius-md);font:600 13px/1 var(--font-sans);cursor:pointer;white-space:nowrap}.live-monitor-page__ctrl:disabled{opacity:.45;cursor:not-allowed}.live-monitor-page__ctrl--neutral{background:var(--slate-800);color:var(--gray-200)}.live-monitor-page__ctrl--neutral:hover:not(:disabled){background:var(--slate-700)}.live-monitor-page__ctrl--primary{background:var(--brand-600);color:#fff}.live-monitor-page__ctrl--primary:hover:not(:disabled){background:var(--brand-500)}.live-monitor-page__ctrl--violet{background:#8e51ff2e;color:var(--purple-300)}.live-monitor-page__ctrl--violet:hover:not(:disabled){background:var(--violet-500);color:#fff}.live-monitor-page__ctrl--danger{margin-left:auto;background:var(--red-500);color:#fff}.live-monitor-page__ctrl--danger:hover:not(:disabled){background:var(--red-400)}@media(max-width:960px){.live-monitor-page__grid{grid-template-columns:1fr}.live-monitor-page__header-right{align-items:flex-start;width:100%;margin-left:0}.live-monitor-page__ctrl--danger{margin-left:0;width:100%;justify-content:center}}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: EdsAvatarComponent, selector: "eds-avatar", inputs: ["initials", "tone", "gradient"] }, { kind: "component", type: EdsIconComponent, selector: "eds-icon", inputs: ["name", "size", "fill", "weight"] }, { kind: "pipe", type: EdsElapsedPipe, name: "edsElapsed" }, { kind: "component", type: LiveTranscriptPanelComponent, selector: "eds-live-transcript-panel", inputs: ["live", "paused", "humanTakeover", "showStaffInput", "staffMessage"], outputs: ["staffMessageChange", "sendMessage"] }, { kind: "component", type: CallRecordingPlayerComponent, selector: "eds-call-recording-player", inputs: ["callId"], outputs: ["currentTimeChange", "durationChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
558
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: LiveMonitorPageComponent, isStandalone: true, selector: "eds-live-monitor-page", ngImport: i0, template: "<div class=\"eds-page eds-page--dark live-monitor-page\">\n @if (loading()) {\n <p class=\"live-monitor-page__loading\">Loading call\u2026</p>\n } @else {\n @if (call(); as c) {\n <header class=\"live-monitor-page__header\">\n <a routerLink=\"../live\" class=\"live-monitor-page__back\" aria-label=\"Back to live calls\">\n <eds-icon name=\"arrow_back\" [size]=\"19\" />\n </a>\n\n <div class=\"live-monitor-page__header-main\">\n <eds-avatar\n [initials]=\"c.initials\"\n tone=\"brand\"\n [gradient]=\"c.matched\"\n [class.live-monitor-page__avatar--ring]=\"c.matched\"\n />\n\n <div class=\"live-monitor-page__caller\">\n <div class=\"live-monitor-page__name-row\">\n <h1 class=\"live-monitor-page__name\">{{ c.name }}</h1>\n <span class=\"live-monitor-page__patient-tag\" [attr.data-kind]=\"c.matched ? 'registered' : 'new'\">\n <eds-icon [name]=\"c.matched ? 'person_check' : 'person_add'\" [size]=\"14\" />\n {{ c.matched ? 'Registered' : 'New' }}\n </span>\n </div>\n <div class=\"live-monitor-page__meta-row\">\n <eds-icon [name]=\"c.direction === 'inbound' ? 'call_received' : 'call_made'\" [size]=\"14\" />\n <span>{{ c.phone }}</span>\n <span class=\"live-monitor-page__sep\">\u00B7</span>\n <span>{{ c.reason }}</span>\n </div>\n </div>\n\n <div class=\"live-monitor-page__header-right\">\n <span class=\"live-monitor-page__duration\">\n <span class=\"live-monitor-page__duration-dot\" aria-hidden=\"true\"></span>\n {{ c.started | edsElapsed }}\n </span>\n </div>\n </div>\n </header>\n\n @if (callEnded()) {\n <div class=\"live-monitor-page__completed-banner\" role=\"status\">\n <eds-icon name=\"check_circle\" [size]=\"18\" />\n Call ended\n </div>\n }\n\n <div class=\"live-monitor-page__grid\">\n <div class=\"live-monitor-page__main\">\n <eds-live-transcript-panel\n [live]=\"isLive()\"\n [paused]=\"isPaused()\"\n [humanTakeover]=\"isTakeover()\"\n [showStaffInput]=\"isTakeover() && !callEnded()\"\n [staffMessage]=\"staffMessage()\"\n (staffMessageChange)=\"staffMessage.set($event)\"\n (sendMessage)=\"sendMessage()\"\n />\n\n @if (callEnded()) {\n <section class=\"live-monitor-page__post-call\">\n <div class=\"live-monitor-page__summary\">\n <h2 class=\"live-monitor-page__section-title\">Call summary</h2>\n @if (summaryLoading()) {\n <p class=\"live-monitor-page__muted\">Generating summary\u2026</p>\n } @else if (summary()) {\n <p>{{ summary() }}</p>\n } @else {\n <p class=\"live-monitor-page__muted\">Summary will appear when processing completes.</p>\n }\n </div>\n <eds-call-recording-player [callId]=\"callId()\" />\n </section>\n }\n </div>\n\n <aside class=\"live-monitor-page__sidebar\">\n @if (!callEnded()) {\n <div class=\"live-monitor-page__orb-wrap\" [attr.data-mode]=\"c.status === 'transferring' ? 'transfer' : 'ai'\">\n <span class=\"live-monitor-page__ring live-monitor-page__ring--1\"></span>\n <span class=\"live-monitor-page__ring live-monitor-page__ring--2\"></span>\n <span class=\"live-monitor-page__orb\">\n <eds-icon name=\"smart_toy\" [size]=\"28\" />\n </span>\n <span class=\"live-monitor-page__confidence\" [attr.data-level]=\"confidenceLevel(c.confidence)\">\n AI confidence {{ c.confidence }}%\n </span>\n </div>\n\n <section class=\"live-monitor-page__sidebar-block\">\n <h3 class=\"live-monitor-page__section-title\">Patient sentiment</h3>\n <div class=\"live-monitor-page__sentiment-bar\">\n <span\n class=\"live-monitor-page__sentiment-fill\"\n [style.width.%]=\"sentimentPercent(c.sentiment)\"\n [attr.data-sentiment]=\"c.sentiment\"\n ></span>\n </div>\n <span class=\"live-monitor-page__sentiment-label\">{{ c.sentiment }}</span>\n </section>\n }\n\n <section class=\"live-monitor-page__sidebar-block\">\n <h3 class=\"live-monitor-page__section-title\">Tools used</h3>\n <ul class=\"live-monitor-page__tools\">\n @for (tool of liveTools(); track toolTrackKey(tool, $index)) {\n <li [class]=\"toolStateClass(tool.state)\">\n <span class=\"live-monitor-page__tool-time\">{{ tool.t }}</span>\n <div class=\"live-monitor-page__tool-body\">\n <span class=\"live-monitor-page__tool-name\">{{ tool.name }}</span>\n <span class=\"live-monitor-page__tool-result\">{{ tool.result }}</span>\n </div>\n @if (tool.state === 'active') {\n <eds-icon name=\"sync\" [size]=\"16\" class=\"live-monitor-page__tool-spin\" />\n }\n </li>\n } @empty {\n <li class=\"live-monitor-page__tools-empty\">No tool activity yet.</li>\n }\n </ul>\n </section>\n\n <section class=\"live-monitor-page__sidebar-block\">\n <h3 class=\"live-monitor-page__section-title\">Goal</h3>\n <p class=\"live-monitor-page__goal\">{{ c.goal }}</p>\n </section>\n </aside>\n </div>\n\n @if (!callEnded()) {\n <footer class=\"live-monitor-page__control-bar\">\n <div class=\"live-monitor-page__control-group\">\n @if (isTakeover()) {\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--violet\" (click)=\"resumeAi()\">\n <eds-icon name=\"smart_toy\" [size]=\"18\" /> Resume AI\n </button>\n } @else {\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--primary\" (click)=\"takeover()\">\n <eds-icon name=\"pan_tool_alt\" [size]=\"18\" /> Take over\n </button>\n }\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" disabled title=\"Coming soon\">\n <eds-icon name=\"hearing\" [size]=\"18\" /> Listen\n </button>\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" (click)=\"transfer()\">\n <eds-icon name=\"phone_forwarded\" [size]=\"18\" /> Transfer\n </button>\n </div>\n\n <span class=\"live-monitor-page__divider\" aria-hidden=\"true\"></span>\n\n <div class=\"live-monitor-page__control-group\">\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" disabled title=\"Coming soon\">\n <eds-icon name=\"person_search\" [size]=\"18\" /> Open chart\n </button>\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" disabled title=\"Coming soon\">\n <eds-icon name=\"add_task\" [size]=\"18\" /> Create task\n </button>\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" disabled title=\"Coming soon\">\n <eds-icon name=\"edit_note\" [size]=\"18\" /> Add note\n </button>\n </div>\n\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--danger\" (click)=\"endCall()\">\n <eds-icon name=\"call_end\" [size]=\"18\" /> End call\n </button>\n </footer>\n }\n } @else {\n <p class=\"live-monitor-page__loading\">Call ended or not found.</p>\n }\n }\n</div>\n", styles: [".live-monitor-page{display:flex;flex-direction:column;min-height:calc(100vh - var(--eds-topbar-height));padding:var(--eds-space-5);color:var(--eds-gray-200)}.live-monitor-page__loading{font:400 13px/1.4 var(--eds-font-body);color:var(--eds-slate-400)}.live-monitor-page__header{display:flex;align-items:flex-start;gap:12px;margin-bottom:var(--eds-space-4)}.live-monitor-page__back{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--eds-radius-md);background:var(--eds-slate-900);border:1px solid var(--eds-slate-800);color:var(--eds-gray-300);text-decoration:none;flex-shrink:0}.live-monitor-page__back:hover{background:var(--eds-slate-800)}.live-monitor-page__header-main{flex:1;display:flex;align-items:center;gap:14px;min-width:0;flex-wrap:wrap}.live-monitor-page__avatar--ring{box-shadow:0 0 0 2px var(--eds-brand-500)}.live-monitor-page__caller{flex:1;min-width:200px}.live-monitor-page__name-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.live-monitor-page__name{margin:0;font:700 18px/22px var(--eds-font-sans);color:var(--eds-gray-100)}.live-monitor-page__patient-tag{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--eds-radius-pill);font:500 11px/1 var(--eds-font-mono);border:1px solid transparent}.live-monitor-page__patient-tag[data-kind=registered]{color:var(--eds-green-400);background:#0abf5224;border-color:#0abf5247}.live-monitor-page__patient-tag[data-kind=new]{color:var(--eds-brand-300);background:#3681f424;border-color:#3681f44d}.live-monitor-page__meta-row{display:flex;align-items:center;gap:6px;margin-top:4px;font:500 12px/1 var(--eds-font-mono);color:var(--eds-slate-400);flex-wrap:wrap}.live-monitor-page__sep{color:var(--eds-slate-600)}.live-monitor-page__header-right{display:flex;flex-direction:column;align-items:flex-end;gap:4px;margin-left:auto}.live-monitor-page__duration{display:inline-flex;align-items:center;gap:8px;font:700 22px/1 var(--eds-font-mono);color:var(--eds-gray-100)}.live-monitor-page__duration-dot{width:9px;height:9px;border-radius:50%;background:var(--eds-green-400);box-shadow:0 0 0 3px #0abf5224}.live-monitor-page__completed-banner{display:flex;align-items:center;gap:8px;padding:10px 14px;margin-bottom:var(--eds-space-4);border-radius:var(--eds-radius-lg);background:#0abf521f;color:var(--eds-green-400);font:400 13px/1.4 var(--eds-font-body)}.live-monitor-page__grid{display:grid;grid-template-columns:1fr 340px;gap:var(--eds-space-4);flex:1;min-height:0}.live-monitor-page__main{display:flex;flex-direction:column;gap:var(--eds-space-4);min-height:0}.live-monitor-page__main-tabs{display:flex;gap:4px;padding:4px;border-radius:var(--eds-radius-md);background:var(--eds-slate-900);border:1px solid var(--eds-slate-800);width:fit-content}.live-monitor-page__main-tab{border:none;background:transparent;color:var(--eds-slate-400);font:600 12px/1 var(--eds-font-body);padding:8px 14px;border-radius:var(--eds-radius-sm);cursor:pointer}.live-monitor-page__main-tab--active{background:var(--eds-slate-800);color:var(--eds-gray-100)}.live-monitor-page__api-logs{flex:1;min-height:280px;padding:16px;background:var(--eds-slate-900);border:1px solid var(--eds-slate-800)}.live-monitor-page__post-call{display:flex;flex-direction:column;gap:var(--eds-space-4)}.live-monitor-page__summary{padding:16px;border-radius:var(--eds-radius-lg);background:var(--eds-slate-900);border:1px solid var(--eds-slate-800);font:400 13px/1.5 var(--eds-font-body);color:var(--eds-slate-300)}.live-monitor-page__muted{color:var(--eds-slate-500);margin:0}.live-monitor-page__sidebar{display:flex;flex-direction:column;gap:var(--eds-space-4);min-height:0}.live-monitor-page__sidebar-block{padding:16px;border-radius:var(--eds-radius-lg);background:var(--eds-slate-900);border:1px solid var(--eds-slate-800)}.live-monitor-page__section-title{margin:0 0 12px;font:600 11px/1 var(--eds-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--eds-slate-400)}.live-monitor-page__orb-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px 16px;border-radius:var(--eds-radius-lg);background:var(--eds-slate-900);border:1px solid var(--eds-slate-800);position:relative}.live-monitor-page__orb{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(135deg,var(--eds-brand-500),var(--eds-violet-500));animation:eds-breathe 3s ease-in-out infinite;position:relative;z-index:1}.live-monitor-page__ring{position:absolute;width:64px;height:64px;top:20px;border-radius:50%;border:2px solid var(--eds-brand-400);animation:eds-ring 2s ease-out infinite}.live-monitor-page__ring--2{animation-delay:1s}.live-monitor-page__orb-wrap[data-mode=transfer] .live-monitor-page__orb{background:linear-gradient(135deg,var(--eds-amber-400),var(--eds-violet-500))}.live-monitor-page__confidence{font:500 12px/1 var(--eds-font-mono);color:var(--eds-slate-400)}.live-monitor-page__confidence[data-level=high]{color:var(--eds-green-400)}.live-monitor-page__confidence[data-level=low]{color:var(--eds-amber-400)}.live-monitor-page__sentiment-bar{height:6px;background:var(--eds-slate-800);border-radius:3px;overflow:hidden;margin-bottom:8px}.live-monitor-page__sentiment-fill{display:block;height:100%;border-radius:3px;background:var(--eds-green-400);transition:width .3s ease}.live-monitor-page__sentiment-fill[data-sentiment=frustrated],.live-monitor-page__sentiment-fill[data-sentiment=urgent]{background:var(--eds-red-400)}.live-monitor-page__sentiment-fill[data-sentiment=neutral]{background:var(--eds-amber-400)}.live-monitor-page__sentiment-label{font:500 12px/1 var(--eds-font-mono);color:var(--eds-slate-400);text-transform:capitalize}.live-monitor-page__tools{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;max-height:280px;overflow:auto}.live-monitor-page__tools li{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:start;padding:10px;border-radius:var(--eds-radius-md);background:var(--eds-slate-950);border-left:3px solid var(--eds-slate-700)}.live-monitor-page__tool-time{font:500 11px/1 var(--eds-font-mono);color:var(--eds-slate-500);white-space:nowrap}.live-monitor-page__tool-body{display:flex;flex-direction:column;gap:2px;min-width:0}.live-monitor-page__tool-name{font:600 13px/1.2 var(--eds-font-sans);color:var(--eds-gray-100)}.live-monitor-page__tool-result{font:400 12px/1.4 var(--eds-font-body);color:var(--eds-slate-400)}.live-monitor-page__tool-tech{font:500 10px/1 var(--eds-font-mono);color:var(--eds-slate-500)}.live-monitor-page__tool-spin{animation:eds-spin 1s linear infinite;color:var(--eds-brand-400)}.live-monitor-page__tool--ok{border-left-color:var(--eds-green-400)}.live-monitor-page__tool--warn{border-left-color:var(--eds-amber-400)}.live-monitor-page__tool--error{border-left-color:var(--eds-red-400)}.live-monitor-page__tool--active{border-left-color:var(--eds-brand-400)}.live-monitor-page__tools-empty{border-left:none!important;background:transparent!important;padding:8px 0!important;font:400 13px/1.4 var(--eds-font-body);color:var(--eds-slate-500)}.live-monitor-page__goal{margin:0;font:400 13px/1.5 var(--eds-font-body);color:var(--eds-slate-300)}.live-monitor-page__control-bar{position:sticky;bottom:0;display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:var(--eds-space-4);padding:12px 16px;border-radius:var(--eds-radius-lg);background:var(--eds-slate-900);border:1px solid var(--eds-slate-800);box-shadow:0 -8px 24px #03071780}.live-monitor-page__control-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.live-monitor-page__divider{width:1px;height:24px;background:var(--eds-slate-800);flex-shrink:0}.live-monitor-page__ctrl{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 14px;border:none;border-radius:var(--eds-radius-md);font:600 13px/1 var(--eds-font-sans);cursor:pointer;white-space:nowrap}.live-monitor-page__ctrl:disabled{opacity:.45;cursor:not-allowed}.live-monitor-page__ctrl--neutral{background:var(--eds-slate-800);color:var(--eds-gray-200)}.live-monitor-page__ctrl--neutral:hover:not(:disabled){background:var(--eds-slate-700)}.live-monitor-page__ctrl--primary{background:var(--eds-brand-600);color:#fff}.live-monitor-page__ctrl--primary:hover:not(:disabled){background:var(--eds-brand-500)}.live-monitor-page__ctrl--violet{background:#8e51ff2e;color:var(--eds-purple-300)}.live-monitor-page__ctrl--violet:hover:not(:disabled){background:var(--eds-violet-500);color:#fff}.live-monitor-page__ctrl--danger{margin-left:auto;background:var(--eds-red-500);color:#fff}.live-monitor-page__ctrl--danger:hover:not(:disabled){background:var(--eds-red-400)}@media(max-width:960px){.live-monitor-page__grid{grid-template-columns:1fr}.live-monitor-page__header-right{align-items:flex-start;width:100%;margin-left:0}.live-monitor-page__ctrl--danger{margin-left:0;width:100%;justify-content:center}}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: EdsAvatarComponent, selector: "eds-avatar", inputs: ["initials", "tone", "gradient"] }, { kind: "component", type: EdsIconComponent, selector: "eds-icon", inputs: ["name", "size", "fill", "weight"] }, { kind: "pipe", type: EdsElapsedPipe, name: "edsElapsed" }, { kind: "component", type: LiveTranscriptPanelComponent, selector: "eds-live-transcript-panel", inputs: ["live", "paused", "humanTakeover", "showStaffInput", "staffMessage"], outputs: ["staffMessageChange", "sendMessage"] }, { kind: "component", type: CallRecordingPlayerComponent, selector: "eds-call-recording-player", inputs: ["callId"], outputs: ["currentTimeChange", "durationChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
559
559
  }
560
560
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LiveMonitorPageComponent, decorators: [{
561
561
  type: Component,
@@ -567,8 +567,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
567
567
  EdsElapsedPipe,
568
568
  LiveTranscriptPanelComponent,
569
569
  CallRecordingPlayerComponent,
570
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"eds-page eds-page--dark live-monitor-page\">\n @if (loading()) {\n <p class=\"live-monitor-page__loading\">Loading call\u2026</p>\n } @else {\n @if (call(); as c) {\n <header class=\"live-monitor-page__header\">\n <a routerLink=\"../live\" class=\"live-monitor-page__back\" aria-label=\"Back to live calls\">\n <eds-icon name=\"arrow_back\" [size]=\"19\" />\n </a>\n\n <div class=\"live-monitor-page__header-main\">\n <eds-avatar\n [initials]=\"c.initials\"\n tone=\"brand\"\n [gradient]=\"c.matched\"\n [class.live-monitor-page__avatar--ring]=\"c.matched\"\n />\n\n <div class=\"live-monitor-page__caller\">\n <div class=\"live-monitor-page__name-row\">\n <h1 class=\"live-monitor-page__name\">{{ c.name }}</h1>\n <span class=\"live-monitor-page__patient-tag\" [attr.data-kind]=\"c.matched ? 'registered' : 'new'\">\n <eds-icon [name]=\"c.matched ? 'person_check' : 'person_add'\" [size]=\"14\" />\n {{ c.matched ? 'Registered' : 'New' }}\n </span>\n </div>\n <div class=\"live-monitor-page__meta-row\">\n <eds-icon [name]=\"c.direction === 'inbound' ? 'call_received' : 'call_made'\" [size]=\"14\" />\n <span>{{ c.phone }}</span>\n <span class=\"live-monitor-page__sep\">\u00B7</span>\n <span>{{ c.reason }}</span>\n </div>\n </div>\n\n <div class=\"live-monitor-page__header-right\">\n <span class=\"live-monitor-page__duration\">\n <span class=\"live-monitor-page__duration-dot\" aria-hidden=\"true\"></span>\n {{ c.started | edsElapsed }}\n </span>\n </div>\n </div>\n </header>\n\n @if (callEnded()) {\n <div class=\"live-monitor-page__completed-banner\" role=\"status\">\n <eds-icon name=\"check_circle\" [size]=\"18\" />\n Call ended\n </div>\n }\n\n <div class=\"live-monitor-page__grid\">\n <div class=\"live-monitor-page__main\">\n <eds-live-transcript-panel\n [live]=\"isLive()\"\n [paused]=\"isPaused()\"\n [humanTakeover]=\"isTakeover()\"\n [showStaffInput]=\"isTakeover() && !callEnded()\"\n [staffMessage]=\"staffMessage()\"\n (staffMessageChange)=\"staffMessage.set($event)\"\n (sendMessage)=\"sendMessage()\"\n />\n\n @if (callEnded()) {\n <section class=\"live-monitor-page__post-call\">\n <div class=\"live-monitor-page__summary\">\n <h2 class=\"live-monitor-page__section-title\">Call summary</h2>\n @if (summaryLoading()) {\n <p class=\"live-monitor-page__muted\">Generating summary\u2026</p>\n } @else if (summary()) {\n <p>{{ summary() }}</p>\n } @else {\n <p class=\"live-monitor-page__muted\">Summary will appear when processing completes.</p>\n }\n </div>\n <eds-call-recording-player [callId]=\"callId()\" />\n </section>\n }\n </div>\n\n <aside class=\"live-monitor-page__sidebar\">\n @if (!callEnded()) {\n <div class=\"live-monitor-page__orb-wrap\" [attr.data-mode]=\"c.status === 'transferring' ? 'transfer' : 'ai'\">\n <span class=\"live-monitor-page__ring live-monitor-page__ring--1\"></span>\n <span class=\"live-monitor-page__ring live-monitor-page__ring--2\"></span>\n <span class=\"live-monitor-page__orb\">\n <eds-icon name=\"smart_toy\" [size]=\"28\" />\n </span>\n <span class=\"live-monitor-page__confidence\" [attr.data-level]=\"confidenceLevel(c.confidence)\">\n AI confidence {{ c.confidence }}%\n </span>\n </div>\n\n <section class=\"live-monitor-page__sidebar-block\">\n <h3 class=\"live-monitor-page__section-title\">Patient sentiment</h3>\n <div class=\"live-monitor-page__sentiment-bar\">\n <span\n class=\"live-monitor-page__sentiment-fill\"\n [style.width.%]=\"sentimentPercent(c.sentiment)\"\n [attr.data-sentiment]=\"c.sentiment\"\n ></span>\n </div>\n <span class=\"live-monitor-page__sentiment-label\">{{ c.sentiment }}</span>\n </section>\n }\n\n <section class=\"live-monitor-page__sidebar-block\">\n <h3 class=\"live-monitor-page__section-title\">Tools used</h3>\n <ul class=\"live-monitor-page__tools\">\n @for (tool of liveTools(); track toolTrackKey(tool, $index)) {\n <li [class]=\"toolStateClass(tool.state)\">\n <span class=\"live-monitor-page__tool-time\">{{ tool.t }}</span>\n <div class=\"live-monitor-page__tool-body\">\n <span class=\"live-monitor-page__tool-name\">{{ tool.name }}</span>\n <span class=\"live-monitor-page__tool-result\">{{ tool.result }}</span>\n </div>\n @if (tool.state === 'active') {\n <eds-icon name=\"sync\" [size]=\"16\" class=\"live-monitor-page__tool-spin\" />\n }\n </li>\n } @empty {\n <li class=\"live-monitor-page__tools-empty\">No tool activity yet.</li>\n }\n </ul>\n </section>\n\n <section class=\"live-monitor-page__sidebar-block\">\n <h3 class=\"live-monitor-page__section-title\">Goal</h3>\n <p class=\"live-monitor-page__goal\">{{ c.goal }}</p>\n </section>\n </aside>\n </div>\n\n @if (!callEnded()) {\n <footer class=\"live-monitor-page__control-bar\">\n <div class=\"live-monitor-page__control-group\">\n @if (isTakeover()) {\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--violet\" (click)=\"resumeAi()\">\n <eds-icon name=\"smart_toy\" [size]=\"18\" /> Resume AI\n </button>\n } @else {\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--primary\" (click)=\"takeover()\">\n <eds-icon name=\"pan_tool_alt\" [size]=\"18\" /> Take over\n </button>\n }\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" disabled title=\"Coming soon\">\n <eds-icon name=\"hearing\" [size]=\"18\" /> Listen\n </button>\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" (click)=\"transfer()\">\n <eds-icon name=\"phone_forwarded\" [size]=\"18\" /> Transfer\n </button>\n </div>\n\n <span class=\"live-monitor-page__divider\" aria-hidden=\"true\"></span>\n\n <div class=\"live-monitor-page__control-group\">\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" disabled title=\"Coming soon\">\n <eds-icon name=\"person_search\" [size]=\"18\" /> Open chart\n </button>\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" disabled title=\"Coming soon\">\n <eds-icon name=\"add_task\" [size]=\"18\" /> Create task\n </button>\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" disabled title=\"Coming soon\">\n <eds-icon name=\"edit_note\" [size]=\"18\" /> Add note\n </button>\n </div>\n\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--danger\" (click)=\"endCall()\">\n <eds-icon name=\"call_end\" [size]=\"18\" /> End call\n </button>\n </footer>\n }\n } @else {\n <p class=\"live-monitor-page__loading\">Call ended or not found.</p>\n }\n }\n</div>\n", styles: [".live-monitor-page{display:flex;flex-direction:column;min-height:calc(100vh - var(--eds-topbar-height));padding:var(--space-5);color:var(--gray-200)}.live-monitor-page__loading{font:400 13px/1.4 var(--font-body);color:var(--slate-400)}.live-monitor-page__header{display:flex;align-items:flex-start;gap:12px;margin-bottom:var(--space-4)}.live-monitor-page__back{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-md);background:var(--slate-900);border:1px solid var(--slate-800);color:var(--gray-300);text-decoration:none;flex-shrink:0}.live-monitor-page__back:hover{background:var(--slate-800)}.live-monitor-page__header-main{flex:1;display:flex;align-items:center;gap:14px;min-width:0;flex-wrap:wrap}.live-monitor-page__avatar--ring{box-shadow:0 0 0 2px var(--brand-500)}.live-monitor-page__caller{flex:1;min-width:200px}.live-monitor-page__name-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.live-monitor-page__name{margin:0;font:700 18px/22px var(--font-sans);color:var(--gray-100)}.live-monitor-page__patient-tag{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--radius-pill);font:500 11px/1 var(--font-mono);border:1px solid transparent}.live-monitor-page__patient-tag[data-kind=registered]{color:var(--green-400);background:#0abf5224;border-color:#0abf5247}.live-monitor-page__patient-tag[data-kind=new]{color:var(--brand-300);background:#3681f424;border-color:#3681f44d}.live-monitor-page__meta-row{display:flex;align-items:center;gap:6px;margin-top:4px;font:500 12px/1 var(--font-mono);color:var(--slate-400);flex-wrap:wrap}.live-monitor-page__sep{color:var(--slate-600)}.live-monitor-page__header-right{display:flex;flex-direction:column;align-items:flex-end;gap:4px;margin-left:auto}.live-monitor-page__duration{display:inline-flex;align-items:center;gap:8px;font:700 22px/1 var(--font-mono);color:var(--gray-100)}.live-monitor-page__duration-dot{width:9px;height:9px;border-radius:50%;background:var(--green-400);box-shadow:0 0 0 3px #0abf5224}.live-monitor-page__completed-banner{display:flex;align-items:center;gap:8px;padding:10px 14px;margin-bottom:var(--space-4);border-radius:var(--radius-lg);background:#0abf521f;color:var(--green-400);font:400 13px/1.4 var(--font-body)}.live-monitor-page__grid{display:grid;grid-template-columns:1fr 340px;gap:var(--space-4);flex:1;min-height:0}.live-monitor-page__main{display:flex;flex-direction:column;gap:var(--space-4);min-height:0}.live-monitor-page__main-tabs{display:flex;gap:4px;padding:4px;border-radius:var(--radius-md);background:var(--slate-900);border:1px solid var(--slate-800);width:fit-content}.live-monitor-page__main-tab{border:none;background:transparent;color:var(--slate-400);font:600 12px/1 var(--font-body);padding:8px 14px;border-radius:var(--radius-sm);cursor:pointer}.live-monitor-page__main-tab--active{background:var(--slate-800);color:var(--gray-100)}.live-monitor-page__api-logs{flex:1;min-height:280px;padding:16px;background:var(--slate-900);border:1px solid var(--slate-800)}.live-monitor-page__post-call{display:flex;flex-direction:column;gap:var(--space-4)}.live-monitor-page__summary{padding:16px;border-radius:var(--radius-lg);background:var(--slate-900);border:1px solid var(--slate-800);font:400 13px/1.5 var(--font-body);color:var(--slate-300)}.live-monitor-page__muted{color:var(--slate-500);margin:0}.live-monitor-page__sidebar{display:flex;flex-direction:column;gap:var(--space-4);min-height:0}.live-monitor-page__sidebar-block{padding:16px;border-radius:var(--radius-lg);background:var(--slate-900);border:1px solid var(--slate-800)}.live-monitor-page__section-title{margin:0 0 12px;font:600 11px/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--slate-400)}.live-monitor-page__orb-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px 16px;border-radius:var(--radius-lg);background:var(--slate-900);border:1px solid var(--slate-800);position:relative}.live-monitor-page__orb{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(135deg,var(--brand-500),var(--violet-500));animation:eds-breathe 3s ease-in-out infinite;position:relative;z-index:1}.live-monitor-page__ring{position:absolute;width:64px;height:64px;top:20px;border-radius:50%;border:2px solid var(--brand-400);animation:eds-ring 2s ease-out infinite}.live-monitor-page__ring--2{animation-delay:1s}.live-monitor-page__orb-wrap[data-mode=transfer] .live-monitor-page__orb{background:linear-gradient(135deg,var(--amber-400),var(--violet-500))}.live-monitor-page__confidence{font:500 12px/1 var(--font-mono);color:var(--slate-400)}.live-monitor-page__confidence[data-level=high]{color:var(--green-400)}.live-monitor-page__confidence[data-level=low]{color:var(--amber-400)}.live-monitor-page__sentiment-bar{height:6px;background:var(--slate-800);border-radius:3px;overflow:hidden;margin-bottom:8px}.live-monitor-page__sentiment-fill{display:block;height:100%;border-radius:3px;background:var(--green-400);transition:width .3s ease}.live-monitor-page__sentiment-fill[data-sentiment=frustrated],.live-monitor-page__sentiment-fill[data-sentiment=urgent]{background:var(--red-400)}.live-monitor-page__sentiment-fill[data-sentiment=neutral]{background:var(--amber-400)}.live-monitor-page__sentiment-label{font:500 12px/1 var(--font-mono);color:var(--slate-400);text-transform:capitalize}.live-monitor-page__tools{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;max-height:280px;overflow:auto}.live-monitor-page__tools li{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:start;padding:10px;border-radius:var(--radius-md);background:var(--slate-950);border-left:3px solid var(--slate-700)}.live-monitor-page__tool-time{font:500 11px/1 var(--font-mono);color:var(--slate-500);white-space:nowrap}.live-monitor-page__tool-body{display:flex;flex-direction:column;gap:2px;min-width:0}.live-monitor-page__tool-name{font:600 13px/1.2 var(--font-sans);color:var(--gray-100)}.live-monitor-page__tool-result{font:400 12px/1.4 var(--font-body);color:var(--slate-400)}.live-monitor-page__tool-tech{font:500 10px/1 var(--font-mono);color:var(--slate-500)}.live-monitor-page__tool-spin{animation:eds-spin 1s linear infinite;color:var(--brand-400)}.live-monitor-page__tool--ok{border-left-color:var(--green-400)}.live-monitor-page__tool--warn{border-left-color:var(--amber-400)}.live-monitor-page__tool--error{border-left-color:var(--red-400)}.live-monitor-page__tool--active{border-left-color:var(--brand-400)}.live-monitor-page__tools-empty{border-left:none!important;background:transparent!important;padding:8px 0!important;font:400 13px/1.4 var(--font-body);color:var(--slate-500)}.live-monitor-page__goal{margin:0;font:400 13px/1.5 var(--font-body);color:var(--slate-300)}.live-monitor-page__control-bar{position:sticky;bottom:0;display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:var(--space-4);padding:12px 16px;border-radius:var(--radius-lg);background:var(--slate-900);border:1px solid var(--slate-800);box-shadow:0 -8px 24px #03071780}.live-monitor-page__control-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.live-monitor-page__divider{width:1px;height:24px;background:var(--slate-800);flex-shrink:0}.live-monitor-page__ctrl{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 14px;border:none;border-radius:var(--radius-md);font:600 13px/1 var(--font-sans);cursor:pointer;white-space:nowrap}.live-monitor-page__ctrl:disabled{opacity:.45;cursor:not-allowed}.live-monitor-page__ctrl--neutral{background:var(--slate-800);color:var(--gray-200)}.live-monitor-page__ctrl--neutral:hover:not(:disabled){background:var(--slate-700)}.live-monitor-page__ctrl--primary{background:var(--brand-600);color:#fff}.live-monitor-page__ctrl--primary:hover:not(:disabled){background:var(--brand-500)}.live-monitor-page__ctrl--violet{background:#8e51ff2e;color:var(--purple-300)}.live-monitor-page__ctrl--violet:hover:not(:disabled){background:var(--violet-500);color:#fff}.live-monitor-page__ctrl--danger{margin-left:auto;background:var(--red-500);color:#fff}.live-monitor-page__ctrl--danger:hover:not(:disabled){background:var(--red-400)}@media(max-width:960px){.live-monitor-page__grid{grid-template-columns:1fr}.live-monitor-page__header-right{align-items:flex-start;width:100%;margin-left:0}.live-monitor-page__ctrl--danger{margin-left:0;width:100%;justify-content:center}}\n"] }]
570
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"eds-page eds-page--dark live-monitor-page\">\n @if (loading()) {\n <p class=\"live-monitor-page__loading\">Loading call\u2026</p>\n } @else {\n @if (call(); as c) {\n <header class=\"live-monitor-page__header\">\n <a routerLink=\"../live\" class=\"live-monitor-page__back\" aria-label=\"Back to live calls\">\n <eds-icon name=\"arrow_back\" [size]=\"19\" />\n </a>\n\n <div class=\"live-monitor-page__header-main\">\n <eds-avatar\n [initials]=\"c.initials\"\n tone=\"brand\"\n [gradient]=\"c.matched\"\n [class.live-monitor-page__avatar--ring]=\"c.matched\"\n />\n\n <div class=\"live-monitor-page__caller\">\n <div class=\"live-monitor-page__name-row\">\n <h1 class=\"live-monitor-page__name\">{{ c.name }}</h1>\n <span class=\"live-monitor-page__patient-tag\" [attr.data-kind]=\"c.matched ? 'registered' : 'new'\">\n <eds-icon [name]=\"c.matched ? 'person_check' : 'person_add'\" [size]=\"14\" />\n {{ c.matched ? 'Registered' : 'New' }}\n </span>\n </div>\n <div class=\"live-monitor-page__meta-row\">\n <eds-icon [name]=\"c.direction === 'inbound' ? 'call_received' : 'call_made'\" [size]=\"14\" />\n <span>{{ c.phone }}</span>\n <span class=\"live-monitor-page__sep\">\u00B7</span>\n <span>{{ c.reason }}</span>\n </div>\n </div>\n\n <div class=\"live-monitor-page__header-right\">\n <span class=\"live-monitor-page__duration\">\n <span class=\"live-monitor-page__duration-dot\" aria-hidden=\"true\"></span>\n {{ c.started | edsElapsed }}\n </span>\n </div>\n </div>\n </header>\n\n @if (callEnded()) {\n <div class=\"live-monitor-page__completed-banner\" role=\"status\">\n <eds-icon name=\"check_circle\" [size]=\"18\" />\n Call ended\n </div>\n }\n\n <div class=\"live-monitor-page__grid\">\n <div class=\"live-monitor-page__main\">\n <eds-live-transcript-panel\n [live]=\"isLive()\"\n [paused]=\"isPaused()\"\n [humanTakeover]=\"isTakeover()\"\n [showStaffInput]=\"isTakeover() && !callEnded()\"\n [staffMessage]=\"staffMessage()\"\n (staffMessageChange)=\"staffMessage.set($event)\"\n (sendMessage)=\"sendMessage()\"\n />\n\n @if (callEnded()) {\n <section class=\"live-monitor-page__post-call\">\n <div class=\"live-monitor-page__summary\">\n <h2 class=\"live-monitor-page__section-title\">Call summary</h2>\n @if (summaryLoading()) {\n <p class=\"live-monitor-page__muted\">Generating summary\u2026</p>\n } @else if (summary()) {\n <p>{{ summary() }}</p>\n } @else {\n <p class=\"live-monitor-page__muted\">Summary will appear when processing completes.</p>\n }\n </div>\n <eds-call-recording-player [callId]=\"callId()\" />\n </section>\n }\n </div>\n\n <aside class=\"live-monitor-page__sidebar\">\n @if (!callEnded()) {\n <div class=\"live-monitor-page__orb-wrap\" [attr.data-mode]=\"c.status === 'transferring' ? 'transfer' : 'ai'\">\n <span class=\"live-monitor-page__ring live-monitor-page__ring--1\"></span>\n <span class=\"live-monitor-page__ring live-monitor-page__ring--2\"></span>\n <span class=\"live-monitor-page__orb\">\n <eds-icon name=\"smart_toy\" [size]=\"28\" />\n </span>\n <span class=\"live-monitor-page__confidence\" [attr.data-level]=\"confidenceLevel(c.confidence)\">\n AI confidence {{ c.confidence }}%\n </span>\n </div>\n\n <section class=\"live-monitor-page__sidebar-block\">\n <h3 class=\"live-monitor-page__section-title\">Patient sentiment</h3>\n <div class=\"live-monitor-page__sentiment-bar\">\n <span\n class=\"live-monitor-page__sentiment-fill\"\n [style.width.%]=\"sentimentPercent(c.sentiment)\"\n [attr.data-sentiment]=\"c.sentiment\"\n ></span>\n </div>\n <span class=\"live-monitor-page__sentiment-label\">{{ c.sentiment }}</span>\n </section>\n }\n\n <section class=\"live-monitor-page__sidebar-block\">\n <h3 class=\"live-monitor-page__section-title\">Tools used</h3>\n <ul class=\"live-monitor-page__tools\">\n @for (tool of liveTools(); track toolTrackKey(tool, $index)) {\n <li [class]=\"toolStateClass(tool.state)\">\n <span class=\"live-monitor-page__tool-time\">{{ tool.t }}</span>\n <div class=\"live-monitor-page__tool-body\">\n <span class=\"live-monitor-page__tool-name\">{{ tool.name }}</span>\n <span class=\"live-monitor-page__tool-result\">{{ tool.result }}</span>\n </div>\n @if (tool.state === 'active') {\n <eds-icon name=\"sync\" [size]=\"16\" class=\"live-monitor-page__tool-spin\" />\n }\n </li>\n } @empty {\n <li class=\"live-monitor-page__tools-empty\">No tool activity yet.</li>\n }\n </ul>\n </section>\n\n <section class=\"live-monitor-page__sidebar-block\">\n <h3 class=\"live-monitor-page__section-title\">Goal</h3>\n <p class=\"live-monitor-page__goal\">{{ c.goal }}</p>\n </section>\n </aside>\n </div>\n\n @if (!callEnded()) {\n <footer class=\"live-monitor-page__control-bar\">\n <div class=\"live-monitor-page__control-group\">\n @if (isTakeover()) {\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--violet\" (click)=\"resumeAi()\">\n <eds-icon name=\"smart_toy\" [size]=\"18\" /> Resume AI\n </button>\n } @else {\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--primary\" (click)=\"takeover()\">\n <eds-icon name=\"pan_tool_alt\" [size]=\"18\" /> Take over\n </button>\n }\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" disabled title=\"Coming soon\">\n <eds-icon name=\"hearing\" [size]=\"18\" /> Listen\n </button>\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" (click)=\"transfer()\">\n <eds-icon name=\"phone_forwarded\" [size]=\"18\" /> Transfer\n </button>\n </div>\n\n <span class=\"live-monitor-page__divider\" aria-hidden=\"true\"></span>\n\n <div class=\"live-monitor-page__control-group\">\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" disabled title=\"Coming soon\">\n <eds-icon name=\"person_search\" [size]=\"18\" /> Open chart\n </button>\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" disabled title=\"Coming soon\">\n <eds-icon name=\"add_task\" [size]=\"18\" /> Create task\n </button>\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--neutral\" disabled title=\"Coming soon\">\n <eds-icon name=\"edit_note\" [size]=\"18\" /> Add note\n </button>\n </div>\n\n <button type=\"button\" class=\"live-monitor-page__ctrl live-monitor-page__ctrl--danger\" (click)=\"endCall()\">\n <eds-icon name=\"call_end\" [size]=\"18\" /> End call\n </button>\n </footer>\n }\n } @else {\n <p class=\"live-monitor-page__loading\">Call ended or not found.</p>\n }\n }\n</div>\n", styles: [".live-monitor-page{display:flex;flex-direction:column;min-height:calc(100vh - var(--eds-topbar-height));padding:var(--eds-space-5);color:var(--eds-gray-200)}.live-monitor-page__loading{font:400 13px/1.4 var(--eds-font-body);color:var(--eds-slate-400)}.live-monitor-page__header{display:flex;align-items:flex-start;gap:12px;margin-bottom:var(--eds-space-4)}.live-monitor-page__back{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--eds-radius-md);background:var(--eds-slate-900);border:1px solid var(--eds-slate-800);color:var(--eds-gray-300);text-decoration:none;flex-shrink:0}.live-monitor-page__back:hover{background:var(--eds-slate-800)}.live-monitor-page__header-main{flex:1;display:flex;align-items:center;gap:14px;min-width:0;flex-wrap:wrap}.live-monitor-page__avatar--ring{box-shadow:0 0 0 2px var(--eds-brand-500)}.live-monitor-page__caller{flex:1;min-width:200px}.live-monitor-page__name-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.live-monitor-page__name{margin:0;font:700 18px/22px var(--eds-font-sans);color:var(--eds-gray-100)}.live-monitor-page__patient-tag{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--eds-radius-pill);font:500 11px/1 var(--eds-font-mono);border:1px solid transparent}.live-monitor-page__patient-tag[data-kind=registered]{color:var(--eds-green-400);background:#0abf5224;border-color:#0abf5247}.live-monitor-page__patient-tag[data-kind=new]{color:var(--eds-brand-300);background:#3681f424;border-color:#3681f44d}.live-monitor-page__meta-row{display:flex;align-items:center;gap:6px;margin-top:4px;font:500 12px/1 var(--eds-font-mono);color:var(--eds-slate-400);flex-wrap:wrap}.live-monitor-page__sep{color:var(--eds-slate-600)}.live-monitor-page__header-right{display:flex;flex-direction:column;align-items:flex-end;gap:4px;margin-left:auto}.live-monitor-page__duration{display:inline-flex;align-items:center;gap:8px;font:700 22px/1 var(--eds-font-mono);color:var(--eds-gray-100)}.live-monitor-page__duration-dot{width:9px;height:9px;border-radius:50%;background:var(--eds-green-400);box-shadow:0 0 0 3px #0abf5224}.live-monitor-page__completed-banner{display:flex;align-items:center;gap:8px;padding:10px 14px;margin-bottom:var(--eds-space-4);border-radius:var(--eds-radius-lg);background:#0abf521f;color:var(--eds-green-400);font:400 13px/1.4 var(--eds-font-body)}.live-monitor-page__grid{display:grid;grid-template-columns:1fr 340px;gap:var(--eds-space-4);flex:1;min-height:0}.live-monitor-page__main{display:flex;flex-direction:column;gap:var(--eds-space-4);min-height:0}.live-monitor-page__main-tabs{display:flex;gap:4px;padding:4px;border-radius:var(--eds-radius-md);background:var(--eds-slate-900);border:1px solid var(--eds-slate-800);width:fit-content}.live-monitor-page__main-tab{border:none;background:transparent;color:var(--eds-slate-400);font:600 12px/1 var(--eds-font-body);padding:8px 14px;border-radius:var(--eds-radius-sm);cursor:pointer}.live-monitor-page__main-tab--active{background:var(--eds-slate-800);color:var(--eds-gray-100)}.live-monitor-page__api-logs{flex:1;min-height:280px;padding:16px;background:var(--eds-slate-900);border:1px solid var(--eds-slate-800)}.live-monitor-page__post-call{display:flex;flex-direction:column;gap:var(--eds-space-4)}.live-monitor-page__summary{padding:16px;border-radius:var(--eds-radius-lg);background:var(--eds-slate-900);border:1px solid var(--eds-slate-800);font:400 13px/1.5 var(--eds-font-body);color:var(--eds-slate-300)}.live-monitor-page__muted{color:var(--eds-slate-500);margin:0}.live-monitor-page__sidebar{display:flex;flex-direction:column;gap:var(--eds-space-4);min-height:0}.live-monitor-page__sidebar-block{padding:16px;border-radius:var(--eds-radius-lg);background:var(--eds-slate-900);border:1px solid var(--eds-slate-800)}.live-monitor-page__section-title{margin:0 0 12px;font:600 11px/1 var(--eds-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--eds-slate-400)}.live-monitor-page__orb-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px 16px;border-radius:var(--eds-radius-lg);background:var(--eds-slate-900);border:1px solid var(--eds-slate-800);position:relative}.live-monitor-page__orb{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(135deg,var(--eds-brand-500),var(--eds-violet-500));animation:eds-breathe 3s ease-in-out infinite;position:relative;z-index:1}.live-monitor-page__ring{position:absolute;width:64px;height:64px;top:20px;border-radius:50%;border:2px solid var(--eds-brand-400);animation:eds-ring 2s ease-out infinite}.live-monitor-page__ring--2{animation-delay:1s}.live-monitor-page__orb-wrap[data-mode=transfer] .live-monitor-page__orb{background:linear-gradient(135deg,var(--eds-amber-400),var(--eds-violet-500))}.live-monitor-page__confidence{font:500 12px/1 var(--eds-font-mono);color:var(--eds-slate-400)}.live-monitor-page__confidence[data-level=high]{color:var(--eds-green-400)}.live-monitor-page__confidence[data-level=low]{color:var(--eds-amber-400)}.live-monitor-page__sentiment-bar{height:6px;background:var(--eds-slate-800);border-radius:3px;overflow:hidden;margin-bottom:8px}.live-monitor-page__sentiment-fill{display:block;height:100%;border-radius:3px;background:var(--eds-green-400);transition:width .3s ease}.live-monitor-page__sentiment-fill[data-sentiment=frustrated],.live-monitor-page__sentiment-fill[data-sentiment=urgent]{background:var(--eds-red-400)}.live-monitor-page__sentiment-fill[data-sentiment=neutral]{background:var(--eds-amber-400)}.live-monitor-page__sentiment-label{font:500 12px/1 var(--eds-font-mono);color:var(--eds-slate-400);text-transform:capitalize}.live-monitor-page__tools{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;max-height:280px;overflow:auto}.live-monitor-page__tools li{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:start;padding:10px;border-radius:var(--eds-radius-md);background:var(--eds-slate-950);border-left:3px solid var(--eds-slate-700)}.live-monitor-page__tool-time{font:500 11px/1 var(--eds-font-mono);color:var(--eds-slate-500);white-space:nowrap}.live-monitor-page__tool-body{display:flex;flex-direction:column;gap:2px;min-width:0}.live-monitor-page__tool-name{font:600 13px/1.2 var(--eds-font-sans);color:var(--eds-gray-100)}.live-monitor-page__tool-result{font:400 12px/1.4 var(--eds-font-body);color:var(--eds-slate-400)}.live-monitor-page__tool-tech{font:500 10px/1 var(--eds-font-mono);color:var(--eds-slate-500)}.live-monitor-page__tool-spin{animation:eds-spin 1s linear infinite;color:var(--eds-brand-400)}.live-monitor-page__tool--ok{border-left-color:var(--eds-green-400)}.live-monitor-page__tool--warn{border-left-color:var(--eds-amber-400)}.live-monitor-page__tool--error{border-left-color:var(--eds-red-400)}.live-monitor-page__tool--active{border-left-color:var(--eds-brand-400)}.live-monitor-page__tools-empty{border-left:none!important;background:transparent!important;padding:8px 0!important;font:400 13px/1.4 var(--eds-font-body);color:var(--eds-slate-500)}.live-monitor-page__goal{margin:0;font:400 13px/1.5 var(--eds-font-body);color:var(--eds-slate-300)}.live-monitor-page__control-bar{position:sticky;bottom:0;display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:var(--eds-space-4);padding:12px 16px;border-radius:var(--eds-radius-lg);background:var(--eds-slate-900);border:1px solid var(--eds-slate-800);box-shadow:0 -8px 24px #03071780}.live-monitor-page__control-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.live-monitor-page__divider{width:1px;height:24px;background:var(--eds-slate-800);flex-shrink:0}.live-monitor-page__ctrl{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 14px;border:none;border-radius:var(--eds-radius-md);font:600 13px/1 var(--eds-font-sans);cursor:pointer;white-space:nowrap}.live-monitor-page__ctrl:disabled{opacity:.45;cursor:not-allowed}.live-monitor-page__ctrl--neutral{background:var(--eds-slate-800);color:var(--eds-gray-200)}.live-monitor-page__ctrl--neutral:hover:not(:disabled){background:var(--eds-slate-700)}.live-monitor-page__ctrl--primary{background:var(--eds-brand-600);color:#fff}.live-monitor-page__ctrl--primary:hover:not(:disabled){background:var(--eds-brand-500)}.live-monitor-page__ctrl--violet{background:#8e51ff2e;color:var(--eds-purple-300)}.live-monitor-page__ctrl--violet:hover:not(:disabled){background:var(--eds-violet-500);color:#fff}.live-monitor-page__ctrl--danger{margin-left:auto;background:var(--eds-red-500);color:#fff}.live-monitor-page__ctrl--danger:hover:not(:disabled){background:var(--eds-red-400)}@media(max-width:960px){.live-monitor-page__grid{grid-template-columns:1fr}.live-monitor-page__header-right{align-items:flex-start;width:100%;margin-left:0}.live-monitor-page__ctrl--danger{margin-left:0;width:100%;justify-content:center}}\n"] }]
571
571
  }], ctorParameters: () => [] });
572
572
 
573
573
  export { LiveMonitorPageComponent };
574
- //# sourceMappingURL=edvak99-voice-receptionist-widget-live-monitor-page.component-D7dlk0y2.mjs.map
574
+ //# sourceMappingURL=edvak99-voice-receptionist-widget-live-monitor-page.component-DNpLFqBw.mjs.map