@alfadocs/ui-kit 1.47.1 → 1.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 (440) hide show
  1. package/dist/_chunks/{actions-cell-renderer-B5m9lwgC.js → actions-cell-renderer-DMittsR3.js} +4 -4
  2. package/dist/_chunks/{address-autocomplete-Bq-1n1UX.js → address-autocomplete-Dp5uMvKP.js} +61 -60
  3. package/dist/_chunks/{address-fields-jFfjxOQR.js → address-fields-QfC-N3pw.js} +5 -5
  4. package/dist/_chunks/{agenda-card-DyQtHb9z.js → agenda-card-C4h0xMGi.js} +2 -2
  5. package/dist/_chunks/{agenda-tray-CBaJASb5.js → agenda-tray-DNZYW2xt.js} +4 -4
  6. package/dist/_chunks/{ai-credits-notice-xszqOZTC.js → ai-credits-notice-C-kz_RrY.js} +3 -3
  7. package/dist/_chunks/{ai-permission-notice-D7I2U-cz.js → ai-permission-notice-BRZeS3mT.js} +3 -3
  8. package/dist/_chunks/{ai-prompt-input-DXknpQCB.js → ai-prompt-input-CxvnXsAs.js} +82 -82
  9. package/dist/_chunks/{alia-sidebar-CUqaJNPQ.js → alia-sidebar-Crn8OGPF.js} +7 -7
  10. package/dist/_chunks/{anamnesis-card-xtEhyojD.js → anamnesis-card-D8Si-2GV.js} +3 -3
  11. package/dist/_chunks/{anamnesis-summary-card-CclBbiXg.js → anamnesis-summary-card-DPyScUMM.js} +2 -2
  12. package/dist/_chunks/{anamnesis-summary-rows-DI-UX5r6.js → anamnesis-summary-rows-CZirLRuv.js} +12 -12
  13. package/dist/_chunks/{antenatal-schedule-timeline-CXk_tzWG.js → antenatal-schedule-timeline-8fm3vPSV.js} +2 -2
  14. package/dist/_chunks/{appointment-card-DluZy8Iv.js → appointment-card-CvGU0QP6.js} +5 -5
  15. package/dist/_chunks/{appointment-peek-BsfCpiJs.js → appointment-peek--dmWznLZ.js} +5 -5
  16. package/dist/_chunks/{appointment-timeline-Cs5f9viN.js → appointment-timeline-y9uYZMUd.js} +6 -6
  17. package/dist/_chunks/{appointment-tray-CLrGGnKR.js → appointment-tray-BTecNeSb.js} +4 -4
  18. package/dist/_chunks/appointment-workflow-status-CS8ufF1f.js +66 -0
  19. package/dist/_chunks/{audio-recorder-B7dT-Y3v.js → audio-recorder-DZBtAvLH.js} +4 -4
  20. package/dist/_chunks/{autocomplete-MpBhz-fG.js → autocomplete-DSasZUf6.js} +65 -64
  21. package/dist/_chunks/{badge-BudgzTe_.js → badge-BAkd6_Pj.js} +24 -17
  22. package/dist/_chunks/{balance-badge-cell-YGrYdrvR.js → balance-badge-cell-CA0YNJMR.js} +6 -6
  23. package/dist/_chunks/{bishop-score-Cu70iv9C.js → bishop-score-BMLRvXYF.js} +4 -4
  24. package/dist/_chunks/{bmi-calculator-C9N19aLX.js → bmi-calculator-DUhRyyrA.js} +3 -3
  25. package/dist/_chunks/{booking-C4MwImkS.js → booking-BQYFDcrz.js} +10 -10
  26. package/dist/_chunks/{breadcrumb-agut0PwN.js → breadcrumb-D3boYzD4.js} +50 -49
  27. package/dist/_chunks/{button-CaUe1uyd.js → button-18oBsI3n.js} +54 -50
  28. package/dist/_chunks/button-group-BSDqso_C.js +408 -0
  29. package/dist/_chunks/{calendar-OzSeTb4V.js → calendar-DjoJ9ovF.js} +11 -17
  30. package/dist/_chunks/{calendar-event-card-B6N5h1dO.js → calendar-event-card-BUbKBPv_.js} +55 -73
  31. package/dist/_chunks/calendar-workspace-D8zX9JWm.js +10423 -0
  32. package/dist/_chunks/{care-plan-card-BOv0NRle.js → care-plan-card-ciBaaguw.js} +4 -4
  33. package/dist/_chunks/{care-plan-entry-card-d-rZD4li.js → care-plan-entry-card-D7A0whiZ.js} +5 -5
  34. package/dist/_chunks/{care-plan-header-CEmBXn6-.js → care-plan-header-DKV1gLqv.js} +4 -4
  35. package/dist/_chunks/{carousel.agent-z1yLBpyC.js → carousel.agent-DqDGR2yH.js} +2 -2
  36. package/dist/_chunks/{chart-D8ucl8hH.js → chart-VjuXDXOZ.js} +3 -3
  37. package/dist/_chunks/{chat-input-Cj7ZYQr5.js → chat-input-BVho_SqP.js} +2 -2
  38. package/dist/_chunks/{chat-message-BMVxiUIX.js → chat-message-Co_NRGM4.js} +3 -3
  39. package/dist/_chunks/{smartphone-DaPcFw-X.js → circle-dashed-CUj6o2cA.js} +3 -14
  40. package/dist/_chunks/{city-input-DaQc-Hbj.js → city-input-BGYc4lRV.js} +2 -2
  41. package/dist/_chunks/{clinical-note-card-DdsGYMmI.js → clinical-note-card-DYDQ3q2x.js} +89 -74
  42. package/dist/_chunks/{code-block-BB-viuTn.js → code-block-C_eNHWaa.js} +2 -2
  43. package/dist/_chunks/combobox-B_rLwmSv.js +578 -0
  44. package/dist/_chunks/{command-palette-DQl_SNEv.js → command-palette-DhgGo7GJ.js} +82 -80
  45. package/dist/_chunks/{connection-status-BmA9T0UO.js → connection-status-Cfux3TvH.js} +4 -4
  46. package/dist/_chunks/{contact-profile-card-C0WpwpVV.js → contact-profile-card-Dj4NgBL-.js} +3 -3
  47. package/dist/_chunks/control-room-rail-DAO0qfOI.js +379 -0
  48. package/dist/_chunks/{copy-field-B8XRVmQv.js → copy-field-Cm4y5Bff.js} +2 -2
  49. package/dist/_chunks/{country-select-CfDNFG5c.js → country-select-C5jZjO8O.js} +2 -2
  50. package/dist/_chunks/{cycle-calculator-BH2StWoT.js → cycle-calculator-B9lBRNiZ.js} +3 -3
  51. package/dist/_chunks/{dashboard-grid-BcXWL5S9.js → dashboard-grid-uX7x1ePj.js} +2 -2
  52. package/dist/_chunks/{data-table-DnKOmEVw.js → data-table-DWOSxlsy.js} +9 -9
  53. package/dist/_chunks/{data-table-tabs-B9SXA5VP.js → data-table-tabs-CzYYKp2_.js} +3 -3
  54. package/dist/_chunks/{dependent-selector-BHDP0nBB.js → dependent-selector-BR_8D2Qu.js} +2 -2
  55. package/dist/_chunks/{description-list-BsJ_6CQE.js → description-list-1A2DEbE6.js} +2 -2
  56. package/dist/_chunks/{document-preview-COV0BC6n.js → document-preview-Od2Hz4z5.js} +13 -12
  57. package/dist/_chunks/{document-scanner-B1abl-A4.js → document-scanner-p0aGlzCy.js} +3 -3
  58. package/dist/_chunks/{dropdown-menu-DU-Hrf33.js → dropdown-menu-C8PaW3lR.js} +110 -96
  59. package/dist/_chunks/{due-date-calculator-Buh_mVHq.js → due-date-calculator-BVqJaxzd.js} +4 -4
  60. package/dist/_chunks/{editable-currency-cell-renderer-OUkUv7U4.js → editable-currency-cell-renderer-D_G2Ap61.js} +4 -4
  61. package/dist/_chunks/{editable-description-ADMVFPUz.js → editable-description-B4NVdjvd.js} +3 -3
  62. package/dist/_chunks/{editor-overlay-DwNKaI22.js → editor-overlay-BDiBvQmL.js} +2 -2
  63. package/dist/_chunks/{empty-state-BUN_UAWf.js → empty-state-DTBZ1ENT.js} +2 -2
  64. package/dist/_chunks/{entity-card-I-Gio5wo.js → entity-card-D1Yrh9wf.js} +2 -1
  65. package/dist/_chunks/{entity-summary-DXejuQ8i.js → entity-summary-Ckz_U00H.js} +3 -3
  66. package/dist/_chunks/{error-boundary-BNT2iQ1w.js → error-boundary-BxTqEXqj.js} +2 -2
  67. package/dist/_chunks/euro-Dsuz4ixO.js +22 -0
  68. package/dist/_chunks/{face-scheme-mIhwrQXt.js → face-scheme-fku-RShg.js} +71 -71
  69. package/dist/_chunks/{fetal-weight-wx4ycKc6.js → fetal-weight-B69yOS9W.js} +3 -3
  70. package/dist/_chunks/{field-array-BW9KeeXG.js → field-array-lIXrFWS0.js} +3 -3
  71. package/dist/_chunks/file-BuG1VMAy.js +21 -0
  72. package/dist/_chunks/{file-Cwe9VC1A.js → file-image-cDgE-BTy.js} +2 -19
  73. package/dist/_chunks/{file-manager-DOcJGIx2.js → file-manager-CqgxLqoA.js} +15 -14
  74. package/dist/_chunks/{file-upload-BDpb08GM.js → file-upload-B242a_Y1.js} +53 -52
  75. package/dist/_chunks/{finished-terminal-DJd7Z_po.js → finished-terminal-B2oqXO0Y.js} +2 -2
  76. package/dist/_chunks/fiscal-code-input-BEF8eKIG.js +572 -0
  77. package/dist/_chunks/{freemium-paywall-BaW5ODc9.js → freemium-paywall-B6JITu4l.js} +2 -2
  78. package/dist/_chunks/{gestational-age-calculator-CwbecTul.js → gestational-age-calculator-DsGN6_HS.js} +5 -5
  79. package/dist/_chunks/handled-rejection-6gqCf5vt.js +13 -0
  80. package/dist/_chunks/{hcg-doubling-BcXriXJe.js → hcg-doubling-D2SH-e7t.js} +3 -3
  81. package/dist/_chunks/{header-3o9o9v_T.js → header-CCjp5GvE.js} +2 -2
  82. package/dist/_chunks/{header-settings-BEfx_-TF.js → header-settings-ZXa6hXuu.js} +5 -5
  83. package/dist/_chunks/{help-me-write-templates-DHIwa4xR.js → help-me-write-templates-DQtT1qs_.js} +5 -5
  84. package/dist/_chunks/history-CK2JaU2g.js +16 -0
  85. package/dist/_chunks/{hover-card-nUae8NPJ.js → hover-card-BplP5SzQ.js} +2 -2
  86. package/dist/_chunks/{icon-button-CehAeZoP.js → icon-button-CY7GU_Se.js} +2 -2
  87. package/dist/_chunks/icon-button-group-B_426QN_.js +431 -0
  88. package/dist/_chunks/{icon-picker-DMEelg9v.js → icon-picker-ZLebyB0U.js} +3 -3
  89. package/dist/_chunks/{image-cropper-BjPjT7wU.js → image-cropper-_HiNN79d.js} +2 -2
  90. package/dist/_chunks/{info-tip-iP2Pm9dh.js → info-tip-laBxZhKu.js} +2 -2
  91. package/dist/_chunks/{insert-result-DPnOBD85.js → insert-result-CSuPQyKL.js} +2 -2
  92. package/dist/_chunks/{key-value-pair-DaQI_LZB.js → key-value-pair-Dcdl3Gni.js} +2 -2
  93. package/dist/_chunks/{kit-extensions-DuoFF1R3.js → kit-extensions-BTJSnM_H.js} +6 -6
  94. package/dist/_chunks/{link-cell-renderer-s3oHzOwi.js → link-cell-renderer-Tswqf6BT.js} +7 -7
  95. package/dist/_chunks/{locale-picker-CH3kfrIG.js → locale-picker-DGkQmhV9.js} +170 -180
  96. package/dist/_chunks/{map-view-CHw4RL6w.js → map-view-Bb7ClKSF.js} +2 -2
  97. package/dist/_chunks/{marketplace-app-shell-PB89Dkk_.js → marketplace-app-shell-Dehuxbi-.js} +6 -6
  98. package/dist/_chunks/menu-row-BAr8bx1I.js +95 -0
  99. package/dist/_chunks/{message-card-V3sFPiQI.js → message-card-DKOtnBHy.js} +3 -3
  100. package/dist/_chunks/{message-tray-CrRIHfiQ.js → message-tray-COMEtmyr.js} +4 -4
  101. package/dist/_chunks/{multi-select-CtPd7g4x.js → multi-select-N4Smh-gj.js} +114 -113
  102. package/dist/_chunks/{muscle-scheme-UVz_x4iE.js → muscle-scheme-Co0NIgbU.js} +3 -3
  103. package/dist/_chunks/{note-attachment-CwDir3kK.js → note-attachment-CGjNTrAC.js} +2 -2
  104. package/dist/_chunks/{note-timeline-Dn_XTo1s.js → note-timeline-CVnKL0p6.js} +2 -2
  105. package/dist/_chunks/notes-panel-BiOxZL_0.js +1111 -0
  106. package/dist/_chunks/{notification-card-B2gLO6dK.js → notification-card-DDzBCi8l.js} +3 -3
  107. package/dist/_chunks/{notification-tray-BOEKegVV.js → notification-tray-PnH2PBlZ.js} +4 -4
  108. package/dist/_chunks/{operator-hero-XIdwDmN2.js → operator-hero-5061fkY5.js} +3 -3
  109. package/dist/_chunks/{optical-prescription-LGgmtcST.js → optical-prescription-DUufWXfZ.js} +3 -3
  110. package/dist/_chunks/{pagination-EkD5SiCK.js → pagination-B0N2qGy_.js} +83 -82
  111. package/dist/_chunks/panel-subview-CzHutkA8.js +217 -0
  112. package/dist/_chunks/{patient-details-yrgkSeEY.js → patient-details-C23Hdm8v.js} +3 -3
  113. package/dist/_chunks/{patient-field-row-DCMkFGqI.js → patient-field-row-DElFbpKc.js} +12 -12
  114. package/dist/_chunks/{patient-search-5QcmQKJD.js → patient-search-DgXdGkhK.js} +4 -4
  115. package/dist/_chunks/{patient-summary-card-CmEFflGS.js → patient-summary-card-C36L3h7h.js} +7 -7
  116. package/dist/_chunks/{payment-automation-upsell-BKmBXU4i.js → payment-automation-upsell-ugi4np1l.js} +3 -3
  117. package/dist/_chunks/{payment-request-card-Cer6XXCn.js → payment-request-card-DMJB57Tv.js} +5 -5
  118. package/dist/_chunks/{periodontal-chart-DJoZS_o7.js → periodontal-chart-DbGzKDj7.js} +2 -2
  119. package/dist/_chunks/{periodontal-chart-card-Nd1ZoYWb.js → periodontal-chart-card-DvHyP47v.js} +3 -3
  120. package/dist/_chunks/{periodontal-diagnosis-C7pfPOct.js → periodontal-diagnosis-B8WqI0eU.js} +2 -2
  121. package/dist/_chunks/{periodontal-risk-chart-B2tNFa15.js → periodontal-risk-chart-DsFRFFSz.js} +2 -2
  122. package/dist/_chunks/{phone-input-IWrGOCwm.js → phone-input-sQj-zi59.js} +85 -86
  123. package/dist/_chunks/{popover-DO-pssF3.js → popover-Dvb40vPH.js} +2 -2
  124. package/dist/_chunks/{practice-profile-hero-DxoLlQr5.js → practice-profile-hero-CPy5h2yI.js} +2 -2
  125. package/dist/_chunks/{practice-results-D11Zpt27.js → practice-results-t2BHht91.js} +7 -7
  126. package/dist/_chunks/{pregnancy-dating-DcyV9ZRD.js → pregnancy-dating-lfjjZVZH.js} +5 -5
  127. package/dist/_chunks/{pregnancy-weight-gain-Bfq4Kwt5.js → pregnancy-weight-gain-WpNt-S0q.js} +3 -3
  128. package/dist/_chunks/{privacy-lock-CbFCAMM3.js → privacy-lock-D6gq0GDg.js} +3 -3
  129. package/dist/_chunks/privacy-mask-BC5lw2zB.js +81 -0
  130. package/dist/_chunks/{product-hub-panel-w40-_-1s.js → product-hub-panel-CKeSCSeE.js} +3 -3
  131. package/dist/_chunks/{province-select-BaUnkg4S.js → province-select-BiszMRRY.js} +2 -2
  132. package/dist/_chunks/{public-header.agent-D-EBVskf.js → public-header.agent-B9wDmUeB.js} +3 -3
  133. package/dist/_chunks/{radiograph-panel.agent-LrILY2lN.js → radiograph-panel.agent-TmyIvTOa.js} +6 -6
  134. package/dist/_chunks/{reviews-panel-2GVuxGeT.js → reviews-panel-BdwFp_0c.js} +4 -4
  135. package/dist/_chunks/{rich-text-editor-BwDV2XkZ.js → rich-text-editor-y6ML0KeV.js} +12 -11
  136. package/dist/_chunks/{search-bar-CCmViqaa.js → search-bar-6bHatpYJ.js} +69 -67
  137. package/dist/_chunks/{select-CLSUnKjF.js → select-upNAltly.js} +89 -88
  138. package/dist/_chunks/{session-countdown-BqppPrw6.js → session-countdown-ACJyTXH2.js} +2 -2
  139. package/dist/_chunks/{sheet-C8WIDFS8.js → sheet-D0Lh0KR2.js} +2 -2
  140. package/dist/_chunks/{sign-in-with-alfadocs-button-DWwBJtyE.js → sign-in-with-alfadocs-button-CDyJAIzW.js} +2 -2
  141. package/dist/_chunks/{signature-request-D_j2aQu1.js → signature-request-15D363w5.js} +6 -6
  142. package/dist/_chunks/{signature-status-chip-D4NsrdeI.js → signature-status-chip-Dz6sS2oA.js} +2 -2
  143. package/dist/_chunks/{slot-grid-B3eOPkKD.js → slot-grid-4fWH3Euk.js} +4 -4
  144. package/dist/_chunks/smartphone-C0rFF2if.js +15 -0
  145. package/dist/_chunks/{streaming-text-CE1u_oGa.js → streaming-text-eRiizArc.js} +2 -2
  146. package/dist/_chunks/{tab-bar-Cw9UK18Z.js → tab-bar-BHFf6knq.js} +9 -9
  147. package/dist/_chunks/{tabs-BnRaLT0y.js → tabs-CFsuMQ5H.js} +82 -81
  148. package/dist/_chunks/{tag-Ci3xJPcH.js → tag-B65tLWvD.js} +24 -21
  149. package/dist/_chunks/{task-card-qTKD1fIT.js → task-card-CTTQfPS6.js} +72 -55
  150. package/dist/_chunks/task-editor-DlvTwAfv.js +1243 -0
  151. package/dist/_chunks/{task-tray-DIwjAIes.js → task-tray-JA-qp_pB.js} +4 -4
  152. package/dist/_chunks/tasks-panel-C_dVDQKJ.js +1243 -0
  153. package/dist/_chunks/{theme-toggle-BP0XRGMM.js → theme-toggle-LUBxlNDm.js} +4 -4
  154. package/dist/_chunks/{toast-ZZfhA5u0.js → toast-CT8hjr9r.js} +2 -2
  155. package/dist/_chunks/{token-insert-menu-A9B5AJw6.js → token-insert-menu-klwbxVKh.js} +3 -3
  156. package/dist/_chunks/{tool-rail-CCFqDfAn.js → tool-rail-DEeX4PdN.js} +144 -137
  157. package/dist/_chunks/{tooth-scheme-DPAq0vQK.js → tooth-scheme-BkjhkI8g.js} +4 -4
  158. package/dist/_chunks/{treatment-receipt-DU0OewqH.js → treatment-receipt-C-gWZ6uv.js} +3 -3
  159. package/dist/_chunks/{unit-converter-C-LpGzrN.js → unit-converter-Dp_KDxE6.js} +3 -3
  160. package/dist/_chunks/use-appointment-details-read-D2FH-cHF.js +2045 -0
  161. package/dist/_chunks/use-list-reflow-C7O4Uqnl.js +133 -0
  162. package/dist/_chunks/use-priority-overflow-Cdmb5EiR.js +108 -0
  163. package/dist/_chunks/{variables-menu-vXUaSBj4.js → variables-menu-aJLKJ_cu.js} +127 -136
  164. package/dist/_chunks/{warning-stack-C0glSB7p.js → warning-stack-CEgYkI1z.js} +3 -3
  165. package/dist/_chunks/{widget-picker-B1sj6uyf.js → widget-picker-CilQvcNL.js} +2 -2
  166. package/dist/_chunks/{workflow-map-DhR_h5yw.js → workflow-map-qGkQTNvS.js} +30 -29
  167. package/dist/_chunks/{workflow-status-CuJAOuKL.js → workflow-status-ClHfz4Kr.js} +209 -167
  168. package/dist/agent-catalog.json +371 -26
  169. package/dist/agent-i18n/en.json +41 -9
  170. package/dist/components/_shared/appointment-format.d.ts +52 -0
  171. package/dist/{patterns/calendar/calendar-editor-fields.d.ts → components/_shared/compact-editor-fields.d.ts} +6 -5
  172. package/dist/components/_shared/handled-rejection.d.ts +2 -0
  173. package/dist/components/_shared/menu-row.d.ts +17 -0
  174. package/dist/components/_shared/patient-identity.d.ts +7 -0
  175. package/dist/components/_shared/patient-picker.d.ts +24 -0
  176. package/dist/components/_shared/privacy-mask.d.ts +29 -0
  177. package/dist/components/address-autocomplete/index.js +1 -1
  178. package/dist/components/address-fields/index.js +1 -1
  179. package/dist/components/agenda-card/index.js +1 -1
  180. package/dist/components/agenda-tray/index.js +1 -1
  181. package/dist/components/ai-credits-notice/index.js +1 -1
  182. package/dist/components/ai-permission-notice/index.js +1 -1
  183. package/dist/components/ai-prompt-input/index.js +1 -1
  184. package/dist/components/anamnesis-card/index.js +1 -1
  185. package/dist/components/anamnesis-summary-card/index.js +1 -1
  186. package/dist/components/appointment-card/index.js +2 -2
  187. package/dist/components/appointment-details-panel/appointment-details-panel.agent.d.ts +4 -0
  188. package/dist/components/appointment-details-panel/appointment-details-panel.d.ts +134 -0
  189. package/dist/components/appointment-details-panel/appointment-details-panel.focus.d.ts +7 -0
  190. package/dist/components/appointment-details-panel/appointment-details-panel.history.d.ts +12 -0
  191. package/dist/components/appointment-details-panel/appointment-details-panel.identity.d.ts +41 -0
  192. package/dist/{patterns/calendar/calendar-info-hover.d.ts → components/appointment-details-panel/appointment-details-panel.info-hover.d.ts} +1 -1
  193. package/dist/components/appointment-details-panel/appointment-details-panel.sections.d.ts +51 -0
  194. package/dist/components/appointment-details-panel/appointment-details-panel.types.d.ts +326 -0
  195. package/dist/components/appointment-details-panel/index.d.ts +8 -0
  196. package/dist/components/appointment-details-panel/index.js +8 -0
  197. package/dist/components/appointment-details-panel/use-appointment-details-read.d.ts +32 -0
  198. package/dist/components/appointment-peek/index.js +1 -1
  199. package/dist/components/appointment-timeline/index.js +1 -1
  200. package/dist/components/audio-recorder/index.js +1 -1
  201. package/dist/components/autocomplete/index.js +1 -1
  202. package/dist/components/badge/index.js +1 -1
  203. package/dist/components/bishop-score/index.js +1 -1
  204. package/dist/components/bmi-calculator/index.js +1 -1
  205. package/dist/components/booking/index.js +1 -1
  206. package/dist/components/breadcrumb/index.js +1 -1
  207. package/dist/components/button/button.d.ts +2 -1
  208. package/dist/components/button/index.js +2 -2
  209. package/dist/components/button-group/button-group.d.ts +19 -2
  210. package/dist/components/button-group/index.js +1 -1
  211. package/dist/components/calendar/calendar.d.ts +5 -1
  212. package/dist/components/calendar/index.js +1 -1
  213. package/dist/components/calendar-event-card/index.js +1 -1
  214. package/dist/components/care-plan-card/index.js +1 -1
  215. package/dist/components/care-plan-entry-card/index.js +1 -1
  216. package/dist/components/care-plan-header/index.js +1 -1
  217. package/dist/components/carousel/index.js +1 -1
  218. package/dist/components/chart/index.js +1 -1
  219. package/dist/components/chat-input/index.js +1 -1
  220. package/dist/components/chat-message/index.js +1 -1
  221. package/dist/components/city-input/index.js +1 -1
  222. package/dist/components/clinical-note-card/clinical-note-card.d.ts +13 -5
  223. package/dist/components/clinical-note-card/index.js +1 -1
  224. package/dist/components/combobox/combobox.d.ts +9 -4
  225. package/dist/components/combobox/index.js +1 -1
  226. package/dist/components/command-palette/index.js +1 -1
  227. package/dist/components/connection-status/index.js +1 -1
  228. package/dist/components/contact-profile-card/index.js +1 -1
  229. package/dist/components/control-room-rail/control-room-rail.d.ts +14 -3
  230. package/dist/components/control-room-rail/index.js +1 -1
  231. package/dist/components/copy-field/index.js +1 -1
  232. package/dist/components/country-select/index.js +1 -1
  233. package/dist/components/cycle-calculator/index.js +1 -1
  234. package/dist/components/dashboard-grid/index.js +1 -1
  235. package/dist/components/data-table/index.js +4 -4
  236. package/dist/components/data-table-tabs/index.js +1 -1
  237. package/dist/components/dependent-selector/index.js +1 -1
  238. package/dist/components/description-list/index.js +1 -1
  239. package/dist/components/document-preview/index.js +1 -1
  240. package/dist/components/document-scanner/index.js +1 -1
  241. package/dist/components/dropdown-menu/index.js +1 -1
  242. package/dist/components/due-date-calculator/index.js +2 -2
  243. package/dist/components/editable-description/index.js +1 -1
  244. package/dist/components/editor-overlay/index.js +1 -1
  245. package/dist/components/empty-state/index.js +1 -1
  246. package/dist/components/entity-summary/index.js +1 -1
  247. package/dist/components/error-boundary/index.js +1 -1
  248. package/dist/components/face-scheme/index.js +1 -1
  249. package/dist/components/fetal-weight/index.js +1 -1
  250. package/dist/components/field-array/index.js +1 -1
  251. package/dist/components/file-manager/index.js +1 -1
  252. package/dist/components/file-upload/index.js +1 -1
  253. package/dist/components/finished-terminal/index.js +1 -1
  254. package/dist/components/fiscal-code-input/fiscal-code-input.d.ts +7 -0
  255. package/dist/components/fiscal-code-input/index.d.ts +1 -1
  256. package/dist/components/fiscal-code-input/index.js +8 -7
  257. package/dist/components/fiscal-code-input/is-valid-codice-fiscale.d.ts +19 -4
  258. package/dist/components/freemium-paywall/index.js +1 -1
  259. package/dist/components/gestational-age-calculator/index.js +1 -1
  260. package/dist/components/hcg-doubling/index.js +1 -1
  261. package/dist/components/header/index.js +1 -1
  262. package/dist/components/header-settings/index.js +1 -1
  263. package/dist/components/hover-card/index.js +1 -1
  264. package/dist/components/icon-button/index.js +1 -1
  265. package/dist/components/icon-button-group/index.js +1 -1
  266. package/dist/components/icon-picker/index.js +1 -1
  267. package/dist/components/image-cropper/index.js +1 -1
  268. package/dist/components/index.d.ts +2 -0
  269. package/dist/components/info-tip/index.js +1 -1
  270. package/dist/components/key-value-pair/index.js +1 -1
  271. package/dist/components/locale-picker/index.js +1 -1
  272. package/dist/components/map-view/index.js +1 -1
  273. package/dist/components/message-card/index.js +1 -1
  274. package/dist/components/message-tray/index.js +1 -1
  275. package/dist/components/multi-select/index.js +1 -1
  276. package/dist/components/muscle-scheme/index.js +1 -1
  277. package/dist/components/note-timeline/index.js +1 -1
  278. package/dist/components/notes-panel/index.d.ts +1 -1
  279. package/dist/components/notes-panel/index.js +1 -1
  280. package/dist/components/notes-panel/notes-panel.d.ts +102 -26
  281. package/dist/components/notification-card/index.js +1 -1
  282. package/dist/components/notification-tray/index.js +1 -1
  283. package/dist/components/operator-hero/index.js +1 -1
  284. package/dist/components/optical-prescription/index.js +1 -1
  285. package/dist/components/pagination/index.js +1 -1
  286. package/dist/components/panel-subview/index.js +1 -1
  287. package/dist/components/patient-details/index.js +1 -1
  288. package/dist/components/patient-search/index.js +1 -1
  289. package/dist/components/patient-summary-card/index.js +1 -1
  290. package/dist/components/patient-table/index.js +1 -1
  291. package/dist/components/payment-card/index.js +1 -1
  292. package/dist/components/periodontal-chart/index.js +1 -1
  293. package/dist/components/periodontal-chart-card/index.js +1 -1
  294. package/dist/components/periodontal-diagnosis/index.js +1 -1
  295. package/dist/components/periodontal-risk-chart/index.js +1 -1
  296. package/dist/components/phone-input/index.js +1 -1
  297. package/dist/components/popover/index.js +1 -1
  298. package/dist/components/practice-profile-hero/index.js +1 -1
  299. package/dist/components/practice-results/index.js +1 -1
  300. package/dist/components/pregnancy-dating/index.js +1 -1
  301. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  302. package/dist/components/privacy-lock/index.js +1 -1
  303. package/dist/components/product-hub-tray/index.js +1 -1
  304. package/dist/components/province-select/index.js +1 -1
  305. package/dist/components/public-header/index.js +1 -1
  306. package/dist/components/radiograph-panel/index.js +1 -1
  307. package/dist/components/reviews-panel/index.js +1 -1
  308. package/dist/components/rich-text-editor/index.js +2 -2
  309. package/dist/components/search-bar/index.js +1 -1
  310. package/dist/components/select/index.js +1 -1
  311. package/dist/components/session-countdown/index.js +1 -1
  312. package/dist/components/sheet/index.js +1 -1
  313. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  314. package/dist/components/signature-field/signature-field.d.ts +1 -1
  315. package/dist/components/signature-status-chip/index.js +1 -1
  316. package/dist/components/skeleton-scheme/index.js +17 -17
  317. package/dist/components/slot-grid/index.js +1 -1
  318. package/dist/components/streaming-text/index.js +1 -1
  319. package/dist/components/tab-bar/index.js +1 -1
  320. package/dist/components/tabs/index.js +1 -1
  321. package/dist/components/tag/index.js +1 -1
  322. package/dist/components/task-card/index.js +1 -1
  323. package/dist/components/task-card/task-card.d.ts +6 -0
  324. package/dist/components/task-editor/index.d.ts +4 -0
  325. package/dist/components/task-editor/index.js +6 -0
  326. package/dist/components/task-editor/task-editor.agent.d.ts +4 -0
  327. package/dist/components/task-editor/task-editor.d.ts +240 -0
  328. package/dist/components/task-editor/use-task-editor-form.d.ts +101 -0
  329. package/dist/components/task-tray/index.js +1 -1
  330. package/dist/components/tasks-panel/index.d.ts +1 -1
  331. package/dist/components/tasks-panel/index.js +1 -1
  332. package/dist/components/tasks-panel/tasks-panel.d.ts +84 -12
  333. package/dist/components/theme-toggle/index.js +1 -1
  334. package/dist/components/toast/index.js +1 -1
  335. package/dist/components/token-insert-menu/index.js +1 -1
  336. package/dist/components/tool-rail/index.js +1 -1
  337. package/dist/components/tooth-scheme/index.js +1 -1
  338. package/dist/components/treatment-receipt/index.js +1 -1
  339. package/dist/components/unit-converter/index.js +1 -1
  340. package/dist/components/variables-menu/index.js +1 -1
  341. package/dist/components/warning-stack/index.js +1 -1
  342. package/dist/components/widget-picker/index.js +1 -1
  343. package/dist/components/workflow/index.js +1 -1
  344. package/dist/components/workflow-status/appointment-workflow-status.d.ts +55 -0
  345. package/dist/components/workflow-status/index.d.ts +2 -0
  346. package/dist/components/workflow-status/index.js +7 -2
  347. package/dist/components/workflow-status/workflow-status.d.ts +35 -0
  348. package/dist/hooks/index.js +2 -2
  349. package/dist/hooks/use-exit-transition.d.ts +5 -0
  350. package/dist/hooks/use-priority-overflow.d.ts +11 -2
  351. package/dist/host-compat.css +7 -1
  352. package/dist/i18n/locales/ar.d.ts +29 -10
  353. package/dist/i18n/locales/ar.js +33 -14
  354. package/dist/i18n/locales/de.d.ts +29 -10
  355. package/dist/i18n/locales/de.js +33 -14
  356. package/dist/i18n/locales/el.d.ts +29 -10
  357. package/dist/i18n/locales/el.js +33 -14
  358. package/dist/i18n/locales/en.d.ts +29 -10
  359. package/dist/i18n/locales/en.js +33 -14
  360. package/dist/i18n/locales/es.d.ts +29 -10
  361. package/dist/i18n/locales/es.js +33 -14
  362. package/dist/i18n/locales/fr.d.ts +29 -10
  363. package/dist/i18n/locales/fr.js +33 -14
  364. package/dist/i18n/locales/hi.d.ts +29 -10
  365. package/dist/i18n/locales/hi.js +33 -14
  366. package/dist/i18n/locales/it.d.ts +29 -10
  367. package/dist/i18n/locales/it.js +33 -14
  368. package/dist/i18n/locales/ja.d.ts +29 -10
  369. package/dist/i18n/locales/ja.js +33 -14
  370. package/dist/i18n/locales/nl.d.ts +29 -10
  371. package/dist/i18n/locales/nl.js +33 -14
  372. package/dist/i18n/locales/pl.d.ts +29 -10
  373. package/dist/i18n/locales/pl.js +33 -14
  374. package/dist/i18n/locales/pt.d.ts +29 -10
  375. package/dist/i18n/locales/pt.js +33 -14
  376. package/dist/i18n/locales/ro.d.ts +29 -10
  377. package/dist/i18n/locales/ro.js +33 -14
  378. package/dist/i18n/locales/ru.d.ts +29 -10
  379. package/dist/i18n/locales/ru.js +33 -14
  380. package/dist/i18n/locales/sq.d.ts +29 -10
  381. package/dist/i18n/locales/sq.js +33 -14
  382. package/dist/i18n/locales/sv.d.ts +29 -10
  383. package/dist/i18n/locales/sv.js +33 -14
  384. package/dist/i18n/locales/tr.d.ts +29 -10
  385. package/dist/i18n/locales/tr.js +33 -14
  386. package/dist/i18n/locales/zh.d.ts +29 -10
  387. package/dist/i18n/locales/zh.js +33 -14
  388. package/dist/i18n/registerUiBundle.d.ts +5 -9
  389. package/dist/index.js +742 -728
  390. package/dist/locales/ar.json +33 -14
  391. package/dist/locales/de.json +33 -14
  392. package/dist/locales/el.json +33 -14
  393. package/dist/locales/en.json +33 -14
  394. package/dist/locales/es.json +33 -14
  395. package/dist/locales/fr.json +33 -14
  396. package/dist/locales/hi.json +33 -14
  397. package/dist/locales/it.json +33 -14
  398. package/dist/locales/ja.json +33 -14
  399. package/dist/locales/nl.json +33 -14
  400. package/dist/locales/pl.json +33 -14
  401. package/dist/locales/pt.json +33 -14
  402. package/dist/locales/ro.json +33 -14
  403. package/dist/locales/ru.json +33 -14
  404. package/dist/locales/sq.json +33 -14
  405. package/dist/locales/sv.json +33 -14
  406. package/dist/locales/tr.json +33 -14
  407. package/dist/locales/zh.json +33 -14
  408. package/dist/patterns/alia-assistant/index.js +1 -1
  409. package/dist/patterns/anamnesis/index.js +1 -1
  410. package/dist/patterns/calendar/calendar-appointment-details.d.ts +25 -95
  411. package/dist/patterns/calendar/calendar-patient-picker.d.ts +4 -3
  412. package/dist/patterns/calendar/calendar-privacy.d.ts +1 -22
  413. package/dist/patterns/calendar/calendar-sticky-offset.d.ts +20 -13
  414. package/dist/patterns/calendar/calendar-task-editor.d.ts +9 -13
  415. package/dist/patterns/calendar/calendar-workspace.d.ts +79 -8
  416. package/dist/patterns/calendar/calendar-workspace.model.d.ts +17 -12
  417. package/dist/patterns/calendar/calendar.journey.d.ts +40 -6
  418. package/dist/patterns/calendar/calendar.model.d.ts +10 -17
  419. package/dist/patterns/calendar/calendar.sheets.d.ts +18 -16
  420. package/dist/patterns/calendar/calendar.types.d.ts +24 -100
  421. package/dist/patterns/calendar/index.d.ts +4 -3
  422. package/dist/patterns/calendar/index.js +1 -1
  423. package/dist/patterns/help-me-write-templates/index.js +1 -1
  424. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  425. package/dist/patterns/payment-automation-upsell/index.js +1 -1
  426. package/dist/patterns/signature-request/index.js +1 -1
  427. package/dist/tokens.css +1 -1
  428. package/package.json +22 -5
  429. package/dist/_chunks/button-group-CA1tmu39.js +0 -325
  430. package/dist/_chunks/calendar-workspace-BmscntRR.js +0 -12528
  431. package/dist/_chunks/combobox-DnSdYssy.js +0 -522
  432. package/dist/_chunks/control-room-rail-CdBOXIqX.js +0 -366
  433. package/dist/_chunks/fiscal-code-input-ODQRd_Sw.js +0 -553
  434. package/dist/_chunks/icon-button-group-DZKC6KGf.js +0 -428
  435. package/dist/_chunks/notes-panel-CHbDDMx8.js +0 -683
  436. package/dist/_chunks/panel-subview-CYnuX-KR.js +0 -171
  437. package/dist/_chunks/tasks-panel-DncuBPIZ.js +0 -844
  438. package/dist/_chunks/use-list-reflow-Cw43nxw5.js +0 -100
  439. package/dist/_chunks/use-priority-overflow-c9SjxZkZ.js +0 -101
  440. package/dist/patterns/calendar/calendar-appointment-details.sections.d.ts +0 -37
