@alfadocs/ui-kit-debug 0.46.0 → 0.48.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 (368) hide show
  1. package/dist/_chunks/{agenda-card-CFyWSX7Z.js → agenda-card-BaSfVfrL.js} +25 -29
  2. package/dist/_chunks/agenda-card-BaSfVfrL.js.map +1 -0
  3. package/dist/_chunks/{agenda-tray-Dyj9ChHC.js → agenda-tray-DQayYmQ0.js} +50 -67
  4. package/dist/_chunks/agenda-tray-DQayYmQ0.js.map +1 -0
  5. package/dist/_chunks/ai-consent-banner-DO5ingMq.js +169 -0
  6. package/dist/_chunks/ai-consent-banner-DO5ingMq.js.map +1 -0
  7. package/dist/_chunks/ai-tools-rail-CxYG04cw.js +280 -0
  8. package/dist/_chunks/ai-tools-rail-CxYG04cw.js.map +1 -0
  9. package/dist/_chunks/alia-sidebar-DlvyXgVC.js +1126 -0
  10. package/dist/_chunks/alia-sidebar-DlvyXgVC.js.map +1 -0
  11. package/dist/_chunks/anamnesis-card-CmkBVAln.js +156 -0
  12. package/dist/_chunks/anamnesis-card-CmkBVAln.js.map +1 -0
  13. package/dist/_chunks/appointment-tray-BwDHhWWC.js +419 -0
  14. package/dist/_chunks/appointment-tray-BwDHhWWC.js.map +1 -0
  15. package/dist/_chunks/{audio-recorder-C1rhKhSN.js → audio-recorder-DC-v9YFW.js} +81 -91
  16. package/dist/_chunks/audio-recorder-DC-v9YFW.js.map +1 -0
  17. package/dist/_chunks/{bmi-calculator-CQqXTVNL.js → bmi-calculator-DdylQzT6.js} +2 -2
  18. package/dist/_chunks/{bmi-calculator-CQqXTVNL.js.map → bmi-calculator-DdylQzT6.js.map} +1 -1
  19. package/dist/_chunks/{booking-DlDVuWMd.js → booking-WV2GSru5.js} +291 -303
  20. package/dist/_chunks/booking-WV2GSru5.js.map +1 -0
  21. package/dist/_chunks/{calculator-dialog-D-nfvteH.js → calculator-dialog-CFk4I91b.js} +2 -2
  22. package/dist/_chunks/{calculator-dialog-D-nfvteH.js.map → calculator-dialog-CFk4I91b.js.map} +1 -1
  23. package/dist/_chunks/calendar-days-C4BmpCZg.js +23 -0
  24. package/dist/_chunks/calendar-days-C4BmpCZg.js.map +1 -0
  25. package/dist/_chunks/{calendar-YHFknAGv.js → calendar-oYWOCrnf.js} +195 -210
  26. package/dist/_chunks/calendar-oYWOCrnf.js.map +1 -0
  27. package/dist/_chunks/care-plan-card-QmNpGggC.js +252 -0
  28. package/dist/_chunks/care-plan-card-QmNpGggC.js.map +1 -0
  29. package/dist/_chunks/care-plan-entry-card-Cnra7vUc.js +318 -0
  30. package/dist/_chunks/care-plan-entry-card-Cnra7vUc.js.map +1 -0
  31. package/dist/_chunks/{chat-input-CQe7nR_v.js → chat-input-CFwc7JxL.js} +2 -1
  32. package/dist/_chunks/{chat-input-CQe7nR_v.js.map → chat-input-CFwc7JxL.js.map} +1 -1
  33. package/dist/_chunks/{chat-message-ASgGtj-L.js → chat-message-Dm8U2RY1.js} +81 -74
  34. package/dist/_chunks/chat-message-Dm8U2RY1.js.map +1 -0
  35. package/dist/_chunks/clinical-note-card-BYo437dU.js +333 -0
  36. package/dist/_chunks/clinical-note-card-BYo437dU.js.map +1 -0
  37. package/dist/_chunks/code-block-HoddNOKJ.js +106 -0
  38. package/dist/_chunks/code-block-HoddNOKJ.js.map +1 -0
  39. package/dist/_chunks/{contact-profile-card-DHyuAPXM.js → contact-profile-card-DvvVfAA2.js} +102 -115
  40. package/dist/_chunks/contact-profile-card-DvvVfAA2.js.map +1 -0
  41. package/dist/_chunks/{cycle-calculator-KxA8dqDf.js → cycle-calculator-DYvGm_m1.js} +2 -2
  42. package/dist/_chunks/{cycle-calculator-KxA8dqDf.js.map → cycle-calculator-DYvGm_m1.js.map} +1 -1
  43. package/dist/_chunks/{dialog-BTpZV6It.js → dialog-DMGnSelc.js} +55 -55
  44. package/dist/_chunks/dialog-DMGnSelc.js.map +1 -0
  45. package/dist/_chunks/download-CDF1sbL9.js +16 -0
  46. package/dist/_chunks/download-CDF1sbL9.js.map +1 -0
  47. package/dist/_chunks/{due-date-calculator-mFxpHLml.js → due-date-calculator-BXd3ANj7.js} +2 -2
  48. package/dist/_chunks/{due-date-calculator-mFxpHLml.js.map → due-date-calculator-BXd3ANj7.js.map} +1 -1
  49. package/dist/_chunks/{editable-currency-cell-renderer-BEBUQl9P.js → editable-currency-cell-renderer-CLil9B29.js} +283 -293
  50. package/dist/_chunks/editable-currency-cell-renderer-CLil9B29.js.map +1 -0
  51. package/dist/_chunks/entity-card-COhmqHly.js +69 -0
  52. package/dist/_chunks/entity-card-COhmqHly.js.map +1 -0
  53. package/dist/_chunks/{gestational-age-calculator-gWI_uRA1.js → gestational-age-calculator-Crj6FgZw.js} +2 -2
  54. package/dist/_chunks/{gestational-age-calculator-gWI_uRA1.js.map → gestational-age-calculator-Crj6FgZw.js.map} +1 -1
  55. package/dist/_chunks/{insert-result-C5ABnzDl.js → insert-result-DNdi_JYW.js} +140 -168
  56. package/dist/_chunks/insert-result-DNdi_JYW.js.map +1 -0
  57. package/dist/_chunks/is-safe-url-DkETxeHz.js +7 -0
  58. package/dist/_chunks/is-safe-url-DkETxeHz.js.map +1 -0
  59. package/dist/_chunks/languages-DsVf_WzT.js +19 -0
  60. package/dist/_chunks/languages-DsVf_WzT.js.map +1 -0
  61. package/dist/_chunks/layers-pzGcbLPj.js +34 -0
  62. package/dist/_chunks/layers-pzGcbLPj.js.map +1 -0
  63. package/dist/_chunks/{message-card-DSPw5ghw.js → message-card-Dvl1TgaN.js} +15 -19
  64. package/dist/_chunks/message-card-Dvl1TgaN.js.map +1 -0
  65. package/dist/_chunks/{message-tray-hSQff9u4.js → message-tray-Dl6GQaaV.js} +2 -2
  66. package/dist/_chunks/{message-tray-hSQff9u4.js.map → message-tray-Dl6GQaaV.js.map} +1 -1
  67. package/dist/_chunks/mic-B4Gog3Gi.js +16 -0
  68. package/dist/_chunks/mic-B4Gog3Gi.js.map +1 -0
  69. package/dist/_chunks/operator-hero-CM8949Hd.js +198 -0
  70. package/dist/_chunks/operator-hero-CM8949Hd.js.map +1 -0
  71. package/dist/_chunks/patient-summary-card-BnTqxcTr.js +443 -0
  72. package/dist/_chunks/patient-summary-card-BnTqxcTr.js.map +1 -0
  73. package/dist/_chunks/payment-request-card-B_lyobd0.js +478 -0
  74. package/dist/_chunks/payment-request-card-B_lyobd0.js.map +1 -0
  75. package/dist/_chunks/{pdf-viewer-CWEXTlwq.js → pdf-viewer-G8SU6Azw.js} +3 -3
  76. package/dist/_chunks/pdf-viewer-G8SU6Azw.js.map +1 -0
  77. package/dist/_chunks/pencil-CfQX-0Qc.js +21 -0
  78. package/dist/_chunks/pencil-CfQX-0Qc.js.map +1 -0
  79. package/dist/_chunks/periodontal-chart-card-BYs9hax1.js +455 -0
  80. package/dist/_chunks/periodontal-chart-card-BYs9hax1.js.map +1 -0
  81. package/dist/_chunks/phone-Bi5yUm4I.js +20 -0
  82. package/dist/_chunks/phone-Bi5yUm4I.js.map +1 -0
  83. package/dist/_chunks/{practice-results-DDi-kvaD.js → practice-results-BFL_mcDW.js} +3 -2
  84. package/dist/_chunks/{practice-results-DDi-kvaD.js.map → practice-results-BFL_mcDW.js.map} +1 -1
  85. package/dist/_chunks/{pregnancy-weight-gain-BtEHaSqy.js → pregnancy-weight-gain-C7dK89jE.js} +2 -2
  86. package/dist/_chunks/{pregnancy-weight-gain-BtEHaSqy.js.map → pregnancy-weight-gain-C7dK89jE.js.map} +1 -1
  87. package/dist/_chunks/scan-line-lGioFwLC.js +18 -0
  88. package/dist/_chunks/scan-line-lGioFwLC.js.map +1 -0
  89. package/dist/_chunks/shield-check-BjCGH_Sr.js +21 -0
  90. package/dist/_chunks/shield-check-BjCGH_Sr.js.map +1 -0
  91. package/dist/_chunks/{sign-document-BCyLpFHJ.js → sign-document-DPI2pY9V.js} +2 -2
  92. package/dist/_chunks/{sign-document-BCyLpFHJ.js.map → sign-document-DPI2pY9V.js.map} +1 -1
  93. package/dist/_chunks/{streaming-text-GH07yIYh.js → streaming-text-CfhDqtIT.js} +49 -45
  94. package/dist/_chunks/streaming-text-CfhDqtIT.js.map +1 -0
  95. package/dist/_chunks/{transaction-chip-B8ujzowA.js → transaction-chip-BZCa6XDn.js} +8 -6
  96. package/dist/_chunks/{transaction-chip-B8ujzowA.js.map → transaction-chip-BZCa6XDn.js.map} +1 -1
  97. package/dist/_chunks/{unit-converter-u3CwNDpP.js → unit-converter-jWp3Z85y.js} +2 -2
  98. package/dist/_chunks/{unit-converter-u3CwNDpP.js.map → unit-converter-jWp3Z85y.js.map} +1 -1
  99. package/dist/_chunks/user-cog-BS_qc8nA.js +24 -0
  100. package/dist/_chunks/user-cog-BS_qc8nA.js.map +1 -0
  101. package/dist/_chunks/video-BAeICxCT.js +21 -0
  102. package/dist/_chunks/video-BAeICxCT.js.map +1 -0
  103. package/dist/_chunks/{workflow-map-BFNpzTiw.js → workflow-map-ZXw-zsZ8.js} +186 -219
  104. package/dist/_chunks/workflow-map-ZXw-zsZ8.js.map +1 -0
  105. package/dist/agent-catalog.json +324 -1
  106. package/dist/components/_shared/code-block.d.ts +39 -0
  107. package/dist/components/_shared/code-block.d.ts.map +1 -0
  108. package/dist/components/_shared/entity-card/entity-card.d.ts +40 -0
  109. package/dist/components/_shared/entity-card/entity-card.d.ts.map +1 -0
  110. package/dist/components/_shared/entity-card/index.d.ts +3 -0
  111. package/dist/components/_shared/entity-card/index.d.ts.map +1 -0
  112. package/dist/components/_shared/index.d.ts +2 -0
  113. package/dist/components/_shared/index.d.ts.map +1 -1
  114. package/dist/components/_shared/is-safe-url.d.ts +13 -0
  115. package/dist/components/_shared/is-safe-url.d.ts.map +1 -0
  116. package/dist/components/agenda-card/agenda-card.d.ts +1 -2
  117. package/dist/components/agenda-card/agenda-card.d.ts.map +1 -1
  118. package/dist/components/agenda-card/index.d.ts +2 -1
  119. package/dist/components/agenda-card/index.d.ts.map +1 -1
  120. package/dist/components/agenda-card/index.js +6 -5
  121. package/dist/components/agenda-card/index.js.map +1 -1
  122. package/dist/components/agenda-tray/index.js +1 -1
  123. package/dist/components/ai-consent-banner/ai-consent-banner.agent.d.ts +4 -0
  124. package/dist/components/ai-consent-banner/ai-consent-banner.agent.d.ts.map +1 -0
  125. package/dist/components/ai-consent-banner/ai-consent-banner.d.ts +45 -0
  126. package/dist/components/ai-consent-banner/ai-consent-banner.d.ts.map +1 -0
  127. package/dist/components/ai-consent-banner/index.d.ts +4 -0
  128. package/dist/components/ai-consent-banner/index.d.ts.map +1 -0
  129. package/dist/components/ai-consent-banner/index.js +6 -0
  130. package/dist/components/ai-consent-banner/index.js.map +1 -0
  131. package/dist/components/ai-tools-rail/ai-tools-rail.agent.d.ts +4 -0
  132. package/dist/components/ai-tools-rail/ai-tools-rail.agent.d.ts.map +1 -0
  133. package/dist/components/ai-tools-rail/ai-tools-rail.d.ts +60 -0
  134. package/dist/components/ai-tools-rail/ai-tools-rail.d.ts.map +1 -0
  135. package/dist/components/ai-tools-rail/index.d.ts +4 -0
  136. package/dist/components/ai-tools-rail/index.d.ts.map +1 -0
  137. package/dist/components/ai-tools-rail/index.js +6 -0
  138. package/dist/components/ai-tools-rail/index.js.map +1 -0
  139. package/dist/components/anamnesis-card/anamnesis-card.d.ts +68 -0
  140. package/dist/components/anamnesis-card/anamnesis-card.d.ts.map +1 -0
  141. package/dist/components/anamnesis-card/index.d.ts +3 -0
  142. package/dist/components/anamnesis-card/index.d.ts.map +1 -0
  143. package/dist/components/anamnesis-card/index.js +5 -0
  144. package/dist/components/anamnesis-card/index.js.map +1 -0
  145. package/dist/components/appointment-card/appointment-card.agent.d.ts +3 -0
  146. package/dist/components/appointment-card/appointment-card.agent.d.ts.map +1 -0
  147. package/dist/components/appointment-card/appointment-card.d.ts +93 -0
  148. package/dist/components/appointment-card/appointment-card.d.ts.map +1 -0
  149. package/dist/components/appointment-card/appointment-tray.agent.d.ts +4 -0
  150. package/dist/components/appointment-card/appointment-tray.agent.d.ts.map +1 -0
  151. package/dist/components/appointment-card/appointment-tray.d.ts +48 -0
  152. package/dist/components/appointment-card/appointment-tray.d.ts.map +1 -0
  153. package/dist/components/appointment-card/index.d.ts +8 -0
  154. package/dist/components/appointment-card/index.d.ts.map +1 -0
  155. package/dist/components/appointment-card/index.js +10 -0
  156. package/dist/components/appointment-card/index.js.map +1 -0
  157. package/dist/components/audio-recorder/index.js +1 -1
  158. package/dist/components/badge/badge.d.ts +1 -1
  159. package/dist/components/bmi-calculator/index.js +1 -1
  160. package/dist/components/booking/index.js +1 -1
  161. package/dist/components/calculator-dialog/index.js +1 -1
  162. package/dist/components/calendar/index.js +1 -1
  163. package/dist/components/card/card.d.ts +1 -1
  164. package/dist/components/care-plan-card/care-plan-card.agent.d.ts +4 -0
  165. package/dist/components/care-plan-card/care-plan-card.agent.d.ts.map +1 -0
  166. package/dist/components/care-plan-card/care-plan-card.d.ts +102 -0
  167. package/dist/components/care-plan-card/care-plan-card.d.ts.map +1 -0
  168. package/dist/components/care-plan-card/index.d.ts +4 -0
  169. package/dist/components/care-plan-card/index.d.ts.map +1 -0
  170. package/dist/components/care-plan-card/index.js +6 -0
  171. package/dist/components/care-plan-card/index.js.map +1 -0
  172. package/dist/components/care-plan-entry-card/care-plan-entry-card.agent.d.ts +4 -0
  173. package/dist/components/care-plan-entry-card/care-plan-entry-card.agent.d.ts.map +1 -0
  174. package/dist/components/care-plan-entry-card/care-plan-entry-card.d.ts +110 -0
  175. package/dist/components/care-plan-entry-card/care-plan-entry-card.d.ts.map +1 -0
  176. package/dist/components/care-plan-entry-card/index.d.ts +4 -0
  177. package/dist/components/care-plan-entry-card/index.d.ts.map +1 -0
  178. package/dist/components/care-plan-entry-card/index.js +6 -0
  179. package/dist/components/care-plan-entry-card/index.js.map +1 -0
  180. package/dist/components/chat-input/index.js +1 -1
  181. package/dist/components/chat-message/chat-message.d.ts +13 -0
  182. package/dist/components/chat-message/chat-message.d.ts.map +1 -1
  183. package/dist/components/chat-message/index.js +1 -1
  184. package/dist/components/clinical-note-card/clinical-note-card.agent.d.ts +4 -0
  185. package/dist/components/clinical-note-card/clinical-note-card.agent.d.ts.map +1 -0
  186. package/dist/components/clinical-note-card/clinical-note-card.d.ts +98 -0
  187. package/dist/components/clinical-note-card/clinical-note-card.d.ts.map +1 -0
  188. package/dist/components/clinical-note-card/index.d.ts +4 -0
  189. package/dist/components/clinical-note-card/index.d.ts.map +1 -0
  190. package/dist/components/clinical-note-card/index.js +6 -0
  191. package/dist/components/clinical-note-card/index.js.map +1 -0
  192. package/dist/components/contact-profile-card/index.js +1 -1
  193. package/dist/components/cycle-calculator/index.js +1 -1
  194. package/dist/components/data-table/index.js +1 -1
  195. package/dist/components/dialog/dialog.d.ts +7 -0
  196. package/dist/components/dialog/dialog.d.ts.map +1 -1
  197. package/dist/components/dialog/index.js +1 -1
  198. package/dist/components/due-date-calculator/index.js +1 -1
  199. package/dist/components/gestational-age-calculator/index.js +1 -1
  200. package/dist/components/index.d.ts +10 -0
  201. package/dist/components/index.d.ts.map +1 -1
  202. package/dist/components/message-card/index.js +5 -4
  203. package/dist/components/message-card/index.js.map +1 -1
  204. package/dist/components/message-card/message-card.d.ts +1 -2
  205. package/dist/components/message-card/message-card.d.ts.map +1 -1
  206. package/dist/components/message-tray/index.js +1 -1
  207. package/dist/components/operator-hero/index.js +1 -1
  208. package/dist/components/operator-hero/operator-hero.agent.d.ts.map +1 -1
  209. package/dist/components/operator-hero/operator-hero.d.ts +9 -0
  210. package/dist/components/operator-hero/operator-hero.d.ts.map +1 -1
  211. package/dist/components/patient-summary-card/index.d.ts +4 -0
  212. package/dist/components/patient-summary-card/index.d.ts.map +1 -0
  213. package/dist/components/patient-summary-card/index.js +6 -0
  214. package/dist/components/patient-summary-card/index.js.map +1 -0
  215. package/dist/components/patient-summary-card/patient-summary-card.agent.d.ts +4 -0
  216. package/dist/components/patient-summary-card/patient-summary-card.agent.d.ts.map +1 -0
  217. package/dist/components/patient-summary-card/patient-summary-card.d.ts +120 -0
  218. package/dist/components/patient-summary-card/patient-summary-card.d.ts.map +1 -0
  219. package/dist/components/payment-card/index.d.ts +7 -0
  220. package/dist/components/payment-card/index.d.ts.map +1 -0
  221. package/dist/components/payment-card/index.js +8 -0
  222. package/dist/components/payment-card/index.js.map +1 -0
  223. package/dist/components/payment-card/payment-card.agent.d.ts +4 -0
  224. package/dist/components/payment-card/payment-card.agent.d.ts.map +1 -0
  225. package/dist/components/payment-card/payment-card.d.ts +71 -0
  226. package/dist/components/payment-card/payment-card.d.ts.map +1 -0
  227. package/dist/components/payment-card/payment-request-card.agent.d.ts +4 -0
  228. package/dist/components/payment-card/payment-request-card.agent.d.ts.map +1 -0
  229. package/dist/components/payment-card/payment-request-card.d.ts +43 -0
  230. package/dist/components/payment-card/payment-request-card.d.ts.map +1 -0
  231. package/dist/components/pdf-viewer/index.js +1 -1
  232. package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  233. package/dist/components/periodontal-chart-card/index.d.ts +4 -0
  234. package/dist/components/periodontal-chart-card/index.d.ts.map +1 -0
  235. package/dist/components/periodontal-chart-card/index.js +7 -0
  236. package/dist/components/periodontal-chart-card/index.js.map +1 -0
  237. package/dist/components/periodontal-chart-card/periodontal-chart-card.agent.d.ts +4 -0
  238. package/dist/components/periodontal-chart-card/periodontal-chart-card.agent.d.ts.map +1 -0
  239. package/dist/components/periodontal-chart-card/periodontal-chart-card.d.ts +74 -0
  240. package/dist/components/periodontal-chart-card/periodontal-chart-card.d.ts.map +1 -0
  241. package/dist/components/practice-results/index.js +1 -1
  242. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  243. package/dist/components/public-header/public-header.d.ts +1 -1
  244. package/dist/components/sign-document/index.js +1 -1
  245. package/dist/components/stat/stat.d.ts +1 -1
  246. package/dist/components/streaming-text/index.js +1 -1
  247. package/dist/components/streaming-text/streaming-text.d.ts.map +1 -1
  248. package/dist/components/transaction-chip/index.js +1 -1
  249. package/dist/components/unit-converter/index.js +1 -1
  250. package/dist/components/workflow/index.js +1 -1
  251. package/dist/i18n/locales/ar.d.ts +366 -0
  252. package/dist/i18n/locales/ar.d.ts.map +1 -1
  253. package/dist/i18n/locales/ar.js +367 -1
  254. package/dist/i18n/locales/ar.js.map +1 -1
  255. package/dist/i18n/locales/de.d.ts +366 -0
  256. package/dist/i18n/locales/de.d.ts.map +1 -1
  257. package/dist/i18n/locales/de.js +367 -1
  258. package/dist/i18n/locales/de.js.map +1 -1
  259. package/dist/i18n/locales/el.d.ts +366 -0
  260. package/dist/i18n/locales/el.d.ts.map +1 -1
  261. package/dist/i18n/locales/el.js +367 -1
  262. package/dist/i18n/locales/el.js.map +1 -1
  263. package/dist/i18n/locales/en.d.ts +366 -0
  264. package/dist/i18n/locales/en.d.ts.map +1 -1
  265. package/dist/i18n/locales/en.js +367 -1
  266. package/dist/i18n/locales/en.js.map +1 -1
  267. package/dist/i18n/locales/es.d.ts +366 -0
  268. package/dist/i18n/locales/es.d.ts.map +1 -1
  269. package/dist/i18n/locales/es.js +367 -1
  270. package/dist/i18n/locales/es.js.map +1 -1
  271. package/dist/i18n/locales/fr.d.ts +366 -0
  272. package/dist/i18n/locales/fr.d.ts.map +1 -1
  273. package/dist/i18n/locales/fr.js +367 -1
  274. package/dist/i18n/locales/fr.js.map +1 -1
  275. package/dist/i18n/locales/hi.d.ts +366 -0
  276. package/dist/i18n/locales/hi.d.ts.map +1 -1
  277. package/dist/i18n/locales/hi.js +367 -1
  278. package/dist/i18n/locales/hi.js.map +1 -1
  279. package/dist/i18n/locales/it.d.ts +366 -0
  280. package/dist/i18n/locales/it.d.ts.map +1 -1
  281. package/dist/i18n/locales/it.js +367 -1
  282. package/dist/i18n/locales/it.js.map +1 -1
  283. package/dist/i18n/locales/ja.d.ts +366 -0
  284. package/dist/i18n/locales/ja.d.ts.map +1 -1
  285. package/dist/i18n/locales/ja.js +367 -1
  286. package/dist/i18n/locales/ja.js.map +1 -1
  287. package/dist/i18n/locales/nl.d.ts +366 -0
  288. package/dist/i18n/locales/nl.d.ts.map +1 -1
  289. package/dist/i18n/locales/nl.js +367 -1
  290. package/dist/i18n/locales/nl.js.map +1 -1
  291. package/dist/i18n/locales/pl.d.ts +366 -0
  292. package/dist/i18n/locales/pl.d.ts.map +1 -1
  293. package/dist/i18n/locales/pl.js +367 -1
  294. package/dist/i18n/locales/pl.js.map +1 -1
  295. package/dist/i18n/locales/pt.d.ts +366 -0
  296. package/dist/i18n/locales/pt.d.ts.map +1 -1
  297. package/dist/i18n/locales/pt.js +367 -1
  298. package/dist/i18n/locales/pt.js.map +1 -1
  299. package/dist/i18n/locales/ro.d.ts +366 -0
  300. package/dist/i18n/locales/ro.d.ts.map +1 -1
  301. package/dist/i18n/locales/ro.js +367 -1
  302. package/dist/i18n/locales/ro.js.map +1 -1
  303. package/dist/i18n/locales/ru.d.ts +366 -0
  304. package/dist/i18n/locales/ru.d.ts.map +1 -1
  305. package/dist/i18n/locales/ru.js +367 -1
  306. package/dist/i18n/locales/ru.js.map +1 -1
  307. package/dist/i18n/locales/sq.d.ts +366 -0
  308. package/dist/i18n/locales/sq.d.ts.map +1 -1
  309. package/dist/i18n/locales/sq.js +367 -1
  310. package/dist/i18n/locales/sq.js.map +1 -1
  311. package/dist/i18n/locales/sv.d.ts +366 -0
  312. package/dist/i18n/locales/sv.d.ts.map +1 -1
  313. package/dist/i18n/locales/sv.js +367 -1
  314. package/dist/i18n/locales/sv.js.map +1 -1
  315. package/dist/i18n/locales/tr.d.ts +366 -0
  316. package/dist/i18n/locales/tr.d.ts.map +1 -1
  317. package/dist/i18n/locales/tr.js +367 -1
  318. package/dist/i18n/locales/tr.js.map +1 -1
  319. package/dist/i18n/locales/zh.d.ts +366 -0
  320. package/dist/i18n/locales/zh.d.ts.map +1 -1
  321. package/dist/i18n/locales/zh.js +367 -1
  322. package/dist/i18n/locales/zh.js.map +1 -1
  323. package/dist/index.js +527 -491
  324. package/dist/index.js.map +1 -1
  325. package/dist/locales/ar.json +367 -1
  326. package/dist/locales/de.json +367 -1
  327. package/dist/locales/el.json +367 -1
  328. package/dist/locales/en.json +367 -1
  329. package/dist/locales/es.json +367 -1
  330. package/dist/locales/fr.json +367 -1
  331. package/dist/locales/hi.json +367 -1
  332. package/dist/locales/it.json +367 -1
  333. package/dist/locales/ja.json +367 -1
  334. package/dist/locales/nl.json +367 -1
  335. package/dist/locales/pl.json +367 -1
  336. package/dist/locales/pt.json +367 -1
  337. package/dist/locales/ro.json +367 -1
  338. package/dist/locales/ru.json +367 -1
  339. package/dist/locales/sq.json +367 -1
  340. package/dist/locales/sv.json +367 -1
  341. package/dist/locales/tr.json +367 -1
  342. package/dist/locales/zh.json +367 -1
  343. package/dist/patterns/alia-assistant/alia-chat-surface.d.ts.map +1 -1
  344. package/dist/patterns/alia-assistant/alia-types.d.ts +76 -0
  345. package/dist/patterns/alia-assistant/alia-types.d.ts.map +1 -1
  346. package/dist/patterns/alia-assistant/index.js +1 -1
  347. package/dist/tokens.css +1 -1
  348. package/package.json +42 -1
  349. package/dist/_chunks/agenda-card-CFyWSX7Z.js.map +0 -1
  350. package/dist/_chunks/agenda-tray-Dyj9ChHC.js.map +0 -1
  351. package/dist/_chunks/alia-sidebar-Be8FhKYd.js +0 -837
  352. package/dist/_chunks/alia-sidebar-Be8FhKYd.js.map +0 -1
  353. package/dist/_chunks/audio-recorder-C1rhKhSN.js.map +0 -1
  354. package/dist/_chunks/booking-DlDVuWMd.js.map +0 -1
  355. package/dist/_chunks/calendar-YHFknAGv.js.map +0 -1
  356. package/dist/_chunks/chat-message-ASgGtj-L.js.map +0 -1
  357. package/dist/_chunks/contact-profile-card-DHyuAPXM.js.map +0 -1
  358. package/dist/_chunks/dialog-BTpZV6It.js.map +0 -1
  359. package/dist/_chunks/editable-currency-cell-renderer-BEBUQl9P.js.map +0 -1
  360. package/dist/_chunks/insert-result-C5ABnzDl.js.map +0 -1
  361. package/dist/_chunks/message-card-DSPw5ghw.js.map +0 -1
  362. package/dist/_chunks/operator-hero-7LiiP7zi.js +0 -171
  363. package/dist/_chunks/operator-hero-7LiiP7zi.js.map +0 -1
  364. package/dist/_chunks/pdf-viewer-CWEXTlwq.js.map +0 -1
  365. package/dist/_chunks/shield-check-C73ma9Cs.js +0 -36
  366. package/dist/_chunks/shield-check-C73ma9Cs.js.map +0 -1
  367. package/dist/_chunks/streaming-text-GH07yIYh.js.map +0 -1
  368. package/dist/_chunks/workflow-map-BFNpzTiw.js.map +0 -1
