@alfadocs/ui-kit 0.67.1 → 0.69.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 (347) hide show
  1. package/dist/_chunks/{accordion-9lJSMMsZ.js → accordion-DnIa7OHX.js} +69 -47
  2. package/dist/_chunks/actions-cell-renderer-DrcaxB0w.js +2061 -0
  3. package/dist/_chunks/address-autocomplete-BEX9PXty.js +496 -0
  4. package/dist/_chunks/{agenda-card.agent-B_R47-c9.js → agenda-card.agent-mTCrkKSZ.js} +6 -1
  5. package/dist/_chunks/{agenda-tray-T-BumlGZ.js → agenda-tray-g0kg7HwB.js} +36 -24
  6. package/dist/_chunks/{ai-consent-banner-Dxtx_WAh.js → ai-consent-banner-CXlsNX1c.js} +3 -3
  7. package/dist/_chunks/{ai-prompt-input-BwEACCPm.js → ai-prompt-input-CuhTo9mh.js} +80 -61
  8. package/dist/_chunks/{ai-tools-rail-CInA_1-E.js → ai-tools-rail-BA_sqy1A.js} +87 -70
  9. package/dist/_chunks/{alia-sidebar-Ckv0yCKi.js → alia-sidebar-B47qRQb5.js} +5 -5
  10. package/dist/_chunks/{anamnesis-card-N8pIKWuS.js → anamnesis-card-DRmE24OQ.js} +2 -2
  11. package/dist/_chunks/{appointment-tray-BMl89NPW.js → appointment-tray-CZtvtaH-.js} +32 -20
  12. package/dist/_chunks/{audio-recorder-DjXLP4aF.js → audio-recorder-DYXXnGug.js} +59 -56
  13. package/dist/_chunks/{autocomplete-CcCFlVf-.js → autocomplete-DOeGouCL.js} +157 -132
  14. package/dist/_chunks/bishop-score-PJI3AXzA.js +304 -0
  15. package/dist/_chunks/bmi-calculator-BZtIJ53x.js +434 -0
  16. package/dist/_chunks/{booking-L8-YP8BJ.js → booking-C3VqFReX.js} +420 -397
  17. package/dist/_chunks/{breadcrumb-OTbaY70e.js → breadcrumb-CchdeG7d.js} +42 -28
  18. package/dist/_chunks/{calculator-dialog-CFk4I91b.js → calculator-dialog-BR5iU0kf.js} +2 -2
  19. package/dist/_chunks/{calendar-oYWOCrnf.js → calendar-CZUjL8SZ.js} +258 -201
  20. package/dist/_chunks/{care-plan-card-BwVUyUBb.js → care-plan-card-CvFGXa2z.js} +10 -6
  21. package/dist/_chunks/{care-plan-entry-card-VzdQHcOL.js → care-plan-entry-card-C3E_gClk.js} +17 -13
  22. package/dist/_chunks/{carousel.agent-vt21A_el.js → carousel.agent-4v8Emr9E.js} +219 -198
  23. package/dist/_chunks/{chart-Cg3e9EH9.js → chart-CMr3eW62.js} +150 -109
  24. package/dist/_chunks/{chat-container-ogB4OskO.js → chat-container-DWho5hPR.js} +47 -34
  25. package/dist/_chunks/{chat-input-B5zjNEUN.js → chat-input-BcXTetgM.js} +57 -41
  26. package/dist/_chunks/{checkbox-DRcOdmXv.js → checkbox-BuZ1u__2.js} +41 -27
  27. package/dist/_chunks/{checkbox-group-CpUwlHug.js → checkbox-group-PqNmQ-cE.js} +3 -3
  28. package/dist/_chunks/{clinical-note-card-gtrxv6zn.js → clinical-note-card-DqQYf_D4.js} +2 -2
  29. package/dist/_chunks/{collapsible-X3oaLPU3.js → collapsible-BrnRiCC6.js} +26 -23
  30. package/dist/_chunks/{color-picker-FXpItIaF.js → color-picker-C_fZl6sA.js} +124 -112
  31. package/dist/_chunks/{combobox-BC-DFx8G.js → combobox-Clum7gJ1.js} +165 -128
  32. package/dist/_chunks/{command-palette-BiPAAno-.js → command-palette-CJzmc5pC.js} +87 -64
  33. package/dist/_chunks/{contact-profile-card-7BMB85T6.js → contact-profile-card-Dramqa9C.js} +13 -11
  34. package/dist/_chunks/{copy-field-CCq7j6Zc.js → copy-field-Bjw9u2cV.js} +42 -35
  35. package/dist/_chunks/counter-dRlTNC_y.js +55 -0
  36. package/dist/_chunks/{cycle-calculator-BF0ointe.js → cycle-calculator-DmRGJNaT.js} +3 -3
  37. package/dist/_chunks/{date-picker-oGg5BnXL.js → date-picker-Dl9RKxaV.js} +76 -57
  38. package/dist/_chunks/{date-range-picker-C5BWfH_T.js → date-range-picker-CTUeR6Bj.js} +73 -46
  39. package/dist/_chunks/{date-time-picker-Ze1My59T.js → date-time-picker-BhoogS5Q.js} +64 -40
  40. package/dist/_chunks/{dependent-selector-DpzGtr_J.js → dependent-selector-CG_FOHya.js} +44 -30
  41. package/dist/_chunks/{dialog-DMGnSelc.js → dialog-ZNuboNmy.js} +35 -28
  42. package/dist/_chunks/{document-scanner-D2qehl3-.js → document-scanner-CTubA0-N.js} +12 -4
  43. package/dist/_chunks/{dropdown-menu-DwwPovMZ.js → dropdown-menu-qrxjymfw.js} +94 -93
  44. package/dist/_chunks/{due-date-calculator-DU9AEWNy.js → due-date-calculator-BTmsIQqD.js} +4 -4
  45. package/dist/_chunks/editable-currency-cell-renderer-kgqp_mIw.js +448 -0
  46. package/dist/_chunks/{email-input-lQivsFrw.js → email-input-B_Y55f5G.js} +3 -3
  47. package/dist/_chunks/{fetal-weight-BVSzOhuR.js → fetal-weight-CRz7KE2D.js} +2 -2
  48. package/dist/_chunks/{file-upload-BosbPDb1.js → file-upload-5ScQd4fE.js} +118 -100
  49. package/dist/_chunks/{fiscal-code-input-DPtqluVb.js → fiscal-code-input-Cf-8O4Fj.js} +76 -63
  50. package/dist/_chunks/{freemium-paywall-CkWjv3o6.js → freemium-paywall-DZ2mBS3w.js} +78 -71
  51. package/dist/_chunks/{gestational-age-calculator-DBlFdoiP.js → gestational-age-calculator-BleUdhbI.js} +5 -5
  52. package/dist/_chunks/{hcg-doubling-if4Q8aSX.js → hcg-doubling-CnjDXX6U.js} +3 -3
  53. package/dist/_chunks/{header-settings-CNOqIhoW.js → header-settings-DJqoAl5m.js} +86 -46
  54. package/dist/_chunks/{index.modern-D2LGACWg.js → index.modern-Zta-A4Jm.js} +3 -3
  55. package/dist/_chunks/{list-BOwqwy03.js → list-DgE1xWBM.js} +99 -84
  56. package/dist/_chunks/{locale-picker-C9JmBht3.js → locale-picker-ChYYSX2N.js} +47 -35
  57. package/dist/_chunks/{map-view-Tb5VfK9Y.js → map-view-BkOoGoX2.js} +160 -115
  58. package/dist/_chunks/{marketplace-app-shell-D4-T9Qzz.js → marketplace-app-shell-6T9W4Knl.js} +4 -4
  59. package/dist/_chunks/{message-card.agent-4IeIgrnJ.js → message-card.agent-ZLhx3Bs5.js} +6 -1
  60. package/dist/_chunks/{message-tray-CVyJajVJ.js → message-tray-DwrBLJlf.js} +90 -48
  61. package/dist/_chunks/{multi-select-BcPylvHR.js → multi-select-BdHHDrRN.js} +196 -153
  62. package/dist/_chunks/{navigation-menu-C6lBYVv9.js → navigation-menu-DRUi6sSj.js} +75 -42
  63. package/dist/_chunks/{notification-card.agent-Rqt3ofk9.js → notification-card.agent-DxGBZb8T.js} +5 -1
  64. package/dist/_chunks/{notification-tray-DlgenTEe.js → notification-tray-Btb9oQeZ.js} +112 -97
  65. package/dist/_chunks/{number-input-Dj5L3pXK.js → number-input-DxphVG_A.js} +36 -27
  66. package/dist/_chunks/{operator-hero-f_KaRhw5.js → operator-hero-CP2Nhupm.js} +12 -8
  67. package/dist/_chunks/{otp-input-xQ4Ps5VY.js → otp-input-DzBQ-CpE.js} +52 -33
  68. package/dist/_chunks/{pagination-DQOgnxxw.js → pagination-D58kglCr.js} +181 -162
  69. package/dist/_chunks/{patient-search-DR9XUYRQ.js → patient-search-CBC_ySF6.js} +69 -60
  70. package/dist/_chunks/{patient-shell-BfgufL_q.js → patient-shell-DV3XEtIB.js} +3 -3
  71. package/dist/_chunks/{patient-summary-card-hEmr4eTW.js → patient-summary-card-B836_fDB.js} +95 -103
  72. package/dist/_chunks/patient-table-CDuosVru.js +889 -0
  73. package/dist/_chunks/{payment-form-nXocS_MX.js → payment-form-DvjwYVIT.js} +56 -44
  74. package/dist/_chunks/{payment-request-card-CYE5vhZ0.js → payment-request-card-DioWKBUq.js} +2 -2
  75. package/dist/_chunks/{pdf-viewer-GsfNqeeT.js → pdf-viewer-D6BPfW2D.js} +205 -157
  76. package/dist/_chunks/{periodontal-chart-card-Dh3KgvYG.js → periodontal-chart-card-BuDEMbHE.js} +2 -2
  77. package/dist/_chunks/{phone-input-DVXhNlIl.js → phone-input-DjU-XmO_.js} +64 -47
  78. package/dist/_chunks/{popover-DTbfAuR0.js → popover-B2qCDhJC.js} +37 -32
  79. package/dist/_chunks/{practice-results-DND2SAt7.js → practice-results-KrTHqZua.js} +278 -242
  80. package/dist/_chunks/{pregnancy-dating-QY-sqpvj.js → pregnancy-dating-DORUAOHB.js} +6 -6
  81. package/dist/_chunks/{pregnancy-weight-gain-DOJXXNYP.js → pregnancy-weight-gain-DVz4rr7-.js} +3 -3
  82. package/dist/_chunks/{privacy-lock-C7JyMf0y.js → privacy-lock-BzMLQu-j.js} +32 -28
  83. package/dist/_chunks/{product-hub-panel-CAXDFeGP.js → product-hub-panel-e6pW220e.js} +45 -27
  84. package/dist/_chunks/{progress-kzIRcdaq.js → progress-DA413-zn.js} +2 -2
  85. package/dist/_chunks/{public-footer.agent-CfXuW1x6.js → public-footer.agent-D0cFbjWl.js} +151 -146
  86. package/dist/_chunks/{public-header.agent-BOhJgZEU.js → public-header.agent-DqkqA-ca.js} +107 -102
  87. package/dist/_chunks/{qr-code-DNXhi6se.js → qr-code-CPkEs5mG.js} +52 -46
  88. package/dist/_chunks/{radio-group-CLjK-SlK.js → radio-group-BPt7pKZW.js} +5 -5
  89. package/dist/_chunks/{recaptcha-widget-BCNHsgqt.js → recaptcha-widget-BC-4To9b.js} +9 -2
  90. package/dist/_chunks/registry-DvAUVLHh.js +51 -0
  91. package/dist/_chunks/{resizable-3vzqDlg6.js → resizable-DVGcfOrk.js} +193 -173
  92. package/dist/_chunks/{reviews-panel-DBktKm7i.js → reviews-panel-Dq7LMDcH.js} +87 -68
  93. package/dist/_chunks/rich-text-editor-BsV7zUdg.js +2142 -0
  94. package/dist/_chunks/{search-bar-SY2BcV2N.js → search-bar-C_T3pBJn.js} +105 -78
  95. package/dist/_chunks/{search-input-DbxrnHkW.js → search-input-DQvGxR74.js} +2 -2
  96. package/dist/_chunks/{search-input.agent-CfZvViOd.js → search-input.agent-DRH54coT.js} +19 -4
  97. package/dist/_chunks/{select-CEtRcon5.js → select-DMLG44F5.js} +72 -56
  98. package/dist/_chunks/{session-countdown-LPnhTHjn.js → session-countdown-X1Ki6i0M.js} +3 -3
  99. package/dist/_chunks/{sheet-taJer-Ha.js → sheet-BxsE7eQm.js} +59 -45
  100. package/dist/_chunks/{sidebar-DaB4ulxH.js → sidebar-DY9jGjgt.js} +254 -248
  101. package/dist/_chunks/{sign-document-CdAiHiCh.js → sign-document-B4DeRhTe.js} +75 -49
  102. package/dist/_chunks/{signature-capture-COi0Uiqu.js → signature-capture-Ct_4Md4e.js} +138 -104
  103. package/dist/_chunks/{slider-BHWzXdjt.js → slider-DN1CWkKB.js} +85 -65
  104. package/dist/_chunks/{sparkline-DGhCSw8M.js → sparkline-iOXYgvJe.js} +75 -53
  105. package/dist/_chunks/{stepper-accordion.agent-C4quJ-MD.js → stepper-accordion.agent-cmEguIdx.js} +7 -1
  106. package/dist/_chunks/{stepper-progress-DDjq5nei.js → stepper-progress-Bv0njx4g.js} +30 -24
  107. package/dist/_chunks/{suggestion-chip.agent-6sNWFj7m.js → suggestion-chip.agent-Brn3CiFE.js} +9 -8
  108. package/dist/_chunks/{switch-BJ6HD3Mn.js → switch-OILsBLWo.js} +25 -19
  109. package/dist/_chunks/{tabs-BIQ0ew1T.js → tabs-BxcOziCo.js} +67 -58
  110. package/dist/_chunks/{task-card.agent-CUPKYd7w.js → task-card.agent-Bt14CzUd.js} +4 -1
  111. package/dist/_chunks/{task-tray-CAncV-QQ.js → task-tray-qOEQflu4.js} +74 -57
  112. package/dist/_chunks/{text-area-BIx0tZ05.js → text-area-Bt3p7Pt0.js} +41 -34
  113. package/dist/_chunks/{text-input-BaClJL8Y.js → text-input-B-OWQ1Je.js} +15 -8
  114. package/dist/_chunks/{theme-toggle-DETmSu_h.js → theme-toggle-XB6o_lgs.js} +38 -26
  115. package/dist/_chunks/{time-picker-B5umYwfv.js → time-picker-BPlJWm8w.js} +41 -31
  116. package/dist/_chunks/{timeline-DQa5Tyz4.js → timeline-CqA4nKTI.js} +33 -25
  117. package/dist/_chunks/{toast.agent-vuLRRn2a.js → toast.agent-57UzyR9U.js} +62 -45
  118. package/dist/_chunks/{tooth-scheme-BIx1O2aJ.js → tooth-scheme-yBr53cvv.js} +421 -348
  119. package/dist/_chunks/{transcript-panel-CLHmv83g.js → transcript-panel-3THQX6nJ.js} +47 -33
  120. package/dist/_chunks/unit-converter-YEpD9evj.js +337 -0
  121. package/dist/_chunks/{use-password-requirements-DsgduV1x.js → use-password-requirements-BXvS2MBS.js} +131 -117
  122. package/dist/_chunks/users-MBVtUzwd.js +17 -0
  123. package/dist/_chunks/warning-stack-BsgaEbL8.js +283 -0
  124. package/dist/_chunks/{whatsapp-button-DUjlWGKf.js → whatsapp-button-BIy6NaJK.js} +6 -3
  125. package/dist/_chunks/{workflow-map-JAZryZJr.js → workflow-map-Bdam9pGp.js} +99 -88
  126. package/dist/agent/index.d.ts +4 -4
  127. package/dist/agent/index.js +36 -0
  128. package/dist/agent/registry.d.ts +33 -0
  129. package/dist/agent/types.d.ts +78 -2
  130. package/dist/agent-catalog.json +6905 -509
  131. package/dist/agent-i18n/en.json +1175 -0
  132. package/dist/components/accordion/index.js +1 -1
  133. package/dist/components/address-autocomplete/address-autocomplete.agent.d.ts +4 -0
  134. package/dist/components/address-autocomplete/address-autocomplete.d.ts +18 -0
  135. package/dist/components/address-autocomplete/index.d.ts +2 -1
  136. package/dist/components/address-autocomplete/index.js +3 -2
  137. package/dist/components/agenda-card/index.js +1 -1
  138. package/dist/components/agenda-tray/index.js +1 -1
  139. package/dist/components/ai-consent-banner/index.js +1 -1
  140. package/dist/components/ai-prompt-input/index.js +1 -1
  141. package/dist/components/ai-tools-rail/index.js +1 -1
  142. package/dist/components/anamnesis-card/index.js +1 -1
  143. package/dist/components/appointment-card/index.js +1 -1
  144. package/dist/components/audio-recorder/index.js +1 -1
  145. package/dist/components/autocomplete/index.js +1 -1
  146. package/dist/components/bishop-score/bishop-score.agent.d.ts +4 -0
  147. package/dist/components/bishop-score/bishop-score.d.ts +17 -1
  148. package/dist/components/bishop-score/index.js +1 -1
  149. package/dist/components/bmi-calculator/bmi-calculator.agent.d.ts +4 -0
  150. package/dist/components/bmi-calculator/bmi-calculator.d.ts +26 -0
  151. package/dist/components/bmi-calculator/index.js +1 -1
  152. package/dist/components/booking/index.js +1 -1
  153. package/dist/components/breadcrumb/index.js +1 -1
  154. package/dist/components/calculator-dialog/index.js +1 -1
  155. package/dist/components/calendar/index.js +1 -1
  156. package/dist/components/care-plan-card/index.js +1 -1
  157. package/dist/components/care-plan-entry-card/index.js +1 -1
  158. package/dist/components/carousel/index.js +1 -1
  159. package/dist/components/chart/index.js +1 -1
  160. package/dist/components/chat-container/index.js +1 -1
  161. package/dist/components/chat-input/index.js +1 -1
  162. package/dist/components/checkbox/index.js +1 -1
  163. package/dist/components/checkbox-group/index.js +1 -1
  164. package/dist/components/clinical-note-card/index.js +1 -1
  165. package/dist/components/collapsible/index.js +1 -1
  166. package/dist/components/color-picker/index.js +1 -1
  167. package/dist/components/combobox/index.js +1 -1
  168. package/dist/components/command-palette/index.js +1 -1
  169. package/dist/components/contact-profile-card/index.js +1 -1
  170. package/dist/components/copy-field/index.js +1 -1
  171. package/dist/components/counter/counter.d.ts +22 -0
  172. package/dist/components/counter/index.d.ts +3 -0
  173. package/dist/components/counter/index.js +5 -0
  174. package/dist/components/cycle-calculator/index.js +1 -1
  175. package/dist/components/data-table/data-table.d.ts +1 -1
  176. package/dist/components/data-table/filters/date-range-filter.d.ts +1 -1
  177. package/dist/components/data-table/index.js +31 -30
  178. package/dist/components/data-table/toolbar.d.ts +4 -1
  179. package/dist/components/date-picker/index.js +1 -1
  180. package/dist/components/date-range-picker/index.js +1 -1
  181. package/dist/components/date-time-picker/index.js +1 -1
  182. package/dist/components/dependent-selector/index.js +1 -1
  183. package/dist/components/dialog/index.js +1 -1
  184. package/dist/components/document-scanner/index.js +1 -1
  185. package/dist/components/dropdown-menu/index.js +1 -1
  186. package/dist/components/due-date-calculator/index.js +1 -1
  187. package/dist/components/email-input/index.js +1 -1
  188. package/dist/components/fetal-weight/index.js +1 -1
  189. package/dist/components/file-upload/index.js +1 -1
  190. package/dist/components/fiscal-code-input/index.js +1 -1
  191. package/dist/components/freemium-paywall/freemium-paywall.d.ts +6 -0
  192. package/dist/components/freemium-paywall/index.js +1 -1
  193. package/dist/components/gestational-age-calculator/index.js +1 -1
  194. package/dist/components/hcg-doubling/index.js +1 -1
  195. package/dist/components/header-settings/index.js +1 -1
  196. package/dist/components/index.d.ts +2 -0
  197. package/dist/components/list/index.js +1 -1
  198. package/dist/components/locale-picker/index.js +1 -1
  199. package/dist/components/map-view/index.js +1 -1
  200. package/dist/components/message-card/index.js +1 -1
  201. package/dist/components/message-tray/index.js +1 -1
  202. package/dist/components/multi-select/index.js +1 -1
  203. package/dist/components/navigation-menu/index.js +1 -1
  204. package/dist/components/notification-card/index.js +1 -1
  205. package/dist/components/notification-tray/index.js +1 -1
  206. package/dist/components/number-input/index.js +1 -1
  207. package/dist/components/operator-hero/index.js +1 -1
  208. package/dist/components/otp-input/index.js +1 -1
  209. package/dist/components/pagination/index.js +1 -1
  210. package/dist/components/password-input/index.js +1 -1
  211. package/dist/components/patient-search/index.js +1 -1
  212. package/dist/components/patient-summary-card/index.js +1 -1
  213. package/dist/components/patient-table/cell-renderers/balance-badge-cell.d.ts +13 -0
  214. package/dist/components/patient-table/cell-renderers/care-plan-status-cell.d.ts +43 -0
  215. package/dist/components/patient-table/cell-renderers/contact-cell.d.ts +45 -0
  216. package/dist/components/patient-table/cell-renderers/next-appointment-cell.d.ts +24 -0
  217. package/dist/components/patient-table/cell-renderers/patient-identity-cell.d.ts +26 -0
  218. package/dist/components/patient-table/columns.d.ts +102 -0
  219. package/dist/components/patient-table/index.d.ts +24 -0
  220. package/dist/components/patient-table/index.js +13 -0
  221. package/dist/components/patient-table/patient-table.d.ts +138 -0
  222. package/dist/components/patient-table/types.d.ts +172 -0
  223. package/dist/components/patient-table/use-responsive-columns.d.ts +109 -0
  224. package/dist/components/payment-card/index.js +1 -1
  225. package/dist/components/payment-form/index.js +1 -1
  226. package/dist/components/pdf-viewer/index.js +1 -1
  227. package/dist/components/periodontal-chart-card/index.js +1 -1
  228. package/dist/components/phone-input/index.js +1 -1
  229. package/dist/components/popover/index.js +1 -1
  230. package/dist/components/practice-results/index.js +1 -1
  231. package/dist/components/pregnancy-dating/index.js +1 -1
  232. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  233. package/dist/components/privacy-lock/index.js +1 -1
  234. package/dist/components/product-hub-tray/index.js +1 -1
  235. package/dist/components/progress/index.js +1 -1
  236. package/dist/components/public-footer/index.js +1 -1
  237. package/dist/components/public-header/index.js +1 -1
  238. package/dist/components/qr-code/index.js +1 -1
  239. package/dist/components/radio-group/index.js +1 -1
  240. package/dist/components/recaptcha-widget/index.js +1 -1
  241. package/dist/components/resizable/index.js +1 -1
  242. package/dist/components/reviews-panel/index.js +1 -1
  243. package/dist/components/rich-text-editor/index.js +1 -1
  244. package/dist/components/rich-text-editor/rich-text-editor.d.ts +15 -0
  245. package/dist/components/search-bar/index.js +1 -1
  246. package/dist/components/search-input/index.js +2 -2
  247. package/dist/components/select/index.js +1 -1
  248. package/dist/components/session-countdown/index.js +1 -1
  249. package/dist/components/sheet/index.js +1 -1
  250. package/dist/components/sidebar/index.js +1 -1
  251. package/dist/components/sidebar/sidebar.d.ts +7 -0
  252. package/dist/components/sign-document/index.js +1 -1
  253. package/dist/components/signature-capture/index.js +1 -1
  254. package/dist/components/slider/index.js +1 -1
  255. package/dist/components/sparkline/index.js +1 -1
  256. package/dist/components/stepper-accordion/index.js +1 -1
  257. package/dist/components/stepper-progress/index.js +1 -1
  258. package/dist/components/suggestion-chip/index.js +1 -1
  259. package/dist/components/switch/index.js +1 -1
  260. package/dist/components/tabs/index.js +1 -1
  261. package/dist/components/task-card/index.js +1 -1
  262. package/dist/components/task-tray/index.js +1 -1
  263. package/dist/components/text-area/index.js +1 -1
  264. package/dist/components/text-input/index.js +1 -1
  265. package/dist/components/theme-toggle/index.js +1 -1
  266. package/dist/components/time-picker/index.js +1 -1
  267. package/dist/components/timeline/index.js +1 -1
  268. package/dist/components/toast/index.js +1 -1
  269. package/dist/components/tooth-scheme/index.js +1 -1
  270. package/dist/components/transcript-panel/index.js +1 -1
  271. package/dist/components/unit-converter/index.js +1 -1
  272. package/dist/components/unit-converter/unit-converter.agent.d.ts +4 -0
  273. package/dist/components/unit-converter/unit-converter.d.ts +27 -0
  274. package/dist/components/warning-stack/index.js +1 -1
  275. package/dist/components/warning-stack/warning-stack.d.ts +9 -0
  276. package/dist/components/whatsapp-button/index.d.ts +1 -1
  277. package/dist/components/whatsapp-button/index.js +3 -2
  278. package/dist/components/whatsapp-button/whatsapp-button.d.ts +3 -0
  279. package/dist/components/workflow/index.js +1 -1
  280. package/dist/i18n/locales/ar.d.ts +74 -0
  281. package/dist/i18n/locales/ar.js +76 -2
  282. package/dist/i18n/locales/de.d.ts +74 -0
  283. package/dist/i18n/locales/de.js +76 -2
  284. package/dist/i18n/locales/el.d.ts +74 -0
  285. package/dist/i18n/locales/el.js +76 -2
  286. package/dist/i18n/locales/en.d.ts +92 -0
  287. package/dist/i18n/locales/en.js +94 -2
  288. package/dist/i18n/locales/es.d.ts +74 -0
  289. package/dist/i18n/locales/es.js +76 -2
  290. package/dist/i18n/locales/fr.d.ts +74 -0
  291. package/dist/i18n/locales/fr.js +76 -2
  292. package/dist/i18n/locales/hi.d.ts +74 -0
  293. package/dist/i18n/locales/hi.js +76 -2
  294. package/dist/i18n/locales/it.d.ts +74 -0
  295. package/dist/i18n/locales/it.js +76 -2
  296. package/dist/i18n/locales/ja.d.ts +74 -0
  297. package/dist/i18n/locales/ja.js +76 -2
  298. package/dist/i18n/locales/nl.d.ts +74 -0
  299. package/dist/i18n/locales/nl.js +76 -2
  300. package/dist/i18n/locales/pl.d.ts +74 -0
  301. package/dist/i18n/locales/pl.js +76 -2
  302. package/dist/i18n/locales/pt.d.ts +74 -0
  303. package/dist/i18n/locales/pt.js +76 -2
  304. package/dist/i18n/locales/ro.d.ts +74 -0
  305. package/dist/i18n/locales/ro.js +76 -2
  306. package/dist/i18n/locales/ru.d.ts +74 -0
  307. package/dist/i18n/locales/ru.js +76 -2
  308. package/dist/i18n/locales/sq.d.ts +74 -0
  309. package/dist/i18n/locales/sq.js +76 -2
  310. package/dist/i18n/locales/sv.d.ts +74 -0
  311. package/dist/i18n/locales/sv.js +76 -2
  312. package/dist/i18n/locales/tr.d.ts +74 -0
  313. package/dist/i18n/locales/tr.js +76 -2
  314. package/dist/i18n/locales/zh.d.ts +74 -0
  315. package/dist/i18n/locales/zh.js +76 -2
  316. package/dist/index.js +688 -673
  317. package/dist/locales/ar.json +76 -2
  318. package/dist/locales/de.json +76 -2
  319. package/dist/locales/el.json +76 -2
  320. package/dist/locales/en.json +76 -2
  321. package/dist/locales/es.json +76 -2
  322. package/dist/locales/fr.json +76 -2
  323. package/dist/locales/hi.json +76 -2
  324. package/dist/locales/it.json +76 -2
  325. package/dist/locales/ja.json +76 -2
  326. package/dist/locales/nl.json +76 -2
  327. package/dist/locales/pl.json +76 -2
  328. package/dist/locales/pt.json +76 -2
  329. package/dist/locales/ro.json +76 -2
  330. package/dist/locales/ru.json +76 -2
  331. package/dist/locales/sq.json +76 -2
  332. package/dist/locales/sv.json +76 -2
  333. package/dist/locales/tr.json +76 -2
  334. package/dist/locales/zh.json +76 -2
  335. package/dist/patterns/alia-assistant/index.js +1 -1
  336. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  337. package/dist/patterns/patient-shell/index.js +1 -1
  338. package/dist/tokens.css +3 -2
  339. package/package.json +14 -1
  340. package/dist/_chunks/address-autocomplete-CT-9AOli.js +0 -358
  341. package/dist/_chunks/bishop-score-CjsB9bM-.js +0 -185
  342. package/dist/_chunks/bmi-calculator-n-823_1V.js +0 -258
  343. package/dist/_chunks/editable-currency-cell-renderer-D1ewvJKO.js +0 -2391
  344. package/dist/_chunks/registry-nPAVE19X.js +0 -21
  345. package/dist/_chunks/rich-text-editor-DAeCXiQG.js +0 -1973
  346. package/dist/_chunks/unit-converter-C1V3ACM9.js +0 -196
  347. package/dist/_chunks/warning-stack-Cv4fr5zo.js +0 -220
