@alfadocs/ui-kit 1.38.0 → 1.39.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 (303) hide show
  1. package/dist/_chunks/{actions-cell-renderer-CUn1pqEq.js → actions-cell-renderer-BXBy9c0f.js} +3 -3
  2. package/dist/_chunks/{agenda-tray-CG6jUjKc.js → agenda-tray-CBaJASb5.js} +3 -3
  3. package/dist/_chunks/{ai-consent-banner-De4gzSBZ.js → ai-consent-banner-DvtaM3yg.js} +2 -2
  4. package/dist/_chunks/{ai-prompt-input-DdxlaI7q.js → ai-prompt-input-DXknpQCB.js} +2 -2
  5. package/dist/_chunks/{alia-sidebar-B6bXlZZk.js → alia-sidebar-CUqaJNPQ.js} +7 -7
  6. package/dist/_chunks/{anamnesis-card-DGwINeNn.js → anamnesis-card-xtEhyojD.js} +2 -2
  7. package/dist/_chunks/{anamnesis-summary-rows-Cxtgo2ok.js → anamnesis-summary-rows-DQUqwWc1.js} +7 -7
  8. package/dist/_chunks/{appointment-card-WsDGBBut.js → appointment-card-TgR_2GKS.js} +134 -102
  9. package/dist/_chunks/{appointment-peek-5S4O1VQP.js → appointment-peek-abiR0T9e.js} +3 -3
  10. package/dist/_chunks/{appointment-timeline-D-rNwKpS.js → appointment-timeline-CCnyUYKz.js} +67 -63
  11. package/dist/_chunks/{appointment-tray-CK2CULg_.js → appointment-tray-N0yEI8UF.js} +4 -4
  12. package/dist/_chunks/{audio-recorder-BlQBC7N_.js → audio-recorder-B7dT-Y3v.js} +3 -3
  13. package/dist/_chunks/{balance-badge-cell-DHs5p0bA.js → balance-badge-cell-o6LldMUA.js} +5 -5
  14. package/dist/_chunks/{bishop-score-D5b8tktp.js → bishop-score-Cu70iv9C.js} +2 -2
  15. package/dist/_chunks/{bmi-calculator-dOKP-vW4.js → bmi-calculator-C9N19aLX.js} +2 -2
  16. package/dist/_chunks/{booking-x3J7sS2G.js → booking-Dn3jvv3K.js} +5 -5
  17. package/dist/_chunks/{button-nJaPh_HC.js → button-CaUe1uyd.js} +11 -7
  18. package/dist/_chunks/{button-group-QmN1VdUW.js → button-group-R32U7SyV.js} +2 -2
  19. package/dist/_chunks/{calendar-7GAUlsNO.js → calendar-ChJQzRw-.js} +2 -2
  20. package/dist/_chunks/calendar-workspace-B-fUbm62.js +11372 -0
  21. package/dist/_chunks/{care-plan-card-COFOI-fI.js → care-plan-card-BOv0NRle.js} +3 -3
  22. package/dist/_chunks/{care-plan-entry-card-BOKn0KW-.js → care-plan-entry-card-d-rZD4li.js} +3 -3
  23. package/dist/_chunks/{care-plan-header-CbuOuVBw.js → care-plan-header-CEmBXn6-.js} +2 -2
  24. package/dist/_chunks/{carousel.agent-Dv4a4M8L.js → carousel.agent-z1yLBpyC.js} +2 -2
  25. package/dist/_chunks/{chart-iWl76PXv.js → chart-PF2krCZC.js} +3 -3
  26. package/dist/_chunks/{chat-input-qM5QpUSq.js → chat-input-Cj7ZYQr5.js} +2 -2
  27. package/dist/_chunks/{chat-message-RniXtrCH.js → chat-message-BMVxiUIX.js} +3 -3
  28. package/dist/_chunks/{code-block-uVjNSI9g.js → code-block-BB-viuTn.js} +2 -2
  29. package/dist/_chunks/{connection-status-OEsWjmRk.js → connection-status-BmA9T0UO.js} +3 -3
  30. package/dist/_chunks/{contact-profile-card--My1H2UD.js → contact-profile-card-Zt6WNg1u.js} +2 -2
  31. package/dist/_chunks/{control-room-rail-DQoHdE1U.js → control-room-rail-CnNZusR5.js} +3 -3
  32. package/dist/_chunks/{copy-field-fYKpl6aN.js → copy-field-B8XRVmQv.js} +2 -2
  33. package/dist/_chunks/credit-card-D9XZsHGA.js +15 -0
  34. package/dist/_chunks/{cycle-calculator-BJeaXiZv.js → cycle-calculator-BH2StWoT.js} +2 -2
  35. package/dist/_chunks/{dashboard-grid-B23BFzRl.js → dashboard-grid-BcXWL5S9.js} +2 -2
  36. package/dist/_chunks/{data-table-Dy1lyumT.js → data-table-CcAx_I1w.js} +6 -6
  37. package/dist/_chunks/{data-table-tabs-BMR0zsVQ.js → data-table-tabs-B9SXA5VP.js} +3 -3
  38. package/dist/_chunks/{description-list-C1RXMDZ_.js → description-list-BsJ_6CQE.js} +2 -2
  39. package/dist/_chunks/{document-preview-DsEyRcNd.js → document-preview-COV0BC6n.js} +2 -2
  40. package/dist/_chunks/{document-scanner-CbWVtm7u.js → document-scanner-B1abl-A4.js} +2 -2
  41. package/dist/_chunks/{due-date-calculator-Dhc9Ljkb.js → due-date-calculator-Buh_mVHq.js} +2 -2
  42. package/dist/_chunks/{editable-currency-cell-renderer-D7blbDFY.js → editable-currency-cell-renderer-Psb6XKHR.js} +3 -3
  43. package/dist/_chunks/{editable-description-7ptNpJEg.js → editable-description-ADMVFPUz.js} +3 -3
  44. package/dist/_chunks/{editor-overlay-8fKAcRsm.js → editor-overlay-9tcPXNWt.js} +2 -2
  45. package/dist/_chunks/{empty-state-X0sVPfVo.js → empty-state-BUN_UAWf.js} +2 -2
  46. package/dist/_chunks/{entity-summary-BbW0mIzU.js → entity-summary-DXejuQ8i.js} +3 -3
  47. package/dist/_chunks/{error-boundary-ayXFCcq4.js → error-boundary-BNT2iQ1w.js} +2 -2
  48. package/dist/_chunks/{face-scheme-uFvhqz6h.js → face-scheme-Dg6ZyLKb.js} +5 -5
  49. package/dist/_chunks/{fetal-weight-C6SxchOv.js → fetal-weight-wx4ycKc6.js} +2 -2
  50. package/dist/_chunks/{field-array-C9dmRaIM.js → field-array-BW9KeeXG.js} +3 -3
  51. package/dist/_chunks/{file-manager-UlcYQv8n.js → file-manager-BfLQxF5t.js} +136 -150
  52. package/dist/_chunks/{finished-terminal-Br61Ip4e.js → finished-terminal-DJd7Z_po.js} +2 -2
  53. package/dist/_chunks/{fiscal-code-input-CkwIdB1y.js → fiscal-code-input-ODQRd_Sw.js} +2 -2
  54. package/dist/_chunks/folder-BghC8_S2.js +20 -0
  55. package/dist/_chunks/{freemium-paywall-BqGk_SBU.js → freemium-paywall-Cz-O9lQD.js} +2 -2
  56. package/dist/_chunks/{gestational-age-calculator-DDOGaPvg.js → gestational-age-calculator-CwbecTul.js} +2 -2
  57. package/dist/_chunks/{hcg-doubling-Bb_n6tEa.js → hcg-doubling-BcXriXJe.js} +2 -2
  58. package/dist/_chunks/{header-BZ4pZlJV.js → header-3o9o9v_T.js} +2 -2
  59. package/dist/_chunks/{header-settings-B8mLc03Q.js → header-settings-CTe45iDy.js} +4 -4
  60. package/dist/_chunks/{hover-card-Bcku1GQu.js → hover-card-BMJBVqIf.js} +2 -2
  61. package/dist/_chunks/{icon-button-8xqRnkdG.js → icon-button-CehAeZoP.js} +2 -2
  62. package/dist/_chunks/{icon-button-group-Dj6CRoYR.js → icon-button-group-DkkdIygu.js} +2 -2
  63. package/dist/_chunks/{icon-picker-CTWzlHJr.js → icon-picker-DMEelg9v.js} +3 -3
  64. package/dist/_chunks/{image-cropper-C84NDTB7.js → image-cropper-BjPjT7wU.js} +2 -2
  65. package/dist/_chunks/{info-tip-ey_Pon2y.js → info-tip-iP2Pm9dh.js} +2 -2
  66. package/dist/_chunks/{insert-result-LCNTskNJ.js → insert-result-DPnOBD85.js} +2 -2
  67. package/dist/_chunks/{key-value-pair-DczGb4yz.js → key-value-pair-DaQI_LZB.js} +2 -2
  68. package/dist/_chunks/{link-cell-renderer-BNa8x6oJ.js → link-cell-renderer-s3oHzOwi.js} +2 -2
  69. package/dist/_chunks/{locale-picker-BLeHbFSc.js → locale-picker-CH3kfrIG.js} +3 -3
  70. package/dist/_chunks/{map-view-CCAlC9IL.js → map-view-CHw4RL6w.js} +2 -2
  71. package/dist/_chunks/{marketplace-app-shell-BwH6Aruw.js → marketplace-app-shell-d2EtcUbe.js} +4 -4
  72. package/dist/_chunks/{message-card-Dm5Xshup.js → message-card-V3sFPiQI.js} +3 -3
  73. package/dist/_chunks/{message-tray-CXjVsKqp.js → message-tray-CrRIHfiQ.js} +4 -4
  74. package/dist/_chunks/{note-timeline-D2oPuQP6.js → note-timeline-Dn_XTo1s.js} +131 -90
  75. package/dist/_chunks/{notes-panel-CkbfDDzj.js → notes-panel-CAD1Ytcj.js} +276 -243
  76. package/dist/_chunks/{notification-card-ChcK9Wat.js → notification-card-B2gLO6dK.js} +3 -3
  77. package/dist/_chunks/{notification-tray-_NoChRKi.js → notification-tray-BOEKegVV.js} +4 -4
  78. package/dist/_chunks/{optical-prescription-cphK41eP.js → optical-prescription-LGgmtcST.js} +2 -2
  79. package/dist/_chunks/{panel-subview-BNXN8OEL.js → panel-subview-Cc2Wtt7D.js} +52 -52
  80. package/dist/_chunks/{patient-details-2cIaL-Zb.js → patient-details-C8ImUrVg.js} +3 -3
  81. package/dist/_chunks/{patient-field-row-IHb2VFc2.js → patient-field-row-BRSOKvme.js} +7 -7
  82. package/dist/_chunks/{patient-search-D08b6jgj.js → patient-search-5QcmQKJD.js} +2 -2
  83. package/dist/_chunks/{patient-summary-card-B131Q7Bp.js → patient-summary-card-BhmKB2KR.js} +7 -7
  84. package/dist/_chunks/{payment-automation-upsell-BLTdE2em.js → payment-automation-upsell-BKmBXU4i.js} +17 -16
  85. package/dist/_chunks/{payment-request-card-BxcdvxKR.js → payment-request-card-Cer6XXCn.js} +6 -5
  86. package/dist/_chunks/{periodontal-chart-BF_e3wZp.js → periodontal-chart-DJoZS_o7.js} +2 -2
  87. package/dist/_chunks/{periodontal-chart-card-BJEuJuzh.js → periodontal-chart-card-Nd1ZoYWb.js} +2 -2
  88. package/dist/_chunks/{popover-DzR5QYxp.js → popover-DO-pssF3.js} +2 -2
  89. package/dist/_chunks/{practice-results-CBNRJNnY.js → practice-results-D_jjzwgf.js} +5 -5
  90. package/dist/_chunks/{pregnancy-dating-nV1_S6w0.js → pregnancy-dating-DcyV9ZRD.js} +2 -2
  91. package/dist/_chunks/{pregnancy-weight-gain-tRecShAD.js → pregnancy-weight-gain-Bfq4Kwt5.js} +2 -2
  92. package/dist/_chunks/{privacy-lock-Be39vQUN.js → privacy-lock-CbFCAMM3.js} +3 -3
  93. package/dist/_chunks/{product-hub-panel-C3bMjscm.js → product-hub-panel-w40-_-1s.js} +3 -3
  94. package/dist/_chunks/{public-header.agent-Bl1KFwSE.js → public-header.agent-D-EBVskf.js} +3 -3
  95. package/dist/_chunks/{radiograph-panel.agent-k0G7JuoM.js → radiograph-panel.agent-LrILY2lN.js} +4 -4
  96. package/dist/_chunks/{receipt-euro-C6k4Gzhr.js → receipt-euro-B1cLM_TN.js} +3 -14
  97. package/dist/_chunks/{reviews-panel-Cy969x7q.js → reviews-panel-2GVuxGeT.js} +4 -4
  98. package/dist/_chunks/{rich-text-editor-BTXlorm5.js → rich-text-editor-C6fE-uP4.js} +5 -5
  99. package/dist/_chunks/{session-countdown-QMsnRa1x.js → session-countdown-BqppPrw6.js} +2 -2
  100. package/dist/_chunks/{sheet-hm04DGFd.js → sheet-C8WIDFS8.js} +2 -2
  101. package/dist/_chunks/{sign-in-with-alfadocs-button-BLe_quy5.js → sign-in-with-alfadocs-button-DWwBJtyE.js} +2 -2
  102. package/dist/_chunks/{signature-request-b-86AGlT.js → signature-request-D_j2aQu1.js} +359 -370
  103. package/dist/_chunks/{slot-grid-Bk3GZL1p.js → slot-grid-B3eOPkKD.js} +4 -4
  104. package/dist/_chunks/{streaming-text-DjFqLSt_.js → streaming-text-CE1u_oGa.js} +2 -2
  105. package/dist/_chunks/{task-tray-5co9Jr2L.js → task-tray-DIwjAIes.js} +3 -3
  106. package/dist/_chunks/{tasks-panel-BpH-x7U3.js → tasks-panel-CpcikOeY.js} +5 -5
  107. package/dist/_chunks/{theme-toggle-CMz8YfC1.js → theme-toggle-bI0pgDDv.js} +3 -3
  108. package/dist/_chunks/{toast-8jqtbfAB.js → toast-ZZfhA5u0.js} +2 -2
  109. package/dist/_chunks/{token-insert-menu-9Um0JinI.js → token-insert-menu-A9B5AJw6.js} +2 -2
  110. package/dist/_chunks/tool-rail-D89USYE6.js +799 -0
  111. package/dist/_chunks/{tooth-scheme-BWkYxxjR.js → tooth-scheme-DPAq0vQK.js} +3 -3
  112. package/dist/_chunks/{transaction-chip-Dth1nThY.js → transaction-chip-CwgcJiqF.js} +47 -46
  113. package/dist/_chunks/{unit-converter-BTgU50gk.js → unit-converter-C-LpGzrN.js} +2 -2
  114. package/dist/_chunks/user-plus-BtcOLgNU.js +17 -0
  115. package/dist/_chunks/{warning-stack-BW5Dwb3z.js → warning-stack-C0glSB7p.js} +3 -3
  116. package/dist/_chunks/{workflow-map-CXdsxvUj.js → workflow-map-DhR_h5yw.js} +5 -5
  117. package/dist/agent-catalog.json +3 -418
  118. package/dist/agent-i18n/en.json +2 -18
  119. package/dist/components/agenda-tray/index.js +1 -1
  120. package/dist/components/ai-consent-banner/index.js +1 -1
  121. package/dist/components/ai-prompt-input/index.js +1 -1
  122. package/dist/components/anamnesis-card/index.js +1 -1
  123. package/dist/components/appointment-card/appointment-card.d.ts +24 -0
  124. package/dist/components/appointment-card/index.js +2 -2
  125. package/dist/components/appointment-peek/index.js +1 -1
  126. package/dist/components/appointment-timeline/appointment-timeline.d.ts +15 -1
  127. package/dist/components/appointment-timeline/index.js +1 -1
  128. package/dist/components/audio-recorder/index.js +1 -1
  129. package/dist/components/bishop-score/index.js +1 -1
  130. package/dist/components/bmi-calculator/index.js +1 -1
  131. package/dist/components/booking/index.js +1 -1
  132. package/dist/components/button/button.d.ts +1 -1
  133. package/dist/components/button/index.js +2 -2
  134. package/dist/components/button-group/index.js +1 -1
  135. package/dist/components/calendar/index.js +1 -1
  136. package/dist/components/care-plan-card/index.js +1 -1
  137. package/dist/components/care-plan-entry-card/index.js +1 -1
  138. package/dist/components/care-plan-header/index.js +1 -1
  139. package/dist/components/carousel/index.js +1 -1
  140. package/dist/components/chart/index.js +1 -1
  141. package/dist/components/chat-input/index.js +1 -1
  142. package/dist/components/chat-message/index.js +1 -1
  143. package/dist/components/connection-status/index.js +1 -1
  144. package/dist/components/contact-profile-card/index.js +1 -1
  145. package/dist/components/control-room-rail/index.js +1 -1
  146. package/dist/components/copy-field/index.js +1 -1
  147. package/dist/components/cycle-calculator/index.js +1 -1
  148. package/dist/components/dashboard-grid/index.js +1 -1
  149. package/dist/components/data-table/index.js +4 -4
  150. package/dist/components/data-table-tabs/index.js +1 -1
  151. package/dist/components/description-list/index.js +1 -1
  152. package/dist/components/document-preview/index.js +1 -1
  153. package/dist/components/document-scanner/index.js +1 -1
  154. package/dist/components/due-date-calculator/index.js +1 -1
  155. package/dist/components/editable-description/index.js +1 -1
  156. package/dist/components/editor-overlay/index.js +1 -1
  157. package/dist/components/empty-state/index.js +1 -1
  158. package/dist/components/entity-summary/index.js +1 -1
  159. package/dist/components/error-boundary/index.js +1 -1
  160. package/dist/components/face-scheme/index.js +1 -1
  161. package/dist/components/fetal-weight/index.js +1 -1
  162. package/dist/components/field-array/index.js +1 -1
  163. package/dist/components/file-manager/index.js +1 -1
  164. package/dist/components/finished-terminal/index.js +1 -1
  165. package/dist/components/fiscal-code-input/index.js +1 -1
  166. package/dist/components/freemium-paywall/index.js +1 -1
  167. package/dist/components/gestational-age-calculator/index.js +1 -1
  168. package/dist/components/hcg-doubling/index.js +1 -1
  169. package/dist/components/header/index.js +1 -1
  170. package/dist/components/header-settings/index.js +1 -1
  171. package/dist/components/hover-card/index.js +1 -1
  172. package/dist/components/icon-button/index.js +1 -1
  173. package/dist/components/icon-button-group/index.js +1 -1
  174. package/dist/components/icon-picker/index.js +1 -1
  175. package/dist/components/image-cropper/index.js +1 -1
  176. package/dist/components/info-tip/index.js +1 -1
  177. package/dist/components/key-value-pair/index.js +1 -1
  178. package/dist/components/locale-picker/index.js +1 -1
  179. package/dist/components/map-view/index.js +1 -1
  180. package/dist/components/message-card/index.js +1 -1
  181. package/dist/components/message-tray/index.js +1 -1
  182. package/dist/components/note-timeline/index.js +1 -1
  183. package/dist/components/note-timeline/note-timeline.d.ts +9 -0
  184. package/dist/components/notes-panel/index.js +1 -1
  185. package/dist/components/notes-panel/notes-panel.d.ts +5 -4
  186. package/dist/components/notification-card/index.js +1 -1
  187. package/dist/components/notification-tray/index.js +1 -1
  188. package/dist/components/optical-prescription/index.js +1 -1
  189. package/dist/components/panel-subview/index.js +1 -1
  190. package/dist/components/patient-details/index.js +1 -1
  191. package/dist/components/patient-search/index.js +1 -1
  192. package/dist/components/patient-summary-card/index.js +1 -1
  193. package/dist/components/patient-table/index.js +1 -1
  194. package/dist/components/payment-card/index.js +1 -1
  195. package/dist/components/periodontal-chart/index.js +1 -1
  196. package/dist/components/periodontal-chart-card/index.js +1 -1
  197. package/dist/components/popover/index.js +1 -1
  198. package/dist/components/practice-results/index.js +1 -1
  199. package/dist/components/pregnancy-dating/index.js +1 -1
  200. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  201. package/dist/components/privacy-lock/index.js +1 -1
  202. package/dist/components/product-hub-tray/index.js +1 -1
  203. package/dist/components/public-header/index.js +1 -1
  204. package/dist/components/radiograph-panel/index.js +1 -1
  205. package/dist/components/reviews-panel/index.js +1 -1
  206. package/dist/components/rich-text-editor/index.js +1 -1
  207. package/dist/components/session-countdown/index.js +1 -1
  208. package/dist/components/sheet/index.js +1 -1
  209. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  210. package/dist/components/slot-grid/index.js +1 -1
  211. package/dist/components/streaming-text/index.js +1 -1
  212. package/dist/components/task-tray/index.js +1 -1
  213. package/dist/components/tasks-panel/index.js +1 -1
  214. package/dist/components/theme-toggle/index.js +1 -1
  215. package/dist/components/toast/index.js +1 -1
  216. package/dist/components/token-insert-menu/index.js +1 -1
  217. package/dist/components/tool-rail/index.js +1 -1
  218. package/dist/components/tooth-scheme/index.js +1 -1
  219. package/dist/components/transaction-chip/index.js +1 -1
  220. package/dist/components/transaction-chip/transaction-chip.d.ts +7 -0
  221. package/dist/components/unit-converter/index.js +1 -1
  222. package/dist/components/warning-stack/index.js +1 -1
  223. package/dist/components/workflow/index.js +1 -1
  224. package/dist/host-compat.css +13 -4
  225. package/dist/i18n/locales/ar.d.ts +235 -183
  226. package/dist/i18n/locales/ar.js +239 -187
  227. package/dist/i18n/locales/de.d.ts +219 -167
  228. package/dist/i18n/locales/de.js +223 -171
  229. package/dist/i18n/locales/el.d.ts +234 -182
  230. package/dist/i18n/locales/el.js +238 -186
  231. package/dist/i18n/locales/en.d.ts +52 -0
  232. package/dist/i18n/locales/en.js +56 -4
  233. package/dist/i18n/locales/es.d.ts +227 -175
  234. package/dist/i18n/locales/es.js +231 -179
  235. package/dist/i18n/locales/fr.d.ts +221 -169
  236. package/dist/i18n/locales/fr.js +225 -173
  237. package/dist/i18n/locales/hi.d.ts +235 -183
  238. package/dist/i18n/locales/hi.js +243 -187
  239. package/dist/i18n/locales/it.d.ts +179 -127
  240. package/dist/i18n/locales/it.js +183 -131
  241. package/dist/i18n/locales/ja.d.ts +233 -181
  242. package/dist/i18n/locales/ja.js +237 -185
  243. package/dist/i18n/locales/nl.d.ts +224 -172
  244. package/dist/i18n/locales/nl.js +228 -176
  245. package/dist/i18n/locales/pl.d.ts +229 -177
  246. package/dist/i18n/locales/pl.js +233 -181
  247. package/dist/i18n/locales/pt.d.ts +229 -177
  248. package/dist/i18n/locales/pt.js +233 -181
  249. package/dist/i18n/locales/ro.d.ts +228 -176
  250. package/dist/i18n/locales/ro.js +232 -180
  251. package/dist/i18n/locales/ru.d.ts +234 -182
  252. package/dist/i18n/locales/ru.js +238 -186
  253. package/dist/i18n/locales/sq.d.ts +228 -176
  254. package/dist/i18n/locales/sq.js +232 -180
  255. package/dist/i18n/locales/sv.d.ts +229 -177
  256. package/dist/i18n/locales/sv.js +233 -181
  257. package/dist/i18n/locales/tr.d.ts +235 -183
  258. package/dist/i18n/locales/tr.js +239 -187
  259. package/dist/i18n/locales/zh.d.ts +228 -176
  260. package/dist/i18n/locales/zh.js +232 -180
  261. package/dist/index.js +107 -107
  262. package/dist/locales/ar.json +239 -187
  263. package/dist/locales/de.json +223 -171
  264. package/dist/locales/el.json +238 -186
  265. package/dist/locales/en.json +56 -4
  266. package/dist/locales/es.json +231 -179
  267. package/dist/locales/fr.json +225 -173
  268. package/dist/locales/hi.json +239 -187
  269. package/dist/locales/it.json +183 -131
  270. package/dist/locales/ja.json +237 -185
  271. package/dist/locales/nl.json +228 -176
  272. package/dist/locales/pl.json +233 -181
  273. package/dist/locales/pt.json +233 -181
  274. package/dist/locales/ro.json +232 -180
  275. package/dist/locales/ru.json +238 -186
  276. package/dist/locales/sq.json +232 -180
  277. package/dist/locales/sv.json +233 -181
  278. package/dist/locales/tr.json +239 -187
  279. package/dist/locales/zh.json +232 -180
  280. package/dist/patterns/alia-assistant/index.js +1 -1
  281. package/dist/patterns/anamnesis/index.js +1 -1
  282. package/dist/patterns/calendar/calendar-appointment-details.d.ts +7 -0
  283. package/dist/patterns/calendar/calendar-appointment-details.sections.d.ts +10 -5
  284. package/dist/patterns/calendar/calendar-bookings-panel.d.ts +31 -0
  285. package/dist/patterns/calendar/calendar-info-hover.d.ts +15 -1
  286. package/dist/patterns/calendar/calendar-privacy.d.ts +23 -0
  287. package/dist/patterns/calendar/calendar-rail-settle.d.ts +14 -0
  288. package/dist/patterns/calendar/calendar-upcoming-panel.d.ts +32 -0
  289. package/dist/patterns/calendar/calendar-waiting-list-panel.d.ts +62 -0
  290. package/dist/patterns/calendar/calendar-workspace.d.ts +14 -1
  291. package/dist/patterns/calendar/calendar-workspace.model.d.ts +37 -1
  292. package/dist/patterns/calendar/calendar.model.d.ts +8 -2
  293. package/dist/patterns/calendar/calendar.sheets.d.ts +43 -27
  294. package/dist/patterns/calendar/calendar.types.d.ts +6 -0
  295. package/dist/patterns/calendar/index.d.ts +2 -2
  296. package/dist/patterns/calendar/index.js +1 -1
  297. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  298. package/dist/patterns/payment-automation-upsell/index.js +1 -1
  299. package/dist/patterns/signature-request/index.js +1 -1
  300. package/dist/tokens.css +1 -1
  301. package/package.json +3 -1
  302. package/dist/_chunks/calendar-workspace-Cc1LRVWY.js +0 -9900
  303. package/dist/_chunks/tool-rail-BP8sjxCw.js +0 -667
