@alfadocs/ui-kit-debug 1.113.0 → 1.114.0

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 (308) hide show
  1. package/dist/_chunks/{anamnesis-card-BzuluoD1.js → anamnesis-card-Ddnrdfx3.js} +2 -2
  2. package/dist/_chunks/{anamnesis-card-BzuluoD1.js.map → anamnesis-card-Ddnrdfx3.js.map} +1 -1
  3. package/dist/_chunks/{anamnesis-summary-card-DdTRdNrQ.js → anamnesis-summary-card-S1H_AARG.js} +2 -2
  4. package/dist/_chunks/{anamnesis-summary-card-DdTRdNrQ.js.map → anamnesis-summary-card-S1H_AARG.js.map} +1 -1
  5. package/dist/_chunks/{anamnesis-summary-rows-DfDulR_c.js → anamnesis-summary-rows-DaS-j8Jd.js} +2 -2
  6. package/dist/_chunks/{anamnesis-summary-rows-DfDulR_c.js.map → anamnesis-summary-rows-DaS-j8Jd.js.map} +1 -1
  7. package/dist/_chunks/{antenatal-schedule-timeline-DmsY5g28.js → antenatal-schedule-timeline-DmlXxevC.js} +2 -2
  8. package/dist/_chunks/{antenatal-schedule-timeline-DmsY5g28.js.map → antenatal-schedule-timeline-DmlXxevC.js.map} +1 -1
  9. package/dist/_chunks/{bishop-score-CnIft4eV.js → bishop-score-QJu-sM1y.js} +2 -2
  10. package/dist/_chunks/{bishop-score-CnIft4eV.js.map → bishop-score-QJu-sM1y.js.map} +1 -1
  11. package/dist/_chunks/{bmi-calculator-NMkXc079.js → bmi-calculator-Ba4yoR31.js} +2 -2
  12. package/dist/_chunks/{bmi-calculator-NMkXc079.js.map → bmi-calculator-Ba4yoR31.js.map} +1 -1
  13. package/dist/_chunks/{calendar-appointment-editor-dialog-CaZm5wGR.js → calendar-appointment-editor-dialog-iyh9QqNw.js} +6 -6
  14. package/dist/_chunks/{calendar-appointment-editor-dialog-CaZm5wGR.js.map → calendar-appointment-editor-dialog-iyh9QqNw.js.map} +1 -1
  15. package/dist/_chunks/{card-C85_Ndhb.js → card-DVO3x8E-.js} +23 -19
  16. package/dist/_chunks/{card-C85_Ndhb.js.map → card-DVO3x8E-.js.map} +1 -1
  17. package/dist/_chunks/{clinical-note-card-BVkxGiGl.js → clinical-note-card-Zz5_GEz-.js} +2 -2
  18. package/dist/_chunks/{clinical-note-card-BVkxGiGl.js.map → clinical-note-card-Zz5_GEz-.js.map} +1 -1
  19. package/dist/_chunks/{connection-status-CWSU3eiq.js → connection-status-DjarASoU.js} +2 -2
  20. package/dist/_chunks/{connection-status-CWSU3eiq.js.map → connection-status-DjarASoU.js.map} +1 -1
  21. package/dist/_chunks/{contact-card-CymtNvy3.js → contact-card-Cv-Nwvac.js} +2 -2
  22. package/dist/_chunks/{contact-card-CymtNvy3.js.map → contact-card-Cv-Nwvac.js.map} +1 -1
  23. package/dist/_chunks/{contact-profile-card-CAL66GaH.js → contact-profile-card-DMXWBBkU.js} +2 -2
  24. package/dist/_chunks/{contact-profile-card-CAL66GaH.js.map → contact-profile-card-DMXWBBkU.js.map} +1 -1
  25. package/dist/_chunks/{cycle-calculator-ZMDvToIm.js → cycle-calculator-Dd-XbKmZ.js} +2 -2
  26. package/dist/_chunks/{cycle-calculator-ZMDvToIm.js.map → cycle-calculator-Dd-XbKmZ.js.map} +1 -1
  27. package/dist/_chunks/{document-preview-5xs64jME.js → document-preview-WvJKHJOP.js} +2 -2
  28. package/dist/_chunks/{document-preview-5xs64jME.js.map → document-preview-WvJKHJOP.js.map} +1 -1
  29. package/dist/_chunks/{due-date-calculator-Dr2cDa64.js → due-date-calculator-Dl6SyMHO.js} +3 -3
  30. package/dist/_chunks/{due-date-calculator-Dr2cDa64.js.map → due-date-calculator-Dl6SyMHO.js.map} +1 -1
  31. package/dist/_chunks/{entity-summary-BbqqYqF1.js → entity-summary-DGCBQDt1.js} +2 -2
  32. package/dist/_chunks/{entity-summary-BbqqYqF1.js.map → entity-summary-DGCBQDt1.js.map} +1 -1
  33. package/dist/_chunks/{face-scheme-e2M2HJGz.js → face-scheme-DlcQaQVR.js} +2 -2
  34. package/dist/_chunks/{face-scheme-e2M2HJGz.js.map → face-scheme-DlcQaQVR.js.map} +1 -1
  35. package/dist/_chunks/{fetal-weight-CkIwJgiH.js → fetal-weight-DmZzMRzB.js} +2 -2
  36. package/dist/_chunks/{fetal-weight-CkIwJgiH.js.map → fetal-weight-DmZzMRzB.js.map} +1 -1
  37. package/dist/_chunks/{finished-terminal-DXVAfhRr.js → finished-terminal-BKTFUk3S.js} +2 -2
  38. package/dist/_chunks/{finished-terminal-DXVAfhRr.js.map → finished-terminal-BKTFUk3S.js.map} +1 -1
  39. package/dist/_chunks/{forgot-password-form-YQVzSskq.js → forgot-password-form-Bc_UPax6.js} +2 -2
  40. package/dist/_chunks/{forgot-password-form-YQVzSskq.js.map → forgot-password-form-Bc_UPax6.js.map} +1 -1
  41. package/dist/_chunks/{gestational-age-calculator-Dv3IePb-.js → gestational-age-calculator-DmzYdW5e.js} +3 -3
  42. package/dist/_chunks/{gestational-age-calculator-Dv3IePb-.js.map → gestational-age-calculator-DmzYdW5e.js.map} +1 -1
  43. package/dist/_chunks/{hcg-doubling-DdyUt4gz.js → hcg-doubling-Tr72PetS.js} +2 -2
  44. package/dist/_chunks/{hcg-doubling-DdyUt4gz.js.map → hcg-doubling-Tr72PetS.js.map} +1 -1
  45. package/dist/_chunks/{heatmap-BiwC7Gdx.js → heatmap-CNxCDl0D.js} +2 -2
  46. package/dist/_chunks/{heatmap-BiwC7Gdx.js.map → heatmap-CNxCDl0D.js.map} +1 -1
  47. package/dist/_chunks/{kit-extensions-BOsUgWnE.js → kit-extensions-DZJRmDI6.js} +7 -7
  48. package/dist/_chunks/{kit-extensions-BOsUgWnE.js.map → kit-extensions-DZJRmDI6.js.map} +1 -1
  49. package/dist/_chunks/{login-dev-card-B6-zCFq3.js → login-dev-card-D7orCfJT.js} +2 -2
  50. package/dist/_chunks/{login-dev-card-B6-zCFq3.js.map → login-dev-card-D7orCfJT.js.map} +1 -1
  51. package/dist/_chunks/map-view-Bny79cWa.js +856 -0
  52. package/dist/_chunks/map-view-Bny79cWa.js.map +1 -0
  53. package/dist/_chunks/{marketplace-app-shell-C-4QF6mp.js → marketplace-app-shell-CPNVBVLH.js} +2 -2
  54. package/dist/_chunks/{marketplace-app-shell-C-4QF6mp.js.map → marketplace-app-shell-CPNVBVLH.js.map} +1 -1
  55. package/dist/_chunks/motion-is-off-BvAuNV5O.js +15 -0
  56. package/dist/_chunks/motion-is-off-BvAuNV5O.js.map +1 -0
  57. package/dist/_chunks/{notes-panel-Cz621DWV.js → notes-panel-DXMTObBv.js} +3 -3
  58. package/dist/_chunks/{notes-panel-Cz621DWV.js.map → notes-panel-DXMTObBv.js.map} +1 -1
  59. package/dist/_chunks/{operator-hero-BELhrv9o.js → operator-hero-BWayX73x.js} +71 -62
  60. package/dist/_chunks/{operator-hero-BELhrv9o.js.map → operator-hero-BWayX73x.js.map} +1 -1
  61. package/dist/_chunks/{patient-details-RsT3SaYh.js → patient-details-DdtXBNjt.js} +2 -2
  62. package/dist/_chunks/{patient-details-RsT3SaYh.js.map → patient-details-DdtXBNjt.js.map} +1 -1
  63. package/dist/_chunks/{patient-search-CxuqVUTB.js → patient-search-DDRDCjZi.js} +439 -482
  64. package/dist/_chunks/patient-search-DDRDCjZi.js.map +1 -0
  65. package/dist/_chunks/{patient-summary-card-BjZErlbt.js → patient-summary-card-CGHz-Bvm.js} +2 -2
  66. package/dist/_chunks/{patient-summary-card-BjZErlbt.js.map → patient-summary-card-CGHz-Bvm.js.map} +1 -1
  67. package/dist/_chunks/{payment-automation-upsell-u5EuFyCY.js → payment-automation-upsell-D7yaD4u1.js} +3 -3
  68. package/dist/_chunks/{payment-automation-upsell-u5EuFyCY.js.map → payment-automation-upsell-D7yaD4u1.js.map} +1 -1
  69. package/dist/_chunks/{payment-request-card-IR83TJax.js → payment-request-card-BmV2pLoM.js} +2 -2
  70. package/dist/_chunks/{payment-request-card-IR83TJax.js.map → payment-request-card-BmV2pLoM.js.map} +1 -1
  71. package/dist/_chunks/{periodontal-chart-DqdUEFxK.js → periodontal-chart-Bjz7O4wT.js} +2 -2
  72. package/dist/_chunks/{periodontal-chart-DqdUEFxK.js.map → periodontal-chart-Bjz7O4wT.js.map} +1 -1
  73. package/dist/_chunks/{periodontal-chart-card-CCkzStlm.js → periodontal-chart-card-CxEXHl2x.js} +2 -2
  74. package/dist/_chunks/{periodontal-chart-card-CCkzStlm.js.map → periodontal-chart-card-CxEXHl2x.js.map} +1 -1
  75. package/dist/_chunks/{periodontal-diagnosis-CF1d_0yl.js → periodontal-diagnosis-xheWfi4g.js} +2 -2
  76. package/dist/_chunks/{periodontal-diagnosis-CF1d_0yl.js.map → periodontal-diagnosis-xheWfi4g.js.map} +1 -1
  77. package/dist/_chunks/{periodontal-risk-chart-D2zyID0H.js → periodontal-risk-chart-BBPB9wf1.js} +2 -2
  78. package/dist/_chunks/{periodontal-risk-chart-D2zyID0H.js.map → periodontal-risk-chart-BBPB9wf1.js.map} +1 -1
  79. package/dist/_chunks/{practice-profile-hero-Bb4YyxHA.js → practice-profile-hero-Cw4NZp0A.js} +2 -2
  80. package/dist/_chunks/{practice-profile-hero-Bb4YyxHA.js.map → practice-profile-hero-Cw4NZp0A.js.map} +1 -1
  81. package/dist/_chunks/practice-results-BlxfBx-D.js +2181 -0
  82. package/dist/_chunks/practice-results-BlxfBx-D.js.map +1 -0
  83. package/dist/_chunks/{pregnancy-dating-Cs8xpZA8.js → pregnancy-dating-BvorzHrd.js} +3 -3
  84. package/dist/_chunks/{pregnancy-dating-Cs8xpZA8.js.map → pregnancy-dating-BvorzHrd.js.map} +1 -1
  85. package/dist/_chunks/{pregnancy-weight-gain-B_Zldlzq.js → pregnancy-weight-gain-DQoOM8QV.js} +2 -2
  86. package/dist/_chunks/{pregnancy-weight-gain-B_Zldlzq.js.map → pregnancy-weight-gain-DQoOM8QV.js.map} +1 -1
  87. package/dist/_chunks/{privacy-mask-DbEKI-Jv.js → privacy-mask-Dc3kdkCR.js} +2 -2
  88. package/dist/_chunks/{privacy-mask-DbEKI-Jv.js.map → privacy-mask-Dc3kdkCR.js.map} +1 -1
  89. package/dist/_chunks/{public-footer-DGjLTtNK.js → public-footer-CB7ruuLI.js} +295 -260
  90. package/dist/_chunks/public-footer-CB7ruuLI.js.map +1 -0
  91. package/dist/_chunks/{public-header.agent-_ArDD1Xr.js → public-header.agent-Db4wm6_S.js} +203 -193
  92. package/dist/_chunks/public-header.agent-Db4wm6_S.js.map +1 -0
  93. package/dist/_chunks/{registration-form-Cq5_OSIL.js → registration-form-Lw9T7IXr.js} +2 -2
  94. package/dist/_chunks/{registration-form-Cq5_OSIL.js.map → registration-form-Lw9T7IXr.js.map} +1 -1
  95. package/dist/_chunks/{reserved.agent-BMkapgom.js → reserved.agent-D2jwJPac.js} +21 -31
  96. package/dist/_chunks/reserved.agent-D2jwJPac.js.map +1 -0
  97. package/dist/_chunks/{reset-password-form-BVsL2fOJ.js → reset-password-form-C93SH0Tx.js} +2 -2
  98. package/dist/_chunks/{reset-password-form-BVsL2fOJ.js.map → reset-password-form-C93SH0Tx.js.map} +1 -1
  99. package/dist/_chunks/{reviews-panel-B03auSpQ.js → reviews-panel-CfJPEkH7.js} +2 -2
  100. package/dist/_chunks/{reviews-panel-B03auSpQ.js.map → reviews-panel-CfJPEkH7.js.map} +1 -1
  101. package/dist/_chunks/{section-card-D1sV4Voz.js → section-card-DFr2wGal.js} +2 -2
  102. package/dist/_chunks/{section-card-D1sV4Voz.js.map → section-card-DFr2wGal.js.map} +1 -1
  103. package/dist/_chunks/{send-registration-link-form-OgPomrZN.js → send-registration-link-form-DfbTjrEK.js} +2 -2
  104. package/dist/_chunks/{send-registration-link-form-OgPomrZN.js.map → send-registration-link-form-DfbTjrEK.js.map} +1 -1
  105. package/dist/_chunks/{signed-out-frame-CPow3aCZ.js → signed-out-frame-bh7fn_Px.js} +2 -2
  106. package/dist/_chunks/{signed-out-frame-CPow3aCZ.js.map → signed-out-frame-bh7fn_Px.js.map} +1 -1
  107. package/dist/_chunks/{stat-BFKZV50y.js → stat-WGLdn5Vn.js} +113 -107
  108. package/dist/_chunks/stat-WGLdn5Vn.js.map +1 -0
  109. package/dist/_chunks/{task-card-TSJjuuDe.js → task-card-DqVoitRk.js} +2 -2
  110. package/dist/_chunks/{task-card-TSJjuuDe.js.map → task-card-DqVoitRk.js.map} +1 -1
  111. package/dist/_chunks/{task-editor-gqWF1jI6.js → task-editor-D--LwVrg.js} +2 -2
  112. package/dist/_chunks/{task-editor-gqWF1jI6.js.map → task-editor-D--LwVrg.js.map} +1 -1
  113. package/dist/_chunks/{task-tray-DrXfMCuf.js → task-tray-C6j8HVMv.js} +2 -2
  114. package/dist/_chunks/{task-tray-DrXfMCuf.js.map → task-tray-C6j8HVMv.js.map} +1 -1
  115. package/dist/_chunks/{tasks-panel-OuIaydK5.js → tasks-panel-D6PuF4MQ.js} +2 -2
  116. package/dist/_chunks/{tasks-panel-OuIaydK5.js.map → tasks-panel-D6PuF4MQ.js.map} +1 -1
  117. package/dist/_chunks/{timeline-CKUaBZOx.js → timeline-AMqE-c2T.js} +2 -2
  118. package/dist/_chunks/{timeline-CKUaBZOx.js.map → timeline-AMqE-c2T.js.map} +1 -1
  119. package/dist/_chunks/{use-appointment-details-read-DvK7Looa.js → use-appointment-details-read-BK_Gw1GG.js} +5 -5
  120. package/dist/_chunks/{use-appointment-details-read-DvK7Looa.js.map → use-appointment-details-read-BK_Gw1GG.js.map} +1 -1
  121. package/dist/_chunks/{workflow-map-DWk-rZse.js → workflow-map-B4XkcET0.js} +2 -2
  122. package/dist/_chunks/{workflow-map-DWk-rZse.js.map → workflow-map-B4XkcET0.js.map} +1 -1
  123. package/dist/_chunks/{workflow-webhook-action-DILFqAVd.js → workflow-webhook-action-CtBn5JvO.js} +2 -2
  124. package/dist/_chunks/{workflow-webhook-action-DILFqAVd.js.map → workflow-webhook-action-CtBn5JvO.js.map} +1 -1
  125. package/dist/agent-catalog.json +6 -6
  126. package/dist/agent-i18n/en.json +2 -2
  127. package/dist/components/_shared/motion-is-off.d.ts +7 -0
  128. package/dist/components/_shared/motion-is-off.d.ts.map +1 -0
  129. package/dist/components/anamnesis-card/index.js +1 -1
  130. package/dist/components/anamnesis-summary-card/index.js +1 -1
  131. package/dist/components/appointment-details-panel/index.js +1 -1
  132. package/dist/components/bishop-score/index.js +1 -1
  133. package/dist/components/bmi-calculator/index.js +1 -1
  134. package/dist/components/booking/index.js +1 -1
  135. package/dist/components/booking/step-focus.d.ts +0 -6
  136. package/dist/components/booking/step-focus.d.ts.map +1 -1
  137. package/dist/components/card/card.d.ts.map +1 -1
  138. package/dist/components/card/index.js +1 -1
  139. package/dist/components/clinical-note-card/index.js +1 -1
  140. package/dist/components/connection-status/index.js +1 -1
  141. package/dist/components/contact-card/index.js +1 -1
  142. package/dist/components/contact-profile-card/index.js +1 -1
  143. package/dist/components/cycle-calculator/index.js +1 -1
  144. package/dist/components/document-preview/index.js +1 -1
  145. package/dist/components/due-date-calculator/index.js +2 -2
  146. package/dist/components/entity-summary/index.js +1 -1
  147. package/dist/components/face-scheme/index.js +1 -1
  148. package/dist/components/fetal-weight/index.js +1 -1
  149. package/dist/components/finished-terminal/index.js +1 -1
  150. package/dist/components/gestational-age-calculator/index.js +1 -1
  151. package/dist/components/hcg-doubling/index.js +1 -1
  152. package/dist/components/heatmap/index.js +1 -1
  153. package/dist/components/map-view/index.js +1 -1
  154. package/dist/components/map-view/map-view.d.ts +16 -0
  155. package/dist/components/map-view/map-view.d.ts.map +1 -1
  156. package/dist/components/notes-panel/index.js +1 -1
  157. package/dist/components/operator-hero/index.js +1 -1
  158. package/dist/components/operator-hero/operator-hero.d.ts.map +1 -1
  159. package/dist/components/patient-details/index.js +1 -1
  160. package/dist/components/patient-search/index.js +1 -1
  161. package/dist/components/patient-search/patient-search.d.ts +6 -2
  162. package/dist/components/patient-search/patient-search.d.ts.map +1 -1
  163. package/dist/components/patient-summary-card/index.js +1 -1
  164. package/dist/components/payment-card/index.js +1 -1
  165. package/dist/components/periodontal-chart/index.js +1 -1
  166. package/dist/components/periodontal-chart-card/index.js +1 -1
  167. package/dist/components/periodontal-diagnosis/index.js +1 -1
  168. package/dist/components/periodontal-risk-chart/index.js +1 -1
  169. package/dist/components/practice-profile-hero/index.js +1 -1
  170. package/dist/components/practice-results/index.js +1 -1
  171. package/dist/components/practice-results/practice-results.agent.d.ts.map +1 -1
  172. package/dist/components/practice-results/practice-results.d.ts +15 -2
  173. package/dist/components/practice-results/practice-results.d.ts.map +1 -1
  174. package/dist/components/pregnancy-dating/index.js +1 -1
  175. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  176. package/dist/components/public-footer/index.js +1 -1
  177. package/dist/components/public-footer/public-footer.d.ts +23 -0
  178. package/dist/components/public-footer/public-footer.d.ts.map +1 -1
  179. package/dist/components/public-header/index.js +1 -1
  180. package/dist/components/public-header/public-header.d.ts +7 -0
  181. package/dist/components/public-header/public-header.d.ts.map +1 -1
  182. package/dist/components/reviews-panel/index.js +1 -1
  183. package/dist/components/rich-text-editor/index.js +1 -1
  184. package/dist/components/section-card/index.js +1 -1
  185. package/dist/components/stat/index.js +1 -1
  186. package/dist/components/stat/stat.d.ts +7 -0
  187. package/dist/components/stat/stat.d.ts.map +1 -1
  188. package/dist/components/task-card/index.js +1 -1
  189. package/dist/components/task-editor/index.js +1 -1
  190. package/dist/components/task-tray/index.js +1 -1
  191. package/dist/components/tasks-panel/index.js +1 -1
  192. package/dist/components/timeline/index.js +1 -1
  193. package/dist/components/workflow/index.js +1 -1
  194. package/dist/core.css +1 -1
  195. package/dist/host-compat.css +4 -1
  196. package/dist/i18n/locales/ar.d.ts +1 -0
  197. package/dist/i18n/locales/ar.d.ts.map +1 -1
  198. package/dist/i18n/locales/ar.js +2 -1
  199. package/dist/i18n/locales/ar.js.map +1 -1
  200. package/dist/i18n/locales/de.d.ts +1 -0
  201. package/dist/i18n/locales/de.d.ts.map +1 -1
  202. package/dist/i18n/locales/de.js +2 -1
  203. package/dist/i18n/locales/de.js.map +1 -1
  204. package/dist/i18n/locales/el.d.ts +1 -0
  205. package/dist/i18n/locales/el.d.ts.map +1 -1
  206. package/dist/i18n/locales/el.js +2 -1
  207. package/dist/i18n/locales/el.js.map +1 -1
  208. package/dist/i18n/locales/en.d.ts +1 -0
  209. package/dist/i18n/locales/en.d.ts.map +1 -1
  210. package/dist/i18n/locales/en.js +1 -0
  211. package/dist/i18n/locales/en.js.map +1 -1
  212. package/dist/i18n/locales/es.d.ts +1 -0
  213. package/dist/i18n/locales/es.d.ts.map +1 -1
  214. package/dist/i18n/locales/es.js +2 -1
  215. package/dist/i18n/locales/es.js.map +1 -1
  216. package/dist/i18n/locales/fr.d.ts +1 -0
  217. package/dist/i18n/locales/fr.d.ts.map +1 -1
  218. package/dist/i18n/locales/fr.js +2 -1
  219. package/dist/i18n/locales/fr.js.map +1 -1
  220. package/dist/i18n/locales/hi.d.ts +1 -0
  221. package/dist/i18n/locales/hi.d.ts.map +1 -1
  222. package/dist/i18n/locales/hi.js +2 -1
  223. package/dist/i18n/locales/hi.js.map +1 -1
  224. package/dist/i18n/locales/it.d.ts +1 -0
  225. package/dist/i18n/locales/it.d.ts.map +1 -1
  226. package/dist/i18n/locales/it.js +2 -1
  227. package/dist/i18n/locales/it.js.map +1 -1
  228. package/dist/i18n/locales/ja.d.ts +1 -0
  229. package/dist/i18n/locales/ja.d.ts.map +1 -1
  230. package/dist/i18n/locales/ja.js +2 -1
  231. package/dist/i18n/locales/ja.js.map +1 -1
  232. package/dist/i18n/locales/nl.d.ts +1 -0
  233. package/dist/i18n/locales/nl.d.ts.map +1 -1
  234. package/dist/i18n/locales/nl.js +2 -1
  235. package/dist/i18n/locales/nl.js.map +1 -1
  236. package/dist/i18n/locales/pl.d.ts +1 -0
  237. package/dist/i18n/locales/pl.d.ts.map +1 -1
  238. package/dist/i18n/locales/pl.js +2 -1
  239. package/dist/i18n/locales/pl.js.map +1 -1
  240. package/dist/i18n/locales/pt.d.ts +1 -0
  241. package/dist/i18n/locales/pt.d.ts.map +1 -1
  242. package/dist/i18n/locales/pt.js +2 -1
  243. package/dist/i18n/locales/pt.js.map +1 -1
  244. package/dist/i18n/locales/ro.d.ts +1 -0
  245. package/dist/i18n/locales/ro.d.ts.map +1 -1
  246. package/dist/i18n/locales/ro.js +2 -1
  247. package/dist/i18n/locales/ro.js.map +1 -1
  248. package/dist/i18n/locales/ru.d.ts +1 -0
  249. package/dist/i18n/locales/ru.d.ts.map +1 -1
  250. package/dist/i18n/locales/ru.js +2 -1
  251. package/dist/i18n/locales/ru.js.map +1 -1
  252. package/dist/i18n/locales/sq.d.ts +1 -0
  253. package/dist/i18n/locales/sq.d.ts.map +1 -1
  254. package/dist/i18n/locales/sq.js +2 -1
  255. package/dist/i18n/locales/sq.js.map +1 -1
  256. package/dist/i18n/locales/sv.d.ts +1 -0
  257. package/dist/i18n/locales/sv.d.ts.map +1 -1
  258. package/dist/i18n/locales/sv.js +2 -1
  259. package/dist/i18n/locales/sv.js.map +1 -1
  260. package/dist/i18n/locales/tr.d.ts +1 -0
  261. package/dist/i18n/locales/tr.d.ts.map +1 -1
  262. package/dist/i18n/locales/tr.js +2 -1
  263. package/dist/i18n/locales/tr.js.map +1 -1
  264. package/dist/i18n/locales/zh.d.ts +1 -0
  265. package/dist/i18n/locales/zh.d.ts.map +1 -1
  266. package/dist/i18n/locales/zh.js +2 -1
  267. package/dist/i18n/locales/zh.js.map +1 -1
  268. package/dist/index.js +60 -60
  269. package/dist/locales/ar.json +2 -1
  270. package/dist/locales/de.json +2 -1
  271. package/dist/locales/el.json +2 -1
  272. package/dist/locales/en.json +1 -0
  273. package/dist/locales/es.json +2 -1
  274. package/dist/locales/fr.json +2 -1
  275. package/dist/locales/hi.json +2 -1
  276. package/dist/locales/it.json +2 -1
  277. package/dist/locales/ja.json +2 -1
  278. package/dist/locales/nl.json +2 -1
  279. package/dist/locales/pl.json +2 -1
  280. package/dist/locales/pt.json +2 -1
  281. package/dist/locales/ro.json +2 -1
  282. package/dist/locales/ru.json +2 -1
  283. package/dist/locales/sq.json +2 -1
  284. package/dist/locales/sv.json +2 -1
  285. package/dist/locales/tr.json +2 -1
  286. package/dist/locales/zh.json +2 -1
  287. package/dist/patterns/anamnesis/index.js +1 -1
  288. package/dist/patterns/calendar/index.js +1 -1
  289. package/dist/patterns/forgot-password-form/index.js +1 -1
  290. package/dist/patterns/login-form/index.js +1 -1
  291. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  292. package/dist/patterns/payment-automation-upsell/index.js +1 -1
  293. package/dist/patterns/registration-form/index.js +1 -1
  294. package/dist/patterns/reset-password-form/index.js +1 -1
  295. package/dist/patterns/send-registration-link-form/index.js +1 -1
  296. package/dist/patterns/signed-out-frame/index.js +1 -1
  297. package/dist/patterns/workflow-webhook-action/index.js +1 -1
  298. package/dist/tokens.css +1 -1
  299. package/package.json +1 -1
  300. package/dist/_chunks/map-view-Dn7aXZJw.js +0 -731
  301. package/dist/_chunks/map-view-Dn7aXZJw.js.map +0 -1
  302. package/dist/_chunks/patient-search-CxuqVUTB.js.map +0 -1
  303. package/dist/_chunks/practice-results-BByRCIuR.js +0 -1977
  304. package/dist/_chunks/practice-results-BByRCIuR.js.map +0 -1
  305. package/dist/_chunks/public-footer-DGjLTtNK.js.map +0 -1
  306. package/dist/_chunks/public-header.agent-_ArDD1Xr.js.map +0 -1
  307. package/dist/_chunks/reserved.agent-BMkapgom.js.map +0 -1
  308. package/dist/_chunks/stat-BFKZV50y.js.map +0 -1