@@ -0,0 +1,889 @@
1
+ import { jsxs as C, jsx as d, Fragment as ce } from "react/jsx-runtime";
2
+ import { createElement as F, useRef as B, useEffect as ue, useCallback as H, forwardRef as me, useState as J, useImperativeHandle as fe, useMemo as O } from "react";
3
+ import { useTranslation as A } from "react-i18next";
4
+ import { k as G, j as $, c as E, b as W, d as pe, N as he, g as L, f as z, e as S, S as I, a as _, T as K, U as ge, A as be, D as R, l as Te } from "./actions-cell-renderer-DrcaxB0w.js";
5
+ import { S as Ce } from "./select-DMLG44F5.js";
6
+ import { u as ve } from "./registry-DvAUVLHh.js";
7
+ import { B as Z } from "./badge-CqGsX32l.js";
8
+ import { c as ee } from "./index-D2ZczOXr.js";
9
+ import { T as q } from "./tooltip-DvmfrNvB.js";
10
+ import { c as U } from "./createLucideIcon-CrFbzy84.js";
11
+ import { M as te } from "./mail-C8irm52s.js";
12
+ import { T as Ne } from "./timestamp-BV2lC-wV.js";
13
+ import { C as we } from "./calendar-clock-CYkcqdwl.js";
14
+ import { A as Pe } from "./avatar-BNQNhoyL.js";
15
+ import { E as Re } from "./eye-LHlSU38h.js";
16
+ import { P as xe } from "./pencil-CfQX-0Qc.js";
17
+ import { U as ye } from "./users-MBVtUzwd.js";
18
+ import { T as Fe } from "./trash-2-rPAKaRgB.js";
19
+ /**
20
+ * @license lucide-react v1.8.0 - ISC
21
+ *
22
+ * This source code is licensed under the ISC license.
23
+ * See the LICENSE file in the root directory of this source tree.
24
+ */
25
+ const Ae = [
26
+ ["path", { d: "M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h9", key: "1j9vog" }],
27
+ ["path", { d: "m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7", key: "1ocrg3" }],
28
+ ["path", { d: "m17 17 4 4", key: "1b3523" }],
29
+ ["path", { d: "m21 17-4 4", key: "uinynz" }]
30
+ ], Se = U("mail-x", Ae);
31
+ /**
32
+ * @license lucide-react v1.8.0 - ISC
33
+ *
34
+ * This source code is licensed under the ISC license.
35
+ * See the LICENSE file in the root directory of this source tree.
36
+ */
37
+ const Ie = [
38
+ [
39
+ "path",
40
+ {
41
+ d: "M19 19H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.7.7 0 0 1 2 21.286V5a2 2 0 0 1 1.184-1.826",
42
+ key: "1wyg69"
43
+ }
44
+ ],
45
+ ["path", { d: "m2 2 20 20", key: "1ooewy" }],
46
+ ["path", { d: "M8.656 3H20a2 2 0 0 1 2 2v11.344", key: "mhl4k6" }]
47
+ ], Ve = U("message-square-off", Ie);
48
+ /**
49
+ * @license lucide-react v1.8.0 - ISC
50
+ *
51
+ * This source code is licensed under the ISC license.
52
+ * See the LICENSE file in the root directory of this source tree.
53
+ */
54
+ const ke = [
55
+ [
56
+ "path",
57
+ {
58
+ d: "M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",
59
+ key: "18887p"
60
+ }
61
+ ]
62
+ ], ne = U("message-square", ke), Ee = 5e4;
63
+ function We(e) {
64
+ return e === 0 ? { variant: "success", statusKey: "settled" } : e <= Ee ? { variant: "warning", statusKey: "pending" } : { variant: "error", statusKey: "overdue" };
65
+ }
66
+ function Be(e) {
67
+ if (e == null || e === "") return null;
68
+ const n = typeof e == "number" ? e : Number(e);
69
+ return Number.isFinite(n) ? n : null;
70
+ }
71
+ function De(e) {
72
+ const { value: n, currency: s = "EUR", options: r } = e, { t: i, i18n: o } = A("ui"), c = Be(n);
73
+ if (c === null) return null;
74
+ const f = o.language || "en", l = new Intl.NumberFormat(f, {
75
+ style: "currency",
76
+ currency: s,
77
+ ...r
78
+ }).format(c / 100), { variant: m, statusKey: t } = We(c), a = i(`patientTable.balance.status.${t}`);
79
+ return /* @__PURE__ */ C(Z, { variant: m, withDot: !0, size: "sm", className: "ds:tabular-nums", children: [
80
+ /* @__PURE__ */ d("span", { children: l }),
81
+ /* @__PURE__ */ d("span", { className: "ds:sr-only", children: a })
82
+ ] });
83
+ }
84
+ const Me = {
85
+ accepted: "success",
86
+ estimate: "info",
87
+ none: "neutral"
88
+ };
89
+ function Le(e) {
90
+ return e === "accepted" || e === "estimate" || e === "none";
91
+ }
92
+ function ze(e) {
93
+ const { t: n } = A("ui"), { data: s, value: r, size: i = "sm" } = e, o = (s == null ? void 0 : s.carePlanStatus) ?? r;
94
+ if (!Le(o)) return null;
95
+ const c = Me[o];
96
+ return /* @__PURE__ */ d(Z, { variant: c, withDot: !0, size: i, children: n(`patientTable.carePlanStatus.${o}`) });
97
+ }
98
+ const X = ee(
99
+ [
100
+ "ds:inline-flex ds:items-center ds:justify-center ds:size-4 ds:shrink-0",
101
+ "ds:rounded-[var(--radius-sm)]"
102
+ ].join(" "),
103
+ {
104
+ variants: {
105
+ eligible: {
106
+ // Eligible → success-tinted glyph; ineligible → muted/greyed glyph.
107
+ true: "ds:text-[color:var(--success)]",
108
+ false: "ds:text-[color:var(--muted-foreground)]"
109
+ }
110
+ },
111
+ defaultVariants: {
112
+ eligible: !1
113
+ }
114
+ }
115
+ );
116
+ function ae(e) {
117
+ var u;
118
+ const { data: n, hideDetails: s = !1 } = e, { t: r } = A("ui");
119
+ if (!n) return null;
120
+ const { phoneNumbers: i, email: o, emailEnabled: c, emailValid: f } = n, l = ((u = i == null ? void 0 : i[0]) == null ? void 0 : u.number) ?? "", m = !!o, t = (i ?? []).some((b) => b.smsEnabled), a = !!(c && f);
121
+ if (!l && !m) return null;
122
+ const p = s ? r("patientTable.contact.emailMasked") : o ?? "", h = r(t ? "patientTable.contact.smsEligible" : "patientTable.contact.smsIneligible"), g = r(a ? "patientTable.contact.emailEligible" : "patientTable.contact.emailIneligible");
123
+ return /* @__PURE__ */ C("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)]", children: [
124
+ /* @__PURE__ */ C("span", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)] ds:min-w-0 ds:leading-tight", children: [
125
+ l ? /* @__PURE__ */ d("span", { className: "type-meta ds:truncate ds:text-start", children: l }) : null,
126
+ m ? /* @__PURE__ */ d("span", { className: "type-meta ds:truncate ds:text-start ds:text-[color:var(--muted-foreground)]", children: p }) : null
127
+ ] }),
128
+ /* @__PURE__ */ C("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)] ds:shrink-0", children: [
129
+ /* @__PURE__ */ d(q, { label: h, children: /* @__PURE__ */ d(
130
+ "span",
131
+ {
132
+ role: "img",
133
+ "aria-label": h,
134
+ className: X({ eligible: t }),
135
+ children: t ? /* @__PURE__ */ d(ne, { "aria-hidden": !0, size: 14, className: "ds:size-[14px]" }) : /* @__PURE__ */ d(
136
+ Ve,
137
+ {
138
+ "aria-hidden": !0,
139
+ size: 14,
140
+ className: "ds:size-[14px]"
141
+ }
142
+ )
143
+ }
144
+ ) }),
145
+ /* @__PURE__ */ d(q, { label: g, children: /* @__PURE__ */ d(
146
+ "span",
147
+ {
148
+ role: "img",
149
+ "aria-label": g,
150
+ className: X({ eligible: a }),
151
+ children: a ? /* @__PURE__ */ d(te, { "aria-hidden": !0, size: 14, className: "ds:size-[14px]" }) : /* @__PURE__ */ d(Se, { "aria-hidden": !0, size: 14, className: "ds:size-[14px]" })
152
+ }
153
+ ) })
154
+ ] })
155
+ ] });
156
+ }
157
+ ae.displayName = "ContactCell";
158
+ const Y = ee(
159
+ "ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] ds:whitespace-nowrap",
160
+ {
161
+ variants: {
162
+ tone: {
163
+ default: "",
164
+ // Imminent visit: warning foreground token + medium weight. Fully
165
+ // token-bound — no literal colour, no AG Grid cellStyle.
166
+ soon: "ds:text-[color:var(--warning-foreground)] ds:font-medium",
167
+ // Absent appointment: muted empty state.
168
+ empty: "ds:text-[color:var(--muted-foreground)]"
169
+ }
170
+ },
171
+ defaultVariants: { tone: "default" }
172
+ }
173
+ ), _e = 1440 * 60 * 1e3, He = 7;
174
+ function Oe(e) {
175
+ if (e == null || e === "") return null;
176
+ const n = e instanceof Date ? e.getTime() : typeof e == "number" ? e : new Date(String(e)).getTime();
177
+ return Number.isNaN(n) ? null : n;
178
+ }
179
+ function je(e, n) {
180
+ if (n <= 0) return "default";
181
+ const s = e - Date.now();
182
+ return s < 0 ? "default" : s <= n * _e ? "soon" : "default";
183
+ }
184
+ function Ue(e) {
185
+ const { t: n } = A("ui"), { data: s, value: r, soonWithinDays: i = He } = e, o = Oe((s == null ? void 0 : s.nextAppointment) ?? r);
186
+ if (o === null)
187
+ return /* @__PURE__ */ d("span", { className: Y({ tone: "empty" }), children: n("patientTable.nextAppointment.none") });
188
+ const c = je(o, i);
189
+ return /* @__PURE__ */ C("span", { className: Y({ tone: c }), children: [
190
+ c === "soon" ? /* @__PURE__ */ d(we, { "aria-hidden": "true", className: "ds:size-3.5 ds:shrink-0" }) : null,
191
+ /* @__PURE__ */ d(Ne, { value: o, format: "relative", shape: "bare" })
192
+ ] });
193
+ }
194
+ function Ge(e, n) {
195
+ return typeof e == "function" ? e(n) : e;
196
+ }
197
+ function $e(e) {
198
+ return /^(https?:\/\/|\/|#)/i.test(e) ? e : "#";
199
+ }
200
+ function Ke(e) {
201
+ return [e.firstName, e.lastName].filter(Boolean).join(" ").trim();
202
+ }
203
+ function qe(e) {
204
+ var h;
205
+ const { data: n, node: s, href: r, onSelect: i } = e, { t: o } = A("ui");
206
+ if (!n || s != null && s.rowPinned) return null;
207
+ const c = Ke(n);
208
+ if (!c) return null;
209
+ const f = Ge(r, n), l = ((h = n.italianFiscalCode) == null ? void 0 : h.trim()) || void 0, m = o("patientTable.identity.viewPatient", { name: c }), t = [
210
+ "ds:group",
211
+ "ds:flex ds:items-center ds:gap-[var(--spacing-sm)]",
212
+ "ds:text-start",
213
+ "ds:rounded-[var(--radius-sm)]",
214
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)]",
215
+ "ds:focus-visible:outline-solid",
216
+ "ds:focus-visible:outline-[color:var(--ring)]",
217
+ "ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]"
218
+ ].join(" "), a = (g) => {
219
+ i && (f || g.preventDefault(), g.stopPropagation(), i(n));
220
+ }, p = /* @__PURE__ */ C(ce, { children: [
221
+ /* @__PURE__ */ d(
222
+ Pe,
223
+ {
224
+ name: c,
225
+ src: n.avatarUrl,
226
+ size: "sm",
227
+ "aria-hidden": "true",
228
+ className: "ds:shrink-0"
229
+ }
230
+ ),
231
+ /* @__PURE__ */ C("span", { className: "ds:flex ds:min-w-0 ds:flex-col ds:leading-tight", children: [
232
+ /* @__PURE__ */ d("span", { className: "ds:truncate ds:font-semibold ds:text-[color:var(--foreground)] ds:group-hover:underline", children: c }),
233
+ l ? /* @__PURE__ */ C("span", { className: "type-meta ds:truncate ds:text-[color:var(--muted-foreground)]", children: [
234
+ /* @__PURE__ */ C("span", { className: "ds:sr-only", children: [
235
+ o("patientTable.identity.fiscalCodeLabel"),
236
+ ": "
237
+ ] }),
238
+ l
239
+ ] }) : null
240
+ ] })
241
+ ] });
242
+ return f ? /* @__PURE__ */ d(
243
+ "a",
244
+ {
245
+ href: $e(f),
246
+ "aria-label": m,
247
+ onClick: a,
248
+ className: t,
249
+ children: p
250
+ }
251
+ ) : /* @__PURE__ */ d(
252
+ "button",
253
+ {
254
+ type: "button",
255
+ "aria-label": m,
256
+ onClick: a,
257
+ className: `ds:appearance-none ds:bg-transparent ds:p-0 ${t}`,
258
+ children: p
259
+ }
260
+ );
261
+ }
262
+ function j(e) {
263
+ return e.responsiveTier;
264
+ }
265
+ function Xe(e, n) {
266
+ const s = (i) => (o) => {
267
+ n == null || n(i, o);
268
+ }, r = (i, o) => ({
269
+ icon: i.icon,
270
+ label: i.label,
271
+ variant: i.variant,
272
+ onClick: s(i),
273
+ ...o
274
+ });
275
+ return [
276
+ r(
277
+ {
278
+ id: "show",
279
+ label: e("patientTable.actions.show"),
280
+ icon: F(Re, { "aria-hidden": "true" })
281
+ },
282
+ {}
283
+ ),
284
+ r(
285
+ {
286
+ id: "edit",
287
+ label: e("patientTable.actions.edit"),
288
+ icon: F(xe, { "aria-hidden": "true" })
289
+ },
290
+ {}
291
+ ),
292
+ r(
293
+ {
294
+ id: "sendEmailReminder",
295
+ label: e("patientTable.actions.sendEmailReminder"),
296
+ icon: F(te, { "aria-hidden": "true" })
297
+ },
298
+ // Hidden when the patient has email contact disabled (spec).
299
+ { hidden: (i) => !i.emailEnabled }
300
+ ),
301
+ r(
302
+ {
303
+ id: "sendSmsReminder",
304
+ label: e("patientTable.actions.sendSmsReminder"),
305
+ icon: F(ne, { "aria-hidden": "true" })
306
+ },
307
+ // Hidden when no phone number is SMS-enabled (spec).
308
+ {
309
+ hidden: (i) => !(i.phoneNumbers ?? []).some((o) => o.smsEnabled)
310
+ }
311
+ ),
312
+ r(
313
+ {
314
+ id: "reassign",
315
+ label: e("patientTable.actions.reassign"),
316
+ icon: F(ye, { "aria-hidden": "true" })
317
+ },
318
+ {}
319
+ ),
320
+ r(
321
+ {
322
+ id: "delete",
323
+ label: e("patientTable.actions.delete"),
324
+ icon: F(Fe, { "aria-hidden": "true" }),
325
+ variant: "destructive"
326
+ },
327
+ // Disabled (with a reason) for archived patients — the row model's
328
+ // closest "cannot delete" signal. Surfaced as the inline tooltip.
329
+ {
330
+ disabled: (i) => !!i.isArchived,
331
+ disabledReason: e("patientTable.actions.deleteLocked")
332
+ }
333
+ )
334
+ ];
335
+ }
336
+ const Ye = () => !1;
337
+ function Qe(e, n = {}) {
338
+ const {
339
+ hideDetails: s = !1,
340
+ getActionsCompact: r = Ye,
341
+ onRowAction: i,
342
+ identityHref: o
343
+ } = n, c = Xe(e, i), f = {
344
+ m: e("patientTable.gender.m"),
345
+ f: e("patientTable.gender.f"),
346
+ x: e("patientTable.gender.x")
347
+ }, l = (t) => e(`patientTable.column.${t}`);
348
+ return [
349
+ /* ── Identity (P0, pinned-start) ──────────────────────────────── */
350
+ {
351
+ colId: "identity",
352
+ headerName: l("identity"),
353
+ // Pinned to the inline-start edge so the patient stays anchored while the
354
+ // lower-priority field columns scroll. AG Grid `pinned` is physical; the
355
+ // hook/grid set `enableRtl` so logical start resolves correctly per dir.
356
+ pinned: "left",
357
+ cellRenderer: qe,
358
+ cellRendererParams: {
359
+ href: o,
360
+ // When no detail href is supplied the cell renders a button; route its
361
+ // click through the same `show` row action.
362
+ onSelect: i ? (t) => i(
363
+ { id: "show", label: e("patientTable.actions.show") },
364
+ t
365
+ ) : void 0
366
+ },
367
+ // Sort + typeahead read the composed full name.
368
+ valueGetter: (t) => t.data ? [t.data.firstName, t.data.lastName].filter(Boolean).join(" ").trim() : "",
369
+ filter: $,
370
+ floatingFilterComponent: G,
371
+ minWidth: 220,
372
+ flex: 2
373
+ // Identity is never auto-hidden (no tier) — it is the row anchor.
374
+ },
375
+ /* ── Next appointment (P1) ────────────────────────────────────── */
376
+ {
377
+ colId: "nextAppointment",
378
+ headerName: l("nextAppointment"),
379
+ responsiveTier: "P1",
380
+ field: "nextAppointment",
381
+ cellRenderer: Ue,
382
+ filter: W,
383
+ floatingFilterComponent: E,
384
+ minWidth: 160,
385
+ width: 180
386
+ },
387
+ /* ── Unpaid balance (P1) ──────────────────────────────────────── */
388
+ {
389
+ colId: "unpaidBalance",
390
+ headerName: l("unpaidBalance"),
391
+ responsiveTier: "P1",
392
+ field: "unpaidAmount",
393
+ type: "numericColumn",
394
+ cellRenderer: De,
395
+ filter: he,
396
+ floatingFilterComponent: pe,
397
+ // Money is integer cents; the inRange filter compares cents directly.
398
+ filterParams: { defaultOperator: "inRange", min: 0 },
399
+ minWidth: 150,
400
+ width: 170
401
+ },
402
+ /* ── Phone / contact (P1) ─────────────────────────────────────── */
403
+ {
404
+ colId: "phone",
405
+ headerName: l("phone"),
406
+ responsiveTier: "P1",
407
+ cellRenderer: ae,
408
+ cellRendererParams: { hideDetails: s },
409
+ // Filter on the primary phone number string.
410
+ filterValueGetter: (t) => {
411
+ var a, p, h;
412
+ return ((h = (p = (a = t.data) == null ? void 0 : a.phoneNumbers) == null ? void 0 : p[0]) == null ? void 0 : h.number) ?? "";
413
+ },
414
+ filter: z,
415
+ floatingFilterComponent: L,
416
+ sortable: !1,
417
+ minWidth: 180,
418
+ width: 220
419
+ },
420
+ /* ── Email (P2) — masked under hideDetails ────────────────────── */
421
+ {
422
+ colId: "email",
423
+ headerName: l("email"),
424
+ responsiveTier: "P2",
425
+ field: "email",
426
+ // When details are hidden the address never reaches the cell; the column
427
+ // simply hides. The platform passes hideDetails from `hidePatientDetails`.
428
+ //
429
+ // Emit `hide` ONLY when masking (never a literal `hide: false`). A static
430
+ // `hide: false` on the colDef is re-applied by AG Grid on every
431
+ // `columnDefs` reconcile, which would clobber a runtime hide performed by
432
+ // the ViewSwitcher (`api.setColumnsVisible(['email'], false)`) and silently
433
+ // re-show the column. Columns that omit `hide` keep their runtime
434
+ // visibility across reconciles — so `undefined` is the correct default.
435
+ hide: s || void 0,
436
+ filter: z,
437
+ floatingFilterComponent: L,
438
+ minWidth: 200,
439
+ width: 240
440
+ },
441
+ /* ── Care-plan status (P2) ────────────────────────────────────── */
442
+ {
443
+ colId: "carePlanStatus",
444
+ headerName: l("carePlanStatus"),
445
+ responsiveTier: "P2",
446
+ field: "carePlanStatus",
447
+ cellRenderer: ze,
448
+ filter: I,
449
+ floatingFilterComponent: S,
450
+ filterParams: {
451
+ options: [
452
+ {
453
+ value: "accepted",
454
+ label: e("patientTable.carePlanStatus.accepted")
455
+ },
456
+ {
457
+ value: "estimate",
458
+ label: e("patientTable.carePlanStatus.estimate")
459
+ },
460
+ { value: "none", label: e("patientTable.carePlanStatus.none") }
461
+ ]
462
+ },
463
+ sortable: !1,
464
+ minWidth: 130,
465
+ width: 150
466
+ },
467
+ /* ── Last visit (P2) ──────────────────────────────────────────── */
468
+ {
469
+ colId: "lastVisit",
470
+ headerName: l("lastVisit"),
471
+ responsiveTier: "P2",
472
+ field: "lastAppointment",
473
+ cellRenderer: _,
474
+ cellRendererParams: { format: "relative" },
475
+ filter: W,
476
+ floatingFilterComponent: E,
477
+ minWidth: 140,
478
+ width: 160
479
+ },
480
+ /* ── Date of birth / age (P2) ─────────────────────────────────── */
481
+ {
482
+ colId: "dateOfBirth",
483
+ headerName: l("dateOfBirth"),
484
+ responsiveTier: "P2",
485
+ field: "dateOfBirth",
486
+ cellRenderer: _,
487
+ cellRendererParams: { format: "date" },
488
+ filter: W,
489
+ floatingFilterComponent: E,
490
+ minWidth: 140,
491
+ width: 160
492
+ },
493
+ /* ── Gender (P3, hidden by default — opt-in via ColumnToggle) ──── */
494
+ {
495
+ colId: "gender",
496
+ headerName: l("gender"),
497
+ responsiveTier: "P3",
498
+ field: "gender",
499
+ hide: !0,
500
+ // Map the raw code to a localised label for both cell + set filter.
501
+ valueGetter: (t) => {
502
+ var a;
503
+ return (a = t.data) != null && a.gender ? f[t.data.gender] : "";
504
+ },
505
+ filter: I,
506
+ floatingFilterComponent: S,
507
+ filterParams: {
508
+ options: [
509
+ { value: f.m, label: f.m },
510
+ { value: f.f, label: f.f },
511
+ { value: f.x, label: f.x }
512
+ ]
513
+ },
514
+ minWidth: 110,
515
+ width: 130
516
+ },
517
+ /* ── Source (P3) ──────────────────────────────────────────────── */
518
+ {
519
+ colId: "source",
520
+ headerName: l("source"),
521
+ responsiveTier: "P3",
522
+ // TagListCellRenderer expects an array; wrap the single source string.
523
+ valueGetter: (t) => {
524
+ var a;
525
+ return (a = t.data) != null && a.source ? [t.data.source] : [];
526
+ },
527
+ cellRenderer: K,
528
+ filterValueGetter: (t) => {
529
+ var a;
530
+ return ((a = t.data) == null ? void 0 : a.source) ?? "";
531
+ },
532
+ filter: I,
533
+ floatingFilterComponent: S,
534
+ sortable: !1,
535
+ minWidth: 120,
536
+ width: 150
537
+ },
538
+ /* ── Default insurance (P3, text) ─────────────────────────────── */
539
+ {
540
+ colId: "defaultInsurance",
541
+ headerName: l("defaultInsurance"),
542
+ responsiveTier: "P3",
543
+ field: "defaultInsurance",
544
+ filter: I,
545
+ floatingFilterComponent: S,
546
+ minWidth: 140,
547
+ width: 160
548
+ },
549
+ /* ── Fiscal code (P3, text) ───────────────────────────────────── */
550
+ {
551
+ colId: "fiscalCode",
552
+ headerName: l("fiscalCode"),
553
+ responsiveTier: "P3",
554
+ field: "italianFiscalCode",
555
+ filter: z,
556
+ floatingFilterComponent: L,
557
+ minWidth: 160,
558
+ width: 180
559
+ },
560
+ /* ── Tags (P3) ────────────────────────────────────────────────── */
561
+ {
562
+ colId: "tags",
563
+ headerName: l("tags"),
564
+ responsiveTier: "P3",
565
+ field: "tags",
566
+ cellRenderer: K,
567
+ // Match a single selected tag against the row's tag array.
568
+ filterValueGetter: (t) => {
569
+ var a;
570
+ return ((a = t.data) == null ? void 0 : a.tags) ?? [];
571
+ },
572
+ filter: I,
573
+ floatingFilterComponent: S,
574
+ sortable: !1,
575
+ minWidth: 160,
576
+ width: 200
577
+ },
578
+ /* ── Assigned member (P3) ─────────────────────────────────────── */
579
+ {
580
+ colId: "assignedMember",
581
+ headerName: l("assignedMember"),
582
+ responsiveTier: "P3",
583
+ cellRenderer: ge,
584
+ valueGetter: (t) => {
585
+ var a;
586
+ return (a = t.data) != null && a.personalAssistant ? { name: t.data.personalAssistant } : null;
587
+ },
588
+ comparator: (t, a) => ((t == null ? void 0 : t.name) ?? "").localeCompare((a == null ? void 0 : a.name) ?? ""),
589
+ filterValueGetter: (t) => {
590
+ var a;
591
+ return ((a = t.data) == null ? void 0 : a.personalAssistant) ?? "";
592
+ },
593
+ filter: $,
594
+ floatingFilterComponent: G,
595
+ minWidth: 160,
596
+ width: 180
597
+ },
598
+ /* ── Created at (P3) ──────────────────────────────────────────── */
599
+ {
600
+ colId: "createdAt",
601
+ headerName: l("createdAt"),
602
+ responsiveTier: "P3",
603
+ field: "createdAt",
604
+ cellRenderer: _,
605
+ cellRendererParams: { format: "date" },
606
+ filter: W,
607
+ floatingFilterComponent: E,
608
+ minWidth: 140,
609
+ width: 160
610
+ },
611
+ /* ── Actions (P0, pinned-end) ─────────────────────────────────── */
612
+ {
613
+ colId: "actions",
614
+ headerName: l("actions"),
615
+ // Pinned to the inline-end edge so actions stay reachable while the field
616
+ // columns scroll. AG Grid `pinned` is physical — the grid's `enableRtl`
617
+ // flips this to the start edge under RTL.
618
+ pinned: "right",
619
+ // Right-align the header (the class AG Grid's numericColumn uses); the
620
+ // action group itself stays centred via the token-bound justify class.
621
+ headerClass: "ag-right-aligned-header",
622
+ cellClass: "ds:justify-center",
623
+ cellRenderer: be,
624
+ cellRendererParams: {
625
+ actions: c,
626
+ intent: "ghost",
627
+ group: !0,
628
+ label: e("patientTable.actions.group"),
629
+ collapsed: r
630
+ },
631
+ sortable: !1,
632
+ filter: !1,
633
+ resizable: !1,
634
+ // Spec: 180px expanded → 88px collapsed (min). The renderer collapses to a
635
+ // single overflow trigger via `getActionsCompact`; the column min lets it
636
+ // shrink to the compact footprint.
637
+ width: 180,
638
+ minWidth: 88
639
+ // Actions are never auto-hidden (no tier) — they are always reachable.
640
+ }
641
+ ];
642
+ }
643
+ const Je = [
644
+ { minWidth: 0, tier: "P0" },
645
+ { minWidth: 640, tier: "P1" },
646
+ { minWidth: 900, tier: "P2" },
647
+ { minWidth: 1200, tier: "P3" }
648
+ ];
649
+ function Q(e, n) {
650
+ const s = /* @__PURE__ */ new Set();
651
+ for (const r of n)
652
+ e >= r.minWidth && s.add(r.tier);
653
+ return s.add("P0"), s;
654
+ }
655
+ function Ze(e, n) {
656
+ const {
657
+ containerRef: s,
658
+ enabled: r = !0,
659
+ breakpoints: i = Je
660
+ } = n, o = B(/* @__PURE__ */ new Set()), c = B(!1);
661
+ return ue(() => {
662
+ const l = s.current;
663
+ if (!r || !l) return;
664
+ const m = () => {
665
+ var u;
666
+ return (u = e.current) == null ? void 0 : u.getRawApi();
667
+ }, t = (u) => {
668
+ if (c.current || u.source === "api") return;
669
+ const b = u.columns ?? (u.column ? [u.column] : []);
670
+ for (const v of b)
671
+ o.current.add(v.getColId());
672
+ };
673
+ let a = !1;
674
+ const p = (u) => {
675
+ if (a) return;
676
+ a = !0;
677
+ const b = u.getColumns(), v = l.getBoundingClientRect().width, x = Q(v, i);
678
+ if (b)
679
+ for (const T of b) {
680
+ const N = j(T.getColDef());
681
+ N && !T.isVisible() && x.has(N) && o.current.add(T.getColId());
682
+ }
683
+ u.addEventListener("columnVisible", t);
684
+ }, h = () => {
685
+ const u = m();
686
+ if (!u) return;
687
+ p(u);
688
+ const b = u.getColumns();
689
+ if (!b) return;
690
+ const v = l.getBoundingClientRect().width, x = Q(v, i), T = [], N = [];
691
+ for (const w of b) {
692
+ const D = w.getColId();
693
+ if (o.current.has(D)) continue;
694
+ const V = j(w.getColDef());
695
+ if (!V) continue;
696
+ const k = x.has(V);
697
+ k && !w.isVisible() ? T.push(w) : !k && w.isVisible() && N.push(w);
698
+ }
699
+ if (!(T.length === 0 && N.length === 0)) {
700
+ c.current = !0;
701
+ try {
702
+ T.length > 0 && u.setColumnsVisible(T, !0), N.length > 0 && u.setColumnsVisible(N, !1);
703
+ } finally {
704
+ c.current = !1;
705
+ }
706
+ }
707
+ }, g = new ResizeObserver(() => h());
708
+ return g.observe(l), h(), () => {
709
+ var u;
710
+ g.disconnect(), (u = m()) == null || u.removeEventListener("columnVisible", t);
711
+ };
712
+ }, [s, r, i, e]), { lockColumns: H((l) => {
713
+ for (const m of l) o.current.add(m);
714
+ }, []) };
715
+ }
716
+ function et(e) {
717
+ var n;
718
+ return (n = e.data) != null && n.isArchived ? "data-table-row-archived" : void 0;
719
+ }
720
+ function tt(e) {
721
+ return e.data.id;
722
+ }
723
+ function nt({
724
+ views: e,
725
+ handleRef: n,
726
+ lockColumns: s,
727
+ label: r
728
+ }) {
729
+ const [i, o] = J(""), c = O(
730
+ () => e.map((m) => ({ value: m.id, label: m.label })),
731
+ [e]
732
+ ), f = H(
733
+ (m) => {
734
+ const t = e.find((h) => h.id === m), a = n.current;
735
+ if (!t || !a) return;
736
+ const p = a.getRawApi();
737
+ if (p) {
738
+ const h = new Set(t.columns), g = [], u = [];
739
+ for (const b of p.getColumns() ?? []) {
740
+ if (j(b.getColDef()) === void 0) continue;
741
+ const v = b.getColId();
742
+ h.has(v) ? g.push(v) : u.push(v);
743
+ }
744
+ s([...g, ...u]), g.length > 0 && p.setColumnsVisible(g, !0), u.length > 0 && p.setColumnsVisible(u, !1);
745
+ }
746
+ a.setFilter(t.filterModel), a.setSort(t.sortModel), p == null || p.onFilterChanged();
747
+ },
748
+ [e, n, s]
749
+ ), l = H(
750
+ (m) => {
751
+ o(m), m && f(m);
752
+ },
753
+ [f]
754
+ );
755
+ return (
756
+ // Width-constraining wrapper (same pattern as the toolbar's QuickSearch) so
757
+ // the Select's intrinsic `w-full` trigger sizes to a compact, legible width
758
+ // instead of absorbing the whole FilterBar row.
759
+ /* @__PURE__ */ d("div", { className: "ds:w-[12rem] ds:max-w-full ds:min-w-0 ds:shrink-0", children: /* @__PURE__ */ d(
760
+ Ce,
761
+ {
762
+ options: c,
763
+ value: i,
764
+ onValueChange: l,
765
+ size: "sm",
766
+ "aria-label": r
767
+ }
768
+ ) })
769
+ );
770
+ }
771
+ const at = me(
772
+ function({
773
+ rowData: n,
774
+ columns: s,
775
+ gridId: r,
776
+ density: i,
777
+ responsive: o = !0,
778
+ views: c,
779
+ onRowAction: f,
780
+ bulkActions: l,
781
+ loading: m = !1,
782
+ toolbar: t,
783
+ hideQuickSearch: a = !1,
784
+ paginationPageSizeSelector: p,
785
+ hideDetails: h = !1,
786
+ identityHref: g,
787
+ "aria-label": u,
788
+ className: b
789
+ }, v) {
790
+ const { t: x } = A("ui"), T = B(null), N = B(null), [w, D] = J(null);
791
+ fe(
792
+ v,
793
+ () => w ?? T.current,
794
+ [w]
795
+ );
796
+ const { lockColumns: V } = Ze(T, {
797
+ containerRef: N,
798
+ enabled: o
799
+ }), k = O(
800
+ () => s ?? Qe(x, {
801
+ hideDetails: h,
802
+ onRowAction: f,
803
+ identityHref: g,
804
+ getActionsCompact: () => i === "compact"
805
+ }),
806
+ [s, x, h, f, g, i]
807
+ ), ie = ((c == null ? void 0 : c.length) ?? 0) > 0, le = /* @__PURE__ */ C(R.Toolbar, { children: [
808
+ /* @__PURE__ */ C(R.Toolbar.FilterBar, { children: [
809
+ ie && c ? /* @__PURE__ */ d(
810
+ nt,
811
+ {
812
+ views: c,
813
+ handleRef: T,
814
+ lockColumns: V,
815
+ label: x("patientTable.views.label")
816
+ }
817
+ ) : null,
818
+ a ? null : /* @__PURE__ */ d(R.Toolbar.QuickSearch, {}),
819
+ /* @__PURE__ */ d(R.Toolbar.FilterChips, {})
820
+ ] }),
821
+ /* @__PURE__ */ C(R.Toolbar.Actions, { children: [
822
+ l == null ? void 0 : l.map((P) => /* @__PURE__ */ d(
823
+ R.Toolbar.BulkAction,
824
+ {
825
+ label: P.label,
826
+ icon: P.icon,
827
+ variant: P.variant,
828
+ onClick: (y) => {
829
+ const de = (y == null ? void 0 : y.getSelectedNodes().map((M) => M.id).filter((M) => M != null)) ?? [];
830
+ P.onSelect(de);
831
+ }
832
+ },
833
+ P.id
834
+ )),
835
+ /* @__PURE__ */ d(R.Toolbar.ColumnToggle, {}),
836
+ /* @__PURE__ */ d(R.Toolbar.ExportMenu, {})
837
+ ] })
838
+ ] }), se = t ?? le, re = m ? void 0 : n, oe = O(() => ({ getRowId: tt }), []);
839
+ return ve(
840
+ Te,
841
+ w,
842
+ r
843
+ ), /* @__PURE__ */ d(
844
+ "div",
845
+ {
846
+ ref: N,
847
+ role: "region",
848
+ "aria-label": u ?? x("patientTable.regionLabel"),
849
+ "data-component": "patient-table",
850
+ "data-component-id": r,
851
+ className: "ds:flex ds:w-full ds:min-h-0 ds:flex-1 ds:flex-col",
852
+ children: /* @__PURE__ */ d(
853
+ R,
854
+ {
855
+ ref: (P) => {
856
+ T.current = P, D(
857
+ (y) => y === P ? y : P
858
+ );
859
+ },
860
+ gridId: r,
861
+ columnDefs: k,
862
+ rowData: re,
863
+ rowSelection: "multiple",
864
+ pagination: !0,
865
+ ...p !== void 0 ? { paginationPageSizeSelector: p } : {},
866
+ density: i,
867
+ getRowClass: et,
868
+ gridOptions: oe,
869
+ className: b,
870
+ children: se
871
+ }
872
+ )
873
+ }
874
+ );
875
+ }
876
+ );
877
+ at.displayName = "PatientTable";
878
+ export {
879
+ De as B,
880
+ ze as C,
881
+ Ue as N,
882
+ qe as P,
883
+ ae as a,
884
+ at as b,
885
+ Qe as c,
886
+ j as g,
887
+ Ze as u
888
+ };
889
+ //# sourceMappingURL=patient-table-CDuosVru.js.map