@edvak99/voice-receptionist-widget 1.1.13 → 1.1.15

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 (2268) hide show
  1. package/README.md +15 -4
  2. package/fesm2022/edvak99-voice-receptionist-widget-activities-page.component-Duzns23a.mjs +510 -0
  3. package/fesm2022/edvak99-voice-receptionist-widget-activities-page.component-Duzns23a.mjs.map +1 -0
  4. package/fesm2022/edvak99-voice-receptionist-widget-analytics-page.component-DbKJgP1d.mjs +363 -0
  5. package/fesm2022/edvak99-voice-receptionist-widget-analytics-page.component-DbKJgP1d.mjs.map +1 -0
  6. package/fesm2022/edvak99-voice-receptionist-widget-audit-page.component-CUbsSOXj.mjs +78 -0
  7. package/fesm2022/edvak99-voice-receptionist-widget-audit-page.component-CUbsSOXj.mjs.map +1 -0
  8. package/fesm2022/edvak99-voice-receptionist-widget-call-history-detail-page.component-Dx8WE3ej.mjs +421 -0
  9. package/fesm2022/edvak99-voice-receptionist-widget-call-history-detail-page.component-Dx8WE3ej.mjs.map +1 -0
  10. package/fesm2022/edvak99-voice-receptionist-widget-call-history-page.component-RhHzxOIb.mjs +246 -0
  11. package/fesm2022/edvak99-voice-receptionist-widget-call-history-page.component-RhHzxOIb.mjs.map +1 -0
  12. package/fesm2022/{edvak99-voice-receptionist-widget-call-recording-player.component-GVg1g-Vq.mjs → edvak99-voice-receptionist-widget-call-recording-player.component-CyZiBucx.mjs} +4 -4
  13. package/fesm2022/edvak99-voice-receptionist-widget-call-recording-player.component-CyZiBucx.mjs.map +1 -0
  14. package/fesm2022/{edvak99-voice-receptionist-widget-call-review.service-WG30w6Jl.mjs → edvak99-voice-receptionist-widget-call-review.service-bz7fCM9e.mjs} +2 -2
  15. package/fesm2022/{edvak99-voice-receptionist-widget-call-review.service-WG30w6Jl.mjs.map → edvak99-voice-receptionist-widget-call-review.service-bz7fCM9e.mjs.map} +1 -1
  16. package/fesm2022/{edvak99-voice-receptionist-widget-call-review.util-Deh3jPgo.mjs → edvak99-voice-receptionist-widget-call-review.util-rWIPxDtQ.mjs} +2 -2
  17. package/fesm2022/edvak99-voice-receptionist-widget-call-review.util-rWIPxDtQ.mjs.map +1 -0
  18. package/fesm2022/edvak99-voice-receptionist-widget-dashboard-page.component-CF8VfDOy.mjs +291 -0
  19. package/fesm2022/edvak99-voice-receptionist-widget-dashboard-page.component-CF8VfDOy.mjs.map +1 -0
  20. package/fesm2022/{edvak99-voice-receptionist-widget-eds-elapsed.pipe-BFCiJOT3.mjs → edvak99-voice-receptionist-widget-eds-elapsed.pipe-Dra7e7xN.mjs} +26 -2
  21. package/fesm2022/edvak99-voice-receptionist-widget-eds-elapsed.pipe-Dra7e7xN.mjs.map +1 -0
  22. package/fesm2022/{edvak99-voice-receptionist-widget-eds-search-field.component-OGRDvYBp.mjs → edvak99-voice-receptionist-widget-eds-search-field.component-BDGCmkoP.mjs} +2 -2
  23. package/fesm2022/edvak99-voice-receptionist-widget-eds-search-field.component-BDGCmkoP.mjs.map +1 -0
  24. package/fesm2022/edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-Dtc9wTzh.mjs +6344 -0
  25. package/fesm2022/edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-Dtc9wTzh.mjs.map +1 -0
  26. package/fesm2022/edvak99-voice-receptionist-widget-live-calls-page.component-BZXs5H-d.mjs +437 -0
  27. package/fesm2022/edvak99-voice-receptionist-widget-live-calls-page.component-BZXs5H-d.mjs.map +1 -0
  28. package/fesm2022/edvak99-voice-receptionist-widget-live-monitor-page.component-CqOu-iLw.mjs +1135 -0
  29. package/fesm2022/edvak99-voice-receptionist-widget-live-monitor-page.component-CqOu-iLw.mjs.map +1 -0
  30. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purpose.util-Bdh4QfFe.mjs +127 -0
  31. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purpose.util-Bdh4QfFe.mjs.map +1 -0
  32. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purposes-page.component-DkInjGJ-.mjs +269 -0
  33. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purposes-page.component-DkInjGJ-.mjs.map +1 -0
  34. package/fesm2022/edvak99-voice-receptionist-widget-smart-tooltip.directive-ChEdIem3.mjs +1220 -0
  35. package/fesm2022/edvak99-voice-receptionist-widget-smart-tooltip.directive-ChEdIem3.mjs.map +1 -0
  36. package/fesm2022/edvak99-voice-receptionist-widget-table-skeleton.constants-C1Dg9Z_2.mjs +5 -0
  37. package/fesm2022/edvak99-voice-receptionist-widget-table-skeleton.constants-C1Dg9Z_2.mjs.map +1 -0
  38. package/fesm2022/edvak99-voice-receptionist-widget-task-detail-drawer.component-Bhl6t6Y3.mjs +200 -0
  39. package/fesm2022/edvak99-voice-receptionist-widget-task-detail-drawer.component-Bhl6t6Y3.mjs.map +1 -0
  40. package/fesm2022/edvak99-voice-receptionist-widget-tasks-page.component-C1YznNYs.mjs +150 -0
  41. package/fesm2022/edvak99-voice-receptionist-widget-tasks-page.component-C1YznNYs.mjs.map +1 -0
  42. package/fesm2022/edvak99-voice-receptionist-widget-wizard-page.component-D9ToAsfM.mjs +47 -0
  43. package/fesm2022/edvak99-voice-receptionist-widget-wizard-page.component-D9ToAsfM.mjs.map +1 -0
  44. package/fesm2022/edvak99-voice-receptionist-widget.mjs +1 -1
  45. package/lib/components/agent-settings-drawer/agent-settings-drawer.component.d.ts +10 -0
  46. package/lib/components/call-tasks-panel/call-tasks-panel.component.d.ts +3 -1
  47. package/lib/components/live-transcript-panel/live-transcript-panel.component.d.ts +7 -1
  48. package/lib/components/outbound-dial-modal/outbound-dial-modal.component.d.ts +65 -0
  49. package/lib/config.d.ts +0 -1
  50. package/lib/layout/eds-app-shell.component.d.ts +1 -0
  51. package/lib/layout/eds-module-nav.component.d.ts +18 -0
  52. package/lib/layout/eds-topbar.component.d.ts +21 -0
  53. package/lib/pages/activities-page/activities-page.component.d.ts +8 -0
  54. package/lib/pages/analytics-page/analytics-page.component.d.ts +70 -34
  55. package/lib/pages/audit-page/audit-page.component.d.ts +22 -0
  56. package/lib/pages/call-history-detail-page/call-history-detail-page.component.d.ts +2 -3
  57. package/lib/pages/call-history-page/call-history-page.component.d.ts +35 -12
  58. package/lib/pages/dashboard-page/dashboard-page.component.d.ts +91 -46
  59. package/lib/pages/live-calls-page/live-calls-page.component.d.ts +31 -6
  60. package/lib/pages/live-monitor-page/live-monitor-page.component.d.ts +23 -0
  61. package/lib/pages/outbound-purposes-page/outbound-purposes-page.component.d.ts +1 -0
  62. package/lib/pages/settings-page/settings-page.component.d.ts +38 -14
  63. package/lib/pages/tasks-page/tasks-page.component.d.ts +1 -0
  64. package/lib/pages/wizard-page/wizard-page.component.d.ts +2 -0
  65. package/lib/services/agent-settings-drawer.service.d.ts +9 -0
  66. package/lib/shared/modal.component.d.ts +14 -5
  67. package/lib/shared/smart-tooltip.directive.d.ts +439 -0
  68. package/lib/shared/table-skeleton.constants.d.ts +2 -0
  69. package/lib/shared/viewport-portal.directive.d.ts +16 -0
  70. package/lib/ui/ed-avatar.component.d.ts +18 -0
  71. package/lib/ui/ed-button.component.d.ts +44 -0
  72. package/lib/ui/ed-icon-button.component.d.ts +67 -0
  73. package/lib/ui/ed-icon.component.d.ts +101 -0
  74. package/lib/ui/ed-skeleton.component.d.ts +7 -0
  75. package/lib/ui/eds-badge.component.d.ts +2 -1
  76. package/lib/ui/eds-button.component.d.ts +1 -1
  77. package/lib/utils/call-review.util.d.ts +2 -1
  78. package/lib/utils/sentiment-display.util.d.ts +3 -0
  79. package/package.json +8 -2
  80. package/public-api.d.ts +2 -1
  81. package/src/assets/CkBuilder/LICENSE.md +49 -0
  82. package/src/assets/CkBuilder/README.md +68 -0
  83. package/src/assets/CkBuilder/build/ckeditor.js +6 -0
  84. package/src/assets/CkBuilder/build/ckeditor.js.map +1 -0
  85. package/src/assets/CkBuilder/build/translations/af.js +1 -0
  86. package/src/assets/CkBuilder/build/translations/ar.js +1 -0
  87. package/src/assets/CkBuilder/build/translations/ast.js +1 -0
  88. package/src/assets/CkBuilder/build/translations/az.js +1 -0
  89. package/src/assets/CkBuilder/build/translations/bg.js +1 -0
  90. package/src/assets/CkBuilder/build/translations/bn.js +1 -0
  91. package/src/assets/CkBuilder/build/translations/bs.js +1 -0
  92. package/src/assets/CkBuilder/build/translations/ca.js +1 -0
  93. package/src/assets/CkBuilder/build/translations/cs.js +1 -0
  94. package/src/assets/CkBuilder/build/translations/da.js +1 -0
  95. package/src/assets/CkBuilder/build/translations/de-ch.js +1 -0
  96. package/src/assets/CkBuilder/build/translations/de.js +1 -0
  97. package/src/assets/CkBuilder/build/translations/el.js +1 -0
  98. package/src/assets/CkBuilder/build/translations/en-au.js +1 -0
  99. package/src/assets/CkBuilder/build/translations/en.js +1 -0
  100. package/src/assets/CkBuilder/build/translations/eo.js +1 -0
  101. package/src/assets/CkBuilder/build/translations/es-co.js +1 -0
  102. package/src/assets/CkBuilder/build/translations/es.js +1 -0
  103. package/src/assets/CkBuilder/build/translations/et.js +1 -0
  104. package/src/assets/CkBuilder/build/translations/eu.js +1 -0
  105. package/src/assets/CkBuilder/build/translations/fa.js +1 -0
  106. package/src/assets/CkBuilder/build/translations/fi.js +1 -0
  107. package/src/assets/CkBuilder/build/translations/fr.js +1 -0
  108. package/src/assets/CkBuilder/build/translations/gl.js +1 -0
  109. package/src/assets/CkBuilder/build/translations/gu.js +1 -0
  110. package/src/assets/CkBuilder/build/translations/he.js +1 -0
  111. package/src/assets/CkBuilder/build/translations/hi.js +1 -0
  112. package/src/assets/CkBuilder/build/translations/hr.js +1 -0
  113. package/src/assets/CkBuilder/build/translations/hu.js +1 -0
  114. package/src/assets/CkBuilder/build/translations/id.js +1 -0
  115. package/src/assets/CkBuilder/build/translations/it.js +1 -0
  116. package/src/assets/CkBuilder/build/translations/ja.js +1 -0
  117. package/src/assets/CkBuilder/build/translations/jv.js +1 -0
  118. package/src/assets/CkBuilder/build/translations/kk.js +1 -0
  119. package/src/assets/CkBuilder/build/translations/km.js +1 -0
  120. package/src/assets/CkBuilder/build/translations/kn.js +1 -0
  121. package/src/assets/CkBuilder/build/translations/ko.js +1 -0
  122. package/src/assets/CkBuilder/build/translations/ku.js +1 -0
  123. package/src/assets/CkBuilder/build/translations/lt.js +1 -0
  124. package/src/assets/CkBuilder/build/translations/lv.js +1 -0
  125. package/src/assets/CkBuilder/build/translations/ms.js +1 -0
  126. package/src/assets/CkBuilder/build/translations/nb.js +1 -0
  127. package/src/assets/CkBuilder/build/translations/ne.js +1 -0
  128. package/src/assets/CkBuilder/build/translations/nl.js +1 -0
  129. package/src/assets/CkBuilder/build/translations/no.js +1 -0
  130. package/src/assets/CkBuilder/build/translations/oc.js +1 -0
  131. package/src/assets/CkBuilder/build/translations/pl.js +1 -0
  132. package/src/assets/CkBuilder/build/translations/pt-br.js +1 -0
  133. package/src/assets/CkBuilder/build/translations/pt.js +1 -0
  134. package/src/assets/CkBuilder/build/translations/ro.js +1 -0
  135. package/src/assets/CkBuilder/build/translations/ru.js +1 -0
  136. package/src/assets/CkBuilder/build/translations/si.js +1 -0
  137. package/src/assets/CkBuilder/build/translations/sk.js +1 -0
  138. package/src/assets/CkBuilder/build/translations/sl.js +1 -0
  139. package/src/assets/CkBuilder/build/translations/sq.js +1 -0
  140. package/src/assets/CkBuilder/build/translations/sr-latn.js +1 -0
  141. package/src/assets/CkBuilder/build/translations/sr.js +1 -0
  142. package/src/assets/CkBuilder/build/translations/sv.js +1 -0
  143. package/src/assets/CkBuilder/build/translations/th.js +1 -0
  144. package/src/assets/CkBuilder/build/translations/tk.js +1 -0
  145. package/src/assets/CkBuilder/build/translations/tr.js +1 -0
  146. package/src/assets/CkBuilder/build/translations/tt.js +1 -0
  147. package/src/assets/CkBuilder/build/translations/ug.js +1 -0
  148. package/src/assets/CkBuilder/build/translations/uk.js +1 -0
  149. package/src/assets/CkBuilder/build/translations/ur.js +1 -0
  150. package/src/assets/CkBuilder/build/translations/uz.js +1 -0
  151. package/src/assets/CkBuilder/build/translations/vi.js +1 -0
  152. package/src/assets/CkBuilder/build/translations/zh-cn.js +1 -0
  153. package/src/assets/CkBuilder/build/translations/zh.js +1 -0
  154. package/src/assets/CkBuilder/webpack.config.js +97 -0
  155. package/src/assets/Mike/index.js +3 -0
  156. package/src/assets/annyang.js +725 -0
  157. package/src/assets/blue_icon_f.png +0 -0
  158. package/src/assets/client.js +186 -0
  159. package/src/assets/css/Ed_style.scss +1034 -0
  160. package/src/assets/css/_alerts.scss +66 -0
  161. package/src/assets/css/_animation.scss +88 -0
  162. package/src/assets/css/_api-log-chips.scss +30 -0
  163. package/src/assets/css/_avatar.scss +317 -0
  164. package/src/assets/css/_badge.scss +126 -0
  165. package/src/assets/css/_buttons.scss +110 -0
  166. package/src/assets/css/_checkbox_radio.scss +174 -0
  167. package/src/assets/css/_colors.scss +314 -0
  168. package/src/assets/css/_customfile_upload.scss +18 -0
  169. package/src/assets/css/_date_picker.scss +119 -0
  170. package/src/assets/css/_focus.scss +56 -0
  171. package/src/assets/css/_fontsize.scss +0 -0
  172. package/src/assets/css/_headings.scss +87 -0
  173. package/src/assets/css/_input.scss +153 -0
  174. package/src/assets/css/_list.scss +83 -0
  175. package/src/assets/css/_main-layout.scss +123 -0
  176. package/src/assets/css/_material_symbols.scss +31 -0
  177. package/src/assets/css/_ng-select.scss +124 -0
  178. package/src/assets/css/_resize-handler.directive.scss +46 -0
  179. package/src/assets/css/_root.scss +258 -0
  180. package/src/assets/css/_select.scss +72 -0
  181. package/src/assets/css/_smart-scroll.scss +93 -0
  182. package/src/assets/css/_smooth-scrollbar.scss +196 -0
  183. package/src/assets/css/_tables.css +1 -0
  184. package/src/assets/css/_tables.scss +815 -0
  185. package/src/assets/css/_tabs.css +1 -0
  186. package/src/assets/css/_tabs.scss +22 -0
  187. package/src/assets/css/_tag.scss +18 -0
  188. package/src/assets/css/_zindex.scss +3 -0
  189. package/src/assets/css/animations.css +17 -0
  190. package/src/assets/css/custom-elements.css +1 -0
  191. package/src/assets/css/custom-elements.scss +742 -0
  192. package/src/assets/css/font-awesome.css +4586 -0
  193. package/src/assets/css/foxit/contextMenu.css +298 -0
  194. package/src/assets/css/foxit/datepicker.css +31931 -0
  195. package/src/assets/css/foxit/foxit.css +8500 -0
  196. package/src/assets/css/icons.scss +57 -0
  197. package/src/assets/css/jstree.style.min.css +1 -0
  198. package/src/assets/css/masonrt.scss +36 -0
  199. package/src/assets/css/patient-portal-disclaimer-global.scss +68 -0
  200. package/src/assets/css/printstyle.css +839 -0
  201. package/src/assets/css/shoelace-edit.css +1 -0
  202. package/src/assets/css/shoelace-edit.scss +513 -0
  203. package/src/assets/css/styles.css +0 -0
  204. package/src/assets/css/task-description-tiptap-global.scss +84 -0
  205. package/src/assets/css/themes/default.css +484 -0
  206. package/src/assets/css/themes/green-bright.css +484 -0
  207. package/src/assets/css/themes/light.css +472 -0
  208. package/src/assets/css/tour-guide.scss +238 -0
  209. package/src/assets/data/growth-chart/GROWTH_CHART_LMS.json +27202 -0
  210. package/src/assets/favicon.png +0 -0
  211. package/src/assets/fonts/call-hover.svg +6 -0
  212. package/src/assets/fonts/edvak-fonts.eot +0 -0
  213. package/src/assets/fonts/edvak-fonts.svg +50 -0
  214. package/src/assets/fonts/edvak-fonts.ttf +0 -0
  215. package/src/assets/fonts/edvak-fonts.woff +0 -0
  216. package/src/assets/fonts/flaticon_mycollection.css +23 -0
  217. package/src/assets/fonts/flaticon_mycollection.eot +0 -0
  218. package/src/assets/fonts/flaticon_mycollection.html +463 -0
  219. package/src/assets/fonts/flaticon_mycollection.scss +29 -0
  220. package/src/assets/fonts/flaticon_mycollection.svg +15 -0
  221. package/src/assets/fonts/flaticon_mycollection.ttf +0 -0
  222. package/src/assets/fonts/flaticon_mycollection.woff +0 -0
  223. package/src/assets/fonts/flaticon_mycollection.woff2 +0 -0
  224. package/src/assets/fonts/font_face.txt +234 -0
  225. package/src/assets/fonts/inter.css +567 -0
  226. package/src/assets/fonts/lato.css +72 -0
  227. package/src/assets/fonts/message-hover.svg +7 -0
  228. package/src/assets/fonts/notes-hover.svg +8 -0
  229. package/src/assets/fonts/poppins-v20-latin-100.eot +0 -0
  230. package/src/assets/fonts/poppins-v20-latin-100.svg +320 -0
  231. package/src/assets/fonts/poppins-v20-latin-100.ttf +0 -0
  232. package/src/assets/fonts/poppins-v20-latin-100.woff +0 -0
  233. package/src/assets/fonts/poppins-v20-latin-100.woff2 +0 -0
  234. package/src/assets/fonts/poppins-v20-latin-100italic.eot +0 -0
  235. package/src/assets/fonts/poppins-v20-latin-100italic.svg +341 -0
  236. package/src/assets/fonts/poppins-v20-latin-100italic.ttf +0 -0
  237. package/src/assets/fonts/poppins-v20-latin-100italic.woff +0 -0
  238. package/src/assets/fonts/poppins-v20-latin-100italic.woff2 +0 -0
  239. package/src/assets/fonts/poppins-v20-latin-200.eot +0 -0
  240. package/src/assets/fonts/poppins-v20-latin-200.svg +319 -0
  241. package/src/assets/fonts/poppins-v20-latin-200.ttf +0 -0
  242. package/src/assets/fonts/poppins-v20-latin-200.woff +0 -0
  243. package/src/assets/fonts/poppins-v20-latin-200.woff2 +0 -0
  244. package/src/assets/fonts/poppins-v20-latin-200italic.eot +0 -0
  245. package/src/assets/fonts/poppins-v20-latin-200italic.svg +336 -0
  246. package/src/assets/fonts/poppins-v20-latin-200italic.ttf +0 -0
  247. package/src/assets/fonts/poppins-v20-latin-200italic.woff +0 -0
  248. package/src/assets/fonts/poppins-v20-latin-200italic.woff2 +0 -0
  249. package/src/assets/fonts/poppins-v20-latin-300.eot +0 -0
  250. package/src/assets/fonts/poppins-v20-latin-300.svg +321 -0
  251. package/src/assets/fonts/poppins-v20-latin-300.ttf +0 -0
  252. package/src/assets/fonts/poppins-v20-latin-300.woff +0 -0
  253. package/src/assets/fonts/poppins-v20-latin-300.woff2 +0 -0
  254. package/src/assets/fonts/poppins-v20-latin-300italic.eot +0 -0
  255. package/src/assets/fonts/poppins-v20-latin-300italic.svg +336 -0
  256. package/src/assets/fonts/poppins-v20-latin-300italic.ttf +0 -0
  257. package/src/assets/fonts/poppins-v20-latin-300italic.woff +0 -0
  258. package/src/assets/fonts/poppins-v20-latin-300italic.woff2 +0 -0
  259. package/src/assets/fonts/poppins-v20-latin-500.eot +0 -0
  260. package/src/assets/fonts/poppins-v20-latin-500.svg +323 -0
  261. package/src/assets/fonts/poppins-v20-latin-500.ttf +0 -0
  262. package/src/assets/fonts/poppins-v20-latin-500.woff +0 -0
  263. package/src/assets/fonts/poppins-v20-latin-500.woff2 +0 -0
  264. package/src/assets/fonts/poppins-v20-latin-500italic.eot +0 -0
  265. package/src/assets/fonts/poppins-v20-latin-500italic.svg +338 -0
  266. package/src/assets/fonts/poppins-v20-latin-500italic.ttf +0 -0
  267. package/src/assets/fonts/poppins-v20-latin-500italic.woff +0 -0
  268. package/src/assets/fonts/poppins-v20-latin-500italic.woff2 +0 -0
  269. package/src/assets/fonts/poppins-v20-latin-600.eot +0 -0
  270. package/src/assets/fonts/poppins-v20-latin-600.svg +322 -0
  271. package/src/assets/fonts/poppins-v20-latin-600.ttf +0 -0
  272. package/src/assets/fonts/poppins-v20-latin-600.woff +0 -0
  273. package/src/assets/fonts/poppins-v20-latin-600.woff2 +0 -0
  274. package/src/assets/fonts/poppins-v20-latin-600italic.eot +0 -0
  275. package/src/assets/fonts/poppins-v20-latin-600italic.svg +338 -0
  276. package/src/assets/fonts/poppins-v20-latin-600italic.ttf +0 -0
  277. package/src/assets/fonts/poppins-v20-latin-600italic.woff +0 -0
  278. package/src/assets/fonts/poppins-v20-latin-600italic.woff2 +0 -0
  279. package/src/assets/fonts/poppins-v20-latin-700.eot +0 -0
  280. package/src/assets/fonts/poppins-v20-latin-700.svg +322 -0
  281. package/src/assets/fonts/poppins-v20-latin-700.ttf +0 -0
  282. package/src/assets/fonts/poppins-v20-latin-700.woff +0 -0
  283. package/src/assets/fonts/poppins-v20-latin-700.woff2 +0 -0
  284. package/src/assets/fonts/poppins-v20-latin-700italic.eot +0 -0
  285. package/src/assets/fonts/poppins-v20-latin-700italic.svg +336 -0
  286. package/src/assets/fonts/poppins-v20-latin-700italic.ttf +0 -0
  287. package/src/assets/fonts/poppins-v20-latin-700italic.woff +0 -0
  288. package/src/assets/fonts/poppins-v20-latin-700italic.woff2 +0 -0
  289. package/src/assets/fonts/poppins-v20-latin-800.eot +0 -0
  290. package/src/assets/fonts/poppins-v20-latin-800.svg +320 -0
  291. package/src/assets/fonts/poppins-v20-latin-800.ttf +0 -0
  292. package/src/assets/fonts/poppins-v20-latin-800.woff +0 -0
  293. package/src/assets/fonts/poppins-v20-latin-800.woff2 +0 -0
  294. package/src/assets/fonts/poppins-v20-latin-800italic.eot +0 -0
  295. package/src/assets/fonts/poppins-v20-latin-800italic.svg +335 -0
  296. package/src/assets/fonts/poppins-v20-latin-800italic.ttf +0 -0
  297. package/src/assets/fonts/poppins-v20-latin-800italic.woff +0 -0
  298. package/src/assets/fonts/poppins-v20-latin-800italic.woff2 +0 -0
  299. package/src/assets/fonts/poppins-v20-latin-900.eot +0 -0
  300. package/src/assets/fonts/poppins-v20-latin-900.svg +321 -0
  301. package/src/assets/fonts/poppins-v20-latin-900.ttf +0 -0
  302. package/src/assets/fonts/poppins-v20-latin-900.woff +0 -0
  303. package/src/assets/fonts/poppins-v20-latin-900.woff2 +0 -0
  304. package/src/assets/fonts/poppins-v20-latin-900italic.eot +0 -0
  305. package/src/assets/fonts/poppins-v20-latin-900italic.svg +335 -0
  306. package/src/assets/fonts/poppins-v20-latin-900italic.ttf +0 -0
  307. package/src/assets/fonts/poppins-v20-latin-900italic.woff +0 -0
  308. package/src/assets/fonts/poppins-v20-latin-900italic.woff2 +0 -0
  309. package/src/assets/fonts/poppins-v20-latin-italic.eot +0 -0
  310. package/src/assets/fonts/poppins-v20-latin-italic.svg +336 -0
  311. package/src/assets/fonts/poppins-v20-latin-italic.ttf +0 -0
  312. package/src/assets/fonts/poppins-v20-latin-italic.woff +0 -0
  313. package/src/assets/fonts/poppins-v20-latin-italic.woff2 +0 -0
  314. package/src/assets/fonts/poppins-v20-latin-regular.eot +0 -0
  315. package/src/assets/fonts/poppins-v20-latin-regular.svg +323 -0
  316. package/src/assets/fonts/poppins-v20-latin-regular.ttf +0 -0
  317. package/src/assets/fonts/poppins-v20-latin-regular.woff +0 -0
  318. package/src/assets/fonts/poppins-v20-latin-regular.woff2 +0 -0
  319. package/src/assets/fonts/schedule-hover.svg +13 -0
  320. package/src/assets/fonts/video-call-hover.svg +6 -0
  321. package/src/assets/home.css +152 -0
  322. package/src/assets/icons/AI.svg +15 -0
  323. package/src/assets/icons/AddressBook.svg +3 -0
  324. package/src/assets/icons/ArrowArcLeft.svg +3 -0
  325. package/src/assets/icons/ArrowCircleDownLeft.png +0 -0
  326. package/src/assets/icons/ArrowCircleDownLeft.svg +3 -0
  327. package/src/assets/icons/ArrowClockwise.svg +3 -0
  328. package/src/assets/icons/ArrowLeft.svg +3 -0
  329. package/src/assets/icons/ArrowUpRight.svg +3 -0
  330. package/src/assets/icons/ArrowsCounterClockwise.svg +3 -0
  331. package/src/assets/icons/ArrowsLeftRight.svg +3 -0
  332. package/src/assets/icons/Avatar.svg +4 -0
  333. package/src/assets/icons/Baby.svg +3 -0
  334. package/src/assets/icons/BookOpenText.svg +3 -0
  335. package/src/assets/icons/CalendarCheck.svg +3 -0
  336. package/src/assets/icons/CalendarDot.svg +3 -0
  337. package/src/assets/icons/CalendarDots.svg +3 -0
  338. package/src/assets/icons/CalendarX.svg +3 -0
  339. package/src/assets/icons/Camera.svg +3 -0
  340. package/src/assets/icons/CameraDisable.svg +3 -0
  341. package/src/assets/icons/ChatText.svg +3 -0
  342. package/src/assets/icons/ClockCountdown.svg +3 -0
  343. package/src/assets/icons/ClockCounterClockwise.svg +3 -0
  344. package/src/assets/icons/ClockUser.svg +3 -0
  345. package/src/assets/icons/CloudCheck.svg +3 -0
  346. package/src/assets/icons/CrownSimple.svg +3 -0
  347. package/src/assets/icons/CurrencyDollar.svg +3 -0
  348. package/src/assets/icons/Desktop.svg +3 -0
  349. package/src/assets/icons/Encounter.svg +4 -0
  350. package/src/assets/icons/EnvelopeSimple.svg +3 -0
  351. package/src/assets/icons/FileDoc.svg +3 -0
  352. package/src/assets/icons/FilePdf.svg +3 -0
  353. package/src/assets/icons/FileText.png +0 -0
  354. package/src/assets/icons/FileText.svg +3 -0
  355. package/src/assets/icons/FileTextNew.svg +3 -0
  356. package/src/assets/icons/FileXml.svg +4 -0
  357. package/src/assets/icons/FirstAid.svg +3 -0
  358. package/src/assets/icons/Gif.svg +3 -0
  359. package/src/assets/icons/Globe.svg +3 -0
  360. package/src/assets/icons/HandPointing.svg +3 -0
  361. package/src/assets/icons/Heart.svg +3 -0
  362. package/src/assets/icons/Image-ic.svg +3 -0
  363. package/src/assets/icons/Labs_Imaging.svg +8 -0
  364. package/src/assets/icons/Link.svg +3 -0
  365. package/src/assets/icons/LockSimple.svg +3 -0
  366. package/src/assets/icons/MapPin.svg +3 -0
  367. package/src/assets/icons/MapPin_new.svg +3 -0
  368. package/src/assets/icons/Microscope.svg +3 -0
  369. package/src/assets/icons/MinusCircle.svg +3 -0
  370. package/src/assets/icons/NoFile.svg +4 -0
  371. package/src/assets/icons/NotePencil.png +0 -0
  372. package/src/assets/icons/NotePencil.svg +3 -0
  373. package/src/assets/icons/Notepad.svg +3 -0
  374. package/src/assets/icons/OfficeChair.svg +3 -0
  375. package/src/assets/icons/Other Files.svg +3 -0
  376. package/src/assets/icons/PaperPlaneTilt.svg +3 -0
  377. package/src/assets/icons/Paperclip.svg +3 -0
  378. package/src/assets/icons/Password.svg +3 -0
  379. package/src/assets/icons/Phone.svg +3 -0
  380. package/src/assets/icons/Pulse.svg +3 -0
  381. package/src/assets/icons/Refund_Icon.svg +5 -0
  382. package/src/assets/icons/Refund_new.svg +5 -0
  383. package/src/assets/icons/Robot.svg +3 -0
  384. package/src/assets/icons/ShieldCheck.svg +3 -0
  385. package/src/assets/icons/Suitcase.svg +3 -0
  386. package/src/assets/icons/Table-ic.svg +3 -0
  387. package/src/assets/icons/TagSimple.svg +3 -0
  388. package/src/assets/icons/TextAlignLeft.svg +3 -0
  389. package/src/assets/icons/Translate.svg +3 -0
  390. package/src/assets/icons/Trash.svg +3 -0
  391. package/src/assets/icons/User.svg +3 -0
  392. package/src/assets/icons/UserCheck.svg +3 -0
  393. package/src/assets/icons/User_new.svg +10 -0
  394. package/src/assets/icons/Users.svg +3 -0
  395. package/src/assets/icons/WarningCircle.svg +3 -0
  396. package/src/assets/icons/accessibility.svg +8 -0
  397. package/src/assets/icons/account_tree.svg +8 -0
  398. package/src/assets/icons/add.svg +8 -0
  399. package/src/assets/icons/add_box.svg +1 -0
  400. package/src/assets/icons/add_call-fill.svg +1 -0
  401. package/src/assets/icons/add_call.svg +1 -0
  402. package/src/assets/icons/add_circle.svg +8 -0
  403. package/src/assets/icons/add_link.svg +8 -0
  404. package/src/assets/icons/add_reaction.svg +8 -0
  405. package/src/assets/icons/add_text.svg +3 -0
  406. package/src/assets/icons/admin_panel_settings.svg +8 -0
  407. package/src/assets/icons/ai_1.svg +4 -0
  408. package/src/assets/icons/ai_new.svg +8 -0
  409. package/src/assets/icons/alarm.svg +8 -0
  410. package/src/assets/icons/alternate_email.svg +8 -0
  411. package/src/assets/icons/ambulance.svg +15 -0
  412. package/src/assets/icons/ambulance_2.svg +17 -0
  413. package/src/assets/icons/android.svg +6 -0
  414. package/src/assets/icons/appointments.svg +3 -0
  415. package/src/assets/icons/archive.svg +8 -0
  416. package/src/assets/icons/archive_new.svg +3 -0
  417. package/src/assets/icons/arrow-bar-right.svg +3 -0
  418. package/src/assets/icons/arrow-repeat.svg +4 -0
  419. package/src/assets/icons/arrow_back.svg +8 -0
  420. package/src/assets/icons/arrow_downward_alt.svg +8 -0
  421. package/src/assets/icons/arrow_drop_down.svg +8 -0
  422. package/src/assets/icons/arrow_fat_up.svg +3 -0
  423. package/src/assets/icons/arrow_left.svg +1 -0
  424. package/src/assets/icons/arrow_left_alt.svg +8 -0
  425. package/src/assets/icons/arrow_right.svg +3 -0
  426. package/src/assets/icons/arrow_right_alt.svg +8 -0
  427. package/src/assets/icons/arrow_top_left.svg +8 -0
  428. package/src/assets/icons/arrow_upward.svg +8 -0
  429. package/src/assets/icons/arrow_upward_alt.svg +8 -0
  430. package/src/assets/icons/arrows_merge.svg +3 -0
  431. package/src/assets/icons/article-fill.svg +1 -0
  432. package/src/assets/icons/article-off.svg +9 -0
  433. package/src/assets/icons/article.svg +8 -0
  434. package/src/assets/icons/at.svg +3 -0
  435. package/src/assets/icons/atr.svg +8 -0
  436. package/src/assets/icons/attach_file.svg +8 -0
  437. package/src/assets/icons/attach_file_45.svg +8 -0
  438. package/src/assets/icons/attach_money.svg +8 -0
  439. package/src/assets/icons/attachment.svg +8 -0
  440. package/src/assets/icons/auto_awesome_mosaic.svg +8 -0
  441. package/src/assets/icons/auto_pay.xml +11 -0
  442. package/src/assets/icons/auto_pay_new.svg +8 -0
  443. package/src/assets/icons/backspace_fill.svg +8 -0
  444. package/src/assets/icons/bandaids.svg +3 -0
  445. package/src/assets/icons/bell_simple_ringing.svg +3 -0
  446. package/src/assets/icons/bell_simple_z.svg +3 -0
  447. package/src/assets/icons/block.svg +8 -0
  448. package/src/assets/icons/bolt.svg +8 -0
  449. package/src/assets/icons/bolt_ai.svg +3 -0
  450. package/src/assets/icons/bolt_new.svg +11 -0
  451. package/src/assets/icons/book_open.svg +3 -0
  452. package/src/assets/icons/border_color.svg +8 -0
  453. package/src/assets/icons/box_edit.svg +8 -0
  454. package/src/assets/icons/brightness_1.svg +8 -0
  455. package/src/assets/icons/bubble.svg +8 -0
  456. package/src/assets/icons/building_apartment.svg +3 -0
  457. package/src/assets/icons/cached.svg +8 -0
  458. package/src/assets/icons/calculate.svg +8 -0
  459. package/src/assets/icons/calendar-star.svg +3 -0
  460. package/src/assets/icons/calendar-x.svg +4 -0
  461. package/src/assets/icons/calendar_clock.svg +8 -0
  462. package/src/assets/icons/calendar_dot.svg +3 -0
  463. package/src/assets/icons/calendar_down.svg +9 -0
  464. package/src/assets/icons/calendar_month.svg +8 -0
  465. package/src/assets/icons/calendar_plus.svg +3 -0
  466. package/src/assets/icons/calendar_today.svg +8 -0
  467. package/src/assets/icons/calendar_up.svg +9 -0
  468. package/src/assets/icons/call-fill.svg +8 -0
  469. package/src/assets/icons/call.svg +8 -0
  470. package/src/assets/icons/call_end-fill.svg +1 -0
  471. package/src/assets/icons/call_end.svg +1 -0
  472. package/src/assets/icons/call_fill.svg +8 -0
  473. package/src/assets/icons/call_log-fill.svg +1 -0
  474. package/src/assets/icons/call_log.svg +1 -0
  475. package/src/assets/icons/call_made.svg +8 -0
  476. package/src/assets/icons/call_merge.svg +1 -0
  477. package/src/assets/icons/call_missed.svg +1 -0
  478. package/src/assets/icons/call_missed_outgoing.svg +1 -0
  479. package/src/assets/icons/call_quality-fill.svg +1 -0
  480. package/src/assets/icons/call_quality.svg +1 -0
  481. package/src/assets/icons/call_received.svg +1 -0
  482. package/src/assets/icons/call_split.svg +1 -0
  483. package/src/assets/icons/call_to_action-fill.svg +1 -0
  484. package/src/assets/icons/call_to_action.svg +1 -0
  485. package/src/assets/icons/campaign.svg +8 -0
  486. package/src/assets/icons/cancel.svg +8 -0
  487. package/src/assets/icons/card-list.svg +4 -0
  488. package/src/assets/icons/caret_down.svg +3 -0
  489. package/src/assets/icons/caret_left.svg +3 -0
  490. package/src/assets/icons/caret_right.svg +3 -0
  491. package/src/assets/icons/caret_up.svg +3 -0
  492. package/src/assets/icons/cash.svg +16 -0
  493. package/src/assets/icons/changelog.svg +3 -0
  494. package/src/assets/icons/chart_data.svg +8 -0
  495. package/src/assets/icons/chartline.svg +3 -0
  496. package/src/assets/icons/chat-fill.svg +1 -0
  497. package/src/assets/icons/chat.svg +8 -0
  498. package/src/assets/icons/chat_bubble.svg +8 -0
  499. package/src/assets/icons/chat_new.svg +3 -0
  500. package/src/assets/icons/chat_text.svg +3 -0
  501. package/src/assets/icons/check-circle-fill.svg +3 -0
  502. package/src/assets/icons/check-tooltip-success.svg +8 -0
  503. package/src/assets/icons/check.svg +15 -0
  504. package/src/assets/icons/check2-all.svg +4 -0
  505. package/src/assets/icons/check_circle.svg +8 -0
  506. package/src/assets/icons/check_circle_fill.svg +8 -0
  507. package/src/assets/icons/check_square.svg +3 -0
  508. package/src/assets/icons/chevron_left.svg +15 -0
  509. package/src/assets/icons/chevron_right.svg +8 -0
  510. package/src/assets/icons/chronic-fill.svg +1 -0
  511. package/src/assets/icons/chronic.svg +1 -0
  512. package/src/assets/icons/circle-fill.svg +3 -0
  513. package/src/assets/icons/circle_notifications-fill.svg +1 -0
  514. package/src/assets/icons/circle_notifications.svg +1 -0
  515. package/src/assets/icons/clear-all.svg +1 -0
  516. package/src/assets/icons/clinic.svg +3 -0
  517. package/src/assets/icons/clinic_settings.svg +3 -0
  518. package/src/assets/icons/clinical_notes.svg +8 -0
  519. package/src/assets/icons/clipboard-check.svg +5 -0
  520. package/src/assets/icons/clipboard_text.svg +3 -0
  521. package/src/assets/icons/clock-history.svg +5 -0
  522. package/src/assets/icons/clock.svg +3 -0
  523. package/src/assets/icons/clock_countdown.svg +3 -0
  524. package/src/assets/icons/clock_loader_40.svg +8 -0
  525. package/src/assets/icons/close.svg +1 -0
  526. package/src/assets/icons/close_circle_fill.svg +4 -0
  527. package/src/assets/icons/collapse_all.svg +1 -0
  528. package/src/assets/icons/collapse_content.svg +8 -0
  529. package/src/assets/icons/collections_bookmark-fill.svg +1 -0
  530. package/src/assets/icons/collections_bookmark.svg +1 -0
  531. package/src/assets/icons/columns.svg +3 -0
  532. package/src/assets/icons/comment.svg +15 -0
  533. package/src/assets/icons/compare_arrows.svg +8 -0
  534. package/src/assets/icons/contact_page.svg +8 -0
  535. package/src/assets/icons/content_copy-fill.svg +1 -0
  536. package/src/assets/icons/content_copy.svg +8 -0
  537. package/src/assets/icons/copy.svg +3 -0
  538. package/src/assets/icons/copy_all.svg +8 -0
  539. package/src/assets/icons/copy_simple.svg +3 -0
  540. package/src/assets/icons/create_new_folder.svg +8 -0
  541. package/src/assets/icons/credit_card-fill.svg +1 -0
  542. package/src/assets/icons/credit_card.svg +8 -0
  543. package/src/assets/icons/credit_card_off-fill.svg +1 -0
  544. package/src/assets/icons/credit_card_off.svg +1 -0
  545. package/src/assets/icons/cube.svg +3 -0
  546. package/src/assets/icons/currency_circle_dollar.svg +3 -0
  547. package/src/assets/icons/cursor_click.svg +3 -0
  548. package/src/assets/icons/custom_dropdown.svg +8 -0
  549. package/src/assets/icons/dangerous.svg +8 -0
  550. package/src/assets/icons/darwinIcon.svg +4 -0
  551. package/src/assets/icons/dash-circle.svg +4 -0
  552. package/src/assets/icons/dashboard_customize.svg +8 -0
  553. package/src/assets/icons/data_object.svg +8 -0
  554. package/src/assets/icons/data_object_bold.svg +8 -0
  555. package/src/assets/icons/delete-fill.svg +1 -0
  556. package/src/assets/icons/delete.svg +8 -0
  557. package/src/assets/icons/demography.svg +8 -0
  558. package/src/assets/icons/derm-lesion.svg +4 -0
  559. package/src/assets/icons/derm-site.svg +3 -0
  560. package/src/assets/icons/description.svg +15 -0
  561. package/src/assets/icons/desktop_windows.svg +8 -0
  562. package/src/assets/icons/dialpad.svg +1 -0
  563. package/src/assets/icons/discover_tune.svg +1 -0
  564. package/src/assets/icons/do_not_disturb_off.svg +8 -0
  565. package/src/assets/icons/do_not_disturb_on.svg +8 -0
  566. package/src/assets/icons/document_scanner.svg +8 -0
  567. package/src/assets/icons/dollar_note.svg +8 -0
  568. package/src/assets/icons/domain.svg +8 -0
  569. package/src/assets/icons/done.svg +1 -0
  570. package/src/assets/icons/done_all.svg +8 -0
  571. package/src/assets/icons/dot.svg +3 -0
  572. package/src/assets/icons/dots_three.svg +3 -0
  573. package/src/assets/icons/double_arrow.svg +1 -0
  574. package/src/assets/icons/download.svg +8 -0
  575. package/src/assets/icons/draft.svg +8 -0
  576. package/src/assets/icons/drag_indicator.svg +1 -0
  577. package/src/assets/icons/draw.svg +3 -0
  578. package/src/assets/icons/drive_file_move.svg +1 -0
  579. package/src/assets/icons/eFax.svg +17 -0
  580. package/src/assets/icons/east.svg +8 -0
  581. package/src/assets/icons/ecg.svg +8 -0
  582. package/src/assets/icons/ecg_heart.svg +8 -0
  583. package/src/assets/icons/ed-doctor.svg +15 -0
  584. package/src/assets/icons/ed-event_history.svg +8 -0
  585. package/src/assets/icons/ed-form-disable.svg +9 -0
  586. package/src/assets/icons/ed-past_history.svg +9 -0
  587. package/src/assets/icons/ed-payment_history.svg +9 -0
  588. package/src/assets/icons/ed-receive.svg +9 -0
  589. package/src/assets/icons/ed-refund.svg +9 -0
  590. package/src/assets/icons/ed-regular-notes.svg +6 -0
  591. package/src/assets/icons/ed_transaction_download.svg +6 -0
  592. package/src/assets/icons/edit-fill.svg +1 -0
  593. package/src/assets/icons/edit.svg +15 -0
  594. package/src/assets/icons/edit_calendar.svg +8 -0
  595. package/src/assets/icons/edit_document.svg +8 -0
  596. package/src/assets/icons/edit_note.svg +1 -0
  597. package/src/assets/icons/edit_notifications-fill.svg +1 -0
  598. package/src/assets/icons/edit_notifications.svg +1 -0
  599. package/src/assets/icons/edit_square-fill.svg +1 -0
  600. package/src/assets/icons/edit_square.svg +1 -0
  601. package/src/assets/icons/edvak_icon.svg +12 -0
  602. package/src/assets/icons/email.svg +8 -0
  603. package/src/assets/icons/encounters_h.svg +3 -0
  604. package/src/assets/icons/endocrinology.svg +8 -0
  605. package/src/assets/icons/ent.svg +8 -0
  606. package/src/assets/icons/error.svg +8 -0
  607. package/src/assets/icons/erx.svg +8 -0
  608. package/src/assets/icons/event.svg +8 -0
  609. package/src/assets/icons/event_available-fill.svg +1 -0
  610. package/src/assets/icons/event_available.svg +1 -0
  611. package/src/assets/icons/event_busy.svg +8 -0
  612. package/src/assets/icons/event_upcoming.svg +1 -0
  613. package/src/assets/icons/expand_content.svg +8 -0
  614. package/src/assets/icons/expand_less.svg +8 -0
  615. package/src/assets/icons/expand_more.svg +8 -0
  616. package/src/assets/icons/expansion_panels.svg +3 -0
  617. package/src/assets/icons/export_notes.svg +8 -0
  618. package/src/assets/icons/favorite.svg +8 -0
  619. package/src/assets/icons/fax.svg +1 -0
  620. package/src/assets/icons/feedback.svg +3 -0
  621. package/src/assets/icons/fiber_manual_record.svg +15 -0
  622. package/src/assets/icons/fiber_smart_record.svg +8 -0
  623. package/src/assets/icons/file-arrow-up.svg +4 -0
  624. package/src/assets/icons/file_csv.svg +3 -0
  625. package/src/assets/icons/file_docx.svg +3 -0
  626. package/src/assets/icons/file_image.svg +3 -0
  627. package/src/assets/icons/file_jpg.svg +3 -0
  628. package/src/assets/icons/file_pdf.svg +3 -0
  629. package/src/assets/icons/file_png.svg +3 -0
  630. package/src/assets/icons/file_text_new.svg +3 -0
  631. package/src/assets/icons/file_xls.svg +3 -0
  632. package/src/assets/icons/files.svg +3 -0
  633. package/src/assets/icons/files_new.svg +3 -0
  634. package/src/assets/icons/filetype-pdf.svg +3 -0
  635. package/src/assets/icons/filter_alt.svg +8 -0
  636. package/src/assets/icons/flag.svg +3 -0
  637. package/src/assets/icons/flash_on.svg +22 -0
  638. package/src/assets/icons/flask.svg +3 -0
  639. package/src/assets/icons/floppy_disk_back.svg +3 -0
  640. package/src/assets/icons/folder.svg +8 -0
  641. package/src/assets/icons/folder_open.svg +8 -0
  642. package/src/assets/icons/folder_plus.svg +3 -0
  643. package/src/assets/icons/folder_simple.svg +4 -0
  644. package/src/assets/icons/folders.svg +3 -0
  645. package/src/assets/icons/format_align_center.svg +8 -0
  646. package/src/assets/icons/format_align_justify.svg +8 -0
  647. package/src/assets/icons/format_align_left.svg +8 -0
  648. package/src/assets/icons/format_align_right.svg +8 -0
  649. package/src/assets/icons/format_bold.svg +8 -0
  650. package/src/assets/icons/format_clear.svg +8 -0
  651. package/src/assets/icons/format_color_text.svg +8 -0
  652. package/src/assets/icons/format_ink_highlighter.svg +8 -0
  653. package/src/assets/icons/format_italic.svg +8 -0
  654. package/src/assets/icons/format_list_bulleted.svg +8 -0
  655. package/src/assets/icons/format_list_numbered.svg +8 -0
  656. package/src/assets/icons/format_underlined.svg +8 -0
  657. package/src/assets/icons/full_coverage.svg +1 -0
  658. package/src/assets/icons/funnel.svg +3 -0
  659. package/src/assets/icons/gastroenterology.svg +8 -0
  660. package/src/assets/icons/gavel.svg +3 -0
  661. package/src/assets/icons/gesture.svg +8 -0
  662. package/src/assets/icons/gift.svg +3 -0
  663. package/src/assets/icons/git_merge.svg +3 -0
  664. package/src/assets/icons/googleSync.svg +6 -0
  665. package/src/assets/icons/google_icon.svg +7 -0
  666. package/src/assets/icons/gpp_bad.svg +8 -0
  667. package/src/assets/icons/gpp_bad_fill.svg +8 -0
  668. package/src/assets/icons/gpp_maybe.svg +8 -0
  669. package/src/assets/icons/gpp_maybe_fill.svg +8 -0
  670. package/src/assets/icons/grab.svg +4 -0
  671. package/src/assets/icons/grabbing.svg +17 -0
  672. package/src/assets/icons/graph.svg +8 -0
  673. package/src/assets/icons/graph_new.svg +3 -0
  674. package/src/assets/icons/grid_view.svg +8 -0
  675. package/src/assets/icons/group.svg +8 -0
  676. package/src/assets/icons/group_n.svg +3 -0
  677. package/src/assets/icons/groups.svg +1 -0
  678. package/src/assets/icons/growth_chart_trend_down.svg +3 -0
  679. package/src/assets/icons/growth_chart_trend_grey_down.svg +3 -0
  680. package/src/assets/icons/growth_chart_trend_grey_up.svg +3 -0
  681. package/src/assets/icons/growth_chart_trend_up.svg +3 -0
  682. package/src/assets/icons/health_and_safety.svg +8 -0
  683. package/src/assets/icons/health_and_safety_fill.svg +8 -0
  684. package/src/assets/icons/heartbeat.svg +3 -0
  685. package/src/assets/icons/help.svg +8 -0
  686. package/src/assets/icons/hide_source.svg +1 -0
  687. package/src/assets/icons/history.svg +8 -0
  688. package/src/assets/icons/history_toggle_off.svg +8 -0
  689. package/src/assets/icons/home.svg +8 -0
  690. package/src/assets/icons/home_pin.svg +8 -0
  691. package/src/assets/icons/horizontal_rule.svg +8 -0
  692. package/src/assets/icons/hospital.svg +3 -0
  693. package/src/assets/icons/how_to_reg.svg +8 -0
  694. package/src/assets/icons/icon-128x128.png +0 -0
  695. package/src/assets/icons/icon-144x144.png +0 -0
  696. package/src/assets/icons/icon-152x152.png +0 -0
  697. package/src/assets/icons/icon-192x192.png +0 -0
  698. package/src/assets/icons/icon-384x384.png +0 -0
  699. package/src/assets/icons/icon-512x512.png +0 -0
  700. package/src/assets/icons/icon-72x72.png +0 -0
  701. package/src/assets/icons/icon-96x96.png +0 -0
  702. package/src/assets/icons/id_card.svg +8 -0
  703. package/src/assets/icons/identification_card.svg +3 -0
  704. package/src/assets/icons/imagesmode.svg +8 -0
  705. package/src/assets/icons/import.svg +4 -0
  706. package/src/assets/icons/inactive_user.svg +9 -0
  707. package/src/assets/icons/info-fill.svg +1 -0
  708. package/src/assets/icons/info-square.svg +4 -0
  709. package/src/assets/icons/info.svg +8 -0
  710. package/src/assets/icons/info_i.svg +1 -0
  711. package/src/assets/icons/inprogress.svg +3 -0
  712. package/src/assets/icons/insights.svg +1 -0
  713. package/src/assets/icons/inventory_2.svg +8 -0
  714. package/src/assets/icons/ios.svg +4 -0
  715. package/src/assets/icons/journal-plus.svg +5 -0
  716. package/src/assets/icons/journal-plus1.svg +5 -0
  717. package/src/assets/icons/keep.svg +8 -0
  718. package/src/assets/icons/key-person.svg +3 -0
  719. package/src/assets/icons/key.svg +1 -0
  720. package/src/assets/icons/keyboard_arrow_down-fill.svg +1 -0
  721. package/src/assets/icons/keyboard_arrow_down.svg +8 -0
  722. package/src/assets/icons/keyboard_arrow_left-fill.svg +1 -0
  723. package/src/assets/icons/keyboard_arrow_left.svg +15 -0
  724. package/src/assets/icons/keyboard_arrow_right-fill.svg +1 -0
  725. package/src/assets/icons/keyboard_arrow_right.svg +8 -0
  726. package/src/assets/icons/keyboard_arrow_up-fill.svg +1 -0
  727. package/src/assets/icons/keyboard_arrow_up.svg +8 -0
  728. package/src/assets/icons/keyboard_backspace.svg +1 -0
  729. package/src/assets/icons/keyboard_double_arrow_left.svg +8 -0
  730. package/src/assets/icons/keyboard_double_arrow_right.svg +8 -0
  731. package/src/assets/icons/keyboard_voice-fill.svg +1 -0
  732. package/src/assets/icons/keyboard_voice.svg +1 -0
  733. package/src/assets/icons/lab_profile-fill.svg +1 -0
  734. package/src/assets/icons/lab_profile.svg +8 -0
  735. package/src/assets/icons/label-tag.svg +9 -0
  736. package/src/assets/icons/label.svg +8 -0
  737. package/src/assets/icons/label_important.svg +8 -0
  738. package/src/assets/icons/labs.svg +15 -0
  739. package/src/assets/icons/language.svg +8 -0
  740. package/src/assets/icons/library.svg +8 -0
  741. package/src/assets/icons/lightning-charge-fill.svg +3 -0
  742. package/src/assets/icons/lightning.svg +3 -0
  743. package/src/assets/icons/link-45deg.svg +4 -0
  744. package/src/assets/icons/link-break.svg +3 -0
  745. package/src/assets/icons/link-simple-horizontal.svg +3 -0
  746. package/src/assets/icons/link_new.svg +3 -0
  747. package/src/assets/icons/list_checks.svg +3 -0
  748. package/src/assets/icons/list_magnifying_glass.svg +3 -0
  749. package/src/assets/icons/list_star.svg +3 -0
  750. package/src/assets/icons/local_activity.svg +8 -0
  751. package/src/assets/icons/local_atm.svg +8 -0
  752. package/src/assets/icons/local_pharmacy.svg +8 -0
  753. package/src/assets/icons/local_police.svg +1 -0
  754. package/src/assets/icons/local_post_office.svg +8 -0
  755. package/src/assets/icons/location_home.svg +8 -0
  756. package/src/assets/icons/location_off.svg +1 -0
  757. package/src/assets/icons/location_on-fill.svg +8 -0
  758. package/src/assets/icons/location_on.svg +8 -0
  759. package/src/assets/icons/lock-new.svg +25 -0
  760. package/src/assets/icons/lock.svg +8 -0
  761. package/src/assets/icons/lock_open_right.svg +1 -0
  762. package/src/assets/icons/lock_person.svg +8 -0
  763. package/src/assets/icons/logos_google-calendar.svg +17 -0
  764. package/src/assets/icons/logout.svg +1 -0
  765. package/src/assets/icons/magnifying_glass.svg +3 -0
  766. package/src/assets/icons/mail.svg +8 -0
  767. package/src/assets/icons/manage_accounts.svg +1 -0
  768. package/src/assets/icons/mark_chat_unread.svg +10 -0
  769. package/src/assets/icons/mask_group.svg +8 -0
  770. package/src/assets/icons/material-symbol-1.svg +5 -0
  771. package/src/assets/icons/material-symbol.svg +22 -0
  772. package/src/assets/icons/medication.svg +8 -0
  773. package/src/assets/icons/medication_liquid.svg +8 -0
  774. package/src/assets/icons/mic-300.svg +1 -0
  775. package/src/assets/icons/mic-fill.svg +1 -0
  776. package/src/assets/icons/mic.svg +8 -0
  777. package/src/assets/icons/mic_off-fill.svg +1 -0
  778. package/src/assets/icons/mic_off.svg +8 -0
  779. package/src/assets/icons/microscope_purple.svg +3 -0
  780. package/src/assets/icons/mingcute_user-3-fill.svg +4 -0
  781. package/src/assets/icons/minus.svg +8 -0
  782. package/src/assets/icons/missed_video_call-fill.svg +1 -0
  783. package/src/assets/icons/missed_video_call.svg +1 -0
  784. package/src/assets/icons/mode_comment.svg +8 -0
  785. package/src/assets/icons/monetization_on.svg +3 -0
  786. package/src/assets/icons/money-wavy.svg +3 -0
  787. package/src/assets/icons/monitor.svg +3 -0
  788. package/src/assets/icons/monitor_heart.svg +8 -0
  789. package/src/assets/icons/monitoring.svg +8 -0
  790. package/src/assets/icons/mood.svg +8 -0
  791. package/src/assets/icons/more_horiz.svg +8 -0
  792. package/src/assets/icons/more_vert.svg +8 -0
  793. package/src/assets/icons/morphology-icon.svg +19 -0
  794. package/src/assets/icons/motion_photos_paused.svg +8 -0
  795. package/src/assets/icons/move.svg +13 -0
  796. package/src/assets/icons/musculoskeletal.svg +11 -0
  797. package/src/assets/icons/neurology.svg +8 -0
  798. package/src/assets/icons/no_encryption.svg +1 -0
  799. package/src/assets/icons/no_insurance.svg +8 -0
  800. package/src/assets/icons/no_insurance_fill.svg +8 -0
  801. package/src/assets/icons/non_administered.svg +39 -0
  802. package/src/assets/icons/non_administered_new.svg +4 -0
  803. package/src/assets/icons/non_administered_v1.svg +7 -0
  804. package/src/assets/icons/not_allow.svg +8 -0
  805. package/src/assets/icons/not_allow_fill.svg +8 -0
  806. package/src/assets/icons/not_verified.svg +8 -0
  807. package/src/assets/icons/not_verified_fill.svg +8 -0
  808. package/src/assets/icons/note.svg +3 -0
  809. package/src/assets/icons/note_add.svg +8 -0
  810. package/src/assets/icons/note_pad.svg +3 -0
  811. package/src/assets/icons/note_pad_new.svg +3 -0
  812. package/src/assets/icons/note_stack.svg +8 -0
  813. package/src/assets/icons/notifications-fill.svg +1 -0
  814. package/src/assets/icons/notifications.svg +8 -0
  815. package/src/assets/icons/notifications_active-fill.svg +1 -0
  816. package/src/assets/icons/notifications_active.svg +8 -0
  817. package/src/assets/icons/notifications_off-fill.svg +1 -0
  818. package/src/assets/icons/notifications_off.svg +1 -0
  819. package/src/assets/icons/notifications_paused-fill.svg +1 -0
  820. package/src/assets/icons/notifications_paused.svg +1 -0
  821. package/src/assets/icons/offline_bolt.svg +8 -0
  822. package/src/assets/icons/open_in_full.svg +1 -0
  823. package/src/assets/icons/open_in_new.svg +8 -0
  824. package/src/assets/icons/order_approve.svg +8 -0
  825. package/src/assets/icons/overview.svg +8 -0
  826. package/src/assets/icons/paid.svg +8 -0
  827. package/src/assets/icons/paper-plane-right.svg +3 -0
  828. package/src/assets/icons/paper_claim.svg +8 -0
  829. package/src/assets/icons/paper_plane_tilt.svg +3 -0
  830. package/src/assets/icons/party_mode.svg +8 -0
  831. package/src/assets/icons/password_2.svg +8 -0
  832. package/src/assets/icons/patient-chart.svg +8 -0
  833. package/src/assets/icons/patient_list.svg +8 -0
  834. package/src/assets/icons/pause.svg +3 -0
  835. package/src/assets/icons/pause_circle.svg +8 -0
  836. package/src/assets/icons/payments.svg +1 -0
  837. package/src/assets/icons/pen_edit.svg +8 -0
  838. package/src/assets/icons/pencil-square.svg +4 -0
  839. package/src/assets/icons/pencil_simple.svg +3 -0
  840. package/src/assets/icons/pending.svg +3 -0
  841. package/src/assets/icons/people.svg +3 -0
  842. package/src/assets/icons/percent.svg +3 -0
  843. package/src/assets/icons/perm_phone_msg.svg +1 -0
  844. package/src/assets/icons/permissions.svg +18 -0
  845. package/src/assets/icons/person-bounding-box.svg +4 -0
  846. package/src/assets/icons/person-circle.svg +4 -0
  847. package/src/assets/icons/person-fill.svg +1 -0
  848. package/src/assets/icons/person-plus.svg +4 -0
  849. package/src/assets/icons/person-rolodex.svg +4 -0
  850. package/src/assets/icons/person-up.svg +4 -0
  851. package/src/assets/icons/person-vcard.svg +4 -0
  852. package/src/assets/icons/person.svg +3 -0
  853. package/src/assets/icons/person_2-fill.svg +1 -0
  854. package/src/assets/icons/person_2.svg +1 -0
  855. package/src/assets/icons/person_24dp_5F6368_FILL1_wght400_GRAD0_opsz24.svg +1 -0
  856. package/src/assets/icons/person_3-fill.svg +1 -0
  857. package/src/assets/icons/person_3.svg +1 -0
  858. package/src/assets/icons/person_4-fill.svg +1 -0
  859. package/src/assets/icons/person_4.svg +1 -0
  860. package/src/assets/icons/person_add-fill.svg +8 -0
  861. package/src/assets/icons/person_add.svg +8 -0
  862. package/src/assets/icons/person_remove.svg +8 -0
  863. package/src/assets/icons/personal_injury.svg +15 -0
  864. package/src/assets/icons/phone_call.svg +3 -0
  865. package/src/assets/icons/phone_callback-fill.svg +1 -0
  866. package/src/assets/icons/phone_callback.svg +1 -0
  867. package/src/assets/icons/phone_forwarded.svg +8 -0
  868. package/src/assets/icons/photo_camera.svg +8 -0
  869. package/src/assets/icons/photo_camera_fill.svg +8 -0
  870. package/src/assets/icons/pill.svg +3 -0
  871. package/src/assets/icons/pill_green.svg +3 -0
  872. package/src/assets/icons/pin.svg +8 -0
  873. package/src/assets/icons/pin_drop-fill.svg +1 -0
  874. package/src/assets/icons/pin_drop.svg +1 -0
  875. package/src/assets/icons/play_arrow.svg +8 -0
  876. package/src/assets/icons/play_circle.svg +3 -0
  877. package/src/assets/icons/plug-connection.svg +10 -0
  878. package/src/assets/icons/prescriptions.svg +8 -0
  879. package/src/assets/icons/preventive.svg +5 -0
  880. package/src/assets/icons/preview-fill.svg +1 -0
  881. package/src/assets/icons/preview.svg +1 -0
  882. package/src/assets/icons/price_change.svg +8 -0
  883. package/src/assets/icons/print.svg +8 -0
  884. package/src/assets/icons/printer.svg +4 -0
  885. package/src/assets/icons/priorAuth.svg +4 -0
  886. package/src/assets/icons/prior_auth.svg +4 -0
  887. package/src/assets/icons/priority.svg +3 -0
  888. package/src/assets/icons/problemsicon.svg +3 -0
  889. package/src/assets/icons/prohibit.svg +3 -0
  890. package/src/assets/icons/prompt_suggestion.svg +8 -0
  891. package/src/assets/icons/psychology.svg +8 -0
  892. package/src/assets/icons/pulmonology.svg +8 -0
  893. package/src/assets/icons/push_pin.svg +8 -0
  894. package/src/assets/icons/question_fill.svg +9 -0
  895. package/src/assets/icons/question_mark.svg +8 -0
  896. package/src/assets/icons/question_mark_fill.svg +9 -0
  897. package/src/assets/icons/quickreply.svg +8 -0
  898. package/src/assets/icons/radio_button_checked.svg +8 -0
  899. package/src/assets/icons/radio_button_unchecked.svg +8 -0
  900. package/src/assets/icons/radiology.svg +8 -0
  901. package/src/assets/icons/radiology_new.svg +8 -0
  902. package/src/assets/icons/receipt.svg +3 -0
  903. package/src/assets/icons/receipt_long.svg +15 -0
  904. package/src/assets/icons/receipt_x.svg +3 -0
  905. package/src/assets/icons/record-circle.svg +4 -0
  906. package/src/assets/icons/redo.svg +8 -0
  907. package/src/assets/icons/referral.svg +8 -0
  908. package/src/assets/icons/refresh.svg +8 -0
  909. package/src/assets/icons/refund.svg +10 -0
  910. package/src/assets/icons/reg-note.svg +8 -0
  911. package/src/assets/icons/reg-notes.svg +8 -0
  912. package/src/assets/icons/remove.svg +8 -0
  913. package/src/assets/icons/remove_moderator.svg +8 -0
  914. package/src/assets/icons/remove_moderator_fill.svg +8 -0
  915. package/src/assets/icons/reorder.svg +8 -0
  916. package/src/assets/icons/repeat.svg +8 -0
  917. package/src/assets/icons/replay.svg +8 -0
  918. package/src/assets/icons/request_quote.svg +8 -0
  919. package/src/assets/icons/roadmap.svg +3 -0
  920. package/src/assets/icons/rocket_launch.svg +8 -0
  921. package/src/assets/icons/rotate_left.svg +8 -0
  922. package/src/assets/icons/rotate_right.svg +1 -0
  923. package/src/assets/icons/rule_settings.svg +8 -0
  924. package/src/assets/icons/save.svg +1 -0
  925. package/src/assets/icons/scan.svg +3 -0
  926. package/src/assets/icons/scanner.svg +8 -0
  927. package/src/assets/icons/schedule.svg +8 -0
  928. package/src/assets/icons/search.svg +8 -0
  929. package/src/assets/icons/selection_all.svg +3 -0
  930. package/src/assets/icons/self_pay.svg +8 -0
  931. package/src/assets/icons/self_pay_fill.svg +8 -0
  932. package/src/assets/icons/send-fill.svg +1 -0
  933. package/src/assets/icons/send.svg +8 -0
  934. package/src/assets/icons/settings.svg +8 -0
  935. package/src/assets/icons/settings_applications.svg +8 -0
  936. package/src/assets/icons/shapes.svg +3 -0
  937. package/src/assets/icons/share.svg +1 -0
  938. package/src/assets/icons/shield.svg +3 -0
  939. package/src/assets/icons/shield_person.svg +8 -0
  940. package/src/assets/icons/shield_person_fill.svg +8 -0
  941. package/src/assets/icons/shield_plus.svg +3 -0
  942. package/src/assets/icons/shift_timing_activate.svg +5 -0
  943. package/src/assets/icons/shift_timing_deactivate.svg +5 -0
  944. package/src/assets/icons/sign.svg +3 -0
  945. package/src/assets/icons/signal_cellular_alt.svg +8 -0
  946. package/src/assets/icons/simple-notes.svg +8 -0
  947. package/src/assets/icons/skin.svg +11 -0
  948. package/src/assets/icons/smartphone.svg +8 -0
  949. package/src/assets/icons/smiley-angry-fill.svg +5 -0
  950. package/src/assets/icons/smiley-fill.svg +5 -0
  951. package/src/assets/icons/smiley-meh-fill.svg +5 -0
  952. package/src/assets/icons/smiley-nervous-fill.svg +5 -0
  953. package/src/assets/icons/sort.svg +8 -0
  954. package/src/assets/icons/sort_ascending.svg +12 -0
  955. package/src/assets/icons/sort_by_alpha.svg +8 -0
  956. package/src/assets/icons/sort_descending.svg +12 -0
  957. package/src/assets/icons/source_notes.svg +8 -0
  958. package/src/assets/icons/sparkle.svg +3 -0
  959. package/src/assets/icons/sparkle_gradient.svg +9 -0
  960. package/src/assets/icons/splitscreen_bottom.svg +8 -0
  961. package/src/assets/icons/sprint.svg +1 -0
  962. package/src/assets/icons/stack.svg +3 -0
  963. package/src/assets/icons/star-fill.svg +3 -0
  964. package/src/assets/icons/star.svg +3 -0
  965. package/src/assets/icons/stethoscope.svg +3 -0
  966. package/src/assets/icons/stethoscope_check.svg +8 -0
  967. package/src/assets/icons/stickies.svg +4 -0
  968. package/src/assets/icons/sticky_note_2.svg +8 -0
  969. package/src/assets/icons/stop_circle.svg +8 -0
  970. package/src/assets/icons/store.svg +8 -0
  971. package/src/assets/icons/straight.svg +3 -0
  972. package/src/assets/icons/strikethrough_s.svg +8 -0
  973. package/src/assets/icons/sub-task.svg +9 -0
  974. package/src/assets/icons/subdirectory_arrow_left.svg +8 -0
  975. package/src/assets/icons/subscript.svg +8 -0
  976. package/src/assets/icons/summarize.svg +8 -0
  977. package/src/assets/icons/superscript.svg +8 -0
  978. package/src/assets/icons/swap_calls.svg +1 -0
  979. package/src/assets/icons/swap_vert.svg +8 -0
  980. package/src/assets/icons/swipe_left_alt.svg +8 -0
  981. package/src/assets/icons/syringe.svg +3 -0
  982. package/src/assets/icons/table.svg +8 -0
  983. package/src/assets/icons/tag.svg +3 -0
  984. package/src/assets/icons/task.svg +8 -0
  985. package/src/assets/icons/telemedicine.svg +15 -0
  986. package/src/assets/icons/text_field.svg +4 -0
  987. package/src/assets/icons/thumbs_down.svg +3 -0
  988. package/src/assets/icons/thumbs_up.svg +3 -0
  989. package/src/assets/icons/thunder-big.svg +12 -0
  990. package/src/assets/icons/thunder.svg +12 -0
  991. package/src/assets/icons/tips_and_updates.svg +1 -0
  992. package/src/assets/icons/treatment.svg +5 -0
  993. package/src/assets/icons/trend_down.svg +3 -0
  994. package/src/assets/icons/tune.svg +8 -0
  995. package/src/assets/icons/turn_left.svg +1 -0
  996. package/src/assets/icons/turn_right.svg +8 -0
  997. package/src/assets/icons/u_turn_left.svg +1 -0
  998. package/src/assets/icons/u_turn_right.svg +1 -0
  999. package/src/assets/icons/unarchive.svg +8 -0
  1000. package/src/assets/icons/undo.svg +8 -0
  1001. package/src/assets/icons/unfold_more.svg +8 -0
  1002. package/src/assets/icons/universal-access.svg +3 -0
  1003. package/src/assets/icons/universal_currency_alt.svg +8 -0
  1004. package/src/assets/icons/up-arrow.svg +10 -0
  1005. package/src/assets/icons/update_disabled.svg +8 -0
  1006. package/src/assets/icons/upload.svg +8 -0
  1007. package/src/assets/icons/upload_file.svg +8 -0
  1008. package/src/assets/icons/upload_simple.svg +3 -0
  1009. package/src/assets/icons/urology.svg +8 -0
  1010. package/src/assets/icons/user_check.svg +3 -0
  1011. package/src/assets/icons/user_circle.svg +3 -0
  1012. package/src/assets/icons/user_minus.svg +3 -0
  1013. package/src/assets/icons/user_plus.svg +3 -0
  1014. package/src/assets/icons/users_three.svg +3 -0
  1015. package/src/assets/icons/vaccines.svg +8 -0
  1016. package/src/assets/icons/verified_user.svg +8 -0
  1017. package/src/assets/icons/verified_user_fill.svg +8 -0
  1018. package/src/assets/icons/video-camera.svg +3 -0
  1019. package/src/assets/icons/video_call-fill.svg +1 -0
  1020. package/src/assets/icons/video_call.svg +1 -0
  1021. package/src/assets/icons/videocam-fill.svg +1 -0
  1022. package/src/assets/icons/videocam.svg +8 -0
  1023. package/src/assets/icons/videocam_off-fill.svg +1 -0
  1024. package/src/assets/icons/videocam_off.svg +8 -0
  1025. package/src/assets/icons/view_week.svg +8 -0
  1026. package/src/assets/icons/virus.svg +3 -0
  1027. package/src/assets/icons/visibility-fill.svg +8 -0
  1028. package/src/assets/icons/visibility.svg +8 -0
  1029. package/src/assets/icons/visibility_off-fill.svg +8 -0
  1030. package/src/assets/icons/visibility_off.svg +8 -0
  1031. package/src/assets/icons/vpn_key.svg +10 -0
  1032. package/src/assets/icons/warning-fill.svg +1 -0
  1033. package/src/assets/icons/warning.svg +8 -0
  1034. package/src/assets/icons/warning_fill.svg +8 -0
  1035. package/src/assets/icons/water_drop.svg +8 -0
  1036. package/src/assets/icons/west.svg +8 -0
  1037. package/src/assets/icons/where_to_vote.svg +8 -0
  1038. package/src/assets/icons/widgets.svg +8 -0
  1039. package/src/assets/icons/writeOff.svg +4 -0
  1040. package/src/assets/icons/x-circle.svg +3 -0
  1041. package/src/assets/icons/x-square.svg +4 -0
  1042. package/src/assets/icons/zift.svg +19 -0
  1043. package/src/assets/image.jpg +0 -0
  1044. package/src/assets/images/AIUsage.png +0 -0
  1045. package/src/assets/images/Ai-S.svg +55 -0
  1046. package/src/assets/images/Ai.png +0 -0
  1047. package/src/assets/images/Aiusersbg.png +0 -0
  1048. package/src/assets/images/Android-Banner.png +0 -0
  1049. package/src/assets/images/Android.png +0 -0
  1050. package/src/assets/images/Animation.gif +0 -0
  1051. package/src/assets/images/Checkbox.png +0 -0
  1052. package/src/assets/images/Cytology_Findings.png +0 -0
  1053. package/src/assets/images/DTProjectPlan.pdf +0 -0
  1054. package/src/assets/images/Ed_New_sprite.svg +14 -0
  1055. package/src/assets/images/Ed_spriteuse.svg +979 -0
  1056. package/src/assets/images/Histopathology_Report.png +0 -0
  1057. package/src/assets/images/IOS.png +0 -0
  1058. package/src/assets/images/Im-logo.png +0 -0
  1059. package/src/assets/images/Immunohistochemistry_Results.png +0 -0
  1060. package/src/assets/images/Institutional_Billing.png +0 -0
  1061. package/src/assets/images/No collections.svg +62 -0
  1062. package/src/assets/images/PNG.png +0 -0
  1063. package/src/assets/images/Slovenian.jpg +0 -0
  1064. package/src/assets/images/Upload-file.svg +16 -0
  1065. package/src/assets/images/UserCircle.svg +3 -0
  1066. package/src/assets/images/access-granted.svg +1 -0
  1067. package/src/assets/images/activeAI.png +0 -0
  1068. package/src/assets/images/activeuserswitch.png +0 -0
  1069. package/src/assets/images/add_icon.png +0 -0
  1070. package/src/assets/images/allergy.svg +16 -0
  1071. package/src/assets/images/amex-card.svg +2 -0
  1072. package/src/assets/images/amex-new.svg +5 -0
  1073. package/src/assets/images/amex.svg +5 -0
  1074. package/src/assets/images/anatomy/Chin, neck front.png +0 -0
  1075. package/src/assets/images/anatomy/Female full body 1.jpg +0 -0
  1076. package/src/assets/images/anatomy/Head Back side.png +0 -0
  1077. package/src/assets/images/anatomy/Head Side Views.png +0 -0
  1078. package/src/assets/images/anatomy/Head Top View.png +0 -0
  1079. package/src/assets/images/anatomy/Male full body.png +0 -0
  1080. package/src/assets/images/android-kiosk.svg +2 -0
  1081. package/src/assets/images/app-banner.png +0 -0
  1082. package/src/assets/images/app-store.png +0 -0
  1083. package/src/assets/images/app-store.svg +8 -0
  1084. package/src/assets/images/banner/banner-1.jpg +0 -0
  1085. package/src/assets/images/banner/banner-2.jpg +0 -0
  1086. package/src/assets/images/banner/banner-3.jpg +0 -0
  1087. package/src/assets/images/banner/banner-4.jpg +0 -0
  1088. package/src/assets/images/banner/banner-5.jpg +0 -0
  1089. package/src/assets/images/banner/banner-bg.png +0 -0
  1090. package/src/assets/images/banner/banner_23-04-2026/Sparkle.svg +3 -0
  1091. package/src/assets/images/banner/banner_23-04-2026/icon1.svg +21 -0
  1092. package/src/assets/images/banner/banner_23-04-2026/icon2.svg +5 -0
  1093. package/src/assets/images/banner/banner_23-04-2026/icon3.svg +3 -0
  1094. package/src/assets/images/banner/banner_23-04-2026/image1.png +0 -0
  1095. package/src/assets/images/banner/banner_23-04-2026/image2.png +0 -0
  1096. package/src/assets/images/banner/banner_23-04-2026/image3.png +0 -0
  1097. package/src/assets/images/banner/banner_23-04-2026/image4.png +0 -0
  1098. package/src/assets/images/banner/banner_23-04-2026/image5.png +0 -0
  1099. package/src/assets/images/banner/banner_new/banner-bg.png +0 -0
  1100. package/src/assets/images/banner/banner_new/chart-simple.png +0 -0
  1101. package/src/assets/images/banner/banner_new/v2_img1.png +0 -0
  1102. package/src/assets/images/banner/banner_new/v2_img10.svg +10 -0
  1103. package/src/assets/images/banner/banner_new/v2_img11.svg +10 -0
  1104. package/src/assets/images/banner/banner_new/v2_img12.svg +10 -0
  1105. package/src/assets/images/banner/banner_new/v2_img13.svg +10 -0
  1106. package/src/assets/images/banner/banner_new/v2_img14.svg +3 -0
  1107. package/src/assets/images/banner/banner_new/v2_img15.svg +4 -0
  1108. package/src/assets/images/banner/banner_new/v2_img16.svg +10 -0
  1109. package/src/assets/images/banner/banner_new/v2_img17.svg +10 -0
  1110. package/src/assets/images/banner/banner_new/v2_img18.svg +10 -0
  1111. package/src/assets/images/banner/banner_new/v2_img19.svg +10 -0
  1112. package/src/assets/images/banner/banner_new/v2_img2.png +0 -0
  1113. package/src/assets/images/banner/banner_new/v2_img20.svg +3 -0
  1114. package/src/assets/images/banner/banner_new/v2_img3.png +0 -0
  1115. package/src/assets/images/banner/banner_new/v2_img4.png +0 -0
  1116. package/src/assets/images/banner/banner_new/v2_img5.svg +10 -0
  1117. package/src/assets/images/banner/banner_new/v2_img6.svg +13 -0
  1118. package/src/assets/images/banner/banner_new/v2_img7.svg +4 -0
  1119. package/src/assets/images/banner/banner_new/v2_img8.svg +3 -0
  1120. package/src/assets/images/banner/banner_new/v2_img9.svg +10 -0
  1121. package/src/assets/images/banner/banner_new10/app_store.png +0 -0
  1122. package/src/assets/images/banner/banner_new10/img_1.png +0 -0
  1123. package/src/assets/images/banner/banner_new10/img_2.png +0 -0
  1124. package/src/assets/images/banner/banner_new10/img_3.png +0 -0
  1125. package/src/assets/images/banner/banner_new10/img_4.png +0 -0
  1126. package/src/assets/images/banner/banner_new10/img_5.png +0 -0
  1127. package/src/assets/images/banner/banner_new10/img_6.png +0 -0
  1128. package/src/assets/images/banner/banner_new10/img_7.png +0 -0
  1129. package/src/assets/images/banner/banner_new10/play_store.png +0 -0
  1130. package/src/assets/images/banner/banner_new10/svg_1.svg +10 -0
  1131. package/src/assets/images/banner/banner_new10/svg_10.svg +10 -0
  1132. package/src/assets/images/banner/banner_new10/svg_2.svg +10 -0
  1133. package/src/assets/images/banner/banner_new10/svg_3.svg +10 -0
  1134. package/src/assets/images/banner/banner_new10/svg_4.svg +12 -0
  1135. package/src/assets/images/banner/banner_new10/svg_5.svg +10 -0
  1136. package/src/assets/images/banner/banner_new10/svg_6.svg +10 -0
  1137. package/src/assets/images/banner/banner_new10/svg_7.svg +10 -0
  1138. package/src/assets/images/banner/banner_new10/svg_8.svg +10 -0
  1139. package/src/assets/images/banner/banner_new10/svg_9.svg +10 -0
  1140. package/src/assets/images/banner/banner_new3/CurrencyDollarSimple.svg +3 -0
  1141. package/src/assets/images/banner/banner_new3/IdentificationCard.svg +3 -0
  1142. package/src/assets/images/banner/banner_new3/ListNumbers.svg +3 -0
  1143. package/src/assets/images/banner/banner_new3/Wrench.svg +3 -0
  1144. package/src/assets/images/banner/banner_new3/assessment 1.svg +10 -0
  1145. package/src/assets/images/banner/banner_new3/calendar-check 1.svg +10 -0
  1146. package/src/assets/images/banner/banner_new3/fax (2) 1.svg +10 -0
  1147. package/src/assets/images/banner/banner_new3/v3_img1.png +0 -0
  1148. package/src/assets/images/banner/banner_new3/v3_img10.png +0 -0
  1149. package/src/assets/images/banner/banner_new3/v3_img11.png +0 -0
  1150. package/src/assets/images/banner/banner_new3/v3_img2.png +0 -0
  1151. package/src/assets/images/banner/banner_new3/v3_img3.png +0 -0
  1152. package/src/assets/images/banner/banner_new3/v3_img4.png +0 -0
  1153. package/src/assets/images/banner/banner_new3/v3_img5.png +0 -0
  1154. package/src/assets/images/banner/banner_new3/v3_img6.png +0 -0
  1155. package/src/assets/images/banner/banner_new3/v3_img7.png +0 -0
  1156. package/src/assets/images/banner/banner_new3/v3_img8.png +0 -0
  1157. package/src/assets/images/banner/banner_new3/v3_img9.png +0 -0
  1158. package/src/assets/images/banner/banner_new4/v4_img1.png +0 -0
  1159. package/src/assets/images/banner/banner_new4/v4_img2.png +0 -0
  1160. package/src/assets/images/banner/banner_new4/v4_img3.png +0 -0
  1161. package/src/assets/images/banner/banner_new4/v4_img4.png +0 -0
  1162. package/src/assets/images/banner/banner_new4/v4_img5.png +0 -0
  1163. package/src/assets/images/banner/banner_new4/v4_svg1.svg +3 -0
  1164. package/src/assets/images/banner/banner_new4/v4_svg2.svg +3 -0
  1165. package/src/assets/images/banner/banner_new4/v4_svg3.svg +10 -0
  1166. package/src/assets/images/banner/banner_new4/v4_svg4.svg +3 -0
  1167. package/src/assets/images/banner/banner_new4/v4_svg5.svg +3 -0
  1168. package/src/assets/images/banner/banner_new4/v4_svg6.svg +3 -0
  1169. package/src/assets/images/banner/banner_new5/Wrench.svg +3 -0
  1170. package/src/assets/images/banner/banner_new5/img_1.png +0 -0
  1171. package/src/assets/images/banner/banner_new5/img_2.png +0 -0
  1172. package/src/assets/images/banner/banner_new5/img_3.png +0 -0
  1173. package/src/assets/images/banner/banner_new5/img_4.png +0 -0
  1174. package/src/assets/images/banner/banner_new5/img_5.png +0 -0
  1175. package/src/assets/images/banner/banner_new6/app_store.png +0 -0
  1176. package/src/assets/images/banner/banner_new6/img_1.png +0 -0
  1177. package/src/assets/images/banner/banner_new6/img_2.png +0 -0
  1178. package/src/assets/images/banner/banner_new6/img_3.png +0 -0
  1179. package/src/assets/images/banner/banner_new6/img_4.png +0 -0
  1180. package/src/assets/images/banner/banner_new6/img_5.png +0 -0
  1181. package/src/assets/images/banner/banner_new6/img_6.png +0 -0
  1182. package/src/assets/images/banner/banner_new6/improvements/add-document.svg +10 -0
  1183. package/src/assets/images/banner/banner_new6/improvements/attribution-pencil.svg +10 -0
  1184. package/src/assets/images/banner/banner_new6/improvements/bell-notification.svg +10 -0
  1185. package/src/assets/images/banner/banner_new6/improvements/billing-header.svg +10 -0
  1186. package/src/assets/images/banner/banner_new6/improvements/binary.svg +10 -0
  1187. package/src/assets/images/banner/banner_new6/improvements/box-dollar.svg +10 -0
  1188. package/src/assets/images/banner/banner_new6/improvements/check-circle.svg +10 -0
  1189. package/src/assets/images/banner/banner_new6/improvements/clinical-header.svg +10 -0
  1190. package/src/assets/images/banner/banner_new6/improvements/credit-security.svg +10 -0
  1191. package/src/assets/images/banner/banner_new6/improvements/document-circle-wrong.svg +10 -0
  1192. package/src/assets/images/banner/banner_new6/improvements/fax.svg +10 -0
  1193. package/src/assets/images/banner/banner_new6/improvements/file-prescription.svg +10 -0
  1194. package/src/assets/images/banner/banner_new6/improvements/map-marker-check.svg +10 -0
  1195. package/src/assets/images/banner/banner_new6/improvements/marker.svg +10 -0
  1196. package/src/assets/images/banner/banner_new6/improvements/member-search.svg +10 -0
  1197. package/src/assets/images/banner/banner_new6/improvements/memo-circle-check-2.svg +10 -0
  1198. package/src/assets/images/banner/banner_new6/improvements/memo-circle-check.svg +10 -0
  1199. package/src/assets/images/banner/banner_new6/improvements/others-header.svg +10 -0
  1200. package/src/assets/images/banner/banner_new6/improvements/paper-plane.svg +6 -0
  1201. package/src/assets/images/banner/banner_new6/improvements/payroll-calendar.svg +10 -0
  1202. package/src/assets/images/banner/banner_new6/improvements/payroll-check.svg +5 -0
  1203. package/src/assets/images/banner/banner_new6/improvements/receipt.svg +10 -0
  1204. package/src/assets/images/banner/banner_new6/improvements/referrals-header.svg +10 -0
  1205. package/src/assets/images/banner/banner_new6/improvements/reminder-appointment.svg +10 -0
  1206. package/src/assets/images/banner/banner_new6/improvements/scheduling-header.svg +10 -0
  1207. package/src/assets/images/banner/banner_new6/improvements/settings.svg +5 -0
  1208. package/src/assets/images/banner/banner_new6/improvements/subscription-alt.svg +10 -0
  1209. package/src/assets/images/banner/banner_new6/improvements/tasks.svg +10 -0
  1210. package/src/assets/images/banner/banner_new6/improvements/time-check.svg +11 -0
  1211. package/src/assets/images/banner/banner_new6/play_store.png +0 -0
  1212. package/src/assets/images/banner/banner_new7/img_1.png +0 -0
  1213. package/src/assets/images/banner/banner_new7/img_2.png +0 -0
  1214. package/src/assets/images/banner/banner_new7/img_3.png +0 -0
  1215. package/src/assets/images/banner/banner_new7/img_4.png +0 -0
  1216. package/src/assets/images/banner/banner_new7/img_5.png +0 -0
  1217. package/src/assets/images/banner/banner_new7/img_6.png +0 -0
  1218. package/src/assets/images/banner/banner_new8/img_1.png +0 -0
  1219. package/src/assets/images/banner/banner_new8/img_2.png +0 -0
  1220. package/src/assets/images/banner/banner_new8/img_3.png +0 -0
  1221. package/src/assets/images/banner/banner_new8/img_4.png +0 -0
  1222. package/src/assets/images/banner/banner_new8/improvements/compliance-document.svg +10 -0
  1223. package/src/assets/images/banner/banner_new8/improvements/envelope-open-text.svg +10 -0
  1224. package/src/assets/images/banner/banner_new8/improvements/fax.svg +10 -0
  1225. package/src/assets/images/banner/banner_new8/improvements/file-invoice-dollar.svg +10 -0
  1226. package/src/assets/images/banner/banner_new8/improvements/file-signature.svg +10 -0
  1227. package/src/assets/images/banner/banner_new8/improvements/settings.svg +10 -0
  1228. package/src/assets/images/banner/banner_new8/improvements/social-media-notification.svg +10 -0
  1229. package/src/assets/images/banner/banner_new8/svg_1.svg +10 -0
  1230. package/src/assets/images/banner/banner_new8/svg_2.svg +10 -0
  1231. package/src/assets/images/banner/banner_new8/svg_3.svg +3 -0
  1232. package/src/assets/images/banner/banner_new8/svg_4.svg +10 -0
  1233. package/src/assets/images/banner/banner_new8/svg_5.svg +10 -0
  1234. package/src/assets/images/banner/banner_new8/svg_6.svg +12 -0
  1235. package/src/assets/images/banner/banner_new9/img_1.png +0 -0
  1236. package/src/assets/images/banner/banner_new9/img_2.png +0 -0
  1237. package/src/assets/images/banner/banner_new9/img_3.png +0 -0
  1238. package/src/assets/images/banner/banner_new9/img_4.png +0 -0
  1239. package/src/assets/images/banner/banner_new9/img_5.full.png +0 -0
  1240. package/src/assets/images/banner/banner_new9/img_5.png +0 -0
  1241. package/src/assets/images/banner/banner_new9/svg_10.svg +10 -0
  1242. package/src/assets/images/banner/banner_new9/svg_11.svg +10 -0
  1243. package/src/assets/images/banner/banner_new9/svg_12.svg +10 -0
  1244. package/src/assets/images/banner/banner_new9/svg_13.svg +10 -0
  1245. package/src/assets/images/banner/banner_new9/svg_3.svg +3 -0
  1246. package/src/assets/images/banner/banner_new9/svg_5.svg +10 -0
  1247. package/src/assets/images/banner/banner_new9/svg_6.svg +12 -0
  1248. package/src/assets/images/banner/banner_new9/svg_7.svg +10 -0
  1249. package/src/assets/images/banner/banner_new9/svg_8.svg +15 -0
  1250. package/src/assets/images/banner/banner_new9/svg_9.svg +10 -0
  1251. package/src/assets/images/banner/confetti.gif +0 -0
  1252. package/src/assets/images/banner/v2_img1.png +0 -0
  1253. package/src/assets/images/banner/v2_img10.svg +11 -0
  1254. package/src/assets/images/banner/v2_img11.png +0 -0
  1255. package/src/assets/images/banner/v2_img12.png +0 -0
  1256. package/src/assets/images/banner/v2_img2.png +0 -0
  1257. package/src/assets/images/banner/v2_img3.png +0 -0
  1258. package/src/assets/images/banner/v2_img4.png +0 -0
  1259. package/src/assets/images/banner/v2_img5.svg +11 -0
  1260. package/src/assets/images/banner/v2_img6.svg +11 -0
  1261. package/src/assets/images/banner/v2_img7.svg +13 -0
  1262. package/src/assets/images/banner/v2_img8.svg +11 -0
  1263. package/src/assets/images/banner/v2_img9.svg +11 -0
  1264. package/src/assets/images/barcode-1.png +0 -0
  1265. package/src/assets/images/barcode.png +0 -0
  1266. package/src/assets/images/bgstrips -1.svg +30 -0
  1267. package/src/assets/images/bgstrips.svg +40 -0
  1268. package/src/assets/images/big-blob.webm +0 -0
  1269. package/src/assets/images/blood-test.svg +13 -0
  1270. package/src/assets/images/blue-stripes.svg +12 -0
  1271. package/src/assets/images/body-map-back.png +0 -0
  1272. package/src/assets/images/body-map-front.png +0 -0
  1273. package/src/assets/images/bolt_ai.svg +3 -0
  1274. package/src/assets/images/box_edit.svg +8 -0
  1275. package/src/assets/images/broken-link-new.png +0 -0
  1276. package/src/assets/images/broken-link.svg +1 -0
  1277. package/src/assets/images/bubble_chart.png +0 -0
  1278. package/src/assets/images/cam.svg +3 -0
  1279. package/src/assets/images/camera-icon.png +0 -0
  1280. package/src/assets/images/camera_1.jpg +0 -0
  1281. package/src/assets/images/card-1.svg +9 -0
  1282. package/src/assets/images/card-2.svg +9 -0
  1283. package/src/assets/images/card-3.svg +9 -0
  1284. package/src/assets/images/card-4.svg +9 -0
  1285. package/src/assets/images/card-5.svg +9 -0
  1286. package/src/assets/images/card-6.svg +9 -0
  1287. package/src/assets/images/cards.png +0 -0
  1288. package/src/assets/images/carelink-carequality.png +0 -0
  1289. package/src/assets/images/carelink-halftone-bg.jpg +0 -0
  1290. package/src/assets/images/carelink-img.png +0 -0
  1291. package/src/assets/images/carelink-logo.svg +9 -0
  1292. package/src/assets/images/carelink-tefca.png +0 -0
  1293. package/src/assets/images/cash-Cancelled.svg +20 -0
  1294. package/src/assets/images/cash.svg +1 -0
  1295. package/src/assets/images/celebrations.png +0 -0
  1296. package/src/assets/images/chatClose.png +0 -0
  1297. package/src/assets/images/check_fill2.svg +4 -0
  1298. package/src/assets/images/cirrus-card.svg +51 -0
  1299. package/src/assets/images/clearing-1.png +0 -0
  1300. package/src/assets/images/clearing-2.png +0 -0
  1301. package/src/assets/images/compare_arrows.svg +8 -0
  1302. package/src/assets/images/darwinAskIcon.png +0 -0
  1303. package/src/assets/images/data_object_content.svg +9 -0
  1304. package/src/assets/images/deadline.svg +1 -0
  1305. package/src/assets/images/del-1.png +0 -0
  1306. package/src/assets/images/del-2.png +0 -0
  1307. package/src/assets/images/del-3.png +0 -0
  1308. package/src/assets/images/desktop-view.svg +78 -0
  1309. package/src/assets/images/detecting.svg +28 -0
  1310. package/src/assets/images/discover-card.svg +9 -0
  1311. package/src/assets/images/discover-new.svg +9 -0
  1312. package/src/assets/images/discover.svg +9 -0
  1313. package/src/assets/images/dollar-symbol.svg +1 -0
  1314. package/src/assets/images/dots-loader.svg +1 -0
  1315. package/src/assets/images/down_arrow.png +0 -0
  1316. package/src/assets/images/drag.png +0 -0
  1317. package/src/assets/images/dribbble.webp +0 -0
  1318. package/src/assets/images/drop-bg.svg +3 -0
  1319. package/src/assets/images/dummy-image.png +0 -0
  1320. package/src/assets/images/duration.svg +3 -0
  1321. package/src/assets/images/e-img.png +0 -0
  1322. package/src/assets/images/eCareHub.svg +10 -0
  1323. package/src/assets/images/ecarehub_logo.svg +9 -0
  1324. package/src/assets/images/edvak_logo.svg +11 -0
  1325. package/src/assets/images/edvak_logo_temp.svg +9 -0
  1326. package/src/assets/images/edvak_logo_temp1.svg +9 -0
  1327. package/src/assets/images/edvaklogo-old.svg +9 -0
  1328. package/src/assets/images/edvaklogo.svg +5 -0
  1329. package/src/assets/images/emptry-list.svg +59 -0
  1330. package/src/assets/images/empty-list.svg +59 -0
  1331. package/src/assets/images/empty-list2.svg +52 -0
  1332. package/src/assets/images/failed.png +0 -0
  1333. package/src/assets/images/fax-1.svg +8 -0
  1334. package/src/assets/images/fax-2.svg +8 -0
  1335. package/src/assets/images/fax_restore.png +0 -0
  1336. package/src/assets/images/file-pdf.png +0 -0
  1337. package/src/assets/images/file.svg +1 -0
  1338. package/src/assets/images/file_csv.svg +14 -0
  1339. package/src/assets/images/file_xlsx.svg +15 -0
  1340. package/src/assets/images/flash.svg +3 -0
  1341. package/src/assets/images/folder.png +0 -0
  1342. package/src/assets/images/folder.svg +1 -0
  1343. package/src/assets/images/footer-line.jpg +0 -0
  1344. package/src/assets/images/formNoteIcon.svg +15 -0
  1345. package/src/assets/images/gettingstarted.svg +9 -0
  1346. package/src/assets/images/google-store.png +0 -0
  1347. package/src/assets/images/google-store.svg +10 -0
  1348. package/src/assets/images/graph-chart.png +0 -0
  1349. package/src/assets/images/graph-dec.svg +9 -0
  1350. package/src/assets/images/graph-inc.svg +9 -0
  1351. package/src/assets/images/graphic.svg +8 -0
  1352. package/src/assets/images/handheld-connected.svg +9 -0
  1353. package/src/assets/images/handheld-not-connected.svg +9 -0
  1354. package/src/assets/images/health-care-logo.svg +13 -0
  1355. package/src/assets/images/healthcare-bg.png +0 -0
  1356. package/src/assets/images/healthcare-logo.svg +27 -0
  1357. package/src/assets/images/heart-attack.svg +1 -0
  1358. package/src/assets/images/hover_add_icon.png +0 -0
  1359. package/src/assets/images/iOS-Banner.png +0 -0
  1360. package/src/assets/images/icons/material-symbols/300/rounded/add.svg +1 -0
  1361. package/src/assets/images/icons/material-symbols/300/rounded/add_box-fill.svg +1 -0
  1362. package/src/assets/images/icons/material-symbols/300/rounded/add_box.svg +1 -0
  1363. package/src/assets/images/icons/material-symbols/300/rounded/add_call-fill.svg +1 -0
  1364. package/src/assets/images/icons/material-symbols/300/rounded/add_call.svg +1 -0
  1365. package/src/assets/images/icons/material-symbols/300/rounded/add_reaction.svg +8 -0
  1366. package/src/assets/images/icons/material-symbols/300/rounded/alternate_email.svg +8 -0
  1367. package/src/assets/images/icons/material-symbols/300/rounded/arrow_left.svg +1 -0
  1368. package/src/assets/images/icons/material-symbols/300/rounded/arrow_left_alt.svg +1 -0
  1369. package/src/assets/images/icons/material-symbols/300/rounded/attach_file-fill.svg +1 -0
  1370. package/src/assets/images/icons/material-symbols/300/rounded/attach_file.svg +1 -0
  1371. package/src/assets/images/icons/material-symbols/300/rounded/attach_file_add-fill.svg +1 -0
  1372. package/src/assets/images/icons/material-symbols/300/rounded/attach_file_add.svg +1 -0
  1373. package/src/assets/images/icons/material-symbols/300/rounded/attach_money-fill.svg +1 -0
  1374. package/src/assets/images/icons/material-symbols/300/rounded/attach_money.svg +1 -0
  1375. package/src/assets/images/icons/material-symbols/300/rounded/auto_awesome_mosaic-fill.svg +1 -0
  1376. package/src/assets/images/icons/material-symbols/300/rounded/auto_awesome_mosaic.svg +1 -0
  1377. package/src/assets/images/icons/material-symbols/300/rounded/border_color-fill.svg +1 -0
  1378. package/src/assets/images/icons/material-symbols/300/rounded/border_color.svg +1 -0
  1379. package/src/assets/images/icons/material-symbols/300/rounded/cac.svg +1 -0
  1380. package/src/assets/images/icons/material-symbols/300/rounded/cached.svg +8 -0
  1381. package/src/assets/images/icons/material-symbols/300/rounded/calculate-fill.svg +1 -0
  1382. package/src/assets/images/icons/material-symbols/300/rounded/calculate.svg +1 -0
  1383. package/src/assets/images/icons/material-symbols/300/rounded/calendar_add_on-fill.svg +1 -0
  1384. package/src/assets/images/icons/material-symbols/300/rounded/calendar_add_on.svg +1 -0
  1385. package/src/assets/images/icons/material-symbols/300/rounded/calendar_month.svg +1 -0
  1386. package/src/assets/images/icons/material-symbols/300/rounded/calendar_today-fill.svg +1 -0
  1387. package/src/assets/images/icons/material-symbols/300/rounded/calendar_today.svg +1 -0
  1388. package/src/assets/images/icons/material-symbols/300/rounded/call-fill.svg +1 -0
  1389. package/src/assets/images/icons/material-symbols/300/rounded/call.svg +1 -0
  1390. package/src/assets/images/icons/material-symbols/300/rounded/call_received-fill.svg +1 -0
  1391. package/src/assets/images/icons/material-symbols/300/rounded/call_received.svg +1 -0
  1392. package/src/assets/images/icons/material-symbols/300/rounded/chart_data-fill.svg +1 -0
  1393. package/src/assets/images/icons/material-symbols/300/rounded/chart_data.svg +1 -0
  1394. package/src/assets/images/icons/material-symbols/300/rounded/chat.svg +1 -0
  1395. package/src/assets/images/icons/material-symbols/300/rounded/chat_bubble.svg +8 -0
  1396. package/src/assets/images/icons/material-symbols/300/rounded/check-fill.svg +1 -0
  1397. package/src/assets/images/icons/material-symbols/300/rounded/check.svg +1 -0
  1398. package/src/assets/images/icons/material-symbols/300/rounded/check_circle-fill.svg +1 -0
  1399. package/src/assets/images/icons/material-symbols/300/rounded/check_circle.svg +1 -0
  1400. package/src/assets/images/icons/material-symbols/300/rounded/chevron_left-fill.svg +1 -0
  1401. package/src/assets/images/icons/material-symbols/300/rounded/chevron_left.svg +1 -0
  1402. package/src/assets/images/icons/material-symbols/300/rounded/chevron_right-fill.svg +1 -0
  1403. package/src/assets/images/icons/material-symbols/300/rounded/chevron_right.svg +1 -0
  1404. package/src/assets/images/icons/material-symbols/300/rounded/close-fill.svg +1 -0
  1405. package/src/assets/images/icons/material-symbols/300/rounded/close.svg +1 -0
  1406. package/src/assets/images/icons/material-symbols/300/rounded/collections_bookmark-fill.svg +1 -0
  1407. package/src/assets/images/icons/material-symbols/300/rounded/collections_bookmark.svg +1 -0
  1408. package/src/assets/images/icons/material-symbols/300/rounded/contact_page-fill.svg +1 -0
  1409. package/src/assets/images/icons/material-symbols/300/rounded/contact_page.svg +1 -0
  1410. package/src/assets/images/icons/material-symbols/300/rounded/create_new_folder-fill.svg +1 -0
  1411. package/src/assets/images/icons/material-symbols/300/rounded/create_new_folder.svg +1 -0
  1412. package/src/assets/images/icons/material-symbols/300/rounded/credit_card-fill.svg +1 -0
  1413. package/src/assets/images/icons/material-symbols/300/rounded/credit_card.svg +1 -0
  1414. package/src/assets/images/icons/material-symbols/300/rounded/credit_card_off-fill.svg +1 -0
  1415. package/src/assets/images/icons/material-symbols/300/rounded/credit_card_off.svg +1 -0
  1416. package/src/assets/images/icons/material-symbols/300/rounded/data_object-fill.svg +1 -0
  1417. package/src/assets/images/icons/material-symbols/300/rounded/data_object.svg +1 -0
  1418. package/src/assets/images/icons/material-symbols/300/rounded/delete-fill.svg +1 -0
  1419. package/src/assets/images/icons/material-symbols/300/rounded/delete.svg +1 -0
  1420. package/src/assets/images/icons/material-symbols/300/rounded/description-fill.svg +1 -0
  1421. package/src/assets/images/icons/material-symbols/300/rounded/description.svg +1 -0
  1422. package/src/assets/images/icons/material-symbols/300/rounded/dialpad-fill.svg +1 -0
  1423. package/src/assets/images/icons/material-symbols/300/rounded/dialpad.svg +1 -0
  1424. package/src/assets/images/icons/material-symbols/300/rounded/do_not_disturb_off-fill.svg +1 -0
  1425. package/src/assets/images/icons/material-symbols/300/rounded/do_not_disturb_off.svg +1 -0
  1426. package/src/assets/images/icons/material-symbols/300/rounded/do_not_disturb_on-fill.svg +1 -0
  1427. package/src/assets/images/icons/material-symbols/300/rounded/do_not_disturb_on.svg +1 -0
  1428. package/src/assets/images/icons/material-symbols/300/rounded/do_not_disturb_on_total_silence-fill.svg +1 -0
  1429. package/src/assets/images/icons/material-symbols/300/rounded/do_not_disturb_on_total_silence.svg +1 -0
  1430. package/src/assets/images/icons/material-symbols/300/rounded/done-fill.svg +1 -0
  1431. package/src/assets/images/icons/material-symbols/300/rounded/done.svg +1 -0
  1432. package/src/assets/images/icons/material-symbols/300/rounded/door_open-fill.svg +1 -0
  1433. package/src/assets/images/icons/material-symbols/300/rounded/door_open.svg +1 -0
  1434. package/src/assets/images/icons/material-symbols/300/rounded/download-fill.svg +1 -0
  1435. package/src/assets/images/icons/material-symbols/300/rounded/download.svg +1 -0
  1436. package/src/assets/images/icons/material-symbols/300/rounded/draft-fill.svg +1 -0
  1437. package/src/assets/images/icons/material-symbols/300/rounded/draft.svg +1 -0
  1438. package/src/assets/images/icons/material-symbols/300/rounded/drag_indicator-fill.svg +1 -0
  1439. package/src/assets/images/icons/material-symbols/300/rounded/drag_indicator.svg +1 -0
  1440. package/src/assets/images/icons/material-symbols/300/rounded/drag_pan-fill.svg +1 -0
  1441. package/src/assets/images/icons/material-symbols/300/rounded/drag_pan.svg +1 -0
  1442. package/src/assets/images/icons/material-symbols/300/rounded/east-fill.svg +1 -0
  1443. package/src/assets/images/icons/material-symbols/300/rounded/east.svg +1 -0
  1444. package/src/assets/images/icons/material-symbols/300/rounded/edit-fill.svg +1 -0
  1445. package/src/assets/images/icons/material-symbols/300/rounded/edit.svg +1 -0
  1446. package/src/assets/images/icons/material-symbols/300/rounded/edit_note-fill.svg +1 -0
  1447. package/src/assets/images/icons/material-symbols/300/rounded/edit_note.svg +1 -0
  1448. package/src/assets/images/icons/material-symbols/300/rounded/edit_square-fill.svg +1 -0
  1449. package/src/assets/images/icons/material-symbols/300/rounded/edit_square.svg +1 -0
  1450. package/src/assets/images/icons/material-symbols/300/rounded/error-fill.svg +1 -0
  1451. package/src/assets/images/icons/material-symbols/300/rounded/error.svg +1 -0
  1452. package/src/assets/images/icons/material-symbols/300/rounded/expand_more-fill.svg +1 -0
  1453. package/src/assets/images/icons/material-symbols/300/rounded/expand_more.svg +1 -0
  1454. package/src/assets/images/icons/material-symbols/300/rounded/folder-fill.svg +1 -0
  1455. package/src/assets/images/icons/material-symbols/300/rounded/folder.svg +1 -0
  1456. package/src/assets/images/icons/material-symbols/300/rounded/graphic_eq-fill.svg +1 -0
  1457. package/src/assets/images/icons/material-symbols/300/rounded/graphic_eq.svg +1 -0
  1458. package/src/assets/images/icons/material-symbols/300/rounded/handyman-fill.svg +1 -0
  1459. package/src/assets/images/icons/material-symbols/300/rounded/handyman.svg +1 -0
  1460. package/src/assets/images/icons/material-symbols/300/rounded/help-fill.svg +1 -0
  1461. package/src/assets/images/icons/material-symbols/300/rounded/help.svg +1 -0
  1462. package/src/assets/images/icons/material-symbols/300/rounded/history-fill.svg +1 -0
  1463. package/src/assets/images/icons/material-symbols/300/rounded/history.svg +1 -0
  1464. package/src/assets/images/icons/material-symbols/300/rounded/history_toggle_off-fill.svg +1 -0
  1465. package/src/assets/images/icons/material-symbols/300/rounded/history_toggle_off.svg +1 -0
  1466. package/src/assets/images/icons/material-symbols/300/rounded/house_with_shield-fill.svg +1 -0
  1467. package/src/assets/images/icons/material-symbols/300/rounded/house_with_shield.svg +1 -0
  1468. package/src/assets/images/icons/material-symbols/300/rounded/info-fill.svg +1 -0
  1469. package/src/assets/images/icons/material-symbols/300/rounded/info.svg +1 -0
  1470. package/src/assets/images/icons/material-symbols/300/rounded/info_i-fill.svg +1 -0
  1471. package/src/assets/images/icons/material-symbols/300/rounded/info_i.svg +1 -0
  1472. package/src/assets/images/icons/material-symbols/300/rounded/keep.svg +8 -0
  1473. package/src/assets/images/icons/material-symbols/300/rounded/key-fill.svg +1 -0
  1474. package/src/assets/images/icons/material-symbols/300/rounded/key.svg +1 -0
  1475. package/src/assets/images/icons/material-symbols/300/rounded/keyboard_arrow_right-fill.svg +1 -0
  1476. package/src/assets/images/icons/material-symbols/300/rounded/keyboard_arrow_right.svg +1 -0
  1477. package/src/assets/images/icons/material-symbols/300/rounded/keyboard_backspace-fill.svg +1 -0
  1478. package/src/assets/images/icons/material-symbols/300/rounded/keyboard_backspace.svg +1 -0
  1479. package/src/assets/images/icons/material-symbols/300/rounded/keyboard_double_arrow_left-fill.svg +1 -0
  1480. package/src/assets/images/icons/material-symbols/300/rounded/keyboard_double_arrow_left.svg +1 -0
  1481. package/src/assets/images/icons/material-symbols/300/rounded/keyboard_double_arrow_right-fill.svg +1 -0
  1482. package/src/assets/images/icons/material-symbols/300/rounded/keyboard_double_arrow_right.svg +1 -0
  1483. package/src/assets/images/icons/material-symbols/300/rounded/keyboard_voice-fill.svg +1 -0
  1484. package/src/assets/images/icons/material-symbols/300/rounded/keyboard_voice.svg +1 -0
  1485. package/src/assets/images/icons/material-symbols/300/rounded/lab_profile-fill.svg +1 -0
  1486. package/src/assets/images/icons/material-symbols/300/rounded/lab_profile.svg +1 -0
  1487. package/src/assets/images/icons/material-symbols/300/rounded/label_important.svg +8 -0
  1488. package/src/assets/images/icons/material-symbols/300/rounded/link-fill.svg +1 -0
  1489. package/src/assets/images/icons/material-symbols/300/rounded/link.svg +1 -0
  1490. package/src/assets/images/icons/material-symbols/300/rounded/location_on-fill.svg +1 -0
  1491. package/src/assets/images/icons/material-symbols/300/rounded/location_on.svg +1 -0
  1492. package/src/assets/images/icons/material-symbols/300/rounded/lock-fill.svg +1 -0
  1493. package/src/assets/images/icons/material-symbols/300/rounded/lock.svg +1 -0
  1494. package/src/assets/images/icons/material-symbols/300/rounded/lock_open-fill.svg +1 -0
  1495. package/src/assets/images/icons/material-symbols/300/rounded/lock_open.svg +1 -0
  1496. package/src/assets/images/icons/material-symbols/300/rounded/lock_open_right.svg +1 -0
  1497. package/src/assets/images/icons/material-symbols/300/rounded/lock_person-fill.svg +1 -0
  1498. package/src/assets/images/icons/material-symbols/300/rounded/lock_person.svg +1 -0
  1499. package/src/assets/images/icons/material-symbols/300/rounded/menu.svg +1 -0
  1500. package/src/assets/images/icons/material-symbols/300/rounded/mic.svg +1 -0
  1501. package/src/assets/images/icons/material-symbols/300/rounded/mood.svg +8 -0
  1502. package/src/assets/images/icons/material-symbols/300/rounded/more_vert-fill.svg +1 -0
  1503. package/src/assets/images/icons/material-symbols/300/rounded/more_vert.svg +1 -0
  1504. package/src/assets/images/icons/material-symbols/300/rounded/move_up-fill.svg +1 -0
  1505. package/src/assets/images/icons/material-symbols/300/rounded/move_up.svg +1 -0
  1506. package/src/assets/images/icons/material-symbols/300/rounded/navigate_next-fill.svg +1 -0
  1507. package/src/assets/images/icons/material-symbols/300/rounded/navigate_next.svg +1 -0
  1508. package/src/assets/images/icons/material-symbols/300/rounded/neurology-fill.svg +1 -0
  1509. package/src/assets/images/icons/material-symbols/300/rounded/neurology.svg +1 -0
  1510. package/src/assets/images/icons/material-symbols/300/rounded/note-fill.svg +1 -0
  1511. package/src/assets/images/icons/material-symbols/300/rounded/note.svg +1 -0
  1512. package/src/assets/images/icons/material-symbols/300/rounded/note_add-fill.svg +1 -0
  1513. package/src/assets/images/icons/material-symbols/300/rounded/note_add.svg +1 -0
  1514. package/src/assets/images/icons/material-symbols/300/rounded/notifications-fill.svg +1 -0
  1515. package/src/assets/images/icons/material-symbols/300/rounded/notifications.svg +1 -0
  1516. package/src/assets/images/icons/material-symbols/300/rounded/patient_list.svg +1 -0
  1517. package/src/assets/images/icons/material-symbols/300/rounded/pause-fill.svg +1 -0
  1518. package/src/assets/images/icons/material-symbols/300/rounded/pause.svg +1 -0
  1519. package/src/assets/images/icons/material-symbols/300/rounded/person.svg +1 -0
  1520. package/src/assets/images/icons/material-symbols/300/rounded/person_2-fill.svg +1 -0
  1521. package/src/assets/images/icons/material-symbols/300/rounded/person_2.svg +1 -0
  1522. package/src/assets/images/icons/material-symbols/300/rounded/person_3-fill.svg +1 -0
  1523. package/src/assets/images/icons/material-symbols/300/rounded/person_3.svg +1 -0
  1524. package/src/assets/images/icons/material-symbols/300/rounded/person_4-fill.svg +1 -0
  1525. package/src/assets/images/icons/material-symbols/300/rounded/person_4.svg +1 -0
  1526. package/src/assets/images/icons/material-symbols/300/rounded/person_add-fill.svg +1 -0
  1527. package/src/assets/images/icons/material-symbols/300/rounded/person_add.svg +1 -0
  1528. package/src/assets/images/icons/material-symbols/300/rounded/person_add_disabled-fill.svg +1 -0
  1529. package/src/assets/images/icons/material-symbols/300/rounded/person_add_disabled.svg +1 -0
  1530. package/src/assets/images/icons/material-symbols/300/rounded/play_arrow-fill.svg +1 -0
  1531. package/src/assets/images/icons/material-symbols/300/rounded/play_arrow.svg +1 -0
  1532. package/src/assets/images/icons/material-symbols/300/rounded/prescriptions-fill.svg +1 -0
  1533. package/src/assets/images/icons/material-symbols/300/rounded/prescriptions.svg +1 -0
  1534. package/src/assets/images/icons/material-symbols/300/rounded/preview-fill.svg +1 -0
  1535. package/src/assets/images/icons/material-symbols/300/rounded/preview.svg +1 -0
  1536. package/src/assets/images/icons/material-symbols/300/rounded/preview_off-fill.svg +1 -0
  1537. package/src/assets/images/icons/material-symbols/300/rounded/preview_off.svg +1 -0
  1538. package/src/assets/images/icons/material-symbols/300/rounded/price_change-fill.svg +1 -0
  1539. package/src/assets/images/icons/material-symbols/300/rounded/price_change.svg +1 -0
  1540. package/src/assets/images/icons/material-symbols/300/rounded/print-fill.svg +1 -0
  1541. package/src/assets/images/icons/material-symbols/300/rounded/print.svg +1 -0
  1542. package/src/assets/images/icons/material-symbols/300/rounded/prompt_suggestion.svg +8 -0
  1543. package/src/assets/images/icons/material-symbols/300/rounded/push_pin-fill.svg +1 -0
  1544. package/src/assets/images/icons/material-symbols/300/rounded/push_pin.svg +1 -0
  1545. package/src/assets/images/icons/material-symbols/300/rounded/radio_button_checked-fill.svg +1 -0
  1546. package/src/assets/images/icons/material-symbols/300/rounded/radio_button_checked.svg +1 -0
  1547. package/src/assets/images/icons/material-symbols/300/rounded/refresh-fill.svg +1 -0
  1548. package/src/assets/images/icons/material-symbols/300/rounded/refresh.svg +1 -0
  1549. package/src/assets/images/icons/material-symbols/300/rounded/remove-fill.svg +1 -0
  1550. package/src/assets/images/icons/material-symbols/300/rounded/remove.svg +1 -0
  1551. package/src/assets/images/icons/material-symbols/300/rounded/repeat-fill.svg +1 -0
  1552. package/src/assets/images/icons/material-symbols/300/rounded/repeat.svg +1 -0
  1553. package/src/assets/images/icons/material-symbols/300/rounded/report-fill.svg +1 -0
  1554. package/src/assets/images/icons/material-symbols/300/rounded/report.svg +1 -0
  1555. package/src/assets/images/icons/material-symbols/300/rounded/rotate_left-fill.svg +1 -0
  1556. package/src/assets/images/icons/material-symbols/300/rounded/rotate_left.svg +1 -0
  1557. package/src/assets/images/icons/material-symbols/300/rounded/safety_check-fill.svg +1 -0
  1558. package/src/assets/images/icons/material-symbols/300/rounded/safety_check.svg +1 -0
  1559. package/src/assets/images/icons/material-symbols/300/rounded/safety_check_off-fill.svg +1 -0
  1560. package/src/assets/images/icons/material-symbols/300/rounded/safety_check_off.svg +1 -0
  1561. package/src/assets/images/icons/material-symbols/300/rounded/scanner-fill.svg +1 -0
  1562. package/src/assets/images/icons/material-symbols/300/rounded/scanner.svg +1 -0
  1563. package/src/assets/images/icons/material-symbols/300/rounded/search-fill.svg +1 -0
  1564. package/src/assets/images/icons/material-symbols/300/rounded/search.svg +1 -0
  1565. package/src/assets/images/icons/material-symbols/300/rounded/send-fill.svg +1 -0
  1566. package/src/assets/images/icons/material-symbols/300/rounded/send.svg +1 -0
  1567. package/src/assets/images/icons/material-symbols/300/rounded/settings-fill.svg +1 -0
  1568. package/src/assets/images/icons/material-symbols/300/rounded/settings.svg +1 -0
  1569. package/src/assets/images/icons/material-symbols/300/rounded/settings_applications-fill.svg +1 -0
  1570. package/src/assets/images/icons/material-symbols/300/rounded/settings_applications.svg +1 -0
  1571. package/src/assets/images/icons/material-symbols/300/rounded/share-fill.svg +1 -0
  1572. package/src/assets/images/icons/material-symbols/300/rounded/share.svg +1 -0
  1573. package/src/assets/images/icons/material-symbols/300/rounded/signpost-fill.svg +1 -0
  1574. package/src/assets/images/icons/material-symbols/300/rounded/signpost.svg +1 -0
  1575. package/src/assets/images/icons/material-symbols/300/rounded/sort-fill.svg +1 -0
  1576. package/src/assets/images/icons/material-symbols/300/rounded/sort.svg +1 -0
  1577. package/src/assets/images/icons/material-symbols/300/rounded/sprint-fill.svg +1 -0
  1578. package/src/assets/images/icons/material-symbols/300/rounded/sprint.svg +1 -0
  1579. package/src/assets/images/icons/material-symbols/300/rounded/star-fill.svg +1 -0
  1580. package/src/assets/images/icons/material-symbols/300/rounded/star.svg +1 -0
  1581. package/src/assets/images/icons/material-symbols/300/rounded/star_half-fill.svg +1 -0
  1582. package/src/assets/images/icons/material-symbols/300/rounded/star_half.svg +1 -0
  1583. package/src/assets/images/icons/material-symbols/300/rounded/supervisor_account-fill.svg +1 -0
  1584. package/src/assets/images/icons/material-symbols/300/rounded/supervisor_account.svg +1 -0
  1585. package/src/assets/images/icons/material-symbols/300/rounded/swipe_left_alt-fill.svg +1 -0
  1586. package/src/assets/images/icons/material-symbols/300/rounded/swipe_left_alt.svg +1 -0
  1587. package/src/assets/images/icons/material-symbols/300/rounded/syringe-fill.svg +1 -0
  1588. package/src/assets/images/icons/material-symbols/300/rounded/syringe.svg +1 -0
  1589. package/src/assets/images/icons/material-symbols/300/rounded/task_alt-fill.svg +1 -0
  1590. package/src/assets/images/icons/material-symbols/300/rounded/task_alt.svg +1 -0
  1591. package/src/assets/images/icons/material-symbols/300/rounded/turn_left-fill.svg +1 -0
  1592. package/src/assets/images/icons/material-symbols/300/rounded/turn_left.svg +1 -0
  1593. package/src/assets/images/icons/material-symbols/300/rounded/turn_right-fill.svg +1 -0
  1594. package/src/assets/images/icons/material-symbols/300/rounded/turn_right.svg +1 -0
  1595. package/src/assets/images/icons/material-symbols/300/rounded/u_turn_left-fill.svg +1 -0
  1596. package/src/assets/images/icons/material-symbols/300/rounded/u_turn_left.svg +1 -0
  1597. package/src/assets/images/icons/material-symbols/300/rounded/upload_file-fill.svg +1 -0
  1598. package/src/assets/images/icons/material-symbols/300/rounded/upload_file.svg +1 -0
  1599. package/src/assets/images/icons/material-symbols/300/rounded/videocam-fill.svg +1 -0
  1600. package/src/assets/images/icons/material-symbols/300/rounded/videocam.svg +1 -0
  1601. package/src/assets/images/icons/material-symbols/300/rounded/warning-fill.svg +1 -0
  1602. package/src/assets/images/icons/material-symbols/300/rounded/warning.svg +1 -0
  1603. package/src/assets/images/icons/material-symbols/300/rounded/where_to_vote-fill.svg +1 -0
  1604. package/src/assets/images/icons/material-symbols/300/rounded/where_to_vote.svg +1 -0
  1605. package/src/assets/images/icons/material-symbols/300/rounded/widgets.svg +1 -0
  1606. package/src/assets/images/icons/material-symbols/400/rounded/accessibility.svg +8 -0
  1607. package/src/assets/images/icons/material-symbols/400/rounded/account_tree.svg +8 -0
  1608. package/src/assets/images/icons/material-symbols/400/rounded/add.svg +8 -0
  1609. package/src/assets/images/icons/material-symbols/400/rounded/add_box.svg +1 -0
  1610. package/src/assets/images/icons/material-symbols/400/rounded/add_call-fill.svg +1 -0
  1611. package/src/assets/images/icons/material-symbols/400/rounded/add_call.svg +1 -0
  1612. package/src/assets/images/icons/material-symbols/400/rounded/add_circle.svg +8 -0
  1613. package/src/assets/images/icons/material-symbols/400/rounded/add_link.svg +8 -0
  1614. package/src/assets/images/icons/material-symbols/400/rounded/add_reaction.svg +8 -0
  1615. package/src/assets/images/icons/material-symbols/400/rounded/alarm.svg +8 -0
  1616. package/src/assets/images/icons/material-symbols/400/rounded/alternate_email.svg +8 -0
  1617. package/src/assets/images/icons/material-symbols/400/rounded/ambulance.svg +15 -0
  1618. package/src/assets/images/icons/material-symbols/400/rounded/ambulance_2.svg +17 -0
  1619. package/src/assets/images/icons/material-symbols/400/rounded/arrow-bar-right.svg +3 -0
  1620. package/src/assets/images/icons/material-symbols/400/rounded/arrow-repeat.svg +4 -0
  1621. package/src/assets/images/icons/material-symbols/400/rounded/arrow_downward_alt.svg +8 -0
  1622. package/src/assets/images/icons/material-symbols/400/rounded/arrow_left.svg +1 -0
  1623. package/src/assets/images/icons/material-symbols/400/rounded/arrow_left_alt.svg +1 -0
  1624. package/src/assets/images/icons/material-symbols/400/rounded/arrow_right_alt.svg +8 -0
  1625. package/src/assets/images/icons/material-symbols/400/rounded/arrow_top_left.svg +8 -0
  1626. package/src/assets/images/icons/material-symbols/400/rounded/arrow_upward_alt.svg +8 -0
  1627. package/src/assets/images/icons/material-symbols/400/rounded/article-fill.svg +1 -0
  1628. package/src/assets/images/icons/material-symbols/400/rounded/article.svg +1 -0
  1629. package/src/assets/images/icons/material-symbols/400/rounded/at.svg +3 -0
  1630. package/src/assets/images/icons/material-symbols/400/rounded/atr.svg +8 -0
  1631. package/src/assets/images/icons/material-symbols/400/rounded/attach_file.svg +1 -0
  1632. package/src/assets/images/icons/material-symbols/400/rounded/attach_money.svg +8 -0
  1633. package/src/assets/images/icons/material-symbols/400/rounded/attachment.svg +1 -0
  1634. package/src/assets/images/icons/material-symbols/400/rounded/auto_awesome_mosaic.svg +8 -0
  1635. package/src/assets/images/icons/material-symbols/400/rounded/auto_pay.svg +8 -0
  1636. package/src/assets/images/icons/material-symbols/400/rounded/backspace_fill.svg +8 -0
  1637. package/src/assets/images/icons/material-symbols/400/rounded/block.svg +8 -0
  1638. package/src/assets/images/icons/material-symbols/400/rounded/bolt.svg +1 -0
  1639. package/src/assets/images/icons/material-symbols/400/rounded/border_color.svg +8 -0
  1640. package/src/assets/images/icons/material-symbols/400/rounded/brightness_1.svg +8 -0
  1641. package/src/assets/images/icons/material-symbols/400/rounded/bubble.svg +8 -0
  1642. package/src/assets/images/icons/material-symbols/400/rounded/cached.svg +8 -0
  1643. package/src/assets/images/icons/material-symbols/400/rounded/calculate.svg +8 -0
  1644. package/src/assets/images/icons/material-symbols/400/rounded/calendar-x.svg +4 -0
  1645. package/src/assets/images/icons/material-symbols/400/rounded/calendar_down.svg +9 -0
  1646. package/src/assets/images/icons/material-symbols/400/rounded/calendar_month.svg +8 -0
  1647. package/src/assets/images/icons/material-symbols/400/rounded/calendar_today.svg +8 -0
  1648. package/src/assets/images/icons/material-symbols/400/rounded/calendar_up.svg +9 -0
  1649. package/src/assets/images/icons/material-symbols/400/rounded/call-fill.svg +1 -0
  1650. package/src/assets/images/icons/material-symbols/400/rounded/call.svg +1 -0
  1651. package/src/assets/images/icons/material-symbols/400/rounded/call_end-fill.svg +1 -0
  1652. package/src/assets/images/icons/material-symbols/400/rounded/call_end.svg +1 -0
  1653. package/src/assets/images/icons/material-symbols/400/rounded/call_fill.svg +8 -0
  1654. package/src/assets/images/icons/material-symbols/400/rounded/call_log-fill.svg +1 -0
  1655. package/src/assets/images/icons/material-symbols/400/rounded/call_log.svg +1 -0
  1656. package/src/assets/images/icons/material-symbols/400/rounded/call_made.svg +1 -0
  1657. package/src/assets/images/icons/material-symbols/400/rounded/call_merge.svg +1 -0
  1658. package/src/assets/images/icons/material-symbols/400/rounded/call_missed.svg +1 -0
  1659. package/src/assets/images/icons/material-symbols/400/rounded/call_missed_outgoing.svg +1 -0
  1660. package/src/assets/images/icons/material-symbols/400/rounded/call_quality-fill.svg +1 -0
  1661. package/src/assets/images/icons/material-symbols/400/rounded/call_quality.svg +1 -0
  1662. package/src/assets/images/icons/material-symbols/400/rounded/call_received.svg +1 -0
  1663. package/src/assets/images/icons/material-symbols/400/rounded/call_split.svg +1 -0
  1664. package/src/assets/images/icons/material-symbols/400/rounded/call_to_action-fill.svg +1 -0
  1665. package/src/assets/images/icons/material-symbols/400/rounded/call_to_action.svg +1 -0
  1666. package/src/assets/images/icons/material-symbols/400/rounded/campaign.svg +8 -0
  1667. package/src/assets/images/icons/material-symbols/400/rounded/cancel.svg +8 -0
  1668. package/src/assets/images/icons/material-symbols/400/rounded/card-list.svg +4 -0
  1669. package/src/assets/images/icons/material-symbols/400/rounded/cash.svg +4 -0
  1670. package/src/assets/images/icons/material-symbols/400/rounded/chart_data.svg +8 -0
  1671. package/src/assets/images/icons/material-symbols/400/rounded/chat-fill.svg +1 -0
  1672. package/src/assets/images/icons/material-symbols/400/rounded/chat.svg +8 -0
  1673. package/src/assets/images/icons/material-symbols/400/rounded/chat_bubble.svg +8 -0
  1674. package/src/assets/images/icons/material-symbols/400/rounded/check-circle-fill.svg +3 -0
  1675. package/src/assets/images/icons/material-symbols/400/rounded/check.svg +1 -0
  1676. package/src/assets/images/icons/material-symbols/400/rounded/check2-all.svg +4 -0
  1677. package/src/assets/images/icons/material-symbols/400/rounded/check_circle-fill.svg +8 -0
  1678. package/src/assets/images/icons/material-symbols/400/rounded/check_circle.svg +8 -0
  1679. package/src/assets/images/icons/material-symbols/400/rounded/check_circle_fill.svg +8 -0
  1680. package/src/assets/images/icons/material-symbols/400/rounded/chevron_left.svg +15 -0
  1681. package/src/assets/images/icons/material-symbols/400/rounded/chevron_right.svg +8 -0
  1682. package/src/assets/images/icons/material-symbols/400/rounded/chronic-fill.svg +1 -0
  1683. package/src/assets/images/icons/material-symbols/400/rounded/chronic.svg +1 -0
  1684. package/src/assets/images/icons/material-symbols/400/rounded/circle-fill.svg +3 -0
  1685. package/src/assets/images/icons/material-symbols/400/rounded/circle_notifications-fill.svg +1 -0
  1686. package/src/assets/images/icons/material-symbols/400/rounded/circle_notifications.svg +1 -0
  1687. package/src/assets/images/icons/material-symbols/400/rounded/clear-all.svg +1 -0
  1688. package/src/assets/images/icons/material-symbols/400/rounded/clinic.svg +3 -0
  1689. package/src/assets/images/icons/material-symbols/400/rounded/clinic_settings.svg +3 -0
  1690. package/src/assets/images/icons/material-symbols/400/rounded/clipboard-check.svg +5 -0
  1691. package/src/assets/images/icons/material-symbols/400/rounded/clock-history.svg +5 -0
  1692. package/src/assets/images/icons/material-symbols/400/rounded/clock_loader_40.svg +8 -0
  1693. package/src/assets/images/icons/material-symbols/400/rounded/close.svg +1 -0
  1694. package/src/assets/images/icons/material-symbols/400/rounded/collapse_all.svg +1 -0
  1695. package/src/assets/images/icons/material-symbols/400/rounded/collapse_content.svg +8 -0
  1696. package/src/assets/images/icons/material-symbols/400/rounded/collections_bookmark-fill.svg +1 -0
  1697. package/src/assets/images/icons/material-symbols/400/rounded/collections_bookmark.svg +1 -0
  1698. package/src/assets/images/icons/material-symbols/400/rounded/comment.svg +1 -0
  1699. package/src/assets/images/icons/material-symbols/400/rounded/contact_page.svg +8 -0
  1700. package/src/assets/images/icons/material-symbols/400/rounded/content_copy-fill.svg +1 -0
  1701. package/src/assets/images/icons/material-symbols/400/rounded/content_copy.svg +8 -0
  1702. package/src/assets/images/icons/material-symbols/400/rounded/copy_all.svg +8 -0
  1703. package/src/assets/images/icons/material-symbols/400/rounded/create_new_folder.svg +8 -0
  1704. package/src/assets/images/icons/material-symbols/400/rounded/credit_card-fill.svg +1 -0
  1705. package/src/assets/images/icons/material-symbols/400/rounded/credit_card.svg +1 -0
  1706. package/src/assets/images/icons/material-symbols/400/rounded/credit_card_off-fill.svg +1 -0
  1707. package/src/assets/images/icons/material-symbols/400/rounded/credit_card_off.svg +1 -0
  1708. package/src/assets/images/icons/material-symbols/400/rounded/dangerous.svg +8 -0
  1709. package/src/assets/images/icons/material-symbols/400/rounded/dash-circle.svg +4 -0
  1710. package/src/assets/images/icons/material-symbols/400/rounded/dashboard_customize.svg +8 -0
  1711. package/src/assets/images/icons/material-symbols/400/rounded/data_object.svg +8 -0
  1712. package/src/assets/images/icons/material-symbols/400/rounded/data_object_bold.svg +8 -0
  1713. package/src/assets/images/icons/material-symbols/400/rounded/delete-fill.svg +1 -0
  1714. package/src/assets/images/icons/material-symbols/400/rounded/delete.svg +1 -0
  1715. package/src/assets/images/icons/material-symbols/400/rounded/demography.svg +8 -0
  1716. package/src/assets/images/icons/material-symbols/400/rounded/description.svg +8 -0
  1717. package/src/assets/images/icons/material-symbols/400/rounded/desktop_windows.svg +8 -0
  1718. package/src/assets/images/icons/material-symbols/400/rounded/dialpad.svg +1 -0
  1719. package/src/assets/images/icons/material-symbols/400/rounded/discover_tune.svg +1 -0
  1720. package/src/assets/images/icons/material-symbols/400/rounded/do_not_disturb_off.svg +8 -0
  1721. package/src/assets/images/icons/material-symbols/400/rounded/do_not_disturb_on.svg +8 -0
  1722. package/src/assets/images/icons/material-symbols/400/rounded/document_scanner.svg +8 -0
  1723. package/src/assets/images/icons/material-symbols/400/rounded/done.svg +1 -0
  1724. package/src/assets/images/icons/material-symbols/400/rounded/done_all.svg +8 -0
  1725. package/src/assets/images/icons/material-symbols/400/rounded/dot.svg +3 -0
  1726. package/src/assets/images/icons/material-symbols/400/rounded/double_arrow.svg +1 -0
  1727. package/src/assets/images/icons/material-symbols/400/rounded/download.svg +8 -0
  1728. package/src/assets/images/icons/material-symbols/400/rounded/draft.svg +8 -0
  1729. package/src/assets/images/icons/material-symbols/400/rounded/drag_indicator.svg +1 -0
  1730. package/src/assets/images/icons/material-symbols/400/rounded/drive_file_move.svg +1 -0
  1731. package/src/assets/images/icons/material-symbols/400/rounded/eFax.svg +17 -0
  1732. package/src/assets/images/icons/material-symbols/400/rounded/east.svg +8 -0
  1733. package/src/assets/images/icons/material-symbols/400/rounded/ecg_heart.svg +8 -0
  1734. package/src/assets/images/icons/material-symbols/400/rounded/ed-doctor.svg +15 -0
  1735. package/src/assets/images/icons/material-symbols/400/rounded/ed-form-disable.svg +9 -0
  1736. package/src/assets/images/icons/material-symbols/400/rounded/ed-invoice download.svg +13 -0
  1737. package/src/assets/images/icons/material-symbols/400/rounded/ed-payment_history.svg +9 -0
  1738. package/src/assets/images/icons/material-symbols/400/rounded/ed-receive.svg +9 -0
  1739. package/src/assets/images/icons/material-symbols/400/rounded/ed-refund.svg +9 -0
  1740. package/src/assets/images/icons/material-symbols/400/rounded/ed-regular-notes.svg +6 -0
  1741. package/src/assets/images/icons/material-symbols/400/rounded/ed-transaction download.svg +11 -0
  1742. package/src/assets/images/icons/material-symbols/400/rounded/edit-fill.svg +1 -0
  1743. package/src/assets/images/icons/material-symbols/400/rounded/edit.svg +1 -0
  1744. package/src/assets/images/icons/material-symbols/400/rounded/edit_calendar.svg +8 -0
  1745. package/src/assets/images/icons/material-symbols/400/rounded/edit_document.svg +8 -0
  1746. package/src/assets/images/icons/material-symbols/400/rounded/edit_note.svg +1 -0
  1747. package/src/assets/images/icons/material-symbols/400/rounded/edit_notifications-fill.svg +1 -0
  1748. package/src/assets/images/icons/material-symbols/400/rounded/edit_notifications.svg +1 -0
  1749. package/src/assets/images/icons/material-symbols/400/rounded/edit_square-fill.svg +1 -0
  1750. package/src/assets/images/icons/material-symbols/400/rounded/edit_square.svg +1 -0
  1751. package/src/assets/images/icons/material-symbols/400/rounded/email.svg +8 -0
  1752. package/src/assets/images/icons/material-symbols/400/rounded/encounters_h.svg +3 -0
  1753. package/src/assets/images/icons/material-symbols/400/rounded/endocrinology.svg +8 -0
  1754. package/src/assets/images/icons/material-symbols/400/rounded/ent.svg +8 -0
  1755. package/src/assets/images/icons/material-symbols/400/rounded/error.svg +1 -0
  1756. package/src/assets/images/icons/material-symbols/400/rounded/event.svg +8 -0
  1757. package/src/assets/images/icons/material-symbols/400/rounded/event_available-fill.svg +1 -0
  1758. package/src/assets/images/icons/material-symbols/400/rounded/event_available.svg +1 -0
  1759. package/src/assets/images/icons/material-symbols/400/rounded/event_busy.svg +8 -0
  1760. package/src/assets/images/icons/material-symbols/400/rounded/event_upcoming.svg +1 -0
  1761. package/src/assets/images/icons/material-symbols/400/rounded/expand_content.svg +8 -0
  1762. package/src/assets/images/icons/material-symbols/400/rounded/expand_less.svg +8 -0
  1763. package/src/assets/images/icons/material-symbols/400/rounded/expand_more.svg +8 -0
  1764. package/src/assets/images/icons/material-symbols/400/rounded/export_notes.svg +8 -0
  1765. package/src/assets/images/icons/material-symbols/400/rounded/favorite.svg +8 -0
  1766. package/src/assets/images/icons/material-symbols/400/rounded/fax.svg +1 -0
  1767. package/src/assets/images/icons/material-symbols/400/rounded/fiber_manual_record.svg +8 -0
  1768. package/src/assets/images/icons/material-symbols/400/rounded/fiber_smart_record.svg +8 -0
  1769. package/src/assets/images/icons/material-symbols/400/rounded/file-arrow-up.svg +4 -0
  1770. package/src/assets/images/icons/material-symbols/400/rounded/files.svg +3 -0
  1771. package/src/assets/images/icons/material-symbols/400/rounded/filetype-pdf.svg +3 -0
  1772. package/src/assets/images/icons/material-symbols/400/rounded/filter_alt.svg +8 -0
  1773. package/src/assets/images/icons/material-symbols/400/rounded/folder.svg +8 -0
  1774. package/src/assets/images/icons/material-symbols/400/rounded/folder_open.svg +8 -0
  1775. package/src/assets/images/icons/material-symbols/400/rounded/format_bold.svg +1 -0
  1776. package/src/assets/images/icons/material-symbols/400/rounded/format_italic.svg +1 -0
  1777. package/src/assets/images/icons/material-symbols/400/rounded/format_list_bulleted.svg +8 -0
  1778. package/src/assets/images/icons/material-symbols/400/rounded/format_underlined.svg +1 -0
  1779. package/src/assets/images/icons/material-symbols/400/rounded/full_coverage.svg +1 -0
  1780. package/src/assets/images/icons/material-symbols/400/rounded/gastroenterology.svg +8 -0
  1781. package/src/assets/images/icons/material-symbols/400/rounded/gpp_bad.svg +8 -0
  1782. package/src/assets/images/icons/material-symbols/400/rounded/gpp_bad_fill.svg +8 -0
  1783. package/src/assets/images/icons/material-symbols/400/rounded/gpp_maybe.svg +8 -0
  1784. package/src/assets/images/icons/material-symbols/400/rounded/gpp_maybe_fill.svg +8 -0
  1785. package/src/assets/images/icons/material-symbols/400/rounded/grid_view.svg +8 -0
  1786. package/src/assets/images/icons/material-symbols/400/rounded/group.svg +1 -0
  1787. package/src/assets/images/icons/material-symbols/400/rounded/groups.svg +1 -0
  1788. package/src/assets/images/icons/material-symbols/400/rounded/health_and_safety.svg +8 -0
  1789. package/src/assets/images/icons/material-symbols/400/rounded/health_and_safety_fill.svg +8 -0
  1790. package/src/assets/images/icons/material-symbols/400/rounded/hide_source.svg +1 -0
  1791. package/src/assets/images/icons/material-symbols/400/rounded/history.svg +1 -0
  1792. package/src/assets/images/icons/material-symbols/400/rounded/history_toggle_off.svg +8 -0
  1793. package/src/assets/images/icons/material-symbols/400/rounded/how_to_reg.svg +8 -0
  1794. package/src/assets/images/icons/material-symbols/400/rounded/id_card.svg +8 -0
  1795. package/src/assets/images/icons/material-symbols/400/rounded/info-fill.svg +1 -0
  1796. package/src/assets/images/icons/material-symbols/400/rounded/info-square.svg +4 -0
  1797. package/src/assets/images/icons/material-symbols/400/rounded/info.svg +1 -0
  1798. package/src/assets/images/icons/material-symbols/400/rounded/info_i.svg +1 -0
  1799. package/src/assets/images/icons/material-symbols/400/rounded/insights.svg +1 -0
  1800. package/src/assets/images/icons/material-symbols/400/rounded/inventory_2.svg +8 -0
  1801. package/src/assets/images/icons/material-symbols/400/rounded/journal-plus.svg +5 -0
  1802. package/src/assets/images/icons/material-symbols/400/rounded/journal-plus1.svg +5 -0
  1803. package/src/assets/images/icons/material-symbols/400/rounded/keep.svg +8 -0
  1804. package/src/assets/images/icons/material-symbols/400/rounded/key-person.svg +3 -0
  1805. package/src/assets/images/icons/material-symbols/400/rounded/key.svg +1 -0
  1806. package/src/assets/images/icons/material-symbols/400/rounded/keyboard_arrow_down-fill.svg +1 -0
  1807. package/src/assets/images/icons/material-symbols/400/rounded/keyboard_arrow_down.svg +8 -0
  1808. package/src/assets/images/icons/material-symbols/400/rounded/keyboard_arrow_left-fill.svg +1 -0
  1809. package/src/assets/images/icons/material-symbols/400/rounded/keyboard_arrow_left.svg +1 -0
  1810. package/src/assets/images/icons/material-symbols/400/rounded/keyboard_arrow_right-fill.svg +1 -0
  1811. package/src/assets/images/icons/material-symbols/400/rounded/keyboard_arrow_right.svg +1 -0
  1812. package/src/assets/images/icons/material-symbols/400/rounded/keyboard_arrow_up-fill.svg +1 -0
  1813. package/src/assets/images/icons/material-symbols/400/rounded/keyboard_arrow_up.svg +1 -0
  1814. package/src/assets/images/icons/material-symbols/400/rounded/keyboard_backspace.svg +1 -0
  1815. package/src/assets/images/icons/material-symbols/400/rounded/keyboard_double_arrow_left.svg +8 -0
  1816. package/src/assets/images/icons/material-symbols/400/rounded/keyboard_double_arrow_right.svg +8 -0
  1817. package/src/assets/images/icons/material-symbols/400/rounded/keyboard_voice-fill.svg +1 -0
  1818. package/src/assets/images/icons/material-symbols/400/rounded/keyboard_voice.svg +1 -0
  1819. package/src/assets/images/icons/material-symbols/400/rounded/lab_profile-fill.svg +1 -0
  1820. package/src/assets/images/icons/material-symbols/400/rounded/lab_profile.svg +8 -0
  1821. package/src/assets/images/icons/material-symbols/400/rounded/label.svg +8 -0
  1822. package/src/assets/images/icons/material-symbols/400/rounded/label_important.svg +8 -0
  1823. package/src/assets/images/icons/material-symbols/400/rounded/labs.svg +15 -0
  1824. package/src/assets/images/icons/material-symbols/400/rounded/language.svg +8 -0
  1825. package/src/assets/images/icons/material-symbols/400/rounded/library.svg +8 -0
  1826. package/src/assets/images/icons/material-symbols/400/rounded/lightning-charge-fill.svg +3 -0
  1827. package/src/assets/images/icons/material-symbols/400/rounded/link-45deg.svg +4 -0
  1828. package/src/assets/images/icons/material-symbols/400/rounded/local_activity.svg +8 -0
  1829. package/src/assets/images/icons/material-symbols/400/rounded/local_atm.svg +8 -0
  1830. package/src/assets/images/icons/material-symbols/400/rounded/local_pharmacy.svg +8 -0
  1831. package/src/assets/images/icons/material-symbols/400/rounded/local_police.svg +1 -0
  1832. package/src/assets/images/icons/material-symbols/400/rounded/local_post_office.svg +8 -0
  1833. package/src/assets/images/icons/material-symbols/400/rounded/location_home.svg +8 -0
  1834. package/src/assets/images/icons/material-symbols/400/rounded/location_off.svg +1 -0
  1835. package/src/assets/images/icons/material-symbols/400/rounded/location_on-fill.svg +1 -0
  1836. package/src/assets/images/icons/material-symbols/400/rounded/location_on.svg +1 -0
  1837. package/src/assets/images/icons/material-symbols/400/rounded/lock.svg +1 -0
  1838. package/src/assets/images/icons/material-symbols/400/rounded/lock_open_right.svg +1 -0
  1839. package/src/assets/images/icons/material-symbols/400/rounded/lock_person.svg +8 -0
  1840. package/src/assets/images/icons/material-symbols/400/rounded/logout.svg +1 -0
  1841. package/src/assets/images/icons/material-symbols/400/rounded/mail.svg +1 -0
  1842. package/src/assets/images/icons/material-symbols/400/rounded/manage_accounts.svg +1 -0
  1843. package/src/assets/images/icons/material-symbols/400/rounded/medication.svg +1 -0
  1844. package/src/assets/images/icons/material-symbols/400/rounded/mic-300.svg +1 -0
  1845. package/src/assets/images/icons/material-symbols/400/rounded/mic-fill.svg +1 -0
  1846. package/src/assets/images/icons/material-symbols/400/rounded/mic.svg +1 -0
  1847. package/src/assets/images/icons/material-symbols/400/rounded/mic_off-fill.svg +1 -0
  1848. package/src/assets/images/icons/material-symbols/400/rounded/mic_off.svg +8 -0
  1849. package/src/assets/images/icons/material-symbols/400/rounded/missed_video_call-fill.svg +1 -0
  1850. package/src/assets/images/icons/material-symbols/400/rounded/missed_video_call.svg +1 -0
  1851. package/src/assets/images/icons/material-symbols/400/rounded/mode_comment.svg +1 -0
  1852. package/src/assets/images/icons/material-symbols/400/rounded/monitor_heart.svg +8 -0
  1853. package/src/assets/images/icons/material-symbols/400/rounded/monitoring.svg +8 -0
  1854. package/src/assets/images/icons/material-symbols/400/rounded/mood.svg +8 -0
  1855. package/src/assets/images/icons/material-symbols/400/rounded/more_horiz.svg +8 -0
  1856. package/src/assets/images/icons/material-symbols/400/rounded/more_vert.svg +1 -0
  1857. package/src/assets/images/icons/material-symbols/400/rounded/motion_photos_paused.svg +8 -0
  1858. package/src/assets/images/icons/material-symbols/400/rounded/move.svg +13 -0
  1859. package/src/assets/images/icons/material-symbols/400/rounded/musculoskeletal.svg +11 -0
  1860. package/src/assets/images/icons/material-symbols/400/rounded/neurology.svg +8 -0
  1861. package/src/assets/images/icons/material-symbols/400/rounded/no_encryption.svg +1 -0
  1862. package/src/assets/images/icons/material-symbols/400/rounded/no_insurance.svg +8 -0
  1863. package/src/assets/images/icons/material-symbols/400/rounded/no_insurance_fill.svg +8 -0
  1864. package/src/assets/images/icons/material-symbols/400/rounded/not_allow.svg +8 -0
  1865. package/src/assets/images/icons/material-symbols/400/rounded/not_allow_fill.svg +8 -0
  1866. package/src/assets/images/icons/material-symbols/400/rounded/not_verified.svg +8 -0
  1867. package/src/assets/images/icons/material-symbols/400/rounded/not_verified_fill.svg +8 -0
  1868. package/src/assets/images/icons/material-symbols/400/rounded/note_add.svg +8 -0
  1869. package/src/assets/images/icons/material-symbols/400/rounded/note_stack.svg +8 -0
  1870. package/src/assets/images/icons/material-symbols/400/rounded/notifications-fill.svg +1 -0
  1871. package/src/assets/images/icons/material-symbols/400/rounded/notifications.svg +1 -0
  1872. package/src/assets/images/icons/material-symbols/400/rounded/notifications_active-fill.svg +1 -0
  1873. package/src/assets/images/icons/material-symbols/400/rounded/notifications_active.svg +1 -0
  1874. package/src/assets/images/icons/material-symbols/400/rounded/notifications_off-fill.svg +1 -0
  1875. package/src/assets/images/icons/material-symbols/400/rounded/notifications_off.svg +1 -0
  1876. package/src/assets/images/icons/material-symbols/400/rounded/notifications_paused-fill.svg +1 -0
  1877. package/src/assets/images/icons/material-symbols/400/rounded/notifications_paused.svg +1 -0
  1878. package/src/assets/images/icons/material-symbols/400/rounded/offline_bolt.svg +8 -0
  1879. package/src/assets/images/icons/material-symbols/400/rounded/open_in_full.svg +1 -0
  1880. package/src/assets/images/icons/material-symbols/400/rounded/open_in_new.svg +8 -0
  1881. package/src/assets/images/icons/material-symbols/400/rounded/order_approve.svg +1 -0
  1882. package/src/assets/images/icons/material-symbols/400/rounded/overview.svg +8 -0
  1883. package/src/assets/images/icons/material-symbols/400/rounded/paid.svg +8 -0
  1884. package/src/assets/images/icons/material-symbols/400/rounded/patient_list.svg +8 -0
  1885. package/src/assets/images/icons/material-symbols/400/rounded/pause.svg +8 -0
  1886. package/src/assets/images/icons/material-symbols/400/rounded/pause_circle.svg +8 -0
  1887. package/src/assets/images/icons/material-symbols/400/rounded/payments.svg +1 -0
  1888. package/src/assets/images/icons/material-symbols/400/rounded/pen_edit.svg +8 -0
  1889. package/src/assets/images/icons/material-symbols/400/rounded/pencil-square.svg +4 -0
  1890. package/src/assets/images/icons/material-symbols/400/rounded/people.svg +3 -0
  1891. package/src/assets/images/icons/material-symbols/400/rounded/perm_phone_msg.svg +1 -0
  1892. package/src/assets/images/icons/material-symbols/400/rounded/person-bounding-box.svg +4 -0
  1893. package/src/assets/images/icons/material-symbols/400/rounded/person-circle.svg +4 -0
  1894. package/src/assets/images/icons/material-symbols/400/rounded/person-fill.svg +1 -0
  1895. package/src/assets/images/icons/material-symbols/400/rounded/person-plus.svg +4 -0
  1896. package/src/assets/images/icons/material-symbols/400/rounded/person-rolodex.svg +4 -0
  1897. package/src/assets/images/icons/material-symbols/400/rounded/person-up.svg +4 -0
  1898. package/src/assets/images/icons/material-symbols/400/rounded/person-vcard.svg +4 -0
  1899. package/src/assets/images/icons/material-symbols/400/rounded/person.svg +3 -0
  1900. package/src/assets/images/icons/material-symbols/400/rounded/person_2-fill.svg +1 -0
  1901. package/src/assets/images/icons/material-symbols/400/rounded/person_2.svg +1 -0
  1902. package/src/assets/images/icons/material-symbols/400/rounded/person_24dp_5F6368_FILL1_wght400_GRAD0_opsz24.svg +1 -0
  1903. package/src/assets/images/icons/material-symbols/400/rounded/person_3-fill.svg +1 -0
  1904. package/src/assets/images/icons/material-symbols/400/rounded/person_3.svg +1 -0
  1905. package/src/assets/images/icons/material-symbols/400/rounded/person_4-fill.svg +1 -0
  1906. package/src/assets/images/icons/material-symbols/400/rounded/person_4.svg +1 -0
  1907. package/src/assets/images/icons/material-symbols/400/rounded/person_add-fill.svg +1 -0
  1908. package/src/assets/images/icons/material-symbols/400/rounded/person_add.svg +1 -0
  1909. package/src/assets/images/icons/material-symbols/400/rounded/person_remove.svg +8 -0
  1910. package/src/assets/images/icons/material-symbols/400/rounded/personal_injury.svg +15 -0
  1911. package/src/assets/images/icons/material-symbols/400/rounded/phone_callback-fill.svg +1 -0
  1912. package/src/assets/images/icons/material-symbols/400/rounded/phone_callback.svg +1 -0
  1913. package/src/assets/images/icons/material-symbols/400/rounded/phone_forwarded.svg +8 -0
  1914. package/src/assets/images/icons/material-symbols/400/rounded/photo_camera.svg +8 -0
  1915. package/src/assets/images/icons/material-symbols/400/rounded/pin_drop-fill.svg +1 -0
  1916. package/src/assets/images/icons/material-symbols/400/rounded/pin_drop.svg +1 -0
  1917. package/src/assets/images/icons/material-symbols/400/rounded/play_arrow.svg +8 -0
  1918. package/src/assets/images/icons/material-symbols/400/rounded/play_circle.svg +1 -0
  1919. package/src/assets/images/icons/material-symbols/400/rounded/prescriptions.svg +8 -0
  1920. package/src/assets/images/icons/material-symbols/400/rounded/preview-fill.svg +1 -0
  1921. package/src/assets/images/icons/material-symbols/400/rounded/preview.svg +1 -0
  1922. package/src/assets/images/icons/material-symbols/400/rounded/price_change.svg +8 -0
  1923. package/src/assets/images/icons/material-symbols/400/rounded/print.svg +8 -0
  1924. package/src/assets/images/icons/material-symbols/400/rounded/printer.svg +4 -0
  1925. package/src/assets/images/icons/material-symbols/400/rounded/prompt_suggestion.svg +8 -0
  1926. package/src/assets/images/icons/material-symbols/400/rounded/psychology.svg +8 -0
  1927. package/src/assets/images/icons/material-symbols/400/rounded/published_with_changes.svg +8 -0
  1928. package/src/assets/images/icons/material-symbols/400/rounded/pulmonology.svg +8 -0
  1929. package/src/assets/images/icons/material-symbols/400/rounded/push_pin.svg +8 -0
  1930. package/src/assets/images/icons/material-symbols/400/rounded/question_mark.svg +8 -0
  1931. package/src/assets/images/icons/material-symbols/400/rounded/quickreply.svg +8 -0
  1932. package/src/assets/images/icons/material-symbols/400/rounded/radio_button_checked.svg +8 -0
  1933. package/src/assets/images/icons/material-symbols/400/rounded/radio_button_unchecked.svg +8 -0
  1934. package/src/assets/images/icons/material-symbols/400/rounded/receipt_long.svg +15 -0
  1935. package/src/assets/images/icons/material-symbols/400/rounded/record-circle.svg +4 -0
  1936. package/src/assets/images/icons/material-symbols/400/rounded/redo.svg +8 -0
  1937. package/src/assets/images/icons/material-symbols/400/rounded/refresh.svg +8 -0
  1938. package/src/assets/images/icons/material-symbols/400/rounded/refund.svg +10 -0
  1939. package/src/assets/images/icons/material-symbols/400/rounded/reg-notes.svg +8 -0
  1940. package/src/assets/images/icons/material-symbols/400/rounded/remove.svg +8 -0
  1941. package/src/assets/images/icons/material-symbols/400/rounded/remove_moderator.svg +8 -0
  1942. package/src/assets/images/icons/material-symbols/400/rounded/remove_moderator_fill.svg +8 -0
  1943. package/src/assets/images/icons/material-symbols/400/rounded/repeat.svg +8 -0
  1944. package/src/assets/images/icons/material-symbols/400/rounded/replay.svg +8 -0
  1945. package/src/assets/images/icons/material-symbols/400/rounded/request_quote.svg +8 -0
  1946. package/src/assets/images/icons/material-symbols/400/rounded/rocket_launch.svg +8 -0
  1947. package/src/assets/images/icons/material-symbols/400/rounded/rotate_right.svg +1 -0
  1948. package/src/assets/images/icons/material-symbols/400/rounded/rule_settings.svg +8 -0
  1949. package/src/assets/images/icons/material-symbols/400/rounded/save.svg +1 -0
  1950. package/src/assets/images/icons/material-symbols/400/rounded/scanner.svg +1 -0
  1951. package/src/assets/images/icons/material-symbols/400/rounded/schedule.svg +8 -0
  1952. package/src/assets/images/icons/material-symbols/400/rounded/search.svg +8 -0
  1953. package/src/assets/images/icons/material-symbols/400/rounded/self_pay.svg +8 -0
  1954. package/src/assets/images/icons/material-symbols/400/rounded/self_pay_fill.svg +8 -0
  1955. package/src/assets/images/icons/material-symbols/400/rounded/send-fill.svg +1 -0
  1956. package/src/assets/images/icons/material-symbols/400/rounded/send.svg +1 -0
  1957. package/src/assets/images/icons/material-symbols/400/rounded/settings.svg +8 -0
  1958. package/src/assets/images/icons/material-symbols/400/rounded/settings_applications.svg +8 -0
  1959. package/src/assets/images/icons/material-symbols/400/rounded/share.svg +1 -0
  1960. package/src/assets/images/icons/material-symbols/400/rounded/shield_person.svg +8 -0
  1961. package/src/assets/images/icons/material-symbols/400/rounded/shield_person_fill.svg +8 -0
  1962. package/src/assets/images/icons/material-symbols/400/rounded/signal_cellular_alt.svg +8 -0
  1963. package/src/assets/images/icons/material-symbols/400/rounded/simple-notes.svg +8 -0
  1964. package/src/assets/images/icons/material-symbols/400/rounded/skin.svg +11 -0
  1965. package/src/assets/images/icons/material-symbols/400/rounded/smartphone.svg +8 -0
  1966. package/src/assets/images/icons/material-symbols/400/rounded/sort.svg +8 -0
  1967. package/src/assets/images/icons/material-symbols/400/rounded/sort_by_alpha.svg +8 -0
  1968. package/src/assets/images/icons/material-symbols/400/rounded/sprint.svg +1 -0
  1969. package/src/assets/images/icons/material-symbols/400/rounded/star-fill.svg +3 -0
  1970. package/src/assets/images/icons/material-symbols/400/rounded/stickies.svg +4 -0
  1971. package/src/assets/images/icons/material-symbols/400/rounded/stop_circle.svg +8 -0
  1972. package/src/assets/images/icons/material-symbols/400/rounded/straight.svg +3 -0
  1973. package/src/assets/images/icons/material-symbols/400/rounded/sub-task.svg +9 -0
  1974. package/src/assets/images/icons/material-symbols/400/rounded/subdirectory_arrow_left.svg +8 -0
  1975. package/src/assets/images/icons/material-symbols/400/rounded/summarize.svg +8 -0
  1976. package/src/assets/images/icons/material-symbols/400/rounded/swap_calls.svg +1 -0
  1977. package/src/assets/images/icons/material-symbols/400/rounded/swap_vert.svg +8 -0
  1978. package/src/assets/images/icons/material-symbols/400/rounded/swipe_left_alt.svg +8 -0
  1979. package/src/assets/images/icons/material-symbols/400/rounded/syringe.svg +8 -0
  1980. package/src/assets/images/icons/material-symbols/400/rounded/table.svg +8 -0
  1981. package/src/assets/images/icons/material-symbols/400/rounded/task.svg +8 -0
  1982. package/src/assets/images/icons/material-symbols/400/rounded/telemedicine.svg +15 -0
  1983. package/src/assets/images/icons/material-symbols/400/rounded/tips_and_updates.svg +1 -0
  1984. package/src/assets/images/icons/material-symbols/400/rounded/tune.svg +8 -0
  1985. package/src/assets/images/icons/material-symbols/400/rounded/turn_left.svg +1 -0
  1986. package/src/assets/images/icons/material-symbols/400/rounded/turn_right.svg +1 -0
  1987. package/src/assets/images/icons/material-symbols/400/rounded/u_turn_left.svg +1 -0
  1988. package/src/assets/images/icons/material-symbols/400/rounded/u_turn_right.svg +1 -0
  1989. package/src/assets/images/icons/material-symbols/400/rounded/unarchive.svg +8 -0
  1990. package/src/assets/images/icons/material-symbols/400/rounded/undo.svg +8 -0
  1991. package/src/assets/images/icons/material-symbols/400/rounded/unfold_more.svg +8 -0
  1992. package/src/assets/images/icons/material-symbols/400/rounded/universal-access.svg +3 -0
  1993. package/src/assets/images/icons/material-symbols/400/rounded/universal_currency_alt.svg +8 -0
  1994. package/src/assets/images/icons/material-symbols/400/rounded/update_disabled.svg +8 -0
  1995. package/src/assets/images/icons/material-symbols/400/rounded/upload.svg +8 -0
  1996. package/src/assets/images/icons/material-symbols/400/rounded/upload_file.svg +8 -0
  1997. package/src/assets/images/icons/material-symbols/400/rounded/urology.svg +8 -0
  1998. package/src/assets/images/icons/material-symbols/400/rounded/verified_user.svg +8 -0
  1999. package/src/assets/images/icons/material-symbols/400/rounded/verified_user_fill.svg +8 -0
  2000. package/src/assets/images/icons/material-symbols/400/rounded/video_call-fill.svg +1 -0
  2001. package/src/assets/images/icons/material-symbols/400/rounded/video_call.svg +1 -0
  2002. package/src/assets/images/icons/material-symbols/400/rounded/videocam-fill.svg +1 -0
  2003. package/src/assets/images/icons/material-symbols/400/rounded/videocam.svg +8 -0
  2004. package/src/assets/images/icons/material-symbols/400/rounded/videocam_off-fill.svg +1 -0
  2005. package/src/assets/images/icons/material-symbols/400/rounded/videocam_off.svg +8 -0
  2006. package/src/assets/images/icons/material-symbols/400/rounded/view_week.svg +8 -0
  2007. package/src/assets/images/icons/material-symbols/400/rounded/visibility-fill.svg +8 -0
  2008. package/src/assets/images/icons/material-symbols/400/rounded/visibility.svg +8 -0
  2009. package/src/assets/images/icons/material-symbols/400/rounded/visibility_off-fill.svg +8 -0
  2010. package/src/assets/images/icons/material-symbols/400/rounded/visibility_off.svg +8 -0
  2011. package/src/assets/images/icons/material-symbols/400/rounded/vpn_key.svg +10 -0
  2012. package/src/assets/images/icons/material-symbols/400/rounded/warning-fill.svg +1 -0
  2013. package/src/assets/images/icons/material-symbols/400/rounded/warning.svg +8 -0
  2014. package/src/assets/images/icons/material-symbols/400/rounded/water_drop.svg +8 -0
  2015. package/src/assets/images/icons/material-symbols/400/rounded/west.svg +8 -0
  2016. package/src/assets/images/icons/material-symbols/400/rounded/where_to_vote.svg +8 -0
  2017. package/src/assets/images/icons/material-symbols/400/rounded/widgets.svg +8 -0
  2018. package/src/assets/images/icons/material-symbols/400/rounded/x-square.svg +4 -0
  2019. package/src/assets/images/icons.svg +723 -0
  2020. package/src/assets/images/icons8-unpin-24.png +0 -0
  2021. package/src/assets/images/iconsnew.svg +120 -0
  2022. package/src/assets/images/id.jfif +0 -0
  2023. package/src/assets/images/identity-f.png +0 -0
  2024. package/src/assets/images/identity.png +0 -0
  2025. package/src/assets/images/idme.png +0 -0
  2026. package/src/assets/images/image.png +0 -0
  2027. package/src/assets/images/image.svg +1 -0
  2028. package/src/assets/images/image_14.jpg +0 -0
  2029. package/src/assets/images/image_15.jpg +0 -0
  2030. package/src/assets/images/inbox-img.png +0 -0
  2031. package/src/assets/images/inbox.svg +1 -0
  2032. package/src/assets/images/insurance-covers-outline.svg +7 -0
  2033. package/src/assets/images/insurance-covers.svg +3 -0
  2034. package/src/assets/images/ios-kiosk.svg +2 -0
  2035. package/src/assets/images/jpg.svg +67 -0
  2036. package/src/assets/images/kiosk-banner.png +0 -0
  2037. package/src/assets/images/link-new.svg +11 -0
  2038. package/src/assets/images/list-check.svg +8 -0
  2039. package/src/assets/images/loader.svg +56 -0
  2040. package/src/assets/images/loading.gif +0 -0
  2041. package/src/assets/images/loading.svg +18 -0
  2042. package/src/assets/images/location_on.svg +1 -0
  2043. package/src/assets/images/locked.jpg +0 -0
  2044. package/src/assets/images/log.svg +6 -0
  2045. package/src/assets/images/login-slide1.png +0 -0
  2046. package/src/assets/images/login-slide2.png +0 -0
  2047. package/src/assets/images/login-slide3.png +0 -0
  2048. package/src/assets/images/logo-1.png +0 -0
  2049. package/src/assets/images/logo-old.svg +11 -0
  2050. package/src/assets/images/logo.svg +10 -0
  2051. package/src/assets/images/logos/blob-fotor-bg-remover-2023091884651.png +0 -0
  2052. package/src/assets/images/logos/texas_logo.png +0 -0
  2053. package/src/assets/images/master-card.svg +2 -0
  2054. package/src/assets/images/master-new.svg +11 -0
  2055. package/src/assets/images/master.svg +13 -0
  2056. package/src/assets/images/medicare.jpg +0 -0
  2057. package/src/assets/images/medication.png +0 -0
  2058. package/src/assets/images/medications.svg +1 -0
  2059. package/src/assets/images/medicine.svg +16 -0
  2060. package/src/assets/images/message-icon.svg +24 -0
  2061. package/src/assets/images/mic-bg.svg +10 -0
  2062. package/src/assets/images/middleware-mobile/Android1.svg +10 -0
  2063. package/src/assets/images/middleware-mobile/IOS.svg +8 -0
  2064. package/src/assets/images/middleware-mobile/android.svg +9 -0
  2065. package/src/assets/images/middleware-mobile/apple 1.svg +9 -0
  2066. package/src/assets/images/middleware-mobile/ecare.svg +9 -0
  2067. package/src/assets/images/middleware-mobile/f-icon.svg +5 -0
  2068. package/src/assets/images/middleware-mobile/folder.svg +8 -0
  2069. package/src/assets/images/middleware-mobile/logo.svg +10 -0
  2070. package/src/assets/images/middleware-mobile/payment.svg +8 -0
  2071. package/src/assets/images/middleware-mobile/telemedicine.svg +16 -0
  2072. package/src/assets/images/middleware-mobile/web.svg +9 -0
  2073. package/src/assets/images/mobile-view-new.svg +53 -0
  2074. package/src/assets/images/mobile-view.svg +26 -0
  2075. package/src/assets/images/mobileapp.svg +13 -0
  2076. package/src/assets/images/more_option.png +0 -0
  2077. package/src/assets/images/nail-map/left-foot.svg +9 -0
  2078. package/src/assets/images/nail-map/left-hand.svg +9 -0
  2079. package/src/assets/images/nail-map/right-foot.svg +9 -0
  2080. package/src/assets/images/nail-map/right-hand.svg +9 -0
  2081. package/src/assets/images/new-19/Labs_Imaging.svg +8 -0
  2082. package/src/assets/images/new-19/attach_file.svg +8 -0
  2083. package/src/assets/images/new-19/box_edit.svg +8 -0
  2084. package/src/assets/images/new-19/clinical_notes.svg +8 -0
  2085. package/src/assets/images/new-19/close.svg +8 -0
  2086. package/src/assets/images/new-19/delete.svg +8 -0
  2087. package/src/assets/images/new-19/folder_open.svg +8 -0
  2088. package/src/assets/images/new-19/format_list_bulleted.svg +8 -0
  2089. package/src/assets/images/new-19/photo_camera.svg +8 -0
  2090. package/src/assets/images/new-19/source_notes.svg +8 -0
  2091. package/src/assets/images/new-19/splitscreen_bottom.svg +8 -0
  2092. package/src/assets/images/new-19/stack.svg +8 -0
  2093. package/src/assets/images/new-19/sticky_note_2.svg +8 -0
  2094. package/src/assets/images/new-19/thunder.svg +12 -0
  2095. package/src/assets/images/no-graphs.svg +29 -0
  2096. package/src/assets/images/no-insurance-covers-outline.svg +8 -0
  2097. package/src/assets/images/no-insurance-covers.svg +3 -0
  2098. package/src/assets/images/no-messges.svg +80 -0
  2099. package/src/assets/images/no_action_items.svg +54 -0
  2100. package/src/assets/images/no_clinical_decision_support_found.svg +25 -0
  2101. package/src/assets/images/no_documents_founds.svg +40 -0
  2102. package/src/assets/images/no_encounter_notes_found.svg +16 -0
  2103. package/src/assets/images/no_internet.svg +8 -0
  2104. package/src/assets/images/no_referrals_found.svg +30 -0
  2105. package/src/assets/images/no_templates_found.svg +43 -0
  2106. package/src/assets/images/nodata-appointments.png +0 -0
  2107. package/src/assets/images/nodata-calls.png +0 -0
  2108. package/src/assets/images/nodata-labs.png +0 -0
  2109. package/src/assets/images/nodata-medication.png +0 -0
  2110. package/src/assets/images/nodata-patient.png +0 -0
  2111. package/src/assets/images/nodata-referrals.png +0 -0
  2112. package/src/assets/images/nodata-vitals.png +0 -0
  2113. package/src/assets/images/nodata.png +0 -0
  2114. package/src/assets/images/not_found.svg +10 -0
  2115. package/src/assets/images/note-arrow.svg +4 -0
  2116. package/src/assets/images/onboarding_loader.svg +24 -0
  2117. package/src/assets/images/p-1.svg +15 -0
  2118. package/src/assets/images/p-2.svg +15 -0
  2119. package/src/assets/images/p-3.svg +15 -0
  2120. package/src/assets/images/p-4.svg +15 -0
  2121. package/src/assets/images/p-5.svg +15 -0
  2122. package/src/assets/images/p-6.svg +15 -0
  2123. package/src/assets/images/p-7.svg +10 -0
  2124. package/src/assets/images/p-8.svg +15 -0
  2125. package/src/assets/images/p-lab.svg +8 -0
  2126. package/src/assets/images/padlock.svg +7 -0
  2127. package/src/assets/images/paper.svg +1 -0
  2128. package/src/assets/images/paper_claim.svg +8 -0
  2129. package/src/assets/images/patient.png +0 -0
  2130. package/src/assets/images/pause-active.png +0 -0
  2131. package/src/assets/images/pause.png +0 -0
  2132. package/src/assets/images/pdf-1.svg +1 -0
  2133. package/src/assets/images/pdf.svg +51 -0
  2134. package/src/assets/images/person.svg +18 -0
  2135. package/src/assets/images/play-active.png +0 -0
  2136. package/src/assets/images/play.png +0 -0
  2137. package/src/assets/images/plus-button.svg +10 -0
  2138. package/src/assets/images/print_location.svg +3 -0
  2139. package/src/assets/images/profile_1.jpg +0 -0
  2140. package/src/assets/images/profile_img.jpg +0 -0
  2141. package/src/assets/images/qrcode.svg +446 -0
  2142. package/src/assets/images/reg-encounter.png +0 -0
  2143. package/src/assets/images/remove.png +0 -0
  2144. package/src/assets/images/reports.svg +9 -0
  2145. package/src/assets/images/schedule.svg +5 -0
  2146. package/src/assets/images/send.svg +8 -0
  2147. package/src/assets/images/simple-encounter.png +0 -0
  2148. package/src/assets/images/sort_ascending.svg +12 -0
  2149. package/src/assets/images/sort_descending.svg +12 -0
  2150. package/src/assets/images/sort_none.svg +13 -0
  2151. package/src/assets/images/stop-active.png +0 -0
  2152. package/src/assets/images/stop.png +0 -0
  2153. package/src/assets/images/stop_circle.svg +8 -0
  2154. package/src/assets/images/success.svg +1 -0
  2155. package/src/assets/images/successfull.png +0 -0
  2156. package/src/assets/images/summarize.svg +13 -0
  2157. package/src/assets/images/supportChat.png +0 -0
  2158. package/src/assets/images/supportChat1.png +0 -0
  2159. package/src/assets/images/tele-medicine.png +0 -0
  2160. package/src/assets/images/tele-user.png +0 -0
  2161. package/src/assets/images/temp-list.png +0 -0
  2162. package/src/assets/images/theme-1.png +0 -0
  2163. package/src/assets/images/theme-2.png +0 -0
  2164. package/src/assets/images/theme-3.png +0 -0
  2165. package/src/assets/images/thumb_down.png +0 -0
  2166. package/src/assets/images/thumb_up.png +0 -0
  2167. package/src/assets/images/time.svg +3 -0
  2168. package/src/assets/images/to-do-list.svg +1 -0
  2169. package/src/assets/images/tour_guide_1.svg +31 -0
  2170. package/src/assets/images/tour_guide_2.svg +34 -0
  2171. package/src/assets/images/tour_guide_3.svg +29 -0
  2172. package/src/assets/images/tour_guide_4.svg +23 -0
  2173. package/src/assets/images/tour_guide_5.svg +37 -0
  2174. package/src/assets/images/tour_guide_6.svg +35 -0
  2175. package/src/assets/images/tour_guide_7.svg +58 -0
  2176. package/src/assets/images/tour_guide_8.svg +73 -0
  2177. package/src/assets/images/upload-new.svg +6 -0
  2178. package/src/assets/images/upload.svg +1 -0
  2179. package/src/assets/images/user-avatar.png +0 -0
  2180. package/src/assets/images/user-blocked.png +0 -0
  2181. package/src/assets/images/user1.png +0 -0
  2182. package/src/assets/images/user1_lg.png +0 -0
  2183. package/src/assets/images/visa-card.svg +2 -0
  2184. package/src/assets/images/visa-new.svg +8 -0
  2185. package/src/assets/images/visa.png +0 -0
  2186. package/src/assets/images/visa.svg +10 -0
  2187. package/src/assets/images/vitals.svg +3 -0
  2188. package/src/assets/images/voice1.svg +9 -0
  2189. package/src/assets/images/wave.svg +1 -0
  2190. package/src/assets/images/welcome-header.png +0 -0
  2191. package/src/assets/images/welcome-intro.svg +19 -0
  2192. package/src/assets/images/welcome-intro1.svg +84 -0
  2193. package/src/assets/images/work-queues/landing-page/ai.png +0 -0
  2194. package/src/assets/images/work-queues/landing-page/claims-1.png +0 -0
  2195. package/src/assets/images/work-queues/landing-page/claims.png +0 -0
  2196. package/src/assets/images/work-queues/landing-page/conditions.png +0 -0
  2197. package/src/assets/images/xl-icon.png +0 -0
  2198. package/src/assets/logo.png +0 -0
  2199. package/src/assets/lottie/green-check.lottie +0 -0
  2200. package/src/assets/lottie/smallBlob.json +1 -0
  2201. package/src/assets/phoneRing/PhoneRingingSound.mp3 +0 -0
  2202. package/src/assets/scripts/SIPml-api.js +33514 -0
  2203. package/src/assets/scripts/annyang.min.js +7 -0
  2204. package/src/assets/scripts/api.proxynization.js +1 -0
  2205. package/src/assets/scripts/call.js +386 -0
  2206. package/src/assets/scripts/jquery-3.3.1.min.js +2 -0
  2207. package/src/assets/scripts/jquery.inputmask.min.js +8 -0
  2208. package/src/assets/scripts/jstree.min.js +6 -0
  2209. package/src/assets/scripts/scannerDocument.html +131 -0
  2210. package/src/assets/scripts/shoelace.js +321 -0
  2211. package/src/assets/scripts/tailwindcss.js +65 -0
  2212. package/src/assets/scripts/wave.js +6095 -0
  2213. package/src/assets/svg/call-fill.svg +1 -0
  2214. package/src/assets/svg/telemedicine.svg +16 -0
  2215. package/src/styles.scss +3656 -0
  2216. package/styles/_index.scss +7 -17
  2217. package/tailwind.config.js +190 -0
  2218. package/fesm2022/edvak99-voice-receptionist-widget-activities-page.component-Br2Vi1Im.mjs +0 -454
  2219. package/fesm2022/edvak99-voice-receptionist-widget-activities-page.component-Br2Vi1Im.mjs.map +0 -1
  2220. package/fesm2022/edvak99-voice-receptionist-widget-analytics-page.component-CglgGV6H.mjs +0 -276
  2221. package/fesm2022/edvak99-voice-receptionist-widget-analytics-page.component-CglgGV6H.mjs.map +0 -1
  2222. package/fesm2022/edvak99-voice-receptionist-widget-api-log.util-C0TOKF1q.mjs +0 -57
  2223. package/fesm2022/edvak99-voice-receptionist-widget-api-log.util-C0TOKF1q.mjs.map +0 -1
  2224. package/fesm2022/edvak99-voice-receptionist-widget-api-logs-page.component-DPJiuNjk.mjs +0 -226
  2225. package/fesm2022/edvak99-voice-receptionist-widget-api-logs-page.component-DPJiuNjk.mjs.map +0 -1
  2226. package/fesm2022/edvak99-voice-receptionist-widget-api-logs-table.component-CiNc65dO.mjs +0 -109
  2227. package/fesm2022/edvak99-voice-receptionist-widget-api-logs-table.component-CiNc65dO.mjs.map +0 -1
  2228. package/fesm2022/edvak99-voice-receptionist-widget-call-history-detail-page.component-ENq2c-sm.mjs +0 -513
  2229. package/fesm2022/edvak99-voice-receptionist-widget-call-history-detail-page.component-ENq2c-sm.mjs.map +0 -1
  2230. package/fesm2022/edvak99-voice-receptionist-widget-call-history-page.component-DoYJFpSa.mjs +0 -200
  2231. package/fesm2022/edvak99-voice-receptionist-widget-call-history-page.component-DoYJFpSa.mjs.map +0 -1
  2232. package/fesm2022/edvak99-voice-receptionist-widget-call-recording-player.component-GVg1g-Vq.mjs.map +0 -1
  2233. package/fesm2022/edvak99-voice-receptionist-widget-call-review.util-Deh3jPgo.mjs.map +0 -1
  2234. package/fesm2022/edvak99-voice-receptionist-widget-dashboard-page.component-B_EYljRs.mjs +0 -147
  2235. package/fesm2022/edvak99-voice-receptionist-widget-dashboard-page.component-B_EYljRs.mjs.map +0 -1
  2236. package/fesm2022/edvak99-voice-receptionist-widget-eds-avatar.component-BJs_TH8X.mjs +0 -38
  2237. package/fesm2022/edvak99-voice-receptionist-widget-eds-avatar.component-BJs_TH8X.mjs.map +0 -1
  2238. package/fesm2022/edvak99-voice-receptionist-widget-eds-elapsed.pipe-BFCiJOT3.mjs.map +0 -1
  2239. package/fesm2022/edvak99-voice-receptionist-widget-eds-search-field.component-OGRDvYBp.mjs.map +0 -1
  2240. package/fesm2022/edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-pS2jeB4x.mjs +0 -4089
  2241. package/fesm2022/edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-pS2jeB4x.mjs.map +0 -1
  2242. package/fesm2022/edvak99-voice-receptionist-widget-live-calls-page.component-1woGuh0J.mjs +0 -74
  2243. package/fesm2022/edvak99-voice-receptionist-widget-live-calls-page.component-1woGuh0J.mjs.map +0 -1
  2244. package/fesm2022/edvak99-voice-receptionist-widget-live-monitor-page.component-ihwm1LNn.mjs +0 -1057
  2245. package/fesm2022/edvak99-voice-receptionist-widget-live-monitor-page.component-ihwm1LNn.mjs.map +0 -1
  2246. package/fesm2022/edvak99-voice-receptionist-widget-modal.component-uYApl1KF.mjs +0 -48
  2247. package/fesm2022/edvak99-voice-receptionist-widget-modal.component-uYApl1KF.mjs.map +0 -1
  2248. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purposes-page.component-B2koBFU3.mjs +0 -390
  2249. package/fesm2022/edvak99-voice-receptionist-widget-outbound-purposes-page.component-B2koBFU3.mjs.map +0 -1
  2250. package/fesm2022/edvak99-voice-receptionist-widget-settings-page.component-C6F-Hgmk.mjs +0 -1056
  2251. package/fesm2022/edvak99-voice-receptionist-widget-settings-page.component-C6F-Hgmk.mjs.map +0 -1
  2252. package/fesm2022/edvak99-voice-receptionist-widget-task-detail-drawer.component-BojdiNNx.mjs +0 -194
  2253. package/fesm2022/edvak99-voice-receptionist-widget-task-detail-drawer.component-BojdiNNx.mjs.map +0 -1
  2254. package/fesm2022/edvak99-voice-receptionist-widget-tasks-page.component-Cf76XyCz.mjs +0 -146
  2255. package/fesm2022/edvak99-voice-receptionist-widget-tasks-page.component-Cf76XyCz.mjs.map +0 -1
  2256. package/fesm2022/edvak99-voice-receptionist-widget-wizard-page.component-BQTlz2F5.mjs +0 -45
  2257. package/fesm2022/edvak99-voice-receptionist-widget-wizard-page.component-BQTlz2F5.mjs.map +0 -1
  2258. package/lib/components/api-health-widget/api-health-widget.component.d.ts +0 -16
  2259. package/lib/components/api-log-detail-drawer/api-log-detail-drawer.component.d.ts +0 -29
  2260. package/lib/components/api-logs-call-panel/api-logs-call-panel.component.d.ts +0 -23
  2261. package/lib/components/api-logs-table/api-logs-table.component.d.ts +0 -21
  2262. package/lib/guards/api-logs-standalone.guard.d.ts +0 -6
  2263. package/lib/pages/api-logs-page/api-logs-page.component.d.ts +0 -50
  2264. package/lib/ui/eds-avatar.component.d.ts +0 -11
  2265. package/lib/ui/eds-icon.component.d.ts +0 -10
  2266. package/lib/utils/api-log.util.d.ts +0 -11
  2267. package/styles/chat-ui.scss +0 -132
  2268. package/styles/eds.scss +0 -387
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edvak99-voice-receptionist-widget-edvak99-voice-receptionist-widget-Dtc9wTzh.mjs","sources":["../../../src/lib/config.ts","../../../src/lib/provide-voice-receptionist.ts","../../../src/lib/api-paths.ts","../../../src/lib/extract-api-rows.ts","../../../src/lib/models/outbound-patient.types.ts","../../../src/lib/models/staff-media.types.ts","../../../src/lib/models/agent-activity.types.ts","../../../src/lib/models/pagination.ts","../../../src/lib/utils/welcome-message.util.ts","../../../src/lib/utils/call-history-display.util.ts","../../../src/lib/utils/tool-labels.util.ts","../../../src/lib/services/ai-receptionist-api.mappers.ts","../../../src/lib/mocks/api-log.seed.ts","../../../src/lib/mocks/seed-data.ts","../../../src/lib/mocks/outbound-purpose.seed.ts","../../../src/lib/mocks/agent-activity.seed.ts","../../../src/lib/services/ai-receptionist-api.mock.ts","../../../src/lib/services/ai-receptionist-api.service.ts","../../../src/lib/services/agent-online.service.ts","../../../src/lib/shared/toast.service.ts","../../../src/lib/shared/toast-container.component.ts","../../../src/lib/shared/toast-container.component.html","../../../src/lib/ui/ed-button.component.ts","../../../src/lib/ui/ed-button.component.html","../../../src/lib/ui/ed-skeleton.component.ts","../../../src/lib/ui/ed-icon.component.ts","../../../src/lib/shared/modal.component.ts","../../../src/lib/shared/modal.component.html","../../../src/lib/components/knowledge-test-modal/knowledge-test-modal.component.ts","../../../src/lib/components/knowledge-test-modal/knowledge-test-modal.component.html","../../../src/lib/ui/ed-icon-button.component.ts","../../../src/lib/ui/ed-icon-button.component.html","../../../src/lib/pages/settings-page/tts-voice-presets.ts","../../../src/lib/pages/settings-page/settings-fields.config.ts","../../../src/lib/pages/settings-page/settings-page.component.ts","../../../src/lib/pages/settings-page/settings-page.component.html","../../../src/lib/services/agent-settings-drawer.service.ts","../../../src/lib/shared/viewport-portal.directive.ts","../../../src/lib/components/agent-settings-drawer/agent-settings-drawer.component.ts","../../../src/lib/components/agent-settings-drawer/agent-settings-drawer.component.html","../../../src/lib/layout/eds-module-nav.component.ts","../../../src/lib/layout/eds-module-nav.component.html","../../../src/lib/layout/eds-route-progress.component.ts","../../../src/lib/ui/ed-avatar.component.ts","../../../src/lib/layout/eds-topbar.component.ts","../../../src/lib/layout/eds-topbar.component.html","../../../src/lib/layout/eds-app-shell.component.ts","../../../src/lib/layout/eds-app-shell.component.html","../../../src/lib/services/dashboard-socket.service.ts","../../../src/lib/services/live-calls-list.service.ts","../../../src/lib/pages/live-calls-page/live-calls-shell.component.ts","../../../src/lib/routes.ts","../../../src/lib/ui/eds-badge.component.ts","../../../src/lib/ui/eds-button.component.ts","../../../src/public-api.ts","../../../src/edvak99-voice-receptionist-widget.ts"],"sourcesContent":["import { InjectionToken, Signal } from '@angular/core';\n\n/** Host-provided session for topbar / admin-only nav. */\nexport interface VoiceReceptionistSession {\n /** Current user email for display. */\n readonly email: Signal<string | null>;\n /** Current role when the host knows it (used for super-admin API log filters). */\n readonly role?: Signal<string | null>;\n isAdmin(): boolean;\n /** Optional; falls back to role-based detection when omitted. */\n isSuperAdmin?(): boolean;\n logout(): void;\n}\n\nexport interface VoiceReceptionistConfig {\n /** Backend base URL (no trailing slash), e.g. https://api.example.com */\n apiBaseUrl: string;\n /** Use in-memory mock API (local demos). Default false. */\n useMockApi?: boolean;\n callLogsLimit?: number;\n liveCallsPollIntervalMs?: number;\n /**\n * Show Practice nav links (patients / providers / appointments / admin).\n * Enable in the standalone Voice Hub host; leave false for EHR embed.\n */\n includePracticeNav?: boolean;\n /**\n * Show the AI Receptionist side nav (Dashboard, Live Calls, …).\n * Default false for EHR embed (host owns primary nav). Standalone Voice Hub should set true.\n */\n showModuleNav?: boolean;\n}\n\nexport const VOICE_RECEPTIONIST_CONFIG = new InjectionToken<VoiceReceptionistConfig>(\n 'VOICE_RECEPTIONIST_CONFIG',\n);\n\nexport const VOICE_RECEPTIONIST_SESSION = new InjectionToken<VoiceReceptionistSession | null>(\n 'VOICE_RECEPTIONIST_SESSION',\n { factory: () => null },\n);\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nimport {\n VOICE_RECEPTIONIST_CONFIG,\n VOICE_RECEPTIONIST_SESSION,\n VoiceReceptionistConfig,\n VoiceReceptionistSession,\n} from './config';\n\nexport interface ProvideVoiceReceptionistOptions extends VoiceReceptionistConfig {\n session?: VoiceReceptionistSession | null;\n}\n\nexport function provideVoiceReceptionist(\n options: ProvideVoiceReceptionistOptions,\n): EnvironmentProviders {\n const { session, ...config } = options;\n const providers: { provide: unknown; useValue: unknown }[] = [\n { provide: VOICE_RECEPTIONIST_CONFIG, useValue: config },\n ];\n // Only set SESSION when the host passes one — otherwise leave the token\n // unset so a separate host factory (or the token default) can provide it.\n if (session !== undefined) {\n providers.push({ provide: VOICE_RECEPTIONIST_SESSION, useValue: session });\n }\n return makeEnvironmentProviders(providers);\n}\n","import { VoiceReceptionistConfig } from './config';\n\nexport interface VoiceReceptionistPaths {\n apiRoot(): string;\n authPath(suffix?: string): string;\n v1Path(suffix?: string): string;\n apiPath(suffix?: string): string;\n aiReceptionistPath(suffix?: string): string;\n healthPath(suffix?: string): string;\n}\n\n/** Build URL helpers from a config (or raw base URL). Safe outside injection context. */\nexport function createVoiceReceptionistPaths(\n configOrBase: VoiceReceptionistConfig | string,\n): VoiceReceptionistPaths {\n const base =\n typeof configOrBase === 'string' ? configOrBase : configOrBase.apiBaseUrl;\n const root = base.replace(/\\/$/, '');\n\n return {\n apiRoot: () => root,\n authPath: (suffix = '') => `${root}/api/auth${suffix}`,\n v1Path: (suffix = '') => `${root}/api/v1${suffix}`,\n apiPath: (suffix = '') => `${root}/api${suffix}`,\n aiReceptionistPath: (suffix = '') => `${root}/api/ai-receptionist${suffix}`,\n healthPath: (suffix = '') => `${root}/health${suffix}`,\n };\n}\n","/** Normalize list/detail API payloads into a row array. */\nexport function extractApiRows(body: unknown): unknown[] {\n if (Array.isArray(body)) return body;\n if (!body || typeof body !== 'object') return [];\n const o = body as Record<string, unknown>;\n const list = o['items'] ?? o['patients'] ?? o['appointments'] ?? o['providers'] ?? o['data'];\n if (Array.isArray(list)) return list;\n if (o['patientId'] || o['patient_id'] || o['appointmentId'] || o['appointment_id']) {\n return [body];\n }\n return [];\n}\n","/** Lightweight patient hit for outbound dialer typeahead. */\nexport interface OutboundPatientHit {\n patientId: string;\n firstName: string;\n lastName: string;\n fullName: string;\n phone: string | null;\n dob: string | null;\n}\n\n/** Upcoming appointment option for a selected patient. */\nexport interface OutboundAppointmentHit {\n appointmentId: string;\n startTime: string | null;\n endTime: string | null;\n providerName: string | null;\n locationName: string | null;\n status: string | null;\n visitType: string | null;\n}\n\nexport function mapOutboundPatientHit(raw: unknown): OutboundPatientHit | null {\n if (!raw || typeof raw !== 'object') return null;\n const r = raw as Record<string, unknown>;\n const patientId = String(r['patientId'] ?? r['patient_id'] ?? r['id'] ?? '').trim();\n if (!patientId) return null;\n const firstName = String(r['firstName'] ?? r['first_name'] ?? '').trim();\n const lastName = String(r['lastName'] ?? r['last_name'] ?? '').trim();\n const full =\n String(r['fullName'] ?? r['full_name'] ?? r['name'] ?? '').trim() ||\n [firstName, lastName].filter(Boolean).join(' ');\n const phone = String(r['mobilePhone'] ?? r['phone'] ?? r['mobile_phone'] ?? '').trim() || null;\n const dobRaw = String(r['dateOfBirth'] ?? r['dob'] ?? '').trim();\n return {\n patientId,\n firstName,\n lastName,\n fullName: full || 'Unknown patient',\n phone,\n dob: dobRaw ? dobRaw.slice(0, 10) : null,\n };\n}\n\nexport function mapOutboundAppointmentHit(raw: unknown): OutboundAppointmentHit | null {\n if (!raw || typeof raw !== 'object') return null;\n const r = raw as Record<string, unknown>;\n const appointmentId = String(\n r['appointmentId'] ?? r['appointment_id'] ?? r['id'] ?? '',\n ).trim();\n if (!appointmentId) return null;\n\n const providerObj =\n r['provider'] && typeof r['provider'] === 'object'\n ? (r['provider'] as Record<string, unknown>)\n : null;\n const locationObj =\n r['location'] && typeof r['location'] === 'object'\n ? (r['location'] as Record<string, unknown>)\n : null;\n const visitObj =\n r['visitType'] && typeof r['visitType'] === 'object'\n ? (r['visitType'] as Record<string, unknown>)\n : null;\n\n const providerName =\n String(\n r['providerName'] ??\n r['provider_name'] ??\n providerObj?.['fullName'] ??\n [providerObj?.['firstName'], providerObj?.['lastName']].filter(Boolean).join(' ') ??\n '',\n ).trim() || null;\n\n const locationName =\n String(\n r['locationName'] ?? r['location_name'] ?? locationObj?.['locationName'] ?? '',\n ).trim() || null;\n\n const visitTypeRaw = r['visitType'];\n const visitType =\n (typeof visitTypeRaw === 'string' ? visitTypeRaw.trim() : '') ||\n String(\n r['visitTypeName'] ??\n r['visit_type'] ??\n visitObj?.['visitTypeName'] ??\n visitObj?.['name'] ??\n '',\n ).trim() ||\n null;\n\n return {\n appointmentId,\n startTime: String(r['startTime'] ?? r['start_time'] ?? '').trim() || null,\n endTime: String(r['endTime'] ?? r['end_time'] ?? '').trim() || null,\n providerName,\n locationName,\n status: String(r['appointmentStatus'] ?? r['status'] ?? r['visitStatus'] ?? '').trim() || null,\n visitType,\n };\n}\n\n/** Best-effort E.164 for US/local numbers used in dialer. */\nexport function toE164Phone(raw: string | null | undefined): string {\n const digits = String(raw ?? '').replace(/\\D/g, '');\n if (!digits) return '';\n if (String(raw ?? '').trim().startsWith('+') && /^\\+[1-9]\\d{6,14}$/.test(String(raw).trim())) {\n return String(raw).trim();\n }\n if (digits.length === 10) return `+1${digits}`;\n if (digits.length === 11 && digits.startsWith('1')) return `+${digits}`;\n if (digits.length >= 8) return `+${digits}`;\n return String(raw ?? '').trim();\n}\n","import { CallControlMode } from './ai-receptionist.types';\n\n/** Staff softphone join modes. */\nexport type StaffMediaMode = 'listen' | 'takeover';\n\n/**\n * Response from POST /calls/:callId/media/join (also takeover / listen).\n * Staff join the existing LiveKit room `call-{callId}` — not Vonage Conversation.\n */\nexport interface StaffMediaJoinResult {\n ok: boolean;\n callId: string;\n mode: StaffMediaMode;\n provider: 'livekit' | string;\n /** LiveKit WebSocket URL for Room.connect */\n livekitUrl: string;\n /** Short-lived LiveKit access token — never a server secret */\n clientToken: string;\n tokenExpiresAt?: string | null;\n conversationId?: string | null;\n memberId?: string | null;\n roomName?: string | null;\n iceServers?: unknown[];\n controlMode?: CallControlMode | string | null;\n aiPaused?: boolean;\n /** True once staff took over — the AI left the call and cannot be resumed. */\n aiHandedOff?: boolean;\n assigned?: string | null;\n}\n\nexport interface CallControlChangedEvent {\n callId: string;\n controlMode?: CallControlMode | string | null;\n aiPaused?: boolean;\n aiHandedOff?: boolean;\n assigned?: string | null;\n status?: string | null;\n}\n\nexport function mapStaffMediaJoinResult(raw: unknown): StaffMediaJoinResult | null {\n if (!raw || typeof raw !== 'object') return null;\n const r = raw as Record<string, unknown>;\n const data =\n r['data'] && typeof r['data'] === 'object'\n ? (r['data'] as Record<string, unknown>)\n : r;\n\n const livekitUrl = String(\n data['livekitUrl'] ?? data['livekit_url'] ?? data['url'] ?? '',\n ).trim();\n const clientToken = String(\n data['clientToken'] ?? data['client_token'] ?? data['token'] ?? '',\n ).trim();\n const modeRaw = String(data['mode'] ?? 'takeover').toLowerCase();\n const mode: StaffMediaMode = modeRaw === 'listen' ? 'listen' : 'takeover';\n\n if (!livekitUrl || !clientToken) return null;\n\n return {\n ok: data['ok'] !== false,\n callId: String(data['callId'] ?? data['call_id'] ?? ''),\n mode,\n provider: String(data['provider'] ?? 'livekit'),\n livekitUrl,\n clientToken,\n tokenExpiresAt: strOrNull(data['tokenExpiresAt'] ?? data['token_expires_at']),\n conversationId: strOrNull(data['conversationId'] ?? data['conversation_id']),\n memberId: strOrNull(data['memberId'] ?? data['member_id']),\n roomName: strOrNull(data['roomName'] ?? data['room_name']),\n iceServers: Array.isArray(data['iceServers']) ? data['iceServers'] : undefined,\n controlMode: strOrNull(data['controlMode'] ?? data['control_mode']),\n aiPaused:\n typeof data['aiPaused'] === 'boolean'\n ? data['aiPaused']\n : typeof data['ai_paused'] === 'boolean'\n ? (data['ai_paused'] as boolean)\n : mode === 'takeover',\n aiHandedOff:\n typeof data['aiHandedOff'] === 'boolean'\n ? data['aiHandedOff']\n : mode === 'takeover',\n assigned: strOrNull(data['assigned']),\n };\n}\n\nfunction strOrNull(value: unknown): string | null {\n const s = String(value ?? '').trim();\n return s || null;\n}\n","/** Agent activity feed item (patients, appointments, tasks created by AI). */\nexport type AgentActivityType =\n | 'patient_created'\n | 'appointment_booked'\n | 'task_created'\n | string;\n\nexport type ActivitiesTab = 'task_created' | 'appointment_booked' | 'patient_created';\n\nexport interface AgentActivity {\n id: string;\n type: AgentActivityType;\n occurredAt: string;\n title: string;\n detail: string;\n patientId?: string | null;\n patientName?: string | null;\n appointmentId?: string | null;\n taskId?: string | null;\n callId?: string | null;\n /** Appointment window start (ISO or date string). */\n startAt?: string | null;\n /** Appointment window end (ISO). */\n endAt?: string | null;\n durationMinutes?: number | null;\n /** Visit / appointment category shown under the time. */\n visitType?: string | null;\n practiceName?: string | null;\n patientDob?: string | null;\n patientAge?: number | null;\n patientGender?: string | null;\n patientInitials?: string | null;\n /** Medical record number when known. */\n patientMrn?: string | null;\n /** True/false when the backend knows the coverage status; null when it never told us. */\n hasInsurance?: boolean | null;\n /** Payer / plan name, shown as the insurance tooltip when present. */\n insuranceName?: string | null;\n providerId?: string | null;\n providerName?: string | null;\n providerInitials?: string | null;\n providerSpecialty?: string | null;\n /** Task priority for task_created rows. */\n priority?: ActivityPriority | null;\n}\n\nexport type ActivityPriority = 'urgent' | 'high' | 'medium' | 'low' | 'normal';\n\nexport interface AgentActivityFilters {\n page?: number;\n limit?: number;\n /** Comma-separated or multi types filter. */\n types?: string;\n search?: string;\n from?: string;\n to?: string;\n /** Restrict to activities created during a specific call. */\n callId?: string;\n}\n\nexport function mapAgentActivity(raw: unknown, index = 0): AgentActivity {\n if (!raw || typeof raw !== 'object') {\n return {\n id: `activity-${index}`,\n type: 'unknown',\n occurredAt: new Date().toISOString(),\n title: 'Activity',\n detail: '',\n };\n }\n const r = raw as Record<string, unknown>;\n const nestedPatient = asRecord(r['patient']);\n const nestedProvider = asRecord(r['provider'] ?? r['practitioner'] ?? r['doctor']);\n\n const type = String(r['type'] ?? r['activityType'] ?? 'unknown');\n const patientName =\n strOrNull(r['patientName'] ?? r['patient_name']) ?? strOrNull(nestedPatient?.['name']);\n const providerName =\n strOrNull(\n r['providerName'] ??\n r['provider_name'] ??\n r['practitionerName'] ??\n r['practitioner_name'] ??\n r['doctorName'] ??\n r['doctor_name'],\n ) ?? strOrNull(nestedProvider?.['name']);\n\n const detail = String(r['detail'] ?? r['description'] ?? '').trim();\n const parsed = parseActivityDetail(detail);\n const insurance = resolveInsurance(r, nestedPatient);\n\n const visitType =\n strOrNull(r['visitType'] ?? r['visit_type'] ?? r['category'] ?? r['reason']) ??\n parsed.visitType;\n const startAt =\n strOrNull(r['startAt'] ?? r['start_at'] ?? r['appointmentStart'] ?? r['appointment_start']) ??\n parsed.startAt;\n const endAt = strOrNull(r['endAt'] ?? r['end_at'] ?? r['appointmentEnd'] ?? r['appointment_end']);\n const practiceName =\n strOrNull(r['practiceName'] ?? r['practice_name'] ?? r['location'] ?? r['clinic']) ??\n parsed.practiceName;\n\n return {\n id: String(r['id'] ?? r['activityId'] ?? `activity-${index}`),\n type,\n occurredAt: String(r['occurredAt'] ?? r['occurred_at'] ?? r['createdAt'] ?? ''),\n title: String(r['title'] ?? r['summary'] ?? '').trim() || activityTypeLabel(type),\n detail,\n patientId: strOrNull(r['patientId'] ?? r['patient_id'] ?? nestedPatient?.['id']),\n patientName,\n appointmentId: strOrNull(r['appointmentId'] ?? r['appointment_id']),\n taskId: strOrNull(r['taskId'] ?? r['task_id']),\n callId: strOrNull(r['callId'] ?? r['call_id']),\n startAt,\n endAt,\n durationMinutes: numOrNull(r['durationMinutes'] ?? r['duration_minutes'] ?? r['duration']),\n visitType,\n practiceName,\n patientDob: strOrNull(\n r['patientDob'] ?? r['patient_dob'] ?? r['dob'] ?? nestedPatient?.['dob'],\n ),\n patientAge: numOrNull(\n r['patientAge'] ?? r['patient_age'] ?? r['age'] ?? nestedPatient?.['age'],\n ),\n patientGender: normalizeGender(\n r['patientGender'] ?? r['patient_gender'] ?? r['gender'] ?? nestedPatient?.['gender'],\n ),\n patientInitials:\n strOrNull(\n r['patientInitials'] ??\n r['patient_initials'] ??\n r['initials'] ??\n nestedPatient?.['initials'],\n ) ?? initialsFromName(patientName),\n patientMrn: strOrNull(\n r['patientMrn'] ??\n r['patient_mrn'] ??\n r['mrn'] ??\n r['MRN'] ??\n nestedPatient?.['mrn'] ??\n nestedPatient?.['MRN'],\n ),\n hasInsurance: insurance.hasInsurance,\n insuranceName: insurance.name,\n providerId: strOrNull(\n r['providerId'] ?? r['provider_id'] ?? nestedProvider?.['id'],\n ),\n providerName,\n providerInitials:\n strOrNull(\n r['providerInitials'] ??\n r['provider_initials'] ??\n nestedProvider?.['initials'],\n ) ?? initialsFromName(providerName),\n providerSpecialty: strOrNull(\n r['providerSpecialty'] ??\n r['provider_specialty'] ??\n r['specialty'] ??\n nestedProvider?.['specialty'] ??\n nestedProvider?.['speciality'],\n ),\n priority: normalizePriority(r['priority'] ?? r['taskPriority'] ?? r['task_priority']),\n };\n}\n\nconst INSURED_WORDS = ['active', 'verified', 'covered', 'insured', 'yes', 'true', 'eligible'];\nconst UNINSURED_WORDS = [\n 'none',\n 'no',\n 'false',\n 'uninsured',\n 'self_pay',\n 'self-pay',\n 'selfpay',\n 'inactive',\n 'expired',\n 'missing',\n];\n\n/**\n * Coverage can arrive as a boolean, a status string, a payer name or a nested object.\n * Unknown stays null so the UI can distinguish \"no coverage\" from \"never told us\".\n */\nfunction resolveInsurance(\n r: Record<string, unknown>,\n patient: Record<string, unknown> | null,\n): { hasInsurance: boolean | null; name: string | null } {\n const nested = asRecord(r['insurance'] ?? patient?.['insurance']);\n\n const name =\n strOrNull(\n r['insuranceName'] ??\n r['insurance_name'] ??\n r['payerName'] ??\n r['payer_name'] ??\n r['payer'] ??\n patient?.['insuranceName'] ??\n patient?.['insurance_name'] ??\n nested?.['name'] ??\n nested?.['payer'] ??\n nested?.['planName'],\n ) ?? (typeof r['insurance'] === 'string' ? strOrNull(r['insurance']) : null);\n\n const flag =\n firstBoolean([\n r['hasInsurance'],\n r['has_insurance'],\n r['insured'],\n r['isInsured'],\n patient?.['hasInsurance'],\n patient?.['has_insurance'],\n patient?.['insured'],\n nested?.['active'],\n nested?.['isActive'],\n ]);\n if (flag !== null) return { hasInsurance: flag, name };\n\n const status = String(\n r['insuranceStatus'] ??\n r['insurance_status'] ??\n patient?.['insuranceStatus'] ??\n patient?.['insurance_status'] ??\n nested?.['status'] ??\n (typeof r['insurance'] === 'string' ? r['insurance'] : '') ??\n '',\n )\n .trim()\n .toLowerCase();\n if (status) {\n if (INSURED_WORDS.includes(status)) return { hasInsurance: true, name };\n if (UNINSURED_WORDS.includes(status)) return { hasInsurance: false, name };\n }\n\n // A payer name on its own implies coverage.\n return { hasInsurance: name ? true : null, name };\n}\n\nfunction firstBoolean(values: unknown[]): boolean | null {\n for (const value of values) {\n if (typeof value === 'boolean') return value;\n }\n return null;\n}\n\n/** Pull visit type / slot / practice out of a messy free-text detail blob. */\nfunction parseActivityDetail(detail: string): {\n visitType: string | null;\n startAt: string | null;\n practiceName: string | null;\n} {\n if (!detail) return { visitType: null, startAt: null, practiceName: null };\n\n const visitMatch = /\\(([^)]+)\\)\\s*$/.exec(detail);\n const visitType = visitMatch?.[1]?.trim() || null;\n\n const dateMatch =\n /\\bfor\\s+(\\d{4}-\\d{2}-\\d{2})(?:\\s+(\\d{1,2}:\\d{2}(?::\\d{2})?))?/i.exec(detail) ??\n /\\b(\\d{4}-\\d{2}-\\d{2})[ T](\\d{1,2}:\\d{2}(?::\\d{2})?)/.exec(detail);\n let startAt: string | null = null;\n if (dateMatch) {\n const date = dateMatch[1];\n const time = dateMatch[2] ? dateMatch[2].padStart(5, '0') : '00:00';\n startAt = `${date}T${time.length === 5 ? `${time}:00` : time}`;\n }\n\n const practiceMatch = /\\bAT\\s+([A-Z0-9][A-Z0-9 ,.'&-]{2,}?)(?:\\s*\\(|$)/.exec(detail);\n const practiceName = practiceMatch?.[1]?.trim().replace(/,\\s*$/, '') || null;\n\n return { visitType, startAt, practiceName };\n}\n\nexport function activityTypeLabel(type: string): string {\n switch (type) {\n case 'patient_created':\n return 'Patient created';\n case 'appointment_booked':\n return 'Appointment booked';\n case 'task_created':\n return 'Task created';\n default:\n return type.replace(/_/g, ' ') || 'Activity';\n }\n}\n\nexport function initialsFromName(name: string | null | undefined): string | null {\n if (!name?.trim()) return null;\n const cleaned = name.replace(/^dr\\.?\\s+/i, '').trim();\n const parts = cleaned.split(/\\s+/).filter(Boolean);\n if (!parts.length) return null;\n if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase();\n return `${parts[0][0] ?? ''}${parts[parts.length - 1][0] ?? ''}`.toUpperCase();\n}\n\nfunction normalizeGender(value: unknown): string | null {\n const s = String(value ?? '').trim();\n if (!s) return null;\n const key = s.toLowerCase();\n if (key === 'm' || key === 'male') return 'M';\n if (key === 'f' || key === 'female') return 'F';\n if (key === 'o' || key === 'other' || key === 'non-binary' || key === 'nonbinary') return 'O';\n return s.length <= 3 ? s.toUpperCase() : s;\n}\n\nfunction normalizePriority(value: unknown): ActivityPriority | null {\n const key = String(value ?? '')\n .trim()\n .toLowerCase()\n .replace(/[\\s-]+/g, '_');\n if (!key) return null;\n if (key === 'urgent' || key === 'critical') return 'urgent';\n if (key === 'high') return 'high';\n if (key === 'medium' || key === 'med' || key === 'normal') return 'medium';\n if (key === 'low') return 'low';\n return null;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n return value && typeof value === 'object' && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : null;\n}\n\nfunction strOrNull(value: unknown): string | null {\n const s = String(value ?? '').trim();\n return s || null;\n}\n\nfunction numOrNull(value: unknown): number | null {\n if (value == null || value === '') return null;\n const n = Number(value);\n return Number.isFinite(n) ? n : null;\n}\n","/** Standard list pagination envelope from AI Receptionist APIs. */\nexport interface PaginatedResult<T> {\n items: T[];\n total: number;\n page: number;\n limit: number;\n}\n\nexport const DEFAULT_PAGE_SIZE = 50;\n\n/** Parse `{ items, total, page, limit }` or a bare array (legacy). */\nexport function asPaginatedResult<T>(\n body: unknown,\n fallbackPage = 1,\n fallbackLimit = DEFAULT_PAGE_SIZE,\n): PaginatedResult<T> {\n if (Array.isArray(body)) {\n return {\n items: body as T[],\n total: body.length,\n page: fallbackPage,\n limit: fallbackLimit,\n };\n }\n if (!body || typeof body !== 'object') {\n return { items: [], total: 0, page: fallbackPage, limit: fallbackLimit };\n }\n const o = body as Record<string, unknown>;\n const rawItems = o['items'] ?? o['data'];\n const items = Array.isArray(rawItems) ? (rawItems as T[]) : [];\n const total = typeof o['total'] === 'number' ? o['total'] : items.length;\n const page = typeof o['page'] === 'number' ? o['page'] : fallbackPage;\n const limit = typeof o['limit'] === 'number' ? o['limit'] : fallbackLimit;\n return { items, total, page, limit };\n}\n\nexport function totalPages(total: number, pageSize: number): number {\n return Math.max(1, Math.ceil(total / pageSize));\n}\n","import { AgentSettings } from '../models/ai-receptionist.types';\n\nexport const WELCOME_MESSAGE_MAX = 1000;\n\nexport function buildAutoWelcomeTemplate(practiceName: string, agentName: string): string {\n const practice = practiceName.trim() || 'our office';\n const agent = agentName.trim() || 'your AI receptionist';\n return `Hi, thanks for calling ${practice}. This is ${agent}. How can I help you today?`;\n}\n\nexport function resolveWelcomePreview(\n welcomeMessage: string | undefined,\n practiceName: string,\n agentName: string,\n): string {\n const custom = welcomeMessage?.trim();\n if (custom) return custom;\n return buildAutoWelcomeTemplate(practiceName, agentName);\n}\n\nexport function computeEffectiveWelcomeMessage(settings: Pick<AgentSettings, 'general'>): string {\n const general = settings.general;\n const custom = String(general['welcomeMessage'] ?? '').trim();\n if (custom) return custom;\n return buildAutoWelcomeTemplate(\n String(general['practiceName'] ?? ''),\n String(general['agentName'] ?? ''),\n );\n}\n","/** Call history table helpers — resolution badges + result chips. */\n\nexport type HistoryResolution = 'resolved' | 'needs_attention';\n\nexport function historyResolution(input: {\n outcome?: string;\n resolution?: string | null;\n risk?: 'urgent' | 'review' | null;\n}): HistoryResolution {\n if (input.risk === 'urgent' || input.risk === 'review') return 'needs_attention';\n\n const r = String(input.resolution ?? '').trim().toLowerCase();\n if (r === 'resolved') return 'resolved';\n if (r === 'unresolved' || r.includes('needs') || r.includes('attention')) {\n return 'needs_attention';\n }\n\n const o = String(input.outcome ?? '').toLowerCase();\n if (\n o.includes('unresolved') ||\n o.includes('fail') ||\n o.includes('escalat') ||\n o.includes('abandon') ||\n o.includes('attention') ||\n o.includes('voicemail') ||\n o === 'transferred'\n ) {\n return 'needs_attention';\n }\n if (o === 'completed' || o.includes('completed')) return 'resolved';\n return 'resolved';\n}\n\nexport function historyResolutionLabel(resolution: HistoryResolution): string {\n return resolution === 'resolved' ? 'RESOLVED' : 'NEEDS ATTENTION';\n}\n\nexport function resultChipIcon(label: string): string {\n const key = label.toLowerCase();\n if (key.includes('appointment') || key.includes('book')) return 'calendar_month';\n if (key.includes('task')) return 'check_circle';\n if (key.includes('register') || key.includes('patient')) return 'person_add';\n if (key.includes('info')) return 'info';\n if (key.includes('transfer')) return 'phone_forwarded';\n if (key.includes('refill')) return 'medication';\n return 'label';\n}\n\nexport function callerMetaLine(input: {\n dob?: string | null;\n age?: number | null;\n gender?: string | null;\n phone?: string | null;\n name?: string | null;\n matched?: boolean;\n}): string {\n if (isUnknownCaller(input.name, input.matched)) {\n return String(input.phone ?? '').trim() || '—';\n }\n const age = input.age ?? ageFromDob(input.dob);\n if (!input.dob && age == null && !input.gender) {\n return String(input.phone ?? '').trim() || '—';\n }\n const parts: string[] = [];\n if (input.dob) {\n parts.push(`DOB: ${formatDobDisplay(input.dob)}`);\n }\n const ageGender: string[] = [];\n if (age != null) ageGender.push(`${age}Y`);\n if (input.gender) ageGender.push(String(input.gender).charAt(0).toUpperCase());\n if (ageGender.length) {\n parts.push(parts.length ? `• ${ageGender.join(' | ')}` : ageGender.join(' | '));\n }\n return parts.join(' ') || String(input.phone ?? '').trim() || '—';\n}\n\nfunction formatDobDisplay(dob: string): string {\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})/.exec(dob.trim());\n if (m) return `${m[2]}-${m[3]}-${m[1]}`;\n return dob;\n}\n\n/** Age in whole years from YYYY-MM-DD (or partial ISO). */\nexport function ageFromDob(dob: string | null | undefined, at = new Date()): number | null {\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})/.exec(String(dob ?? '').trim());\n if (!m) return null;\n const y = Number(m[1]);\n const mo = Number(m[2]);\n const d = Number(m[3]);\n if (!y || !mo || !d) return null;\n let age = at.getFullYear() - y;\n const hadBirthday =\n at.getMonth() + 1 > mo || (at.getMonth() + 1 === mo && at.getDate() >= d);\n if (!hadBirthday) age -= 1;\n return age >= 0 && age < 130 ? age : null;\n}\n\nexport function isUnknownCaller(name: string | null | undefined, matched?: boolean): boolean {\n if (matched === false) return true;\n const n = String(name ?? '').trim();\n return !n || /^unknown/i.test(n) || n === '?';\n}\n\n/** Derive result chips from explicit actions, else from outcome text. */\nexport function historyResultChips(results: string[] | undefined, outcome: string): string[] {\n if (results?.length) return results;\n const o = outcome.trim();\n if (!o) return [];\n const lower = o.toLowerCase();\n if (lower.includes('appointment') || lower.includes('book')) return ['Appointment Booked'];\n if (lower.includes('task')) return ['Task Created'];\n if (lower.includes('register')) return ['Patient Registered'];\n if (lower.includes('info') || lower.includes('hours') || lower.includes('direction')) {\n return ['Information Provided'];\n }\n if (lower === 'completed') return ['Information Provided'];\n return [o];\n}\n","/** V3 agent tool labels — mirrors GET /api/agent-tools/catalog */\nexport const AGENT_TOOL_LABELS: Record<string, string> = {\n find_doctors: 'Found Doctors',\n check_doctor_availability: 'Checked Doctor Availability',\n list_visit_types: 'Listed Visit Types',\n search_patients: 'Searched Patients',\n search_practice_faq: 'Searched Practice FAQ',\n book_existing_appointment: 'Booked Appointment',\n register_and_book_appointment: 'Registered & Booked Appointment',\n submit_medication_refill: 'Submitted Medication Refill',\n};\n\nfunction looksLikeToolKey(value: string): boolean {\n return /^[a-z][a-z0-9_]*$/.test(value.trim());\n}\n\nfunction humanizeToolKey(key: string): string {\n return key\n .replace(/^tool_/, '')\n .split('_')\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(' ');\n}\n\n/** Prefer API `name`; fall back to catalog label or a readable key. */\nexport function resolveToolDisplayName(key: string | undefined, name: string): string {\n const trimmed = name?.trim() ?? '';\n if (trimmed && !looksLikeToolKey(trimmed)) return trimmed;\n\n const lookupKey = key?.trim() || (looksLikeToolKey(trimmed) ? trimmed : '');\n if (lookupKey && AGENT_TOOL_LABELS[lookupKey]) return AGENT_TOOL_LABELS[lookupKey];\n\n if (lookupKey) return humanizeToolKey(lookupKey);\n return trimmed || 'Tool activity';\n}\n\n/** Derive tool key from legacy `tech` values like `tool_check_doctor_availability`. */\nexport function inferToolKeyFromTech(tech: string): string | undefined {\n const trimmed = tech?.trim();\n if (!trimmed) return undefined;\n if (trimmed.startsWith('tool_')) return trimmed.slice(5);\n if (looksLikeToolKey(trimmed)) return trimmed;\n return undefined;\n}\n\nexport function resolveToolKey(\n key: string | undefined,\n name: string,\n tech: string,\n): string | undefined {\n const explicit = key?.trim();\n if (explicit) return explicit;\n if (looksLikeToolKey(name)) return name.trim();\n return inferToolKeyFromTech(tech);\n}\n\n/** Stable @for track key — avoid ?? in template track expressions (Angular compiler bug). */\nexport function toolEventTrackKey(\n tool: { key?: string; t: string; tech: string; name: string },\n index: number,\n): string {\n return `${tool.key ?? ''}|${tool.t}|${tool.tech}|${tool.name}|${index}`;\n}\n","import {\n AgentSettings,\n AiCreatedAppointment,\n AiReceptionistStatus,\n AnalyticsData,\n AnalyticsPeakSeries,\n AnalyticsVolumeSeries,\n AttentionItem,\n AuditEvent,\n CallStatus,\n CallControlMode,\n DashboardData,\n HistoryCall,\n HistoryDetail,\n LiveCall,\n LocationOption,\n ProviderOption,\n Sentiment,\n SetupData,\n TaskItem,\n CreateTaskRequest,\n TaskFilters,\n ToolEvent,\n TranscriptLine,\n Verification,\n CallRecordingMeta,\n CallRecordingStatus,\n RegenerateSummaryResult,\n} from '../models/ai-receptionist.types';\nimport {\n AnalyticsDto,\n AiCreatedAppointmentDto,\n AnalyticsPeakSeriesDto,\n AnalyticsVolumeSeriesDto,\n AttentionItemDto,\n AuditEventDto,\n DashboardSummaryDto,\n HistoryCallDto,\n HistoryDetailDto,\n HistoryListDto,\n LiveCallDto,\n LiveTranscriptLineDto,\n SetupDto,\n TaskDto,\n CreateTaskDto,\n AiStatusDto,\n RecordingDto,\n RegenerateSummaryResponseDto,\n} from '../models/api-dto.types';\nimport { computeEffectiveWelcomeMessage } from '../utils/welcome-message.util';\nimport { ageFromDob } from '../utils/call-history-display.util';\nimport { resolveToolDisplayName, resolveToolKey } from '../utils/tool-labels.util';\n\nconst TONE_COLORS: Record<string, string> = {\n brand: '#3681F4',\n pos: '#0ABF52',\n notice: '#FFB900',\n neg: '#F03740',\n violet: '#8E51FF',\n gray: '#71717A',\n};\n\nconst DAY_LABELS = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\n\nexport function parseDurToSeconds(dur: string): number {\n if (!dur) return 0;\n const parts = dur.split(':').map((p) => Number(p.trim()));\n if (parts.some((n) => !Number.isFinite(n))) return 0;\n if (parts.length === 2) return parts[0] * 60 + parts[1];\n if (parts.length === 3) return parts[0] * 3600 + parts[1] * 60 + parts[2];\n return 0;\n}\n\nexport function parsePercent(value: string): number {\n const n = Number(String(value).replace('%', '').trim());\n return Number.isFinite(n) ? n : 0;\n}\n\nfunction normalizeConfidence(value: number): number {\n if (value <= 1) return Math.round(value * 100);\n return Math.round(value);\n}\n\nfunction mapVerification(raw: string): Verification {\n const v = raw?.toLowerCase();\n if (v === 'verified' || v === 'partial' || v === 'failed' || v === 'unknown') return v;\n return 'unknown';\n}\n\nfunction mapCallStatus(raw: string): CallStatus {\n const s = String(raw ?? 'ai').toLowerCase().replace(/_/g, '-');\n const allowed: CallStatus[] = [\n 'ai',\n 'needs-help',\n 'human-requested',\n 'urgent',\n 'takeover',\n 'transferring',\n ];\n return allowed.includes(s as CallStatus) ? (s as CallStatus) : 'ai';\n}\n\nfunction mapControlMode(\n raw: string | null | undefined,\n status: string | null | undefined,\n aiPaused?: boolean,\n): CallControlMode {\n const mode = String(raw ?? '').toLowerCase().replace(/_/g, '-');\n if (mode === 'ai' || mode === 'takeover' || mode === 'listen' || mode === 'paused') {\n return mode;\n }\n if (aiPaused === true) return 'paused';\n const st = String(status ?? '').toLowerCase().replace(/_/g, '-');\n if (st === 'takeover') return 'takeover';\n if (st === 'paused' || st === 'pause') return 'paused';\n if (st === 'listen' || st === 'listening') return 'listen';\n return 'ai';\n}\n\nfunction mapSentiment(raw: string): Sentiment {\n const s = String(raw ?? 'neutral').toLowerCase();\n if (s === 'calm' || s === 'neutral' || s === 'frustrated' || s === 'urgent') return s;\n return 'neutral';\n}\n\nexport function mapTranscriptLine(\n line: LiveTranscriptLineDto & { at?: number; offsetSeconds?: number; startTime?: number },\n): TranscriptLine {\n return {\n who: line.who,\n text: line.text,\n flag: line.flag as TranscriptLine['flag'],\n at: line.at ?? line.offsetSeconds ?? line.startTime,\n };\n}\n\nexport function mapToolEvent(tool: {\n t: string;\n key?: string;\n name: string;\n tech: string;\n result: string;\n state: string;\n}): ToolEvent {\n const state = tool.state as ToolEvent['state'];\n const key = resolveToolKey(tool.key, tool.name, tool.tech);\n return {\n t: tool.t,\n key,\n name: resolveToolDisplayName(key, tool.name),\n tech: tool.tech,\n result: tool.result,\n state: ['ok', 'warn', 'error', 'active'].includes(state) ? state : 'ok',\n };\n}\n\nexport function normalizeRecordingStatus(\n status: string | undefined,\n url: string | null | undefined,\n): CallRecordingStatus {\n const known: CallRecordingStatus[] = ['ready', 'pending', 'unavailable', 'failed'];\n if (status && known.includes(status as CallRecordingStatus)) {\n return status as CallRecordingStatus;\n }\n return url ? 'ready' : 'unavailable';\n}\n\nexport function mapRecordingMeta(dto: RecordingDto): CallRecordingMeta {\n return {\n callId: dto.callId,\n status: normalizeRecordingStatus(dto.status, dto.url),\n url: dto.url ?? null,\n contentType: dto.contentType,\n durationSeconds: dto.durationSeconds,\n message: dto.message,\n };\n}\n\nexport function mapLiveCallDto(dto: LiveCallDto): LiveCall {\n const dobRaw = String(dto.dob ?? dto.dateOfBirth ?? '').trim();\n const dob = dobRaw ? dobRaw.slice(0, 10) : undefined;\n const ageNum =\n typeof dto.age === 'number'\n ? dto.age\n : dto.age != null && String(dto.age).trim()\n ? Number(dto.age)\n : null;\n const age =\n ageNum != null && Number.isFinite(ageNum) ? ageNum : ageFromDob(dob);\n const gender = String(dto.gender ?? dto.sex ?? '').trim() || null;\n\n return {\n id: dto.id,\n name: dto.name,\n initials: dto.initials || (dto.matched ? '' : '?'),\n avatar: dto.avatar,\n phone: dto.phone,\n verification: mapVerification(dto.verification),\n direction: dto.direction,\n reason: dto.reason,\n status: mapCallStatus(dto.status),\n started: dto.started,\n sentiment: mapSentiment(dto.sentiment),\n confidence: normalizeConfidence(dto.confidence),\n goal: dto.goal,\n dob,\n age,\n gender,\n location: dto.location ?? '',\n provider: dto.provider,\n language: dto.language,\n matched: dto.matched,\n assigned: dto.assigned,\n controlMode: mapControlMode(dto.controlMode, dto.status, dto.aiPaused),\n tools: (dto.tools ?? []).map(mapToolEvent),\n transcript: (dto.transcript ?? []).map(mapTranscriptLine),\n aiPaused: dto.aiPaused === true || String(dto.controlMode ?? '').toLowerCase() === 'paused',\n aiHandedOff: dto.aiHandedOff === true,\n };\n}\n\nexport function mapHistoryCallDto(dto: HistoryCallDto): HistoryCall {\n const parsedStarted = Date.parse(dto.startedAt ?? dto.when);\n const dobRaw = String(dto.dob ?? dto.dateOfBirth ?? '').trim();\n const ageNum =\n typeof dto.age === 'number'\n ? dto.age\n : dto.age != null && String(dto.age).trim()\n ? Number(dto.age)\n : null;\n const gender = String(dto.gender ?? dto.sex ?? '').trim() || null;\n const handledRaw = String(dto.handledBy ?? dto.handler ?? '').trim().toLowerCase();\n let handledBy: HistoryCall['handledBy'];\n if (handledRaw === 'staff' || handledRaw === 'human' || handledRaw === 'user') {\n handledBy = 'staff';\n } else if (handledRaw === 'ai' || handledRaw === 'agent' || handledRaw === 'ava') {\n handledBy = 'ai';\n } else if (String(dto.outcome ?? '').toLowerCase().includes('transfer')) {\n handledBy = 'staff';\n } else {\n handledBy = 'ai';\n }\n\n return {\n id: dto.id,\n name: dto.name,\n initials: dto.initials || '?',\n phone: dto.phone,\n direction: dto.dir,\n outcome: dto.outcome,\n resolution: dto.resolution ?? null,\n reason: dto.reason,\n duration: parseDurToSeconds(dto.dur),\n durationLabel: dto.dur,\n started: Number.isFinite(parsedStarted) ? parsedStarted : 0,\n whenLabel: Number.isFinite(parsedStarted) ? undefined : dto.when,\n location: dto.location,\n verification: mapVerification(dto.verify),\n review: dto.review === 'reviewed' ? 'reviewed' : 'needs',\n handledBy,\n dob: dobRaw ? dobRaw.slice(0, 10) : null,\n age: ageNum != null && Number.isFinite(ageNum) ? ageNum : null,\n gender,\n results: Array.isArray(dto.actions)\n ? dto.actions.map((a) => String(a).trim()).filter(Boolean)\n : [],\n risk: dto.risk ?? null,\n };\n}\n\nexport function mapHistoryDetailDto(\n call: HistoryCallDto,\n detail: HistoryDetailDto,\n recordingUrl?: string | null,\n): HistoryDetail {\n const base = mapHistoryCallDto(call);\n return {\n ...base,\n summary: detail.summary,\n transcript: (detail.transcript ?? []).map(mapTranscriptLine),\n tools: (detail.tools ?? []).map(mapToolEvent),\n recordingUrl: recordingUrl ?? undefined,\n };\n}\n\nexport function mapAttentionItemDto(dto: AttentionItemDto): AttentionItem {\n return {\n id: dto.id,\n callId: dto.id,\n title: dto.name,\n detail: dto.why || dto.reason,\n severity: dto.sev === 'urgent' ? 'urgent' : 'warn',\n time: Date.now(),\n timeLabel: dto.time,\n };\n}\n\nexport function mapDashboardSummaryDto(dto: DashboardSummaryDto): DashboardData['stats'] {\n return {\n activeCalls: dto.liveCalls,\n answeredToday: dto.callsToday,\n appointmentsBooked: dto.appointmentsBooked ?? 0,\n tasksCreated: dto.openTasks,\n completionRate: parsePercent(dto.aiHandledRate),\n };\n}\n\nexport function mapAiCreatedAppointmentDto(\n dto: AiCreatedAppointmentDto,\n): AiCreatedAppointment {\n return {\n id: dto.id,\n appointmentId: dto.appointmentId ?? dto.id,\n patientName: dto.patientName || 'Unknown patient',\n providerName: dto.providerName ?? null,\n startTime: Date.parse(dto.startTime) || 0,\n createdAt: Date.parse(dto.createdAt) || 0,\n callId: dto.callId ?? null,\n status: dto.status ?? null,\n };\n}\n\nexport function mapTaskDto(dto: TaskDto): TaskItem {\n let status: TaskItem['status'] = 'open';\n if (dto.status === 'done') status = 'done';\n else if (dto.status === 'in-progress') status = 'in_progress';\n\n return {\n id: dto.id,\n created: dto.created ? Date.parse(dto.created) || Date.now() : Date.now(),\n title: dto.title || dto.type || 'Task',\n type: dto.type || 'Other',\n description: dto.summary ?? '',\n patient: dto.patient || '—',\n priority: dto.priority ?? 'normal',\n status,\n source: dto.source ?? 'voice',\n assignee: dto.assignee || '—',\n callId: dto.call || undefined,\n edvakTaskId: dto.edvakTaskId,\n edvakStatus: dto.edvakStatus,\n medicationName: dto.medicationName,\n medicationId: dto.medicationId,\n };\n}\n\nexport function toApiTaskStatus(status: TaskItem['status']): TaskDto['status'] {\n if (status === 'done') return 'done';\n if (status === 'in_progress') return 'in-progress';\n return 'open';\n}\n\nexport function mapCreateTaskRequest(req: CreateTaskRequest): CreateTaskDto {\n return {\n title: req.title.trim(),\n type: req.type,\n call: req.callId,\n summary: req.description?.trim() || undefined,\n patient: req.patient?.trim() || undefined,\n priority: req.priority,\n assignee: req.assignee?.trim() || undefined,\n };\n}\n\nexport function mapRegenerateSummaryResponse(\n dto: RegenerateSummaryResponseDto,\n): RegenerateSummaryResult {\n return {\n callId: dto.callId,\n summary: dto.summary,\n summaryModel: dto.summaryModel,\n summaryGeneratedAt: dto.summaryGeneratedAt,\n transcriptTurnCount: dto.transcriptTurnCount,\n };\n}\n\nexport function mapAuditEventDto(dto: AuditEventDto, index: number): AuditEvent {\n return {\n id: `${dto.ts}-${index}`,\n actor: dto.actorName || dto.actor,\n action: dto.event,\n target: dto.call || dto.patient || dto.cat,\n detail: dto.detail,\n at: dto.ts ? Date.parse(dto.ts) || Date.now() : Date.now(),\n };\n}\n\nexport function mapAnalyticsDto(dto: AnalyticsDto, range: string): AnalyticsData {\n const volume = mapVolumeSeries(dto.volume);\n const peakHours = mapPeakSeries(dto.peak);\n\n const outcomes = (dto.outcomes ?? []).map((o) => ({\n label: o.label,\n value: o.v,\n color: TONE_COLORS[o.tone] ?? TONE_COLORS['brand'],\n }));\n\n const reasons = (dto.reasons ?? []).map((r) => ({ label: r.label, value: r.v }));\n const transfers = (dto.transfers ?? []).map((t) => ({ label: t.label, value: t.v }));\n\n const kpiCards: AnalyticsData['kpiCards'] = (dto.kpis ?? []).map((k) => ({\n label: k.label,\n value: k.value,\n delta: k.delta,\n tone: k.tone,\n sub: k.sub,\n }));\n\n const kpiMap: Record<string, number> = {};\n for (const k of dto.kpis ?? []) {\n const key = k.label.toLowerCase();\n const num = parseAnalyticsNumber(k.value);\n if (key.includes('handled') || key.includes('total call') || key === 'calls') {\n kpiMap['totalCalls'] = num;\n } else if (key.includes('handle time') || key.includes('avg duration') || key.includes('duration')) {\n kpiMap['avgDuration'] = parseDurationSeconds(k.value);\n } else if (key.includes('resolution') || key.includes('booking')) {\n kpiMap['bookingRate'] = num;\n } else if (key.includes('transfer')) {\n kpiMap['transferRate'] = num;\n }\n }\n\n return {\n range,\n kpiCards,\n volume,\n outcomes,\n reasons,\n transfers,\n peakHours,\n kpis: {\n totalCalls: kpiMap['totalCalls'] ?? 0,\n avgDuration: kpiMap['avgDuration'] ?? 0,\n bookingRate: kpiMap['bookingRate'] ?? 0,\n transferRate: kpiMap['transferRate'] ?? 0,\n },\n };\n}\n\nfunction parseAnalyticsNumber(value: string): number {\n const cleaned = String(value).replace(/[^\\d.]/g, '');\n const num = Number(cleaned);\n return Number.isFinite(num) ? num : 0;\n}\n\nfunction parseDurationSeconds(value: string): number {\n const trimmed = value.trim();\n const clock = /^(\\d+):(\\d{2})$/.exec(trimmed);\n if (clock) {\n return Number(clock[1]) * 60 + Number(clock[2]);\n }\n return parseAnalyticsNumber(trimmed);\n}\n\nfunction isVolumeSeriesDto(raw: AnalyticsDto['volume']): raw is AnalyticsVolumeSeriesDto {\n return !!raw && typeof raw === 'object' && !Array.isArray(raw) && 'points' in raw;\n}\n\nfunction isPeakSeriesDto(raw: AnalyticsDto['peak']): raw is AnalyticsPeakSeriesDto {\n return !!raw && typeof raw === 'object' && !Array.isArray(raw) && 'points' in raw;\n}\n\nfunction formatLegacyHourLabel(hour: number): string {\n if (hour === 0) return '12 AM';\n if (hour < 12) return `${hour} AM`;\n if (hour === 12) return '12 PM';\n return `${hour - 12} PM`;\n}\n\nfunction mapVolumeSeries(raw: AnalyticsDto['volume']): AnalyticsVolumeSeries {\n if (isVolumeSeriesDto(raw)) {\n return {\n timezone: raw.timezone ?? 'UTC',\n startDate: raw.startDate ?? '',\n endDate: raw.endDate ?? '',\n points: (raw.points ?? []).map((p) => ({\n date: p.date,\n day: p.day,\n label: p.label,\n count: p.count,\n inbound: p.inbound,\n outbound: p.outbound,\n })),\n };\n }\n\n const values = Array.isArray(raw) ? raw : [];\n return {\n timezone: 'UTC',\n startDate: '',\n endDate: '',\n points: values.map((count, i) => ({\n date: '',\n day: DAY_LABELS[i % DAY_LABELS.length] ?? `D${i + 1}`,\n label: DAY_LABELS[i % DAY_LABELS.length] ?? `Day ${i + 1}`,\n count,\n })),\n };\n}\n\nfunction mapPeakSeries(raw: AnalyticsDto['peak']): AnalyticsPeakSeries {\n if (isPeakSeriesDto(raw)) {\n return {\n timezone: raw.timezone ?? 'UTC',\n points: (raw.points ?? []).map((p) => ({\n hour: p.hour,\n label: p.label,\n count: p.count,\n })),\n };\n }\n\n const values = Array.isArray(raw) ? raw : [];\n return {\n timezone: 'UTC',\n points: values.map((count, hour) => ({\n hour,\n label: formatLegacyHourLabel(hour),\n count,\n })),\n };\n}\n\nexport function mapStatusDto(dto: AiStatusDto): AiReceptionistStatus {\n const online = dto.agentOnline ?? dto.activated ?? false;\n const step = dto.setupStep ?? (dto.activated ? 11 : 0);\n return {\n agentOn: online,\n mode: 'live',\n readiness: Math.min(100, Math.round((step / 11) * 100)),\n };\n}\n\nexport function mapSetupDto(dto: SetupDto): SetupData {\n const stepCount = 11;\n const steps = Array.from({ length: stepCount }, (_, i) => ({\n id: i + 1,\n title: `Setup step ${i + 1}`,\n description: dto.activated ? 'Complete' : i + 1 < dto.step ? 'Complete' : 'Pending',\n complete: dto.activated || i + 1 < dto.step,\n }));\n\n return {\n readiness: Math.min(100, Math.round((dto.step / stepCount) * 100)),\n steps,\n testTranscript: [],\n };\n}\n\nexport function mapSettingsResponse(body: unknown, safetyBody: unknown): AgentSettings {\n const raw = body as {\n settings?: Record<string, unknown>;\n effectiveWelcomeMessage?: string;\n };\n const settings = raw?.settings ?? (body as Record<string, unknown>) ?? {};\n\n const section = (key: string): Record<string, string | boolean | number> => {\n const val = settings[key];\n if (val && typeof val === 'object' && !Array.isArray(val)) {\n return val as Record<string, string | boolean | number>;\n }\n return {};\n };\n\n const safetyRaw = safetyBody as {\n checks?: Array<{ id: string; ok: boolean; label?: string }>;\n };\n const safety = (safetyRaw?.checks ?? []).map((c) => ({\n id: c.id,\n label: c.label ?? humanizeSettingsKey(c.id),\n status: c.ok ? ('ok' as const) : ('warn' as const),\n }));\n\n const mapped: AgentSettings = {\n general: normalizeGeneralSection(section('general')),\n phone: normalizePhoneSection(section('phoneAvailability')),\n tasks: section('allowedTasks'),\n scheduling: section('schedulingRules'),\n refill: section('refillRules'),\n verify: section('patientVerification'),\n escalation: section('humanEscalation'),\n outbound: section('outboundCalling'),\n knowledge: normalizeKnowledgeSection(section('knowledgeBase')),\n safety,\n transcripts: normalizeTranscriptsSection(section('transcriptsRecording')),\n advanced: normalizeAdvancedSection(section('advanced')),\n };\n\n mapped.effectiveWelcomeMessage =\n raw.effectiveWelcomeMessage ?? computeEffectiveWelcomeMessage(mapped);\n\n const root = body as Record<string, unknown>;\n mapped.effectiveVoiceSystemPrompt = String(\n root['effectiveVoiceSystemPrompt'] ??\n root['effective_voice_system_prompt'] ??\n mapped.advanced['voiceSystemPrompt'] ??\n '',\n );\n const usingDefaultRaw =\n root['usingDefaultVoiceSystemPrompt'] ?? root['using_default_voice_system_prompt'];\n mapped.usingDefaultVoiceSystemPrompt =\n typeof usingDefaultRaw === 'boolean'\n ? usingDefaultRaw\n : !String(mapped.advanced['voiceSystemPrompt'] ?? '').trim();\n\n if (!mapped.knowledge) {\n mapped.knowledge = { whatToSay: '', whatNotToSay: '' };\n }\n\n return mapped;\n}\n\nfunction normalizeAdvancedSection(\n raw: Record<string, string | boolean | number>,\n): Record<string, string | boolean | number> {\n return {\n ...raw,\n voiceSystemPrompt: String(\n raw['voiceSystemPrompt'] ?? raw['voice_system_prompt'] ?? '',\n ),\n customVoiceInstructions: String(\n raw['customVoiceInstructions'] ?? raw['custom_voice_instructions'] ?? '',\n ),\n };\n}\n\nfunction normalizeKnowledgeSection(\n raw: Record<string, string | boolean | number>,\n): Record<string, string | boolean | number> {\n return {\n ...raw,\n whatToSay: String(raw['whatToSay'] ?? raw['what_to_say'] ?? ''),\n whatNotToSay: String(raw['whatNotToSay'] ?? raw['what_not_to_say'] ?? ''),\n };\n}\n\nfunction normalizeGeneralSection(\n raw: Record<string, string | boolean | number>,\n): Record<string, string | boolean | number> {\n const language = String(raw['language'] ?? 'English');\n const languagesRaw = raw['languages'] ?? raw['languageList'] ?? language;\n const languages = Array.isArray(languagesRaw)\n ? languagesRaw.map(String).join(',')\n : String(languagesRaw || language);\n return {\n ...raw,\n languages,\n tone: String(raw['tone'] ?? 'professional'),\n };\n}\n\nfunction normalizePhoneSection(\n raw: Record<string, string | boolean | number>,\n): Record<string, string | boolean | number> {\n const locationIds = raw['locationIds'] ?? raw['location_ids'] ?? raw['locationsHandled'] ?? '';\n const locations =\n Array.isArray(locationIds) ? locationIds.map(String).join(',') : String(locationIds ?? '');\n const afterHoursBehavior = String(\n raw['afterHoursBehavior'] ??\n raw['after_hours_behavior'] ??\n (raw['afterHours'] === false ? 'voicemail' : 'ai_answers'),\n );\n return {\n ...raw,\n answerMode: String(raw['answerMode'] ?? raw['answer_mode'] ?? 'always_first'),\n transferNumber: String(raw['transferNumber'] ?? raw['transfer_number'] ?? ''),\n ringTimeout: Number(raw['ringTimeout'] ?? raw['ring_timeout'] ?? 20) || 20,\n createFollowUpTask: Boolean(\n raw['createFollowUpTask'] ?? raw['create_follow_up_task'] ?? false,\n ),\n locationIds: locations,\n maxCallDurationMin:\n Number(raw['maxCallDurationMin'] ?? raw['max_call_duration_min'] ?? 5) || 5,\n silenceTimeoutSec:\n Number(raw['silenceTimeoutSec'] ?? raw['silence_timeout_sec'] ?? 30) || 30,\n afterHoursBehavior,\n };\n}\n\nfunction normalizeTranscriptsSection(\n raw: Record<string, string | boolean | number>,\n): Record<string, string | boolean | number> {\n const legacyRetain = Number(raw['retainDays'] ?? raw['retain_days'] ?? 30) || 30;\n return {\n ...raw,\n recordingRetainDays:\n Number(raw['recordingRetainDays'] ?? raw['recording_retain_days'] ?? legacyRetain) ||\n legacyRetain,\n transcriptRetainDays:\n Number(raw['transcriptRetainDays'] ?? raw['transcript_retain_days'] ?? legacyRetain) ||\n legacyRetain,\n disclosureWarningEnabled: Boolean(\n raw['disclosureWarningEnabled'] ?? raw['disclosure_warning_enabled'] ?? true,\n ),\n disclosureWarningText: String(\n raw['disclosureWarningText'] ??\n raw['disclosure_warning_text'] ??\n 'This call may be handled by an automated assistant and could be recorded for quality and training. You can ask to speak with a staff member at any time.',\n ),\n };\n}\n\nfunction humanizeSettingsKey(key: string): string {\n return key\n .replace(/([A-Z])/g, ' $1')\n .replace(/_/g, ' ')\n .trim()\n .replace(/^\\w/, (c) => c.toUpperCase());\n}\n\n/** Map frontend AgentSettings → backend PUT body section keys. */\nexport function mapSettingsToRequest(settings: AgentSettings): Record<string, unknown> {\n return {\n general: settings.general,\n phoneAvailability: settings.phone,\n allowedTasks: settings.tasks,\n schedulingRules: settings.scheduling,\n refillRules: settings.refill,\n patientVerification: settings.verify,\n humanEscalation: settings.escalation,\n outboundCalling: settings.outbound,\n knowledgeBase: settings.knowledge,\n transcriptsRecording: settings.transcripts,\n advanced: settings.advanced,\n };\n}\n\nexport function mapLocationDto(raw: unknown): LocationOption {\n const r = raw as { locationId?: string; locationName?: string; id?: string; name?: string };\n return {\n id: r.locationId ?? r.id ?? '',\n name: r.locationName ?? r.name ?? '',\n };\n}\n\nexport function mapProviderDto(raw: unknown): ProviderOption {\n const r = raw as { providerId?: string; fullName?: string; id?: string; name?: string };\n return {\n id: r.providerId ?? r.id ?? '',\n name: r.fullName ?? r.name ?? '',\n };\n}\n\nexport function asTranscriptList(body: unknown): LiveTranscriptLineDto[] {\n if (Array.isArray(body)) return body as LiveTranscriptLineDto[];\n if (!body || typeof body !== 'object') return [];\n const o = body as Record<string, unknown>;\n const list = o['lines'] ?? o['transcript'] ?? o['items'] ?? o['data'];\n return Array.isArray(list) ? (list as LiveTranscriptLineDto[]) : [];\n}\n\nexport function isHistoryCallDto(raw: unknown): raw is HistoryCallDto {\n return !!raw && typeof raw === 'object' && 'dir' in (raw as object);\n}\n\nexport function asHistoryList(body: unknown): HistoryCallDto[] {\n if (Array.isArray(body)) return body as HistoryCallDto[];\n const list = body as HistoryListDto;\n return list?.items ?? [];\n}\n\nexport function asLiveCallList(body: unknown): LiveCallDto[] {\n if (Array.isArray(body)) return body as LiveCallDto[];\n if (!body || typeof body !== 'object') return [];\n const o = body as Record<string, unknown>;\n const list = o['items'] ?? o['data'] ?? o['calls'] ?? o['liveCalls'];\n return Array.isArray(list) ? (list as LiveCallDto[]) : [];\n}\n\nexport function asTaskList(body: unknown): TaskDto[] {\n if (Array.isArray(body)) return body as TaskDto[];\n const list = body as { items?: TaskDto[] };\n return list?.items ?? [];\n}\n\nexport function asAuditList(body: unknown): AuditEventDto[] {\n if (Array.isArray(body)) return body as AuditEventDto[];\n const list = body as { items?: AuditEventDto[] };\n return list?.items ?? [];\n}\n\nexport function asAttentionList(body: unknown): AttentionItemDto[] {\n if (Array.isArray(body)) return body as AttentionItemDto[];\n return [];\n}\n","import { ApiLogDetail, ApiLogListItem, ApiLogStats } from '../models/api-log.types';\n\nconst now = Date.now();\n\nfunction item(\n partial: Partial<ApiLogListItem> & Pick<ApiLogListItem, 'id' | 'provider' | 'operation'>,\n): ApiLogListItem {\n return {\n callId: 'LC-4821',\n clientPracticeId: 'practice-demo',\n method: 'POST',\n urlPath: '/api/v1/patients/search',\n statusCode: 200,\n success: true,\n durationMs: 340,\n toolName: null,\n errorMessage: null,\n startedAt: new Date(now - 120_000).toISOString(),\n requestPreview: '{\"phone\":\"+15551234567\"}',\n responsePreview: '{\"items\":[{\"id\":\"p1\"}]}',\n ...partial,\n };\n}\n\nexport const SEED_CALL_API_LOGS: Record<string, ApiLogListItem[]> = {\n 'LC-4821': [\n item({\n id: 'log-1',\n provider: 'vonage',\n operation: 'answer_call',\n method: 'POST',\n urlPath: '/vonage/answer',\n statusCode: 200,\n durationMs: 120,\n startedAt: new Date(now - 300_000).toISOString(),\n requestPreview: '{\"callId\":\"...\"}',\n responsePreview: '{\"status\":\"connected\"}',\n }),\n item({\n id: 'log-2',\n provider: 'edvak',\n operation: 'search_patient',\n toolName: 'search_patient',\n method: 'GET',\n urlPath: '/api/v1/patients',\n statusCode: 200,\n durationMs: 420,\n startedAt: new Date(now - 240_000).toISOString(),\n }),\n item({\n id: 'log-3',\n provider: 'openai',\n operation: 'chat_completion',\n method: 'POST',\n urlPath: '/v1/chat/completions',\n statusCode: 200,\n durationMs: 890,\n startedAt: new Date(now - 180_000).toISOString(),\n requestPreview: '{\"model\":\"gpt-4o-mini\"}',\n responsePreview: '{\"choices\":[...]}',\n }),\n item({\n id: 'log-4',\n provider: 'edvak',\n operation: 'create_appointment',\n toolName: 'create_appointment',\n method: 'POST',\n urlPath: '/api/appointments',\n statusCode: 201,\n durationMs: 560,\n startedAt: new Date(now - 60_000).toISOString(),\n }),\n ],\n 'HC-9001': [\n item({\n id: 'log-f1',\n callId: 'HC-9001',\n provider: 'edvak',\n operation: 'search_patient',\n toolName: 'search_patient',\n statusCode: 500,\n success: false,\n durationMs: 2100,\n errorMessage: 'Internal Server Error',\n startedAt: new Date(now - 86_400_000).toISOString(),\n }),\n ],\n};\n\nexport const SEED_API_LOG_DETAILS: Record<string, ApiLogDetail> = {\n 'log-4': {\n ...SEED_CALL_API_LOGS['LC-4821'][3],\n traceId: 'trace-abc-123',\n requestBody: { patientId: 'p1', slotId: 'slot-9', reason: 'Annual checkup' },\n responseBody: { appointmentId: 'apt-42', status: 'confirmed' },\n metadata: { practiceId: 'prac-1', locationId: 'loc-1' },\n completedAt: new Date(now - 59_500).toISOString(),\n },\n 'log-f1': {\n ...SEED_CALL_API_LOGS['HC-9001'][0],\n traceId: 'trace-err-999',\n requestBody: { phone: '+15559876543' },\n responseBody: { error: 'Internal Server Error', message: 'Database timeout' },\n metadata: { retryCount: 1 },\n completedAt: new Date(now - 86_398_000).toISOString(),\n },\n};\n\nexport function allSeedLogs(): ApiLogListItem[] {\n return Object.values(SEED_CALL_API_LOGS).flat();\n}\n\nexport const SEED_API_LOG_STATS: ApiLogStats = {\n last24h: { total: 128, failed: 4, avgDurationMs: 680 },\n byProvider: [\n { provider: 'edvak', total: 52, failed: 3 },\n { provider: 'openai', total: 38, failed: 0 },\n { provider: 'vonage', total: 24, failed: 1 },\n { provider: 'livekit', total: 14, failed: 0 },\n ],\n recentFailures: [\n item({\n id: 'log-fail-1',\n callId: 'HC-9001',\n provider: 'edvak',\n operation: 'search_patient',\n statusCode: 500,\n success: false,\n durationMs: 2100,\n errorMessage: 'Internal Server Error',\n startedAt: new Date(now - 3_600_000).toISOString(),\n }),\n item({\n id: 'log-fail-2',\n callId: 'LC-4819',\n provider: 'vonage',\n operation: 'transfer',\n statusCode: 503,\n success: false,\n durationMs: 1500,\n errorMessage: 'Service unavailable',\n startedAt: new Date(now - 7_200_000).toISOString(),\n }),\n item({\n id: 'log-fail-3',\n callId: null,\n provider: 'edvak',\n operation: 'list_providers',\n statusCode: 500,\n success: false,\n durationMs: 980,\n errorMessage: 'Gateway timeout',\n startedAt: new Date(now - 10_800_000).toISOString(),\n }),\n ],\n};\n","import {\n AgentSettings,\n AnalyticsData,\n AuditEvent,\n DashboardData,\n HistoryCall,\n HistoryDetail,\n LiveCall,\n LocationOption,\n ProviderOption,\n SetupData,\n TaskItem,\n TranscriptLine,\n} from '../models/ai-receptionist.types';\n\nconst now = Date.now();\nconst min = (m: number) => now - m * 60_000;\n\nconst baseTranscript: TranscriptLine[] = [\n { who: 'system', text: 'Call connected · inbound PSTN' },\n {\n who: 'ai',\n text: 'Good afternoon, thank you for calling Riverside Family Medicine. How can I help you today?',\n },\n { who: 'patient', text: \"Hi, I'd like to reschedule my appointment for next Tuesday.\" },\n {\n who: 'ai',\n text: 'I can help with that. May I verify your date of birth and the name on the account?',\n flag: 'verify',\n },\n { who: 'patient', text: 'March 14, 1985 — Maria Santos.' },\n { who: 'ai', text: 'Thank you, Maria. I found your chart. You have a visit with Dr. Chen on Tuesday at 2:30 PM.' },\n { who: 'patient', text: 'Can we move it to Thursday morning instead?' },\n { who: 'ai', text: 'Checking availability with scheduling…' },\n];\n\nconst streamingLines: TranscriptLine[] = [\n { who: 'ai', text: 'I have Thursday at 9:15 AM or 10:40 AM with Dr. Chen. Which works better?' },\n { who: 'patient', text: '9:15 is perfect.' },\n { who: 'ai', text: 'Great — I’ve moved your appointment to Thursday at 9:15 AM. You’ll receive a confirmation text shortly.' },\n];\n\nexport const SEED_LIVE_CALLS: LiveCall[] = [\n {\n id: 'LC-4821',\n name: 'Maria Santos',\n initials: 'MS',\n avatar: null,\n phone: '+1 (512) 555-0142',\n verification: 'verified',\n direction: 'inbound',\n reason: 'Reschedule appointment',\n status: 'ai',\n started: min(4),\n sentiment: 'calm',\n confidence: 92,\n goal: 'Reschedule visit with Dr. Chen',\n dob: '1985-03-14',\n age: 41,\n gender: 'F',\n location: 'Riverside Main',\n provider: 'Dr. Elena Chen',\n language: 'English',\n matched: true,\n assigned: null,\n tools: [\n {\n t: '0:42',\n key: 'search_patients',\n name: 'Searched Patients',\n tech: 'tool_search_patients',\n result: 'Matched DOB + name',\n state: 'ok',\n },\n {\n t: '1:18',\n key: 'check_doctor_availability',\n name: 'Checked Doctor Availability',\n tech: 'tool_check_doctor_availability',\n result: '1 upcoming visit',\n state: 'ok',\n },\n {\n t: '2:05',\n key: 'check_doctor_availability',\n name: 'Checked Doctor Availability',\n tech: 'tool_check_doctor_availability',\n result: '2 slots found',\n state: 'active',\n },\n ],\n transcript: [...baseTranscript],\n },\n {\n id: 'LC-4819',\n name: 'James Okonkwo',\n initials: 'JO',\n avatar: null,\n phone: '+1 (737) 555-0198',\n verification: 'partial',\n direction: 'inbound',\n reason: 'Medication refill — urgent',\n status: 'needs-help',\n started: min(7),\n sentiment: 'frustrated',\n confidence: 71,\n goal: 'Refill lisinopril 10mg',\n dob: '1978-09-22',\n age: 47,\n gender: 'M',\n location: 'North Clinic',\n provider: 'Dr. Patel',\n language: 'English',\n matched: true,\n assigned: 'Front desk queue',\n tools: [\n {\n t: '0:55',\n key: 'search_patients',\n name: 'Searched Patients',\n tech: 'tool_search_patients',\n result: 'Partial match',\n state: 'warn',\n },\n {\n t: '1:40',\n key: 'submit_medication_refill',\n name: 'Submitted Medication Refill',\n tech: 'tool_submit_medication_refill',\n result: 'Requires staff review',\n state: 'warn',\n },\n ],\n transcript: [\n { who: 'ai', text: 'Thank you for calling North Clinic. How may I assist you?' },\n { who: 'patient', text: 'I need my blood pressure medication refilled today — I’m out of pills.' },\n { who: 'ai', text: 'I understand. Let me pull up your chart and check refill eligibility.', flag: 'verify' },\n { who: 'patient', text: \"I've been a patient for years, this shouldn't be so hard.\" },\n { who: 'system', text: 'Escalation suggested — sentiment frustrated', flag: 'escalate' },\n ],\n },\n {\n id: 'LC-4815',\n name: 'Unknown caller',\n initials: '?',\n avatar: null,\n phone: '+1 (512) 555-0881',\n verification: 'unknown',\n direction: 'inbound',\n reason: 'Billing question',\n status: 'human-requested',\n started: min(2),\n sentiment: 'neutral',\n confidence: 58,\n goal: 'Speak with billing',\n location: 'Riverside Main',\n provider: null,\n language: 'English',\n matched: false,\n assigned: null,\n tools: [\n {\n t: '0:30',\n key: 'search_practice_faq',\n name: 'Searched Practice FAQ',\n tech: 'tool_search_practice_faq',\n result: 'Billing / human handoff',\n state: 'ok',\n },\n ],\n transcript: [\n { who: 'ai', text: 'Good afternoon. How can I help you today?' },\n { who: 'patient', text: 'I need to talk to someone in billing about my statement.' },\n { who: 'ai', text: 'I can connect you with our billing team. One moment while I transfer you.' },\n ],\n },\n];\n\nexport const SEED_ATTENTION = [\n {\n id: 'ATT-1',\n callId: 'LC-4819',\n title: 'Refill needs staff approval',\n detail: 'Patient out of medication — partial verification',\n severity: 'urgent' as const,\n time: min(1),\n },\n {\n id: 'ATT-2',\n callId: 'LC-4815',\n title: 'Human requested',\n detail: 'Billing transfer pending',\n severity: 'warn' as const,\n time: min(0.5),\n },\n {\n id: 'ATT-3',\n callId: 'LC-4821',\n title: 'Scheduling in progress',\n detail: 'AI handling — monitor recommended',\n severity: 'info' as const,\n time: min(3),\n },\n];\n\nexport const SEED_HISTORY: HistoryCall[] = [\n {\n id: 'HC-9001',\n name: 'Sooraj Jagadeesh',\n initials: 'SJ',\n phone: '+1 (512) 555-0211',\n direction: 'inbound',\n outcome: 'Appointment booked',\n reason: 'Appointment Refill',\n duration: 252,\n durationLabel: '4:12',\n started: Date.parse('2026-06-12T14:20:00'),\n location: 'Riverside Main',\n verification: 'verified',\n review: 'reviewed',\n handledBy: 'ai',\n dob: '2002-06-30',\n age: 23,\n gender: 'M',\n results: ['Appointment Booked'],\n },\n {\n id: 'HC-9002',\n name: 'Unknown Caller',\n initials: '?',\n phone: '+1 (555) 010-2299',\n direction: 'outbound',\n outcome: 'Task created',\n reason: 'Appointment',\n duration: 165,\n durationLabel: '2:45',\n started: Date.parse('2026-06-12T11:05:00'),\n location: 'North Clinic',\n verification: 'unknown',\n review: 'needs',\n handledBy: 'ai',\n results: ['Task Created'],\n risk: 'review',\n },\n {\n id: 'HC-9003',\n name: 'Dinesh Kumar',\n initials: 'DK',\n phone: '+1 (512) 555-0444',\n direction: 'inbound',\n outcome: 'Completed',\n reason: 'Appointment',\n duration: 372,\n durationLabel: '6:12',\n started: Date.parse('2026-06-11T16:45:00'),\n location: 'Riverside Main',\n verification: 'verified',\n review: 'reviewed',\n handledBy: 'staff',\n dob: '1988-03-14',\n age: 38,\n gender: 'M',\n results: ['Patient Registered', 'Appointment Booked'],\n },\n {\n id: 'HC-9004',\n name: 'Meera Banerjee',\n initials: 'MB',\n phone: '+1 (512) 555-0555',\n direction: 'inbound',\n outcome: 'Completed',\n reason: 'Information',\n duration: 93,\n durationLabel: '1:33',\n started: Date.parse('2026-06-11T09:12:00'),\n location: 'South Clinic',\n verification: 'partial',\n review: 'needs',\n handledBy: 'ai',\n dob: '1995-11-02',\n age: 30,\n gender: 'F',\n results: ['Information Provided'],\n },\n {\n id: 'HC-9005',\n name: 'Emily Foster',\n initials: 'EF',\n phone: '+1 (737) 555-0666',\n direction: 'inbound',\n outcome: 'Completed',\n reason: 'Hours & directions',\n duration: 89,\n durationLabel: '1:29',\n started: Date.parse('2026-06-10T13:40:00'),\n location: 'North Clinic',\n verification: 'unknown',\n review: 'reviewed',\n handledBy: 'ai',\n results: ['Information Provided'],\n },\n];\n\nexport const SEED_HISTORY_DETAILS: Record<string, HistoryDetail> = {\n 'HC-9001': {\n ...SEED_HISTORY[0],\n summary:\n 'New patient intake completed. AI collected demographics, verified insurance, and booked initial visit with Dr. Chen for next Monday at 10:00 AM.',\n transcript: [\n { who: 'ai', text: 'Welcome to Riverside Family Medicine. Are you a new patient?', at: 8 },\n { who: 'patient', text: 'Yes, I need to establish care.', at: 22 },\n { who: 'ai', text: 'I can help schedule your first visit. May I collect a few details?', at: 38 },\n { who: 'patient', text: 'Sure.', at: 62 },\n { who: 'ai', text: 'Booked: Mon 10:00 AM with Dr. Chen. Confirmation sent via SMS.', at: 285 },\n ],\n tools: [\n {\n t: '1:02',\n key: 'register_and_book_appointment',\n name: 'Registered & Booked Appointment',\n tech: 'tool_register_and_book_appointment',\n result: 'Chart created',\n state: 'ok',\n },\n {\n t: '3:45',\n key: 'book_existing_appointment',\n name: 'Booked Appointment',\n tech: 'tool_book_existing_appointment',\n result: 'Slot reserved',\n state: 'ok',\n },\n ],\n recordingUrl: '#mock-recording',\n },\n};\n\nexport const SEED_TASKS: TaskItem[] = [\n {\n id: 'TK-101',\n created: min(180),\n title: 'Refill: Lisinopril 10mg',\n type: 'Refill request',\n description: 'Patient requested refill for lisinopril 10mg. Last filled 28 days ago.',\n patient: 'James Okonkwo',\n priority: 'urgent',\n status: 'open',\n source: 'voice',\n assignee: 'Clinical staff',\n callId: 'HC-9001',\n edvakTaskId: 'EDV-8821',\n edvakStatus: 'Pending review',\n medicationName: 'Lisinopril 10mg',\n medicationId: 'RX-4492',\n },\n {\n id: 'TK-102',\n created: min(240),\n title: 'Billing follow-up',\n type: 'Billing',\n description: 'Caller disputed a statement charge from March visit. Needs billing review.',\n patient: 'Unknown caller',\n priority: 'normal',\n status: 'open',\n source: 'voice',\n assignee: 'Billing',\n callId: 'LC-4815',\n },\n {\n id: 'TK-103',\n created: min(300),\n title: 'Callback requested',\n type: 'Callback',\n description: 'Sarah Williams asked for a nurse callback regarding prior auth status.',\n patient: 'Sarah Williams',\n priority: 'normal',\n status: 'in_progress',\n source: 'voice',\n assignee: 'Front desk',\n callId: 'HC-9003',\n },\n {\n id: 'TK-104',\n created: min(360),\n title: 'Callback — lab results',\n type: 'Callback',\n description: 'Carlos Mendez requested nurse callback about recent lab results.',\n patient: 'Carlos Mendez',\n priority: 'normal',\n status: 'done',\n source: 'sync',\n assignee: 'Nurse line',\n callId: 'HC-9004',\n },\n {\n id: 'TK-105',\n created: min(90),\n title: 'Schedule follow-up visit',\n type: 'Scheduling',\n description: 'Patient needs a 2-week follow-up after ER visit.',\n patient: 'Maria Chen',\n priority: 'normal',\n status: 'open',\n source: 'manual',\n assignee: 'Scheduling',\n },\n];\n\nexport const SEED_AUDIT: AuditEvent[] = [\n {\n id: 'AU-1',\n actor: 'admin@riverside.fm',\n action: 'Updated welcome message',\n target: 'Agent Settings',\n detail: 'Changed inbound greeting',\n at: min(30),\n },\n {\n id: 'AU-2',\n actor: 'system',\n action: 'Agent activated',\n target: 'AI Receptionist',\n detail: 'After-hours mode enabled',\n at: min(120),\n },\n {\n id: 'AU-3',\n actor: 'staff@riverside.fm',\n action: 'Takeover',\n target: 'LC-4780',\n detail: 'Staff joined live call',\n at: min(300),\n },\n];\n\nexport const SEED_ANALYTICS: AnalyticsData = {\n range: '30d',\n kpiCards: [\n {\n label: 'Estimated Impact This Month',\n value: '96 hours',\n delta: '',\n tone: 'pos',\n sub: 'of front-desk time handled by the AI ~2.4 full work weeks.',\n },\n {\n label: 'AI Autonomous Resolution',\n value: '89%',\n delta: '+12%',\n tone: 'pos',\n sub: 'without staff intervention',\n },\n {\n label: 'Appointments Booked',\n value: '34',\n delta: '-35%',\n tone: 'warn',\n sub: 'Created by AI',\n },\n {\n label: 'Tasks Created',\n value: '19',\n delta: '-35%',\n tone: 'warn',\n sub: 'Created by AI',\n },\n {\n label: 'Patients Registered',\n value: '75',\n delta: '-6%',\n tone: 'warn',\n sub: 'Created by AI',\n },\n {\n label: 'Calls Handled',\n value: '1,234',\n delta: '+25%',\n tone: 'pos',\n sub: 'Inbound 104 · Outbound 24',\n },\n ],\n volume: {\n timezone: 'America/Chicago',\n startDate: '2025-05-01',\n endDate: '2025-05-28',\n points: [\n { date: '2025-05-01', day: 'Week 1', label: 'Week 1', count: 210, inbound: 170, outbound: 40 },\n { date: '2025-05-08', day: 'Week 2', label: 'Week 2', count: 255, inbound: 200, outbound: 55 },\n { date: '2025-05-15', day: 'Week 3', label: 'Week 3', count: 180, inbound: 145, outbound: 35 },\n { date: '2025-05-22', day: 'Week 4', label: 'Week 4', count: 290, inbound: 230, outbound: 60 },\n ],\n },\n outcomes: [\n { label: 'AI handled', value: 78, color: '#DAB2FF' },\n { label: 'Human Assisted', value: 18, color: '#A3B3FF' },\n { label: 'Needs Attention', value: 4, color: '#FFA1AD' },\n ],\n reasons: [\n { label: 'Appointments', value: 68 },\n { label: 'Medication/Refills', value: 24 },\n { label: 'Message', value: 20 },\n { label: 'Information', value: 23 },\n { label: 'Registration', value: 5 },\n { label: 'Tasks', value: 20 },\n { label: 'Others', value: 9 },\n ],\n transfers: [\n { label: 'Out of Scope', value: 68 },\n { label: 'Multiple Requests', value: 24 },\n { label: 'Identity Unresolved', value: 20 },\n { label: 'Others', value: 23 },\n ],\n peakHours: {\n timezone: 'America/Chicago',\n points: Array.from({ length: 24 }, (_, hour) => ({\n hour,\n label: hour === 0 ? '12 AM' : hour < 12 ? `${hour} AM` : hour === 12 ? '12 PM' : `${hour - 12} PM`,\n count:\n hour >= 8 && hour <= 20\n ? Math.round(30 + Math.sin((hour - 8) / 2.2) * 45 + (hour === 11 || hour === 16 ? 25 : 0))\n : 4 + (hour % 3),\n })),\n },\n kpis: {\n totalCalls: 1234,\n avgDuration: 186,\n bookingRate: 89,\n transferRate: 4,\n },\n};\n\nexport const SEED_SETTINGS: AgentSettings = {\n general: {\n practiceName: 'Riverside Family Medicine',\n timezone: 'America/Chicago',\n language: 'English',\n languages: 'English,Spanish,Chinese,Hindi',\n agentName: 'Robin',\n tone: 'professional',\n welcomeMessage:\n 'Thanks for calling {{practiceName}}! This is {{agentName}}, the practice’s virtual assistant. How can I help you today?',\n ttsVoiceId: '7EzWGsX10sAS4c9m9cPf',\n },\n phone: {\n answerMode: 'always_first',\n mainNumber: '+1 (234) 092-0129',\n transferNumber: '+1 (234) 092-0129',\n ringTimeout: 20,\n createFollowUpTask: true,\n locationIds: 'loc-1,loc-2,loc-3',\n maxCallDurationMin: 5,\n silenceTimeoutSec: 30,\n afterHoursBehavior: 'ai_answers',\n afterHours: true,\n },\n tasks: { autoCreate: true, defaultAssignee: 'Front desk' },\n scheduling: { leadTimeHours: 4, allowSameDay: true },\n refill: { autoApproveDays: 7, requireStaffReview: true },\n verify: { requireDob: true, requireName: true, maxAttempts: 3 },\n escalation: { sentimentThreshold: 'frustrated', urgentKeywords: 'emergency, chest pain' },\n outbound: { enabled: true, callerId: '+1 (512) 555-0100' },\n knowledge: {\n whatToSay:\n 'Arrive 15 minutes early for new-patient visits. Bring a photo ID and insurance card. We accept most major plans and self-pay; ask front desk for current cash-pay rates. For medical emergencies, hang up and dial 911.',\n whatNotToSay:\n 'Do not give clinical advice, diagnose symptoms, or promise specific appointment times that are not available. Do not share other patients’ information. Do not quote prices that are not listed in practice guidance.',\n },\n safety: [\n { id: 's1', label: 'HIPAA logging enabled', status: 'ok' },\n { id: 's2', label: 'Recording consent script', status: 'ok' },\n { id: 's3', label: 'Emergency routing tested', status: 'warn' },\n { id: 's4', label: 'PHI redaction in transcripts', status: 'ok' },\n ],\n transcripts: {\n recordingRetainDays: 30,\n transcriptRetainDays: 30,\n disclosureWarningEnabled: true,\n disclosureWarningText:\n 'This call may be handled by an automated assistant and could be recorded for quality and training. You can ask to speak with a staff member at any time.',\n retainDays: 30,\n redactPhi: true,\n },\n advanced: {\n modelVersion: 'edvak-v2',\n debugMode: false,\n voiceSystemPrompt: '',\n customVoiceInstructions: '',\n },\n effectiveWelcomeMessage:\n 'Thanks for calling Riverside Family Medicine! This is Robin, the practice’s virtual assistant. How can I help you today?',\n};\n\nexport const SEED_SETUP: SetupData = {\n readiness: 92,\n steps: [\n { id: 1, title: 'Practice profile', description: 'Name, locations, hours', complete: true },\n { id: 2, title: 'Phone routing', description: 'Connect Vonage numbers', complete: true },\n { id: 3, title: 'EHR integration', description: 'FHIR scheduling & charts', complete: true },\n { id: 4, title: 'Welcome message', description: 'Inbound call greeting', complete: true },\n { id: 5, title: 'Verification rules', description: 'Identity checks', complete: true },\n { id: 6, title: 'Task routing', description: 'Assignees & SLAs', complete: true },\n { id: 7, title: 'Escalation paths', description: 'Human handoff rules', complete: true },\n { id: 8, title: 'Safety checklist', description: 'Compliance review', complete: false },\n { id: 9, title: 'Test call', description: 'Simulated inbound call', complete: false },\n { id: 10, title: 'Staff training', description: 'Takeover & monitoring', complete: true },\n { id: 11, title: 'Go live', description: 'Activate AI receptionist', complete: false },\n ],\n testTranscript: [\n { who: 'ai', text: 'Test call started — simulating inbound patient.' },\n { who: 'patient', text: 'I would like to book an appointment.' },\n { who: 'ai', text: 'Happy to help. May I verify your date of birth?' },\n ],\n};\n\nexport const SEED_LOCATIONS: LocationOption[] = [\n { id: 'loc-1', name: 'Riverside Main' },\n { id: 'loc-2', name: 'North Clinic' },\n { id: 'loc-3', name: 'South Clinic' },\n];\n\nexport const SEED_PROVIDERS: ProviderOption[] = [\n { id: 'prov-1', name: 'Dr. Elena Chen' },\n { id: 'prov-2', name: 'Dr. Raj Patel' },\n { id: 'prov-3', name: 'Dr. Amy Foster' },\n];\n\nexport function buildDashboard(): DashboardData {\n return {\n stats: {\n activeCalls: SEED_LIVE_CALLS.length,\n answeredToday: 47,\n appointmentsBooked: 6,\n tasksCreated: 8,\n completionRate: 86,\n },\n liveCalls: SEED_LIVE_CALLS,\n latestTasks: SEED_TASKS.slice(0, 5),\n latestAppointments: [\n {\n id: 'appt-ai-1',\n appointmentId: 'appt-ai-1',\n patientName: 'Maria Garcia',\n providerName: 'Dr. Elena Chen',\n startTime: Date.now() + 86_400_000,\n createdAt: min(25),\n callId: 'HC-9001',\n status: 'booked',\n },\n ],\n recentHistory: SEED_HISTORY.slice(0, 5),\n };\n}\n\nexport function getStreamingLines(): TranscriptLine[] {\n return streamingLines;\n}\n\nexport function cloneLiveCalls(): LiveCall[] {\n return SEED_LIVE_CALLS.map((c) => ({\n ...c,\n tools: c.tools.map((t) => ({ ...t })),\n transcript: c.transcript.map((l) => ({ ...l })),\n }));\n}\n\nexport function cloneHistory(): HistoryCall[] {\n return SEED_HISTORY.map((h) => ({ ...h }));\n}\n\nexport function cloneTasks(): TaskItem[] {\n return SEED_TASKS.map((t) => ({ ...t }));\n}\n","import {\n OutboundPurpose,\n OutboundPurposePlaceholder,\n} from '../models/outbound-purpose.types';\n\nexport const DEFAULT_PLACEHOLDERS: OutboundPurposePlaceholder[] = [\n { token: '{{patientName}}', label: 'Patient name', sampleValue: 'Maria Garcia' },\n { token: '{{appointmentDate}}', label: 'Appointment date', sampleValue: 'March 15' },\n { token: '{{appointmentTime}}', label: 'Appointment time', sampleValue: '2:30 PM' },\n { token: '{{providerName}}', label: 'Provider name', sampleValue: 'Dr. Patel' },\n { token: '{{practiceName}}', label: 'Practice name', sampleValue: 'Edvak Family Medicine' },\n];\n\nexport const SEED_OUTBOUND_PURPOSES: OutboundPurpose[] = [\n {\n purposeId: 'purpose-confirm-appt',\n label: 'Confirm appointment',\n description: 'Remind patient of upcoming visit and confirm attendance.',\n sampleOpening:\n 'Hi {{patientName}}, this is {{practiceName}} calling to confirm your appointment on {{appointmentDate}} at {{appointmentTime}} with {{providerName}}.',\n openingTemplate:\n 'Hi {{patientName}}, this is {{practiceName}} calling to confirm your appointment on {{appointmentDate}} at {{appointmentTime}} with {{providerName}}.',\n agentContextHint: 'Confirm attendance; offer reschedule if patient cannot make it.',\n requiredFields: ['appointmentDate', 'appointmentTime', 'providerName'],\n allowsCustomScript: false,\n isSystem: true,\n isActive: true,\n sortOrder: 1,\n placeholders: DEFAULT_PLACEHOLDERS,\n },\n {\n purposeId: 'purpose-recall',\n label: 'Recall / follow-up',\n description: 'Invite patient to schedule a follow-up visit.',\n sampleOpening:\n 'Hello {{patientName}}, {{practiceName}} here. We would like to help you schedule a follow-up with {{providerName}}.',\n openingTemplate:\n 'Hello {{patientName}}, {{practiceName}} here. We would like to help you schedule a follow-up with {{providerName}}.',\n agentContextHint: null,\n requiredFields: ['providerName'],\n allowsCustomScript: true,\n isSystem: true,\n isActive: true,\n sortOrder: 2,\n placeholders: DEFAULT_PLACEHOLDERS,\n },\n {\n purposeId: 'purpose-custom',\n label: 'Custom outreach',\n description: 'Staff-defined script for one-off calls.',\n sampleOpening: '',\n openingTemplate: 'Hi {{patientName}}, this is {{practiceName}}.',\n agentContextHint: 'Follow the custom script closely.',\n requiredFields: ['customScript'],\n allowsCustomScript: true,\n isSystem: false,\n isActive: false,\n sortOrder: 99,\n placeholders: DEFAULT_PLACEHOLDERS,\n },\n];\n","import { AgentActivity } from '../models/agent-activity.types';\n\nconst hour = 60 * 60 * 1000;\nconst now = Date.now();\n\nfunction todayAt(h: number, m = 0): string {\n const d = new Date();\n d.setHours(h, m, 0, 0);\n return d.toISOString();\n}\n\nexport const SEED_ACTIVITIES: AgentActivity[] = [\n {\n id: 'act-appt-1',\n type: 'appointment_booked',\n occurredAt: new Date(now - 0.4 * hour).toISOString(),\n title: 'Appointment booked',\n detail: '',\n patientId: 'pat-1001',\n patientName: 'Sooraj Jagadeesh',\n patientInitials: 'SJ',\n patientDob: '2002-06-30',\n patientAge: 23,\n patientGender: 'M',\n providerName: 'Dr. Anika Mehra',\n providerInitials: 'AM',\n providerSpecialty: 'Cardiologist',\n appointmentId: 'appt-9001',\n callId: 'LC-4801',\n startAt: todayAt(8, 0),\n endAt: todayAt(8, 15),\n durationMinutes: 15,\n visitType: 'Follow Up',\n hasInsurance: true,\n insuranceName: 'Aetna PPO',\n },\n {\n id: 'act-appt-1b',\n type: 'task_created',\n occurredAt: new Date(now - 0.35 * hour).toISOString(),\n title: 'Needs Scheduling Assistance',\n detail: '',\n patientId: 'pat-1001',\n patientName: 'Sooraj Jagadeesh',\n patientInitials: 'SJ',\n patientDob: '2002-06-30',\n patientAge: 23,\n patientGender: 'M',\n providerName: 'Front Desk',\n providerInitials: 'FD',\n providerSpecialty: 'Operations',\n taskId: 'task-4801',\n callId: 'LC-4801',\n startAt: todayAt(8, 5),\n visitType: 'Insurance verification',\n durationMinutes: 10,\n priority: 'medium',\n },\n {\n id: 'act-appt-2',\n type: 'appointment_booked',\n occurredAt: new Date(now - 1.1 * hour).toISOString(),\n title: 'Appointment booked',\n detail: '',\n patientId: 'pat-1005',\n patientName: 'Lisa Sullivan',\n patientInitials: 'LS',\n patientDob: '1998-03-12',\n patientAge: 28,\n patientGender: 'F',\n providerName: 'Dr. Marcus Webb',\n providerInitials: 'MW',\n providerSpecialty: 'Endocrinologist',\n appointmentId: 'appt-9003',\n callId: 'LC-4800',\n startAt: todayAt(8, 15),\n endAt: todayAt(8, 30),\n durationMinutes: 15,\n visitType: 'Lab Results Review',\n hasInsurance: false,\n },\n {\n id: 'act-appt-3',\n type: 'appointment_booked',\n occurredAt: new Date(now - 2.2 * hour).toISOString(),\n title: 'Appointment booked',\n detail: '',\n patientId: 'pat-1006',\n patientName: 'Aiden Rivera',\n patientInitials: 'AR',\n patientDob: '1995-11-04',\n patientAge: 30,\n patientGender: 'M',\n providerName: 'Dr. Priya Nair',\n providerInitials: 'PN',\n providerSpecialty: 'General Practitioner',\n appointmentId: 'appt-9004',\n callId: 'LC-4799',\n startAt: todayAt(8, 30),\n endAt: todayAt(8, 45),\n durationMinutes: 15,\n visitType: 'Routine Checkup',\n },\n {\n id: 'act-appt-4',\n type: 'appointment_booked',\n occurredAt: new Date(now - 8 * hour).toISOString(),\n title: 'Appointment booked',\n detail: '',\n patientId: 'pat-1003',\n patientName: 'Aisha Patel',\n patientInitials: 'AP',\n patientDob: '1988-01-19',\n patientAge: 38,\n patientGender: 'F',\n providerName: 'Dr. Jordan Lee',\n providerInitials: 'JL',\n providerSpecialty: 'Internal Medicine',\n appointmentId: 'appt-9002',\n callId: 'LC-4790',\n startAt: todayAt(14, 30),\n endAt: todayAt(15, 0),\n durationMinutes: 30,\n visitType: 'Annual Wellness',\n hasInsurance: true,\n insuranceName: 'BlueCross Blue Shield',\n },\n {\n id: 'act-1',\n type: 'patient_created',\n occurredAt: new Date(now - 0.5 * hour).toISOString(),\n title: 'Patient registered',\n detail: '',\n patientId: 'pat-1008',\n patientName: 'Maria Garcia',\n patientInitials: 'MG',\n patientDob: '1991-04-22',\n patientAge: 35,\n patientGender: 'F',\n callId: 'LC-4801',\n startAt: todayAt(9, 12),\n visitType: 'New registration',\n hasInsurance: true,\n insuranceName: 'UnitedHealthcare',\n },\n {\n id: 'act-5',\n type: 'patient_created',\n occurredAt: new Date(now - 26 * hour).toISOString(),\n title: 'Patient registered',\n detail: '',\n patientId: 'pat-1004',\n patientName: 'Sam Okonkwo',\n patientInitials: 'SO',\n patientDob: '1979-09-08',\n patientAge: 46,\n patientGender: 'M',\n callId: 'LC-4782',\n startAt: new Date(now - 26 * hour).toISOString(),\n visitType: 'Outbound registration',\n hasInsurance: false,\n },\n {\n id: 'act-3',\n type: 'task_created',\n occurredAt: new Date(now - 3 * hour).toISOString(),\n title: 'Needs Scheduling Assistance',\n detail: '',\n patientId: 'pat-1002',\n patientName: 'James Chen',\n patientInitials: 'JC',\n patientDob: '1985-12-01',\n patientAge: 40,\n patientGender: 'M',\n providerName: 'Front Desk',\n providerInitials: 'FD',\n providerSpecialty: 'Operations',\n taskId: 'task-301',\n callId: 'LC-4798',\n startAt: new Date(now - 3 * hour).toISOString(),\n visitType: 'Insurance verification',\n durationMinutes: 15,\n priority: 'medium',\n },\n {\n id: 'act-6',\n type: 'task_created',\n occurredAt: new Date(now - 5 * hour).toISOString(),\n title: 'Needs Scheduling Assistance',\n detail: '',\n patientId: 'pat-1007',\n patientName: 'Elena Foster',\n patientInitials: 'EF',\n patientDob: '1993-07-15',\n patientAge: 32,\n patientGender: 'F',\n providerName: 'Nurse Station',\n providerInitials: 'NS',\n providerSpecialty: 'Clinical support',\n taskId: 'task-302',\n callId: 'LC-4795',\n startAt: new Date(now - 5 * hour).toISOString(),\n visitType: 'Clinical callback',\n durationMinutes: 10,\n priority: 'medium',\n },\n];\n","import { Injectable, signal } from '@angular/core';\nimport { delay, map, Observable, of, throwError } from 'rxjs';\n\nimport {\n AgentSettings,\n AiReceptionistStatus,\n AnalyticsData,\n AuditEvent,\n DashboardData,\n CallRecordingMeta,\n HistoryCall,\n HistoryDetail,\n LiveCall,\n LocationOption,\n ProviderOption,\n SetupData,\n TaskItem,\n CreateTaskRequest,\n TaskFilters,\n RegenerateSummaryResult,\n ToolEvent,\n TranscriptLine,\n} from '../models/ai-receptionist.types';\nimport { StaffMediaJoinResult, StaffMediaMode } from '../models/staff-media.types';\nimport { DEFAULT_PAGE_SIZE, type PaginatedResult } from '../models/pagination';\nimport { computeEffectiveWelcomeMessage } from '../utils/welcome-message.util';\nimport {\n allSeedLogs,\n SEED_API_LOG_DETAILS,\n SEED_API_LOG_STATS,\n SEED_CALL_API_LOGS,\n} from '../mocks/api-log.seed';\nimport {\n ApiLogDetail,\n ApiLogFilters,\n ApiLogListResponse,\n ApiLogStats,\n} from '../models/api-log.types';\nimport {\n buildDashboard,\n cloneHistory,\n cloneLiveCalls,\n cloneTasks,\n getStreamingLines,\n SEED_ANALYTICS,\n SEED_AUDIT,\n SEED_HISTORY_DETAILS,\n SEED_SETTINGS,\n SEED_SETUP,\n SEED_LOCATIONS,\n SEED_PROVIDERS,\n} from '../mocks/seed-data';\nimport {\n DEFAULT_PLACEHOLDERS,\n SEED_OUTBOUND_PURPOSES,\n} from '../mocks/outbound-purpose.seed';\nimport {\n CreateOutboundPurposeRequest,\n OutboundPurpose,\n OutboundPurposesResponse,\n PlaceOutboundCallRequest,\n PlaceOutboundCallResponse,\n UpdateOutboundPurposeRequest,\n} from '../models/outbound-purpose.types';\nimport type {\n OutboundAppointmentHit,\n OutboundPatientHit,\n} from '../models/outbound-patient.types';\nimport type {\n AgentActivity,\n AgentActivityFilters,\n} from '../models/agent-activity.types';\nimport { SEED_ACTIVITIES } from '../mocks/agent-activity.seed';\n\nconst MOCK_DELAY_MS = 200;\n\n@Injectable({ providedIn: 'root' })\nexport class AiReceptionistApiMockService {\n private readonly liveCalls = signal(cloneLiveCalls());\n private readonly tasks = signal(cloneTasks());\n private readonly history = signal(cloneHistory());\n private readonly settings = signal<AgentSettings>(structuredClone(SEED_SETTINGS));\n private readonly status = signal<AiReceptionistStatus>({\n agentOn: true,\n mode: 'after-hours',\n readiness: SEED_SETUP.readiness,\n });\n private readonly outboundPurposes = signal<OutboundPurpose[]>(\n structuredClone(SEED_OUTBOUND_PURPOSES),\n );\n\n private mock<T>(data: T): Observable<{ data: T }> {\n return of({ data }).pipe(delay(MOCK_DELAY_MS));\n }\n\n private paginate<T>(\n rows: T[],\n page = 1,\n limit = DEFAULT_PAGE_SIZE,\n ): Observable<PaginatedResult<T>> {\n const safePage = Math.max(1, page);\n const safeLimit = Math.min(100, Math.max(1, limit));\n const start = (safePage - 1) * safeLimit;\n return of({\n items: rows.slice(start, start + safeLimit),\n total: rows.length,\n page: safePage,\n limit: safeLimit,\n }).pipe(delay(MOCK_DELAY_MS));\n }\n\n getStatus(): Observable<{ data: AiReceptionistStatus }> {\n return this.mock(this.status());\n }\n\n setAgentOn(on: boolean): void {\n this.status.update((s) => ({ ...s, agentOn: on }));\n }\n\n getDashboard(): Observable<{ data: DashboardData }> {\n const dash = buildDashboard();\n dash.liveCalls = [];\n return this.mock(dash);\n }\n\n getLiveCalls(): Observable<{ data: LiveCall[] }> {\n return this.mock(this.liveCalls());\n }\n\n getLiveCall(id: string): Observable<{ data: LiveCall | null }> {\n const call = this.liveCalls().find((c) => c.id === id) ?? null;\n return this.mock(call ? structuredClone(call) : null);\n }\n\n getCallTranscript(id: string): Observable<{ data: TranscriptLine[] }> {\n const call = this.liveCalls().find((c) => c.id === id);\n return this.mock(call ? call.transcript.map((l) => ({ ...l })) : []);\n }\n\n getCallSummary(id: string): Observable<{\n data: { summary: string; transcript: TranscriptLine[]; tools: ToolEvent[] } | null;\n }> {\n const detail = SEED_HISTORY_DETAILS[id];\n if (detail) {\n return this.mock({\n summary: detail.summary,\n transcript: detail.transcript.map((l) => ({ ...l })),\n tools: detail.tools.map((t) => ({ ...t })),\n });\n }\n const call = this.liveCalls().find((c) => c.id === id);\n if (call) {\n return this.mock({\n summary: 'Call summary will appear here after processing.',\n transcript: call.transcript.map((l) => ({ ...l })),\n tools: call.tools.map((t) => ({ ...t })),\n });\n }\n return this.mock(null);\n }\n\n getCallRecording(callId: string): Observable<CallRecordingMeta> {\n const detail = SEED_HISTORY_DETAILS[callId];\n if (detail?.recordingUrl) {\n const meta: CallRecordingMeta = {\n callId,\n status: 'ready',\n url: `/api/ai-receptionist/calls/${callId}/recording/audio`,\n contentType: 'audio/ogg',\n durationSeconds: detail.duration || 120,\n };\n return of<CallRecordingMeta>(meta).pipe(delay(MOCK_DELAY_MS));\n }\n const unavailable: CallRecordingMeta = {\n callId,\n status: 'unavailable',\n url: null,\n message: 'No recording available for this call',\n };\n return of<CallRecordingMeta>(unavailable).pipe(delay(MOCK_DELAY_MS));\n }\n\n getCallRecordingBlob(): Observable<Blob> {\n return of(new Blob([], { type: 'audio/ogg' })).pipe(delay(MOCK_DELAY_MS));\n }\n\n getHistory(filters?: {\n q?: string;\n dir?: string;\n outcome?: string;\n location?: string;\n review?: 'needs' | 'reviewed';\n page?: number;\n limit?: number;\n }): Observable<PaginatedResult<HistoryCall>> {\n let rows = this.history();\n const q = filters?.q?.toLowerCase().trim();\n if (q) {\n rows = rows.filter(\n (h) =>\n h.name.toLowerCase().includes(q) ||\n h.phone.includes(q) ||\n h.reason.toLowerCase().includes(q) ||\n h.id.toLowerCase().includes(q),\n );\n }\n if (filters?.dir) rows = rows.filter((h) => h.direction === filters.dir);\n if (filters?.outcome) {\n rows = rows.filter((h) => h.outcome.toLowerCase().includes(filters.outcome!.toLowerCase()));\n }\n if (filters?.location) rows = rows.filter((h) => h.location === filters.location);\n if (filters?.review) rows = rows.filter((h) => h.review === filters.review);\n return this.paginate(rows, filters?.page, filters?.limit);\n }\n\n getCallDetail(id: string): Observable<{ data: HistoryDetail | null }> {\n const detail = SEED_HISTORY_DETAILS[id] ?? null;\n return this.mock(detail ? structuredClone(detail) : null);\n }\n\n regenerateCallSummary(callId: string): Observable<{ data: RegenerateSummaryResult }> {\n const detail = SEED_HISTORY_DETAILS[callId];\n if (!detail) {\n return throwError(() => ({ message: 'Call not found.', status: 404 }));\n }\n if (!detail.transcript.length) {\n return throwError(() => ({ message: 'No transcript on this call.', status: 400 }));\n }\n\n const turnCount = detail.transcript.filter((line) => line.who !== 'system').length;\n const summary = `Regenerated summary (${new Date().toLocaleString()}): ${detail.summary}`;\n detail.summary = summary;\n SEED_HISTORY_DETAILS[callId] = detail;\n\n return this.mock({\n callId,\n summary,\n summaryModel: 'gpt-4o-mini',\n summaryGeneratedAt: new Date().toISOString(),\n transcriptTurnCount: turnCount,\n });\n }\n\n postTakeover(id: string): Observable<{ data: { success: boolean } }> {\n return this.postMediaJoin(id, 'takeover').pipe(map(() => ({ data: { success: true } })));\n }\n\n postMediaJoin(\n id: string,\n mode: StaffMediaMode,\n ): Observable<{ data: StaffMediaJoinResult }> {\n this.patchLive(id, (c) => ({\n ...c,\n status: mode === 'takeover' ? 'takeover' : c.status,\n controlMode: mode,\n assigned: mode === 'takeover' ? 'You' : c.assigned,\n aiPaused: mode === 'takeover',\n }));\n // Mock tokens are placeholders — StaffMediaService is skipped when useMockApi is on.\n return this.mock({\n ok: true,\n callId: id,\n mode,\n provider: 'livekit',\n livekitUrl: 'wss://mock.livekit.local',\n clientToken: `mock-token-${mode}-${id}`,\n roomName: `call-${id}`,\n controlMode: mode,\n aiPaused: mode === 'takeover',\n assigned: mode === 'takeover' ? 'You' : null,\n });\n }\n\n postMediaLeave(id: string): Observable<{ data: { success: boolean } }> {\n this.patchLive(id, (c) => ({\n ...c,\n status: 'ai',\n controlMode: 'ai',\n assigned: null,\n aiPaused: false,\n }));\n return this.mock({ success: true });\n }\n\n postResumeAi(id: string): Observable<{ data: { success: boolean } }> {\n return this.postMediaLeave(id);\n }\n\n postPause(id: string): Observable<{ data: { success: boolean } }> {\n this.patchLive(id, (c) => ({ ...c, controlMode: 'paused', aiPaused: true }));\n return this.mock({ success: true });\n }\n\n postResume(id: string): Observable<{ data: { success: boolean } }> {\n this.patchLive(id, (c) => ({\n ...c,\n controlMode: c.status === 'takeover' || c.assigned ? 'takeover' : 'ai',\n aiPaused: false,\n }));\n return this.mock({ success: true });\n }\n\n postListen(id: string): Observable<{ data: { success: boolean } }> {\n return this.postMediaJoin(id, 'listen').pipe(map(() => ({ data: { success: true } })));\n }\n\n postTransfer(id: string): Observable<{ data: { success: boolean } }> {\n this.patchLive(id, (c) => ({ ...c, status: 'transferring' }));\n return this.mock({ success: true });\n }\n\n postEnd(id: string): Observable<{ data: { success: boolean } }> {\n this.liveCalls.update((calls) => calls.filter((c) => c.id !== id));\n return this.mock({ success: true });\n }\n\n postMessage(id: string, text: string): Observable<{ data: { success: boolean } }> {\n this.patchLive(id, (c) => ({\n ...c,\n transcript: [...c.transcript, { who: 'staff' as const, text, at: Date.now() }],\n }));\n return this.mock({ success: true });\n }\n\n postReview(id: string): Observable<{ data: { review: string } }> {\n this.history.update((rows) =>\n rows.map((h) => (h.id === id ? { ...h, review: 'reviewed' as const } : h)),\n );\n const detail = SEED_HISTORY_DETAILS[id];\n if (detail) {\n detail.review = 'reviewed';\n }\n return this.mock({ review: 'reviewed' });\n }\n\n getTasks(filters?: TaskFilters): Observable<PaginatedResult<TaskItem>> {\n let rows = this.tasks();\n if (filters?.status) rows = rows.filter((t) => t.status === filters.status);\n if (filters?.type) rows = rows.filter((t) => t.type === filters.type);\n if (filters?.source) rows = rows.filter((t) => t.source === filters.source);\n if (filters?.callId) rows = rows.filter((t) => t.callId === filters.callId);\n return this.paginate(rows, filters?.page, filters?.limit);\n }\n\n getCallTasks(callId: string): Observable<{ data: TaskItem[] }> {\n return this.getTasks({ callId, limit: 100 }).pipe(\n map((page) => ({ data: page.items })),\n );\n }\n\n createTask(req: CreateTaskRequest): Observable<{ data: TaskItem }> {\n let description = req.description?.trim() ?? '';\n if (!description && req.callId) {\n description = SEED_HISTORY_DETAILS[req.callId]?.summary ?? '';\n }\n\n const task: TaskItem = {\n id: `TK-${Date.now()}`,\n created: Date.now(),\n title: req.title.trim(),\n type: req.type,\n description,\n patient: req.patient?.trim() || '—',\n priority: req.priority ?? 'normal',\n status: 'open',\n source: 'manual',\n assignee: req.assignee?.trim() || 'Front desk',\n callId: req.callId,\n };\n\n this.tasks.update((rows) => [task, ...rows]);\n return this.mock(task);\n }\n\n patchTask(id: string, status: TaskItem['status']): Observable<{ data: TaskItem | null }> {\n let updated: TaskItem | null = null;\n this.tasks.update((rows) =>\n rows.map((t) => {\n if (t.id !== id) return t;\n updated = { ...t, status };\n return updated;\n }),\n );\n return this.mock(updated);\n }\n\n getAnalytics(range: string): Observable<{ data: AnalyticsData }> {\n return this.mock({ ...SEED_ANALYTICS, range });\n }\n\n getSettings(): Observable<{ data: AgentSettings }> {\n const data = this.withEffectiveWelcome(this.settings());\n return this.mock(data);\n }\n\n putSettings(next: AgentSettings): Observable<{ data: AgentSettings }> {\n const saved = this.withEffectiveWelcome(structuredClone(next));\n this.settings.set(saved);\n return this.mock(saved);\n }\n\n getVoicePromptDefault(): Observable<{\n defaultVoiceSystemPrompt: string;\n voiceSystemPromptMaxLength: number;\n customVoiceInstructionsMaxLength: number;\n notes?: string;\n }> {\n return of({\n defaultVoiceSystemPrompt:\n 'You are an AI receptionist for a medical practice. Be warm, concise, and HIPAA-aware.',\n voiceSystemPromptMaxLength: 24000,\n customVoiceInstructionsMaxLength: 8000,\n notes: 'Leave voiceSystemPrompt empty to use this shipped default.',\n }).pipe(delay(MOCK_DELAY_MS));\n }\n\n previewVoice(_voiceId: string): Observable<Blob> {\n // Silent tiny wav so mock mode does not break the Play button.\n const silent = new Uint8Array([\n 0x52, 0x49, 0x46, 0x46, 0x24, 0x00, 0x00, 0x00, 0x57, 0x41, 0x56, 0x45, 0x66, 0x6d, 0x74,\n 0x20, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x40, 0x1f, 0x00, 0x00, 0x80, 0x3e,\n 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00,\n ]);\n return of(new Blob([silent], { type: 'audio/wav' })).pipe(delay(MOCK_DELAY_MS));\n }\n\n testKnowledgeAnswer(params: {\n question: string;\n whatToSay: string;\n whatNotToSay: string;\n voiceId?: string;\n }): Observable<{ answer: string; voiceId: string; audioBlob: Blob }> {\n const answer =\n `Based on our guidance: for “${params.question.trim()}”, ` +\n `I'd share what's in our practice knowledge and avoid restricted topics.`;\n return this.previewVoice(params.voiceId ?? 'mock').pipe(\n map((audioBlob) => ({\n answer,\n voiceId: params.voiceId ?? 'mock',\n audioBlob,\n })),\n );\n }\n\n private withEffectiveWelcome(settings: AgentSettings): AgentSettings {\n return {\n ...settings,\n effectiveWelcomeMessage: computeEffectiveWelcomeMessage(settings),\n };\n }\n\n getAudit(\n q?: string,\n actor?: string,\n opts?: { page?: number; limit?: number },\n ): Observable<PaginatedResult<AuditEvent>> {\n let rows = SEED_AUDIT;\n if (q) {\n const needle = q.toLowerCase();\n rows = rows.filter(\n (e) =>\n e.action.toLowerCase().includes(needle) ||\n e.detail.toLowerCase().includes(needle) ||\n e.target.toLowerCase().includes(needle),\n );\n }\n if (actor) rows = rows.filter((e) => e.actor.toLowerCase().includes(actor.toLowerCase()));\n return this.paginate(rows, opts?.page, opts?.limit);\n }\n\n getActivities(filters?: AgentActivityFilters): Observable<PaginatedResult<AgentActivity>> {\n let rows = structuredClone(SEED_ACTIVITIES);\n const types = (filters?.types ?? '')\n .split(',')\n .map((t) => t.trim())\n .filter(Boolean);\n if (types.length) {\n rows = rows.filter((a) => types.includes(a.type));\n }\n if (filters?.callId?.trim()) {\n const callId = filters.callId.trim().toLowerCase();\n rows = rows.filter((a) => (a.callId || '').toLowerCase() === callId);\n }\n if (filters?.search?.trim()) {\n const needle = filters.search.trim().toLowerCase();\n rows = rows.filter((a) =>\n [a.title, a.detail, a.patientName, a.callId, a.type]\n .filter(Boolean)\n .join(' ')\n .toLowerCase()\n .includes(needle),\n );\n }\n return this.paginate(rows, filters?.page, filters?.limit);\n }\n\n getSetup(): Observable<{ data: SetupData }> {\n return this.mock(SEED_SETUP);\n }\n\n activateSetup(): Observable<{ data: { success: boolean } }> {\n return this.mock({ success: true });\n }\n\n getLocations(): Observable<{ data: LocationOption[] }> {\n return this.mock(SEED_LOCATIONS);\n }\n\n getProviders(): Observable<{ data: ProviderOption[] }> {\n return this.mock(SEED_PROVIDERS);\n }\n\n getStreamLines(): TranscriptLine[] {\n return getStreamingLines();\n }\n\n appendStreamLine(callId: string, line: TranscriptLine): void {\n this.patchLive(callId, (c) => ({\n ...c,\n transcript: [...c.transcript, line],\n }));\n }\n\n usesMockStreaming(): boolean {\n return true;\n }\n\n getCallApiLogs(callId: string): Observable<ApiLogListResponse> {\n const template = SEED_CALL_API_LOGS[callId] ?? SEED_CALL_API_LOGS['LC-4821'] ?? [];\n const items = template.map((row) => ({ ...row, callId }));\n return of({ items: structuredClone(items), total: items.length }).pipe(delay(MOCK_DELAY_MS));\n }\n\n getApiLogs(filters: ApiLogFilters = {}): Observable<ApiLogListResponse> {\n let rows = allSeedLogs();\n if (filters.callId) {\n rows = rows.filter((r) => r.callId === filters.callId);\n }\n if (filters.provider) {\n const providers = filters.provider.split(',').filter(Boolean);\n rows = rows.filter((r) => providers.includes(r.provider));\n }\n if (filters.success !== undefined) {\n rows = rows.filter((r) => r.success === filters.success);\n }\n if (filters.statusCode != null) {\n rows = rows.filter((r) => r.statusCode === filters.statusCode);\n }\n if (filters.operation) {\n const op = filters.operation.toLowerCase();\n rows = rows.filter((r) => r.operation.toLowerCase().includes(op));\n }\n if (filters.search) {\n const q = filters.search.toLowerCase();\n rows = rows.filter(\n (r) =>\n r.operation.toLowerCase().includes(q) ||\n r.urlPath.toLowerCase().includes(q) ||\n (r.errorMessage?.toLowerCase().includes(q) ?? false) ||\n (r.toolName?.toLowerCase().includes(q) ?? false),\n );\n }\n if (filters.from) {\n const from = Date.parse(filters.from);\n rows = rows.filter((r) => Date.parse(r.startedAt) >= from);\n }\n if (filters.to) {\n const to = Date.parse(filters.to);\n rows = rows.filter((r) => Date.parse(r.startedAt) <= to);\n }\n if (filters.practiceId) {\n rows = rows.filter((r) => (r.clientPracticeId ?? '') === filters.practiceId);\n }\n rows = [...rows].sort((a, b) => Date.parse(b.startedAt) - Date.parse(a.startedAt));\n const page = filters.page ?? 1;\n const limit = filters.limit ?? 50;\n const start = (page - 1) * limit;\n const items = rows.slice(start, start + limit);\n return of({\n items,\n total: rows.length,\n page,\n limit,\n practiceId: filters.practiceId ?? null,\n }).pipe(delay(MOCK_DELAY_MS));\n }\n\n getApiLogDetail(logId: string): Observable<{ data: ApiLogDetail | null }> {\n const detail = SEED_API_LOG_DETAILS[logId];\n if (detail) {\n return this.mock(structuredClone(detail));\n }\n const listItem = allSeedLogs().find((r) => r.id === logId);\n if (!listItem) {\n return of({ data: null }).pipe(delay(MOCK_DELAY_MS));\n }\n const fallback: ApiLogDetail = {\n ...listItem,\n traceId: null,\n requestBody: listItem.requestPreview ? { preview: listItem.requestPreview } : null,\n responseBody: listItem.responsePreview ? { preview: listItem.responsePreview } : null,\n metadata: null,\n completedAt: listItem.startedAt,\n };\n return this.mock(fallback);\n }\n\n getApiLogStats(): Observable<{ data: ApiLogStats }> {\n return this.mock(structuredClone(SEED_API_LOG_STATS));\n }\n\n getOutboundPurposes(includeInactive = false): Observable<OutboundPurposesResponse> {\n let rows = [...this.outboundPurposes()].sort((a, b) => a.sortOrder - b.sortOrder);\n if (!includeInactive) {\n rows = rows.filter((p) => p.isActive);\n }\n return of({ purposes: structuredClone(rows) }).pipe(delay(MOCK_DELAY_MS));\n }\n\n createOutboundPurpose(body: CreateOutboundPurposeRequest): Observable<OutboundPurpose> {\n const purpose: OutboundPurpose = {\n purposeId: `purpose-${Date.now()}`,\n label: body.label,\n description: body.description ?? '',\n sampleOpening: body.sampleOpening ?? '',\n openingTemplate: body.openingTemplate,\n agentContextHint: body.agentContextHint ?? null,\n requiredFields: body.requiredFields,\n allowsCustomScript: body.allowsCustomScript ?? false,\n isSystem: false,\n isActive: true,\n sortOrder: body.sortOrder ?? this.outboundPurposes().length + 1,\n placeholders: structuredClone(DEFAULT_PLACEHOLDERS),\n };\n this.outboundPurposes.update((list) => [...list, purpose]);\n return of(structuredClone(purpose)).pipe(delay(MOCK_DELAY_MS));\n }\n\n updateOutboundPurpose(\n purposeId: string,\n body: UpdateOutboundPurposeRequest,\n ): Observable<OutboundPurpose> {\n let updated: OutboundPurpose | null = null;\n this.outboundPurposes.update((list) =>\n list.map((p) => {\n if (p.purposeId !== purposeId) return p;\n updated = {\n ...p,\n ...body,\n label: body.label ?? p.label,\n description: body.description ?? p.description,\n sampleOpening: body.sampleOpening ?? p.sampleOpening,\n openingTemplate: body.openingTemplate ?? p.openingTemplate,\n agentContextHint:\n body.agentContextHint !== undefined ? body.agentContextHint : p.agentContextHint,\n requiredFields: body.requiredFields ?? p.requiredFields,\n allowsCustomScript: body.allowsCustomScript ?? p.allowsCustomScript,\n isActive: body.isActive ?? p.isActive,\n sortOrder: body.sortOrder ?? p.sortOrder,\n };\n return updated;\n }),\n );\n if (!updated) {\n return throwError(() => new Error('Purpose not found'));\n }\n const saved: OutboundPurpose = updated;\n return of(structuredClone(saved)).pipe(delay(MOCK_DELAY_MS));\n }\n\n deleteOutboundPurpose(purposeId: string): Observable<{ success: boolean }> {\n const target = this.outboundPurposes().find((p) => p.purposeId === purposeId);\n if (!target) {\n return of({ success: false }).pipe(delay(MOCK_DELAY_MS));\n }\n if (target.isSystem) {\n return of({ success: false }).pipe(delay(MOCK_DELAY_MS));\n }\n this.outboundPurposes.update((list) => list.filter((p) => p.purposeId !== purposeId));\n return of({ success: true }).pipe(delay(MOCK_DELAY_MS));\n }\n\n placeOutboundCall(body: PlaceOutboundCallRequest): Observable<PlaceOutboundCallResponse> {\n const idHint = body.appointmentId\n ? ` (appt ${body.appointmentId})`\n : body.patientId\n ? ` (patient ${body.patientId})`\n : '';\n return of({\n success: true,\n callId: `LC-${Math.floor(4800 + Math.random() * 100)}`,\n message: `Outbound call started to ${body.phone}${idHint}`,\n }).pipe(delay(MOCK_DELAY_MS));\n }\n\n searchPatientsForOutbound(q: string, limit = 10): Observable<OutboundPatientHit[]> {\n const needle = q.trim().toLowerCase();\n const digits = q.replace(/\\D/g, '');\n const hits: OutboundPatientHit[] = [\n {\n patientId: 'pat-1001',\n firstName: 'Maria',\n lastName: 'Garcia',\n fullName: 'Maria Garcia',\n phone: '+14155550100',\n dob: '1988-04-12',\n },\n {\n patientId: 'pat-1002',\n firstName: 'James',\n lastName: 'Chen',\n fullName: 'James Chen',\n phone: '+14155550122',\n dob: '1975-11-03',\n },\n {\n patientId: 'pat-1003',\n firstName: 'Aisha',\n lastName: 'Patel',\n fullName: 'Aisha Patel',\n phone: '+14155550987',\n dob: '1992-07-21',\n },\n ].filter((p) => {\n if (!needle) return false;\n const hay = `${p.fullName} ${p.phone} ${p.patientId}`.toLowerCase();\n return hay.includes(needle) || (!!digits && (p.phone ?? '').includes(digits));\n });\n return of(hits.slice(0, limit)).pipe(delay(MOCK_DELAY_MS));\n }\n\n listPatientAppointmentsForOutbound(\n patientId: string,\n limit = 20,\n ): Observable<OutboundAppointmentHit[]> {\n const now = Date.now();\n const day = 24 * 60 * 60 * 1000;\n const all: OutboundAppointmentHit[] = [\n {\n appointmentId: `appt-${patientId}-1`,\n startTime: new Date(now + 2 * day).toISOString(),\n endTime: new Date(now + 2 * day + 30 * 60 * 1000).toISOString(),\n providerName: 'Dr. Patel',\n locationName: 'Main Clinic',\n status: 'scheduled',\n visitType: 'Follow-up',\n },\n {\n appointmentId: `appt-${patientId}-2`,\n startTime: new Date(now + 9 * day).toISOString(),\n endTime: new Date(now + 9 * day + 45 * 60 * 1000).toISOString(),\n providerName: 'Dr. Nguyen',\n locationName: 'West Wing',\n status: 'confirmed',\n visitType: 'Annual wellness',\n },\n ];\n return of(all.slice(0, limit)).pipe(delay(MOCK_DELAY_MS));\n }\n\n private patchLive(id: string, fn: (call: LiveCall) => LiveCall): void {\n this.liveCalls.update((calls) =>\n calls.map((c) => (c.id === id ? fn(structuredClone(c)) : c)),\n );\n }\n}\n","import { HttpClient, HttpErrorResponse, HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, catchError, forkJoin, map, of, switchMap, throwError } from 'rxjs';\n\nimport { createVoiceReceptionistPaths } from '../api-paths';\nimport { VOICE_RECEPTIONIST_CONFIG } from '../config';\nimport { extractApiRows } from '../extract-api-rows';\nimport {\n ApiLogDetail,\n ApiLogFilters,\n ApiLogListResponse,\n ApiLogStats,\n} from '../models/api-log.types';\nimport {\n CreateOutboundPurposeRequest,\n OutboundPurpose,\n OutboundPurposesResponse,\n PlaceOutboundCallRequest,\n PlaceOutboundCallResponse,\n UpdateOutboundPurposeRequest,\n} from '../models/outbound-purpose.types';\nimport {\n mapOutboundAppointmentHit,\n mapOutboundPatientHit,\n toE164Phone,\n type OutboundAppointmentHit,\n type OutboundPatientHit,\n} from '../models/outbound-patient.types';\nimport {\n mapStaffMediaJoinResult,\n type StaffMediaJoinResult,\n type StaffMediaMode,\n} from '../models/staff-media.types';\nimport {\n AgentSettings,\n AiReceptionistStatus,\n AnalyticsData,\n AuditEvent,\n DashboardData,\n HistoryCall,\n HistoryDetail,\n LiveCall,\n RegenerateSummaryResult,\n LocationOption,\n ProviderOption,\n SetupData,\n TaskItem,\n CreateTaskRequest,\n TaskFilters,\n ToolEvent,\n TranscriptLine,\n CallRecordingMeta,\n} from '../models/ai-receptionist.types';\nimport {\n mapAgentActivity,\n type AgentActivity,\n type AgentActivityFilters,\n} from '../models/agent-activity.types';\nimport {\n AnalyticsDto,\n AiCreatedAppointmentDto,\n DashboardSummaryDto,\n HistoryCallDto,\n HistoryDetailDto,\n LiveCallDto,\n AiStatusDto,\n SetupDto,\n RecordingDto,\n RegenerateSummaryResponseDto,\n TaskDto,\n} from '../models/api-dto.types';\nimport {\n asPaginatedResult,\n DEFAULT_PAGE_SIZE,\n type PaginatedResult,\n} from '../models/pagination';\nimport {\n asAuditList,\n asHistoryList,\n asLiveCallList,\n asTaskList,\n asTranscriptList,\n isHistoryCallDto,\n mapAnalyticsDto,\n mapAiCreatedAppointmentDto,\n mapAuditEventDto,\n mapDashboardSummaryDto,\n mapHistoryCallDto,\n mapHistoryDetailDto,\n mapLiveCallDto,\n mapLocationDto,\n mapProviderDto,\n mapRecordingMeta,\n mapRegenerateSummaryResponse,\n mapCreateTaskRequest,\n mapSettingsResponse,\n mapSettingsToRequest,\n mapSetupDto,\n mapStatusDto,\n mapTaskDto,\n mapToolEvent,\n mapTranscriptLine,\n toApiTaskStatus,\n} from './ai-receptionist-api.mappers';\nimport { AiReceptionistApiMockService } from './ai-receptionist-api.mock';\n\n@Injectable({ providedIn: 'root' })\nexport class AiReceptionistApiService {\n private readonly http = inject(HttpClient);\n private readonly mock = inject(AiReceptionistApiMockService);\n private readonly config = inject(VOICE_RECEPTIONIST_CONFIG);\n private readonly paths = createVoiceReceptionistPaths(this.config);\n private readonly arBase = this.paths.aiReceptionistPath();\n\n private get useMock(): boolean {\n return !!this.config.useMockApi;\n }\n\n getStatus(): Observable<{ data: AiReceptionistStatus }> {\n if (this.useMock) return this.mock.getStatus();\n return this.http.get<AiStatusDto>(`${this.arBase}/status`).pipe(\n map((body) => ({ data: mapStatusDto(body) })),\n catchError((err: HttpErrorResponse) =>\n throwError(() => ({\n message: this.apiErrorMessage(err, 'Failed to load agent status.'),\n status: err.status,\n })),\n ),\n );\n }\n\n /** Prefer this for the dashboard On/Off switch — PUT { enabled }. */\n setAgentOnline(enabled: boolean): Observable<{ data: AiReceptionistStatus }> {\n if (this.useMock) {\n this.mock.setAgentOn(enabled);\n return this.mock.getStatus();\n }\n return this.http\n .put<AiStatusDto>(`${this.arBase}/agent-online`, { enabled })\n .pipe(\n map((body) => ({ data: mapStatusDto(body) })),\n catchError((err: HttpErrorResponse) =>\n throwError(() => ({\n message: this.apiErrorMessage(err, 'Failed to update agent online status.'),\n status: err.status,\n })),\n ),\n );\n }\n\n /** @deprecated Prefer setAgentOnline — kept for setup wizard activate flow. */\n setAgentOn(on: boolean): void {\n if (this.useMock) {\n this.mock.setAgentOn(on);\n return;\n }\n const path = on ? 'activate' : 'deactivate';\n this.http.post(`${this.arBase}/${path}`, {}).subscribe();\n }\n\n getDashboard(): Observable<{ data: DashboardData }> {\n if (this.useMock) return this.mock.getDashboard();\n return forkJoin({\n summary: this.http.get<DashboardSummaryDto>(`${this.arBase}/dashboard/summary`),\n history: this.http.get<unknown>(`${this.arBase}/calls/history`, {\n params: new HttpParams().set('page', '1').set('limit', '5'),\n }),\n tasks: this.http\n .get<unknown>(`${this.arBase}/tasks`, {\n params: new HttpParams().set('source', 'voice').set('limit', '5'),\n })\n .pipe(catchError(() => of([]))),\n appointments: this.http\n .get<AiCreatedAppointmentDto[] | { items: AiCreatedAppointmentDto[] }>(\n `${this.arBase}/dashboard/appointments`,\n { params: new HttpParams().set('limit', '5') },\n )\n .pipe(catchError(() => of([] as AiCreatedAppointmentDto[]))),\n }).pipe(\n map(({ summary, history, tasks, appointments }) => ({\n data: {\n stats: mapDashboardSummaryDto(summary),\n liveCalls: [],\n latestTasks: asTaskList(tasks)\n .map(mapTaskDto)\n .sort((a, b) => b.created - a.created)\n .slice(0, 5),\n latestAppointments: (Array.isArray(appointments)\n ? appointments\n : appointments.items ?? []\n ).map(mapAiCreatedAppointmentDto),\n recentHistory: asHistoryList(history).map(mapHistoryCallDto),\n },\n })),\n );\n }\n\n getLiveCalls(): Observable<{ data: LiveCall[] }> {\n if (this.useMock) return this.mock.getLiveCalls();\n return this.http.get<unknown>(`${this.arBase}/calls/live`).pipe(\n map((body) => ({ data: asLiveCallList(body).map(mapLiveCallDto) })),\n );\n }\n\n getLiveCall(id: string): Observable<{ data: LiveCall | null }> {\n if (this.useMock) return this.mock.getLiveCall(id);\n const enc = encodeURIComponent(id);\n return this.http.get<LiveCallDto>(`${this.arBase}/calls/${enc}`).pipe(\n map((dto) => ({ data: dto?.id ? mapLiveCallDto(dto) : null })),\n catchError(() => of({ data: null })),\n );\n }\n\n getCallTranscript(id: string): Observable<{ data: TranscriptLine[] }> {\n if (this.useMock) return this.mock.getCallTranscript(id);\n const enc = encodeURIComponent(id);\n return this.http.get<unknown>(`${this.arBase}/calls/${enc}/transcript`).pipe(\n map((body) => ({ data: asTranscriptList(body).map(mapTranscriptLine) })),\n catchError(() => of({ data: [] })),\n );\n }\n\n getCallSummary(id: string): Observable<{\n data: { summary: string; transcript: TranscriptLine[]; tools: ToolEvent[] } | null;\n }> {\n if (this.useMock) return this.mock.getCallSummary(id);\n const enc = encodeURIComponent(id);\n return this.http.get<HistoryDetailDto>(`${this.arBase}/calls/${enc}/summary`).pipe(\n map((dto) => ({\n data: dto\n ? {\n summary: dto.summary ?? '',\n transcript: (dto.transcript ?? []).map(mapTranscriptLine),\n tools: (dto.tools ?? []).map(mapToolEvent),\n }\n : null,\n })),\n catchError(() => of({ data: null })),\n );\n }\n\n getCallRecording(callId: string): Observable<CallRecordingMeta> {\n if (this.useMock) return this.mock.getCallRecording(callId);\n const enc = encodeURIComponent(callId);\n return this.http.get<RecordingDto>(`${this.arBase}/calls/${enc}/recording`).pipe(\n map((dto) => mapRecordingMeta(dto)),\n catchError(() =>\n of<CallRecordingMeta>({\n callId,\n status: 'unavailable',\n url: null,\n message: 'No recording available for this call',\n }),\n ),\n );\n }\n\n /** Fetch audio bytes with JWT (interceptor). Pass relative path from metadata.url. */\n getCallRecordingBlob(audioPath: string): Observable<Blob> {\n if (this.useMock) return this.mock.getCallRecordingBlob();\n const url = audioPath.startsWith('http') ? audioPath : `${this.paths.apiRoot()}${audioPath}`;\n return this.http.get(url, { responseType: 'blob' });\n }\n\n getHistory(filters?: {\n q?: string;\n dir?: string;\n outcome?: string;\n location?: string;\n review?: 'needs' | 'reviewed';\n page?: number;\n limit?: number;\n }): Observable<PaginatedResult<HistoryCall>> {\n if (this.useMock) return this.mock.getHistory(filters);\n const page = filters?.page ?? 1;\n const limit = filters?.limit ?? DEFAULT_PAGE_SIZE;\n let params = new HttpParams().set('page', String(page)).set('limit', String(limit));\n if (filters?.q) params = params.set('search', filters.q);\n if (filters?.dir) params = params.set('direction', filters.dir);\n if (filters?.outcome) params = params.set('outcome', filters.outcome);\n if (filters?.location) params = params.set('location', filters.location);\n if (filters?.review) params = params.set('review', filters.review);\n return this.http.get<unknown>(`${this.arBase}/calls/history`, { params }).pipe(\n map((body) => {\n const pageResult = asPaginatedResult<HistoryCallDto>(body, page, limit);\n return {\n ...pageResult,\n items: pageResult.items.map(mapHistoryCallDto),\n };\n }),\n );\n }\n\n getCallDetail(id: string): Observable<{ data: HistoryDetail | null }> {\n if (this.useMock) return this.mock.getCallDetail(id);\n const enc = encodeURIComponent(id);\n return forkJoin({\n call: this.http.get<HistoryCallDto | LiveCallDto>(`${this.arBase}/calls/${enc}`),\n summary: this.http.get<HistoryDetailDto>(`${this.arBase}/calls/${enc}/summary`),\n recording: this.http\n .get<RecordingDto>(`${this.arBase}/calls/${enc}/recording`)\n .pipe(catchError(() => of({ callId: id, url: null, message: '' }))),\n }).pipe(\n map(({ call, summary, recording }) => {\n if (!isHistoryCallDto(call)) return { data: null };\n return {\n data: mapHistoryDetailDto(call, summary, recording?.url),\n };\n }),\n catchError(() => of({ data: null })),\n );\n }\n\n regenerateCallSummary(callId: string): Observable<{ data: RegenerateSummaryResult }> {\n if (this.useMock) return this.mock.regenerateCallSummary(callId);\n const enc = encodeURIComponent(callId);\n return this.http\n .post<RegenerateSummaryResponseDto>(`${this.arBase}/calls/${enc}/summary/regenerate`, {})\n .pipe(\n map((body) => ({ data: mapRegenerateSummaryResponse(body) })),\n catchError((err: HttpErrorResponse) =>\n throwError(() => ({\n message: this.apiErrorMessage(err, 'Failed to regenerate summary.'),\n status: err.status,\n })),\n ),\n );\n }\n\n /**\n * Staff softphone join into LiveKit room `call-{callId}`.\n * POST /calls/:id/media/join { mode: listen|takeover }\n */\n postMediaJoin(\n id: string,\n mode: StaffMediaMode,\n ): Observable<{ data: StaffMediaJoinResult }> {\n if (this.useMock) return this.mock.postMediaJoin(id, mode);\n const enc = encodeURIComponent(id);\n return this.http\n .post<unknown>(`${this.arBase}/calls/${enc}/media/join`, { mode })\n .pipe(\n map((body) => {\n const data = mapStaffMediaJoinResult(body);\n if (!data) {\n throw new Error('media/join response missing livekitUrl or clientToken');\n }\n return { data: { ...data, callId: data.callId || id, mode } };\n }),\n catchError((err: HttpErrorResponse) =>\n throwError(() => new Error(this.apiErrorMessage(err, 'Failed to join call media'))),\n ),\n );\n }\n\n /** Drop staff WebRTC only; does not hang up the patient. */\n postMediaLeave(id: string): Observable<{ data: { success: boolean } }> {\n if (this.useMock) return this.mock.postMediaLeave(id);\n const enc = encodeURIComponent(id);\n return this.http\n .post<unknown>(`${this.arBase}/calls/${enc}/media/leave`, {})\n .pipe(map(() => ({ data: { success: true } })));\n }\n\n /**\n * Take over — same join payload as media/join { mode: takeover }.\n * Prefer this or postMediaJoin('takeover'); both are supported by BE.\n */\n postTakeover(id: string): Observable<{ data: StaffMediaJoinResult }> {\n if (this.useMock) return this.mock.postMediaJoin(id, 'takeover');\n const enc = encodeURIComponent(id);\n return this.http.post<unknown>(`${this.arBase}/calls/${enc}/takeover`, {}).pipe(\n map((body) => {\n const data = mapStaffMediaJoinResult(body);\n if (!data) {\n throw new Error('takeover response missing livekitUrl or clientToken');\n }\n const mode: StaffMediaMode = 'takeover';\n return { data: { ...data, callId: data.callId || id, mode } };\n }),\n catchError((err: HttpErrorResponse) =>\n throwError(() => new Error(this.apiErrorMessage(err, 'Failed to take over call'))),\n ),\n );\n }\n\n postResumeAi(id: string): Observable<{ data: { success: boolean } }> {\n if (this.useMock) return this.mock.postResumeAi(id);\n return this.postCallAction(id, 'resume-ai');\n }\n\n postPause(id: string): Observable<{ data: { success: boolean } }> {\n if (this.useMock) return this.mock.postPause(id);\n return this.postCallAction(id, 'pause');\n }\n\n postResume(id: string): Observable<{ data: { success: boolean } }> {\n if (this.useMock) return this.mock.postResume(id);\n return this.postCallAction(id, 'resume');\n }\n\n /** Listen — same join payload as media/join { mode: listen }. */\n postListen(id: string): Observable<{ data: StaffMediaJoinResult }> {\n if (this.useMock) return this.mock.postMediaJoin(id, 'listen');\n const enc = encodeURIComponent(id);\n return this.http.post<unknown>(`${this.arBase}/calls/${enc}/listen`, {}).pipe(\n map((body) => {\n const data = mapStaffMediaJoinResult(body);\n if (!data) {\n throw new Error('listen response missing livekitUrl or clientToken');\n }\n const mode: StaffMediaMode = 'listen';\n return { data: { ...data, callId: data.callId || id, mode } };\n }),\n catchError((err: HttpErrorResponse) =>\n throwError(() => new Error(this.apiErrorMessage(err, 'Failed to listen to call'))),\n ),\n );\n }\n\n postTransfer(id: string): Observable<{ data: { success: boolean } }> {\n if (this.useMock) return this.mock.postTransfer(id);\n return this.postCallAction(id, 'transfer');\n }\n\n postEnd(id: string): Observable<{ data: { success: boolean } }> {\n if (this.useMock) return this.mock.postEnd(id);\n const enc = encodeURIComponent(id);\n return this.http\n .post<{ ok: boolean }>(`${this.arBase}/calls/${enc}/end`, {})\n .pipe(map(() => ({ data: { success: true } })));\n }\n\n postMessage(id: string, text: string): Observable<{ data: { success: boolean } }> {\n if (this.useMock) return this.mock.postMessage(id, text);\n const enc = encodeURIComponent(id);\n return this.http\n .post<{ ok: boolean }>(`${this.arBase}/calls/${enc}/messages`, { text })\n .pipe(map(() => ({ data: { success: true } })));\n }\n\n postReview(id: string): Observable<{ data: { review: string } }> {\n if (this.useMock) return this.mock.postReview(id);\n const enc = encodeURIComponent(id);\n return this.http\n .post<{ ok: boolean }>(`${this.arBase}/calls/${enc}/review`, {})\n .pipe(map(() => ({ data: { review: 'reviewed' } })));\n }\n\n getTasks(filters?: TaskFilters): Observable<PaginatedResult<TaskItem>> {\n if (this.useMock) return this.mock.getTasks(filters);\n const page = filters?.page ?? 1;\n const limit = filters?.limit ?? DEFAULT_PAGE_SIZE;\n let params = new HttpParams().set('page', String(page)).set('limit', String(limit));\n if (filters?.status) {\n const apiStatus = filters.status === 'in_progress' ? 'in-progress' : filters.status;\n params = params.set('status', apiStatus);\n }\n if (filters?.type) params = params.set('type', filters.type);\n if (filters?.source) params = params.set('source', filters.source);\n if (filters?.callId) params = params.set('callId', filters.callId);\n return this.http.get<unknown>(`${this.arBase}/tasks`, { params }).pipe(\n map((body) => {\n const pageResult = asPaginatedResult<TaskDto>(body, page, limit);\n return {\n ...pageResult,\n items: pageResult.items.map(mapTaskDto),\n };\n }),\n );\n }\n\n getCallTasks(callId: string): Observable<{ data: TaskItem[] }> {\n if (this.useMock) return this.mock.getCallTasks(callId);\n const enc = encodeURIComponent(callId);\n return this.http.get<unknown>(`${this.arBase}/calls/${enc}/tasks`).pipe(\n map((body) => ({ data: asTaskList(body).map(mapTaskDto) })),\n );\n }\n\n createTask(req: CreateTaskRequest): Observable<{ data: TaskItem }> {\n if (this.useMock) return this.mock.createTask(req);\n return this.http\n .post<unknown>(`${this.arBase}/tasks`, mapCreateTaskRequest(req))\n .pipe(map((body) => ({ data: mapTaskDto(body as TaskDto) })));\n }\n\n patchTask(id: string, status: TaskItem['status']): Observable<{ data: TaskItem | null }> {\n if (this.useMock) return this.mock.patchTask(id, status);\n const enc = encodeURIComponent(id);\n return this.http\n .patch<unknown>(`${this.arBase}/tasks/${enc}`, { status: toApiTaskStatus(status) })\n .pipe(map((body) => ({ data: mapTaskDto(body as TaskDto) })));\n }\n\n getAnalytics(range: string): Observable<{ data: AnalyticsData }> {\n if (this.useMock) return this.mock.getAnalytics(range);\n const params = new HttpParams().set('range', range);\n return this.http.get<AnalyticsDto>(`${this.arBase}/analytics/summary`, { params }).pipe(\n map((body) => ({ data: mapAnalyticsDto(body, range) })),\n );\n }\n\n getSettings(): Observable<{ data: AgentSettings }> {\n if (this.useMock) return this.mock.getSettings();\n return forkJoin({\n settings: this.http.get<unknown>(`${this.arBase}/settings`),\n safety: this.http.get<unknown>(`${this.arBase}/settings/safety-checks`),\n }).pipe(\n map(({ settings, safety }) => ({\n data: mapSettingsResponse(settings, safety),\n })),\n );\n }\n\n putSettings(next: AgentSettings): Observable<{ data: AgentSettings }> {\n if (this.useMock) return this.mock.putSettings(next);\n return this.http\n .put<unknown>(`${this.arBase}/settings`, { settings: mapSettingsToRequest(next) })\n .pipe(\n switchMap(() => this.getSettings()),\n catchError((err: HttpErrorResponse) =>\n throwError(() => new Error(this.apiErrorMessage(err, 'Failed to save agent settings'))),\n ),\n );\n }\n\n /** Shipped default voice system prompt + max lengths. */\n getVoicePromptDefault(): Observable<{\n defaultVoiceSystemPrompt: string;\n voiceSystemPromptMaxLength: number;\n customVoiceInstructionsMaxLength: number;\n notes?: string;\n }> {\n if (this.useMock) return this.mock.getVoicePromptDefault();\n return this.http.get<{\n defaultVoiceSystemPrompt?: string;\n voiceSystemPromptMaxLength?: number;\n customVoiceInstructionsMaxLength?: number;\n notes?: string;\n }>(`${this.arBase}/settings/voice-prompt-default`).pipe(\n map((body) => ({\n defaultVoiceSystemPrompt: String(body?.defaultVoiceSystemPrompt ?? ''),\n voiceSystemPromptMaxLength: Number(body?.voiceSystemPromptMaxLength) || 24000,\n customVoiceInstructionsMaxLength:\n Number(body?.customVoiceInstructionsMaxLength) || 8000,\n notes: body?.notes ? String(body.notes) : undefined,\n })),\n );\n }\n\n /** ElevenLabs spoken sample for Agent Settings voice picker. */\n previewVoice(voiceId: string): Observable<Blob> {\n if (this.useMock) return this.mock.previewVoice(voiceId);\n return this.http.post(`${this.arBase}/settings/preview-voice`, { voiceId }, {\n responseType: 'blob',\n });\n }\n\n /**\n * Knowledge Base test: draft an answer from whatToSay / whatNotToSay and\n * return spoken audio in the practice (or selected) voice.\n */\n testKnowledgeAnswer(params: {\n question: string;\n whatToSay: string;\n whatNotToSay: string;\n voiceId?: string;\n }): Observable<{ answer: string; voiceId: string; audioBlob: Blob }> {\n if (this.useMock) {\n return this.mock.testKnowledgeAnswer(params);\n }\n return this.http\n .post<{\n answer?: string;\n voiceId?: string;\n audioBase64?: string;\n contentType?: string;\n }>(`${this.arBase}/settings/test-knowledge`, params)\n .pipe(\n map((body) => {\n const answer = String(body?.answer ?? '').trim();\n const b64 = String(body?.audioBase64 ?? '').trim();\n if (!answer || !b64) {\n throw new Error('Test response missing answer or audio');\n }\n const contentType = String(body?.contentType ?? 'audio/mpeg');\n const binary = atob(b64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n return {\n answer,\n voiceId: String(body?.voiceId ?? params.voiceId ?? ''),\n audioBlob: new Blob([bytes], { type: contentType }),\n };\n }),\n catchError((err: HttpErrorResponse) =>\n throwError(\n () => new Error(this.apiErrorMessage(err, 'Could not generate a test answer.')),\n ),\n ),\n );\n }\n\n getAudit(\n q?: string,\n opts?: { page?: number; limit?: number },\n ): Observable<PaginatedResult<AuditEvent>> {\n if (this.useMock) return this.mock.getAudit(q, undefined, opts);\n const page = opts?.page ?? 1;\n const limit = opts?.limit ?? DEFAULT_PAGE_SIZE;\n let params = new HttpParams().set('page', String(page)).set('limit', String(limit));\n if (q) params = params.set('search', q);\n return this.http.get<unknown>(`${this.arBase}/audit`, { params }).pipe(\n map((body) => {\n const pageResult = asPaginatedResult(body, page, limit);\n return {\n ...pageResult,\n items: asAuditList(body).map((e, i) => mapAuditEventDto(e, i)),\n };\n }),\n );\n }\n\n /**\n * Agent activity feed: patients created, appointments booked, tasks from AI.\n * GET /api/ai-receptionist/activities\n */\n getActivities(\n filters?: AgentActivityFilters,\n ): Observable<PaginatedResult<AgentActivity>> {\n if (this.useMock) return this.mock.getActivities(filters);\n const page = filters?.page ?? 1;\n const limit = filters?.limit ?? DEFAULT_PAGE_SIZE;\n let params = new HttpParams().set('page', String(page)).set('limit', String(limit));\n if (filters?.search?.trim()) params = params.set('search', filters.search.trim());\n if (filters?.types?.trim()) params = params.set('types', filters.types.trim());\n if (filters?.from?.trim()) params = params.set('from', filters.from.trim());\n if (filters?.to?.trim()) params = params.set('to', filters.to.trim());\n if (filters?.callId?.trim()) params = params.set('callId', filters.callId.trim());\n\n return this.http.get<unknown>(`${this.arBase}/activities`, { params }).pipe(\n map((body) => {\n const pageResult = asPaginatedResult(body, page, limit);\n return {\n ...pageResult,\n items: pageResult.items.map((row, i) => mapAgentActivity(row, i)),\n };\n }),\n );\n }\n\n getSetup(): Observable<{ data: SetupData }> {\n if (this.useMock) return this.mock.getSetup();\n return this.http.get<SetupDto>(`${this.arBase}/setup`).pipe(\n map((body) => ({ data: mapSetupDto(body) })),\n );\n }\n\n activateSetup(): Observable<{ data: { success: boolean } }> {\n if (this.useMock) return this.mock.activateSetup();\n return this.http\n .post<{ activated: boolean }>(`${this.arBase}/setup/activate`, {})\n .pipe(map(() => ({ data: { success: true } })));\n }\n\n getLocations(): Observable<{ data: LocationOption[] }> {\n if (this.useMock) return this.mock.getLocations();\n return this.http.get<unknown>(this.paths.apiPath('/locations')).pipe(\n map((body) => ({ data: extractApiRows(body).map(mapLocationDto) })),\n );\n }\n\n getProviders(): Observable<{ data: ProviderOption[] }> {\n if (this.useMock) return this.mock.getProviders();\n return this.http.get<unknown>(this.paths.v1Path('/providers')).pipe(\n map((body) => ({ data: extractApiRows(body).map(mapProviderDto) })),\n );\n }\n\n getStreamLines(): TranscriptLine[] {\n return this.mock.getStreamLines();\n }\n\n appendStreamLine(callId: string, line: TranscriptLine): void {\n this.mock.appendStreamLine(callId, line);\n }\n\n usesMockStreaming(): boolean {\n return this.useMock;\n }\n\n getCallApiLogs(callId: string): Observable<ApiLogListResponse> {\n if (this.useMock) return this.mock.getCallApiLogs(callId);\n const enc = encodeURIComponent(callId);\n return this.http.get<ApiLogListResponse>(`${this.arBase}/calls/${enc}/api-logs`).pipe(\n map((body) => ({\n items: [...(body.items ?? [])].sort(\n (a, b) => Date.parse(a.startedAt) - Date.parse(b.startedAt),\n ),\n total: body.total ?? body.items?.length ?? 0,\n })),\n );\n }\n\n getApiLogs(filters: ApiLogFilters = {}): Observable<ApiLogListResponse> {\n if (this.useMock) return this.mock.getApiLogs(filters);\n let params = new HttpParams();\n if (filters.provider) params = params.set('provider', filters.provider);\n if (filters.success !== undefined) params = params.set('success', String(filters.success));\n if (filters.statusCode != null) params = params.set('statusCode', String(filters.statusCode));\n if (filters.operation) params = params.set('operation', filters.operation);\n if (filters.callId) params = params.set('callId', filters.callId);\n if (filters.from) params = params.set('from', filters.from);\n if (filters.to) params = params.set('to', filters.to);\n if (filters.search) params = params.set('search', filters.search);\n if (filters.page != null) params = params.set('page', String(filters.page));\n if (filters.limit != null) params = params.set('limit', String(filters.limit));\n if (filters.practiceId) params = params.set('practiceId', filters.practiceId);\n return this.http.get<ApiLogListResponse>(`${this.arBase}/api-logs`, { params });\n }\n\n getApiLogDetail(logId: string): Observable<{ data: ApiLogDetail | null }> {\n if (this.useMock) return this.mock.getApiLogDetail(logId);\n const enc = encodeURIComponent(logId);\n return this.http\n .get<ApiLogDetail>(`${this.arBase}/api-logs/${enc}`)\n .pipe(map((data) => ({ data })));\n }\n\n getApiLogStats(practiceId?: string): Observable<{ data: ApiLogStats }> {\n if (this.useMock) return this.mock.getApiLogStats();\n let params = new HttpParams();\n if (practiceId) params = params.set('practiceId', practiceId);\n return this.http\n .get<ApiLogStats>(`${this.arBase}/api-logs/stats`, { params })\n .pipe(map((data) => ({ data })));\n }\n\n getOutboundPurposes(includeInactive = false): Observable<OutboundPurposesResponse> {\n if (this.useMock) return this.mock.getOutboundPurposes(includeInactive);\n const params = includeInactive ? new HttpParams().set('includeInactive', 'true') : undefined;\n return this.http.get<OutboundPurposesResponse>(`${this.arBase}/calls/outbound/purposes`, {\n params,\n });\n }\n\n createOutboundPurpose(body: CreateOutboundPurposeRequest): Observable<OutboundPurpose> {\n if (this.useMock) return this.mock.createOutboundPurpose(body);\n return this.http.post<OutboundPurpose>(`${this.arBase}/calls/outbound/purposes`, body);\n }\n\n updateOutboundPurpose(\n purposeId: string,\n body: UpdateOutboundPurposeRequest,\n ): Observable<OutboundPurpose> {\n if (this.useMock) return this.mock.updateOutboundPurpose(purposeId, body);\n const enc = encodeURIComponent(purposeId);\n return this.http.patch<OutboundPurpose>(`${this.arBase}/calls/outbound/purposes/${enc}`, body);\n }\n\n deleteOutboundPurpose(purposeId: string): Observable<{ success: boolean }> {\n if (this.useMock) return this.mock.deleteOutboundPurpose(purposeId);\n const enc = encodeURIComponent(purposeId);\n return this.http.delete<{ success: boolean }>(\n `${this.arBase}/calls/outbound/purposes/${enc}`,\n );\n }\n\n placeOutboundCall(body: PlaceOutboundCallRequest): Observable<PlaceOutboundCallResponse> {\n if (this.useMock) return this.mock.placeOutboundCall(body);\n return this.http.post<PlaceOutboundCallResponse>(`${this.arBase}/calls/outbound`, body).pipe(\n catchError((err: HttpErrorResponse) => {\n const detail =\n typeof err.error === 'object' && err.error && 'message' in err.error\n ? String((err.error as { message: unknown }).message)\n : err.message;\n return throwError(() => ({ message: detail || 'Failed to place outbound call.' }));\n }),\n );\n }\n\n /**\n * Patient typeahead for outbound dialer.\n * Tries `/api/v1/patients/search`, then `/api/v1/patients?q=`, then by-phone for digit queries.\n */\n searchPatientsForOutbound(q: string, limit = 10): Observable<OutboundPatientHit[]> {\n const query = q.trim();\n if (!query) return of([]);\n if (this.useMock) return this.mock.searchPatientsForOutbound(query, limit);\n\n const params = new HttpParams().set('q', query).set('limit', String(limit));\n const searchUrl = this.paths.v1Path('/patients/search');\n const listUrl = this.paths.v1Path('/patients');\n\n return this.http.get<unknown>(searchUrl, { params }).pipe(\n map((body) => this.mapPatientHits(body)),\n catchError(() =>\n this.http.get<unknown>(listUrl, { params }).pipe(\n map((body) => this.mapPatientHits(body)),\n catchError(() => of([] as OutboundPatientHit[])),\n ),\n ),\n switchMap((hits) => {\n if (hits.length > 0) return of(hits);\n const phone = toE164Phone(query);\n if (!phone && !/\\d{7,}/.test(query)) return of([]);\n return this.http\n .get<unknown>(this.paths.v1Path('/patients/by-phone'), {\n params: new HttpParams().set('phone', phone || query.replace(/\\D/g, '')),\n })\n .pipe(\n map((body) => this.mapPatientHits(body)),\n catchError(() => of([] as OutboundPatientHit[])),\n );\n }),\n );\n }\n\n /** Upcoming appointments for a patient (dialer picker). */\n listPatientAppointmentsForOutbound(\n patientId: string,\n limit = 20,\n ): Observable<OutboundAppointmentHit[]> {\n const id = patientId.trim();\n if (!id) return of([]);\n if (this.useMock) return this.mock.listPatientAppointmentsForOutbound(id, limit);\n\n const from = new Date();\n from.setHours(0, 0, 0, 0);\n const params = new HttpParams()\n .set('patientId', id)\n .set('patient_id', id)\n .set('from', from.toISOString())\n .set('limit', String(limit));\n\n const v1Url = this.paths.v1Path('/appointments');\n const apiUrl = this.paths.apiPath('/appointments');\n\n // Prefer /api/appointments (current host contract), then /api/v1/appointments.\n return this.http.get<unknown>(apiUrl, { params }).pipe(\n map((body) => this.mapAppointmentHits(body)),\n catchError(() =>\n this.http.get<unknown>(v1Url, { params }).pipe(\n map((body) => this.mapAppointmentHits(body)),\n catchError(() => of([] as OutboundAppointmentHit[])),\n ),\n ),\n );\n }\n\n private mapPatientHits(body: unknown): OutboundPatientHit[] {\n return extractApiRows(body)\n .map(mapOutboundPatientHit)\n .filter((p): p is OutboundPatientHit => !!p);\n }\n\n private mapAppointmentHits(body: unknown): OutboundAppointmentHit[] {\n return extractApiRows(body)\n .map(mapOutboundAppointmentHit)\n .filter((a): a is OutboundAppointmentHit => !!a)\n .sort((a, b) => String(a.startTime ?? '').localeCompare(String(b.startTime ?? '')));\n }\n\n private postCallAction(id: string, action: string): Observable<{ data: { success: boolean } }> {\n const enc = encodeURIComponent(id);\n return this.http\n .post<unknown>(`${this.arBase}/calls/${enc}/${action}`, {})\n .pipe(map(() => ({ data: { success: true } })));\n }\n\n private apiErrorMessage(err: HttpErrorResponse, fallback: string): string {\n const body = err.error;\n if (typeof body === 'object' && body && 'message' in body) {\n return String((body as { message: unknown }).message);\n }\n if (typeof body === 'string' && body.trim()) return body;\n return fallback;\n }\n}\n","import { Injectable, inject, signal } from '@angular/core';\nimport { catchError, finalize, of, switchMap, tap, throwError } from 'rxjs';\n\nimport { AiReceptionistApiService } from './ai-receptionist-api.service';\n\nexport type AgentOnlineKnownState = boolean | null;\n\n/**\n * Shared source of truth for Ava online/offline across topbar + module nav.\n * Always re-fetches GET /status after mutations.\n */\n@Injectable({ providedIn: 'root' })\nexport class AgentOnlineService {\n private readonly api = inject(AiReceptionistApiService);\n\n /** true = online, false = offline, null = unknown / not loaded */\n private readonly _online = signal<AgentOnlineKnownState>(null);\n private readonly _loading = signal(false);\n private readonly _toggling = signal(false);\n private readonly _error = signal<string | null>(null);\n private readonly _readiness = signal<number | null>(null);\n\n readonly online = this._online.asReadonly();\n readonly loading = this._loading.asReadonly();\n readonly toggling = this._toggling.asReadonly();\n readonly error = this._error.asReadonly();\n readonly readiness = this._readiness.asReadonly();\n\n refresh(): void {\n this._loading.set(true);\n this._error.set(null);\n this.api.getStatus().subscribe({\n next: ({ data }) => {\n this._online.set(data.agentOn);\n this._readiness.set(data.readiness);\n this._loading.set(false);\n },\n error: (err: { message?: string }) => {\n this._online.set(null);\n this._error.set(err.message ?? 'Could not load agent status.');\n this._loading.set(false);\n },\n });\n }\n\n /**\n * PUT /agent-online then re-fetch GET /status.\n */\n setOnline(enabled: boolean) {\n this._toggling.set(true);\n this._error.set(null);\n\n return this.api.setAgentOnline(enabled).pipe(\n switchMap(() =>\n this.api.getStatus().pipe(\n catchError((err: { message?: string }) => {\n this._error.set(err.message ?? 'Status refresh failed after toggle.');\n return of(null);\n }),\n ),\n ),\n tap((result) => {\n if (result) {\n this._online.set(result.data.agentOn);\n this._readiness.set(result.data.readiness);\n } else {\n // Toggle likely succeeded; use requested value until refresh works.\n this._online.set(enabled);\n }\n }),\n catchError((err: { message?: string }) => {\n this._error.set(err.message ?? 'Failed to update agent online status.');\n return throwError(() => err);\n }),\n finalize(() => this._toggling.set(false)),\n );\n }\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport interface ToastMessage {\n id: number;\n text: string;\n variant: 'info' | 'success' | 'error';\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n private nextId = 1;\n private timers = new Map<number, ReturnType<typeof setTimeout>>();\n\n private readonly _toasts = signal<ToastMessage[]>([]);\n readonly toasts = this._toasts.asReadonly();\n\n show(text: string, variant: ToastMessage['variant'] = 'info', durationMs = 3500): void {\n const id = this.nextId++;\n this._toasts.update((list) => [...list, { id, text, variant }]);\n const timer = setTimeout(() => this.dismiss(id), durationMs);\n this.timers.set(id, timer);\n }\n\n dismiss(id: number): void {\n const timer = this.timers.get(id);\n if (timer) {\n clearTimeout(timer);\n this.timers.delete(id);\n }\n this._toasts.update((list) => list.filter((t) => t.id !== id));\n }\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\n\nimport { ToastService } from './toast.service';\n\n@Component({\n selector: 'app-toast-container',\n standalone: true,\n templateUrl: './toast-container.component.html',\n styleUrl: './toast-container.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastContainerComponent {\n protected readonly toastService = inject(ToastService);\n}\n","<div class=\"fixed bottom-6 right-6 z-[1100] flex max-w-[380px] flex-col gap-3 pointer-events-none\" aria-live=\"polite\" aria-atomic=\"false\">\n @for (toast of toastService.toasts(); track toast.id) {\n <div\n class=\"toast pointer-events-auto flex items-start gap-3 rounded-lg border border-base bg-white px-4 py-3 text-[13px] text-dark shadow-[0_6px_24px_rgba(20,30,50,0.12)]\"\n role=\"status\"\n >\n <span\n class=\"inline-flex h-[22px] w-[22px] shrink-0 items-center justify-center rounded-full\"\n [class]=\"toast.variant === 'success' ? 'bg-emerald-50 text-emerald-600' : toast.variant === 'error' ? 'bg-red-50 text-red-600' : 'bg-blue-50 text-blue-600'\"\n aria-hidden=\"true\"\n >\n @switch (toast.variant) {\n @case ('success') {\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n }\n @case ('error') {\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\" />\n </svg>\n }\n @default {\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\" />\n </svg>\n }\n }\n </span>\n <span class=\"flex-1 leading-snug\">{{ toast.text }}</span>\n <button\n type=\"button\"\n class=\"inline-flex h-6 w-6 shrink-0 items-center justify-center rounded border-none bg-transparent text-light transition-colors duration-150 hover:bg-lighter hover:text-dark\"\n (click)=\"toastService.dismiss(toast.id)\"\n aria-label=\"Dismiss notification\"\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Output,\n computed,\n input,\n effect,\n booleanAttribute,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\ntype Size = 'xs' | 'sm' | 'base' | 'md' | 'lg';\ntype Variant =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'accent'\n | 'success'\n | 'danger'\n | 'warning'\n | 'info';\ntype Shape = 'square' | 'pill' | 'rounded';\n\n/** Coerce `[loading]` so attributes like `loading`, `loading=\"true\"|\"false\"`, or a label work. */\nfunction coerceLoading(value: unknown): boolean | string {\n if (value == null) return false;\n if (value === '' || value === true) return true;\n if (typeof value === 'string') {\n if (value === 'true') return true;\n if (value === 'false') return false;\n const v = value.trim();\n if (v === '') return false;\n if (v === 'true') return true;\n if (v === 'false') return false;\n return v;\n }\n if (typeof value === 'boolean') return value;\n return false;\n}\n\ndeclare const ngDevMode: boolean;\n\n@Component({\n selector: 'ed-button',\n standalone: true,\n imports: [CommonModule, RouterModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './ed-button.component.html',\n styleUrl: './ed-button.component.scss',\n})\nexport class EdButtonComponent {\n variant = input<Variant>('default');\n size = input<Size>('base');\n disabled = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n ghost = input<boolean, unknown>(false, { transform: booleanAttribute });\n outline = input<boolean, unknown>(false, { transform: booleanAttribute });\n subtle = input<boolean, unknown>(false, { transform: booleanAttribute });\n fill = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n loading = input<boolean | string, unknown>(false, {\n transform: coerceLoading,\n });\n\n block = input<boolean, unknown>(false, { transform: booleanAttribute });\n elevated = input<boolean, unknown>(false, { transform: booleanAttribute });\n shape = input<Shape>('rounded');\n\n type = input<'button' | 'submit' | 'reset'>('button');\n\n href = input<string | null>(null);\n routerLink = input<string | any[] | null>(null);\n rel = input<string | null>(null);\n target = input<string | null>(null);\n download = input<string | boolean | null>(null);\n\n ariaLabel = input<string | null>(null);\n\n @Output('click$') clicked = new EventEmitter<MouseEvent>();\n\n styleKind = computed<'ghost' | 'outline' | 'subtle' | 'fill'>(() => {\n if (this.ghost()) return 'ghost';\n if (this.outline()) return 'outline';\n if (this.subtle()) return 'subtle';\n if (this.fill()) return 'fill';\n return 'outline';\n });\n\n constructor() {\n if (typeof ngDevMode !== 'undefined' && ngDevMode) {\n effect(() => {\n const active = [\n this.ghost() && 'ghost',\n this.outline() && 'outline',\n this.subtle() && 'subtle',\n this.fill() && 'fill',\n ].filter(Boolean);\n if (active.length > 1) {\n console.warn(\n '[ed-button] Multiple style attributes set:',\n active.join(', '),\n '→ only the first one takes effect.',\n );\n }\n });\n\n effect(() => {\n const hasHref = !!this.href();\n const hasRouter = !!this.routerLink();\n if (hasHref && hasRouter) {\n console.warn(\n '[ed-button] Both href and routerLink provided. routerLink will be used and href ignored.',\n );\n }\n });\n\n effect(() => {\n if (this.target() === '_blank') {\n const rel = (this.rel() ?? '').trim();\n const hasNoopener = /\\bnoopener\\b/.test(rel);\n const hasNoreferrer = /\\bnoreferrer\\b/.test(rel);\n if (!hasNoopener || !hasNoreferrer) {\n console.warn(\n '[ed-button] target=\"_blank\" without rel=\"noopener noreferrer\" → automatically applied.',\n );\n }\n }\n });\n }\n }\n\n linkMode = computed<'router' | 'href' | null>(() =>\n this.routerLink() ? 'router' : this.href() ? 'href' : null,\n );\n\n asAnchor = computed(() => this.linkMode() !== null);\n\n effectiveHref = computed<string | null>(() =>\n this.linkMode() === 'href' ? this.href() || null : null,\n );\n\n effectiveRouterLink = computed<string | any[] | null>(() =>\n this.linkMode() === 'router' ? this.routerLink() || null : null,\n );\n\n safeRel = computed<string | null>(() => {\n const tgt = this.target();\n const rel = (this.rel() ?? '').trim();\n\n if (tgt === '_blank') {\n const tokens = new Set(rel.split(/\\s+/).filter(Boolean));\n tokens.add('noopener');\n tokens.add('noreferrer');\n return Array.from(tokens).join(' ');\n }\n\n return rel || null;\n });\n\n private static readonly HEIGHTS: Record<Size, number> = {\n xs: 24,\n sm: 28,\n base: 32,\n md: 36,\n lg: 40,\n };\n\n private static readonly ICONS: Record<Size, number> = {\n xs: 14,\n sm: 16,\n base: 20,\n md: 18,\n lg: 20,\n };\n\n btnHeightPx = computed(() => EdButtonComponent.HEIGHTS[this.size()]);\n iconPx = computed(() => EdButtonComponent.ICONS[this.size()]);\n\n loadingOn = computed<boolean>(() => {\n const v = this.loading();\n return typeof v === 'string' ? v.trim().length > 0 : !!v;\n });\n\n loadingLabel = computed<string>(() => {\n const v = this.loading();\n return typeof v === 'string' && v.trim().length > 0 ? v : 'Loading…';\n });\n\n downloadAttr() {\n const d = this.download();\n return d === true ? '' : d || null;\n }\n\n onClick(evt: MouseEvent) {\n if (this.disabled() || this.loadingOn()) {\n evt.preventDefault();\n evt.stopImmediatePropagation();\n return;\n }\n this.clicked.emit(evt);\n }\n}\n","<ng-template #slotPrefix>\n <ng-content select='[slot=\"prefix\"]' />\n</ng-template>\n<ng-template #slotDefault>\n <ng-content />\n</ng-template>\n<ng-template #slotSuffix>\n <ng-content select='[slot=\"suffix\"]' />\n</ng-template>\n\n@if (!asAnchor()) {\n <button\n class=\"btn\"\n [attr.variant]=\"variant()\"\n [attr.size]=\"size()\"\n [class.is-block]=\"block()\"\n [class.is-elevated]=\"elevated()\"\n [class.shape-pill]=\"shape() === 'pill'\"\n [class.shape-square]=\"shape() === 'square'\"\n [disabled]=\"disabled() || loadingOn()\"\n [attr.type]=\"type()\"\n [attr.aria-busy]=\"loadingOn() ? 'true' : null\"\n [attr.inert]=\"(disabled() || loadingOn()) ? '' : null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n (click)=\"onClick($event)\"\n [style.height.px]=\"btnHeightPx()\"\n [style.minHeight.px]=\"24\"\n [style.minWidth.px]=\"24\"\n [style.--btn-icon.px]=\"iconPx()\"\n [attr.ghost]=\"ghost() ? '' : null\"\n [attr.subtle]=\"subtle() ? '' : null\"\n [attr.fill]=\"fill() ? '' : null\"\n [attr.outline]=\"(outline() || (!ghost() && !subtle() && !fill())) ? '' : null\">\n @if (loadingOn()) {\n <span class=\"spinner\" aria-hidden=\"true\"></span>\n }\n\n @if (loadingOn()) {\n <span class=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {{ loadingLabel() }}\n </span>\n }\n\n <span class=\"btn-inner\">\n <ng-container [ngTemplateOutlet]=\"slotPrefix\"></ng-container>\n\n <span class=\"label\">\n @if (loadingOn()) {\n {{ loadingLabel() }}\n } @else {\n <ng-container [ngTemplateOutlet]=\"slotDefault\"></ng-container>\n }\n </span>\n\n <ng-container [ngTemplateOutlet]=\"slotSuffix\"></ng-container>\n </span>\n </button>\n} @else {\n <a\n class=\"btn\"\n [attr.variant]=\"variant()\"\n [attr.size]=\"size()\"\n [class.is-block]=\"block()\"\n [class.is-elevated]=\"elevated()\"\n [class.shape-pill]=\"shape() === 'pill'\"\n [class.shape-square]=\"shape() === 'square'\"\n [attr.href]=\"effectiveHref()\"\n [routerLink]=\"effectiveRouterLink()\"\n [attr.rel]=\"safeRel()\"\n [attr.target]=\"target() || null\"\n [attr.download]=\"downloadAttr()\"\n [attr.tabindex]=\"(disabled() || loadingOn()) ? -1 : 0\"\n [attr.aria-disabled]=\"(disabled() || loadingOn()) ? 'true' : null\"\n [attr.aria-busy]=\"loadingOn() ? 'true' : null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n (click)=\"onClick($event)\"\n [style.height.px]=\"btnHeightPx()\"\n [style.minHeight.px]=\"24\"\n [style.minWidth.px]=\"24\"\n [style.--btn-icon.px]=\"iconPx()\"\n [attr.ghost]=\"ghost() ? '' : null\"\n [attr.subtle]=\"subtle() ? '' : null\"\n [attr.fill]=\"fill() ? '' : null\"\n [attr.outline]=\"(outline() || (!ghost() && !subtle() && !fill())) ? '' : null\">\n @if (loadingOn()) {\n <span class=\"spinner\" aria-hidden=\"true\"></span>\n }\n\n @if (loadingOn()) {\n <span class=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {{ loadingLabel() }}\n </span>\n }\n\n <span class=\"btn-inner\">\n <ng-container [ngTemplateOutlet]=\"slotPrefix\"></ng-container>\n\n <span class=\"label\">\n @if (loadingOn()) {\n {{ loadingLabel() }}\n } @else {\n <ng-container [ngTemplateOutlet]=\"slotDefault\"></ng-container>\n }\n </span>\n\n <ng-container [ngTemplateOutlet]=\"slotSuffix\"></ng-container>\n </span>\n </a>\n}\n","import { Component, Input, NgModule } from '@angular/core';\n\n@Component({\n selector: 'ed-skeleton',\n template: '',\n host: {\n '[class]': '_computedClass()',\n 'aria-hidden': 'true',\n },\n})\nexport class EdSkeletonComponent {\n @Input(\"class\") userClass: string = \"\";\n\n _computedClass() {\n return \"block animate-pulse rounded-md bg-lighter skeleton\" + \" \" + this.userClass;\n }\n}\n\n\n\n","/**\n * ed-icon\n * ----------\n * Renders an inline SVG icon from /assets/icons/{name}.svg\n * - Default size is \"base\" (24px).\n * - Optional color override applies to fill and stroke of child shapes.\n * - Optional additional CSS classes applied directly to the <svg>.\n *\n * Performance & correctness:\n * - ChangeDetectionStrategy.OnPush (no template binding).\n * - Aborts in-flight fetches on input changes & destroy (prevents races/leaks).\n * - Reuses a DOMParser instance.\n * - Caches raw SVG text in a static Map by file path (optional micro-optimization).\n * - Scopes internal SVG IDs (mask/clipPath/filter/gradient/use) per instance.\n * - Ensures a viewBox exists so removing width/height won’t blank the SVG.\n *\n * Accessibility:\n * - By default, icons are decorative → aria-hidden=\"true\", role=\"presentation\", focusable=\"false\".\n * - Overridable via inputs: decorative, ariaHidden, ariaLabel, title, desc.\n */\n\nimport {\n Component,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ElementRef,\n Renderer2,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\n/* ──────────────────────────────── Types ───────────────────────────────────── */\ntype IconSize = 'xs' | 'sm' | 'md' | 'base' | 'lg' | number | string;\n\n@Component({\n selector: 'ed-icon',\n template: '',\n styles: [\n `\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n inline-size: var(--ed-icon-size, var(--btn-icon, 24px));\n block-size: var(--ed-icon-size, var(--btn-icon, 24px));\n line-height: 1;\n }\n :host svg {\n width: 100%;\n height: 100%;\n /* note: preserveAspectRatio is set as an SVG attribute in TS */\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent implements OnChanges, OnDestroy {\n /** Icon file name (without .svg). */\n @Input() name: string = '';\n\n /** Size token or explicit pixel number. Defaults to base (24). */\n @Input() size: IconSize = 'base';\n\n /** Optional color override for fill/stroke. */\n @Input() color: string = '';\n\n /** Optional space-separated class list for the <svg>. */\n @Input() cssClass: string = '';\n\n // ─── Accessibility Inputs ───────────────────────────────────────────────────\n\n /** Mark the icon as decorative (not announced by screen readers). Default true. */\n @Input() decorative: boolean = true;\n\n /** Optional explicit override for aria-hidden. */\n @Input() ariaHidden?: boolean;\n\n /** Short accessible name for meaningful icons. */\n @Input() ariaLabel: string = '';\n\n /** Optional <title> text injected into the SVG and referenced via aria-labelledby. */\n @Input() title: string = '';\n\n /** Optional <desc> text injected into the SVG and referenced via aria-labelledby. */\n @Input() desc: string = '';\n\n /** Allow keyboard focus (for tooltips). Default: false (BC-safe) */\n @Input() focusable: boolean = false;\n\n /** Optional tabindex to use when focusable; defaults to 0 */\n @Input() tabIndex?: number;\n\n\n /** Host and utilities */\n private host!: HTMLElement;\n private parser = new DOMParser();\n private fetchController: AbortController | null = null;\n\n /** Tiny raw-SVG cache by path */\n private static cache = new Map<string, string>();\n private static inflight = new Map<string, Promise<string>>();\n\n /** Local UID seed for scoping and a11y IDs */\n private static uid = 0;\n private nextUid(prefix: string) {\n IconComponent.uid += 1;\n return `${prefix}-${IconComponent.uid}`;\n }\n\n /** NEW: keep reference to live SVG + observe host size/CSS var changes */\n private svgRef: SVGSVGElement | null = null;\n private ro: ResizeObserver | null = null;\n\n constructor(private el: ElementRef<HTMLElement>, private r: Renderer2) {\n this.host = el.nativeElement;\n }\n\n /** Lifecycle: runs whenever any @Input changes. */\n ngOnChanges(changes: SimpleChanges) {\n if (\n changes['name'] ||\n changes['color'] ||\n changes['size'] ||\n changes['cssClass'] ||\n changes['decorative'] ||\n changes['ariaHidden'] ||\n changes['ariaLabel'] ||\n changes['title'] ||\n changes['desc'] ||\n changes['focusable'] || \n changes['tabIndex']\n ) {\n this.loadSvg();\n }\n }\n\n /** Lifecycle: component teardown. */\n ngOnDestroy() {\n if (this.fetchController) {\n this.fetchController.abort();\n this.fetchController = null;\n }\n if (this.ro) {\n this.ro.disconnect();\n this.ro = null;\n }\n this.svgRef = null;\n this.host.innerHTML = '';\n }\n\n /**\n * Fetches, parses, and injects the SVG into the host.\n * - Aborts previous request to prevent stale DOM writes.\n * - Applies size, classes, color, a11y, and ID scoping.\n */\n private async loadSvg() {\n if (!this.name) return;\n\n // Abort any in-flight request to prevent race conditions.\n if (this.fetchController) this.fetchController.abort();\n this.fetchController = new AbortController();\n\n // Clear existing content so we always replace with fresh markup.\n this.host.innerHTML = '';\n this.svgRef = null;\n\n const svgPath = `assets/icons/${this.name}.svg`;\n\n try {\n // 1) Try memory cache first\n // let svgText = IconComponent.cache.get(svgPath);\n\n // // 2) Hit the network (or browser cache) if not cached in memory.\n // if (!svgText) {\n // const res = await fetch(svgPath, {\n // cache: 'force-cache',\n // signal: this.fetchController.signal,\n // });\n // if (!res.ok) throw new Error(`HTTP ${res.status} for ${svgPath}`);\n // svgText = await res.text();\n // IconComponent.cache.set(svgPath, svgText);\n // }\n\n let svgText = IconComponent.cache.get(svgPath);\n\n if (!svgText) {\n // 2) De-dupe concurrent requests\n let p = IconComponent.inflight.get(svgPath);\n\n if (!p) {\n p = fetch(svgPath, { cache: 'force-cache' })\n .then((res) => {\n if (!res.ok) throw new Error(`HTTP ${res.status} for ${svgPath}`);\n return res.text();\n })\n .then((text) => {\n IconComponent.cache.set(svgPath, text);\n return text;\n })\n .finally(() => {\n IconComponent.inflight.delete(svgPath);\n });\n\n IconComponent.inflight.set(svgPath, p);\n }\n\n svgText = await p;\n }\n\n // 3) Parse raw SVG text into a document, then select the root <svg>.\n const doc = this.parser.parseFromString(svgText, 'image/svg+xml');\n const svgEl = doc.querySelector('svg') as SVGSVGElement | null;\n if (!svgEl) return; // guard: malformed file\n\n // 4) Normalize sizing & scaling\n svgEl.removeAttribute('width');\n svgEl.removeAttribute('height');\n svgEl.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n this.ensureViewBox(svgEl);\n\n // 4.1) Scope internal IDs to avoid collisions across instances\n const scope = this.nextUid('edicon');\n this.scopeSvgIds(svgEl, scope);\n\n // 4.2) Apply component-declared size to CSS var and also prime width/height.\n // (We still mirror final computed vars again after append — see below.)\n // 4.2) Only force a size if it's explicit; otherwise inherit --btn-icon.\n const px = this.resolveSize(this.size);\n const explicitSize =\n (typeof this.size === 'number' && Number(this.size) > 0) ||\n (typeof this.size === 'string' && this.size !== 'base');\n\n if (explicitSize) {\n // icon controls its own size\n this.host.style.setProperty('--ed-icon-size', `${px}px`);\n svgEl.setAttribute('width', String(px));\n svgEl.setAttribute('height', String(px));\n } else {\n // inherit from container (e.g., ed-button via --btn-icon)\n this.host.style.removeProperty('--ed-icon-size');\n // do NOT set width/height here; we’ll mirror the computed var after append\n }\n\n\n // 6) Apply color override to shapes (if provided).\n this.setFillColor(svgEl);\n\n // 7) Apply accessibility attributes/elements.\n this.applyAccessibility(svgEl);\n\n // 8) Import into current document & append to host.\n const node = document.importNode(svgEl, true) as SVGSVGElement;\n this.r.appendChild(this.host, node);\n\n // 9) Keep a live ref and mirror the **effective** CSS var size to <svg> attrs.\n this.svgRef = node;\n this.syncSvgSizeFromCssVar();\n\n // 10) Watch for future changes (e.g., parent updates --btn-icon)\n if (!this.ro) {\n this.ro = new ResizeObserver(() => this.syncSvgSizeFromCssVar());\n } else {\n this.ro.disconnect();\n }\n this.ro.observe(this.host);\n } catch (err: any) {\n // AbortError is expected when inputs change rapidly; ignore it.\n if (err?.name !== 'AbortError') {\n console.error(`Icon load error: ${this.name}`, err);\n }\n } finally {\n // Release controller after completion (success or failure).\n this.fetchController = null;\n }\n }\n\n /** Ensure the SVG has a viewBox so it scales when width/height are removed. */\n private ensureViewBox(svgEl: SVGSVGElement) {\n if (!svgEl.hasAttribute('viewBox')) {\n // Best guess for 24px icons; adjust if your icon set differs.\n // If the SVG has width/height attributes originally, derive from them.\n const w = Number(svgEl.getAttribute('width')) || 24;\n const h = Number(svgEl.getAttribute('height')) || 24;\n svgEl.setAttribute('viewBox', `0 0 ${w} ${h}`);\n }\n }\n\n /**\n * Prefix all internal IDs and their url(#...) references to avoid DOM collisions.\n * Handles: mask, clipPath, filter, gradient, markers, use, and style/url(...) in attributes.\n */\n private scopeSvgIds(svgEl: SVGSVGElement, scope: string) {\n const idMap = new Map<string, string>();\n const urlAttrs = [\n 'fill',\n 'stroke',\n 'filter',\n 'mask',\n 'clip-path',\n 'marker-start',\n 'marker-mid',\n 'marker-end',\n ];\n\n // 1) Collect all elements with an id\n svgEl.querySelectorAll<HTMLElement>('[id]').forEach((el) => {\n const oldId = el.getAttribute('id')!;\n const newId = `${scope}-${oldId}`;\n idMap.set(oldId, newId);\n el.setAttribute('id', newId);\n });\n\n // 2) Rewrite attributes that reference url(#id)\n const all = svgEl.querySelectorAll<HTMLElement>('*');\n all.forEach((el) => {\n urlAttrs.forEach((attr) => {\n const val = el.getAttribute(attr);\n if (!val) return;\n const newVal = val.replace(/url\\(#([^)]+)\\)/g, (_, id) => {\n return idMap.has(id) ? `url(#${idMap.get(id)})` : `url(#${scope}-${id})`;\n });\n if (newVal !== val) el.setAttribute(attr, newVal);\n });\n\n // xlink:href / href on <use>, gradients, etc.\n const href = el.getAttribute('href') || el.getAttribute('xlink:href');\n if (href && href.startsWith('#')) {\n const raw = href.slice(1);\n const mapped = idMap.get(raw) ?? `${scope}-${raw}`;\n if (el.hasAttribute('href')) el.setAttribute('href', `#${mapped}`);\n if (el.hasAttribute('xlink:href')) el.setAttribute('xlink:href', `#${mapped}`);\n }\n\n // Inline style can also contain url(#id)\n const styleAttr = el.getAttribute('style');\n if (styleAttr && styleAttr.includes('url(#')) {\n const newStyle = styleAttr.replace(/url\\(#([^)]+)\\)/g, (_, id) => {\n return idMap.has(id) ? `url(#${idMap.get(id)})` : `url(#${scope}-${id})`;\n });\n if (newStyle !== styleAttr) el.setAttribute('style', newStyle);\n }\n });\n }\n\n /**\n * Apply accessibility attributes/elements to the <svg>.\n * Defaults: aria-hidden=\"true\", role=\"presentation\", focusable=\"false\".\n * Overridable via inputs: decorative, ariaHidden, ariaLabel, title, desc.\n */\n private applyAccessibility(svgEl: SVGSVGElement) {\n const wantsFocus = !!this.focusable;\n\n // Decide visibility to AT (screen readers)\n // Default: decorative => hidden (unchanged)\n // If focusable is true, force it to be *not* hidden so SR can announce it.\n const hidden = wantsFocus ? false : (this.ariaHidden ?? this.decorative);\n\n // Manage tab focus\n if (wantsFocus) {\n this.r.setAttribute(svgEl, 'tabindex', String(\n Number.isFinite(this.tabIndex as any) ? this.tabIndex : 0\n ));\n this.r.setAttribute(svgEl, 'focusable', 'true');\n } else {\n svgEl.removeAttribute('tabindex');\n this.r.setAttribute(svgEl, 'focusable', 'false');\n }\n\n if (hidden) {\n // Decorative (unchanged default)\n this.r.setAttribute(svgEl, 'aria-hidden', 'true');\n this.r.setAttribute(svgEl, 'role', 'presentation');\n svgEl.removeAttribute('aria-label');\n svgEl.removeAttribute('aria-labelledby');\n return;\n }\n\n // Meaningful (when focusable or explicitly unhidden)\n this.r.setAttribute(svgEl, 'aria-hidden', 'false');\n this.r.setAttribute(svgEl, 'role', 'img');\n\n // Rebuild labeling\n svgEl.removeAttribute('aria-label');\n svgEl.removeAttribute('aria-labelledby');\n\n const ids: string[] = [];\n if (this.title) {\n const titleId = this.nextUid('ed-icon-title');\n const titleEl = this.r.createElement('title', 'svg') as SVGTitleElement;\n this.r.setAttribute(titleEl, 'id', titleId);\n (titleEl as any).textContent = this.title;\n svgEl.insertBefore(titleEl, svgEl.firstChild);\n ids.push(titleId);\n }\n if (this.desc) {\n const descId = this.nextUid('ed-icon-desc');\n const descEl = this.r.createElement('desc', 'svg') as SVGDescElement;\n this.r.setAttribute(descEl, 'id', descId);\n (descEl as any).textContent = this.desc;\n const afterTitle =\n (svgEl.querySelector('title')?.nextSibling as ChildNode | null) || svgEl.firstChild;\n svgEl.insertBefore(descEl, afterTitle);\n ids.push(descId);\n }\n if (ids.length > 0) {\n this.r.setAttribute(svgEl, 'aria-labelledby', ids.join(' '));\n } else {\n const label = this.ariaLabel?.trim() || this.name.replace(/[-_]/g, ' ');\n if (label) this.r.setAttribute(svgEl, 'aria-label', label);\n }\n}\n\n\n /**\n * Attempts to apply the provided `color` to relevant SVG child elements.\n */\n private setFillColor(svgElement: SVGSVGElement) {\n if (!this.color) return;\n\n const elements = svgElement.querySelectorAll<SVGElement>(\n 'path, circle, rect, polygon, ellipse, line, polyline'\n );\n\n elements.forEach((el) => {\n const fill = el.getAttribute('fill');\n const stroke = el.getAttribute('stroke');\n\n if (fill && fill !== 'none' && fill !== 'transparent')\n this.r.setAttribute(el, 'fill', this.color);\n if (stroke && stroke !== 'none' && stroke !== 'transparent')\n this.r.setAttribute(el, 'stroke', this.color);\n\n if (!fill && !stroke) this.r.setAttribute(el, 'fill', this.color);\n });\n\n const svgFill = svgElement.getAttribute('fill');\n const svgStroke = svgElement.getAttribute('stroke');\n if (svgFill && svgFill !== 'none' && svgFill !== 'transparent')\n this.r.setAttribute(svgElement, 'fill', this.color);\n if (svgStroke && svgStroke !== 'none' && svgStroke !== 'transparent')\n this.r.setAttribute(svgElement, 'stroke', this.color);\n }\n\n /**\n * Converts a semantic or numeric size to a pixel number.\n * - Known tokens: xs=16, sm=20, base=24, md=28, lg=32\n */\n private resolveSize(size: IconSize): number {\n const sizeMap: Record<'xs' | 'sm' | 'base' | 'md' | 'lg', number> = {\n xs: 16,\n sm: 20,\n base: 24,\n md: 28,\n lg: 32,\n };\n\n if (typeof size === 'string') {\n const asNum = Number(size);\n if (Number.isFinite(asNum) && asNum > 0) return asNum;\n return sizeMap[size as keyof typeof sizeMap] ?? sizeMap.base;\n }\n\n const num = Number(size);\n return Number.isFinite(num) && num > 0 ? num : sizeMap.base;\n }\n\n /* ───────────────────────────── Size mirroring helpers ───────────────────── */\n\n private parsePx(input: string | null | undefined, fallback = 24): number {\n if (!input) return fallback;\n const v = Number(String(input).trim().replace('px', ''));\n return Number.isFinite(v) && v > 0 ? v : fallback;\n }\n\n /** Reads computed --ed-icon-size/--btn-icon and mirrors them to <svg width/height>. */\n private syncSvgSizeFromCssVar() {\n if (!this.svgRef) return;\n\n const cs = getComputedStyle(this.host);\n const edIconVar = cs.getPropertyValue('--ed-icon-size').trim();\n const btnIconVar = cs.getPropertyValue('--btn-icon').trim();\n\n let px = this.parsePx(edIconVar || btnIconVar, this.resolveSize(this.size));\n if (!px || px <= 0) {\n px = Math.round(this.host.getBoundingClientRect().width) || 24;\n }\n\n this.svgRef.setAttribute('width', String(px));\n this.svgRef.setAttribute('height', String(px));\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n ViewChild,\n inject,\n} from '@angular/core';\n\n/**\n * Lightweight, reusable modal shell.\n *\n * Renders a centered card on top of a dimmed backdrop. Closes on backdrop\n * click, ESC key, or via the close button.\n *\n * Slots:\n * - default: scrollable body\n * - [modalStickyTop]: optional sticky content below the title header\n * - [modalFooter]: optional sticky footer (actions / preview)\n */\n@Component({\n selector: 'app-modal',\n standalone: true,\n templateUrl: './modal.component.html',\n styleUrl: './modal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalComponent implements AfterViewInit, OnDestroy {\n @Input({ required: true }) title!: string;\n @Input() subtitle?: string;\n @Input() maxWidth = '640px';\n @Output() readonly closed = new EventEmitter<void>();\n\n @ViewChild('backdrop', { static: true })\n private readonly backdrop?: ElementRef<HTMLElement>;\n\n private readonly renderer = inject(Renderer2);\n private movedToBody = false;\n\n ngAfterViewInit(): void {\n const el = this.backdrop?.nativeElement;\n if (!el || el.parentElement === document.body) return;\n // Escape #content-area / .eds-content overflow clipping so the overlay\n // covers the full viewport above EHR chrome.\n this.renderer.appendChild(document.body, el);\n this.movedToBody = true;\n }\n\n ngOnDestroy(): void {\n const el = this.backdrop?.nativeElement;\n if (this.movedToBody && el?.parentElement) {\n this.renderer.removeChild(el.parentElement, el);\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n this.closed.emit();\n }\n\n onBackdropClick(event: MouseEvent): void {\n if (event.target === event.currentTarget) {\n this.closed.emit();\n }\n }\n\n close(): void {\n this.closed.emit();\n }\n}\n","<div\n #backdrop\n class=\"modal-backdrop fixed left-0 top-0 z-[100100] flex h-[100vh] w-[100vw] items-center justify-center bg-[rgba(20,30,50,0.42)] p-6 backdrop-blur-[2px]\"\n (click)=\"onBackdropClick($event)\"\n role=\"presentation\"\n>\n <div\n class=\"modal-card flex w-full max-h-[calc(100vh-48px)] flex-col overflow-hidden rounded-lg border border-base bg-white shadow-sm\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"title\"\n [style.max-width]=\"maxWidth\"\n >\n <header class=\"modal-header flex shrink-0 items-start justify-between gap-4 border-b border-base px-6 pb-4 pt-5\">\n <div class=\"flex min-w-0 flex-col gap-1\">\n <h2 class=\"m-0 text-base font-semibold tracking-tight text-dark\">{{ title }}</h2>\n @if (subtitle) {\n <p class=\"m-0 text-[13px] text-light\">{{ subtitle }}</p>\n }\n </div>\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-lg border border-transparent bg-transparent text-light transition-colors duration-150 hover:bg-lighter hover:text-dark focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-600\"\n (click)=\"close()\"\n aria-label=\"Close dialog\"\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </header>\n\n <div class=\"modal-sticky-top shrink-0 empty:hidden\">\n <ng-content select=\"[modalStickyTop]\" />\n </div>\n\n <div class=\"modal-body min-h-0 flex-1 overflow-y-auto overscroll-contain px-6 pb-6 pt-5\">\n <ng-content />\n </div>\n\n <div class=\"modal-footer shrink-0 empty:hidden\">\n <ng-content select=\"[modalFooter]\" />\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n inject,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { EdButtonComponent } from '../../ui/ed-button.component';\n\nimport { AiReceptionistApiService } from '../../services/ai-receptionist-api.service';\nimport { IconComponent } from '../../ui/ed-icon.component';\nimport { ModalComponent } from '../../shared/modal.component';\nimport { ToastService } from '../../shared/toast.service';\n\nconst QUESTION_MAX = 500;\n\n@Component({\n selector: 'eds-knowledge-test-modal',\n imports: [FormsModule, ModalComponent, IconComponent, EdButtonComponent],\n templateUrl: './knowledge-test-modal.component.html',\n styleUrl: './knowledge-test-modal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KnowledgeTestModalComponent implements OnChanges, OnDestroy {\n private readonly api = inject(AiReceptionistApiService);\n private readonly toast = inject(ToastService);\n\n @Input({ required: true }) open = false;\n @Input() whatToSay = '';\n @Input() whatNotToSay = '';\n @Input() voiceId = '';\n @Output() readonly closed = new EventEmitter<void>();\n\n protected readonly questionMax = QUESTION_MAX;\n protected readonly question = signal('');\n protected readonly testing = signal(false);\n protected readonly answer = signal<string | null>(null);\n protected readonly playing = signal(false);\n\n private audio: HTMLAudioElement | null = null;\n private objectUrl: string | null = null;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['open'] && this.open) {\n this.question.set('');\n this.answer.set(null);\n this.stopAudio();\n }\n if (changes['open'] && !this.open) {\n this.stopAudio();\n }\n }\n\n ngOnDestroy(): void {\n this.stopAudio();\n }\n\n protected close(): void {\n this.stopAudio();\n this.closed.emit();\n }\n\n protected onQuestionChange(value: string): void {\n this.question.set(value.slice(0, QUESTION_MAX));\n }\n\n protected runTest(): void {\n const q = this.question().trim();\n if (!q || this.testing()) return;\n\n const whatToSay = this.whatToSay.trim();\n const whatNotToSay = this.whatNotToSay.trim();\n if (!whatToSay || !whatNotToSay) {\n this.toast.show(\n 'Fill in both “What to say” and “What not to say” before testing.',\n 'error',\n );\n return;\n }\n\n this.testing.set(true);\n this.answer.set(null);\n this.stopAudio();\n\n this.api\n .testKnowledgeAnswer({\n question: q,\n whatToSay,\n whatNotToSay,\n voiceId: this.voiceId.trim() || undefined,\n })\n .subscribe({\n next: (result) => {\n this.testing.set(false);\n this.answer.set(result.answer);\n this.playAudio(result.audioBlob);\n },\n error: (err: unknown) => {\n this.testing.set(false);\n const message =\n err instanceof Error && err.message.trim()\n ? err.message\n : 'Could not generate a test answer.';\n this.toast.show(message, 'error');\n },\n });\n }\n\n protected replay(): void {\n if (!this.audio) return;\n this.audio.currentTime = 0;\n this.playing.set(true);\n void this.audio.play().catch(() => {\n this.playing.set(false);\n this.toast.show('Could not play audio in this browser.', 'error');\n });\n }\n\n private playAudio(blob: Blob): void {\n this.stopAudio();\n this.objectUrl = URL.createObjectURL(blob);\n const audio = new Audio(this.objectUrl);\n this.audio = audio;\n this.playing.set(true);\n audio.onended = () => this.playing.set(false);\n audio.onerror = () => {\n this.playing.set(false);\n this.toast.show('Could not play audio in this browser.', 'error');\n };\n void audio.play().catch(() => {\n this.playing.set(false);\n this.toast.show('Could not play audio in this browser.', 'error');\n });\n }\n\n private stopAudio(): void {\n if (this.audio) {\n this.audio.pause();\n this.audio.onended = null;\n this.audio.onerror = null;\n this.audio = null;\n }\n if (this.objectUrl) {\n URL.revokeObjectURL(this.objectUrl);\n this.objectUrl = null;\n }\n this.playing.set(false);\n }\n}\n","@if (open) {\n <app-modal\n title=\"Test Knowledge Base\"\n subtitle=\"Ask a sample caller question — hear how the agent answers with your guidance and voice\"\n maxWidth=\"560px\"\n (closed)=\"close()\"\n >\n <form id=\"knowledge-test-form\" class=\"flex flex-col gap-4\" (ngSubmit)=\"runTest()\" novalidate autocomplete=\"off\">\n <div class=\"mb-sm\">\n <label>What might a caller ask?<span required>*</span></label>\n <textarea\n class=\"form-textarea min-h-[84px]\"\n rows=\"3\"\n [maxlength]=\"questionMax\"\n [ngModel]=\"question()\"\n (ngModelChange)=\"onQuestionChange($event)\"\n name=\"question\"\n placeholder=\"e.g. What are your Saturday hours? Is parking free?\"\n [disabled]=\"testing()\"\n autocomplete=\"off\"\n ></textarea>\n <span class=\"kb-test__hint self-end text-xs\">{{ question().length }}/{{ questionMax }}</span>\n </div>\n\n @if (answer(); as spoken) {\n <div class=\"kb-test__answer rounded-lg border px-4 py-3\" role=\"status\">\n <div class=\"mb-2 flex items-center gap-2 text-xs font-semibold uppercase tracking-wide\">\n <ed-icon name=\"graph_new\" [size]=\"18\" />\n <span>Agent reply</span>\n @if (playing()) {\n <span class=\"kb-test__playing ml-auto font-medium normal-case tracking-normal\">Playing…</span>\n } @else {\n <button type=\"button\" class=\"kb-test__replay ml-auto cursor-pointer border-none bg-transparent px-1 py-1 text-[13px] font-semibold normal-case tracking-normal\" (click)=\"replay()\">\n Replay\n </button>\n }\n </div>\n <p class=\"m-0 text-sm leading-[1.55]\">{{ spoken }}</p>\n </div>\n }\n </form>\n\n <div modalFooter class=\"border-t border-base bg-white px-6 py-4\">\n <div class=\"flex justify-end gap-2\">\n <ed-button variant=\"secondary\" outline size=\"sm\" (click$)=\"close()\" [disabled]=\"testing()\">\n Close\n </ed-button>\n <ed-button\n type=\"button\"\n variant=\"primary\"\n fill\n size=\"sm\"\n [disabled]=\"testing() || !question().trim()\"\n (click$)=\"runTest()\"\n >\n @if (testing()) {\n Generating…\n } @else {\n <ed-icon slot=\"prefix\" name=\"play_arrow\" [size]=\"16\" />\n Test\n }\n </ed-button>\n </div>\n </div>\n </app-modal>\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output,\n} from '@angular/core';\n\nimport { IconComponent } from './ed-icon.component';\n\ntype Size = 'xs' | 'sm' | 'base' | 'md' | 'lg';\ntype Variant = 'default' | 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'accent' | 'info';\ntype Shape = 'circle' | 'square';\ntype BtnType = 'button' | 'submit' | 'reset';\ntype IconPixelSize = 14 | 16 | 18 | 20 | 24 | 28 | 32;\n\nconst SIZE_MAP: Record<Size, { btn: number; spinner: number; radius: number; icon: IconPixelSize }> = {\n xs: { btn: 24, spinner: 14, radius: 4, icon: 14 },\n sm: { btn: 28, spinner: 16, radius: 6, icon: 16 },\n base: { btn: 32, spinner: 18, radius: 6, icon: 20 },\n md: { btn: 36, spinner: 20, radius: 8, icon: 24 },\n lg: { btn: 40, spinner: 22, radius: 10, icon: 28 },\n};\n\n@Component({\n selector: 'ed-icon-button',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './ed-icon-button.component.html',\n styleUrl: './ed-icon-button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EdIconButtonComponent {\n @Input({ required: true }) label!: string;\n @Input({ required: true }) name!: string;\n\n @Input() size: Size = 'base';\n @Input() variant: Variant = 'default';\n @Input({ transform: booleanAttribute }) allowBubble = false;\n @Input({ transform: booleanAttribute }) ghost = false;\n @Input({ transform: booleanAttribute }) outline = false;\n @Input({ transform: booleanAttribute }) solid = false;\n @Input({ transform: booleanAttribute }) subtle = false;\n @Input() shape: Shape = 'square';\n\n private readonly btnTypes = new Set<BtnType>(['button', 'submit', 'reset']);\n private typeValue: BtnType = 'button';\n @Input() set type(v: BtnType) {\n this.typeValue = this.btnTypes.has(v) ? v : 'button';\n }\n get type(): BtnType {\n return this.typeValue;\n }\n\n @Input({ transform: booleanAttribute }) disabled = false;\n @Input({ transform: booleanAttribute }) loading = false;\n @Input({ transform: booleanAttribute }) toggle = false;\n @Input({ transform: booleanAttribute }) pressed = false;\n\n @Input() id?: string;\n @Input() title?: string;\n @Input() nameAttr?: string;\n @Input() value?: string;\n @Input({ transform: booleanAttribute }) autofocus = false;\n @Input() tabIndex?: number;\n\n @Output() readonly click = new EventEmitter<MouseEvent>();\n @Output() readonly focus = new EventEmitter<FocusEvent>();\n @Output() readonly blur = new EventEmitter<FocusEvent>();\n @Output() readonly click$ = new EventEmitter<MouseEvent>();\n @Output() readonly focus$ = new EventEmitter<FocusEvent>();\n @Output() readonly blur$ = new EventEmitter<FocusEvent>();\n\n get isDisabled(): boolean {\n return this.disabled || this.loading;\n }\n\n get ariaBusy(): 'true' | null {\n return this.loading ? 'true' : null;\n }\n\n get iconSize(): IconPixelSize {\n return (SIZE_MAP[this.size] ?? SIZE_MAP.base).icon;\n }\n\n @HostBinding('style.--btn-size')\n get btnSizeVar(): string {\n return `${(SIZE_MAP[this.size] ?? SIZE_MAP.base).btn}px`;\n }\n\n @HostBinding('style.--ib-spinner')\n get spinnerSizeVar(): string {\n return `${(SIZE_MAP[this.size] ?? SIZE_MAP.base).spinner}px`;\n }\n\n @HostBinding('style.--btn-radius')\n get btnRadiusVar(): string {\n return `${(SIZE_MAP[this.size] ?? SIZE_MAP.base).radius}px`;\n }\n\n get effectiveStyle(): 'ghost' | 'outline' | 'subtle' | 'solid' {\n if (this.solid) return 'solid';\n if (this.outline) return 'outline';\n if (this.subtle) return 'subtle';\n return 'ghost';\n }\n\n onClick(ev: MouseEvent): void {\n if (this.isDisabled) {\n ev.preventDefault();\n ev.stopImmediatePropagation();\n return;\n }\n this.click.emit(ev);\n this.click$.emit(ev);\n }\n\n onFocus(ev: FocusEvent): void {\n this.focus.emit(ev);\n this.focus$.emit(ev);\n }\n\n onBlur(ev: FocusEvent): void {\n this.blur.emit(ev);\n this.blur$.emit(ev);\n }\n\n @HostListener('click', ['$event'])\n stopClickBubble(e: Event): void {\n if (!this.allowBubble) e.stopPropagation();\n }\n\n @HostListener('pointerdown', ['$event'])\n stopPointerDownBubble(e: Event): void {\n if (!this.allowBubble) e.stopPropagation();\n }\n\n @HostListener('pointerup', ['$event'])\n stopPointerUpBubble(e: Event): void {\n if (!this.allowBubble) e.stopPropagation();\n }\n\n @HostListener('mousedown', ['$event'])\n stopMouseDownBubble(e: Event): void {\n if (!this.allowBubble) e.stopPropagation();\n }\n\n @HostListener('mouseup', ['$event'])\n stopMouseUpBubble(e: Event): void {\n if (!this.allowBubble) e.stopPropagation();\n }\n}\n","<button\n class=\"icon-btn\"\n [attr.id]=\"id || null\"\n [attr.title]=\"title || null\"\n [type]=\"type\"\n [disabled]=\"isDisabled\"\n [attr.autofocus]=\"autofocus ? '' : null\"\n [attr.tabindex]=\"tabIndex ?? null\"\n [attr.name]=\"nameAttr || null\"\n [attr.value]=\"value || null\"\n [attr.aria-label]=\"label\"\n [attr.aria-busy]=\"ariaBusy\"\n [attr.aria-disabled]=\"isDisabled ? 'true' : null\"\n [attr.aria-pressed]=\"toggle ? (pressed ? 'true' : 'false') : null\"\n [attr.variant]=\"variant\"\n [attr.shape]=\"shape\"\n [attr.size]=\"size\"\n [attr.ghost]=\"effectiveStyle === 'ghost' ? '' : null\"\n [attr.outline]=\"effectiveStyle === 'outline' ? '' : null\"\n [attr.solid]=\"effectiveStyle === 'solid' ? '' : null\"\n [attr.subtle]=\"effectiveStyle === 'subtle' ? '' : null\"\n (click)=\"onClick($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n>\n <span class=\"icon-slot\" aria-hidden=\"true\">\n <ed-icon [name]=\"name\" [size]=\"iconSize\" color=\"currentColor\" />\n </span>\n\n @if (loading) {\n <span aria-live=\"polite\" class=\"sr-only\">Loading…</span>\n <span class=\"spinner\" aria-hidden=\"true\"></span>\n }\n</button>\n","/** Curated ElevenLabs voices — keep in sync with backend `tts-voice-presets.ts`. */\n\nexport interface TtsVoicePreset {\n id: string;\n label: string;\n /** Display gender hint next to the voice name. */\n gender: 'M' | 'F';\n}\n\nexport const DEFAULT_TTS_VOICE_ID = '7EzWGsX10sAS4c9m9cPf';\n\nexport const TTS_VOICE_PRESETS: readonly TtsVoicePreset[] = [\n {\n id: '7EzWGsX10sAS4c9m9cPf',\n label: 'Jack John – Conversational and Upbeat',\n gender: 'M',\n },\n {\n id: 'NUjosfEayZAdRcDmcHM8',\n label: 'Madison – Cool, Calm & Conversational',\n gender: 'F',\n },\n {\n id: 'gE0owC0H9C8SzfDyIUtB',\n label: 'Ivanna – Sassy, Condescending and Clear',\n gender: 'F',\n },\n {\n id: 'Uc7anshoV8mdBhDnEZEX',\n label: 'Cecily – Clear and Warm',\n gender: 'F',\n },\n] as const;\n","import { AgentSettings } from '../../models/ai-receptionist.types';\nimport { TTS_VOICE_PRESETS } from './tts-voice-presets';\n\nexport type SettingsSection = Exclude<\n keyof AgentSettings,\n | 'safety'\n | 'effectiveWelcomeMessage'\n | 'effectiveVoiceSystemPrompt'\n | 'usingDefaultVoiceSystemPrompt'\n>;\n\nexport interface SettingsFieldOption {\n value: string;\n label: string;\n}\n\nexport interface SettingsFieldMeta {\n key: string;\n label: string;\n description: string;\n type: 'text' | 'number' | 'boolean' | 'select';\n options?: SettingsFieldOption[];\n readOnly?: boolean;\n}\n\nexport interface SettingsSectionMeta {\n title: string;\n description: string;\n}\n\nexport const AGENT_TONE_OPTIONS: SettingsFieldOption[] = [\n { value: 'warm_friendly', label: 'Warm & friendly' },\n { value: 'professional', label: 'Professional' },\n { value: 'efficient_brief', label: 'Efficient & brief' },\n { value: 'casual_friendly', label: 'Casual & friendly' },\n];\n\nexport const LANGUAGE_OPTIONS: SettingsFieldOption[] = [\n { value: 'English', label: 'English' },\n { value: 'Spanish', label: 'Spanish' },\n { value: 'Chinese', label: 'Chinese' },\n { value: 'Hindi', label: 'Hindi' },\n { value: 'French', label: 'French' },\n { value: 'German', label: 'German' },\n { value: 'Portuguese', label: 'Portuguese' },\n { value: 'Arabic', label: 'Arabic' },\n { value: 'Korean', label: 'Korean' },\n { value: 'Japanese', label: 'Japanese' },\n];\n\nexport const GREETING_VARIABLES: { key: string; label: string; token: string }[] = [\n { key: 'practiceName', label: 'Practice Name', token: '{{practiceName}}' },\n { key: 'agentName', label: 'Agent Name', token: '{{agentName}}' },\n { key: 'locationName', label: 'Location Name', token: '{{locationName}}' },\n { key: 'businessHours', label: 'Business Hours', token: '{{businessHours}}' },\n];\n\nexport const RETENTION_DAY_OPTIONS: SettingsFieldOption[] = [\n { value: '7', label: '7 days' },\n { value: '14', label: '14 days' },\n { value: '30', label: '30 days' },\n { value: '60', label: '60 days' },\n { value: '90', label: '90 days' },\n { value: '180', label: '180 days' },\n { value: '365', label: '1 year' },\n];\n\nexport const RING_TIMEOUT_OPTIONS: SettingsFieldOption[] = [\n { value: '10', label: '10 sec' },\n { value: '15', label: '15 sec' },\n { value: '20', label: '20 sec' },\n { value: '30', label: '30 sec' },\n { value: '45', label: '45 sec' },\n { value: '60', label: '60 sec' },\n];\n\nexport const MAX_CALL_DURATION_OPTIONS: SettingsFieldOption[] = [\n { value: '3', label: '3 min' },\n { value: '5', label: '5 min' },\n { value: '10', label: '10 min' },\n { value: '15', label: '15 min' },\n { value: '20', label: '20 min' },\n { value: '30', label: '30 min' },\n];\n\nexport const SILENCE_TIMEOUT_OPTIONS: SettingsFieldOption[] = [\n { value: '10', label: '10 seconds' },\n { value: '15', label: '15 seconds' },\n { value: '20', label: '20 seconds' },\n { value: '30', label: '30 seconds' },\n { value: '45', label: '45 seconds' },\n { value: '60', label: '60 seconds' },\n];\n\nexport const AI_ANSWER_MODE_OPTIONS: SettingsFieldOption[] = [\n { value: 'always_first', label: 'Always first' },\n { value: 'ring_then_ai', label: 'Ring staff, then AI' },\n { value: 'ai_backup', label: 'AI as backup only' },\n];\n\nexport const AFTER_HOURS_OPTIONS: SettingsFieldOption[] = [\n { value: 'ai_answers', label: 'AI answers' },\n { value: 'voicemail', label: 'Voicemail' },\n { value: 'transfer', label: 'Transfer to after-hours number' },\n];\n\nexport const DEFAULT_DISCLOSURE_WARNING =\n 'This call may be handled by an automated assistant and could be recorded for quality and training. You can ask to speak with a staff member at any time.';\n\nexport const SETTINGS_SECTION_META: Record<SettingsSection, SettingsSectionMeta> = {\n general: {\n title: 'AI Identity',\n description: 'Name, voice, languages, tone, and inbound greeting.',\n },\n phone: {\n title: 'Phone & Availability',\n description: 'Inbound routing, ring timing, locations, and after-hours behavior.',\n },\n tasks: {\n title: 'Task Rules',\n description: 'When the AI should create staff tasks after a call.',\n },\n scheduling: {\n title: 'Scheduling Rules',\n description: 'Rules for booking and rescheduling appointments.',\n },\n refill: {\n title: 'Medication refills',\n description: 'Refill approval windows and staff review requirements.',\n },\n verify: {\n title: 'Patient Verification',\n description: 'Identity checks before accessing chart or scheduling data.',\n },\n escalation: {\n title: 'Safety Escalation',\n description: 'When to offer a human or transfer to reception.',\n },\n outbound: {\n title: 'Outbound Purpose',\n description: 'Outbound dialer defaults. Purpose templates are managed separately.',\n },\n knowledge: {\n title: 'Knowledge Base',\n description: 'Practice information the AI should share — and topics it must avoid.',\n },\n transcripts: {\n title: 'Data & Compliance',\n description: 'Recording retention, transcripts, and disclosure warnings.',\n },\n advanced: {\n title: 'Advanced',\n description: 'Agent online status and model options.',\n },\n};\n\n/** Entire sections where every field is read-only (including unknown API fields). */\nexport const READ_ONLY_SECTIONS = new Set<SettingsSection>(['verify']);\n\n/** Settings tabs that stay visible but cannot be selected/edited. */\nexport const DISABLED_SETTINGS_TABS = new Set<SettingsSection>(['verify', 'escalation']);\n\n/** Individual fields locked for compliance, telephony, or core agent identity. */\nexport const READ_ONLY_FIELD_KEYS: ReadonlyArray<{ section: SettingsSection; key: string; reason: string }> = [\n { section: 'general', key: 'timezone', reason: 'Practice timezone' },\n { section: 'phone', key: 'mainNumber', reason: 'AI phone number' },\n { section: 'phone', key: 'transferNumber', reason: 'Transfer number' },\n { section: 'tasks', key: 'defaultAssignee', reason: 'Default task assignee' },\n { section: 'outbound', key: 'callerId', reason: 'Outbound caller ID' },\n { section: 'advanced', key: 'modelVersion', reason: 'Voice AI model profile' },\n { section: 'advanced', key: 'debugMode', reason: 'Debug logging' },\n];\n\nconst READ_ONLY_LOOKUP = new Set(\n READ_ONLY_FIELD_KEYS.map(({ section, key }) => `${section}.${key}`),\n);\n\nexport function isFieldReadOnly(section: SettingsSection, key: string): boolean {\n if (READ_ONLY_SECTIONS.has(section)) return true;\n return READ_ONLY_LOOKUP.has(`${section}.${key}`);\n}\n\nexport function readOnlyFieldReason(section: SettingsSection, key: string): string | undefined {\n return READ_ONLY_FIELD_KEYS.find((f) => f.section === section && f.key === key)?.reason;\n}\n\nexport const SETTINGS_FIELDS: Record<SettingsSection, SettingsFieldMeta[]> = {\n general: [\n {\n key: 'agentName',\n label: 'Name',\n description: 'How the assistant introduces itself.',\n type: 'text',\n },\n {\n key: 'ttsVoiceId',\n label: 'Voice',\n description: 'Spoken voice used on phone calls.',\n type: 'select',\n options: TTS_VOICE_PRESETS.map((p) => ({\n value: p.id,\n label: `${p.gender} · ${p.label}`,\n })),\n },\n {\n key: 'languages',\n label: 'Language',\n description: 'Languages the AI can speak on calls.',\n type: 'text',\n },\n {\n key: 'tone',\n label: 'Tone',\n description: 'Conversational style for the AI.',\n type: 'select',\n options: AGENT_TONE_OPTIONS,\n },\n {\n key: 'welcomeMessage',\n label: 'Inbound Greetings',\n description: 'Spoken when a caller connects.',\n type: 'text',\n },\n ],\n phone: [\n {\n key: 'answerMode',\n label: 'AI Answer Mode',\n description: 'When the AI picks up inbound calls.',\n type: 'select',\n options: AI_ANSWER_MODE_OPTIONS,\n },\n {\n key: 'mainNumber',\n label: 'AI Phone Number',\n description: 'Number patients dial for the AI receptionist.',\n type: 'text',\n },\n {\n key: 'transferNumber',\n label: 'Transfer Number',\n description: 'Staff / front-desk number for handoff.',\n type: 'text',\n },\n {\n key: 'ringTimeout',\n label: 'Ringing Time Wait',\n description: 'How long to ring before the AI answers.',\n type: 'select',\n options: RING_TIMEOUT_OPTIONS,\n },\n {\n key: 'createFollowUpTask',\n label: 'Create Follow-up Task',\n description: 'If no one answers in time, the agent auto-creates a high priority task.',\n type: 'boolean',\n },\n {\n key: 'locationIds',\n label: 'Location Handled',\n description: 'Locations this AI receptionist covers.',\n type: 'text',\n },\n {\n key: 'maxCallDurationMin',\n label: 'Max AI Call Duration',\n description: 'Longest call the AI will stay on before wrapping up.',\n type: 'select',\n options: MAX_CALL_DURATION_OPTIONS,\n },\n {\n key: 'silenceTimeoutSec',\n label: 'Silence Timeout',\n description: 'How long silence lasts before the AI prompts or ends.',\n type: 'select',\n options: SILENCE_TIMEOUT_OPTIONS,\n },\n {\n key: 'afterHoursBehavior',\n label: 'After-Hours Behaviour',\n description: 'What happens outside business hours.',\n type: 'select',\n options: AFTER_HOURS_OPTIONS,\n },\n ],\n tasks: [\n {\n key: 'autoCreate',\n label: 'Auto-create tasks',\n description: 'Create a staff task when the AI cannot fully resolve a request.',\n type: 'boolean',\n },\n {\n key: 'defaultAssignee',\n label: 'Default assignee',\n description: 'Team or role new tasks are routed to.',\n type: 'text',\n },\n ],\n scheduling: [\n {\n key: 'leadTimeHours',\n label: 'Minimum lead time (hours)',\n description: 'Earliest bookable slot from now.',\n type: 'number',\n },\n {\n key: 'allowSameDay',\n label: 'Allow same-day booking',\n description: 'Let patients book appointments later today.',\n type: 'boolean',\n },\n ],\n refill: [\n {\n key: 'autoApproveDays',\n label: 'Auto-approve within (days)',\n description: 'Refills due within this window may be auto-approved.',\n type: 'number',\n },\n {\n key: 'requireStaffReview',\n label: 'Require staff review',\n description: 'All refill requests need staff approval before sending to pharmacy.',\n type: 'boolean',\n },\n ],\n verify: [\n {\n key: 'requireDob',\n label: 'Require date of birth',\n description: 'Ask for DOB before lookup or scheduling.',\n type: 'boolean',\n },\n {\n key: 'requireName',\n label: 'Require full name',\n description: 'Ask for patient name during verification.',\n type: 'boolean',\n },\n {\n key: 'maxAttempts',\n label: 'Max verification attempts',\n description: 'After this many failures, offer transfer to staff.',\n type: 'number',\n },\n ],\n escalation: [\n {\n key: 'sentimentThreshold',\n label: 'Sentiment threshold',\n description: 'Escalate when caller sentiment reaches this level (e.g. frustrated).',\n type: 'text',\n },\n {\n key: 'urgentKeywords',\n label: 'Urgent keywords',\n description: 'Comma-separated phrases that trigger immediate escalation.',\n type: 'text',\n },\n ],\n outbound: [\n {\n key: 'enabled',\n label: 'Outbound calls enabled',\n description: 'Allow staff to place outbound calls from the dashboard.',\n type: 'boolean',\n },\n {\n key: 'callerId',\n label: 'Outbound caller ID',\n description: 'Number shown to patients on outbound calls.',\n type: 'text',\n },\n ],\n knowledge: [\n {\n key: 'whatToSay',\n label: 'What to say',\n description: 'Facts and guidance the AI may share with callers.',\n type: 'text',\n },\n {\n key: 'whatNotToSay',\n label: 'What not to say',\n description: 'Topics the AI must refuse or escalate.',\n type: 'text',\n },\n ],\n transcripts: [\n {\n key: 'recordingRetainDays',\n label: 'Keep Call Recordings',\n description: 'How long call recordings are retained.',\n type: 'select',\n options: RETENTION_DAY_OPTIONS,\n },\n {\n key: 'transcriptRetainDays',\n label: 'Keep Transcripts',\n description: 'How long call transcripts are retained.',\n type: 'select',\n options: RETENTION_DAY_OPTIONS,\n },\n {\n key: 'disclosureWarningEnabled',\n label: 'Disclosure Warning',\n description: 'Play or show a disclosure when the AI answers.',\n type: 'boolean',\n },\n {\n key: 'disclosureWarningText',\n label: 'Disclosure text',\n description: 'Spoken or shown disclosure message.',\n type: 'text',\n },\n ],\n advanced: [\n {\n key: 'modelVersion',\n label: 'Model version',\n description: 'Voice AI model profile (set by Edvak support).',\n type: 'text',\n },\n {\n key: 'debugMode',\n label: 'Debug mode',\n description: 'Verbose logging for troubleshooting — not for production.',\n type: 'boolean',\n },\n ],\n};\n\n/** Fallback label for API fields not listed in config. */\nexport function humanizeFieldKey(key: string): string {\n return key\n .replace(/([A-Z])/g, ' $1')\n .replace(/_/g, ' ')\n .trim()\n .replace(/^\\w/, (c) => c.toUpperCase());\n}\n\nexport function resolveFieldMeta(\n section: SettingsSection,\n key: string,\n value: string | boolean | number,\n): SettingsFieldMeta {\n const known = SETTINGS_FIELDS[section]?.find((f) => f.key === key);\n if (known) return known;\n return {\n key,\n label: humanizeFieldKey(key),\n description: '',\n type: typeof value === 'boolean' ? 'boolean' : typeof value === 'number' ? 'number' : 'text',\n };\n}\n\nexport function parseCsvList(value: unknown): string[] {\n return String(value ?? '')\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n}\n\nexport function toCsvList(values: string[]): string {\n return values.map((v) => v.trim()).filter(Boolean).join(',');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n OnDestroy,\n OnInit,\n output,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { EdButtonComponent } from '../../ui/ed-button.component';\nimport { EdSkeletonComponent } from '../../ui/ed-skeleton.component';\n\nimport { KnowledgeTestModalComponent } from '../../components/knowledge-test-modal/knowledge-test-modal.component';\nimport { AgentSettings, LocationOption } from '../../models/ai-receptionist.types';\nimport { AiReceptionistApiService } from '../../services/ai-receptionist-api.service';\nimport { AgentOnlineService } from '../../services/agent-online.service';\nimport { ModalComponent } from '../../shared/modal.component';\nimport { ToastService } from '../../shared/toast.service';\nimport { IconComponent } from '../../ui/ed-icon.component';\nimport { EdIconButtonComponent } from '../../ui/ed-icon-button.component';\nimport {\n buildAutoWelcomeTemplate,\n resolveWelcomePreview,\n WELCOME_MESSAGE_MAX,\n} from '../../utils/welcome-message.util';\nimport { TTS_VOICE_PRESETS } from './tts-voice-presets';\nimport {\n AFTER_HOURS_OPTIONS,\n AGENT_TONE_OPTIONS,\n AI_ANSWER_MODE_OPTIONS,\n DEFAULT_DISCLOSURE_WARNING,\n DISABLED_SETTINGS_TABS,\n GREETING_VARIABLES,\n isFieldReadOnly,\n LANGUAGE_OPTIONS,\n MAX_CALL_DURATION_OPTIONS,\n parseCsvList,\n READ_ONLY_SECTIONS,\n resolveFieldMeta,\n RETENTION_DAY_OPTIONS,\n RING_TIMEOUT_OPTIONS,\n SETTINGS_FIELDS,\n SETTINGS_SECTION_META,\n SettingsFieldMeta,\n SettingsSection,\n SILENCE_TIMEOUT_OPTIONS,\n toCsvList,\n} from './settings-fields.config';\n\ntype SettingsTab = Exclude<\n keyof AgentSettings,\n | 'safety'\n | 'effectiveWelcomeMessage'\n | 'effectiveVoiceSystemPrompt'\n | 'usingDefaultVoiceSystemPrompt'\n>;\n\n/** Drawer-only visual tab with no backend section. */\ntype StaticSettingsTab = 'allowed_activities';\ntype SettingsNavTab = SettingsTab | StaticSettingsTab;\n\nconst CUSTOM_PANEL_TABS = new Set<SettingsTab>([\n 'general',\n 'phone',\n 'transcripts',\n 'knowledge',\n 'advanced',\n]);\n\nconst PAGE_TABS: { id: SettingsNavTab; label: string }[] = [\n { id: 'general', label: 'Identity & Greetings' },\n { id: 'phone', label: 'Phone & Availability' },\n { id: 'knowledge', label: 'Knowledge Base' },\n { id: 'transcripts', label: 'Data & Compliance' },\n { id: 'advanced', label: 'Advanced' },\n];\n\n/** Figma Agent Setting drawer section list. */\nconst DRAWER_TABS: { id: SettingsNavTab; label: string }[] = [\n { id: 'general', label: 'Identity & Greetings' },\n { id: 'phone', label: 'Phone & Availability' },\n { id: 'allowed_activities', label: 'Allowed Activities' },\n { id: 'scheduling', label: 'Scheduling Rules' },\n { id: 'tasks', label: 'Task Rules' },\n { id: 'outbound', label: 'Outbound Purpose' },\n { id: 'knowledge', label: 'Knowledge Base' },\n { id: 'escalation', label: 'Safety Escalation' },\n { id: 'transcripts', label: 'Data & Compliance' },\n];\nconst HIDDEN_GENERIC_KEYS = new Set([\n 'welcomeMessage',\n 'practiceName',\n 'language',\n 'languages',\n 'tone',\n 'timezone',\n 'voiceSystemPrompt',\n 'customVoiceInstructions',\n]);\nconst KNOWLEDGE_MAX = 8000;\nconst DISCLOSURE_MAX = 1000;\n\n@Component({\n selector: 'eds-settings-page',\n imports: [\n FormsModule,\n NgTemplateOutlet,\n IconComponent,\n EdButtonComponent,\n EdIconButtonComponent,\n KnowledgeTestModalComponent,\n ModalComponent,\n EdSkeletonComponent,\n ],\n templateUrl: './settings-page.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SettingsPageComponent implements OnInit, OnDestroy {\n private readonly api = inject(AiReceptionistApiService);\n private readonly toast = inject(ToastService);\n private readonly route = inject(ActivatedRoute);\n private readonly agentOnline = inject(AgentOnlineService);\n private originalSettings: AgentSettings | null = null;\n private voiceAudio: HTMLAudioElement | null = null;\n private voiceObjectUrl: string | null = null;\n\n /** `page` = routed full page chrome; `drawer` = embedded in Agent Settings drawer. */\n readonly presentation = input<'page' | 'drawer'>('page');\n readonly savedSuccessfully = output<void>();\n\n protected readonly isFieldReadOnly = isFieldReadOnly;\n protected readonly knowledgeMax = KNOWLEDGE_MAX;\n protected readonly disclosureMax = DISCLOSURE_MAX;\n protected readonly welcomeMax = WELCOME_MESSAGE_MAX;\n protected readonly voicePresets = TTS_VOICE_PRESETS;\n protected readonly toneOptions = AGENT_TONE_OPTIONS;\n protected readonly languageOptions = LANGUAGE_OPTIONS;\n protected readonly greetingVariables = GREETING_VARIABLES;\n protected readonly languageChipLimit = 4;\n protected readonly locationChipLimit = 3;\n protected readonly retentionOptions = RETENTION_DAY_OPTIONS;\n protected readonly ringTimeoutOptions = RING_TIMEOUT_OPTIONS;\n protected readonly maxCallDurationOptions = MAX_CALL_DURATION_OPTIONS;\n protected readonly silenceTimeoutOptions = SILENCE_TIMEOUT_OPTIONS;\n protected readonly answerModeOptions = AI_ANSWER_MODE_OPTIONS;\n protected readonly afterHoursOptions = AFTER_HOURS_OPTIONS;\n\n protected readonly settings = signal<AgentSettings | null>(null);\n protected readonly tab = signal<SettingsNavTab>('general');\n protected readonly loading = signal(true);\n protected readonly navSkeletonRows = [0, 1, 2, 3, 4, 5, 6, 7, 8] as const;\n protected readonly fieldSkeletonRows = [0, 1, 2, 3, 4, 5] as const;\n readonly saving = signal(false);\n protected readonly saved = signal(false);\n protected readonly knowledgeTestOpen = signal(false);\n protected readonly locations = signal<LocationOption[]>([]);\n protected readonly locationsMenuOpen = signal(false);\n protected readonly languagesMenuOpen = signal(false);\n protected readonly confirmOffOpen = signal(false);\n protected readonly voicePreviewBusy = signal(false);\n protected readonly voicePreviewPlaying = signal(false);\n\n protected readonly online = this.agentOnline.online;\n protected readonly agentLoading = this.agentOnline.loading;\n protected readonly toggling = this.agentOnline.toggling;\n\n protected readonly tabs = computed(() =>\n this.presentation() === 'drawer' ? DRAWER_TABS : PAGE_TABS,\n );\n\n protected readonly sectionMeta = computed(() => {\n const id = this.tab();\n if (id === 'allowed_activities') {\n return {\n title: 'Allowed Activities',\n description: 'Which caller requests the AI receptionist may handle.',\n };\n }\n return SETTINGS_SECTION_META[id as SettingsSection] ?? { title: String(id), description: '' };\n });\n\n protected readonly fieldsForTab = computed((): SettingsFieldMeta[] => {\n const s = this.settings();\n const id = this.tab();\n if (!s || id === 'allowed_activities' || CUSTOM_PANEL_TABS.has(id as SettingsTab)) return [];\n\n const section = s[id as SettingsTab] as Record<string, string | boolean | number>;\n const configured = SETTINGS_FIELDS[id as SettingsSection] ?? [];\n const configuredKeys = new Set(configured.map((f) => f.key));\n\n const extras = Object.keys(section)\n .filter((key) => !HIDDEN_GENERIC_KEYS.has(key) && !configuredKeys.has(key))\n .map((key) => resolveFieldMeta(id as SettingsSection, key, section[key]));\n\n return [...configured, ...extras];\n });\n\n protected readonly welcomeMessage = computed(() =>\n String(this.settings()?.general['welcomeMessage'] ?? ''),\n );\n\n protected readonly welcomePlaceholder = computed(() => {\n const s = this.settings();\n if (!s) return '';\n return buildAutoWelcomeTemplate(\n String(s.general['practiceName'] ?? ''),\n String(s.general['agentName'] ?? ''),\n );\n });\n\n protected readonly welcomePreview = computed(() => {\n const s = this.settings();\n if (!s) return '';\n const raw = resolveWelcomePreview(\n String(s.general['welcomeMessage'] ?? ''),\n String(s.general['practiceName'] ?? ''),\n String(s.general['agentName'] ?? ''),\n );\n return raw\n .replaceAll('{{practiceName}}', String(s.general['practiceName'] || 'our practice'))\n .replaceAll('{{agentName}}', String(s.general['agentName'] || 'your AI receptionist'))\n .replaceAll('{{locationName}}', 'Main location')\n .replaceAll('{{businessHours}}', 'Mon–Fri 8am–5pm');\n });\n\n protected readonly whatToSay = computed(() =>\n String(this.settings()?.knowledge?.['whatToSay'] ?? ''),\n );\n\n protected readonly whatNotToSay = computed(() =>\n String(this.settings()?.knowledge?.['whatNotToSay'] ?? ''),\n );\n\n protected readonly selectedLocationIds = computed(() =>\n parseCsvList(this.settings()?.phone?.['locationIds']),\n );\n\n protected readonly locationSummary = computed(() => {\n const selected = this.selectedLocationIds();\n const all = this.locations();\n if (!all.length) return 'No locations available';\n if (!selected.length) return 'Select locations';\n const names = all.filter((l) => selected.includes(l.id)).map((l) => l.name);\n if (!names.length) return `${selected.length} selected`;\n if (names.length <= 2) return names.join(', ');\n return `${names[0]}, ${names[1]} +${names.length - 2}`;\n });\n\n protected readonly selectedLocations = computed(() => {\n const ids = this.selectedLocationIds();\n return this.locations().filter((l) => ids.includes(l.id));\n });\n\n protected readonly visibleSelectedLocations = computed(() =>\n this.selectedLocations().slice(0, this.locationChipLimit),\n );\n\n protected readonly hiddenLocationCount = computed(() =>\n Math.max(0, this.selectedLocations().length - this.locationChipLimit),\n );\n\n protected readonly selectedTone = computed(() =>\n String(this.settings()?.general?.['tone'] ?? 'professional'),\n );\n\n protected readonly selectedLanguages = computed(() =>\n parseCsvList(this.settings()?.general?.['languages']),\n );\n\n protected readonly visibleLanguages = computed(() =>\n this.selectedLanguages().slice(0, this.languageChipLimit),\n );\n\n protected readonly hiddenLanguageCount = computed(() =>\n Math.max(0, this.selectedLanguages().length - this.languageChipLimit),\n );\n\n protected readonly disclosureEnabled = computed(\n () => this.settings()?.transcripts?.['disclosureWarningEnabled'] !== false,\n );\n\n protected readonly disclosureText = computed(() =>\n String(this.settings()?.transcripts?.['disclosureWarningText'] ?? DEFAULT_DISCLOSURE_WARNING),\n );\n\n protected readonly agentSwitchDisabled = computed(\n () => this.agentLoading() || this.toggling() || this.online() === null,\n );\n\n ngOnInit(): void {\n this.agentOnline.refresh();\n\n if (this.presentation() === 'page') {\n const dataTab = this.route.snapshot.data['settingsTab'] as SettingsTab | undefined;\n const tabParam = this.route.snapshot.queryParamMap.get('tab');\n const navTabs = this.tabs();\n if (dataTab && navTabs.some((t) => t.id === dataTab)) {\n this.tab.set(dataTab);\n } else if (tabParam && navTabs.some((t) => t.id === tabParam)) {\n this.tab.set(tabParam as SettingsTab);\n }\n }\n\n this.api.getSettings().subscribe({\n next: ({ data }) => {\n this.originalSettings = structuredClone(data);\n this.settings.set(structuredClone(data));\n this.loading.set(false);\n },\n error: () => {\n this.loading.set(false);\n this.toast.show('Failed to load agent settings', 'error');\n },\n });\n\n this.api.getLocations().subscribe({\n next: ({ data }) => this.locations.set(data ?? []),\n error: () => this.locations.set([]),\n });\n }\n\n ngOnDestroy(): void {\n this.stopVoicePreview();\n }\n\n protected fieldIsReadOnly(section: SettingsNavTab, key: string): boolean {\n if (section === 'allowed_activities') return true;\n return isFieldReadOnly(section, key);\n }\n\n protected sectionIsReadOnly(section: SettingsNavTab): boolean {\n if (section === 'allowed_activities') return false;\n return READ_ONLY_SECTIONS.has(section);\n }\n\n protected isTabDisabled(id: SettingsNavTab): boolean {\n if (id === 'allowed_activities') return false;\n return DISABLED_SETTINGS_TABS.has(id);\n }\n\n protected setTab(id: SettingsNavTab): void {\n if (this.isTabDisabled(id)) return;\n this.locationsMenuOpen.set(false);\n this.languagesMenuOpen.set(false);\n this.tab.set(id);\n }\n\n /** Restore last loaded/saved settings (used when Cancel/close drawer without saving). */\n discardChanges(): void {\n if (!this.originalSettings) return;\n this.settings.set(structuredClone(this.originalSettings));\n this.locationsMenuOpen.set(false);\n this.languagesMenuOpen.set(false);\n this.stopVoicePreview();\n }\n\n protected updateField(section: SettingsNavTab, key: string, value: string | boolean | number): void {\n if (section === 'allowed_activities') return;\n const current = this.settings();\n if (!current || isFieldReadOnly(section as SettingsSection, key)) return;\n const sectionData = { ...(current[section] as Record<string, string | boolean | number>) };\n sectionData[key] = value;\n this.settings.set({ ...current, [section]: sectionData });\n }\n\n protected updateWelcomeMessage(value: string): void {\n this.updateField('general', 'welcomeMessage', value.slice(0, WELCOME_MESSAGE_MAX));\n }\n\n protected insertGreetingVariable(token: string): void {\n const current = this.welcomeMessage();\n const next = `${current}${current && !/\\s$/.test(current) ? ' ' : ''}${token}`;\n this.updateWelcomeMessage(next);\n }\n\n protected updateKnowledgeField(key: 'whatToSay' | 'whatNotToSay', value: string): void {\n this.updateField('knowledge', key, value.slice(0, KNOWLEDGE_MAX));\n }\n\n protected setTone(tone: string): void {\n this.updateField('general', 'tone', tone);\n }\n\n protected toggleLanguagesMenu(): void {\n this.languagesMenuOpen.update((open) => !open);\n }\n\n protected onLanguagesDocClick(event: MouseEvent): void {\n const target = event.target as HTMLElement | null;\n if (!target?.closest('[data-languages-dd]')) {\n this.languagesMenuOpen.set(false);\n }\n }\n\n protected toggleLanguage(lang: string): void {\n const current = this.selectedLanguages();\n const next = current.includes(lang) ? current.filter((x) => x !== lang) : [...current, lang];\n this.updateField('general', 'languages', toCsvList(next));\n }\n\n protected removeLanguage(lang: string, event: MouseEvent): void {\n event.stopPropagation();\n this.toggleLanguage(lang);\n }\n\n protected toggleLocationsMenu(): void {\n if (!this.locations().length) return;\n this.locationsMenuOpen.update((open) => !open);\n }\n\n protected onLocationsDocClick(event: MouseEvent): void {\n const target = event.target as HTMLElement | null;\n if (!target?.closest('[data-locations-dd]')) {\n this.locationsMenuOpen.set(false);\n }\n }\n\n protected toggleLocation(id: string): void {\n const current = this.selectedLocationIds();\n const next = current.includes(id) ? current.filter((x) => x !== id) : [...current, id];\n this.updateField('phone', 'locationIds', toCsvList(next));\n }\n\n protected selectNumberField(\n section: 'phone' | 'transcripts',\n key: string,\n value: string,\n ): void {\n this.updateField(section, key, Number(value));\n }\n\n protected numberFieldAsString(section: 'phone' | 'transcripts', key: string): string {\n return String(this.fieldValue(section, key) ?? '');\n }\n\n protected setDisclosureEnabled(enabled: boolean): void {\n this.updateField('transcripts', 'disclosureWarningEnabled', enabled);\n if (enabled && !String(this.settings()?.transcripts?.['disclosureWarningText'] ?? '').trim()) {\n this.updateField('transcripts', 'disclosureWarningText', DEFAULT_DISCLOSURE_WARNING);\n }\n }\n\n protected updateDisclosureText(value: string): void {\n this.updateField('transcripts', 'disclosureWarningText', value.slice(0, DISCLOSURE_MAX));\n }\n\n protected openTestCall(): void {\n const whatToSay = this.whatToSay().trim();\n const whatNotToSay = this.whatNotToSay().trim();\n if (!whatToSay || !whatNotToSay) {\n this.toast.show(\n 'Fill in both “What to say” and “What not to say” before testing.',\n 'error',\n );\n return;\n }\n this.knowledgeTestOpen.set(true);\n }\n\n protected closeTestCall(): void {\n this.knowledgeTestOpen.set(false);\n }\n\n protected readonly selectedVoiceId = computed(() =>\n String(this.settings()?.general?.['ttsVoiceId'] ?? '').trim(),\n );\n\n protected onVoiceChange(voiceId: string): void {\n this.stopVoicePreview();\n this.updateField('general', 'ttsVoiceId', voiceId);\n }\n\n protected toggleVoicePreview(): void {\n if (this.voicePreviewPlaying()) {\n this.stopVoicePreview();\n return;\n }\n const voiceId = this.selectedVoiceId();\n if (!voiceId || this.voicePreviewBusy()) return;\n\n this.voicePreviewBusy.set(true);\n this.api.previewVoice(voiceId).subscribe({\n next: (blob) => {\n this.voicePreviewBusy.set(false);\n this.playVoiceBlob(blob);\n },\n error: (err: { message?: string }) => {\n this.voicePreviewBusy.set(false);\n this.toast.show(err.message ?? 'Failed to preview voice.', 'error');\n },\n });\n }\n\n private playVoiceBlob(blob: Blob): void {\n this.stopVoicePreview();\n this.voiceObjectUrl = URL.createObjectURL(blob);\n const audio = new Audio(this.voiceObjectUrl);\n this.voiceAudio = audio;\n this.voicePreviewPlaying.set(true);\n audio.onended = () => this.stopVoicePreview();\n audio.onerror = () => {\n this.stopVoicePreview();\n this.toast.show('Failed to play voice preview.', 'error');\n };\n void audio.play().catch(() => {\n this.stopVoicePreview();\n this.toast.show('Failed to play voice preview.', 'error');\n });\n }\n\n private stopVoicePreview(): void {\n if (this.voiceAudio) {\n this.voiceAudio.pause();\n this.voiceAudio.onended = null;\n this.voiceAudio.onerror = null;\n this.voiceAudio = null;\n }\n if (this.voiceObjectUrl) {\n URL.revokeObjectURL(this.voiceObjectUrl);\n this.voiceObjectUrl = null;\n }\n this.voicePreviewPlaying.set(false);\n }\n\n protected onAgentToggleClick(): void {\n if (this.agentSwitchDisabled()) return;\n if (this.online()) {\n this.confirmOffOpen.set(true);\n return;\n }\n this.applyOnline(true);\n }\n\n protected cancelConfirmOff(): void {\n this.confirmOffOpen.set(false);\n }\n\n protected confirmTurnOff(): void {\n this.confirmOffOpen.set(false);\n this.applyOnline(false);\n }\n\n private applyOnline(enabled: boolean): void {\n this.agentOnline.setOnline(enabled).subscribe({\n next: () => {\n this.toast.show(\n enabled\n ? 'AI receptionist is online — it will answer inbound calls.'\n : 'AI receptionist is offline — calls go to the front desk.',\n 'success',\n );\n },\n error: (err: { message?: string }) => {\n this.toast.show(err.message ?? 'Failed to update agent status.', 'error');\n this.agentOnline.refresh();\n },\n });\n }\n\n protected fieldValue(section: SettingsNavTab, key: string): string | boolean | number {\n if (section === 'allowed_activities') return '';\n const s = this.settings();\n if (!s) return '';\n return (s[section] as Record<string, string | boolean | number>)[key];\n }\n\n save(): void {\n const s = this.settings();\n const orig = this.originalSettings;\n if (!s || !orig || this.saving()) return;\n\n const payload = structuredClone(s);\n payload.general['welcomeMessage'] = String(payload.general['welcomeMessage'] ?? '').trim();\n payload.general['agentName'] = String(payload.general['agentName'] ?? '').trim();\n\n if (!String(payload.general['agentName'] ?? '').trim()) {\n this.tab.set('general');\n this.toast.show('Agent name is required.', 'error');\n return;\n }\n if (!String(payload.general['welcomeMessage'] ?? '').trim()) {\n this.tab.set('general');\n this.toast.show('Inbound greeting is required.', 'error');\n return;\n }\n if (!parseCsvList(payload.general['languages']).length) {\n this.tab.set('general');\n this.toast.show('Select at least one language.', 'error');\n return;\n }\n\n const whatToSay = String(payload.knowledge?.['whatToSay'] ?? '').trim();\n const whatNotToSay = String(payload.knowledge?.['whatNotToSay'] ?? '').trim();\n if (!whatToSay || !whatNotToSay) {\n this.tab.set('knowledge');\n this.toast.show('Knowledge Base requires both “What to say” and “What not to say”.', 'error');\n return;\n }\n payload.knowledge = { whatToSay, whatNotToSay };\n\n // Keep legacy retainDays in sync for older BE consumers.\n const recDays = Number(payload.transcripts['recordingRetainDays'] ?? 30);\n const txDays = Number(payload.transcripts['transcriptRetainDays'] ?? 30);\n payload.transcripts['retainDays'] = Math.max(recDays, txDays);\n\n this.restoreReadOnlyFields(payload, orig);\n\n this.saving.set(true);\n this.api.putSettings(payload).subscribe({\n next: ({ data }) => {\n this.originalSettings = structuredClone(data);\n this.settings.set(structuredClone(data));\n this.saving.set(false);\n this.saved.set(true);\n this.toast.show('Agent settings saved', 'success');\n setTimeout(() => this.saved.set(false), 2000);\n this.savedSuccessfully.emit();\n },\n error: (err: unknown) => {\n this.saving.set(false);\n const message =\n err instanceof Error && err.message.trim()\n ? err.message\n : 'Failed to save agent settings';\n this.toast.show(message, 'error');\n },\n });\n }\n\n private restoreReadOnlyFields(payload: AgentSettings, orig: AgentSettings): void {\n const editableSections: SettingsSection[] = [\n 'general',\n 'phone',\n 'tasks',\n 'scheduling',\n 'refill',\n 'verify',\n 'escalation',\n 'outbound',\n 'knowledge',\n 'transcripts',\n 'advanced',\n ];\n\n for (const sectionKey of editableSections) {\n if (READ_ONLY_SECTIONS.has(sectionKey)) {\n payload[sectionKey] = structuredClone(orig[sectionKey]);\n continue;\n }\n\n const payloadSection = payload[sectionKey] as Record<string, string | boolean | number>;\n const origSection = orig[sectionKey] as Record<string, string | boolean | number>;\n for (const key of Object.keys(payloadSection)) {\n if (isFieldReadOnly(sectionKey, key)) {\n payloadSection[key] = origSection[key];\n }\n }\n }\n }\n}\n","<div\n [class.p-base]=\"presentation() === 'page'\"\n [class.bg-lighter]=\"presentation() === 'page'\"\n [class.min-h-full]=\"presentation() === 'page'\"\n [class.h-full]=\"presentation() === 'page'\"\n [class.min-h-0]=\"presentation() === 'page'\"\n [class.overflow-auto]=\"presentation() === 'page'\"\n [class.flex]=\"presentation() === 'drawer'\"\n [class.h-full]=\"presentation() === 'drawer'\"\n [class.min-h-0]=\"presentation() === 'drawer'\"\n [class.flex-col]=\"presentation() === 'drawer'\"\n>\n @if (presentation() === 'page') {\n <header class=\"mb-6 flex items-start justify-between gap-4\">\n <div>\n <h4>Agent settings</h4>\n <p class=\"mt-2 text-base leading-normal text-zinc-500\">Configure AI receptionist behavior and safety</p>\n </div>\n <div class=\"flex shrink-0 items-center gap-3\">\n @if (saved()) {\n <span class=\"text-sm font-medium text-green-500\">Saved</span>\n }\n <ed-button variant=\"primary\" fill size=\"sm\" [disabled]=\"saving()\" (click$)=\"save()\">\n <ed-icon slot=\"prefix\" name=\"save\" [size]=\"16\" />\n {{ saving() ? 'Saving…' : 'Save changes' }}\n </ed-button>\n </div>\n </header>\n }\n\n @if (loading()) {\n @if (presentation() === 'drawer') {\n <div class=\"flex min-h-0 flex-1\" aria-busy=\"true\">\n <nav class=\"w-[220px] h-full shrink-0 overflow-y-auto p-base bg-lighter-2\" aria-label=\"Settings sections\">\n <ul role=\"presentation\">\n @for (_ of navSkeletonRows; track _) {\n <li class=\"mb-1\">\n <ed-skeleton class=\"h-8 w-full !rounded-md\"></ed-skeleton>\n </li>\n }\n </ul>\n </nav>\n <article class=\"flex min-h-0 min-w-0 flex-1 flex-col gap-md overflow-y-auto bg-white p-base\">\n <header class=\"grid gap-2xs\">\n <ed-skeleton class=\"h-5 w-40\"></ed-skeleton>\n <ed-skeleton class=\"h-3 w-72\"></ed-skeleton>\n </header>\n @for (_ of fieldSkeletonRows; track _) {\n <div class=\"grid gap-2xs\">\n <ed-skeleton class=\"h-3 w-24\"></ed-skeleton>\n <ed-skeleton class=\"h-10 w-full !rounded-md\"></ed-skeleton>\n </div>\n }\n </article>\n </div>\n } @else {\n <div\n class=\"grid grid-cols-[240px_minmax(0,1fr)] max-[960px]:grid-cols-1 items-start gap-5\"\n aria-busy=\"true\"\n >\n <nav class=\"flex flex-col gap-1 rounded-lg border border-base bg-white p-2 shadow-sm\" aria-label=\"Settings sections\">\n @for (_ of navSkeletonRows; track _) {\n <ed-skeleton class=\"h-10 w-full !rounded-md\"></ed-skeleton>\n }\n </nav>\n <article class=\"flex min-h-96 flex-col gap-md overflow-hidden rounded-lg border border-light bg-white p-base\">\n <header class=\"grid gap-2xs\">\n <ed-skeleton class=\"h-5 w-40\"></ed-skeleton>\n <ed-skeleton class=\"h-3 w-72\"></ed-skeleton>\n </header>\n @for (_ of fieldSkeletonRows; track _) {\n <div class=\"grid gap-2xs\">\n <ed-skeleton class=\"h-3 w-24\"></ed-skeleton>\n <ed-skeleton class=\"h-10 w-full !rounded-md\"></ed-skeleton>\n </div>\n }\n </article>\n </div>\n }\n } @else if (settings()) {\n @if (presentation() === 'drawer') {\n <div class=\"flex min-h-0 flex-1\">\n <nav class=\"w-[220px] h-full shrink-0 overflow-y-auto p-base bg-lighter-2\" aria-label=\"Settings sections\">\n <ul role=\"tablist\" aria-label=\"Settings sections\">\n @for (t of tabs(); track t.id) {\n <li\n role=\"presentation\"\n [class.cursor-pointer]=\"!isTabDisabled(t.id)\"\n [class.cursor-not-allowed]=\"isTabDisabled(t.id)\"\n >\n <div\n class=\"kpi-menu\"\n role=\"tab\"\n [attr.id]=\"'agent-settings-tab-' + t.id\"\n [attr.aria-selected]=\"tab() === t.id\"\n [attr.aria-disabled]=\"isTabDisabled(t.id)\"\n [attr.tabindex]=\"tab() === t.id ? 0 : -1\"\n [attr.title]=\"isTabDisabled(t.id) ? 'This section is currently disabled' : null\"\n [class.kpi-menu-active]=\"tab() === t.id\"\n [class.opacity-45]=\"isTabDisabled(t.id)\"\n (click)=\"setTab(t.id)\"\n (keydown.enter)=\"setTab(t.id)\"\n (keydown.space)=\"$event.preventDefault(); setTab(t.id)\"\n >\n <div class=\"flex items-center gap-xs w-full\">\n <span class=\"whitespace-nowrap flex-1 truncate\">{{ t.label }}</span>\n @if (isTabDisabled(t.id)) {\n <span class=\"shrink-0 fs-2xs font-medium uppercase tracking-wide text-lighter\">Off</span>\n }\n </div>\n </div>\n </li>\n }\n </ul>\n </nav>\n\n <article class=\"flex min-h-0 min-w-0 flex-1 flex-col gap-md overflow-y-auto bg-white p-base\">\n <header class=\"flex shrink-0 items-start justify-between gap-base\">\n <div class=\"min-w-0\">\n <h5 class=\"m-0\">{{ sectionMeta().title }}</h5>\n @if (tab() !== 'knowledge' && tab() !== 'general' && tab() !== 'phone' && tab() !== 'transcripts') {\n <p class=\"m-0 mt-2xs max-w-2xl fs-sm text-light\">{{ sectionMeta().description }}</p>\n }\n </div>\n @if (tab() === 'knowledge') {\n <ed-button variant=\"secondary\" outline size=\"sm\" (click$)=\"openTestCall()\">\n <ed-icon slot=\"prefix\" name=\"phone_call\" [size]=\"16\" />\n Test Call\n </ed-button>\n }\n </header>\n\n @if (sectionIsReadOnly(tab())) {\n <p class=\"flex items-center gap-sm rounded-md border border-light bg-lighter px-base py-sm fs-sm text-light\">\n <ed-icon name=\"lock\" [size]=\"18\" />\n These settings are managed by Edvak. Contact support to request changes.\n </p>\n }\n\n <ng-container [ngTemplateOutlet]=\"settingsPanels\" />\n </article>\n </div>\n } @else {\n <div class=\"grid grid-cols-[240px_minmax(0,1fr)] max-[960px]:grid-cols-1 items-start gap-5\">\n <nav\n class=\"sticky top-4 flex max-h-[calc(100vh-120px)] max-[960px]:static max-[960px]:max-h-none max-[960px]:flex-row max-[960px]:flex-wrap flex-col gap-1 overflow-y-auto rounded-lg border border-base bg-white p-2 shadow-sm\"\n aria-label=\"Settings sections\"\n >\n @for (t of tabs(); track t.id) {\n <button\n type=\"button\"\n class=\"flex w-full max-[960px]:w-auto max-[960px]:flex-1 cursor-pointer items-center justify-between gap-3 rounded-md border-none bg-transparent px-4 py-3 text-left text-sm font-medium leading-snug text-zinc-600 hover:bg-lighter hover:text-dark disabled:cursor-not-allowed disabled:opacity-45 disabled:text-zinc-500 disabled:hover:bg-transparent disabled:hover:text-zinc-500\"\n [class.bg-primary-50]=\"tab() === t.id\"\n [class.text-primary]=\"tab() === t.id\"\n [disabled]=\"isTabDisabled(t.id)\"\n [attr.title]=\"isTabDisabled(t.id) ? 'This section is currently disabled' : null\"\n (click)=\"setTab(t.id)\"\n >\n {{ t.label }}\n @if (isTabDisabled(t.id)) {\n <span class=\"ml-auto text-xs font-medium uppercase tracking-wide text-zinc-400\">Disabled</span>\n }\n </button>\n }\n </nav>\n\n <article class=\"flex min-h-96 flex-col gap-md overflow-hidden rounded-lg border border-light bg-white p-base\">\n <header class=\"flex items-start justify-between gap-base\">\n <div class=\"min-w-0\">\n <h5 class=\"m-0\">{{ sectionMeta().title }}</h5>\n @if (tab() !== 'knowledge' && tab() !== 'general' && tab() !== 'phone' && tab() !== 'transcripts') {\n <p class=\"m-0 mt-2xs max-w-2xl fs-sm text-light\">{{ sectionMeta().description }}</p>\n }\n </div>\n @if (tab() === 'knowledge') {\n <ed-button variant=\"secondary\" outline size=\"sm\" (click$)=\"openTestCall()\">\n <ed-icon slot=\"prefix\" name=\"phone_call\" [size]=\"16\" />\n Test Call\n </ed-button>\n }\n </header>\n\n @if (sectionIsReadOnly(tab())) {\n <p class=\"flex items-center gap-sm rounded-md border border-light bg-lighter px-base py-sm fs-sm text-light\">\n <ed-icon name=\"lock\" [size]=\"18\" />\n These settings are managed by Edvak. Contact support to request changes.\n </p>\n }\n\n <ng-container [ngTemplateOutlet]=\"settingsPanels\" />\n </article>\n </div>\n }\n }\n</div>\n\n<ng-template #settingsPanels>\n @if (tab() === 'allowed_activities') {\n <div class=\"flex w-full max-w-3xl flex-col gap-md\">\n <div class=\"mb-sm\">\n <label>Schedule appointments</label>\n <p class=\"m-0 fs-sm text-light\">Allow the AI to book, reschedule, and cancel visits.</p>\n </div>\n <div class=\"mb-sm\">\n <label>Answer FAQs</label>\n <p class=\"m-0 fs-sm text-light\">Share practice hours, location, and general information.</p>\n </div>\n <div class=\"mb-sm\">\n <label>Create follow-up tasks</label>\n <p class=\"m-0 fs-sm text-light\">Open staff tasks when a request needs human follow-up.</p>\n </div>\n <p class=\"m-0 fs-sm text-light\">Activity permissions are managed by Edvak. Contact support to change them.</p>\n </div>\n } @else if (tab() === 'knowledge') {\n <div class=\"flex w-full max-w-4xl flex-col gap-md\">\n <div class=\"flex flex-col gap-xs\">\n <label>What to say<span required>*</span></label>\n <textarea\n class=\"form-textarea h-40\"\n rows=\"8\"\n [maxlength]=\"knowledgeMax\"\n [ngModel]=\"whatToSay()\"\n (ngModelChange)=\"updateKnowledgeField('whatToSay', $event)\"\n placeholder=\"Hours, parking, payment options, arrival instructions, emergencies…\"\n autocomplete=\"off\"\n ></textarea>\n <span class=\"block text-right fs-xs text-light\">{{ whatToSay().length }}/{{ knowledgeMax }}</span>\n </div>\n\n <div class=\"flex flex-col gap-xs\">\n <label>What not to say<span required>*</span></label>\n <textarea\n class=\"form-textarea h-40\"\n rows=\"8\"\n [maxlength]=\"knowledgeMax\"\n [ngModel]=\"whatNotToSay()\"\n (ngModelChange)=\"updateKnowledgeField('whatNotToSay', $event)\"\n placeholder=\"Clinical advice, unverified prices, PHI, promises the practice cannot keep…\"\n autocomplete=\"off\"\n ></textarea>\n <span class=\"block text-right fs-xs text-light\">{{ whatNotToSay().length }}/{{ knowledgeMax }}</span>\n </div>\n </div>\n } @else if (tab() === 'general') {\n <div class=\"flex w-full max-w-3xl flex-col gap-md\">\n <div class=\"flex flex-col gap-xs\">\n <label>\n Name<span required>*</span>\n </label>\n <input\n class=\"form-input is-sm\"\n type=\"text\"\n [ngModel]=\"fieldValue('general', 'agentName')\"\n (ngModelChange)=\"updateField('general', 'agentName', $event)\"\n autocomplete=\"off\"\n />\n </div>\n\n <div class=\"flex items-end gap-sm\">\n <div class=\"flex min-w-0 flex-1 flex-col gap-xs\">\n <label>Voice<span required>*</span></label>\n <select\n class=\"form-select is-sm\"\n [ngModel]=\"fieldValue('general', 'ttsVoiceId')\"\n (ngModelChange)=\"onVoiceChange($event)\"\n autocomplete=\"off\"\n >\n @for (v of voicePresets; track v.id) {\n <option [ngValue]=\"v.id\">{{ v.label }} - {{ v.gender === 'F' ? 'Female' : 'Male' }}</option>\n }\n </select>\n </div>\n <ed-icon-button\n class=\"shrink-0\"\n size=\"base\"\n variant=\"primary\"\n subtle\n [name]=\"voicePreviewPlaying() ? 'stop_circle' : 'play_arrow'\"\n [label]=\"voicePreviewPlaying() ? 'Stop voice preview' : 'Play voice preview'\"\n [title]=\"voicePreviewPlaying() ? 'Stop preview' : 'Play sample'\"\n [disabled]=\"!selectedVoiceId() || voicePreviewBusy()\"\n [loading]=\"voicePreviewBusy()\"\n (click$)=\"toggleVoicePreview()\"\n />\n </div>\n\n <div class=\"flex flex-col gap-xs\">\n <label>Language<span required>*</span></label>\n <div class=\"relative\" data-languages-dd (document:click)=\"onLanguagesDocClick($event)\">\n <div\n class=\"form-input flex h-auto w-full cursor-pointer items-center justify-between gap-xs py-2xs text-left\"\n role=\"combobox\"\n tabindex=\"0\"\n [attr.aria-expanded]=\"languagesMenuOpen()\"\n aria-haspopup=\"listbox\"\n aria-label=\"Languages\"\n (click)=\"$event.stopPropagation(); toggleLanguagesMenu()\"\n (keydown.enter)=\"$event.preventDefault(); toggleLanguagesMenu()\"\n (keydown.space)=\"$event.preventDefault(); toggleLanguagesMenu()\"\n >\n <span class=\"flex min-w-0 flex-1 flex-wrap items-center gap-2xs overflow-hidden\">\n @if (selectedLanguages().length === 0) {\n <span class=\"fs-sm text-light\">Select languages</span>\n } @else {\n @for (lang of visibleLanguages(); track lang) {\n <span\n class=\"inline-flex h-5 items-center gap-2xs rounded bg-primary-50 px-2xs text-primary\"\n >\n <span class=\"fs-xs font-medium\">{{ lang }}</span>\n <button\n type=\"button\"\n class=\"inline-flex h-3 w-3 shrink-0 cursor-pointer items-center justify-center border-none bg-transparent p-0 text-primary\"\n [attr.aria-label]=\"'Remove ' + lang\"\n (click)=\"removeLanguage(lang, $event)\"\n >\n <ed-icon name=\"close\" [size]=\"12\" color=\"currentColor\" />\n </button>\n </span>\n }\n @if (hiddenLanguageCount() > 0) {\n <span class=\"inline-flex h-5 items-center rounded bg-primary-50 px-2xs fs-xs font-medium text-primary\">\n +{{ hiddenLanguageCount() }}\n </span>\n }\n }\n </span>\n <ed-icon name=\"expand_more\" [size]=\"16\" class=\"shrink-0 text-light\" />\n </div>\n @if (languagesMenuOpen()) {\n <ul\n class=\"absolute z-20 m-0 mt-2xs max-h-56 w-full list-none overflow-auto rounded-md border border-light bg-white p-2xs shadow-md\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n >\n @for (opt of languageOptions; track opt.value) {\n <li role=\"option\" [attr.aria-selected]=\"selectedLanguages().includes(opt.value)\">\n <label class=\"flex cursor-pointer items-center gap-xs rounded px-xs py-2xs fs-sm text-dark hover:bg-lighter\">\n <input\n type=\"checkbox\"\n class=\"h-4 w-4 accent-blue-600\"\n [checked]=\"selectedLanguages().includes(opt.value)\"\n (change)=\"toggleLanguage(opt.value)\"\n />\n <span class=\"min-w-0 truncate\">{{ opt.label }}</span>\n </label>\n </li>\n }\n </ul>\n }\n </div>\n </div>\n\n <div class=\"flex flex-col gap-xs\">\n <label>Tone</label>\n <div class=\"flex flex-wrap gap-xs\" role=\"radiogroup\" aria-label=\"Tone\">\n @for (tone of toneOptions; track tone.value) {\n <button\n type=\"button\"\n class=\"cursor-pointer rounded-full border border-transparent bg-lighter px-sm py-2xs fs-xs font-medium text-body\"\n [class.bg-primary-50]=\"selectedTone() === tone.value\"\n [class.border-primary]=\"selectedTone() === tone.value\"\n [class.text-primary]=\"selectedTone() === tone.value\"\n [class.font-semibold]=\"selectedTone() === tone.value\"\n [attr.aria-checked]=\"selectedTone() === tone.value\"\n role=\"radio\"\n (click)=\"setTone(tone.value)\"\n >\n {{ tone.label }}\n </button>\n }\n </div>\n </div>\n\n <div class=\"flex flex-col gap-xs\">\n <label>Inbound Greetings<span required>*</span></label>\n <textarea\n class=\"form-textarea min-h-24\"\n rows=\"4\"\n [maxlength]=\"welcomeMax\"\n [placeholder]=\"welcomePlaceholder()\"\n [ngModel]=\"welcomeMessage()\"\n (ngModelChange)=\"updateWelcomeMessage($event)\"\n autocomplete=\"off\"\n ></textarea>\n <div class=\"flex flex-wrap items-center gap-xs\">\n <span class=\"fs-xs font-medium text-dark\">Variables:</span>\n @for (v of greetingVariables; track v.key) {\n <button\n type=\"button\"\n class=\"inline-flex h-5 cursor-pointer items-center rounded border border-base bg-white px-2xs fs-xs font-medium text-dark hover:border-primary hover:text-primary\"\n (click)=\"insertGreetingVariable(v.token)\"\n [title]=\"'Insert ' + v.token\"\n >\n {{ v.label }}\n </button>\n }\n </div>\n </div>\n </div>\n } @else if (tab() === 'phone') {\n <div class=\"flex w-full max-w-3xl flex-col gap-md\">\n <div class=\"flex flex-col gap-xs\">\n <div class=\"flex items-center justify-between gap-xs\">\n <label class=\"m-0\">AI Answer Mode<span required>*</span></label>\n <ed-icon name=\"info\" [size]=\"16\" class=\"text-light\" title=\"When the AI picks up inbound calls\" />\n </div>\n <select\n class=\"form-select is-sm\"\n [ngModel]=\"fieldValue('phone', 'answerMode')\"\n (ngModelChange)=\"updateField('phone', 'answerMode', $event)\"\n autocomplete=\"off\"\n >\n @for (opt of answerModeOptions; track opt.value) {\n <option [ngValue]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n </div>\n\n <div class=\"flex flex-col gap-xs\">\n <label>AI Phone Number<span required>*</span></label>\n <input\n class=\"form-input is-sm\"\n type=\"text\"\n [disabled]=\"isFieldReadOnly('phone', 'mainNumber')\"\n [ngModel]=\"fieldValue('phone', 'mainNumber')\"\n (ngModelChange)=\"updateField('phone', 'mainNumber', $event)\"\n autocomplete=\"off\"\n />\n </div>\n\n <div class=\"flex flex-col gap-xs\">\n <label>Transfer Number<span required>*</span></label>\n <input\n class=\"form-input is-sm\"\n type=\"text\"\n [disabled]=\"isFieldReadOnly('phone', 'transferNumber')\"\n [ngModel]=\"fieldValue('phone', 'transferNumber')\"\n (ngModelChange)=\"updateField('phone', 'transferNumber', $event)\"\n autocomplete=\"off\"\n />\n </div>\n\n <div class=\"flex flex-col gap-xs\">\n <label>Ringing Time Wait<span required>*</span></label>\n <select\n class=\"form-select is-sm\"\n [ngModel]=\"numberFieldAsString('phone', 'ringTimeout')\"\n (ngModelChange)=\"selectNumberField('phone', 'ringTimeout', $event)\"\n autocomplete=\"off\"\n >\n @for (opt of ringTimeoutOptions; track opt.value) {\n <option [value]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n </div>\n\n <div class=\"flex items-center gap-sm rounded-md border border-base bg-white p-sm\">\n <ed-icon name=\"event_available\" [size]=\"20\" class=\"shrink-0 text-primary\" />\n <div class=\"flex min-w-0 flex-1 flex-col gap-2xs\">\n <span class=\"fs-sm text-dark\">Create Follow-up Task</span>\n <span class=\"fs-xs text-light\">\n If no one answers in time, the agent auto-creates a high priority task.\n </span>\n </div>\n <button\n type=\"button\"\n class=\"inline-flex h-4 w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent p-2xs transition-colors disabled:cursor-not-allowed disabled:opacity-55\"\n [class.bg-primary-50]=\"!!fieldValue('phone', 'createFollowUpTask')\"\n [class.border-primary-200]=\"!!fieldValue('phone', 'createFollowUpTask')\"\n [class.justify-end]=\"!!fieldValue('phone', 'createFollowUpTask')\"\n [class.bg-lighter]=\"!fieldValue('phone', 'createFollowUpTask')\"\n [class.justify-start]=\"!fieldValue('phone', 'createFollowUpTask')\"\n [attr.aria-pressed]=\"!!fieldValue('phone', 'createFollowUpTask')\"\n (click)=\"updateField('phone', 'createFollowUpTask', !fieldValue('phone', 'createFollowUpTask'))\"\n >\n <span\n class=\"block h-3 w-3 rounded-full transition-colors\"\n [class.bg-primary]=\"!!fieldValue('phone', 'createFollowUpTask')\"\n [class.bg-white]=\"!fieldValue('phone', 'createFollowUpTask')\"\n ></span>\n </button>\n </div>\n\n <div class=\"flex flex-col gap-xs\">\n <label>Location Handled<span required>*</span></label>\n <div class=\"relative\" data-locations-dd (document:click)=\"onLocationsDocClick($event)\">\n <div\n class=\"form-input flex h-auto w-full cursor-pointer items-center justify-between gap-xs py-2xs text-left\"\n role=\"combobox\"\n tabindex=\"0\"\n [class.opacity-55]=\"locations().length === 0\"\n [attr.aria-expanded]=\"locationsMenuOpen()\"\n [attr.aria-disabled]=\"locations().length === 0\"\n aria-haspopup=\"listbox\"\n aria-label=\"Locations handled\"\n (click)=\"$event.stopPropagation(); locations().length && toggleLocationsMenu()\"\n (keydown.enter)=\"$event.preventDefault(); locations().length && toggleLocationsMenu()\"\n (keydown.space)=\"$event.preventDefault(); locations().length && toggleLocationsMenu()\"\n >\n <span class=\"flex min-w-0 flex-1 flex-wrap items-center gap-2xs overflow-hidden\">\n @if (locations().length === 0) {\n <span class=\"fs-sm text-light\">No locations available</span>\n } @else if (selectedLocations().length === 0) {\n <span class=\"fs-sm text-light\">Select locations</span>\n } @else {\n @for (loc of visibleSelectedLocations(); track loc.id) {\n <span class=\"inline-flex h-5 items-center gap-2xs rounded bg-primary-50 px-2xs text-primary\">\n <span class=\"fs-xs font-medium\">{{ loc.name }}</span>\n <button\n type=\"button\"\n class=\"inline-flex h-3 w-3 shrink-0 cursor-pointer items-center justify-center border-none bg-transparent p-0 text-primary\"\n [attr.aria-label]=\"'Remove ' + loc.name\"\n (click)=\"$event.stopPropagation(); toggleLocation(loc.id)\"\n >\n <ed-icon name=\"close\" [size]=\"12\" color=\"currentColor\" />\n </button>\n </span>\n }\n @if (hiddenLocationCount() > 0) {\n <span class=\"inline-flex h-5 items-center rounded bg-primary-50 px-2xs fs-xs font-medium text-primary\">\n +{{ hiddenLocationCount() }}\n </span>\n }\n }\n </span>\n <ed-icon name=\"expand_more\" [size]=\"16\" class=\"shrink-0 text-light\" />\n </div>\n @if (locationsMenuOpen()) {\n <ul\n class=\"absolute z-20 m-0 mt-2xs max-h-56 w-full list-none overflow-auto rounded-md border border-light bg-white p-2xs shadow-md\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n >\n @for (loc of locations(); track loc.id) {\n <li role=\"option\" [attr.aria-selected]=\"selectedLocationIds().includes(loc.id)\">\n <label class=\"flex cursor-pointer items-center gap-xs rounded px-xs py-2xs fs-sm text-dark hover:bg-lighter\">\n <input\n type=\"checkbox\"\n class=\"h-4 w-4 accent-blue-600\"\n [checked]=\"selectedLocationIds().includes(loc.id)\"\n (change)=\"toggleLocation(loc.id)\"\n />\n <span class=\"min-w-0 truncate\">{{ loc.name }}</span>\n </label>\n </li>\n }\n </ul>\n }\n </div>\n @if (locations().length === 0) {\n <p class=\"m-0 fs-sm text-light\">No locations available.</p>\n }\n </div>\n\n <div class=\"flex flex-col gap-xs\">\n <label>Max AI Call Duration<span required>*</span></label>\n <select\n class=\"form-select is-sm\"\n [ngModel]=\"numberFieldAsString('phone', 'maxCallDurationMin')\"\n (ngModelChange)=\"selectNumberField('phone', 'maxCallDurationMin', $event)\"\n autocomplete=\"off\"\n >\n @for (opt of maxCallDurationOptions; track opt.value) {\n <option [value]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n </div>\n\n <div class=\"flex flex-col gap-xs\">\n <label>Silence Timeout<span required>*</span></label>\n <select\n class=\"form-select is-sm\"\n [ngModel]=\"numberFieldAsString('phone', 'silenceTimeoutSec')\"\n (ngModelChange)=\"selectNumberField('phone', 'silenceTimeoutSec', $event)\"\n autocomplete=\"off\"\n >\n @for (opt of silenceTimeoutOptions; track opt.value) {\n <option [value]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n </div>\n\n <div class=\"flex flex-col gap-xs\">\n <label>After-Hours Behaviour<span required>*</span></label>\n <select\n class=\"form-select is-sm\"\n [ngModel]=\"fieldValue('phone', 'afterHoursBehavior')\"\n (ngModelChange)=\"updateField('phone', 'afterHoursBehavior', $event)\"\n autocomplete=\"off\"\n >\n @for (opt of afterHoursOptions; track opt.value) {\n <option [ngValue]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n </div>\n\n <div class=\"flex flex-col gap-md border-t border-light pt-md\">\n <div class=\"flex flex-col gap-xs\">\n <label>Minimum lead time (hours)</label>\n <input\n class=\"form-input is-sm\"\n type=\"number\"\n min=\"0\"\n [ngModel]=\"fieldValue('scheduling', 'leadTimeHours')\"\n (ngModelChange)=\"updateField('scheduling', 'leadTimeHours', +$event)\"\n autocomplete=\"off\"\n />\n <span class=\"fs-xs text-light\">Earliest bookable slot from now.</span>\n </div>\n\n <div class=\"flex items-center gap-sm rounded-md border border-base bg-white p-sm\">\n <ed-icon name=\"today\" [size]=\"20\" class=\"shrink-0 text-primary\" />\n <div class=\"flex min-w-0 flex-1 flex-col gap-2xs\">\n <span class=\"fs-sm text-dark\">Allow same-day booking</span>\n <span class=\"fs-xs text-light\">\n Let patients book appointments later today.\n </span>\n </div>\n <button\n type=\"button\"\n class=\"inline-flex h-4 w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent p-2xs transition-colors disabled:cursor-not-allowed disabled:opacity-55\"\n [class.bg-primary-50]=\"!!fieldValue('scheduling', 'allowSameDay')\"\n [class.border-primary-200]=\"!!fieldValue('scheduling', 'allowSameDay')\"\n [class.justify-end]=\"!!fieldValue('scheduling', 'allowSameDay')\"\n [class.bg-lighter]=\"!fieldValue('scheduling', 'allowSameDay')\"\n [class.justify-start]=\"!fieldValue('scheduling', 'allowSameDay')\"\n [attr.aria-pressed]=\"!!fieldValue('scheduling', 'allowSameDay')\"\n (click)=\"updateField('scheduling', 'allowSameDay', !fieldValue('scheduling', 'allowSameDay'))\"\n >\n <span\n class=\"block h-3 w-3 rounded-full transition-colors\"\n [class.bg-primary]=\"!!fieldValue('scheduling', 'allowSameDay')\"\n [class.bg-white]=\"!fieldValue('scheduling', 'allowSameDay')\"\n ></span>\n </button>\n </div>\n </div>\n </div>\n } @else if (tab() === 'transcripts') {\n <div class=\"flex w-full max-w-3xl flex-col gap-md\">\n <div class=\"flex flex-col gap-xs\">\n <label>Keep Call Recordings<span required>*</span></label>\n <select\n class=\"form-select is-sm\"\n [ngModel]=\"numberFieldAsString('transcripts', 'recordingRetainDays')\"\n (ngModelChange)=\"selectNumberField('transcripts', 'recordingRetainDays', $event)\"\n autocomplete=\"off\"\n >\n @for (opt of retentionOptions; track opt.value) {\n <option [value]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n </div>\n\n <div class=\"flex flex-col gap-xs\">\n <label>Keep Transcripts<span required>*</span></label>\n <select\n class=\"form-select is-sm\"\n [ngModel]=\"numberFieldAsString('transcripts', 'transcriptRetainDays')\"\n (ngModelChange)=\"selectNumberField('transcripts', 'transcriptRetainDays', $event)\"\n autocomplete=\"off\"\n >\n @for (opt of retentionOptions; track opt.value) {\n <option [value]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n </div>\n\n <div class=\"flex flex-col gap-xs\">\n <div class=\"flex items-center gap-xs\">\n <label class=\"m-0\">Disclosure Warning</label>\n <button\n type=\"button\"\n class=\"inline-flex h-4 w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent p-2xs transition-colors disabled:cursor-not-allowed disabled:opacity-55\"\n [class.bg-primary-50]=\"disclosureEnabled()\"\n [class.border-primary-200]=\"disclosureEnabled()\"\n [class.justify-end]=\"disclosureEnabled()\"\n [class.bg-lighter]=\"!disclosureEnabled()\"\n [class.justify-start]=\"!disclosureEnabled()\"\n [attr.aria-pressed]=\"disclosureEnabled()\"\n (click)=\"setDisclosureEnabled(!disclosureEnabled())\"\n >\n <span\n class=\"block h-3 w-3 rounded-full transition-colors\"\n [class.bg-primary]=\"disclosureEnabled()\"\n [class.bg-white]=\"!disclosureEnabled()\"\n ></span>\n </button>\n </div>\n @if (disclosureEnabled()) {\n <textarea\n class=\"form-textarea min-h-24\"\n rows=\"4\"\n [maxlength]=\"disclosureMax\"\n [ngModel]=\"disclosureText()\"\n (ngModelChange)=\"updateDisclosureText($event)\"\n autocomplete=\"off\"\n ></textarea>\n }\n </div>\n </div>\n } @else if (tab() === 'advanced') {\n <div class=\"flex w-full max-w-3xl flex-col gap-md\">\n <div class=\"flex items-center gap-sm rounded-md border border-base bg-white p-sm\">\n <span class=\"flex h-9 w-9 shrink-0 items-center justify-center rounded-md bg-primary-50 text-primary\" aria-hidden=\"true\">\n <ed-icon name=\"sparkle\" [size]=\"20\" />\n </span>\n <div class=\"flex min-w-0 flex-1 flex-col gap-2xs\">\n <span class=\"fs-sm text-dark\">\n @if (toggling()) {\n Updating…\n } @else if (online() === true) {\n Agent online\n } @else if (online() === false) {\n Agent offline\n } @else {\n Status unknown\n }\n </span>\n <span class=\"fs-xs text-light\">\n @if (online() === true) {\n AI receptionist is answering inbound calls.\n } @else if (online() === false) {\n AI is offline — calls go to the front desk.\n } @else {\n Checking agent status…\n }\n </span>\n </div>\n <button\n type=\"button\"\n class=\"inline-flex h-4 w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent p-2xs transition-colors disabled:cursor-not-allowed disabled:opacity-55\"\n [class.bg-primary-50]=\"online() === true\"\n [class.border-primary-200]=\"online() === true\"\n [class.justify-end]=\"online() === true\"\n [class.bg-lighter]=\"online() !== true\"\n [class.justify-start]=\"online() !== true\"\n [disabled]=\"agentSwitchDisabled()\"\n [attr.aria-pressed]=\"online() === true\"\n (click)=\"onAgentToggleClick()\"\n >\n <span\n class=\"block h-3 w-3 rounded-full transition-colors\"\n [class.bg-primary]=\"online() === true\"\n [class.bg-white]=\"online() !== true\"\n ></span>\n </button>\n </div>\n\n <div class=\"flex flex-col gap-xs\">\n <label>Model version</label>\n <input\n class=\"form-input is-sm\"\n type=\"text\"\n [ngModel]=\"fieldValue('advanced', 'modelVersion')\"\n disabled\n autocomplete=\"off\"\n />\n </div>\n\n <label class=\"flex cursor-default items-center justify-between gap-base rounded-md border border-base bg-lighter px-base py-sm opacity-90\">\n <div class=\"flex min-w-0 flex-col gap-2xs\">\n <span class=\"fs-sm text-dark\">Debug mode</span>\n <span class=\"fs-sm text-light\">Verbose logging — contact Edvak to change.</span>\n </div>\n <input\n type=\"checkbox\"\n class=\"h-4 w-4 shrink-0 accent-blue-600 disabled:cursor-not-allowed\"\n [ngModel]=\"fieldValue('advanced', 'debugMode')\"\n disabled\n autocomplete=\"off\"\n />\n </label>\n </div>\n } @else {\n <div class=\"grid grid-cols-2 gap-x-md gap-y-md below-md:grid-cols-1\">\n @for (field of fieldsForTab(); track field.key) {\n @if (field.type === 'boolean') {\n <label\n class=\"col-span-full flex cursor-pointer items-center justify-between gap-base rounded-md border border-base bg-lighter px-base py-sm\"\n [class.cursor-default]=\"fieldIsReadOnly(tab(), field.key)\"\n [class.opacity-90]=\"fieldIsReadOnly(tab(), field.key)\"\n >\n <div class=\"flex min-w-0 flex-col gap-2xs\">\n <span class=\"fs-sm text-dark\">{{ field.label }}</span>\n @if (field.description) {\n <span\n class=\"fs-sm text-light\"\n [class.text-lighter]=\"fieldIsReadOnly(tab(), field.key)\"\n >{{ field.description }}</span>\n }\n </div>\n <input\n type=\"checkbox\"\n class=\"h-4 w-4 shrink-0 accent-blue-600 disabled:cursor-not-allowed\"\n [disabled]=\"fieldIsReadOnly(tab(), field.key)\"\n [ngModel]=\"fieldValue(tab(), field.key)\"\n (ngModelChange)=\"updateField(tab(), field.key, $event)\"\n autocomplete=\"off\"\n />\n </label>\n } @else if (field.type === 'select' && field.options?.length) {\n <div class=\"flex flex-col gap-xs\">\n <label>{{ field.label }}</label>\n @if (field.description) {\n <span\n class=\"fs-sm text-light\"\n [class.text-lighter]=\"fieldIsReadOnly(tab(), field.key)\"\n >{{ field.description }}</span>\n }\n <select\n class=\"form-select is-sm\"\n [disabled]=\"fieldIsReadOnly(tab(), field.key)\"\n [ngModel]=\"fieldValue(tab(), field.key)\"\n (ngModelChange)=\"updateField(tab(), field.key, $event)\"\n autocomplete=\"off\"\n >\n @for (opt of field.options; track opt.value) {\n <option [ngValue]=\"opt.value\">{{ opt.label }}</option>\n }\n </select>\n </div>\n } @else {\n <div class=\"flex flex-col gap-xs\">\n <label>{{ field.label }}</label>\n @if (field.description) {\n <span\n class=\"fs-sm text-light\"\n [class.text-lighter]=\"fieldIsReadOnly(tab(), field.key)\"\n >{{ field.description }}</span>\n }\n @if (field.type === 'number') {\n <input\n class=\"form-input is-sm\"\n type=\"number\"\n [disabled]=\"fieldIsReadOnly(tab(), field.key)\"\n [ngModel]=\"fieldValue(tab(), field.key)\"\n (ngModelChange)=\"updateField(tab(), field.key, +$event)\"\n autocomplete=\"off\"\n />\n } @else {\n <input\n class=\"form-input is-sm\"\n type=\"text\"\n [disabled]=\"fieldIsReadOnly(tab(), field.key)\"\n [ngModel]=\"fieldValue(tab(), field.key)\"\n (ngModelChange)=\"updateField(tab(), field.key, $event)\"\n autocomplete=\"off\"\n />\n }\n </div>\n }\n }\n </div>\n }\n</ng-template>\n\n<eds-knowledge-test-modal\n [open]=\"knowledgeTestOpen()\"\n [whatToSay]=\"whatToSay()\"\n [whatNotToSay]=\"whatNotToSay()\"\n [voiceId]=\"selectedVoiceId()\"\n (closed)=\"closeTestCall()\"\n/>\n\n@if (confirmOffOpen()) {\n <app-modal\n title=\"Turn off AI receptionist?\"\n subtitle=\"Inbound callers will be transferred to the front desk instead of the AI.\"\n maxWidth=\"480px\"\n (closed)=\"cancelConfirmOff()\"\n >\n <p class=\"mb-4 m-0 text-sm leading-normal text-zinc-500\">While offline, the AI will not answer calls. Callers are routed to the human receptionist.</p>\n <div class=\"flex justify-end gap-2\">\n <ed-button variant=\"secondary\" outline size=\"sm\" (click$)=\"cancelConfirmOff()\">Cancel</ed-button>\n <ed-button variant=\"danger\" fill size=\"sm\" [disabled]=\"toggling()\" (click$)=\"confirmTurnOff()\">\n Turn off AI receptionist\n </ed-button>\n </div>\n </app-modal>\n}\n","import { Injectable, signal } from '@angular/core';\n\n/** Single shared open state for the Agent Settings ed-drawer. */\n@Injectable({ providedIn: 'root' })\nexport class AgentSettingsDrawerService {\n readonly open = signal(false);\n\n show(): void {\n this.open.set(true);\n }\n\n hide(): void {\n this.open.set(false);\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n OnDestroy,\n Renderer2,\n inject,\n} from '@angular/core';\n\n/**\n * Moves the host element to `document.body` so `position: fixed` overlays\n * cover the full browser viewport (escapes `#content-area` / `.eds-content`\n * overflow and stacking contexts), matching `app-modal` behavior.\n */\n@Directive({\n selector: '[edsViewportPortal]',\n standalone: true,\n})\nexport class ViewportPortalDirective implements AfterViewInit, OnDestroy {\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly renderer = inject(Renderer2);\n private movedToBody = false;\n\n ngAfterViewInit(): void {\n const node = this.el.nativeElement;\n if (!node || node.parentElement === document.body) return;\n this.renderer.appendChild(document.body, node);\n this.movedToBody = true;\n }\n\n ngOnDestroy(): void {\n const node = this.el.nativeElement;\n if (this.movedToBody && node?.parentElement) {\n this.renderer.removeChild(node.parentElement, node);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n inject,\n viewChild,\n} from '@angular/core';\n\nimport { EdButtonComponent } from '../../ui/ed-button.component';\n\nimport { SettingsPageComponent } from '../../pages/settings-page/settings-page.component';\nimport { AgentSettingsDrawerService } from '../../services/agent-settings-drawer.service';\nimport { ViewportPortalDirective } from '../../shared/viewport-portal.directive';\nimport { EdIconButtonComponent } from '../../ui/ed-icon-button.component';\n\n@Component({\n selector: 'eds-agent-settings-drawer',\n imports: [\n SettingsPageComponent,\n EdButtonComponent,\n EdIconButtonComponent,\n ViewportPortalDirective,\n ],\n templateUrl: './agent-settings-drawer.component.html',\n styleUrl: './agent-settings-drawer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class AgentSettingsDrawerComponent {\n private readonly drawer = inject(AgentSettingsDrawerService);\n private readonly settingsForm = viewChild<SettingsPageComponent>('settingsForm');\n\n protected readonly open = this.drawer.open;\n\n protected close(): void {\n this.settingsForm()?.discardChanges();\n this.drawer.hide();\n }\n\n protected onBackdropClick(event: MouseEvent): void {\n if (event.target === event.currentTarget) {\n this.close();\n }\n }\n}\n","@if (open()) {\n <div\n edsViewportPortal\n class=\"eds-drawer-backdrop fixed left-0 top-0 z-[100100] flex h-[100vh] w-[100vw] justify-end\"\n (click)=\"onBackdropClick($event)\"\n role=\"presentation\"\n >\n <ed-drawer\n size=\"xl\"\n class=\"slide-in-rtl ed-main-sidepanel h-full\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Agent Setting\"\n >\n <ed-drawer-header class=\"shrink-0 border-b border-zinc-200 bg-white shadow-none\">\n <h6 data-new-heading=\"true\">Agent Setting</h6>\n <ed-icon-button\n name=\"close\"\n label=\"Close\"\n size=\"sm\"\n ghost\n (click$)=\"close()\"\n />\n </ed-drawer-header>\n\n <ed-drawer-body class=\"min-h-0 flex-1 overflow-hidden p-0\">\n <eds-settings-page\n #settingsForm\n presentation=\"drawer\"\n />\n </ed-drawer-body>\n\n <ed-drawer-footer class=\"shrink-0 flex-row-reverse bg-lighter\">\n <ed-button\n variant=\"primary\"\n fill\n size=\"sm\"\n [disabled]=\"settingsForm.saving()\"\n (click$)=\"settingsForm.save()\"\n >\n {{ settingsForm.saving() ? 'Saving…' : 'Save' }}\n </ed-button>\n <ed-button\n variant=\"default\"\n outline\n size=\"sm\"\n (click$)=\"close()\"\n >\n Cancel\n </ed-button>\n \n </ed-drawer-footer>\n </ed-drawer>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n CUSTOM_ELEMENTS_SCHEMA,\n inject,\n signal,\n} from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\n\nimport { EdButtonComponent } from '../ui/ed-button.component';\n\nimport { AgentSettingsDrawerComponent } from '../components/agent-settings-drawer/agent-settings-drawer.component';\nimport {\n VOICE_RECEPTIONIST_CONFIG,\n VOICE_RECEPTIONIST_SESSION,\n} from '../config';\nimport { AgentOnlineService } from '../services/agent-online.service';\nimport { AgentSettingsDrawerService } from '../services/agent-settings-drawer.service';\nimport { ModalComponent } from '../shared/modal.component';\nimport { ToastService } from '../shared/toast.service';\nimport { IconComponent } from '../ui/ed-icon.component';\n\ninterface NavItem {\n id: string;\n label: string;\n icon: string;\n route: string;\n badge?: number;\n pulse?: boolean;\n adminOnly?: boolean;\n}\n\n@Component({\n selector: 'eds-module-nav',\n imports: [\n RouterLink,\n RouterLinkActive,\n IconComponent,\n ModalComponent,\n AgentSettingsDrawerComponent,\n EdButtonComponent,\n ],\n templateUrl: './eds-module-nav.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n host: { class: 'block shrink-0' },\n})\nexport class EdsModuleNavComponent {\n private readonly config = inject(VOICE_RECEPTIONIST_CONFIG);\n private readonly session = inject(VOICE_RECEPTIONIST_SESSION);\n private readonly agentOnline = inject(AgentOnlineService);\n private readonly toast = inject(ToastService);\n private readonly settingsDrawer = inject(AgentSettingsDrawerService);\n\n protected readonly includePracticeNav = !!this.config.includePracticeNav;\n\n\n /** Standalone Voice Hub only — never show logout in EHR embed (no module nav there). */\n protected readonly showLogout = computed(() => !!this.session);\n protected readonly userEmail = computed(() => this.session?.email() ?? null);\n\n protected readonly online = this.agentOnline.online;\n protected readonly agentLoading = this.agentOnline.loading;\n protected readonly toggling = this.agentOnline.toggling;\n protected readonly confirmOffOpen = signal(false);\n protected readonly headerMenuOpen = signal(false);\n\n protected readonly agentSwitchDisabled = computed(\n () => this.agentLoading() || this.toggling() || this.online() === null,\n );\n\n protected readonly receptionistNav: NavItem[] = [\n { id: 'dashboard', label: 'Home', icon: 'home', route: 'dashboard' },\n { id: 'live', label: 'Live Calls', icon: 'phone_call', route: 'live' },\n { id: 'history', label: 'Call History', icon: 'history', route: 'history' },\n { id: 'activities', label: 'Activities', icon: 'format_list_bulleted', route: 'activities' },\n { id: 'analytics', label: 'Analytics', icon: 'chartline', route: 'analytics' },\n ];\n\n protected readonly practiceNav: NavItem[] = [\n { id: 'patients', label: 'Patients', icon: 'groups', route: 'patients' },\n { id: 'providers', label: 'Providers', icon: 'stethoscope', route: 'providers' },\n { id: 'appointments', label: 'Appointments', icon: 'calendar_month', route: 'appointments' },\n { id: 'admin', label: 'Admin', icon: 'admin_panel_settings', route: 'admin', adminOnly: true },\n ];\n\n constructor() {\n this.agentOnline.refresh();\n }\n\n protected showNavItem(item: NavItem): boolean {\n if (!item.adminOnly) return true;\n return !!this.session?.isAdmin() || !!this.session?.isSuperAdmin?.();\n }\n\n protected toggleHeaderMenu(): void {\n this.headerMenuOpen.update((open) => !open);\n }\n\n protected closeHeaderMenu(): void {\n this.headerMenuOpen.set(false);\n }\n\n protected onHeaderMenuDocClick(event: MouseEvent): void {\n const target = event.target as HTMLElement | null;\n if (!target?.closest('[data-header-menu]')) {\n this.headerMenuOpen.set(false);\n }\n }\n\n protected onAgentToggleClick(): void {\n if (this.agentSwitchDisabled()) return;\n if (this.online()) {\n this.confirmOffOpen.set(true);\n return;\n }\n this.applyOnline(true);\n }\n\n protected cancelConfirmOff(): void {\n this.confirmOffOpen.set(false);\n }\n\n protected confirmTurnOff(): void {\n this.confirmOffOpen.set(false);\n this.applyOnline(false);\n }\n\n protected logout(): void {\n this.session?.logout();\n }\n\n protected openSettingsDrawer(): void {\n this.closeHeaderMenu();\n this.settingsDrawer.show();\n }\n\n private applyOnline(enabled: boolean): void {\n this.agentOnline.setOnline(enabled).subscribe({\n next: () => {\n this.toast.show(\n enabled\n ? 'AI receptionist is online — it will answer inbound calls.'\n : 'AI receptionist is offline — calls go to the front desk.',\n 'success',\n );\n },\n error: (err: { message?: string }) => {\n this.toast.show(err.message ?? 'Failed to update agent status.', 'error');\n this.agentOnline.refresh();\n },\n });\n }\n}\n","<nav\n class=\"sticky top-0 flex h-screen min-h-screen w-52 flex-col overflow-y-auto border-r border-base bg-white \"\n aria-label=\"AI Receptionist\"\n>\n <div class=\"flex min-h-0 flex-1 flex-col \">\n <div\n class=\"relative shrink-0 p-sm\"\n data-header-menu\n (document:click)=\"onHeaderMenuDocClick($event)\"\n >\n <button\n type=\"button\"\n class=\"flex w-full cursor-pointer items-center justify-between gap-xs rounded-md border-0 bg-transparent p-2xs text-left transition-colors hover:bg-purple-50 hover:shadow-sm\"\n aria-label=\"AI Receptionist menu\"\n [attr.aria-expanded]=\"headerMenuOpen()\"\n aria-haspopup=\"menu\"\n (click)=\"$event.stopPropagation(); toggleHeaderMenu()\"\n >\n <div class=\"flex min-w-0 flex-1 items-center gap-xs\">\n <span\n class=\"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-violet-500/15 text-violet-500\"\n aria-hidden=\"true\"\n >\n <ed-icon name=\"sparkle\" [size]=\"20\" color=\"currentColor\" />\n </span>\n <div class=\"flex min-w-0 flex-col\">\n <span class=\"fs-base font-semibold text-dark\">AI Receptionist</span>\n <span class=\"inline-flex items-center gap-2xs\">\n <span class=\"inline-block h-xs w-xs shrink-0 rounded-full bg-success\" aria-hidden=\"true\"></span>\n <span class=\"fs-2xs font-semibold uppercase tracking-wide text-success\">Live</span>\n </span>\n </div>\n </div>\n <ed-icon\n name=\"caret_down\"\n [size]=\"16\"\n color=\"currentColor\"\n class=\"shrink-0 text-light\"\n aria-hidden=\"true\"\n />\n </button>\n @if (headerMenuOpen()) {\n <div\n class=\"fade-in absolute right-0 top-full z-20 mt-2xs flex w-44 origin-top flex-col gap-2xs rounded-md border border-light bg-white p-2xs shadow-md\"\n role=\"menu\"\n aria-label=\"AI Receptionist menu\"\n >\n <a\n class=\"flex w-full items-center rounded-sm px-sm py-xs fs-sm text-dark no-underline transition-colors hover:bg-lighter\"\n routerLink=\"audit\"\n routerLinkActive=\"bg-lighter\"\n role=\"menuitem\"\n (click)=\"closeHeaderMenu()\"\n >\n Audit Logs\n </a>\n <button\n type=\"button\"\n class=\"flex w-full cursor-pointer items-center rounded-sm border-0 bg-transparent px-sm py-xs text-left fs-sm text-dark transition-colors hover:bg-lighter\"\n role=\"menuitem\"\n (click)=\"openSettingsDrawer()\"\n >\n Settings\n </button>\n <div class=\"w-full border-b border-light\" role=\"presentation\"></div>\n <div class=\"flex w-full items-center gap-2xs px-sm py-xs\" role=\"menuitem\">\n <span class=\"min-w-0 flex-1 fs-sm text-dark\">Agent is Live</span>\n <button\n type=\"button\"\n class=\"inline-flex h-4 w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent p-2xs transition-colors disabled:cursor-not-allowed disabled:opacity-55\"\n [class.bg-primary]=\"online() === true\"\n [class.justify-end]=\"online() === true\"\n [class.bg-lighter]=\"online() !== true\"\n [class.justify-start]=\"online() !== true\"\n [disabled]=\"agentSwitchDisabled()\"\n [attr.aria-pressed]=\"online() === true\"\n [attr.aria-label]=\"online() === true ? 'Turn off AI receptionist' : 'Turn on AI receptionist'\"\n (click)=\"$event.stopPropagation(); onAgentToggleClick()\"\n >\n <span class=\"block h-3 w-3 rounded-full bg-white\"></span>\n </button>\n </div>\n </div>\n }\n </div>\n\n <div class=\"w-full border-b border-light\" role=\"presentation\"></div>\n\n <ul role=\"menu\" class=\"m-0 list-none p-0\">\n @for (item of receptionistNav; track item.id) {\n <li\n tabindex=\"0\"\n role=\"menuitem\"\n class=\"cursor-pointer px-base py-xs text-left fs-base leading-[1.8] hover:bg-lighter active:bg-base\"\n [attr.data-value]=\"item.label\"\n [routerLink]=\"item.route\"\n routerLinkActive=\"bg-light\"\n [routerLinkActiveOptions]=\"{ exact: item.route === 'dashboard' }\"\n (keydown.enter)=\"$any($event.target)?.click()\"\n >{{ item.label }}</li>\n }\n </ul>\n\n @if (includePracticeNav) {\n <p class=\"mb-0 mt-0 fs-sm font-semibold text-light\">Practice</p>\n <ul role=\"menu\" class=\"m-0 list-none p-0\">\n @for (item of practiceNav; track item.id) {\n @if (showNavItem(item)) {\n <li\n tabindex=\"0\"\n role=\"menuitem\"\n class=\"cursor-pointer px-base py-xs text-left fs-base leading-[1.8] hover:bg-lighter active:bg-base\"\n [attr.data-value]=\"item.label\"\n [routerLink]=\"item.route\"\n routerLinkActive=\"bg-light\"\n (keydown.enter)=\"$any($event.target)?.click()\"\n >{{ item.label }}</li>\n }\n }\n </ul>\n }\n </div>\n\n @if (showLogout()) {\n <div class=\"mt-auto border-t border-light pt-sm\">\n @if (userEmail(); as email) {\n <p class=\"mb-xs truncate px-xs fs-xs text-light\" [title]=\"email\">{{ email }}</p>\n }\n <button\n type=\"button\"\n class=\"group/link relative flex h-10 w-full cursor-pointer items-center gap-xs rounded-md border-0 bg-transparent px-xs text-left fs-base font-medium text-light transition-colors hover:bg-lighter hover:text-dark\"\n (click)=\"logout()\"\n aria-label=\"Log out\"\n title=\"Log out\"\n >\n <ed-icon class=\"shrink-0\" name=\"logout\" [size]=\"24\" color=\"currentColor\" />\n <span class=\"min-w-0 flex-1\">Log out</span>\n </button>\n </div>\n }\n</nav>\n\n@if (confirmOffOpen()) {\n <app-modal\n title=\"Turn off AI receptionist?\"\n subtitle=\"Inbound callers will be transferred to the front desk instead of the AI.\"\n maxWidth=\"480px\"\n (closed)=\"cancelConfirmOff()\"\n >\n <p class=\"mb-4 m-0 text-sm leading-normal text-zinc-500\">While offline, the AI will not answer calls. Callers are routed to the human receptionist.</p>\n <div class=\"flex justify-end gap-2\">\n <ed-button variant=\"secondary\" outline size=\"sm\" (click$)=\"cancelConfirmOff()\">Cancel</ed-button>\n <ed-button variant=\"danger\" fill size=\"sm\" [disabled]=\"toggling()\" (click$)=\"confirmTurnOff()\">\n Turn off AI receptionist\n </ed-button>\n </div>\n </app-modal>\n}\n\n<eds-agent-settings-drawer />\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationStart,\n Router,\n} from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\n/**\n * Thin top progress bar + soft content veil while Angular navigates\n * (lazy chunks, guards). Use once at the host root or app shell.\n */\n@Component({\n selector: 'eds-route-progress',\n standalone: true,\n template: `\n @if (active()) {\n <div class=\"eds-route-progress\" role=\"progressbar\" aria-busy=\"true\" aria-label=\"Loading page\">\n <div class=\"eds-route-progress__bar\"></div>\n </div>\n <div class=\"eds-route-progress__veil\" aria-hidden=\"true\">\n <div class=\"eds-route-progress__panel\">\n <span class=\"eds-route-progress__spinner\"></span>\n <span class=\"eds-route-progress__label\">Loading…</span>\n </div>\n </div>\n }\n `,\n styles: `\n :host {\n display: contents;\n }\n\n .eds-route-progress {\n position: fixed;\n inset: 0 0 auto;\n z-index: 9999;\n height: 3px;\n overflow: hidden;\n pointer-events: none;\n background: transparent;\n }\n\n .eds-route-progress__bar {\n height: 100%;\n width: 40%;\n border-radius: 0 2px 2px 0;\n background: linear-gradient(90deg, #2162f0, #8e51ff);\n animation: eds-route-progress-slide 1.05s ease-in-out infinite;\n }\n\n .eds-route-progress__veil {\n position: fixed;\n inset: 0;\n z-index: 9998;\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: all;\n background: rgba(247, 250, 255, 0.55);\n backdrop-filter: blur(1px);\n }\n\n .eds-route-progress__panel {\n display: inline-flex;\n align-items: center;\n gap: 0.75rem;\n padding: 0.75rem 1.1rem;\n border: 1px solid #e2e8f0;\n border-radius: 0.75rem;\n background: #fff;\n box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08);\n color: #334155;\n font-family: Inter, system-ui, sans-serif;\n font-size: 0.875rem;\n font-weight: 500;\n }\n\n .eds-route-progress__spinner {\n width: 1.1rem;\n height: 1.1rem;\n border: 2px solid #dbeafe;\n border-top-color: #2162f0;\n border-radius: 999px;\n animation: eds-route-progress-spin 0.7s linear infinite;\n }\n\n .eds-route-progress__label {\n letter-spacing: -0.01em;\n }\n\n @keyframes eds-route-progress-slide {\n 0% {\n transform: translateX(-120%);\n }\n 100% {\n transform: translateX(320%);\n }\n }\n\n @keyframes eds-route-progress-spin {\n to {\n transform: rotate(360deg);\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EdsRouteProgressComponent {\n private readonly router = inject(Router);\n private readonly destroyRef = inject(DestroyRef);\n private hideTimer: ReturnType<typeof setTimeout> | null = null;\n\n protected readonly active = signal(false);\n\n constructor() {\n this.router.events\n .pipe(\n filter(\n (e) =>\n e instanceof NavigationStart ||\n e instanceof NavigationEnd ||\n e instanceof NavigationCancel ||\n e instanceof NavigationError,\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((e) => {\n if (e instanceof NavigationStart) {\n this.clearHideTimer();\n this.active.set(true);\n return;\n }\n // Keep visible briefly so fast navigations still feel intentional.\n this.clearHideTimer();\n this.hideTimer = setTimeout(() => this.active.set(false), 180);\n });\n\n this.destroyRef.onDestroy(() => this.clearHideTimer());\n }\n\n private clearHideTimer(): void {\n if (this.hideTimer) {\n clearTimeout(this.hideTimer);\n this.hideTimer = null;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n booleanAttribute,\n} from '@angular/core';\n\nexport type EdAvatarTone = 'gray' | 'brand' | 'warm' | 'green' | 'amber' | 'violet' | 'rose';\nexport type EdAvatarShape = 'circle' | 'box';\nexport type EdAvatarSize = 'xs' | 'sm' | 'base' | 'md' | 'lg';\n\n@Component({\n selector: 'ed-avatar',\n standalone: true,\n template: `<span class=\"ed-avatar\">{{ initials }}</span>`,\n styleUrl: './ed-avatar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'inline-flex shrink-0',\n },\n})\nexport class EdAvatarComponent {\n @Input() initials = '?';\n @Input() tone: EdAvatarTone | string = 'gray';\n @Input() shape: EdAvatarShape = 'circle';\n @Input() size: EdAvatarSize = 'base';\n @Input({ transform: booleanAttribute }) gradient = false;\n\n @HostBinding('attr.shape')\n get shapeAttr(): EdAvatarShape {\n return this.shape;\n }\n\n @HostBinding('attr.size')\n get sizeAttr(): EdAvatarSize {\n return this.size;\n }\n\n @HostBinding('attr.data-tone')\n get toneAttr(): string {\n return this.tone;\n }\n\n @HostBinding('class.ed-avatar--gradient')\n get gradientClass(): boolean {\n return this.gradient;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\nimport { EdButtonComponent } from '../ui/ed-button.component';\n\nimport { VOICE_RECEPTIONIST_CONFIG, VOICE_RECEPTIONIST_SESSION } from '../config';\nimport { AgentOnlineService } from '../services/agent-online.service';\nimport { EdAvatarComponent } from '../ui/ed-avatar.component';\nimport { EdIconButtonComponent } from '../ui/ed-icon-button.component';\nimport { IconComponent } from '../ui/ed-icon.component';\n\nconst PAGE_TITLES: Record<string, string> = {\n dashboard: 'Home',\n live: 'Live Calls',\n history: 'Call History',\n activities: 'Activities',\n tasks: 'Tasks & Follow-ups',\n analytics: 'Analytics',\n audit: 'Audit Logs',\n settings: 'Agent Setting',\n knowledge: 'Knowledge Base',\n wizard: 'Setup Wizard',\n patients: 'Patients',\n providers: 'Providers',\n appointments: 'Appointments',\n admin: 'Admin',\n};\n\n@Component({\n selector: 'eds-topbar',\n imports: [IconComponent, EdButtonComponent, EdIconButtonComponent, EdAvatarComponent],\n templateUrl: './eds-topbar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EdsTopbarComponent {\n private readonly router = inject(Router);\n private readonly config = inject(VOICE_RECEPTIONIST_CONFIG);\n private readonly sessionAdapter = inject(VOICE_RECEPTIONIST_SESSION);\n private readonly agentOnline = inject(AgentOnlineService);\n\n protected readonly pageTitle = signal('Home');\n protected readonly online = this.agentOnline.online;\n protected readonly loading = this.agentOnline.loading;\n\n protected readonly userEmail = computed(() => this.sessionAdapter?.email() ?? null);\n protected readonly showUser = computed(() => !!this.userEmail());\n /** Standalone only — hide logout when embedded in EHR (`showModuleNav` false). */\n protected readonly showLogout = computed(\n () => !!this.config.showModuleNav && !!this.sessionAdapter,\n );\n\n protected readonly userInitials = computed(() => {\n const email = this.userEmail()?.trim() ?? '';\n if (!email) return '?';\n const local = email.split('@')[0] ?? '';\n const parts = local.split(/[._-]+/).filter(Boolean);\n if (parts.length >= 2) {\n return `${parts[0][0]}${parts[1][0]}`.toUpperCase();\n }\n return local.slice(0, 2).toUpperCase() || '?';\n });\n\n protected readonly statusLabel = computed(() => {\n if (this.loading() && this.online() === null) return 'Checking status…';\n if (this.online() === null) return 'Status unknown';\n return this.online()\n ? 'AI receptionist is answering calls'\n : 'AI is offline — calls go to front desk';\n });\n\n constructor() {\n this.agentOnline.refresh();\n this.updateTitle(this.router.url);\n this.router.events\n .pipe(filter((e): e is NavigationEnd => e instanceof NavigationEnd))\n .subscribe((e) => this.updateTitle(e.urlAfterRedirects));\n }\n\n protected logout(): void {\n this.sessionAdapter?.logout();\n }\n\n private updateTitle(url: string): void {\n const base = url.split('?')[0].split(';')[0];\n const segments = base.split('/').filter(Boolean);\n const last = segments[segments.length - 1] ?? '';\n const prev = segments[segments.length - 2] ?? '';\n\n if (prev === 'settings' && last === 'outbound-purposes') {\n this.pageTitle.set('Outbound Purposes');\n return;\n }\n if (prev === 'live' && last && last !== 'live') {\n this.pageTitle.set('Live Monitor');\n return;\n }\n if (prev === 'history' && last && last !== 'history') {\n this.pageTitle.set('Call Details');\n return;\n }\n this.pageTitle.set(PAGE_TITLES[last] ?? 'AI Receptionist');\n }\n}\n","<header class=\"sticky top-0 z-10 flex items-center justify-between gap-base border-b border-base bg-white p-sm hidden\">\n <div class=\"flex shrink-0 items-center gap-base\">\n <ed-icon name=\"reorder\" [size]=\"24\" color=\"currentColor\" class=\"text-dark\" aria-hidden=\"true\" />\n <nav class=\"inline-flex items-center gap-2xs fs-base text-light\" aria-label=\"Breadcrumb\">\n <span>AI Receptionist</span>\n <ed-icon name=\"chevron_right\" [size]=\"16\" color=\"currentColor\" />\n <span class=\"font-semibold text-dark\">{{ pageTitle() }}</span>\n </nav>\n </div>\n\n <div class=\"flex items-center gap-xs\">\n <div class=\"flex items-center gap-xs\">\n <ed-button variant=\"primary\" fill size=\"sm\">\n <ed-icon slot=\"prefix\" name=\"add\" [size]=\"16\" />\n Create\n </ed-button>\n\n <div class=\"relative w-72\">\n <input\n type=\"search\"\n class=\"form-input h-9 w-full\"\n placeholder=\"Search Patient...\"\n aria-label=\"Search Patient\"\n autocomplete=\"off\"\n />\n <span class=\"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-sm text-light\" aria-hidden=\"true\">\n <ed-icon name=\"search\" [size]=\"20\" color=\"currentColor\" />\n </span>\n </div>\n </div>\n\n <div\n class=\"inline-flex h-9 items-center gap-xs rounded-md border border-dark bg-white px-sm\"\n [title]=\"statusLabel()\"\n >\n <span\n class=\"h-xs w-xs shrink-0 rounded-full\"\n [class.bg-success]=\"online() === true\"\n [class.bg-danger]=\"online() === false\"\n [class.bg-dark]=\"online() === null\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"whitespace-nowrap fs-base font-semibold text-dark\">\n @if (loading() && online() === null) {\n Checking…\n } @else if (online() === true) {\n Agent online\n } @else if (online() === false) {\n Agent offline\n } @else {\n Status unknown\n }\n </span>\n </div>\n\n <button\n type=\"button\"\n class=\"inline-flex h-9 items-center gap-2xs rounded-md border border-dark bg-white px-sm text-light\"\n aria-label=\"Location\"\n >\n <ed-icon name=\"location_on\" [size]=\"20\" color=\"currentColor\" />\n <span class=\"fs-base font-medium text-light\">Venus Healthcare</span>\n <ed-icon name=\"caret_down\" [size]=\"20\" color=\"currentColor\" />\n </button>\n\n <ed-icon-button name=\"notifications\" label=\"Notifications\" size=\"md\" outline />\n <ed-icon-button name=\"help\" label=\"Help\" size=\"md\" outline />\n\n @if (showUser()) {\n <div class=\"inline-flex max-w-52 items-center gap-xs\" [title]=\"userEmail()!\">\n <ed-avatar shape=\"circle\" size=\"md\" tone=\"brand\" [initials]=\"userInitials()\" />\n <span class=\"truncate fs-sm text-light max-[1100px]:hidden\">{{ userEmail() }}</span>\n </div>\n }\n\n @if (showLogout()) {\n <button\n type=\"button\"\n class=\"inline-flex h-9 cursor-pointer items-center gap-xs rounded-md border border-dark bg-white px-sm text-light transition-colors hover:bg-lighter hover:text-dark\"\n (click)=\"logout()\"\n aria-label=\"Sign out\"\n title=\"Sign out\"\n >\n <ed-icon name=\"logout\" [size]=\"18\" color=\"currentColor\" />\n <span class=\"fs-base\">Log out</span>\n </button>\n }\n </div>\n</header>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\nimport { VOICE_RECEPTIONIST_CONFIG } from '../config';\nimport { AgentOnlineService } from '../services/agent-online.service';\nimport { ToastContainerComponent } from '../shared/toast-container.component';\nimport { EdsModuleNavComponent } from './eds-module-nav.component';\nimport { EdsRouteProgressComponent } from './eds-route-progress.component';\nimport { EdsTopbarComponent } from './eds-topbar.component';\n\n@Component({\n selector: 'eds-app-shell',\n imports: [\n RouterOutlet,\n EdsModuleNavComponent,\n EdsTopbarComponent,\n ToastContainerComponent,\n EdsRouteProgressComponent,\n ],\n templateUrl: './eds-app-shell.component.html',\n styleUrl: './eds-app-shell.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EdsAppShellComponent {\n /** EHR embed: false (default). Standalone Voice Hub: set showModuleNav: true. */\n protected readonly showModuleNav = !!inject(VOICE_RECEPTIONIST_CONFIG).showModuleNav;\n /**\n * Standalone Voice Hub mounts progress on app-root. EHR embeds that only use\n * this shell still need a nav loader — enable when host nav is hidden.\n */\n protected readonly showRouteProgress = !this.showModuleNav;\n\n constructor() {\n inject(AgentOnlineService).refresh();\n }\n}\n","<div class=\"eds-layout flex h-screen overflow-hidden\">\n @if (showRouteProgress) {\n <eds-route-progress />\n }\n @if (showModuleNav) {\n <eds-module-nav />\n }\n <div class=\"eds-main flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden\">\n @if (showModuleNav) {\n <eds-topbar />\n }\n <div class=\"eds-content min-h-0 flex-1 overflow-y-auto\">\n <router-outlet />\n </div>\n </div>\n <app-toast-container />\n</div>\n","import { Injectable, inject, signal } from '@angular/core';\nimport { io, Socket } from 'socket.io-client';\n\nimport { createVoiceReceptionistPaths } from '../api-paths';\nimport { VOICE_RECEPTIONIST_CONFIG } from '../config';\n\ntype SocketHandler = (...args: unknown[]) => void;\n\n/**\n * Single shared Socket.io connection to the `/dashboard` namespace.\n * Used by live calls list + per-call transcript stream.\n */\n@Injectable({ providedIn: 'root' })\nexport class DashboardSocketService {\n private readonly config = inject(VOICE_RECEPTIONIST_CONFIG);\n private readonly paths = createVoiceReceptionistPaths(this.config);\n\n readonly connected = signal(false);\n\n private socket: Socket | null = null;\n private refCount = 0;\n private readonly handlers = new Map<string, Map<SocketHandler, SocketHandler>>();\n private readonly connectCallbacks = new Set<() => void>();\n\n acquire(): void {\n this.refCount++;\n if (this.refCount === 1) {\n this.connect();\n }\n }\n\n release(): void {\n this.refCount = Math.max(0, this.refCount - 1);\n if (this.refCount === 0) {\n this.disconnect();\n }\n }\n\n onConnect(callback: () => void): void {\n this.connectCallbacks.add(callback);\n if (this.connected()) {\n callback();\n }\n }\n\n offConnect(callback: () => void): void {\n this.connectCallbacks.delete(callback);\n }\n\n on<T>(event: string, handler: (payload: T) => void): void {\n const wrapped: SocketHandler = (payload) => handler(payload as T);\n if (!this.handlers.has(event)) {\n this.handlers.set(event, new Map());\n }\n this.handlers.get(event)!.set(handler as SocketHandler, wrapped);\n\n if (this.socket) {\n this.socket.on(event, wrapped);\n }\n }\n\n off<T>(event: string, handler: (payload: T) => void): void {\n const eventHandlers = this.handlers.get(event);\n const wrapped = eventHandlers?.get(handler as SocketHandler);\n if (wrapped) {\n this.socket?.off(event, wrapped);\n eventHandlers!.delete(handler as SocketHandler);\n }\n }\n\n emit(event: string, payload?: unknown): void {\n this.socket?.emit(event, payload);\n }\n\n private connect(): void {\n if (this.config.useMockApi) {\n this.connected.set(true);\n this.fireConnectCallbacks();\n return;\n }\n\n this.socket = io(`${this.paths.apiRoot()}/dashboard`, {\n path: '/socket.io',\n transports: ['websocket'],\n autoConnect: false,\n });\n\n this.socket.on('connect', () => {\n this.connected.set(true);\n this.fireConnectCallbacks();\n });\n\n this.socket.on('disconnect', () => {\n this.connected.set(false);\n });\n\n this.socket.io.on('reconnect', () => {\n this.fireConnectCallbacks();\n });\n\n for (const [event, handlerMap] of this.handlers) {\n for (const wrapped of handlerMap.values()) {\n this.socket.on(event, wrapped);\n }\n }\n\n this.socket.connect();\n }\n\n private disconnect(): void {\n if (!this.socket) {\n this.connected.set(false);\n return;\n }\n\n for (const [event, handlerMap] of this.handlers) {\n for (const wrapped of handlerMap.values()) {\n this.socket.off(event, wrapped);\n }\n }\n\n this.socket.removeAllListeners();\n this.socket.disconnect();\n this.socket = null;\n this.connected.set(false);\n }\n\n private fireConnectCallbacks(): void {\n for (const cb of this.connectCallbacks) {\n cb();\n }\n }\n}\n","import { Injectable, inject, signal } from '@angular/core';\nimport { Subscription, filter, interval } from 'rxjs';\n\nimport { VOICE_RECEPTIONIST_CONFIG } from '../config';\nimport { LiveCall } from '../models/ai-receptionist.types';\nimport { AiReceptionistApiService } from './ai-receptionist-api.service';\nimport { DashboardSocketService } from './dashboard-socket.service';\n\nconst DEFAULT_POLL_MS = 12_000;\n\n/**\n * Shared live calls list — REST + `live_calls_updated` socket + fallback poll.\n */\n@Injectable({ providedIn: 'root' })\nexport class LiveCallsListService {\n private readonly api = inject(AiReceptionistApiService);\n private readonly socket = inject(DashboardSocketService);\n private readonly config = inject(VOICE_RECEPTIONIST_CONFIG);\n\n readonly calls = signal<LiveCall[]>([]);\n readonly loading = signal(false);\n readonly error = signal<string | null>(null);\n readonly lastUpdated = signal<number | null>(null);\n\n private subscriberCount = 0;\n private pollSub?: Subscription;\n private refreshSub?: Subscription;\n private refreshId = 0;\n private visibilityHandler?: () => void;\n private mockPollTimer: ReturnType<typeof setInterval> | null = null;\n\n private readonly onLiveCallsUpdated = () => this.refresh(false);\n private readonly onSocketConnect = () => this.refresh(false);\n\n start(): void {\n this.subscriberCount++;\n if (this.subscriberCount > 1) {\n this.refresh(false);\n return;\n }\n\n this.socket.acquire();\n this.socket.on('live_calls_updated', this.onLiveCallsUpdated);\n this.socket.onConnect(this.onSocketConnect);\n this.bindVisibility();\n this.refresh(true);\n this.startFallbackPoll();\n }\n\n stop(): void {\n this.subscriberCount = Math.max(0, this.subscriberCount - 1);\n if (this.subscriberCount > 0) {\n return;\n }\n\n this.refreshId++;\n this.refreshSub?.unsubscribe();\n this.refreshSub = undefined;\n this.stopFallbackPoll();\n this.unbindVisibility();\n this.socket.off('live_calls_updated', this.onLiveCallsUpdated);\n this.socket.offConnect(this.onSocketConnect);\n this.socket.release();\n }\n\n refresh(showLoading = true): void {\n const requestId = ++this.refreshId;\n if (showLoading && this.calls().length === 0) {\n this.loading.set(true);\n }\n\n this.refreshSub?.unsubscribe();\n this.refreshSub = this.api.getLiveCalls().subscribe({\n next: ({ data }) => {\n if (requestId !== this.refreshId) return;\n this.calls.set(data);\n this.lastUpdated.set(Date.now());\n this.loading.set(false);\n this.error.set(null);\n },\n error: (err: unknown) => {\n if (requestId !== this.refreshId) return;\n this.loading.set(false);\n const message =\n err instanceof Error ? err.message : 'Could not load live calls.';\n this.error.set(message);\n },\n });\n }\n\n private startFallbackPoll(): void {\n const pollMs = this.config.liveCallsPollIntervalMs ?? DEFAULT_POLL_MS;\n\n if (this.config.useMockApi) {\n this.mockPollTimer = setInterval(() => {\n if (!document.hidden) {\n this.refresh(false);\n }\n }, pollMs);\n return;\n }\n\n this.pollSub = interval(pollMs)\n .pipe(filter(() => !document.hidden))\n .subscribe(() => this.refresh(false));\n }\n\n private stopFallbackPoll(): void {\n this.pollSub?.unsubscribe();\n this.pollSub = undefined;\n if (this.mockPollTimer) {\n clearInterval(this.mockPollTimer);\n this.mockPollTimer = null;\n }\n }\n\n private bindVisibility(): void {\n this.visibilityHandler = () => {\n if (!document.hidden) {\n this.refresh(false);\n }\n };\n document.addEventListener('visibilitychange', this.visibilityHandler);\n }\n\n private unbindVisibility(): void {\n if (this.visibilityHandler) {\n document.removeEventListener('visibilitychange', this.visibilityHandler);\n this.visibilityHandler = undefined;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\nimport { LiveCallsListService } from '../../services/live-calls-list.service';\n\n/**\n * Owns live-calls polling/socket for both the list and the per-call monitor\n * so navigating list → detail → back does not tear down the shared list.\n */\n@Component({\n selector: 'eds-live-calls-shell',\n imports: [RouterOutlet],\n template: '<router-outlet />',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class LiveCallsShellComponent implements OnInit, OnDestroy {\n private readonly liveCallsList = inject(LiveCallsListService);\n\n ngOnInit(): void {\n this.liveCallsList.start();\n }\n\n ngOnDestroy(): void {\n this.liveCallsList.stop();\n }\n}\n","import { Routes } from '@angular/router';\n\nimport { EdsAppShellComponent } from './layout/eds-app-shell.component';\nimport { LiveCallsShellComponent } from './pages/live-calls-page/live-calls-shell.component';\n\n/** Feature child routes (under the embed shell). */\nexport const VOICE_RECEPTIONIST_FEATURE_ROUTES: Routes = [\n { path: '', pathMatch: 'full', redirectTo: 'dashboard' },\n {\n path: 'dashboard',\n loadComponent: () =>\n import('./pages/dashboard-page/dashboard-page.component').then(\n (m) => m.DashboardPageComponent,\n ),\n },\n {\n path: 'live',\n component: LiveCallsShellComponent,\n children: [\n {\n path: '',\n pathMatch: 'full',\n loadComponent: () =>\n import('./pages/live-calls-page/live-calls-page.component').then(\n (m) => m.LiveCallsPageComponent,\n ),\n },\n {\n path: ':id',\n loadComponent: () =>\n import('./pages/live-monitor-page/live-monitor-page.component').then(\n (m) => m.LiveMonitorPageComponent,\n ),\n },\n ],\n },\n {\n path: 'history',\n loadComponent: () =>\n import('./pages/call-history-page/call-history-page.component').then(\n (m) => m.CallHistoryPageComponent,\n ),\n },\n {\n path: 'history/:id',\n loadComponent: () =>\n import('./pages/call-history-detail-page/call-history-detail-page.component').then(\n (m) => m.CallHistoryDetailPageComponent,\n ),\n },\n {\n path: 'activities',\n loadComponent: () =>\n import('./pages/activities-page/activities-page.component').then(\n (m) => m.ActivitiesPageComponent,\n ),\n },\n {\n path: 'tasks',\n loadComponent: () =>\n import('./pages/tasks-page/tasks-page.component').then((m) => m.TasksPageComponent),\n },\n {\n path: 'analytics',\n loadComponent: () =>\n import('./pages/analytics-page/analytics-page.component').then(\n (m) => m.AnalyticsPageComponent,\n ),\n },\n {\n path: 'audit',\n loadComponent: () =>\n import('./pages/audit-page/audit-page.component').then(\n (m) => m.AuditPageComponent,\n ),\n },\n {\n path: 'settings',\n loadComponent: () =>\n import('./pages/settings-page/settings-page.component').then(\n (m) => m.SettingsPageComponent,\n ),\n },\n {\n path: 'settings/outbound-purposes',\n loadComponent: () =>\n import('./pages/outbound-purposes-page/outbound-purposes-page.component').then(\n (m) => m.OutboundPurposesPageComponent,\n ),\n },\n {\n path: 'knowledge',\n loadComponent: () =>\n import('./pages/settings-page/settings-page.component').then(\n (m) => m.SettingsPageComponent,\n ),\n data: { settingsTab: 'knowledge' },\n },\n {\n path: 'wizard',\n loadComponent: () =>\n import('./pages/wizard-page/wizard-page.component').then((m) => m.WizardPageComponent),\n },\n];\n\n/**\n * Lazy-loadable routes for EHR (and standalone hosts).\n * Mount under a host path, e.g. `{ path: 'ai-receptionist', children: VOICE_RECEPTIONIST_ROUTES }`.\n */\nexport const VOICE_RECEPTIONIST_ROUTES: Routes = [\n {\n path: '',\n component: EdsAppShellComponent,\n children: VOICE_RECEPTIONIST_FEATURE_ROUTES,\n },\n];\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n/** Maps to `ed-badge-2` variant attribute values in `_badge.scss`. */\nexport type BadgeTone =\n | 'primary'\n | 'success'\n | 'warning'\n | 'warning2'\n | 'danger'\n | 'opened'\n | 'light'\n | 'info'\n | 'dark'\n | 'muted';\n\n@Component({\n selector: 'eds-badge',\n standalone: true,\n template: `<span class=\"eds-badge inline-flex items-center gap-2 py-1 px-2\" [attr.data-tone]=\"tone()\"><ng-content /></span>`,\n styleUrl: './eds-badge.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EdsBadgeComponent {\n readonly tone = input<BadgeTone>('light');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger' | 'positive';\n\n@Component({\n selector: 'eds-button',\n standalone: true,\n template: `\n <button [type]=\"type()\" [disabled]=\"disabled()\" [attr.data-variant]=\"variant()\" class=\"eds-btn inline-flex items-center justify-center gap-2 py-2 px-4\">\n <ng-content />\n </button>\n `,\n styleUrl: './eds-button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EdsButtonComponent {\n readonly variant = input<ButtonVariant>('secondary');\n readonly type = input<'button' | 'submit'>('button');\n readonly disabled = input(false);\n}\n","/*\n * Public API Surface of @edvak99/voice-receptionist-widget\n *\n * Only export host-facing symbols here. Internal pages/services stay private\n * and are reached via VOICE_RECEPTIONIST_ROUTES / FEATURE_ROUTES.\n */\n\n// Config & DI\nexport {\n VOICE_RECEPTIONIST_CONFIG,\n VOICE_RECEPTIONIST_SESSION,\n type VoiceReceptionistConfig,\n type VoiceReceptionistSession,\n} from './lib/config';\nexport {\n provideVoiceReceptionist,\n type ProvideVoiceReceptionistOptions,\n} from './lib/provide-voice-receptionist';\n\n// Routes (lazy or eager mount in host router)\nexport {\n VOICE_RECEPTIONIST_ROUTES,\n VOICE_RECEPTIONIST_FEATURE_ROUTES,\n} from './lib/routes';\n\n// Shell layout (standalone host / Voice Hub)\nexport { EdsAppShellComponent } from './lib/layout/eds-app-shell.component';\nexport { EdsRouteProgressComponent } from './lib/layout/eds-route-progress.component';\n\n// Shared UI / services hosts may reuse outside routed pages\nexport { ToastService, type ToastMessage } from './lib/shared/toast.service';\nexport { ToastContainerComponent } from './lib/shared/toast-container.component';\nexport { EdsBadgeComponent, type BadgeTone } from './lib/ui/eds-badge.component';\nexport { EdsButtonComponent } from './lib/ui/eds-button.component';\nexport { IconComponent as EdIconComponent, IconComponent } from './lib/ui/ed-icon.component';\nexport { EdAvatarComponent, type EdAvatarTone, type EdAvatarShape, type EdAvatarSize } from './lib/ui/ed-avatar.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["strOrNull","now","i1","filter"],"mappings":"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"}