@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
@@ -0,0 +1,6 @@
1
+ import { T as o, t as r } from "../../_chunks/task-editor-DlvTwAfv.js";
2
+ export {
3
+ o as TaskEditor,
4
+ r as taskEditorAgent
5
+ };
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,4 @@
1
+ import type { AgentAdapter } from '../../agent/types';
2
+ import type { TaskEditorHandle } from './task-editor';
3
+ export declare const taskEditorAgent: AgentAdapter<TaskEditorHandle>;
4
+ //# sourceMappingURL=task-editor.agent.d.ts.map
@@ -0,0 +1,240 @@
1
+ /**
2
+ * TaskEditor: the published form for one task (platform `DoctorReminder`).
3
+ * It creates, edits, completes and deletes a task through host seams, and
4
+ * takes every list, label and seam as a prop, so a host builds it without
5
+ * any calendar context. The calendar's own task route renders it through a
6
+ * thin adapter.
7
+ *
8
+ * A note is the only field every host needs, beside ONE optional
9
+ * counterpart: a patient, a company or an operator, never two, because the
10
+ * platform refuses a task with "More than one counterpart is set". A host
11
+ * that supplies `taskTypes` also gets a required Type select, and one that
12
+ * supplies `assignees` an optional "Assigned to" (a practice user, not the
13
+ * operator). A missing list or seam WITHHOLDS the control it backs; it never
14
+ * renders that control disabled.
15
+ *
16
+ * Two layouts: `variant="panel"` fills a rail tool panel with its own header,
17
+ * scroll body and pinned footer; `variant="subview"` IS a PanelSubview, for a
18
+ * form stacked over a list such as TasksPanel.
19
+ *
20
+ * DOM hooks: `data-component="task-editor"` with `data-variant`,
21
+ * `data-status` and `data-component-id`; the footer actions carry
22
+ * `data-action` "cancel-task", "save-task" and "delete-task", and a failed
23
+ * load's Retry carries "retry-load". In the subview the marker sits on the
24
+ * body, so the PanelSubview section repeats `data-component-id`,
25
+ * `data-variant` and `data-status`: `[data-component-id="…"]` reaches the
26
+ * heading and the footer in both variants.
27
+ */
28
+ import { type HTMLAttributes } from 'react';
29
+ import type { PatientIdentity } from '../_shared/patient-identity';
30
+ /**
31
+ * A task as the editor loads and saves it: platform `DoctorReminder`. At
32
+ * most ONE counterpart (patient, company or operator); the platform refuses
33
+ * a task naming two. `note` is required here though the platform allows an
34
+ * empty one. There is no title, priority or duration: the platform has none.
35
+ */
36
+ export interface TaskEditorTask {
37
+ id: string;
38
+ /** An instant as ISO 8601 (platform `date`). The editor emits
39
+ * `toISOString()`, so UTC with a `Z`. Parse it with `new Date()`, never by
40
+ * slicing; a zone-less value reads as local time. */
41
+ dateIso: string;
42
+ /** The task text (platform `note`). Required here, though the platform
43
+ * allows an empty one. Never exposed through the agent. */
44
+ note: string;
45
+ /** The clinician the task concerns: platform `doctorOperator`, an id from
46
+ * `operators`. NOT the assignee. Exclusive with `patientId` and
47
+ * `companyId`. */
48
+ operatorId?: string;
49
+ /** The patient the task concerns: platform `doctorPatient` (column
50
+ * `patientId`). Exclusive with `companyId` and `operatorId`. */
51
+ patientId?: string;
52
+ /** Platform `doctorCompany`, an id from `companies`. Exclusive with
53
+ * `patientId` and `operatorId`. */
54
+ companyId?: string;
55
+ /** An opaque token from `taskTypes`, round-tripped untouched. Without
56
+ * `taskTypes` the Type field is withheld and a new task sends none; a
57
+ * stored one is still re-sent. */
58
+ typeId?: string;
59
+ /** The practice USER the task is assigned to: platform `practiceUser`, an
60
+ * id from `assignees`. Independent of the counterpart. Absent or '':
61
+ * nobody. */
62
+ assigneeId?: string;
63
+ /** Platform `done`. */
64
+ done: boolean;
65
+ }
66
+ /** What `onCreateTask` receives and what an edit save re-sends IN FULL,
67
+ * never a patch. `done` carries the last value the host CONFIRMED, never an
68
+ * optimistic or rolled-back toggle. */
69
+ export type TaskEditorDraft = Omit<TaskEditorTask, 'id' | 'done'> & {
70
+ done?: boolean;
71
+ };
72
+ /** One row of a host list. `label` is the host's own string, already
73
+ * translated. `id` is opaque, unique in its list, never '' and never
74
+ * 'none' (reserved for "Nobody"). */
75
+ export interface TaskEditorOption {
76
+ id: string;
77
+ label: string;
78
+ }
79
+ /** A task type. `custom` (practice-defined) only groups the Type select,
80
+ * and only when the list mixes custom and standard types. */
81
+ export interface TaskEditorTaskType extends TaskEditorOption {
82
+ custom?: boolean;
83
+ }
84
+ /** A patient as the picker needs one: an id and a display name.
85
+ * `CalendarPatient` satisfies it. */
86
+ export type TaskEditorPatient = PatientIdentity;
87
+ /** Host patient typeahead. Called 250 ms after typing stops, for non-blank
88
+ * trimmed queries only. Abort a superseded call through `signal`. The
89
+ * host's order is kept, so matches by phone or number stay. Reject on
90
+ * failure (the picker offers Retry); `[]` is a successful search with no
91
+ * match. The same contract as `CalendarData.searchPatients`. */
92
+ export type TaskEditorSearchPatients = (query: string, options: {
93
+ signal: AbortSignal;
94
+ }) => Promise<readonly TaskEditorPatient[]>;
95
+ /** Where the form is. 'error': the load failed, with Retry. 'locked': edit
96
+ * mode without `taskId` or `loadTask`, never a blank savable form.
97
+ * 'withheld': the privacy notice covers an existing task. */
98
+ export type TaskEditorStatus = 'loading' | 'ready' | 'error' | 'locked' | 'withheld';
99
+ /** The one counterpart choice ("Concerns"). */
100
+ export type TaskEditorAbout = 'nobody' | 'patient' | 'company' | 'operator';
101
+ /** The draft as the agent reads it: identifiers and structure, never the
102
+ * note body. Counterpart ids are what Save would send. */
103
+ export interface TaskEditorDraftState {
104
+ mode: 'create' | 'edit';
105
+ dateIso: string | null;
106
+ about: TaskEditorAbout;
107
+ patientId: string | null;
108
+ companyId: string | null;
109
+ operatorId: string | null;
110
+ typeId: string | null;
111
+ assigneeId: string | null;
112
+ /** The last CONFIRMED done value. */
113
+ done: boolean;
114
+ hasNote: boolean;
115
+ noteLength: number;
116
+ }
117
+ /** Fields an agent may set. Ids must resolve in the host lists, among the
118
+ * patients the host's search returned, or equal the stored one. At most
119
+ * one of `patientId`, `companyId` and `operatorId` per call; each also
120
+ * selects its `about` branch. `assigneeId: null` is Nobody. */
121
+ export interface TaskEditorFieldPatch {
122
+ dateIso?: string;
123
+ note?: string;
124
+ typeId?: string;
125
+ assigneeId?: string | null;
126
+ about?: TaskEditorAbout;
127
+ patientId?: string;
128
+ companyId?: string;
129
+ operatorId?: string;
130
+ }
131
+ /** Curated agent handle. Writes return the host's promise, so a refusal
132
+ * reaches the agent as a rejection. Every write fails unless the status is
133
+ * 'ready' and the form is not read-only. */
134
+ export interface TaskEditorHandle {
135
+ getStatus: () => TaskEditorStatus;
136
+ getDraft: () => TaskEditorDraftState;
137
+ canSave: () => boolean;
138
+ /** Throws on an unknown id, two counterparts or a form not ready. */
139
+ setFields: (patch: TaskEditorFieldPatch) => void;
140
+ save: () => Promise<void>;
141
+ setDone: (done: boolean) => Promise<void>;
142
+ /** Skips the confirmation dialog: the agent runtime confirms instead. */
143
+ deleteTask: () => Promise<void>;
144
+ /** Throws while a save or delete is in flight, as Cancel waits. */
145
+ cancel: () => void;
146
+ }
147
+ export interface TaskEditorProps extends Omit<HTMLAttributes<HTMLElement>, 'children' | 'id' | 'title'> {
148
+ /** Stable instance id, surfaced as `data-component-id` for the agent
149
+ * registry. Generated when absent. */
150
+ id?: string;
151
+ mode: 'create' | 'edit';
152
+ /** Edit mode: the task `loadTask` resolves. Without it, or without
153
+ * `loadTask`, edit mode is 'locked'. */
154
+ taskId?: string;
155
+ /** Create mode: the local date and time to prefill. Read at mount, when
156
+ * the mode or task changes and at each subview reopen. Default: now. */
157
+ initialDate?: Date;
158
+ /** 'panel' (default): fills its box with its own header, scroll body and
159
+ * pinned footer, for a rail tool panel. 'subview': the editor IS a
160
+ * PanelSubview; render it as the LAST, DIRECT child of a
161
+ * `PanelSubview.Host`. */
162
+ variant?: 'panel' | 'subview';
163
+ /** Subview only. Default true. Each change from false to true starts a
164
+ * fresh session: the draft resets and edit mode reloads. Keep one editor
165
+ * mounted and toggle this, so it slides in and returns focus. */
166
+ open?: boolean;
167
+ /** Subview only: fires once the exit has played. */
168
+ onExited?: () => void;
169
+ /** The required Type select, defaulting to the first entry. */
170
+ taskTypes?: ReadonlyArray<TaskEditorTaskType>;
171
+ /** The optional "Assigned to" select: practice users, not operators. */
172
+ assignees?: ReadonlyArray<TaskEditorOption>;
173
+ /** The Company counterpart: a searchable Combobox matching the label,
174
+ * never the id. */
175
+ companies?: ReadonlyArray<TaskEditorOption>;
176
+ /** The Operator counterpart: clinicians. */
177
+ operators?: ReadonlyArray<TaskEditorOption>;
178
+ /** Filtered on the client when `searchPatients` is absent. With neither,
179
+ * the Patient counterpart is withheld; a stored link still shows
180
+ * read-only and is re-sent on Save. */
181
+ patients?: ReadonlyArray<TaskEditorPatient>;
182
+ /** Host typeahead. Wins over `patients` for listing. May change identity
183
+ * between renders; the next query uses the latest. */
184
+ searchPatients?: TaskEditorSearchPatients;
185
+ /** Display name of the task's STORED patient when nothing else resolves
186
+ * it, for example from the TasksPanel row that opened the form. */
187
+ patientLabel?: string;
188
+ /** Resolves any patient id to a name. Tried before `patients` and
189
+ * `patientLabel`. */
190
+ resolvePatientLabel?: (patientId: string) => string | undefined;
191
+ /** Display name of a STORED company that `companies` does not list.
192
+ * Without it the read-only row names the id. */
193
+ companyLabel?: string;
194
+ /** Display name of a STORED operator that `operators` does not list.
195
+ * Without it the row names the id. Each of the three labels names only
196
+ * its own stored link, so a host may pass a TasksPanel row's
197
+ * `linkedLabel` to the one its `linkType` names. */
198
+ operatorLabel?: string;
199
+ /** Subview only: the back arrow's name and tooltip. Already translated.
200
+ * Default "Back to tasks". */
201
+ backLabel?: string;
202
+ /** Resolves the record for edit mode, once per task and session. Aborted
203
+ * through `signal` when the task changes, the subview closes or the
204
+ * privacy notice covers the form; a superseded answer is ignored. */
205
+ loadTask?: (id: string, options: {
206
+ signal: AbortSignal;
207
+ }) => Promise<TaskEditorTask>;
208
+ /** Must resolve WITH the saved record: the host assigns the id. */
209
+ onCreateTask?: (draft: TaskEditorDraft) => Promise<TaskEditorTask>;
210
+ /** A full re-send. Resolves with nothing. */
211
+ onUpdateTask?: (id: string, draft: TaskEditorDraft) => Promise<void>;
212
+ /** Called only after the confirmation dialog. */
213
+ onDeleteTask?: (id: string) => Promise<void>;
214
+ /** The Done switch (edit mode), called on the click. A rejection rolls
215
+ * the switch back. */
216
+ onSetTaskDone?: (id: string, done: boolean) => Promise<void>;
217
+ /** Cancel, plus Back and Escape in the subview. Close the editor. None of
218
+ * them fires while a save or delete is in flight. */
219
+ onCancel: () => void;
220
+ /** After a create or update LANDS. The form then stops writing until it
221
+ * is closed, remounted or reopened. The form cannot be cancelled while a
222
+ * write is in flight, so this fires for every save the user started,
223
+ * unless the host closes or unmounts the editor itself first. */
224
+ onSaved?: (task: TaskEditorTask) => void;
225
+ /** After a delete LANDS. */
226
+ onDeleted?: (id: string) => void;
227
+ /** Withholds every write control and disables the fieldset. */
228
+ readOnly?: boolean;
229
+ /** Privacy mode: the linked patient shows as the mask, never the name. */
230
+ privacy?: boolean;
231
+ /** How an EXISTING task opens under `privacy`. 'notice' (default): the
232
+ * privacy notice covers the form, the record is not loaded, and the
233
+ * footer holds Cancel only. 'mask': the form opens with the patient
234
+ * masked and the note visible. Create mode always opens masked. */
235
+ privacyMode?: 'notice' | 'mask';
236
+ /** The notice's "Turn off privacy mode" action. Absent: no button. */
237
+ onPrivacyOff?: () => void;
238
+ }
239
+ export declare const TaskEditor: import("react").ForwardRefExoticComponent<TaskEditorProps & import("react").RefAttributes<HTMLElement>>;
240
+ //# sourceMappingURL=task-editor.d.ts.map
@@ -0,0 +1,101 @@
1
+ import type { TaskEditorAbout, TaskEditorDraftState, TaskEditorFieldPatch, TaskEditorOption, TaskEditorPatient, TaskEditorProps, TaskEditorStatus, TaskEditorTask, TaskEditorTaskType } from './task-editor';
2
+ /** The "unset" value of the operator and assignee selects. */
3
+ export declare const NONE = "none";
4
+ export interface TaskEditorFields {
5
+ date: Date | undefined;
6
+ time: {
7
+ hours: number;
8
+ minutes: number;
9
+ };
10
+ note: string;
11
+ /** `NONE` until an operator is chosen. */
12
+ operatorId: string;
13
+ /** '' until something chooses one. Read through `chosenTypeId`. */
14
+ typeId: string;
15
+ /** The practice user, not the operator. `NONE` is nobody. */
16
+ assigneeId: string;
17
+ about: TaskEditorAbout;
18
+ patientId: string;
19
+ /** A real id from the host list, never a typed name. */
20
+ companyId: string;
21
+ }
22
+ interface UiState {
23
+ showError: boolean;
24
+ saving: boolean;
25
+ saveError: string | undefined;
26
+ done: boolean;
27
+ confirmedDone: boolean;
28
+ donePending: boolean;
29
+ doneError: string | undefined;
30
+ deleting: boolean;
31
+ deleteError: string | undefined;
32
+ confirmDeleteOpen: boolean;
33
+ /** A save or delete landed: the form stops writing until a new session. */
34
+ accepted: boolean;
35
+ }
36
+ export declare function aboutOf(task: {
37
+ patientId?: string;
38
+ companyId?: string;
39
+ operatorId?: string;
40
+ }): TaskEditorAbout;
41
+ export interface UseTaskEditorFormOptions {
42
+ mode: 'create' | 'edit';
43
+ taskId: string | undefined;
44
+ initialDate: Date | undefined;
45
+ /** Panel: always. Subview: while `open`. A false-to-true change starts a
46
+ * fresh session. */
47
+ active: boolean;
48
+ taskTypes: ReadonlyArray<TaskEditorTaskType>;
49
+ assignees: ReadonlyArray<TaskEditorOption>;
50
+ companies: ReadonlyArray<TaskEditorOption>;
51
+ operators: ReadonlyArray<TaskEditorOption>;
52
+ patients: ReadonlyArray<TaskEditorPatient>;
53
+ /** Names the host's search has returned, by id: a patient picked from
54
+ * search stays nameable, and settable by the agent. */
55
+ searchedPatients: ReadonlyMap<string, string>;
56
+ resolvePatientLabel: TaskEditorProps['resolvePatientLabel'];
57
+ loadTask: TaskEditorProps['loadTask'];
58
+ onCreateTask: TaskEditorProps['onCreateTask'];
59
+ onUpdateTask: TaskEditorProps['onUpdateTask'];
60
+ onDeleteTask: TaskEditorProps['onDeleteTask'];
61
+ onSetTaskDone: TaskEditorProps['onSetTaskDone'];
62
+ onSaved: TaskEditorProps['onSaved'];
63
+ onDeleted: TaskEditorProps['onDeleted'];
64
+ readOnly: boolean;
65
+ /** The privacy notice covers an existing task: nothing loads. */
66
+ withheld: boolean;
67
+ /** The patient shows as the mask, so none may be picked. */
68
+ maskPatient: boolean;
69
+ /** Shown when a rejection carries no message of its own. */
70
+ fallbackError: string;
71
+ }
72
+ export declare function useTaskEditorForm({ mode, taskId, initialDate, active, taskTypes, assignees, companies, operators, patients, searchedPatients, resolvePatientLabel, loadTask, onCreateTask, onUpdateTask, onDeleteTask, onSetTaskDone, onSaved, onDeleted, readOnly, withheld, maskPatient, fallbackError, }: UseTaskEditorFormOptions): {
73
+ status: TaskEditorStatus;
74
+ loadError: string | undefined;
75
+ retry: () => void;
76
+ fields: TaskEditorFields;
77
+ patchFields: (next: Partial<TaskEditorFields>) => void;
78
+ stored: TaskEditorTask | undefined;
79
+ chosenTypeId: string;
80
+ canSave: boolean;
81
+ /** What the agent's `canSave` reports: the button's rule plus the
82
+ * status, the seam and a save that has not landed yet. */
83
+ agentCanSave: boolean;
84
+ showSave: boolean;
85
+ showDelete: boolean;
86
+ showDone: boolean;
87
+ ui: UiState;
88
+ patchUi: (next: Partial<UiState>) => void;
89
+ /** True once a save or delete landed in this session. */
90
+ isAccepted: () => boolean;
91
+ /** A save or delete is in flight: closing now would lose its outcome. */
92
+ isBusy: () => boolean;
93
+ submit: () => Promise<void>;
94
+ setDone: (next: boolean) => Promise<void>;
95
+ remove: () => Promise<void>;
96
+ applyPatch: (patch: TaskEditorFieldPatch) => void;
97
+ draftState: () => TaskEditorDraftState;
98
+ };
99
+ export type TaskEditorForm = ReturnType<typeof useTaskEditorForm>;
100
+ export {};
101
+ //# sourceMappingURL=use-task-editor-form.d.ts.map
@@ -1,4 +1,4 @@
1
- import { T as s, t } from "../../_chunks/task-tray-DIwjAIes.js";
1
+ import { T as s, t } from "../../_chunks/task-tray-JA-qp_pB.js";
2
2
  export {
3
3
  s as TaskTray,
4
4
  t as taskTrayAgent
@@ -1,4 +1,4 @@
1
1
  export { TasksPanel } from './tasks-panel';
2
- export type { TasksPanelProps, TasksPanelHandle, TasksPanelItem, TasksPanelSize, TasksPanelScope, TasksPanelStatusFilter, } from './tasks-panel';
2
+ export type { TasksPanelProps, TasksPanelHandle, TasksPanelItem, TasksPanelSize, TasksPanelScope, TasksPanelStatusFilter, TasksPanelFiltering, TasksPanelFilters, } from './tasks-panel';
3
3
  export { tasksPanelAgent } from './tasks-panel.agent';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- import { T as e, t } from "../../_chunks/tasks-panel-DncuBPIZ.js";
1
+ import { T as e, t } from "../../_chunks/tasks-panel-C_dVDQKJ.js";
2
2
  export {
3
3
  e as TasksPanel,
4
4
  t as tasksPanelAgent
@@ -5,6 +5,15 @@ import { type TaskItem } from '../task-card';
5
5
  export type TasksPanelScope = 'patient' | 'mine';
6
6
  /** Status segment value. Mirrors the platform `done` filter (default `todo`). */
7
7
  export type TasksPanelStatusFilter = 'todo' | 'done' | 'all';
8
+ /** Who filters the list: the panel ('client') or the host ('server'). */
9
+ export type TasksPanelFiltering = 'client' | 'server';
10
+ /** The whole filter state, as `onFiltersChange` reports it. */
11
+ export interface TasksPanelFilters {
12
+ status: TasksPanelStatusFilter;
13
+ type: string | null;
14
+ assignee: string | null;
15
+ overdueOnly: boolean;
16
+ }
8
17
  /**
9
18
  * Panel-local extension of the card's `TaskItem`. The extra fields here drive
10
19
  * bucketing + filtering; the row's display fields (the typed link via
@@ -20,7 +29,8 @@ export interface TasksPanelItem extends TaskItem {
20
29
  type?: string;
21
30
  /**
22
31
  * Localised type label, required for CUSTOM types (the panel resolves system
23
- * keys itself). Falls back to the system label for the four known keys.
32
+ * keys itself). Falls back to the system label for the four known keys,
33
+ * then to "Other". The raw key is never shown.
24
34
  */
25
35
  typeLabel?: string;
26
36
  /**
@@ -40,8 +50,15 @@ export interface TasksPanelHandle {
40
50
  status: string;
41
51
  }>;
42
52
  selectItem: (id: string) => void;
43
- toggleDone: (id: string) => void;
44
- dismiss: (id: string) => void;
53
+ /**
54
+ * Same path as a click on the done box. Resolves once the host has
55
+ * answered (in client mode, after the row's fade) and rejects if the
56
+ * host refuses, or if nothing was started: an unknown id, a read-only
57
+ * panel, no `onToggleDone`, or a change to that task already pending.
58
+ */
59
+ toggleDone: (id: string) => Promise<void>;
60
+ /** Same path as the row's dismiss action, and settles in the same way. */
61
+ dismiss: (id: string) => Promise<void>;
45
62
  jumpToOverdue: () => void;
46
63
  setFilter: (next: {
47
64
  status?: TasksPanelStatusFilter;
@@ -69,21 +86,52 @@ export interface TasksPanelProps extends Omit<HTMLAttributes<HTMLElement>, 'onCl
69
86
  nowIso?: string;
70
87
  /** Panel heading. Defaults to the localised "Tasks". */
71
88
  title?: string;
89
+ /** PanelHeader glyph. Default <ClipboardCheck />. */
90
+ icon?: ReactNode;
91
+ /**
92
+ * A total the host counted, shown as given after the title ("Tasks (42)")
93
+ * and read as "42 tasks". Omitted: nothing shown. The panel never
94
+ * computes it.
95
+ */
96
+ totalCount?: number;
72
97
  /** Visual density forwarded to each TaskCard. Defaults to `sm`, matching the note and appointment rows. */
73
98
  size?: 'xs' | 'sm' | 'md';
99
+ /**
100
+ * 'client' (default): the panel filters `items`. 'server': the host has
101
+ * already filtered and paged `items`; the panel shows them as given. In
102
+ * server mode a filter control shows only when `onFiltersChange` or its
103
+ * own `on…Change` is set, since only the host can re-query.
104
+ */
105
+ filtering?: TasksPanelFiltering;
74
106
  /** Fires when a row is activated. */
75
107
  onOpenTask?: (item: TasksPanelItem) => void;
76
- /** Fires when the host should toggle a task's done state. */
77
- onToggleDone?: (item: TasksPanelItem) => void;
108
+ /**
109
+ * Fires when the host should set a task's done state to `nextDone`. In
110
+ * server mode it fires on the click. In client mode it fires on the click
111
+ * for a row that stays in view, and once the row has faded for one that
112
+ * leaves. Either way, the box ignores clicks until a returned promise
113
+ * settles, and a promise that rejects puts the row back, unticked. The
114
+ * panel does not announce a refusal: report it yourself (for example
115
+ * `toastError` with a translated message) and rethrow, so the row still
116
+ * rolls back.
117
+ */
118
+ onToggleDone?: (item: TasksPanelItem, nextDone: boolean) => void | Promise<void>;
78
119
  /** Fires when the host should open the task editor. Omit to hide the per-row edit action. */
79
120
  onEditTask?: (item: TasksPanelItem) => void;
80
- /** Fires when the host should dismiss / remove a task. Omit to hide the per-row dismiss action. */
81
- onDismissTask?: (item: TasksPanelItem) => void;
121
+ /**
122
+ * Fires when the host should dismiss / remove a task. Omit to hide the
123
+ * per-row dismiss action. In server mode it fires on the click, in client
124
+ * mode once the row has faded. A returned promise that rejects restores
125
+ * the row. The panel does not announce a refusal: report it yourself and
126
+ * rethrow, as for `onToggleDone`.
127
+ */
128
+ onDismissTask?: (item: TasksPanelItem) => void | Promise<void>;
82
129
  /** Fires when the header "Add" affordance is activated. Omit to hide it. */
83
130
  onAddTask?: () => void;
84
131
  /**
85
132
  * Read-only mode — hides every write affordance (toggle / edit / dismiss /
86
- * add). Mirrors the platform gating writes behind `practice_task_edit`.
133
+ * add), and the handle's `toggleDone` and `dismiss` reject without calling
134
+ * the host. Mirrors the platform gating writes behind `practice_task_edit`.
87
135
  */
88
136
  readOnly?: boolean;
89
137
  /**
@@ -92,6 +140,13 @@ export interface TasksPanelProps extends Omit<HTMLAttributes<HTMLElement>, 'onCl
92
140
  * is always prepended by the panel). Ignored when `readOnly`.
93
141
  */
94
142
  renderItemActions?: (item: TasksPanelItem) => ReactNode;
143
+ /**
144
+ * Extra per-row actions, rendered before the toggle / edit / dismiss
145
+ * actions (or before `renderItemActions`, which still replaces those).
146
+ * Not a task write, so `readOnly` does not hide them: withhold them from
147
+ * the host side when they do not apply.
148
+ */
149
+ renderItemExtraActions?: (item: TasksPanelItem) => ReactNode;
95
150
  /** Controlled scope segment. */
96
151
  scope?: TasksPanelScope;
97
152
  /** Uncontrolled initial scope. Default `'patient'` when both scopes are available, else the only one. */
@@ -100,18 +155,35 @@ export interface TasksPanelProps extends Omit<HTMLAttributes<HTMLElement>, 'onCl
100
155
  onScopeChange?: (next: TasksPanelScope) => void;
101
156
  /** Which scopes the segment offers. Omit ⇒ no scope segment (single-scope panel). */
102
157
  availableScopes?: TasksPanelScope[];
103
- /** Load the next page — fired when the bottom edge is reached and via the footer button. */
158
+ /** Load the next page — fired once per page when the bottom edge is reached, and via the footer button. */
104
159
  onLoadMore?: () => void;
105
- /** Whether more tasks exist. Defaults to `true` when `onLoadMore` is set. */
160
+ /** Whether more tasks exist. Defaults to `true` when `onLoadMore` is set (client mode only; server mode needs `true`). */
106
161
  hasMore?: boolean;
107
162
  /** Show the bottom loading row while the next page is fetched. */
108
163
  loadingMore?: boolean;
109
- /** Full-panel initial loading state (skeleton rows in the body). */
164
+ /** Loading state. Skeleton rows while there are none to show; in server mode, rows already shown stay. */
110
165
  loading?: boolean;
111
166
  /** Error surface — `true` for the default error EmptyState, or a custom node. */
112
167
  error?: boolean | ReactNode;
113
- /** Show the filter header (status segment + type / assignee selects + overdue toggle). Default `true`. */
168
+ /** Adds a Retry action to the default error state (`error === true`). */
169
+ onRetry?: () => void;
170
+ /**
171
+ * Show the filter header (status segment + type / assignee selects +
172
+ * overdue toggle). Default `true`. In server mode each control also needs
173
+ * `onFiltersChange` or its own `on…Change`.
174
+ */
114
175
  showFilters?: boolean;
176
+ /**
177
+ * The host's default query: the uncontrolled start, what Clear filters
178
+ * returns to, and what server mode judges "filtered empty" against.
179
+ * Absent: To do, any type, anyone, not overdue-only.
180
+ */
181
+ defaultFilters?: TasksPanelFilters;
182
+ /**
183
+ * Once per user action, with the whole next filter state. Never fires
184
+ * when nothing changed. Fires in both modes.
185
+ */
186
+ onFiltersChange?: (next: TasksPanelFilters) => void;
115
187
  /** Controlled status segment. */
116
188
  statusFilter?: TasksPanelStatusFilter;
117
189
  /** Uncontrolled initial status segment. Default `'todo'` (the platform default). */
@@ -1,4 +1,4 @@
1
- import { T as o, t } from "../../_chunks/theme-toggle-BP0XRGMM.js";
1
+ import { T as o, t } from "../../_chunks/theme-toggle-LUBxlNDm.js";
2
2
  export {
3
3
  o as ThemeToggle,
4
4
  t as themeToggleAgent
@@ -1,4 +1,4 @@
1
- import { T as s, t as o, a as r, b as e, c as n, d as c } from "../../_chunks/toast-ZZfhA5u0.js";
1
+ import { T as s, t as o, a as r, b as e, c as n, d as c } from "../../_chunks/toast-CT8hjr9r.js";
2
2
  import { t as g } from "../../_chunks/toast.agent-DNQ0JYGv.js";
3
3
  export {
4
4
  s as Toaster,
@@ -1,4 +1,4 @@
1
- import { T as t, t as o } from "../../_chunks/token-insert-menu-A9B5AJw6.js";
1
+ import { T as t, t as o } from "../../_chunks/token-insert-menu-klwbxVKh.js";
2
2
  export {
3
3
  t as TokenInsertMenu,
4
4
  o as tokenInsertMenuAgent
@@ -1,4 +1,4 @@
1
- import { T as l, t } from "../../_chunks/tool-rail-CCFqDfAn.js";
1
+ import { T as l, t } from "../../_chunks/tool-rail-DEeX4PdN.js";
2
2
  export {
3
3
  l as ToolRail,
4
4
  t as toolRailAgent
@@ -1,4 +1,4 @@
1
- import { T as s, t, r as e } from "../../_chunks/tooth-scheme-DPAq0vQK.js";
1
+ import { T as s, t, r as e } from "../../_chunks/tooth-scheme-BkjhkI8g.js";
2
2
  import { C as i, a as T, b as S, c as l, d as r, e as I, F as O, f as N, g as _, h as c, I as E, P as C, i as A, S as m, j as L, k as d, l as h, m as D, n as F, T as y, o as P, p as b, q as R, r as U, s as p, t as M, u, v as K, w as f, x as B, y as Y, z as H, A as g, B as z, D as w, E as x, G as V, H as k, J as G, K as j, L as q, M as v, N as J, O as Q, Q as W, R as X, U as Z, V as $, W as aa, X as oa, Y as sa, Z as ta, _ as ea, $ as na } from "../../_chunks/tooth-data-DR8Kdnup.js";
3
3
  export {
4
4
  i as CONDITION_COLORS,
@@ -1,4 +1,4 @@
1
- import { T as r } from "../../_chunks/treatment-receipt-DU0OewqH.js";
1
+ import { T as r } from "../../_chunks/treatment-receipt-C-gWZ6uv.js";
2
2
  import { t as m } from "../../_chunks/treatment-receipt.agent-bpFm2RPH.js";
3
3
  export {
4
4
  r as TreatmentReceipt,
@@ -1,4 +1,4 @@
1
- import { C as r, U as t, a as U, b as e, c as n } from "../../_chunks/unit-converter-C-LpGzrN.js";
1
+ import { C as r, U as t, a as U, b as e, c as n } from "../../_chunks/unit-converter-Dp_KDxE6.js";
2
2
  export {
3
3
  r as CATEGORIES,
4
4
  t as UNITS,
@@ -1,4 +1,4 @@
1
- import { V as r, v as s } from "../../_chunks/variables-menu-vXUaSBj4.js";
1
+ import { V as r, v as s } from "../../_chunks/variables-menu-aJLKJ_cu.js";
2
2
  export {
3
3
  r as VariablesMenu,
4
4
  s as variablesMenuAgent
@@ -1,4 +1,4 @@
1
- import { W as n } from "../../_chunks/warning-stack-C0glSB7p.js";
1
+ import { W as n } from "../../_chunks/warning-stack-CEgYkI1z.js";
2
2
  export {
3
3
  n as WarningStack
4
4
  };
@@ -1,4 +1,4 @@
1
- import { W as r, w as t } from "../../_chunks/widget-picker-B1sj6uyf.js";
1
+ import { W as r, w as t } from "../../_chunks/widget-picker-CilQvcNL.js";
2
2
  export {
3
3
  r as WidgetPicker,
4
4
  t as widgetPickerAgent
@@ -1,4 +1,4 @@
1
- import { C as r, W as e, a as s, b as d, c as w, i as t, l as f, m as l, r as i, w as k, d as n, e as A, f as C } from "../../_chunks/workflow-map-DhR_h5yw.js";
1
+ import { C as r, W as e, a as s, b as d, c as w, i as t, l as f, m as l, r as i, w as k, d as n, e as A, f as C } from "../../_chunks/workflow-map-qGkQTNvS.js";
2
2
  export {
3
3
  r as CORE_PATIENT_FIELDS,
4
4
  e as WorkflowCard,