@edvak99/voice-receptionist-widget 1.1.26 → 1.1.29

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 (1321) hide show
  1. package/README.md +166 -166
  2. package/fesm2022/edvak99-voice-receptionist-widget-activities-page.component-W_1bE_i2.mjs +537 -0
  3. package/fesm2022/edvak99-voice-receptionist-widget-activities-page.component-W_1bE_i2.mjs.map +1 -0
  4. package/fesm2022/edvak99-voice-receptionist-widget-analytics-page.component-BYnys-zI.mjs +462 -0
  5. package/fesm2022/edvak99-voice-receptionist-widget-analytics-page.component-BYnys-zI.mjs.map +1 -0
  6. package/fesm2022/edvak99-voice-receptionist-widget-audit-page.component-CT-iaUNh.mjs +107 -0
  7. package/fesm2022/edvak99-voice-receptionist-widget-audit-page.component-CT-iaUNh.mjs.map +1 -0
  8. package/fesm2022/edvak99-voice-receptionist-widget-call-history-detail-page.component-DtCUvToS.mjs +348 -0
  9. package/fesm2022/edvak99-voice-receptionist-widget-call-history-detail-page.component-DtCUvToS.mjs.map +1 -0
  10. package/fesm2022/edvak99-voice-receptionist-widget-call-history-page.component-Cp-Woc1p.mjs +265 -0
  11. package/fesm2022/edvak99-voice-receptionist-widget-call-history-page.component-Cp-Woc1p.mjs.map +1 -0
  12. package/fesm2022/edvak99-voice-receptionist-widget-call-recording-player.component-Dy_81fZi.mjs +109 -0
  13. package/fesm2022/edvak99-voice-receptionist-widget-call-recording-player.component-Dy_81fZi.mjs.map +1 -0
  14. package/fesm2022/{edvak99-voice-receptionist-widget-call-review.service-DhLqgadd.mjs → edvak99-voice-receptionist-widget-call-review.service-D2-DDL-t.mjs} +2 -2
  15. package/fesm2022/edvak99-voice-receptionist-widget-call-review.service-D2-DDL-t.mjs.map +1 -0
  16. package/fesm2022/edvak99-voice-receptionist-widget-call-review.util-rWIPxDtQ.mjs.map +1 -1
  17. package/fesm2022/edvak99-voice-receptionist-widget-dashboard-page.component-Cwunrodb.mjs +310 -0
  18. package/fesm2022/edvak99-voice-receptionist-widget-dashboard-page.component-Cwunrodb.mjs.map +1 -0
  19. package/fesm2022/edvak99-voice-receptionist-widget-eds-elapsed.pipe-Dra7e7xN.mjs.map +1 -1
  20. package/fesm2022/edvak99-voice-receptionist-widget-eds-pulse-dot.component-B8yxY-7p.mjs.map +1 -1
  21. package/fesm2022/{edvak99-voice-receptionist-widget-eds-search-field.component-BDGCmkoP.mjs → edvak99-voice-receptionist-widget-eds-search-field.component-Bm4ay5d_.mjs} +36 -29
  22. package/fesm2022/edvak99-voice-receptionist-widget-eds-search-field.component-Bm4ay5d_.mjs.map +1 -0
  23. package/fesm2022/{edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-CabSa0_n.mjs → edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-DOYlRven.mjs} +68 -68
  24. package/fesm2022/edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-DOYlRven.mjs.map +1 -0
  25. package/fesm2022/edvak99-voice-receptionist-widget-live-calls-page.component-tJU0GeMR.mjs +437 -0
  26. package/fesm2022/edvak99-voice-receptionist-widget-live-calls-page.component-tJU0GeMR.mjs.map +1 -0
  27. package/fesm2022/edvak99-voice-receptionist-widget-live-monitor-page.component-CsZ2GN-b.mjs +1130 -0
  28. package/fesm2022/edvak99-voice-receptionist-widget-live-monitor-page.component-CsZ2GN-b.mjs.map +1 -0
  29. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purpose.util-Bdh4QfFe.mjs.map +1 -1
  30. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purposes-page.component-xTutBkx7.mjs +273 -0
  31. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purposes-page.component-xTutBkx7.mjs.map +1 -0
  32. package/fesm2022/{edvak99-voice-receptionist-widget-smart-tooltip.directive-ChEdIem3.mjs → edvak99-voice-receptionist-widget-smart-tooltip.directive-BSyOMZd4.mjs} +50 -50
  33. package/fesm2022/edvak99-voice-receptionist-widget-smart-tooltip.directive-BSyOMZd4.mjs.map +1 -0
  34. package/fesm2022/edvak99-voice-receptionist-widget-table-skeleton.constants-C1Dg9Z_2.mjs.map +1 -1
  35. package/fesm2022/edvak99-voice-receptionist-widget-task-detail-drawer.component-fU9dsmkA.mjs +208 -0
  36. package/fesm2022/edvak99-voice-receptionist-widget-task-detail-drawer.component-fU9dsmkA.mjs.map +1 -0
  37. package/fesm2022/edvak99-voice-receptionist-widget-tasks-page.component-COk5Tyy3.mjs +154 -0
  38. package/fesm2022/edvak99-voice-receptionist-widget-tasks-page.component-COk5Tyy3.mjs.map +1 -0
  39. package/fesm2022/edvak99-voice-receptionist-widget-transcript-timing.util-Bbt6JFKa.mjs +107 -0
  40. package/fesm2022/edvak99-voice-receptionist-widget-transcript-timing.util-Bbt6JFKa.mjs.map +1 -0
  41. package/fesm2022/edvak99-voice-receptionist-widget-wizard-page.component-DhRrm_1S.mjs +47 -0
  42. package/fesm2022/edvak99-voice-receptionist-widget-wizard-page.component-DhRrm_1S.mjs.map +1 -0
  43. package/fesm2022/edvak99-voice-receptionist-widget.mjs +1 -1
  44. package/lib/components/call-conversation-panel/call-conversation-panel.component.d.ts +2 -1
  45. package/lib/components/call-recording-player/call-recording-player.component.d.ts +2 -1
  46. package/lib/models/live-transcript.types.d.ts +4 -0
  47. package/lib/pages/activities-page/activities-page.component.d.ts +1 -0
  48. package/lib/pages/analytics-page/analytics-page.component.d.ts +5 -1
  49. package/lib/pages/audit-page/audit-page.component.d.ts +5 -4
  50. package/lib/pages/call-history-detail-page/call-history-detail-page.component.d.ts +3 -1
  51. package/lib/pages/call-history-page/call-history-page.component.d.ts +5 -2
  52. package/lib/ui/eds-search-field.component.d.ts +1 -0
  53. package/package.json +1 -1
  54. package/src/assets/CkBuilder/LICENSE.md +49 -49
  55. package/src/assets/CkBuilder/README.md +68 -68
  56. package/src/assets/CkBuilder/build/ckeditor.js +5 -5
  57. package/src/assets/CkBuilder/webpack.config.js +97 -97
  58. package/src/assets/Mike/index.js +2 -2
  59. package/src/assets/annyang.js +724 -724
  60. package/src/assets/client.js +186 -186
  61. package/src/assets/css/Ed_style.scss +832 -832
  62. package/src/assets/css/_alerts.scss +65 -65
  63. package/src/assets/css/_animation.scss +87 -87
  64. package/src/assets/css/_api-log-chips.scss +30 -30
  65. package/src/assets/css/_avatar.scss +316 -316
  66. package/src/assets/css/_badge.scss +126 -126
  67. package/src/assets/css/_buttons.scss +110 -110
  68. package/src/assets/css/_checkbox_radio.scss +173 -173
  69. package/src/assets/css/_colors.scss +313 -313
  70. package/src/assets/css/_customfile_upload.scss +17 -17
  71. package/src/assets/css/_date_picker.scss +118 -118
  72. package/src/assets/css/_focus.scss +56 -56
  73. package/src/assets/css/_headings.scss +87 -87
  74. package/src/assets/css/_input.scss +152 -152
  75. package/src/assets/css/_list.scss +82 -82
  76. package/src/assets/css/_main-layout.scss +122 -122
  77. package/src/assets/css/_material_symbols.scss +31 -31
  78. package/src/assets/css/_ng-select.scss +123 -123
  79. package/src/assets/css/_resize-handler.directive.scss +45 -45
  80. package/src/assets/css/_root.scss +258 -258
  81. package/src/assets/css/_select.scss +71 -71
  82. package/src/assets/css/_smart-scroll.scss +93 -93
  83. package/src/assets/css/_smooth-scrollbar.scss +195 -195
  84. package/src/assets/css/_tables.scss +814 -814
  85. package/src/assets/css/_tabs.scss +22 -22
  86. package/src/assets/css/_tag.scss +17 -17
  87. package/src/assets/css/_zindex.scss +2 -2
  88. package/src/assets/css/animations.css +16 -16
  89. package/src/assets/css/custom-elements.scss +741 -741
  90. package/src/assets/css/font-awesome.css +4585 -4585
  91. package/src/assets/css/foxit/contextMenu.css +297 -297
  92. package/src/assets/css/foxit/datepicker.css +31931 -31931
  93. package/src/assets/css/foxit/foxit.css +8499 -8499
  94. package/src/assets/css/icons.scss +56 -56
  95. package/src/assets/css/masonrt.scss +36 -36
  96. package/src/assets/css/patient-portal-disclaimer-global.scss +68 -68
  97. package/src/assets/css/printstyle.css +839 -839
  98. package/src/assets/css/shoelace-edit.scss +512 -512
  99. package/src/assets/css/task-description-tiptap-global.scss +84 -84
  100. package/src/assets/css/themes/default.css +484 -484
  101. package/src/assets/css/themes/green-bright.css +484 -484
  102. package/src/assets/css/themes/light.css +471 -471
  103. package/src/assets/css/tour-guide.scss +238 -238
  104. package/src/assets/data/growth-chart/GROWTH_CHART_LMS.json +27201 -27201
  105. package/src/assets/fonts/call-hover.svg +6 -6
  106. package/src/assets/fonts/edvak-fonts.svg +49 -49
  107. package/src/assets/fonts/flaticon_mycollection.css +23 -23
  108. package/src/assets/fonts/flaticon_mycollection.html +463 -463
  109. package/src/assets/fonts/flaticon_mycollection.scss +29 -29
  110. package/src/assets/fonts/flaticon_mycollection.svg +15 -15
  111. package/src/assets/fonts/font_face.txt +233 -233
  112. package/src/assets/fonts/inter.css +566 -566
  113. package/src/assets/fonts/lato.css +71 -71
  114. package/src/assets/fonts/message-hover.svg +7 -7
  115. package/src/assets/fonts/notes-hover.svg +8 -8
  116. package/src/assets/fonts/poppins-v20-latin-100.svg +320 -320
  117. package/src/assets/fonts/poppins-v20-latin-100italic.svg +341 -341
  118. package/src/assets/fonts/poppins-v20-latin-200.svg +319 -319
  119. package/src/assets/fonts/poppins-v20-latin-200italic.svg +336 -336
  120. package/src/assets/fonts/poppins-v20-latin-300.svg +321 -321
  121. package/src/assets/fonts/poppins-v20-latin-300italic.svg +336 -336
  122. package/src/assets/fonts/poppins-v20-latin-500.svg +323 -323
  123. package/src/assets/fonts/poppins-v20-latin-500italic.svg +338 -338
  124. package/src/assets/fonts/poppins-v20-latin-600.svg +322 -322
  125. package/src/assets/fonts/poppins-v20-latin-600italic.svg +338 -338
  126. package/src/assets/fonts/poppins-v20-latin-700.svg +322 -322
  127. package/src/assets/fonts/poppins-v20-latin-700italic.svg +336 -336
  128. package/src/assets/fonts/poppins-v20-latin-800.svg +320 -320
  129. package/src/assets/fonts/poppins-v20-latin-800italic.svg +335 -335
  130. package/src/assets/fonts/poppins-v20-latin-900.svg +321 -321
  131. package/src/assets/fonts/poppins-v20-latin-900italic.svg +335 -335
  132. package/src/assets/fonts/poppins-v20-latin-italic.svg +336 -336
  133. package/src/assets/fonts/poppins-v20-latin-regular.svg +323 -323
  134. package/src/assets/fonts/schedule-hover.svg +13 -13
  135. package/src/assets/fonts/video-call-hover.svg +6 -6
  136. package/src/assets/home.css +151 -151
  137. package/src/assets/icons/AI.svg +15 -15
  138. package/src/assets/icons/AddressBook.svg +3 -3
  139. package/src/assets/icons/ArrowArcLeft.svg +3 -3
  140. package/src/assets/icons/ArrowCircleDownLeft.svg +3 -3
  141. package/src/assets/icons/ArrowClockwise.svg +3 -3
  142. package/src/assets/icons/ArrowLeft.svg +3 -3
  143. package/src/assets/icons/ArrowUpRight.svg +3 -3
  144. package/src/assets/icons/ArrowsCounterClockwise.svg +3 -3
  145. package/src/assets/icons/ArrowsLeftRight.svg +3 -3
  146. package/src/assets/icons/Avatar.svg +4 -4
  147. package/src/assets/icons/Baby.svg +3 -3
  148. package/src/assets/icons/BookOpenText.svg +3 -3
  149. package/src/assets/icons/CalendarCheck.svg +3 -3
  150. package/src/assets/icons/CalendarDot.svg +3 -3
  151. package/src/assets/icons/CalendarDots.svg +3 -3
  152. package/src/assets/icons/CalendarX.svg +3 -3
  153. package/src/assets/icons/Camera.svg +3 -3
  154. package/src/assets/icons/CameraDisable.svg +3 -3
  155. package/src/assets/icons/ChatText.svg +3 -3
  156. package/src/assets/icons/ClockCountdown.svg +3 -3
  157. package/src/assets/icons/ClockCounterClockwise.svg +3 -3
  158. package/src/assets/icons/ClockUser.svg +3 -3
  159. package/src/assets/icons/CloudCheck.svg +3 -3
  160. package/src/assets/icons/CrownSimple.svg +3 -3
  161. package/src/assets/icons/CurrencyDollar.svg +3 -3
  162. package/src/assets/icons/Desktop.svg +3 -3
  163. package/src/assets/icons/Encounter.svg +4 -4
  164. package/src/assets/icons/EnvelopeSimple.svg +3 -3
  165. package/src/assets/icons/FileDoc.svg +3 -3
  166. package/src/assets/icons/FilePdf.svg +3 -3
  167. package/src/assets/icons/FileText.svg +3 -3
  168. package/src/assets/icons/FileTextNew.svg +3 -3
  169. package/src/assets/icons/FileXml.svg +4 -4
  170. package/src/assets/icons/FirstAid.svg +3 -3
  171. package/src/assets/icons/Gif.svg +3 -3
  172. package/src/assets/icons/Globe.svg +3 -3
  173. package/src/assets/icons/HandPointing.svg +3 -3
  174. package/src/assets/icons/Headset.svg +5 -5
  175. package/src/assets/icons/Heart.svg +3 -3
  176. package/src/assets/icons/Image-ic.svg +3 -3
  177. package/src/assets/icons/Labs_Imaging.svg +8 -8
  178. package/src/assets/icons/Link.svg +3 -3
  179. package/src/assets/icons/LockSimple.svg +3 -3
  180. package/src/assets/icons/MapPin.svg +3 -3
  181. package/src/assets/icons/MapPin_new.svg +3 -3
  182. package/src/assets/icons/Microscope.svg +3 -3
  183. package/src/assets/icons/MinusCircle.svg +3 -3
  184. package/src/assets/icons/NoFile.svg +4 -4
  185. package/src/assets/icons/NotePencil.svg +3 -3
  186. package/src/assets/icons/Notepad.svg +3 -3
  187. package/src/assets/icons/OfficeChair.svg +3 -3
  188. package/src/assets/icons/Other Files.svg +3 -3
  189. package/src/assets/icons/PaperPlaneTilt.svg +3 -3
  190. package/src/assets/icons/Paperclip.svg +3 -3
  191. package/src/assets/icons/Password.svg +3 -3
  192. package/src/assets/icons/Phone.svg +3 -3
  193. package/src/assets/icons/Pulse.svg +3 -3
  194. package/src/assets/icons/Refund_Icon.svg +5 -5
  195. package/src/assets/icons/Refund_new.svg +5 -5
  196. package/src/assets/icons/Robot.svg +3 -3
  197. package/src/assets/icons/ShieldCheck.svg +3 -3
  198. package/src/assets/icons/Suitcase.svg +3 -3
  199. package/src/assets/icons/Table-ic.svg +3 -3
  200. package/src/assets/icons/TagSimple.svg +3 -3
  201. package/src/assets/icons/TextAlignLeft.svg +3 -3
  202. package/src/assets/icons/Translate.svg +3 -3
  203. package/src/assets/icons/Trash.svg +3 -3
  204. package/src/assets/icons/User.svg +3 -3
  205. package/src/assets/icons/UserCheck.svg +3 -3
  206. package/src/assets/icons/User_new.svg +10 -10
  207. package/src/assets/icons/Users.svg +3 -3
  208. package/src/assets/icons/WarningCircle.svg +3 -3
  209. package/src/assets/icons/accessibility.svg +8 -8
  210. package/src/assets/icons/account_tree.svg +8 -8
  211. package/src/assets/icons/add.svg +8 -8
  212. package/src/assets/icons/add_circle.svg +8 -8
  213. package/src/assets/icons/add_link.svg +8 -8
  214. package/src/assets/icons/add_reaction.svg +8 -8
  215. package/src/assets/icons/add_text.svg +3 -3
  216. package/src/assets/icons/admin_panel_settings.svg +8 -8
  217. package/src/assets/icons/ai_1.svg +4 -4
  218. package/src/assets/icons/ai_headset.svg +5 -5
  219. package/src/assets/icons/ai_new.svg +8 -8
  220. package/src/assets/icons/alarm.svg +8 -8
  221. package/src/assets/icons/alternate_email.svg +8 -8
  222. package/src/assets/icons/ambulance.svg +15 -15
  223. package/src/assets/icons/ambulance_2.svg +17 -17
  224. package/src/assets/icons/android.svg +6 -6
  225. package/src/assets/icons/appointments.svg +3 -3
  226. package/src/assets/icons/archive.svg +8 -8
  227. package/src/assets/icons/archive_new.svg +3 -3
  228. package/src/assets/icons/arrow-bar-right.svg +2 -2
  229. package/src/assets/icons/arrow-repeat.svg +3 -3
  230. package/src/assets/icons/arrow_back.svg +8 -8
  231. package/src/assets/icons/arrow_downward_alt.svg +8 -8
  232. package/src/assets/icons/arrow_drop_down.svg +8 -8
  233. package/src/assets/icons/arrow_fat_up.svg +3 -3
  234. package/src/assets/icons/arrow_left_alt.svg +8 -8
  235. package/src/assets/icons/arrow_right.svg +3 -3
  236. package/src/assets/icons/arrow_right_alt.svg +8 -8
  237. package/src/assets/icons/arrow_top_left.svg +8 -8
  238. package/src/assets/icons/arrow_upward.svg +8 -8
  239. package/src/assets/icons/arrow_upward_alt.svg +8 -8
  240. package/src/assets/icons/arrows_merge.svg +3 -3
  241. package/src/assets/icons/article-off.svg +8 -8
  242. package/src/assets/icons/article.svg +8 -8
  243. package/src/assets/icons/at.svg +2 -2
  244. package/src/assets/icons/atr.svg +8 -8
  245. package/src/assets/icons/attach_file.svg +8 -8
  246. package/src/assets/icons/attach_file_45.svg +8 -8
  247. package/src/assets/icons/attach_money.svg +8 -8
  248. package/src/assets/icons/attachment.svg +8 -8
  249. package/src/assets/icons/auto_awesome_mosaic.svg +8 -8
  250. package/src/assets/icons/auto_pay.xml +10 -10
  251. package/src/assets/icons/auto_pay_new.svg +8 -8
  252. package/src/assets/icons/backspace_fill.svg +8 -8
  253. package/src/assets/icons/bandaids.svg +3 -3
  254. package/src/assets/icons/bell_simple_ringing.svg +3 -3
  255. package/src/assets/icons/bell_simple_z.svg +3 -3
  256. package/src/assets/icons/block.svg +8 -8
  257. package/src/assets/icons/bolt.svg +8 -8
  258. package/src/assets/icons/bolt_ai.svg +3 -3
  259. package/src/assets/icons/bolt_new.svg +11 -11
  260. package/src/assets/icons/book_open.svg +3 -3
  261. package/src/assets/icons/border_color.svg +8 -8
  262. package/src/assets/icons/box_edit.svg +8 -8
  263. package/src/assets/icons/brightness_1.svg +8 -8
  264. package/src/assets/icons/bubble.svg +8 -8
  265. package/src/assets/icons/building_apartment.svg +3 -3
  266. package/src/assets/icons/cached.svg +8 -8
  267. package/src/assets/icons/calculate.svg +8 -8
  268. package/src/assets/icons/calendar-star.svg +3 -3
  269. package/src/assets/icons/calendar-x.svg +3 -3
  270. package/src/assets/icons/calendar_clock.svg +8 -8
  271. package/src/assets/icons/calendar_dot.svg +3 -3
  272. package/src/assets/icons/calendar_down.svg +9 -9
  273. package/src/assets/icons/calendar_month.svg +8 -8
  274. package/src/assets/icons/calendar_plus.svg +3 -3
  275. package/src/assets/icons/calendar_today.svg +8 -8
  276. package/src/assets/icons/calendar_up.svg +9 -9
  277. package/src/assets/icons/call-fill.svg +8 -8
  278. package/src/assets/icons/call.svg +8 -8
  279. package/src/assets/icons/call_fill.svg +8 -8
  280. package/src/assets/icons/call_made.svg +8 -8
  281. package/src/assets/icons/campaign.svg +8 -8
  282. package/src/assets/icons/cancel.svg +8 -8
  283. package/src/assets/icons/card-list.svg +3 -3
  284. package/src/assets/icons/caret_down.svg +3 -3
  285. package/src/assets/icons/caret_left.svg +3 -3
  286. package/src/assets/icons/caret_right.svg +3 -3
  287. package/src/assets/icons/caret_up.svg +3 -3
  288. package/src/assets/icons/cash.svg +16 -16
  289. package/src/assets/icons/changelog.svg +3 -3
  290. package/src/assets/icons/chart_data.svg +8 -8
  291. package/src/assets/icons/chartline.svg +3 -3
  292. package/src/assets/icons/chat.svg +8 -8
  293. package/src/assets/icons/chat_bubble.svg +8 -8
  294. package/src/assets/icons/chat_new.svg +3 -3
  295. package/src/assets/icons/chat_text.svg +3 -3
  296. package/src/assets/icons/check-circle-fill.svg +2 -2
  297. package/src/assets/icons/check-tooltip-success.svg +8 -8
  298. package/src/assets/icons/check.svg +15 -15
  299. package/src/assets/icons/check2-all.svg +3 -3
  300. package/src/assets/icons/check_circle.svg +8 -8
  301. package/src/assets/icons/check_circle_fill.svg +8 -8
  302. package/src/assets/icons/check_square.svg +3 -3
  303. package/src/assets/icons/chevron_left.svg +15 -15
  304. package/src/assets/icons/chevron_right.svg +8 -8
  305. package/src/assets/icons/circle-fill.svg +2 -2
  306. package/src/assets/icons/clinic.svg +3 -3
  307. package/src/assets/icons/clinic_settings.svg +3 -3
  308. package/src/assets/icons/clinical_notes.svg +8 -8
  309. package/src/assets/icons/clipboard-check.svg +4 -4
  310. package/src/assets/icons/clipboard_text.svg +3 -3
  311. package/src/assets/icons/clock-history.svg +4 -4
  312. package/src/assets/icons/clock.svg +3 -3
  313. package/src/assets/icons/clock_countdown.svg +3 -3
  314. package/src/assets/icons/clock_loader_40.svg +8 -8
  315. package/src/assets/icons/close_circle_fill.svg +4 -4
  316. package/src/assets/icons/collapse_content.svg +8 -8
  317. package/src/assets/icons/columns.svg +3 -3
  318. package/src/assets/icons/comment.svg +15 -15
  319. package/src/assets/icons/compare_arrows.svg +8 -8
  320. package/src/assets/icons/contact_page.svg +8 -8
  321. package/src/assets/icons/content_copy.svg +8 -8
  322. package/src/assets/icons/copy.svg +3 -3
  323. package/src/assets/icons/copy_all.svg +8 -8
  324. package/src/assets/icons/copy_simple.svg +3 -3
  325. package/src/assets/icons/create_new_folder.svg +8 -8
  326. package/src/assets/icons/credit_card.svg +8 -8
  327. package/src/assets/icons/cube.svg +3 -3
  328. package/src/assets/icons/currency_circle_dollar.svg +3 -3
  329. package/src/assets/icons/cursor_click.svg +3 -3
  330. package/src/assets/icons/custom_dropdown.svg +8 -8
  331. package/src/assets/icons/dangerous.svg +8 -8
  332. package/src/assets/icons/darwinIcon.svg +4 -4
  333. package/src/assets/icons/dash-circle.svg +3 -3
  334. package/src/assets/icons/dashboard_customize.svg +8 -8
  335. package/src/assets/icons/data_object.svg +8 -8
  336. package/src/assets/icons/data_object_bold.svg +8 -8
  337. package/src/assets/icons/delete.svg +8 -8
  338. package/src/assets/icons/demography.svg +8 -8
  339. package/src/assets/icons/derm-lesion.svg +3 -3
  340. package/src/assets/icons/derm-site.svg +2 -2
  341. package/src/assets/icons/description.svg +15 -15
  342. package/src/assets/icons/desktop_windows.svg +8 -8
  343. package/src/assets/icons/do_not_disturb_off.svg +8 -8
  344. package/src/assets/icons/do_not_disturb_on.svg +8 -8
  345. package/src/assets/icons/document_scanner.svg +8 -8
  346. package/src/assets/icons/dollar_note.svg +8 -8
  347. package/src/assets/icons/domain.svg +8 -8
  348. package/src/assets/icons/done_all.svg +8 -8
  349. package/src/assets/icons/dot.svg +2 -2
  350. package/src/assets/icons/dots_three.svg +3 -3
  351. package/src/assets/icons/download.svg +8 -8
  352. package/src/assets/icons/draft.svg +8 -8
  353. package/src/assets/icons/draw.svg +3 -3
  354. package/src/assets/icons/eFax.svg +17 -17
  355. package/src/assets/icons/east.svg +8 -8
  356. package/src/assets/icons/ecg.svg +8 -8
  357. package/src/assets/icons/ecg_heart.svg +8 -8
  358. package/src/assets/icons/ed-doctor.svg +15 -15
  359. package/src/assets/icons/ed-event_history.svg +8 -8
  360. package/src/assets/icons/ed-form-disable.svg +9 -9
  361. package/src/assets/icons/ed-past_history.svg +9 -9
  362. package/src/assets/icons/ed-payment_history.svg +9 -9
  363. package/src/assets/icons/ed-receive.svg +9 -9
  364. package/src/assets/icons/ed-refund.svg +9 -9
  365. package/src/assets/icons/ed-regular-notes.svg +6 -6
  366. package/src/assets/icons/ed_transaction_download.svg +6 -6
  367. package/src/assets/icons/edit.svg +15 -15
  368. package/src/assets/icons/edit_calendar.svg +8 -8
  369. package/src/assets/icons/edit_document.svg +8 -8
  370. package/src/assets/icons/edvak_icon.svg +12 -12
  371. package/src/assets/icons/email.svg +8 -8
  372. package/src/assets/icons/encounters_h.svg +2 -2
  373. package/src/assets/icons/endocrinology.svg +8 -8
  374. package/src/assets/icons/ent.svg +8 -8
  375. package/src/assets/icons/error.svg +8 -8
  376. package/src/assets/icons/erx.svg +8 -8
  377. package/src/assets/icons/event.svg +8 -8
  378. package/src/assets/icons/event_busy.svg +8 -8
  379. package/src/assets/icons/expand_content.svg +8 -8
  380. package/src/assets/icons/expand_less.svg +8 -8
  381. package/src/assets/icons/expand_more.svg +8 -8
  382. package/src/assets/icons/expansion_panels.svg +3 -3
  383. package/src/assets/icons/export_notes.svg +8 -8
  384. package/src/assets/icons/favorite.svg +8 -8
  385. package/src/assets/icons/feedback.svg +3 -3
  386. package/src/assets/icons/fiber_manual_record.svg +15 -15
  387. package/src/assets/icons/fiber_smart_record.svg +8 -8
  388. package/src/assets/icons/file-arrow-up.svg +3 -3
  389. package/src/assets/icons/file_csv.svg +3 -3
  390. package/src/assets/icons/file_docx.svg +3 -3
  391. package/src/assets/icons/file_image.svg +3 -3
  392. package/src/assets/icons/file_jpg.svg +3 -3
  393. package/src/assets/icons/file_pdf.svg +3 -3
  394. package/src/assets/icons/file_png.svg +3 -3
  395. package/src/assets/icons/file_text_new.svg +3 -3
  396. package/src/assets/icons/file_xls.svg +3 -3
  397. package/src/assets/icons/files.svg +2 -2
  398. package/src/assets/icons/files_new.svg +3 -3
  399. package/src/assets/icons/filetype-pdf.svg +2 -2
  400. package/src/assets/icons/filter_alt.svg +8 -8
  401. package/src/assets/icons/flag.svg +3 -3
  402. package/src/assets/icons/flash_on.svg +22 -22
  403. package/src/assets/icons/flask.svg +3 -3
  404. package/src/assets/icons/floppy_disk_back.svg +3 -3
  405. package/src/assets/icons/folder.svg +8 -8
  406. package/src/assets/icons/folder_open.svg +8 -8
  407. package/src/assets/icons/folder_plus.svg +3 -3
  408. package/src/assets/icons/folder_simple.svg +4 -4
  409. package/src/assets/icons/folders.svg +3 -3
  410. package/src/assets/icons/format_align_center.svg +8 -8
  411. package/src/assets/icons/format_align_justify.svg +8 -8
  412. package/src/assets/icons/format_align_left.svg +8 -8
  413. package/src/assets/icons/format_align_right.svg +8 -8
  414. package/src/assets/icons/format_bold.svg +8 -8
  415. package/src/assets/icons/format_clear.svg +8 -8
  416. package/src/assets/icons/format_color_text.svg +8 -8
  417. package/src/assets/icons/format_ink_highlighter.svg +8 -8
  418. package/src/assets/icons/format_italic.svg +8 -8
  419. package/src/assets/icons/format_list_bulleted.svg +8 -8
  420. package/src/assets/icons/format_list_numbered.svg +8 -8
  421. package/src/assets/icons/format_underlined.svg +8 -8
  422. package/src/assets/icons/funnel.svg +3 -3
  423. package/src/assets/icons/gastroenterology.svg +8 -8
  424. package/src/assets/icons/gavel.svg +3 -3
  425. package/src/assets/icons/gesture.svg +8 -8
  426. package/src/assets/icons/gift.svg +3 -3
  427. package/src/assets/icons/git_merge.svg +3 -3
  428. package/src/assets/icons/googleSync.svg +6 -6
  429. package/src/assets/icons/google_icon.svg +7 -7
  430. package/src/assets/icons/gpp_bad.svg +8 -8
  431. package/src/assets/icons/gpp_bad_fill.svg +8 -8
  432. package/src/assets/icons/gpp_maybe.svg +8 -8
  433. package/src/assets/icons/gpp_maybe_fill.svg +8 -8
  434. package/src/assets/icons/grab.svg +4 -4
  435. package/src/assets/icons/grabbing.svg +17 -17
  436. package/src/assets/icons/graph.svg +8 -8
  437. package/src/assets/icons/graph_new.svg +3 -3
  438. package/src/assets/icons/grid_view.svg +8 -8
  439. package/src/assets/icons/group.svg +8 -8
  440. package/src/assets/icons/group_n.svg +3 -3
  441. package/src/assets/icons/growth_chart_trend_down.svg +3 -3
  442. package/src/assets/icons/growth_chart_trend_grey_down.svg +3 -3
  443. package/src/assets/icons/growth_chart_trend_grey_up.svg +3 -3
  444. package/src/assets/icons/growth_chart_trend_up.svg +3 -3
  445. package/src/assets/icons/health_and_safety.svg +8 -8
  446. package/src/assets/icons/health_and_safety_fill.svg +8 -8
  447. package/src/assets/icons/heartbeat.svg +3 -3
  448. package/src/assets/icons/help.svg +8 -8
  449. package/src/assets/icons/history.svg +8 -8
  450. package/src/assets/icons/history_toggle_off.svg +8 -8
  451. package/src/assets/icons/home.svg +8 -8
  452. package/src/assets/icons/home_pin.svg +8 -8
  453. package/src/assets/icons/horizontal_rule.svg +8 -8
  454. package/src/assets/icons/hospital.svg +3 -3
  455. package/src/assets/icons/how_to_reg.svg +8 -8
  456. package/src/assets/icons/id_card.svg +8 -8
  457. package/src/assets/icons/identification_card.svg +3 -3
  458. package/src/assets/icons/imagesmode.svg +8 -8
  459. package/src/assets/icons/import.svg +4 -4
  460. package/src/assets/icons/inactive_user.svg +9 -9
  461. package/src/assets/icons/info-square.svg +3 -3
  462. package/src/assets/icons/info.svg +8 -8
  463. package/src/assets/icons/inprogress.svg +3 -3
  464. package/src/assets/icons/inventory_2.svg +8 -8
  465. package/src/assets/icons/ios.svg +4 -4
  466. package/src/assets/icons/journal-plus.svg +4 -4
  467. package/src/assets/icons/journal-plus1.svg +4 -4
  468. package/src/assets/icons/keep.svg +8 -8
  469. package/src/assets/icons/key-person.svg +3 -3
  470. package/src/assets/icons/keyboard_arrow_down.svg +8 -8
  471. package/src/assets/icons/keyboard_arrow_left.svg +15 -15
  472. package/src/assets/icons/keyboard_arrow_right.svg +8 -8
  473. package/src/assets/icons/keyboard_arrow_up.svg +8 -8
  474. package/src/assets/icons/keyboard_double_arrow_left.svg +8 -8
  475. package/src/assets/icons/keyboard_double_arrow_right.svg +8 -8
  476. package/src/assets/icons/lab_profile.svg +8 -8
  477. package/src/assets/icons/label-tag.svg +9 -9
  478. package/src/assets/icons/label.svg +8 -8
  479. package/src/assets/icons/label_important.svg +8 -8
  480. package/src/assets/icons/labs.svg +15 -15
  481. package/src/assets/icons/language.svg +8 -8
  482. package/src/assets/icons/library.svg +8 -8
  483. package/src/assets/icons/lightning-charge-fill.svg +2 -2
  484. package/src/assets/icons/lightning.svg +3 -3
  485. package/src/assets/icons/link-45deg.svg +3 -3
  486. package/src/assets/icons/link-break.svg +3 -3
  487. package/src/assets/icons/link-simple-horizontal.svg +3 -3
  488. package/src/assets/icons/link_new.svg +3 -3
  489. package/src/assets/icons/list_checks.svg +3 -3
  490. package/src/assets/icons/list_magnifying_glass.svg +3 -3
  491. package/src/assets/icons/list_star.svg +3 -3
  492. package/src/assets/icons/local_activity.svg +8 -8
  493. package/src/assets/icons/local_atm.svg +8 -8
  494. package/src/assets/icons/local_pharmacy.svg +8 -8
  495. package/src/assets/icons/local_post_office.svg +8 -8
  496. package/src/assets/icons/location_home.svg +8 -8
  497. package/src/assets/icons/location_on-fill.svg +8 -8
  498. package/src/assets/icons/location_on.svg +8 -8
  499. package/src/assets/icons/lock-new.svg +25 -25
  500. package/src/assets/icons/lock.svg +8 -8
  501. package/src/assets/icons/lock_person.svg +8 -8
  502. package/src/assets/icons/logos_google-calendar.svg +17 -17
  503. package/src/assets/icons/magnifying_glass.svg +3 -3
  504. package/src/assets/icons/mail.svg +8 -8
  505. package/src/assets/icons/mark_chat_unread.svg +10 -10
  506. package/src/assets/icons/mask_group.svg +8 -8
  507. package/src/assets/icons/material-symbol-1.svg +5 -5
  508. package/src/assets/icons/material-symbol.svg +22 -22
  509. package/src/assets/icons/medication.svg +8 -8
  510. package/src/assets/icons/medication_liquid.svg +8 -8
  511. package/src/assets/icons/mic.svg +8 -8
  512. package/src/assets/icons/mic_off.svg +8 -8
  513. package/src/assets/icons/microscope_purple.svg +3 -3
  514. package/src/assets/icons/mingcute_user-3-fill.svg +4 -4
  515. package/src/assets/icons/minus.svg +8 -8
  516. package/src/assets/icons/mode_comment.svg +8 -8
  517. package/src/assets/icons/monetization_on.svg +3 -3
  518. package/src/assets/icons/money-wavy.svg +3 -3
  519. package/src/assets/icons/monitor.svg +3 -3
  520. package/src/assets/icons/monitor_heart.svg +8 -8
  521. package/src/assets/icons/monitoring.svg +8 -8
  522. package/src/assets/icons/mood.svg +8 -8
  523. package/src/assets/icons/more_horiz.svg +8 -8
  524. package/src/assets/icons/more_vert.svg +8 -8
  525. package/src/assets/icons/morphology-icon.svg +19 -19
  526. package/src/assets/icons/motion_photos_paused.svg +8 -8
  527. package/src/assets/icons/move.svg +13 -13
  528. package/src/assets/icons/musculoskeletal.svg +11 -11
  529. package/src/assets/icons/neurology.svg +8 -8
  530. package/src/assets/icons/no_insurance.svg +8 -8
  531. package/src/assets/icons/no_insurance_fill.svg +8 -8
  532. package/src/assets/icons/non_administered.svg +38 -38
  533. package/src/assets/icons/non_administered_new.svg +4 -4
  534. package/src/assets/icons/non_administered_v1.svg +7 -7
  535. package/src/assets/icons/not_allow.svg +8 -8
  536. package/src/assets/icons/not_allow_fill.svg +8 -8
  537. package/src/assets/icons/not_verified.svg +8 -8
  538. package/src/assets/icons/not_verified_fill.svg +8 -8
  539. package/src/assets/icons/note.svg +3 -3
  540. package/src/assets/icons/note_add.svg +8 -8
  541. package/src/assets/icons/note_pad.svg +3 -3
  542. package/src/assets/icons/note_pad_new.svg +3 -3
  543. package/src/assets/icons/note_stack.svg +8 -8
  544. package/src/assets/icons/notifications.svg +8 -8
  545. package/src/assets/icons/notifications_active.svg +8 -8
  546. package/src/assets/icons/offline_bolt.svg +8 -8
  547. package/src/assets/icons/open_in_new.svg +8 -8
  548. package/src/assets/icons/order_approve.svg +8 -8
  549. package/src/assets/icons/overview.svg +8 -8
  550. package/src/assets/icons/paid.svg +8 -8
  551. package/src/assets/icons/paper-plane-right.svg +3 -3
  552. package/src/assets/icons/paper_claim.svg +8 -8
  553. package/src/assets/icons/paper_plane_tilt.svg +3 -3
  554. package/src/assets/icons/party_mode.svg +8 -8
  555. package/src/assets/icons/password_2.svg +8 -8
  556. package/src/assets/icons/patient-chart.svg +8 -8
  557. package/src/assets/icons/patient_list.svg +8 -8
  558. package/src/assets/icons/pause.svg +3 -3
  559. package/src/assets/icons/pause_circle.svg +8 -8
  560. package/src/assets/icons/pen_edit.svg +8 -8
  561. package/src/assets/icons/pencil-square.svg +3 -3
  562. package/src/assets/icons/pencil_simple.svg +3 -3
  563. package/src/assets/icons/pending.svg +3 -3
  564. package/src/assets/icons/people.svg +2 -2
  565. package/src/assets/icons/percent.svg +3 -3
  566. package/src/assets/icons/permissions.svg +18 -18
  567. package/src/assets/icons/person-bounding-box.svg +3 -3
  568. package/src/assets/icons/person-circle.svg +3 -3
  569. package/src/assets/icons/person-plus.svg +3 -3
  570. package/src/assets/icons/person-rolodex.svg +3 -3
  571. package/src/assets/icons/person-up.svg +3 -3
  572. package/src/assets/icons/person-vcard.svg +3 -3
  573. package/src/assets/icons/person.svg +2 -2
  574. package/src/assets/icons/person_add-fill.svg +8 -8
  575. package/src/assets/icons/person_add.svg +8 -8
  576. package/src/assets/icons/person_remove.svg +8 -8
  577. package/src/assets/icons/personal_injury.svg +15 -15
  578. package/src/assets/icons/phone_call.svg +3 -3
  579. package/src/assets/icons/phone_disabled.svg +6 -6
  580. package/src/assets/icons/phone_forwarded.svg +8 -8
  581. package/src/assets/icons/photo_camera.svg +8 -8
  582. package/src/assets/icons/photo_camera_fill.svg +8 -8
  583. package/src/assets/icons/pill.svg +3 -3
  584. package/src/assets/icons/pill_green.svg +3 -3
  585. package/src/assets/icons/pin.svg +8 -8
  586. package/src/assets/icons/play_arrow.svg +8 -8
  587. package/src/assets/icons/play_circle.svg +3 -3
  588. package/src/assets/icons/plug-connection.svg +10 -10
  589. package/src/assets/icons/prescriptions.svg +8 -8
  590. package/src/assets/icons/preventive.svg +5 -5
  591. package/src/assets/icons/price_change.svg +8 -8
  592. package/src/assets/icons/print.svg +8 -8
  593. package/src/assets/icons/printer.svg +3 -3
  594. package/src/assets/icons/priorAuth.svg +4 -4
  595. package/src/assets/icons/prior_auth.svg +4 -4
  596. package/src/assets/icons/priority.svg +3 -3
  597. package/src/assets/icons/problemsicon.svg +3 -3
  598. package/src/assets/icons/prohibit.svg +3 -3
  599. package/src/assets/icons/prompt_suggestion.svg +8 -8
  600. package/src/assets/icons/psychology.svg +8 -8
  601. package/src/assets/icons/pulmonology.svg +8 -8
  602. package/src/assets/icons/push_pin.svg +8 -8
  603. package/src/assets/icons/question_fill.svg +9 -9
  604. package/src/assets/icons/question_mark.svg +8 -8
  605. package/src/assets/icons/question_mark_fill.svg +9 -9
  606. package/src/assets/icons/quickreply.svg +8 -8
  607. package/src/assets/icons/radio_button_checked.svg +8 -8
  608. package/src/assets/icons/radio_button_unchecked.svg +8 -8
  609. package/src/assets/icons/radiology.svg +8 -8
  610. package/src/assets/icons/radiology_new.svg +8 -8
  611. package/src/assets/icons/receipt.svg +3 -3
  612. package/src/assets/icons/receipt_long.svg +15 -15
  613. package/src/assets/icons/receipt_x.svg +3 -3
  614. package/src/assets/icons/record-circle.svg +3 -3
  615. package/src/assets/icons/redo.svg +8 -8
  616. package/src/assets/icons/referral.svg +8 -8
  617. package/src/assets/icons/refresh.svg +8 -8
  618. package/src/assets/icons/refund.svg +10 -10
  619. package/src/assets/icons/reg-note.svg +8 -8
  620. package/src/assets/icons/reg-notes.svg +8 -8
  621. package/src/assets/icons/remove.svg +8 -8
  622. package/src/assets/icons/remove_moderator.svg +8 -8
  623. package/src/assets/icons/remove_moderator_fill.svg +8 -8
  624. package/src/assets/icons/reorder.svg +8 -8
  625. package/src/assets/icons/repeat.svg +8 -8
  626. package/src/assets/icons/replay.svg +8 -8
  627. package/src/assets/icons/request_quote.svg +8 -8
  628. package/src/assets/icons/roadmap.svg +3 -3
  629. package/src/assets/icons/rocket_launch.svg +8 -8
  630. package/src/assets/icons/rotate_left.svg +8 -8
  631. package/src/assets/icons/rule_settings.svg +8 -8
  632. package/src/assets/icons/scan.svg +3 -3
  633. package/src/assets/icons/scanner.svg +8 -8
  634. package/src/assets/icons/schedule.svg +8 -8
  635. package/src/assets/icons/search.svg +8 -8
  636. package/src/assets/icons/selection_all.svg +3 -3
  637. package/src/assets/icons/self_pay.svg +8 -8
  638. package/src/assets/icons/self_pay_fill.svg +8 -8
  639. package/src/assets/icons/send.svg +8 -8
  640. package/src/assets/icons/settings.svg +8 -8
  641. package/src/assets/icons/settings_applications.svg +8 -8
  642. package/src/assets/icons/shapes.svg +3 -3
  643. package/src/assets/icons/shield.svg +3 -3
  644. package/src/assets/icons/shield_person.svg +8 -8
  645. package/src/assets/icons/shield_person_fill.svg +8 -8
  646. package/src/assets/icons/shield_plus.svg +3 -3
  647. package/src/assets/icons/shift_timing_activate.svg +5 -5
  648. package/src/assets/icons/shift_timing_deactivate.svg +5 -5
  649. package/src/assets/icons/sign.svg +3 -3
  650. package/src/assets/icons/signal_cellular_alt.svg +8 -8
  651. package/src/assets/icons/simple-notes.svg +8 -8
  652. package/src/assets/icons/skin.svg +11 -11
  653. package/src/assets/icons/smartphone.svg +8 -8
  654. package/src/assets/icons/smiley-angry-fill.svg +5 -5
  655. package/src/assets/icons/smiley-fill.svg +5 -5
  656. package/src/assets/icons/smiley-meh-fill.svg +5 -5
  657. package/src/assets/icons/smiley-nervous-fill.svg +5 -5
  658. package/src/assets/icons/sort.svg +8 -8
  659. package/src/assets/icons/sort_ascending.svg +12 -12
  660. package/src/assets/icons/sort_by_alpha.svg +8 -8
  661. package/src/assets/icons/sort_descending.svg +12 -12
  662. package/src/assets/icons/source_notes.svg +8 -8
  663. package/src/assets/icons/sparkle.svg +3 -3
  664. package/src/assets/icons/sparkle_gradient.svg +9 -9
  665. package/src/assets/icons/splitscreen_bottom.svg +8 -8
  666. package/src/assets/icons/stack.svg +3 -3
  667. package/src/assets/icons/star-fill.svg +2 -2
  668. package/src/assets/icons/star.svg +3 -3
  669. package/src/assets/icons/stethoscope.svg +3 -3
  670. package/src/assets/icons/stethoscope_check.svg +8 -8
  671. package/src/assets/icons/stickies.svg +3 -3
  672. package/src/assets/icons/sticky_note_2.svg +8 -8
  673. package/src/assets/icons/stop.svg +8 -8
  674. package/src/assets/icons/stop_circle.svg +8 -8
  675. package/src/assets/icons/store.svg +8 -8
  676. package/src/assets/icons/straight.svg +3 -3
  677. package/src/assets/icons/strikethrough_s.svg +8 -8
  678. package/src/assets/icons/sub-task.svg +9 -9
  679. package/src/assets/icons/subdirectory_arrow_left.svg +8 -8
  680. package/src/assets/icons/subscript.svg +8 -8
  681. package/src/assets/icons/summarize.svg +8 -8
  682. package/src/assets/icons/superscript.svg +8 -8
  683. package/src/assets/icons/swap_vert.svg +8 -8
  684. package/src/assets/icons/swipe_left_alt.svg +8 -8
  685. package/src/assets/icons/syringe.svg +3 -3
  686. package/src/assets/icons/table.svg +8 -8
  687. package/src/assets/icons/tag.svg +3 -3
  688. package/src/assets/icons/task.svg +8 -8
  689. package/src/assets/icons/telemedicine.svg +15 -15
  690. package/src/assets/icons/text_field.svg +4 -4
  691. package/src/assets/icons/thumbs_down.svg +3 -3
  692. package/src/assets/icons/thumbs_up.svg +3 -3
  693. package/src/assets/icons/thunder-big.svg +12 -12
  694. package/src/assets/icons/thunder.svg +12 -12
  695. package/src/assets/icons/treatment.svg +5 -5
  696. package/src/assets/icons/trend_down.svg +3 -3
  697. package/src/assets/icons/tune.svg +8 -8
  698. package/src/assets/icons/turn_right.svg +8 -8
  699. package/src/assets/icons/unarchive.svg +8 -8
  700. package/src/assets/icons/undo.svg +8 -8
  701. package/src/assets/icons/unfold_more.svg +8 -8
  702. package/src/assets/icons/universal-access.svg +2 -2
  703. package/src/assets/icons/universal_currency_alt.svg +8 -8
  704. package/src/assets/icons/up-arrow.svg +10 -10
  705. package/src/assets/icons/update_disabled.svg +8 -8
  706. package/src/assets/icons/upload.svg +8 -8
  707. package/src/assets/icons/upload_file.svg +8 -8
  708. package/src/assets/icons/upload_simple.svg +3 -3
  709. package/src/assets/icons/urology.svg +8 -8
  710. package/src/assets/icons/user_check.svg +3 -3
  711. package/src/assets/icons/user_circle.svg +3 -3
  712. package/src/assets/icons/user_minus.svg +3 -3
  713. package/src/assets/icons/user_plus.svg +3 -3
  714. package/src/assets/icons/users_three.svg +3 -3
  715. package/src/assets/icons/vaccines.svg +8 -8
  716. package/src/assets/icons/verified_user.svg +8 -8
  717. package/src/assets/icons/verified_user_fill.svg +8 -8
  718. package/src/assets/icons/video-camera.svg +3 -3
  719. package/src/assets/icons/videocam.svg +8 -8
  720. package/src/assets/icons/videocam_off.svg +8 -8
  721. package/src/assets/icons/view_week.svg +8 -8
  722. package/src/assets/icons/virus.svg +3 -3
  723. package/src/assets/icons/visibility-fill.svg +8 -8
  724. package/src/assets/icons/visibility.svg +8 -8
  725. package/src/assets/icons/visibility_off-fill.svg +8 -8
  726. package/src/assets/icons/visibility_off.svg +8 -8
  727. package/src/assets/icons/vpn_key.svg +10 -10
  728. package/src/assets/icons/warning.svg +8 -8
  729. package/src/assets/icons/warning_fill.svg +8 -8
  730. package/src/assets/icons/water_drop.svg +8 -8
  731. package/src/assets/icons/west.svg +8 -8
  732. package/src/assets/icons/where_to_vote.svg +8 -8
  733. package/src/assets/icons/widgets.svg +8 -8
  734. package/src/assets/icons/writeOff.svg +4 -4
  735. package/src/assets/icons/x-circle.svg +3 -3
  736. package/src/assets/icons/x-square.svg +3 -3
  737. package/src/assets/icons/zift.svg +19 -19
  738. package/src/assets/images/Ai-S.svg +55 -55
  739. package/src/assets/images/Ed_New_sprite.svg +14 -14
  740. package/src/assets/images/Ed_spriteuse.svg +979 -979
  741. package/src/assets/images/No collections.svg +62 -62
  742. package/src/assets/images/Upload-file.svg +16 -16
  743. package/src/assets/images/UserCircle.svg +3 -3
  744. package/src/assets/images/allergy.svg +16 -16
  745. package/src/assets/images/amex-card.svg +1 -1
  746. package/src/assets/images/amex-new.svg +5 -5
  747. package/src/assets/images/amex.svg +5 -5
  748. package/src/assets/images/android-kiosk.svg +1 -1
  749. package/src/assets/images/app-store.svg +8 -8
  750. package/src/assets/images/banner/banner_23-04-2026/Sparkle.svg +3 -3
  751. package/src/assets/images/banner/banner_23-04-2026/icon1.svg +21 -21
  752. package/src/assets/images/banner/banner_23-04-2026/icon2.svg +5 -5
  753. package/src/assets/images/banner/banner_23-04-2026/icon3.svg +3 -3
  754. package/src/assets/images/banner/banner_new/v2_img10.svg +10 -10
  755. package/src/assets/images/banner/banner_new/v2_img11.svg +10 -10
  756. package/src/assets/images/banner/banner_new/v2_img12.svg +10 -10
  757. package/src/assets/images/banner/banner_new/v2_img13.svg +10 -10
  758. package/src/assets/images/banner/banner_new/v2_img14.svg +3 -3
  759. package/src/assets/images/banner/banner_new/v2_img15.svg +4 -4
  760. package/src/assets/images/banner/banner_new/v2_img16.svg +10 -10
  761. package/src/assets/images/banner/banner_new/v2_img17.svg +10 -10
  762. package/src/assets/images/banner/banner_new/v2_img18.svg +10 -10
  763. package/src/assets/images/banner/banner_new/v2_img19.svg +10 -10
  764. package/src/assets/images/banner/banner_new/v2_img20.svg +3 -3
  765. package/src/assets/images/banner/banner_new/v2_img5.svg +10 -10
  766. package/src/assets/images/banner/banner_new/v2_img6.svg +13 -13
  767. package/src/assets/images/banner/banner_new/v2_img7.svg +4 -4
  768. package/src/assets/images/banner/banner_new/v2_img8.svg +3 -3
  769. package/src/assets/images/banner/banner_new/v2_img9.svg +10 -10
  770. package/src/assets/images/banner/banner_new10/svg_1.svg +10 -10
  771. package/src/assets/images/banner/banner_new10/svg_10.svg +10 -10
  772. package/src/assets/images/banner/banner_new10/svg_2.svg +10 -10
  773. package/src/assets/images/banner/banner_new10/svg_3.svg +10 -10
  774. package/src/assets/images/banner/banner_new10/svg_4.svg +12 -12
  775. package/src/assets/images/banner/banner_new10/svg_5.svg +10 -10
  776. package/src/assets/images/banner/banner_new10/svg_6.svg +10 -10
  777. package/src/assets/images/banner/banner_new10/svg_7.svg +10 -10
  778. package/src/assets/images/banner/banner_new10/svg_8.svg +10 -10
  779. package/src/assets/images/banner/banner_new10/svg_9.svg +10 -10
  780. package/src/assets/images/banner/banner_new3/CurrencyDollarSimple.svg +3 -3
  781. package/src/assets/images/banner/banner_new3/IdentificationCard.svg +3 -3
  782. package/src/assets/images/banner/banner_new3/ListNumbers.svg +3 -3
  783. package/src/assets/images/banner/banner_new3/Wrench.svg +3 -3
  784. package/src/assets/images/banner/banner_new3/assessment 1.svg +10 -10
  785. package/src/assets/images/banner/banner_new3/calendar-check 1.svg +10 -10
  786. package/src/assets/images/banner/banner_new3/fax (2) 1.svg +10 -10
  787. package/src/assets/images/banner/banner_new4/v4_svg1.svg +3 -3
  788. package/src/assets/images/banner/banner_new4/v4_svg2.svg +3 -3
  789. package/src/assets/images/banner/banner_new4/v4_svg3.svg +10 -10
  790. package/src/assets/images/banner/banner_new4/v4_svg4.svg +3 -3
  791. package/src/assets/images/banner/banner_new4/v4_svg5.svg +3 -3
  792. package/src/assets/images/banner/banner_new4/v4_svg6.svg +3 -3
  793. package/src/assets/images/banner/banner_new5/Wrench.svg +3 -3
  794. package/src/assets/images/banner/banner_new6/improvements/add-document.svg +10 -10
  795. package/src/assets/images/banner/banner_new6/improvements/attribution-pencil.svg +10 -10
  796. package/src/assets/images/banner/banner_new6/improvements/bell-notification.svg +10 -10
  797. package/src/assets/images/banner/banner_new6/improvements/billing-header.svg +10 -10
  798. package/src/assets/images/banner/banner_new6/improvements/binary.svg +10 -10
  799. package/src/assets/images/banner/banner_new6/improvements/box-dollar.svg +10 -10
  800. package/src/assets/images/banner/banner_new6/improvements/check-circle.svg +10 -10
  801. package/src/assets/images/banner/banner_new6/improvements/clinical-header.svg +10 -10
  802. package/src/assets/images/banner/banner_new6/improvements/credit-security.svg +10 -10
  803. package/src/assets/images/banner/banner_new6/improvements/document-circle-wrong.svg +10 -10
  804. package/src/assets/images/banner/banner_new6/improvements/fax.svg +10 -10
  805. package/src/assets/images/banner/banner_new6/improvements/file-prescription.svg +10 -10
  806. package/src/assets/images/banner/banner_new6/improvements/map-marker-check.svg +10 -10
  807. package/src/assets/images/banner/banner_new6/improvements/marker.svg +10 -10
  808. package/src/assets/images/banner/banner_new6/improvements/member-search.svg +10 -10
  809. package/src/assets/images/banner/banner_new6/improvements/memo-circle-check-2.svg +10 -10
  810. package/src/assets/images/banner/banner_new6/improvements/memo-circle-check.svg +10 -10
  811. package/src/assets/images/banner/banner_new6/improvements/others-header.svg +10 -10
  812. package/src/assets/images/banner/banner_new6/improvements/paper-plane.svg +6 -6
  813. package/src/assets/images/banner/banner_new6/improvements/payroll-calendar.svg +10 -10
  814. package/src/assets/images/banner/banner_new6/improvements/payroll-check.svg +5 -5
  815. package/src/assets/images/banner/banner_new6/improvements/receipt.svg +10 -10
  816. package/src/assets/images/banner/banner_new6/improvements/referrals-header.svg +10 -10
  817. package/src/assets/images/banner/banner_new6/improvements/reminder-appointment.svg +10 -10
  818. package/src/assets/images/banner/banner_new6/improvements/scheduling-header.svg +10 -10
  819. package/src/assets/images/banner/banner_new6/improvements/settings.svg +5 -5
  820. package/src/assets/images/banner/banner_new6/improvements/subscription-alt.svg +10 -10
  821. package/src/assets/images/banner/banner_new6/improvements/tasks.svg +10 -10
  822. package/src/assets/images/banner/banner_new6/improvements/time-check.svg +11 -11
  823. package/src/assets/images/banner/banner_new8/improvements/compliance-document.svg +10 -10
  824. package/src/assets/images/banner/banner_new8/improvements/envelope-open-text.svg +10 -10
  825. package/src/assets/images/banner/banner_new8/improvements/fax.svg +10 -10
  826. package/src/assets/images/banner/banner_new8/improvements/file-invoice-dollar.svg +10 -10
  827. package/src/assets/images/banner/banner_new8/improvements/file-signature.svg +10 -10
  828. package/src/assets/images/banner/banner_new8/improvements/settings.svg +10 -10
  829. package/src/assets/images/banner/banner_new8/improvements/social-media-notification.svg +10 -10
  830. package/src/assets/images/banner/banner_new8/svg_1.svg +10 -10
  831. package/src/assets/images/banner/banner_new8/svg_2.svg +10 -10
  832. package/src/assets/images/banner/banner_new8/svg_3.svg +3 -3
  833. package/src/assets/images/banner/banner_new8/svg_4.svg +10 -10
  834. package/src/assets/images/banner/banner_new8/svg_5.svg +10 -10
  835. package/src/assets/images/banner/banner_new8/svg_6.svg +12 -12
  836. package/src/assets/images/banner/banner_new9/svg_10.svg +10 -10
  837. package/src/assets/images/banner/banner_new9/svg_11.svg +10 -10
  838. package/src/assets/images/banner/banner_new9/svg_12.svg +10 -10
  839. package/src/assets/images/banner/banner_new9/svg_13.svg +10 -10
  840. package/src/assets/images/banner/banner_new9/svg_3.svg +3 -3
  841. package/src/assets/images/banner/banner_new9/svg_5.svg +10 -10
  842. package/src/assets/images/banner/banner_new9/svg_6.svg +12 -12
  843. package/src/assets/images/banner/banner_new9/svg_7.svg +10 -10
  844. package/src/assets/images/banner/banner_new9/svg_8.svg +15 -15
  845. package/src/assets/images/banner/banner_new9/svg_9.svg +10 -10
  846. package/src/assets/images/banner/v2_img10.svg +11 -11
  847. package/src/assets/images/banner/v2_img5.svg +11 -11
  848. package/src/assets/images/banner/v2_img6.svg +11 -11
  849. package/src/assets/images/banner/v2_img7.svg +13 -13
  850. package/src/assets/images/banner/v2_img8.svg +11 -11
  851. package/src/assets/images/banner/v2_img9.svg +11 -11
  852. package/src/assets/images/bgstrips -1.svg +30 -30
  853. package/src/assets/images/bgstrips.svg +40 -40
  854. package/src/assets/images/blood-test.svg +13 -13
  855. package/src/assets/images/blue-stripes.svg +12 -12
  856. package/src/assets/images/bolt_ai.svg +3 -3
  857. package/src/assets/images/box_edit.svg +8 -8
  858. package/src/assets/images/cam.svg +3 -3
  859. package/src/assets/images/card-1.svg +9 -9
  860. package/src/assets/images/card-2.svg +9 -9
  861. package/src/assets/images/card-3.svg +9 -9
  862. package/src/assets/images/card-4.svg +9 -9
  863. package/src/assets/images/card-5.svg +9 -9
  864. package/src/assets/images/card-6.svg +9 -9
  865. package/src/assets/images/carelink-logo.svg +9 -9
  866. package/src/assets/images/cash-Cancelled.svg +20 -20
  867. package/src/assets/images/check_fill2.svg +4 -4
  868. package/src/assets/images/cirrus-card.svg +50 -50
  869. package/src/assets/images/compare_arrows.svg +8 -8
  870. package/src/assets/images/data_object_content.svg +9 -9
  871. package/src/assets/images/desktop-view.svg +78 -78
  872. package/src/assets/images/detecting.svg +28 -28
  873. package/src/assets/images/discover-new.svg +9 -9
  874. package/src/assets/images/discover.svg +9 -9
  875. package/src/assets/images/drop-bg.svg +3 -3
  876. package/src/assets/images/duration.svg +3 -3
  877. package/src/assets/images/eCareHub.svg +10 -10
  878. package/src/assets/images/ecarehub_logo.svg +9 -9
  879. package/src/assets/images/edvak_logo.svg +11 -11
  880. package/src/assets/images/edvak_logo_temp.svg +9 -9
  881. package/src/assets/images/edvak_logo_temp1.svg +9 -9
  882. package/src/assets/images/edvaklogo-old.svg +9 -9
  883. package/src/assets/images/edvaklogo.svg +5 -5
  884. package/src/assets/images/emptry-list.svg +59 -59
  885. package/src/assets/images/empty-list.svg +59 -59
  886. package/src/assets/images/empty-list2.svg +52 -52
  887. package/src/assets/images/fax-1.svg +8 -8
  888. package/src/assets/images/fax-2.svg +8 -8
  889. package/src/assets/images/file_csv.svg +14 -14
  890. package/src/assets/images/file_xlsx.svg +15 -15
  891. package/src/assets/images/flash.svg +3 -3
  892. package/src/assets/images/formNoteIcon.svg +15 -15
  893. package/src/assets/images/gettingstarted.svg +9 -9
  894. package/src/assets/images/google-store.svg +10 -10
  895. package/src/assets/images/graph-dec.svg +9 -9
  896. package/src/assets/images/graph-inc.svg +9 -9
  897. package/src/assets/images/graphic.svg +8 -8
  898. package/src/assets/images/handheld-connected.svg +9 -9
  899. package/src/assets/images/handheld-not-connected.svg +9 -9
  900. package/src/assets/images/health-care-logo.svg +13 -13
  901. package/src/assets/images/healthcare-logo.svg +27 -27
  902. package/src/assets/images/icons/material-symbols/300/rounded/add_reaction.svg +8 -8
  903. package/src/assets/images/icons/material-symbols/300/rounded/alternate_email.svg +8 -8
  904. package/src/assets/images/icons/material-symbols/300/rounded/cached.svg +8 -8
  905. package/src/assets/images/icons/material-symbols/300/rounded/chat_bubble.svg +8 -8
  906. package/src/assets/images/icons/material-symbols/300/rounded/keep.svg +8 -8
  907. package/src/assets/images/icons/material-symbols/300/rounded/label_important.svg +8 -8
  908. package/src/assets/images/icons/material-symbols/300/rounded/mood.svg +8 -8
  909. package/src/assets/images/icons/material-symbols/300/rounded/prompt_suggestion.svg +8 -8
  910. package/src/assets/images/icons/material-symbols/400/rounded/accessibility.svg +8 -8
  911. package/src/assets/images/icons/material-symbols/400/rounded/account_tree.svg +8 -8
  912. package/src/assets/images/icons/material-symbols/400/rounded/add.svg +8 -8
  913. package/src/assets/images/icons/material-symbols/400/rounded/add_circle.svg +8 -8
  914. package/src/assets/images/icons/material-symbols/400/rounded/add_link.svg +8 -8
  915. package/src/assets/images/icons/material-symbols/400/rounded/add_reaction.svg +8 -8
  916. package/src/assets/images/icons/material-symbols/400/rounded/alarm.svg +8 -8
  917. package/src/assets/images/icons/material-symbols/400/rounded/alternate_email.svg +8 -8
  918. package/src/assets/images/icons/material-symbols/400/rounded/ambulance.svg +15 -15
  919. package/src/assets/images/icons/material-symbols/400/rounded/ambulance_2.svg +17 -17
  920. package/src/assets/images/icons/material-symbols/400/rounded/arrow-bar-right.svg +2 -2
  921. package/src/assets/images/icons/material-symbols/400/rounded/arrow-repeat.svg +3 -3
  922. package/src/assets/images/icons/material-symbols/400/rounded/arrow_downward_alt.svg +8 -8
  923. package/src/assets/images/icons/material-symbols/400/rounded/arrow_right_alt.svg +8 -8
  924. package/src/assets/images/icons/material-symbols/400/rounded/arrow_top_left.svg +8 -8
  925. package/src/assets/images/icons/material-symbols/400/rounded/arrow_upward_alt.svg +8 -8
  926. package/src/assets/images/icons/material-symbols/400/rounded/at.svg +2 -2
  927. package/src/assets/images/icons/material-symbols/400/rounded/atr.svg +8 -8
  928. package/src/assets/images/icons/material-symbols/400/rounded/attach_money.svg +8 -8
  929. package/src/assets/images/icons/material-symbols/400/rounded/auto_awesome_mosaic.svg +8 -8
  930. package/src/assets/images/icons/material-symbols/400/rounded/auto_pay.svg +8 -8
  931. package/src/assets/images/icons/material-symbols/400/rounded/backspace_fill.svg +8 -8
  932. package/src/assets/images/icons/material-symbols/400/rounded/block.svg +8 -8
  933. package/src/assets/images/icons/material-symbols/400/rounded/border_color.svg +8 -8
  934. package/src/assets/images/icons/material-symbols/400/rounded/brightness_1.svg +8 -8
  935. package/src/assets/images/icons/material-symbols/400/rounded/bubble.svg +8 -8
  936. package/src/assets/images/icons/material-symbols/400/rounded/cached.svg +8 -8
  937. package/src/assets/images/icons/material-symbols/400/rounded/calculate.svg +8 -8
  938. package/src/assets/images/icons/material-symbols/400/rounded/calendar-x.svg +3 -3
  939. package/src/assets/images/icons/material-symbols/400/rounded/calendar_down.svg +9 -9
  940. package/src/assets/images/icons/material-symbols/400/rounded/calendar_month.svg +8 -8
  941. package/src/assets/images/icons/material-symbols/400/rounded/calendar_today.svg +8 -8
  942. package/src/assets/images/icons/material-symbols/400/rounded/calendar_up.svg +9 -9
  943. package/src/assets/images/icons/material-symbols/400/rounded/call_fill.svg +8 -8
  944. package/src/assets/images/icons/material-symbols/400/rounded/campaign.svg +8 -8
  945. package/src/assets/images/icons/material-symbols/400/rounded/cancel.svg +8 -8
  946. package/src/assets/images/icons/material-symbols/400/rounded/card-list.svg +3 -3
  947. package/src/assets/images/icons/material-symbols/400/rounded/cash.svg +3 -3
  948. package/src/assets/images/icons/material-symbols/400/rounded/chart_data.svg +8 -8
  949. package/src/assets/images/icons/material-symbols/400/rounded/chat.svg +8 -8
  950. package/src/assets/images/icons/material-symbols/400/rounded/chat_bubble.svg +8 -8
  951. package/src/assets/images/icons/material-symbols/400/rounded/check-circle-fill.svg +2 -2
  952. package/src/assets/images/icons/material-symbols/400/rounded/check2-all.svg +3 -3
  953. package/src/assets/images/icons/material-symbols/400/rounded/check_circle-fill.svg +8 -8
  954. package/src/assets/images/icons/material-symbols/400/rounded/check_circle.svg +8 -8
  955. package/src/assets/images/icons/material-symbols/400/rounded/check_circle_fill.svg +8 -8
  956. package/src/assets/images/icons/material-symbols/400/rounded/chevron_left.svg +15 -15
  957. package/src/assets/images/icons/material-symbols/400/rounded/chevron_right.svg +8 -8
  958. package/src/assets/images/icons/material-symbols/400/rounded/circle-fill.svg +2 -2
  959. package/src/assets/images/icons/material-symbols/400/rounded/clinic.svg +3 -3
  960. package/src/assets/images/icons/material-symbols/400/rounded/clinic_settings.svg +3 -3
  961. package/src/assets/images/icons/material-symbols/400/rounded/clipboard-check.svg +4 -4
  962. package/src/assets/images/icons/material-symbols/400/rounded/clock-history.svg +4 -4
  963. package/src/assets/images/icons/material-symbols/400/rounded/clock_loader_40.svg +8 -8
  964. package/src/assets/images/icons/material-symbols/400/rounded/collapse_content.svg +8 -8
  965. package/src/assets/images/icons/material-symbols/400/rounded/contact_page.svg +8 -8
  966. package/src/assets/images/icons/material-symbols/400/rounded/content_copy.svg +8 -8
  967. package/src/assets/images/icons/material-symbols/400/rounded/copy_all.svg +8 -8
  968. package/src/assets/images/icons/material-symbols/400/rounded/create_new_folder.svg +8 -8
  969. package/src/assets/images/icons/material-symbols/400/rounded/dangerous.svg +8 -8
  970. package/src/assets/images/icons/material-symbols/400/rounded/dash-circle.svg +3 -3
  971. package/src/assets/images/icons/material-symbols/400/rounded/dashboard_customize.svg +8 -8
  972. package/src/assets/images/icons/material-symbols/400/rounded/data_object.svg +8 -8
  973. package/src/assets/images/icons/material-symbols/400/rounded/data_object_bold.svg +8 -8
  974. package/src/assets/images/icons/material-symbols/400/rounded/demography.svg +8 -8
  975. package/src/assets/images/icons/material-symbols/400/rounded/description.svg +8 -8
  976. package/src/assets/images/icons/material-symbols/400/rounded/desktop_windows.svg +8 -8
  977. package/src/assets/images/icons/material-symbols/400/rounded/do_not_disturb_off.svg +8 -8
  978. package/src/assets/images/icons/material-symbols/400/rounded/do_not_disturb_on.svg +8 -8
  979. package/src/assets/images/icons/material-symbols/400/rounded/document_scanner.svg +8 -8
  980. package/src/assets/images/icons/material-symbols/400/rounded/done_all.svg +8 -8
  981. package/src/assets/images/icons/material-symbols/400/rounded/dot.svg +2 -2
  982. package/src/assets/images/icons/material-symbols/400/rounded/download.svg +8 -8
  983. package/src/assets/images/icons/material-symbols/400/rounded/draft.svg +8 -8
  984. package/src/assets/images/icons/material-symbols/400/rounded/eFax.svg +17 -17
  985. package/src/assets/images/icons/material-symbols/400/rounded/east.svg +8 -8
  986. package/src/assets/images/icons/material-symbols/400/rounded/ecg_heart.svg +8 -8
  987. package/src/assets/images/icons/material-symbols/400/rounded/ed-doctor.svg +15 -15
  988. package/src/assets/images/icons/material-symbols/400/rounded/ed-form-disable.svg +9 -9
  989. package/src/assets/images/icons/material-symbols/400/rounded/ed-invoice download.svg +13 -13
  990. package/src/assets/images/icons/material-symbols/400/rounded/ed-payment_history.svg +9 -9
  991. package/src/assets/images/icons/material-symbols/400/rounded/ed-receive.svg +9 -9
  992. package/src/assets/images/icons/material-symbols/400/rounded/ed-refund.svg +9 -9
  993. package/src/assets/images/icons/material-symbols/400/rounded/ed-regular-notes.svg +6 -6
  994. package/src/assets/images/icons/material-symbols/400/rounded/ed-transaction download.svg +11 -11
  995. package/src/assets/images/icons/material-symbols/400/rounded/edit_calendar.svg +8 -8
  996. package/src/assets/images/icons/material-symbols/400/rounded/edit_document.svg +8 -8
  997. package/src/assets/images/icons/material-symbols/400/rounded/email.svg +8 -8
  998. package/src/assets/images/icons/material-symbols/400/rounded/encounters_h.svg +2 -2
  999. package/src/assets/images/icons/material-symbols/400/rounded/endocrinology.svg +8 -8
  1000. package/src/assets/images/icons/material-symbols/400/rounded/ent.svg +8 -8
  1001. package/src/assets/images/icons/material-symbols/400/rounded/event.svg +8 -8
  1002. package/src/assets/images/icons/material-symbols/400/rounded/event_busy.svg +8 -8
  1003. package/src/assets/images/icons/material-symbols/400/rounded/expand_content.svg +8 -8
  1004. package/src/assets/images/icons/material-symbols/400/rounded/expand_less.svg +8 -8
  1005. package/src/assets/images/icons/material-symbols/400/rounded/expand_more.svg +8 -8
  1006. package/src/assets/images/icons/material-symbols/400/rounded/export_notes.svg +8 -8
  1007. package/src/assets/images/icons/material-symbols/400/rounded/favorite.svg +8 -8
  1008. package/src/assets/images/icons/material-symbols/400/rounded/fiber_manual_record.svg +8 -8
  1009. package/src/assets/images/icons/material-symbols/400/rounded/fiber_smart_record.svg +8 -8
  1010. package/src/assets/images/icons/material-symbols/400/rounded/file-arrow-up.svg +3 -3
  1011. package/src/assets/images/icons/material-symbols/400/rounded/files.svg +2 -2
  1012. package/src/assets/images/icons/material-symbols/400/rounded/filetype-pdf.svg +2 -2
  1013. package/src/assets/images/icons/material-symbols/400/rounded/filter_alt.svg +8 -8
  1014. package/src/assets/images/icons/material-symbols/400/rounded/folder.svg +8 -8
  1015. package/src/assets/images/icons/material-symbols/400/rounded/folder_open.svg +8 -8
  1016. package/src/assets/images/icons/material-symbols/400/rounded/format_list_bulleted.svg +8 -8
  1017. package/src/assets/images/icons/material-symbols/400/rounded/gastroenterology.svg +8 -8
  1018. package/src/assets/images/icons/material-symbols/400/rounded/gpp_bad.svg +8 -8
  1019. package/src/assets/images/icons/material-symbols/400/rounded/gpp_bad_fill.svg +8 -8
  1020. package/src/assets/images/icons/material-symbols/400/rounded/gpp_maybe.svg +8 -8
  1021. package/src/assets/images/icons/material-symbols/400/rounded/gpp_maybe_fill.svg +8 -8
  1022. package/src/assets/images/icons/material-symbols/400/rounded/grid_view.svg +8 -8
  1023. package/src/assets/images/icons/material-symbols/400/rounded/health_and_safety.svg +8 -8
  1024. package/src/assets/images/icons/material-symbols/400/rounded/health_and_safety_fill.svg +8 -8
  1025. package/src/assets/images/icons/material-symbols/400/rounded/history_toggle_off.svg +8 -8
  1026. package/src/assets/images/icons/material-symbols/400/rounded/how_to_reg.svg +8 -8
  1027. package/src/assets/images/icons/material-symbols/400/rounded/id_card.svg +8 -8
  1028. package/src/assets/images/icons/material-symbols/400/rounded/info-square.svg +3 -3
  1029. package/src/assets/images/icons/material-symbols/400/rounded/inventory_2.svg +8 -8
  1030. package/src/assets/images/icons/material-symbols/400/rounded/journal-plus.svg +4 -4
  1031. package/src/assets/images/icons/material-symbols/400/rounded/journal-plus1.svg +4 -4
  1032. package/src/assets/images/icons/material-symbols/400/rounded/keep.svg +8 -8
  1033. package/src/assets/images/icons/material-symbols/400/rounded/key-person.svg +3 -3
  1034. package/src/assets/images/icons/material-symbols/400/rounded/keyboard_arrow_down.svg +8 -8
  1035. package/src/assets/images/icons/material-symbols/400/rounded/keyboard_double_arrow_left.svg +8 -8
  1036. package/src/assets/images/icons/material-symbols/400/rounded/keyboard_double_arrow_right.svg +8 -8
  1037. package/src/assets/images/icons/material-symbols/400/rounded/lab_profile.svg +8 -8
  1038. package/src/assets/images/icons/material-symbols/400/rounded/label.svg +8 -8
  1039. package/src/assets/images/icons/material-symbols/400/rounded/label_important.svg +8 -8
  1040. package/src/assets/images/icons/material-symbols/400/rounded/labs.svg +15 -15
  1041. package/src/assets/images/icons/material-symbols/400/rounded/language.svg +8 -8
  1042. package/src/assets/images/icons/material-symbols/400/rounded/library.svg +8 -8
  1043. package/src/assets/images/icons/material-symbols/400/rounded/lightning-charge-fill.svg +2 -2
  1044. package/src/assets/images/icons/material-symbols/400/rounded/link-45deg.svg +3 -3
  1045. package/src/assets/images/icons/material-symbols/400/rounded/local_activity.svg +8 -8
  1046. package/src/assets/images/icons/material-symbols/400/rounded/local_atm.svg +8 -8
  1047. package/src/assets/images/icons/material-symbols/400/rounded/local_pharmacy.svg +8 -8
  1048. package/src/assets/images/icons/material-symbols/400/rounded/local_post_office.svg +8 -8
  1049. package/src/assets/images/icons/material-symbols/400/rounded/location_home.svg +8 -8
  1050. package/src/assets/images/icons/material-symbols/400/rounded/lock_person.svg +8 -8
  1051. package/src/assets/images/icons/material-symbols/400/rounded/mic_off.svg +8 -8
  1052. package/src/assets/images/icons/material-symbols/400/rounded/monitor_heart.svg +8 -8
  1053. package/src/assets/images/icons/material-symbols/400/rounded/monitoring.svg +8 -8
  1054. package/src/assets/images/icons/material-symbols/400/rounded/mood.svg +8 -8
  1055. package/src/assets/images/icons/material-symbols/400/rounded/more_horiz.svg +8 -8
  1056. package/src/assets/images/icons/material-symbols/400/rounded/motion_photos_paused.svg +8 -8
  1057. package/src/assets/images/icons/material-symbols/400/rounded/move.svg +13 -13
  1058. package/src/assets/images/icons/material-symbols/400/rounded/musculoskeletal.svg +11 -11
  1059. package/src/assets/images/icons/material-symbols/400/rounded/neurology.svg +8 -8
  1060. package/src/assets/images/icons/material-symbols/400/rounded/no_insurance.svg +8 -8
  1061. package/src/assets/images/icons/material-symbols/400/rounded/no_insurance_fill.svg +8 -8
  1062. package/src/assets/images/icons/material-symbols/400/rounded/not_allow.svg +8 -8
  1063. package/src/assets/images/icons/material-symbols/400/rounded/not_allow_fill.svg +8 -8
  1064. package/src/assets/images/icons/material-symbols/400/rounded/not_verified.svg +8 -8
  1065. package/src/assets/images/icons/material-symbols/400/rounded/not_verified_fill.svg +8 -8
  1066. package/src/assets/images/icons/material-symbols/400/rounded/note_add.svg +8 -8
  1067. package/src/assets/images/icons/material-symbols/400/rounded/note_stack.svg +8 -8
  1068. package/src/assets/images/icons/material-symbols/400/rounded/offline_bolt.svg +8 -8
  1069. package/src/assets/images/icons/material-symbols/400/rounded/open_in_new.svg +8 -8
  1070. package/src/assets/images/icons/material-symbols/400/rounded/overview.svg +8 -8
  1071. package/src/assets/images/icons/material-symbols/400/rounded/paid.svg +8 -8
  1072. package/src/assets/images/icons/material-symbols/400/rounded/patient_list.svg +8 -8
  1073. package/src/assets/images/icons/material-symbols/400/rounded/pause.svg +8 -8
  1074. package/src/assets/images/icons/material-symbols/400/rounded/pause_circle.svg +8 -8
  1075. package/src/assets/images/icons/material-symbols/400/rounded/pen_edit.svg +8 -8
  1076. package/src/assets/images/icons/material-symbols/400/rounded/pencil-square.svg +3 -3
  1077. package/src/assets/images/icons/material-symbols/400/rounded/people.svg +2 -2
  1078. package/src/assets/images/icons/material-symbols/400/rounded/person-bounding-box.svg +3 -3
  1079. package/src/assets/images/icons/material-symbols/400/rounded/person-circle.svg +3 -3
  1080. package/src/assets/images/icons/material-symbols/400/rounded/person-plus.svg +3 -3
  1081. package/src/assets/images/icons/material-symbols/400/rounded/person-rolodex.svg +3 -3
  1082. package/src/assets/images/icons/material-symbols/400/rounded/person-up.svg +3 -3
  1083. package/src/assets/images/icons/material-symbols/400/rounded/person-vcard.svg +3 -3
  1084. package/src/assets/images/icons/material-symbols/400/rounded/person.svg +2 -2
  1085. package/src/assets/images/icons/material-symbols/400/rounded/person_remove.svg +8 -8
  1086. package/src/assets/images/icons/material-symbols/400/rounded/personal_injury.svg +15 -15
  1087. package/src/assets/images/icons/material-symbols/400/rounded/phone_forwarded.svg +8 -8
  1088. package/src/assets/images/icons/material-symbols/400/rounded/photo_camera.svg +8 -8
  1089. package/src/assets/images/icons/material-symbols/400/rounded/play_arrow.svg +8 -8
  1090. package/src/assets/images/icons/material-symbols/400/rounded/prescriptions.svg +8 -8
  1091. package/src/assets/images/icons/material-symbols/400/rounded/price_change.svg +8 -8
  1092. package/src/assets/images/icons/material-symbols/400/rounded/print.svg +8 -8
  1093. package/src/assets/images/icons/material-symbols/400/rounded/printer.svg +3 -3
  1094. package/src/assets/images/icons/material-symbols/400/rounded/prompt_suggestion.svg +8 -8
  1095. package/src/assets/images/icons/material-symbols/400/rounded/psychology.svg +8 -8
  1096. package/src/assets/images/icons/material-symbols/400/rounded/published_with_changes.svg +8 -8
  1097. package/src/assets/images/icons/material-symbols/400/rounded/pulmonology.svg +8 -8
  1098. package/src/assets/images/icons/material-symbols/400/rounded/push_pin.svg +8 -8
  1099. package/src/assets/images/icons/material-symbols/400/rounded/question_mark.svg +8 -8
  1100. package/src/assets/images/icons/material-symbols/400/rounded/quickreply.svg +8 -8
  1101. package/src/assets/images/icons/material-symbols/400/rounded/radio_button_checked.svg +8 -8
  1102. package/src/assets/images/icons/material-symbols/400/rounded/radio_button_unchecked.svg +8 -8
  1103. package/src/assets/images/icons/material-symbols/400/rounded/receipt_long.svg +15 -15
  1104. package/src/assets/images/icons/material-symbols/400/rounded/record-circle.svg +3 -3
  1105. package/src/assets/images/icons/material-symbols/400/rounded/redo.svg +8 -8
  1106. package/src/assets/images/icons/material-symbols/400/rounded/refresh.svg +8 -8
  1107. package/src/assets/images/icons/material-symbols/400/rounded/refund.svg +10 -10
  1108. package/src/assets/images/icons/material-symbols/400/rounded/reg-notes.svg +8 -8
  1109. package/src/assets/images/icons/material-symbols/400/rounded/remove.svg +8 -8
  1110. package/src/assets/images/icons/material-symbols/400/rounded/remove_moderator.svg +8 -8
  1111. package/src/assets/images/icons/material-symbols/400/rounded/remove_moderator_fill.svg +8 -8
  1112. package/src/assets/images/icons/material-symbols/400/rounded/repeat.svg +8 -8
  1113. package/src/assets/images/icons/material-symbols/400/rounded/replay.svg +8 -8
  1114. package/src/assets/images/icons/material-symbols/400/rounded/request_quote.svg +8 -8
  1115. package/src/assets/images/icons/material-symbols/400/rounded/rocket_launch.svg +8 -8
  1116. package/src/assets/images/icons/material-symbols/400/rounded/rule_settings.svg +8 -8
  1117. package/src/assets/images/icons/material-symbols/400/rounded/schedule.svg +8 -8
  1118. package/src/assets/images/icons/material-symbols/400/rounded/search.svg +8 -8
  1119. package/src/assets/images/icons/material-symbols/400/rounded/self_pay.svg +8 -8
  1120. package/src/assets/images/icons/material-symbols/400/rounded/self_pay_fill.svg +8 -8
  1121. package/src/assets/images/icons/material-symbols/400/rounded/settings.svg +8 -8
  1122. package/src/assets/images/icons/material-symbols/400/rounded/settings_applications.svg +8 -8
  1123. package/src/assets/images/icons/material-symbols/400/rounded/shield_person.svg +8 -8
  1124. package/src/assets/images/icons/material-symbols/400/rounded/shield_person_fill.svg +8 -8
  1125. package/src/assets/images/icons/material-symbols/400/rounded/signal_cellular_alt.svg +8 -8
  1126. package/src/assets/images/icons/material-symbols/400/rounded/simple-notes.svg +8 -8
  1127. package/src/assets/images/icons/material-symbols/400/rounded/skin.svg +11 -11
  1128. package/src/assets/images/icons/material-symbols/400/rounded/smartphone.svg +8 -8
  1129. package/src/assets/images/icons/material-symbols/400/rounded/sort.svg +8 -8
  1130. package/src/assets/images/icons/material-symbols/400/rounded/sort_by_alpha.svg +8 -8
  1131. package/src/assets/images/icons/material-symbols/400/rounded/star-fill.svg +2 -2
  1132. package/src/assets/images/icons/material-symbols/400/rounded/stickies.svg +3 -3
  1133. package/src/assets/images/icons/material-symbols/400/rounded/stop_circle.svg +8 -8
  1134. package/src/assets/images/icons/material-symbols/400/rounded/straight.svg +3 -3
  1135. package/src/assets/images/icons/material-symbols/400/rounded/sub-task.svg +9 -9
  1136. package/src/assets/images/icons/material-symbols/400/rounded/subdirectory_arrow_left.svg +8 -8
  1137. package/src/assets/images/icons/material-symbols/400/rounded/summarize.svg +8 -8
  1138. package/src/assets/images/icons/material-symbols/400/rounded/swap_vert.svg +8 -8
  1139. package/src/assets/images/icons/material-symbols/400/rounded/swipe_left_alt.svg +8 -8
  1140. package/src/assets/images/icons/material-symbols/400/rounded/syringe.svg +8 -8
  1141. package/src/assets/images/icons/material-symbols/400/rounded/table.svg +8 -8
  1142. package/src/assets/images/icons/material-symbols/400/rounded/task.svg +8 -8
  1143. package/src/assets/images/icons/material-symbols/400/rounded/telemedicine.svg +15 -15
  1144. package/src/assets/images/icons/material-symbols/400/rounded/tune.svg +8 -8
  1145. package/src/assets/images/icons/material-symbols/400/rounded/unarchive.svg +8 -8
  1146. package/src/assets/images/icons/material-symbols/400/rounded/undo.svg +8 -8
  1147. package/src/assets/images/icons/material-symbols/400/rounded/unfold_more.svg +8 -8
  1148. package/src/assets/images/icons/material-symbols/400/rounded/universal-access.svg +2 -2
  1149. package/src/assets/images/icons/material-symbols/400/rounded/universal_currency_alt.svg +8 -8
  1150. package/src/assets/images/icons/material-symbols/400/rounded/update_disabled.svg +8 -8
  1151. package/src/assets/images/icons/material-symbols/400/rounded/upload.svg +8 -8
  1152. package/src/assets/images/icons/material-symbols/400/rounded/upload_file.svg +8 -8
  1153. package/src/assets/images/icons/material-symbols/400/rounded/urology.svg +8 -8
  1154. package/src/assets/images/icons/material-symbols/400/rounded/verified_user.svg +8 -8
  1155. package/src/assets/images/icons/material-symbols/400/rounded/verified_user_fill.svg +8 -8
  1156. package/src/assets/images/icons/material-symbols/400/rounded/videocam.svg +8 -8
  1157. package/src/assets/images/icons/material-symbols/400/rounded/videocam_off.svg +8 -8
  1158. package/src/assets/images/icons/material-symbols/400/rounded/view_week.svg +8 -8
  1159. package/src/assets/images/icons/material-symbols/400/rounded/visibility-fill.svg +8 -8
  1160. package/src/assets/images/icons/material-symbols/400/rounded/visibility.svg +8 -8
  1161. package/src/assets/images/icons/material-symbols/400/rounded/visibility_off-fill.svg +8 -8
  1162. package/src/assets/images/icons/material-symbols/400/rounded/visibility_off.svg +8 -8
  1163. package/src/assets/images/icons/material-symbols/400/rounded/vpn_key.svg +10 -10
  1164. package/src/assets/images/icons/material-symbols/400/rounded/warning.svg +8 -8
  1165. package/src/assets/images/icons/material-symbols/400/rounded/water_drop.svg +8 -8
  1166. package/src/assets/images/icons/material-symbols/400/rounded/west.svg +8 -8
  1167. package/src/assets/images/icons/material-symbols/400/rounded/where_to_vote.svg +8 -8
  1168. package/src/assets/images/icons/material-symbols/400/rounded/widgets.svg +8 -8
  1169. package/src/assets/images/icons/material-symbols/400/rounded/x-square.svg +3 -3
  1170. package/src/assets/images/icons.svg +723 -723
  1171. package/src/assets/images/iconsnew.svg +120 -120
  1172. package/src/assets/images/insurance-covers-outline.svg +7 -7
  1173. package/src/assets/images/insurance-covers.svg +3 -3
  1174. package/src/assets/images/ios-kiosk.svg +1 -1
  1175. package/src/assets/images/jpg.svg +67 -67
  1176. package/src/assets/images/link-new.svg +11 -11
  1177. package/src/assets/images/list-check.svg +8 -8
  1178. package/src/assets/images/loader.svg +55 -55
  1179. package/src/assets/images/loading.svg +17 -17
  1180. package/src/assets/images/log.svg +6 -6
  1181. package/src/assets/images/logo-old.svg +11 -11
  1182. package/src/assets/images/logo.svg +10 -10
  1183. package/src/assets/images/master-card.svg +1 -1
  1184. package/src/assets/images/master-new.svg +11 -11
  1185. package/src/assets/images/master.svg +13 -13
  1186. package/src/assets/images/medicine.svg +16 -16
  1187. package/src/assets/images/message-icon.svg +24 -24
  1188. package/src/assets/images/mic-bg.svg +10 -10
  1189. package/src/assets/images/middleware-mobile/Android1.svg +10 -10
  1190. package/src/assets/images/middleware-mobile/IOS.svg +8 -8
  1191. package/src/assets/images/middleware-mobile/android.svg +9 -9
  1192. package/src/assets/images/middleware-mobile/apple 1.svg +9 -9
  1193. package/src/assets/images/middleware-mobile/ecare.svg +9 -9
  1194. package/src/assets/images/middleware-mobile/f-icon.svg +5 -5
  1195. package/src/assets/images/middleware-mobile/folder.svg +8 -8
  1196. package/src/assets/images/middleware-mobile/logo.svg +10 -10
  1197. package/src/assets/images/middleware-mobile/payment.svg +8 -8
  1198. package/src/assets/images/middleware-mobile/telemedicine.svg +16 -16
  1199. package/src/assets/images/middleware-mobile/web.svg +9 -9
  1200. package/src/assets/images/mobile-view-new.svg +53 -53
  1201. package/src/assets/images/mobile-view.svg +26 -26
  1202. package/src/assets/images/mobileapp.svg +13 -13
  1203. package/src/assets/images/nail-map/left-foot.svg +9 -9
  1204. package/src/assets/images/nail-map/left-hand.svg +9 -9
  1205. package/src/assets/images/nail-map/right-foot.svg +9 -9
  1206. package/src/assets/images/nail-map/right-hand.svg +9 -9
  1207. package/src/assets/images/new-19/Labs_Imaging.svg +8 -8
  1208. package/src/assets/images/new-19/attach_file.svg +8 -8
  1209. package/src/assets/images/new-19/box_edit.svg +8 -8
  1210. package/src/assets/images/new-19/clinical_notes.svg +8 -8
  1211. package/src/assets/images/new-19/close.svg +8 -8
  1212. package/src/assets/images/new-19/delete.svg +8 -8
  1213. package/src/assets/images/new-19/folder_open.svg +8 -8
  1214. package/src/assets/images/new-19/format_list_bulleted.svg +8 -8
  1215. package/src/assets/images/new-19/photo_camera.svg +8 -8
  1216. package/src/assets/images/new-19/source_notes.svg +8 -8
  1217. package/src/assets/images/new-19/splitscreen_bottom.svg +8 -8
  1218. package/src/assets/images/new-19/stack.svg +8 -8
  1219. package/src/assets/images/new-19/sticky_note_2.svg +8 -8
  1220. package/src/assets/images/new-19/thunder.svg +12 -12
  1221. package/src/assets/images/no-graphs.svg +29 -29
  1222. package/src/assets/images/no-insurance-covers-outline.svg +8 -8
  1223. package/src/assets/images/no-insurance-covers.svg +3 -3
  1224. package/src/assets/images/no-messges.svg +80 -80
  1225. package/src/assets/images/no_action_items.svg +54 -54
  1226. package/src/assets/images/no_clinical_decision_support_found.svg +25 -25
  1227. package/src/assets/images/no_documents_founds.svg +40 -40
  1228. package/src/assets/images/no_encounter_notes_found.svg +16 -16
  1229. package/src/assets/images/no_internet.svg +8 -8
  1230. package/src/assets/images/no_referrals_found.svg +30 -30
  1231. package/src/assets/images/no_templates_found.svg +43 -43
  1232. package/src/assets/images/not_found.svg +10 -10
  1233. package/src/assets/images/note-arrow.svg +4 -4
  1234. package/src/assets/images/onboarding_loader.svg +24 -24
  1235. package/src/assets/images/p-1.svg +15 -15
  1236. package/src/assets/images/p-2.svg +15 -15
  1237. package/src/assets/images/p-3.svg +15 -15
  1238. package/src/assets/images/p-4.svg +15 -15
  1239. package/src/assets/images/p-5.svg +15 -15
  1240. package/src/assets/images/p-6.svg +15 -15
  1241. package/src/assets/images/p-7.svg +10 -10
  1242. package/src/assets/images/p-8.svg +15 -15
  1243. package/src/assets/images/p-lab.svg +8 -8
  1244. package/src/assets/images/padlock.svg +7 -7
  1245. package/src/assets/images/paper_claim.svg +8 -8
  1246. package/src/assets/images/pdf.svg +51 -51
  1247. package/src/assets/images/person.svg +18 -18
  1248. package/src/assets/images/plus-button.svg +10 -10
  1249. package/src/assets/images/print_location.svg +3 -3
  1250. package/src/assets/images/qrcode.svg +445 -445
  1251. package/src/assets/images/reports.svg +9 -9
  1252. package/src/assets/images/schedule.svg +5 -5
  1253. package/src/assets/images/send.svg +8 -8
  1254. package/src/assets/images/sort_ascending.svg +12 -12
  1255. package/src/assets/images/sort_descending.svg +12 -12
  1256. package/src/assets/images/sort_none.svg +13 -13
  1257. package/src/assets/images/stop_circle.svg +8 -8
  1258. package/src/assets/images/summarize.svg +13 -13
  1259. package/src/assets/images/time.svg +3 -3
  1260. package/src/assets/images/tour_guide_1.svg +31 -31
  1261. package/src/assets/images/tour_guide_2.svg +34 -34
  1262. package/src/assets/images/tour_guide_3.svg +29 -29
  1263. package/src/assets/images/tour_guide_4.svg +23 -23
  1264. package/src/assets/images/tour_guide_5.svg +37 -37
  1265. package/src/assets/images/tour_guide_6.svg +35 -35
  1266. package/src/assets/images/tour_guide_7.svg +58 -58
  1267. package/src/assets/images/tour_guide_8.svg +73 -73
  1268. package/src/assets/images/upload-new.svg +6 -6
  1269. package/src/assets/images/visa-card.svg +1 -1
  1270. package/src/assets/images/visa-new.svg +8 -8
  1271. package/src/assets/images/visa.svg +10 -10
  1272. package/src/assets/images/vitals.svg +3 -3
  1273. package/src/assets/images/voice1.svg +9 -9
  1274. package/src/assets/images/welcome-intro.svg +19 -19
  1275. package/src/assets/images/welcome-intro1.svg +84 -84
  1276. package/src/assets/scripts/SIPml-api.js +33514 -33514
  1277. package/src/assets/scripts/annyang.min.js +6 -6
  1278. package/src/assets/scripts/call.js +385 -385
  1279. package/src/assets/scripts/jquery-3.3.1.min.js +1 -1
  1280. package/src/assets/scripts/jquery.inputmask.min.js +7 -7
  1281. package/src/assets/scripts/jstree.min.js +5 -5
  1282. package/src/assets/scripts/scannerDocument.html +130 -130
  1283. package/src/assets/scripts/shoelace.js +320 -320
  1284. package/src/assets/scripts/tailwindcss.js +64 -64
  1285. package/src/assets/scripts/wave.js +6094 -6094
  1286. package/src/assets/svg/telemedicine.svg +16 -16
  1287. package/src/styles.scss +3607 -3607
  1288. package/styles/_index.scss +14 -14
  1289. package/styles/embed.scss +337 -339
  1290. package/styles/standalone.scss +4 -4
  1291. package/tailwind.config.js +190 -190
  1292. package/fesm2022/edvak99-voice-receptionist-widget-activities-page.component-BlOth9CN.mjs +0 -533
  1293. package/fesm2022/edvak99-voice-receptionist-widget-activities-page.component-BlOth9CN.mjs.map +0 -1
  1294. package/fesm2022/edvak99-voice-receptionist-widget-analytics-page.component-Cr02cCqy.mjs +0 -435
  1295. package/fesm2022/edvak99-voice-receptionist-widget-analytics-page.component-Cr02cCqy.mjs.map +0 -1
  1296. package/fesm2022/edvak99-voice-receptionist-widget-audit-page.component-IKR5CpVe.mjs +0 -96
  1297. package/fesm2022/edvak99-voice-receptionist-widget-audit-page.component-IKR5CpVe.mjs.map +0 -1
  1298. package/fesm2022/edvak99-voice-receptionist-widget-call-history-detail-page.component-pRSrt5C2.mjs +0 -441
  1299. package/fesm2022/edvak99-voice-receptionist-widget-call-history-detail-page.component-pRSrt5C2.mjs.map +0 -1
  1300. package/fesm2022/edvak99-voice-receptionist-widget-call-history-page.component-CtdkYCXC.mjs +0 -254
  1301. package/fesm2022/edvak99-voice-receptionist-widget-call-history-page.component-CtdkYCXC.mjs.map +0 -1
  1302. package/fesm2022/edvak99-voice-receptionist-widget-call-recording-player.component-D9hxkypQ.mjs +0 -110
  1303. package/fesm2022/edvak99-voice-receptionist-widget-call-recording-player.component-D9hxkypQ.mjs.map +0 -1
  1304. package/fesm2022/edvak99-voice-receptionist-widget-call-review.service-DhLqgadd.mjs.map +0 -1
  1305. package/fesm2022/edvak99-voice-receptionist-widget-dashboard-page.component-CoqHpfH4.mjs +0 -311
  1306. package/fesm2022/edvak99-voice-receptionist-widget-dashboard-page.component-CoqHpfH4.mjs.map +0 -1
  1307. package/fesm2022/edvak99-voice-receptionist-widget-eds-search-field.component-BDGCmkoP.mjs.map +0 -1
  1308. package/fesm2022/edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-CabSa0_n.mjs.map +0 -1
  1309. package/fesm2022/edvak99-voice-receptionist-widget-live-calls-page.component-BLJTOY-p.mjs +0 -437
  1310. package/fesm2022/edvak99-voice-receptionist-widget-live-calls-page.component-BLJTOY-p.mjs.map +0 -1
  1311. package/fesm2022/edvak99-voice-receptionist-widget-live-monitor-page.component-MS9bpOBv.mjs +0 -1117
  1312. package/fesm2022/edvak99-voice-receptionist-widget-live-monitor-page.component-MS9bpOBv.mjs.map +0 -1
  1313. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purposes-page.component-Wxq3Aqip.mjs +0 -273
  1314. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purposes-page.component-Wxq3Aqip.mjs.map +0 -1
  1315. package/fesm2022/edvak99-voice-receptionist-widget-smart-tooltip.directive-ChEdIem3.mjs.map +0 -1
  1316. package/fesm2022/edvak99-voice-receptionist-widget-task-detail-drawer.component-CAsLgIJB.mjs +0 -208
  1317. package/fesm2022/edvak99-voice-receptionist-widget-task-detail-drawer.component-CAsLgIJB.mjs.map +0 -1
  1318. package/fesm2022/edvak99-voice-receptionist-widget-tasks-page.component-9X8YjNaO.mjs +0 -154
  1319. package/fesm2022/edvak99-voice-receptionist-widget-tasks-page.component-9X8YjNaO.mjs.map +0 -1
  1320. package/fesm2022/edvak99-voice-receptionist-widget-wizard-page.component-CktmVrGt.mjs +0 -47
  1321. package/fesm2022/edvak99-voice-receptionist-widget-wizard-page.component-CktmVrGt.mjs.map +0 -1
