@alfadocs/ui-kit-debug 0.68.0 → 0.70.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 (930) hide show
  1. package/dist/_chunks/{accordion-9lJSMMsZ.js → accordion-DnIa7OHX.js} +69 -47
  2. package/dist/_chunks/accordion-DnIa7OHX.js.map +1 -0
  3. package/dist/_chunks/address-autocomplete-BEX9PXty.js +496 -0
  4. package/dist/_chunks/address-autocomplete-BEX9PXty.js.map +1 -0
  5. package/dist/_chunks/{agenda-card-BxSFkqgY.js → agenda-card-BQ-IKAru.js} +2 -2
  6. package/dist/_chunks/{agenda-card-BxSFkqgY.js.map → agenda-card-BQ-IKAru.js.map} +1 -1
  7. package/dist/_chunks/{agenda-card.agent-B_R47-c9.js → agenda-card.agent-mTCrkKSZ.js} +6 -1
  8. package/dist/_chunks/{agenda-card.agent-B_R47-c9.js.map → agenda-card.agent-mTCrkKSZ.js.map} +1 -1
  9. package/dist/_chunks/{agenda-tray-T-BumlGZ.js → agenda-tray-CGXRk58j.js} +37 -25
  10. package/dist/_chunks/agenda-tray-CGXRk58j.js.map +1 -0
  11. package/dist/_chunks/{ai-consent-banner-Dxtx_WAh.js → ai-consent-banner-Be-h9mRI.js} +5 -5
  12. package/dist/_chunks/{ai-consent-banner-Dxtx_WAh.js.map → ai-consent-banner-Be-h9mRI.js.map} +1 -1
  13. package/dist/_chunks/{ai-prompt-input-BwEACCPm.js → ai-prompt-input-CuhTo9mh.js} +80 -61
  14. package/dist/_chunks/ai-prompt-input-CuhTo9mh.js.map +1 -0
  15. package/dist/_chunks/ai-tools-rail-B5NEghsp.js +511 -0
  16. package/dist/_chunks/ai-tools-rail-B5NEghsp.js.map +1 -0
  17. package/dist/_chunks/{alert-_mUKLmwA.js → alert-CHYZ96tR.js} +150 -96
  18. package/dist/_chunks/alert-CHYZ96tR.js.map +1 -0
  19. package/dist/_chunks/{alia-sidebar-Ckv0yCKi.js → alia-sidebar-B47qRQb5.js} +5 -5
  20. package/dist/_chunks/{alia-sidebar-Ckv0yCKi.js.map → alia-sidebar-B47qRQb5.js.map} +1 -1
  21. package/dist/_chunks/{anamnesis-card-N8pIKWuS.js → anamnesis-card-DvYCa16e.js} +3 -3
  22. package/dist/_chunks/{anamnesis-card-N8pIKWuS.js.map → anamnesis-card-DvYCa16e.js.map} +1 -1
  23. package/dist/_chunks/anatomy-scheme-CJB6dI6p.js +2445 -0
  24. package/dist/_chunks/anatomy-scheme-CJB6dI6p.js.map +1 -0
  25. package/dist/_chunks/annotation-marker-qt5R9WZX.js +120 -0
  26. package/dist/_chunks/annotation-marker-qt5R9WZX.js.map +1 -0
  27. package/dist/_chunks/{antenatal-schedule-timeline-35ebkcZT.js → antenatal-schedule-timeline-CwXrQRm1.js} +2 -2
  28. package/dist/_chunks/{antenatal-schedule-timeline-35ebkcZT.js.map → antenatal-schedule-timeline-CwXrQRm1.js.map} +1 -1
  29. package/dist/_chunks/appointment-card-C06aZqA7.js +310 -0
  30. package/dist/_chunks/appointment-card-C06aZqA7.js.map +1 -0
  31. package/dist/_chunks/appointment-timeline-BJM0S_Fg.js +386 -0
  32. package/dist/_chunks/appointment-timeline-BJM0S_Fg.js.map +1 -0
  33. package/dist/_chunks/appointment-tray-DRRw5ROi.js +193 -0
  34. package/dist/_chunks/appointment-tray-DRRw5ROi.js.map +1 -0
  35. package/dist/_chunks/{audio-recorder-DjXLP4aF.js → audio-recorder-Cpdk5qpQ.js} +60 -57
  36. package/dist/_chunks/audio-recorder-Cpdk5qpQ.js.map +1 -0
  37. package/dist/_chunks/{autocomplete-CcCFlVf-.js → autocomplete-DOeGouCL.js} +157 -132
  38. package/dist/_chunks/autocomplete-DOeGouCL.js.map +1 -0
  39. package/dist/_chunks/{badge-CqGsX32l.js → badge-DCOqV9mI.js} +32 -27
  40. package/dist/_chunks/badge-DCOqV9mI.js.map +1 -0
  41. package/dist/_chunks/bishop-score-DnYWtZa_.js +304 -0
  42. package/dist/_chunks/bishop-score-DnYWtZa_.js.map +1 -0
  43. package/dist/_chunks/bmi-calculator-zjeY4E7J.js +434 -0
  44. package/dist/_chunks/bmi-calculator-zjeY4E7J.js.map +1 -0
  45. package/dist/_chunks/{booking-L8-YP8BJ.js → booking-DUBI0oqt.js} +422 -399
  46. package/dist/_chunks/booking-DUBI0oqt.js.map +1 -0
  47. package/dist/_chunks/{breadcrumb-OTbaY70e.js → breadcrumb-CchdeG7d.js} +42 -28
  48. package/dist/_chunks/breadcrumb-CchdeG7d.js.map +1 -0
  49. package/dist/_chunks/{calculator-dialog-CFk4I91b.js → calculator-dialog-BR5iU0kf.js} +2 -2
  50. package/dist/_chunks/{calculator-dialog-CFk4I91b.js.map → calculator-dialog-BR5iU0kf.js.map} +1 -1
  51. package/dist/_chunks/{calendar-oYWOCrnf.js → calendar-CZUjL8SZ.js} +258 -201
  52. package/dist/_chunks/calendar-CZUjL8SZ.js.map +1 -0
  53. package/dist/_chunks/{care-plan-card-BwVUyUBb.js → care-plan-card-C5sTfY9G.js} +13 -9
  54. package/dist/_chunks/care-plan-card-C5sTfY9G.js.map +1 -0
  55. package/dist/_chunks/{care-plan-entry-card-VzdQHcOL.js → care-plan-entry-card-CXnxGCWA.js} +20 -16
  56. package/dist/_chunks/care-plan-entry-card-CXnxGCWA.js.map +1 -0
  57. package/dist/_chunks/care-plan-header-BUwqDTtz.js +206 -0
  58. package/dist/_chunks/care-plan-header-BUwqDTtz.js.map +1 -0
  59. package/dist/_chunks/{carousel.agent-vt21A_el.js → carousel.agent-4v8Emr9E.js} +219 -198
  60. package/dist/_chunks/{carousel.agent-vt21A_el.js.map → carousel.agent-4v8Emr9E.js.map} +1 -1
  61. package/dist/_chunks/{chart-Cg3e9EH9.js → chart-CMr3eW62.js} +150 -109
  62. package/dist/_chunks/chart-CMr3eW62.js.map +1 -0
  63. package/dist/_chunks/{chat-container-ogB4OskO.js → chat-container-DWho5hPR.js} +47 -34
  64. package/dist/_chunks/chat-container-DWho5hPR.js.map +1 -0
  65. package/dist/_chunks/{chat-input-B5zjNEUN.js → chat-input-BcXTetgM.js} +57 -41
  66. package/dist/_chunks/chat-input-BcXTetgM.js.map +1 -0
  67. package/dist/_chunks/{checkbox-DRcOdmXv.js → checkbox-BuZ1u__2.js} +41 -27
  68. package/dist/_chunks/checkbox-BuZ1u__2.js.map +1 -0
  69. package/dist/_chunks/{checkbox-group-CpUwlHug.js → checkbox-group-PqNmQ-cE.js} +3 -3
  70. package/dist/_chunks/{checkbox-group-CpUwlHug.js.map → checkbox-group-PqNmQ-cE.js.map} +1 -1
  71. package/dist/_chunks/clinical-note-card-BUvNMNGL.js +436 -0
  72. package/dist/_chunks/clinical-note-card-BUvNMNGL.js.map +1 -0
  73. package/dist/_chunks/{collapsible-X3oaLPU3.js → collapsible-BrnRiCC6.js} +26 -23
  74. package/dist/_chunks/collapsible-BrnRiCC6.js.map +1 -0
  75. package/dist/_chunks/{color-picker-FXpItIaF.js → color-picker-C_fZl6sA.js} +124 -112
  76. package/dist/_chunks/color-picker-C_fZl6sA.js.map +1 -0
  77. package/dist/_chunks/{combobox-BC-DFx8G.js → combobox-Clum7gJ1.js} +165 -128
  78. package/dist/_chunks/combobox-Clum7gJ1.js.map +1 -0
  79. package/dist/_chunks/{command-palette-BiPAAno-.js → command-palette-CJzmc5pC.js} +87 -64
  80. package/dist/_chunks/command-palette-CJzmc5pC.js.map +1 -0
  81. package/dist/_chunks/{contact-profile-card-7BMB85T6.js → contact-profile-card-DDPwRFiP.js} +13 -11
  82. package/dist/_chunks/contact-profile-card-DDPwRFiP.js.map +1 -0
  83. package/dist/_chunks/control-room-rail-Y8ryLYsP.js +229 -0
  84. package/dist/_chunks/control-room-rail-Y8ryLYsP.js.map +1 -0
  85. package/dist/_chunks/{copy-field-CCq7j6Zc.js → copy-field-Bjw9u2cV.js} +42 -35
  86. package/dist/_chunks/copy-field-Bjw9u2cV.js.map +1 -0
  87. package/dist/_chunks/counter-dRlTNC_y.js +55 -0
  88. package/dist/_chunks/counter-dRlTNC_y.js.map +1 -0
  89. package/dist/_chunks/{cycle-calculator-BF0ointe.js → cycle-calculator-CCmPwcBl.js} +4 -4
  90. package/dist/_chunks/{cycle-calculator-BF0ointe.js.map → cycle-calculator-CCmPwcBl.js.map} +1 -1
  91. package/dist/_chunks/{date-picker-oGg5BnXL.js → date-picker-Dl9RKxaV.js} +76 -57
  92. package/dist/_chunks/{date-picker-oGg5BnXL.js.map → date-picker-Dl9RKxaV.js.map} +1 -1
  93. package/dist/_chunks/{date-range-picker-C5BWfH_T.js → date-range-picker-CTUeR6Bj.js} +73 -46
  94. package/dist/_chunks/date-range-picker-CTUeR6Bj.js.map +1 -0
  95. package/dist/_chunks/{date-time-picker-Ze1My59T.js → date-time-picker-BhoogS5Q.js} +64 -40
  96. package/dist/_chunks/date-time-picker-BhoogS5Q.js.map +1 -0
  97. package/dist/_chunks/{dependent-selector-DpzGtr_J.js → dependent-selector-DUV4thxX.js} +45 -31
  98. package/dist/_chunks/dependent-selector-DUV4thxX.js.map +1 -0
  99. package/dist/_chunks/{dialog-DMGnSelc.js → dialog-ZNuboNmy.js} +35 -28
  100. package/dist/_chunks/dialog-ZNuboNmy.js.map +1 -0
  101. package/dist/_chunks/{document-scanner-D2qehl3-.js → document-scanner-C_AxLooF.js} +13 -5
  102. package/dist/_chunks/document-scanner-C_AxLooF.js.map +1 -0
  103. package/dist/_chunks/{dropdown-menu-DwwPovMZ.js → dropdown-menu-qrxjymfw.js} +94 -93
  104. package/dist/_chunks/dropdown-menu-qrxjymfw.js.map +1 -0
  105. package/dist/_chunks/{due-date-calculator-DU9AEWNy.js → due-date-calculator-Brdj-euS.js} +6 -6
  106. package/dist/_chunks/{due-date-calculator-DU9AEWNy.js.map → due-date-calculator-Brdj-euS.js.map} +1 -1
  107. package/dist/_chunks/editable-currency-cell-renderer-C9twtALM.js +328 -0
  108. package/dist/_chunks/editable-currency-cell-renderer-C9twtALM.js.map +1 -0
  109. package/dist/_chunks/email-input-DJ7EXklP.js +397 -0
  110. package/dist/_chunks/{email-input-lQivsFrw.js.map → email-input-DJ7EXklP.js.map} +1 -1
  111. package/dist/_chunks/{entity-card-COhmqHly.js → entity-card-9_62gY7l.js} +38 -20
  112. package/dist/_chunks/{entity-card-COhmqHly.js.map → entity-card-9_62gY7l.js.map} +1 -1
  113. package/dist/_chunks/entity-summary-BxRjFh_4.js +138 -0
  114. package/dist/_chunks/entity-summary-BxRjFh_4.js.map +1 -0
  115. package/dist/_chunks/{fetal-weight-BVSzOhuR.js → fetal-weight-DNCkyeVo.js} +3 -3
  116. package/dist/_chunks/{fetal-weight-BVSzOhuR.js.map → fetal-weight-DNCkyeVo.js.map} +1 -1
  117. package/dist/_chunks/field-value-NXYczdpO.js +415 -0
  118. package/dist/_chunks/field-value-NXYczdpO.js.map +1 -0
  119. package/dist/_chunks/{file-upload-BosbPDb1.js → file-upload-DwZcAK8D.js} +119 -100
  120. package/dist/_chunks/file-upload-DwZcAK8D.js.map +1 -0
  121. package/dist/_chunks/{fiscal-code-input-DPtqluVb.js → fiscal-code-input-Cf-8O4Fj.js} +76 -63
  122. package/dist/_chunks/fiscal-code-input-Cf-8O4Fj.js.map +1 -0
  123. package/dist/_chunks/{freemium-paywall-CkWjv3o6.js → freemium-paywall-WYlNO7yT.js} +78 -71
  124. package/dist/_chunks/freemium-paywall-WYlNO7yT.js.map +1 -0
  125. package/dist/_chunks/{gestational-age-calculator-DBlFdoiP.js → gestational-age-calculator-CF2ISaYQ.js} +7 -7
  126. package/dist/_chunks/{gestational-age-calculator-DBlFdoiP.js.map → gestational-age-calculator-CF2ISaYQ.js.map} +1 -1
  127. package/dist/_chunks/hash-CysBBS_N.js +17 -0
  128. package/dist/_chunks/hash-CysBBS_N.js.map +1 -0
  129. package/dist/_chunks/{hcg-doubling-if4Q8aSX.js → hcg-doubling-C7bmuaU3.js} +4 -4
  130. package/dist/_chunks/{hcg-doubling-if4Q8aSX.js.map → hcg-doubling-C7bmuaU3.js.map} +1 -1
  131. package/dist/_chunks/{header-settings-CNOqIhoW.js → header-settings-DJqoAl5m.js} +86 -46
  132. package/dist/_chunks/header-settings-DJqoAl5m.js.map +1 -0
  133. package/dist/_chunks/{index.modern-D2LGACWg.js → index.modern-Zta-A4Jm.js} +3 -3
  134. package/dist/_chunks/{index.modern-D2LGACWg.js.map → index.modern-Zta-A4Jm.js.map} +1 -1
  135. package/dist/_chunks/link-cell-renderer-CTXqtXV-.js +2184 -0
  136. package/dist/_chunks/link-cell-renderer-CTXqtXV-.js.map +1 -0
  137. package/dist/_chunks/{list-BOwqwy03.js → list-DgE1xWBM.js} +99 -84
  138. package/dist/_chunks/list-DgE1xWBM.js.map +1 -0
  139. package/dist/_chunks/{locale-picker-C9JmBht3.js → locale-picker-ChYYSX2N.js} +47 -35
  140. package/dist/_chunks/locale-picker-ChYYSX2N.js.map +1 -0
  141. package/dist/_chunks/lock-CKOIn0IK.js +15 -0
  142. package/dist/_chunks/lock-CKOIn0IK.js.map +1 -0
  143. package/dist/_chunks/{map-view-Tb5VfK9Y.js → map-view-BkOoGoX2.js} +160 -115
  144. package/dist/_chunks/map-view-BkOoGoX2.js.map +1 -0
  145. package/dist/_chunks/{marketplace-app-shell-D4-T9Qzz.js → marketplace-app-shell-Skhfp6vK.js} +6 -6
  146. package/dist/_chunks/{marketplace-app-shell-D4-T9Qzz.js.map → marketplace-app-shell-Skhfp6vK.js.map} +1 -1
  147. package/dist/_chunks/{message-card.agent-4IeIgrnJ.js → message-card.agent-ZLhx3Bs5.js} +6 -1
  148. package/dist/_chunks/message-card.agent-ZLhx3Bs5.js.map +1 -0
  149. package/dist/_chunks/{message-tray-CVyJajVJ.js → message-tray-DwrBLJlf.js} +90 -48
  150. package/dist/_chunks/message-tray-DwrBLJlf.js.map +1 -0
  151. package/dist/_chunks/{multi-select-BcPylvHR.js → multi-select-BdHHDrRN.js} +196 -153
  152. package/dist/_chunks/multi-select-BdHHDrRN.js.map +1 -0
  153. package/dist/_chunks/{navigation-menu-C6lBYVv9.js → navigation-menu-DRUi6sSj.js} +75 -42
  154. package/dist/_chunks/navigation-menu-DRUi6sSj.js.map +1 -0
  155. package/dist/_chunks/notes-panel-ay8_lPrA.js +158 -0
  156. package/dist/_chunks/notes-panel-ay8_lPrA.js.map +1 -0
  157. package/dist/_chunks/{notification-card-BiESdm8q.js → notification-card-D2jiKSJJ.js} +27 -23
  158. package/dist/_chunks/notification-card-D2jiKSJJ.js.map +1 -0
  159. package/dist/_chunks/{notification-card.agent-Rqt3ofk9.js → notification-card.agent-DxGBZb8T.js} +5 -1
  160. package/dist/_chunks/notification-card.agent-DxGBZb8T.js.map +1 -0
  161. package/dist/_chunks/{notification-tray-DlgenTEe.js → notification-tray-AEun6DN2.js} +112 -97
  162. package/dist/_chunks/notification-tray-AEun6DN2.js.map +1 -0
  163. package/dist/_chunks/{number-input-Dj5L3pXK.js → number-input-DxphVG_A.js} +36 -27
  164. package/dist/_chunks/number-input-DxphVG_A.js.map +1 -0
  165. package/dist/_chunks/{operator-hero-f_KaRhw5.js → operator-hero-CR0Rqh4-.js} +14 -10
  166. package/dist/_chunks/operator-hero-CR0Rqh4-.js.map +1 -0
  167. package/dist/_chunks/{otp-input-xQ4Ps5VY.js → otp-input-DzBQ-CpE.js} +52 -33
  168. package/dist/_chunks/otp-input-DzBQ-CpE.js.map +1 -0
  169. package/dist/_chunks/{pagination-DQOgnxxw.js → pagination-D58kglCr.js} +181 -162
  170. package/dist/_chunks/pagination-D58kglCr.js.map +1 -0
  171. package/dist/_chunks/patient-details-Dlhqb5ig.js +675 -0
  172. package/dist/_chunks/patient-details-Dlhqb5ig.js.map +1 -0
  173. package/dist/_chunks/{patient-search-DR9XUYRQ.js → patient-search-Be6cLrHR.js} +70 -61
  174. package/dist/_chunks/patient-search-Be6cLrHR.js.map +1 -0
  175. package/dist/_chunks/{patient-shell-BfgufL_q.js → patient-shell-DV3XEtIB.js} +3 -3
  176. package/dist/_chunks/{patient-shell-BfgufL_q.js.map → patient-shell-DV3XEtIB.js.map} +1 -1
  177. package/dist/_chunks/patient-summary-card-WySCMwwA.js +437 -0
  178. package/dist/_chunks/patient-summary-card-WySCMwwA.js.map +1 -0
  179. package/dist/_chunks/patient-table-CHxf3Oqk.js +1110 -0
  180. package/dist/_chunks/patient-table-CHxf3Oqk.js.map +1 -0
  181. package/dist/_chunks/{payment-form-nXocS_MX.js → payment-form-CxqIXqw7.js} +57 -45
  182. package/dist/_chunks/payment-form-CxqIXqw7.js.map +1 -0
  183. package/dist/_chunks/{payment-request-card-CYE5vhZ0.js → payment-request-card-BcZJwu9z.js} +125 -136
  184. package/dist/_chunks/payment-request-card-BcZJwu9z.js.map +1 -0
  185. package/dist/_chunks/{pdf-viewer-GsfNqeeT.js → pdf-viewer-QfebdLOd.js} +317 -291
  186. package/dist/_chunks/pdf-viewer-QfebdLOd.js.map +1 -0
  187. package/dist/_chunks/{periodontal-chart-card-Dh3KgvYG.js → periodontal-chart-card-hRRJY1NN.js} +3 -3
  188. package/dist/_chunks/{periodontal-chart-card-Dh3KgvYG.js.map → periodontal-chart-card-hRRJY1NN.js.map} +1 -1
  189. package/dist/_chunks/{phone-input-DVXhNlIl.js → phone-input-DjU-XmO_.js} +64 -47
  190. package/dist/_chunks/phone-input-DjU-XmO_.js.map +1 -0
  191. package/dist/_chunks/{popover-DTbfAuR0.js → popover-B2qCDhJC.js} +37 -32
  192. package/dist/_chunks/popover-B2qCDhJC.js.map +1 -0
  193. package/dist/_chunks/{practice-results-DND2SAt7.js → practice-results-C6qDfxos.js} +280 -244
  194. package/dist/_chunks/practice-results-C6qDfxos.js.map +1 -0
  195. package/dist/_chunks/{pregnancy-dating-QY-sqpvj.js → pregnancy-dating-CRVWswD-.js} +8 -8
  196. package/dist/_chunks/{pregnancy-dating-QY-sqpvj.js.map → pregnancy-dating-CRVWswD-.js.map} +1 -1
  197. package/dist/_chunks/{pregnancy-weight-gain-DOJXXNYP.js → pregnancy-weight-gain-BUNpTsH-.js} +4 -4
  198. package/dist/_chunks/{pregnancy-weight-gain-DOJXXNYP.js.map → pregnancy-weight-gain-BUNpTsH-.js.map} +1 -1
  199. package/dist/_chunks/{privacy-lock-C7JyMf0y.js → privacy-lock-BzMLQu-j.js} +32 -28
  200. package/dist/_chunks/privacy-lock-BzMLQu-j.js.map +1 -0
  201. package/dist/_chunks/{product-hub-panel-CAXDFeGP.js → product-hub-panel-e6pW220e.js} +45 -27
  202. package/dist/_chunks/product-hub-panel-e6pW220e.js.map +1 -0
  203. package/dist/_chunks/{progress-kzIRcdaq.js → progress-DA413-zn.js} +2 -2
  204. package/dist/_chunks/{progress-kzIRcdaq.js.map → progress-DA413-zn.js.map} +1 -1
  205. package/dist/_chunks/{public-footer.agent-CfXuW1x6.js → public-footer.agent-D0cFbjWl.js} +151 -146
  206. package/dist/_chunks/public-footer.agent-D0cFbjWl.js.map +1 -0
  207. package/dist/_chunks/{public-header.agent-BOhJgZEU.js → public-header.agent-DqkqA-ca.js} +107 -102
  208. package/dist/_chunks/{public-header.agent-BOhJgZEU.js.map → public-header.agent-DqkqA-ca.js.map} +1 -1
  209. package/dist/_chunks/{qr-code-DNXhi6se.js → qr-code-CPkEs5mG.js} +52 -46
  210. package/dist/_chunks/qr-code-CPkEs5mG.js.map +1 -0
  211. package/dist/_chunks/{radio-group-CLjK-SlK.js → radio-group-BPt7pKZW.js} +5 -5
  212. package/dist/_chunks/{radio-group-CLjK-SlK.js.map → radio-group-BPt7pKZW.js.map} +1 -1
  213. package/dist/_chunks/radiograph-panel.agent-CAX-C3g3.js +558 -0
  214. package/dist/_chunks/radiograph-panel.agent-CAX-C3g3.js.map +1 -0
  215. package/dist/_chunks/{recaptcha-widget-BCNHsgqt.js → recaptcha-widget-BC-4To9b.js} +9 -2
  216. package/dist/_chunks/recaptcha-widget-BC-4To9b.js.map +1 -0
  217. package/dist/_chunks/registry-DvAUVLHh.js +51 -0
  218. package/dist/_chunks/registry-DvAUVLHh.js.map +1 -0
  219. package/dist/_chunks/{resizable-3vzqDlg6.js → resizable-DVGcfOrk.js} +193 -173
  220. package/dist/_chunks/resizable-DVGcfOrk.js.map +1 -0
  221. package/dist/_chunks/{reviews-panel-DBktKm7i.js → reviews-panel-Dq7LMDcH.js} +87 -68
  222. package/dist/_chunks/reviews-panel-Dq7LMDcH.js.map +1 -0
  223. package/dist/_chunks/{rich-text-editor-VawKN1FI.js → rich-text-editor-DlCqPixb.js} +833 -728
  224. package/dist/_chunks/rich-text-editor-DlCqPixb.js.map +1 -0
  225. package/dist/_chunks/{search-bar-SY2BcV2N.js → search-bar-C_T3pBJn.js} +105 -78
  226. package/dist/_chunks/search-bar-C_T3pBJn.js.map +1 -0
  227. package/dist/_chunks/{search-input-DbxrnHkW.js → search-input-DQvGxR74.js} +2 -2
  228. package/dist/_chunks/{search-input-DbxrnHkW.js.map → search-input-DQvGxR74.js.map} +1 -1
  229. package/dist/_chunks/{search-input.agent-CfZvViOd.js → search-input.agent-DRH54coT.js} +19 -4
  230. package/dist/_chunks/search-input.agent-DRH54coT.js.map +1 -0
  231. package/dist/_chunks/{select-CEtRcon5.js → select-DMLG44F5.js} +72 -56
  232. package/dist/_chunks/select-DMLG44F5.js.map +1 -0
  233. package/dist/_chunks/{session-countdown-LPnhTHjn.js → session-countdown-X1Ki6i0M.js} +3 -3
  234. package/dist/_chunks/{session-countdown-LPnhTHjn.js.map → session-countdown-X1Ki6i0M.js.map} +1 -1
  235. package/dist/_chunks/{sheet-taJer-Ha.js → sheet-BxsE7eQm.js} +59 -45
  236. package/dist/_chunks/sheet-BxsE7eQm.js.map +1 -0
  237. package/dist/_chunks/{sidebar-DaB4ulxH.js → sidebar-DY9jGjgt.js} +254 -248
  238. package/dist/_chunks/sidebar-DY9jGjgt.js.map +1 -0
  239. package/dist/_chunks/{sign-document-CdAiHiCh.js → sign-document-By6hMOra.js} +75 -49
  240. package/dist/_chunks/sign-document-By6hMOra.js.map +1 -0
  241. package/dist/_chunks/{signature-capture-COi0Uiqu.js → signature-capture-Ct_4Md4e.js} +138 -104
  242. package/dist/_chunks/signature-capture-Ct_4Md4e.js.map +1 -0
  243. package/dist/_chunks/{slider-BHWzXdjt.js → slider-DN1CWkKB.js} +85 -65
  244. package/dist/_chunks/slider-DN1CWkKB.js.map +1 -0
  245. package/dist/_chunks/{sparkline-DGhCSw8M.js → sparkline-iOXYgvJe.js} +75 -53
  246. package/dist/_chunks/sparkline-iOXYgvJe.js.map +1 -0
  247. package/dist/_chunks/{stepper-accordion-Dki6r9ZE.js → stepper-accordion-DC-H-8v4.js} +38 -48
  248. package/dist/_chunks/stepper-accordion-DC-H-8v4.js.map +1 -0
  249. package/dist/_chunks/{stepper-accordion.agent-C4quJ-MD.js → stepper-accordion.agent-cmEguIdx.js} +7 -1
  250. package/dist/_chunks/stepper-accordion.agent-cmEguIdx.js.map +1 -0
  251. package/dist/_chunks/{stepper-progress-DDjq5nei.js → stepper-progress-Bv0njx4g.js} +30 -24
  252. package/dist/_chunks/stepper-progress-Bv0njx4g.js.map +1 -0
  253. package/dist/_chunks/{suggestion-chip.agent-6sNWFj7m.js → suggestion-chip.agent-Brn3CiFE.js} +9 -8
  254. package/dist/_chunks/{suggestion-chip.agent-6sNWFj7m.js.map → suggestion-chip.agent-Brn3CiFE.js.map} +1 -1
  255. package/dist/_chunks/{switch-BJ6HD3Mn.js → switch-OILsBLWo.js} +25 -19
  256. package/dist/_chunks/switch-OILsBLWo.js.map +1 -0
  257. package/dist/_chunks/tab-bar-Bv9nGNdO.js +262 -0
  258. package/dist/_chunks/tab-bar-Bv9nGNdO.js.map +1 -0
  259. package/dist/_chunks/{tabs-BIQ0ew1T.js → tabs-BxcOziCo.js} +67 -58
  260. package/dist/_chunks/tabs-BxcOziCo.js.map +1 -0
  261. package/dist/_chunks/{task-card.agent-CUPKYd7w.js → task-card.agent-Bt14CzUd.js} +4 -1
  262. package/dist/_chunks/task-card.agent-Bt14CzUd.js.map +1 -0
  263. package/dist/_chunks/{task-tray-CAncV-QQ.js → task-tray-qOEQflu4.js} +74 -57
  264. package/dist/_chunks/task-tray-qOEQflu4.js.map +1 -0
  265. package/dist/_chunks/{text-area-BIx0tZ05.js → text-area-Bt3p7Pt0.js} +41 -34
  266. package/dist/_chunks/text-area-Bt3p7Pt0.js.map +1 -0
  267. package/dist/_chunks/{text-input-BaClJL8Y.js → text-input-B-OWQ1Je.js} +15 -8
  268. package/dist/_chunks/text-input-B-OWQ1Je.js.map +1 -0
  269. package/dist/_chunks/{theme-toggle-DETmSu_h.js → theme-toggle-XB6o_lgs.js} +38 -26
  270. package/dist/_chunks/theme-toggle-XB6o_lgs.js.map +1 -0
  271. package/dist/_chunks/{time-picker-B5umYwfv.js → time-picker-BPlJWm8w.js} +41 -31
  272. package/dist/_chunks/time-picker-BPlJWm8w.js.map +1 -0
  273. package/dist/_chunks/{timeline-DQa5Tyz4.js → timeline-CqA4nKTI.js} +33 -25
  274. package/dist/_chunks/timeline-CqA4nKTI.js.map +1 -0
  275. package/dist/_chunks/{toast.agent-vuLRRn2a.js → toast.agent-57UzyR9U.js} +62 -45
  276. package/dist/_chunks/{toast.agent-vuLRRn2a.js.map → toast.agent-57UzyR9U.js.map} +1 -1
  277. package/dist/_chunks/tooth-scheme-BhQoPNBD.js +2131 -0
  278. package/dist/_chunks/tooth-scheme-BhQoPNBD.js.map +1 -0
  279. package/dist/_chunks/{transaction-chip-DK84XCBU.js → transaction-chip-CscoQbxF.js} +88 -61
  280. package/dist/_chunks/transaction-chip-CscoQbxF.js.map +1 -0
  281. package/dist/_chunks/{transcript-panel-CLHmv83g.js → transcript-panel-3THQX6nJ.js} +47 -33
  282. package/dist/_chunks/transcript-panel-3THQX6nJ.js.map +1 -0
  283. package/dist/_chunks/unit-converter-YEpD9evj.js +337 -0
  284. package/dist/_chunks/unit-converter-YEpD9evj.js.map +1 -0
  285. package/dist/_chunks/use-clamp-overflow-DQE2kwZ9.js +20 -0
  286. package/dist/_chunks/use-clamp-overflow-DQE2kwZ9.js.map +1 -0
  287. package/dist/_chunks/use-overflow-collapse-BIOzKbni.js +32 -0
  288. package/dist/_chunks/use-overflow-collapse-BIOzKbni.js.map +1 -0
  289. package/dist/_chunks/{use-password-requirements-DsgduV1x.js → use-password-requirements-BXvS2MBS.js} +131 -117
  290. package/dist/_chunks/use-password-requirements-BXvS2MBS.js.map +1 -0
  291. package/dist/_chunks/use-persistent-state-nZwZAnE9.js +24 -0
  292. package/dist/_chunks/use-persistent-state-nZwZAnE9.js.map +1 -0
  293. package/dist/_chunks/users-MBVtUzwd.js +17 -0
  294. package/dist/_chunks/users-MBVtUzwd.js.map +1 -0
  295. package/dist/_chunks/warning-stack--sTrrBDA.js +268 -0
  296. package/dist/_chunks/warning-stack--sTrrBDA.js.map +1 -0
  297. package/dist/_chunks/{whatsapp-button-DUjlWGKf.js → whatsapp-button-BIy6NaJK.js} +6 -3
  298. package/dist/_chunks/whatsapp-button-BIy6NaJK.js.map +1 -0
  299. package/dist/_chunks/{workflow-map-JAZryZJr.js → workflow-map-Dy8mLCqF.js} +101 -90
  300. package/dist/_chunks/workflow-map-Dy8mLCqF.js.map +1 -0
  301. package/dist/_chunks/zoom-out-CgVtf2Wx.js +29 -0
  302. package/dist/_chunks/zoom-out-CgVtf2Wx.js.map +1 -0
  303. package/dist/agent/index.d.ts +4 -4
  304. package/dist/agent/index.d.ts.map +1 -1
  305. package/dist/agent/index.js +37 -0
  306. package/dist/agent/index.js.map +1 -0
  307. package/dist/agent/registry.d.ts +33 -0
  308. package/dist/agent/registry.d.ts.map +1 -1
  309. package/dist/agent/types.d.ts +97 -4
  310. package/dist/agent/types.d.ts.map +1 -1
  311. package/dist/agent-catalog.json +8081 -518
  312. package/dist/agent-i18n/en.json +1277 -0
  313. package/dist/components/_shared/entity-card/entity-card.d.ts +6 -0
  314. package/dist/components/_shared/entity-card/entity-card.d.ts.map +1 -1
  315. package/dist/components/_shared/entity-card/index.d.ts +1 -1
  316. package/dist/components/_shared/entity-card/index.d.ts.map +1 -1
  317. package/dist/components/_shared/field-value.d.ts +21 -0
  318. package/dist/components/_shared/field-value.d.ts.map +1 -0
  319. package/dist/components/_shared/field-visibility-cog.d.ts +20 -0
  320. package/dist/components/_shared/field-visibility-cog.d.ts.map +1 -0
  321. package/dist/components/_shared/field-visibility.d.ts +36 -0
  322. package/dist/components/_shared/field-visibility.d.ts.map +1 -0
  323. package/dist/components/_shared/patient-fields.d.ts +119 -0
  324. package/dist/components/_shared/patient-fields.d.ts.map +1 -0
  325. package/dist/components/accordion/accordion.agent.d.ts.map +1 -1
  326. package/dist/components/accordion/accordion.d.ts.map +1 -1
  327. package/dist/components/accordion/index.js +1 -1
  328. package/dist/components/address-autocomplete/address-autocomplete.agent.d.ts +4 -0
  329. package/dist/components/address-autocomplete/address-autocomplete.agent.d.ts.map +1 -0
  330. package/dist/components/address-autocomplete/address-autocomplete.d.ts +18 -0
  331. package/dist/components/address-autocomplete/address-autocomplete.d.ts.map +1 -1
  332. package/dist/components/address-autocomplete/index.d.ts +2 -1
  333. package/dist/components/address-autocomplete/index.d.ts.map +1 -1
  334. package/dist/components/address-autocomplete/index.js +3 -2
  335. package/dist/components/agenda-card/agenda-card.agent.d.ts.map +1 -1
  336. package/dist/components/agenda-card/index.js +2 -2
  337. package/dist/components/agenda-tray/agenda-tray.agent.d.ts.map +1 -1
  338. package/dist/components/agenda-tray/index.js +1 -1
  339. package/dist/components/ai-consent-banner/index.js +1 -1
  340. package/dist/components/ai-prompt-input/ai-prompt-input.agent.d.ts.map +1 -1
  341. package/dist/components/ai-prompt-input/index.js +1 -1
  342. package/dist/components/ai-tools-rail/ai-tools-rail.agent.d.ts.map +1 -1
  343. package/dist/components/ai-tools-rail/ai-tools-rail.d.ts +75 -0
  344. package/dist/components/ai-tools-rail/ai-tools-rail.d.ts.map +1 -1
  345. package/dist/components/ai-tools-rail/index.js +1 -1
  346. package/dist/components/alert/alert.d.ts +5 -0
  347. package/dist/components/alert/alert.d.ts.map +1 -1
  348. package/dist/components/alert/index.js +1 -1
  349. package/dist/components/anamnesis-card/index.js +1 -1
  350. package/dist/components/anatomy-scheme/anatomy-face-paths.d.ts +15 -0
  351. package/dist/components/anatomy-scheme/anatomy-face-paths.d.ts.map +1 -0
  352. package/dist/components/anatomy-scheme/anatomy-muscle-paths.d.ts +20 -0
  353. package/dist/components/anatomy-scheme/anatomy-muscle-paths.d.ts.map +1 -0
  354. package/dist/components/anatomy-scheme/anatomy-scheme-data.d.ts +121 -0
  355. package/dist/components/anatomy-scheme/anatomy-scheme-data.d.ts.map +1 -0
  356. package/dist/components/anatomy-scheme/anatomy-scheme.agent.d.ts +6 -0
  357. package/dist/components/anatomy-scheme/anatomy-scheme.agent.d.ts.map +1 -0
  358. package/dist/components/anatomy-scheme/anatomy-scheme.d.ts +69 -0
  359. package/dist/components/anatomy-scheme/anatomy-scheme.d.ts.map +1 -0
  360. package/dist/components/anatomy-scheme/index.d.ts +6 -0
  361. package/dist/components/anatomy-scheme/index.d.ts.map +1 -0
  362. package/dist/components/anatomy-scheme/index.js +17 -0
  363. package/dist/components/anatomy-scheme/index.js.map +1 -0
  364. package/dist/components/annotation-marker/annotation-marker.d.ts +33 -0
  365. package/dist/components/annotation-marker/annotation-marker.d.ts.map +1 -0
  366. package/dist/components/annotation-marker/index.d.ts +3 -0
  367. package/dist/components/annotation-marker/index.d.ts.map +1 -0
  368. package/dist/components/annotation-marker/index.js +7 -0
  369. package/dist/components/annotation-marker/index.js.map +1 -0
  370. package/dist/components/appointment-card/appointment-card.agent.d.ts.map +1 -1
  371. package/dist/components/appointment-card/appointment-card.d.ts +25 -1
  372. package/dist/components/appointment-card/appointment-card.d.ts.map +1 -1
  373. package/dist/components/appointment-card/appointment-tray.agent.d.ts.map +1 -1
  374. package/dist/components/appointment-card/index.js +6 -5
  375. package/dist/components/appointment-card/index.js.map +1 -1
  376. package/dist/components/appointment-timeline/appointment-timeline.agent.d.ts +4 -0
  377. package/dist/components/appointment-timeline/appointment-timeline.agent.d.ts.map +1 -0
  378. package/dist/components/appointment-timeline/appointment-timeline.d.ts +66 -0
  379. package/dist/components/appointment-timeline/appointment-timeline.d.ts.map +1 -0
  380. package/dist/components/appointment-timeline/index.d.ts +4 -0
  381. package/dist/components/appointment-timeline/index.d.ts.map +1 -0
  382. package/dist/components/appointment-timeline/index.js +6 -0
  383. package/dist/components/appointment-timeline/index.js.map +1 -0
  384. package/dist/components/audio-recorder/audio-recorder.agent.d.ts.map +1 -1
  385. package/dist/components/audio-recorder/index.js +1 -1
  386. package/dist/components/autocomplete/autocomplete.agent.d.ts.map +1 -1
  387. package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
  388. package/dist/components/autocomplete/index.js +1 -1
  389. package/dist/components/badge/badge.d.ts +6 -2
  390. package/dist/components/badge/badge.d.ts.map +1 -1
  391. package/dist/components/badge/index.js +1 -1
  392. package/dist/components/bishop-score/bishop-score.agent.d.ts +4 -0
  393. package/dist/components/bishop-score/bishop-score.agent.d.ts.map +1 -0
  394. package/dist/components/bishop-score/bishop-score.d.ts +17 -1
  395. package/dist/components/bishop-score/bishop-score.d.ts.map +1 -1
  396. package/dist/components/bishop-score/index.js +1 -1
  397. package/dist/components/bmi-calculator/bmi-calculator.agent.d.ts +4 -0
  398. package/dist/components/bmi-calculator/bmi-calculator.agent.d.ts.map +1 -0
  399. package/dist/components/bmi-calculator/bmi-calculator.d.ts +26 -0
  400. package/dist/components/bmi-calculator/bmi-calculator.d.ts.map +1 -1
  401. package/dist/components/bmi-calculator/index.js +1 -1
  402. package/dist/components/booking/booking.agent.d.ts.map +1 -1
  403. package/dist/components/booking/index.js +1 -1
  404. package/dist/components/breadcrumb/breadcrumb.agent.d.ts.map +1 -1
  405. package/dist/components/breadcrumb/index.js +1 -1
  406. package/dist/components/calculator-dialog/index.js +1 -1
  407. package/dist/components/calendar/calendar.agent.d.ts.map +1 -1
  408. package/dist/components/calendar/index.js +1 -1
  409. package/dist/components/care-plan-card/care-plan-card.agent.d.ts.map +1 -1
  410. package/dist/components/care-plan-card/index.js +1 -1
  411. package/dist/components/care-plan-entry-card/care-plan-entry-card.agent.d.ts.map +1 -1
  412. package/dist/components/care-plan-entry-card/index.js +1 -1
  413. package/dist/components/care-plan-header/care-plan-header.agent.d.ts +4 -0
  414. package/dist/components/care-plan-header/care-plan-header.agent.d.ts.map +1 -0
  415. package/dist/components/care-plan-header/care-plan-header.d.ts +100 -0
  416. package/dist/components/care-plan-header/care-plan-header.d.ts.map +1 -0
  417. package/dist/components/care-plan-header/index.d.ts +4 -0
  418. package/dist/components/care-plan-header/index.d.ts.map +1 -0
  419. package/dist/components/care-plan-header/index.js +6 -0
  420. package/dist/components/care-plan-header/index.js.map +1 -0
  421. package/dist/components/carousel/carousel.agent.d.ts.map +1 -1
  422. package/dist/components/carousel/index.js +1 -1
  423. package/dist/components/chart/chart.agent.d.ts.map +1 -1
  424. package/dist/components/chart/index.js +1 -1
  425. package/dist/components/chat-container/chat-container.agent.d.ts.map +1 -1
  426. package/dist/components/chat-container/index.js +1 -1
  427. package/dist/components/chat-input/chat-input.agent.d.ts.map +1 -1
  428. package/dist/components/chat-input/index.js +1 -1
  429. package/dist/components/checkbox/checkbox.agent.d.ts.map +1 -1
  430. package/dist/components/checkbox/index.js +1 -1
  431. package/dist/components/checkbox-group/index.js +1 -1
  432. package/dist/components/clinical-note-card/clinical-note-card.d.ts +21 -1
  433. package/dist/components/clinical-note-card/clinical-note-card.d.ts.map +1 -1
  434. package/dist/components/clinical-note-card/index.js +1 -1
  435. package/dist/components/collapsible/collapsible.agent.d.ts.map +1 -1
  436. package/dist/components/collapsible/index.js +1 -1
  437. package/dist/components/color-picker/color-picker.agent.d.ts.map +1 -1
  438. package/dist/components/color-picker/index.js +1 -1
  439. package/dist/components/combobox/combobox.agent.d.ts.map +1 -1
  440. package/dist/components/combobox/combobox.d.ts.map +1 -1
  441. package/dist/components/combobox/index.js +1 -1
  442. package/dist/components/command-palette/command-palette.agent.d.ts.map +1 -1
  443. package/dist/components/command-palette/command-palette.d.ts.map +1 -1
  444. package/dist/components/command-palette/index.js +1 -1
  445. package/dist/components/contact-profile-card/contact-profile-card.agent.d.ts.map +1 -1
  446. package/dist/components/contact-profile-card/index.js +1 -1
  447. package/dist/components/control-room-rail/control-room-context.d.ts +53 -0
  448. package/dist/components/control-room-rail/control-room-context.d.ts.map +1 -0
  449. package/dist/components/control-room-rail/control-room-rail.d.ts +35 -0
  450. package/dist/components/control-room-rail/control-room-rail.d.ts.map +1 -0
  451. package/dist/components/control-room-rail/index.d.ts +5 -0
  452. package/dist/components/control-room-rail/index.d.ts.map +1 -0
  453. package/dist/components/control-room-rail/index.js +9 -0
  454. package/dist/components/control-room-rail/index.js.map +1 -0
  455. package/dist/components/copy-field/copy-field.agent.d.ts.map +1 -1
  456. package/dist/components/copy-field/index.js +1 -1
  457. package/dist/components/counter/counter.d.ts +22 -0
  458. package/dist/components/counter/counter.d.ts.map +1 -0
  459. package/dist/components/counter/index.d.ts +3 -0
  460. package/dist/components/counter/index.d.ts.map +1 -0
  461. package/dist/components/counter/index.js +5 -0
  462. package/dist/components/counter/index.js.map +1 -0
  463. package/dist/components/cycle-calculator/index.js +1 -1
  464. package/dist/components/data-table/cell-renderers/actions-cell-renderer.d.ts +18 -0
  465. package/dist/components/data-table/cell-renderers/actions-cell-renderer.d.ts.map +1 -1
  466. package/dist/components/data-table/data-table.agent.d.ts.map +1 -1
  467. package/dist/components/data-table/index.d.ts +1 -1
  468. package/dist/components/data-table/index.d.ts.map +1 -1
  469. package/dist/components/data-table/index.js +32 -30
  470. package/dist/components/data-table/index.js.map +1 -1
  471. package/dist/components/data-table/toolbar.d.ts.map +1 -1
  472. package/dist/components/date-picker/date-picker.agent.d.ts.map +1 -1
  473. package/dist/components/date-picker/index.js +1 -1
  474. package/dist/components/date-range-picker/date-range-picker.agent.d.ts.map +1 -1
  475. package/dist/components/date-range-picker/index.js +1 -1
  476. package/dist/components/date-time-picker/date-time-picker.agent.d.ts.map +1 -1
  477. package/dist/components/date-time-picker/index.js +1 -1
  478. package/dist/components/dependent-selector/dependent-selector.agent.d.ts.map +1 -1
  479. package/dist/components/dependent-selector/index.js +1 -1
  480. package/dist/components/dialog/dialog.agent.d.ts.map +1 -1
  481. package/dist/components/dialog/index.js +1 -1
  482. package/dist/components/document-scanner/document-scanner.agent.d.ts.map +1 -1
  483. package/dist/components/document-scanner/index.js +1 -1
  484. package/dist/components/dropdown-menu/dropdown-menu.agent.d.ts.map +1 -1
  485. package/dist/components/dropdown-menu/index.js +1 -1
  486. package/dist/components/due-date-calculator/index.js +2 -2
  487. package/dist/components/email-input/email-input.d.ts.map +1 -1
  488. package/dist/components/email-input/index.js +1 -1
  489. package/dist/components/entity-summary/entity-summary.d.ts +43 -0
  490. package/dist/components/entity-summary/entity-summary.d.ts.map +1 -0
  491. package/dist/components/entity-summary/index.d.ts +3 -0
  492. package/dist/components/entity-summary/index.d.ts.map +1 -0
  493. package/dist/components/entity-summary/index.js +5 -0
  494. package/dist/components/entity-summary/index.js.map +1 -0
  495. package/dist/components/fetal-weight/index.js +1 -1
  496. package/dist/components/file-upload/file-upload.agent.d.ts.map +1 -1
  497. package/dist/components/file-upload/index.js +1 -1
  498. package/dist/components/fiscal-code-input/fiscal-code-input.agent.d.ts.map +1 -1
  499. package/dist/components/fiscal-code-input/index.js +1 -1
  500. package/dist/components/freemium-paywall/freemium-paywall.agent.d.ts.map +1 -1
  501. package/dist/components/freemium-paywall/freemium-paywall.d.ts +6 -0
  502. package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
  503. package/dist/components/freemium-paywall/index.js +1 -1
  504. package/dist/components/gestational-age-calculator/index.js +1 -1
  505. package/dist/components/hcg-doubling/index.js +1 -1
  506. package/dist/components/header-settings/header-settings.agent.d.ts.map +1 -1
  507. package/dist/components/header-settings/index.js +1 -1
  508. package/dist/components/index.d.ts +11 -0
  509. package/dist/components/index.d.ts.map +1 -1
  510. package/dist/components/list/index.js +1 -1
  511. package/dist/components/list/list.agent.d.ts.map +1 -1
  512. package/dist/components/locale-picker/index.js +1 -1
  513. package/dist/components/locale-picker/locale-picker.agent.d.ts.map +1 -1
  514. package/dist/components/map-view/index.js +1 -1
  515. package/dist/components/map-view/map-view.agent.d.ts.map +1 -1
  516. package/dist/components/message-card/index.js +1 -1
  517. package/dist/components/message-card/message-card.agent.d.ts.map +1 -1
  518. package/dist/components/message-tray/index.js +1 -1
  519. package/dist/components/message-tray/message-tray.agent.d.ts.map +1 -1
  520. package/dist/components/multi-select/index.js +1 -1
  521. package/dist/components/multi-select/multi-select.agent.d.ts.map +1 -1
  522. package/dist/components/multi-select/multi-select.d.ts.map +1 -1
  523. package/dist/components/navigation-menu/index.js +1 -1
  524. package/dist/components/navigation-menu/navigation-menu.agent.d.ts.map +1 -1
  525. package/dist/components/notes-panel/index.d.ts +3 -0
  526. package/dist/components/notes-panel/index.d.ts.map +1 -0
  527. package/dist/components/notes-panel/index.js +5 -0
  528. package/dist/components/notes-panel/index.js.map +1 -0
  529. package/dist/components/notes-panel/notes-panel.d.ts +64 -0
  530. package/dist/components/notes-panel/notes-panel.d.ts.map +1 -0
  531. package/dist/components/notification-card/index.js +2 -2
  532. package/dist/components/notification-card/notification-card.agent.d.ts.map +1 -1
  533. package/dist/components/notification-card/notification-card.d.ts.map +1 -1
  534. package/dist/components/notification-tray/index.js +1 -1
  535. package/dist/components/notification-tray/notification-tray.agent.d.ts.map +1 -1
  536. package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
  537. package/dist/components/number-input/index.js +1 -1
  538. package/dist/components/number-input/number-input.agent.d.ts.map +1 -1
  539. package/dist/components/operator-hero/index.js +1 -1
  540. package/dist/components/operator-hero/operator-hero.agent.d.ts.map +1 -1
  541. package/dist/components/otp-input/index.js +1 -1
  542. package/dist/components/otp-input/otp-input.agent.d.ts.map +1 -1
  543. package/dist/components/pagination/index.js +1 -1
  544. package/dist/components/pagination/pagination.agent.d.ts.map +1 -1
  545. package/dist/components/password-input/index.js +1 -1
  546. package/dist/components/password-input/password-input.agent.d.ts.map +1 -1
  547. package/dist/components/patient-details/index.d.ts +5 -0
  548. package/dist/components/patient-details/index.d.ts.map +1 -0
  549. package/dist/components/patient-details/index.js +6 -0
  550. package/dist/components/patient-details/index.js.map +1 -0
  551. package/dist/components/patient-details/patient-details.agent.d.ts +4 -0
  552. package/dist/components/patient-details/patient-details.agent.d.ts.map +1 -0
  553. package/dist/components/patient-details/patient-details.d.ts +96 -0
  554. package/dist/components/patient-details/patient-details.d.ts.map +1 -0
  555. package/dist/components/patient-search/index.js +1 -1
  556. package/dist/components/patient-search/patient-search.agent.d.ts.map +1 -1
  557. package/dist/components/patient-summary-card/index.js +1 -1
  558. package/dist/components/patient-summary-card/patient-summary-card.agent.d.ts.map +1 -1
  559. package/dist/components/patient-summary-card/patient-summary-card.d.ts +40 -1
  560. package/dist/components/patient-summary-card/patient-summary-card.d.ts.map +1 -1
  561. package/dist/components/patient-table/cell-renderers/balance-badge-cell.d.ts +13 -0
  562. package/dist/components/patient-table/cell-renderers/balance-badge-cell.d.ts.map +1 -0
  563. package/dist/components/patient-table/cell-renderers/care-plan-status-cell.d.ts +43 -0
  564. package/dist/components/patient-table/cell-renderers/care-plan-status-cell.d.ts.map +1 -0
  565. package/dist/components/patient-table/cell-renderers/next-appointment-cell.d.ts +24 -0
  566. package/dist/components/patient-table/cell-renderers/next-appointment-cell.d.ts.map +1 -0
  567. package/dist/components/patient-table/columns.d.ts +131 -0
  568. package/dist/components/patient-table/columns.d.ts.map +1 -0
  569. package/dist/components/patient-table/index.d.ts +20 -0
  570. package/dist/components/patient-table/index.d.ts.map +1 -0
  571. package/dist/components/patient-table/index.js +12 -0
  572. package/dist/components/patient-table/index.js.map +1 -0
  573. package/dist/components/patient-table/patient-table.d.ts +172 -0
  574. package/dist/components/patient-table/patient-table.d.ts.map +1 -0
  575. package/dist/components/patient-table/types.d.ts +222 -0
  576. package/dist/components/patient-table/types.d.ts.map +1 -0
  577. package/dist/components/patient-table/use-responsive-columns.d.ts +111 -0
  578. package/dist/components/patient-table/use-responsive-columns.d.ts.map +1 -0
  579. package/dist/components/payment-card/index.js +1 -1
  580. package/dist/components/payment-form/index.js +1 -1
  581. package/dist/components/payment-form/payment-form.agent.d.ts.map +1 -1
  582. package/dist/components/pdf-viewer/index.js +1 -1
  583. package/dist/components/pdf-viewer/pdf-viewer.agent.d.ts.map +1 -1
  584. package/dist/components/periodontal-chart-card/index.js +1 -1
  585. package/dist/components/phone-input/index.js +1 -1
  586. package/dist/components/phone-input/phone-input.agent.d.ts.map +1 -1
  587. package/dist/components/popover/index.js +1 -1
  588. package/dist/components/popover/popover.agent.d.ts.map +1 -1
  589. package/dist/components/practice-results/index.js +1 -1
  590. package/dist/components/practice-results/practice-results.agent.d.ts.map +1 -1
  591. package/dist/components/pregnancy-dating/index.js +1 -1
  592. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  593. package/dist/components/privacy-lock/index.js +1 -1
  594. package/dist/components/privacy-lock/privacy-lock.agent.d.ts.map +1 -1
  595. package/dist/components/product-hub-tray/index.js +1 -1
  596. package/dist/components/product-hub-tray/product-hub-panel.agent.d.ts.map +1 -1
  597. package/dist/components/product-hub-tray/product-hub-tray.agent.d.ts.map +1 -1
  598. package/dist/components/progress/index.js +1 -1
  599. package/dist/components/public-footer/index.js +1 -1
  600. package/dist/components/public-footer/public-footer.agent.d.ts.map +1 -1
  601. package/dist/components/public-footer/public-footer.d.ts.map +1 -1
  602. package/dist/components/public-header/index.js +1 -1
  603. package/dist/components/public-header/public-header.agent.d.ts.map +1 -1
  604. package/dist/components/qr-code/index.js +1 -1
  605. package/dist/components/qr-code/qr-code.agent.d.ts.map +1 -1
  606. package/dist/components/radio-group/index.js +1 -1
  607. package/dist/components/radiograph-panel/index.d.ts +4 -0
  608. package/dist/components/radiograph-panel/index.d.ts.map +1 -0
  609. package/dist/components/radiograph-panel/index.js +7 -0
  610. package/dist/components/radiograph-panel/index.js.map +1 -0
  611. package/dist/components/radiograph-panel/radiograph-panel.agent.d.ts +13 -0
  612. package/dist/components/radiograph-panel/radiograph-panel.agent.d.ts.map +1 -0
  613. package/dist/components/radiograph-panel/radiograph-panel.d.ts +36 -0
  614. package/dist/components/radiograph-panel/radiograph-panel.d.ts.map +1 -0
  615. package/dist/components/recaptcha-widget/index.js +1 -1
  616. package/dist/components/recaptcha-widget/recaptcha-widget.agent.d.ts.map +1 -1
  617. package/dist/components/resizable/index.js +1 -1
  618. package/dist/components/resizable/resizable.agent.d.ts.map +1 -1
  619. package/dist/components/resizable/resizable.d.ts.map +1 -1
  620. package/dist/components/reviews-panel/index.js +1 -1
  621. package/dist/components/reviews-panel/reviews-panel.agent.d.ts.map +1 -1
  622. package/dist/components/rich-text-editor/index.js +1 -1
  623. package/dist/components/rich-text-editor/rich-text-editor.agent.d.ts.map +1 -1
  624. package/dist/components/rich-text-editor/rich-text-editor.d.ts.map +1 -1
  625. package/dist/components/search-bar/index.js +1 -1
  626. package/dist/components/search-bar/search-bar.agent.d.ts.map +1 -1
  627. package/dist/components/search-input/index.js +2 -2
  628. package/dist/components/search-input/search-input.agent.d.ts.map +1 -1
  629. package/dist/components/select/index.js +1 -1
  630. package/dist/components/select/select.agent.d.ts.map +1 -1
  631. package/dist/components/session-countdown/index.js +1 -1
  632. package/dist/components/sheet/index.js +1 -1
  633. package/dist/components/sheet/sheet.agent.d.ts.map +1 -1
  634. package/dist/components/sidebar/index.js +2 -2
  635. package/dist/components/sidebar/sidebar.agent.d.ts.map +1 -1
  636. package/dist/components/sidebar/sidebar.d.ts +7 -0
  637. package/dist/components/sidebar/sidebar.d.ts.map +1 -1
  638. package/dist/components/sign-document/index.js +1 -1
  639. package/dist/components/sign-document/sign-document.agent.d.ts.map +1 -1
  640. package/dist/components/signature-capture/index.js +1 -1
  641. package/dist/components/signature-capture/signature-capture.agent.d.ts.map +1 -1
  642. package/dist/components/slider/index.js +1 -1
  643. package/dist/components/slider/slider.agent.d.ts.map +1 -1
  644. package/dist/components/sparkline/index.js +1 -1
  645. package/dist/components/sparkline/sparkline.agent.d.ts.map +1 -1
  646. package/dist/components/stepper-accordion/index.js +2 -2
  647. package/dist/components/stepper-accordion/stepper-accordion.agent.d.ts.map +1 -1
  648. package/dist/components/stepper-progress/index.js +1 -1
  649. package/dist/components/stepper-progress/stepper-progress.agent.d.ts.map +1 -1
  650. package/dist/components/suggestion-chip/index.js +1 -1
  651. package/dist/components/suggestion-chip/suggestion-chip.agent.d.ts.map +1 -1
  652. package/dist/components/switch/index.js +1 -1
  653. package/dist/components/switch/switch.agent.d.ts.map +1 -1
  654. package/dist/components/tab-bar/index.js +1 -1
  655. package/dist/components/tab-bar/tab-bar.d.ts +18 -1
  656. package/dist/components/tab-bar/tab-bar.d.ts.map +1 -1
  657. package/dist/components/tabs/index.js +1 -1
  658. package/dist/components/tabs/tabs.agent.d.ts.map +1 -1
  659. package/dist/components/tabs/tabs.d.ts.map +1 -1
  660. package/dist/components/task-card/index.js +1 -1
  661. package/dist/components/task-card/task-card.agent.d.ts.map +1 -1
  662. package/dist/components/task-tray/index.js +1 -1
  663. package/dist/components/task-tray/task-tray.agent.d.ts.map +1 -1
  664. package/dist/components/text-area/index.js +1 -1
  665. package/dist/components/text-area/text-area.agent.d.ts.map +1 -1
  666. package/dist/components/text-input/index.js +1 -1
  667. package/dist/components/text-input/text-input.agent.d.ts.map +1 -1
  668. package/dist/components/theme-toggle/index.js +1 -1
  669. package/dist/components/theme-toggle/theme-toggle.agent.d.ts.map +1 -1
  670. package/dist/components/time-picker/index.js +1 -1
  671. package/dist/components/time-picker/time-picker.agent.d.ts.map +1 -1
  672. package/dist/components/timeline/index.js +1 -1
  673. package/dist/components/timeline/timeline.agent.d.ts.map +1 -1
  674. package/dist/components/toast/index.js +1 -1
  675. package/dist/components/toast/toast.agent.d.ts.map +1 -1
  676. package/dist/components/toast/toast.d.ts.map +1 -1
  677. package/dist/components/tooth-scheme/index.d.ts +2 -2
  678. package/dist/components/tooth-scheme/index.d.ts.map +1 -1
  679. package/dist/components/tooth-scheme/index.js +30 -23
  680. package/dist/components/tooth-scheme/tooth-data.d.ts +112 -1
  681. package/dist/components/tooth-scheme/tooth-data.d.ts.map +1 -1
  682. package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts +2 -2
  683. package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts.map +1 -1
  684. package/dist/components/tooth-scheme/tooth-scheme.d.ts +75 -11
  685. package/dist/components/tooth-scheme/tooth-scheme.d.ts.map +1 -1
  686. package/dist/components/transaction-chip/index.js +1 -1
  687. package/dist/components/transaction-chip/transaction-chip.d.ts +2 -2
  688. package/dist/components/transaction-chip/transaction-chip.d.ts.map +1 -1
  689. package/dist/components/transcript-panel/index.js +1 -1
  690. package/dist/components/transcript-panel/transcript-panel.agent.d.ts.map +1 -1
  691. package/dist/components/unit-converter/index.js +1 -1
  692. package/dist/components/unit-converter/unit-converter.agent.d.ts +4 -0
  693. package/dist/components/unit-converter/unit-converter.agent.d.ts.map +1 -0
  694. package/dist/components/unit-converter/unit-converter.d.ts +27 -0
  695. package/dist/components/unit-converter/unit-converter.d.ts.map +1 -1
  696. package/dist/components/warning-stack/index.js +1 -1
  697. package/dist/components/warning-stack/warning-stack.d.ts +14 -2
  698. package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
  699. package/dist/components/whatsapp-button/index.d.ts +1 -1
  700. package/dist/components/whatsapp-button/index.d.ts.map +1 -1
  701. package/dist/components/whatsapp-button/index.js +3 -2
  702. package/dist/components/whatsapp-button/whatsapp-button.d.ts +3 -0
  703. package/dist/components/whatsapp-button/whatsapp-button.d.ts.map +1 -1
  704. package/dist/components/workflow/index.js +1 -1
  705. package/dist/components/workflow/workflow.agent.d.ts.map +1 -1
  706. package/dist/hooks/index.d.ts +1 -0
  707. package/dist/hooks/index.d.ts.map +1 -1
  708. package/dist/hooks/index.js +24 -22
  709. package/dist/hooks/index.js.map +1 -1
  710. package/dist/hooks/use-clamp-overflow.d.ts +19 -0
  711. package/dist/hooks/use-clamp-overflow.d.ts.map +1 -0
  712. package/dist/hooks/use-overflow-collapse.d.ts +46 -0
  713. package/dist/hooks/use-overflow-collapse.d.ts.map +1 -0
  714. package/dist/hooks/use-persistent-state.d.ts +7 -1
  715. package/dist/hooks/use-persistent-state.d.ts.map +1 -1
  716. package/dist/hooks/use-scroll-overflow.d.ts +36 -0
  717. package/dist/hooks/use-scroll-overflow.d.ts.map +1 -0
  718. package/dist/i18n/locales/ar.d.ts +356 -0
  719. package/dist/i18n/locales/ar.d.ts.map +1 -1
  720. package/dist/i18n/locales/ar.js +370 -3
  721. package/dist/i18n/locales/ar.js.map +1 -1
  722. package/dist/i18n/locales/de.d.ts +356 -0
  723. package/dist/i18n/locales/de.d.ts.map +1 -1
  724. package/dist/i18n/locales/de.js +370 -3
  725. package/dist/i18n/locales/de.js.map +1 -1
  726. package/dist/i18n/locales/el.d.ts +356 -0
  727. package/dist/i18n/locales/el.d.ts.map +1 -1
  728. package/dist/i18n/locales/el.js +370 -3
  729. package/dist/i18n/locales/el.js.map +1 -1
  730. package/dist/i18n/locales/en.d.ts +367 -0
  731. package/dist/i18n/locales/en.d.ts.map +1 -1
  732. package/dist/i18n/locales/en.js +381 -3
  733. package/dist/i18n/locales/en.js.map +1 -1
  734. package/dist/i18n/locales/es.d.ts +356 -0
  735. package/dist/i18n/locales/es.d.ts.map +1 -1
  736. package/dist/i18n/locales/es.js +370 -3
  737. package/dist/i18n/locales/es.js.map +1 -1
  738. package/dist/i18n/locales/fr.d.ts +356 -0
  739. package/dist/i18n/locales/fr.d.ts.map +1 -1
  740. package/dist/i18n/locales/fr.js +370 -3
  741. package/dist/i18n/locales/fr.js.map +1 -1
  742. package/dist/i18n/locales/hi.d.ts +356 -0
  743. package/dist/i18n/locales/hi.d.ts.map +1 -1
  744. package/dist/i18n/locales/hi.js +370 -3
  745. package/dist/i18n/locales/hi.js.map +1 -1
  746. package/dist/i18n/locales/it.d.ts +356 -0
  747. package/dist/i18n/locales/it.d.ts.map +1 -1
  748. package/dist/i18n/locales/it.js +370 -3
  749. package/dist/i18n/locales/it.js.map +1 -1
  750. package/dist/i18n/locales/ja.d.ts +356 -0
  751. package/dist/i18n/locales/ja.d.ts.map +1 -1
  752. package/dist/i18n/locales/ja.js +370 -3
  753. package/dist/i18n/locales/ja.js.map +1 -1
  754. package/dist/i18n/locales/nl.d.ts +356 -0
  755. package/dist/i18n/locales/nl.d.ts.map +1 -1
  756. package/dist/i18n/locales/nl.js +370 -3
  757. package/dist/i18n/locales/nl.js.map +1 -1
  758. package/dist/i18n/locales/pl.d.ts +356 -0
  759. package/dist/i18n/locales/pl.d.ts.map +1 -1
  760. package/dist/i18n/locales/pl.js +370 -3
  761. package/dist/i18n/locales/pl.js.map +1 -1
  762. package/dist/i18n/locales/pt.d.ts +356 -0
  763. package/dist/i18n/locales/pt.d.ts.map +1 -1
  764. package/dist/i18n/locales/pt.js +370 -3
  765. package/dist/i18n/locales/pt.js.map +1 -1
  766. package/dist/i18n/locales/ro.d.ts +356 -0
  767. package/dist/i18n/locales/ro.d.ts.map +1 -1
  768. package/dist/i18n/locales/ro.js +370 -3
  769. package/dist/i18n/locales/ro.js.map +1 -1
  770. package/dist/i18n/locales/ru.d.ts +356 -0
  771. package/dist/i18n/locales/ru.d.ts.map +1 -1
  772. package/dist/i18n/locales/ru.js +370 -3
  773. package/dist/i18n/locales/ru.js.map +1 -1
  774. package/dist/i18n/locales/sq.d.ts +356 -0
  775. package/dist/i18n/locales/sq.d.ts.map +1 -1
  776. package/dist/i18n/locales/sq.js +370 -3
  777. package/dist/i18n/locales/sq.js.map +1 -1
  778. package/dist/i18n/locales/sv.d.ts +356 -0
  779. package/dist/i18n/locales/sv.d.ts.map +1 -1
  780. package/dist/i18n/locales/sv.js +370 -3
  781. package/dist/i18n/locales/sv.js.map +1 -1
  782. package/dist/i18n/locales/tr.d.ts +356 -0
  783. package/dist/i18n/locales/tr.d.ts.map +1 -1
  784. package/dist/i18n/locales/tr.js +370 -3
  785. package/dist/i18n/locales/tr.js.map +1 -1
  786. package/dist/i18n/locales/zh.d.ts +356 -0
  787. package/dist/i18n/locales/zh.d.ts.map +1 -1
  788. package/dist/i18n/locales/zh.js +370 -3
  789. package/dist/i18n/locales/zh.js.map +1 -1
  790. package/dist/index.js +740 -676
  791. package/dist/index.js.map +1 -1
  792. package/dist/locales/ar.json +359 -3
  793. package/dist/locales/de.json +359 -3
  794. package/dist/locales/el.json +359 -3
  795. package/dist/locales/en.json +359 -3
  796. package/dist/locales/es.json +359 -3
  797. package/dist/locales/fr.json +359 -3
  798. package/dist/locales/hi.json +359 -3
  799. package/dist/locales/it.json +359 -3
  800. package/dist/locales/ja.json +359 -3
  801. package/dist/locales/nl.json +359 -3
  802. package/dist/locales/pl.json +359 -3
  803. package/dist/locales/pt.json +359 -3
  804. package/dist/locales/ro.json +359 -3
  805. package/dist/locales/ru.json +359 -3
  806. package/dist/locales/sq.json +359 -3
  807. package/dist/locales/sv.json +359 -3
  808. package/dist/locales/tr.json +359 -3
  809. package/dist/locales/zh.json +359 -3
  810. package/dist/patterns/alia-assistant/index.js +1 -1
  811. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  812. package/dist/patterns/patient-shell/index.js +1 -1
  813. package/dist/tokens.css +3 -2
  814. package/package.json +50 -1
  815. package/dist/_chunks/accordion-9lJSMMsZ.js.map +0 -1
  816. package/dist/_chunks/address-autocomplete-CT-9AOli.js +0 -358
  817. package/dist/_chunks/address-autocomplete-CT-9AOli.js.map +0 -1
  818. package/dist/_chunks/agenda-tray-T-BumlGZ.js.map +0 -1
  819. package/dist/_chunks/ai-prompt-input-BwEACCPm.js.map +0 -1
  820. package/dist/_chunks/ai-tools-rail-CInA_1-E.js +0 -356
  821. package/dist/_chunks/ai-tools-rail-CInA_1-E.js.map +0 -1
  822. package/dist/_chunks/alert-_mUKLmwA.js.map +0 -1
  823. package/dist/_chunks/appointment-tray-BMl89NPW.js +0 -419
  824. package/dist/_chunks/appointment-tray-BMl89NPW.js.map +0 -1
  825. package/dist/_chunks/audio-recorder-DjXLP4aF.js.map +0 -1
  826. package/dist/_chunks/autocomplete-CcCFlVf-.js.map +0 -1
  827. package/dist/_chunks/badge-CqGsX32l.js.map +0 -1
  828. package/dist/_chunks/bishop-score-CjsB9bM-.js +0 -185
  829. package/dist/_chunks/bishop-score-CjsB9bM-.js.map +0 -1
  830. package/dist/_chunks/bmi-calculator-n-823_1V.js +0 -258
  831. package/dist/_chunks/bmi-calculator-n-823_1V.js.map +0 -1
  832. package/dist/_chunks/booking-L8-YP8BJ.js.map +0 -1
  833. package/dist/_chunks/breadcrumb-OTbaY70e.js.map +0 -1
  834. package/dist/_chunks/calendar-oYWOCrnf.js.map +0 -1
  835. package/dist/_chunks/care-plan-card-BwVUyUBb.js.map +0 -1
  836. package/dist/_chunks/care-plan-entry-card-VzdQHcOL.js.map +0 -1
  837. package/dist/_chunks/chart-Cg3e9EH9.js.map +0 -1
  838. package/dist/_chunks/chat-container-ogB4OskO.js.map +0 -1
  839. package/dist/_chunks/chat-input-B5zjNEUN.js.map +0 -1
  840. package/dist/_chunks/checkbox-DRcOdmXv.js.map +0 -1
  841. package/dist/_chunks/clinical-note-card-gtrxv6zn.js +0 -333
  842. package/dist/_chunks/clinical-note-card-gtrxv6zn.js.map +0 -1
  843. package/dist/_chunks/collapsible-X3oaLPU3.js.map +0 -1
  844. package/dist/_chunks/color-picker-FXpItIaF.js.map +0 -1
  845. package/dist/_chunks/combobox-BC-DFx8G.js.map +0 -1
  846. package/dist/_chunks/command-palette-BiPAAno-.js.map +0 -1
  847. package/dist/_chunks/contact-profile-card-7BMB85T6.js.map +0 -1
  848. package/dist/_chunks/copy-field-CCq7j6Zc.js.map +0 -1
  849. package/dist/_chunks/date-range-picker-C5BWfH_T.js.map +0 -1
  850. package/dist/_chunks/date-time-picker-Ze1My59T.js.map +0 -1
  851. package/dist/_chunks/dependent-selector-DpzGtr_J.js.map +0 -1
  852. package/dist/_chunks/dialog-DMGnSelc.js.map +0 -1
  853. package/dist/_chunks/document-scanner-D2qehl3-.js.map +0 -1
  854. package/dist/_chunks/dropdown-menu-DwwPovMZ.js.map +0 -1
  855. package/dist/_chunks/editable-currency-cell-renderer-DHOspPee.js +0 -2409
  856. package/dist/_chunks/editable-currency-cell-renderer-DHOspPee.js.map +0 -1
  857. package/dist/_chunks/email-input-lQivsFrw.js +0 -396
  858. package/dist/_chunks/file-upload-BosbPDb1.js.map +0 -1
  859. package/dist/_chunks/fiscal-code-input-DPtqluVb.js.map +0 -1
  860. package/dist/_chunks/freemium-paywall-CkWjv3o6.js.map +0 -1
  861. package/dist/_chunks/header-settings-CNOqIhoW.js.map +0 -1
  862. package/dist/_chunks/list-BOwqwy03.js.map +0 -1
  863. package/dist/_chunks/locale-picker-C9JmBht3.js.map +0 -1
  864. package/dist/_chunks/map-view-Tb5VfK9Y.js.map +0 -1
  865. package/dist/_chunks/message-card.agent-4IeIgrnJ.js.map +0 -1
  866. package/dist/_chunks/message-tray-CVyJajVJ.js.map +0 -1
  867. package/dist/_chunks/multi-select-BcPylvHR.js.map +0 -1
  868. package/dist/_chunks/navigation-menu-C6lBYVv9.js.map +0 -1
  869. package/dist/_chunks/notification-card-BiESdm8q.js.map +0 -1
  870. package/dist/_chunks/notification-card.agent-Rqt3ofk9.js.map +0 -1
  871. package/dist/_chunks/notification-tray-DlgenTEe.js.map +0 -1
  872. package/dist/_chunks/number-input-Dj5L3pXK.js.map +0 -1
  873. package/dist/_chunks/operator-hero-f_KaRhw5.js.map +0 -1
  874. package/dist/_chunks/otp-input-xQ4Ps5VY.js.map +0 -1
  875. package/dist/_chunks/pagination-DQOgnxxw.js.map +0 -1
  876. package/dist/_chunks/patient-search-DR9XUYRQ.js.map +0 -1
  877. package/dist/_chunks/patient-summary-card-hEmr4eTW.js +0 -443
  878. package/dist/_chunks/patient-summary-card-hEmr4eTW.js.map +0 -1
  879. package/dist/_chunks/payment-form-nXocS_MX.js.map +0 -1
  880. package/dist/_chunks/payment-request-card-CYE5vhZ0.js.map +0 -1
  881. package/dist/_chunks/pdf-viewer-GsfNqeeT.js.map +0 -1
  882. package/dist/_chunks/phone-input-DVXhNlIl.js.map +0 -1
  883. package/dist/_chunks/popover-DTbfAuR0.js.map +0 -1
  884. package/dist/_chunks/practice-results-DND2SAt7.js.map +0 -1
  885. package/dist/_chunks/privacy-lock-C7JyMf0y.js.map +0 -1
  886. package/dist/_chunks/product-hub-panel-CAXDFeGP.js.map +0 -1
  887. package/dist/_chunks/public-footer.agent-CfXuW1x6.js.map +0 -1
  888. package/dist/_chunks/qr-code-DNXhi6se.js.map +0 -1
  889. package/dist/_chunks/recaptcha-widget-BCNHsgqt.js.map +0 -1
  890. package/dist/_chunks/registry-nPAVE19X.js +0 -21
  891. package/dist/_chunks/registry-nPAVE19X.js.map +0 -1
  892. package/dist/_chunks/resizable-3vzqDlg6.js.map +0 -1
  893. package/dist/_chunks/reviews-panel-DBktKm7i.js.map +0 -1
  894. package/dist/_chunks/rich-text-editor-VawKN1FI.js.map +0 -1
  895. package/dist/_chunks/search-bar-SY2BcV2N.js.map +0 -1
  896. package/dist/_chunks/search-input.agent-CfZvViOd.js.map +0 -1
  897. package/dist/_chunks/select-CEtRcon5.js.map +0 -1
  898. package/dist/_chunks/sheet-taJer-Ha.js.map +0 -1
  899. package/dist/_chunks/sidebar-DaB4ulxH.js.map +0 -1
  900. package/dist/_chunks/sign-document-CdAiHiCh.js.map +0 -1
  901. package/dist/_chunks/signature-capture-COi0Uiqu.js.map +0 -1
  902. package/dist/_chunks/slider-BHWzXdjt.js.map +0 -1
  903. package/dist/_chunks/sparkline-DGhCSw8M.js.map +0 -1
  904. package/dist/_chunks/stepper-accordion-Dki6r9ZE.js.map +0 -1
  905. package/dist/_chunks/stepper-accordion.agent-C4quJ-MD.js.map +0 -1
  906. package/dist/_chunks/stepper-progress-DDjq5nei.js.map +0 -1
  907. package/dist/_chunks/switch-BJ6HD3Mn.js.map +0 -1
  908. package/dist/_chunks/tab-bar-B1ovILzh.js +0 -105
  909. package/dist/_chunks/tab-bar-B1ovILzh.js.map +0 -1
  910. package/dist/_chunks/tabs-BIQ0ew1T.js.map +0 -1
  911. package/dist/_chunks/task-card.agent-CUPKYd7w.js.map +0 -1
  912. package/dist/_chunks/task-tray-CAncV-QQ.js.map +0 -1
  913. package/dist/_chunks/text-area-BIx0tZ05.js.map +0 -1
  914. package/dist/_chunks/text-input-BaClJL8Y.js.map +0 -1
  915. package/dist/_chunks/theme-toggle-DETmSu_h.js.map +0 -1
  916. package/dist/_chunks/time-picker-B5umYwfv.js.map +0 -1
  917. package/dist/_chunks/timeline-DQa5Tyz4.js.map +0 -1
  918. package/dist/_chunks/tooth-scheme-BIx1O2aJ.js +0 -1257
  919. package/dist/_chunks/tooth-scheme-BIx1O2aJ.js.map +0 -1
  920. package/dist/_chunks/transaction-chip-DK84XCBU.js.map +0 -1
  921. package/dist/_chunks/transcript-panel-CLHmv83g.js.map +0 -1
  922. package/dist/_chunks/unit-converter-C1V3ACM9.js +0 -196
  923. package/dist/_chunks/unit-converter-C1V3ACM9.js.map +0 -1
  924. package/dist/_chunks/use-password-requirements-DsgduV1x.js.map +0 -1
  925. package/dist/_chunks/use-persistent-state-i23OWy6G.js +0 -24
  926. package/dist/_chunks/use-persistent-state-i23OWy6G.js.map +0 -1
  927. package/dist/_chunks/warning-stack-Cv4fr5zo.js +0 -220
  928. package/dist/_chunks/warning-stack-Cv4fr5zo.js.map +0 -1
  929. package/dist/_chunks/whatsapp-button-DUjlWGKf.js.map +0 -1
  930. package/dist/_chunks/workflow-map-JAZryZJr.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu-qrxjymfw.js","sources":["../../src/components/dropdown-menu/dropdown-menu.agent.ts","../../src/components/dropdown-menu/dropdown-menu.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { DropdownMenuHandle } from './dropdown-menu';\n\n// The handle exposes only open/close — it cannot run/select the highlighted\n// item (Radix owns item activation). The 'pick' capability is therefore\n// dropped: there is no backing action and selection is not delegated to a\n// host. data-item-id is likewise not emitted by DropdownMenu.Item (it merely\n// spreads consumer props), so the item domHook is omitted rather than claimed.\nexport const dropdownMenuAgent: AgentAdapter<DropdownMenuHandle> = {\n id: 'dropdown-menu',\n capabilities: ['open', 'close'],\n state: {\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.dropdownMenu.state.isOpen',\n description: 'True when the menu is currently open.',\n read: (handle) => handle.getIsOpen(),\n },\n },\n actions: {\n open: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.dropdownMenu.actions.open',\n description: 'Open the menu.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.dropdownMenu.actions.close',\n description: 'Close the menu.',\n invoke: (handle) => {\n handle.close();\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'dropdown-menu' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop on DropdownMenu.Root.',\n },\n },\n};\n","import {\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useMemo,\n useRef,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type ReactNode,\n} from 'react';\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Check, ChevronRight } from 'lucide-react';\nimport { Separator as DsSeparator } from '../separator/separator';\nimport { Kbd, type KbdNamedKey } from '../kbd/kbd';\nimport { useDocumentDirection } from '../_shared/use-direction';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useAgentRegistration } from '../../agent';\nimport { dropdownMenuAgent } from './dropdown-menu.agent';\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst contentVariants = cva(\n [\n 'ds:z-[var(--z-dropdown)]',\n // Roomier panel: wider floor, larger radius, deeper float and a\n // breath more padding so menus read as elevated surfaces rather\n // than flat lists hugging their trigger.\n 'ds:min-w-[14rem]',\n 'ds:rounded-[var(--radius-lg)]',\n // Border kept (transparent) so the forced-colors override below can\n // repaint a visible edge in HCM. In normal modes the soft drop-shadow\n // carries the edge cue; the heavy `--border` (grey-800 since WCAG\n // 1.4.11 bump in 67fef8c) made the menu read as a charcoal box.\n 'ds:border ds:border-transparent',\n 'ds:bg-[var(--popover)] ds:text-[color:var(--popover-foreground)]',\n 'ds:shadow-[var(--shadow-xl)]',\n 'ds:p-[var(--spacing-sm)]',\n // Motion — gated on --animation-duration via Tailwind's animate-in\n // preset. motion-reduce disables via the no-preference query.\n 'ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out',\n 'ds:data-[state=open]:fade-in ds:data-[state=closed]:fade-out',\n 'ds:data-[state=open]:zoom-in-95 ds:data-[state=closed]:zoom-out-95',\n 'ds:data-[state=open]:slide-in-from-top-1',\n 'ds:motion-reduce:animate-none',\n 'ds:forced-colors:border-[CanvasText]',\n ].join(' '),\n);\n\nconst itemClasses = cva(\n [\n 'ds:relative ds:flex ds:items-center ds:gap-[var(--spacing-sm)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:min-h-[var(--min-target-size)]',\n 'ds:text-[length:var(--font-size-sm)] ds:text-[color:var(--foreground)]',\n 'ds:cursor-pointer ds:select-none ds:outline-none',\n // Highlighted + hover state\n 'ds:data-[highlighted]:bg-[color:var(--muted)]/40',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid ds:focus-visible:outline-[color:var(--ring)]',\n 'ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n // Disabled\n 'ds:data-[disabled]:opacity-50 ds:data-[disabled]:cursor-not-allowed',\n 'ds:data-[disabled]:pointer-events-none',\n ].join(' '),\n);\n\nconst labelClasses = cva(\n [\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-2xs)]',\n // Quiet sentence-case caption — the shouty uppercase eyebrow made\n // every menu read as a form. Groups should lean on separators first\n // and reach for a Label only when the grouping is genuinely unclear.\n 'ds:text-[length:var(--font-size-xs)]',\n 'ds:font-[var(--font-weight-medium)]',\n 'ds:text-[color:var(--muted-foreground)]',\n 'ds:select-none',\n ].join(' '),\n);\n\nconst indicatorSlotClasses =\n 'ds:inline-flex ds:items-center ds:justify-center ds:size-4 ds:shrink-0';\n\n/* ------------------------------------------------------------------ */\n/* Root / Trigger / Portal */\n/* ------------------------------------------------------------------ */\n\n// Curated agent-readiness handle — see dropdown-menu.agent.ts.\nexport interface DropdownMenuHandle {\n getIsOpen: () => boolean;\n open: () => void;\n close: () => void;\n}\n\nexport interface DropdownMenuRootProps extends ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.Root\n> {\n /** Opaque instance id — forwarded to DropdownMenu.Content as `data-component-id`. */\n id?: string;\n}\n\nconst DropdownMenuIdContext = createContext<string | undefined>(undefined);\n\nconst Root = ({\n dir,\n id,\n open: openProp,\n defaultOpen,\n onOpenChange,\n ...props\n}: DropdownMenuRootProps) => {\n const autoDir = useDocumentDirection();\n const [openRaw, setOpen] = useControllableState<boolean>({\n value: openProp,\n defaultValue: defaultOpen ?? false,\n onChange: onOpenChange,\n });\n const open = openRaw ?? false;\n\n const openRef = useRef(open);\n useEffect(() => {\n openRef.current = open;\n }, [open]);\n\n const handle = useMemo<DropdownMenuHandle>(\n () => ({\n getIsOpen: () => openRef.current,\n open: () => setOpen(true),\n close: () => setOpen(false),\n }),\n [setOpen],\n );\n useAgentRegistration(dropdownMenuAgent, handle, id);\n\n return (\n <DropdownMenuIdContext.Provider value={id}>\n <RadixDropdownMenu.Root\n dir={dir ?? autoDir}\n open={open}\n onOpenChange={setOpen}\n {...props}\n />\n </DropdownMenuIdContext.Provider>\n );\n};\nRoot.displayName = 'DropdownMenu.Root';\n\nconst Trigger = RadixDropdownMenu.Trigger;\nconst Portal = RadixDropdownMenu.Portal;\nconst RadixGroup = RadixDropdownMenu.Group;\nconst RadixRadioGroup = RadixDropdownMenu.RadioGroup;\n\n/* ------------------------------------------------------------------ */\n/* Content */\n/* ------------------------------------------------------------------ */\n\nexport interface DropdownMenuContentProps\n extends\n ComponentPropsWithoutRef<typeof RadixDropdownMenu.Content>,\n VariantProps<typeof contentVariants> {}\n\nconst Content = forwardRef<\n ElementRef<typeof RadixDropdownMenu.Content>,\n DropdownMenuContentProps\n>(({ className, sideOffset = 8, ...props }, ref) => {\n const instanceId = useContext(DropdownMenuIdContext);\n return (\n <RadixDropdownMenu.Portal>\n <RadixDropdownMenu.Content\n ref={ref}\n sideOffset={sideOffset}\n className={contentVariants({ className })}\n data-component=\"dropdown-menu\"\n data-component-id={instanceId}\n {...props}\n />\n </RadixDropdownMenu.Portal>\n );\n});\nContent.displayName = 'DropdownMenu.Content';\n\n/* ------------------------------------------------------------------ */\n/* Item */\n/* ------------------------------------------------------------------ */\n\nexport interface DropdownMenuItemProps extends ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.Item\n> {\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n description?: ReactNode;\n /** Convenience — renders a DS <Kbd keys={…}> on the inline-end. */\n shortcut?: Array<KbdNamedKey | string>;\n}\n\nconst Item = forwardRef<\n ElementRef<typeof RadixDropdownMenu.Item>,\n DropdownMenuItemProps\n>(\n (\n {\n className,\n startIcon,\n endIcon,\n description,\n shortcut,\n children,\n ...props\n },\n ref,\n ) => (\n <RadixDropdownMenu.Item\n ref={ref}\n className={itemClasses({ className })}\n {...props}\n >\n {startIcon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:size-4 ds:shrink-0 ds:items-center ds:justify-center\"\n >\n {startIcon}\n </span>\n ) : null}\n <span className=\"ds:flex-1 ds:flex ds:flex-col ds:min-w-0\">\n <span className=\"ds:truncate\">{children}</span>\n {description ? (\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)] ds:truncate\">\n {description}\n </span>\n ) : null}\n </span>\n {shortcut ? (\n <span className=\"ds:ms-auto\">\n <Kbd keys={shortcut} size=\"sm\" />\n </span>\n ) : endIcon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:ms-auto ds:inline-flex ds:size-4 ds:shrink-0 ds:items-center ds:justify-center\"\n >\n {endIcon}\n </span>\n ) : null}\n </RadixDropdownMenu.Item>\n ),\n);\nItem.displayName = 'DropdownMenu.Item';\n\n/* ------------------------------------------------------------------ */\n/* CheckboxItem */\n/* ------------------------------------------------------------------ */\n\nexport type DropdownMenuCheckboxItemProps = ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.CheckboxItem\n>;\n\nconst CheckboxItem = forwardRef<\n ElementRef<typeof RadixDropdownMenu.CheckboxItem>,\n DropdownMenuCheckboxItemProps\n>(({ className, children, ...props }, ref) => (\n <RadixDropdownMenu.CheckboxItem\n ref={ref}\n className={itemClasses({ className })}\n {...props}\n >\n <span className={indicatorSlotClasses}>\n <RadixDropdownMenu.ItemIndicator>\n <Check aria-hidden className=\"ds:size-4\" />\n </RadixDropdownMenu.ItemIndicator>\n </span>\n <span className=\"ds:flex-1 ds:truncate\">{children}</span>\n </RadixDropdownMenu.CheckboxItem>\n));\nCheckboxItem.displayName = 'DropdownMenu.CheckboxItem';\n\n/* ------------------------------------------------------------------ */\n/* SwitchItem */\n/* */\n/* A persistent on/off toggle row (menuitemcheckbox semantics) whose */\n/* indicator is a trailing switch glyph instead of a tick — for */\n/* settings that live inside a menu (e.g. accessible mode). Selecting */\n/* keeps the menu open so the user sees the toggle land. */\n/* ------------------------------------------------------------------ */\n\nexport type DropdownMenuSwitchItemProps = ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.CheckboxItem\n>;\n\n// Mirrors the kit Switch's `sm` metrics (track h-4 w-7, thumb size-3)\n// and its primary checked fill so the two switch affordances stay kin.\n// The muted-foreground border keeps the OFF state perceivable — without\n// it the muted track sits at ~1.2:1 on the popover (WCAG 1.4.11).\nconst switchTrackClasses = [\n 'ds:ms-auto ds:inline-flex ds:items-center ds:shrink-0',\n 'ds:h-4 ds:w-7 ds:p-[2px]',\n 'ds:rounded-[var(--radius-full)]',\n 'ds:border ds:border-[length:var(--border-width-sm)] ds:border-[color:var(--muted-foreground)]',\n 'ds:bg-[color:var(--muted)]',\n 'ds:[[data-state=checked]_&]:bg-[color:var(--primary)]',\n 'ds:[[data-state=checked]_&]:border-[color:var(--primary)]',\n // Thumb slides via justify swap — logical-direction safe, no\n // transform to fight under prefers-reduced-motion.\n 'ds:justify-start ds:[[data-state=checked]_&]:justify-end',\n 'ds:forced-colors:border-[CanvasText]',\n // HCM strips fills — paint the checked track with the system\n // selection colour so state isn't conveyed by thumb position alone.\n 'ds:forced-colors:[[data-state=checked]_&]:bg-[SelectedItem]',\n].join(' ');\n\nconst switchThumbClasses = [\n 'ds:block ds:size-3',\n 'ds:rounded-[var(--radius-full)]',\n 'ds:bg-[color:var(--background)]',\n 'ds:border ds:border-[length:var(--border-width-sm)] ds:border-[color:var(--muted-foreground)]',\n 'ds:[[data-state=checked]_&]:border-transparent',\n 'ds:shadow-[var(--shadow-sm)]',\n 'ds:forced-colors:bg-[CanvasText]',\n].join(' ');\n\nconst SwitchItem = forwardRef<\n ElementRef<typeof RadixDropdownMenu.CheckboxItem>,\n DropdownMenuSwitchItemProps\n>(({ className, children, onSelect, ...props }, ref) => (\n <RadixDropdownMenu.CheckboxItem\n ref={ref}\n className={itemClasses({ className })}\n onSelect={(event) => {\n // Keep-open is unconditional — prevent first so a throwing consumer\n // handler can't close the menu as a side effect.\n event.preventDefault();\n onSelect?.(event);\n }}\n {...props}\n >\n <span className=\"ds:flex-1 ds:truncate\">{children}</span>\n <span aria-hidden=\"true\" className={switchTrackClasses}>\n <span className={switchThumbClasses} />\n </span>\n </RadixDropdownMenu.CheckboxItem>\n));\nSwitchItem.displayName = 'DropdownMenu.SwitchItem';\n\n/* ------------------------------------------------------------------ */\n/* RadioGroup / RadioItem */\n/* ------------------------------------------------------------------ */\n\nconst RadioGroup = RadixRadioGroup;\n\nexport type DropdownMenuRadioItemProps = ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.RadioItem\n>;\n\nconst RadioItem = forwardRef<\n ElementRef<typeof RadixDropdownMenu.RadioItem>,\n DropdownMenuRadioItemProps\n>(({ className, children, ...props }, ref) => (\n <RadixDropdownMenu.RadioItem\n ref={ref}\n className={itemClasses({ className })}\n {...props}\n >\n {/* Real radio affordance: an always-visible ring with a filled dot\n when selected — a tick reads as a checkbox, not a single choice.\n The ring colours via the item's own data-state so the unchecked\n options still advertise that they are part of a radio set. */}\n <span className={indicatorSlotClasses} aria-hidden=\"true\">\n <span\n className={[\n 'ds:inline-flex ds:size-4 ds:items-center ds:justify-center ds:shrink-0',\n 'ds:rounded-[var(--radius-full)]',\n 'ds:border ds:border-[length:var(--border-width-sm)] ds:border-[color:var(--muted-foreground)]',\n 'ds:[[data-state=checked]_&]:border-[color:var(--accent)]',\n 'ds:forced-colors:border-[CanvasText]',\n ].join(' ')}\n >\n <RadixDropdownMenu.ItemIndicator>\n <span className=\"ds:block ds:size-2 ds:rounded-[var(--radius-full)] ds:bg-[color:var(--accent)] ds:forced-colors:bg-[CanvasText]\" />\n </RadixDropdownMenu.ItemIndicator>\n </span>\n </span>\n <span className=\"ds:flex-1 ds:truncate\">{children}</span>\n </RadixDropdownMenu.RadioItem>\n));\nRadioItem.displayName = 'DropdownMenu.RadioItem';\n\n/* ------------------------------------------------------------------ */\n/* Label */\n/* ------------------------------------------------------------------ */\n\nexport type DropdownMenuLabelProps = ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.Label\n>;\n\nconst Label = forwardRef<\n ElementRef<typeof RadixDropdownMenu.Label>,\n DropdownMenuLabelProps\n>(({ className, ...props }, ref) => (\n <RadixDropdownMenu.Label\n ref={ref}\n className={labelClasses({ className })}\n {...props}\n />\n));\nLabel.displayName = 'DropdownMenu.Label';\n\n/* ------------------------------------------------------------------ */\n/* Separator */\n/* ------------------------------------------------------------------ */\n\nexport type DropdownMenuSeparatorProps = ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.Separator\n>;\n\nconst MenuSeparator = forwardRef<\n ElementRef<typeof RadixDropdownMenu.Separator>,\n DropdownMenuSeparatorProps\n>(({ className, ...props }, ref) => (\n <RadixDropdownMenu.Separator ref={ref} asChild {...props}>\n <DsSeparator\n className={['ds:my-[calc(var(--spacing-xs)/2)]', className ?? '']\n .filter(Boolean)\n .join(' ')}\n />\n </RadixDropdownMenu.Separator>\n));\nMenuSeparator.displayName = 'DropdownMenu.Separator';\n\n/* ------------------------------------------------------------------ */\n/* Shortcut — thin wrapper over DS Kbd for the right side of an Item */\n/* ------------------------------------------------------------------ */\n\nexport interface DropdownMenuShortcutProps {\n keys: Array<KbdNamedKey | string>;\n separator?: 'none' | 'plus' | 'then';\n}\n\nconst Shortcut = forwardRef<HTMLSpanElement, DropdownMenuShortcutProps>(\n ({ keys, separator = 'none' }, ref) => (\n <span ref={ref} className=\"ds:ms-auto ds:ps-[var(--spacing-sm)]\">\n <Kbd keys={keys} separator={separator} size=\"sm\" />\n </span>\n ),\n);\nShortcut.displayName = 'DropdownMenu.Shortcut';\n\n/* ------------------------------------------------------------------ */\n/* Sub-menu */\n/* ------------------------------------------------------------------ */\n\nconst Sub = RadixDropdownMenu.Sub;\n\nexport interface DropdownMenuSubTriggerProps extends ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.SubTrigger\n> {\n startIcon?: ReactNode;\n}\n\nconst SubTrigger = forwardRef<\n ElementRef<typeof RadixDropdownMenu.SubTrigger>,\n DropdownMenuSubTriggerProps\n>(({ className, startIcon, children, ...props }, ref) => (\n <RadixDropdownMenu.SubTrigger\n ref={ref}\n className={itemClasses({ className })}\n {...props}\n >\n {startIcon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:size-4 ds:shrink-0 ds:items-center ds:justify-center\"\n >\n {startIcon}\n </span>\n ) : null}\n <span className=\"ds:flex-1 ds:truncate\">{children}</span>\n <ChevronRight\n aria-hidden\n className=\"ds:ms-auto ds:size-4 ds:shrink-0 ds:rtl:-scale-x-100\"\n />\n </RadixDropdownMenu.SubTrigger>\n));\nSubTrigger.displayName = 'DropdownMenu.SubTrigger';\n\nexport type DropdownMenuSubContentProps = ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.SubContent\n>;\n\nconst SubContent = forwardRef<\n ElementRef<typeof RadixDropdownMenu.SubContent>,\n DropdownMenuSubContentProps\n>(({ className, ...props }, ref) => (\n <RadixDropdownMenu.Portal>\n <RadixDropdownMenu.SubContent\n ref={ref}\n sideOffset={8}\n data-component=\"dropdown-menu-sub-content\"\n className={contentVariants({ className })}\n {...props}\n />\n </RadixDropdownMenu.Portal>\n));\nSubContent.displayName = 'DropdownMenu.SubContent';\n\n/* ------------------------------------------------------------------ */\n/* Assembled namespace export */\n/* ------------------------------------------------------------------ */\n\nexport const DropdownMenu = {\n Root,\n Trigger,\n Portal,\n Content,\n Group: RadixGroup,\n Item,\n CheckboxItem,\n SwitchItem,\n RadioGroup,\n RadioItem,\n Label,\n Separator: MenuSeparator,\n Shortcut,\n Sub,\n SubTrigger,\n SubContent,\n};\n"],"names":["dropdownMenuAgent","handle","contentVariants","cva","itemClasses","labelClasses","indicatorSlotClasses","DropdownMenuIdContext","createContext","Root","dir","id","openProp","defaultOpen","onOpenChange","props","autoDir","useDocumentDirection","openRaw","setOpen","useControllableState","open","openRef","useRef","useEffect","useMemo","useAgentRegistration","jsx","RadixDropdownMenu","Trigger","Portal","RadixGroup","RadixRadioGroup","Content","forwardRef","className","sideOffset","ref","instanceId","useContext","Item","startIcon","endIcon","description","shortcut","children","jsxs","Kbd","CheckboxItem","Check","switchTrackClasses","switchThumbClasses","SwitchItem","onSelect","event","RadioGroup","RadioItem","Label","MenuSeparator","DsSeparator","Shortcut","keys","separator","Sub","SubTrigger","ChevronRight","SubContent","DropdownMenu"],"mappings":"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"}
