@alfadocs/ui-kit-debug 1.90.1 → 1.91.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 (380) hide show
  1. package/dist/_chunks/address-autocomplete-DR4Xn23Z.js +519 -0
  2. package/dist/_chunks/address-autocomplete-DR4Xn23Z.js.map +1 -0
  3. package/dist/_chunks/{address-fields-CfnXK8RT.js → address-fields-qxQkGwPf.js} +5 -5
  4. package/dist/_chunks/{address-fields-CfnXK8RT.js.map → address-fields-qxQkGwPf.js.map} +1 -1
  5. package/dist/_chunks/{agenda-card-BDuvreCe.js → agenda-card-BhY342MA.js} +2 -2
  6. package/dist/_chunks/{agenda-card-BDuvreCe.js.map → agenda-card-BhY342MA.js.map} +1 -1
  7. package/dist/_chunks/{agenda-tray-D-jvptdo.js → agenda-tray-BmxBGEci.js} +2 -2
  8. package/dist/_chunks/{agenda-tray-D-jvptdo.js.map → agenda-tray-BmxBGEci.js.map} +1 -1
  9. package/dist/_chunks/{ai-permission-notice-CoW22jx1.js → ai-permission-notice-VNh3W57L.js} +2 -2
  10. package/dist/_chunks/{ai-permission-notice-CoW22jx1.js.map → ai-permission-notice-VNh3W57L.js.map} +1 -1
  11. package/dist/_chunks/{alia-sidebar-CsTRAxC8.js → alia-sidebar-ovRX_oti.js} +3 -3
  12. package/dist/_chunks/{alia-sidebar-CsTRAxC8.js.map → alia-sidebar-ovRX_oti.js.map} +1 -1
  13. package/dist/_chunks/{anamnesis-summary-rows-fbEQwcuW.js → anamnesis-summary-rows-EKPfVCmh.js} +2 -2
  14. package/dist/_chunks/{anamnesis-summary-rows-fbEQwcuW.js.map → anamnesis-summary-rows-EKPfVCmh.js.map} +1 -1
  15. package/dist/_chunks/{appointment-card-5JMWi9_f.js → appointment-card-Bstc1p7a.js} +2 -2
  16. package/dist/_chunks/{appointment-card-5JMWi9_f.js.map → appointment-card-Bstc1p7a.js.map} +1 -1
  17. package/dist/_chunks/{appointment-peek-39BwVMUf.js → appointment-peek-C0kKqnFk.js} +2 -2
  18. package/dist/_chunks/{appointment-peek-39BwVMUf.js.map → appointment-peek-C0kKqnFk.js.map} +1 -1
  19. package/dist/_chunks/{appointment-timeline-1-Za2miy.js → appointment-timeline-rbt9AwHO.js} +2 -2
  20. package/dist/_chunks/{appointment-timeline-1-Za2miy.js.map → appointment-timeline-rbt9AwHO.js.map} +1 -1
  21. package/dist/_chunks/{appointment-tray-Dwc8MSIQ.js → appointment-tray-6zd8RLIL.js} +2 -2
  22. package/dist/_chunks/{appointment-tray-Dwc8MSIQ.js.map → appointment-tray-6zd8RLIL.js.map} +1 -1
  23. package/dist/_chunks/autocomplete-BXMcNoa3.js +562 -0
  24. package/dist/_chunks/autocomplete-BXMcNoa3.js.map +1 -0
  25. package/dist/_chunks/{avatar-BPiPL7ND.js → avatar-a6042Ox2.js} +52 -52
  26. package/dist/_chunks/avatar-a6042Ox2.js.map +1 -0
  27. package/dist/_chunks/{balance-badge-cell-C4FYwmrZ.js → balance-badge-cell-BtJvre1-.js} +3 -3
  28. package/dist/_chunks/{balance-badge-cell-C4FYwmrZ.js.map → balance-badge-cell-BtJvre1-.js.map} +1 -1
  29. package/dist/_chunks/booking-opt_h7Uc.js +4590 -0
  30. package/dist/_chunks/booking-opt_h7Uc.js.map +1 -0
  31. package/dist/_chunks/{calendar-ClB-jWH1.js → calendar-CmiMS4FJ.js} +2 -2
  32. package/dist/_chunks/{calendar-ClB-jWH1.js.map → calendar-CmiMS4FJ.js.map} +1 -1
  33. package/dist/_chunks/{calendar-appointment-editor-dialog-C1v2MNE4.js → calendar-appointment-editor-dialog-sJKLoVJ2.js} +11 -11
  34. package/dist/_chunks/{calendar-appointment-editor-dialog-C1v2MNE4.js.map → calendar-appointment-editor-dialog-sJKLoVJ2.js.map} +1 -1
  35. package/dist/_chunks/{care-plan-card-BYCPNDvA.js → care-plan-card-DD9rEWYN.js} +2 -2
  36. package/dist/_chunks/{care-plan-card-BYCPNDvA.js.map → care-plan-card-DD9rEWYN.js.map} +1 -1
  37. package/dist/_chunks/{care-plan-header-BzsAg6oY.js → care-plan-header-CXUJQt8Q.js} +2 -2
  38. package/dist/_chunks/{care-plan-header-BzsAg6oY.js.map → care-plan-header-CXUJQt8Q.js.map} +1 -1
  39. package/dist/_chunks/{chat-message-CmFJdEre.js → chat-message-LRO_6Ee3.js} +2 -2
  40. package/dist/_chunks/{chat-message-CmFJdEre.js.map → chat-message-LRO_6Ee3.js.map} +1 -1
  41. package/dist/_chunks/{checkbox-BjDv-r3o.js → checkbox-a7Sh-dXb.js} +32 -31
  42. package/dist/_chunks/checkbox-a7Sh-dXb.js.map +1 -0
  43. package/dist/_chunks/{checkbox-group-Cw2H5qaq.js → checkbox-group-eGdv9fZc.js} +2 -2
  44. package/dist/_chunks/{checkbox-group-Cw2H5qaq.js.map → checkbox-group-eGdv9fZc.js.map} +1 -1
  45. package/dist/_chunks/{city-input-CJVGswxp.js → city-input-CA59CjnV.js} +2 -2
  46. package/dist/_chunks/{city-input-CJVGswxp.js.map → city-input-CA59CjnV.js.map} +1 -1
  47. package/dist/_chunks/{clinical-note-card-Caidqcwa.js → clinical-note-card-Cut2lNmu.js} +3 -3
  48. package/dist/_chunks/{clinical-note-card-Caidqcwa.js.map → clinical-note-card-Cut2lNmu.js.map} +1 -1
  49. package/dist/_chunks/{combobox-CDPm_n0p.js → combobox-D-gpgEDy.js} +314 -294
  50. package/dist/_chunks/combobox-D-gpgEDy.js.map +1 -0
  51. package/dist/_chunks/{contact-card-Czu60UvU.js → contact-card-ClvEDM9e.js} +2 -2
  52. package/dist/_chunks/{contact-card-Czu60UvU.js.map → contact-card-ClvEDM9e.js.map} +1 -1
  53. package/dist/_chunks/{contact-profile-card-Da1vmJQI.js → contact-profile-card-CX45mZA3.js} +106 -95
  54. package/dist/_chunks/contact-profile-card-CX45mZA3.js.map +1 -0
  55. package/dist/_chunks/{country-select-DQ8q7ypA.js → country-select-BfmX9y5i.js} +2 -2
  56. package/dist/_chunks/{country-select-DQ8q7ypA.js.map → country-select-BfmX9y5i.js.map} +1 -1
  57. package/dist/_chunks/{data-table-B_IcS0Ke.js → data-table-CqQgoNsU.js} +2 -2
  58. package/dist/_chunks/{data-table-B_IcS0Ke.js.map → data-table-CqQgoNsU.js.map} +1 -1
  59. package/dist/_chunks/{dependent-selector-C4kOgO8b.js → dependent-selector-CyNi7M_f.js} +2 -2
  60. package/dist/_chunks/{dependent-selector-C4kOgO8b.js.map → dependent-selector-CyNi7M_f.js.map} +1 -1
  61. package/dist/_chunks/{entity-summary-BLxzSSXK.js → entity-summary-B_bOloqP.js} +3 -3
  62. package/dist/_chunks/{entity-summary-BLxzSSXK.js.map → entity-summary-B_bOloqP.js.map} +1 -1
  63. package/dist/_chunks/error-page-B0fGNTRB.js +419 -0
  64. package/dist/_chunks/error-page-B0fGNTRB.js.map +1 -0
  65. package/dist/_chunks/{face-scheme-BgJGFDTa.js → face-scheme-BKSE98bo.js} +2 -2
  66. package/dist/_chunks/{face-scheme-BgJGFDTa.js.map → face-scheme-BKSE98bo.js.map} +1 -1
  67. package/dist/_chunks/{file-manager-C9YOT-Dn.js → file-manager-BnI1ZWZu.js} +2 -2
  68. package/dist/_chunks/{file-manager-C9YOT-Dn.js.map → file-manager-BnI1ZWZu.js.map} +1 -1
  69. package/dist/_chunks/{header-settings-BVhjndtV.js → header-settings-BeA2fnol.js} +24 -23
  70. package/dist/_chunks/header-settings-BeA2fnol.js.map +1 -0
  71. package/dist/_chunks/{heatmap-HTz3Jvzy.js → heatmap-fCxwNz2o.js} +2 -2
  72. package/dist/_chunks/{heatmap-HTz3Jvzy.js.map → heatmap-fCxwNz2o.js.map} +1 -1
  73. package/dist/_chunks/{languages-CZqBaPwI.js → languages-CGLX6Qpe.js} +3 -15
  74. package/dist/_chunks/languages-CGLX6Qpe.js.map +1 -0
  75. package/dist/_chunks/link-DtCfnLnF.js +332 -0
  76. package/dist/_chunks/link-DtCfnLnF.js.map +1 -0
  77. package/dist/_chunks/{link-cell-renderer-C0ynDik7.js → link-cell-renderer-BS3V4LA6.js} +4 -4
  78. package/dist/_chunks/{link-cell-renderer-C0ynDik7.js.map → link-cell-renderer-BS3V4LA6.js.map} +1 -1
  79. package/dist/_chunks/{login-dev-card-DYwbL5sD.js → login-dev-card-BZBR58mu.js} +2 -2
  80. package/dist/_chunks/{login-dev-card-DYwbL5sD.js.map → login-dev-card-BZBR58mu.js.map} +1 -1
  81. package/dist/_chunks/{map-view-Bvi06RVh.js → map-view-UrNgxBy3.js} +260 -237
  82. package/dist/_chunks/map-view-UrNgxBy3.js.map +1 -0
  83. package/dist/_chunks/{index.modern-BeRXQVdc.js → maps-core-gate-DkNqGkm3.js} +360 -319
  84. package/dist/_chunks/maps-core-gate-DkNqGkm3.js.map +1 -0
  85. package/dist/_chunks/{marketplace-app-shell-x_abo_ye.js → marketplace-app-shell-CJQtx3sv.js} +3 -3
  86. package/dist/_chunks/{marketplace-app-shell-x_abo_ye.js.map → marketplace-app-shell-CJQtx3sv.js.map} +1 -1
  87. package/dist/_chunks/{message-card-CvCnCssc.js → message-card-B6SduXJv.js} +2 -2
  88. package/dist/_chunks/{message-card-CvCnCssc.js.map → message-card-B6SduXJv.js.map} +1 -1
  89. package/dist/_chunks/{message-tray-IJYvy6Cf.js → message-tray-Cllf-v0G.js} +2 -2
  90. package/dist/_chunks/{message-tray-IJYvy6Cf.js.map → message-tray-Cllf-v0G.js.map} +1 -1
  91. package/dist/_chunks/{nav-grid-Oc4aCPrg.js → nav-grid-D2xVcHTO.js} +2 -2
  92. package/dist/_chunks/{nav-grid-Oc4aCPrg.js.map → nav-grid-D2xVcHTO.js.map} +1 -1
  93. package/dist/_chunks/{note-attachment-DIlIQ7JF.js → note-attachment-cnj2JRrg.js} +2 -2
  94. package/dist/_chunks/{note-attachment-DIlIQ7JF.js.map → note-attachment-cnj2JRrg.js.map} +1 -1
  95. package/dist/_chunks/{note-timeline-KzL52MmB.js → note-timeline-BrjHBQfx.js} +2 -2
  96. package/dist/_chunks/{note-timeline-KzL52MmB.js.map → note-timeline-BrjHBQfx.js.map} +1 -1
  97. package/dist/_chunks/{notes-panel-CZO1qsD-.js → notes-panel-ib7I3aNf.js} +3 -3
  98. package/dist/_chunks/{notes-panel-CZO1qsD-.js.map → notes-panel-ib7I3aNf.js.map} +1 -1
  99. package/dist/_chunks/{operator-hero-6aAIQaFZ.js → operator-hero-C_5B-8Qp.js} +43 -41
  100. package/dist/_chunks/operator-hero-C_5B-8Qp.js.map +1 -0
  101. package/dist/_chunks/{patient-details-D0P5eog5.js → patient-details-BjcUpD9S.js} +3 -3
  102. package/dist/_chunks/{patient-details-D0P5eog5.js.map → patient-details-BjcUpD9S.js.map} +1 -1
  103. package/dist/_chunks/{patient-field-row-R73dZJY6.js → patient-field-row-B0tdiaWi.js} +6 -6
  104. package/dist/_chunks/{patient-field-row-R73dZJY6.js.map → patient-field-row-B0tdiaWi.js.map} +1 -1
  105. package/dist/_chunks/patient-search-Ca9j5cWb.js +1306 -0
  106. package/dist/_chunks/patient-search-Ca9j5cWb.js.map +1 -0
  107. package/dist/_chunks/{patient-summary-card-6U74-ivO.js → patient-summary-card-Cvv6_Ugk.js} +4 -4
  108. package/dist/_chunks/{patient-summary-card-6U74-ivO.js.map → patient-summary-card-Cvv6_Ugk.js.map} +1 -1
  109. package/dist/_chunks/{payment-request-card-MndSlVoK.js → payment-request-card-BfGauFY0.js} +2 -2
  110. package/dist/_chunks/{payment-request-card-MndSlVoK.js.map → payment-request-card-BfGauFY0.js.map} +1 -1
  111. package/dist/_chunks/{periodontal-diagnosis-B9YmmVmM.js → periodontal-diagnosis-DD3hrg9X.js} +2 -2
  112. package/dist/_chunks/{periodontal-diagnosis-B9YmmVmM.js.map → periodontal-diagnosis-DD3hrg9X.js.map} +1 -1
  113. package/dist/_chunks/{permission-matrix-BoQjENGV.js → permission-matrix-BJ6sg3Zp.js} +3 -3
  114. package/dist/_chunks/{permission-matrix-BoQjENGV.js.map → permission-matrix-BJ6sg3Zp.js.map} +1 -1
  115. package/dist/_chunks/{practice-profile-hero-qfrsFQI_.js → practice-profile-hero-ClzE-4CB.js} +76 -73
  116. package/dist/_chunks/practice-profile-hero-ClzE-4CB.js.map +1 -0
  117. package/dist/_chunks/{practice-results-B61krlwu.js → practice-results-CQ_KvEXK.js} +517 -514
  118. package/dist/_chunks/practice-results-CQ_KvEXK.js.map +1 -0
  119. package/dist/_chunks/{product-hub-panel-Blag8t8f.js → product-hub-panel-bHi7lkVD.js} +2 -2
  120. package/dist/_chunks/{product-hub-panel-Blag8t8f.js.map → product-hub-panel-bHi7lkVD.js.map} +1 -1
  121. package/dist/_chunks/{province-select-CPdTwEob.js → province-select-D64whw0m.js} +2 -2
  122. package/dist/_chunks/{province-select-CPdTwEob.js.map → province-select-D64whw0m.js.map} +1 -1
  123. package/dist/_chunks/public-footer-IoRWoAMz.js +596 -0
  124. package/dist/_chunks/public-footer-IoRWoAMz.js.map +1 -0
  125. package/dist/_chunks/{registration-form-DmP3YUfp.js → registration-form-CRm6DaB9.js} +2 -2
  126. package/dist/_chunks/{registration-form-DmP3YUfp.js.map → registration-form-CRm6DaB9.js.map} +1 -1
  127. package/dist/_chunks/{reviews-panel-UzQQLb-z.js → reviews-panel-B7InBORU.js} +42 -41
  128. package/dist/_chunks/reviews-panel-B7InBORU.js.map +1 -0
  129. package/dist/_chunks/{rich-text-editor-BZTyxQBd.js → rich-text-editor-BfEu57dk.js} +3 -3
  130. package/dist/_chunks/{rich-text-editor-BZTyxQBd.js.map → rich-text-editor-BfEu57dk.js.map} +1 -1
  131. package/dist/_chunks/{signature-request-DjY-X62H.js → signature-request-DvhyrRpn.js} +3 -3
  132. package/dist/_chunks/{signature-request-DjY-X62H.js.map → signature-request-DvhyrRpn.js.map} +1 -1
  133. package/dist/_chunks/{signed-out-frame-G-3ATOdu.js → signed-out-frame-CgRXOUzi.js} +2 -2
  134. package/dist/_chunks/{signed-out-frame-G-3ATOdu.js.map → signed-out-frame-CgRXOUzi.js.map} +1 -1
  135. package/dist/_chunks/{slot-grid-Bb13H9Rl.js → slot-grid-B-IAFX3C.js} +183 -170
  136. package/dist/_chunks/slot-grid-B-IAFX3C.js.map +1 -0
  137. package/dist/_chunks/{task-editor-BOETWbjU.js → task-editor-CI1SKUNc.js} +2 -2
  138. package/dist/_chunks/{task-editor-BOETWbjU.js.map → task-editor-CI1SKUNc.js.map} +1 -1
  139. package/dist/_chunks/{timeline-wUuTDFY_.js → timeline-BcYHdP56.js} +2 -2
  140. package/dist/_chunks/{timeline-wUuTDFY_.js.map → timeline-BcYHdP56.js.map} +1 -1
  141. package/dist/_chunks/{use-appointment-details-read-CWN-nJCZ.js → use-appointment-details-read-D8vDg0sg.js} +5 -5
  142. package/dist/_chunks/{use-appointment-details-read-CWN-nJCZ.js.map → use-appointment-details-read-D8vDg0sg.js.map} +1 -1
  143. package/dist/_chunks/{voice-control-panel-BziKE-KK.js → voice-control-panel-BP0otrID.js} +2 -2
  144. package/dist/_chunks/{voice-control-panel-BziKE-KK.js.map → voice-control-panel-BP0otrID.js.map} +1 -1
  145. package/dist/_chunks/{workflow-webhook-action-DulCpCRz.js → workflow-webhook-action-B_nBJ_ht.js} +2 -2
  146. package/dist/_chunks/{workflow-webhook-action-DulCpCRz.js.map → workflow-webhook-action-B_nBJ_ht.js.map} +1 -1
  147. package/dist/agent-catalog.json +3 -3
  148. package/dist/agent-i18n/en.json +1 -1
  149. package/dist/components/_shared/maps-core-gate.d.ts +18 -0
  150. package/dist/components/_shared/maps-core-gate.d.ts.map +1 -0
  151. package/dist/components/_shared/social-brand-icons.d.ts +29 -0
  152. package/dist/components/_shared/social-brand-icons.d.ts.map +1 -0
  153. package/dist/components/address-autocomplete/address-autocomplete.d.ts.map +1 -1
  154. package/dist/components/address-autocomplete/index.js +1 -1
  155. package/dist/components/address-fields/index.js +1 -1
  156. package/dist/components/agenda-card/index.js +1 -1
  157. package/dist/components/agenda-tray/index.js +1 -1
  158. package/dist/components/ai-permission-notice/index.js +1 -1
  159. package/dist/components/appointment-card/index.js +2 -2
  160. package/dist/components/appointment-details-panel/index.js +1 -1
  161. package/dist/components/appointment-peek/index.js +1 -1
  162. package/dist/components/appointment-timeline/index.js +1 -1
  163. package/dist/components/autocomplete/autocomplete.agent.d.ts.map +1 -1
  164. package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
  165. package/dist/components/autocomplete/index.js +1 -1
  166. package/dist/components/avatar/avatar.d.ts +14 -0
  167. package/dist/components/avatar/avatar.d.ts.map +1 -1
  168. package/dist/components/avatar/index.js +1 -1
  169. package/dist/components/booking/booking-types.d.ts +26 -0
  170. package/dist/components/booking/booking-types.d.ts.map +1 -1
  171. package/dist/components/booking/booking.d.ts.map +1 -1
  172. package/dist/components/booking/details-form.d.ts.map +1 -1
  173. package/dist/components/booking/index.js +1 -1
  174. package/dist/components/booking/slot-load-state.d.ts +11 -0
  175. package/dist/components/booking/slot-load-state.d.ts.map +1 -0
  176. package/dist/components/calendar/index.js +1 -1
  177. package/dist/components/care-plan-card/index.js +1 -1
  178. package/dist/components/care-plan-header/index.js +1 -1
  179. package/dist/components/chat-message/index.js +1 -1
  180. package/dist/components/checkbox/checkbox.d.ts.map +1 -1
  181. package/dist/components/checkbox/index.js +1 -1
  182. package/dist/components/checkbox-group/index.js +1 -1
  183. package/dist/components/city-input/index.js +1 -1
  184. package/dist/components/clinical-note-card/index.js +1 -1
  185. package/dist/components/combobox/combobox.d.ts.map +1 -1
  186. package/dist/components/combobox/index.js +1 -1
  187. package/dist/components/contact-card/index.js +1 -1
  188. package/dist/components/contact-profile-card/index.js +1 -1
  189. package/dist/components/country-select/index.js +1 -1
  190. package/dist/components/data-table/index.js +2 -2
  191. package/dist/components/dependent-selector/index.js +1 -1
  192. package/dist/components/entity-summary/index.js +1 -1
  193. package/dist/components/face-scheme/index.js +1 -1
  194. package/dist/components/file-manager/index.js +1 -1
  195. package/dist/components/header-settings/header-settings.d.ts +2 -1
  196. package/dist/components/header-settings/header-settings.d.ts.map +1 -1
  197. package/dist/components/header-settings/index.js +1 -1
  198. package/dist/components/heatmap/index.js +1 -1
  199. package/dist/components/link/index.js +1 -1
  200. package/dist/components/link/link.d.ts +10 -1
  201. package/dist/components/link/link.d.ts.map +1 -1
  202. package/dist/components/link/social-url.d.ts +71 -0
  203. package/dist/components/link/social-url.d.ts.map +1 -0
  204. package/dist/components/map-view/index.js +1 -1
  205. package/dist/components/map-view/map-view.d.ts.map +1 -1
  206. package/dist/components/message-card/index.js +1 -1
  207. package/dist/components/message-tray/index.js +1 -1
  208. package/dist/components/nav-grid/index.js +1 -1
  209. package/dist/components/note-timeline/index.js +1 -1
  210. package/dist/components/notes-panel/index.js +1 -1
  211. package/dist/components/operator-hero/index.js +1 -1
  212. package/dist/components/operator-hero/operator-hero.d.ts +6 -0
  213. package/dist/components/operator-hero/operator-hero.d.ts.map +1 -1
  214. package/dist/components/patient-details/index.js +1 -1
  215. package/dist/components/patient-search/index.js +1 -1
  216. package/dist/components/patient-search/patient-search.d.ts.map +1 -1
  217. package/dist/components/patient-summary-card/index.js +1 -1
  218. package/dist/components/patient-table/index.js +1 -1
  219. package/dist/components/payment-card/index.js +1 -1
  220. package/dist/components/periodontal-diagnosis/index.js +1 -1
  221. package/dist/components/permission-matrix/index.js +1 -1
  222. package/dist/components/practice-profile-hero/index.js +1 -1
  223. package/dist/components/practice-profile-hero/practice-profile-hero.d.ts +6 -0
  224. package/dist/components/practice-profile-hero/practice-profile-hero.d.ts.map +1 -1
  225. package/dist/components/practice-results/index.js +1 -1
  226. package/dist/components/practice-results/practice-results.d.ts +8 -2
  227. package/dist/components/practice-results/practice-results.d.ts.map +1 -1
  228. package/dist/components/product-hub-tray/index.js +1 -1
  229. package/dist/components/province-select/index.js +1 -1
  230. package/dist/components/public-footer/index.js +1 -1
  231. package/dist/components/public-footer/public-footer.d.ts +13 -1
  232. package/dist/components/public-footer/public-footer.d.ts.map +1 -1
  233. package/dist/components/public-footer/socials.d.ts +6 -5
  234. package/dist/components/public-footer/socials.d.ts.map +1 -1
  235. package/dist/components/reviews-panel/index.js +1 -1
  236. package/dist/components/reviews-panel/reviews-panel.d.ts.map +1 -1
  237. package/dist/components/rich-text-editor/index.js +1 -1
  238. package/dist/components/slot-grid/index.js +1 -1
  239. package/dist/components/slot-grid/slot-grid.d.ts +2 -0
  240. package/dist/components/slot-grid/slot-grid.d.ts.map +1 -1
  241. package/dist/components/task-editor/index.js +1 -1
  242. package/dist/components/timeline/index.js +1 -1
  243. package/dist/components/voice-control-panel/index.js +1 -1
  244. package/dist/host-compat.css +1 -10
  245. package/dist/i18n/config.d.ts.map +1 -1
  246. package/dist/i18n/config.js +224 -96
  247. package/dist/i18n/config.js.map +1 -1
  248. package/dist/i18n/locales/ar.d.ts +3 -0
  249. package/dist/i18n/locales/ar.d.ts.map +1 -1
  250. package/dist/i18n/locales/ar.js +4 -1
  251. package/dist/i18n/locales/ar.js.map +1 -1
  252. package/dist/i18n/locales/de.d.ts +3 -0
  253. package/dist/i18n/locales/de.d.ts.map +1 -1
  254. package/dist/i18n/locales/de.js +4 -1
  255. package/dist/i18n/locales/de.js.map +1 -1
  256. package/dist/i18n/locales/el.d.ts +3 -0
  257. package/dist/i18n/locales/el.d.ts.map +1 -1
  258. package/dist/i18n/locales/el.js +4 -1
  259. package/dist/i18n/locales/el.js.map +1 -1
  260. package/dist/i18n/locales/en.d.ts +3 -0
  261. package/dist/i18n/locales/en.d.ts.map +1 -1
  262. package/dist/i18n/locales/en.js +3 -0
  263. package/dist/i18n/locales/en.js.map +1 -1
  264. package/dist/i18n/locales/es.d.ts +3 -0
  265. package/dist/i18n/locales/es.d.ts.map +1 -1
  266. package/dist/i18n/locales/es.js +4 -1
  267. package/dist/i18n/locales/es.js.map +1 -1
  268. package/dist/i18n/locales/fr.d.ts +3 -0
  269. package/dist/i18n/locales/fr.d.ts.map +1 -1
  270. package/dist/i18n/locales/fr.js +4 -1
  271. package/dist/i18n/locales/fr.js.map +1 -1
  272. package/dist/i18n/locales/hi.d.ts +3 -0
  273. package/dist/i18n/locales/hi.d.ts.map +1 -1
  274. package/dist/i18n/locales/hi.js +4 -1
  275. package/dist/i18n/locales/hi.js.map +1 -1
  276. package/dist/i18n/locales/it.d.ts +3 -0
  277. package/dist/i18n/locales/it.d.ts.map +1 -1
  278. package/dist/i18n/locales/it.js +4 -1
  279. package/dist/i18n/locales/it.js.map +1 -1
  280. package/dist/i18n/locales/ja.d.ts +3 -0
  281. package/dist/i18n/locales/ja.d.ts.map +1 -1
  282. package/dist/i18n/locales/ja.js +4 -1
  283. package/dist/i18n/locales/ja.js.map +1 -1
  284. package/dist/i18n/locales/nl.d.ts +3 -0
  285. package/dist/i18n/locales/nl.d.ts.map +1 -1
  286. package/dist/i18n/locales/nl.js +4 -1
  287. package/dist/i18n/locales/nl.js.map +1 -1
  288. package/dist/i18n/locales/pl.d.ts +3 -0
  289. package/dist/i18n/locales/pl.d.ts.map +1 -1
  290. package/dist/i18n/locales/pl.js +4 -1
  291. package/dist/i18n/locales/pl.js.map +1 -1
  292. package/dist/i18n/locales/pt.d.ts +3 -0
  293. package/dist/i18n/locales/pt.d.ts.map +1 -1
  294. package/dist/i18n/locales/pt.js +4 -1
  295. package/dist/i18n/locales/pt.js.map +1 -1
  296. package/dist/i18n/locales/ro.d.ts +3 -0
  297. package/dist/i18n/locales/ro.d.ts.map +1 -1
  298. package/dist/i18n/locales/ro.js +4 -1
  299. package/dist/i18n/locales/ro.js.map +1 -1
  300. package/dist/i18n/locales/ru.d.ts +3 -0
  301. package/dist/i18n/locales/ru.d.ts.map +1 -1
  302. package/dist/i18n/locales/ru.js +4 -1
  303. package/dist/i18n/locales/ru.js.map +1 -1
  304. package/dist/i18n/locales/sq.d.ts +3 -0
  305. package/dist/i18n/locales/sq.d.ts.map +1 -1
  306. package/dist/i18n/locales/sq.js +4 -1
  307. package/dist/i18n/locales/sq.js.map +1 -1
  308. package/dist/i18n/locales/sv.d.ts +3 -0
  309. package/dist/i18n/locales/sv.d.ts.map +1 -1
  310. package/dist/i18n/locales/sv.js +4 -1
  311. package/dist/i18n/locales/sv.js.map +1 -1
  312. package/dist/i18n/locales/tr.d.ts +3 -0
  313. package/dist/i18n/locales/tr.d.ts.map +1 -1
  314. package/dist/i18n/locales/tr.js +4 -1
  315. package/dist/i18n/locales/tr.js.map +1 -1
  316. package/dist/i18n/locales/zh.d.ts +3 -0
  317. package/dist/i18n/locales/zh.d.ts.map +1 -1
  318. package/dist/i18n/locales/zh.js +4 -1
  319. package/dist/i18n/locales/zh.js.map +1 -1
  320. package/dist/index.js +68 -68
  321. package/dist/locales/ar.json +4 -1
  322. package/dist/locales/de.json +4 -1
  323. package/dist/locales/el.json +4 -1
  324. package/dist/locales/en.json +3 -0
  325. package/dist/locales/es.json +4 -1
  326. package/dist/locales/fr.json +4 -1
  327. package/dist/locales/hi.json +4 -1
  328. package/dist/locales/it.json +4 -1
  329. package/dist/locales/ja.json +4 -1
  330. package/dist/locales/nl.json +4 -1
  331. package/dist/locales/pl.json +4 -1
  332. package/dist/locales/pt.json +4 -1
  333. package/dist/locales/ro.json +4 -1
  334. package/dist/locales/ru.json +4 -1
  335. package/dist/locales/sq.json +4 -1
  336. package/dist/locales/sv.json +4 -1
  337. package/dist/locales/tr.json +4 -1
  338. package/dist/locales/zh.json +4 -1
  339. package/dist/patterns/alia-assistant/index.js +1 -1
  340. package/dist/patterns/anamnesis/index.js +1 -1
  341. package/dist/patterns/calendar/index.js +1 -1
  342. package/dist/patterns/error-page/error-page-english.d.ts +71 -0
  343. package/dist/patterns/error-page/error-page-english.d.ts.map +1 -0
  344. package/dist/patterns/error-page/error-page.d.ts.map +1 -1
  345. package/dist/patterns/error-page/index.js +1 -1
  346. package/dist/patterns/login-form/index.js +1 -1
  347. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  348. package/dist/patterns/registration-form/index.js +1 -1
  349. package/dist/patterns/signature-request/index.js +1 -1
  350. package/dist/patterns/signed-out-frame/index.js +1 -1
  351. package/dist/patterns/workflow-webhook-action/index.js +1 -1
  352. package/dist/tokens.css +1 -1
  353. package/package.json +1 -1
  354. package/dist/_chunks/address-autocomplete-bPR2mNBt.js +0 -498
  355. package/dist/_chunks/address-autocomplete-bPR2mNBt.js.map +0 -1
  356. package/dist/_chunks/autocomplete-CnB1mHGc.js +0 -539
  357. package/dist/_chunks/autocomplete-CnB1mHGc.js.map +0 -1
  358. package/dist/_chunks/avatar-BPiPL7ND.js.map +0 -1
  359. package/dist/_chunks/booking-C0FoW8Yx.js +0 -4336
  360. package/dist/_chunks/booking-C0FoW8Yx.js.map +0 -1
  361. package/dist/_chunks/checkbox-BjDv-r3o.js.map +0 -1
  362. package/dist/_chunks/combobox-CDPm_n0p.js.map +0 -1
  363. package/dist/_chunks/contact-profile-card-Da1vmJQI.js.map +0 -1
  364. package/dist/_chunks/error-page-Bhai-spN.js +0 -344
  365. package/dist/_chunks/error-page-Bhai-spN.js.map +0 -1
  366. package/dist/_chunks/header-settings-BVhjndtV.js.map +0 -1
  367. package/dist/_chunks/index.modern-BeRXQVdc.js.map +0 -1
  368. package/dist/_chunks/languages-CZqBaPwI.js.map +0 -1
  369. package/dist/_chunks/link-N5_YpLtm.js +0 -138
  370. package/dist/_chunks/link-N5_YpLtm.js.map +0 -1
  371. package/dist/_chunks/map-view-Bvi06RVh.js.map +0 -1
  372. package/dist/_chunks/operator-hero-6aAIQaFZ.js.map +0 -1
  373. package/dist/_chunks/patient-search-CCOUZABE.js +0 -1196
  374. package/dist/_chunks/patient-search-CCOUZABE.js.map +0 -1
  375. package/dist/_chunks/practice-profile-hero-qfrsFQI_.js.map +0 -1
  376. package/dist/_chunks/practice-results-B61krlwu.js.map +0 -1
  377. package/dist/_chunks/public-footer-CXOrdAaS.js +0 -568
  378. package/dist/_chunks/public-footer-CXOrdAaS.js.map +0 -1
  379. package/dist/_chunks/reviews-panel-UzQQLb-z.js.map +0 -1
  380. package/dist/_chunks/slot-grid-Bb13H9Rl.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"appointment-tray-Dwc8MSIQ.js","sources":["../../src/components/appointment-card/appointment-card.agent.ts","../../src/components/appointment-card/appointment-tray.agent.ts","../../src/components/appointment-card/appointment-tray.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — AppointmentCard. */\n/* */\n/* Single-appointment surface. Activation is owned by the consumer / */\n/* host tray; the card emits a DOM hook so a future MCP UI bridge can */\n/* address one rendered card by its appointment id. Read-only — the card */\n/* exposes no imperative handle of its own (the tray owns activation). */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\n\nexport const appointmentCardAgent: AgentAdapter = {\n id: 'appointment-card',\n // 'pick' (non-persisting activation) is host-delegated: the card exposes no\n // handle of its own — its enclosing AppointmentTray performs the pick via\n // `appointment-tray.select_item`, addressing this card by its data-component-id.\n capabilities: ['pick'],\n state: {},\n actions: {},\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'appointment-card',\n description:\n 'Marks the element as a kit AppointmentCard. The root also emits data-component-id sourced from item.id, data-state with the appointment lifecycle, and data-type with the delivery channel.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'item.id',\n description: 'Sourced from item.id — the stable appointment identifier.',\n },\n },\n};\n","/* -------------------------------------------------------------------- */\n/* Agent adapter — AppointmentTray. */\n/* */\n/* Tray-level surface: read appointment ids + lifecycle state (never */\n/* patient names / treatments), and route an activation through the */\n/* curated handle. AppointmentTray is in-page (no open/close). */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { AppointmentTrayHandle } from './appointment-tray';\n\nexport const appointmentTrayAgent: AgentAdapter<AppointmentTrayHandle> = {\n id: 'appointment-tray',\n // 'pick' (non-persisting activation): select_item routes an activation\n // through onActivate — it does not persist a \"selected appointment\" value,\n // so this is a focus/pick, not a select_single.\n capabilities: ['pick'],\n state: {\n items: {\n type: 'Array<{ id: string; state: string }>',\n descriptionKey: 'ui.agent.appointmentTray.state.items',\n description:\n 'Currently-displayed appointments. Ids + lifecycle state only — never patient identity.',\n read: (handle) => handle.getItems(),\n },\n },\n actions: {\n select_item: {\n safety: 'read',\n argsType: '{ id: string }',\n argsSchema: {\n type: 'object',\n properties: { id: { type: 'string' } },\n required: ['id'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.appointmentTray.actions.selectItem',\n description: 'Activate the appointment with the given id.',\n invoke: (handle, args: { id: string }) => {\n handle.selectItem(args.id);\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'appointment-tray',\n description: 'Marks the AppointmentTray wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description:\n 'Sourced from the id prop. Required to address a specific tray from the agent.',\n },\n item: {\n attr: 'data-appointment-id',\n description:\n 'Stable appointment id emitted on each rendered AppointmentCard inside the tray.',\n },\n },\n};\n","import {\n forwardRef,\n useImperativeHandle,\n useMemo,\n useRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { CalendarDays, Plus } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\nimport { Skeleton } from '../skeleton/skeleton';\nimport { EmptyState } from '../empty-state/empty-state';\nimport { AppointmentCard, type AppointmentItem } from './appointment-card';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { appointmentTrayAgent } from './appointment-tray.agent';\n\n/* -------------------------------------------------------------------- */\n/* AppointmentTray */\n/* */\n/* Bordered panel that hosts a list of AppointmentCards — header with a */\n/* title + optional caption + an \"Add\" affordance, a body that branches */\n/* on loading (Skeleton) / empty (EmptyState) / list. Mirrors AgendaTray */\n/* but composes the richer AppointmentCard row. */\n/* */\n/* All visible text flows through useTranslation('ui') against the */\n/* `appointmentTray.*` namespace. */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* CVA — panel surface */\n/* -------------------------------------------------------------------- */\n\nconst appointmentTrayVariants = cva(\n [\n 'ds:flex ds:flex-col',\n 'ds:rounded-[var(--radius-md)] ds:shadow-[var(--shadow-card)]',\n 'ds:[:where(&)]:border-[length:var(--surface-border-width,var(--border-width-sm))] ds:border-[color:var(--card-border)]',\n 'ds:bg-[color:var(--card)] ds:text-[color:var(--card-foreground)]',\n 'ds:overflow-hidden',\n ].join(' '),\n {\n variants: {\n size: {\n sm: '',\n md: '',\n },\n },\n defaultVariants: {\n size: 'sm',\n },\n },\n);\n\n/* -------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------- */\n\n/**\n * Curated imperative handle for AppointmentTray — the forwardRef target so a\n * future agent / MCP UI bridge can drive the tray without touching the DOM.\n * Reads identifiers + lifecycle state only, never patient identity. See\n * `appointment-tray.agent.ts`.\n */\nexport interface AppointmentTrayHandle {\n getItems: () => Array<{ id: string; state: string }>;\n selectItem: (id: string) => void;\n}\n\nexport interface AppointmentTrayProps\n extends\n Omit<HTMLAttributes<HTMLElement>, 'onClick' | 'id'>,\n VariantProps<typeof appointmentTrayVariants> {\n /**\n * Stable instance id. Surfaced on the root as `data-component-id` so an\n * agent / MCP UI bridge can address this specific tray.\n */\n id?: string;\n /** The appointments to render. */\n items: AppointmentItem[];\n /** Section title — rendered in the header. Localised by the consumer. */\n title?: string;\n /** Optional small caption (e.g. localised date) shown next to the title. */\n caption?: string;\n /** Visual density passed through to each AppointmentCard. */\n size?: 'sm' | 'md';\n /** BCP-47 locale override passed to each AppointmentCard. */\n locale?: string;\n /** ISO-4217 currency code passed to each AppointmentCard. */\n currency?: string;\n onOpenAppointment?: (item: AppointmentItem) => void;\n onAddAppointment?: () => void;\n /** Localised label for the \"Add\" affordance. */\n addLabel?: string;\n loading?: boolean;\n emptyTitle?: string;\n emptyDescription?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const AppointmentTray = forwardRef<HTMLElement, AppointmentTrayProps>(\n (\n {\n id,\n items,\n title,\n caption,\n size = 'sm',\n locale,\n currency,\n onOpenAppointment,\n onAddAppointment,\n addLabel,\n loading = false,\n emptyTitle,\n emptyDescription,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation('ui');\n const heading = title ?? t('appointmentTray.title');\n const resolvedAddLabel = addLabel ?? t('appointmentTray.add');\n const isEmpty = !loading && items.length === 0;\n\n let body: ReactNode;\n if (loading) {\n body = (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-sm)]\">\n {[0, 1, 2].map((i) => (\n <Skeleton key={i} variant=\"rectangular\" height=\"3.5rem\" />\n ))}\n </div>\n );\n } else if (isEmpty) {\n body = (\n <div className=\"ds:p-[var(--spacing-md)]\">\n <EmptyState\n variant=\"first-use\"\n size=\"sm\"\n title={emptyTitle ?? t('appointmentTray.empty.title')}\n description={\n emptyDescription ?? t('appointmentTray.empty.description')\n }\n />\n </div>\n );\n } else {\n body = (\n <ul className=\"ds:flex ds:list-none ds:flex-col ds:gap-[var(--spacing-2xs)] ds:p-[var(--spacing-2xs)]\">\n {items.map((item) => (\n <AppointmentCard\n key={item.id}\n item={item}\n size={size}\n locale={locale}\n currency={currency}\n onActivate={onOpenAppointment}\n data-appointment-id={item.id}\n />\n ))}\n </ul>\n );\n }\n\n /* Curated imperative handle for agent integration. See\n * appointment-tray.agent.ts. */\n const itemsRef = useRef<AppointmentItem[]>(items);\n itemsRef.current = items;\n\n const innerRef = useRef<HTMLElement>(null);\n useImperativeHandle(ref, () => innerRef.current as HTMLElement, []);\n\n const handle = useMemo<AppointmentTrayHandle>(\n () => ({\n getItems: () =>\n itemsRef.current.map((i) => ({ id: i.id, state: i.state })),\n selectItem: (targetId: string) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onOpenAppointment?.(found);\n },\n }),\n [onOpenAppointment],\n );\n\n useAgentRegistration(appointmentTrayAgent, handle, id);\n\n return (\n <section\n ref={innerRef}\n aria-label={heading}\n data-component=\"appointment-tray\"\n data-component-id={id}\n className={appointmentTrayVariants({ size, className })}\n {...rest}\n >\n <header className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-sm)]\">\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)] ds:min-w-0\">\n <h3 className=\"ds:m-0 ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] type-title-card\">\n <CalendarDays aria-hidden=\"true\" className=\"ds:size-4\" />\n {heading}\n </h3>\n {caption ? (\n <span className=\"type-eyebrow ds:text-[color:var(--muted-foreground)]\">\n {caption}\n </span>\n ) : null}\n </div>\n {onAddAppointment ? (\n <IconButton\n icon={<Plus />}\n intent=\"outline\"\n size=\"sm\"\n aria-label={resolvedAddLabel}\n onClick={onAddAppointment}\n />\n ) : null}\n </header>\n {body}\n </section>\n );\n },\n);\n\nAppointmentTray.displayName = 'AppointmentTray';\n"],"names":["appointmentCardAgent","appointmentTrayAgent","handle","args","appointmentTrayVariants","cva","AppointmentTray","forwardRef","id","items","title","caption","size","locale","currency","onOpenAppointment","onAddAppointment","addLabel","loading","emptyTitle","emptyDescription","className","rest","ref","t","useTranslation","heading","resolvedAddLabel","isEmpty","body","jsx","i","Skeleton","EmptyState","item","AppointmentCard","itemsRef","useRef","innerRef","useImperativeHandle","useMemo","targetId","found","useAgentRegistration","jsxs","CalendarDays","IconButton","Plus"],"mappings":"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"}