@@ -0,0 +1,1130 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, signal, Injectable, input, output, computed, effect, ViewChild, ChangeDetectionStrategy, Component, DestroyRef, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { ActivatedRoute, Router } from '@angular/router';
5
+ import * as i1 from '@angular/forms';
6
+ import { FormsModule } from '@angular/forms';
7
+ import { firstValueFrom } from 'rxjs';
8
+ import { k as resolveToolKey, l as resolveToolDisplayName, D as DashboardSocketService, V as VOICE_RECEPTIONIST_CONFIG, i as isUnknownCaller, I as IconComponent, A as AiReceptionistApiService, T as ToastService, m as toolEventTrackKey, c as callerMetaLine, b as ageFromDob, E as EdAvatarComponent, f as EdButtonComponent, g as EdSkeletonComponent } from './edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-DOYlRven.mjs';
9
+ import { E as EdsElapsedPipe, a as sentimentLabel, s as sentimentIconSrc } from './edvak99-voice-receptionist-widget-eds-elapsed.pipe-Dra7e7xN.mjs';
10
+ import { C as CallRecordingPlayerComponent } from './edvak99-voice-receptionist-widget-call-recording-player.component-Dy_81fZi.mjs';
11
+ import { Track, Room, RoomEvent, ConnectionState } from 'livekit-client';
12
+
13
+ function mapChunkToLine(chunk) {
14
+ const offsetSeconds = chunk.spokenOffsetMs != null &&
15
+ Number.isFinite(chunk.spokenOffsetMs) &&
16
+ chunk.spokenOffsetMs >= 0
17
+ ? chunk.spokenOffsetMs / 1000
18
+ : null;
19
+ const timestampSeconds = Date.parse(chunk.spokenAt ?? chunk.timestamp) / 1000;
20
+ return {
21
+ who: chunk.role === 'staff'
22
+ ? 'staff'
23
+ : chunk.role === 'system'
24
+ ? 'system'
25
+ : chunk.role === 'assistant'
26
+ ? 'ai'
27
+ : 'patient',
28
+ text: chunk.text,
29
+ at: offsetSeconds ??
30
+ (Number.isFinite(timestampSeconds) ? timestampSeconds : Date.now() / 1000),
31
+ };
32
+ }
33
+ function formatEventTime(iso) {
34
+ return new Date(iso).toLocaleTimeString('en-US', {
35
+ hour: 'numeric',
36
+ minute: '2-digit',
37
+ second: '2-digit',
38
+ hour12: false,
39
+ });
40
+ }
41
+ function mapCallEventToTool(event) {
42
+ const p = event.payload;
43
+ const state = p['state'];
44
+ const rawName = String(p['name'] ?? event.eventType.replace(/^tool_/, ''));
45
+ const tech = String(p['tech'] ?? event.eventType);
46
+ const key = resolveToolKey(p['key'] != null ? String(p['key']) : undefined, rawName, tech);
47
+ return {
48
+ t: formatEventTime(event.occurredAt),
49
+ key,
50
+ name: resolveToolDisplayName(key, rawName),
51
+ tech,
52
+ result: String(p['result'] ?? ''),
53
+ state: state === 'ok' || state === 'warn' || state === 'error' || state === 'active'
54
+ ? state
55
+ : 'ok',
56
+ };
57
+ }
58
+ function mapLifecycleEventToTool(event) {
59
+ const p = event.payload;
60
+ return {
61
+ t: formatEventTime(event.occurredAt),
62
+ name: event.eventType.replace(/_/g, ' '),
63
+ tech: event.eventType,
64
+ result: String(p['detail'] ?? p['message'] ?? p['result'] ?? ''),
65
+ state: 'ok',
66
+ };
67
+ }
68
+ function isDuplicateTranscriptLine(lines, line) {
69
+ return lines.some((l) => l.who === line.who && l.text.trim() === line.text.trim());
70
+ }
71
+
72
+ /**
73
+ * Live call stream over shared Socket.io (`/dashboard` namespace).
74
+ * REST seeds transcript/tools once; socket delivers `new_chunk` + `call_event`.
75
+ */
76
+ class LiveTranscriptService {
77
+ constructor() {
78
+ this.socket = inject(DashboardSocketService);
79
+ this.config = inject(VOICE_RECEPTIONIST_CONFIG);
80
+ this.lines = signal([]);
81
+ this.patientInterim = signal(null);
82
+ this.aiInterim = signal(null);
83
+ this.staffInterim = signal(null);
84
+ this.tools = signal([]);
85
+ this.connected = this.socket.connected;
86
+ this.error = signal(null);
87
+ this.callEnded = signal(false);
88
+ this.summaryRequested = signal(false);
89
+ this.activeCallId = null;
90
+ this.watching = false;
91
+ this.mockTimer = null;
92
+ this.mockIndex = 0;
93
+ this.chunkHandler = (chunk) => this.handleChunk(chunk);
94
+ this.eventHandler = (event) => this.handleCallEvent(event);
95
+ this.onSocketConnect = () => {
96
+ if (this.activeCallId) {
97
+ this.socket.emit('watch_call', { callId: this.activeCallId });
98
+ }
99
+ };
100
+ }
101
+ seed(transcript, toolEvents) {
102
+ this.lines.set(transcript.map((line) => ({ ...line })));
103
+ this.tools.set(toolEvents.map((tool) => ({ ...tool })));
104
+ }
105
+ watch(callId, live = true) {
106
+ const id = callId.trim();
107
+ if (!id || !live)
108
+ return;
109
+ const switchingCall = this.activeCallId !== id;
110
+ if (switchingCall) {
111
+ this.unsubscribeSocketEvents();
112
+ this.clearInterim();
113
+ this.callEnded.set(false);
114
+ this.summaryRequested.set(false);
115
+ this.activeCallId = id;
116
+ }
117
+ else if (this.watching) {
118
+ return;
119
+ }
120
+ if (this.config.useMockApi) {
121
+ this.watching = true;
122
+ this.startMockStream(id);
123
+ return;
124
+ }
125
+ if (!this.watching) {
126
+ this.socket.acquire();
127
+ this.socket.on('new_chunk', this.chunkHandler);
128
+ this.socket.on('call_event', this.eventHandler);
129
+ this.socket.onConnect(this.onSocketConnect);
130
+ this.watching = true;
131
+ }
132
+ if (this.socket.connected()) {
133
+ this.socket.emit('watch_call', { callId: id });
134
+ }
135
+ }
136
+ stop() {
137
+ this.activeCallId = null;
138
+ this.unsubscribeSocketEvents();
139
+ this.resetStreamState();
140
+ }
141
+ markCompleted() {
142
+ this.callEnded.set(true);
143
+ this.unsubscribeSocketEvents();
144
+ this.clearInterim();
145
+ }
146
+ unsubscribeSocketEvents() {
147
+ this.stopMockStream();
148
+ if (!this.watching)
149
+ return;
150
+ this.socket.off('new_chunk', this.chunkHandler);
151
+ this.socket.off('call_event', this.eventHandler);
152
+ this.socket.offConnect(this.onSocketConnect);
153
+ this.socket.release();
154
+ this.watching = false;
155
+ }
156
+ handleChunk(chunk) {
157
+ if (!chunk?.text?.trim())
158
+ return;
159
+ if (chunk.role === 'user') {
160
+ if (chunk.isFinal) {
161
+ this.patientInterim.set(null);
162
+ this.appendLineIfNew(mapChunkToLine(chunk), chunk.spokenOffsetMs != null);
163
+ }
164
+ else {
165
+ this.patientInterim.set(chunk.text);
166
+ }
167
+ return;
168
+ }
169
+ if (chunk.role === 'system') {
170
+ this.appendLineIfNew(mapChunkToLine(chunk), chunk.spokenOffsetMs != null);
171
+ return;
172
+ }
173
+ if (chunk.role === 'staff') {
174
+ if (chunk.isFinal) {
175
+ this.staffInterim.set(null);
176
+ this.appendLineIfNew(mapChunkToLine(chunk), chunk.spokenOffsetMs != null);
177
+ }
178
+ else {
179
+ this.staffInterim.set(chunk.text);
180
+ }
181
+ return;
182
+ }
183
+ if (chunk.isFinal) {
184
+ this.aiInterim.set(null);
185
+ this.appendLineIfNew(mapChunkToLine(chunk), chunk.spokenOffsetMs != null);
186
+ }
187
+ else {
188
+ this.aiInterim.set(chunk.text);
189
+ }
190
+ }
191
+ handleCallEvent(event) {
192
+ if (!event?.eventType)
193
+ return;
194
+ if (event.eventType.startsWith('tool_')) {
195
+ this.tools.update((prev) => [...prev, mapCallEventToTool(event)]);
196
+ return;
197
+ }
198
+ if (event.eventType === 'call_completed') {
199
+ this.markCompleted();
200
+ return;
201
+ }
202
+ if (event.eventType === 'summary_generated') {
203
+ this.summaryRequested.set(true);
204
+ return;
205
+ }
206
+ this.tools.update((prev) => [...prev, mapLifecycleEventToTool(event)]);
207
+ }
208
+ appendLineIfNew(line, hasSpokenOffset = false) {
209
+ this.lines.update((prev) => {
210
+ if (isDuplicateTranscriptLine(prev, line))
211
+ return prev;
212
+ const next = [...prev, line];
213
+ if (!hasSpokenOffset)
214
+ return next;
215
+ return next
216
+ .map((value, index) => ({ value, index }))
217
+ .sort((a, b) => (a.value.at ?? Number.MAX_SAFE_INTEGER) -
218
+ (b.value.at ?? Number.MAX_SAFE_INTEGER) || a.index - b.index)
219
+ .map(({ value }) => value);
220
+ });
221
+ }
222
+ startMockStream(callId) {
223
+ this.stopMockStream();
224
+ this.mockIndex = 0;
225
+ const mockChunks = [
226
+ {
227
+ role: 'user',
228
+ text: 'Hi, I need to schedule an appointment.',
229
+ isFinal: false,
230
+ timestamp: new Date().toISOString(),
231
+ },
232
+ {
233
+ role: 'user',
234
+ text: 'Hi, I need to schedule an appointment.',
235
+ isFinal: true,
236
+ timestamp: new Date().toISOString(),
237
+ },
238
+ {
239
+ role: 'assistant',
240
+ text: 'Of course — I can help with that. Which provider would you prefer?',
241
+ isFinal: true,
242
+ timestamp: new Date().toISOString(),
243
+ },
244
+ ];
245
+ const mockEvents = [
246
+ {
247
+ eventType: 'tool_check_doctor_availability',
248
+ occurredAt: new Date().toISOString(),
249
+ payload: {
250
+ key: 'check_doctor_availability',
251
+ name: 'Checked Doctor Availability',
252
+ tech: 'tool_check_doctor_availability',
253
+ result: 'Found 3 available time slots',
254
+ state: 'ok',
255
+ },
256
+ },
257
+ ];
258
+ this.mockTimer = setInterval(() => {
259
+ if (this.activeCallId !== callId) {
260
+ this.stopMockStream();
261
+ return;
262
+ }
263
+ if (this.mockIndex < mockChunks.length) {
264
+ this.handleChunk(mockChunks[this.mockIndex]);
265
+ this.mockIndex++;
266
+ return;
267
+ }
268
+ if (this.mockIndex === mockChunks.length) {
269
+ this.handleCallEvent(mockEvents[0]);
270
+ this.mockIndex++;
271
+ }
272
+ }, 1500);
273
+ }
274
+ stopMockStream() {
275
+ if (this.mockTimer) {
276
+ clearInterval(this.mockTimer);
277
+ this.mockTimer = null;
278
+ }
279
+ }
280
+ clearInterim() {
281
+ this.patientInterim.set(null);
282
+ this.aiInterim.set(null);
283
+ this.staffInterim.set(null);
284
+ }
285
+ resetStreamState() {
286
+ this.lines.set([]);
287
+ this.tools.set([]);
288
+ this.clearInterim();
289
+ this.error.set(null);
290
+ this.callEnded.set(false);
291
+ this.summaryRequested.set(false);
292
+ }
293
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LiveTranscriptService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
294
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LiveTranscriptService, providedIn: 'root' }); }
295
+ }
296
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LiveTranscriptService, decorators: [{
297
+ type: Injectable,
298
+ args: [{ providedIn: 'root' }]
299
+ }] });
300
+
301
+ class LiveTranscriptPanelComponent {
302
+ constructor() {
303
+ this.live = input(true);
304
+ this.paused = input(false);
305
+ this.humanTakeover = input(false);
306
+ this.showStaffInput = input(false);
307
+ /** Call start ms for the Recording timer pill. */
308
+ this.callStarted = input(null);
309
+ this.staffMessage = input('');
310
+ /** Resolved patient display name from the live call. */
311
+ this.callerName = input(null);
312
+ /** Whether the caller was matched to a patient chart. */
313
+ this.callerMatched = input(false);
314
+ this.staffMessageChange = output();
315
+ this.sendMessage = output();
316
+ this.stream = inject(LiveTranscriptService);
317
+ this.lines = this.stream.lines;
318
+ this.patientInterim = this.stream.patientInterim;
319
+ this.aiInterim = this.stream.aiInterim;
320
+ this.staffInterim = this.stream.staffInterim;
321
+ this.connected = this.stream.connected;
322
+ this.error = this.stream.error;
323
+ this.callerLabel = computed(() => {
324
+ const name = this.callerName()?.trim() ?? '';
325
+ if (isUnknownCaller(name, this.callerMatched()))
326
+ return 'Unknown Caller';
327
+ return name || 'Unknown Caller';
328
+ });
329
+ this.shouldScroll = false;
330
+ effect(() => {
331
+ this.lines();
332
+ this.patientInterim();
333
+ this.aiInterim();
334
+ this.staffInterim();
335
+ this.requestScroll();
336
+ });
337
+ }
338
+ ngAfterViewChecked() {
339
+ if (this.shouldScroll && this.scrollHost) {
340
+ const el = this.scrollHost.nativeElement;
341
+ el.scrollTop = el.scrollHeight;
342
+ this.shouldScroll = false;
343
+ }
344
+ }
345
+ roleLabel(who) {
346
+ switch (who) {
347
+ case 'ai':
348
+ return 'AI Receptionist';
349
+ case 'patient':
350
+ return this.callerLabel();
351
+ case 'staff':
352
+ return 'Staff';
353
+ default:
354
+ return 'System';
355
+ }
356
+ }
357
+ speakerIcon(who) {
358
+ switch (who) {
359
+ case 'ai':
360
+ return 'graph_new';
361
+ case 'staff':
362
+ return 'Robot';
363
+ case 'patient':
364
+ return 'person';
365
+ default:
366
+ return 'info';
367
+ }
368
+ }
369
+ systemIcon(flag) {
370
+ if (flag === 'verify')
371
+ return 'verified_user';
372
+ if (flag === 'fail' || flag === 'escalate')
373
+ return 'bolt';
374
+ return 'info';
375
+ }
376
+ onStaffInput(value) {
377
+ this.staffMessageChange.emit(value);
378
+ }
379
+ onSend() {
380
+ this.sendMessage.emit();
381
+ }
382
+ requestScroll() {
383
+ this.shouldScroll = true;
384
+ }
385
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LiveTranscriptPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
386
+ 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 }, callStarted: { classPropertyName: "callStarted", publicName: "callStarted", isSignal: true, isRequired: false, transformFunction: null }, staffMessage: { classPropertyName: "staffMessage", publicName: "staffMessage", isSignal: true, isRequired: false, transformFunction: null }, callerName: { classPropertyName: "callerName", publicName: "callerName", isSignal: true, isRequired: false, transformFunction: null }, callerMatched: { classPropertyName: "callerMatched", publicName: "callerMatched", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { staffMessageChange: "staffMessageChange", sendMessage: "sendMessage" }, host: { classAttribute: "flex h-full min-h-0 flex-1 flex-col overflow-hidden" }, viewQueries: [{ propertyName: "scrollHost", first: true, predicate: ["scrollHost"], descendants: true }], ngImport: i0, template: "<section\r\n class=\"flex h-full min-h-0 flex-1 flex-col overflow-hidden rounded-xl bg-white p-4\"\r\n aria-labelledby=\"live-transcript-title\"\r\n>\r\n <header class=\"mb-4 flex shrink-0 items-center justify-between gap-3\">\r\n <div class=\"flex min-w-0 items-center gap-2\">\r\n <h4 id=\"live-transcript-title\" class=\"m-0\">Live Transcript</h4>\r\n @if (live() && !paused()) {\r\n <span class=\"live-transcript-panel__recording inline-flex h-5 items-center gap-1 rounded px-1 text-red-600\">\r\n <span class=\"h-1.5 w-1.5 rounded-full bg-red-600\" aria-hidden=\"true\"></span>\r\n Recording\r\n </span>\r\n }\r\n </div>\r\n @if (callStarted()) {\r\n <span class=\"live-transcript-panel__timer inline-flex items-center gap-0.5 rounded-full bg-green-500/10 px-1 py-0.5 text-green-700\">\r\n <span class=\"h-1.5 w-1.5 rounded-full bg-green-600\" aria-hidden=\"true\"></span>\r\n <span class=\"font-mono uppercase tracking-wide\">{{ callStarted() | edsElapsed }}</span>\r\n </span>\r\n }\r\n </header>\r\n\r\n <div #scrollHost class=\"chat-thread live-transcript-panel__thread\" role=\"log\" aria-live=\"polite\">\r\n @for (line of lines(); track $index) {\r\n @if (line.who === 'system') {\r\n <div class=\"chat-row chat-row--system\">\r\n <div\r\n class=\"chat-bubble chat-bubble--system inline-flex items-center gap-2\"\r\n [class.border-emerald-200]=\"line.flag === 'verify'\"\r\n [class.bg-emerald-50]=\"line.flag === 'verify'\"\r\n [class.text-emerald-700]=\"line.flag === 'verify'\"\r\n [class.border-amber-200]=\"line.flag === 'fail' || line.flag === 'escalate'\"\r\n [class.bg-amber-50]=\"line.flag === 'fail' || line.flag === 'escalate'\"\r\n [class.text-amber-700]=\"line.flag === 'fail' || line.flag === 'escalate'\"\r\n >\r\n <ed-icon [name]=\"systemIcon(line.flag)\" [size]=\"14\" />\r\n <span>{{ line.text }}</span>\r\n </div>\r\n </div>\r\n } @else {\r\n <article\r\n class=\"chat-row\"\r\n [class.chat-row--caller]=\"line.who === 'patient'\"\r\n [class.chat-row--ai]=\"line.who === 'ai'\"\r\n [class.chat-row--staff]=\"line.who === 'staff'\"\r\n >\r\n <div class=\"chat-meta\">\r\n <span [class.live-transcript-panel__meta--ai]=\"line.who === 'ai'\">{{ roleLabel(line.who) }}</span>\r\n </div>\r\n <div class=\"chat-bubble-row\">\r\n <div\r\n class=\"chat-avatar\"\r\n [class.chat-avatar--ai]=\"line.who === 'ai'\"\r\n [class.live-transcript-panel__avatar--ai]=\"line.who === 'ai'\"\r\n [class.chat-avatar--staff]=\"line.who === 'staff'\"\r\n [class.chat-avatar--caller]=\"line.who === 'patient'\"\r\n >\r\n <ed-icon [name]=\"speakerIcon(line.who)\" [size]=\"16\" />\r\n </div>\r\n <div\r\n class=\"chat-bubble\"\r\n [class.chat-bubble--caller]=\"line.who === 'patient'\"\r\n [class.chat-bubble--ai]=\"line.who === 'ai'\"\r\n [class.chat-bubble--staff]=\"line.who === 'staff'\"\r\n >\r\n <p class=\"chat-content\">{{ line.text }}</p>\r\n </div>\r\n </div>\r\n </article>\r\n }\r\n }\r\n\r\n @if (patientInterim(); as interim) {\r\n <article class=\"chat-row chat-row--caller\">\r\n <div class=\"chat-meta\">\r\n <span>{{ callerLabel() }}</span>\r\n </div>\r\n <div class=\"chat-bubble-row\">\r\n <div class=\"chat-avatar chat-avatar--caller\">\r\n <ed-icon name=\"person\" [size]=\"16\" />\r\n </div>\r\n <div class=\"chat-bubble chat-bubble--caller chat-bubble--interim live-transcript-panel__typing\">\r\n <span class=\"live-transcript-panel__dot\" aria-hidden=\"true\"></span>\r\n <span class=\"live-transcript-panel__dot\" aria-hidden=\"true\"></span>\r\n <span class=\"live-transcript-panel__dot\" aria-hidden=\"true\"></span>\r\n <span class=\"sr-only\">{{ interim }}</span>\r\n </div>\r\n </div>\r\n </article>\r\n }\r\n\r\n @if (staffInterim(); as interim) {\r\n <article class=\"chat-row chat-row--staff\">\r\n <div class=\"chat-meta\"><span>Staff</span></div>\r\n <div class=\"chat-bubble-row\">\r\n <div class=\"chat-avatar chat-avatar--staff\">\r\n <ed-icon name=\"Robot\" [size]=\"16\" />\r\n </div>\r\n <div class=\"chat-bubble chat-bubble--staff chat-bubble--interim\">\r\n <p class=\"chat-content\">{{ interim }}</p>\r\n </div>\r\n </div>\r\n </article>\r\n }\r\n\r\n @if (aiInterim(); as interim) {\r\n <article class=\"chat-row chat-row--ai\">\r\n <div class=\"chat-meta\">\r\n <span class=\"live-transcript-panel__meta--ai\">AI Receptionist</span>\r\n </div>\r\n <div class=\"chat-bubble-row\">\r\n <div class=\"chat-avatar chat-avatar--ai live-transcript-panel__avatar--ai\">\r\n <ed-icon name=\"graph_new\" [size]=\"16\" />\r\n </div>\r\n <div class=\"chat-bubble chat-bubble--ai chat-bubble--interim\">\r\n <p class=\"chat-content\">\r\n {{ interim }}<span class=\"live-transcript-panel__caret\" aria-hidden=\"true\"></span>\r\n </p>\r\n </div>\r\n </div>\r\n </article>\r\n }\r\n\r\n @if (lines().length === 0 && !patientInterim() && !aiInterim() && !staffInterim()) {\r\n <p class=\"m-0 px-3 py-8 text-center text-zinc-500\">Waiting for conversation\u2026</p>\r\n }\r\n </div>\r\n\r\n @if (showStaffInput()) {\r\n <footer class=\"mt-4 flex shrink-0 flex-col gap-4\">\r\n <div class=\"flex items-center gap-2 rounded-lg border border-zinc-200 p-2\">\r\n <input\r\n type=\"text\"\r\n class=\"h-8 min-w-0 flex-1 border-0 bg-transparent px-1 text-zinc-900 outline-none placeholder:text-zinc-400\"\r\n placeholder=\"Type to speak as staff\u2026\"\r\n [ngModel]=\"staffMessage()\"\r\n (ngModelChange)=\"onStaffInput($event)\"\r\n (keyup.enter)=\"onSend()\"\r\n autocomplete=\"off\"\r\n />\r\n </div>\r\n </footer>\r\n }\r\n</section>\r\n", styles: ["@charset \"UTF-8\";.chat-thread{display:flex;flex-direction:column;gap:0;flex:1 1 auto;min-height:0;overflow:auto;padding:1rem 1.5rem;background:#fff;scroll-behavior:smooth}.chat-row{display:flex;flex-direction:column;width:100%;margin-bottom:1rem}.chat-row--caller,.chat-row--user,.chat-row--patient{align-items:flex-start}.chat-row--agent,.chat-row--ai,.chat-row--staff{align-items:flex-end}.chat-row--tool,.chat-row--system{align-items:center}.chat-meta{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem;font-size:.875rem;color:var(--color-text-light, #6b7280)}.chat-row--agent .chat-meta,.chat-row--ai .chat-meta,.chat-row--staff .chat-meta{justify-content:flex-end;padding-right:2.75rem}.chat-bubble-row{display:flex;align-items:flex-start;gap:.5rem;max-width:min(72%,40rem)}.chat-row--agent .chat-bubble-row,.chat-row--ai .chat-bubble-row,.chat-row--staff .chat-bubble-row{flex-direction:row-reverse}.chat-avatar{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:9999px}.chat-avatar--ai{background:#ad46ff1f;color:#8200db}.chat-avatar--staff{border:1px solid #ddd6fe;background:#f5f3ff;color:#6d28d9}.chat-avatar--caller{background:#e5e7eb;color:#4b5563}.chat-bubble{max-width:100%;padding:.75rem 1rem;font-size:.875rem;line-height:1.5;word-break:break-word;white-space:pre-wrap}.chat-bubble--caller,.chat-bubble--user,.chat-bubble--patient{border:1px solid var(--color-border-light, #e5e7eb);border-radius:0 .5rem .5rem;background:#fff;color:var(--color-text-dark, #111827)}.chat-bubble--agent,.chat-bubble--ai{border:none;border-radius:.5rem;background:#ad46ff1a;color:var(--color-text-dark, #53575c)}.chat-bubble--staff{border:1px solid #ddd6fe;border-radius:.5rem 0 .5rem .5rem;background:#f5f3ff;color:#4c1d95}.chat-bubble--tool,.chat-bubble--system{max-width:min(90%,40rem);padding:.5rem .75rem;border:1px solid var(--color-border-light, #e5e7eb);border-radius:9999px;background:#f9fafb;color:#6b7280;font-size:.75rem;text-align:center}.chat-bubble--interim{opacity:.9;font-style:italic}.chat-content{margin:0}.chat-time{font-size:.75rem;color:#9ca3af}.live-transcript-panel__thread.chat-thread{flex:1 1 auto;min-height:0;overflow:auto;background:#f7f9fa;border-radius:.75rem;padding:1rem}.live-transcript-panel__avatar--ai{background:#ad46ff1f;color:#8200db}.live-transcript-panel__meta--ai{color:#8200db}.live-transcript-panel__caret{display:inline-block;width:7px;height:14px;margin-left:2px;vertical-align:text-bottom;background:#8200db;animation:eds-caret 1s step-end infinite}.live-transcript-panel__typing{display:inline-flex;align-items:center;gap:4px;min-width:2.5rem;min-height:1.25rem}.live-transcript-panel__dot{width:6px;height:6px;border-radius:9999px;background:#a2a4a6;animation:eds-typing 1.2s ease-in-out infinite}.live-transcript-panel__dot:nth-child(2){animation-delay:.15s}.live-transcript-panel__dot:nth-child(3){animation-delay:.3s}@keyframes eds-caret{50%{opacity:0}}@keyframes eds-typing{0%,80%,to{opacity:.35;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}\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: IconComponent, selector: "ed-icon", inputs: ["name", "size", "color", "cssClass", "decorative", "ariaHidden", "ariaLabel", "title", "desc", "focusable", "tabIndex"] }, { kind: "pipe", type: EdsElapsedPipe, name: "edsElapsed" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
387
+ }
388
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LiveTranscriptPanelComponent, decorators: [{
389
+ type: Component,
390
+ args: [{ selector: 'eds-live-transcript-panel', imports: [FormsModule, IconComponent, EdsElapsedPipe], changeDetection: ChangeDetectionStrategy.OnPush, host: {
391
+ class: 'flex h-full min-h-0 flex-1 flex-col overflow-hidden',
392
+ }, template: "<section\r\n class=\"flex h-full min-h-0 flex-1 flex-col overflow-hidden rounded-xl bg-white p-4\"\r\n aria-labelledby=\"live-transcript-title\"\r\n>\r\n <header class=\"mb-4 flex shrink-0 items-center justify-between gap-3\">\r\n <div class=\"flex min-w-0 items-center gap-2\">\r\n <h4 id=\"live-transcript-title\" class=\"m-0\">Live Transcript</h4>\r\n @if (live() && !paused()) {\r\n <span class=\"live-transcript-panel__recording inline-flex h-5 items-center gap-1 rounded px-1 text-red-600\">\r\n <span class=\"h-1.5 w-1.5 rounded-full bg-red-600\" aria-hidden=\"true\"></span>\r\n Recording\r\n </span>\r\n }\r\n </div>\r\n @if (callStarted()) {\r\n <span class=\"live-transcript-panel__timer inline-flex items-center gap-0.5 rounded-full bg-green-500/10 px-1 py-0.5 text-green-700\">\r\n <span class=\"h-1.5 w-1.5 rounded-full bg-green-600\" aria-hidden=\"true\"></span>\r\n <span class=\"font-mono uppercase tracking-wide\">{{ callStarted() | edsElapsed }}</span>\r\n </span>\r\n }\r\n </header>\r\n\r\n <div #scrollHost class=\"chat-thread live-transcript-panel__thread\" role=\"log\" aria-live=\"polite\">\r\n @for (line of lines(); track $index) {\r\n @if (line.who === 'system') {\r\n <div class=\"chat-row chat-row--system\">\r\n <div\r\n class=\"chat-bubble chat-bubble--system inline-flex items-center gap-2\"\r\n [class.border-emerald-200]=\"line.flag === 'verify'\"\r\n [class.bg-emerald-50]=\"line.flag === 'verify'\"\r\n [class.text-emerald-700]=\"line.flag === 'verify'\"\r\n [class.border-amber-200]=\"line.flag === 'fail' || line.flag === 'escalate'\"\r\n [class.bg-amber-50]=\"line.flag === 'fail' || line.flag === 'escalate'\"\r\n [class.text-amber-700]=\"line.flag === 'fail' || line.flag === 'escalate'\"\r\n >\r\n <ed-icon [name]=\"systemIcon(line.flag)\" [size]=\"14\" />\r\n <span>{{ line.text }}</span>\r\n </div>\r\n </div>\r\n } @else {\r\n <article\r\n class=\"chat-row\"\r\n [class.chat-row--caller]=\"line.who === 'patient'\"\r\n [class.chat-row--ai]=\"line.who === 'ai'\"\r\n [class.chat-row--staff]=\"line.who === 'staff'\"\r\n >\r\n <div class=\"chat-meta\">\r\n <span [class.live-transcript-panel__meta--ai]=\"line.who === 'ai'\">{{ roleLabel(line.who) }}</span>\r\n </div>\r\n <div class=\"chat-bubble-row\">\r\n <div\r\n class=\"chat-avatar\"\r\n [class.chat-avatar--ai]=\"line.who === 'ai'\"\r\n [class.live-transcript-panel__avatar--ai]=\"line.who === 'ai'\"\r\n [class.chat-avatar--staff]=\"line.who === 'staff'\"\r\n [class.chat-avatar--caller]=\"line.who === 'patient'\"\r\n >\r\n <ed-icon [name]=\"speakerIcon(line.who)\" [size]=\"16\" />\r\n </div>\r\n <div\r\n class=\"chat-bubble\"\r\n [class.chat-bubble--caller]=\"line.who === 'patient'\"\r\n [class.chat-bubble--ai]=\"line.who === 'ai'\"\r\n [class.chat-bubble--staff]=\"line.who === 'staff'\"\r\n >\r\n <p class=\"chat-content\">{{ line.text }}</p>\r\n </div>\r\n </div>\r\n </article>\r\n }\r\n }\r\n\r\n @if (patientInterim(); as interim) {\r\n <article class=\"chat-row chat-row--caller\">\r\n <div class=\"chat-meta\">\r\n <span>{{ callerLabel() }}</span>\r\n </div>\r\n <div class=\"chat-bubble-row\">\r\n <div class=\"chat-avatar chat-avatar--caller\">\r\n <ed-icon name=\"person\" [size]=\"16\" />\r\n </div>\r\n <div class=\"chat-bubble chat-bubble--caller chat-bubble--interim live-transcript-panel__typing\">\r\n <span class=\"live-transcript-panel__dot\" aria-hidden=\"true\"></span>\r\n <span class=\"live-transcript-panel__dot\" aria-hidden=\"true\"></span>\r\n <span class=\"live-transcript-panel__dot\" aria-hidden=\"true\"></span>\r\n <span class=\"sr-only\">{{ interim }}</span>\r\n </div>\r\n </div>\r\n </article>\r\n }\r\n\r\n @if (staffInterim(); as interim) {\r\n <article class=\"chat-row chat-row--staff\">\r\n <div class=\"chat-meta\"><span>Staff</span></div>\r\n <div class=\"chat-bubble-row\">\r\n <div class=\"chat-avatar chat-avatar--staff\">\r\n <ed-icon name=\"Robot\" [size]=\"16\" />\r\n </div>\r\n <div class=\"chat-bubble chat-bubble--staff chat-bubble--interim\">\r\n <p class=\"chat-content\">{{ interim }}</p>\r\n </div>\r\n </div>\r\n </article>\r\n }\r\n\r\n @if (aiInterim(); as interim) {\r\n <article class=\"chat-row chat-row--ai\">\r\n <div class=\"chat-meta\">\r\n <span class=\"live-transcript-panel__meta--ai\">AI Receptionist</span>\r\n </div>\r\n <div class=\"chat-bubble-row\">\r\n <div class=\"chat-avatar chat-avatar--ai live-transcript-panel__avatar--ai\">\r\n <ed-icon name=\"graph_new\" [size]=\"16\" />\r\n </div>\r\n <div class=\"chat-bubble chat-bubble--ai chat-bubble--interim\">\r\n <p class=\"chat-content\">\r\n {{ interim }}<span class=\"live-transcript-panel__caret\" aria-hidden=\"true\"></span>\r\n </p>\r\n </div>\r\n </div>\r\n </article>\r\n }\r\n\r\n @if (lines().length === 0 && !patientInterim() && !aiInterim() && !staffInterim()) {\r\n <p class=\"m-0 px-3 py-8 text-center text-zinc-500\">Waiting for conversation\u2026</p>\r\n }\r\n </div>\r\n\r\n @if (showStaffInput()) {\r\n <footer class=\"mt-4 flex shrink-0 flex-col gap-4\">\r\n <div class=\"flex items-center gap-2 rounded-lg border border-zinc-200 p-2\">\r\n <input\r\n type=\"text\"\r\n class=\"h-8 min-w-0 flex-1 border-0 bg-transparent px-1 text-zinc-900 outline-none placeholder:text-zinc-400\"\r\n placeholder=\"Type to speak as staff\u2026\"\r\n [ngModel]=\"staffMessage()\"\r\n (ngModelChange)=\"onStaffInput($event)\"\r\n (keyup.enter)=\"onSend()\"\r\n autocomplete=\"off\"\r\n />\r\n </div>\r\n </footer>\r\n }\r\n</section>\r\n", styles: ["@charset \"UTF-8\";.chat-thread{display:flex;flex-direction:column;gap:0;flex:1 1 auto;min-height:0;overflow:auto;padding:1rem 1.5rem;background:#fff;scroll-behavior:smooth}.chat-row{display:flex;flex-direction:column;width:100%;margin-bottom:1rem}.chat-row--caller,.chat-row--user,.chat-row--patient{align-items:flex-start}.chat-row--agent,.chat-row--ai,.chat-row--staff{align-items:flex-end}.chat-row--tool,.chat-row--system{align-items:center}.chat-meta{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem;font-size:.875rem;color:var(--color-text-light, #6b7280)}.chat-row--agent .chat-meta,.chat-row--ai .chat-meta,.chat-row--staff .chat-meta{justify-content:flex-end;padding-right:2.75rem}.chat-bubble-row{display:flex;align-items:flex-start;gap:.5rem;max-width:min(72%,40rem)}.chat-row--agent .chat-bubble-row,.chat-row--ai .chat-bubble-row,.chat-row--staff .chat-bubble-row{flex-direction:row-reverse}.chat-avatar{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:9999px}.chat-avatar--ai{background:#ad46ff1f;color:#8200db}.chat-avatar--staff{border:1px solid #ddd6fe;background:#f5f3ff;color:#6d28d9}.chat-avatar--caller{background:#e5e7eb;color:#4b5563}.chat-bubble{max-width:100%;padding:.75rem 1rem;font-size:.875rem;line-height:1.5;word-break:break-word;white-space:pre-wrap}.chat-bubble--caller,.chat-bubble--user,.chat-bubble--patient{border:1px solid var(--color-border-light, #e5e7eb);border-radius:0 .5rem .5rem;background:#fff;color:var(--color-text-dark, #111827)}.chat-bubble--agent,.chat-bubble--ai{border:none;border-radius:.5rem;background:#ad46ff1a;color:var(--color-text-dark, #53575c)}.chat-bubble--staff{border:1px solid #ddd6fe;border-radius:.5rem 0 .5rem .5rem;background:#f5f3ff;color:#4c1d95}.chat-bubble--tool,.chat-bubble--system{max-width:min(90%,40rem);padding:.5rem .75rem;border:1px solid var(--color-border-light, #e5e7eb);border-radius:9999px;background:#f9fafb;color:#6b7280;font-size:.75rem;text-align:center}.chat-bubble--interim{opacity:.9;font-style:italic}.chat-content{margin:0}.chat-time{font-size:.75rem;color:#9ca3af}.live-transcript-panel__thread.chat-thread{flex:1 1 auto;min-height:0;overflow:auto;background:#f7f9fa;border-radius:.75rem;padding:1rem}.live-transcript-panel__avatar--ai{background:#ad46ff1f;color:#8200db}.live-transcript-panel__meta--ai{color:#8200db}.live-transcript-panel__caret{display:inline-block;width:7px;height:14px;margin-left:2px;vertical-align:text-bottom;background:#8200db;animation:eds-caret 1s step-end infinite}.live-transcript-panel__typing{display:inline-flex;align-items:center;gap:4px;min-width:2.5rem;min-height:1.25rem}.live-transcript-panel__dot{width:6px;height:6px;border-radius:9999px;background:#a2a4a6;animation:eds-typing 1.2s ease-in-out infinite}.live-transcript-panel__dot:nth-child(2){animation-delay:.15s}.live-transcript-panel__dot:nth-child(3){animation-delay:.3s}@keyframes eds-caret{50%{opacity:0}}@keyframes eds-typing{0%,80%,to{opacity:.35;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}\n"] }]
393
+ }], ctorParameters: () => [], propDecorators: { scrollHost: [{
394
+ type: ViewChild,
395
+ args: ['scrollHost']
396
+ }] } });
397
+
398
+ const STAFF_IDENTITY_PREFIX = 'staff-';
399
+ /**
400
+ * Browser softphone for staff Listen / Take Over via LiveKit.
401
+ * Secrets stay on the server — FE only uses short-lived clientToken + livekitUrl.
402
+ *
403
+ * Root-provided on purpose: the session must survive navigating away from the
404
+ * Live Monitor page, otherwise switching dashboard tabs would drop the call.
405
+ */
406
+ class StaffMediaService {
407
+ constructor() {
408
+ this.connectionState = signal('idle');
409
+ this.mode = signal(null);
410
+ this.micEnabled = signal(false);
411
+ this.error = signal(null);
412
+ this.activeCallId = signal(null);
413
+ /** False when the browser blocks autoplay — UI should offer an "enable sound" action. */
414
+ this.audioPlaybackAllowed = signal(true);
415
+ /** True once remote caller audio is actually attached and playing. */
416
+ this.remoteAudioAttached = signal(false);
417
+ this.room = null;
418
+ this.audioContainer = null;
419
+ this.attached = new Map();
420
+ this.onTrackSubscribed = (track, publication, participant) => {
421
+ if (track.kind !== Track.Kind.Audio)
422
+ return;
423
+ // Never play another staff softphone back — that is a direct feedback loop
424
+ // where the person taking over hears their own voice.
425
+ if (this.isStaff(participant.identity)) {
426
+ try {
427
+ publication.setSubscribed(false);
428
+ }
429
+ catch {
430
+ /* server may already have unsubscribed */
431
+ }
432
+ return;
433
+ }
434
+ const container = this.ensureAudioContainer();
435
+ const element = track.attach();
436
+ element.autoplay = true;
437
+ element.setAttribute('playsinline', 'true');
438
+ element.volume = 1;
439
+ container.appendChild(element);
440
+ const key = publication.trackSid || track.sid || participant.identity;
441
+ this.attached.set(key, [...(this.attached.get(key) ?? []), element]);
442
+ this.remoteAudioAttached.set(true);
443
+ void element.play().catch(() => {
444
+ // Autoplay blocked — surfaced via the "Enable sound" action.
445
+ this.audioPlaybackAllowed.set(false);
446
+ });
447
+ };
448
+ this.onTrackUnsubscribed = (track, publication, participant) => {
449
+ if (track.kind !== Track.Kind.Audio)
450
+ return;
451
+ const key = publication.trackSid || track.sid || participant.identity;
452
+ this.detachKey(key, track);
453
+ };
454
+ this.onParticipantDisconnected = (participant) => {
455
+ for (const publication of participant.trackPublications.values()) {
456
+ const key = publication.trackSid;
457
+ if (key)
458
+ this.detachKey(key);
459
+ }
460
+ };
461
+ /** Staff tracks are dropped server-side as soon as they appear. */
462
+ this.onTrackPublished = (publication, participant) => {
463
+ if (!this.isStaff(participant.identity))
464
+ return;
465
+ try {
466
+ publication.setSubscribed(false);
467
+ }
468
+ catch {
469
+ /* nothing to unsubscribe */
470
+ }
471
+ };
472
+ }
473
+ get isConnected() {
474
+ return this.connectionState() === 'connected';
475
+ }
476
+ /** True when a softphone session is live for this call, regardless of page. */
477
+ isConnectedTo(callId) {
478
+ return this.isConnected && this.activeCallId() === callId;
479
+ }
480
+ /**
481
+ * getUserMedia only exists in a secure context (https or localhost) and, inside an
482
+ * iframe, requires allow="microphone". Returns null when capture is possible.
483
+ */
484
+ microphoneBlockedReason() {
485
+ if (typeof navigator === 'undefined')
486
+ return 'Microphone is not available in this environment.';
487
+ if (!navigator.mediaDevices?.getUserMedia) {
488
+ const secure = typeof window !== 'undefined' && window.isSecureContext;
489
+ return secure
490
+ ? 'Microphone access is blocked by the browser. If the dashboard is embedded, the host page must allow microphone access.'
491
+ : 'Microphone access needs a secure connection. Open the dashboard over https (or localhost) to talk to callers.';
492
+ }
493
+ return null;
494
+ }
495
+ async join(join) {
496
+ if (join.provider && join.provider !== 'livekit') {
497
+ throw new Error(`Unsupported media provider: ${join.provider}`);
498
+ }
499
+ if (!join.livekitUrl || !join.clientToken) {
500
+ throw new Error('Missing LiveKit URL or client token from media/join');
501
+ }
502
+ if (join.mode === 'takeover') {
503
+ const blocked = this.microphoneBlockedReason();
504
+ if (blocked)
505
+ throw new Error(blocked);
506
+ }
507
+ await this.disconnect();
508
+ this.connectionState.set('connecting');
509
+ this.error.set(null);
510
+ this.mode.set(join.mode);
511
+ this.activeCallId.set(join.callId || null);
512
+ this.micEnabled.set(false);
513
+ const room = new Room({
514
+ adaptiveStream: true,
515
+ dynacast: true,
516
+ audioCaptureDefaults: {
517
+ echoCancellation: true,
518
+ noiseSuppression: true,
519
+ autoGainControl: true,
520
+ },
521
+ });
522
+ room.on(RoomEvent.Disconnected, () => {
523
+ if (this.room !== room)
524
+ return;
525
+ void this.cleanupLocal(false);
526
+ this.connectionState.set('idle');
527
+ this.mode.set(null);
528
+ this.activeCallId.set(null);
529
+ this.micEnabled.set(false);
530
+ });
531
+ room.on(RoomEvent.ConnectionStateChanged, (state) => {
532
+ if (this.room !== room)
533
+ return;
534
+ if (state === ConnectionState.Connected) {
535
+ this.connectionState.set('connected');
536
+ }
537
+ else if (state === ConnectionState.Connecting || state === ConnectionState.Reconnecting) {
538
+ this.connectionState.set('connecting');
539
+ }
540
+ });
541
+ room.on(RoomEvent.AudioPlaybackStatusChanged, () => {
542
+ if (this.room === room) {
543
+ this.audioPlaybackAllowed.set(room.canPlaybackAudio);
544
+ }
545
+ });
546
+ room.on(RoomEvent.TrackSubscribed, this.onTrackSubscribed);
547
+ room.on(RoomEvent.TrackUnsubscribed, this.onTrackUnsubscribed);
548
+ room.on(RoomEvent.ParticipantDisconnected, this.onParticipantDisconnected);
549
+ room.on(RoomEvent.TrackPublished, this.onTrackPublished);
550
+ try {
551
+ this.room = room;
552
+ this.ensureAudioContainer();
553
+ await room.connect(join.livekitUrl, join.clientToken);
554
+ // Publish mic only for takeover (listen stays receive-only).
555
+ if (join.mode === 'takeover') {
556
+ await this.enableMicrophone(true);
557
+ }
558
+ this.attachExistingRemoteTracks(room);
559
+ await this.startAudioPlayback();
560
+ this.connectionState.set('connected');
561
+ }
562
+ catch (err) {
563
+ const message = this.friendlyError(err);
564
+ this.error.set(message);
565
+ this.connectionState.set('error');
566
+ await this.cleanupLocal(true);
567
+ this.mode.set(null);
568
+ this.activeCallId.set(null);
569
+ throw new Error(message);
570
+ }
571
+ }
572
+ async setMicrophoneEnabled(enabled) {
573
+ if (!this.room || this.connectionState() !== 'connected')
574
+ return;
575
+ if (this.mode() !== 'takeover' && enabled) {
576
+ // Listen mode stays muted unless upgraded to takeover.
577
+ return;
578
+ }
579
+ await this.enableMicrophone(enabled);
580
+ }
581
+ async toggleMicrophone() {
582
+ await this.setMicrophoneEnabled(!this.micEnabled());
583
+ }
584
+ /** Retry blocked autoplay — must be called from a user gesture. */
585
+ async startAudioPlayback() {
586
+ const room = this.room;
587
+ if (!room)
588
+ return;
589
+ try {
590
+ await room.startAudio();
591
+ this.audioPlaybackAllowed.set(true);
592
+ }
593
+ catch {
594
+ this.audioPlaybackAllowed.set(room.canPlaybackAudio);
595
+ }
596
+ for (const elements of this.attached.values()) {
597
+ for (const el of elements) {
598
+ void el.play().catch(() => undefined);
599
+ }
600
+ }
601
+ }
602
+ async disconnect() {
603
+ if (!this.room && this.connectionState() === 'idle')
604
+ return;
605
+ this.connectionState.set('disconnecting');
606
+ await this.cleanupLocal(true);
607
+ this.connectionState.set('idle');
608
+ this.mode.set(null);
609
+ this.activeCallId.set(null);
610
+ this.micEnabled.set(false);
611
+ this.error.set(null);
612
+ this.audioPlaybackAllowed.set(true);
613
+ }
614
+ attachExistingRemoteTracks(room) {
615
+ for (const participant of room.remoteParticipants.values()) {
616
+ for (const publication of participant.trackPublications.values()) {
617
+ if (publication.track && publication.isSubscribed) {
618
+ this.onTrackSubscribed(publication.track, publication, participant);
619
+ }
620
+ }
621
+ }
622
+ }
623
+ isStaff(identity) {
624
+ return !!identity && identity.startsWith(STAFF_IDENTITY_PREFIX);
625
+ }
626
+ detachKey(key, track) {
627
+ const elements = this.attached.get(key);
628
+ if (!elements)
629
+ return;
630
+ this.attached.delete(key);
631
+ for (const el of elements) {
632
+ try {
633
+ track?.detach(el);
634
+ }
635
+ catch {
636
+ /* already detached */
637
+ }
638
+ el.remove();
639
+ }
640
+ if (this.attached.size === 0)
641
+ this.remoteAudioAttached.set(false);
642
+ }
643
+ ensureAudioContainer() {
644
+ if (this.audioContainer?.isConnected)
645
+ return this.audioContainer;
646
+ const el = document.createElement('div');
647
+ el.dataset['edsStaffAudio'] = 'true';
648
+ el.style.position = 'fixed';
649
+ el.style.width = '0';
650
+ el.style.height = '0';
651
+ el.style.overflow = 'hidden';
652
+ document.body.appendChild(el);
653
+ this.audioContainer = el;
654
+ return el;
655
+ }
656
+ async enableMicrophone(enabled) {
657
+ const room = this.room;
658
+ if (!room)
659
+ return;
660
+ await room.localParticipant.setMicrophoneEnabled(enabled);
661
+ this.micEnabled.set(enabled);
662
+ }
663
+ friendlyError(err) {
664
+ const name = err?.name ?? '';
665
+ if (name === 'NotAllowedError' || name === 'SecurityError') {
666
+ return 'Microphone permission was denied. Allow microphone access and try again.';
667
+ }
668
+ if (name === 'NotFoundError' || name === 'OverconstrainedError') {
669
+ return 'No microphone was found on this device.';
670
+ }
671
+ if (name === 'NotReadableError' || name === 'TrackStartError') {
672
+ return 'Your microphone is in use by another app.';
673
+ }
674
+ const message = err instanceof Error ? err.message : '';
675
+ if (message.includes('getUserMedia')) {
676
+ return this.microphoneBlockedReason() ?? message;
677
+ }
678
+ return message || 'Failed to join the call audio.';
679
+ }
680
+ async cleanupLocal(disconnectRoom) {
681
+ const room = this.room;
682
+ this.room = null;
683
+ for (const key of [...this.attached.keys()]) {
684
+ this.detachKey(key);
685
+ }
686
+ this.remoteAudioAttached.set(false);
687
+ this.audioContainer?.remove();
688
+ this.audioContainer = null;
689
+ if (!room)
690
+ return;
691
+ try {
692
+ await room.localParticipant.setMicrophoneEnabled(false);
693
+ }
694
+ catch {
695
+ /* mic may never have been published */
696
+ }
697
+ try {
698
+ if (disconnectRoom) {
699
+ await room.disconnect(true);
700
+ }
701
+ room.removeAllListeners();
702
+ }
703
+ catch {
704
+ /* already gone */
705
+ }
706
+ }
707
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: StaffMediaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
708
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: StaffMediaService, providedIn: 'root' }); }
709
+ }
710
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: StaffMediaService, decorators: [{
711
+ type: Injectable,
712
+ args: [{ providedIn: 'root' }]
713
+ }] });
714
+
715
+ class LiveMonitorPageComponent {
716
+ constructor() {
717
+ this.api = inject(AiReceptionistApiService);
718
+ this.route = inject(ActivatedRoute);
719
+ this.router = inject(Router);
720
+ this.stream = inject(LiveTranscriptService);
721
+ this.staffMedia = inject(StaffMediaService);
722
+ this.socket = inject(DashboardSocketService);
723
+ this.toast = inject(ToastService);
724
+ this.destroyRef = inject(DestroyRef);
725
+ this.call = signal(null);
726
+ this.loading = signal(true);
727
+ this.callId = signal('');
728
+ this.summary = signal(null);
729
+ this.summaryLoading = signal(false);
730
+ this.mediaBusy = signal(false);
731
+ this.listSkeletonRows = [0, 1, 2];
732
+ this.transcriptSkeletonRows = [0, 1, 2, 3, 4];
733
+ this.liveTools = this.stream.tools;
734
+ this.callEnded = this.stream.callEnded;
735
+ this.mediaState = this.staffMedia.connectionState;
736
+ this.mediaMode = this.staffMedia.mode;
737
+ this.micEnabled = this.staffMedia.micEnabled;
738
+ this.audioPlaybackAllowed = this.staffMedia.audioPlaybackAllowed;
739
+ this.summaryLoaded = false;
740
+ this.staffJoined = false;
741
+ this.onControlChanged = (evt) => {
742
+ if (!evt?.callId || evt.callId !== this.callId())
743
+ return;
744
+ this.call.update((c) => {
745
+ if (!c)
746
+ return c;
747
+ const handedOff = evt.aiHandedOff === true || c.aiHandedOff === true;
748
+ const controlMode = evt.controlMode ?? c.controlMode;
749
+ const next = {
750
+ ...c,
751
+ controlMode,
752
+ aiPaused: typeof evt.aiPaused === 'boolean' ? evt.aiPaused : c.aiPaused,
753
+ aiHandedOff: handedOff,
754
+ assigned: evt.assigned !== undefined ? evt.assigned : c.assigned,
755
+ };
756
+ if (controlMode === 'takeover' || handedOff) {
757
+ next.status = 'takeover';
758
+ }
759
+ else if (controlMode === 'ai' || controlMode === 'listen') {
760
+ if (c.status === 'takeover')
761
+ next.status = 'ai';
762
+ }
763
+ return next;
764
+ });
765
+ };
766
+ this.toolTrackKey = toolEventTrackKey;
767
+ this.goalPlaceholderSteps = [
768
+ {
769
+ title: 'Understand the request',
770
+ label: 'Needs Clarification',
771
+ detail: 'Caller mentioned something from before but did not give enough detail to determine the reason for the call.',
772
+ tone: 'warning',
773
+ },
774
+ {
775
+ title: 'Verify patient identity',
776
+ label: 'In Progress',
777
+ detail: 'Confirm who the caller is so the AI can safely access relevant patient context.',
778
+ tone: 'primary',
779
+ },
780
+ {
781
+ title: 'Use patient context to clarify goal',
782
+ label: 'Next',
783
+ detail: 'Check recent appointments, referrals, orders, messages, or open items to understand the caller reference.',
784
+ tone: 'light',
785
+ },
786
+ ];
787
+ effect(() => {
788
+ if (this.stream.callEnded()) {
789
+ void this.staffMedia.disconnect();
790
+ this.staffJoined = false;
791
+ this.loadCallMetadataOnce();
792
+ }
793
+ });
794
+ effect(() => {
795
+ if (this.stream.summaryRequested() && !this.summaryLoaded) {
796
+ this.loadPostCallSummary();
797
+ }
798
+ });
799
+ }
800
+ goToLiveCalls() {
801
+ void this.router.navigate(['..'], { relativeTo: this.route });
802
+ }
803
+ ngOnInit() {
804
+ this.socket.acquire();
805
+ this.socket.on('call_control_changed', this.onControlChanged);
806
+ this.route.paramMap.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((params) => {
807
+ const id = params.get('id') ?? '';
808
+ this.callId.set(id);
809
+ // The softphone lives in a root service, so a session started earlier is still
810
+ // running when this page is re-created.
811
+ this.staffJoined = this.staffMedia.isConnectedTo(id);
812
+ this.loading.set(true);
813
+ this.summary.set(null);
814
+ this.summaryLoaded = false;
815
+ this.stream.stop();
816
+ this.loadCallMetadata();
817
+ });
818
+ }
819
+ /**
820
+ * Leaving the page must never drop the caller. The LiveKit session is owned by the
821
+ * root StaffMediaService and keeps running until End Call or an explicit leave.
822
+ */
823
+ ngOnDestroy() {
824
+ this.socket.off('call_control_changed', this.onControlChanged);
825
+ this.socket.release();
826
+ this.stream.stop();
827
+ }
828
+ /** True when this page's call is the one the softphone is connected to. */
829
+ isMediaForThisCall() {
830
+ return this.staffMedia.activeCallId() === this.callId();
831
+ }
832
+ isTakeover() {
833
+ if (this.mediaMode() === 'takeover' && this.isMediaForThisCall())
834
+ return true;
835
+ const c = this.call();
836
+ if (!c)
837
+ return false;
838
+ if (c.aiHandedOff)
839
+ return true;
840
+ if (c.controlMode === 'listen')
841
+ return false;
842
+ return c.controlMode === 'takeover' || c.status === 'takeover' || !!c.assigned;
843
+ }
844
+ /** After takeover the AI is gone for good — no resume path is offered. */
845
+ isHandedOff() {
846
+ return this.call()?.aiHandedOff === true || this.isTakeover();
847
+ }
848
+ isPaused() {
849
+ const c = this.call();
850
+ return c?.controlMode === 'paused' || !!c?.aiPaused;
851
+ }
852
+ isLive() {
853
+ return !!this.call() && !this.callEnded();
854
+ }
855
+ confidenceLevel(confidence) {
856
+ if (confidence >= 70)
857
+ return 'high';
858
+ if (confidence < 50)
859
+ return 'low';
860
+ return 'mid';
861
+ }
862
+ sentimentPercent(sentiment) {
863
+ const map = {
864
+ calm: 85,
865
+ neutral: 60,
866
+ frustrated: 35,
867
+ urgent: 15,
868
+ };
869
+ return map[sentiment];
870
+ }
871
+ toolStateClass(state) {
872
+ return `live-monitor-page__tool--${state}`;
873
+ }
874
+ isUnknownCaller(call) {
875
+ return isUnknownCaller(call.name, call.matched);
876
+ }
877
+ displayName(call) {
878
+ return this.isUnknownCaller(call) ? 'Unknown Caller' : call.name.trim();
879
+ }
880
+ profileInitials(call) {
881
+ return this.isUnknownCaller(call) ? '?' : call.initials || '?';
882
+ }
883
+ profileMeta(call) {
884
+ return callerMetaLine({
885
+ name: call.name,
886
+ matched: call.matched,
887
+ phone: call.phone,
888
+ dob: call.dob,
889
+ age: call.age ?? ageFromDob(call.dob),
890
+ gender: call.gender,
891
+ });
892
+ }
893
+ goalBadge(call) {
894
+ const raw = (call.goal || call.reason || '').trim();
895
+ if (!raw)
896
+ return null;
897
+ return raw.replace(/[_-]+/g, ' ').toUpperCase();
898
+ }
899
+ confidenceHint(confidence) {
900
+ const level = this.confidenceLevel(confidence);
901
+ if (level === 'low')
902
+ return 'Confidence dropped after the last response';
903
+ if (level === 'high')
904
+ return 'Agent is handling the request confidently';
905
+ return 'Agent is still clarifying the caller needs';
906
+ }
907
+ sentimentLabel(sentiment) {
908
+ return sentimentLabel(sentiment);
909
+ }
910
+ sentimentIcon(sentiment) {
911
+ return sentimentIconSrc(sentiment);
912
+ }
913
+ toolBadgeTone(state) {
914
+ switch (state) {
915
+ case 'ok':
916
+ return 'success';
917
+ case 'warn':
918
+ return 'warning';
919
+ case 'error':
920
+ return 'danger';
921
+ case 'active':
922
+ return 'primary';
923
+ default:
924
+ return 'light';
925
+ }
926
+ }
927
+ toolBadgeLabel(state) {
928
+ switch (state) {
929
+ case 'ok':
930
+ return 'Done';
931
+ case 'warn':
932
+ return 'Needs Clarification';
933
+ case 'error':
934
+ return 'Failed';
935
+ case 'active':
936
+ return 'In Progress';
937
+ default:
938
+ return 'Next';
939
+ }
940
+ }
941
+ takeover() {
942
+ void this.joinMedia('takeover');
943
+ }
944
+ toggleMic() {
945
+ void this.staffMedia.toggleMicrophone();
946
+ }
947
+ transfer() {
948
+ this.api.postTransfer(this.callId()).subscribe(() => this.refreshMetadata());
949
+ }
950
+ endCall() {
951
+ const id = this.callId();
952
+ void this.staffMedia.disconnect().then(() => {
953
+ this.staffJoined = false;
954
+ this.api.postEnd(id).subscribe(() => {
955
+ this.stream.markCompleted();
956
+ this.loadCallMetadataOnce();
957
+ this.loadPostCallSummary();
958
+ });
959
+ });
960
+ }
961
+ enableSound() {
962
+ void this.staffMedia.startAudioPlayback();
963
+ }
964
+ async joinMedia(mode) {
965
+ if (this.mediaBusy() || this.callEnded())
966
+ return;
967
+ const id = this.callId();
968
+ if (!id)
969
+ return;
970
+ // Check the mic before joining so a blocked browser never leaves the AI paused.
971
+ if (mode === 'takeover' && !this.api.usesMockStreaming()) {
972
+ const blocked = this.staffMedia.microphoneBlockedReason();
973
+ if (blocked) {
974
+ this.toast.show(blocked, 'error', 6000);
975
+ return;
976
+ }
977
+ }
978
+ this.mediaBusy.set(true);
979
+ try {
980
+ const { data } = await firstValueFrom(this.api.postMediaJoin(id, mode));
981
+ this.applyJoinMetadata(data);
982
+ if (!this.api.usesMockStreaming()) {
983
+ await this.staffMedia.join(data);
984
+ }
985
+ this.staffJoined = true;
986
+ this.toast.show(mode === 'takeover' ? 'You are on the call' : 'Listening to the call', 'success');
987
+ }
988
+ catch (err) {
989
+ const message = err instanceof Error ? err.message : `Failed to ${mode === 'takeover' ? 'take over' : 'listen'}`;
990
+ this.toast.show(message, 'error');
991
+ try {
992
+ await this.staffMedia.disconnect();
993
+ await firstValueFrom(this.api.postMediaLeave(id));
994
+ }
995
+ catch {
996
+ /* ignore cleanup errors */
997
+ }
998
+ this.staffJoined = false;
999
+ }
1000
+ finally {
1001
+ this.mediaBusy.set(false);
1002
+ }
1003
+ }
1004
+ /**
1005
+ * Disconnect LiveKit first, then tell the server to drop staff and restore AI.
1006
+ * Only valid in listen mode — a taken-over call stays with the human.
1007
+ * Does not hang up the patient.
1008
+ */
1009
+ async leaveMedia(notifyServer) {
1010
+ const id = this.callId();
1011
+ const wasJoined = this.staffJoined || this.staffMedia.isConnectedTo(id);
1012
+ try {
1013
+ await this.staffMedia.disconnect();
1014
+ }
1015
+ catch {
1016
+ /* ignore */
1017
+ }
1018
+ this.staffJoined = false;
1019
+ if (!notifyServer || !wasJoined || !id || this.callEnded())
1020
+ return;
1021
+ this.mediaBusy.set(true);
1022
+ try {
1023
+ await firstValueFrom(this.api.postResumeAi(id));
1024
+ this.call.update((c) => c
1025
+ ? {
1026
+ ...c,
1027
+ status: c.status === 'takeover' ? 'ai' : c.status,
1028
+ controlMode: 'ai',
1029
+ assigned: null,
1030
+ aiPaused: false,
1031
+ }
1032
+ : c);
1033
+ }
1034
+ catch (err) {
1035
+ const message = err instanceof Error ? err.message : 'Failed to resume AI';
1036
+ this.toast.show(message, 'error');
1037
+ }
1038
+ finally {
1039
+ this.mediaBusy.set(false);
1040
+ }
1041
+ }
1042
+ applyJoinMetadata(data) {
1043
+ this.call.update((c) => {
1044
+ if (!c)
1045
+ return c;
1046
+ const controlMode = data.controlMode || data.mode;
1047
+ return {
1048
+ ...c,
1049
+ controlMode,
1050
+ aiPaused: typeof data.aiPaused === 'boolean' ? data.aiPaused : data.mode === 'takeover',
1051
+ aiHandedOff: data.aiHandedOff === true || data.mode === 'takeover' || c.aiHandedOff === true,
1052
+ assigned: data.assigned !== undefined && data.assigned !== null
1053
+ ? data.assigned
1054
+ : data.mode === 'takeover'
1055
+ ? c.assigned || 'You'
1056
+ : c.assigned,
1057
+ status: data.mode === 'takeover' ? 'takeover' : c.status,
1058
+ };
1059
+ });
1060
+ }
1061
+ /** Initial load — seeds transcript/tools from REST, then starts socket. */
1062
+ loadCallMetadata() {
1063
+ const id = this.callId();
1064
+ if (!id)
1065
+ return;
1066
+ this.api.getLiveCall(id).subscribe(({ data }) => {
1067
+ this.call.set(data);
1068
+ this.loading.set(false);
1069
+ if (data) {
1070
+ this.stream.seed(data.transcript, data.tools);
1071
+ if (!this.callEnded()) {
1072
+ this.stream.watch(id, true);
1073
+ }
1074
+ }
1075
+ });
1076
+ }
1077
+ /** Metadata-only refresh after staff actions — does not overwrite live transcript/tools. */
1078
+ refreshMetadata() {
1079
+ const id = this.callId();
1080
+ if (!id)
1081
+ return;
1082
+ this.api.getLiveCall(id).subscribe(({ data }) => {
1083
+ if (data)
1084
+ this.call.set(data);
1085
+ });
1086
+ }
1087
+ /** One-time metadata refresh after call ends (no socket). */
1088
+ loadCallMetadataOnce() {
1089
+ const id = this.callId();
1090
+ if (!id)
1091
+ return;
1092
+ this.api.getLiveCall(id).subscribe(({ data }) => {
1093
+ if (data) {
1094
+ this.call.set(data);
1095
+ }
1096
+ });
1097
+ }
1098
+ loadPostCallSummary() {
1099
+ const id = this.callId();
1100
+ if (!id || this.summaryLoaded)
1101
+ return;
1102
+ this.summaryLoading.set(true);
1103
+ this.api.getCallSummary(id).subscribe(({ data }) => {
1104
+ this.summaryLoading.set(false);
1105
+ this.summaryLoaded = true;
1106
+ if (!data)
1107
+ return;
1108
+ this.summary.set(data.summary);
1109
+ this.stream.seed(data.transcript, data.tools);
1110
+ });
1111
+ }
1112
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LiveMonitorPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1113
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: LiveMonitorPageComponent, isStandalone: true, selector: "eds-live-monitor-page", host: { classAttribute: "block h-full min-h-0" }, ngImport: i0, template: "<div class=\"live-monitor-page box-border flex h-full min-h-0 flex-col overflow-hidden bg-lighter p-base text-zinc-900\">\r\n @if (loading()) {\r\n <div class=\"flex min-h-0 flex-1 flex-col gap-4\" aria-busy=\"true\">\r\n <header class=\"flex shrink-0 items-center justify-between gap-3 rounded-lg bg-white p-3\">\r\n <div class=\"flex min-w-0 flex-1 items-center gap-4\">\r\n <ed-skeleton class=\"h-5 w-5 !rounded-sm\"></ed-skeleton>\r\n <div class=\"flex min-w-0 items-center gap-2\">\r\n <ed-skeleton class=\"h-9 w-9 !rounded-md\"></ed-skeleton>\r\n <div class=\"grid min-w-0 gap-2xs\">\r\n <ed-skeleton class=\"h-4 w-40\"></ed-skeleton>\r\n <ed-skeleton class=\"h-3 w-32\"></ed-skeleton>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex shrink-0 items-center gap-3\">\r\n <ed-skeleton class=\"h-8 w-24 !rounded-md\"></ed-skeleton>\r\n <ed-skeleton class=\"h-8 w-28 !rounded-md\"></ed-skeleton>\r\n </div>\r\n </header>\r\n <div class=\"grid min-h-0 flex-1 grid-cols-[minmax(0,1fr)_minmax(280px,447px)] items-stretch gap-4 max-[1100px]:grid-cols-1\">\r\n <div class=\"flex min-h-0 flex-col rounded-xl bg-white p-4\">\r\n <ed-skeleton class=\"mb-4 h-5 w-36\"></ed-skeleton>\r\n @for (_ of transcriptSkeletonRows; track _) {\r\n <div class=\"mb-4 flex flex-col gap-2\">\r\n <ed-skeleton class=\"h-3 w-24\"></ed-skeleton>\r\n <ed-skeleton class=\"h-16 w-full max-w-xl !rounded-lg\"></ed-skeleton>\r\n </div>\r\n }\r\n </div>\r\n <aside class=\"flex min-h-0 flex-col gap-4\">\r\n <ed-skeleton class=\"h-40 w-full !rounded-lg\"></ed-skeleton>\r\n <ed-skeleton class=\"min-h-48 w-full flex-1 !rounded-lg\"></ed-skeleton>\r\n <ed-skeleton class=\"h-48 w-full !rounded-lg\"></ed-skeleton>\r\n </aside>\r\n </div>\r\n </div>\r\n } @else {\r\n @if (call(); as c) {\r\n <header class=\"live-monitor-page__header mb-4 flex shrink-0 flex-wrap items-center justify-between gap-3 rounded-lg bg-white p-3\">\r\n <div class=\"flex min-w-0 flex-1 items-center gap-4\">\r\n <button\r\n type=\"button\"\r\n class=\"eds-plain-nav live-monitor-page__back inline-flex h-5 w-5 shrink-0 items-center justify-center text-zinc-600\"\r\n aria-label=\"Back to live calls\"\r\n (click)=\"goToLiveCalls()\"\r\n >\r\n <ed-icon name=\"arrow_back\" [size]=\"14\" />\r\n </button>\r\n\r\n <div class=\"live-monitor-page__profile flex min-w-0 items-center gap-2\">\r\n <ed-avatar\r\n class=\"shrink-0\"\r\n shape=\"box\"\r\n size=\"md\"\r\n [initials]=\"profileInitials(c)\"\r\n [tone]=\"isUnknownCaller(c) ? 'gray' : 'warm'\"\r\n />\r\n\r\n <div class=\"min-w-0\">\r\n <div class=\"flex flex-wrap items-center gap-3\">\r\n <h4 class=\"m-0\">{{ displayName(c) }}</h4>\r\n @if (isUnknownCaller(c)) {\r\n <ed-badge-2 variant=\"primary\" pill uppercase>Unknown</ed-badge-2>\r\n } @else {\r\n @if (goalBadge(c); as badge) {\r\n <ed-badge-2 variant=\"primary\" pill uppercase>{{ badge }}</ed-badge-2>\r\n }\r\n }\r\n </div>\r\n <p class=\"m-0 mt-0.5 text-zinc-500\">{{ c.phone || profileMeta(c) }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"live-monitor-page__header-actions flex flex-wrap items-center gap-3\">\r\n @if (!callEnded()) {\r\n @if (mediaState() === 'connected' && isMediaForThisCall() && !audioPlaybackAllowed()) {\r\n <ed-button variant=\"secondary\" outline size=\"sm\" (click$)=\"enableSound()\">\r\n <ed-icon slot=\"prefix\" name=\"mic\" [size]=\"16\" />\r\n Enable sound\r\n </ed-button>\r\n }\r\n @if (isMediaForThisCall() && (mediaState() === 'connected' || mediaState() === 'connecting')) {\r\n <span\r\n class=\"live-monitor-page__media-pill inline-flex h-7 items-center rounded-full border border-zinc-200 bg-zinc-50 px-3 text-zinc-600\"\r\n [attr.data-mode]=\"mediaMode() || 'idle'\"\r\n [attr.data-state]=\"mediaState()\"\r\n >\r\n @if (mediaState() === 'connecting') {\r\n Connecting\u2026\r\n } @else if (mediaMode() === 'takeover') {\r\n {{ micEnabled() ? 'On call \u00B7 mic on' : 'On call \u00B7 mic off' }}\r\n } @else {\r\n Joined\r\n }\r\n </span>\r\n }\r\n <ed-button\r\n variant=\"danger\"\r\n outline\r\n size=\"sm\"\r\n [disabled]=\"mediaBusy()\"\r\n (click$)=\"endCall()\"\r\n >\r\n <ed-icon slot=\"prefix\" name=\"call_end\" [size]=\"16\" />\r\n End Call\r\n </ed-button>\r\n @if (isTakeover()) {\r\n @if (mediaState() === 'connected' && isMediaForThisCall()) {\r\n <ed-button variant=\"secondary\" outline size=\"sm\" (click$)=\"toggleMic()\">\r\n <ed-icon slot=\"prefix\" [name]=\"micEnabled() ? 'mic' : 'mic_off'\" [size]=\"16\" />\r\n {{ micEnabled() ? 'Mute' : 'Unmute' }}\r\n </ed-button>\r\n }\r\n } @else {\r\n <ed-button\r\n variant=\"primary\"\r\n fill\r\n size=\"sm\"\r\n [disabled]=\"mediaBusy()\"\r\n (click$)=\"takeover()\"\r\n >\r\n <ed-icon slot=\"prefix\" name=\"phone_call\" [size]=\"16\" />\r\n Take Over\r\n </ed-button>\r\n }\r\n } @else {\r\n <span class=\"inline-flex items-center gap-2 font-mono text-zinc-900\">\r\n <span class=\"h-2 w-2 rounded-full bg-green-500 ring-4 ring-green-500/15\" aria-hidden=\"true\"></span>\r\n {{ c.started | edsElapsed }}\r\n </span>\r\n }\r\n </div>\r\n </header>\r\n\r\n @if (callEnded()) {\r\n <div class=\"mb-4 flex items-center gap-2 rounded-lg bg-green-50 px-4 py-3 text-green-700\" role=\"status\">\r\n <ed-icon name=\"check_circle\" [size]=\"18\" />\r\n Call ended\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"live-monitor-page__grid grid min-h-0 flex-1 grid-cols-[minmax(0,1fr)_360px] items-stretch gap-4 max-[1100px]:grid-cols-1 max-[1100px]:overflow-auto\"\r\n >\r\n <div class=\"live-monitor-page__main flex h-full min-h-0 flex-col overflow-hidden\">\r\n <eds-live-transcript-panel\r\n [live]=\"isLive()\"\r\n [paused]=\"isPaused()\"\r\n [humanTakeover]=\"isTakeover()\"\r\n [callStarted]=\"c.started\"\r\n [callerName]=\"c.name\"\r\n [callerMatched]=\"c.matched\"\r\n />\r\n\r\n @if (callEnded()) {\r\n <section class=\"live-monitor-page__post-call flex flex-col gap-4\">\r\n <div class=\"rounded-lg border border-zinc-200 bg-white p-4 text-zinc-600\">\r\n <h4 class=\"mb-3 m-0\">Call summary</h4>\r\n @if (summaryLoading()) {\r\n <div class=\"grid gap-2xs\" aria-busy=\"true\">\r\n <ed-skeleton class=\"h-3 w-full\"></ed-skeleton>\r\n <ed-skeleton class=\"h-3 w-5/6\"></ed-skeleton>\r\n <ed-skeleton class=\"h-3 w-3/4\"></ed-skeleton>\r\n </div>\r\n } @else if (summary()) {\r\n <p class=\"m-0\">{{ summary() }}</p>\r\n } @else {\r\n <p class=\"m-0 text-zinc-500\">Summary will appear when processing completes.</p>\r\n }\r\n </div>\r\n <eds-call-recording-player [callId]=\"callId()\" />\r\n </section>\r\n }\r\n </div>\r\n\r\n <aside class=\"live-monitor-page__sidebar flex h-full min-h-0 flex-col gap-4 overflow-hidden\">\r\n @if (!callEnded()) {\r\n <section class=\"flex shrink-0 flex-col gap-4 rounded-lg bg-white p-4\" aria-labelledby=\"live-call-state-title\">\r\n <header class=\"flex items-center gap-3\">\r\n <span class=\"inline-flex items-center justify-center rounded-md bg-fuchsia-500/10 p-1 text-fuchsia-600\">\r\n <ed-icon name=\"phone_call\" [size]=\"16\" />\r\n </span>\r\n <h4 id=\"live-call-state-title\" class=\"m-0\">Call State</h4>\r\n </header>\r\n\r\n <div class=\"flex flex-col gap-2\">\r\n <div class=\"flex items-center justify-between gap-2 text-zinc-600\">\r\n <span class=\"live-monitor-page__eyebrow\">Agent confidence</span>\r\n <span class=\"live-monitor-page__eyebrow\">{{ c.confidence }}%</span>\r\n </div>\r\n <div class=\"live-monitor-page__confidence-track\">\r\n <span\r\n class=\"live-monitor-page__confidence-fill\"\r\n [style.width.%]=\"c.confidence\"\r\n [attr.data-level]=\"confidenceLevel(c.confidence)\"\r\n ></span>\r\n </div>\r\n <div class=\"flex items-center gap-2 text-zinc-600\">\r\n <ed-icon\r\n [name]=\"confidenceLevel(c.confidence) === 'low' ? 'trend_down' : 'info'\"\r\n [size]=\"16\"\r\n />\r\n <span>{{ confidenceHint(c.confidence) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex items-center justify-between gap-3\">\r\n <span class=\"live-monitor-page__eyebrow\">Patient sentiment</span>\r\n <span class=\"vr-sentiment\" [attr.data-sentiment]=\"c.sentiment\">\r\n <span class=\"vr-sentiment__icon\" aria-hidden=\"true\">\r\n <img [src]=\"sentimentIcon(c.sentiment)\" alt=\"\" width=\"16\" height=\"16\" />\r\n </span>\r\n <span>{{ sentimentLabel(c.sentiment) }}</span>\r\n </span>\r\n </div>\r\n </section>\r\n }\r\n\r\n <section\r\n class=\"live-monitor-page__sidebar-block flex min-h-[16rem] flex-1 flex-col gap-4 overflow-hidden rounded-lg bg-white p-4\"\r\n aria-labelledby=\"live-goal-timeline-title\"\r\n >\r\n <header class=\"flex items-center gap-3\">\r\n <span class=\"inline-flex items-center justify-center rounded-md bg-blue-500/10 p-1 text-blue-600\">\r\n <ed-icon name=\"flag\" [size]=\"16\" />\r\n </span>\r\n <h4 id=\"live-goal-timeline-title\" class=\"m-0\">Goal Timeline</h4>\r\n </header>\r\n\r\n <div class=\"live-monitor-page__goal-panel flex min-h-0 flex-1 flex-col rounded-lg bg-zinc-50 p-2\">\r\n @if (c.goal) {\r\n <p class=\"live-monitor-page__eyebrow mb-3 m-0 text-zinc-900\">{{ c.goal }}</p>\r\n } @else {\r\n <p class=\"live-monitor-page__eyebrow mb-3 m-0 text-zinc-900\">No Goal identified yet</p>\r\n }\r\n\r\n <ul class=\"live-monitor-page__tools m-0 flex min-h-0 flex-1 list-none flex-col gap-4 overflow-auto p-0\">\r\n @for (tool of liveTools(); track toolTrackKey(tool, $index)) {\r\n <li class=\"flex flex-col gap-1\" [class]=\"toolStateClass(tool.state)\">\r\n <div class=\"flex flex-wrap items-center gap-2\">\r\n <span class=\"text-zinc-900\">{{ tool.name }}</span>\r\n <ed-badge-2 [attr.variant]=\"toolBadgeTone(tool.state)\" pill uppercase>\r\n {{ toolBadgeLabel(tool.state) }}\r\n </ed-badge-2>\r\n </div>\r\n @if (tool.result) {\r\n <p class=\"m-0 text-zinc-500\">{{ tool.result }}</p>\r\n }\r\n </li>\r\n } @empty {\r\n @for (step of goalPlaceholderSteps; track step.title) {\r\n <li class=\"flex flex-col gap-1\">\r\n <div class=\"flex flex-wrap items-center gap-2\">\r\n <span class=\"text-zinc-900\">{{ step.title }}</span>\r\n <ed-badge-2 [attr.variant]=\"step.tone\" pill uppercase>{{ step.label }}</ed-badge-2>\r\n </div>\r\n <p class=\"m-0 text-zinc-500\">{{ step.detail }}</p>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n </div>\r\n </section>\r\n </aside>\r\n </div>\r\n } @else {\r\n <div class=\"flex flex-col items-start gap-3\">\r\n <button\r\n type=\"button\"\r\n class=\"live-monitor-page__back inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-md border border-zinc-200 bg-white text-zinc-600\"\r\n aria-label=\"Back to live calls\"\r\n (click)=\"goToLiveCalls()\"\r\n >\r\n <ed-icon name=\"arrow_back\" [size]=\"19\" />\r\n </button>\r\n <p class=\"m-0 text-zinc-500\">Call ended or not found.</p>\r\n </div>\r\n }\r\n }\r\n</div>\r\n", styles: [".vr-sentiment{display:inline-flex;align-items:center;justify-content:center;gap:4px;height:20px;padding:2px 4px;border-radius:6px;font-size:11px;font-weight:500;line-height:16px;white-space:nowrap}.vr-sentiment__icon{display:block;width:16px;height:16px;flex-shrink:0;overflow:hidden}.vr-sentiment__icon img{display:block;width:100%;height:100%;max-width:none}.vr-sentiment[data-sentiment=calm]{background:#3681f41a;color:#2162f0}.vr-sentiment[data-sentiment=neutral]{background:#f0f2f5;color:#41464c}.vr-sentiment[data-sentiment=urgent]{background:#f26b0d1a;color:#e94e0c}.vr-sentiment[data-sentiment=frustrated]{background:#f037401a;color:#db0c15}.live-monitor-page__eyebrow{font-size:10px;font-weight:600;letter-spacing:1px;line-height:1;text-transform:uppercase}.live-monitor-page__confidence-track{height:8px;overflow:hidden;border-radius:9999px;background:linear-gradient(90deg,#7d34fb1a,#e76b171a)}.live-monitor-page__confidence-fill{display:block;height:100%;border-radius:9999px;background:linear-gradient(90deg,#7d34fb,#e76b17)}.live-monitor-page__sidebar-block{min-height:16rem}.live-monitor-page__tools li{position:relative;padding-left:1.25rem}.live-monitor-page__tools li:before{content:\"\";position:absolute;top:.35rem;left:0;width:.5rem;height:.5rem;border-radius:9999px;background:#a2a4a6}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "component", type: EdAvatarComponent, selector: "ed-avatar", inputs: ["initials", "tone", "shape", "size", "gradient"] }, { kind: "component", type: IconComponent, selector: "ed-icon", inputs: ["name", "size", "color", "cssClass", "decorative", "ariaHidden", "ariaLabel", "title", "desc", "focusable", "tabIndex"] }, { kind: "component", type: EdButtonComponent, selector: "ed-button", inputs: ["variant", "size", "disabled", "ghost", "outline", "subtle", "fill", "loading", "block", "elevated", "shape", "type", "href", "routerLink", "rel", "target", "download", "ariaLabel"], outputs: ["click$"] }, { kind: "pipe", type: EdsElapsedPipe, name: "edsElapsed" }, { kind: "component", type: LiveTranscriptPanelComponent, selector: "eds-live-transcript-panel", inputs: ["live", "paused", "humanTakeover", "showStaffInput", "callStarted", "staffMessage", "callerName", "callerMatched"], outputs: ["staffMessageChange", "sendMessage"] }, { kind: "component", type: CallRecordingPlayerComponent, selector: "eds-call-recording-player", inputs: ["callId"], outputs: ["currentTimeChange", "durationChange"] }, { kind: "component", type: EdSkeletonComponent, selector: "ed-skeleton", inputs: ["class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1114
+ }
1115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: LiveMonitorPageComponent, decorators: [{
1116
+ type: Component,
1117
+ args: [{ selector: 'eds-live-monitor-page', imports: [
1118
+ FormsModule,
1119
+ EdAvatarComponent,
1120
+ IconComponent,
1121
+ EdButtonComponent,
1122
+ EdsElapsedPipe,
1123
+ LiveTranscriptPanelComponent,
1124
+ CallRecordingPlayerComponent,
1125
+ EdSkeletonComponent,
1126
+ ], changeDetection: ChangeDetectionStrategy.OnPush, schemas: [CUSTOM_ELEMENTS_SCHEMA], host: { class: 'block h-full min-h-0' }, template: "<div class=\"live-monitor-page box-border flex h-full min-h-0 flex-col overflow-hidden bg-lighter p-base text-zinc-900\">\r\n @if (loading()) {\r\n <div class=\"flex min-h-0 flex-1 flex-col gap-4\" aria-busy=\"true\">\r\n <header class=\"flex shrink-0 items-center justify-between gap-3 rounded-lg bg-white p-3\">\r\n <div class=\"flex min-w-0 flex-1 items-center gap-4\">\r\n <ed-skeleton class=\"h-5 w-5 !rounded-sm\"></ed-skeleton>\r\n <div class=\"flex min-w-0 items-center gap-2\">\r\n <ed-skeleton class=\"h-9 w-9 !rounded-md\"></ed-skeleton>\r\n <div class=\"grid min-w-0 gap-2xs\">\r\n <ed-skeleton class=\"h-4 w-40\"></ed-skeleton>\r\n <ed-skeleton class=\"h-3 w-32\"></ed-skeleton>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex shrink-0 items-center gap-3\">\r\n <ed-skeleton class=\"h-8 w-24 !rounded-md\"></ed-skeleton>\r\n <ed-skeleton class=\"h-8 w-28 !rounded-md\"></ed-skeleton>\r\n </div>\r\n </header>\r\n <div class=\"grid min-h-0 flex-1 grid-cols-[minmax(0,1fr)_minmax(280px,447px)] items-stretch gap-4 max-[1100px]:grid-cols-1\">\r\n <div class=\"flex min-h-0 flex-col rounded-xl bg-white p-4\">\r\n <ed-skeleton class=\"mb-4 h-5 w-36\"></ed-skeleton>\r\n @for (_ of transcriptSkeletonRows; track _) {\r\n <div class=\"mb-4 flex flex-col gap-2\">\r\n <ed-skeleton class=\"h-3 w-24\"></ed-skeleton>\r\n <ed-skeleton class=\"h-16 w-full max-w-xl !rounded-lg\"></ed-skeleton>\r\n </div>\r\n }\r\n </div>\r\n <aside class=\"flex min-h-0 flex-col gap-4\">\r\n <ed-skeleton class=\"h-40 w-full !rounded-lg\"></ed-skeleton>\r\n <ed-skeleton class=\"min-h-48 w-full flex-1 !rounded-lg\"></ed-skeleton>\r\n <ed-skeleton class=\"h-48 w-full !rounded-lg\"></ed-skeleton>\r\n </aside>\r\n </div>\r\n </div>\r\n } @else {\r\n @if (call(); as c) {\r\n <header class=\"live-monitor-page__header mb-4 flex shrink-0 flex-wrap items-center justify-between gap-3 rounded-lg bg-white p-3\">\r\n <div class=\"flex min-w-0 flex-1 items-center gap-4\">\r\n <button\r\n type=\"button\"\r\n class=\"eds-plain-nav live-monitor-page__back inline-flex h-5 w-5 shrink-0 items-center justify-center text-zinc-600\"\r\n aria-label=\"Back to live calls\"\r\n (click)=\"goToLiveCalls()\"\r\n >\r\n <ed-icon name=\"arrow_back\" [size]=\"14\" />\r\n </button>\r\n\r\n <div class=\"live-monitor-page__profile flex min-w-0 items-center gap-2\">\r\n <ed-avatar\r\n class=\"shrink-0\"\r\n shape=\"box\"\r\n size=\"md\"\r\n [initials]=\"profileInitials(c)\"\r\n [tone]=\"isUnknownCaller(c) ? 'gray' : 'warm'\"\r\n />\r\n\r\n <div class=\"min-w-0\">\r\n <div class=\"flex flex-wrap items-center gap-3\">\r\n <h4 class=\"m-0\">{{ displayName(c) }}</h4>\r\n @if (isUnknownCaller(c)) {\r\n <ed-badge-2 variant=\"primary\" pill uppercase>Unknown</ed-badge-2>\r\n } @else {\r\n @if (goalBadge(c); as badge) {\r\n <ed-badge-2 variant=\"primary\" pill uppercase>{{ badge }}</ed-badge-2>\r\n }\r\n }\r\n </div>\r\n <p class=\"m-0 mt-0.5 text-zinc-500\">{{ c.phone || profileMeta(c) }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"live-monitor-page__header-actions flex flex-wrap items-center gap-3\">\r\n @if (!callEnded()) {\r\n @if (mediaState() === 'connected' && isMediaForThisCall() && !audioPlaybackAllowed()) {\r\n <ed-button variant=\"secondary\" outline size=\"sm\" (click$)=\"enableSound()\">\r\n <ed-icon slot=\"prefix\" name=\"mic\" [size]=\"16\" />\r\n Enable sound\r\n </ed-button>\r\n }\r\n @if (isMediaForThisCall() && (mediaState() === 'connected' || mediaState() === 'connecting')) {\r\n <span\r\n class=\"live-monitor-page__media-pill inline-flex h-7 items-center rounded-full border border-zinc-200 bg-zinc-50 px-3 text-zinc-600\"\r\n [attr.data-mode]=\"mediaMode() || 'idle'\"\r\n [attr.data-state]=\"mediaState()\"\r\n >\r\n @if (mediaState() === 'connecting') {\r\n Connecting\u2026\r\n } @else if (mediaMode() === 'takeover') {\r\n {{ micEnabled() ? 'On call \u00B7 mic on' : 'On call \u00B7 mic off' }}\r\n } @else {\r\n Joined\r\n }\r\n </span>\r\n }\r\n <ed-button\r\n variant=\"danger\"\r\n outline\r\n size=\"sm\"\r\n [disabled]=\"mediaBusy()\"\r\n (click$)=\"endCall()\"\r\n >\r\n <ed-icon slot=\"prefix\" name=\"call_end\" [size]=\"16\" />\r\n End Call\r\n </ed-button>\r\n @if (isTakeover()) {\r\n @if (mediaState() === 'connected' && isMediaForThisCall()) {\r\n <ed-button variant=\"secondary\" outline size=\"sm\" (click$)=\"toggleMic()\">\r\n <ed-icon slot=\"prefix\" [name]=\"micEnabled() ? 'mic' : 'mic_off'\" [size]=\"16\" />\r\n {{ micEnabled() ? 'Mute' : 'Unmute' }}\r\n </ed-button>\r\n }\r\n } @else {\r\n <ed-button\r\n variant=\"primary\"\r\n fill\r\n size=\"sm\"\r\n [disabled]=\"mediaBusy()\"\r\n (click$)=\"takeover()\"\r\n >\r\n <ed-icon slot=\"prefix\" name=\"phone_call\" [size]=\"16\" />\r\n Take Over\r\n </ed-button>\r\n }\r\n } @else {\r\n <span class=\"inline-flex items-center gap-2 font-mono text-zinc-900\">\r\n <span class=\"h-2 w-2 rounded-full bg-green-500 ring-4 ring-green-500/15\" aria-hidden=\"true\"></span>\r\n {{ c.started | edsElapsed }}\r\n </span>\r\n }\r\n </div>\r\n </header>\r\n\r\n @if (callEnded()) {\r\n <div class=\"mb-4 flex items-center gap-2 rounded-lg bg-green-50 px-4 py-3 text-green-700\" role=\"status\">\r\n <ed-icon name=\"check_circle\" [size]=\"18\" />\r\n Call ended\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"live-monitor-page__grid grid min-h-0 flex-1 grid-cols-[minmax(0,1fr)_360px] items-stretch gap-4 max-[1100px]:grid-cols-1 max-[1100px]:overflow-auto\"\r\n >\r\n <div class=\"live-monitor-page__main flex h-full min-h-0 flex-col overflow-hidden\">\r\n <eds-live-transcript-panel\r\n [live]=\"isLive()\"\r\n [paused]=\"isPaused()\"\r\n [humanTakeover]=\"isTakeover()\"\r\n [callStarted]=\"c.started\"\r\n [callerName]=\"c.name\"\r\n [callerMatched]=\"c.matched\"\r\n />\r\n\r\n @if (callEnded()) {\r\n <section class=\"live-monitor-page__post-call flex flex-col gap-4\">\r\n <div class=\"rounded-lg border border-zinc-200 bg-white p-4 text-zinc-600\">\r\n <h4 class=\"mb-3 m-0\">Call summary</h4>\r\n @if (summaryLoading()) {\r\n <div class=\"grid gap-2xs\" aria-busy=\"true\">\r\n <ed-skeleton class=\"h-3 w-full\"></ed-skeleton>\r\n <ed-skeleton class=\"h-3 w-5/6\"></ed-skeleton>\r\n <ed-skeleton class=\"h-3 w-3/4\"></ed-skeleton>\r\n </div>\r\n } @else if (summary()) {\r\n <p class=\"m-0\">{{ summary() }}</p>\r\n } @else {\r\n <p class=\"m-0 text-zinc-500\">Summary will appear when processing completes.</p>\r\n }\r\n </div>\r\n <eds-call-recording-player [callId]=\"callId()\" />\r\n </section>\r\n }\r\n </div>\r\n\r\n <aside class=\"live-monitor-page__sidebar flex h-full min-h-0 flex-col gap-4 overflow-hidden\">\r\n @if (!callEnded()) {\r\n <section class=\"flex shrink-0 flex-col gap-4 rounded-lg bg-white p-4\" aria-labelledby=\"live-call-state-title\">\r\n <header class=\"flex items-center gap-3\">\r\n <span class=\"inline-flex items-center justify-center rounded-md bg-fuchsia-500/10 p-1 text-fuchsia-600\">\r\n <ed-icon name=\"phone_call\" [size]=\"16\" />\r\n </span>\r\n <h4 id=\"live-call-state-title\" class=\"m-0\">Call State</h4>\r\n </header>\r\n\r\n <div class=\"flex flex-col gap-2\">\r\n <div class=\"flex items-center justify-between gap-2 text-zinc-600\">\r\n <span class=\"live-monitor-page__eyebrow\">Agent confidence</span>\r\n <span class=\"live-monitor-page__eyebrow\">{{ c.confidence }}%</span>\r\n </div>\r\n <div class=\"live-monitor-page__confidence-track\">\r\n <span\r\n class=\"live-monitor-page__confidence-fill\"\r\n [style.width.%]=\"c.confidence\"\r\n [attr.data-level]=\"confidenceLevel(c.confidence)\"\r\n ></span>\r\n </div>\r\n <div class=\"flex items-center gap-2 text-zinc-600\">\r\n <ed-icon\r\n [name]=\"confidenceLevel(c.confidence) === 'low' ? 'trend_down' : 'info'\"\r\n [size]=\"16\"\r\n />\r\n <span>{{ confidenceHint(c.confidence) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex items-center justify-between gap-3\">\r\n <span class=\"live-monitor-page__eyebrow\">Patient sentiment</span>\r\n <span class=\"vr-sentiment\" [attr.data-sentiment]=\"c.sentiment\">\r\n <span class=\"vr-sentiment__icon\" aria-hidden=\"true\">\r\n <img [src]=\"sentimentIcon(c.sentiment)\" alt=\"\" width=\"16\" height=\"16\" />\r\n </span>\r\n <span>{{ sentimentLabel(c.sentiment) }}</span>\r\n </span>\r\n </div>\r\n </section>\r\n }\r\n\r\n <section\r\n class=\"live-monitor-page__sidebar-block flex min-h-[16rem] flex-1 flex-col gap-4 overflow-hidden rounded-lg bg-white p-4\"\r\n aria-labelledby=\"live-goal-timeline-title\"\r\n >\r\n <header class=\"flex items-center gap-3\">\r\n <span class=\"inline-flex items-center justify-center rounded-md bg-blue-500/10 p-1 text-blue-600\">\r\n <ed-icon name=\"flag\" [size]=\"16\" />\r\n </span>\r\n <h4 id=\"live-goal-timeline-title\" class=\"m-0\">Goal Timeline</h4>\r\n </header>\r\n\r\n <div class=\"live-monitor-page__goal-panel flex min-h-0 flex-1 flex-col rounded-lg bg-zinc-50 p-2\">\r\n @if (c.goal) {\r\n <p class=\"live-monitor-page__eyebrow mb-3 m-0 text-zinc-900\">{{ c.goal }}</p>\r\n } @else {\r\n <p class=\"live-monitor-page__eyebrow mb-3 m-0 text-zinc-900\">No Goal identified yet</p>\r\n }\r\n\r\n <ul class=\"live-monitor-page__tools m-0 flex min-h-0 flex-1 list-none flex-col gap-4 overflow-auto p-0\">\r\n @for (tool of liveTools(); track toolTrackKey(tool, $index)) {\r\n <li class=\"flex flex-col gap-1\" [class]=\"toolStateClass(tool.state)\">\r\n <div class=\"flex flex-wrap items-center gap-2\">\r\n <span class=\"text-zinc-900\">{{ tool.name }}</span>\r\n <ed-badge-2 [attr.variant]=\"toolBadgeTone(tool.state)\" pill uppercase>\r\n {{ toolBadgeLabel(tool.state) }}\r\n </ed-badge-2>\r\n </div>\r\n @if (tool.result) {\r\n <p class=\"m-0 text-zinc-500\">{{ tool.result }}</p>\r\n }\r\n </li>\r\n } @empty {\r\n @for (step of goalPlaceholderSteps; track step.title) {\r\n <li class=\"flex flex-col gap-1\">\r\n <div class=\"flex flex-wrap items-center gap-2\">\r\n <span class=\"text-zinc-900\">{{ step.title }}</span>\r\n <ed-badge-2 [attr.variant]=\"step.tone\" pill uppercase>{{ step.label }}</ed-badge-2>\r\n </div>\r\n <p class=\"m-0 text-zinc-500\">{{ step.detail }}</p>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n </div>\r\n </section>\r\n </aside>\r\n </div>\r\n } @else {\r\n <div class=\"flex flex-col items-start gap-3\">\r\n <button\r\n type=\"button\"\r\n class=\"live-monitor-page__back inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-md border border-zinc-200 bg-white text-zinc-600\"\r\n aria-label=\"Back to live calls\"\r\n (click)=\"goToLiveCalls()\"\r\n >\r\n <ed-icon name=\"arrow_back\" [size]=\"19\" />\r\n </button>\r\n <p class=\"m-0 text-zinc-500\">Call ended or not found.</p>\r\n </div>\r\n }\r\n }\r\n</div>\r\n", styles: [".vr-sentiment{display:inline-flex;align-items:center;justify-content:center;gap:4px;height:20px;padding:2px 4px;border-radius:6px;font-size:11px;font-weight:500;line-height:16px;white-space:nowrap}.vr-sentiment__icon{display:block;width:16px;height:16px;flex-shrink:0;overflow:hidden}.vr-sentiment__icon img{display:block;width:100%;height:100%;max-width:none}.vr-sentiment[data-sentiment=calm]{background:#3681f41a;color:#2162f0}.vr-sentiment[data-sentiment=neutral]{background:#f0f2f5;color:#41464c}.vr-sentiment[data-sentiment=urgent]{background:#f26b0d1a;color:#e94e0c}.vr-sentiment[data-sentiment=frustrated]{background:#f037401a;color:#db0c15}.live-monitor-page__eyebrow{font-size:10px;font-weight:600;letter-spacing:1px;line-height:1;text-transform:uppercase}.live-monitor-page__confidence-track{height:8px;overflow:hidden;border-radius:9999px;background:linear-gradient(90deg,#7d34fb1a,#e76b171a)}.live-monitor-page__confidence-fill{display:block;height:100%;border-radius:9999px;background:linear-gradient(90deg,#7d34fb,#e76b17)}.live-monitor-page__sidebar-block{min-height:16rem}.live-monitor-page__tools li{position:relative;padding-left:1.25rem}.live-monitor-page__tools li:before{content:\"\";position:absolute;top:.35rem;left:0;width:.5rem;height:.5rem;border-radius:9999px;background:#a2a4a6}\n"] }]
1127
+ }], ctorParameters: () => [] });
1128
+
1129
+ export { LiveMonitorPageComponent };
1130
+ //# sourceMappingURL=edvak99-voice-receptionist-widget-live-monitor-page.component-CsZ2GN-b.mjs.map