@@ -3,14 +3,14 @@ import { forwardRef as q, useState as c, useMemo as u, useEffect as J } from "re
3
3
  import { c as Q } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as W } from "react-i18next";
5
5
  import { R as m } from "./radio-TWf9Q-mp.js";
6
- import { R as T } from "./radio-group-CLjK-SlK.js";
6
+ import { R as T } from "./radio-group-BPt7pKZW.js";
7
7
  import { F as g } from "./form-field-BOm9hK35.js";
8
- import { D as b } from "./date-picker-oGg5BnXL.js";
9
- import { N as S } from "./number-input-Dj5L3pXK.js";
8
+ import { D as b } from "./date-picker-Dl9RKxaV.js";
9
+ import { N as S } from "./number-input-DxphVG_A.js";
10
10
  import { C as k } from "./card-DPmk26CL.js";
11
- import { B } from "./badge-CqGsX32l.js";
11
+ import { B } from "./badge-DCOqV9mI.js";
12
12
  import { I as X } from "./insert-result-njqBthzT.js";
13
- import { D as y, r as Z, c as ee, e as ae, f as te, A as le, h as re, i as se } from "./antenatal-schedule-timeline-35ebkcZT.js";
13
+ import { D as y, r as Z, c as ee, e as ae, f as te, A as le, h as re, i as se } from "./antenatal-schedule-timeline-CwXrQRm1.js";
14
14
  const de = Q("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
15
15
  variants: {
16
16
  width: { full: "ds:w-full", auto: "ds:inline-flex" }
@@ -253,4 +253,4 @@ ce.displayName = "DueDateCalculator";
253
253
  export {
254
254
  ce as D
255
255
  };
256
- //# sourceMappingURL=due-date-calculator-DU9AEWNy.js.map
256
+ //# sourceMappingURL=due-date-calculator-Brdj-euS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"due-date-calculator-DU9AEWNy.js","sources":["../../src/components/due-date-calculator/due-date-calculator.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* DueDateCalculator — estimate the date of delivery from one of three */\n/* dating methods, with current gestational age + trimester. */\n/* */\n/* - Maths lives in `./gestation` (pure, separately tested). */\n/* - Three methods: LMP (Naegele, cycle-length adjustable), conception, */\n/* and IVF transfer (Day-3 vs Day-5 embryo). */\n/* - The reference date can't be in the future, so the DatePicker caps */\n/* at today. */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { RadioGroup, Radio } from '../radio-group';\nimport { FormField } from '../form-field';\nimport { DatePicker } from '../date-picker';\nimport { NumberInput } from '../number-input';\nimport { Card } from '../card';\nimport { Badge } from '../badge';\nimport {\n InsertButton,\n type InsertPayload,\n type InsertVariant,\n type InsertMode,\n} from '../_shared/insert-result';\nimport {\n type DueDateMethod,\n type EmbryoAge,\n type DueDateResult,\n computeDueDate,\n redateByCrl,\n DEFAULT_CYCLE_LENGTH,\n TRIMESTER_BADGE_VARIANT,\n trimesterHighlightToken,\n} from '../_shared/obstetrics';\nimport {\n computeAntenatalSchedule,\n type AntenatalScheduleOptions,\n} from '../_shared/antenatal-schedule';\nimport {\n AntenatalScheduleTimeline,\n buildScheduleInsertFields,\n} from '../_shared/antenatal-schedule-timeline';\n\nconst rootVariants = cva('ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]', {\n variants: {\n width: { full: 'ds:w-full', auto: 'ds:inline-flex' },\n },\n defaultVariants: { width: 'full' },\n});\n\n/** Reference-date i18n key per method. */\nconst DATE_LABEL_KEY: Record<DueDateMethod, string> = {\n lmp: 'dueDateCalculator.lmpDate',\n conception: 'dueDateCalculator.conceptionDate',\n ivf: 'dueDateCalculator.transferDate',\n};\n\nexport interface DueDateCalculatorProps extends VariantProps<\n typeof rootVariants\n> {\n /** Initial dating method. Defaults to `'lmp'`. */\n defaultMethod?: DueDateMethod;\n /** Fires whenever a due date can be computed (and with `null` when it can't). */\n onResultChange?: (result: DueDateResult | null) => void;\n /** When provided, shows an \"Insert\" button that emits the result for an editor. */\n onInsert?: (payload: InsertPayload) => void;\n /**\n * Which verb the result button performs. Defaults to `'insert'`.\n * Use `'copy'` in an app-shell surface (no editor to insert into) — the\n * button writes the result to the clipboard as a multi-format `ClipboardItem`.\n */\n insertVariant?: InsertVariant;\n /** `copy` variant only — fired after a successful clipboard write. */\n onCopy?: (mode: InsertMode) => void;\n /** `copy` variant only — fired if the clipboard write can't proceed. */\n onError?: (error: unknown) => void;\n /**\n * Brand wordmark printed in the inserted/copied result-card footer.\n * Omitted → no brand line (and no footer hairline); a string → that custom\n * brand; `false` → no brand line. Brand is opt-in.\n */\n insertBrand?: string | false;\n /**\n * Append the antenatal exam schedule (the time-sensitive screening windows)\n * below the result, dated from the computed gestational start.\n */\n showSchedule?: boolean;\n /**\n * Passthrough options for the appended schedule (national `schedule`,\n * `plurality`, `chorionicity`, `rhNegative`, `gdmRisk`, …). `today` is\n * supplied by the component. Ignored unless `showSchedule` is set.\n */\n scheduleOptions?: Omit<AntenatalScheduleOptions, 'today'>;\n /** Opaque instance id, emitted as `data-component-id`. */\n id?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\n/**\n * @deprecated Superseded by `PregnancyDating`, which unifies the due-date and\n * gestational-age calculators (any anchor → both EDD and current GA) and adds a\n * manual ±days dating adjustment. This component will be removed in a future\n * release; migrate to `PregnancyDating` (`defaultMethod=\"lmp\"`).\n */\nexport const DueDateCalculator = forwardRef<\n HTMLDivElement,\n DueDateCalculatorProps\n>(\n (\n {\n defaultMethod = 'lmp',\n onResultChange,\n onInsert,\n insertVariant = 'insert',\n onCopy,\n onError,\n insertBrand,\n showSchedule = false,\n scheduleOptions,\n id,\n width,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n const [method, setMethod] = useState<DueDateMethod>(defaultMethod);\n const [refDate, setRefDate] = useState<Date | undefined>(undefined);\n const [cycleLength, setCycleLength] = useState<number | null>(\n DEFAULT_CYCLE_LENGTH,\n );\n const [embryoAge, setEmbryoAge] = useState<EmbryoAge>(5);\n // Optional first-trimester ultrasound (LMP method only) for ACOG CO700 redating.\n const [crlMm, setCrlMm] = useState<number | null>(null);\n const [scanDate, setScanDate] = useState<Date | undefined>(undefined);\n\n // Real today — caps the date inputs (LMP / ultrasound can't be in the future).\n const today = useMemo(() => new Date(), []);\n // The date GA, trimester and schedule status are evaluated against; defaults\n // to today but can be a future appointment date to project forward. (The EDD\n // itself is dating-anchored and does not depend on this.)\n const [asOfDate, setAsOfDate] = useState<Date>(() => new Date());\n\n // ACOG CO700 CRL redating — only when an LMP, a CRL and a scan date are set.\n const redating = useMemo(() => {\n if (method !== 'lmp' || !refDate || crlMm === null || !scanDate) {\n return null;\n }\n return redateByCrl({ lmp: refDate, scanDate, crlMm });\n }, [method, refDate, crlMm, scanDate]);\n\n const result = useMemo<DueDateResult | null>(() => {\n if (!refDate) return null;\n // A confirmed redating moves the effective LMP to the ultrasound's; the\n // CRL already reflects true gestation, so cycle adjustment no longer applies.\n const effectiveDate =\n method === 'lmp' && redating?.redated\n ? redating.gestationalStart\n : refDate;\n const effectiveCycle =\n method === 'lmp' && redating?.redated\n ? DEFAULT_CYCLE_LENGTH\n : (cycleLength ?? DEFAULT_CYCLE_LENGTH);\n return computeDueDate(\n {\n method,\n date: effectiveDate,\n cycleLength: effectiveCycle,\n embryoAge,\n },\n asOfDate,\n );\n }, [method, refDate, cycleLength, embryoAge, redating, asOfDate]);\n\n const dateFormatter = useMemo(\n () => new Intl.DateTimeFormat(i18n.language, { dateStyle: 'long' }),\n [i18n.language],\n );\n\n useEffect(() => {\n onResultChange?.(result);\n }, [result, onResultChange]);\n\n const schedule = useMemo(() => {\n if (!showSchedule || !result) return null;\n return computeAntenatalSchedule(result.gestationalStart, {\n ...scheduleOptions,\n today: asOfDate,\n });\n }, [showSchedule, result, asOfDate, scheduleOptions]);\n\n return (\n <div\n ref={ref}\n data-component=\"due-date-calculator\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <RadioGroup\n label={t('dueDateCalculator.method.label')}\n variant=\"horizontal\"\n value={method}\n onValueChange={(next) => setMethod(next as DueDateMethod)}\n >\n <Radio label={t('dueDateCalculator.method.lmp')} value=\"lmp\" />\n <Radio\n label={t('dueDateCalculator.method.conception')}\n value=\"conception\"\n />\n <Radio label={t('dueDateCalculator.method.ivf')} value=\"ivf\" />\n </RadioGroup>\n\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n <FormField label={t(DATE_LABEL_KEY[method])}>\n <DatePicker value={refDate} onChange={setRefDate} maxDate={today} />\n </FormField>\n\n {method === 'lmp' && (\n <FormField\n label={t('dueDateCalculator.cycleLength')}\n description={t('dueDateCalculator.cycleLengthHint')}\n >\n <NumberInput\n mode=\"integer\"\n min={20}\n max={45}\n value={cycleLength}\n onChange={setCycleLength}\n />\n </FormField>\n )}\n\n {method === 'ivf' && (\n <RadioGroup\n label={t('dueDateCalculator.embryoAge')}\n variant=\"horizontal\"\n value={String(embryoAge)}\n onValueChange={(next) => setEmbryoAge(Number(next) as EmbryoAge)}\n >\n <Radio label={t('dueDateCalculator.day3')} value=\"3\" />\n <Radio label={t('dueDateCalculator.day5')} value=\"5\" />\n </RadioGroup>\n )}\n </div>\n\n <FormField\n label={t('dueDateCalculator.asOfDate')}\n description={t('dueDateCalculator.asOfDateHint')}\n >\n <DatePicker value={asOfDate} onChange={(d) => d && setAsOfDate(d)} />\n </FormField>\n\n {method === 'lmp' ? (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\">\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n <FormField\n label={t('dueDateCalculator.crl')}\n description={t('dueDateCalculator.crlHint')}\n >\n <NumberInput\n mode=\"decimal\"\n min={0}\n step={0.1}\n value={crlMm}\n onChange={setCrlMm}\n />\n </FormField>\n <FormField label={t('dueDateCalculator.scanDate')}>\n <DatePicker\n value={scanDate}\n onChange={setScanDate}\n maxDate={today}\n />\n </FormField>\n </div>\n {redating ? (\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]\">\n <Badge variant={redating.redated ? 'warning' : 'success'}>\n {redating.redated\n ? t('dueDateCalculator.redated', {\n days: redating.discrepancyDays,\n })\n : t('dueDateCalculator.datesAgree')}\n </Badge>\n {!redating.crlInRange ? (\n <span className=\"type-meta ds:text-muted-foreground\">\n {t('dueDateCalculator.crlOutOfRange')}\n </span>\n ) : null}\n </div>\n ) : null}\n </div>\n ) : null}\n\n {/* Concise polite announcement when a due date resolves. */}\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {result\n ? `${t('dueDateCalculator.result.dueDateLabel')}: ${dateFormatter.format(\n result.dueDate,\n )}. ${t('dueDateCalculator.result.trimesterLabel')}: ${t(\n `dueDateCalculator.trimester.${result.trimester}`,\n )}.`\n : ''}\n </p>\n\n {result ? (\n <Card variant=\"elevated\">\n <Card.Body className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n <dl className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-3\">\n <div className=\"ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('dueDateCalculator.result.trimesterLabel')}\n </dt>\n <dd>\n <Badge\n variant={TRIMESTER_BADGE_VARIANT[result.trimester]}\n size=\"lg\"\n >\n {t(`dueDateCalculator.trimester.${result.trimester}`)}\n </Badge>\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('dueDateCalculator.result.gestationLabel')}\n </dt>\n <dd className=\"type-body ds:text-foreground\">\n {result.gestationalAge\n ? t('dueDateCalculator.result.gestation', {\n weeks: result.gestationalAge.weeks,\n days: result.gestationalAge.days,\n })\n : '—'}\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('dueDateCalculator.result.dueDateLabel')}\n </dt>\n <dd className=\"type-metric ds:text-foreground\">\n {dateFormatter.format(result.dueDate)}\n </dd>\n </div>\n </dl>\n </Card.Body>\n </Card>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('dueDateCalculator.empty')}\n </p>\n )}\n\n {schedule ? <AntenatalScheduleTimeline events={schedule} /> : null}\n\n {/* One result-action group for the whole result — sits after both the\n due-date card and the schedule, and its payload carries the schedule\n rows when shown (no per-card buttons). */}\n {result && (insertVariant === 'copy' || onInsert) ? (\n <InsertButton\n variant={insertVariant}\n onInsert={onInsert}\n onCopy={onCopy}\n onError={onError}\n card={{\n title: t('insert.title.dueDate'),\n icon: 'calendar-heart',\n highlight: dateFormatter.format(result.dueDate),\n // Chip tinted with the trimester's semantic token so the inserted\n // PNG carries the same clinical-stage colour as the on-screen\n // trimester badge — with the contrast-safe orange override for the\n // `--warning` third trimester.\n highlightToken: trimesterHighlightToken(result.trimester),\n brand: insertBrand,\n fields: [\n {\n // The estimated date of delivery → calendar glyph.\n icon: 'calendar',\n label: t('dueDateCalculator.result.dueDateLabel'),\n value: dateFormatter.format(result.dueDate),\n },\n {\n // Gestational age is an elapsed duration → clock glyph.\n icon: 'clock',\n label: t('dueDateCalculator.result.gestationLabel'),\n value: result.gestationalAge\n ? t('dueDateCalculator.result.gestation', {\n weeks: result.gestationalAge.weeks,\n days: result.gestationalAge.days,\n })\n : '—',\n },\n {\n // Trimester is a clinical-stage classification → tag.\n icon: 'tag',\n label: t('dueDateCalculator.result.trimesterLabel'),\n value: t(`dueDateCalculator.trimester.${result.trimester}`),\n },\n // When the schedule is shown, the single Insert button carries\n // the exam windows too (no second button).\n ...(schedule\n ? buildScheduleInsertFields(schedule, t, (d) =>\n dateFormatter.format(d),\n )\n : []),\n ],\n }}\n />\n ) : null}\n </div>\n );\n },\n);\n\nDueDateCalculator.displayName = 'DueDateCalculator';\n"],"names":["rootVariants","cva","DATE_LABEL_KEY","DueDateCalculator","forwardRef","defaultMethod","onResultChange","onInsert","insertVariant","onCopy","onError","insertBrand","showSchedule","scheduleOptions","id","width","className","ref","t","i18n","useTranslation","method","setMethod","useState","refDate","setRefDate","cycleLength","setCycleLength","DEFAULT_CYCLE_LENGTH","embryoAge","setEmbryoAge","crlMm","setCrlMm","scanDate","setScanDate","today","useMemo","asOfDate","setAsOfDate","redating","redateByCrl","result","effectiveDate","effectiveCycle","computeDueDate","dateFormatter","useEffect","schedule","computeAntenatalSchedule","jsxs","RadioGroup","next","jsx","Radio","FormField","DatePicker","NumberInput","Badge","Card","TRIMESTER_BADGE_VARIANT","AntenatalScheduleTimeline","InsertButton","trimesterHighlightToken","buildScheduleInsertFields"],"mappings":"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"}
1
+ {"version":3,"file":"due-date-calculator-Brdj-euS.js","sources":["../../src/components/due-date-calculator/due-date-calculator.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* DueDateCalculator — estimate the date of delivery from one of three */\n/* dating methods, with current gestational age + trimester. */\n/* */\n/* - Maths lives in `./gestation` (pure, separately tested). */\n/* - Three methods: LMP (Naegele, cycle-length adjustable), conception, */\n/* and IVF transfer (Day-3 vs Day-5 embryo). */\n/* - The reference date can't be in the future, so the DatePicker caps */\n/* at today. */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { RadioGroup, Radio } from '../radio-group';\nimport { FormField } from '../form-field';\nimport { DatePicker } from '../date-picker';\nimport { NumberInput } from '../number-input';\nimport { Card } from '../card';\nimport { Badge } from '../badge';\nimport {\n InsertButton,\n type InsertPayload,\n type InsertVariant,\n type InsertMode,\n} from '../_shared/insert-result';\nimport {\n type DueDateMethod,\n type EmbryoAge,\n type DueDateResult,\n computeDueDate,\n redateByCrl,\n DEFAULT_CYCLE_LENGTH,\n TRIMESTER_BADGE_VARIANT,\n trimesterHighlightToken,\n} from '../_shared/obstetrics';\nimport {\n computeAntenatalSchedule,\n type AntenatalScheduleOptions,\n} from '../_shared/antenatal-schedule';\nimport {\n AntenatalScheduleTimeline,\n buildScheduleInsertFields,\n} from '../_shared/antenatal-schedule-timeline';\n\nconst rootVariants = cva('ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]', {\n variants: {\n width: { full: 'ds:w-full', auto: 'ds:inline-flex' },\n },\n defaultVariants: { width: 'full' },\n});\n\n/** Reference-date i18n key per method. */\nconst DATE_LABEL_KEY: Record<DueDateMethod, string> = {\n lmp: 'dueDateCalculator.lmpDate',\n conception: 'dueDateCalculator.conceptionDate',\n ivf: 'dueDateCalculator.transferDate',\n};\n\nexport interface DueDateCalculatorProps extends VariantProps<\n typeof rootVariants\n> {\n /** Initial dating method. Defaults to `'lmp'`. */\n defaultMethod?: DueDateMethod;\n /** Fires whenever a due date can be computed (and with `null` when it can't). */\n onResultChange?: (result: DueDateResult | null) => void;\n /** When provided, shows an \"Insert\" button that emits the result for an editor. */\n onInsert?: (payload: InsertPayload) => void;\n /**\n * Which verb the result button performs. Defaults to `'insert'`.\n * Use `'copy'` in an app-shell surface (no editor to insert into) — the\n * button writes the result to the clipboard as a multi-format `ClipboardItem`.\n */\n insertVariant?: InsertVariant;\n /** `copy` variant only — fired after a successful clipboard write. */\n onCopy?: (mode: InsertMode) => void;\n /** `copy` variant only — fired if the clipboard write can't proceed. */\n onError?: (error: unknown) => void;\n /**\n * Brand wordmark printed in the inserted/copied result-card footer.\n * Omitted → no brand line (and no footer hairline); a string → that custom\n * brand; `false` → no brand line. Brand is opt-in.\n */\n insertBrand?: string | false;\n /**\n * Append the antenatal exam schedule (the time-sensitive screening windows)\n * below the result, dated from the computed gestational start.\n */\n showSchedule?: boolean;\n /**\n * Passthrough options for the appended schedule (national `schedule`,\n * `plurality`, `chorionicity`, `rhNegative`, `gdmRisk`, …). `today` is\n * supplied by the component. Ignored unless `showSchedule` is set.\n */\n scheduleOptions?: Omit<AntenatalScheduleOptions, 'today'>;\n /** Opaque instance id, emitted as `data-component-id`. */\n id?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\n/**\n * @deprecated Superseded by `PregnancyDating`, which unifies the due-date and\n * gestational-age calculators (any anchor → both EDD and current GA) and adds a\n * manual ±days dating adjustment. This component will be removed in a future\n * release; migrate to `PregnancyDating` (`defaultMethod=\"lmp\"`).\n */\nexport const DueDateCalculator = forwardRef<\n HTMLDivElement,\n DueDateCalculatorProps\n>(\n (\n {\n defaultMethod = 'lmp',\n onResultChange,\n onInsert,\n insertVariant = 'insert',\n onCopy,\n onError,\n insertBrand,\n showSchedule = false,\n scheduleOptions,\n id,\n width,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n const [method, setMethod] = useState<DueDateMethod>(defaultMethod);\n const [refDate, setRefDate] = useState<Date | undefined>(undefined);\n const [cycleLength, setCycleLength] = useState<number | null>(\n DEFAULT_CYCLE_LENGTH,\n );\n const [embryoAge, setEmbryoAge] = useState<EmbryoAge>(5);\n // Optional first-trimester ultrasound (LMP method only) for ACOG CO700 redating.\n const [crlMm, setCrlMm] = useState<number | null>(null);\n const [scanDate, setScanDate] = useState<Date | undefined>(undefined);\n\n // Real today — caps the date inputs (LMP / ultrasound can't be in the future).\n const today = useMemo(() => new Date(), []);\n // The date GA, trimester and schedule status are evaluated against; defaults\n // to today but can be a future appointment date to project forward. (The EDD\n // itself is dating-anchored and does not depend on this.)\n const [asOfDate, setAsOfDate] = useState<Date>(() => new Date());\n\n // ACOG CO700 CRL redating — only when an LMP, a CRL and a scan date are set.\n const redating = useMemo(() => {\n if (method !== 'lmp' || !refDate || crlMm === null || !scanDate) {\n return null;\n }\n return redateByCrl({ lmp: refDate, scanDate, crlMm });\n }, [method, refDate, crlMm, scanDate]);\n\n const result = useMemo<DueDateResult | null>(() => {\n if (!refDate) return null;\n // A confirmed redating moves the effective LMP to the ultrasound's; the\n // CRL already reflects true gestation, so cycle adjustment no longer applies.\n const effectiveDate =\n method === 'lmp' && redating?.redated\n ? redating.gestationalStart\n : refDate;\n const effectiveCycle =\n method === 'lmp' && redating?.redated\n ? DEFAULT_CYCLE_LENGTH\n : (cycleLength ?? DEFAULT_CYCLE_LENGTH);\n return computeDueDate(\n {\n method,\n date: effectiveDate,\n cycleLength: effectiveCycle,\n embryoAge,\n },\n asOfDate,\n );\n }, [method, refDate, cycleLength, embryoAge, redating, asOfDate]);\n\n const dateFormatter = useMemo(\n () => new Intl.DateTimeFormat(i18n.language, { dateStyle: 'long' }),\n [i18n.language],\n );\n\n useEffect(() => {\n onResultChange?.(result);\n }, [result, onResultChange]);\n\n const schedule = useMemo(() => {\n if (!showSchedule || !result) return null;\n return computeAntenatalSchedule(result.gestationalStart, {\n ...scheduleOptions,\n today: asOfDate,\n });\n }, [showSchedule, result, asOfDate, scheduleOptions]);\n\n return (\n <div\n ref={ref}\n data-component=\"due-date-calculator\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <RadioGroup\n label={t('dueDateCalculator.method.label')}\n variant=\"horizontal\"\n value={method}\n onValueChange={(next) => setMethod(next as DueDateMethod)}\n >\n <Radio label={t('dueDateCalculator.method.lmp')} value=\"lmp\" />\n <Radio\n label={t('dueDateCalculator.method.conception')}\n value=\"conception\"\n />\n <Radio label={t('dueDateCalculator.method.ivf')} value=\"ivf\" />\n </RadioGroup>\n\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n <FormField label={t(DATE_LABEL_KEY[method])}>\n <DatePicker value={refDate} onChange={setRefDate} maxDate={today} />\n </FormField>\n\n {method === 'lmp' && (\n <FormField\n label={t('dueDateCalculator.cycleLength')}\n description={t('dueDateCalculator.cycleLengthHint')}\n >\n <NumberInput\n mode=\"integer\"\n min={20}\n max={45}\n value={cycleLength}\n onChange={setCycleLength}\n />\n </FormField>\n )}\n\n {method === 'ivf' && (\n <RadioGroup\n label={t('dueDateCalculator.embryoAge')}\n variant=\"horizontal\"\n value={String(embryoAge)}\n onValueChange={(next) => setEmbryoAge(Number(next) as EmbryoAge)}\n >\n <Radio label={t('dueDateCalculator.day3')} value=\"3\" />\n <Radio label={t('dueDateCalculator.day5')} value=\"5\" />\n </RadioGroup>\n )}\n </div>\n\n <FormField\n label={t('dueDateCalculator.asOfDate')}\n description={t('dueDateCalculator.asOfDateHint')}\n >\n <DatePicker value={asOfDate} onChange={(d) => d && setAsOfDate(d)} />\n </FormField>\n\n {method === 'lmp' ? (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\">\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n <FormField\n label={t('dueDateCalculator.crl')}\n description={t('dueDateCalculator.crlHint')}\n >\n <NumberInput\n mode=\"decimal\"\n min={0}\n step={0.1}\n value={crlMm}\n onChange={setCrlMm}\n />\n </FormField>\n <FormField label={t('dueDateCalculator.scanDate')}>\n <DatePicker\n value={scanDate}\n onChange={setScanDate}\n maxDate={today}\n />\n </FormField>\n </div>\n {redating ? (\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]\">\n <Badge variant={redating.redated ? 'warning' : 'success'}>\n {redating.redated\n ? t('dueDateCalculator.redated', {\n days: redating.discrepancyDays,\n })\n : t('dueDateCalculator.datesAgree')}\n </Badge>\n {!redating.crlInRange ? (\n <span className=\"type-meta ds:text-muted-foreground\">\n {t('dueDateCalculator.crlOutOfRange')}\n </span>\n ) : null}\n </div>\n ) : null}\n </div>\n ) : null}\n\n {/* Concise polite announcement when a due date resolves. */}\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {result\n ? `${t('dueDateCalculator.result.dueDateLabel')}: ${dateFormatter.format(\n result.dueDate,\n )}. ${t('dueDateCalculator.result.trimesterLabel')}: ${t(\n `dueDateCalculator.trimester.${result.trimester}`,\n )}.`\n : ''}\n </p>\n\n {result ? (\n <Card variant=\"elevated\">\n <Card.Body className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n <dl className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-3\">\n <div className=\"ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('dueDateCalculator.result.trimesterLabel')}\n </dt>\n <dd>\n <Badge\n variant={TRIMESTER_BADGE_VARIANT[result.trimester]}\n size=\"lg\"\n >\n {t(`dueDateCalculator.trimester.${result.trimester}`)}\n </Badge>\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('dueDateCalculator.result.gestationLabel')}\n </dt>\n <dd className=\"type-body ds:text-foreground\">\n {result.gestationalAge\n ? t('dueDateCalculator.result.gestation', {\n weeks: result.gestationalAge.weeks,\n days: result.gestationalAge.days,\n })\n : '—'}\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('dueDateCalculator.result.dueDateLabel')}\n </dt>\n <dd className=\"type-metric ds:text-foreground\">\n {dateFormatter.format(result.dueDate)}\n </dd>\n </div>\n </dl>\n </Card.Body>\n </Card>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('dueDateCalculator.empty')}\n </p>\n )}\n\n {schedule ? <AntenatalScheduleTimeline events={schedule} /> : null}\n\n {/* One result-action group for the whole result — sits after both the\n due-date card and the schedule, and its payload carries the schedule\n rows when shown (no per-card buttons). */}\n {result && (insertVariant === 'copy' || onInsert) ? (\n <InsertButton\n variant={insertVariant}\n onInsert={onInsert}\n onCopy={onCopy}\n onError={onError}\n card={{\n title: t('insert.title.dueDate'),\n icon: 'calendar-heart',\n highlight: dateFormatter.format(result.dueDate),\n // Chip tinted with the trimester's semantic token so the inserted\n // PNG carries the same clinical-stage colour as the on-screen\n // trimester badge — with the contrast-safe orange override for the\n // `--warning` third trimester.\n highlightToken: trimesterHighlightToken(result.trimester),\n brand: insertBrand,\n fields: [\n {\n // The estimated date of delivery → calendar glyph.\n icon: 'calendar',\n label: t('dueDateCalculator.result.dueDateLabel'),\n value: dateFormatter.format(result.dueDate),\n },\n {\n // Gestational age is an elapsed duration → clock glyph.\n icon: 'clock',\n label: t('dueDateCalculator.result.gestationLabel'),\n value: result.gestationalAge\n ? t('dueDateCalculator.result.gestation', {\n weeks: result.gestationalAge.weeks,\n days: result.gestationalAge.days,\n })\n : '—',\n },\n {\n // Trimester is a clinical-stage classification → tag.\n icon: 'tag',\n label: t('dueDateCalculator.result.trimesterLabel'),\n value: t(`dueDateCalculator.trimester.${result.trimester}`),\n },\n // When the schedule is shown, the single Insert button carries\n // the exam windows too (no second button).\n ...(schedule\n ? buildScheduleInsertFields(schedule, t, (d) =>\n dateFormatter.format(d),\n )\n : []),\n ],\n }}\n />\n ) : null}\n </div>\n );\n },\n);\n\nDueDateCalculator.displayName = 'DueDateCalculator';\n"],"names":["rootVariants","cva","DATE_LABEL_KEY","DueDateCalculator","forwardRef","defaultMethod","onResultChange","onInsert","insertVariant","onCopy","onError","insertBrand","showSchedule","scheduleOptions","id","width","className","ref","t","i18n","useTranslation","method","setMethod","useState","refDate","setRefDate","cycleLength","setCycleLength","DEFAULT_CYCLE_LENGTH","embryoAge","setEmbryoAge","crlMm","setCrlMm","scanDate","setScanDate","today","useMemo","asOfDate","setAsOfDate","redating","redateByCrl","result","effectiveDate","effectiveCycle","computeDueDate","dateFormatter","useEffect","schedule","computeAntenatalSchedule","jsxs","RadioGroup","next","jsx","Radio","FormField","DatePicker","NumberInput","Badge","Card","TRIMESTER_BADGE_VARIANT","AntenatalScheduleTimeline","InsertButton","trimesterHighlightToken","buildScheduleInsertFields"],"mappings":";;;;;;;;;;;;;AA6CA,MAAMA,KAAeC,EAAI,kDAAkD;AAAA,EACzE,UAAU;AAAA,IACR,OAAO,EAAE,MAAM,aAAa,MAAM,iBAAA;AAAA,EAAiB;AAAA,EAErD,iBAAiB,EAAE,OAAO,OAAA;AAC5B,CAAC,GAGKC,KAAgD;AAAA,EACpD,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,KAAK;AACP,GAkDaC,KAAoBC;AAAA,EAI/B,CACE;AAAA,IACE,eAAAC,IAAgB;AAAA,IAChB,gBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,eAAAC,IAAgB;AAAA,IAChB,QAAAC;AAAA,IACA,SAAAC;AAAA,IACA,aAAAC;AAAA,IACA,cAAAC,IAAe;AAAA,IACf,iBAAAC;AAAA,IACA,IAAAC;AAAA,IACA,OAAAC;AAAA,IACA,WAAAC;AAAA,EAAA,GAEFC,MACG;AACH,UAAM,EAAE,GAAAC,GAAG,MAAAC,EAAA,IAASC,EAAA,GAEd,CAACC,GAAQC,CAAS,IAAIC,EAAwBlB,CAAa,GAC3D,CAACmB,GAASC,CAAU,IAAIF,EAA2B,MAAS,GAC5D,CAACG,GAAaC,CAAc,IAAIJ;AAAA,MACpCK;AAAA,IAAA,GAEI,CAACC,GAAWC,CAAY,IAAIP,EAAoB,CAAC,GAEjD,CAACQ,GAAOC,CAAQ,IAAIT,EAAwB,IAAI,GAChD,CAACU,GAAUC,CAAW,IAAIX,EAA2B,MAAS,GAG9DY,IAAQC,EAAQ,0BAAU,KAAA,GAAQ,CAAA,CAAE,GAIpC,CAACC,GAAUC,CAAW,IAAIf,EAAe,MAAM,oBAAI,MAAM,GAGzDgB,IAAWH,EAAQ,MACnBf,MAAW,SAAS,CAACG,KAAWO,MAAU,QAAQ,CAACE,IAC9C,OAEFO,EAAY,EAAE,KAAKhB,GAAS,UAAAS,GAAU,OAAAF,GAAO,GACnD,CAACV,GAAQG,GAASO,GAAOE,CAAQ,CAAC,GAE/BQ,IAASL,EAA8B,MAAM;AACjD,UAAI,CAACZ,EAAS,QAAO;AAGrB,YAAMkB,IACJrB,MAAW,UAASkB,KAAA,QAAAA,EAAU,WAC1BA,EAAS,mBACTf,GACAmB,IACJtB,MAAW,UAASkB,KAAA,QAAAA,EAAU,WAC1BX,IACCF,KAAeE;AACtB,aAAOgB;AAAA,QACL;AAAA,UACE,QAAAvB;AAAA,UACA,MAAMqB;AAAA,UACN,aAAaC;AAAA,UACb,WAAAd;AAAA,QAAA;AAAA,QAEFQ;AAAA,MAAA;AAAA,IAEJ,GAAG,CAAChB,GAAQG,GAASE,GAAaG,GAAWU,GAAUF,CAAQ,CAAC,GAE1DQ,IAAgBT;AAAA,MACpB,MAAM,IAAI,KAAK,eAAejB,EAAK,UAAU,EAAE,WAAW,QAAQ;AAAA,MAClE,CAACA,EAAK,QAAQ;AAAA,IAAA;AAGhB,IAAA2B,EAAU,MAAM;AACd,MAAAxC,KAAA,QAAAA,EAAiBmC;AAAA,IACnB,GAAG,CAACA,GAAQnC,CAAc,CAAC;AAE3B,UAAMyC,IAAWX,EAAQ,MACnB,CAACxB,KAAgB,CAAC6B,IAAe,OAC9BO,GAAyBP,EAAO,kBAAkB;AAAA,MACvD,GAAG5B;AAAA,MACH,OAAOwB;AAAA,IAAA,CACR,GACA,CAACzB,GAAc6B,GAAQJ,GAAUxB,CAAe,CAAC;AAEpD,WACE,gBAAAoC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAhC;AAAA,QACA,kBAAe;AAAA,QACf,qBAAmBH;AAAA,QACnB,WAAWd,GAAa,EAAE,OAAAe,GAAO,WAAAC,GAAW;AAAA,QAE5C,UAAA;AAAA,UAAA,gBAAAiC;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,OAAOhC,EAAE,gCAAgC;AAAA,cACzC,SAAQ;AAAA,cACR,OAAOG;AAAA,cACP,eAAe,CAAC8B,MAAS7B,EAAU6B,CAAqB;AAAA,cAExD,UAAA;AAAA,gBAAA,gBAAAC,EAACC,KAAM,OAAOnC,EAAE,8BAA8B,GAAG,OAAM,OAAM;AAAA,gBAC7D,gBAAAkC;AAAA,kBAACC;AAAA,kBAAA;AAAA,oBACC,OAAOnC,EAAE,qCAAqC;AAAA,oBAC9C,OAAM;AAAA,kBAAA;AAAA,gBAAA;AAAA,kCAEPmC,GAAA,EAAM,OAAOnC,EAAE,8BAA8B,GAAG,OAAM,MAAA,CAAM;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAG/D,gBAAA+B,EAAC,OAAA,EAAI,WAAU,uEACb,UAAA;AAAA,YAAA,gBAAAG,EAACE,GAAA,EAAU,OAAOpC,EAAEhB,GAAemB,CAAM,CAAC,GACxC,UAAA,gBAAA+B,EAACG,GAAA,EAAW,OAAO/B,GAAS,UAAUC,GAAY,SAASU,GAAO,GACpE;AAAA,YAECd,MAAW,SACV,gBAAA+B;AAAA,cAACE;AAAA,cAAA;AAAA,gBACC,OAAOpC,EAAE,+BAA+B;AAAA,gBACxC,aAAaA,EAAE,mCAAmC;AAAA,gBAElD,UAAA,gBAAAkC;AAAA,kBAACI;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,KAAK;AAAA,oBACL,KAAK;AAAA,oBACL,OAAO9B;AAAA,oBACP,UAAUC;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACZ;AAAA,YAAA;AAAA,YAIHN,MAAW,SACV,gBAAA4B;AAAA,cAACC;AAAA,cAAA;AAAA,gBACC,OAAOhC,EAAE,6BAA6B;AAAA,gBACtC,SAAQ;AAAA,gBACR,OAAO,OAAOW,CAAS;AAAA,gBACvB,eAAe,CAACsB,MAASrB,EAAa,OAAOqB,CAAI,CAAc;AAAA,gBAE/D,UAAA;AAAA,kBAAA,gBAAAC,EAACC,KAAM,OAAOnC,EAAE,wBAAwB,GAAG,OAAM,KAAI;AAAA,oCACpDmC,GAAA,EAAM,OAAOnC,EAAE,wBAAwB,GAAG,OAAM,IAAA,CAAI;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACvD,GAEJ;AAAA,UAEA,gBAAAkC;AAAA,YAACE;AAAA,YAAA;AAAA,cACC,OAAOpC,EAAE,4BAA4B;AAAA,cACrC,aAAaA,EAAE,gCAAgC;AAAA,cAE/C,UAAA,gBAAAkC,EAACG,GAAA,EAAW,OAAOlB,GAAU,UAAU,CAAC,MAAM,KAAKC,EAAY,CAAC,EAAA,CAAG;AAAA,YAAA;AAAA,UAAA;AAAA,UAGpEjB,MAAW,QACV,gBAAA4B,EAAC,OAAA,EAAI,WAAU,kDACb,UAAA;AAAA,YAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,uEACb,UAAA;AAAA,cAAA,gBAAAG;AAAA,gBAACE;AAAA,gBAAA;AAAA,kBACC,OAAOpC,EAAE,uBAAuB;AAAA,kBAChC,aAAaA,EAAE,2BAA2B;AAAA,kBAE1C,UAAA,gBAAAkC;AAAA,oBAACI;AAAA,oBAAA;AAAA,sBACC,MAAK;AAAA,sBACL,KAAK;AAAA,sBACL,MAAM;AAAA,sBACN,OAAOzB;AAAA,sBACP,UAAUC;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACZ;AAAA,cAAA;AAAA,cAEF,gBAAAoB,EAACE,GAAA,EAAU,OAAOpC,EAAE,4BAA4B,GAC9C,UAAA,gBAAAkC;AAAA,gBAACG;AAAA,gBAAA;AAAA,kBACC,OAAOtB;AAAA,kBACP,UAAUC;AAAA,kBACV,SAASC;AAAA,gBAAA;AAAA,cAAA,EACX,CACF;AAAA,YAAA,GACF;AAAA,YACCI,IACC,gBAAAU,EAAC,OAAA,EAAI,WAAU,mEACb,UAAA;AAAA,cAAA,gBAAAG,EAACK,GAAA,EAAM,SAASlB,EAAS,UAAU,YAAY,WAC5C,UAAAA,EAAS,UACNrB,EAAE,6BAA6B;AAAA,gBAC7B,MAAMqB,EAAS;AAAA,cAAA,CAChB,IACDrB,EAAE,8BAA8B,GACtC;AAAA,cACEqB,EAAS,aAIP,OAHF,gBAAAa,EAAC,QAAA,EAAK,WAAU,sCACb,UAAAlC,EAAE,iCAAiC,EAAA,CACtC;AAAA,YACE,EAAA,CACN,IACE;AAAA,UAAA,EAAA,CACN,IACE;AAAA,UAGJ,gBAAAkC,EAAC,KAAA,EAAE,WAAU,cAAa,MAAK,UAAS,aAAU,UAC/C,UAAAX,IACG,GAAGvB,EAAE,uCAAuC,CAAC,KAAK2B,EAAc;AAAA,YAC9DJ,EAAO;AAAA,UAAA,CACR,KAAKvB,EAAE,yCAAyC,CAAC,KAAKA;AAAA,YACrD,+BAA+BuB,EAAO,SAAS;AAAA,UAAA,CAChD,MACD,IACN;AAAA,UAECA,IACC,gBAAAW,EAACM,GAAA,EAAK,SAAQ,YACZ,UAAA,gBAAAN,EAACM,EAAK,MAAL,EAAU,WAAU,kDACnB,UAAA,gBAAAT,EAAC,MAAA,EAAG,WAAU,uEACZ,UAAA;AAAA,YAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,iEACb,UAAA;AAAA,cAAA,gBAAAG,EAAC,MAAA,EAAG,WAAU,uCACX,UAAAlC,EAAE,yCAAyC,GAC9C;AAAA,gCACC,MAAA,EACC,UAAA,gBAAAkC;AAAA,gBAACK;AAAA,gBAAA;AAAA,kBACC,SAASE,GAAwBlB,EAAO,SAAS;AAAA,kBACjD,MAAK;AAAA,kBAEJ,UAAAvB,EAAE,+BAA+BuB,EAAO,SAAS,EAAE;AAAA,gBAAA;AAAA,cAAA,EACtD,CACF;AAAA,YAAA,GACF;AAAA,YACA,gBAAAQ,EAAC,OAAA,EAAI,WAAU,kDACb,UAAA;AAAA,cAAA,gBAAAG,EAAC,MAAA,EAAG,WAAU,uCACX,UAAAlC,EAAE,yCAAyC,GAC9C;AAAA,gCACC,MAAA,EAAG,WAAU,gCACX,UAAAuB,EAAO,iBACJvB,EAAE,sCAAsC;AAAA,gBACtC,OAAOuB,EAAO,eAAe;AAAA,gBAC7B,MAAMA,EAAO,eAAe;AAAA,cAAA,CAC7B,IACD,IAAA,CACN;AAAA,YAAA,GACF;AAAA,YACA,gBAAAQ,EAAC,OAAA,EAAI,WAAU,kDACb,UAAA;AAAA,cAAA,gBAAAG,EAAC,MAAA,EAAG,WAAU,uCACX,UAAAlC,EAAE,uCAAuC,GAC5C;AAAA,cACA,gBAAAkC,EAAC,QAAG,WAAU,kCACX,YAAc,OAAOX,EAAO,OAAO,EAAA,CACtC;AAAA,YAAA,EAAA,CACF;AAAA,UAAA,EAAA,CACF,EAAA,CACF,GACF,IAEA,gBAAAW,EAAC,OAAE,WAAU,sCACV,UAAAlC,EAAE,yBAAyB,EAAA,CAC9B;AAAA,UAGD6B,IAAW,gBAAAK,EAACQ,IAAA,EAA0B,QAAQb,GAAU,IAAK;AAAA,UAK7DN,MAAWjC,MAAkB,UAAUD,KACtC,gBAAA6C;AAAA,YAACS;AAAA,YAAA;AAAA,cACC,SAASrD;AAAA,cACT,UAAAD;AAAA,cACA,QAAAE;AAAA,cACA,SAAAC;AAAA,cACA,MAAM;AAAA,gBACJ,OAAOQ,EAAE,sBAAsB;AAAA,gBAC/B,MAAM;AAAA,gBACN,WAAW2B,EAAc,OAAOJ,EAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,gBAK9C,gBAAgBqB,GAAwBrB,EAAO,SAAS;AAAA,gBACxD,OAAO9B;AAAA,gBACP,QAAQ;AAAA,kBACN;AAAA;AAAA,oBAEE,MAAM;AAAA,oBACN,OAAOO,EAAE,uCAAuC;AAAA,oBAChD,OAAO2B,EAAc,OAAOJ,EAAO,OAAO;AAAA,kBAAA;AAAA,kBAE5C;AAAA;AAAA,oBAEE,MAAM;AAAA,oBACN,OAAOvB,EAAE,yCAAyC;AAAA,oBAClD,OAAOuB,EAAO,iBACVvB,EAAE,sCAAsC;AAAA,sBACtC,OAAOuB,EAAO,eAAe;AAAA,sBAC7B,MAAMA,EAAO,eAAe;AAAA,oBAAA,CAC7B,IACD;AAAA,kBAAA;AAAA,kBAEN;AAAA;AAAA,oBAEE,MAAM;AAAA,oBACN,OAAOvB,EAAE,yCAAyC;AAAA,oBAClD,OAAOA,EAAE,+BAA+BuB,EAAO,SAAS,EAAE;AAAA,kBAAA;AAAA;AAAA;AAAA,kBAI5D,GAAIM,IACAgB;AAAA,oBAA0BhB;AAAA,oBAAU7B;AAAA,oBAAG,CAAC,MACtC2B,EAAc,OAAO,CAAC;AAAA,kBAAA,IAExB,CAAA;AAAA,gBAAC;AAAA,cACP;AAAA,YACF;AAAA,UAAA,IAEA;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEA1C,GAAkB,cAAc;"}
@@ -0,0 +1,328 @@
1
+ import { useMemo as V, useState as E, useRef as F, useEffect as I } from "react";
2
+ import { jsx as u, jsxs as _ } from "react/jsx-runtime";
3
+ import { T as B } from "./tag-BQXwuJq1.js";
4
+ import { useTranslation as T } from "react-i18next";
5
+ import { S as L } from "./square-check-big-Jr-0202D.js";
6
+ import { S as M } from "./square-CZoGU14v.js";
7
+ import { u as $ } from "./use-isomorphic-layout-effect-BGfaCOP1.js";
8
+ import { c as j, a as D, b as P, d as A } from "./input-surface-xyERuLU_.js";
9
+ function se(n, t, e) {
10
+ return V(() => {
11
+ const i = {};
12
+ for (const r of t) {
13
+ let m = 0;
14
+ for (const d of n ?? []) {
15
+ const l = d[r], f = typeof l == "number" ? l : Number(l);
16
+ Number.isFinite(f) && (m += f);
17
+ }
18
+ i[r] = m;
19
+ }
20
+ return e != null && e.labelField && e.labelValue !== void 0 && (i[e.labelField] = e.labelValue), i;
21
+ }, [n, t, e == null ? void 0 : e.labelField, e == null ? void 0 : e.labelValue]);
22
+ }
23
+ function H() {
24
+ return /* @__PURE__ */ u(
25
+ "svg",
26
+ {
27
+ viewBox: "0 0 24 24",
28
+ fill: "none",
29
+ stroke: "currentColor",
30
+ strokeWidth: 1.75,
31
+ strokeLinecap: "round",
32
+ strokeLinejoin: "round",
33
+ "aria-hidden": "true",
34
+ className: "ds:size-3.5",
35
+ children: /* @__PURE__ */ u("path", { d: "M12 5.5c-1.074 -1.426 -2.45 -2.2 -4 -2c-2.5 .323 -3.7 2.5 -3.5 5c.1 1.5 .5 3 .5 4.5c0 1.5 .5 3.5 1 5c.3 .9 .5 2 1.5 2s1.3 -1.5 1.5 -2.5c.2 -1 .5 -2 1.5 -2s1.3 1 1.5 2c.2 1 .5 2.5 1.5 2.5s1.2 -1.1 1.5 -2c.5 -1.5 1 -3.5 1 -5c0 -1.5 .4 -3 .5 -4.5c.2 -2.5 -1 -4.677 -3.5 -5c-1.55 -.2 -2.926 .574 -4 2z" })
36
+ }
37
+ );
38
+ }
39
+ function le(n) {
40
+ const { value: t, maxInlineSize: e = "8rem" } = n;
41
+ return !Array.isArray(t) || t.length === 0 ? null : /* @__PURE__ */ u(
42
+ B,
43
+ {
44
+ label: t.join(", "),
45
+ size: "sm",
46
+ fill: "outline",
47
+ leading: /* @__PURE__ */ u(H, {}),
48
+ maxInlineSize: e
49
+ }
50
+ );
51
+ }
52
+ function ie(n) {
53
+ const {
54
+ value: t,
55
+ data: e,
56
+ onToggle: i,
57
+ onError: r,
58
+ trueIcon: m,
59
+ falseIcon: d,
60
+ trueClass: l = "ds:text-[color:var(--success)]",
61
+ falseClass: f = "ds:text-[color:var(--muted-foreground)]",
62
+ label: a
63
+ } = n, { t: o } = T(), [s, v] = E(!1);
64
+ if (!e) return null;
65
+ const h = !!t, C = h ? m ?? /* @__PURE__ */ u(L, { "aria-hidden": !0, className: "ds:size-4" }) : d ?? /* @__PURE__ */ u(M, { "aria-hidden": !0, className: "ds:size-4" }), y = h ? l : f, N = a ?? o(h ? "inputs.switch.on" : "inputs.switch.off");
66
+ async function c(g) {
67
+ if (g.stopPropagation(), s || !e) return;
68
+ const p = i(e, !h);
69
+ if (p && typeof p.then == "function") {
70
+ v(!0);
71
+ try {
72
+ await p;
73
+ } catch (x) {
74
+ r == null || r(e, x);
75
+ } finally {
76
+ v(!1);
77
+ }
78
+ }
79
+ }
80
+ return /* @__PURE__ */ u(
81
+ "button",
82
+ {
83
+ type: "button",
84
+ role: "switch",
85
+ "aria-checked": h,
86
+ "aria-busy": s,
87
+ "aria-label": N,
88
+ disabled: s,
89
+ onClick: c,
90
+ className: [
91
+ "ds:inline-flex ds:items-center ds:justify-center",
92
+ "ds:min-h-[var(--min-target-size)] ds:min-w-[var(--min-target-size)]",
93
+ "ds:appearance-none ds:bg-transparent ds:p-[var(--spacing-xs)]",
94
+ "ds:rounded-[var(--radius-sm)]",
95
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)]",
96
+ "ds:focus-visible:outline-solid",
97
+ "ds:focus-visible:outline-[color:var(--ring)]",
98
+ "ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
99
+ "ds:disabled:opacity-50",
100
+ y
101
+ ].join(" "),
102
+ children: C
103
+ }
104
+ );
105
+ }
106
+ const G = {
107
+ sm: "ds:size-[var(--icon-size-sm)]",
108
+ md: "ds:size-[var(--icon-size-md)]",
109
+ lg: "ds:size-[var(--icon-size-lg)]"
110
+ };
111
+ function k(n, t) {
112
+ if (!n || typeof n != "object") return;
113
+ const e = n[t];
114
+ return typeof e == "string" ? e : void 0;
115
+ }
116
+ const X = /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i, q = /^rgba?\(\s*[\d.\s,%/]+\)$/i, K = /^hsla?\(\s*[\d.\s,%/]+\)$/i, O = /^var\(--[a-z0-9-]+(?:,\s*[^)]+)?\)$/i;
117
+ function W(n) {
118
+ if (!n) return;
119
+ const t = n.trim();
120
+ if (X.test(t) || q.test(t) || K.test(t) || O.test(t))
121
+ return t;
122
+ }
123
+ function oe(n) {
124
+ const { data: t, colorField: e, size: i = "md", labelField: r } = n, m = F(null), d = t ? k(t, e) : void 0, l = W(d), f = t && r ? k(t, r) : void 0;
125
+ return $(() => {
126
+ const a = m.current;
127
+ a && (l ? a.style.setProperty("--data-table-dot-color", l) : a.style.removeProperty("--data-table-dot-color"));
128
+ }, [l]), l ? /* @__PURE__ */ _("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)]", children: [
129
+ /* @__PURE__ */ u(
130
+ "span",
131
+ {
132
+ ref: m,
133
+ "aria-hidden": "true",
134
+ className: [
135
+ "ds:inline-block ds:shrink-0 ds:rounded-[var(--radius-full)]",
136
+ "ds:bg-[var(--data-table-dot-color)]",
137
+ "ds:border ds:border-[color:var(--border)]",
138
+ G[i]
139
+ ].join(" ")
140
+ }
141
+ ),
142
+ f ? /* @__PURE__ */ u("span", { children: f }) : null
143
+ ] }) : null;
144
+ }
145
+ function Z(n, t) {
146
+ if (!n || typeof n != "object") return null;
147
+ const e = n[t], i = typeof e == "number" ? e : Number(e);
148
+ return Number.isFinite(i) ? i : null;
149
+ }
150
+ function ce(n) {
151
+ const { data: t, lines: e, currency: i = "EUR", highlightNegative: r } = n, { i18n: m } = T();
152
+ if (!t) return null;
153
+ const d = m.language || "en", l = (a) => {
154
+ const o = Z(t, a.valueField);
155
+ if (o === null) return null;
156
+ let s;
157
+ switch (a.format ?? "number") {
158
+ case "currency":
159
+ s = new Intl.NumberFormat(d, {
160
+ style: "currency",
161
+ currency: i
162
+ }).format(o);
163
+ break;
164
+ case "percent":
165
+ s = new Intl.NumberFormat(d, {
166
+ style: "percent",
167
+ maximumFractionDigits: 1
168
+ }).format(o / 100);
169
+ break;
170
+ default:
171
+ s = new Intl.NumberFormat(d).format(o);
172
+ }
173
+ return {
174
+ label: a.label,
175
+ formatted: s,
176
+ negative: !!r && o < 0
177
+ };
178
+ }, f = e.map(l).filter(
179
+ (a) => a !== null
180
+ );
181
+ return f.length === 0 ? null : /* @__PURE__ */ u(
182
+ "div",
183
+ {
184
+ className: [
185
+ "ds:flex",
186
+ "ds:flex-wrap",
187
+ "ds:items-center",
188
+ "ds:gap-x-[var(--spacing-sm)]",
189
+ "ds:gap-y-0",
190
+ "type-meta",
191
+ "ds:leading-tight"
192
+ ].join(" "),
193
+ children: f.map((a, o) => /* @__PURE__ */ _(
194
+ "span",
195
+ {
196
+ className: "ds:inline-flex ds:items-baseline ds:gap-x-[var(--spacing-xs)]",
197
+ children: [
198
+ o > 0 ? /* @__PURE__ */ u(
199
+ "span",
200
+ {
201
+ "aria-hidden": "true",
202
+ className: "ds:me-[var(--spacing-xs)] ds:text-[color:var(--muted-foreground)]",
203
+ children: "·"
204
+ }
205
+ ) : null,
206
+ /* @__PURE__ */ u("span", { className: "ds:text-[color:var(--muted-foreground)]", children: a.label }),
207
+ /* @__PURE__ */ u(
208
+ "span",
209
+ {
210
+ className: [
211
+ "ds:tabular-nums",
212
+ "ds:font-medium",
213
+ a.negative ? "ds:text-[color:var(--destructive)]" : ""
214
+ ].filter(Boolean).join(" "),
215
+ children: a.formatted
216
+ }
217
+ )
218
+ ]
219
+ },
220
+ `${a.label}-${o}`
221
+ ))
222
+ }
223
+ );
224
+ }
225
+ function ue(n) {
226
+ var a, o;
227
+ const { initialValue: t, onValueChange: e, stopEditing: i, column: r } = n, [m, d] = E(t ?? ""), l = F(null);
228
+ I(() => {
229
+ const s = l.current;
230
+ s && (s.focus(), s.select());
231
+ }, []);
232
+ const f = ((o = (a = r == null ? void 0 : r.getColDef) == null ? void 0 : a.call(r)) == null ? void 0 : o.headerName) ?? void 0;
233
+ return /* @__PURE__ */ u(
234
+ "input",
235
+ {
236
+ ref: l,
237
+ type: "text",
238
+ value: m,
239
+ "aria-label": f,
240
+ onChange: (s) => {
241
+ const v = s.target.value;
242
+ d(v), e(v);
243
+ },
244
+ onKeyDown: (s) => {
245
+ s.key === "Enter" && (s.preventDefault(), i());
246
+ },
247
+ className: [
248
+ "ds:block ds:w-full ds:appearance-none",
249
+ // Input surface chrome: rounded border + bg + focus halo.
250
+ j,
251
+ // Use the `md` height (`--min-target-size`) so the input
252
+ // auto-lifts to 48px under `.theme-accessible` to satisfy
253
+ // WCAG 2.5.5 target size.
254
+ D.md,
255
+ P.sm,
256
+ A.sm
257
+ ].join(" ")
258
+ }
259
+ );
260
+ }
261
+ function de(n) {
262
+ var y, N;
263
+ const {
264
+ initialValue: t,
265
+ onValueChange: e,
266
+ stopEditing: i,
267
+ column: r,
268
+ decimals: m = 2,
269
+ min: d,
270
+ max: l
271
+ } = n, { i18n: f } = T(), a = F(null), o = ((N = (y = r == null ? void 0 : r.getColDef) == null ? void 0 : y.call(r)) == null ? void 0 : N.headerName) ?? void 0, [s, v] = E(() => t == null || Number.isNaN(t) ? "" : String(t));
272
+ I(() => {
273
+ const c = a.current;
274
+ c && (c.focus(), c.select());
275
+ }, []);
276
+ function h(c) {
277
+ var z, S;
278
+ if (c.trim().length === 0) return null;
279
+ const g = f.language || "en", b = new Intl.NumberFormat(g).formatToParts(12345.6), p = ((z = b.find((R) => R.type === "group")) == null ? void 0 : z.value) ?? "", x = ((S = b.find((R) => R.type === "decimal")) == null ? void 0 : S.value) ?? ".", U = c.replace(new RegExp(`\\${p}`, "g"), "").replace(x, ".").replace(/[^\d.-]/g, ""), w = Number(U);
280
+ return Number.isFinite(w) ? w : null;
281
+ }
282
+ function C(c) {
283
+ const g = h(c);
284
+ if (g == null) {
285
+ e(null);
286
+ return;
287
+ }
288
+ let b = g;
289
+ typeof d == "number" && (b = Math.max(d, b)), typeof l == "number" && (b = Math.min(l, b));
290
+ const p = 10 ** m;
291
+ e(Math.round(b * p) / p);
292
+ }
293
+ return /* @__PURE__ */ u(
294
+ "input",
295
+ {
296
+ ref: a,
297
+ type: "text",
298
+ inputMode: "decimal",
299
+ value: s,
300
+ "aria-label": o,
301
+ onChange: (c) => {
302
+ const g = c.target.value;
303
+ v(g), C(g);
304
+ },
305
+ onKeyDown: (c) => {
306
+ c.key === "Enter" && (c.preventDefault(), i());
307
+ },
308
+ className: [
309
+ "ds:block ds:w-full ds:appearance-none ds:text-end ds:tabular-nums",
310
+ j,
311
+ // Use `md` height — see editable-text-cell-renderer for rationale.
312
+ D.md,
313
+ P.sm,
314
+ A.sm
315
+ ].join(" ")
316
+ }
317
+ );
318
+ }
319
+ export {
320
+ ce as B,
321
+ oe as C,
322
+ de as E,
323
+ ie as T,
324
+ ue as a,
325
+ le as b,
326
+ se as u
327
+ };
328
+ //# sourceMappingURL=editable-currency-cell-renderer-C9twtALM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editable-currency-cell-renderer-C9twtALM.js","sources":["../../src/components/data-table/hooks/use-total-row.ts","../../src/components/data-table/cell-renderers/tooth-cell-renderer.tsx","../../src/components/data-table/cell-renderers/toggle-cell-renderer.tsx","../../src/components/data-table/cell-renderers/color-dot-cell-renderer.tsx","../../src/components/data-table/cell-renderers/balance-cell-renderer.tsx","../../src/components/data-table/cell-renderers/editable-text-cell-renderer.tsx","../../src/components/data-table/cell-renderers/editable-currency-cell-renderer.tsx"],"sourcesContent":["import { useMemo } from 'react';\n\n/**\n * Compute a pinned total row from a dataset and a list of numeric fields.\n *\n * The returned object is structurally a `TData` with non-summed fields left\n * `undefined` — plug it into `pinnedBottomRowData={[totalRow]}`. Cell renderers\n * in the non-summed columns receive `undefined`, so they should render nothing\n * (all of the DS cell renderers short-circuit on `null`/`undefined`).\n *\n * Pass an optional `labelField` + `labelValue` to show a static caption such\n * as \"Total\" in the first column of the pinned row.\n */\nexport function useTotalRow<TData>(\n rowData: TData[] | undefined,\n sumFields: Array<keyof TData & string>,\n options?: {\n labelField?: keyof TData & string;\n labelValue?: string;\n },\n): TData {\n return useMemo(() => {\n const row: Record<string, unknown> = {};\n\n for (const field of sumFields) {\n let total = 0;\n for (const r of rowData ?? []) {\n const raw = (r as Record<string, unknown>)[field];\n const n = typeof raw === 'number' ? raw : Number(raw);\n if (Number.isFinite(n)) total += n;\n }\n row[field] = total;\n }\n\n if (options?.labelField && options.labelValue !== undefined) {\n row[options.labelField] = options.labelValue;\n }\n\n return row as TData;\n }, [rowData, sumFields, options?.labelField, options?.labelValue]);\n}\n","import type { CustomCellRendererProps } from 'ag-grid-react';\nimport { Tag } from '../../tag/tag';\n\n// Tooth glyph — lucide ships no dental icon, so this is a small inline tooth\n// (a crown narrowing to two roots) tinted with `currentColor`, so it inherits\n// the Tag's text colour. Decorative; the FDI numbers are the accessible label.\nfunction ToothIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.75}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n className=\"ds:size-3.5\"\n >\n <path d=\"M12 5.5c-1.074 -1.426 -2.45 -2.2 -4 -2c-2.5 .323 -3.7 2.5 -3.5 5c.1 1.5 .5 3 .5 4.5c0 1.5 .5 3.5 1 5c.3 .9 .5 2 1.5 2s1.3 -1.5 1.5 -2.5c.2 -1 .5 -2 1.5 -2s1.3 1 1.5 2c.2 1 .5 2.5 1.5 2.5s1.2 -1.1 1.5 -2c.5 -1.5 1 -3.5 1 -5c0 -1.5 .4 -3 .5 -4.5c.2 -2.5 -1 -4.677 -3.5 -5c-1.55 -.2 -2.926 .574 -4 2z\" />\n </svg>\n );\n}\n\nexport interface ToothCellRendererParams {\n /** Max inline size of the chip before its label truncates (with a tooltip). */\n maxInlineSize?: string;\n}\n\n/**\n * Renders an array of tooth ids (FDI notation) as a single outlined Tag — the\n * teeth comma-separated and prefixed with a tooth glyph, so dentition reads at\n * a glance instead of as bare numbers.\n */\nexport function ToothCellRenderer(\n props: CustomCellRendererProps<unknown, string[]> & ToothCellRendererParams,\n) {\n const { value, maxInlineSize = '8rem' } = props;\n if (!Array.isArray(value) || value.length === 0) return null;\n\n return (\n <Tag\n label={value.join(', ')}\n size=\"sm\"\n fill=\"outline\"\n leading={<ToothIcon />}\n maxInlineSize={maxInlineSize}\n />\n );\n}\n","import { useState, type ReactNode } from 'react';\nimport type { CustomCellRendererProps } from 'ag-grid-react';\nimport { CheckSquare, Square } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\n\nexport interface ToggleCellRendererParams<TData = unknown> {\n /**\n * Fires with the row and the new target value. May return a `Promise` —\n * if it rejects, the consumer is expected to revert the underlying value\n * and flash the row with `data-table-row-error` (return that row class\n * from `getRowClass`). Use `onError` below to be notified inside this\n * renderer.\n */\n onToggle: (data: TData, newValue: boolean) => void | Promise<void>;\n /**\n * Optional reject hook. Fires when the `onToggle` promise rejects, with\n * the row and the error. The button auto-disables during the in-flight\n * promise and re-enables on either settle.\n */\n onError?: (data: TData, error: unknown) => void;\n /** Icon shown when the current value is truthy. */\n trueIcon?: ReactNode;\n /** Icon shown when the current value is falsy. */\n falseIcon?: ReactNode;\n /** Extra classes applied to the \"on\" icon — defaults to success token. */\n trueClass?: string;\n /** Extra classes applied to the \"off\" icon. */\n falseClass?: string;\n /** Accessible label. Falls back to the default on/off announcements. */\n label?: string;\n}\n\nexport function ToggleCellRenderer<TData = unknown>(\n props: CustomCellRendererProps<TData, boolean> &\n ToggleCellRendererParams<TData>,\n) {\n const {\n value,\n data,\n onToggle,\n onError,\n trueIcon,\n falseIcon,\n trueClass = 'ds:text-[color:var(--success)]',\n falseClass = 'ds:text-[color:var(--muted-foreground)]',\n label,\n } = props;\n const { t } = useTranslation();\n const [pending, setPending] = useState(false);\n if (!data) return null;\n\n const isOn = Boolean(value);\n const icon = isOn\n ? (trueIcon ?? <CheckSquare aria-hidden className=\"ds:size-4\" />)\n : (falseIcon ?? <Square aria-hidden className=\"ds:size-4\" />);\n const stateClass = isOn ? trueClass : falseClass;\n const resolvedLabel =\n label ?? (isOn ? t('inputs.switch.on') : t('inputs.switch.off'));\n\n async function handleClick(event: React.MouseEvent) {\n event.stopPropagation();\n if (pending || !data) return;\n const next = !isOn;\n const result = onToggle(data, next);\n if (result && typeof (result as Promise<void>).then === 'function') {\n setPending(true);\n try {\n await result;\n } catch (err) {\n onError?.(data, err);\n } finally {\n setPending(false);\n }\n }\n }\n\n return (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={isOn}\n aria-busy={pending}\n aria-label={resolvedLabel}\n disabled={pending}\n onClick={handleClick}\n className={[\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:min-h-[var(--min-target-size)] ds:min-w-[var(--min-target-size)]',\n 'ds:appearance-none ds:bg-transparent ds:p-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)]',\n 'ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:disabled:opacity-50',\n stateClass,\n ].join(' ')}\n >\n {icon}\n </button>\n );\n}\n","import { useRef } from 'react';\nimport type { CustomCellRendererProps } from 'ag-grid-react';\nimport { useIsomorphicLayoutEffect } from '../../../hooks/use-isomorphic-layout-effect';\n\nexport interface ColorDotCellRendererParams {\n /** Field name on the row whose value holds the hex color. */\n colorField: string;\n /** Visual size of the dot. */\n size?: 'sm' | 'md' | 'lg';\n /** Optional label shown next to the dot. */\n labelField?: string;\n}\n\nconst SIZE_CLASS: Record<\n NonNullable<ColorDotCellRendererParams['size']>,\n string\n> = {\n sm: 'ds:size-[var(--icon-size-sm)]',\n md: 'ds:size-[var(--icon-size-md)]',\n lg: 'ds:size-[var(--icon-size-lg)]',\n};\n\nfunction readField(row: unknown, field: string): string | undefined {\n if (!row || typeof row !== 'object') return undefined;\n const value = (row as Record<string, unknown>)[field];\n return typeof value === 'string' ? value : undefined;\n}\n\n// Only accept trusted CSS color forms. Anything outside this allow-list\n// (including smuggled `url()` or extra declarations) is dropped so the\n// CSS custom-property writer can't be used to inject styles.\nconst HEX_RE = /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;\nconst RGB_RE = /^rgba?\\(\\s*[\\d.\\s,%/]+\\)$/i;\nconst HSL_RE = /^hsla?\\(\\s*[\\d.\\s,%/]+\\)$/i;\nconst CSS_VAR_RE = /^var\\(--[a-z0-9-]+(?:,\\s*[^)]+)?\\)$/i;\n\nfunction sanitizeColor(raw: string | undefined): string | undefined {\n if (!raw) return undefined;\n const v = raw.trim();\n if (\n HEX_RE.test(v) ||\n RGB_RE.test(v) ||\n HSL_RE.test(v) ||\n CSS_VAR_RE.test(v)\n ) {\n return v;\n }\n return undefined;\n}\n\nexport function ColorDotCellRenderer<TData = unknown>(\n props: CustomCellRendererProps<TData> & ColorDotCellRendererParams,\n) {\n const { data, colorField, size = 'md', labelField } = props;\n const dotRef = useRef<HTMLSpanElement | null>(null);\n const rawColor = data ? readField(data, colorField) : undefined;\n const color = sanitizeColor(rawColor);\n const label = data && labelField ? readField(data, labelField) : undefined;\n\n // Apply the dynamic color via a CSS custom property on the element.\n // Keeps hex/rgb literals out of JSX (constraint #2 and #4). The data\n // itself drives the color — constraints only forbid hardcoded colors\n // in component source, not in consumer row data.\n useIsomorphicLayoutEffect(() => {\n const el = dotRef.current;\n if (!el) return;\n if (color) {\n el.style.setProperty('--data-table-dot-color', color);\n } else {\n el.style.removeProperty('--data-table-dot-color');\n }\n }, [color]);\n\n if (!color) return null;\n\n return (\n <span className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)]\">\n <span\n ref={dotRef}\n aria-hidden=\"true\"\n className={[\n 'ds:inline-block ds:shrink-0 ds:rounded-[var(--radius-full)]',\n 'ds:bg-[var(--data-table-dot-color)]',\n 'ds:border ds:border-[color:var(--border)]',\n SIZE_CLASS[size],\n ].join(' ')}\n />\n {label ? <span>{label}</span> : null}\n </span>\n );\n}\n","import type { ColDef } from 'ag-grid-community';\nimport type { CustomCellRendererProps } from 'ag-grid-react';\nimport { useTranslation } from 'react-i18next';\n\nexport interface BalanceLine {\n /** User-visible label for this line. */\n label: string;\n /** Field name on the row whose numeric value is rendered. */\n valueField: string;\n /** `'currency'` renders via Intl, `'percent'` appends `%`, `'number'` raw. Default `'number'`. */\n format?: 'currency' | 'percent' | 'number';\n}\n\nexport interface BalanceCellRendererParams {\n lines: BalanceLine[];\n /** ISO 4217 code, used by `currency`-formatted lines. Default `'EUR'`. */\n currency?: string;\n /** Apply destructive color to negative values. */\n highlightNegative?: boolean;\n}\n\nfunction readNumber(row: unknown, field: string): number | null {\n if (!row || typeof row !== 'object') return null;\n const raw = (row as Record<string, unknown>)[field];\n const n = typeof raw === 'number' ? raw : Number(raw);\n return Number.isFinite(n) ? n : null;\n}\n\n/**\n * Renders a compact set of label / value pairs inside a single AG Grid cell.\n *\n * Layout is **horizontal** with middle-dot separators so the cell fits\n * inside the default AG Grid row height without spilling into the row\n * below. Use the SALDI / Listini patterns (Totale · Incassato · Da Incassare)\n * as the canonical example.\n *\n * If a consumer's content wraps (long localized labels, narrow columns)\n * they can opt into row auto-growth by spreading\n * {@link balanceCellRendererColDefDefaults} onto the column definition.\n */\nexport function BalanceCellRenderer<TData = unknown>(\n props: CustomCellRendererProps<TData> & BalanceCellRendererParams,\n) {\n const { data, lines, currency = 'EUR', highlightNegative } = props;\n const { i18n } = useTranslation();\n if (!data) return null;\n\n const locale = i18n.language || 'en';\n\n const formatLine = (\n line: BalanceLine,\n ): { label: string; formatted: string; negative: boolean } | null => {\n const n = readNumber(data, line.valueField);\n if (n === null) return null;\n\n let formatted: string;\n switch (line.format ?? 'number') {\n case 'currency':\n formatted = new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n }).format(n);\n break;\n case 'percent':\n formatted = new Intl.NumberFormat(locale, {\n style: 'percent',\n maximumFractionDigits: 1,\n }).format(n / 100);\n break;\n default:\n formatted = new Intl.NumberFormat(locale).format(n);\n }\n\n return {\n label: line.label,\n formatted,\n negative: Boolean(highlightNegative) && n < 0,\n };\n };\n\n const rendered = lines\n .map(formatLine)\n .filter(\n (x): x is { label: string; formatted: string; negative: boolean } =>\n x !== null,\n );\n if (rendered.length === 0) return null;\n\n return (\n <div\n className={[\n 'ds:flex',\n 'ds:flex-wrap',\n 'ds:items-center',\n 'ds:gap-x-[var(--spacing-sm)]',\n 'ds:gap-y-0',\n 'type-meta',\n 'ds:leading-tight',\n ].join(' ')}\n >\n {rendered.map((item, idx) => (\n <span\n key={`${item.label}-${idx}`}\n className=\"ds:inline-flex ds:items-baseline ds:gap-x-[var(--spacing-xs)]\"\n >\n {idx > 0 ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:me-[var(--spacing-xs)] ds:text-[color:var(--muted-foreground)]\"\n >\n ·\n </span>\n ) : null}\n <span className=\"ds:text-[color:var(--muted-foreground)]\">\n {item.label}\n </span>\n <span\n className={[\n 'ds:tabular-nums',\n 'ds:font-medium',\n item.negative ? 'ds:text-[color:var(--destructive)]' : '',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {item.formatted}\n </span>\n </span>\n ))}\n </div>\n );\n}\n\n/**\n * Column-definition defaults consumers can spread onto a `ColDef` when they\n * want the renderer's wrapped / multi-line behaviour to grow the row.\n *\n * The default compact horizontal layout is engineered to fit the standard\n * AG Grid row height, so this opt-in is only needed when a long label set\n * wraps across two or more lines and the consumer would rather grow the\n * row than wrap silently.\n *\n * AG Grid does NOT auto-grow row height to fit a tall cell unless\n * `autoHeight` and `wrapText` are set on the colDef itself — a cell\n * renderer can't impose that from inside.\n *\n * @example\n * ```ts\n * {\n * headerName: 'Saldi',\n * cellRenderer: BalanceCellRenderer,\n * cellRendererParams: { lines, currency: 'EUR' },\n * ...balanceCellRendererColDefDefaults,\n * }\n * ```\n */\nexport const balanceCellRendererColDefDefaults: Readonly<\n Pick<ColDef, 'autoHeight' | 'wrapText'>\n> = {\n autoHeight: true,\n wrapText: true,\n};\n","import { useEffect, useRef, useState } from 'react';\nimport type { CustomCellEditorProps } from 'ag-grid-react';\nimport {\n INPUT_SURFACE_CHROME,\n INPUT_SURFACE_HEIGHT,\n INPUT_SURFACE_PADDING_X,\n INPUT_SURFACE_TEXT,\n} from '../../_shared/input-surface';\n\n/**\n * Inline text editor that visually matches `<TextInput size=\"sm\">`. Use as\n * `cellEditor` on a colDef with `editable: true`. The cell renderer (default\n * or custom) takes over again once editing stops.\n *\n * AG Grid commits on Enter or Tab or blur; cancels on Escape. The consumer\n * receives the committed value via `onCellValueChanged`.\n */\nexport function EditableTextCellRenderer<TData = unknown>(\n props: CustomCellEditorProps<TData, string>,\n) {\n const { initialValue, onValueChange, stopEditing, column } = props;\n const [value, setValue] = useState<string>(initialValue ?? '');\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n // Focus + select on mount so typing replaces the current value.\n useEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n el.focus();\n el.select();\n }, []);\n\n // The current value is pushed to AG Grid via `onValueChange` on every\n // keystroke — AG Grid commits the most recent value when editing stops.\n // No `useGridCellEditor` hook needed for that contract.\n\n // Thread the column header into the input's accessible name so screen\n // readers announce \"Edit text, {column}\" instead of an unlabelled input.\n // AG Grid doesn't auto-wire the column header to cell editors.\n const headerName =\n (column?.getColDef?.()?.headerName as string | undefined) ?? undefined;\n\n return (\n <input\n ref={inputRef}\n type=\"text\"\n value={value}\n aria-label={headerName}\n onChange={(e) => {\n const next = e.target.value;\n setValue(next);\n onValueChange(next);\n }}\n onKeyDown={(e) => {\n // Escape cancels, Enter/Tab commit — AG Grid handles both, but we\n // explicitly stop editing on Enter so the consumer sees the commit\n // immediately rather than waiting for the next focus blur.\n if (e.key === 'Enter') {\n e.preventDefault();\n stopEditing();\n }\n }}\n className={[\n 'ds:block ds:w-full ds:appearance-none',\n // Input surface chrome: rounded border + bg + focus halo.\n INPUT_SURFACE_CHROME,\n // Use the `md` height (`--min-target-size`) so the input\n // auto-lifts to 48px under `.theme-accessible` to satisfy\n // WCAG 2.5.5 target size.\n INPUT_SURFACE_HEIGHT.md,\n INPUT_SURFACE_TEXT.sm,\n INPUT_SURFACE_PADDING_X.sm,\n ].join(' ')}\n />\n );\n}\n","import { useEffect, useRef, useState } from 'react';\nimport type { CustomCellEditorProps } from 'ag-grid-react';\nimport { useTranslation } from 'react-i18next';\nimport {\n INPUT_SURFACE_CHROME,\n INPUT_SURFACE_HEIGHT,\n INPUT_SURFACE_PADDING_X,\n INPUT_SURFACE_TEXT,\n} from '../../_shared/input-surface';\n\nexport interface EditableCurrencyCellEditorParams {\n /** ISO 4217 currency code (e.g. `EUR`, `USD`). Defaults to `EUR`. */\n currency?: string;\n /** Decimal places allowed in the editor. Defaults to 2 (cents precision). */\n decimals?: number;\n /** Minimum allowed value — values below this are clamped on commit. */\n min?: number;\n /** Maximum allowed value — values above this are clamped on commit. */\n max?: number;\n}\n\n/**\n * Inline numeric editor that visually matches `<TextInput size=\"sm\">`. Use as\n * `cellEditor` on a colDef with `editable: true`. The display formatting is\n * still the renderer's job — once editing stops, the cell hands back to\n * `CurrencyCellRenderer` (or whichever renderer the colDef declares).\n *\n * Stores a Number, not a string, so consumers receive `row.amount = 12.5`\n * not `\"12.5\"`. Strips locale separators on each change so commas/dots in\n * any language convert to a clean numeric value.\n */\nexport function EditableCurrencyCellRenderer<TData = unknown>(\n props: CustomCellEditorProps<TData, number> &\n EditableCurrencyCellEditorParams,\n) {\n const {\n initialValue,\n onValueChange,\n stopEditing,\n column,\n decimals = 2,\n min,\n max,\n } = props;\n const { i18n } = useTranslation();\n const inputRef = useRef<HTMLInputElement | null>(null);\n // Thread the column header into the input's accessible name — see\n // editable-text-cell-renderer.tsx for the rationale.\n const headerName =\n (column?.getColDef?.()?.headerName as string | undefined) ?? undefined;\n\n // Local string state so the user can type intermediate values like \"12.\"\n // before the trailing zero arrives. We commit a Number to AG Grid on each\n // change for consumers that watch row state live; the final commit fires\n // when editing stops.\n const [draft, setDraft] = useState<string>(() => {\n if (initialValue == null || Number.isNaN(initialValue)) return '';\n return String(initialValue);\n });\n\n useEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n el.focus();\n el.select();\n }, []);\n\n function parseDraft(input: string): number | null {\n if (input.trim().length === 0) return null;\n // Accept either the user's locale decimal separator or a `.`. Strip\n // grouping characters (locale thousands separators, plus spaces).\n const lang = i18n.language || 'en';\n const partsFmt = new Intl.NumberFormat(lang).formatToParts(12345.6);\n const groupChar = partsFmt.find((p) => p.type === 'group')?.value ?? '';\n const decimalChar =\n partsFmt.find((p) => p.type === 'decimal')?.value ?? '.';\n const cleaned = input\n .replace(new RegExp(`\\\\${groupChar}`, 'g'), '')\n .replace(decimalChar, '.')\n .replace(/[^\\d.-]/g, '');\n const n = Number(cleaned);\n return Number.isFinite(n) ? n : null;\n }\n\n function commit(input: string) {\n const parsed = parseDraft(input);\n if (parsed == null) {\n onValueChange(null);\n return;\n }\n // Clamp first, then round to the declared precision so we never\n // persist floating-point dust from string parsing.\n let clamped = parsed;\n if (typeof min === 'number') clamped = Math.max(min, clamped);\n if (typeof max === 'number') clamped = Math.min(max, clamped);\n const factor = 10 ** decimals;\n onValueChange(Math.round(clamped * factor) / factor);\n }\n\n return (\n <input\n ref={inputRef}\n type=\"text\"\n // Inputmode hints mobile keyboards to show the decimal pad instead\n // of the full keyboard. type=\"number\" would also work but spinners\n // and locale parsing are inconsistent across browsers.\n inputMode=\"decimal\"\n value={draft}\n aria-label={headerName}\n onChange={(e) => {\n const next = e.target.value;\n setDraft(next);\n commit(next);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n stopEditing();\n }\n // Escape — AG Grid cancels by default; the editor doesn't need\n // explicit handling beyond what AG Grid wires automatically.\n }}\n className={[\n 'ds:block ds:w-full ds:appearance-none ds:text-end ds:tabular-nums',\n INPUT_SURFACE_CHROME,\n // Use `md` height — see editable-text-cell-renderer for rationale.\n INPUT_SURFACE_HEIGHT.md,\n INPUT_SURFACE_TEXT.sm,\n INPUT_SURFACE_PADDING_X.sm,\n ].join(' ')}\n />\n );\n}\n"],"names":["useTotalRow","rowData","sumFields","options","useMemo","row","field","total","r","raw","n","ToothIcon","jsx","ToothCellRenderer","props","value","maxInlineSize","Tag","ToggleCellRenderer","data","onToggle","onError","trueIcon","falseIcon","trueClass","falseClass","label","t","useTranslation","pending","setPending","useState","isOn","icon","CheckSquare","Square","stateClass","resolvedLabel","handleClick","event","result","err","SIZE_CLASS","readField","HEX_RE","RGB_RE","HSL_RE","CSS_VAR_RE","sanitizeColor","v","ColorDotCellRenderer","colorField","size","labelField","dotRef","useRef","rawColor","color","useIsomorphicLayoutEffect","el","jsxs","readNumber","BalanceCellRenderer","lines","currency","highlightNegative","i18n","locale","formatLine","line","formatted","rendered","x","item","idx","EditableTextCellRenderer","initialValue","onValueChange","stopEditing","column","setValue","inputRef","useEffect","headerName","_b","_a","e","next","INPUT_SURFACE_CHROME","INPUT_SURFACE_HEIGHT","INPUT_SURFACE_TEXT","INPUT_SURFACE_PADDING_X","EditableCurrencyCellRenderer","decimals","min","max","draft","setDraft","parseDraft","input","lang","partsFmt","groupChar","p","decimalChar","cleaned","commit","parsed","clamped","factor"],"mappings":"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"}