@@ -0,0 +1,419 @@
1
+ import { jsx as a, jsxs as s } from "react/jsx-runtime";
2
+ import { forwardRef as $, useRef as K, useImperativeHandle as Y, useMemo as J } from "react";
3
+ import { c as H } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as G } from "react-i18next";
5
+ import { I as Q } from "./icon-button-CKEOrN37.js";
6
+ import { S as X } from "./skeleton-CZbwyJAA.js";
7
+ import { E as Z } from "./empty-state-BLy7tigq.js";
8
+ import { A as U } from "./avatar-BNQNhoyL.js";
9
+ import { B as P } from "./badge-zsf5i5bH.js";
10
+ import { T as ee } from "./tag-CdA0s_VV.js";
11
+ import { T as ae } from "./timestamp-BV2lC-wV.js";
12
+ import { T as se } from "./transaction-chip-BZCa6XDn.js";
13
+ import { i as re } from "./is-safe-url-DkETxeHz.js";
14
+ import { V as te } from "./video-BAeICxCT.js";
15
+ import { M as ne } from "./map-pin-B8STOPMJ.js";
16
+ import { c as q, a as oe } from "./entity-card-COhmqHly.js";
17
+ import { S as ie } from "./star-vav0SJ9e.js";
18
+ import { G as de } from "./globe-BkEFMNSg.js";
19
+ import { C as le } from "./chevron-right-BrpYejk0.js";
20
+ import { u as ce } from "./registry-nPAVE19X.js";
21
+ import { C as pe } from "./calendar-days-C4BmpCZg.js";
22
+ import { P as me } from "./plus-CYKNmfuA.js";
23
+ const ue = {
24
+ "var(--color-violet-500)": "ds:bg-[var(--color-violet-500)]",
25
+ "var(--color-purple-500)": "ds:bg-[var(--color-purple-500)]",
26
+ "var(--color-magenta-500)": "ds:bg-[var(--color-magenta-500)]",
27
+ "var(--color-blue-500)": "ds:bg-[var(--color-blue-500)]",
28
+ "var(--color-green-500)": "ds:bg-[var(--color-green-500)]",
29
+ "var(--color-red-500)": "ds:bg-[var(--color-red-500)]",
30
+ "var(--color-yellow-500)": "ds:bg-[var(--color-yellow-500)]",
31
+ "var(--color-indigo-500)": "ds:bg-[var(--color-indigo-500)]",
32
+ "var(--color-orange-500)": "ds:bg-[var(--color-orange-500)]",
33
+ "var(--color-fuchsia-500)": "ds:bg-[var(--color-fuchsia-500)]",
34
+ "var(--color-grey-700)": "ds:bg-[var(--color-grey-700)]"
35
+ };
36
+ function fe(e) {
37
+ return ue[q(e)] ?? "ds:bg-[var(--color-grey-700)]";
38
+ }
39
+ const ge = H(
40
+ [
41
+ "ds:relative ds:flex ds:items-start ds:gap-[var(--spacing-sm)]",
42
+ "ds:rounded-[var(--radius-md)]",
43
+ "ds:text-start ds:group",
44
+ "ds:bg-[var(--card)] ds:text-[color:var(--card-foreground)]",
45
+ "ds:transition-colors ds:duration-[var(--animation-duration)]",
46
+ "ds:motion-reduce:transition-none",
47
+ "ds:forced-colors:border ds:forced-colors:border-[CanvasText]"
48
+ ].join(" "),
49
+ {
50
+ variants: {
51
+ size: {
52
+ sm: "ds:p-[var(--spacing-sm)]",
53
+ md: "ds:p-[var(--spacing-md)]"
54
+ },
55
+ interactive: {
56
+ true: "ds:hover:bg-[color:var(--muted)]/40 ds:cursor-pointer",
57
+ false: ""
58
+ }
59
+ },
60
+ defaultVariants: {
61
+ size: "sm",
62
+ interactive: !1
63
+ }
64
+ }
65
+ ), B = [
66
+ "ds:focus-visible:outline-none",
67
+ "ds:after:content-[''] ds:after:absolute ds:after:inset-0 ds:after:rounded-[var(--radius-md)]",
68
+ "ds:after:pointer-events-auto",
69
+ "ds:focus-visible:after:outline-[length:var(--focus-ring-width)]",
70
+ "ds:focus-visible:after:outline-solid",
71
+ "ds:focus-visible:after:outline-[color:var(--ring)]",
72
+ "ds:focus-visible:after:outline-offset-[length:var(--focus-ring-offset)]",
73
+ "ds:forced-colors:focus-visible:after:outline-[CanvasText]"
74
+ ].join(" "), ve = {
75
+ inPractice: ne,
76
+ telehealth: te
77
+ }, F = $(
78
+ ({
79
+ item: e,
80
+ size: i = "sm",
81
+ locale: b,
82
+ currency: x = "EUR",
83
+ onActivate: o,
84
+ className: I,
85
+ ...R
86
+ }, l) => {
87
+ var h, w, t, y, z, V, E, j, L, A, M, _, D;
88
+ const { t: r } = G(), m = !!o, N = !!e.url && re(e.url), v = ((h = e.patient) == null ? void 0 : h.name) ?? r("appointmentCard.noPatient"), c = (w = e.operator) == null ? void 0 : w.name, C = r(`appointmentCard.state.${e.state}`), k = i === "md" ? "md" : "sm", S = ve[e.type], p = r("appointmentCard.itemLabel", {
89
+ patient: v,
90
+ state: C
91
+ }), u = /* @__PURE__ */ a("span", { className: "ds:min-w-0 ds:truncate type-title-item ds:text-[color:var(--foreground)]", children: v });
92
+ let f;
93
+ m && N ? f = /* @__PURE__ */ a(
94
+ "a",
95
+ {
96
+ href: e.url,
97
+ "aria-label": p,
98
+ className: B + " ds:contents",
99
+ onClick: (n) => {
100
+ n.defaultPrevented || n.metaKey || n.ctrlKey || n.shiftKey || o == null || o(e);
101
+ },
102
+ children: u
103
+ }
104
+ ) : m ? f = /* @__PURE__ */ a(
105
+ "button",
106
+ {
107
+ type: "button",
108
+ "aria-label": p,
109
+ className: B + " ds:contents ds:bg-transparent ds:border-0 ds:p-0 ds:text-start",
110
+ onClick: () => o == null ? void 0 : o(e),
111
+ children: u
112
+ }
113
+ ) : f = u;
114
+ const T = (e.treatments ?? []).map((n, O) => {
115
+ const W = n.elements && n.elements.length > 0 ? r("appointmentCard.treatmentWithElements", {
116
+ care: n.careName,
117
+ elements: n.elements.join(", ")
118
+ }) : n.careName;
119
+ return /* @__PURE__ */ a(
120
+ ee,
121
+ {
122
+ label: W,
123
+ variant: "neutral",
124
+ fill: "outline",
125
+ size: "sm",
126
+ maxInlineSize: "12rem"
127
+ },
128
+ `${n.careName}-${O}`
129
+ );
130
+ }), d = (t = e.bookingReason) == null ? void 0 : t.advanceAmountCents, g = typeof d == "number" && d > 0;
131
+ return /* @__PURE__ */ s(
132
+ "div",
133
+ {
134
+ ref: l,
135
+ role: "listitem",
136
+ "data-component": "appointment-card",
137
+ "data-component-id": e.id,
138
+ "data-state": e.state,
139
+ "data-type": e.type,
140
+ className: ge({ size: i, interactive: m, className: I }),
141
+ ...R,
142
+ children: [
143
+ /* @__PURE__ */ s("span", { className: "ds:flex ds:w-16 ds:shrink-0 ds:flex-col ds:items-start ds:gap-[var(--spacing-2xs)]", children: [
144
+ /* @__PURE__ */ s("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] ds:text-[color:var(--muted-foreground)]", children: [
145
+ /* @__PURE__ */ a(S, { "aria-hidden": "true", className: "ds:size-3.5 ds:shrink-0" }),
146
+ /* @__PURE__ */ a("span", { className: "ds:sr-only", children: r(`appointmentCard.type.${e.type}`) }),
147
+ /* @__PURE__ */ a(
148
+ ae,
149
+ {
150
+ value: e.startIso,
151
+ format: "absolute",
152
+ shape: "bare",
153
+ locale: b,
154
+ absoluteFormat: { hour: "numeric", minute: "2-digit" },
155
+ className: "type-body-sm ds:font-medium ds:text-[color:var(--foreground)] ds:tabular-nums"
156
+ }
157
+ )
158
+ ] }),
159
+ /* @__PURE__ */ a("span", { className: "type-eyebrow ds:text-[color:var(--muted-foreground)]", children: r("appointmentCard.duration", { count: e.durationMin }) })
160
+ ] }),
161
+ c ? /* @__PURE__ */ s("span", { className: "ds:relative ds:shrink-0", children: [
162
+ /* @__PURE__ */ a(
163
+ U,
164
+ {
165
+ name: c,
166
+ color: q((y = e.operator) == null ? void 0 : y.colorId),
167
+ size: k,
168
+ "aria-hidden": "true",
169
+ role: "presentation",
170
+ "aria-label": void 0
171
+ }
172
+ ),
173
+ /* @__PURE__ */ a(
174
+ "span",
175
+ {
176
+ "aria-hidden": "true",
177
+ className: "ds:absolute ds:bottom-0 ds:end-0 ds:size-2.5 ds:rounded-[var(--radius-full)] ds:border ds:border-[color:var(--card)] " + fe((z = e.operator) == null ? void 0 : z.colorId)
178
+ }
179
+ )
180
+ ] }) : null,
181
+ /* @__PURE__ */ s("div", { className: "ds:flex-1 ds:min-w-0 ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
182
+ /* @__PURE__ */ s("div", { className: "ds:flex ds:items-start ds:gap-[var(--spacing-sm)]", children: [
183
+ /* @__PURE__ */ s("div", { className: "ds:flex-1 ds:min-w-0 ds:flex ds:items-center ds:gap-[var(--spacing-xs)]", children: [
184
+ (V = e.patient) != null && V.avatarUrl ? /* @__PURE__ */ a(
185
+ U,
186
+ {
187
+ name: v,
188
+ src: e.patient.avatarUrl,
189
+ size: k,
190
+ className: "ds:shrink-0",
191
+ "aria-hidden": "true",
192
+ role: "presentation",
193
+ "aria-label": void 0
194
+ }
195
+ ) : null,
196
+ f
197
+ ] }),
198
+ /* @__PURE__ */ a(
199
+ P,
200
+ {
201
+ variant: oe(e.state),
202
+ size: "sm",
203
+ withDot: !0,
204
+ className: "ds:shrink-0",
205
+ children: C
206
+ }
207
+ )
208
+ ] }),
209
+ c || e.chair || (E = e.bookingReason) != null && E.specialty || e.firstVisit === "yes" ? /* @__PURE__ */ s("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-x-[var(--spacing-sm)] ds:gap-y-[var(--spacing-2xs)] type-eyebrow ds:text-[color:var(--muted-foreground)]", children: [
210
+ c ? /* @__PURE__ */ a("span", { children: c }) : null,
211
+ e.chair ? /* @__PURE__ */ a("span", { children: r("appointmentCard.chair", { chair: e.chair }) }) : null,
212
+ (j = e.bookingReason) != null && j.specialty ? /* @__PURE__ */ a("span", { children: e.bookingReason.specialty }) : null,
213
+ e.firstVisit === "yes" ? /* @__PURE__ */ s("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]", children: [
214
+ /* @__PURE__ */ a(ie, { "aria-hidden": "true", className: "ds:size-3 ds:shrink-0" }),
215
+ r("appointmentCard.firstVisit")
216
+ ] }) : null
217
+ ] }) : null,
218
+ (L = e.bookingReason) != null && L.description ? /* @__PURE__ */ a("span", { className: "type-body-sm ds:text-[color:var(--foreground)] ds:truncate", children: e.bookingReason.description }) : null,
219
+ T.length > 0 ? /* @__PURE__ */ a("div", { className: "ds:flex ds:flex-wrap ds:gap-[var(--spacing-2xs)]", children: T }) : null,
220
+ (A = e.flags) != null && A.bookedOnline || (M = e.flags) != null && M.highlightedAnamnesis || g ? /* @__PURE__ */ s("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
221
+ (_ = e.flags) != null && _.bookedOnline ? /* @__PURE__ */ a(P, { variant: "info", size: "sm", leading: /* @__PURE__ */ a(de, {}), children: r("appointmentCard.flag.bookedOnline") }) : null,
222
+ (D = e.flags) != null && D.highlightedAnamnesis ? /* @__PURE__ */ a(P, { variant: "warning", size: "sm", withDot: !0, children: r("appointmentCard.flag.highlightedAnamnesis") }) : null,
223
+ g ? /* @__PURE__ */ a(
224
+ se,
225
+ {
226
+ state: "to-invoice",
227
+ amount: d / 100,
228
+ currency: x,
229
+ locale: b,
230
+ size: "sm",
231
+ showLabel: !0
232
+ }
233
+ ) : null
234
+ ] }) : null
235
+ ] }),
236
+ m ? /* @__PURE__ */ a(
237
+ le,
238
+ {
239
+ "aria-hidden": "true",
240
+ className: "ds:size-4 ds:shrink-0 ds:self-center ds:text-[color:var(--muted-foreground)] ds:opacity-0 ds:transition-opacity ds:motion-reduce:transition-none ds:group-hover:opacity-100 ds:group-focus-within:opacity-100 ds:rtl:rotate-180"
241
+ }
242
+ ) : null
243
+ ]
244
+ }
245
+ );
246
+ }
247
+ );
248
+ F.displayName = "AppointmentCard";
249
+ const $e = {
250
+ id: "appointment-card",
251
+ capabilities: ["pick"],
252
+ state: {},
253
+ actions: {},
254
+ domHooks: {
255
+ root: {
256
+ attr: "data-component",
257
+ value: "appointment-card",
258
+ description: "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."
259
+ },
260
+ instanceId: {
261
+ attr: "data-component-id",
262
+ sourceProp: "item.id",
263
+ description: "Sourced from item.id — the stable appointment identifier."
264
+ }
265
+ }
266
+ }, he = {
267
+ id: "appointment-tray",
268
+ capabilities: ["select_single"],
269
+ state: {
270
+ items: {
271
+ type: "Array<{ id: string; state: string }>",
272
+ descriptionKey: "ui.agent.appointmentTray.state.items",
273
+ description: "Currently-displayed appointments. Ids + lifecycle state only — never patient identity.",
274
+ read: (e) => e.getItems()
275
+ }
276
+ },
277
+ actions: {
278
+ select_item: {
279
+ safety: "read",
280
+ argsType: "{ id: string }",
281
+ descriptionKey: "ui.agent.appointmentTray.actions.selectItem",
282
+ description: "Activate the appointment with the given id.",
283
+ invoke: (e, i) => {
284
+ e.selectItem(i.id);
285
+ }
286
+ }
287
+ },
288
+ domHooks: {
289
+ root: {
290
+ attr: "data-component",
291
+ value: "appointment-tray",
292
+ description: "Marks the AppointmentTray wrapper."
293
+ },
294
+ instanceId: {
295
+ attr: "data-component-id",
296
+ sourceProp: "id",
297
+ description: "Sourced from the id prop. Required to address a specific tray from the agent."
298
+ },
299
+ item: {
300
+ attr: "data-appointment-id",
301
+ description: "Stable appointment id emitted on each rendered AppointmentCard inside the tray."
302
+ }
303
+ }
304
+ }, ye = H(
305
+ [
306
+ "ds:flex ds:flex-col",
307
+ "ds:rounded-[var(--radius-md)] ds:shadow-[var(--shadow-card)]",
308
+ "ds:border ds:border-[color:var(--card-border)] ds:[.theme-accessible_&]:border-2",
309
+ "ds:bg-[color:var(--card)] ds:text-[color:var(--card-foreground)]",
310
+ "ds:overflow-hidden"
311
+ ].join(" "),
312
+ {
313
+ variants: {
314
+ size: {
315
+ sm: "",
316
+ md: ""
317
+ }
318
+ },
319
+ defaultVariants: {
320
+ size: "sm"
321
+ }
322
+ }
323
+ ), be = $(
324
+ ({
325
+ id: e,
326
+ items: i,
327
+ title: b,
328
+ caption: x,
329
+ size: o = "sm",
330
+ locale: I,
331
+ currency: R,
332
+ onOpenAppointment: l,
333
+ onAddAppointment: r,
334
+ addLabel: m,
335
+ loading: N = !1,
336
+ emptyTitle: v,
337
+ emptyDescription: c,
338
+ className: C,
339
+ ...k
340
+ }, S) => {
341
+ const { t: p } = G(), u = b ?? p("appointmentTray.title"), f = m ?? p("appointmentTray.add"), T = !N && i.length === 0;
342
+ let d;
343
+ N ? d = /* @__PURE__ */ a("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-sm)]", children: [0, 1, 2].map((t) => /* @__PURE__ */ a(X, { variant: "rectangular", height: "3.5rem" }, t)) }) : T ? d = /* @__PURE__ */ a("div", { className: "ds:p-[var(--spacing-md)]", children: /* @__PURE__ */ a(
344
+ Z,
345
+ {
346
+ variant: "first-use",
347
+ size: "sm",
348
+ title: v ?? p("appointmentTray.empty.title"),
349
+ description: c ?? p("appointmentTray.empty.description")
350
+ }
351
+ ) }) : d = /* @__PURE__ */ a("ul", { className: "ds:flex ds:list-none ds:flex-col ds:gap-[var(--spacing-2xs)] ds:p-[var(--spacing-2xs)]", children: i.map((t) => /* @__PURE__ */ a(
352
+ F,
353
+ {
354
+ item: t,
355
+ size: o,
356
+ locale: I,
357
+ currency: R,
358
+ onActivate: l,
359
+ "data-appointment-id": t.id
360
+ },
361
+ t.id
362
+ )) });
363
+ const g = K(i);
364
+ g.current = i;
365
+ const h = K(null);
366
+ Y(S, () => h.current, []);
367
+ const w = J(
368
+ () => ({
369
+ getItems: () => g.current.map((t) => ({ id: t.id, state: t.state })),
370
+ selectItem: (t) => {
371
+ const y = g.current.find((z) => z.id === t);
372
+ y && (l == null || l(y));
373
+ }
374
+ }),
375
+ [l]
376
+ );
377
+ return ce(he, w, e), /* @__PURE__ */ s(
378
+ "section",
379
+ {
380
+ ref: h,
381
+ "aria-label": u,
382
+ "data-component": "appointment-tray",
383
+ "data-component-id": e,
384
+ className: ye({ size: o, className: C }),
385
+ ...k,
386
+ children: [
387
+ /* @__PURE__ */ s("header", { className: "ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-sm)]", children: [
388
+ /* @__PURE__ */ s("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)] ds:min-w-0", children: [
389
+ /* @__PURE__ */ s("h3", { className: "ds:m-0 ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] type-title-card", children: [
390
+ /* @__PURE__ */ a(pe, { "aria-hidden": "true", className: "ds:size-4" }),
391
+ u
392
+ ] }),
393
+ x ? /* @__PURE__ */ a("span", { className: "type-eyebrow ds:text-[color:var(--muted-foreground)]", children: x }) : null
394
+ ] }),
395
+ r ? /* @__PURE__ */ a(
396
+ Q,
397
+ {
398
+ icon: /* @__PURE__ */ a(me, {}),
399
+ intent: "outline",
400
+ size: "sm",
401
+ "aria-label": f,
402
+ onClick: r
403
+ }
404
+ ) : null
405
+ ] }),
406
+ d
407
+ ]
408
+ }
409
+ );
410
+ }
411
+ );
412
+ be.displayName = "AppointmentTray";
413
+ export {
414
+ F as A,
415
+ be as a,
416
+ $e as b,
417
+ he as c
418
+ };
419
+ //# sourceMappingURL=appointment-tray-BwDHhWWC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appointment-tray-BwDHhWWC.js","sources":["../../src/components/appointment-card/appointment-card.tsx","../../src/components/appointment-card/appointment-card.agent.ts","../../src/components/appointment-card/appointment-tray.agent.ts","../../src/components/appointment-card/appointment-tray.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { ChevronRight, Globe, MapPin, Star, Video } from 'lucide-react';\nimport { Avatar } from '../avatar/avatar';\nimport { Badge } from '../badge/badge';\nimport { Tag } from '../tag/tag';\nimport { Timestamp } from '../timestamp/timestamp';\nimport { TransactionChip } from '../transaction-chip/transaction-chip';\nimport {\n appointmentStateBadge,\n colorIdToToken,\n isSafeEntityUrl,\n} from '../_shared/entity-card';\nimport type { AppointmentState } from '../_shared/entity-card';\n\n/*\n * Closed colour-dot class map. `colorIdToToken` resolves the operator's\n * numeric colour id to one of a fixed set of palette tokens; the operator\n * dot needs a *static* Tailwind class for each so the compiler can emit it\n * (dynamic `ds:bg-[…]` strings are not seen by the JIT). The keys mirror the\n * exact token strings the shared helper returns.\n */\nconst OPERATOR_DOT_CLASS: Record<string, string> = {\n 'var(--color-violet-500)': 'ds:bg-[var(--color-violet-500)]',\n 'var(--color-purple-500)': 'ds:bg-[var(--color-purple-500)]',\n 'var(--color-magenta-500)': 'ds:bg-[var(--color-magenta-500)]',\n 'var(--color-blue-500)': 'ds:bg-[var(--color-blue-500)]',\n 'var(--color-green-500)': 'ds:bg-[var(--color-green-500)]',\n 'var(--color-red-500)': 'ds:bg-[var(--color-red-500)]',\n 'var(--color-yellow-500)': 'ds:bg-[var(--color-yellow-500)]',\n 'var(--color-indigo-500)': 'ds:bg-[var(--color-indigo-500)]',\n 'var(--color-orange-500)': 'ds:bg-[var(--color-orange-500)]',\n 'var(--color-fuchsia-500)': 'ds:bg-[var(--color-fuchsia-500)]',\n 'var(--color-grey-700)': 'ds:bg-[var(--color-grey-700)]',\n};\n\nfunction operatorDotClass(colorId: number | string | undefined): string {\n return (\n OPERATOR_DOT_CLASS[colorIdToToken(colorId)] ??\n 'ds:bg-[var(--color-grey-700)]'\n );\n}\n\n/* -------------------------------------------------------------------- */\n/* AppointmentCard */\n/* */\n/* Single-row appointment surface — sibling of AgendaCard, but richer: */\n/* leading timestamp, operator + patient avatars with the operator */\n/* colour dot, a lifecycle-state Badge (announced by label, never colour */\n/* alone), treatment / tooth Tags, and an optional advance-deposit */\n/* TransactionChip. State→Badge-variant + colour-id→token + URL-safety */\n/* come from the shared `_shared/entity-card` helpers. */\n/* */\n/* All visible text flows through useTranslation('ui') against the */\n/* `appointmentCard.*` namespace (plus shared `financial.*` for money). */\n/* -------------------------------------------------------------------- */\n\n// Back-compat / one-stop import — the URL guard lives in the shared helper.\nexport { isSafeEntityUrl as isSafeAppointmentUrl } from '../_shared/is-safe-url';\n\n/* -------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------- */\n\n/** Appointment delivery channel. */\nexport type AppointmentType = 'inPractice' | 'telehealth';\n\n/** First-visit tri-state flag. */\nexport type AppointmentFirstVisit = 'yes' | 'no' | 'unknown';\n\n/** Operator (clinician) summary — name + optional palette colour id. */\nexport interface AppointmentOperator {\n /** Operator display name — drives the avatar initials + accessible name. */\n name: string;\n /** Numeric palette colour id, resolved to a kit token for the colour dot. */\n colorId?: number | string;\n}\n\n/** Patient summary — identity only, drives the avatar. */\nexport interface AppointmentPatient {\n /** Patient display name. */\n name: string;\n /** Optional avatar image URL. */\n avatarUrl?: string;\n}\n\n/** One treatment line within the appointment. */\nexport interface AppointmentTreatment {\n /** Localised care / treatment name. */\n careName: string;\n /** Optional tooth elements (e.g. FDI ids) the treatment targets. */\n elements?: string[];\n}\n\n/** Booking-reason metadata captured at online-booking time. */\nexport interface AppointmentBookingReason {\n /** Localised booking-reason description. */\n description: string;\n /** Expected duration in minutes. */\n durationMin?: number;\n /** Advance / deposit amount in cents (non-negative). */\n advanceAmountCents?: number;\n /** Localised specialty label. */\n specialty?: string;\n}\n\n/** Boolean appointment flags surfaced as chips / indicators. */\nexport interface AppointmentFlags {\n bookedOnline?: boolean;\n noPatientAssigned?: boolean;\n highlightedAnamnesis?: boolean;\n billable?: boolean;\n}\n\nexport interface AppointmentItem {\n /** Stable appointment identifier. */\n id: string;\n /** ISO-8601 start instant. */\n startIso: string;\n /** Duration in minutes. */\n durationMin: number;\n /** Lifecycle state — drives the Badge variant + label. */\n state: AppointmentState;\n /** Delivery channel — drives the leading type glyph. */\n type: AppointmentType;\n /** First-visit flag. */\n firstVisit?: AppointmentFirstVisit;\n /** Assigned operator. */\n operator?: AppointmentOperator;\n /** Chair / room label. */\n chair?: string;\n /** Patient identity. */\n patient?: AppointmentPatient;\n /** Treatment lines. */\n treatments?: AppointmentTreatment[];\n /** Online booking-reason metadata. */\n bookingReason?: AppointmentBookingReason;\n /** Boolean flags. */\n flags?: AppointmentFlags;\n /** Optional deep link — when present (and safe) the row renders as an anchor. */\n url?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* CVA — row */\n/* -------------------------------------------------------------------- */\n\nconst appointmentCardVariants = cva(\n [\n 'ds:relative ds:flex ds:items-start ds:gap-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:text-start ds:group',\n 'ds:bg-[var(--card)] ds:text-[color:var(--card-foreground)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)]',\n 'ds:motion-reduce:transition-none',\n 'ds:forced-colors:border ds:forced-colors:border-[CanvasText]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:p-[var(--spacing-sm)]',\n md: 'ds:p-[var(--spacing-md)]',\n },\n interactive: {\n true: 'ds:hover:bg-[color:var(--muted)]/40 ds:cursor-pointer',\n false: '',\n },\n },\n defaultVariants: {\n size: 'sm',\n interactive: false,\n },\n },\n);\n\nconst stretchedLinkClass = [\n 'ds:focus-visible:outline-none',\n \"ds:after:content-[''] ds:after:absolute ds:after:inset-0 ds:after:rounded-[var(--radius-md)]\",\n 'ds:after:pointer-events-auto',\n 'ds:focus-visible:after:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:after:outline-solid',\n 'ds:focus-visible:after:outline-[color:var(--ring)]',\n 'ds:focus-visible:after:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:after:outline-[CanvasText]',\n].join(' ');\n\nconst TYPE_ICON: Record<AppointmentType, typeof MapPin> = {\n inPractice: MapPin,\n telehealth: Video,\n};\n\n/* -------------------------------------------------------------------- */\n/* Props */\n/* -------------------------------------------------------------------- */\n\nexport interface AppointmentCardProps\n extends\n Omit<HTMLAttributes<HTMLDivElement>, 'onClick' | 'role' | 'title'>,\n VariantProps<typeof appointmentCardVariants> {\n /** The appointment to render. */\n item: AppointmentItem;\n /** Visual density. */\n size?: 'sm' | 'md';\n /** BCP-47 locale override for the timestamp + currency. */\n locale?: string;\n /** ISO-4217 currency code for the advance-deposit chip. Defaults to `EUR`. */\n currency?: string;\n /** Fires when the row is activated. */\n onActivate?: (item: AppointmentItem) => void;\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const AppointmentCard = forwardRef<HTMLDivElement, AppointmentCardProps>(\n (\n {\n item,\n size = 'sm',\n locale,\n currency = 'EUR',\n onActivate,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const interactive = !!onActivate;\n const hasSafeUrl = !!item.url && isSafeEntityUrl(item.url);\n\n const patientName = item.patient?.name ?? t('appointmentCard.noPatient');\n const operatorName = item.operator?.name;\n const stateLabel = t(`appointmentCard.state.${item.state}`);\n\n const avatarSize = size === 'md' ? 'md' : 'sm';\n const TypeIcon = TYPE_ICON[item.type];\n\n const ariaLabel = t('appointmentCard.itemLabel', {\n patient: patientName,\n state: stateLabel,\n });\n\n const titleNode = (\n <span className=\"ds:min-w-0 ds:truncate type-title-item ds:text-[color:var(--foreground)]\">\n {patientName}\n </span>\n );\n\n let activator: ReactNode;\n if (interactive && hasSafeUrl) {\n activator = (\n <a\n href={item.url}\n aria-label={ariaLabel}\n className={stretchedLinkClass + ' ds:contents'}\n onClick={(e) => {\n if (e.defaultPrevented || e.metaKey || e.ctrlKey || e.shiftKey)\n return;\n onActivate?.(item);\n }}\n >\n {titleNode}\n </a>\n );\n } else if (interactive) {\n activator = (\n <button\n type=\"button\"\n aria-label={ariaLabel}\n className={\n stretchedLinkClass +\n ' ds:contents ds:bg-transparent ds:border-0 ds:p-0 ds:text-start'\n }\n onClick={() => onActivate?.(item)}\n >\n {titleNode}\n </button>\n );\n } else {\n activator = titleNode;\n }\n\n // Treatment / tooth-element Tags. Each treatment becomes one Tag; the\n // tooth elements (when present) are appended to the visible label.\n const treatmentTags = (item.treatments ?? []).map((tx, index) => {\n const label =\n tx.elements && tx.elements.length > 0\n ? t('appointmentCard.treatmentWithElements', {\n care: tx.careName,\n elements: tx.elements.join(', '),\n })\n : tx.careName;\n return (\n <Tag\n key={`${tx.careName}-${index}`}\n label={label}\n variant=\"neutral\"\n fill=\"outline\"\n size=\"sm\"\n maxInlineSize=\"12rem\"\n />\n );\n });\n\n const advanceCents = item.bookingReason?.advanceAmountCents;\n const hasAdvance = typeof advanceCents === 'number' && advanceCents > 0;\n\n return (\n <div\n ref={ref}\n role=\"listitem\"\n data-component=\"appointment-card\"\n data-component-id={item.id}\n data-state={item.state}\n data-type={item.type}\n className={appointmentCardVariants({ size, interactive, className })}\n {...rest}\n >\n {/* Leading rail: type glyph + start time + duration */}\n <span className=\"ds:flex ds:w-16 ds:shrink-0 ds:flex-col ds:items-start ds:gap-[var(--spacing-2xs)]\">\n <span className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] ds:text-[color:var(--muted-foreground)]\">\n <TypeIcon aria-hidden=\"true\" className=\"ds:size-3.5 ds:shrink-0\" />\n <span className=\"ds:sr-only\">\n {t(`appointmentCard.type.${item.type}`)}\n </span>\n <Timestamp\n value={item.startIso}\n format=\"absolute\"\n shape=\"bare\"\n locale={locale}\n absoluteFormat={{ hour: 'numeric', minute: '2-digit' }}\n className=\"type-body-sm ds:font-medium ds:text-[color:var(--foreground)] ds:tabular-nums\"\n />\n </span>\n <span className=\"type-eyebrow ds:text-[color:var(--muted-foreground)]\">\n {t('appointmentCard.duration', { count: item.durationMin })}\n </span>\n </span>\n\n {/* Operator avatar with colour dot */}\n {operatorName ? (\n <span className=\"ds:relative ds:shrink-0\">\n <Avatar\n name={operatorName}\n color={colorIdToToken(item.operator?.colorId)}\n size={avatarSize}\n aria-hidden=\"true\"\n role=\"presentation\"\n aria-label={undefined}\n />\n <span\n aria-hidden=\"true\"\n className={\n 'ds:absolute ds:bottom-0 ds:end-0 ds:size-2.5 ds:rounded-[var(--radius-full)] ds:border ds:border-[color:var(--card)] ' +\n operatorDotClass(item.operator?.colorId)\n }\n />\n </span>\n ) : null}\n\n {/* Main content column */}\n <div className=\"ds:flex-1 ds:min-w-0 ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <div className=\"ds:flex ds:items-start ds:gap-[var(--spacing-sm)]\">\n <div className=\"ds:flex-1 ds:min-w-0 ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n {item.patient?.avatarUrl ? (\n <Avatar\n name={patientName}\n src={item.patient.avatarUrl}\n size={avatarSize}\n className=\"ds:shrink-0\"\n aria-hidden=\"true\"\n role=\"presentation\"\n aria-label={undefined}\n />\n ) : null}\n {activator}\n </div>\n <Badge\n variant={appointmentStateBadge(item.state)}\n size=\"sm\"\n withDot\n className=\"ds:shrink-0\"\n >\n {stateLabel}\n </Badge>\n </div>\n\n {/* Meta line: operator name · chair · specialty · first visit */}\n {operatorName ||\n item.chair ||\n item.bookingReason?.specialty ||\n item.firstVisit === 'yes' ? (\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-x-[var(--spacing-sm)] ds:gap-y-[var(--spacing-2xs)] type-eyebrow ds:text-[color:var(--muted-foreground)]\">\n {operatorName ? <span>{operatorName}</span> : null}\n {item.chair ? (\n <span>{t('appointmentCard.chair', { chair: item.chair })}</span>\n ) : null}\n {item.bookingReason?.specialty ? (\n <span>{item.bookingReason.specialty}</span>\n ) : null}\n {item.firstVisit === 'yes' ? (\n <span className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]\">\n <Star aria-hidden=\"true\" className=\"ds:size-3 ds:shrink-0\" />\n {t('appointmentCard.firstVisit')}\n </span>\n ) : null}\n </div>\n ) : null}\n\n {/* Booking reason */}\n {item.bookingReason?.description ? (\n <span className=\"type-body-sm ds:text-[color:var(--foreground)] ds:truncate\">\n {item.bookingReason.description}\n </span>\n ) : null}\n\n {/* Treatment / tooth Tags */}\n {treatmentTags.length > 0 ? (\n <div className=\"ds:flex ds:flex-wrap ds:gap-[var(--spacing-2xs)]\">\n {treatmentTags}\n </div>\n ) : null}\n\n {/* Flag chips + advance-deposit chip */}\n {item.flags?.bookedOnline ||\n item.flags?.highlightedAnamnesis ||\n hasAdvance ? (\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]\">\n {item.flags?.bookedOnline ? (\n <Badge variant=\"info\" size=\"sm\" leading={<Globe />}>\n {t('appointmentCard.flag.bookedOnline')}\n </Badge>\n ) : null}\n {item.flags?.highlightedAnamnesis ? (\n <Badge variant=\"warning\" size=\"sm\" withDot>\n {t('appointmentCard.flag.highlightedAnamnesis')}\n </Badge>\n ) : null}\n {hasAdvance ? (\n <TransactionChip\n state=\"to-invoice\"\n amount={(advanceCents as number) / 100}\n currency={currency}\n locale={locale}\n size=\"sm\"\n showLabel\n />\n ) : null}\n </div>\n ) : null}\n </div>\n\n {interactive ? (\n <ChevronRight\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:shrink-0 ds:self-center ds:text-[color:var(--muted-foreground)] ds:opacity-0 ds:transition-opacity ds:motion-reduce:transition-none ds:group-hover:opacity-100 ds:group-focus-within:opacity-100 ds:rtl:rotate-180\"\n />\n ) : null}\n </div>\n );\n },\n);\n\nAppointmentCard.displayName = 'AppointmentCard';\n","/* -------------------------------------------------------------------- */\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 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 capabilities: ['select_single'],\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 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:border ds:border-[color:var(--card-border)] ds:[.theme-accessible_&]:border-2',\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();\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":["OPERATOR_DOT_CLASS","operatorDotClass","colorId","colorIdToToken","appointmentCardVariants","cva","stretchedLinkClass","TYPE_ICON","MapPin","Video","AppointmentCard","forwardRef","item","size","locale","currency","onActivate","className","rest","ref","t","useTranslation","interactive","hasSafeUrl","isSafeEntityUrl","patientName","_a","operatorName","_b","stateLabel","avatarSize","TypeIcon","ariaLabel","titleNode","jsx","activator","e","treatmentTags","tx","index","label","Tag","advanceCents","_c","hasAdvance","jsxs","Timestamp","Avatar","_d","_e","_f","Badge","appointmentStateBadge","_g","_h","Star","_i","_j","_k","_l","Globe","_m","TransactionChip","ChevronRight","appointmentCardAgent","appointmentTrayAgent","handle","args","appointmentTrayVariants","AppointmentTray","id","items","title","caption","onOpenAppointment","onAddAppointment","addLabel","loading","emptyTitle","emptyDescription","heading","resolvedAddLabel","isEmpty","body","i","Skeleton","EmptyState","itemsRef","useRef","innerRef","useImperativeHandle","useMemo","targetId","found","useAgentRegistration","CalendarDays","IconButton","Plus"],"mappings":"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"}