@@ -1,1977 +0,0 @@
1
- import { jsx as t, jsxs as g, Fragment as ft } from "react/jsx-runtime";
2
- import { forwardRef as pt, useState as he, useRef as T, useMemo as P, useImperativeHandle as ht, useCallback as _, useEffect as ee } from "react";
3
- import { c as D } from "./index-D2ZczOXr.js";
4
- import { useTranslation as k } from "react-i18next";
5
- import { A as Y } from "./alert-C4WKViaS.js";
6
- import { A as Me } from "./avatar-Dp5apm1d.js";
7
- import { B as te } from "./button-DohK_Ak_.js";
8
- import { D as B } from "./dropdown-menu-CqxBthww.js";
9
- import { E as gt } from "./empty-state-DwJ5YNzz.js";
10
- import { M as vt } from "./map-view-Dn7aXZJw.js";
11
- import { R as Fe } from "./rating-CGYpg5dj.js";
12
- import { S as V } from "./sheet-uZZXaO_S.js";
13
- import { S as bt } from "./skeleton-tTWJpvAq.js";
14
- import { S as xt } from "./spinner-CoflYlEx.js";
15
- import { B as O } from "./badge-BUk4RjTS.js";
16
- import { u as yt } from "./use-media-query-CcAx5SMM.js";
17
- import { b as wt, a as Le } from "./format-price-BcFBa-WP.js";
18
- import { u as kt } from "./registry-DvAUVLHh.js";
19
- import { c as Ct } from "./createLucideIcon-DhHxpK9K.js";
20
- import { R as Rt } from "./refresh-cw-DnI0cLFC.js";
21
- import { C as Te } from "./chevron-down-DWE7GSq9.js";
22
- import { L as _e } from "./languages-CGLX6Qpe.js";
23
- import { S as Ve } from "./shield-check-DCJALLVh.js";
24
- import { H as He } from "./heart--qCA4ffe.js";
25
- import { M as ge } from "./map-pin-BaY37-Km.js";
26
- import { C as Nt } from "./calendar-clock-hbObjfGY.js";
27
- import { C as St } from "./calendar-plus-BFrIRE4r.js";
28
- /**
29
- * @license lucide-react v1.22.0 - ISC
30
- *
31
- * This source code is licensed under the ISC license.
32
- * See the LICENSE file in the root directory of this source tree.
33
- */
34
- const Lt = [
35
- [
36
- "path",
37
- {
38
- d: "M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z",
39
- key: "169xi5"
40
- }
41
- ],
42
- ["path", { d: "M15 5.764v15", key: "1pn4in" }],
43
- ["path", { d: "M9 3.236v15", key: "1uimfh" }]
44
- ], Pt = Ct("map", Lt), At = {
45
- id: "practice-results",
46
- // `scroll` backs scroll_to_result; `pick` backs focus_pin (a non-persisting
47
- // pin highlight). The active variant is consumer-owned via props, so there is
48
- // no `view_change` action — variant is read-only state, not an operation; and
49
- // there is no in-component routing, so no `navigate`.
50
- capabilities: ["scroll", "pick"],
51
- state: {
52
- variant: {
53
- type: "string",
54
- descriptionKey: "ui.agent.practiceResults.state.variant",
55
- description: "Active variant — one of `split-list-map`, `map-first`, `rich-cards`.",
56
- read: (e) => e.getVariant()
57
- }
58
- },
59
- actions: {
60
- scroll_to_result: {
61
- safety: "read",
62
- argsType: "{ id: string }",
63
- argsSchema: {
64
- type: "object",
65
- properties: {
66
- id: {
67
- type: "string",
68
- description: "Stable result id (the data-result-id of the card)."
69
- }
70
- },
71
- required: ["id"]
72
- },
73
- idempotent: !0,
74
- descriptionKey: "ui.agent.practiceResults.actions.scrollToResult",
75
- description: "Scroll the result card with the given id into the visible viewport.",
76
- examples: [
77
- { args: { id: "practice-42" }, note: "Scroll to a specific result." }
78
- ],
79
- invoke: (e, n) => {
80
- e.scrollToResult(n.id);
81
- }
82
- },
83
- focus_pin: {
84
- safety: "read",
85
- argsType: "{ id: string }",
86
- argsSchema: {
87
- type: "object",
88
- properties: {
89
- id: {
90
- type: "string",
91
- description: "Stable result id whose map pin to highlight."
92
- }
93
- },
94
- required: ["id"]
95
- },
96
- idempotent: !0,
97
- descriptionKey: "ui.agent.practiceResults.actions.focusPin",
98
- description: "Highlight the map pin for the given result id (no-op on rich-cards).",
99
- examples: [
100
- { args: { id: "practice-42" }, note: "Highlight the matching pin." }
101
- ],
102
- invoke: (e, n) => {
103
- e.focusPin(n.id);
104
- }
105
- }
106
- },
107
- domHooks: {
108
- root: {
109
- attr: "data-component",
110
- value: "practice-results",
111
- description: "Marks the PracticeResults root region. The headingLevel prop accepts 1 to 6 (default 2) for the optional results heading; use 1 when it is the page title. Card names and default error and empty-state titles use the next level, capped at 6."
112
- },
113
- instanceId: {
114
- attr: "data-component-id",
115
- sourceProp: "id",
116
- description: "Sourced from the id prop."
117
- },
118
- item: {
119
- attr: "data-result-id",
120
- description: 'Stable result id emitted on each rendered result card. Used by scroll_to_result / focus_pin to address a single result. The non-focusable card group is labelled by the practice-result-{id}-name heading, which contains data-component="practice-result-name-link": a visible link to result.href that navigates without firing onResultSelect or click telemetry. Each card also carries up to two CTA anchors: data-component="practice-result-open-cta" (practice page; absent when the consumer sets showCardOpenButton=false) and data-component="practice-result-book-cta" (booking flow; data-slot-aware="true" when it deep-links to a next slot). Card content carries its own read-only hooks: data-component="practice-result-tagline", data-component="practice-result-description", data-component="practice-result-latest-review" (the newest approved review as one truncated line under the rating, from latestReview; its text span carries the language of the review as lang; absent without latestReview), and data-component="practice-result-price" (the kit-formatted first-visit cost: firstVisitPrice supports fixed, from and range amounts plus an optional practice-written label; it takes precedence over the older firstVisitPriceCents fixed-price field. Absent when neither price is set).'
121
- }
122
- }
123
- }, It = 13, Pe = [
124
- "distance",
125
- "rating",
126
- "next-available",
127
- "price",
128
- "relevance"
129
- ];
130
- function ze(e, n, i) {
131
- const s = `languages.${e}`;
132
- return i.exists(s) ? n(s) : e.toUpperCase();
133
- }
134
- function $(e, n) {
135
- if (typeof window > "u") return;
136
- const i = window.track;
137
- try {
138
- i == null || i(e, n);
139
- } catch {
140
- }
141
- }
142
- function Z(e, n, i, s) {
143
- const r = e.findIndex((o) => o.id === n);
144
- if (r < 0) return;
145
- const a = e[r];
146
- a && ($("serp_result_clicked", { resultId: n, source: i, position: r }), s(a, i));
147
- }
148
- function Mt(e, n) {
149
- const s = (n.lat - e.lat) * Math.PI / 180, r = (n.lng - e.lng) * Math.PI / 180, a = e.lat * Math.PI / 180, o = n.lat * Math.PI / 180, d = Math.sin(s / 2), l = Math.sin(r / 2), m = d * d + Math.cos(a) * Math.cos(o) * l * l;
150
- return 2 * 6371 * Math.asin(Math.min(1, Math.sqrt(m)));
151
- }
152
- function Ft(e, n, i) {
153
- var r;
154
- const s = [];
155
- for (const a of e) {
156
- const o = a.field ?? a.key, d = (((r = i == null ? void 0 : i[a.key]) == null ? void 0 : r.length) ?? 0) > 0, l = a.type === "boolean" || a.type !== "options" && a.options.length === 0 && (d || n.some(
157
- (m) => typeof m[o] == "boolean"
158
- ));
159
- !l && a.options.length === 0 || s.push({ ...a, boolean: l, booleanField: o });
160
- }
161
- return s;
162
- }
163
- function Tt(e, n, i) {
164
- return !n || Object.keys(n).length === 0 ? e : e.filter((s) => {
165
- for (const r of i) {
166
- const a = n[r.key];
167
- if (!a || a.length === 0) continue;
168
- if (r.boolean) {
169
- if (s[r.booleanField] !== !0) return !1;
170
- continue;
171
- }
172
- const o = r.key === "insurance" ? s.insurances : r.key === "language" ? s.languages : s[r.key];
173
- if (!Array.isArray(o) || !(r.multi ? a.some((l) => o.includes(l)) : o.includes(a[0]))) return !1;
174
- }
175
- return !0;
176
- });
177
- }
178
- function _t(e) {
179
- const n = e.firstVisitPrice && Number.isFinite(e.firstVisitPrice.minCents) ? e.firstVisitPrice.minCents : e.firstVisitPriceCents;
180
- return n != null && Number.isFinite(n) && n >= 0 ? n : 1 / 0;
181
- }
182
- function Vt(e) {
183
- return e.firstVisitPrice && Number.isFinite(e.firstVisitPrice.minCents) ? e.firstVisitPrice.kind === "fixed" : !0;
184
- }
185
- function Ae(e, n) {
186
- return e == null && n == null ? 0 : e == null ? 1 : n == null ? -1 : e - n;
187
- }
188
- function Ht(e, n, i) {
189
- const s = e.map((a) => {
190
- const o = a.location ? a.location.distanceKm ?? (i ? Mt(i, a.location) : void 0) : void 0;
191
- return {
192
- result: a,
193
- distanceKm: o,
194
- price: n === "price" ? _t(a) : void 0,
195
- fixed: n === "price" ? Vt(a) : !1
196
- };
197
- }), r = (a, o) => {
198
- var d, l, m, c;
199
- switch (n) {
200
- case "distance":
201
- return Ae(a.distanceKm, o.distanceKm);
202
- case "price": {
203
- const f = a.price ?? 1 / 0, p = o.price ?? 1 / 0;
204
- return f !== p ? f - p : f !== 1 / 0 && a.fixed !== o.fixed ? a.fixed ? -1 : 1 : Ae(a.distanceKm, o.distanceKm);
205
- }
206
- case "rating": {
207
- const f = ((d = a.result.rating) == null ? void 0 : d.value) ?? -1;
208
- return (((l = o.result.rating) == null ? void 0 : l.value) ?? -1) - f;
209
- }
210
- case "next-available": {
211
- const f = ((m = a.result.nextAvailableSlot) == null ? void 0 : m.dateTime) ?? "", p = ((c = o.result.nextAvailableSlot) == null ? void 0 : c.dateTime) ?? "";
212
- return !f && !p ? 0 : f ? p ? f.localeCompare(p) : -1 : 1;
213
- }
214
- case "relevance":
215
- default:
216
- return 0;
217
- }
218
- };
219
- return [...s].sort(r).map(
220
- ({ result: a, distanceKm: o }) => o != null && a.location ? {
221
- ...a,
222
- location: { ...a.location, distanceKm: o }
223
- } : a
224
- );
225
- }
226
- function zt(e) {
227
- let n = -1 / 0, i = 1 / 0, s = -1 / 0, r = 1 / 0, a = !1;
228
- for (const o of e) {
229
- if (!o.location) continue;
230
- a = !0;
231
- const { lat: d, lng: l } = o.location;
232
- d > n && (n = d), d < i && (i = d), l > s && (s = l), l < r && (r = l);
233
- }
234
- if (a)
235
- return { north: n, south: i, east: s, west: r };
236
- }
237
- const Ot = D(
238
- "ds:flex ds:w-full ds:flex-col ds:text-[var(--foreground)] ds:gap-[var(--spacing-md)]",
239
- {
240
- variants: {
241
- variant: {
242
- "split-list-map": "",
243
- "map-first": "",
244
- "rich-cards": ""
245
- }
246
- },
247
- defaultVariants: { variant: "split-list-map" }
248
- }
249
- );
250
- function Oe({
251
- heading: e,
252
- headingLevel: n,
253
- intro: i,
254
- totalCount: s,
255
- searchCentreLabel: r
256
- }) {
257
- const { t: a } = k("ui"), o = `h${n}`;
258
- if (!e && !i && s == null) return null;
259
- const d = s != null ? r ? a("practiceResults.results.heading", {
260
- count: s,
261
- place: r
262
- }) : a("practiceResults.results.summary", { count: s }) : void 0;
263
- return /* @__PURE__ */ g("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
264
- e ? /* @__PURE__ */ t(o, { className: "type-title-section ds:m-0 ds:text-[var(--foreground)]", children: e }) : null,
265
- i ? /* @__PURE__ */ t("p", { className: "type-body ds:m-0 ds:text-[var(--muted-foreground)]", children: i }) : null,
266
- d ? /* @__PURE__ */ t(
267
- "p",
268
- {
269
- className: "type-body-sm ds:m-0 ds:text-[var(--muted-foreground)]",
270
- "aria-live": "polite",
271
- children: d
272
- }
273
- ) : null
274
- ] });
275
- }
276
- const ne = D(
277
- [
278
- "ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]",
279
- "ds:min-h-[var(--min-target-size)]",
280
- "ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]",
281
- "ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]",
282
- "ds:rounded-[var(--radius-full)]",
283
- "type-label",
284
- "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
285
- "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
286
- "ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
287
- "ds:forced-colors:focus-visible:outline-[CanvasText]"
288
- ].join(" "),
289
- {
290
- variants: {
291
- state: {
292
- idle: "ds:bg-[var(--secondary)] ds:text-[var(--foreground)] ds:border ds:border-[color:var(--border)] ds:hover:bg-[color-mix(in_srgb,var(--primary)_8%,var(--secondary))]",
293
- active: "ds:bg-[var(--primary)] ds:text-[var(--primary-foreground)] ds:border ds:border-transparent ds:font-[var(--font-weight-semibold)]"
294
- }
295
- },
296
- defaultVariants: { state: "idle" }
297
- }
298
- ), $t = D(
299
- "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]",
300
- {
301
- variants: {
302
- placement: {
303
- inline: "",
304
- // Floating chrome on map-first: soft `--popover` surface so chips
305
- // read over the map without losing contrast. Same surface as
306
- // dropdowns / sheets — themed and forced-colors safe.
307
- floating: [
308
- "ds:rounded-[var(--radius-full)]",
309
- "ds:bg-[var(--popover)] ds:shadow-[var(--shadow-md)]",
310
- "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]",
311
- "ds:pt-[var(--spacing-2xs)] ds:pb-[var(--spacing-2xs)]"
312
- ].join(" ")
313
- }
314
- },
315
- defaultVariants: { placement: "inline" }
316
- }
317
- ), Bt = D(
318
- [
319
- "ds:ms-[var(--spacing-xs)] ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]",
320
- "ds:min-h-[var(--min-target-size)] ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]",
321
- "type-label ds:text-[color:var(--muted-foreground)]",
322
- "ds:rounded-[var(--radius-sm)]",
323
- "ds:hover:text-[color:var(--foreground)]",
324
- "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
325
- "ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]"
326
- ].join(" ")
327
- );
328
- function $e({
329
- facets: e,
330
- value: n,
331
- onChange: i,
332
- floating: s
333
- }) {
334
- const { t: r } = k("ui"), a = P(() => n ?? {}, [n]), o = P(
335
- () => Object.values(a).some((c) => c && c.length > 0),
336
- [a]
337
- ), d = (c, f) => {
338
- const p = { ...a };
339
- f.length === 0 ? delete p[c] : p[c] = f, i(p), $("serp_filter_changed", { key: c, values: f });
340
- }, l = (c) => {
341
- var p;
342
- const f = (((p = a[c]) == null ? void 0 : p.length) ?? 0) > 0;
343
- d(c, f ? [] : ["true"]);
344
- }, m = (c, f) => {
345
- const p = a[c.key] ?? [], x = p.includes(f);
346
- let v;
347
- c.multi ? v = x ? p.filter((w) => w !== f) : [...p, f] : v = x ? [] : [f], d(c.key, v);
348
- };
349
- return e.length === 0 ? null : /* @__PURE__ */ g(
350
- "div",
351
- {
352
- "data-component": "practice-results-filters",
353
- role: "group",
354
- "aria-label": r("practiceResults.filters.label"),
355
- className: $t({
356
- placement: s ? "floating" : "inline"
357
- }),
358
- children: [
359
- e.map((c) => {
360
- const f = c.boolean, p = a[c.key] ?? [], x = p.length > 0;
361
- if (f)
362
- return /* @__PURE__ */ t(
363
- "button",
364
- {
365
- type: "button",
366
- "aria-pressed": x,
367
- "aria-label": c.label,
368
- onClick: () => l(c.key),
369
- className: ne({
370
- state: x ? "active" : "idle"
371
- }),
372
- children: /* @__PURE__ */ t("span", { children: c.label })
373
- },
374
- c.key
375
- );
376
- const v = x ? ` (${p.length})` : "";
377
- return /* @__PURE__ */ g(B.Root, { children: [
378
- /* @__PURE__ */ t(B.Trigger, { asChild: !0, children: /* @__PURE__ */ g(
379
- "button",
380
- {
381
- type: "button",
382
- "aria-label": `${c.label}${v}`,
383
- className: ne({
384
- state: x ? "active" : "idle"
385
- }),
386
- children: [
387
- /* @__PURE__ */ g("span", { children: [
388
- c.label,
389
- v
390
- ] }),
391
- /* @__PURE__ */ t(
392
- Te,
393
- {
394
- "aria-hidden": "true",
395
- className: "ds:size-3.5 ds:shrink-0"
396
- }
397
- )
398
- ]
399
- }
400
- ) }),
401
- /* @__PURE__ */ t(B.Content, { sideOffset: 8, align: "start", children: c.options.map((w) => /* @__PURE__ */ t(
402
- B.CheckboxItem,
403
- {
404
- checked: p.includes(w.value),
405
- onSelect: (y) => {
406
- c.multi && y.preventDefault(), m(c, w.value);
407
- },
408
- children: w.label
409
- },
410
- w.value
411
- )) })
412
- ] }, c.key);
413
- }),
414
- o ? /* @__PURE__ */ t(
415
- "button",
416
- {
417
- type: "button",
418
- onClick: () => {
419
- i({}), $("serp_filter_changed", { key: "*", values: [] });
420
- },
421
- className: Bt(),
422
- children: r("practiceResults.filters.clear")
423
- }
424
- ) : null
425
- ]
426
- }
427
- );
428
- }
429
- function fe({ value: e, options: n, onChange: i }) {
430
- const { t: s } = k("ui"), r = (a) => {
431
- switch (a) {
432
- case "distance":
433
- return s("practiceResults.sort.distance");
434
- case "rating":
435
- return s("practiceResults.sort.rating");
436
- case "next-available":
437
- return s("practiceResults.sort.nextAvailable");
438
- case "price":
439
- return s("practiceResults.sort.price");
440
- case "relevance":
441
- default:
442
- return s("practiceResults.sort.relevance");
443
- }
444
- };
445
- return /* @__PURE__ */ g(B.Root, { children: [
446
- /* @__PURE__ */ t(B.Trigger, { asChild: !0, children: /* @__PURE__ */ g(
447
- "button",
448
- {
449
- type: "button",
450
- "aria-label": `${s("practiceResults.sort.label")}: ${r(e)}`,
451
- className: ne({ state: "idle" }),
452
- children: [
453
- /* @__PURE__ */ g("span", { children: [
454
- s("practiceResults.sort.label"),
455
- ": ",
456
- r(e)
457
- ] }),
458
- /* @__PURE__ */ t(Te, { "aria-hidden": "true", className: "ds:size-3.5 ds:shrink-0" })
459
- ]
460
- }
461
- ) }),
462
- /* @__PURE__ */ t(B.Content, { sideOffset: 8, align: "end", children: /* @__PURE__ */ t(
463
- B.RadioGroup,
464
- {
465
- value: e,
466
- onValueChange: (a) => {
467
- const o = a;
468
- o !== e && (i(o), $("serp_sort_changed", { sort: o }));
469
- },
470
- children: n.map((a) => /* @__PURE__ */ t(B.RadioItem, { value: a, children: r(a) }, a))
471
- }
472
- ) })
473
- ] });
474
- }
475
- function Dt({ distanceKm: e }) {
476
- const { t: n, i18n: i } = k("ui"), s = P(() => {
477
- if (e < 1) return n("practiceResults.distance.below");
478
- const r = new Intl.NumberFormat(i.language, {
479
- maximumFractionDigits: 1
480
- }).format(e);
481
- return n("practiceResults.distance.km", { distance: r });
482
- }, [e, n, i.language]);
483
- return /* @__PURE__ */ t(O, { variant: "neutral", leading: /* @__PURE__ */ t(ge, { "aria-hidden": "true" }), children: s });
484
- }
485
- const Ie = D(
486
- [
487
- "ds:w-[12rem] ds:h-[8rem] ds:shrink-0",
488
- "ds:rounded-[var(--radius-md)] ds:overflow-hidden"
489
- ].join(" "),
490
- {
491
- variants: {
492
- state: {
493
- // Tonal address-block placeholder — renders the MapPin glyph
494
- // + address text on a `--muted` surface. Used when the consumer
495
- // hasn't provided `googleMapsApiKey`; carries the spatial cue
496
- // (location is here, even if we can't draw the map).
497
- placeholder: "ds:flex ds:flex-col ds:items-start ds:justify-end ds:gap-[var(--spacing-2xs)] ds:bg-[var(--muted)] ds:text-[var(--muted-foreground)] ds:p-[var(--spacing-sm)]",
498
- image: "ds:[object-fit:cover]"
499
- }
500
- },
501
- defaultVariants: { state: "placeholder" }
502
- }
503
- );
504
- function Et() {
505
- if (typeof document > "u") return "4945a3";
506
- const e = getComputedStyle(document.documentElement).getPropertyValue("--map-marker-color").trim(), n = /^#?([0-9a-fA-F]{6})$/.exec(e);
507
- return n ? n[1] : "4945a3";
508
- }
509
- function jt({
510
- apiKey: e,
511
- center: n,
512
- zoom: i = 14,
513
- address: s,
514
- addressLang: r
515
- }) {
516
- const { t: a } = k("ui");
517
- if (!e)
518
- return /* @__PURE__ */ g(
519
- "div",
520
- {
521
- "aria-hidden": s ? void 0 : "true",
522
- className: Ie({ state: "placeholder" }),
523
- children: [
524
- /* @__PURE__ */ t(ge, { "aria-hidden": "true", className: "ds:size-5 ds:shrink-0" }),
525
- s ? /* @__PURE__ */ t(
526
- "span",
527
- {
528
- lang: r,
529
- dir: "auto",
530
- className: "type-meta ds:[overflow-wrap:anywhere]",
531
- children: s
532
- }
533
- ) : null
534
- ]
535
- }
536
- );
537
- const o = Et(), d = `https://maps.googleapis.com/maps/api/staticmap?center=${n.lat},${n.lng}&zoom=${i}&size=240x160&scale=2&markers=color:0x${o}%7C${n.lat},${n.lng}&key=${encodeURIComponent(e)}`;
538
- return /* @__PURE__ */ t(
539
- "img",
540
- {
541
- src: d,
542
- alt: a("practiceResults.thumbnail.alt"),
543
- loading: "lazy",
544
- decoding: "async",
545
- width: 240,
546
- height: 160,
547
- className: Ie({ state: "image" })
548
- }
549
- );
550
- }
551
- function Kt({ tagline: e, lang: n }) {
552
- return e ? /* @__PURE__ */ t(
553
- "span",
554
- {
555
- "data-component": "practice-result-tagline",
556
- lang: n,
557
- dir: "auto",
558
- className: "type-body-sm ds:font-[var(--font-weight-medium)] ds:text-[var(--foreground)]",
559
- children: e
560
- }
561
- ) : null;
562
- }
563
- function qt(e) {
564
- if (typeof e != "string") return;
565
- const n = e.trim().replace(/_/g, "-");
566
- if (n)
567
- try {
568
- return Intl.getCanonicalLocales(n)[0] ? n : void 0;
569
- } catch {
570
- return;
571
- }
572
- }
573
- function Be({
574
- review: e
575
- }) {
576
- const { t: n } = k("ui"), i = typeof (e == null ? void 0 : e.text) == "string" ? e.text.trim() : "";
577
- return !e || !i ? null : /* @__PURE__ */ g(
578
- "p",
579
- {
580
- "data-component": "practice-result-latest-review",
581
- className: "type-body-sm ds:m-0 ds:flex ds:min-w-0 ds:gap-[var(--spacing-xs)] ds:text-[var(--muted-foreground)]",
582
- children: [
583
- /* @__PURE__ */ t("span", { className: "ds:shrink-0", children: n("practiceResults.card.latestReview") }),
584
- " ",
585
- /* @__PURE__ */ t(
586
- "span",
587
- {
588
- lang: qt(e.lang),
589
- dir: "auto",
590
- className: "ds:min-w-0 ds:truncate",
591
- children: i
592
- }
593
- )
594
- ]
595
- }
596
- );
597
- }
598
- const Ut = D(
599
- "type-body-sm ds:m-0 ds:text-[var(--muted-foreground)] ds:whitespace-pre-line ds:break-words",
600
- {
601
- variants: {
602
- density: {
603
- compact: "ds:line-clamp-2",
604
- rich: "ds:line-clamp-3"
605
- }
606
- },
607
- defaultVariants: { density: "compact" }
608
- }
609
- );
610
- function De({
611
- description: e,
612
- density: n,
613
- lang: i
614
- }) {
615
- return e ? /* @__PURE__ */ t(
616
- "p",
617
- {
618
- "data-component": "practice-result-description",
619
- lang: i,
620
- dir: "auto",
621
- className: Ut({ density: n }),
622
- children: e
623
- }
624
- ) : null;
625
- }
626
- function Gt(e, n, i, s) {
627
- if (e.kind === "fixed")
628
- return wt(
629
- e.minCents,
630
- n,
631
- i,
632
- s("common.freeOfCharge")
633
- );
634
- const r = Le(e.minCents, n, i);
635
- return e.kind === "range" && e.maxCents != null && Number.isFinite(e.maxCents) && e.maxCents > e.minCents ? s("practiceResults.card.priceRange", {
636
- min: r,
637
- max: Le(e.maxCents, n, i)
638
- }) : s("practiceResults.card.priceFrom", { price: r });
639
- }
640
- const Zt = D(
641
- "ds:min-w-0 ds:max-w-full ds:[overflow-wrap:anywhere]",
642
- {
643
- variants: {
644
- practiceWritten: { true: "ds:truncate" }
645
- }
646
- }
647
- );
648
- function Wt({
649
- price: e,
650
- cents: n,
651
- currencyCode: i = "EUR"
652
- }) {
653
- var p;
654
- const { t: s, i18n: r } = k("ui"), a = e && Number.isFinite(e.minCents) ? e : void 0, o = (a == null ? void 0 : a.kind) ?? "fixed", d = (a == null ? void 0 : a.minCents) ?? n, l = a == null ? void 0 : a.maxCents, m = P(
655
- () => d == null ? void 0 : Gt(
656
- { kind: o, minCents: d, maxCents: l },
657
- i,
658
- r.language ?? "en",
659
- s
660
- ),
661
- [o, d, l, i, r.language, s]
662
- );
663
- if (m === void 0) return null;
664
- const c = (p = a == null ? void 0 : a.label) == null ? void 0 : p.trim().replace(/:$/, "").trim(), f = c || s("practiceResults.card.firstVisitPrice");
665
- return /* @__PURE__ */ g(
666
- "span",
667
- {
668
- "data-component": "practice-result-price",
669
- className: "type-body-sm ds:flex ds:min-w-0 ds:max-w-full ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)] ds:text-start ds:text-[var(--muted-foreground)] ds:sm:@min-[280px]/result-heading:max-w-[45%] ds:sm:@min-[280px]/result-heading:items-end ds:sm:@min-[280px]/result-heading:text-end",
670
- children: [
671
- /* @__PURE__ */ t(
672
- "span",
673
- {
674
- dir: "auto",
675
- title: f,
676
- className: Zt({
677
- practiceWritten: !!c
678
- }),
679
- children: f
680
- }
681
- ),
682
- /* @__PURE__ */ t("span", { className: "ds:sr-only", children: ": " }),
683
- /* @__PURE__ */ t(
684
- O,
685
- {
686
- variant: "accentSoft",
687
- size: "lg",
688
- dir: "auto",
689
- className: "ds:h-auto ds:min-h-6 ds:min-w-0 ds:max-w-full ds:whitespace-normal ds:[overflow-wrap:anywhere]",
690
- children: m
691
- }
692
- )
693
- ]
694
- }
695
- );
696
- }
697
- function Ee({ time: e }) {
698
- const { t: n } = k("ui");
699
- return /* @__PURE__ */ g("span", { className: "type-body-sm ds:text-[var(--muted-foreground)] ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]", children: [
700
- /* @__PURE__ */ t(
701
- Nt,
702
- {
703
- "aria-hidden": "true",
704
- className: "ds:size-4 ds:text-[var(--primary)]"
705
- }
706
- ),
707
- n("practiceResults.nextSlot.summary", { time: e })
708
- ] });
709
- }
710
- function je({
711
- result: e,
712
- openLabel: n,
713
- bookLabel: i,
714
- nextSlotText: s,
715
- onOpenClick: r,
716
- onBookClick: a
717
- }) {
718
- const { t: o } = k("ui"), d = e.nextAvailableSlot, l = (d == null ? void 0 : d.bookingHref) ?? e.bookingHref ?? e.href, m = d && s ? o("practiceResults.nextSlot.cta", { time: s }) : i;
719
- return /* @__PURE__ */ g("div", { className: "ds:mt-[var(--spacing-xs)] ds:flex ds:flex-wrap ds:items-center ds:justify-end ds:gap-[var(--spacing-xs)]", children: [
720
- n !== void 0 ? /* @__PURE__ */ t(te, { intent: "secondary", size: "sm", asChild: !0, onClick: r, children: /* @__PURE__ */ g("a", { href: e.href, "data-component": "practice-result-open-cta", children: [
721
- n,
722
- " ",
723
- /* @__PURE__ */ t("span", { className: "ds:sr-only", children: e.name })
724
- ] }) }) : null,
725
- /* @__PURE__ */ t(
726
- te,
727
- {
728
- intent: "primary",
729
- size: "sm",
730
- asChild: !0,
731
- startIcon: /* @__PURE__ */ t(St, { "aria-hidden": "true" }),
732
- onClick: a,
733
- children: /* @__PURE__ */ g(
734
- "a",
735
- {
736
- href: l,
737
- "data-component": "practice-result-book-cta",
738
- "data-slot-aware": d ? "true" : void 0,
739
- children: [
740
- m,
741
- " ",
742
- /* @__PURE__ */ t("span", { className: "ds:sr-only", children: e.name })
743
- ]
744
- }
745
- )
746
- }
747
- )
748
- ] });
749
- }
750
- const Ke = D(
751
- [
752
- "ds:@container/result-card ds:relative ds:flex ds:w-full ds:cursor-pointer",
753
- "ds:rounded-[var(--radius-lg)]",
754
- "ds:bg-[var(--card)] ds:text-[var(--card-foreground)]",
755
- "ds:border ds:border-[color:var(--card-border)]",
756
- "ds:p-[var(--spacing-md)]",
757
- "ds:gap-[var(--spacing-md)]",
758
- "ds:transition-[box-shadow,border-color] ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
759
- "ds:hover:shadow-[var(--shadow-md)]",
760
- "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
761
- "ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
762
- "ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
763
- // Use `data-highlighted` for the pin↔card sync visual so consumers
764
- // can override (e.g. dim siblings) without fighting the kit.
765
- "ds:data-[highlighted=true]:border-[color:var(--primary)]",
766
- "ds:data-[highlighted=true]:shadow-[var(--shadow-md)]",
767
- "ds:forced-colors:focus-visible:outline-[CanvasText]"
768
- ].join(" "),
769
- {
770
- variants: {
771
- density: {
772
- compact: "",
773
- rich: "ds:p-[var(--spacing-lg)] ds:gap-[var(--spacing-lg)]"
774
- }
775
- },
776
- defaultVariants: { density: "compact" }
777
- }
778
- ), Qt = D([
779
- "ds:text-[var(--foreground)] ds:no-underline ds:hover:underline",
780
- "ds:rounded-[var(--radius-xs)]",
781
- "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
782
- "ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
783
- "ds:forced-colors:focus-visible:outline-[CanvasText]"
784
- ]);
785
- function Jt({
786
- result: e,
787
- headingLevel: n
788
- }) {
789
- const i = `h${xe(n)}`;
790
- return /* @__PURE__ */ t(
791
- i,
792
- {
793
- id: `practice-result-${e.id}-name`,
794
- dir: "auto",
795
- className: "type-title-card ds:m-0 ds:min-w-0 ds:[overflow-wrap:anywhere] ds:text-[var(--foreground)]",
796
- children: /* @__PURE__ */ t(
797
- "a",
798
- {
799
- href: e.href,
800
- dir: "auto",
801
- "data-component": "practice-result-name-link",
802
- className: Qt(),
803
- children: e.name
804
- }
805
- )
806
- }
807
- );
808
- }
809
- function qe({
810
- result: e,
811
- headingLevel: n
812
- }) {
813
- var i, s;
814
- return /* @__PURE__ */ t(
815
- "div",
816
- {
817
- "data-component": "practice-result-heading",
818
- className: "ds:@container/result-heading ds:min-w-0 ds:flex-1",
819
- children: /* @__PURE__ */ g("div", { className: "ds:flex ds:min-w-0 ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)] ds:sm:@min-[280px]/result-heading:flex-row ds:sm:@min-[280px]/result-heading:gap-[var(--spacing-md)]", children: [
820
- /* @__PURE__ */ g("div", { className: "ds:flex ds:min-w-0 ds:w-full ds:flex-1 ds:flex-col ds:gap-[var(--spacing-2xs)]", children: [
821
- /* @__PURE__ */ g("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
822
- /* @__PURE__ */ t(Jt, { result: e, headingLevel: n }),
823
- ((i = e.location) == null ? void 0 : i.distanceKm) != null ? /* @__PURE__ */ t(Dt, { distanceKm: e.location.distanceKm }) : null
824
- ] }),
825
- e.subtitle ? /* @__PURE__ */ t("span", { className: "type-body-sm ds:text-[var(--muted-foreground)]", children: e.subtitle }) : null,
826
- /* @__PURE__ */ t(Kt, { tagline: e.tagline, lang: e.contentLang }),
827
- (s = e.location) != null && s.address ? /* @__PURE__ */ g(
828
- "span",
829
- {
830
- "data-component": "practice-result-address",
831
- className: "type-meta ds:text-[var(--muted-foreground)] ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]",
832
- children: [
833
- /* @__PURE__ */ t(ge, { "aria-hidden": "true", className: "ds:size-3.5 ds:shrink-0" }),
834
- /* @__PURE__ */ t(
835
- "span",
836
- {
837
- lang: e.contentLang,
838
- dir: "auto",
839
- className: "ds:min-w-0 ds:[overflow-wrap:anywhere]",
840
- children: e.location.address
841
- }
842
- )
843
- ]
844
- }
845
- ) : null
846
- ] }),
847
- /* @__PURE__ */ t(
848
- Wt,
849
- {
850
- price: e.firstVisitPrice,
851
- cents: e.firstVisitPriceCents,
852
- currencyCode: e.currencyCode
853
- }
854
- )
855
- ] })
856
- }
857
- );
858
- }
859
- function Ue(e) {
860
- const n = e.target.closest(
861
- 'a, button, [role="button"], input, select, textarea, label'
862
- );
863
- return n !== null && n !== e.currentTarget && e.currentTarget.contains(n);
864
- }
865
- function Xt({
866
- result: e,
867
- headingLevel: n,
868
- highlighted: i,
869
- onSelect: s,
870
- onOpenClick: r,
871
- onHover: a,
872
- density: o = "compact",
873
- openLabel: d,
874
- bookLabel: l,
875
- onBookClick: m,
876
- nextSlotText: c,
877
- maxInsuranceChips: f = 3,
878
- maxLanguageChips: p = 4,
879
- children: x
880
- }) {
881
- var q, U, G, E;
882
- const { t: v, i18n: w } = k("ui"), y = e.rating, R = (((q = e.languages) == null ? void 0 : q.length) ?? 0) > 0, b = (((U = e.insurances) == null ? void 0 : U.length) ?? 0) > 0, u = e.specializedInFearPatients, N = R || b || u, A = (e.languages ?? []).slice(0, p), H = (((G = e.languages) == null ? void 0 : G.length) ?? 0) - A.length, z = (e.insurances ?? []).slice(0, f), I = (((E = e.insurances) == null ? void 0 : E.length) ?? 0) - z.length;
883
- return (
884
- // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events -- card is role="group" by design (axe nested-interactive); click handler is mouse-only sync.
885
- /* @__PURE__ */ g(
886
- "div",
887
- {
888
- "data-component": "practice-result-card",
889
- "data-result-id": e.id,
890
- "data-highlighted": i ? "true" : "false",
891
- role: "group",
892
- "aria-labelledby": `practice-result-${e.id}-name`,
893
- onClick: (M) => {
894
- Ue(M) || s();
895
- },
896
- onMouseEnter: a,
897
- onFocus: a,
898
- className: Ke({ density: o }),
899
- children: [
900
- /* @__PURE__ */ t(
901
- Me,
902
- {
903
- src: e.imageUrl,
904
- alt: e.imageAlt,
905
- name: e.name,
906
- size: "lg",
907
- shape: "rounded",
908
- ratio: "4:3",
909
- width: 64,
910
- height: 48
911
- }
912
- ),
913
- /* @__PURE__ */ g("div", { className: "ds:flex ds:min-w-0 ds:flex-1 ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
914
- /* @__PURE__ */ t(qe, { result: e, headingLevel: n }),
915
- y && y.count > 0 ? /* @__PURE__ */ t(
916
- Fe,
917
- {
918
- value: y.value,
919
- reviews: { count: y.count },
920
- size: "sm"
921
- }
922
- ) : null,
923
- /* @__PURE__ */ t(Be, { review: e.latestReview }),
924
- N ? /* @__PURE__ */ g("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
925
- A.map((M) => /* @__PURE__ */ t(
926
- O,
927
- {
928
- variant: "neutral",
929
- leading: /* @__PURE__ */ t(_e, { "aria-hidden": "true" }),
930
- children: ze(M, v, w)
931
- },
932
- `lang-${M}`
933
- )),
934
- H > 0 ? /* @__PURE__ */ t(O, { variant: "neutral", children: `+${H}` }) : null,
935
- z.map((M) => /* @__PURE__ */ t(
936
- O,
937
- {
938
- variant: "info",
939
- leading: /* @__PURE__ */ t(Ve, { "aria-hidden": "true" }),
940
- children: M
941
- },
942
- `ins-${M}`
943
- )),
944
- I > 0 ? /* @__PURE__ */ t(O, { variant: "neutral", children: `+${I}` }) : null,
945
- u ? /* @__PURE__ */ t(O, { variant: "info", leading: /* @__PURE__ */ t(He, { "aria-hidden": "true" }), children: v("practiceResults.fearPatient.label") }) : null
946
- ] }) : null,
947
- /* @__PURE__ */ t(
948
- De,
949
- {
950
- description: e.description,
951
- density: "compact",
952
- lang: e.contentLang
953
- }
954
- ),
955
- e.nextAvailableSlot && c ? /* @__PURE__ */ t(Ee, { time: c }) : null,
956
- x,
957
- /* @__PURE__ */ t(
958
- je,
959
- {
960
- result: e,
961
- openLabel: d,
962
- bookLabel: l,
963
- nextSlotText: c,
964
- onOpenClick: r,
965
- onBookClick: m
966
- }
967
- )
968
- ] })
969
- ]
970
- }
971
- )
972
- );
973
- }
974
- function Yt({
975
- result: e,
976
- headingLevel: n,
977
- apiKey: i,
978
- highlighted: s,
979
- onSelect: r,
980
- onOpenClick: a,
981
- onBookClick: o,
982
- onHover: d,
983
- openLabel: l,
984
- bookLabel: m
985
- }) {
986
- var R, b;
987
- const { t: c, i18n: f } = k("ui"), p = P(() => {
988
- if (e.nextAvailableSlot)
989
- try {
990
- return new Intl.DateTimeFormat(f.language, {
991
- weekday: "short",
992
- hour: "numeric",
993
- minute: "numeric"
994
- }).format(new Date(e.nextAvailableSlot.dateTime));
995
- } catch {
996
- return e.nextAvailableSlot.dateTime;
997
- }
998
- }, [e.nextAvailableSlot, f.language]), x = (((R = e.languages) == null ? void 0 : R.length) ?? 0) > 0, v = (((b = e.insurances) == null ? void 0 : b.length) ?? 0) > 0, w = e.specializedInFearPatients, y = x || v || w;
999
- return (
1000
- // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events -- card is role="group" by design (axe nested-interactive); click handler is mouse-only sync.
1001
- /* @__PURE__ */ g(
1002
- "div",
1003
- {
1004
- "data-component": "practice-result-card",
1005
- "data-result-id": e.id,
1006
- "data-density": "rich",
1007
- "data-highlighted": s ? "true" : "false",
1008
- role: "group",
1009
- "aria-labelledby": `practice-result-${e.id}-name`,
1010
- onClick: (u) => {
1011
- Ue(u) || r();
1012
- },
1013
- onMouseEnter: d,
1014
- onFocus: d,
1015
- className: Ke({ density: "rich" }),
1016
- children: [
1017
- e.location ? /* @__PURE__ */ t("div", { className: "ds:hidden ds:@min-[640px]/result-card:block", children: /* @__PURE__ */ t(
1018
- jt,
1019
- {
1020
- apiKey: i,
1021
- center: {
1022
- lat: e.location.lat,
1023
- lng: e.location.lng
1024
- },
1025
- address: e.location.address,
1026
- addressLang: e.contentLang
1027
- }
1028
- ) }) : null,
1029
- /* @__PURE__ */ g("div", { className: "ds:flex ds:min-w-0 ds:flex-1 ds:flex-col ds:gap-[var(--spacing-sm)]", children: [
1030
- /* @__PURE__ */ g("div", { className: "ds:flex ds:items-start ds:gap-[var(--spacing-md)]", children: [
1031
- /* @__PURE__ */ t(
1032
- Me,
1033
- {
1034
- src: e.imageUrl,
1035
- alt: e.imageAlt,
1036
- name: e.name,
1037
- size: "md",
1038
- shape: "rounded",
1039
- ratio: "4:3",
1040
- width: 53,
1041
- height: 40
1042
- }
1043
- ),
1044
- /* @__PURE__ */ t(qe, { result: e, headingLevel: n })
1045
- ] }),
1046
- e.rating && e.rating.count > 0 ? /* @__PURE__ */ t(
1047
- Fe,
1048
- {
1049
- value: e.rating.value,
1050
- reviews: { count: e.rating.count },
1051
- size: "md"
1052
- }
1053
- ) : null,
1054
- /* @__PURE__ */ t(Be, { review: e.latestReview }),
1055
- y ? /* @__PURE__ */ g("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
1056
- x ? (e.languages ?? []).map((u) => /* @__PURE__ */ t(
1057
- O,
1058
- {
1059
- variant: "neutral",
1060
- leading: /* @__PURE__ */ t(_e, { "aria-hidden": "true" }),
1061
- children: ze(u, c, f)
1062
- },
1063
- `lang-${u}`
1064
- )) : null,
1065
- v ? (e.insurances ?? []).map((u) => /* @__PURE__ */ t(
1066
- O,
1067
- {
1068
- variant: "info",
1069
- leading: /* @__PURE__ */ t(Ve, { "aria-hidden": "true" }),
1070
- children: u
1071
- },
1072
- `ins-${u}`
1073
- )) : null,
1074
- w ? /* @__PURE__ */ t(O, { variant: "info", leading: /* @__PURE__ */ t(He, { "aria-hidden": "true" }), children: c("practiceResults.fearPatient.label") }) : null
1075
- ] }) : null,
1076
- /* @__PURE__ */ t(
1077
- De,
1078
- {
1079
- description: e.description,
1080
- density: "rich",
1081
- lang: e.contentLang
1082
- }
1083
- ),
1084
- e.nextAvailableSlot && p ? /* @__PURE__ */ t(Ee, { time: p }) : null,
1085
- /* @__PURE__ */ t(
1086
- je,
1087
- {
1088
- result: e,
1089
- openLabel: l,
1090
- bookLabel: m,
1091
- nextSlotText: p,
1092
- onOpenClick: a,
1093
- onBookClick: o
1094
- }
1095
- )
1096
- ] })
1097
- ]
1098
- }
1099
- )
1100
- );
1101
- }
1102
- function ve({
1103
- results: e,
1104
- headingLevel: n,
1105
- highlightedId: i,
1106
- onCardHover: s,
1107
- onCardSelect: r,
1108
- onCardOpenClick: a,
1109
- onCardBookClick: o,
1110
- openLabel: d,
1111
- bookLabel: l,
1112
- formatNextSlot: m,
1113
- onLoadMore: c,
1114
- loadingMore: f,
1115
- loadingSkeletons: p,
1116
- density: x = "compact",
1117
- apiKey: v,
1118
- containerRef: w
1119
- }) {
1120
- const { t: y } = k("ui"), R = T(null);
1121
- return ee(() => {
1122
- if (!c) return;
1123
- const b = R.current;
1124
- if (!b || typeof IntersectionObserver > "u") return;
1125
- const u = new IntersectionObserver(
1126
- (N) => {
1127
- for (const A of N)
1128
- A.isIntersecting && ($("serp_load_more", {
1129
- currentCount: e.length
1130
- }), c());
1131
- },
1132
- { root: null, rootMargin: "200px" }
1133
- );
1134
- return u.observe(b), () => u.disconnect();
1135
- }, [c, e.length]), p ? /* @__PURE__ */ t(
1136
- "div",
1137
- {
1138
- role: "status",
1139
- "aria-live": "polite",
1140
- "aria-label": y("practiceResults.loading"),
1141
- className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]",
1142
- children: Array.from({ length: 4 }).map((b, u) => /* @__PURE__ */ t(
1143
- bt,
1144
- {
1145
- variant: "rounded",
1146
- height: x === "rich" ? "11rem" : "7rem"
1147
- },
1148
- `pr-skel-${u}`
1149
- ))
1150
- }
1151
- ) : /* @__PURE__ */ g(
1152
- "div",
1153
- {
1154
- ref: w,
1155
- "data-component": "practice-results-list",
1156
- role: "list",
1157
- "aria-label": y("practiceResults.list.label"),
1158
- className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)] ds:overflow-y-auto",
1159
- children: [
1160
- e.map((b) => /* @__PURE__ */ t("div", { role: "listitem", children: x === "rich" ? /* @__PURE__ */ t(
1161
- Yt,
1162
- {
1163
- result: b,
1164
- headingLevel: n,
1165
- apiKey: v,
1166
- highlighted: i === b.id,
1167
- onSelect: () => r(b.id),
1168
- onOpenClick: () => a(b.id),
1169
- onBookClick: () => o(b.id),
1170
- onHover: () => s(b.id),
1171
- openLabel: d,
1172
- bookLabel: l
1173
- }
1174
- ) : /* @__PURE__ */ t(
1175
- Xt,
1176
- {
1177
- result: b,
1178
- headingLevel: n,
1179
- highlighted: i === b.id,
1180
- onSelect: () => r(b.id),
1181
- onOpenClick: () => a(b.id),
1182
- onBookClick: () => o(b.id),
1183
- onHover: () => s(b.id),
1184
- openLabel: d,
1185
- bookLabel: l,
1186
- nextSlotText: m(b)
1187
- }
1188
- ) }, b.id)),
1189
- c ? /* @__PURE__ */ t(
1190
- "div",
1191
- {
1192
- ref: R,
1193
- "aria-hidden": "true",
1194
- className: "ds:flex ds:items-center ds:justify-center ds:py-[var(--spacing-md)]",
1195
- children: f ? /* @__PURE__ */ t(xt, { size: "md", variant: "pulse" }) : /* @__PURE__ */ t("span", { className: "ds:size-1" })
1196
- }
1197
- ) : null
1198
- ]
1199
- }
1200
- );
1201
- }
1202
- function pe({
1203
- results: e,
1204
- searchCentre: n,
1205
- zoom: i,
1206
- apiKey: s,
1207
- mapId: r,
1208
- highlightedId: a,
1209
- onPinClick: o,
1210
- onPinHover: d,
1211
- onPinFirstInteract: l,
1212
- onBoundsChange: m,
1213
- consentGranted: c,
1214
- onConsentRequest: f,
1215
- mapHandleRef: p
1216
- }) {
1217
- const { t: x } = k("ui"), v = P(
1218
- () => e.filter(
1219
- (u) => !!u.location
1220
- ).map((u) => ({
1221
- id: u.id,
1222
- position: {
1223
- lat: u.location.lat,
1224
- lng: u.location.lng
1225
- },
1226
- label: u.name
1227
- })),
1228
- [e]
1229
- ), w = P(
1230
- () => v.map((u) => ({ ...u.position, id: u.id })),
1231
- [v]
1232
- ), y = P(
1233
- () => v.map((u) => u.id).sort().join("|"),
1234
- [v]
1235
- ), R = P(() => {
1236
- if (n) return n;
1237
- const u = zt(e);
1238
- return u ? {
1239
- lat: (u.north + u.south) / 2,
1240
- lng: (u.east + u.west) / 2
1241
- } : { lat: 45.4642, lng: 9.19 };
1242
- }, [e, n]), b = _(
1243
- (u, { userInteraction: N }) => {
1244
- m == null || m(u), N && $("serp_map_panned", { bounds: u });
1245
- },
1246
- [m]
1247
- );
1248
- return /* @__PURE__ */ t(
1249
- "div",
1250
- {
1251
- "data-component": "practice-results-map-panel",
1252
- className: "ds:relative ds:flex ds:size-full ds:min-h-[24rem] ds:flex-col",
1253
- children: /* @__PURE__ */ t(
1254
- vt,
1255
- {
1256
- ref: p,
1257
- apiKey: s ?? "",
1258
- mapId: r,
1259
- center: R,
1260
- zoom: i,
1261
- markers: v,
1262
- fitToPoints: w,
1263
- fitKey: y,
1264
- selectedMarkerId: a,
1265
- consentGranted: !!c,
1266
- onConsentRequest: f,
1267
- onBoundsChange: b,
1268
- onMarkerClick: (u) => {
1269
- u != null && (d(u), l(u), o(u));
1270
- },
1271
- ariaLabel: x("practiceResults.map.label"),
1272
- size: "fill",
1273
- surface: "bordered",
1274
- className: "ds:size-full"
1275
- }
1276
- )
1277
- }
1278
- );
1279
- }
1280
- function be({
1281
- variantBodyProps: e
1282
- }) {
1283
- const {
1284
- facets: n,
1285
- value: i,
1286
- sortOptions: s,
1287
- onChange: r,
1288
- heading: a,
1289
- intro: o,
1290
- totalCount: d,
1291
- searchCentre: l
1292
- } = e;
1293
- return !a && !o && d == null && n.length === 0 && s.length === 0 ? null : /* @__PURE__ */ g("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]", children: [
1294
- /* @__PURE__ */ t(
1295
- Oe,
1296
- {
1297
- heading: a,
1298
- headingLevel: e.headingLevel,
1299
- intro: o,
1300
- totalCount: d,
1301
- searchCentreLabel: l == null ? void 0 : l.label
1302
- }
1303
- ),
1304
- n.length > 0 ? /* @__PURE__ */ g("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]", children: [
1305
- /* @__PURE__ */ t(
1306
- $e,
1307
- {
1308
- facets: n,
1309
- value: i.facets,
1310
- onChange: (m) => r({ ...i, facets: m })
1311
- }
1312
- ),
1313
- s.length > 0 ? /* @__PURE__ */ t(
1314
- fe,
1315
- {
1316
- options: s,
1317
- value: i.sort ?? "relevance",
1318
- onChange: (m) => r({ ...i, sort: m })
1319
- }
1320
- ) : null
1321
- ] }) : s.length > 0 ? /* @__PURE__ */ t("div", { className: "ds:flex ds:justify-end", children: /* @__PURE__ */ t(
1322
- fe,
1323
- {
1324
- options: s,
1325
- value: i.sort ?? "relevance",
1326
- onChange: (m) => r({ ...i, sort: m })
1327
- }
1328
- ) }) : null
1329
- ] });
1330
- }
1331
- function xe(e) {
1332
- return Math.min(e + 1, 6);
1333
- }
1334
- function ye({
1335
- headingLevel: e
1336
- }) {
1337
- const { t: n } = k("ui");
1338
- return /* @__PURE__ */ t(
1339
- gt,
1340
- {
1341
- variant: "no-results",
1342
- headingLevel: xe(e),
1343
- title: n("practiceResults.empty.title"),
1344
- description: n("practiceResults.empty.description")
1345
- }
1346
- );
1347
- }
1348
- function we({
1349
- onRetry: e,
1350
- headingLevel: n
1351
- }) {
1352
- const { t: i } = k("ui"), s = xe(n);
1353
- return /* @__PURE__ */ g(Y, { variant: "error", children: [
1354
- /* @__PURE__ */ t(Y.Title, { as: `h${s}`, children: i("practiceResults.error.title") }),
1355
- /* @__PURE__ */ t(Y.Description, { children: i("practiceResults.error.description") }),
1356
- e ? /* @__PURE__ */ t(Y.Action, { children: /* @__PURE__ */ t(
1357
- te,
1358
- {
1359
- intent: "secondary",
1360
- size: "sm",
1361
- startIcon: /* @__PURE__ */ t(Rt, { "aria-hidden": "true" }),
1362
- onClick: e,
1363
- children: i("practiceResults.error.retry")
1364
- }
1365
- ) }) : null
1366
- ] });
1367
- }
1368
- function en(e) {
1369
- const {
1370
- results: n,
1371
- apiKey: i,
1372
- mapId: s,
1373
- zoom: r,
1374
- searchCentre: a,
1375
- onLoadMore: o,
1376
- loadingMore: d,
1377
- loadingSkeletons: l,
1378
- emptyResultsSlot: m,
1379
- errorSlot: c,
1380
- error: f,
1381
- onRetry: p,
1382
- highlightedId: x,
1383
- onCardHover: v,
1384
- onPinClick: w,
1385
- consentGranted: y,
1386
- onConsentRequest: R,
1387
- onBoundsChange: b,
1388
- listContainerRef: u
1389
- } = e, { t: N } = k("ui"), [A, H] = he(!1), z = f ? c ?? /* @__PURE__ */ t(we, { onRetry: p, headingLevel: e.headingLevel }) : n.length === 0 && !l ? m ?? /* @__PURE__ */ t(ye, { headingLevel: e.headingLevel }) : /* @__PURE__ */ t(
1390
- ve,
1391
- {
1392
- results: n,
1393
- headingLevel: e.headingLevel,
1394
- highlightedId: x,
1395
- onCardHover: v,
1396
- onCardSelect: e.onCardSelect,
1397
- onCardOpenClick: e.onCardOpenClick,
1398
- onCardBookClick: e.onCardBookClick,
1399
- openLabel: e.openLabel,
1400
- bookLabel: e.bookLabel,
1401
- formatNextSlot: e.formatNextSlot,
1402
- onLoadMore: o,
1403
- loadingMore: d,
1404
- loadingSkeletons: l,
1405
- density: "compact",
1406
- containerRef: u
1407
- }
1408
- );
1409
- return /* @__PURE__ */ g("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
1410
- /* @__PURE__ */ t(be, { variantBodyProps: e }),
1411
- /* @__PURE__ */ g("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)] ds:lg:grid ds:lg:grid-cols-[55fr_45fr] ds:lg:gap-[var(--spacing-lg)] ds:lg:items-start", children: [
1412
- /* @__PURE__ */ t("div", { className: "ds:min-w-0", children: z }),
1413
- /* @__PURE__ */ t("div", { className: "ds:hidden ds:lg:block ds:sticky ds:top-[var(--spacing-md)] ds:h-[40rem]", children: /* @__PURE__ */ t(
1414
- pe,
1415
- {
1416
- results: n,
1417
- searchCentre: a,
1418
- zoom: r,
1419
- apiKey: i,
1420
- mapId: s,
1421
- highlightedId: x,
1422
- onPinClick: (I) => {
1423
- Z(n, I, "pin", e.onResultSelect), w(I);
1424
- },
1425
- onPinHover: v,
1426
- onPinFirstInteract: e.onPinFirstInteract,
1427
- onBoundsChange: b,
1428
- consentGranted: y,
1429
- onConsentRequest: R,
1430
- mapHandleRef: e.mapHandleRef
1431
- }
1432
- ) })
1433
- ] }),
1434
- /* @__PURE__ */ t("div", { className: "ds:flex ds:lg:hidden ds:sticky ds:bottom-[var(--spacing-md)] ds:justify-center", children: /* @__PURE__ */ t(
1435
- te,
1436
- {
1437
- intent: "primary",
1438
- size: "md",
1439
- startIcon: /* @__PURE__ */ t(Pt, { "aria-hidden": "true" }),
1440
- onClick: () => H(!0),
1441
- children: N("practiceResults.viewMap")
1442
- }
1443
- ) }),
1444
- /* @__PURE__ */ t(V.Root, { open: A, onOpenChange: H, children: /* @__PURE__ */ g(V.Content, { side: "bottom", size: "lg", children: [
1445
- /* @__PURE__ */ t(V.Header, { children: /* @__PURE__ */ t(V.Title, { children: N("practiceResults.map.label") }) }),
1446
- /* @__PURE__ */ g(V.Body, { children: [
1447
- /* @__PURE__ */ t(V.Description, { className: "ds:sr-only", children: N("practiceResults.sheet.description") }),
1448
- /* @__PURE__ */ g("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
1449
- /* @__PURE__ */ t("div", { className: "ds:h-[20rem]", children: /* @__PURE__ */ t(
1450
- pe,
1451
- {
1452
- results: n,
1453
- searchCentre: a,
1454
- zoom: r,
1455
- apiKey: i,
1456
- mapId: s,
1457
- highlightedId: x,
1458
- onPinClick: (I) => {
1459
- Z(n, I, "pin", e.onResultSelect), w(I);
1460
- },
1461
- onPinHover: v,
1462
- onPinFirstInteract: e.onPinFirstInteract,
1463
- onBoundsChange: b,
1464
- consentGranted: y,
1465
- onConsentRequest: R,
1466
- mapHandleRef: e.mapHandleRef
1467
- }
1468
- ) }),
1469
- z
1470
- ] })
1471
- ] })
1472
- ] }) })
1473
- ] });
1474
- }
1475
- const tn = {
1476
- peek: "sm",
1477
- half: "md",
1478
- full: "lg"
1479
- }, K = [
1480
- "peek",
1481
- "half",
1482
- "full"
1483
- ];
1484
- function nn({ value: e, onChange: n }) {
1485
- const { t: i, i18n: s } = k("ui"), r = s.dir() === "rtl", a = T(
1486
- /* @__PURE__ */ new Map()
1487
- ), o = _((l) => {
1488
- var m;
1489
- (m = a.current.get(l)) == null || m.focus();
1490
- }, []), d = _(
1491
- (l, m) => {
1492
- const c = K.indexOf(m), f = K.length, p = r ? "ArrowLeft" : "ArrowRight", x = r ? "ArrowRight" : "ArrowLeft";
1493
- let v = null;
1494
- switch (l.key) {
1495
- case p:
1496
- case "ArrowDown":
1497
- v = K[(c + 1) % f];
1498
- break;
1499
- case x:
1500
- case "ArrowUp":
1501
- v = K[(c - 1 + f) % f];
1502
- break;
1503
- case "Home":
1504
- v = K[0];
1505
- break;
1506
- case "End":
1507
- v = K[f - 1];
1508
- break;
1509
- default:
1510
- return;
1511
- }
1512
- l.preventDefault(), v && v !== m && n(v), v && o(v);
1513
- },
1514
- [o, r, n]
1515
- );
1516
- return /* @__PURE__ */ t(
1517
- "div",
1518
- {
1519
- role: "radiogroup",
1520
- "aria-label": i("practiceResults.sheet.snap.label"),
1521
- className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]",
1522
- children: K.map((l) => {
1523
- const m = e === l;
1524
- return /* @__PURE__ */ t(
1525
- "button",
1526
- {
1527
- ref: (c) => {
1528
- c ? a.current.set(l, c) : a.current.delete(l);
1529
- },
1530
- type: "button",
1531
- role: "radio",
1532
- "aria-checked": m,
1533
- "aria-label": i(`practiceResults.sheet.snap.${l}`),
1534
- tabIndex: m ? 0 : -1,
1535
- onClick: () => n(l),
1536
- onKeyDown: (c) => d(c, l),
1537
- className: ne({
1538
- state: m ? "active" : "idle"
1539
- }),
1540
- children: i(`practiceResults.sheet.snap.${l}`)
1541
- },
1542
- l
1543
- );
1544
- })
1545
- }
1546
- );
1547
- }
1548
- function an(e) {
1549
- const {
1550
- results: n,
1551
- apiKey: i,
1552
- mapId: s,
1553
- zoom: r,
1554
- searchCentre: a,
1555
- onLoadMore: o,
1556
- loadingMore: d,
1557
- loadingSkeletons: l,
1558
- emptyResultsSlot: m,
1559
- errorSlot: c,
1560
- error: f,
1561
- onRetry: p,
1562
- highlightedId: x,
1563
- onCardHover: v,
1564
- onPinClick: w,
1565
- consentGranted: y,
1566
- onConsentRequest: R,
1567
- onBoundsChange: b,
1568
- listContainerRef: u,
1569
- facets: N,
1570
- value: A,
1571
- onChange: H
1572
- } = e, { t: z } = k("ui"), [I, q] = he("half"), U = tn[I], G = yt("(min-width: 1024px)"), E = f ? c ?? /* @__PURE__ */ t(we, { onRetry: p, headingLevel: e.headingLevel }) : n.length === 0 && !l ? m ?? /* @__PURE__ */ t(ye, { headingLevel: e.headingLevel }) : /* @__PURE__ */ t(
1573
- ve,
1574
- {
1575
- results: n,
1576
- headingLevel: e.headingLevel,
1577
- highlightedId: x,
1578
- onCardHover: v,
1579
- onCardSelect: e.onCardSelect,
1580
- onCardOpenClick: e.onCardOpenClick,
1581
- onCardBookClick: e.onCardBookClick,
1582
- openLabel: e.openLabel,
1583
- bookLabel: e.bookLabel,
1584
- formatNextSlot: e.formatNextSlot,
1585
- onLoadMore: o,
1586
- loadingMore: d,
1587
- loadingSkeletons: l,
1588
- density: "compact",
1589
- apiKey: i,
1590
- containerRef: u
1591
- }
1592
- ), M = /* @__PURE__ */ t(
1593
- pe,
1594
- {
1595
- results: n,
1596
- searchCentre: a,
1597
- zoom: r,
1598
- apiKey: i,
1599
- mapId: s,
1600
- highlightedId: x,
1601
- onPinClick: (S) => {
1602
- Z(n, S, "pin", e.onResultSelect), w(S);
1603
- },
1604
- onPinHover: v,
1605
- onPinFirstInteract: e.onPinFirstInteract,
1606
- onBoundsChange: b,
1607
- consentGranted: y,
1608
- onConsentRequest: R,
1609
- mapHandleRef: e.mapHandleRef
1610
- }
1611
- ), ae = N.length > 0 ? /* @__PURE__ */ t("div", { className: "ds:absolute ds:start-[var(--spacing-md)] ds:top-[var(--spacing-md)] ds:max-w-[calc(100%-var(--spacing-lg))]", children: /* @__PURE__ */ t(
1612
- $e,
1613
- {
1614
- facets: N,
1615
- value: A.facets,
1616
- onChange: (S) => H({ ...A, facets: S }),
1617
- floating: !0
1618
- }
1619
- ) }) : null;
1620
- return /* @__PURE__ */ t("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: G ? (
1621
- // Desktop: 65/35 map left + cards rail right. NO Sheet (the
1622
- // Sheet would portal to body and occlude the desktop layout
1623
- // regardless of the parent's `lg:hidden` class).
1624
- //
1625
- // 0.33.8: filters move from floating-over-the-map to an
1626
- // inline `<HeaderRow>` above the grid (parity with
1627
- // split-list-map). Floating chips read as ad-hoc on a real
1628
- // Google tile and are easy to miss; an inline row sits in
1629
- // the visual flow as a deliberate refinement control.
1630
- //
1631
- // 0.33.8: dropped `h-[calc(100dvh - chrome)] min-h-[40rem]`
1632
- // on both columns + `overflow-y-auto` on the list rail. The
1633
- // viewport-fill + internal scroll created a double-scroll
1634
- // experience — patients scrolled the page AND the rail. Now
1635
- // the map column is `lg:sticky lg:h-[44rem]` (stays visible
1636
- // as the patient scrolls cards) and the rail renders at
1637
- // natural height. Single page scroll.
1638
- /* @__PURE__ */ g(ft, { children: [
1639
- /* @__PURE__ */ t(be, { variantBodyProps: e }),
1640
- /* @__PURE__ */ g("div", { className: "ds:grid ds:grid-cols-[65fr_35fr] ds:gap-[var(--spacing-lg)] ds:items-start", children: [
1641
- /* @__PURE__ */ t("div", { className: "ds:sticky ds:top-[var(--spacing-md)] ds:h-[44rem]", children: M }),
1642
- /* @__PURE__ */ t("div", { className: "ds:min-w-0", children: E })
1643
- ] })
1644
- ] })
1645
- ) : (
1646
- // Mobile: full-bleed map + persistent bottom sheet defaulting to
1647
- // 'half' state. No X close button — the sheet is core to the
1648
- // layout, not dismissible. Patient cycles peek / half / full
1649
- // via the snap radiogroup at the top of the sheet body. Filters
1650
- // stay floating on mobile — the full-bleed map IS the viewport
1651
- // chrome, so floating chips are the only place for them.
1652
- /* @__PURE__ */ g("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
1653
- /* @__PURE__ */ t(
1654
- Oe,
1655
- {
1656
- heading: e.heading,
1657
- headingLevel: e.headingLevel,
1658
- intro: e.intro,
1659
- totalCount: e.totalCount,
1660
- searchCentreLabel: a == null ? void 0 : a.label
1661
- }
1662
- ),
1663
- /* @__PURE__ */ g("div", { className: "ds:relative ds:h-[60vh] ds:min-h-[20rem]", children: [
1664
- M,
1665
- ae
1666
- ] }),
1667
- /* @__PURE__ */ t(V.Root, { open: !0, children: /* @__PURE__ */ t(
1668
- V.Content,
1669
- {
1670
- side: "bottom",
1671
- size: U,
1672
- onEscapeKeyDown: (S) => S.preventDefault(),
1673
- onPointerDownOutside: (S) => S.preventDefault(),
1674
- onInteractOutside: (S) => S.preventDefault(),
1675
- children: /* @__PURE__ */ g(V.Body, { children: [
1676
- /* @__PURE__ */ t(V.Description, { className: "ds:sr-only", children: z("practiceResults.sheet.descriptionMapFirst") }),
1677
- /* @__PURE__ */ g("div", { className: "ds:flex ds:items-start ds:justify-between ds:gap-[var(--spacing-sm)] ds:pb-[var(--spacing-sm)]", children: [
1678
- /* @__PURE__ */ t(V.Title, { className: "type-title-card ds:m-0 ds:text-[var(--foreground)]", children: z("practiceResults.sheet.title", {
1679
- count: e.totalCount ?? n.length
1680
- }) }),
1681
- /* @__PURE__ */ t(
1682
- nn,
1683
- {
1684
- value: I,
1685
- onChange: q
1686
- }
1687
- )
1688
- ] }),
1689
- e.sortOptions.length > 0 ? /* @__PURE__ */ t("div", { className: "ds:pb-[var(--spacing-sm)]", children: /* @__PURE__ */ t(
1690
- fe,
1691
- {
1692
- options: e.sortOptions,
1693
- value: A.sort ?? "relevance",
1694
- onChange: (S) => H({ ...A, sort: S })
1695
- }
1696
- ) }) : null,
1697
- E
1698
- ] })
1699
- }
1700
- ) })
1701
- ] })
1702
- ) });
1703
- }
1704
- function sn(e) {
1705
- const {
1706
- results: n,
1707
- apiKey: i,
1708
- onLoadMore: s,
1709
- loadingMore: r,
1710
- loadingSkeletons: a,
1711
- emptyResultsSlot: o,
1712
- errorSlot: d,
1713
- error: l,
1714
- onRetry: m,
1715
- highlightedId: c,
1716
- onCardHover: f,
1717
- listContainerRef: p
1718
- } = e, x = l ? d ?? /* @__PURE__ */ t(we, { onRetry: m, headingLevel: e.headingLevel }) : n.length === 0 && !a ? o ?? /* @__PURE__ */ t(ye, { headingLevel: e.headingLevel }) : /* @__PURE__ */ t(
1719
- ve,
1720
- {
1721
- results: n,
1722
- headingLevel: e.headingLevel,
1723
- highlightedId: c,
1724
- onCardHover: f,
1725
- onCardSelect: e.onCardSelect,
1726
- onCardOpenClick: e.onCardOpenClick,
1727
- onCardBookClick: e.onCardBookClick,
1728
- openLabel: e.openLabel,
1729
- bookLabel: e.bookLabel,
1730
- formatNextSlot: e.formatNextSlot,
1731
- onLoadMore: s,
1732
- loadingMore: r,
1733
- loadingSkeletons: a,
1734
- density: "rich",
1735
- apiKey: i,
1736
- containerRef: p
1737
- }
1738
- );
1739
- return /* @__PURE__ */ g("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
1740
- /* @__PURE__ */ t(be, { variantBodyProps: e }),
1741
- x
1742
- ] });
1743
- }
1744
- const rn = pt(function({
1745
- variant: n = "split-list-map",
1746
- results: i,
1747
- contentLang: s,
1748
- totalCount: r,
1749
- searchCentre: a,
1750
- facets: o,
1751
- googleMapsApiKey: d,
1752
- mapId: l,
1753
- defaultZoom: m = It,
1754
- onBoundsChange: c,
1755
- consentGranted: f,
1756
- onConsentRequest: p,
1757
- skipConsentGate: x = !1,
1758
- onLoadMore: v,
1759
- loadingMore: w,
1760
- value: y,
1761
- onChange: R,
1762
- sortOptions: b,
1763
- onResultSelect: u,
1764
- loading: N,
1765
- emptyResultsSlot: A,
1766
- errorSlot: H,
1767
- error: z,
1768
- onRetry: I,
1769
- heading: q,
1770
- headingLevel: U = 2,
1771
- intro: G,
1772
- cardOpenButtonLabel: E,
1773
- cardBookButtonLabel: M,
1774
- showCardOpenButton: ae = !0,
1775
- "aria-label": S,
1776
- id: ie,
1777
- className: Ge,
1778
- ...Ze
1779
- }, We) {
1780
- const { t: se, i18n: ke } = k("ui"), [Qe, W] = he(null), Q = T(/* @__PURE__ */ new Set()), re = T(/* @__PURE__ */ new Set()), Je = T(null), oe = T(null), ce = P(
1781
- () => ({
1782
- getVariant: () => n,
1783
- scrollToResult: (h) => {
1784
- const F = oe.current;
1785
- if (!F) return;
1786
- const C = F.querySelector(
1787
- `[data-component="practice-result-card"][data-result-id="${CSS.escape(h)}"]`
1788
- );
1789
- C && (C.scrollIntoView({ behavior: "smooth", block: "nearest" }), W(h));
1790
- },
1791
- focusPin: (h) => {
1792
- W(h);
1793
- }
1794
- }),
1795
- [n]
1796
- );
1797
- ht(We, () => ce, [ce]), kt(At, ce, ie);
1798
- const Xe = ae ? E ?? se("practiceResults.card.open") : void 0, Ye = M ?? se("practiceResults.card.book"), et = _(
1799
- (h) => {
1800
- if (h.nextAvailableSlot)
1801
- try {
1802
- return new Intl.DateTimeFormat(ke.language, {
1803
- weekday: "short",
1804
- hour: "numeric",
1805
- minute: "numeric"
1806
- }).format(new Date(h.nextAvailableSlot.dateTime));
1807
- } catch {
1808
- return h.nextAvailableSlot.dateTime;
1809
- }
1810
- },
1811
- [ke.language]
1812
- ), Ce = T(null);
1813
- ee(() => {
1814
- Ce.current !== n && (Ce.current = n, $("serp_variant_exposed", {
1815
- variant: n,
1816
- totalCount: r ?? i.length
1817
- }), Q.current = /* @__PURE__ */ new Set(), re.current = /* @__PURE__ */ new Set());
1818
- }, [n]);
1819
- const le = T(!1), de = P(
1820
- () => Ft(o ?? [], i, y.facets),
1821
- [o, i, y.facets]
1822
- ), J = P(
1823
- () => b ? Pe.filter((h) => b.includes(h)) : Pe,
1824
- [b]
1825
- ), X = a ? "distance" : "relevance", Re = y.sort ?? X, ue = J.includes(Re) ? Re : J.includes(X) ? X : J[0] ?? X, L = P(() => {
1826
- const h = Tt(i, y.facets, de);
1827
- return Ht(h, ue, a);
1828
- }, [i, y.facets, de, ue, a]), tt = P(
1829
- () => s ? L.map(
1830
- (h) => h.contentLang ? h : { ...h, contentLang: s }
1831
- ) : L,
1832
- [L, s]
1833
- );
1834
- ee(() => {
1835
- const h = L.length === 0;
1836
- h && !le.current ? ($("serp_empty_results", {
1837
- appliedFacets: y.facets ?? {}
1838
- }), le.current = !0) : h || (le.current = !1);
1839
- }, [L.length, y.facets]);
1840
- const j = T(null), Ne = T(null);
1841
- ee(
1842
- () => () => {
1843
- j.current && clearTimeout(j.current);
1844
- },
1845
- []
1846
- );
1847
- const nt = _((h) => {
1848
- W(h), !Q.current.has(h) && (Ne.current === h && j.current || (j.current && clearTimeout(j.current), Ne.current = h, j.current = setTimeout(() => {
1849
- Q.current.has(h) || (Q.current.add(h), $("serp_result_hovered_card", { resultId: h })), j.current = null;
1850
- }, 500)));
1851
- }, []), at = _((h) => {
1852
- W(h);
1853
- const F = oe.current;
1854
- if (!F) return;
1855
- const C = F.querySelector(
1856
- `[data-component="practice-result-card"][data-result-id="${CSS.escape(h)}"]`
1857
- );
1858
- C == null || C.scrollIntoView({ behavior: "smooth", block: "nearest" });
1859
- }, []), it = _((h) => {
1860
- re.current.has(h) || (re.current.add(h), $("serp_result_hovered_pin", { resultId: h }));
1861
- }, []), Se = T(null), st = _(
1862
- (h) => {
1863
- W(h);
1864
- const F = L.find((C) => C.id === h);
1865
- if (F) {
1866
- if (F.location) {
1867
- const C = Se.current;
1868
- C == null || C.panTo({
1869
- lat: F.location.lat,
1870
- lng: F.location.lng
1871
- }), C == null || C.setZoom(16);
1872
- }
1873
- Z(L, h, "card", u);
1874
- }
1875
- },
1876
- [L, u]
1877
- ), rt = _(
1878
- (h) => {
1879
- Z(
1880
- L,
1881
- h,
1882
- "open-button",
1883
- u
1884
- );
1885
- },
1886
- [L, u]
1887
- ), ot = _(
1888
- (h) => {
1889
- Z(
1890
- L,
1891
- h,
1892
- "book-button",
1893
- u
1894
- );
1895
- },
1896
- [L, u]
1897
- ), ct = !!N && i.length === 0, lt = _(
1898
- (h, F) => {
1899
- const C = L.find((mt) => mt.id === h.id);
1900
- u(C ?? h, F);
1901
- },
1902
- [L, u]
1903
- ), me = {
1904
- results: tt,
1905
- totalCount: r,
1906
- searchCentre: a,
1907
- facets: de,
1908
- value: { ...y, sort: ue },
1909
- sortOptions: J,
1910
- onChange: R,
1911
- onResultSelect: lt,
1912
- onLoadMore: v,
1913
- loadingMore: w,
1914
- apiKey: d,
1915
- mapId: l,
1916
- zoom: m,
1917
- // 0.31.4: when `skipConsentGate` is true the kit synthesises
1918
- // `consentGranted=true` for every internal MapView; the consumer's
1919
- // CMP at the page level is responsible for whether the Google Maps
1920
- // loader script is present at all. `onConsentRequest` is dropped
1921
- // because no placeholder renders — nothing to fire it from.
1922
- consentGranted: x ? !0 : f,
1923
- onConsentRequest: x ? void 0 : p,
1924
- onBoundsChange: c,
1925
- loadingSkeletons: ct,
1926
- emptyResultsSlot: A,
1927
- errorSlot: H,
1928
- error: z,
1929
- onRetry: I,
1930
- heading: q,
1931
- headingLevel: U,
1932
- intro: G,
1933
- highlightedId: Qe,
1934
- onCardHover: nt,
1935
- onPinClick: at,
1936
- onPinFirstInteract: it,
1937
- onCardSelect: st,
1938
- onCardOpenClick: rt,
1939
- onCardBookClick: ot,
1940
- openLabel: Xe,
1941
- bookLabel: Ye,
1942
- formatNextSlot: et,
1943
- listContainerRef: Je,
1944
- mapHandleRef: Se
1945
- }, dt = (() => {
1946
- switch (n) {
1947
- case "map-first":
1948
- return /* @__PURE__ */ t(an, { ...me });
1949
- case "rich-cards":
1950
- return /* @__PURE__ */ t(sn, { ...me });
1951
- case "split-list-map":
1952
- default:
1953
- return /* @__PURE__ */ t(en, { ...me });
1954
- }
1955
- })(), ut = S ?? se("practiceResults.regionLabel");
1956
- return /* @__PURE__ */ t(
1957
- "div",
1958
- {
1959
- ref: oe,
1960
- role: "region",
1961
- "aria-label": ut,
1962
- id: ie,
1963
- "data-component": "practice-results",
1964
- "data-component-id": ie,
1965
- "data-variant": n,
1966
- className: Ot({ variant: n, className: Ge }),
1967
- ...Ze,
1968
- children: dt
1969
- }
1970
- );
1971
- });
1972
- rn.displayName = "PracticeResults";
1973
- export {
1974
- rn as P,
1975
- At as p
1976
- };
1977
- //# sourceMappingURL=practice-results-BByRCIuR.js.map