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