@@ -1,87 +1,23 @@
1
1
  import { type ReactNode } from 'react';
2
+ import { parseAppointmentStartIso, type AppointmentDetailsLoader, type AppointmentDetailsRead, type AppointmentDetailsSnapshot, type AppointmentDocumentKind } from '../../components/appointment-details-panel';
2
3
  import type { CalendarEventStatus } from '../../components/calendar';
3
- import { type RecurrenceFrequency } from './calendar.model';
4
- import { type PatientNotesSeam } from './calendar.sheets';
5
- import { type CalendarHistoryEntry, type CalendarPatient, type CalendarSignChannel } from './calendar.types';
6
- export type CalendarDocumentKind = 'folder' | 'template' | 'empty' | 'identification' | 'webcam' | 'bill';
7
- /** One appointment occurrence as the host reads it for the read-only details
8
- * panel (P-C2). An absent member renders nothing: never a zero, never an
9
- * empty-state claim. */
10
- export interface CalendarAppointmentDetails {
11
- /** The occurrence id the panel asked for, echoed back. */
12
- eventId: string;
13
- appointment: {
14
- /** Local wall clock of THIS occurrence, 'YYYY-MM-DDTHH:mm:ss', no zone. */
15
- startIso: string;
16
- durationMin: number;
17
- allDay: boolean;
18
- isTelehealth: boolean;
19
- /** Absent = no status recorded. */
20
- status?: CalendarEventStatus;
21
- name?: string;
22
- /** Host-composed heading (the platform popover title). */
23
- title: string;
24
- colorHex?: string;
25
- operatorId?: string;
26
- chairId?: string;
27
- branchLabel?: string;
28
- bookedOnline: boolean;
29
- /** Read side only. `requiresScope` is informational (the series rule
30
- * line); the scope question lives in the editor. */
31
- recurrence?: {
32
- frequency: RecurrenceFrequency;
33
- count?: number;
34
- requiresScope: boolean;
35
- };
36
- };
4
+ import type { PatientNotesSeam } from './calendar.sheets';
5
+ import type { CalendarHistoryEntry, CalendarPatient } from './calendar.types';
6
+ export type CalendarDocumentKind = AppointmentDocumentKind;
7
+ /** One appointment occurrence as the host reads it for the details panel
8
+ * (P-C2). An absent member renders nothing: never a zero, never an
9
+ * empty-state claim. The read fields are AppointmentDetailsRead's; the
10
+ * calendar adds its richer patient record and the host's actions. */
11
+ export interface CalendarAppointmentDetails extends Omit<AppointmentDetailsRead, 'patient' | 'history'> {
37
12
  /** Absent = no patient; `phones` carries every labelled number. */
38
13
  patient?: CalendarPatient;
39
- /** Absent = not permitted; an absent figure is gated on its own. */
40
- money?: {
41
- billableAmount?: number;
42
- unpaidAmount?: number;
43
- };
44
- care?: {
45
- /** Without `number` the section shows the plan name alone. */
46
- plan?: {
47
- id: string;
48
- number?: string;
49
- name: string;
50
- };
51
- lines: Array<{
52
- entryId: string;
53
- careId: string;
54
- name: string;
55
- code?: string;
56
- elementsLabel?: string;
57
- done: boolean;
58
- billed: boolean;
59
- phases: string[];
60
- /** Absent = prices withheld for this viewer. */
61
- priceCents?: number;
62
- }>;
63
- };
64
- booking?: {
65
- typedName?: string;
66
- phone?: string;
67
- email?: string;
68
- note?: string;
69
- bookedAtIso?: string;
70
- paidOnlineAmount?: number;
71
- };
72
- signing?: {
73
- required: number;
74
- toComplete: number;
75
- requestedVia?: CalendarSignChannel;
76
- aesSetUp: boolean;
77
- };
78
14
  history: CalendarHistoryEntry[];
79
15
  /** Host-owned; the kit never sees the session code. */
80
16
  onJoinTelehealth?: () => void;
81
17
  /** Host-composed; absent = not available. */
82
18
  whatsappUrl?: string;
83
19
  /** Host-owned bridge to the practice's WhatsApp snippets; absent = not
84
- * offered. With `whatsappUrl` too, the one button calls this. */
20
+ * offered. With `whatsappUrl` too, the one button calls this. */
85
21
  onWhatsApp?: () => void;
86
22
  /** Server-built link to the task page, same tab; absent = not offered. */
87
23
  createTaskUrl?: string;
@@ -91,34 +27,29 @@ export interface CalendarAppointmentDetails {
91
27
  onCreate: (kind: CalendarDocumentKind) => void;
92
28
  };
93
29
  }
94
- export type CalendarAppointmentDetailsSnapshot = {
95
- status: 'ready';
96
- details: CalendarAppointmentDetails;
97
- } | {
98
- status: 'refused';
99
- reason: string;
100
- retryable?: boolean;
101
- };
30
+ export type CalendarAppointmentDetailsSnapshot = AppointmentDetailsSnapshot<CalendarAppointmentDetails>;
102
31
  /** A rejected promise is a transient failure (error with Retry); 'refused'
103
32
  * means not visible (the reason, with Retry only when retryable). */
104
- export type CalendarAppointmentDetailsLoader = (eventId: string, options: {
105
- signal: AbortSignal;
106
- }) => Promise<CalendarAppointmentDetailsSnapshot>;
107
- /** The host's zone-less wall clock as a local Date, or undefined when it is
108
- * not a real 'YYYY-MM-DDTHH:mm:ss' reading. Ranges are checked rather than
109
- * round-tripped, so a time inside a daylight-saving gap still parses. */
110
- export declare function parseDetailsStartIso(startIso: string | undefined): Date | undefined;
33
+ export type CalendarAppointmentDetailsLoader = AppointmentDetailsLoader<CalendarAppointmentDetails>;
34
+ /** The host's zone-less wall clock as a local Date; see
35
+ * `parseAppointmentStartIso`. */
36
+ export declare const parseDetailsStartIso: typeof parseAppointmentStartIso;
111
37
  export interface CalendarDetailsHydrationProps {
112
38
  /** The occurrence to read; a new id aborts the previous read. */
113
39
  eventId: string;
40
+ /** Keep it stable: a new function reads the occurrence again. */
114
41
  load: CalendarAppointmentDetailsLoader;
115
42
  /** Mounted only with details whose eventId and startIso passed the checks. */
116
43
  children: (details: CalendarAppointmentDetails) => ReactNode;
117
44
  }
118
45
  /** The details panel is not mounted until the host's read answers for this
119
- * occurrence. A late answer for a replaced id or loader is ignored. */
46
+ * occurrence. A late answer for a replaced id or loader is ignored. A new
47
+ * `load` reads the same occurrence again while the current read stays on
48
+ * screen, so a host re-reads after a change by handing a new loader. Until
49
+ * the first answer the panel's own shell shows the skeleton, the error with
50
+ * Retry, or the refusal. */
120
51
  export declare function CalendarDetailsHydration({ eventId, load, children, }: CalendarDetailsHydrationProps): import("react/jsx-runtime").JSX.Element;
121
- export interface AppointmentDetailsPanelProps {
52
+ export interface CalendarAppointmentDetailsPanelProps {
122
53
  /** The occurrence as the host read it (P-C2). */
123
54
  details: CalendarAppointmentDetails;
124
55
  /** The row's patient id (N-C5); defaults to the read's patient. */
@@ -153,9 +84,8 @@ export interface AppointmentDetailsPanelProps {
153
84
  privacyTitle?: string;
154
85
  locale?: string;
155
86
  }
156
- /** The appointment details panel (P-C2, P-C3): the patient card, the
157
- * appointment, notes and treatments cards, a pinned footer with the
158
- * status and the actions, and a History sub-view in place of the body.
87
+ /** The appointment details panel of the calendar (P-C2, P-C3): the published
88
+ * AppointmentDetailsPanel, fed from CalendarData and the calendar's read.
159
89
  * It docks in the rail, is no dialog and asks no series scope. */
160
- export declare function AppointmentDetailsPanel(props: AppointmentDetailsPanelProps): import("react/jsx-runtime").JSX.Element;
90
+ export declare function CalendarAppointmentDetailsPanel({ details, patientId, notesSeam, onOpenNotes, readOnly, onEdit, onMove, onCopy, onStatusChange, onDescriptionChange, mapsLink, privacy, privacyTitle, locale, }: CalendarAppointmentDetailsPanelProps): import("react/jsx-runtime").JSX.Element;
161
91
  //# sourceMappingURL=calendar-appointment-details.d.ts.map
@@ -1,11 +1,12 @@
1
- interface PatientPickerProps {
1
+ interface CalendarPatientPickerProps {
2
2
  value: string;
3
3
  onValueChange: (value: string) => void;
4
4
  selectedLabel?: string;
5
5
  size?: 'sm' | 'md';
6
6
  disabled?: boolean;
7
7
  }
8
- /** One id-valued patient control for the editor and waiting surfaces. */
9
- export declare function CalendarPatientPicker(props: PatientPickerProps): import("react/jsx-runtime").JSX.Element;
8
+ /** One id-valued patient control for the editor and waiting surfaces: the
9
+ * shared PatientPicker fed from `CalendarData`. */
10
+ export declare function CalendarPatientPicker(props: CalendarPatientPickerProps): import("react/jsx-runtime").JSX.Element;
10
11
  export {};
11
12
  //# sourceMappingURL=calendar-patient-picker.d.ts.map
@@ -1,23 +1,2 @@
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;
1
+ export { privacyMask, PrivacyHiddenLine, PrivacyIdentityCard, PrivacyNoticePanel, } from '../../components/_shared/privacy-mask';
23
2
  //# sourceMappingURL=calendar-privacy.d.ts.map
@@ -1,20 +1,27 @@
1
1
  export declare const STICKY_HEADER_CELL = ".fc-scrollgrid-section-header.fc-scrollgrid-section-sticky > *";
2
+ /** The kit Calendar's create, Move and Copy banner. */
3
+ export declare const MODE_BANNER = "[data-calendar-mode-banner]";
2
4
  /** The box `position: sticky` resolves against: the nearest ancestor that
3
5
  * is a scroll container (`clip` is not one), or null for the viewport. */
4
6
  export declare function stickyScrollport(el: Element): Element | null;
5
- /** How far the header must sit below its natural `top: 0`. The nav only
6
- * covers it in a SHARED scrollport; in the grid's own (the platform's
7
- * table) any offset lands the header on the all-day lane. No header, no
8
- * offset: a nav height set blind is exactly that bug. */
7
+ /** How far the header sits below its natural `top: 0` to clear the nav. The
8
+ * kit resets `.fc-view` and its table; any other host scroll container
9
+ * still yields 0, as an offset there covers the all-day lane. */
9
10
  export declare function stickyHeaderOffset(navigation: HTMLElement, header: Element | null): number;
10
- /**
11
- * Keeps `--inc1-nav-offset` on `surface` current and returns the cleanup.
12
- * Re-measures when the nav or surface resizes AND when FullCalendar
13
- * inserts or replaces the header, which can happen with no size change.
14
- *
15
- * Not re-measured: a host changing an ancestor's `overflow` at runtime
16
- * with no resize. Watching style across FullCalendar's subtree would fire
17
- * on every hover and drag; no host does this. Remount if you must.
18
- */
11
+ export interface StickyOffsets {
12
+ /** `--inc1-nav-offset`: the nav alone, as the header sees it. */
13
+ nav: number;
14
+ /** `--inc1-banner-top`: where the mode banner parks. */
15
+ bannerTop: number;
16
+ /** `--inc1-header-offset`: the nav plus a banner in the header's scrollport. */
17
+ header: number;
18
+ /** `--inc1-pinned-block-size`: everything pinned above the grid's events. */
19
+ pinned: number;
20
+ }
21
+ /** Every sticky offset the surface needs, from one measurement. */
22
+ export declare function stickyOffsets(navigation: HTMLElement, header: Element | null, banner: Element | null): StickyOffsets;
23
+ /** Keeps the sticky offsets on `surface` current; re-measures on resize and
24
+ * when the header or banner is inserted or replaced. A runtime `overflow`
25
+ * change with no resize is not seen: remount. Returns the cleanup. */
19
26
  export declare function trackStickyHeaderOffset(navigation: HTMLElement, surface: HTMLElement): () => void;
20
27
  //# sourceMappingURL=calendar-sticky-offset.d.ts.map
@@ -3,29 +3,25 @@ export interface CalendarTaskEditorProps {
3
3
  mode: 'create' | 'edit';
4
4
  /** Edit mode: which task to load via `loadTask`. */
5
5
  taskId?: string;
6
- /** Create mode: the date/time to prefill — the grid's selection, or
7
- * today when none. Local wall-clock, never re-read after mount. */
6
+ /** Create mode: the date and time to prefill, the grid's selection or
7
+ * now. Local wall-clock, never re-read after mount. */
8
8
  initialDate?: Date;
9
9
  onCancel: () => void;
10
- /** Fires once a create/update/delete lands, so the host can close the
11
- * rail or refresh whatever list is showing. */
10
+ /** Fires once a create or update lands. */
12
11
  onSaved?: (task: CalendarTask) => void;
13
12
  onDeleted?: (id: string) => void;
14
- /** Must resolve WITH the saved record — the host assigns the new id. */
13
+ /** Must resolve WITH the saved record: the host assigns the new id. */
15
14
  onCreateTask?: (draft: TaskDraft) => Promise<CalendarTask>;
16
- /** Full re-send, not a patch. Resolves with nothing: the subject is
17
- * already named by `taskId`. */
15
+ /** Full re-send, not a patch. Resolves with nothing. */
18
16
  onUpdateTask?: (id: string, draft: TaskDraft) => Promise<void>;
19
17
  onDeleteTask?: (id: string) => Promise<void>;
20
18
  onSetTaskDone?: (id: string, done: boolean) => Promise<void>;
21
19
  loadTask?: (id: string) => Promise<CalendarTask>;
22
- /** Withholds every write control and disables the fieldset — same
23
- * contract as the appointment editor's `readOnly`. */
20
+ /** Withholds every write control and disables the fieldset. */
24
21
  readOnly?: boolean;
25
- /** Privacy mode: the linked patient's identity is masked, never the
26
- * fact that one is linked. A task about nobody has nothing to mask. */
22
+ /** Privacy mode: the linked patient's identity is masked, never the fact
23
+ * that one is linked. */
27
24
  privacy?: boolean;
28
- locale?: string;
29
25
  }
30
- export declare function CalendarTaskEditor({ mode, taskId, initialDate, onCancel, onSaved, onDeleted, onCreateTask, onUpdateTask, onDeleteTask, onSetTaskDone, loadTask, readOnly, privacy, }: CalendarTaskEditorProps): import("react/jsx-runtime").JSX.Element;
26
+ export declare function CalendarTaskEditor(props: CalendarTaskEditorProps): import("react/jsx-runtime").JSX.Element;
31
27
  //# sourceMappingURL=calendar-task-editor.d.ts.map
@@ -6,9 +6,11 @@
6
6
  * Control Room rail docked inline-end — up to six tools, in strip
7
7
  * order: the upcoming Appointments panel (the rail's resting state and
8
8
  * its default), ONE appointment editor / details tool, the waiting list,
9
- * patient notes when in context, online bookings and the free-slot finder. Nothing else — no Inbox,
10
- * no Alia, no patient tabs, no care plan, no tasks. The panels are the
11
- * extracted modules from `calendar.sheets.tsx`; `calendar.host.ts`'s
9
+ * patient notes when in context, online bookings and the free-slot
10
+ * finder. The kit adds nothing else: no Inbox, no Alia, no patient tabs,
11
+ * no care plan, no tasks. A host may append its own tools after these
12
+ * (`extraTools`), which is how a host mounts TasksPanel. The panels are
13
+ * the extracted modules from `calendar.sheets.tsx`; `calendar.host.ts`'s
12
14
  * open / close seam maps onto the rail's dock, with `close()` returning
13
15
  * to the Appointments panel so no path leaves an empty rail.
14
16
  *
@@ -36,7 +38,7 @@
36
38
  * and care-plan cleanup and the Create-bill confirm.
37
39
  */
38
40
  import type { CalendarView } from '../../components/calendar';
39
- import { type ControlRoomFavoriteChange } from '../../components/control-room-rail';
41
+ import { type ControlRoomFavoriteChange, type ControlRoomTool } from '../../components/control-room-rail';
40
42
  import { type CalendarAppointmentEditorLoader } from './calendar-editor-hydration';
41
43
  import { type CalendarAppointmentDetailsLoader } from './calendar-appointment-details';
42
44
  import { type CalendarData } from './calendar.data';
@@ -64,13 +66,37 @@ export type CalendarToolOpenSource = 'rail' | 'appointment_panel' | 'selection'
64
66
  /** Where the appointment behind a details panel was selected. `host` is
65
67
  * a selection the journey made itself. */
66
68
  export type CalendarDetailsOpenSource = 'calendar' | 'appointments_panel' | 'bookings_panel' | 'waiting_list' | 'deep_link' | 'host';
69
+ /**
70
+ * A host tool on the workspace rail (`CalendarWorkspaceProps.extraTools`):
71
+ * a Control Room tool, plus what privacy mode does to it. `scope` and
72
+ * `reorderable` are ignored: the workspace rail orders by favourites.
73
+ */
74
+ export interface CalendarWorkspaceExtraTool extends ControlRoomTool {
75
+ /**
76
+ * What privacy mode does to this tool's panel. The kit cannot see what
77
+ * the panel shows, so the default is the safe one.
78
+ *
79
+ * - `'withhold'` (default): while privacy mode is on, the panel and its
80
+ * `header` are replaced by the privacy notice, titled with `label` and
81
+ * offering "Turn off privacy mode". The host's panel is unmounted until
82
+ * privacy is turned off. The strip button and `badgeCount` stay.
83
+ * - `'host'`: the panel stays mounted and the host masks it, reading the
84
+ * mode from `onPrivacyChange` (a task list sets `linkedLabelMasked`;
85
+ * mind free-text titles, which the grid hides under privacy).
86
+ * Also the right value for a panel that shows no patient data at all.
87
+ * The kit cannot check either claim.
88
+ */
89
+ privacy?: 'withhold' | 'host';
90
+ }
67
91
  /**
68
92
  * Usage callbacks for the host's analytics. The kit raises no event of
69
93
  * its own and passes identifiers only, never patient data: the host owns
70
94
  * the calls, the property allow-list and any once-per guard.
71
95
  */
72
96
  export interface CalendarWorkspaceAnalytics {
73
- /** A tool panel opened. Not raised again while it stays open. */
97
+ /** A built-in tool panel opened. Not raised again while it stays open,
98
+ * and never for an id no tool carries. Host tools report through
99
+ * `onExtraToolOpen` instead. */
74
100
  onToolOpen?: (event: {
75
101
  toolId: CalendarWorkspaceToolId;
76
102
  source: CalendarToolOpenSource;
@@ -90,12 +116,23 @@ export interface CalendarWorkspaceAnalytics {
90
116
  source: CalendarDetailsOpenSource;
91
117
  view: CalendarView;
92
118
  }) => void;
93
- /** A rail preference was saved on this device. `resize` is raised only
94
- * with `persistPanelWidthKey`, since without it nothing is saved. */
119
+ /** A rail preference was saved on this device. `toolId` may be a host
120
+ * tool's id. `resize` is raised only with `persistPanelWidthKey`, since
121
+ * without it nothing is saved. */
95
122
  onToolPreferencesChange?: (event: {
96
123
  action: ControlRoomFavoriteChange['action'] | 'resize';
97
124
  toolId: string;
98
125
  }) => void;
126
+ /**
127
+ * A host tool's panel opened (`extraTools`). Not raised again while it
128
+ * stays open. `rail` is a pick on the strip; `system` is any other open
129
+ * (the host's own `useControlRoomActions().openTool`, an agent).
130
+ */
131
+ onExtraToolOpen?: (event: {
132
+ toolId: string;
133
+ source: Extract<CalendarToolOpenSource, 'rail' | 'system'>;
134
+ view: CalendarView;
135
+ }) => void;
99
136
  }
100
137
  export interface CalendarWorkspaceProps {
101
138
  /** Optional canonical read for every existing-appointment editor route.
@@ -105,7 +142,9 @@ export interface CalendarWorkspaceProps {
105
142
  loadAppointmentEditor?: CalendarAppointmentEditorLoader;
106
143
  /** The host's read for the read-only appointment details panel (P-C3).
107
144
  * With it a selection docks that panel, Edit opens the editor and a save
108
- * re-reads the details; without it details stays the editor form. */
145
+ * re-reads the details; without it details stays the editor form. Keep
146
+ * it stable: passing a new function re-reads the open details panel,
147
+ * which is how a host shows a change made outside the panel. */
109
148
  loadAppointmentDetails?: CalendarAppointmentDetailsLoader;
110
149
  /** The domain state and its handlers — the host implements them. */
111
150
  journey: CalendarJourney;
@@ -219,6 +258,38 @@ export interface CalendarWorkspaceProps {
219
258
  /** Usage callbacks for the host's analytics. Omit it and nothing is
220
259
  * reported. */
221
260
  analytics?: CalendarWorkspaceAnalytics;
261
+ /**
262
+ * Host tools, appended to the rail after the built-in ones, in this
263
+ * order. A tool is offered by passing it and withheld by leaving it out:
264
+ * `availableTools` narrows the built-in tools only.
265
+ *
266
+ * Ids: every `WORKSPACE_TOOL` id is reserved, even for a tool
267
+ * `availableTools` withholds, and a tool using one is left off the rail.
268
+ * A repeated id keeps its first tool. Nothing throws. The kit's own
269
+ * Storybook and tests warn; the published build drops the tool silently.
270
+ *
271
+ * The panel renders inside the workspace, so the host's own providers
272
+ * reach it. It unmounts when another tool opens, so keep state that must
273
+ * survive in the host. Render a kit `PanelHeader` first and the rail puts
274
+ * its favourite and close controls in it. Opening one reports through
275
+ * `analytics.onExtraToolOpen`. The workspace passes no permission to host
276
+ * tools. Only the strip, an agent and code inside an open panel
277
+ * (`useControlRoomActions`) open a tool: code outside the workspace
278
+ * cannot, since the workspace owns its rail provider. If the host stops
279
+ * passing the open tool, the rail docks the Appointments panel. Memoise
280
+ * the array: a new one re-registers the rail.
281
+ */
282
+ extraTools?: readonly CalendarWorkspaceExtraTool[];
283
+ /**
284
+ * Raised when privacy mode turns on or off, from the toolbar toggle or a
285
+ * withheld panel's "Turn off privacy mode". Observe-only: the workspace
286
+ * owns the flag, it starts off on every mount (not reported) and is
287
+ * never persisted. Unmounting with privacy on reports `false`, so the
288
+ * host's copy never outlives the workspace. Raised in the same handler,
289
+ * so a host that sets state here renders its masked tool in the same
290
+ * commit as the masked grid.
291
+ */
292
+ onPrivacyChange?: (privacy: boolean) => void;
222
293
  }
223
294
  /**
224
295
  * The cog's settings as the workspace opens with them: the remembered
@@ -35,6 +35,22 @@ export declare const ALL_WORKSPACE_TOOLS: readonly CalendarWorkspaceToolId[];
35
35
  * kit it mounts must not crash the agenda.
36
36
  */
37
37
  export declare function resolveAvailableTools(requested: readonly string[]): ReadonlySet<CalendarWorkspaceToolId>;
38
+ /** Whether `id` is one of the built-in rail tools. */
39
+ export declare function isWorkspaceToolId(id: string): id is CalendarWorkspaceToolId;
40
+ /** Why a host tool was left off the rail. */
41
+ export type ExtraToolRejection = 'reserved' | 'duplicate' | 'empty';
42
+ /** The host tools the rail can carry, in the host's order. Built-in ids are
43
+ * reserved even when withheld, a repeated id keeps its first tool, an empty
44
+ * id is dropped, and nothing throws: a host mistake must not sink the page. */
45
+ export declare function resolveExtraTools<T extends {
46
+ readonly id: string;
47
+ }>(requested: readonly T[]): {
48
+ tools: T[];
49
+ rejected: {
50
+ id: string;
51
+ reason: ExtraToolRejection;
52
+ }[];
53
+ };
38
54
  /** The platform's four ranges; "Working week" became the Show-weekends
39
55
  * item, so it is no longer a view of its own. */
40
56
  export type WorkspaceViewId = 'day' | 'threeDays' | 'week' | 'month';
@@ -207,18 +223,7 @@ export declare function signChannelStates(ref: PatientRef): {
207
223
  * email, else nothing. "Can take one" is `ready` alone — a channel we
208
224
  * know nothing about is not a channel to send on by default. */
209
225
  export declare function defaultSignMode(ref: PatientRef): RequiredDocsSignMode;
210
- /** The patient's address as one line — the map link's search text, and
211
- * the link's own label. Empty when the host supplied no address at all,
212
- * which is the caller's signal to leave the map row out rather than
213
- * offer a search for nothing. */
214
- export declare function patientAddressLine(patient: CalendarPatient): string;
215
- /** The map link's own LABEL — street and city, the pair the popover has
216
- * always printed. The postcode belongs in the search query, not in the
217
- * visible text, so widening `patientAddressLine` for the URL must not
218
- * drag the label along with it. */
219
- export declare function patientAddressLabel(patient: CalendarPatient): string;
220
- /** Google Maps search for the patient's address — the popover's map link. */
221
- export declare function patientMapsUrl(patient: CalendarPatient): string;
226
+ export { patientAddressLabel, patientAddressLine, patientMapsUrl, } from '../../components/_shared/appointment-format';
222
227
  /** A CREATE mode armed by a deep link (`createParameters`) or the
223
228
  * Backlog's Schedule: the next empty-slot click opens the editor with
224
229
  * this context already filled in (platform `_switchMode('create')`). */
@@ -12,7 +12,7 @@
12
12
  */
13
13
  import type { CalendarEventStatus } from '../../components/calendar';
14
14
  import type { Dispatch, SetStateAction } from 'react';
15
- import type { NotesPanelNote, NotesPanelProps, NotesPanelSubmission, AiConsentGate } from '../../components/notes-panel';
15
+ import type { NotesPanelNote, NotesPanelProps, NotesPanelSubmission, NotesPanelWriteFailure, AiConsentGate } from '../../components/notes-panel';
16
16
  import type { PatientNotesSeam } from './calendar.sheets';
17
17
  import type { AvailabilityContext, BacklogFilter, BacklogItem, CalendarFreeSlot, CalendarRow, DisplaySettings, DraftSlot, EditorDraft, EditorPrefill, FindSlotsSeed, HistoryInput, RailFocus, SlotPatch, WaitingEntryDraft } from './calendar.model';
18
18
  import type { DeleteOptions, EditorDraftExtras, RecurringScope } from './calendar-workspace.model';
@@ -171,16 +171,50 @@ export interface CalendarJourney {
171
171
  * stored note — its id, its timestamp and its AUTHOR, who is the
172
172
  * signed-in operator the host knows and the kit does not. The panel
173
173
  * hands over only what was typed, so no name the kit invented can
174
- * ever be attributed to a clinical note.
174
+ * ever be attributed to a clinical note. Reject with a translated
175
+ * Error: the draft stays in the composer with the message while the
176
+ * Notes tool is open, and `handleNoteWriteError` hears a refusal that
177
+ * lands after the reader left it.
175
178
  */
176
179
  handleAddNote: (patientId: string, submission: NotesPanelSubmission) => void | Promise<void>;
177
180
  /** Replace a note's body: HTML for an HTML note, else plain text. A
178
- * rejected write keeps the draft or dialog open with its message. */
181
+ * rejected write keeps the draft in the composer with its message, as
182
+ * `handleAddNote` does. */
179
183
  handleEditNote: (patientId: string, noteId: string, content: string) => void | Promise<void>;
184
+ /**
185
+ * Delete a note. Called on the click that confirms it. Resolve once the
186
+ * delete has landed. A rejection brings the row back and the notes
187
+ * panel shows the error's message, so reject with a translated Error
188
+ * and do not also toast it.
189
+ *
190
+ * A clinical note is taken as kept for the record: its row waits in
191
+ * place, paused, until `notesByPatient` marks it `deleted`. Any other
192
+ * note fades and stays hidden until `notesByPatient` drops it. Set
193
+ * `keptOnDelete` on a note to say otherwise. The panel holds this only
194
+ * while the Notes tool stays open for that patient: reopened, it shows
195
+ * the note as `notesByPatient` does, with a live delete. So return the
196
+ * same promise for a second delete of a note already being deleted.
197
+ */
180
198
  handleDeleteNote: (patientId: string, noteId: string) => void | Promise<void>;
181
- handleToggleNotePin: (patientId: string, noteId: string) => void | Promise<void>;
182
- /** Flag or unflag a note. Omit it and the flag control is not offered. */
183
- handleToggleNoteFlag?: (patientId: string, noteId: string) => void | Promise<void>;
199
+ /**
200
+ * Pin or unpin a note. `next` is the value the note moves to, so set it
201
+ * rather than flipping what you hold. A returned promise holds the new
202
+ * value until the notes agree; a rejection rolls it back and the notes
203
+ * panel shows the message. Do not also toast it.
204
+ */
205
+ handleToggleNotePin: (patientId: string, noteId: string, next: boolean) => void | Promise<void>;
206
+ /** As `handleToggleNotePin`, for the flag. Omit it and the flag control
207
+ * is not offered. */
208
+ handleToggleNoteFlag?: (patientId: string, noteId: string, next: boolean) => void | Promise<void>;
209
+ /**
210
+ * Hears every refused note write: a save, a delete, a pin or a flag.
211
+ * `failure.shown` says whether the notes panel told the reader. Toast
212
+ * only the ones with `shown: false`, for example a refusal that arrives
213
+ * after the reader switched tool or patient; a save among them has lost
214
+ * its draft. Wire it in the same change that stops you toasting every
215
+ * refusal yourself: without it, those late refusals reach no one.
216
+ */
217
+ handleNoteWriteError?: (patientId: string, failure: NotesPanelWriteFailure) => void;
184
218
  /** Read a patient's notes: the latest few, or every note. */
185
219
  handleLoadNotes?: (patientId: string, scope: 'preview' | 'all') => void;
186
220
  /**
@@ -9,9 +9,11 @@
9
9
  * — the host supplies it, the model never reaches for a module global.
10
10
  */
11
11
  import type { TFunction } from 'i18next';
12
- import { ThumbsUp } from 'lucide-react';
13
12
  import { type CalendarEvent, type CalendarEventStatus, type CalendarResource } from '../../components/calendar';
14
13
  import type { WorkflowStatusTone } from '../../components/workflow-status';
14
+ import { APPOINTMENT_STATE_WORKFLOW } from '../../components/_shared/entity-card';
15
+ import { APPOINTMENT_STATUS_BADGE_VARIANT } from '../../components/appointment-details-panel/appointment-details-panel.identity';
16
+ import type { AppointmentRecurrenceFrequency } from '../../components/appointment-details-panel';
15
17
  import type { CalendarData } from './calendar.data';
16
18
  import { type CareDescriptionMode, type ColorAssociation, type CalendarBaseEvent, type CalendarBookingContact, type CalendarCareEntry, type CalendarCareLink, type CalendarClosure, type CalendarDayHours, type CalendarHistoryEntry, type CalendarPatient, type CalendarPhoneNumber, type CalendarSignDocument, type CalendarWaitingEntry, type CatalogueState, type PatientRef } from './calendar.types';
17
19
  export declare const STATUS_UI_KEY: Record<CalendarEventStatus, string>;
@@ -131,8 +133,7 @@ export declare const DAY_WINDOWS: Record<DisplaySettings['window'], {
131
133
  min: string;
132
134
  max: string;
133
135
  }>;
134
- export declare function formatTimeRange(locale: string, start: Date | string, end?: Date | string): string;
135
- export declare function formatDay(locale: string, value: Date | string): string;
136
+ export { DETAIL_STAMP_FORMAT, formatDay, formatTimeRange, parseEventDate, RECURRENCE_LABEL_KEY, sortHistoryNewestFirst, } from '../../components/_shared/appointment-format';
136
137
  /** Completed years between a birth date and the practice's fixed "now" —
137
138
  * the platform popover's "(NN anni)" beside the patient's name. Pinned
138
139
  * to `data.nowIso` so the figure never drifts under a test. */
@@ -197,13 +198,11 @@ export interface EditorPrefill {
197
198
  isTask?: boolean;
198
199
  }
199
200
  /** Platform's six `recurrence_frequency` values, in its dropdown order. */
200
- export type RecurrenceFrequency = 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'semiannual' | 'yearly';
201
+ export type RecurrenceFrequency = AppointmentRecurrenceFrequency;
201
202
  /** Repetition cap — platform asserts 2..100 on the entity. */
202
203
  export declare const RECURRENCE_MAX_COUNT = 100;
203
204
  /** Dropdown order, matching the platform modal's own. */
204
205
  export declare const RECURRENCE_FREQUENCIES: readonly RecurrenceFrequency[];
205
- /** Literal map (not a template) so key extractors see every key. */
206
- export declare const RECURRENCE_LABEL_KEY: Record<RecurrenceFrequency, string>;
207
206
  export interface EditorRecurrence {
208
207
  frequency: RecurrenceFrequency;
209
208
  /** Count XOR until — the exclusivity `DoctorAppointment` enforces. */
@@ -355,12 +354,8 @@ export declare function deriveCareLinkDefaults(link: CalendarCareLink | undefine
355
354
  export type DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;
356
355
  /** A ledger line before the journey stamps id, time and actor onto it. */
357
356
  export type HistoryInput = DistributiveOmit<CalendarHistoryEntry, 'id' | 'atIso' | 'actor'>;
358
- /** Absolute stamp for booked-at and ledger lines — day and time. */
359
- export declare const DETAIL_STAMP_FORMAT: Intl.DateTimeFormatOptions;
360
357
  /** Live stamps advance from the practice clock, never the real one. */
361
358
  export declare function historyStampIso(seq: number, data: CalendarData): string;
362
- /** Timeline 'newest-first' is a plain column — DOM order must already be. */
363
- export declare function sortHistoryNewestFirst(entries: readonly CalendarHistoryEntry[]): CalendarHistoryEntry[];
364
359
  /** Documents still awaiting a required party (the chip's own rule). */
365
360
  export declare function signingSummary(docs: readonly CalendarSignDocument[]): {
366
361
  toSign: number;
@@ -399,11 +394,12 @@ export declare function priceListState(data: CalendarData): CatalogueState;
399
394
  * list the practice does not have, and `priceLists[0].id` on an empty
400
395
  * catalogue threw and took the whole calendar down with it. */
401
396
  export declare function priceListIdFor(patientId: string | undefined, data: CalendarData): string | undefined;
402
- export declare const STATUS_CHIP: Record<CalendarEventStatus, {
403
- variant: 'success' | 'info' | 'warning' | 'error' | 'accentSoft';
397
+ type StatusChip = {
398
+ variant: (typeof APPOINTMENT_STATUS_BADGE_VARIANT)[CalendarEventStatus];
404
399
  tone: WorkflowStatusTone;
405
- Icon: typeof ThumbsUp;
406
- }>;
400
+ Icon: (typeof APPOINTMENT_STATE_WORKFLOW)[CalendarEventStatus]['Icon'];
401
+ };
402
+ export declare const STATUS_CHIP: Record<CalendarEventStatus, StatusChip>;
407
403
  export type BacklogType = 'booking' | 'waiting' | 'unconfirmed' | 'noOperator' | 'signature';
408
404
  /** The filter strip's segments — every type, or all of them grouped. */
409
405
  export type BacklogFilter = BacklogType | 'all';
@@ -668,9 +664,6 @@ export interface PrintSheetInput {
668
664
  visibleOperatorIds: string[];
669
665
  privacy: boolean;
670
666
  }
671
- /** A date-only start (all-day rows) is already a local day; anything
672
- * else parses as the wall clock the fixtures and the editor write. */
673
- export declare function parseEventDate(value: string | Date): Date;
674
667
  /** The title privacy mode shows. TOTAL in the masked branch: a host
675
668
  * that supplies an EMPTY `privacyModeTitle` gets the bullets, never a
676
669
  * blank and never a fallback that would leak what we do or do not hold