@alfadocs/ui-kit 0.69.0 → 0.71.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 (425) hide show
  1. package/dist/_chunks/address-fields-CPbFJ8e8.js +246 -0
  2. package/dist/_chunks/{agenda-card-BxSFkqgY.js → agenda-card-BQ-IKAru.js} +2 -2
  3. package/dist/_chunks/{agenda-tray-g0kg7HwB.js → agenda-tray-CGXRk58j.js} +2 -2
  4. package/dist/_chunks/{ai-consent-banner-CXlsNX1c.js → ai-consent-banner-Be-h9mRI.js} +3 -3
  5. package/dist/_chunks/{ai-prompt-input-CuhTo9mh.js → ai-prompt-input-V4DdOeqv.js} +2 -2
  6. package/dist/_chunks/{alert-_mUKLmwA.js → alert-CHYZ96tR.js} +150 -96
  7. package/dist/_chunks/{alia-sidebar-B47qRQb5.js → alia-sidebar-DvIUzIX9.js} +107 -106
  8. package/dist/_chunks/{anamnesis-card-DRmE24OQ.js → anamnesis-card-DvYCa16e.js} +2 -2
  9. package/dist/_chunks/anatomy-scheme-CXSk11UJ.js +2445 -0
  10. package/dist/_chunks/annotation-marker-qt5R9WZX.js +120 -0
  11. package/dist/_chunks/{antenatal-schedule-timeline-35ebkcZT.js → antenatal-schedule-timeline-CwXrQRm1.js} +2 -2
  12. package/dist/_chunks/{app-frame-BYx1gcV7.js → app-frame-DIEMIC5V.js} +67 -56
  13. package/dist/_chunks/appointment-card-DVaeJNVB.js +294 -0
  14. package/dist/_chunks/appointment-timeline-PJgnrjFb.js +388 -0
  15. package/dist/_chunks/appointment-tray-B16QPGbm.js +193 -0
  16. package/dist/_chunks/{audio-recorder-DYXXnGug.js → audio-recorder-DNDsOLqO.js} +3 -3
  17. package/dist/_chunks/{autocomplete-DOeGouCL.js → autocomplete-BrONKN8l.js} +168 -146
  18. package/dist/_chunks/{badge-CqGsX32l.js → badge-DCOqV9mI.js} +32 -27
  19. package/dist/_chunks/{bishop-score-PJI3AXzA.js → bishop-score-Cym_TeQY.js} +3 -3
  20. package/dist/_chunks/{bmi-calculator-BZtIJ53x.js → bmi-calculator-zjeY4E7J.js} +2 -2
  21. package/dist/_chunks/{booking-C3VqFReX.js → booking-C7do4vaR.js} +7 -7
  22. package/dist/_chunks/{button-group-Ciq6J4IW.js → button-group-CvEnVzY7.js} +32 -35
  23. package/dist/_chunks/{care-plan-card-CvFGXa2z.js → care-plan-card-DzPDYgtK.js} +5 -5
  24. package/dist/_chunks/{care-plan-entry-card-C3E_gClk.js → care-plan-entry-card-CEnQy7YP.js} +5 -5
  25. package/dist/_chunks/care-plan-header-DcXFXWit.js +198 -0
  26. package/dist/_chunks/{chat-message-3V54YipB.js → chat-message-DzpcJR-q.js} +25 -23
  27. package/dist/_chunks/city-input-Dkgaak7I.js +169 -0
  28. package/dist/_chunks/clinical-note-card-BUvNMNGL.js +436 -0
  29. package/dist/_chunks/clipboard-list-S7s-MXQq.js +25 -0
  30. package/dist/_chunks/{combobox-Clum7gJ1.js → combobox-DnqSF0IH.js} +131 -114
  31. package/dist/_chunks/connection-status-CY1HV8Wg.js +108 -0
  32. package/dist/_chunks/{contact-profile-card-Dramqa9C.js → contact-profile-card-DDPwRFiP.js} +2 -2
  33. package/dist/_chunks/control-room-rail-FAQZrGVL.js +333 -0
  34. package/dist/_chunks/country-select-BwUZQvTa.js +709 -0
  35. package/dist/_chunks/{cycle-calculator-DmRGJNaT.js → cycle-calculator-CCmPwcBl.js} +2 -2
  36. package/dist/_chunks/{dependent-selector-CG_FOHya.js → dependent-selector-DUV4thxX.js} +2 -2
  37. package/dist/_chunks/{document-scanner-CTubA0-N.js → document-scanner-C_AxLooF.js} +3 -3
  38. package/dist/_chunks/{due-date-calculator-BTmsIQqD.js → due-date-calculator-Brdj-euS.js} +3 -3
  39. package/dist/_chunks/editable-currency-cell-renderer-CGELrkIj.js +410 -0
  40. package/dist/_chunks/email-input-DJ7EXklP.js +397 -0
  41. package/dist/_chunks/{entity-card-COhmqHly.js → entity-card-DmrgYSEX.js} +38 -20
  42. package/dist/_chunks/entity-summary-CaM1Y-xE.js +291 -0
  43. package/dist/_chunks/{fetal-weight-CRz7KE2D.js → fetal-weight-DNCkyeVo.js} +2 -2
  44. package/dist/_chunks/field-array-siUZzfYe.js +146 -0
  45. package/dist/_chunks/field-value-3jMM0uDx.js +415 -0
  46. package/dist/_chunks/{file-upload-5ScQd4fE.js → file-upload-DwZcAK8D.js} +2 -1
  47. package/dist/_chunks/{freemium-paywall-DZ2mBS3w.js → freemium-paywall-WYlNO7yT.js} +2 -2
  48. package/dist/_chunks/{gestational-age-calculator-BleUdhbI.js → gestational-age-calculator-DKzEV5Qi.js} +4 -4
  49. package/dist/_chunks/hash-CysBBS_N.js +17 -0
  50. package/dist/_chunks/{hcg-doubling-CnjDXX6U.js → hcg-doubling-C7bmuaU3.js} +2 -2
  51. package/dist/_chunks/iban-input-B0TWzR1R.js +436 -0
  52. package/dist/_chunks/icon-picker-0B7KhrF1.js +272 -0
  53. package/dist/_chunks/image-cropper-D9jqJy19.js +367 -0
  54. package/dist/_chunks/{actions-cell-renderer-DrcaxB0w.js → link-cell-renderer-De_SLjSq.js} +792 -668
  55. package/dist/_chunks/list-checks-BUs75d_o.js +18 -0
  56. package/dist/_chunks/lock-CKOIn0IK.js +15 -0
  57. package/dist/_chunks/{marketplace-app-shell-6T9W4Knl.js → marketplace-app-shell-BGqkywsi.js} +5 -5
  58. package/dist/_chunks/message-card-DsHFFiL1.js +319 -0
  59. package/dist/_chunks/{message-tray-DwrBLJlf.js → message-tray-C0a6CL1_.js} +172 -135
  60. package/dist/_chunks/{multi-select-BdHHDrRN.js → multi-select-WE4S9FIF.js} +75 -63
  61. package/dist/_chunks/nav-grid-9xphY3FM.js +169 -0
  62. package/dist/_chunks/notes-panel-DXiMfuvp.js +320 -0
  63. package/dist/_chunks/notification-card-BMqNzCIt.js +290 -0
  64. package/dist/_chunks/{notification-tray-Btb9oQeZ.js → notification-tray-BmUlCx3g.js} +201 -166
  65. package/dist/_chunks/{operator-hero-CP2Nhupm.js → operator-hero-BO8TqzX2.js} +3 -3
  66. package/dist/_chunks/panel-header-D313n_9-.js +105 -0
  67. package/dist/_chunks/patient-details-DgfTJimE.js +759 -0
  68. package/dist/_chunks/{patient-search-CBC_ySF6.js → patient-search-CSWQKOSP.js} +3 -3
  69. package/dist/_chunks/{patient-shell-DV3XEtIB.js → patient-shell-BMwsIKlW.js} +3 -3
  70. package/dist/_chunks/patient-summary-card-D4NdgYJB.js +452 -0
  71. package/dist/_chunks/patient-table-CERknpd8.js +1110 -0
  72. package/dist/_chunks/{payment-form-DvjwYVIT.js → payment-form-CxqIXqw7.js} +2 -2
  73. package/dist/_chunks/{payment-request-card-DioWKBUq.js → payment-request-card-Blf-MFNY.js} +125 -136
  74. package/dist/_chunks/{pdf-viewer-D6BPfW2D.js → pdf-viewer-QfebdLOd.js} +192 -214
  75. package/dist/_chunks/{periodontal-chart-card-BuDEMbHE.js → periodontal-chart-card-hRRJY1NN.js} +2 -2
  76. package/dist/_chunks/permission-matrix-Bw5oexUt.js +174 -0
  77. package/dist/_chunks/position-grid-CcvqHaKN.js +169 -0
  78. package/dist/_chunks/postal-code-input-UCOYuRY2.js +192 -0
  79. package/dist/_chunks/{practice-results-KrTHqZua.js → practice-results-El5Z-oVp.js} +4 -4
  80. package/dist/_chunks/{pregnancy-dating-DORUAOHB.js → pregnancy-dating-CunHrOpO.js} +4 -4
  81. package/dist/_chunks/{pregnancy-weight-gain-DVz4rr7-.js → pregnancy-weight-gain-BUNpTsH-.js} +2 -2
  82. package/dist/_chunks/{product-hub-panel-e6pW220e.js → product-hub-panel-DtU7KXxm.js} +257 -217
  83. package/dist/_chunks/province-select-D_TZvix3.js +261 -0
  84. package/dist/_chunks/{public-header.agent-DqkqA-ca.js → public-header.agent-TxmC_x1I.js} +2 -2
  85. package/dist/_chunks/radiograph-panel.agent-tWjN2nHX.js +553 -0
  86. package/dist/_chunks/reviews-panel-DxkSrgMl.js +559 -0
  87. package/dist/_chunks/rich-text-editor-C8tyGjfb.js +2621 -0
  88. package/dist/_chunks/{scroll-area-5wNK0Cyz.js → scroll-area-BZOvUhwQ.js} +2 -2
  89. package/dist/_chunks/{select-DMLG44F5.js → select-KsyRr8WH.js} +114 -102
  90. package/dist/_chunks/{sheet-BxsE7eQm.js → sheet-umkfZjF6.js} +53 -42
  91. package/dist/_chunks/{sidebar-DY9jGjgt.js → sidebar-QCp9wHNP.js} +125 -113
  92. package/dist/_chunks/{sign-document-B4DeRhTe.js → sign-document-By6hMOra.js} +2 -2
  93. package/dist/_chunks/{stepper-accordion-Dki6r9ZE.js → stepper-accordion-DC-H-8v4.js} +38 -48
  94. package/dist/_chunks/tab-bar-Bv9nGNdO.js +262 -0
  95. package/dist/_chunks/{tabs-BxcOziCo.js → tabs-CYZVKKDl.js} +2 -2
  96. package/dist/_chunks/task-card-DCdsI0ZT.js +189 -0
  97. package/dist/_chunks/{task-tray-qOEQflu4.js → task-tray-DNVejijD.js} +2 -2
  98. package/dist/_chunks/tasks-panel-C9odmawT.js +757 -0
  99. package/dist/_chunks/token-insert-menu-CFQqTe_n.js +147 -0
  100. package/dist/_chunks/tool-rail-BZx0-yIr.js +524 -0
  101. package/dist/_chunks/tooth-scheme-DJZtzfeY.js +2133 -0
  102. package/dist/_chunks/{transaction-chip-DK84XCBU.js → transaction-chip-CscoQbxF.js} +88 -61
  103. package/dist/_chunks/{transcript-panel-3THQX6nJ.js → transcript-panel-CHGHHHdT.js} +95 -83
  104. package/dist/_chunks/{unit-converter-YEpD9evj.js → unit-converter-CwlZbfdn.js} +2 -2
  105. package/dist/_chunks/use-clamp-overflow-DQE2kwZ9.js +20 -0
  106. package/dist/_chunks/use-overflow-collapse-BIOzKbni.js +32 -0
  107. package/dist/_chunks/use-persistent-state-nZwZAnE9.js +24 -0
  108. package/dist/_chunks/{warning-stack-BsgaEbL8.js → warning-stack--sTrrBDA.js} +86 -101
  109. package/dist/_chunks/{workflow-map-Bdam9pGp.js → workflow-map-M8MBBHQm.js} +107 -119
  110. package/dist/_chunks/zoom-out-CgVtf2Wx.js +29 -0
  111. package/dist/agent/index.js +5 -4
  112. package/dist/agent/types.d.ts +19 -2
  113. package/dist/agent-catalog.json +3325 -322
  114. package/dist/agent-i18n/en.json +314 -14
  115. package/dist/components/_shared/entity-card/entity-card.d.ts +6 -0
  116. package/dist/components/_shared/entity-card/index.d.ts +1 -1
  117. package/dist/components/_shared/field-value.d.ts +21 -0
  118. package/dist/components/_shared/field-visibility-cog.d.ts +20 -0
  119. package/dist/components/_shared/field-visibility.d.ts +36 -0
  120. package/dist/components/_shared/option.d.ts +2 -0
  121. package/dist/components/_shared/patient-fields.d.ts +119 -0
  122. package/dist/components/address-fields/address-fields.agent.d.ts +9 -0
  123. package/dist/components/address-fields/address-fields.d.ts +29 -0
  124. package/dist/components/address-fields/index.d.ts +5 -0
  125. package/dist/components/address-fields/index.js +6 -0
  126. package/dist/components/agenda-card/index.js +1 -1
  127. package/dist/components/agenda-tray/index.js +1 -1
  128. package/dist/components/ai-consent-banner/index.js +1 -1
  129. package/dist/components/ai-prompt-input/index.js +1 -1
  130. package/dist/components/alert/alert.d.ts +5 -0
  131. package/dist/components/alert/index.js +1 -1
  132. package/dist/components/anamnesis-card/index.js +1 -1
  133. package/dist/components/anatomy-scheme/anatomy-face-paths.d.ts +15 -0
  134. package/dist/components/anatomy-scheme/anatomy-muscle-paths.d.ts +20 -0
  135. package/dist/components/anatomy-scheme/anatomy-scheme-data.d.ts +121 -0
  136. package/dist/components/anatomy-scheme/anatomy-scheme.agent.d.ts +6 -0
  137. package/dist/components/anatomy-scheme/anatomy-scheme.d.ts +69 -0
  138. package/dist/components/anatomy-scheme/index.d.ts +6 -0
  139. package/dist/components/anatomy-scheme/index.js +17 -0
  140. package/dist/components/annotation-marker/annotation-marker.d.ts +33 -0
  141. package/dist/components/annotation-marker/index.d.ts +3 -0
  142. package/dist/components/annotation-marker/index.js +7 -0
  143. package/dist/components/app-frame/app-frame.d.ts +2 -2
  144. package/dist/components/app-frame/index.js +1 -1
  145. package/dist/components/appointment-card/appointment-card.d.ts +25 -1
  146. package/dist/components/appointment-card/index.js +6 -5
  147. package/dist/components/appointment-timeline/appointment-timeline.agent.d.ts +4 -0
  148. package/dist/components/appointment-timeline/appointment-timeline.d.ts +66 -0
  149. package/dist/components/appointment-timeline/index.d.ts +4 -0
  150. package/dist/components/appointment-timeline/index.js +6 -0
  151. package/dist/components/audio-recorder/index.js +1 -1
  152. package/dist/components/autocomplete/autocomplete.d.ts +10 -0
  153. package/dist/components/autocomplete/index.js +1 -1
  154. package/dist/components/badge/badge.d.ts +6 -2
  155. package/dist/components/badge/index.js +1 -1
  156. package/dist/components/bishop-score/index.js +1 -1
  157. package/dist/components/bmi-calculator/index.js +1 -1
  158. package/dist/components/booking/index.js +1 -1
  159. package/dist/components/button-group/index.js +1 -1
  160. package/dist/components/care-plan-card/index.js +1 -1
  161. package/dist/components/care-plan-entry-card/index.js +1 -1
  162. package/dist/components/care-plan-header/care-plan-header.agent.d.ts +4 -0
  163. package/dist/components/care-plan-header/care-plan-header.d.ts +111 -0
  164. package/dist/components/care-plan-header/index.d.ts +4 -0
  165. package/dist/components/care-plan-header/index.js +6 -0
  166. package/dist/components/chat-message/index.js +1 -1
  167. package/dist/components/city-input/city-input.agent.d.ts +8 -0
  168. package/dist/components/city-input/city-input.d.ts +57 -0
  169. package/dist/components/city-input/index.d.ts +5 -0
  170. package/dist/components/city-input/index.js +6 -0
  171. package/dist/components/clinical-note-card/clinical-note-card.d.ts +21 -1
  172. package/dist/components/clinical-note-card/index.js +1 -1
  173. package/dist/components/combobox/combobox.d.ts +17 -0
  174. package/dist/components/combobox/index.js +1 -1
  175. package/dist/components/connection-status/connection-status.agent.d.ts +4 -0
  176. package/dist/components/connection-status/connection-status.d.ts +36 -0
  177. package/dist/components/connection-status/index.d.ts +4 -0
  178. package/dist/components/connection-status/index.js +6 -0
  179. package/dist/components/contact-profile-card/index.js +1 -1
  180. package/dist/components/control-room-rail/control-room-context.d.ts +53 -0
  181. package/dist/components/control-room-rail/control-room-rail.agent.d.ts +4 -0
  182. package/dist/components/control-room-rail/control-room-rail.d.ts +35 -0
  183. package/dist/components/control-room-rail/index.d.ts +6 -0
  184. package/dist/components/control-room-rail/index.js +10 -0
  185. package/dist/components/counter/counter.d.ts +1 -1
  186. package/dist/components/country-select/country-select.agent.d.ts +8 -0
  187. package/dist/components/country-select/country-select.d.ts +51 -0
  188. package/dist/components/country-select/index.d.ts +6 -0
  189. package/dist/components/country-select/index.js +9 -0
  190. package/dist/components/country-select/iso-3166.d.ts +15 -0
  191. package/dist/components/cycle-calculator/index.js +1 -1
  192. package/dist/components/data-table/cell-renderers/actions-cell-renderer.d.ts +18 -0
  193. package/dist/components/data-table/cell-renderers/reorder-cell-renderer.d.ts +34 -0
  194. package/dist/components/data-table/index.d.ts +3 -1
  195. package/dist/components/data-table/index.js +35 -32
  196. package/dist/components/dependent-selector/index.js +1 -1
  197. package/dist/components/document-scanner/index.js +1 -1
  198. package/dist/components/due-date-calculator/index.js +2 -2
  199. package/dist/components/email-input/index.js +1 -1
  200. package/dist/components/entity-summary/entity-summary.agent.d.ts +4 -0
  201. package/dist/components/entity-summary/entity-summary.d.ts +92 -0
  202. package/dist/components/entity-summary/index.d.ts +3 -0
  203. package/dist/components/entity-summary/index.js +5 -0
  204. package/dist/components/fetal-weight/index.js +1 -1
  205. package/dist/components/field-array/field-array.agent.d.ts +4 -0
  206. package/dist/components/field-array/field-array.d.ts +45 -0
  207. package/dist/components/field-array/index.d.ts +4 -0
  208. package/dist/components/field-array/index.js +6 -0
  209. package/dist/components/file-upload/index.js +1 -1
  210. package/dist/components/freemium-paywall/freemium-paywall.d.ts +1 -1
  211. package/dist/components/freemium-paywall/index.js +1 -1
  212. package/dist/components/gestational-age-calculator/index.js +1 -1
  213. package/dist/components/hcg-doubling/index.js +1 -1
  214. package/dist/components/iban-input/iban-input.agent.d.ts +4 -0
  215. package/dist/components/iban-input/iban-input.d.ts +51 -0
  216. package/dist/components/iban-input/index.d.ts +5 -0
  217. package/dist/components/iban-input/index.js +13 -0
  218. package/dist/components/iban-input/is-valid-iban.d.ts +31 -0
  219. package/dist/components/icon-picker/icon-picker.agent.d.ts +4 -0
  220. package/dist/components/icon-picker/icon-picker.d.ts +41 -0
  221. package/dist/components/icon-picker/index.d.ts +4 -0
  222. package/dist/components/icon-picker/index.js +6 -0
  223. package/dist/components/image-cropper/crop-geometry.d.ts +30 -0
  224. package/dist/components/image-cropper/image-cropper.agent.d.ts +4 -0
  225. package/dist/components/image-cropper/image-cropper.d.ts +32 -0
  226. package/dist/components/image-cropper/index.d.ts +5 -0
  227. package/dist/components/image-cropper/index.js +11 -0
  228. package/dist/components/index.d.ts +25 -1
  229. package/dist/components/message-card/index.js +1 -1
  230. package/dist/components/message-card/message-card.d.ts +14 -0
  231. package/dist/components/message-tray/index.js +1 -1
  232. package/dist/components/message-tray/message-tray.d.ts +4 -0
  233. package/dist/components/multi-select/index.js +1 -1
  234. package/dist/components/nav-grid/index.d.ts +4 -0
  235. package/dist/components/nav-grid/index.js +7 -0
  236. package/dist/components/nav-grid/nav-grid.agent.d.ts +4 -0
  237. package/dist/components/nav-grid/nav-grid.d.ts +41 -0
  238. package/dist/components/notes-panel/index.d.ts +3 -0
  239. package/dist/components/notes-panel/index.js +5 -0
  240. package/dist/components/notes-panel/notes-panel.agent.d.ts +4 -0
  241. package/dist/components/notes-panel/notes-panel.d.ts +94 -0
  242. package/dist/components/notification-card/index.js +1 -1
  243. package/dist/components/notification-card/notification-card.d.ts +15 -0
  244. package/dist/components/notification-tray/index.js +1 -1
  245. package/dist/components/notification-tray/notification-tray.d.ts +4 -0
  246. package/dist/components/operator-hero/index.js +1 -1
  247. package/dist/components/panel-header/index.d.ts +3 -0
  248. package/dist/components/panel-header/index.js +7 -0
  249. package/dist/components/panel-header/panel-header.d.ts +41 -0
  250. package/dist/components/patient-details/index.d.ts +5 -0
  251. package/dist/components/patient-details/index.js +6 -0
  252. package/dist/components/patient-details/patient-details.agent.d.ts +4 -0
  253. package/dist/components/patient-details/patient-details.d.ts +96 -0
  254. package/dist/components/patient-search/index.js +1 -1
  255. package/dist/components/patient-summary-card/index.js +1 -1
  256. package/dist/components/patient-summary-card/patient-summary-card.d.ts +40 -1
  257. package/dist/components/patient-table/columns.d.ts +69 -40
  258. package/dist/components/patient-table/index.d.ts +2 -6
  259. package/dist/components/patient-table/index.js +8 -9
  260. package/dist/components/patient-table/patient-table.d.ts +38 -4
  261. package/dist/components/patient-table/types.d.ts +52 -2
  262. package/dist/components/patient-table/use-responsive-columns.d.ts +8 -6
  263. package/dist/components/payment-card/index.js +1 -1
  264. package/dist/components/payment-form/index.js +1 -1
  265. package/dist/components/pdf-viewer/index.js +1 -1
  266. package/dist/components/periodontal-chart-card/index.js +1 -1
  267. package/dist/components/permission-matrix/index.d.ts +4 -0
  268. package/dist/components/permission-matrix/index.js +7 -0
  269. package/dist/components/permission-matrix/permission-matrix.agent.d.ts +4 -0
  270. package/dist/components/permission-matrix/permission-matrix.d.ts +47 -0
  271. package/dist/components/position-grid/index.d.ts +4 -0
  272. package/dist/components/position-grid/index.js +7 -0
  273. package/dist/components/position-grid/position-grid.agent.d.ts +4 -0
  274. package/dist/components/position-grid/position-grid.d.ts +39 -0
  275. package/dist/components/postal-code-input/index.d.ts +5 -0
  276. package/dist/components/postal-code-input/index.js +6 -0
  277. package/dist/components/postal-code-input/postal-code-input.agent.d.ts +8 -0
  278. package/dist/components/postal-code-input/postal-code-input.d.ts +27 -0
  279. package/dist/components/practice-results/index.js +1 -1
  280. package/dist/components/pregnancy-dating/index.js +1 -1
  281. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  282. package/dist/components/product-hub-tray/index.js +1 -1
  283. package/dist/components/product-hub-tray/product-hub-tray.d.ts +13 -1
  284. package/dist/components/province-select/index.d.ts +6 -0
  285. package/dist/components/province-select/index.js +7 -0
  286. package/dist/components/province-select/it-provinces.d.ts +8 -0
  287. package/dist/components/province-select/province-select.agent.d.ts +8 -0
  288. package/dist/components/province-select/province-select.d.ts +38 -0
  289. package/dist/components/public-footer/public-footer.d.ts +1 -1
  290. package/dist/components/public-header/index.js +1 -1
  291. package/dist/components/radiograph-panel/index.d.ts +4 -0
  292. package/dist/components/radiograph-panel/index.js +7 -0
  293. package/dist/components/radiograph-panel/radiograph-panel.agent.d.ts +13 -0
  294. package/dist/components/radiograph-panel/radiograph-panel.d.ts +36 -0
  295. package/dist/components/reviews-panel/index.js +1 -1
  296. package/dist/components/rich-text-editor/editor-toolbar.d.ts +17 -0
  297. package/dist/components/rich-text-editor/index.js +1 -1
  298. package/dist/components/scroll-area/index.js +1 -1
  299. package/dist/components/select/index.js +1 -1
  300. package/dist/components/select/select.d.ts +8 -2
  301. package/dist/components/sheet/index.js +1 -1
  302. package/dist/components/sidebar/index.js +2 -2
  303. package/dist/components/sign-document/index.js +1 -1
  304. package/dist/components/skeleton/skeleton.d.ts +1 -1
  305. package/dist/components/stepper-accordion/index.js +1 -1
  306. package/dist/components/tab-bar/index.js +1 -1
  307. package/dist/components/tab-bar/tab-bar.d.ts +18 -1
  308. package/dist/components/tabs/index.js +1 -1
  309. package/dist/components/task-card/index.js +1 -1
  310. package/dist/components/task-card/task-card.d.ts +14 -6
  311. package/dist/components/task-tray/index.js +1 -1
  312. package/dist/components/tasks-panel/index.d.ts +4 -0
  313. package/dist/components/tasks-panel/index.js +6 -0
  314. package/dist/components/tasks-panel/tasks-panel.agent.d.ts +4 -0
  315. package/dist/components/tasks-panel/tasks-panel.d.ts +152 -0
  316. package/dist/components/token-insert-menu/index.d.ts +4 -0
  317. package/dist/components/token-insert-menu/index.js +6 -0
  318. package/dist/components/token-insert-menu/token-insert-menu.agent.d.ts +4 -0
  319. package/dist/components/token-insert-menu/token-insert-menu.d.ts +33 -0
  320. package/dist/components/tool-rail/index.d.ts +4 -0
  321. package/dist/components/tool-rail/index.js +6 -0
  322. package/dist/components/tool-rail/tool-rail.agent.d.ts +4 -0
  323. package/dist/components/tool-rail/tool-rail.d.ts +160 -0
  324. package/dist/components/tooth-scheme/index.d.ts +2 -2
  325. package/dist/components/tooth-scheme/index.js +30 -23
  326. package/dist/components/tooth-scheme/tooth-data.d.ts +112 -1
  327. package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts +2 -2
  328. package/dist/components/tooth-scheme/tooth-scheme.d.ts +84 -11
  329. package/dist/components/transaction-chip/index.js +1 -1
  330. package/dist/components/transaction-chip/transaction-chip.d.ts +2 -2
  331. package/dist/components/transcript-panel/index.js +1 -1
  332. package/dist/components/transcript-panel/transcript-panel.d.ts +2 -2
  333. package/dist/components/unit-converter/index.js +1 -1
  334. package/dist/components/warning-stack/index.js +1 -1
  335. package/dist/components/warning-stack/warning-stack.d.ts +10 -7
  336. package/dist/components/workflow/index.js +1 -1
  337. package/dist/hooks/index.d.ts +1 -0
  338. package/dist/hooks/index.js +24 -22
  339. package/dist/hooks/use-clamp-overflow.d.ts +19 -0
  340. package/dist/hooks/use-edge-resize.d.ts +2 -2
  341. package/dist/hooks/use-overflow-collapse.d.ts +46 -0
  342. package/dist/hooks/use-persistent-state.d.ts +7 -1
  343. package/dist/hooks/use-scroll-overflow.d.ts +36 -0
  344. package/dist/i18n/locales/ar.d.ts +475 -26
  345. package/dist/i18n/locales/ar.js +478 -31
  346. package/dist/i18n/locales/de.d.ts +475 -26
  347. package/dist/i18n/locales/de.js +480 -31
  348. package/dist/i18n/locales/el.d.ts +475 -26
  349. package/dist/i18n/locales/el.js +485 -31
  350. package/dist/i18n/locales/en.d.ts +476 -34
  351. package/dist/i18n/locales/en.js +492 -39
  352. package/dist/i18n/locales/es.d.ts +475 -26
  353. package/dist/i18n/locales/es.js +477 -31
  354. package/dist/i18n/locales/fr.d.ts +475 -26
  355. package/dist/i18n/locales/fr.js +480 -31
  356. package/dist/i18n/locales/hi.d.ts +475 -26
  357. package/dist/i18n/locales/hi.js +476 -31
  358. package/dist/i18n/locales/it.d.ts +475 -26
  359. package/dist/i18n/locales/it.js +480 -31
  360. package/dist/i18n/locales/ja.d.ts +475 -26
  361. package/dist/i18n/locales/ja.js +481 -31
  362. package/dist/i18n/locales/nl.d.ts +475 -26
  363. package/dist/i18n/locales/nl.js +473 -31
  364. package/dist/i18n/locales/pl.d.ts +475 -26
  365. package/dist/i18n/locales/pl.js +481 -31
  366. package/dist/i18n/locales/pt.d.ts +475 -26
  367. package/dist/i18n/locales/pt.js +485 -31
  368. package/dist/i18n/locales/ro.d.ts +475 -26
  369. package/dist/i18n/locales/ro.js +485 -31
  370. package/dist/i18n/locales/ru.d.ts +475 -26
  371. package/dist/i18n/locales/ru.js +478 -31
  372. package/dist/i18n/locales/sq.d.ts +475 -26
  373. package/dist/i18n/locales/sq.js +482 -31
  374. package/dist/i18n/locales/sv.d.ts +475 -26
  375. package/dist/i18n/locales/sv.js +480 -31
  376. package/dist/i18n/locales/tr.d.ts +475 -26
  377. package/dist/i18n/locales/tr.js +478 -31
  378. package/dist/i18n/locales/zh.d.ts +475 -26
  379. package/dist/i18n/locales/zh.js +473 -31
  380. package/dist/index.js +826 -709
  381. package/dist/locales/ar.json +480 -31
  382. package/dist/locales/de.json +480 -31
  383. package/dist/locales/el.json +480 -31
  384. package/dist/locales/en.json +480 -31
  385. package/dist/locales/es.json +480 -31
  386. package/dist/locales/fr.json +480 -31
  387. package/dist/locales/hi.json +480 -31
  388. package/dist/locales/it.json +480 -31
  389. package/dist/locales/ja.json +480 -31
  390. package/dist/locales/nl.json +480 -31
  391. package/dist/locales/pl.json +480 -31
  392. package/dist/locales/pt.json +480 -31
  393. package/dist/locales/ro.json +480 -31
  394. package/dist/locales/ru.json +480 -31
  395. package/dist/locales/sq.json +480 -31
  396. package/dist/locales/sv.json +480 -31
  397. package/dist/locales/tr.json +480 -31
  398. package/dist/locales/zh.json +480 -31
  399. package/dist/patterns/alia-assistant/alia-types.d.ts +9 -0
  400. package/dist/patterns/alia-assistant/index.js +1 -1
  401. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  402. package/dist/patterns/patient-shell/index.js +1 -1
  403. package/dist/tokens.css +9 -1
  404. package/package.json +101 -5
  405. package/dist/_chunks/ai-tools-rail-BA_sqy1A.js +0 -373
  406. package/dist/_chunks/appointment-tray-CZtvtaH-.js +0 -431
  407. package/dist/_chunks/clinical-note-card-DqQYf_D4.js +0 -333
  408. package/dist/_chunks/editable-currency-cell-renderer-kgqp_mIw.js +0 -448
  409. package/dist/_chunks/email-input-B_Y55f5G.js +0 -396
  410. package/dist/_chunks/message-card-Bx4GmLvf.js +0 -277
  411. package/dist/_chunks/notification-card-BiESdm8q.js +0 -255
  412. package/dist/_chunks/patient-summary-card-B836_fDB.js +0 -435
  413. package/dist/_chunks/patient-table-CDuosVru.js +0 -889
  414. package/dist/_chunks/reviews-panel-Dq7LMDcH.js +0 -555
  415. package/dist/_chunks/rich-text-editor-BsV7zUdg.js +0 -2142
  416. package/dist/_chunks/tab-bar-B1ovILzh.js +0 -105
  417. package/dist/_chunks/task-card-BwY9jaV1.js +0 -124
  418. package/dist/_chunks/tooth-scheme-yBr53cvv.js +0 -1330
  419. package/dist/_chunks/use-persistent-state-i23OWy6G.js +0 -24
  420. package/dist/components/ai-tools-rail/ai-tools-rail.agent.d.ts +0 -4
  421. package/dist/components/ai-tools-rail/ai-tools-rail.d.ts +0 -68
  422. package/dist/components/ai-tools-rail/index.d.ts +0 -4
  423. package/dist/components/ai-tools-rail/index.js +0 -6
  424. package/dist/components/patient-table/cell-renderers/contact-cell.d.ts +0 -45
  425. package/dist/components/patient-table/cell-renderers/patient-identity-cell.d.ts +0 -26