@@ -6,9 +6,9 @@ interface CardProps {
6
6
  }
7
7
  /**
8
8
  * The kit's PatientSummaryCard: identity, the attention chips, the money
9
- * chips and the contact fields. Signing and anamnesis explain themselves
10
- * in the chips' hover cards; money reads worst first (owed, to invoice,
11
- * paid online), labelled and without glyphs.
9
+ * chips and the contact fields. Every chip explains itself in a hover
10
+ * card; money reads worst first (owed, to invoice, paid online), labelled
11
+ * and without glyphs.
12
12
  */
13
13
  export declare function DetailsPatientCard({ details, locale, mapsLink, }: CardProps & {
14
14
  /** The user's map-link setting (platform `showPatientAddressMapLink`). */
@@ -20,13 +20,18 @@ export declare function DetailsPatientCard({ details, locale, mapsLink, }: CardP
20
20
  * an id the data does not know prints no row. `description` is the host's
21
21
  * slot for the description, above the facts.
22
22
  */
23
- export declare function DetailsAppointmentCard({ details, locale, description, }: CardProps & {
23
+ export declare function DetailsAppointmentCard({ details, locale, description, privacy, }: CardProps & {
24
24
  description?: ReactNode;
25
+ /** Privacy mode: what the booker typed is dropped; when they booked stays. */
26
+ privacy?: boolean;
25
27
  }): import("react/jsx-runtime").JSX.Element;
26
28
  /** The linked plan, by number when the host has one, and the kit's
27
29
  * TreatmentReceipt: one line per treatment, a price only when the host
28
30
  * sends one (the editor's price gate), and a total only when every line
29
31
  * is priced. */
30
- export declare function DetailsTreatmentsCard({ details, locale }: CardProps): import("react/jsx-runtime").JSX.Element | null;
32
+ export declare function DetailsTreatmentsCard({ details, locale, privacy, }: CardProps & {
33
+ /** Privacy mode: the plan's free-text name goes, as on the hover peek. */
34
+ privacy?: boolean;
35
+ }): import("react/jsx-runtime").JSX.Element | null;
31
36
  export {};
32
37
  //# sourceMappingURL=calendar-appointment-details.sections.d.ts.map
@@ -0,0 +1,31 @@
1
+ import type { CalendarRow } from './calendar.model';
2
+ import { type BookingRowView } from './calendar-workspace.model';
3
+ /** Which half of the booking the user asked to complete: a hint for the
4
+ * host editor's landing step. Absent means the plain "edit" entry. */
5
+ export type BookingCompleteIntent = 'patient' | 'operator';
6
+ /**
7
+ * The digits `wa.me` needs from the SMS-verified booking number, or null.
8
+ * A host may hand over a redacted display value ("+39 *** 121"): anything
9
+ * but a plain number is refused rather than turned into a wrong chat.
10
+ */
11
+ export declare function bookingWhatsAppDigits(phone: string | undefined): string | null;
12
+ export interface BookingCardProps {
13
+ view: BookingRowView;
14
+ locale?: string;
15
+ /** Masked title, no photo, no contact, no reason, no WhatsApp number. */
16
+ privacy?: boolean;
17
+ /** False withholds the assign segments and the pencil: a host that cannot
18
+ * complete a booking is never offered a control it would refuse. */
19
+ canComplete: boolean;
20
+ onComplete?: (row: CalendarRow, intent?: BookingCompleteIntent) => void;
21
+ onShowInCalendar: (eventId: string) => void;
22
+ /** The host addressed this card: ring it (see `BookingsPanel`). */
23
+ addressed?: boolean;
24
+ /** Changes on every address, so a repeat address replays the ring. */
25
+ addressKey?: string | number;
26
+ }
27
+ export declare const BookingCard: import("react").ForwardRefExoticComponent<BookingCardProps & import("react").RefAttributes<HTMLDivElement>>;
28
+ /** The first read's placeholders, in the card's own shape: time block,
29
+ * avatar, three lines, and the strip under its divider. */
30
+ export declare function BookingCardsSkeleton(): import("react/jsx-runtime").JSX.Element;
31
+ //# sourceMappingURL=calendar-bookings-panel.d.ts.map
@@ -2,7 +2,8 @@
2
2
  * The hover card body the details panel's chips share: an eyebrow naming
3
3
  * the kind of thing, a heading restating the chip in words, and the facts
4
4
  * the chip could not fit. Ported from the calendar-rail demo's hover
5
- * grammar; `PatientSummaryCard.flagHover` renders it around its own chip.
5
+ * grammar; `PatientSummaryCard.flagHover` renders it around its own chip,
6
+ * and `InfoHover` wraps the chips the panel renders itself.
6
7
  */
7
8
  import type { ReactNode } from 'react';
8
9
  export interface InfoHoverFact {
@@ -15,4 +16,17 @@ export declare function InfoHoverBody({ eyebrow, heading, facts, }: {
15
16
  heading: string;
16
17
  facts?: readonly InfoHoverFact[];
17
18
  }): ReactNode;
19
+ /**
20
+ * Wraps a chip the panel renders itself in the same card. It carries no
21
+ * open button: the pattern has no seam to open invoicing or the anamnesis.
22
+ */
23
+ export declare function InfoHover({ id, eyebrow, heading, facts, children, }: {
24
+ /** Stamped as `data-chip-hover`, the trigger's DOM hook. */
25
+ id: string;
26
+ eyebrow: string;
27
+ heading: string;
28
+ facts?: readonly InfoHoverFact[];
29
+ /** The chip; its visible text is the trigger's accessible name. */
30
+ children: ReactNode;
31
+ }): ReactNode;
18
32
  //# sourceMappingURL=calendar-info-hover.d.ts.map
@@ -0,0 +1,23 @@
1
+ import type { ReactNode } from 'react';
2
+ /** The mask privacy mode shows for a name. TOTAL, as `maskedTitle` is: an
3
+ * empty or absent host mask degrades to the bullets, never to a blank. */
4
+ export declare function privacyMask(mask?: string): string;
5
+ /** One muted line where a personal value would have been. */
6
+ export declare function PrivacyHiddenLine({ block }: {
7
+ block?: string;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ /** The patient card under privacy: the grid's mask, no photo, no contact
10
+ * fields and no chips. Keeps `data-card="patient"` for host hooks. */
11
+ export declare function PrivacyIdentityCard({ mask }: {
12
+ mask?: string;
13
+ }): import("react/jsx-runtime").JSX.Element;
14
+ /** A whole rail panel withheld under privacy: a form or a notes list that
15
+ * could only open by showing what the mask hides. */
16
+ export declare function PrivacyNoticePanel({ title, icon, onTurnOff, }: {
17
+ /** The panel's own title, so the rail still says which tool this is. */
18
+ title: string;
19
+ icon?: ReactNode;
20
+ /** Absent: the notice explains, and the toolbar's toggle is the way out. */
21
+ onTurnOff?: () => void;
22
+ }): import("react/jsx-runtime").JSX.Element;
23
+ //# sourceMappingURL=calendar-privacy.d.ts.map
@@ -0,0 +1,14 @@
1
+ import { type RefObject } from 'react';
2
+ import type { EditorInitialFocus } from './calendar.model';
3
+ /**
4
+ * Runs `run` once the node's rail entrance has settled, so a focus scroll
5
+ * never fights the motion. A node that is absent is a silent no-op.
6
+ * Returns the cancel.
7
+ */
8
+ export declare function whenRailSettled(getNode: () => HTMLElement | null | undefined, run: (node: HTMLElement) => void): () => void;
9
+ /**
10
+ * Lands the editor on one field once its panel has settled. No field, an
11
+ * absent field or a disabled one leaves focus where it was, silently.
12
+ */
13
+ export declare function useEditorInitialFocus(field: EditorInitialFocus | undefined, fields: Record<EditorInitialFocus, RefObject<HTMLElement | null>>): void;
14
+ //# sourceMappingURL=calendar-rail-settle.d.ts.map
@@ -0,0 +1,32 @@
1
+ import { Clock } from 'lucide-react';
2
+ import type { CalendarRow } from './calendar.model';
3
+ export interface UpcomingAppointmentsPanelProps {
4
+ rows: CalendarRow[];
5
+ locale: string;
6
+ /** Privacy mode masks every name in the strip, the band and the list — a
7
+ * clinic-wide "who is here / who is coming in" is exactly what it hides. */
8
+ privacy: boolean;
9
+ /** Selects the appointment on the grid, which docks its details. */
10
+ onOpenAppointment: (eventId: string) => void;
11
+ /**
12
+ * `DoctorAppointment.lastStateUpdate`, keyed by appointment id, for rows
13
+ * the live band shows. Optional: the platform read model does not carry
14
+ * this field yet (see `calendar.sheets` note above the panel), and a row
15
+ * missing from this map shows its state with no elapsed time rather than
16
+ * one derived from its start time or invented.
17
+ */
18
+ stateSinceByEventId?: Readonly<Record<string, string>>;
19
+ /**
20
+ * The host is still fetching rows. Shows content-shaped Skeleton
21
+ * placeholders instead of the list, `aria-busy="true"`, and no spinner
22
+ * or "Loading…" text. A refresh (rows already present) keeps the old
23
+ * rows on screen instead of blanking them — pass `loading` only for the
24
+ * first read.
25
+ */
26
+ loading?: boolean;
27
+ }
28
+ export declare function UpcomingAppointmentsPanel({ rows, locale, privacy, onOpenAppointment, stateSinceByEventId, loading, }: UpcomingAppointmentsPanelProps): import("react/jsx-runtime").JSX.Element;
29
+ /** Icon re-export so callers that only need the panel's own glyph (e.g. a
30
+ * rail tool registration) don't have to import lucide-react directly. */
31
+ export { Clock as UpcomingAppointmentsPanelIcon };
32
+ //# sourceMappingURL=calendar-upcoming-panel.d.ts.map
@@ -0,0 +1,62 @@
1
+ import { type CalendarRow, type WaitingEntryDraft } from './calendar.model';
2
+ import { type WaitingListRowView } from './calendar-workspace.model';
3
+ import { type CalendarPatient, type CalendarWaitingEntry } from './calendar.types';
4
+ export interface WaitingEntryCardProps {
5
+ view: WaitingListRowView;
6
+ locale: string;
7
+ privacy?: boolean;
8
+ readOnly?: boolean;
9
+ /** Schedule (unlinked) / Bring forward (linked). */
10
+ onPlace: (entry: CalendarWaitingEntry) => void;
11
+ /** Unset = no finder on this host: the button is not rendered. */
12
+ onFindSlots?: (entry: CalendarWaitingEntry) => void;
13
+ /** Unset = no entry form on this host: Edit and Assign are withheld. */
14
+ onEdit?: (entry: CalendarWaitingEntry) => void;
15
+ onRemove: (entry: CalendarWaitingEntry) => void;
16
+ onOpenPatient?: (patient: CalendarPatient) => void;
17
+ onOpenAppointment: (eventId: string) => void;
18
+ }
19
+ /** A waiting entry as one elevated card: who, since when, what it is
20
+ * tied to, and the one line of actions that moves it off the list. */
21
+ export declare const WaitingEntryCard: import("react").ForwardRefExoticComponent<WaitingEntryCardProps & import("react").RefAttributes<HTMLElement>>;
22
+ export interface WaitingListPanelProps {
23
+ /** Privacy mode, in step with the grid: names masked, the photo, the
24
+ * phone, the WhatsApp link and the free-text description withheld. */
25
+ privacy?: boolean;
26
+ entries: CalendarWaitingEntry[];
27
+ /** Live grid rows — the linked appointment's date, colour and care. */
28
+ rows: CalendarRow[];
29
+ locale: string;
30
+ /** No edit permission (`permissions.editAppointment === false`). Add,
31
+ * Edit, Assign and Remove are withheld and a lock note says why. */
32
+ readOnly?: boolean;
33
+ /** The host's read of the queue. A first `loading` shows card-shaped
34
+ * placeholders; a refresh keeps its cards and marks the list busy. */
35
+ status?: 'loading' | 'ready' | 'error';
36
+ onRetry?: () => void;
37
+ /** Schedule / Bring forward → the host's placement hand-off. */
38
+ onPlaceWaiting: (entry: CalendarWaitingEntry) => void;
39
+ /** «Find a slot» → the find-slots tool, seeded by the host from the
40
+ * entry (`FindSlotsSeed`). Unset = the button is not rendered. */
41
+ onFindSlotsForWaiting?: (entry: CalendarWaitingEntry) => void;
42
+ /** Delete — immediate, as on the platform (the host toasts an Undo). */
43
+ onRemoveWaiting: (entry: CalendarWaitingEntry) => void;
44
+ /** Add entry, a row's edit and the assign buttons → the entry form. */
45
+ onOpenEntryForm?: (entry?: CalendarWaitingEntry) => void;
46
+ /**
47
+ * The entry form as a `PanelSubview` over this list. Pass the open
48
+ * state (`null` = closed) with `onSaveEntry` and `onCancelEntry`; leave
49
+ * all three out and the host renders its own form, as before.
50
+ */
51
+ entryForm?: {
52
+ entry?: CalendarWaitingEntry;
53
+ } | null;
54
+ onSaveEntry?: (draft: WaitingEntryDraft) => void;
55
+ onCancelEntry?: () => void;
56
+ /** The patient-folder hop. Unset renders the name as plain text. */
57
+ onOpenPatient?: (patient: CalendarPatient) => void;
58
+ /** The platform's `focusAppointmentId` deep link — steer and ring. */
59
+ onOpenAppointment: (eventId: string) => void;
60
+ }
61
+ export declare const WaitingListPanel: import("react").ForwardRefExoticComponent<WaitingListPanelProps & import("react").RefAttributes<HTMLDivElement>>;
62
+ //# sourceMappingURL=calendar-waiting-list-panel.d.ts.map
@@ -4,7 +4,7 @@ import { type CalendarData } from './calendar.data';
4
4
  import type { CalendarJourney } from './calendar.journey';
5
5
  import { type CalendarPreferenceAdapter } from './calendar.preferences';
6
6
  import { type CalendarRow, type EditorPrefill } from './calendar.model';
7
- import { type CalendarWorkspaceToolId, type WorkspaceDisplaySettings } from './calendar-workspace.model';
7
+ import { type CalendarWaitingListState, type CalendarWorkspaceToolId, type WorkspaceDisplaySettings } from './calendar-workspace.model';
8
8
  export { WORKSPACE_TOOL, type CalendarWorkspaceToolId, } from './calendar-workspace.model';
9
9
  /** Host-owned queue membership, independent of the visible calendar range. */
10
10
  export interface CalendarOnlineBookings {
@@ -34,6 +34,13 @@ export interface CalendarWorkspaceProps {
34
34
  data: CalendarData;
35
35
  /** Supplied rows are authoritative, including an explicitly empty queue. */
36
36
  onlineBookings?: CalendarOnlineBookings;
37
+ /** The host's read of the waiting list: a first `loading` shows
38
+ * placeholders, `error` offers `onRetry`. Omitted = always ready. */
39
+ waitingListState?: CalendarWaitingListState;
40
+ /** When each appointment entered its current state, by event id (ISO
41
+ * 8601). The upcoming panel shows "waiting for 12 min" only for rows
42
+ * listed here; it never derives an elapsed time from the start. */
43
+ stateSinceByEventId?: Readonly<Record<string, string>>;
37
44
  locale?: string;
38
45
  /** Host-level cog overrides. */
39
46
  initialDisplay?: Partial<WorkspaceDisplaySettings>;
@@ -45,6 +52,12 @@ export interface CalendarWorkspaceProps {
45
52
  /** Deep link `focusAppointmentId`: open on the appointment's day, ring
46
53
  * and scroll to its card and dock its details. */
47
54
  focusAppointmentId?: string;
55
+ /** Addresses one online booking: docks the bookings tool, then scrolls
56
+ * to, focuses and rings its card. An id outside the queue rings nothing. */
57
+ focusBookingId?: string;
58
+ /** Bump to address the SAME booking again (a second notification): an
59
+ * address is a request, not a value. */
60
+ focusBookingKey?: string | number;
48
61
  /** Deep link `createParameters`: arrive in CREATE mode — the banner
49
62
  * stands and the next free-slot click opens the editor prefilled. */
50
63
  createParameters?: {
@@ -295,7 +295,17 @@ export declare const UPCOMING_STEP_DAYS = 7;
295
295
  /** Where the widening stops — the demo's own ceiling, not the platform's. */
296
296
  export declare const UPCOMING_MAX_DAYS = 180;
297
297
  export declare const DEFAULT_UPCOMING_WINDOW: UpcomingWindow;
298
- /** Epoch bounds of a window, inclusive of its closing second. */
298
+ /**
299
+ * Epoch bounds of a window, inclusive of its closing second.
300
+ *
301
+ * The start always lands on a day boundary — midnight of
302
+ * `nowIso - backDays` — never at the exact instant of `now`. At rest
303
+ * (`backDays: 0`) that means "the beginning of today", not "this second":
304
+ * a row that has already started (waiting room, in the chair) stays in
305
+ * the window instead of disappearing the moment it begins. Widening
306
+ * (`widenUpcomingWindow('earlier', …)`) reaches further back a whole day
307
+ * at a time from that same floor.
308
+ */
299
309
  export declare function upcomingWindowBounds(nowIso: string, window: UpcomingWindow): {
300
310
  startMs: number;
301
311
  endMs: number;
@@ -410,6 +420,9 @@ export interface WaitingListRowView {
410
420
  operatorTitle?: string;
411
421
  /** Platform `appointmentName` — the linked appointment's care line. */
412
422
  appointmentName?: string;
423
+ /** The row's one photo: the resolved patient record's, else the
424
+ * entry's own `patientAvatarUrl`. Absent = initials. */
425
+ avatarSrc?: string;
413
426
  /** Someone is booked on this row — the entry's own patient or the
414
427
  * linked appointment's. Keyed on the IDS: a record we could not load
415
428
  * is still a patient. */
@@ -426,4 +439,27 @@ export declare function waitingEntryMatchesFilters(view: WaitingListRowView, fil
426
439
  /** The quick view first, then the advanced predicates — the platform's
427
440
  * own order (`_filterForAdvancedSearch` re-runs the view). */
428
441
  export declare function filterWaitingEntries(entries: readonly CalendarWaitingEntry[], rows: readonly CalendarRow[], quickView: WaitingQuickView, filters: WaitingListFilters, data: CalendarData): WaitingListRowView[];
442
+ /** What an entry is FOR. The domain allows exactly one connection, so
443
+ * the test is a precedence, and an entry never lands in two groups. */
444
+ export type WaitingEntryKind = 'linked' | 'patient' | 'memo';
445
+ /** Render order: bring forward, first slot, free-text reminders. */
446
+ export declare const WAITING_ENTRY_KINDS: readonly WaitingEntryKind[];
447
+ /** Keyed on the IDS, never on what resolved: an appointment off the
448
+ * loaded range is still a link, an unloaded patient still a patient. */
449
+ export declare function waitingEntryKind(entry: CalendarWaitingEntry): WaitingEntryKind;
450
+ /** The non-empty groups, in render order, rows in queue order. */
451
+ export declare function groupWaitingRows(views: readonly WaitingListRowView[]): {
452
+ kind: WaitingEntryKind;
453
+ rows: WaitingListRowView[];
454
+ }[];
455
+ /** How many entries each quick view holds, from the rows in hand. */
456
+ export declare function waitingQuickViewCounts(entries: readonly CalendarWaitingEntry[], data: CalendarData): Record<WaitingQuickView, number>;
457
+ /** The number WhatsApp may be handed, `''` when there is none. The host's
458
+ * own `whatsappPhoneNumber` wins; the story flag reads the record. */
459
+ export declare function waitingWhatsAppNumber(view: WaitingListRowView): string;
460
+ /** A host's read of the queue, so the panel can show a first load. */
461
+ export interface CalendarWaitingListState {
462
+ status: 'loading' | 'ready' | 'error';
463
+ onRetry?: () => void;
464
+ }
429
465
  //# sourceMappingURL=calendar-workspace.model.d.ts.map
@@ -29,8 +29,8 @@ export interface CalendarRow {
29
29
  careLink?: CalendarCareLink;
30
30
  }
31
31
  /**
32
- * A drag/resize of a PATIENT appointment awaiting confirmation (ported
33
- * from the appointment-workflow pattern's move-confirm design). Rows stay
32
+ * A drag/resize of a PATIENT appointment awaiting confirmation (the
33
+ * retired appointment-workflow pattern's move-confirm design). Rows stay
34
34
  * UN-mutated while the dialog is open, so the OLD end/chair/operator are
35
35
  * read live from the matching `CalendarRow`; `event` is FullCalendar's
36
36
  * post-drop snapshot and already carries the NEW resourceId.
@@ -148,6 +148,8 @@ export interface CalendarEditorCapabilities {
148
148
  /** False disables the status control and omits status from the draft. */
149
149
  editStatus?: boolean;
150
150
  }
151
+ /** The editor field an arrival lands focus on. */
152
+ export type EditorInitialFocus = 'patient' | 'operator';
151
153
  export interface EditorPrefill {
152
154
  /** Set = the editor EDITS this existing event; unset = create. */
153
155
  editEventId?: string;
@@ -183,6 +185,10 @@ export interface EditorPrefill {
183
185
  * somewhere to go back to — splits Save into "save and go back" and
184
186
  * "save and continue"; anything else keeps the one Save. */
185
187
  simpleSave?: boolean;
188
+ /** Lands focus on this field once the panel has settled (a booking's
189
+ * assign intent). A hint, never saved: an absent or disabled field, or
190
+ * no value, moves no focus. */
191
+ initialFocus?: EditorInitialFocus;
186
192
  }
187
193
  /** Platform's six `recurrence_frequency` values, in its dropdown order. */
188
194
  export type RecurrenceFrequency = 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'semiannual' | 'yearly';
@@ -24,11 +24,31 @@
24
24
  import { type ReactNode } from 'react';
25
25
  import type { CalendarEditorCapabilities } from './calendar.model';
26
26
  import type { CalendarEditorSeries } from './calendar-editor-hydration';
27
- import { type CalendarEvent } from '../../components/calendar';
27
+ import { type CalendarEvent, type CalendarResource } from '../../components/calendar';
28
28
  import { type NotesPanelNote, type NotesPanelProps, type NotesPanelSubmission } from '../../components/notes-panel';
29
29
  import { type ColorAssociation, type CalendarCarePlan, type CalendarAnamnesisAnswer, type CalendarOperatorGroup, type CalendarPatient, type CalendarWaitingEntry, type CalendarHistoryEntry, type CalendarSignChannel, type PatientRef } from './calendar.types';
30
+ import { type CalendarData } from './calendar.data';
30
31
  import { type CalendarRow, type DisplaySettings, type EditorPrefill, type EditorDraft, type DraftSlot, type SlotPatch, type BacklogFilter, type BacklogItem, type WaitingEntryDraft, type CalendarFreeSlot, type PrintDaySection, type FindSlotsSeed, type AvailabilityContext } from './calendar.model';
31
32
  import { type EditorDraftExtras, type DeleteOptions } from './calendar-workspace.model';
33
+ import { type BookingCompleteIntent } from './calendar-bookings-panel';
34
+ /** The operators a NEW booking may take — the practice's ACTIVE cast, as
35
+ * on the platform. A disabled operator reaches a list only through
36
+ * `platform.operatorOptions` (the appointment that already holds her);
37
+ * lookups by id stay inclusive so her own rows still name her. */
38
+ export declare function activeOperators(data: CalendarData): CalendarResource[];
39
+ /** Why the WhatsApp affordance cannot act, as an i18n key. Decided in ONE
40
+ * place so the waiting list's two rows — the backlog card and the grid
41
+ * cell — cannot drift apart again.
42
+ *
43
+ * Three states, never two (see `patientChannelState`). `unknown` folds
44
+ * "no record at all" together with "a record that omits the number", so
45
+ * a caller reading it as "no record" told a patient the row had just
46
+ * rendered by name that their record had failed to load. Only
47
+ * `ref.unresolved` — the lookup we really did fail — may say that; a
48
+ * record we DID load and that simply carries no number says so itself,
49
+ * and never claims the practice holds nothing (that is state `none`,
50
+ * which keeps the platform's own SMS reason). */
51
+ export declare function whatsAppUnavailableKey(ref: PatientRef): string;
32
52
  export declare function TaskDetailsPanel({ row, locale, }: {
33
53
  row: CalendarRow;
34
54
  locale: string;
@@ -340,7 +360,7 @@ export declare function BacklogPanel({ items, locale, seed, signRequests, onProc
340
360
  * mode (create / move banner) instead of opening the editor at once. */
341
361
  onPlaceWaiting?: (entry: CalendarWaitingEntry) => void;
342
362
  }): import("react/jsx-runtime").JSX.Element;
343
- export declare function BookingsPanel({ bookings, locale, privacy, status, lastSeenIso, createdAtById, onRetry, onShowInCalendar, onComplete, }: {
363
+ export declare function BookingsPanel({ bookings, locale, privacy, status, lastSeenIso, createdAtById, currentBookingId, currentBookingKey, onRetry, onShowInCalendar, onComplete, }: {
344
364
  bookings: readonly CalendarRow[];
345
365
  locale?: string;
346
366
  /** Masks the patient names, in step with the grid. */
@@ -348,34 +368,18 @@ export declare function BookingsPanel({ bookings, locale, privacy, status, lastS
348
368
  status?: 'loading' | 'ready' | 'error';
349
369
  lastSeenIso?: string | null;
350
370
  createdAtById?: Readonly<Record<string, string>>;
371
+ /** The booking the host is addressing: scrolled to, focused, and ringed
372
+ * in the accent until the ring settles. Unknown ids are ignored. */
373
+ currentBookingId?: string;
374
+ /** Bump on every address, so the SAME booking addressed twice scrolls,
375
+ * focuses and rings again. An address is a request, not a value. */
376
+ currentBookingKey?: string | number;
351
377
  onRetry?: () => void;
352
378
  /** Steers the grid to the booking and rings its card. */
353
379
  onShowInCalendar: (eventId: string) => void;
354
- /** Opens the editor to complete it (platform "Completa appuntamento"). */
355
- onComplete?: (row: CalendarRow) => void;
356
- }): import("react/jsx-runtime").JSX.Element;
357
- export declare function WaitingListPanel({ entries, rows, locale, onPlaceWaiting, onRemoveWaiting, onOpenEntryForm, onOpenPatient, onOpenAppointment, readOnly, }: {
358
- entries: CalendarWaitingEntry[];
359
- /** Live grid rows — the linked appointment's date, colour and care. */
360
- rows: CalendarRow[];
361
- locale: string;
362
- /** No edit permission (`permissions.editAppointment === false`). Add,
363
- * Edit and Remove are withheld and a lock note says why: each one
364
- * calls a host seam that a read-only host silently refuses, and the
365
- * panel would then have announced a change it never made. */
366
- readOnly?: boolean;
367
- /** Schedule / Reschedule → the host's create / move placement mode. */
368
- onPlaceWaiting: (entry: CalendarWaitingEntry) => void;
369
- /** Delete — immediate, as on the platform (the host toasts an Undo). */
370
- onRemoveWaiting: (entry: CalendarWaitingEntry) => void;
371
- /** Add entry, and a row's edit → the host's entry sub-view. */
372
- onOpenEntryForm: (entry?: CalendarWaitingEntry) => void;
373
- /** The patient-folder hop the platform's name link makes. Unset — a
374
- * host with no folder to route to — renders the name as plain text
375
- * rather than a link that cannot arrive anywhere. */
376
- onOpenPatient?: (patient: CalendarPatient) => void;
377
- /** The platform's `focusAppointmentId` deep link — steer and ring. */
378
- onOpenAppointment: (eventId: string) => void;
380
+ /** Opens the editor to complete it (platform "Completa appuntamento").
381
+ * `intent` says which assign segment was pressed; the pencil sends none. */
382
+ onComplete?: (row: CalendarRow, intent?: BookingCompleteIntent) => void;
379
383
  }): import("react/jsx-runtime").JSX.Element;
380
384
  /**
381
385
  * The platform's waiting-list AddModal as a rail sub-view — same field
@@ -395,6 +399,18 @@ export declare function WaitingListEntryForm({ entry, onSave, onCancel, chrome,
395
399
  * the form's Cancel already dismiss it. */
396
400
  chrome?: 'panel' | 'dialog';
397
401
  }): import("react/jsx-runtime").JSX.Element;
402
+ /**
403
+ * The same entry form as a `PanelSubview`: it slides over the queue it was
404
+ * opened from, pins Cancel and Save, and hands focus back to the opener.
405
+ */
406
+ export declare function WaitingListEntrySubview({ open, entry, onSave, onCancel, readOnly, }: {
407
+ open: boolean;
408
+ /** Set = edit this entry; unset = add a new one. */
409
+ entry?: CalendarWaitingEntry;
410
+ onSave: (draft: WaitingEntryDraft) => void;
411
+ onCancel: () => void;
412
+ readOnly?: boolean;
413
+ }): import("react/jsx-runtime").JSX.Element;
398
414
  /**
399
415
  * The call sheet itself. A portal to `document.body`: the shell's AppFrame
400
416
  * is an `h-dvh overflow-hidden` clamp that prints one screenful, so the
@@ -371,6 +371,12 @@ export interface CalendarWaitingEntry {
371
371
  createdDay: number;
372
372
  /** Story-only: the patient's number can receive WhatsApp messages. */
373
373
  whatsappCapable?: boolean;
374
+ /** Host: the number WhatsApp can reach (platform `whatsappPhoneNumber`).
375
+ * Set, it IS the WhatsApp number and `whatsappCapable` is not read. */
376
+ whatsappPhoneNumber?: string;
377
+ /** The row's photo (its own patient's, or the linked appointment's)
378
+ * when the host's `patientById` record carries no `avatarSrc`. */
379
+ patientAvatarUrl?: string;
374
380
  }
375
381
  export type CalendarHistoryKind = 'created' | 'moved' | 'resized' | 'status' | 'edited' | 'deleted' | 'confirmedByPatient';
376
382
  /** Form fields an edit can touch (the platform's audit vocabulary). */
@@ -6,8 +6,8 @@ export type { CalendarAppointmentDetails, CalendarDocumentKind, CalendarAppointm
6
6
  export { CalendarSeriesScopeChooser, type CalendarSeriesScopeChooserProps, } from './calendar-series-scope-chooser';
7
7
  export { SheetHostProvider, useSheetHost, type SheetHostContext, type SheetId, } from './calendar.host';
8
8
  export { CALENDAR_PREFERENCE_KEYS, memoryPreferenceAdapter, resetCalendarPreferences, usePersistedPreference, type CalendarPreferenceAdapter, } from './calendar.preferences';
9
- export { DEFAULT_DISPLAY, VIEW_OPTIONS, type AvailabilityContext, type BacklogFilter, type BacklogItem, type BacklogType, type CalendarFreeSlot, type CalendarEditorCapabilities, type CalendarRow, type CalendarSeries, type DisplaySettings, type DraftSlot, type EditorDraft, type EditorPrefill, type EditorRecurrence, type FindSlotsSeed, type HistoryInput, type PendingMove, type RailFocus, type RecurrenceFrequency, type SlotPatch, type ViewOption, type ViewOptionId, type WaitingEntryDraft, } from './calendar.model';
10
- export { DEFAULT_WORKSPACE_DISPLAY, WORKSPACE_VIEWS, type ChairNameDisplay, type DeleteOptions, type EditorDraftExtras, type OperatorNameDisplay, type RecurringScope, type RequiredDocsSignMode, type WorkspaceDisplaySettings, type WorkspaceViewId, } from './calendar-workspace.model';
9
+ export { DEFAULT_DISPLAY, VIEW_OPTIONS, type AvailabilityContext, type BacklogFilter, type BacklogItem, type BacklogType, type CalendarFreeSlot, type CalendarEditorCapabilities, type CalendarRow, type CalendarSeries, type DisplaySettings, type DraftSlot, type EditorDraft, type EditorInitialFocus, type EditorPrefill, type EditorRecurrence, type FindSlotsSeed, type HistoryInput, type PendingMove, type RailFocus, type RecurrenceFrequency, type SlotPatch, type ViewOption, type ViewOptionId, type WaitingEntryDraft, } from './calendar.model';
10
+ export { DEFAULT_WORKSPACE_DISPLAY, WORKSPACE_VIEWS, type CalendarWaitingListState, type ChairNameDisplay, type DeleteOptions, type EditorDraftExtras, type OperatorNameDisplay, type RecurringScope, type RequiredDocsSignMode, type WorkspaceDisplaySettings, type WorkspaceViewId, } from './calendar-workspace.model';
11
11
  export type { AssociationColorSources, CalendarAnamnesisAnswer, CalendarAppointmentMeta, CalendarBaseEvent, CalendarBookingContact, CalendarBranch, CalendarBusinessHours, CalendarCare, CalendarCareEntry, CalendarCareLink, CalendarCarePlan, CalendarCarePlanEntry, CalendarClosure, CalendarDayHours, CalendarHistoryEntry, CalendarHistoryField, CalendarHistoryKind, CalendarHoliday, CalendarOperatorFilterGroup, CalendarOperatorGroup, CalendarPatient, CalendarPhoneLabel, CalendarPhoneNumber, CalendarPractice, CalendarPracticeFeatures, CalendarPriceList, CalendarSignChannel, CalendarSignDocument, CalendarTaskDetail, CalendarWaitingEntry, CalendarWeeklyHours, CareDescriptionMode, ColorAssociation, FreeSlotQuery, } from './calendar.types';
12
12
  export type { CalendarEvent, CalendarEventStatus, CalendarResource, } from '../../components/calendar';
13
13
  export type { AppointmentItem } from '../../components/appointment-card';
@@ -1,4 +1,4 @@
1
- import { C as s, a as r, b as E, c as P, D as S, d as o, S as C, V as t, W as d, e as A, i, m as n, r as D, u as W, f as _, g as c } from "../../_chunks/calendar-workspace-Cc1LRVWY.js";
1
+ import { C as s, a as r, b as E, c as P, D as S, d as o, S as C, V as t, W as d, e as A, i, m as n, r as D, u as W, f as _, g as c } from "../../_chunks/calendar-workspace-B-fUbm62.js";
2
2
  export {
3
3
  s as CALENDAR_PREFERENCE_KEYS,
4
4
  r as CalendarDataProvider,
@@ -1,4 +1,4 @@
1
- import { C as l, M as o } from "../../_chunks/marketplace-app-shell-BwH6Aruw.js";
1
+ import { C as l, M as o } from "../../_chunks/marketplace-app-shell-d2EtcUbe.js";
2
2
  export {
3
3
  l as ConnectWithAlfadocs,
4
4
  o as MarketplaceAppShell
@@ -1,4 +1,4 @@
1
- import { P as a } from "../../_chunks/payment-automation-upsell-BLTdE2em.js";
1
+ import { P as a } from "../../_chunks/payment-automation-upsell-BKmBXU4i.js";
2
2
  export {
3
3
  a as PaymentAutomationUpsell
4
4
  };
@@ -1,4 +1,4 @@
1
- import { S as o } from "../../_chunks/signature-request-b-86AGlT.js";
1
+ import { S as o } from "../../_chunks/signature-request-D_j2aQu1.js";
2
2
  export {
3
3
  o as SignatureRequestModal
4
4
  };