1
+ {"version":3,"file":"appointment-tray-6zd8RLIL.js","sources":["../../src/components/appointment-card/appointment-card.agent.ts","../../src/components/appointment-card/appointment-tray.agent.ts","../../src/components/appointment-card/appointment-tray.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — AppointmentCard. */\n/* */\n/* Single-appointment surface. Activation is owned by the consumer / */\n/* host tray; the card emits a DOM hook so a future MCP UI bridge can */\n/* address one rendered card by its appointment id. Read-only — the card */\n/* exposes no imperative handle of its own (the tray owns activation). */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\n\nexport const appointmentCardAgent: AgentAdapter = {\n id: 'appointment-card',\n // 'pick' (non-persisting activation) is host-delegated: the card exposes no\n // handle of its own — its enclosing AppointmentTray performs the pick via\n // `appointment-tray.select_item`, addressing this card by its data-component-id.\n capabilities: ['pick'],\n state: {},\n actions: {},\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'appointment-card',\n description:\n 'Marks the element as a kit AppointmentCard. The root also emits data-component-id sourced from item.id, data-state with the appointment lifecycle, and data-type with the delivery channel.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'item.id',\n description: 'Sourced from item.id — the stable appointment identifier.',\n },\n },\n};\n","/* -------------------------------------------------------------------- */\n/* Agent adapter — AppointmentTray. */\n/* */\n/* Tray-level surface: read appointment ids + lifecycle state (never */\n/* patient names / treatments), and route an activation through the */\n/* curated handle. AppointmentTray is in-page (no open/close). */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { AppointmentTrayHandle } from './appointment-tray';\n\nexport const appointmentTrayAgent: AgentAdapter<AppointmentTrayHandle> = {\n id: 'appointment-tray',\n // 'pick' (non-persisting activation): select_item routes an activation\n // through onActivate — it does not persist a \"selected appointment\" value,\n // so this is a focus/pick, not a select_single.\n capabilities: ['pick'],\n state: {\n items: {\n type: 'Array<{ id: string; state: string }>',\n descriptionKey: 'ui.agent.appointmentTray.state.items',\n description:\n 'Currently-displayed appointments. Ids + lifecycle state only — never patient identity.',\n read: (handle) => handle.getItems(),\n },\n },\n actions: {\n select_item: {\n safety: 'read',\n argsType: '{ id: string }',\n argsSchema: {\n type: 'object',\n properties: { id: { type: 'string' } },\n required: ['id'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.appointmentTray.actions.selectItem',\n description: 'Activate the appointment with the given id.',\n invoke: (handle, args: { id: string }) => {\n handle.selectItem(args.id);\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'appointment-tray',\n description: 'Marks the AppointmentTray wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description:\n 'Sourced from the id prop. Required to address a specific tray from the agent.',\n },\n item: {\n attr: 'data-appointment-id',\n description:\n 'Stable appointment id emitted on each rendered AppointmentCard inside the tray.',\n },\n },\n};\n","import {\n forwardRef,\n useImperativeHandle,\n useMemo,\n useRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { CalendarDays, Plus } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\nimport { Skeleton } from '../skeleton/skeleton';\nimport { EmptyState } from '../empty-state/empty-state';\nimport { AppointmentCard, type AppointmentItem } from './appointment-card';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { appointmentTrayAgent } from './appointment-tray.agent';\n\n/* -------------------------------------------------------------------- */\n/* AppointmentTray */\n/* */\n/* Bordered panel that hosts a list of AppointmentCards — header with a */\n/* title + optional caption + an \"Add\" affordance, a body that branches */\n/* on loading (Skeleton) / empty (EmptyState) / list. Mirrors AgendaTray */\n/* but composes the richer AppointmentCard row. */\n/* */\n/* All visible text flows through useTranslation('ui') against the */\n/* `appointmentTray.*` namespace. */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* CVA — panel surface */\n/* -------------------------------------------------------------------- */\n\nconst appointmentTrayVariants = cva(\n [\n 'ds:flex ds:flex-col',\n 'ds:rounded-[var(--radius-md)] ds:shadow-[var(--shadow-card)]',\n 'ds:[:where(&)]:border-[length:var(--surface-border-width,var(--border-width-sm))] ds:border-[color:var(--card-border)]',\n 'ds:bg-[color:var(--card)] ds:text-[color:var(--card-foreground)]',\n 'ds:overflow-hidden',\n ].join(' '),\n {\n variants: {\n size: {\n sm: '',\n md: '',\n },\n },\n defaultVariants: {\n size: 'sm',\n },\n },\n);\n\n/* -------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------- */\n\n/**\n * Curated imperative handle for AppointmentTray — the forwardRef target so a\n * future agent / MCP UI bridge can drive the tray without touching the DOM.\n * Reads identifiers + lifecycle state only, never patient identity. See\n * `appointment-tray.agent.ts`.\n */\nexport interface AppointmentTrayHandle {\n getItems: () => Array<{ id: string; state: string }>;\n selectItem: (id: string) => void;\n}\n\nexport interface AppointmentTrayProps\n extends\n Omit<HTMLAttributes<HTMLElement>, 'onClick' | 'id'>,\n VariantProps<typeof appointmentTrayVariants> {\n /**\n * Stable instance id. Surfaced on the root as `data-component-id` so an\n * agent / MCP UI bridge can address this specific tray.\n */\n id?: string;\n /** The appointments to render. */\n items: AppointmentItem[];\n /** Section title — rendered in the header. Localised by the consumer. */\n title?: string;\n /** Optional small caption (e.g. localised date) shown next to the title. */\n caption?: string;\n /** Visual density passed through to each AppointmentCard. */\n size?: 'sm' | 'md';\n /** BCP-47 locale override passed to each AppointmentCard. */\n locale?: string;\n /** ISO-4217 currency code passed to each AppointmentCard. */\n currency?: string;\n onOpenAppointment?: (item: AppointmentItem) => void;\n onAddAppointment?: () => void;\n /** Localised label for the \"Add\" affordance. */\n addLabel?: string;\n loading?: boolean;\n emptyTitle?: string;\n emptyDescription?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const AppointmentTray = forwardRef<HTMLElement, AppointmentTrayProps>(\n (\n {\n id,\n items,\n title,\n caption,\n size = 'sm',\n locale,\n currency,\n onOpenAppointment,\n onAddAppointment,\n addLabel,\n loading = false,\n emptyTitle,\n emptyDescription,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation('ui');\n const heading = title ?? t('appointmentTray.title');\n const resolvedAddLabel = addLabel ?? t('appointmentTray.add');\n const isEmpty = !loading && items.length === 0;\n\n let body: ReactNode;\n if (loading) {\n body = (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-sm)]\">\n {[0, 1, 2].map((i) => (\n <Skeleton key={i} variant=\"rectangular\" height=\"3.5rem\" />\n ))}\n </div>\n );\n } else if (isEmpty) {\n body = (\n <div className=\"ds:p-[var(--spacing-md)]\">\n <EmptyState\n variant=\"first-use\"\n size=\"sm\"\n title={emptyTitle ?? t('appointmentTray.empty.title')}\n description={\n emptyDescription ?? t('appointmentTray.empty.description')\n }\n />\n </div>\n );\n } else {\n body = (\n <ul className=\"ds:flex ds:list-none ds:flex-col ds:gap-[var(--spacing-2xs)] ds:p-[var(--spacing-2xs)]\">\n {items.map((item) => (\n <AppointmentCard\n key={item.id}\n item={item}\n size={size}\n locale={locale}\n currency={currency}\n onActivate={onOpenAppointment}\n data-appointment-id={item.id}\n />\n ))}\n </ul>\n );\n }\n\n /* Curated imperative handle for agent integration. See\n * appointment-tray.agent.ts. */\n const itemsRef = useRef<AppointmentItem[]>(items);\n itemsRef.current = items;\n\n const innerRef = useRef<HTMLElement>(null);\n useImperativeHandle(ref, () => innerRef.current as HTMLElement, []);\n\n const handle = useMemo<AppointmentTrayHandle>(\n () => ({\n getItems: () =>\n itemsRef.current.map((i) => ({ id: i.id, state: i.state })),\n selectItem: (targetId: string) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onOpenAppointment?.(found);\n },\n }),\n [onOpenAppointment],\n );\n\n useAgentRegistration(appointmentTrayAgent, handle, id);\n\n return (\n <section\n ref={innerRef}\n aria-label={heading}\n data-component=\"appointment-tray\"\n data-component-id={id}\n className={appointmentTrayVariants({ size, className })}\n {...rest}\n >\n <header className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-sm)]\">\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)] ds:min-w-0\">\n <h3 className=\"ds:m-0 ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] type-title-card\">\n <CalendarDays aria-hidden=\"true\" className=\"ds:size-4\" />\n {heading}\n </h3>\n {caption ? (\n <span className=\"type-eyebrow ds:text-[color:var(--muted-foreground)]\">\n {caption}\n </span>\n ) : null}\n </div>\n {onAddAppointment ? (\n <IconButton\n icon={<Plus />}\n intent=\"outline\"\n size=\"sm\"\n aria-label={resolvedAddLabel}\n onClick={onAddAppointment}\n />\n ) : null}\n </header>\n {body}\n </section>\n );\n },\n);\n\nAppointmentTray.displayName = 'AppointmentTray';\n"],"names":["appointmentCardAgent","appointmentTrayAgent","handle","args","appointmentTrayVariants","cva","AppointmentTray","forwardRef","id","items","title","caption","size","locale","currency","onOpenAppointment","onAddAppointment","addLabel","loading","emptyTitle","emptyDescription","className","rest","ref","t","useTranslation","heading","resolvedAddLabel","isEmpty","body","jsx","i","Skeleton","EmptyState","item","AppointmentCard","itemsRef","useRef","innerRef","useImperativeHandle","useMemo","targetId","found","useAgentRegistration","jsxs","CalendarDays","IconButton","Plus"],"mappings":"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"}
@@ -0,0 +1,562 @@
1
+ import { jsx as s, jsxs as R } from "react/jsx-runtime";
2
+ import { forwardRef as at, useId as ot, useState as T, useRef as p, useCallback as V, useEffect as E, useMemo as Y } from "react";
3
+ import { _ as g } from "./index-4xgbg-sn.js";
4
+ import * as B from "@radix-ui/react-popover";
5
+ import { c as P } from "./index-D2ZczOXr.js";
6
+ import { useTranslation as rt } from "react-i18next";
7
+ import { S as he } from "./spinner-CoflYlEx.js";
8
+ import { u as it, b as lt } from "./form-field-context-DtiROUJV.js";
9
+ import { u as dt } from "./use-controllable-state-BiY4xTzM.js";
10
+ import { u as ve } from "./use-isomorphic-layout-effect-BGfaCOP1.js";
11
+ import { g as ut } from "./group-options-BvKhQ3xb.js";
12
+ import { b as ct } from "./menu-row-BAr8bx1I.js";
13
+ import { I as pt, a as Z, b as ee, c as mt } from "./input-surface-iBmxVBfr.js";
14
+ import { u as ft } from "./registry-DvAUVLHh.js";
15
+ import { u as gt } from "./use-debounced-callback-BisrB-Fq.js";
16
+ const ht = {
17
+ id: "autocomplete",
18
+ capabilities: ["select_single", "filter", "open", "close"],
19
+ state: {
20
+ value: {
21
+ type: "string | null",
22
+ descriptionKey: "ui.agent.autocomplete.state.value",
23
+ description: "Currently-selected option value, or null when nothing is committed.",
24
+ read: (a) => a.getValue()
25
+ },
26
+ query: {
27
+ type: "string",
28
+ descriptionKey: "ui.agent.autocomplete.state.query",
29
+ description: "Current free-text query in the input.",
30
+ read: (a) => a.getQuery()
31
+ },
32
+ isOpen: {
33
+ type: "boolean",
34
+ descriptionKey: "ui.agent.autocomplete.state.isOpen",
35
+ description: "True when the suggestion popup is visible. Open with no suggestions to show reads false.",
36
+ read: (a) => a.getIsOpen()
37
+ }
38
+ },
39
+ actions: {
40
+ set_value: {
41
+ safety: "write",
42
+ argsType: "{ value: string | null }",
43
+ argsSchema: {
44
+ type: "object",
45
+ properties: { value: { type: ["string", "null"] } },
46
+ required: ["value"]
47
+ },
48
+ idempotent: !0,
49
+ descriptionKey: "ui.agent.autocomplete.actions.setValue",
50
+ description: "Set the committed value programmatically.",
51
+ invoke: (a, d) => {
52
+ a.setValue(d.value);
53
+ }
54
+ },
55
+ apply_filter: {
56
+ safety: "read",
57
+ argsType: "{ query: string }",
58
+ argsSchema: {
59
+ type: "object",
60
+ properties: { query: { type: "string" } },
61
+ required: ["query"]
62
+ },
63
+ idempotent: !0,
64
+ descriptionKey: "ui.agent.autocomplete.actions.applyFilter",
65
+ description: "Set the input query, which filters the suggestion list.",
66
+ invoke: (a, d) => {
67
+ a.setQuery(d.query);
68
+ }
69
+ },
70
+ clear: {
71
+ safety: "destructive",
72
+ idempotent: !0,
73
+ descriptionKey: "ui.agent.autocomplete.actions.clear",
74
+ description: "Clear the committed value and the query. Discards the typed input.",
75
+ invoke: (a) => {
76
+ a.clear();
77
+ }
78
+ },
79
+ open: {
80
+ safety: "read",
81
+ idempotent: !0,
82
+ descriptionKey: "ui.agent.autocomplete.actions.open",
83
+ description: "Open the suggestion list.",
84
+ invoke: (a) => {
85
+ a.open();
86
+ }
87
+ },
88
+ close: {
89
+ safety: "read",
90
+ idempotent: !0,
91
+ descriptionKey: "ui.agent.autocomplete.actions.close",
92
+ description: "Close the suggestion list.",
93
+ invoke: (a) => {
94
+ a.close();
95
+ }
96
+ }
97
+ },
98
+ domHooks: {
99
+ root: { attr: "data-component", value: "autocomplete" },
100
+ instanceId: {
101
+ attr: "data-component-id",
102
+ sourceProp: "id",
103
+ description: "Sourced from the id prop."
104
+ },
105
+ item: {
106
+ attr: "data-option-id",
107
+ description: "Each suggestion emits its value as data-option-id."
108
+ }
109
+ }
110
+ }, vt = P(
111
+ ["ds:flex ds:w-full ds:items-center", mt].join(" "),
112
+ {
113
+ variants: {
114
+ size: {
115
+ sm: `${Z.sm} ${ee.sm}`,
116
+ md: `${Z.md} ${ee.md}`,
117
+ lg: `${Z.lg} ${ee.lg}`
118
+ },
119
+ tone: pt
120
+ },
121
+ defaultVariants: { size: "md", tone: "default" }
122
+ }
123
+ ), bt = P(
124
+ [
125
+ "ds:flex-1 ds:min-w-0 ds:bg-transparent ds:text-foreground",
126
+ "ds:placeholder:text-muted-foreground",
127
+ "ds:outline-none ds:focus:outline-none ds:focus-visible:outline-none",
128
+ "ds:disabled:cursor-not-allowed",
129
+ "ds:read-only:cursor-default"
130
+ ].join(" "),
131
+ {
132
+ variants: {
133
+ hasStart: { true: "ds:ps-2", false: "ds:ps-3" },
134
+ hasEnd: { true: "ds:pe-2", false: "ds:pe-3" }
135
+ },
136
+ defaultVariants: { hasStart: !1, hasEnd: !1 }
137
+ }
138
+ ), yt = P(
139
+ [
140
+ "ds:z-[var(--z-dropdown)] ds:overflow-hidden",
141
+ "ds:rounded-[var(--radius-sm)] ds:border ds:border-border ds:bg-background",
142
+ "ds:shadow-[var(--shadow-md)]",
143
+ "ds:w-[var(--radix-popover-trigger-width)]",
144
+ "ds:animate-in ds:fade-in ds:zoom-in-95",
145
+ "ds:motion-reduce:animate-none"
146
+ ].join(" ")
147
+ ), be = P(
148
+ [
149
+ "ds:relative ds:flex ds:items-center ds:gap-[var(--spacing-sm)]",
150
+ "ds:ps-3 ds:pe-3 ds:py-2 ds:text-[length:var(--font-size-sm)] ds:text-foreground",
151
+ "ds:rounded-[var(--radius-sm)] ds:select-none ds:cursor-pointer",
152
+ "ds:data-[disabled=true]:pointer-events-none ds:data-[disabled=true]:opacity-50",
153
+ // cmdk moves the selection on pointer move, so hover needs no tint.
154
+ ct.selected
155
+ ].join(" ")
156
+ ), ye = [
157
+ "ds:[&_[cmdk-group-heading]]:ps-3",
158
+ "ds:[&_[cmdk-group-heading]]:pe-3",
159
+ "ds:[&_[cmdk-group-heading]]:py-1.5",
160
+ "ds:[&_[cmdk-group-heading]]:type-eyebrow",
161
+ "ds:[&_[cmdk-group-heading]]:text-muted-foreground"
162
+ ].join(" "), te = "ds:inline-flex ds:items-center ds:shrink-0 ds:text-muted-foreground ds:[&_svg]:size-4";
163
+ function se(a, d, q) {
164
+ return `${a}-${d}-${q}`;
165
+ }
166
+ function we(a, d) {
167
+ return `${a}:${d}`;
168
+ }
169
+ const wt = at(
170
+ function({
171
+ loadOptions: d,
172
+ debounceMs: q = 250,
173
+ value: Ce,
174
+ defaultValue: xe,
175
+ onChange: ke,
176
+ onSelect: u,
177
+ recents: w,
178
+ onRecentSelect: K,
179
+ snapOnBlur: Ne = !1,
180
+ size: Re = "md",
181
+ tone: Ve = "default",
182
+ startAdornment: M,
183
+ endAdornment: j,
184
+ placeholder: z,
185
+ disabled: Ae,
186
+ readOnly: C,
187
+ required: Ie,
188
+ name: Ee,
189
+ id: O,
190
+ className: _e,
191
+ "aria-label": U,
192
+ "aria-invalid": $e,
193
+ "aria-describedby": De,
194
+ autoComplete: H
195
+ }, A) {
196
+ const { t: h, i18n: Fe } = rt("ui"), c = it(), Te = ot(), v = O ?? c.id ?? Te, ne = `${v}-listbox`, Be = `${v}-live`, b = !!(c.disabled || Ae), Pe = !!(c.required || Ie), ae = c.invalid || !!$e, qe = ae ? "error" : Ve ?? "default", Ke = c.describedBy || De || void 0, [Me, oe] = dt({
197
+ value: Ce,
198
+ defaultValue: xe ?? "",
199
+ onChange: ke
200
+ }), r = Me ?? "", [x, i] = T(!1), [k, re] = T([]), [I, S] = T(!1), [m, je] = T(""), _ = p(!1), L = p(null), G = p(r), ie = p(/* @__PURE__ */ new Map()), le = p(/* @__PURE__ */ new Map()), y = p(null), $ = p(null);
201
+ lt(c, y);
202
+ const Q = H && H !== "off" ? H : void 0;
203
+ ve(() => {
204
+ var e;
205
+ Q && ((e = y.current) == null || e.setAttribute("autocomplete", Q));
206
+ });
207
+ const ze = V(
208
+ (e) => {
209
+ y.current = e, typeof A == "function" ? A(e) : A && (A.current = e);
210
+ },
211
+ [A]
212
+ ), de = Fe.language;
213
+ E(() => {
214
+ const e = /* @__PURE__ */ new Map();
215
+ for (const t of k) e.set(t.value, t);
216
+ ie.current = e;
217
+ }, [k]), E(() => {
218
+ const e = /* @__PURE__ */ new Map();
219
+ if (w) for (const t of w) e.set(t.value, t);
220
+ le.current = e;
221
+ }, [w]);
222
+ const Oe = V(
223
+ (e) => {
224
+ var n;
225
+ if (b || C || _.current) return;
226
+ (n = L.current) == null || n.abort();
227
+ const t = new AbortController();
228
+ L.current = t, G.current = e, S(!0), d(e, { signal: t.signal, locale: de }).then((o) => {
229
+ t.signal.aborted || G.current === e && (re(o), S(!1));
230
+ }).catch((o) => {
231
+ t.signal.aborted || o && typeof o == "object" && "name" in o && o.name === "AbortError" || G.current === e && (re([]), S(!1));
232
+ });
233
+ },
234
+ [b, C, d, de]
235
+ ), N = gt(Oe, q);
236
+ E(() => () => {
237
+ var e;
238
+ N.cancel(), (e = L.current) == null || e.abort();
239
+ }, [N]);
240
+ const f = V(
241
+ (e) => {
242
+ oe(e);
243
+ },
244
+ [oe]
245
+ ), ue = V(
246
+ (e) => {
247
+ const [t, n] = e.split(":");
248
+ if (!n || t !== "recent" && t !== "option") return null;
249
+ const ge = (t === "recent" ? le.current : ie.current).get(n);
250
+ return ge ? { kind: t, option: ge } : null;
251
+ },
252
+ []
253
+ ), Ue = (e) => {
254
+ f(e), !(b || C) && (Q && document.activeElement !== y.current || (x || i(!0), !_.current && N(e)));
255
+ }, He = (e) => {
256
+ _.current = !0;
257
+ }, Se = (e) => {
258
+ _.current = !1;
259
+ const t = e.currentTarget.value;
260
+ N(t);
261
+ }, Le = (e) => {
262
+ b || C || (i(!0), r && N(r));
263
+ }, Ge = (e) => {
264
+ const t = e.relatedTarget;
265
+ if (!(t && $.current && $.current.contains(t))) {
266
+ if (Ne && m) {
267
+ const n = ue(m);
268
+ n && (f(n.option.label), u == null || u(n.option));
269
+ }
270
+ i(!1);
271
+ }
272
+ }, Qe = (e) => {
273
+ if (!e.nativeEvent.isComposing) {
274
+ if (e.key === "Escape") {
275
+ x && (e.preventDefault(), e.stopPropagation(), i(!1));
276
+ return;
277
+ }
278
+ if (e.key === "ArrowDown" && !x) {
279
+ e.preventDefault(), i(!0), r && N(r);
280
+ return;
281
+ }
282
+ if (e.key === "Tab" && x && m) {
283
+ const t = ue(m);
284
+ t && (f(t.option.label), u == null || u(t.option), i(!1));
285
+ }
286
+ }
287
+ }, ce = (e, t) => {
288
+ var n;
289
+ f(t.label), e === "recent" ? K == null || K(t) : u == null || u(t), i(!1), (n = y.current) == null || n.focus();
290
+ }, W = (e) => {
291
+ e.preventDefault();
292
+ }, D = !!(w && w.length > 0) && r.length === 0, We = Y(
293
+ () => ut(k),
294
+ [k]
295
+ ), Xe = !!M, Je = !!j || I, Ye = vt({
296
+ size: Re,
297
+ tone: qe,
298
+ className: _e
299
+ }), Ze = Y(() => {
300
+ if (!m) return;
301
+ const [e, t] = m.split(":");
302
+ if (!(!t || e !== "recent" && e !== "option"))
303
+ return se(v, e, t);
304
+ }, [m, v]), F = k.length > 0, pe = !D && !F && !I && r.length > 0, me = I && !F, l = x && !b && !C && (D || F || pe || me), X = V(() => {
305
+ var n;
306
+ const e = y.current;
307
+ if (!e) return;
308
+ e.setAttribute("aria-expanded", String(l));
309
+ const t = (n = $.current) == null ? void 0 : n.querySelector("[cmdk-list]");
310
+ l && (t != null && t.id) ? e.setAttribute("aria-controls", t.id) : l || (e.removeAttribute("aria-controls"), e.removeAttribute("aria-activedescendant"));
311
+ }, [l]);
312
+ ve(X);
313
+ const et = V(
314
+ (e) => {
315
+ $.current = e, X();
316
+ },
317
+ [X]
318
+ ), J = p(r);
319
+ E(() => {
320
+ J.current = r;
321
+ }, [r]);
322
+ const fe = p(l);
323
+ E(() => {
324
+ fe.current = l;
325
+ }, [l]);
326
+ const tt = Y(
327
+ () => ({
328
+ getValue: () => J.current || null,
329
+ getQuery: () => J.current,
330
+ getIsOpen: () => fe.current,
331
+ setValue: (e) => {
332
+ f(e ?? "");
333
+ },
334
+ setQuery: (e) => {
335
+ f(e);
336
+ },
337
+ clear: () => {
338
+ f("");
339
+ },
340
+ open: () => {
341
+ i(!0);
342
+ },
343
+ close: () => {
344
+ i(!1);
345
+ }
346
+ }),
347
+ [f]
348
+ );
349
+ ft(ht, tt, O);
350
+ const st = k.length, nt = I ? h("common.loading", "Loading…") : x && r.length > 0 ? h("inputs.autocomplete.results", {
351
+ count: st,
352
+ defaultValue: "{{count}} results"
353
+ }) : "";
354
+ return /* @__PURE__ */ s(
355
+ g,
356
+ {
357
+ shouldFilter: !1,
358
+ value: m,
359
+ onValueChange: je,
360
+ label: U ?? (c.label || z),
361
+ className: "ds:w-full",
362
+ children: /* @__PURE__ */ R(B.Root, { open: l, children: [
363
+ /* @__PURE__ */ s(B.Anchor, { asChild: !0, children: /* @__PURE__ */ R(
364
+ "div",
365
+ {
366
+ className: Ye,
367
+ "data-component": "autocomplete",
368
+ "data-component-id": O,
369
+ "data-disabled": b || void 0,
370
+ children: [
371
+ M ? /* @__PURE__ */ s("span", { "aria-hidden": "true", className: `${te} ds:ps-3`, children: M }) : null,
372
+ /* @__PURE__ */ s(
373
+ g.Input,
374
+ {
375
+ ref: ze,
376
+ id: v,
377
+ name: Ee,
378
+ placeholder: z,
379
+ value: r,
380
+ onValueChange: Ue,
381
+ onFocus: Le,
382
+ onBlur: Ge,
383
+ onKeyDown: Qe,
384
+ onCompositionStart: He,
385
+ onCompositionEnd: Se,
386
+ disabled: b,
387
+ readOnly: C,
388
+ required: Pe,
389
+ role: "combobox",
390
+ "aria-autocomplete": "both",
391
+ "aria-expanded": l,
392
+ "aria-controls": l ? ne : void 0,
393
+ "aria-activedescendant": Ze,
394
+ "aria-describedby": Ke,
395
+ "aria-invalid": ae || void 0,
396
+ "aria-label": U ?? (c.label || h("inputs.autocomplete.ariaLabel")),
397
+ autoComplete: "off",
398
+ className: bt({ hasStart: Xe, hasEnd: Je })
399
+ }
400
+ ),
401
+ I ? /* @__PURE__ */ s("span", { className: `${te} ds:pe-3`, "aria-hidden": "true", children: /* @__PURE__ */ s(he, { variant: "pulse", size: "sm" }) }) : j ? /* @__PURE__ */ s("span", { "aria-hidden": "true", className: `${te} ds:pe-3`, children: j }) : null,
402
+ /* @__PURE__ */ s(
403
+ "span",
404
+ {
405
+ id: Be,
406
+ role: "status",
407
+ "aria-live": "polite",
408
+ "aria-atomic": "true",
409
+ className: "ds:sr-only",
410
+ children: nt
411
+ }
412
+ )
413
+ ]
414
+ }
415
+ ) }),
416
+ l ? /* @__PURE__ */ s(B.Portal, { children: /* @__PURE__ */ s(
417
+ B.Content,
418
+ {
419
+ ref: et,
420
+ role: "presentation",
421
+ side: "bottom",
422
+ align: "start",
423
+ sideOffset: 4,
424
+ onOpenAutoFocus: (e) => e.preventDefault(),
425
+ onCloseAutoFocus: (e) => e.preventDefault(),
426
+ onPointerDownOutside: (e) => {
427
+ var n;
428
+ const t = e.target;
429
+ if (t && ((n = y.current) != null && n.contains(t))) {
430
+ e.preventDefault();
431
+ return;
432
+ }
433
+ i(!1);
434
+ },
435
+ onEscapeKeyDown: () => i(!1),
436
+ onMouseDown: W,
437
+ className: yt(),
438
+ children: /* @__PURE__ */ R(
439
+ g.List,
440
+ {
441
+ id: ne,
442
+ label: U ?? (c.label || z || h("inputs.autocomplete.ariaLabel")),
443
+ className: "ds:max-h-[min(24rem,var(--radix-popover-content-available-height))] ds:overflow-auto ds:p-1",
444
+ children: [
445
+ D ? /* @__PURE__ */ s(
446
+ g.Group,
447
+ {
448
+ heading: h("inputs.autocomplete.recent", "Recent"),
449
+ className: ye,
450
+ children: (w ?? []).map((e) => /* @__PURE__ */ R(
451
+ g.Item,
452
+ {
453
+ id: se(v, "recent", e.value),
454
+ "data-option-id": e.value,
455
+ value: we("recent", e.value),
456
+ disabled: e.disabled,
457
+ onSelect: () => ce("recent", e),
458
+ onMouseDown: W,
459
+ className: be(),
460
+ children: [
461
+ e.startAdornment ? /* @__PURE__ */ s(
462
+ "span",
463
+ {
464
+ "aria-hidden": "true",
465
+ className: "ds:inline-flex ds:items-center ds:shrink-0",
466
+ children: e.startAdornment
467
+ }
468
+ ) : null,
469
+ /* @__PURE__ */ s("span", { className: "ds:flex-1 ds:truncate", children: e.label }),
470
+ e.endContent ? (
471
+ // Deliberately NOT aria-hidden — unlike
472
+ // `startAdornment`, this slot carries meaning
473
+ // and must reach the option's accessible name.
474
+ /* @__PURE__ */ s("span", { className: "ds:inline-flex ds:items-center ds:ms-auto ds:shrink-0", children: e.endContent })
475
+ ) : null
476
+ ]
477
+ },
478
+ `recent-${e.value}`
479
+ ))
480
+ }
481
+ ) : null,
482
+ pe ? /* @__PURE__ */ s(
483
+ "div",
484
+ {
485
+ role: "option",
486
+ "aria-disabled": "true",
487
+ "aria-selected": "false",
488
+ className: "ds:ps-3 ds:pe-3 ds:py-2 type-body-sm ds:text-muted-foreground",
489
+ children: h("inputs.autocomplete.noResults", "No results")
490
+ }
491
+ ) : null,
492
+ me ? /* @__PURE__ */ R(
493
+ "div",
494
+ {
495
+ role: "option",
496
+ "aria-disabled": "true",
497
+ "aria-selected": "false",
498
+ className: "ds:flex ds:items-center ds:gap-[var(--spacing-sm)] ds:ps-3 ds:pe-3 ds:py-2 type-body-sm ds:text-muted-foreground",
499
+ children: [
500
+ /* @__PURE__ */ s(he, { variant: "pulse", size: "sm" }),
501
+ /* @__PURE__ */ s("span", { children: h("common.loading", "Loading…") })
502
+ ]
503
+ }
504
+ ) : null,
505
+ !D && F ? We.map((e, t) => {
506
+ const n = e.items.map((o) => /* @__PURE__ */ R(
507
+ g.Item,
508
+ {
509
+ id: se(v, "option", o.value),
510
+ "data-option-id": o.value,
511
+ value: we("option", o.value),
512
+ disabled: o.disabled,
513
+ onSelect: () => ce("option", o),
514
+ onMouseDown: W,
515
+ className: be(),
516
+ children: [
517
+ o.startAdornment ? /* @__PURE__ */ s(
518
+ "span",
519
+ {
520
+ "aria-hidden": "true",
521
+ className: "ds:inline-flex ds:items-center ds:shrink-0",
522
+ children: o.startAdornment
523
+ }
524
+ ) : null,
525
+ /* @__PURE__ */ s("span", { className: "ds:flex-1 ds:truncate", children: o.label }),
526
+ o.endContent ? (
527
+ // Deliberately NOT aria-hidden — unlike
528
+ // `startAdornment`, this slot carries meaning
529
+ // and must reach the option's accessible name.
530
+ /* @__PURE__ */ s("span", { className: "ds:inline-flex ds:items-center ds:ms-auto ds:shrink-0", children: o.endContent })
531
+ ) : null
532
+ ]
533
+ },
534
+ `option-${o.value}`
535
+ ));
536
+ return e.group ? /* @__PURE__ */ s(
537
+ g.Group,
538
+ {
539
+ heading: e.group,
540
+ className: ye,
541
+ children: n
542
+ },
543
+ `group-${e.group}`
544
+ ) : /* @__PURE__ */ s(g.Group, { children: n }, `group-${t}`);
545
+ }) : null
546
+ ]
547
+ }
548
+ )
549
+ }
550
+ ) }) : null
551
+ ] })
552
+ }
553
+ );
554
+ }
555
+ ), Ct = wt;
556
+ Ct.displayName = "Autocomplete";
557
+ export {
558
+ Ct as A,
559
+ ht as a,
560
+ vt as b
561
+ };
562
+ //# sourceMappingURL=autocomplete-BXMcNoa3.js.map