@@ -0,0 +1,41 @@
1
+ import { type HTMLAttributes, type ReactNode } from 'react';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ /**
4
+ * Provides rail-injected actions that every descendant `PanelHeader`
5
+ * appends to its action cluster, after the panel's own `actions`. The
6
+ * rail (or any host) wraps the panel subtree once; standalone panels
7
+ * render without a provider and inject nothing.
8
+ */
9
+ export declare function PanelHeaderActionsProvider({ actions, children, }: {
10
+ actions: ReactNode;
11
+ children: ReactNode;
12
+ }): import("react/jsx-runtime").JSX.Element;
13
+ /** Reads the rail-injected actions for the current subtree (default `null`). */
14
+ export declare function usePanelHeaderActions(): ReactNode;
15
+ declare const headerVariants: (props?: ({
16
+ sticky?: boolean | null | undefined;
17
+ divider?: boolean | null | undefined;
18
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
19
+ export interface PanelHeaderProps extends Omit<HTMLAttributes<HTMLElement>, 'title'>, VariantProps<typeof headerVariants> {
20
+ /** Heading content. Already translated upstream. */
21
+ title: ReactNode;
22
+ /** Optional leading glyph — auto `aria-hidden` and sized to `--spacing` 4. */
23
+ icon?: ReactNode;
24
+ /** `id` applied to the heading so panels can wire `aria-labelledby`. */
25
+ headingId?: string;
26
+ /** Semantic heading level. Default `2`. */
27
+ headingLevel?: 2 | 3;
28
+ /** Panel-owned actions, rendered inline-end of the title row. */
29
+ actions?: ReactNode;
30
+ /** Optional second row, typically filter controls. */
31
+ filters?: ReactNode;
32
+ /** Pin to the top of the scroll region. Default `false`. */
33
+ sticky?: boolean;
34
+ /** Bottom hairline. Default `true`. */
35
+ divider?: boolean;
36
+ /** Type scale of the heading. Default `'card'`. */
37
+ titleScale?: 'card' | 'section';
38
+ }
39
+ export declare const PanelHeader: import("react").ForwardRefExoticComponent<PanelHeaderProps & import("react").RefAttributes<HTMLElement>>;
40
+ export {};
41
+ //# sourceMappingURL=panel-header.d.ts.map
@@ -0,0 +1,5 @@
1
+ export { PatientDetails } from './patient-details';
2
+ export type { PatientDetailsProps, PatientDetailsHandle, PatientDetailsField, PatientDetailsSection, PatientDetailsFieldOption, PatientDetailsEditType, PatientDetailsEditValue, PatientDetailsDensity, } from './patient-details';
3
+ export type { PatientField, PatientFieldSection, PatientFieldOption, PatientFieldEditType, PatientFieldEditValue, } from '../_shared/patient-fields';
4
+ export { patientDetailsAgent } from './patient-details.agent';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,6 @@
1
+ import { P as e, p as i } from "../../_chunks/patient-details-DgfTJimE.js";
2
+ export {
3
+ e as PatientDetails,
4
+ i as patientDetailsAgent
5
+ };
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,4 @@
1
+ import type { AgentAdapter } from '../../agent/types';
2
+ import type { PatientDetailsHandle } from './patient-details';
3
+ export declare const patientDetailsAgent: AgentAdapter<PatientDetailsHandle>;
4
+ //# sourceMappingURL=patient-details.agent.d.ts.map
@@ -0,0 +1,96 @@
1
+ import { type HTMLAttributes, type ReactNode } from 'react';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ import { type PatientField, type PatientFieldEditType, type PatientFieldEditValue, type PatientFieldOption, type PatientFieldSection } from '../_shared/patient-fields';
4
+ declare const rootVariants: (props?: ({
5
+ density?: "compact" | "comfortable" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export type { PatientField, PatientFieldSection, PatientFieldOption, PatientFieldEditType, PatientFieldEditValue, } from '../_shared/patient-fields';
8
+ /** A label→value patient field. Alias of the shared {@link PatientField}. */
9
+ export type PatientDetailsField = PatientField;
10
+ /** A labelled, collapsible group of fields. Alias of {@link PatientFieldSection}. */
11
+ export type PatientDetailsSection = PatientFieldSection;
12
+ /** Alias of the shared {@link PatientFieldOption}. */
13
+ export type PatientDetailsFieldOption = PatientFieldOption;
14
+ /** Alias of the shared {@link PatientFieldEditType}. */
15
+ export type PatientDetailsEditType = PatientFieldEditType;
16
+ /** Alias of the shared {@link PatientFieldEditValue}. */
17
+ export type PatientDetailsEditValue = PatientFieldEditValue;
18
+ /**
19
+ * Imperative handle the agent adapter drives. Exposes only field KEYS and
20
+ * an opaque `patientId` for reads; `updateField` routes writes through the
21
+ * same `onFieldSave` path as a human inline edit (no second channel).
22
+ */
23
+ export interface PatientDetailsHandle {
24
+ /** The current ordered list of visible field ids. */
25
+ getVisibleFieldOrder: () => string[];
26
+ /** Opaque patient id (no PHI). */
27
+ getPatientId: () => string | undefined;
28
+ /** Replace the visible set, preserving the given order (filtered to known fields). */
29
+ setVisibleFields: (fieldIds: string[]) => void;
30
+ /** Replace the full ordered visible list (filtered to known fields). */
31
+ setFieldOrder: (orderedIds: string[]) => void;
32
+ /** Write a field value — delegates to `onFieldSave`. Rejects if no handler. */
33
+ updateField: (fieldId: string, value: unknown) => Promise<void>;
34
+ }
35
+ export interface PatientDetailsProps extends Omit<HTMLAttributes<HTMLElement>, 'title' | 'children'> {
36
+ /** Patient display name — the panel heading. */
37
+ title: ReactNode;
38
+ /** The sectioned field catalogue (consumer-mapped from DoctorPatient). */
39
+ sections: PatientDetailsSection[];
40
+ /**
41
+ * Header avatar photo / initials override. The panel always fronts the name
42
+ * with an Avatar — initials derive from a string `title` by default; pass
43
+ * `src` for a photo, or `name` to override the initials source.
44
+ */
45
+ avatar?: {
46
+ src?: string;
47
+ name?: string;
48
+ };
49
+ /** At-a-glance chips under the name (consumer-composed Badge/Tag/Chip row). */
50
+ headerChips?: ReactNode;
51
+ /**
52
+ * Frame the identity header and each section in its own elevated `Card`,
53
+ * for a "control-room" rail that reads as a stack of cards rather than one
54
+ * flat panel. Default `false` (the flat panel with a header rule + eyebrow
55
+ * section headings). When framed, the header rule is dropped — the cards
56
+ * provide the separation.
57
+ */
58
+ framed?: boolean;
59
+ /** Master switch — show edit affordances on `editable` fields. */
60
+ editable?: boolean;
61
+ /**
62
+ * Persist a field edit. Resolve ⇒ committed; reject(Error) ⇒ the message
63
+ * is shown inline and the row stays in edit mode. Also the single channel
64
+ * the agent's `update_field` uses.
65
+ */
66
+ onFieldSave?: (fieldId: string, value: unknown) => Promise<void>;
67
+ /** Domain validation — return an error message, or `null` when valid. */
68
+ validate?: (fieldId: string, value: unknown) => string | null;
69
+ /**
70
+ * Controlled ordered list of visible field ids. `undefined` ⇒ every field
71
+ * visible; an explicit `[]` ⇒ none (a panel that starts collapsed).
72
+ */
73
+ visibleFieldOrder?: string[];
74
+ /** Uncontrolled initial order. Omit both ⇒ every field visible, in declaration order. */
75
+ defaultVisibleFieldOrder?: string[];
76
+ /** Fired whenever the user shows/hides/reorders fields via the cog. */
77
+ onVisibleFieldsChange?: (orderedIds: string[]) => void;
78
+ /** Render the loading skeleton. */
79
+ loading?: boolean;
80
+ /** Shown when there are no sections / no patient. Defaults to a localised hint. */
81
+ emptyState?: ReactNode;
82
+ /** Opaque patient id — emitted as `data-patient-id` + agent stateRead. No PHI. */
83
+ patientId?: string;
84
+ /** Agent-readiness instance id, surfaced as `data-component-id`. */
85
+ id?: string;
86
+ /** BCP-47 locale override (currency / number editors). */
87
+ locale?: string;
88
+ /** Override the cog trigger's accessible name. */
89
+ cogLabel?: string;
90
+ /** Override the panel region's accessible name (defaults to the heading). */
91
+ 'aria-label'?: string;
92
+ }
93
+ export declare const PatientDetails: import("react").ForwardRefExoticComponent<PatientDetailsProps & import("react").RefAttributes<HTMLElement>>;
94
+ /** Density variant union re-exported for downstream typing. */
95
+ export type PatientDetailsDensity = NonNullable<VariantProps<typeof rootVariants>['density']>;
96
+ //# sourceMappingURL=patient-details.d.ts.map
@@ -1,4 +1,4 @@
1
- import { P as t, p as r } from "../../_chunks/patient-search-CBC_ySF6.js";
1
+ import { P as t, p as r } from "../../_chunks/patient-search-CSWQKOSP.js";
2
2
  export {
3
3
  t as PatientSearch,
4
4
  r as patientSearchAgent
@@ -1,4 +1,4 @@
1
- import { P as t, p as m } from "../../_chunks/patient-summary-card-B836_fDB.js";
1
+ import { P as t, p as m } from "../../_chunks/patient-summary-card-D4NdgYJB.js";
2
2
  export {
3
3
  t as PatientSummaryCard,
4
4
  m as patientSummaryCardAgent
@@ -1,5 +1,6 @@
1
1
  import { type ComponentPropsWithoutRef, type ReactNode } from 'react';
2
2
  import { type VariantProps } from 'class-variance-authority';
3
+ import { type PatientFieldSection } from '../_shared/patient-fields';
3
4
  declare const rootVariants: (props?: ({
4
5
  surface?: "flat" | "elevated" | null | undefined;
5
6
  density?: "compact" | "comfortable" | null | undefined;
@@ -75,7 +76,45 @@ export interface PatientSummaryCardProps extends Omit<ComponentPropsWithoutRef<'
75
76
  * dropped and the heading renders as plain text.
76
77
  */
77
78
  patientUrl?: string;
78
- /** Patient email. Compiled into a `mailto:` link when `emailEnabled`. */
79
+ /**
80
+ * Patient fields in the shared model — the SAME `sections` shape
81
+ * `PatientDetails` consumes (`@alfadocs/ui-kit` `PatientFieldSection`).
82
+ * When provided, the card renders these (honouring `visibleFieldOrder`)
83
+ * instead of the legacy contact props, so a consumer defines its patient-
84
+ * field registry once and reuses it across every patient surface.
85
+ *
86
+ * The card renders each field's `label`, `value`, and `icon` only — it is
87
+ * flat (section headings are not shown in the body) and never inline-edits;
88
+ * `sensitive` / `copyable` / `mono` / `editable` are honoured by
89
+ * `PatientDetails`, not the card (so the PHI lock glyph does not appear here).
90
+ *
91
+ * Pass `onVisibleFieldsChange` alongside `sections` to make THIS placement
92
+ * self-curating (a "Customize fields" cog appears — show/hide + drag-and-drop
93
+ * reorder).
94
+ */
95
+ sections?: PatientFieldSection[];
96
+ /**
97
+ * Ordered visible field ids for THIS placement. The order is a
98
+ * per-INSTANCE, per-CONTEXT preference the kit never persists — wire it to
99
+ * whatever scope the consumer wants (e.g. a global per-user setting, or a
100
+ * different config in the care-plan view vs the patient folder). The same
101
+ * field vocabulary can therefore display differently in different parts of
102
+ * the app. Omit (`undefined`) ⇒ show every field; an explicit empty array
103
+ * `[]` ⇒ show none (a card that starts collapsed to name + identity chips and
104
+ * reveals fields via the cog). Also applied to the legacy contact rows (ids
105
+ * `email` / `phone` / `cityProvince` / `marketingConsent` / `aiConsent` /
106
+ * `assignedTo`).
107
+ */
108
+ visibleFieldOrder?: string[];
109
+ /**
110
+ * Make this card's field set user-customizable. When provided alongside
111
+ * `sections`, a "Customize fields" cog renders in the header (show/hide +
112
+ * drag-and-drop / Alt+Arrow reorder), and this fires with the next ordered
113
+ * visible set. The consumer owns persistence + its scope — editing here
114
+ * writes only THIS context's preference, never a shared/global one.
115
+ */
116
+ onVisibleFieldsChange?: (orderedIds: string[]) => void;
117
+ /** @deprecated Pass via `sections`. Patient email — `mailto:` link when `emailEnabled`. */
79
118
  email?: string;
80
119
  /** Whether email contact is enabled — gates the `mailto:` link. */
81
120
  emailEnabled?: boolean;
@@ -2,44 +2,55 @@
2
2
  * patient-table — column definitions
3
3
  * ----------------------------------------------------------------------------
4
4
  * `buildPatientColumns(t, opts)` returns the ordered `ColDef<PatientRow>[]` for
5
- * the patient grid: one leaf column per the workflow plan's 17-column spec, each
6
- * wiring the right cell renderer + the right kit filter + floatingFilter, a
7
- * localised `headerName` (from `ui.patientTable.column.*`) and a stable `colId`.
5
+ * the patient grid. Every patient field is its OWN column — sortable, filterable
6
+ * and individually hideable via ColumnToggle rather than several fields jumbled
7
+ * into one composite cell. Each column wires the right kit cell renderer + the
8
+ * right kit filter + floatingFilter, a localised `headerName` (from
9
+ * `ui.patientTable.column.*`) and a stable `colId`.
10
+ *
11
+ * Identity is SPLIT across three pinned-start columns (the spec's
12
+ * "Avatar · First · Last"):
13
+ * • `avatar` — ImageCellRenderer (photo, initials fallback), sr-only header.
14
+ * • `firstName` — plain text.
15
+ * • `lastName` — LinkCellRenderer (the patient-detail link, `identityHref`).
16
+ * All three are pinned-start P0 anchors and never auto-hide.
17
+ *
18
+ * COLUMN VISIBILITY
19
+ * -----------------
20
+ * `●` default-visible columns carry a `responsiveTier`; the responsive hook hides
21
+ * them by tier as the grid narrows. Every other (grouped) column ships
22
+ * `hide: true` and NO tier, so the hook leaves it alone and a user ColumnToggle
23
+ * override wins. The anchors (avatar / firstName / lastName / actions) omit a
24
+ * tier so they are never auto-hidden.
8
25
  *
9
26
  * RESPONSIVE TIER MECHANISM
10
27
  * -------------------------
11
- * Each column carries a custom `responsiveTier` (`P0`–`P3`) property. AG Grid's
12
- * `ColDef` is an open/extensible shape — extra properties on a colDef are passed
13
- * through untouched at runtime — but its TS type is closed, so a bare extra key
14
- * would not type-check. We therefore type each entry as `PatientColDefWithTier`
15
- * (`PatientColDef & { responsiveTier?: ResponsiveTier }`) and read the tier back
16
- * via the exported {@link getResponsiveTier} helper rather than through AG Grid's
17
- * loosely-typed `context: any` field — so the tier is fully typed end-to-end with
18
- * no `any`. The `useResponsiveColumns` hook consumes these tiers to toggle column
19
- * visibility by grid-container width.
28
+ * Each column may carry a custom `responsiveTier` (`P0`–`P3`) property. AG Grid's
29
+ * `ColDef` is an open/extensible shape — extra properties pass through untouched
30
+ * at runtime — but its TS type is closed, so we type each entry as
31
+ * `PatientColDefWithTier` and read the tier back via {@link getResponsiveTier}
32
+ * (no `any`, no reliance on AG Grid's loose `context`).
20
33
  *
21
- * GROUND-TRUTH NOTES (vs. the task brief / workflow plan):
22
- * The `select` checkbox column is NOT emitted here. The spec marks it
23
- * "(built-in)" it is provided by the grid's `rowSelection` config
24
- * (`headerCheckbox: true, checkboxes: true`, see data-table.tsx), not as a
25
- * leaf colDef. It is always P0 and grid-managed, so the responsive hook never
26
- * touches it. `PatientColumnId` still lists `'select'` for ColumnToggle/agent
27
- * addressing parity.
28
- * There is no standalone `Icon`/`IconButton` colDef primitive; the actions
29
- * column uses the kit's `ActionsCellRenderer` with `PatientRowAction`-shaped
30
- * `ActionDef`s. Its `collapsed` getter (`opts.getActionsCompact`) drives the
31
- * 180→88px compact density from the spec without rebuilding column state.
32
- * `Default insurance` and `Fiscal code` are plain text columns (no dedicated
33
- * renderer) per the spec; they still get a `TextFilter` + floating filter.
34
- * • No colour, spacing, radius or font literal appears in any ColDef
35
- * `cellStyle`/`cellClass` here — only token-bound `ds:` utility classes — so
36
- * the AG Grid theme bridge (`ag-grid-theme.css`) stays in control of theming.
34
+ * CUSTOM FIELDS
35
+ * -------------
36
+ * `opts.customFields` appends one dynamic column per descriptor after the
37
+ * standard columns: `colId: \`custom:${fieldName}\``, a LITERAL `headerName`
38
+ * (the practice-defined label never i18n-keyed), a `valueGetter` reading
39
+ * `row.customFields?.[fieldName]`, and a renderer + filter chosen by `type`
40
+ * (`text` → plain text · `checkbox` → ✓/— · `dropdown` → Tag chip). All ship
41
+ * `hide: true` and no tier.
42
+ *
43
+ * CONSTRAINTS:
44
+ * No colour / spacing / radius / font literal in any `cellStyle`/`cellClass`
45
+ * here only token-bound `ds:` utility classes so the AG Grid theme bridge
46
+ * stays in control of theming.
47
+ * • CSS logical properties only.
37
48
  * • PHI rule (PRS 26 §6): no `PatientRow` field other than `id` is ever placed
38
49
  * in a DOM `data-*` attribute. Renderers surface name/contact/DOB as text
39
50
  * content only; these defs pass values, not attributes.
40
51
  */
41
52
  import type { TFunction } from 'i18next';
42
- import type { PatientColDef, PatientColumnDef, PatientRow, PatientRowAction, ResponsiveTier } from './types';
53
+ import type { PatientColDef, PatientColumnDef, PatientCustomFieldDef, PatientRow, PatientRowAction, ResponsiveTier } from './types';
43
54
  /**
44
55
  * A patient leaf column carrying its responsive-priority tier. AG Grid passes
45
56
  * the extra `responsiveTier` key through untouched; we keep it strongly typed
@@ -55,15 +66,17 @@ export type PatientColDefWithTier = PatientColDef & {
55
66
  };
56
67
  /**
57
68
  * Read the responsive tier off a column definition. Returns `undefined` for
58
- * columns that opt out of responsive toggling (e.g. the pinned Identity / pinned
59
- * Actions columns deliberately omit a tier so they never auto-hide).
69
+ * columns that opt out of responsive toggling the pinned anchors and every
70
+ * `hide: true` grouped column deliberately omit a tier so they are never
71
+ * auto-managed by the responsive hook.
60
72
  */
61
73
  export declare function getResponsiveTier(colDef: PatientColumnDef): ResponsiveTier | undefined;
62
74
  /** Options threaded into {@link buildPatientColumns}. */
63
75
  export interface BuildPatientColumnsOptions {
64
76
  /**
65
- * Mask sensitive contact details (email) in the Contact/Email cells. Forwarded
66
- * to `ContactCell`'s `hideDetails` param. Default `false`.
77
+ * Mask sensitive contact details (email) when `true` the `email` column
78
+ * ships hidden. Forwarded from `PatientTable`'s `hidePatientDetails`. Default
79
+ * `false`.
67
80
  */
68
81
  hideDetails?: boolean;
69
82
  /**
@@ -82,21 +95,37 @@ export interface BuildPatientColumnsOptions {
82
95
  */
83
96
  onRowAction?: (action: PatientRowAction, patient: PatientRow) => void;
84
97
  /**
85
- * Derive the patient-detail href for the Identity cell, e.g.
86
- * `(row) => \`/patients/${row.id}\``. When omitted the Identity cell renders a
98
+ * Derive the patient-detail href for the `lastName` link column, e.g.
99
+ * `(row) => \`/patients/${row.id}\``. When omitted the lastName cell renders a
87
100
  * button that calls `onRowAction` with the `show` action instead.
88
101
  */
89
102
  identityHref?: string | ((row: PatientRow) => string | undefined);
103
+ /**
104
+ * Per-practice custom-field descriptors. Each appends one dynamic `custom:*`
105
+ * column (hidden by default) after the standard columns. See
106
+ * {@link PatientCustomFieldDef}.
107
+ */
108
+ customFields?: PatientCustomFieldDef[];
90
109
  }
91
110
  /**
92
- * Build the ordered patient-grid column definitions.
111
+ * The fixed number of per-row actions the patient grid builds (show · edit ·
112
+ * email reminder · sms reminder · reassign · delete — see {@link buildRowActions}).
113
+ * Exposed so the component can size the actions column to its EXPANDED footprint
114
+ * (`actionsColumnWidth(PATIENT_ROW_ACTION_COUNT)`) when flipping the runtime
115
+ * compact-actions toggle off, without rebuilding the column defs. Keep in sync
116
+ * with the array {@link buildRowActions} returns.
117
+ */
118
+ export declare const PATIENT_ROW_ACTION_COUNT = 6;
119
+ /**
120
+ * Build the ordered patient-grid column definitions — one field per column.
93
121
  *
94
122
  * @param t `react-i18next` translation fn (default `ui` namespace).
95
123
  * @param opts See {@link BuildPatientColumnsOptions} — density getter, row-action
96
- * callback, detail masking, identity href.
97
- * @returns Ordered `PatientColumnDef[]`. Leaf columns carry a `responsiveTier`
98
- * (read via {@link getResponsiveTier}); the pinned Identity and
99
- * Actions columns omit it so they never auto-hide.
124
+ * callback, detail masking, identity href, custom fields.
125
+ * @returns Ordered `PatientColumnDef[]`. Default-visible columns carry a
126
+ * `responsiveTier` (read via {@link getResponsiveTier}); the pinned
127
+ * anchors and every grouped (`hide: true`) column omit it so they are
128
+ * never auto-hidden.
100
129
  */
101
130
  export declare function buildPatientColumns(t: TFunction, opts?: BuildPatientColumnsOptions): PatientColumnDef[];
102
131
  //# sourceMappingURL=columns.d.ts.map
@@ -8,17 +8,13 @@
8
8
  */
9
9
  export { PatientTable } from './patient-table';
10
10
  export type { PatientTableProps } from './patient-table';
11
- export { buildPatientColumns, getResponsiveTier, type BuildPatientColumnsOptions, type PatientColDefWithTier, } from './columns';
11
+ export { buildPatientColumns, getResponsiveTier, PATIENT_ROW_ACTION_COUNT, type BuildPatientColumnsOptions, type PatientColDefWithTier, } from './columns';
12
12
  export { useResponsiveColumns, type UseResponsiveColumnsOptions, type UseResponsiveColumnsResult, } from './use-responsive-columns';
13
- export type { PatientRow, PatientPhoneNumber, PatientGender, PatientMarketingConsent, PatientCarePlanStatus, PatientColumnId, ResponsiveTier, PatientRowActionKey, PatientRowAction, PatientBulkActionKey, PatientBulkAction, PatientView, PatientTableHandle, PatientColDef, PatientColGroupDef, PatientColumnDef, } from './types';
14
- export { PatientIdentityCell } from './cell-renderers/patient-identity-cell';
15
- export type { PatientIdentityCellParams } from './cell-renderers/patient-identity-cell';
13
+ export type { PatientRow, PatientPhoneNumber, PatientGender, PatientMarketingConsent, PatientCarePlanStatus, PatientCustomFieldDef, PatientColumnId, ResponsiveTier, PatientRowActionKey, PatientRowAction, PatientBulkActionKey, PatientBulkAction, PatientView, PatientTableHandle, PatientColDef, PatientColGroupDef, PatientColumnDef, } from './types';
16
14
  export { NextAppointmentCell } from './cell-renderers/next-appointment-cell';
17
15
  export type { NextAppointmentCellParams } from './cell-renderers/next-appointment-cell';
18
16
  export { BalanceBadgeCell } from './cell-renderers/balance-badge-cell';
19
17
  export type { BalanceBadgeCellParams } from './cell-renderers/balance-badge-cell';
20
18
  export { CarePlanStatusCell } from './cell-renderers/care-plan-status-cell';
21
19
  export type { CarePlanStatusCellParams } from './cell-renderers/care-plan-status-cell';
22
- export { ContactCell } from './cell-renderers/contact-cell';
23
- export type { ContactCellParams } from './cell-renderers/contact-cell';
24
20
  //# sourceMappingURL=index.d.ts.map
@@ -1,13 +1,12 @@
1
- import { B as s, C as t, a as l, N as n, P as C, b as i, c as o, g as u, u as p } from "../../_chunks/patient-table-CDuosVru.js";
1
+ import { B as s, C as l, N as t, P as n, a as C, b as i, g as o, u } from "../../_chunks/patient-table-CERknpd8.js";
2
2
  export {
3
3
  s as BalanceBadgeCell,
4
- t as CarePlanStatusCell,
5
- l as ContactCell,
6
- n as NextAppointmentCell,
7
- C as PatientIdentityCell,
8
- i as PatientTable,
9
- o as buildPatientColumns,
10
- u as getResponsiveTier,
11
- p as useResponsiveColumns
4
+ l as CarePlanStatusCell,
5
+ t as NextAppointmentCell,
6
+ n as PATIENT_ROW_ACTION_COUNT,
7
+ C as PatientTable,
8
+ i as buildPatientColumns,
9
+ o as getResponsiveTier,
10
+ u as useResponsiveColumns
12
11
  };
13
12
  //# sourceMappingURL=index.js.map
@@ -4,10 +4,12 @@
4
4
  * `PatientTable` is a thin composition over the kit's `data-table` engine
5
5
  * (AG Grid Community) specialised for the AlfaDocs patient list. It bakes in:
6
6
  *
7
- * • `buildPatientColumns(t, …)` (the 17-column spec) merged with a
7
+ * • `buildPatientColumns(t, …)` (one field per column split identity,
8
+ * grouped hidden columns, dynamic custom fields) merged with a
8
9
  * consumer-supplied `columns` override.
9
- * • the patient cell renderers (Identity / NextAppointment / BalanceBadge /
10
- * CarePlanStatus / Contact) via the column defs above.
10
+ * • the kit data-table built-in renderers (Image / Link / Date / Currency /
11
+ * Status / TagList / User) plus the three patient renderers kept for the
12
+ * domain columns (NextAppointment / BalanceBadge / CarePlanStatus).
11
13
  * • a default toolbar — `QuickSearch` + `FilterChips` + `ColumnToggle` +
12
14
  * `ExportMenu` + a `BulkAction` per `props.bulkActions` — overridable
13
15
  * wholesale via `props.toolbar`.
@@ -35,7 +37,7 @@
35
37
  */
36
38
  import { type ReactNode } from 'react';
37
39
  import { type BuildPatientColumnsOptions } from './columns';
38
- import type { PatientBulkAction, PatientColumnDef, PatientRow, PatientRowAction, PatientTableHandle, PatientView } from './types';
40
+ import type { PatientBulkAction, PatientColumnDef, PatientCustomFieldDef, PatientRow, PatientRowAction, PatientTableHandle, PatientView } from './types';
39
41
  export interface PatientTableProps {
40
42
  /**
41
43
  * Row data. `undefined` ⇒ the grid renders its loading overlay (the
@@ -59,6 +61,24 @@ export interface PatientTableProps {
59
61
  gridId: string;
60
62
  /** Row-height preset. Defaults to the engine default (`'default'`). */
61
63
  density?: 'compact' | 'default' | 'expanded';
64
+ /**
65
+ * Collapse the per-row actions column into a single "…" overflow trigger
66
+ * independently of row `density`. When `true` the actions cells render the
67
+ * collapsed menu and the column shrinks to its 88px compact footprint; when
68
+ * `false` they render the inline button group at the full expanded width.
69
+ * When `undefined` (the default) compactness FOLLOWS `density` — `compact`
70
+ * density collapses the actions, every other density keeps them inline — so
71
+ * existing consumers are unaffected. Flipping this at runtime re-reads the
72
+ * actions cells via a stable ref-backed getter (no `columnDefs` rebuild, so
73
+ * column state is preserved) and resizes the actions column to match.
74
+ */
75
+ actionsCompact?: boolean;
76
+ /**
77
+ * Grid height — forwarded to the underlying `DataTable.heightClass` (a Tailwind
78
+ * height class). Pass `"ds:h-full"` to fill a sized parent, or an explicit
79
+ * value like `"ds:h-[75vh]"`. Omit to use the engine default (`ds:h-[500px]`).
80
+ */
81
+ heightClass?: string;
62
82
  /**
63
83
  * Enable container-width column-priority responsiveness (lower-priority
64
84
  * columns hide as the grid narrows). Default `true`. Set `false` to leave
@@ -109,6 +129,13 @@ export interface PatientTableProps {
109
129
  * affordance elsewhere on the page.
110
130
  */
111
131
  hideQuickSearch?: boolean;
132
+ /**
133
+ * Enable the grid's client-side pagination. When `false`, every row loads into
134
+ * a single virtualised, scrollable view and filter / sort act over the WHOLE
135
+ * set (no pager) — the right model for a "load and filter all" list. Default
136
+ * `true`.
137
+ */
138
+ pagination?: boolean;
112
139
  /**
113
140
  * Page-size dropdown options shown in the pagination panel — forwarded to the
114
141
  * underlying `DataTable.paginationPageSizeSelector`. Pass `false` to hide the
@@ -129,6 +156,13 @@ export interface PatientTableProps {
129
156
  * its click through `onRowAction` with the `show` action.
130
157
  */
131
158
  identityHref?: BuildPatientColumnsOptions['identityHref'];
159
+ /**
160
+ * Per-practice custom-field descriptors. Each appends one dynamic `custom:*`
161
+ * column (hidden by default, toggleable via ColumnToggle) after the standard
162
+ * columns. Forwarded to `buildPatientColumns`. Ignored when `columns` is
163
+ * supplied (the consumer owns their columns then).
164
+ */
165
+ customFields?: PatientCustomFieldDef[];
132
166
  /** Override the default region aria-label (`ui.patientTable.regionLabel`). */
133
167
  'aria-label'?: string;
134
168
  /** Extra class names merged onto the inner grid wrapper. */
@@ -31,6 +31,23 @@ import type { DataTableHandle, DataTableSortEntry } from '../data-table';
31
31
  export type PatientMarketingConsent = 0 | 1 | 2;
32
32
  /** Biological-sex marker used for the demographic column / gender filter. */
33
33
  export type PatientGender = 'm' | 'f' | 'x';
34
+ /**
35
+ * A per-practice custom field descriptor. Drives the dynamic `custom:*` columns
36
+ * appended after the standard ones by `buildPatientColumns`. The `label` is
37
+ * practice-defined display copy — NOT i18n-keyed (it is the header verbatim).
38
+ */
39
+ export interface PatientCustomFieldDef {
40
+ /** Stable descriptor id. */
41
+ id: string;
42
+ /** Key into {@link PatientRow.customFields}. */
43
+ fieldName: string;
44
+ /** Practice-defined header label — rendered verbatim, never i18n-keyed. */
45
+ label: string;
46
+ /** Renderer + filter shape: plain text, a yes/no checkbox, or a chip. */
47
+ type: 'text' | 'checkbox' | 'dropdown';
48
+ /** Closed value set for `dropdown` fields (feeds the SelectFilter options). */
49
+ options?: string[];
50
+ }
34
51
  /** Care-plan acceptance state surfaced by `CarePlanStatusCell`. */
35
52
  export type PatientCarePlanStatus = 'accepted' | 'estimate' | 'none';
36
53
  /** A single phone number plus its SMS-reminder eligibility. */
@@ -59,20 +76,47 @@ export interface PatientRow {
59
76
  emailEnabled: boolean;
60
77
  /** Whether the stored email passed validation. */
61
78
  emailValid?: boolean;
79
+ /** PEC (certified email) address. */
80
+ pecAddress?: string;
62
81
  phoneNumbers: PatientPhoneNumber[];
82
+ /** Whether the patient is eligible to receive SMS reminders. */
83
+ smsReminderEligible?: boolean;
84
+ /** Whether the patient is eligible to receive email reminders. */
85
+ emailReminderEligible?: boolean;
63
86
  /** ISO-8601 date string. Age is computed at the render boundary. */
64
87
  dateOfBirth?: string;
65
88
  gender?: PatientGender;
89
+ /** Place (comune) of birth. */
90
+ placeOfBirth?: string;
91
+ /** ISO-3166-1 alpha-2 country of birth. */
92
+ countryOfBirth?: string;
93
+ street?: string;
94
+ postcode?: string;
66
95
  city?: string;
67
96
  province?: string;
68
- /** ISO-3166-1 alpha-2 country code. */
97
+ /** ISO-3166-1 alpha-2 country code (residence). */
69
98
  countryCode?: string;
70
99
  italianFiscalCode?: string;
100
+ /** Acquisition source (the practice-configured channel). */
71
101
  source?: string;
102
+ /** Free-text source override when `source` is `'Other'`. */
103
+ customSource?: string;
72
104
  defaultInsurance?: string;
105
+ /** Default discount percentage applied to this patient's plans. */
106
+ defaultDiscount?: number;
107
+ /** Primary clinical diagnosis note. */
108
+ diagnosis?: string;
109
+ /** Patient's occupation. */
110
+ job?: string;
73
111
  /** Operator / personal assistant the patient is assigned to. */
74
112
  personalAssistant?: string;
75
113
  marketingConsent: PatientMarketingConsent;
114
+ /** Year component of the yearly patient numbering (`YYYY`). */
115
+ yearlyNumberingYear?: number;
116
+ /** Sequence component of the yearly patient numbering (`N`). */
117
+ yearlyNumberingNumber?: number;
118
+ /** Whether the patient has a MyDentista portal account. */
119
+ mydentista?: boolean;
76
120
  nextAppointment?: string;
77
121
  lastAppointment?: string;
78
122
  /** Outstanding balance in cents. */
@@ -84,13 +128,19 @@ export interface PatientRow {
84
128
  /** ISO-8601 creation timestamp. */
85
129
  createdAt: string;
86
130
  isArchived?: boolean;
131
+ /**
132
+ * Per-practice custom-field values, keyed by `PatientCustomFieldDef.fieldName`.
133
+ * Strings for text/dropdown fields; booleans for checkbox fields. Surfaced by
134
+ * the dynamic `custom:*` columns. Never a DOM attribute (PHI rule).
135
+ */
136
+ customFields?: Record<string, string | boolean>;
87
137
  }
88
138
  /**
89
139
  * Stable column ids for the patient grid. Drives `ColumnToggle`, the
90
140
  * responsive-priority map, view presets and the agent column address.
91
141
  * Keep in sync with `buildPatientColumns(t)`.
92
142
  */
93
- export type PatientColumnId = 'select' | 'identity' | 'actions' | 'nextAppointment' | 'unpaidBalance' | 'phone' | 'email' | 'carePlanStatus' | 'lastVisit' | 'dateOfBirth' | 'gender' | 'source' | 'defaultInsurance' | 'fiscalCode' | 'tags' | 'assignedMember' | 'createdAt';
143
+ export type PatientColumnId = 'select' | 'avatar' | 'lastName' | 'actions' | 'firstName' | 'fiscalCode' | 'age' | 'gender' | 'dateOfBirth' | 'placeOfBirth' | 'countryOfBirth' | 'phone' | 'email' | 'smsReminders' | 'emailReminders' | 'pec' | 'nextAppointment' | 'lastVisit' | 'unpaidBalance' | 'billableAmount' | 'discount' | 'carePlanStatus' | 'diagnosis' | 'insurance' | 'assignedTo' | 'job' | 'source' | 'marketingConsent' | 'patientNumber' | 'portal' | 'createdAt' | 'city' | 'province' | 'postcode' | 'country' | 'street' | `custom:${string}`;
94
144
  /**
95
145
  * Responsive priority tier. Lower numbers survive longer as the grid narrows:
96
146
  * `P0` always visible, `P3` first to hide. The responsive hook toggles
@@ -9,13 +9,15 @@
9
9
  *
10
10
  * BREAKPOINTS (container inline-size → highest tier kept visible):
11
11
  *
12
- * < 640px → P0 only (Identity + Actions; both are grid-anchored)
13
- * < 900px → P0 + P1
14
- * < 1200px → P0 + P1 + P2
15
- * ≥ 1200px → all tiers (P0–P3)
12
+ * < 640px → P0 only (pinned avatar / firstName / lastName / actions)
13
+ * < 900px → P0 + P1 (+ phone, nextAppointment, balance)
14
+ * < 1200px → P0 + P1 + P2 (+ email, carePlanStatus)
15
+ * ≥ 1200px → all tiers (P0–P3) (+ fiscalCode, age, gender, source)
16
16
  *
17
- * Columns without a tier (the pinned Identity + Actions columns) are never
18
- * touched they are the row anchors and stay visible at every width.
17
+ * Columns without a tier (the pinned avatar / firstName / lastName / actions
18
+ * anchors, and every grouped `hide: true` column) are never touched the
19
+ * anchors stay visible at every width; the grouped columns are owned by
20
+ * ColumnToggle only.
19
21
  *
20
22
  * RESPONSIVE ↔ PERSISTENCE RECONCILIATION
21
23
  * ---------------------------------------
@@ -1,4 +1,4 @@
1
- import { P as t, a as n, p as r, b as s } from "../../_chunks/payment-request-card-DioWKBUq.js";
1
+ import { P as t, a as n, p as r, b as s } from "../../_chunks/payment-request-card-Blf-MFNY.js";
2
2
  export {
3
3
  t as PaymentCard,
4
4
  n as PaymentRequestCard,
@@ -1,4 +1,4 @@
1
- import { P as r, f as s, p as m, a as e, s as n, b as o, c as i } from "../../_chunks/payment-form-DvjwYVIT.js";
1
+ import { P as r, f as s, p as m, a as e, s as n, b as o, c as i } from "../../_chunks/payment-form-CxqIXqw7.js";
2
2
  export {
3
3
  r as PaymentForm,
4
4
  s as formatPaymentAmount,