@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
@@ -1 +1 @@
1
- {"version":3,"file":"gestational-age-calculator-DBlFdoiP.js","sources":["../../src/components/gestational-age-calculator/gestational-age-calculator.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* GestationalAgeCalculator — current gestational age, trimester and */\n/* milestone dates, from either a known LMP or a known due date. */\n/* */\n/* Reuses the shared `gestation` maths from due-date-calculator: GA day */\n/* 0 is the LMP; from an EDD we back out LMP = EDD − 280 days. */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { subDays, isAfter } from 'date-fns';\nimport { RadioGroup, Radio } from '../radio-group';\nimport { FormField } from '../form-field';\nimport { DatePicker } from '../date-picker';\nimport { Select } from '../select';\nimport { Switch } from '../switch';\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 Trimester,\n type GestationalAge,\n type Plurality,\n type Chorionicity,\n computeDueDate,\n gestationalMilestones,\n GESTATION_DAYS,\n TRIMESTER_BADGE_VARIANT,\n trimesterHighlightToken,\n} from '../_shared/obstetrics';\nimport {\n computeAntenatalSchedule,\n type AntenatalScheduleOptions,\n type GdmRisk,\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\ntype DateMethod = 'lmp' | 'edd';\n\nexport interface GestationalAgeResult {\n gestationalAge: GestationalAge | null;\n trimester: Trimester;\n dueDate: Date;\n}\n\nexport interface GestationalAgeCalculatorProps extends VariantProps<\n typeof rootVariants\n> {\n /** Whether the input date is the last period (`lmp`) or the due date (`edd`). */\n defaultMethod?: DateMethod;\n /** Pre-fill the reference date (e.g. a known LMP from the patient record). */\n defaultReferenceDate?: Date;\n /** Fires whenever a result can be computed (and `null` when it can't). */\n onResultChange?: (result: GestationalAgeResult | null) => void;\n /** When provided, shows the result-action buttons that emit / copy the result. */\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, and reveal the\n * plurality / chorionicity inputs that drive it.\n */\n showSchedule?: boolean;\n /** `showSchedule` only — initial number of babies. Defaults to `'singleton'`. */\n defaultPlurality?: Plurality;\n /** `showSchedule` only — initial chorionicity for multiples. Defaults to `'unknown'`. */\n defaultChorionicity?: Chorionicity;\n /** `showSchedule` only — initial Rh-negative state (surfaces anti-D). */\n defaultRhNegative?: boolean;\n /** `showSchedule` only — initial gestational-diabetes risk tier (surfaces OGTT). */\n defaultGdmRisk?: GdmRisk;\n /**\n * Passthrough options for the appended schedule (national `schedule`,\n * `includeOnIndication`, `birthGuideline`). `today`, `plurality`,\n * `chorionicity`, `rhNegative` and `gdmRisk` come from the component's own\n * inputs. Ignored unless `showSchedule` is set.\n */\n scheduleOptions?: Omit<\n AntenatalScheduleOptions,\n 'today' | 'plurality' | 'chorionicity' | 'rhNegative' | 'gdmRisk'\n >;\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=\"edd\"` for the\n * date-back-from-EDD flow).\n */\nexport const GestationalAgeCalculator = forwardRef<\n HTMLDivElement,\n GestationalAgeCalculatorProps\n>(\n (\n {\n defaultMethod = 'lmp',\n defaultReferenceDate,\n onResultChange,\n onInsert,\n insertVariant = 'insert',\n onCopy,\n onError,\n insertBrand,\n showSchedule = false,\n defaultPlurality = 'singleton',\n defaultChorionicity = 'unknown',\n defaultRhNegative = false,\n defaultGdmRisk,\n scheduleOptions,\n id,\n width,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n const [method, setMethod] = useState<DateMethod>(defaultMethod);\n const [refDate, setRefDate] = useState<Date | undefined>(\n defaultReferenceDate,\n );\n // The date the result is evaluated against (\"as of\"); defaults to today but\n // can be a future appointment date to project the GA/schedule forward.\n const [asOfDate, setAsOfDate] = useState<Date>(() => new Date());\n // Real today — caps the dating-anchor input (an LMP can't be in the future).\n const today = useMemo(() => new Date(), []);\n const [plurality, setPlurality] = useState<Plurality>(defaultPlurality);\n const [chorionicity, setChorionicity] =\n useState<Chorionicity>(defaultChorionicity);\n const [rhNegative, setRhNegative] = useState<boolean>(defaultRhNegative);\n const [gdmRisk, setGdmRisk] = useState<GdmRisk | 'none'>(\n defaultGdmRisk ?? 'none',\n );\n\n const data = useMemo(() => {\n if (!refDate) return null;\n // Normalise to an LMP, then reuse the shared gestation maths.\n const lmp = method === 'lmp' ? refDate : subDays(refDate, GESTATION_DAYS);\n const r = computeDueDate({ method: 'lmp', date: lmp }, asOfDate);\n return {\n result: {\n gestationalAge: r.gestationalAge,\n trimester: r.trimester,\n dueDate: r.dueDate,\n } satisfies GestationalAgeResult,\n milestones: gestationalMilestones(r.gestationalStart),\n gestationalStart: r.gestationalStart,\n };\n }, [method, refDate, asOfDate]);\n\n const schedule = useMemo(() => {\n if (!showSchedule || !data) return null;\n return computeAntenatalSchedule(data.gestationalStart, {\n ...scheduleOptions,\n today: asOfDate,\n plurality,\n chorionicity,\n rhNegative,\n gdmRisk: gdmRisk === 'none' ? undefined : gdmRisk,\n });\n }, [\n showSchedule,\n data,\n asOfDate,\n scheduleOptions,\n plurality,\n chorionicity,\n rhNegative,\n gdmRisk,\n ]);\n\n const chorionicityOptions = useMemo(\n () =>\n (\n [\n 'unknown',\n 'dichorionic-diamniotic',\n 'monochorionic-diamniotic',\n 'monochorionic-monoamniotic',\n ] as const\n ).map((c) => ({\n value: c,\n label: t(`antenatalSchedule.chorionicity.${c}`),\n })),\n [t],\n );\n\n const dateFormatter = useMemo(\n () => new Intl.DateTimeFormat(i18n.language, { dateStyle: 'medium' }),\n [i18n.language],\n );\n\n useEffect(() => {\n onResultChange?.(data?.result ?? null);\n }, [data, onResultChange]);\n\n const gaText = (ga: GestationalAge | null): string =>\n ga\n ? t('gestationalAgeCalculator.gestation', {\n weeks: ga.weeks,\n days: ga.days,\n })\n : '—';\n\n return (\n <div\n ref={ref}\n data-component=\"gestational-age-calculator\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <RadioGroup\n label={t('gestationalAgeCalculator.method.label')}\n variant=\"horizontal\"\n value={method}\n onValueChange={(next) => setMethod(next as DateMethod)}\n >\n <Radio label={t('gestationalAgeCalculator.method.lmp')} value=\"lmp\" />\n <Radio label={t('gestationalAgeCalculator.method.edd')} value=\"edd\" />\n </RadioGroup>\n\n <FormField\n label={t(\n method === 'lmp'\n ? 'gestationalAgeCalculator.lmpDate'\n : 'gestationalAgeCalculator.eddDate',\n )}\n >\n <DatePicker\n value={refDate}\n onChange={setRefDate}\n maxDate={method === 'lmp' ? today : undefined}\n />\n </FormField>\n\n <FormField\n label={t('gestationalAgeCalculator.asOfDate')}\n description={t('gestationalAgeCalculator.asOfDateHint')}\n >\n <DatePicker value={asOfDate} onChange={(d) => d && setAsOfDate(d)} />\n </FormField>\n\n {showSchedule ? (\n <>\n <RadioGroup\n label={t('antenatalSchedule.plurality.label')}\n variant=\"horizontal\"\n value={plurality}\n onValueChange={(next) => setPlurality(next as Plurality)}\n >\n <Radio\n label={t('antenatalSchedule.plurality.singleton')}\n value=\"singleton\"\n />\n <Radio\n label={t('antenatalSchedule.plurality.twin')}\n value=\"twin\"\n />\n <Radio\n label={t('antenatalSchedule.plurality.triplet')}\n value=\"triplet\"\n />\n </RadioGroup>\n\n {plurality !== 'singleton' ? (\n <FormField label={t('antenatalSchedule.chorionicity.label')}>\n <Select\n options={chorionicityOptions}\n value={chorionicity}\n onValueChange={(next) =>\n setChorionicity(next as Chorionicity)\n }\n />\n </FormField>\n ) : null}\n\n <Switch\n label={t('antenatalSchedule.rhNegative')}\n checked={rhNegative}\n onCheckedChange={setRhNegative}\n />\n\n <RadioGroup\n label={t('antenatalSchedule.gdmRisk.label')}\n variant=\"horizontal\"\n value={gdmRisk}\n onValueChange={(next) => setGdmRisk(next as GdmRisk | 'none')}\n >\n <Radio label={t('antenatalSchedule.gdmRisk.none')} value=\"none\" />\n <Radio\n label={t('antenatalSchedule.gdmRisk.medium')}\n value=\"medium\"\n />\n <Radio label={t('antenatalSchedule.gdmRisk.high')} value=\"high\" />\n </RadioGroup>\n </>\n ) : null}\n\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {data\n ? `${t('gestationalAgeCalculator.gestationLabel')}: ${gaText(\n data.result.gestationalAge,\n )}. ${t('gestationalAgeCalculator.trimesterLabel')}: ${t(\n `gestationalAgeCalculator.trimester.${data.result.trimester}`,\n )}.`\n : ''}\n </p>\n\n {data ? (\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-2\">\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('gestationalAgeCalculator.trimesterLabel')}\n </dt>\n <dd>\n <Badge\n variant={TRIMESTER_BADGE_VARIANT[data.result.trimester]}\n size=\"lg\"\n >\n {t(\n `gestationalAgeCalculator.trimester.${data.result.trimester}`,\n )}\n </Badge>\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:items-end ds:gap-[var(--spacing-xs)] ds:text-end\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('gestationalAgeCalculator.gestationLabel')}\n </dt>\n <dd className=\"type-metric ds:text-foreground\">\n {gaText(data.result.gestationalAge)}\n </dd>\n </div>\n </dl>\n\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <span className=\"type-label ds:text-muted-foreground\">\n {t('gestationalAgeCalculator.milestonesLabel')}\n </span>\n <ul className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n {data.milestones.map((m) => {\n const reached = isAfter(asOfDate, m.date);\n return (\n <li\n key={m.key}\n className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-md)]\"\n >\n <span className=\"type-body ds:text-foreground\">\n {t(`gestationalAgeCalculator.milestone.${m.key}`)}\n </span>\n <span className=\"ds:flex ds:items-center ds:gap-[var(--spacing-sm)]\">\n <span className=\"type-body ds:text-muted-foreground\">\n {dateFormatter.format(m.date)}\n </span>\n {reached ? (\n <Badge variant=\"success\">\n {t('gestationalAgeCalculator.reached')}\n </Badge>\n ) : null}\n </span>\n </li>\n );\n })}\n </ul>\n </div>\n </Card.Body>\n </Card>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('gestationalAgeCalculator.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 gestational-age card and the schedule, and its payload carries the\n schedule rows when shown (no per-card buttons). */}\n {data && (insertVariant === 'copy' || onInsert) ? (\n <InsertButton\n onInsert={onInsert}\n variant={insertVariant}\n onCopy={onCopy}\n onError={onError}\n card={{\n title: t('insert.title.gestationalAge'),\n icon: 'baby',\n highlight: t(\n `gestationalAgeCalculator.trimester.${data.result.trimester}`,\n ),\n // Chip shares the trimester's semantic token so the inserted PNG\n // chip matches the on-screen trimester badge — with the\n // contrast-safe orange override for the `--warning` third trimester.\n highlightToken: trimesterHighlightToken(data.result.trimester),\n brand: insertBrand,\n fields: [\n {\n // Gestational age is an elapsed duration → clock glyph.\n icon: 'clock',\n label: t('gestationalAgeCalculator.gestationLabel'),\n value: gaText(data.result.gestationalAge),\n },\n {\n // Trimester is a clinical-stage classification → tag.\n icon: 'tag',\n label: t('gestationalAgeCalculator.trimesterLabel'),\n value: t(\n `gestationalAgeCalculator.trimester.${data.result.trimester}`,\n ),\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\nGestationalAgeCalculator.displayName = 'GestationalAgeCalculator';\n"],"names":["rootVariants","cva","GestationalAgeCalculator","forwardRef","defaultMethod","defaultReferenceDate","onResultChange","onInsert","insertVariant","onCopy","onError","insertBrand","showSchedule","defaultPlurality","defaultChorionicity","defaultRhNegative","defaultGdmRisk","scheduleOptions","id","width","className","ref","t","i18n","useTranslation","method","setMethod","useState","refDate","setRefDate","asOfDate","setAsOfDate","today","useMemo","plurality","setPlurality","chorionicity","setChorionicity","rhNegative","setRhNegative","gdmRisk","setGdmRisk","data","lmp","subDays","GESTATION_DAYS","r","computeDueDate","gestationalMilestones","schedule","computeAntenatalSchedule","chorionicityOptions","c","dateFormatter","useEffect","gaText","ga","jsxs","RadioGroup","next","jsx","Radio","FormField","DatePicker","d","Fragment","Select","Switch","Card","Badge","TRIMESTER_BADGE_VARIANT","m","reached","isAfter","AntenatalScheduleTimeline","InsertButton","trimesterHighlightToken","buildScheduleInsertFields"],"mappings":"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"}
1
+ {"version":3,"file":"gestational-age-calculator-CF2ISaYQ.js","sources":["../../src/components/gestational-age-calculator/gestational-age-calculator.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* GestationalAgeCalculator — current gestational age, trimester and */\n/* milestone dates, from either a known LMP or a known due date. */\n/* */\n/* Reuses the shared `gestation` maths from due-date-calculator: GA day */\n/* 0 is the LMP; from an EDD we back out LMP = EDD − 280 days. */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { subDays, isAfter } from 'date-fns';\nimport { RadioGroup, Radio } from '../radio-group';\nimport { FormField } from '../form-field';\nimport { DatePicker } from '../date-picker';\nimport { Select } from '../select';\nimport { Switch } from '../switch';\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 Trimester,\n type GestationalAge,\n type Plurality,\n type Chorionicity,\n computeDueDate,\n gestationalMilestones,\n GESTATION_DAYS,\n TRIMESTER_BADGE_VARIANT,\n trimesterHighlightToken,\n} from '../_shared/obstetrics';\nimport {\n computeAntenatalSchedule,\n type AntenatalScheduleOptions,\n type GdmRisk,\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\ntype DateMethod = 'lmp' | 'edd';\n\nexport interface GestationalAgeResult {\n gestationalAge: GestationalAge | null;\n trimester: Trimester;\n dueDate: Date;\n}\n\nexport interface GestationalAgeCalculatorProps extends VariantProps<\n typeof rootVariants\n> {\n /** Whether the input date is the last period (`lmp`) or the due date (`edd`). */\n defaultMethod?: DateMethod;\n /** Pre-fill the reference date (e.g. a known LMP from the patient record). */\n defaultReferenceDate?: Date;\n /** Fires whenever a result can be computed (and `null` when it can't). */\n onResultChange?: (result: GestationalAgeResult | null) => void;\n /** When provided, shows the result-action buttons that emit / copy the result. */\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, and reveal the\n * plurality / chorionicity inputs that drive it.\n */\n showSchedule?: boolean;\n /** `showSchedule` only — initial number of babies. Defaults to `'singleton'`. */\n defaultPlurality?: Plurality;\n /** `showSchedule` only — initial chorionicity for multiples. Defaults to `'unknown'`. */\n defaultChorionicity?: Chorionicity;\n /** `showSchedule` only — initial Rh-negative state (surfaces anti-D). */\n defaultRhNegative?: boolean;\n /** `showSchedule` only — initial gestational-diabetes risk tier (surfaces OGTT). */\n defaultGdmRisk?: GdmRisk;\n /**\n * Passthrough options for the appended schedule (national `schedule`,\n * `includeOnIndication`, `birthGuideline`). `today`, `plurality`,\n * `chorionicity`, `rhNegative` and `gdmRisk` come from the component's own\n * inputs. Ignored unless `showSchedule` is set.\n */\n scheduleOptions?: Omit<\n AntenatalScheduleOptions,\n 'today' | 'plurality' | 'chorionicity' | 'rhNegative' | 'gdmRisk'\n >;\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=\"edd\"` for the\n * date-back-from-EDD flow).\n */\nexport const GestationalAgeCalculator = forwardRef<\n HTMLDivElement,\n GestationalAgeCalculatorProps\n>(\n (\n {\n defaultMethod = 'lmp',\n defaultReferenceDate,\n onResultChange,\n onInsert,\n insertVariant = 'insert',\n onCopy,\n onError,\n insertBrand,\n showSchedule = false,\n defaultPlurality = 'singleton',\n defaultChorionicity = 'unknown',\n defaultRhNegative = false,\n defaultGdmRisk,\n scheduleOptions,\n id,\n width,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n const [method, setMethod] = useState<DateMethod>(defaultMethod);\n const [refDate, setRefDate] = useState<Date | undefined>(\n defaultReferenceDate,\n );\n // The date the result is evaluated against (\"as of\"); defaults to today but\n // can be a future appointment date to project the GA/schedule forward.\n const [asOfDate, setAsOfDate] = useState<Date>(() => new Date());\n // Real today — caps the dating-anchor input (an LMP can't be in the future).\n const today = useMemo(() => new Date(), []);\n const [plurality, setPlurality] = useState<Plurality>(defaultPlurality);\n const [chorionicity, setChorionicity] =\n useState<Chorionicity>(defaultChorionicity);\n const [rhNegative, setRhNegative] = useState<boolean>(defaultRhNegative);\n const [gdmRisk, setGdmRisk] = useState<GdmRisk | 'none'>(\n defaultGdmRisk ?? 'none',\n );\n\n const data = useMemo(() => {\n if (!refDate) return null;\n // Normalise to an LMP, then reuse the shared gestation maths.\n const lmp = method === 'lmp' ? refDate : subDays(refDate, GESTATION_DAYS);\n const r = computeDueDate({ method: 'lmp', date: lmp }, asOfDate);\n return {\n result: {\n gestationalAge: r.gestationalAge,\n trimester: r.trimester,\n dueDate: r.dueDate,\n } satisfies GestationalAgeResult,\n milestones: gestationalMilestones(r.gestationalStart),\n gestationalStart: r.gestationalStart,\n };\n }, [method, refDate, asOfDate]);\n\n const schedule = useMemo(() => {\n if (!showSchedule || !data) return null;\n return computeAntenatalSchedule(data.gestationalStart, {\n ...scheduleOptions,\n today: asOfDate,\n plurality,\n chorionicity,\n rhNegative,\n gdmRisk: gdmRisk === 'none' ? undefined : gdmRisk,\n });\n }, [\n showSchedule,\n data,\n asOfDate,\n scheduleOptions,\n plurality,\n chorionicity,\n rhNegative,\n gdmRisk,\n ]);\n\n const chorionicityOptions = useMemo(\n () =>\n (\n [\n 'unknown',\n 'dichorionic-diamniotic',\n 'monochorionic-diamniotic',\n 'monochorionic-monoamniotic',\n ] as const\n ).map((c) => ({\n value: c,\n label: t(`antenatalSchedule.chorionicity.${c}`),\n })),\n [t],\n );\n\n const dateFormatter = useMemo(\n () => new Intl.DateTimeFormat(i18n.language, { dateStyle: 'medium' }),\n [i18n.language],\n );\n\n useEffect(() => {\n onResultChange?.(data?.result ?? null);\n }, [data, onResultChange]);\n\n const gaText = (ga: GestationalAge | null): string =>\n ga\n ? t('gestationalAgeCalculator.gestation', {\n weeks: ga.weeks,\n days: ga.days,\n })\n : '—';\n\n return (\n <div\n ref={ref}\n data-component=\"gestational-age-calculator\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <RadioGroup\n label={t('gestationalAgeCalculator.method.label')}\n variant=\"horizontal\"\n value={method}\n onValueChange={(next) => setMethod(next as DateMethod)}\n >\n <Radio label={t('gestationalAgeCalculator.method.lmp')} value=\"lmp\" />\n <Radio label={t('gestationalAgeCalculator.method.edd')} value=\"edd\" />\n </RadioGroup>\n\n <FormField\n label={t(\n method === 'lmp'\n ? 'gestationalAgeCalculator.lmpDate'\n : 'gestationalAgeCalculator.eddDate',\n )}\n >\n <DatePicker\n value={refDate}\n onChange={setRefDate}\n maxDate={method === 'lmp' ? today : undefined}\n />\n </FormField>\n\n <FormField\n label={t('gestationalAgeCalculator.asOfDate')}\n description={t('gestationalAgeCalculator.asOfDateHint')}\n >\n <DatePicker value={asOfDate} onChange={(d) => d && setAsOfDate(d)} />\n </FormField>\n\n {showSchedule ? (\n <>\n <RadioGroup\n label={t('antenatalSchedule.plurality.label')}\n variant=\"horizontal\"\n value={plurality}\n onValueChange={(next) => setPlurality(next as Plurality)}\n >\n <Radio\n label={t('antenatalSchedule.plurality.singleton')}\n value=\"singleton\"\n />\n <Radio\n label={t('antenatalSchedule.plurality.twin')}\n value=\"twin\"\n />\n <Radio\n label={t('antenatalSchedule.plurality.triplet')}\n value=\"triplet\"\n />\n </RadioGroup>\n\n {plurality !== 'singleton' ? (\n <FormField label={t('antenatalSchedule.chorionicity.label')}>\n <Select\n options={chorionicityOptions}\n value={chorionicity}\n onValueChange={(next) =>\n setChorionicity(next as Chorionicity)\n }\n />\n </FormField>\n ) : null}\n\n <Switch\n label={t('antenatalSchedule.rhNegative')}\n checked={rhNegative}\n onCheckedChange={setRhNegative}\n />\n\n <RadioGroup\n label={t('antenatalSchedule.gdmRisk.label')}\n variant=\"horizontal\"\n value={gdmRisk}\n onValueChange={(next) => setGdmRisk(next as GdmRisk | 'none')}\n >\n <Radio label={t('antenatalSchedule.gdmRisk.none')} value=\"none\" />\n <Radio\n label={t('antenatalSchedule.gdmRisk.medium')}\n value=\"medium\"\n />\n <Radio label={t('antenatalSchedule.gdmRisk.high')} value=\"high\" />\n </RadioGroup>\n </>\n ) : null}\n\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {data\n ? `${t('gestationalAgeCalculator.gestationLabel')}: ${gaText(\n data.result.gestationalAge,\n )}. ${t('gestationalAgeCalculator.trimesterLabel')}: ${t(\n `gestationalAgeCalculator.trimester.${data.result.trimester}`,\n )}.`\n : ''}\n </p>\n\n {data ? (\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-2\">\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('gestationalAgeCalculator.trimesterLabel')}\n </dt>\n <dd>\n <Badge\n variant={TRIMESTER_BADGE_VARIANT[data.result.trimester]}\n size=\"lg\"\n >\n {t(\n `gestationalAgeCalculator.trimester.${data.result.trimester}`,\n )}\n </Badge>\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:items-end ds:gap-[var(--spacing-xs)] ds:text-end\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('gestationalAgeCalculator.gestationLabel')}\n </dt>\n <dd className=\"type-metric ds:text-foreground\">\n {gaText(data.result.gestationalAge)}\n </dd>\n </div>\n </dl>\n\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <span className=\"type-label ds:text-muted-foreground\">\n {t('gestationalAgeCalculator.milestonesLabel')}\n </span>\n <ul className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n {data.milestones.map((m) => {\n const reached = isAfter(asOfDate, m.date);\n return (\n <li\n key={m.key}\n className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-md)]\"\n >\n <span className=\"type-body ds:text-foreground\">\n {t(`gestationalAgeCalculator.milestone.${m.key}`)}\n </span>\n <span className=\"ds:flex ds:items-center ds:gap-[var(--spacing-sm)]\">\n <span className=\"type-body ds:text-muted-foreground\">\n {dateFormatter.format(m.date)}\n </span>\n {reached ? (\n <Badge variant=\"success\">\n {t('gestationalAgeCalculator.reached')}\n </Badge>\n ) : null}\n </span>\n </li>\n );\n })}\n </ul>\n </div>\n </Card.Body>\n </Card>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('gestationalAgeCalculator.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 gestational-age card and the schedule, and its payload carries the\n schedule rows when shown (no per-card buttons). */}\n {data && (insertVariant === 'copy' || onInsert) ? (\n <InsertButton\n onInsert={onInsert}\n variant={insertVariant}\n onCopy={onCopy}\n onError={onError}\n card={{\n title: t('insert.title.gestationalAge'),\n icon: 'baby',\n highlight: t(\n `gestationalAgeCalculator.trimester.${data.result.trimester}`,\n ),\n // Chip shares the trimester's semantic token so the inserted PNG\n // chip matches the on-screen trimester badge — with the\n // contrast-safe orange override for the `--warning` third trimester.\n highlightToken: trimesterHighlightToken(data.result.trimester),\n brand: insertBrand,\n fields: [\n {\n // Gestational age is an elapsed duration → clock glyph.\n icon: 'clock',\n label: t('gestationalAgeCalculator.gestationLabel'),\n value: gaText(data.result.gestationalAge),\n },\n {\n // Trimester is a clinical-stage classification → tag.\n icon: 'tag',\n label: t('gestationalAgeCalculator.trimesterLabel'),\n value: t(\n `gestationalAgeCalculator.trimester.${data.result.trimester}`,\n ),\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\nGestationalAgeCalculator.displayName = 'GestationalAgeCalculator';\n"],"names":["rootVariants","cva","GestationalAgeCalculator","forwardRef","defaultMethod","defaultReferenceDate","onResultChange","onInsert","insertVariant","onCopy","onError","insertBrand","showSchedule","defaultPlurality","defaultChorionicity","defaultRhNegative","defaultGdmRisk","scheduleOptions","id","width","className","ref","t","i18n","useTranslation","method","setMethod","useState","refDate","setRefDate","asOfDate","setAsOfDate","today","useMemo","plurality","setPlurality","chorionicity","setChorionicity","rhNegative","setRhNegative","gdmRisk","setGdmRisk","data","lmp","subDays","GESTATION_DAYS","r","computeDueDate","gestationalMilestones","schedule","computeAntenatalSchedule","chorionicityOptions","c","dateFormatter","useEffect","gaText","ga","jsxs","RadioGroup","next","jsx","Radio","FormField","DatePicker","d","Fragment","Select","Switch","Card","Badge","TRIMESTER_BADGE_VARIANT","m","reached","isAfter","AntenatalScheduleTimeline","InsertButton","trimesterHighlightToken","buildScheduleInsertFields"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { c as e } from "./createLucideIcon-CrFbzy84.js";
2
+ /**
3
+ * @license lucide-react v1.8.0 - ISC
4
+ *
5
+ * This source code is licensed under the ISC license.
6
+ * See the LICENSE file in the root directory of this source tree.
7
+ */
8
+ const y = [
9
+ ["line", { x1: "4", x2: "20", y1: "9", y2: "9", key: "4lhtct" }],
10
+ ["line", { x1: "4", x2: "20", y1: "15", y2: "15", key: "vyu0kd" }],
11
+ ["line", { x1: "10", x2: "8", y1: "3", y2: "21", key: "1ggp8o" }],
12
+ ["line", { x1: "16", x2: "14", y1: "3", y2: "21", key: "weycgp" }]
13
+ ], o = e("hash", y);
14
+ export {
15
+ o as H
16
+ };
17
+ //# sourceMappingURL=hash-CysBBS_N.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-CysBBS_N.js","sources":["../../node_modules/lucide-react/dist/esm/icons/hash.js"],"sourcesContent":["/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"9\", y2: \"9\", key: \"4lhtct\" }],\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"15\", y2: \"15\", key: \"vyu0kd\" }],\n [\"line\", { x1: \"10\", x2: \"8\", y1: \"3\", y2: \"21\", key: \"1ggp8o\" }],\n [\"line\", { x1: \"16\", x2: \"14\", y1: \"3\", y2: \"21\", key: \"weycgp\" }]\n];\nconst Hash = createLucideIcon(\"hash\", __iconNode);\n\nexport { __iconNode, Hash as default };\n//# sourceMappingURL=hash.js.map\n"],"names":["__iconNode","Hash","createLucideIcon"],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAa;AAAA,EACjB,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,KAAK,SAAQ,CAAE;AAAA,EAC/D,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,KAAK,SAAQ,CAAE;AAAA,EACjE,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,KAAK,SAAQ,CAAE;AAAA,EAChE,CAAC,QAAQ,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,KAAK,SAAQ,CAAE;AACnE,GACMC,IAAOC,EAAiB,QAAQF,CAAU;","x_google_ignoreList":[0]}
@@ -3,10 +3,10 @@ import { forwardRef as k, useState as p, useMemo as T, useEffect as S } from "re
3
3
  import { c as V } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as j } from "react-i18next";
5
5
  import { F as f } from "./form-field-BOm9hK35.js";
6
- import { N as L } from "./number-input-Dj5L3pXK.js";
7
- import { D as M } from "./date-time-picker-Ze1My59T.js";
6
+ import { N as L } from "./number-input-DxphVG_A.js";
7
+ import { D as M } from "./date-time-picker-BhoogS5Q.js";
8
8
  import { C as _ } from "./card-DPmk26CL.js";
9
- import { B as A } from "./badge-CqGsX32l.js";
9
+ import { B as A } from "./badge-DCOqV9mI.js";
10
10
  import { I as C } from "./insert-result-njqBthzT.js";
11
11
  const O = 1e3 * 60 * 60, z = 35;
12
12
  function G(D) {
@@ -167,4 +167,4 @@ export {
167
167
  z as M,
168
168
  G as a
169
169
  };
170
- //# sourceMappingURL=hcg-doubling-if4Q8aSX.js.map
170
+ //# sourceMappingURL=hcg-doubling-C7bmuaU3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hcg-doubling-if4Q8aSX.js","sources":["../../src/components/hcg-doubling/hcg.ts","../../src/components/hcg-doubling/hcg-doubling.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* Serum β-hCG doubling time — early-pregnancy viability. */\n/* */\n/* Pure, framework-free, unit-testable. From two timed β-hCG values it */\n/* derives the doubling time, the rise over the actual interval, and the */\n/* rise normalised to 48 hours (the standard comparison window). A */\n/* normal early intrauterine pregnancy rises at least ~35% over 48h */\n/* (Barnhart 2004); a plateau or fall is abnormal. */\n/* */\n/* Barnhart KT et al. \"Symptomatic patients with an early viable */\n/* intrauterine pregnancy.\" Obstet Gynecol 2004;104:50-5. */\n/* ------------------------------------------------------------------ */\n\nconst MS_PER_HOUR = 1000 * 60 * 60;\n/** Conservative minimal 48-hour rise for a potentially viable IUP, %. */\nexport const MINIMAL_48H_RISE_PERCENT = 35;\n\nexport interface HcgInput {\n /** First β-hCG value, mIU/mL. */\n hcg1: number;\n /** When the first sample was drawn. */\n date1: Date;\n /** Second β-hCG value, mIU/mL. */\n hcg2: number;\n /** When the second sample was drawn (must be after `date1`). */\n date2: Date;\n}\n\nexport type HcgTrend = 'rising-normal' | 'rising-slow' | 'plateau-falling';\n\nexport interface HcgResult {\n /** Hours between the two samples. */\n intervalHours: number;\n /** hcg2 / hcg1. */\n ratio: number;\n /** Rise over the actual interval, %. */\n percentRise: number;\n /** Rise normalised to a 48-hour window, % (comparable to the benchmark). */\n twoDayRisePercent: number;\n /** Doubling time in hours, or `null` when not rising. */\n doublingTimeHours: number | null;\n /** Trend band against the Barnhart minimal-rise benchmark. */\n trend: HcgTrend;\n}\n\n/**\n * Analyse a two-point β-hCG series. Returns `null` unless both values are\n * positive and the second sample is strictly after the first.\n */\nexport function analyseHcg(input: HcgInput): HcgResult | null {\n const { hcg1, hcg2, date1, date2 } = input;\n if (!(hcg1 > 0) || !(hcg2 > 0)) return null;\n\n const intervalHours = (date2.getTime() - date1.getTime()) / MS_PER_HOUR;\n if (!(intervalHours > 0)) return null;\n\n const ratio = hcg2 / hcg1;\n const percentRise = (ratio - 1) * 100;\n const twoDayRisePercent = (ratio ** (48 / intervalHours) - 1) * 100;\n const doublingTimeHours =\n ratio > 1 ? (intervalHours * Math.LN2) / Math.log(ratio) : null;\n\n const trend: HcgTrend =\n ratio <= 1\n ? 'plateau-falling'\n : twoDayRisePercent >= MINIMAL_48H_RISE_PERCENT\n ? 'rising-normal'\n : 'rising-slow';\n\n return {\n intervalHours,\n ratio,\n percentRise,\n twoDayRisePercent,\n doublingTimeHours,\n trend,\n };\n}\n","/* ------------------------------------------------------------------ */\n/* HcgDoubling — serum β-hCG doubling time from two timed values. */\n/* */\n/* Maths in `./hcg` (pure, tested). Two timepoints (value + datetime) */\n/* → doubling time, 48-hour-normalised rise and a viability trend band. */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { FormField } from '../form-field';\nimport { NumberInput } from '../number-input';\nimport { DateTimePicker } from '../date-time-picker';\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 { type HcgResult, type HcgTrend, analyseHcg } from './hcg';\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\nconst TREND_BADGE: Record<HcgTrend, 'success' | 'warning' | 'error'> = {\n 'rising-normal': 'success',\n 'rising-slow': 'warning',\n 'plateau-falling': 'error',\n};\nconst TREND_TOKEN: Record<HcgTrend, string> = {\n 'rising-normal': '--success',\n 'rising-slow': '--warning-readable',\n 'plateau-falling': '--destructive',\n};\n\nexport interface HcgDoublingProps extends VariantProps<typeof rootVariants> {\n /** Pre-fill the first sample's date/time (e.g. from the lab record). */\n defaultDate1?: Date;\n /** Pre-fill the second sample's date/time. */\n defaultDate2?: Date;\n /** Fires whenever both timed values resolve (and `null` when not). */\n onResultChange?: (result: HcgResult | null) => void;\n /** When provided, shows the result-action buttons that emit / copy the result. */\n onInsert?: (payload: InsertPayload) => void;\n /** Which verb the result button performs. Defaults to `'insert'`. */\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 /** Brand wordmark printed in the inserted/copied result-card footer. */\n insertBrand?: string | false;\n /** Opaque instance id, emitted as `data-component-id`. */\n id?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\nexport const HcgDoubling = forwardRef<HTMLDivElement, HcgDoublingProps>(\n (\n {\n defaultDate1,\n defaultDate2,\n onResultChange,\n onInsert,\n insertVariant = 'insert',\n onCopy,\n onError,\n insertBrand,\n id,\n width,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n const [hcg1, setHcg1] = useState<number | null>(null);\n const [date1, setDate1] = useState<Date | undefined>(defaultDate1);\n const [hcg2, setHcg2] = useState<number | null>(null);\n const [date2, setDate2] = useState<Date | undefined>(defaultDate2);\n\n const today = useMemo(() => new Date(), []);\n\n const result = useMemo(() => {\n if (hcg1 === null || hcg2 === null || !date1 || !date2) return null;\n return analyseHcg({ hcg1, date1, hcg2, date2 });\n }, [hcg1, date1, hcg2, date2]);\n\n useEffect(() => {\n onResultChange?.(result);\n }, [result, onResultChange]);\n\n const num = useMemo(\n () => new Intl.NumberFormat(i18n.language, { maximumFractionDigits: 0 }),\n [i18n.language],\n );\n\n const doublingText = (r: HcgResult): string =>\n r.doublingTimeHours === null\n ? '—'\n : t('hcgDoubling.hoursValue', {\n hours: num.format(r.doublingTimeHours),\n });\n const riseText = (r: HcgResult): string =>\n t('hcgDoubling.percentValue', { value: num.format(r.twoDayRisePercent) });\n\n return (\n <div\n ref={ref}\n data-component=\"hcg-doubling\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n <FormField\n label={`${t('hcgDoubling.hcg1')} (${t('hcgDoubling.units')})`}\n >\n <NumberInput\n mode=\"decimal\"\n min={0}\n value={hcg1}\n onChange={setHcg1}\n />\n </FormField>\n <FormField label={t('hcgDoubling.date1')}>\n <DateTimePicker value={date1} onChange={setDate1} maxDate={today} />\n </FormField>\n <FormField\n label={`${t('hcgDoubling.hcg2')} (${t('hcgDoubling.units')})`}\n >\n <NumberInput\n mode=\"decimal\"\n min={0}\n value={hcg2}\n onChange={setHcg2}\n />\n </FormField>\n <FormField label={t('hcgDoubling.date2')}>\n <DateTimePicker value={date2} onChange={setDate2} maxDate={today} />\n </FormField>\n </div>\n\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {result\n ? `${t('hcgDoubling.doublingLabel')}: ${doublingText(result)}. ${t(\n `hcgDoubling.trend.${result.trend}`,\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('hcgDoubling.doublingLabel')}\n </dt>\n <dd className=\"type-metric ds:text-foreground\">\n {doublingText(result)}\n </dd>\n </div>\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('hcgDoubling.riseLabel')}\n </dt>\n <dd className=\"type-body ds:text-foreground\">\n {riseText(result)}\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:items-end ds:gap-[var(--spacing-xs)] ds:text-end\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('hcgDoubling.trendLabel')}\n </dt>\n <dd>\n <Badge variant={TREND_BADGE[result.trend]} size=\"lg\">\n {t(`hcgDoubling.trend.${result.trend}`)}\n </Badge>\n </dd>\n </div>\n </dl>\n <p className=\"type-body-sm ds:text-muted-foreground\">\n {t('hcgDoubling.disclaimer')}\n </p>\n {insertVariant === 'copy' || onInsert ? (\n <InsertButton\n onInsert={onInsert}\n variant={insertVariant}\n onCopy={onCopy}\n onError={onError}\n card={{\n title: t('insert.title.hcg'),\n icon: 'activity',\n highlight: t(`hcgDoubling.trend.${result.trend}`),\n highlightToken: TREND_TOKEN[result.trend],\n brand: insertBrand,\n fields: [\n {\n icon: 'clock',\n label: t('hcgDoubling.doublingLabel'),\n value: doublingText(result),\n },\n {\n icon: 'trending-up',\n label: t('hcgDoubling.riseLabel'),\n value: riseText(result),\n },\n {\n icon: 'tag',\n label: t('hcgDoubling.trendLabel'),\n value: t(`hcgDoubling.trend.${result.trend}`),\n },\n ],\n }}\n />\n ) : null}\n </Card.Body>\n </Card>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('hcgDoubling.empty')}\n </p>\n )}\n </div>\n );\n },\n);\n\nHcgDoubling.displayName = 'HcgDoubling';\n"],"names":["MS_PER_HOUR","MINIMAL_48H_RISE_PERCENT","analyseHcg","input","hcg1","hcg2","date1","date2","intervalHours","ratio","percentRise","twoDayRisePercent","doublingTimeHours","trend","rootVariants","cva","TREND_BADGE","TREND_TOKEN","HcgDoubling","forwardRef","defaultDate1","defaultDate2","onResultChange","onInsert","insertVariant","onCopy","onError","insertBrand","id","width","className","ref","t","i18n","useTranslation","setHcg1","useState","setDate1","setHcg2","setDate2","today","useMemo","result","useEffect","num","doublingText","r","riseText","jsxs","jsx","FormField","NumberInput","DateTimePicker","Card","Badge","InsertButton"],"mappings":";;;;;;;;;;AAaA,MAAMA,IAAc,MAAO,KAAK,IAEnBC,IAA2B;AAkCjC,SAASC,EAAWC,GAAmC;AAC5D,QAAM,EAAE,MAAAC,GAAM,MAAAC,GAAM,OAAAC,GAAO,OAAAC,MAAUJ;AACrC,MAAI,EAAEC,IAAO,MAAM,EAAEC,IAAO,GAAI,QAAO;AAEvC,QAAMG,KAAiBD,EAAM,QAAA,IAAYD,EAAM,aAAaN;AAC5D,MAAI,EAAEQ,IAAgB,GAAI,QAAO;AAEjC,QAAMC,IAAQJ,IAAOD,GACfM,KAAeD,IAAQ,KAAK,KAC5BE,KAAqBF,MAAU,KAAKD,KAAiB,KAAK,KAC1DI,IACJH,IAAQ,IAAKD,IAAgB,KAAK,MAAO,KAAK,IAAIC,CAAK,IAAI,MAEvDI,IACJJ,KAAS,IACL,oBACAE,KAAqBV,IACnB,kBACA;AAER,SAAO;AAAA,IACL,eAAAO;AAAA,IACA,OAAAC;AAAA,IACA,aAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,OAAAC;AAAA,EAAA;AAEJ;ACtDA,MAAMC,IAAeC,EAAI,kDAAkD;AAAA,EACzE,UAAU;AAAA,IACR,OAAO,EAAE,MAAM,aAAa,MAAM,iBAAA;AAAA,EAAiB;AAAA,EAErD,iBAAiB,EAAE,OAAO,OAAA;AAC5B,CAAC,GAEKC,IAAiE;AAAA,EACrE,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,mBAAmB;AACrB,GACMC,IAAwC;AAAA,EAC5C,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,mBAAmB;AACrB,GAyBaC,IAAcC;AAAA,EACzB,CACE;AAAA,IACE,cAAAC;AAAA,IACA,cAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,eAAAC,IAAgB;AAAA,IAChB,QAAAC;AAAA,IACA,SAAAC;AAAA,IACA,aAAAC;AAAA,IACA,IAAAC;AAAA,IACA,OAAAC;AAAA,IACA,WAAAC;AAAA,EAAA,GAEFC,MACG;AACH,UAAM,EAAE,GAAAC,GAAG,MAAAC,EAAA,IAASC,EAAA,GAEd,CAAC9B,GAAM+B,CAAO,IAAIC,EAAwB,IAAI,GAC9C,CAAC9B,GAAO+B,CAAQ,IAAID,EAA2BhB,CAAY,GAC3D,CAACf,GAAMiC,CAAO,IAAIF,EAAwB,IAAI,GAC9C,CAAC7B,GAAOgC,CAAQ,IAAIH,EAA2Bf,CAAY,GAE3DmB,IAAQC,EAAQ,0BAAU,KAAA,GAAQ,CAAA,CAAE,GAEpCC,IAASD,EAAQ,MACjBrC,MAAS,QAAQC,MAAS,QAAQ,CAACC,KAAS,CAACC,IAAc,OACxDL,EAAW,EAAE,MAAAE,GAAM,OAAAE,GAAO,MAAAD,GAAM,OAAAE,GAAO,GAC7C,CAACH,GAAME,GAAOD,GAAME,CAAK,CAAC;AAE7B,IAAAoC,EAAU,MAAM;AACd,MAAArB,KAAA,QAAAA,EAAiBoB;AAAA,IACnB,GAAG,CAACA,GAAQpB,CAAc,CAAC;AAE3B,UAAMsB,IAAMH;AAAA,MACV,MAAM,IAAI,KAAK,aAAaR,EAAK,UAAU,EAAE,uBAAuB,GAAG;AAAA,MACvE,CAACA,EAAK,QAAQ;AAAA,IAAA,GAGVY,IAAe,CAACC,MACpBA,EAAE,sBAAsB,OACpB,MACAd,EAAE,0BAA0B;AAAA,MAC1B,OAAOY,EAAI,OAAOE,EAAE,iBAAiB;AAAA,IAAA,CACtC,GACDC,IAAW,CAACD,MAChBd,EAAE,4BAA4B,EAAE,OAAOY,EAAI,OAAOE,EAAE,iBAAiB,EAAA,CAAG;AAE1E,WACE,gBAAAE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAjB;AAAA,QACA,kBAAe;AAAA,QACf,qBAAmBH;AAAA,QACnB,WAAWd,EAAa,EAAE,OAAAe,GAAO,WAAAC,GAAW;AAAA,QAE5C,UAAA;AAAA,UAAA,gBAAAkB,EAAC,OAAA,EAAI,WAAU,uEACb,UAAA;AAAA,YAAA,gBAAAC;AAAA,cAACC;AAAA,cAAA;AAAA,gBACC,OAAO,GAAGlB,EAAE,kBAAkB,CAAC,KAAKA,EAAE,mBAAmB,CAAC;AAAA,gBAE1D,UAAA,gBAAAiB;AAAA,kBAACE;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,KAAK;AAAA,oBACL,OAAO/C;AAAA,oBACP,UAAU+B;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACZ;AAAA,YAAA;AAAA,YAEF,gBAAAc,EAACC,GAAA,EAAU,OAAOlB,EAAE,mBAAmB,GACrC,UAAA,gBAAAiB,EAACG,GAAA,EAAe,OAAO9C,GAAO,UAAU+B,GAAU,SAASG,GAAO,GACpE;AAAA,YACA,gBAAAS;AAAA,cAACC;AAAA,cAAA;AAAA,gBACC,OAAO,GAAGlB,EAAE,kBAAkB,CAAC,KAAKA,EAAE,mBAAmB,CAAC;AAAA,gBAE1D,UAAA,gBAAAiB;AAAA,kBAACE;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,KAAK;AAAA,oBACL,OAAO9C;AAAA,oBACP,UAAUiC;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACZ;AAAA,YAAA;AAAA,YAEF,gBAAAW,EAACC,GAAA,EAAU,OAAOlB,EAAE,mBAAmB,GACrC,UAAA,gBAAAiB,EAACG,GAAA,EAAe,OAAO7C,GAAO,UAAUgC,GAAU,SAASC,GAAO,EAAA,CACpE;AAAA,UAAA,GACF;AAAA,4BAEC,KAAA,EAAE,WAAU,cAAa,MAAK,UAAS,aAAU,UAC/C,UAAAE,IACG,GAAGV,EAAE,2BAA2B,CAAC,KAAKa,EAAaH,CAAM,CAAC,KAAKV;AAAA,YAC7D,qBAAqBU,EAAO,KAAK;AAAA,UAAA,CAClC,MACD,IACN;AAAA,UAECA,IACC,gBAAAO,EAACI,GAAA,EAAK,SAAQ,YACZ,4BAACA,EAAK,MAAL,EAAU,WAAU,kDACnB,UAAA;AAAA,YAAA,gBAAAL,EAAC,MAAA,EAAG,WAAU,uEACZ,UAAA;AAAA,cAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,iEACb,UAAA;AAAA,gBAAA,gBAAAC,EAAC,MAAA,EAAG,WAAU,uCACX,UAAAjB,EAAE,2BAA2B,GAChC;AAAA,kCACC,MAAA,EAAG,WAAU,kCACX,UAAAa,EAAaH,CAAM,EAAA,CACtB;AAAA,cAAA,GACF;AAAA,cACA,gBAAAM,EAAC,OAAA,EAAI,WAAU,iEACb,UAAA;AAAA,gBAAA,gBAAAC,EAAC,MAAA,EAAG,WAAU,uCACX,UAAAjB,EAAE,uBAAuB,GAC5B;AAAA,kCACC,MAAA,EAAG,WAAU,gCACX,UAAAe,EAASL,CAAM,EAAA,CAClB;AAAA,cAAA,GACF;AAAA,cACA,gBAAAM,EAAC,OAAA,EAAI,WAAU,2EACb,UAAA;AAAA,gBAAA,gBAAAC,EAAC,MAAA,EAAG,WAAU,uCACX,UAAAjB,EAAE,wBAAwB,GAC7B;AAAA,kCACC,MAAA,EACC,UAAA,gBAAAiB,EAACK,GAAA,EAAM,SAAStC,EAAY0B,EAAO,KAAK,GAAG,MAAK,MAC7C,UAAAV,EAAE,qBAAqBU,EAAO,KAAK,EAAE,GACxC,EAAA,CACF;AAAA,cAAA,EAAA,CACF;AAAA,YAAA,GACF;AAAA,8BACC,KAAA,EAAE,WAAU,yCACV,UAAAV,EAAE,wBAAwB,GAC7B;AAAA,YACCR,MAAkB,UAAUD,IAC3B,gBAAA0B;AAAA,cAACM;AAAA,cAAA;AAAA,gBACC,UAAAhC;AAAA,gBACA,SAASC;AAAA,gBACT,QAAAC;AAAA,gBACA,SAAAC;AAAA,gBACA,MAAM;AAAA,kBACJ,OAAOM,EAAE,kBAAkB;AAAA,kBAC3B,MAAM;AAAA,kBACN,WAAWA,EAAE,qBAAqBU,EAAO,KAAK,EAAE;AAAA,kBAChD,gBAAgBzB,EAAYyB,EAAO,KAAK;AAAA,kBACxC,OAAOf;AAAA,kBACP,QAAQ;AAAA,oBACN;AAAA,sBACE,MAAM;AAAA,sBACN,OAAOK,EAAE,2BAA2B;AAAA,sBACpC,OAAOa,EAAaH,CAAM;AAAA,oBAAA;AAAA,oBAE5B;AAAA,sBACE,MAAM;AAAA,sBACN,OAAOV,EAAE,uBAAuB;AAAA,sBAChC,OAAOe,EAASL,CAAM;AAAA,oBAAA;AAAA,oBAExB;AAAA,sBACE,MAAM;AAAA,sBACN,OAAOV,EAAE,wBAAwB;AAAA,sBACjC,OAAOA,EAAE,qBAAqBU,EAAO,KAAK,EAAE;AAAA,oBAAA;AAAA,kBAC9C;AAAA,gBACF;AAAA,cACF;AAAA,YAAA,IAEA;AAAA,UAAA,EAAA,CACN,EAAA,CACF,IAEA,gBAAAO,EAAC,KAAA,EAAE,WAAU,sCACV,UAAAjB,EAAE,mBAAmB,EAAA,CACxB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEAd,EAAY,cAAc;"}
1
+ {"version":3,"file":"hcg-doubling-C7bmuaU3.js","sources":["../../src/components/hcg-doubling/hcg.ts","../../src/components/hcg-doubling/hcg-doubling.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* Serum β-hCG doubling time — early-pregnancy viability. */\n/* */\n/* Pure, framework-free, unit-testable. From two timed β-hCG values it */\n/* derives the doubling time, the rise over the actual interval, and the */\n/* rise normalised to 48 hours (the standard comparison window). A */\n/* normal early intrauterine pregnancy rises at least ~35% over 48h */\n/* (Barnhart 2004); a plateau or fall is abnormal. */\n/* */\n/* Barnhart KT et al. \"Symptomatic patients with an early viable */\n/* intrauterine pregnancy.\" Obstet Gynecol 2004;104:50-5. */\n/* ------------------------------------------------------------------ */\n\nconst MS_PER_HOUR = 1000 * 60 * 60;\n/** Conservative minimal 48-hour rise for a potentially viable IUP, %. */\nexport const MINIMAL_48H_RISE_PERCENT = 35;\n\nexport interface HcgInput {\n /** First β-hCG value, mIU/mL. */\n hcg1: number;\n /** When the first sample was drawn. */\n date1: Date;\n /** Second β-hCG value, mIU/mL. */\n hcg2: number;\n /** When the second sample was drawn (must be after `date1`). */\n date2: Date;\n}\n\nexport type HcgTrend = 'rising-normal' | 'rising-slow' | 'plateau-falling';\n\nexport interface HcgResult {\n /** Hours between the two samples. */\n intervalHours: number;\n /** hcg2 / hcg1. */\n ratio: number;\n /** Rise over the actual interval, %. */\n percentRise: number;\n /** Rise normalised to a 48-hour window, % (comparable to the benchmark). */\n twoDayRisePercent: number;\n /** Doubling time in hours, or `null` when not rising. */\n doublingTimeHours: number | null;\n /** Trend band against the Barnhart minimal-rise benchmark. */\n trend: HcgTrend;\n}\n\n/**\n * Analyse a two-point β-hCG series. Returns `null` unless both values are\n * positive and the second sample is strictly after the first.\n */\nexport function analyseHcg(input: HcgInput): HcgResult | null {\n const { hcg1, hcg2, date1, date2 } = input;\n if (!(hcg1 > 0) || !(hcg2 > 0)) return null;\n\n const intervalHours = (date2.getTime() - date1.getTime()) / MS_PER_HOUR;\n if (!(intervalHours > 0)) return null;\n\n const ratio = hcg2 / hcg1;\n const percentRise = (ratio - 1) * 100;\n const twoDayRisePercent = (ratio ** (48 / intervalHours) - 1) * 100;\n const doublingTimeHours =\n ratio > 1 ? (intervalHours * Math.LN2) / Math.log(ratio) : null;\n\n const trend: HcgTrend =\n ratio <= 1\n ? 'plateau-falling'\n : twoDayRisePercent >= MINIMAL_48H_RISE_PERCENT\n ? 'rising-normal'\n : 'rising-slow';\n\n return {\n intervalHours,\n ratio,\n percentRise,\n twoDayRisePercent,\n doublingTimeHours,\n trend,\n };\n}\n","/* ------------------------------------------------------------------ */\n/* HcgDoubling — serum β-hCG doubling time from two timed values. */\n/* */\n/* Maths in `./hcg` (pure, tested). Two timepoints (value + datetime) */\n/* → doubling time, 48-hour-normalised rise and a viability trend band. */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { FormField } from '../form-field';\nimport { NumberInput } from '../number-input';\nimport { DateTimePicker } from '../date-time-picker';\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 { type HcgResult, type HcgTrend, analyseHcg } from './hcg';\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\nconst TREND_BADGE: Record<HcgTrend, 'success' | 'warning' | 'error'> = {\n 'rising-normal': 'success',\n 'rising-slow': 'warning',\n 'plateau-falling': 'error',\n};\nconst TREND_TOKEN: Record<HcgTrend, string> = {\n 'rising-normal': '--success',\n 'rising-slow': '--warning-readable',\n 'plateau-falling': '--destructive',\n};\n\nexport interface HcgDoublingProps extends VariantProps<typeof rootVariants> {\n /** Pre-fill the first sample's date/time (e.g. from the lab record). */\n defaultDate1?: Date;\n /** Pre-fill the second sample's date/time. */\n defaultDate2?: Date;\n /** Fires whenever both timed values resolve (and `null` when not). */\n onResultChange?: (result: HcgResult | null) => void;\n /** When provided, shows the result-action buttons that emit / copy the result. */\n onInsert?: (payload: InsertPayload) => void;\n /** Which verb the result button performs. Defaults to `'insert'`. */\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 /** Brand wordmark printed in the inserted/copied result-card footer. */\n insertBrand?: string | false;\n /** Opaque instance id, emitted as `data-component-id`. */\n id?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\nexport const HcgDoubling = forwardRef<HTMLDivElement, HcgDoublingProps>(\n (\n {\n defaultDate1,\n defaultDate2,\n onResultChange,\n onInsert,\n insertVariant = 'insert',\n onCopy,\n onError,\n insertBrand,\n id,\n width,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n const [hcg1, setHcg1] = useState<number | null>(null);\n const [date1, setDate1] = useState<Date | undefined>(defaultDate1);\n const [hcg2, setHcg2] = useState<number | null>(null);\n const [date2, setDate2] = useState<Date | undefined>(defaultDate2);\n\n const today = useMemo(() => new Date(), []);\n\n const result = useMemo(() => {\n if (hcg1 === null || hcg2 === null || !date1 || !date2) return null;\n return analyseHcg({ hcg1, date1, hcg2, date2 });\n }, [hcg1, date1, hcg2, date2]);\n\n useEffect(() => {\n onResultChange?.(result);\n }, [result, onResultChange]);\n\n const num = useMemo(\n () => new Intl.NumberFormat(i18n.language, { maximumFractionDigits: 0 }),\n [i18n.language],\n );\n\n const doublingText = (r: HcgResult): string =>\n r.doublingTimeHours === null\n ? '—'\n : t('hcgDoubling.hoursValue', {\n hours: num.format(r.doublingTimeHours),\n });\n const riseText = (r: HcgResult): string =>\n t('hcgDoubling.percentValue', { value: num.format(r.twoDayRisePercent) });\n\n return (\n <div\n ref={ref}\n data-component=\"hcg-doubling\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n <FormField\n label={`${t('hcgDoubling.hcg1')} (${t('hcgDoubling.units')})`}\n >\n <NumberInput\n mode=\"decimal\"\n min={0}\n value={hcg1}\n onChange={setHcg1}\n />\n </FormField>\n <FormField label={t('hcgDoubling.date1')}>\n <DateTimePicker value={date1} onChange={setDate1} maxDate={today} />\n </FormField>\n <FormField\n label={`${t('hcgDoubling.hcg2')} (${t('hcgDoubling.units')})`}\n >\n <NumberInput\n mode=\"decimal\"\n min={0}\n value={hcg2}\n onChange={setHcg2}\n />\n </FormField>\n <FormField label={t('hcgDoubling.date2')}>\n <DateTimePicker value={date2} onChange={setDate2} maxDate={today} />\n </FormField>\n </div>\n\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {result\n ? `${t('hcgDoubling.doublingLabel')}: ${doublingText(result)}. ${t(\n `hcgDoubling.trend.${result.trend}`,\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('hcgDoubling.doublingLabel')}\n </dt>\n <dd className=\"type-metric ds:text-foreground\">\n {doublingText(result)}\n </dd>\n </div>\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('hcgDoubling.riseLabel')}\n </dt>\n <dd className=\"type-body ds:text-foreground\">\n {riseText(result)}\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:items-end ds:gap-[var(--spacing-xs)] ds:text-end\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('hcgDoubling.trendLabel')}\n </dt>\n <dd>\n <Badge variant={TREND_BADGE[result.trend]} size=\"lg\">\n {t(`hcgDoubling.trend.${result.trend}`)}\n </Badge>\n </dd>\n </div>\n </dl>\n <p className=\"type-body-sm ds:text-muted-foreground\">\n {t('hcgDoubling.disclaimer')}\n </p>\n {insertVariant === 'copy' || onInsert ? (\n <InsertButton\n onInsert={onInsert}\n variant={insertVariant}\n onCopy={onCopy}\n onError={onError}\n card={{\n title: t('insert.title.hcg'),\n icon: 'activity',\n highlight: t(`hcgDoubling.trend.${result.trend}`),\n highlightToken: TREND_TOKEN[result.trend],\n brand: insertBrand,\n fields: [\n {\n icon: 'clock',\n label: t('hcgDoubling.doublingLabel'),\n value: doublingText(result),\n },\n {\n icon: 'trending-up',\n label: t('hcgDoubling.riseLabel'),\n value: riseText(result),\n },\n {\n icon: 'tag',\n label: t('hcgDoubling.trendLabel'),\n value: t(`hcgDoubling.trend.${result.trend}`),\n },\n ],\n }}\n />\n ) : null}\n </Card.Body>\n </Card>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('hcgDoubling.empty')}\n </p>\n )}\n </div>\n );\n },\n);\n\nHcgDoubling.displayName = 'HcgDoubling';\n"],"names":["MS_PER_HOUR","MINIMAL_48H_RISE_PERCENT","analyseHcg","input","hcg1","hcg2","date1","date2","intervalHours","ratio","percentRise","twoDayRisePercent","doublingTimeHours","trend","rootVariants","cva","TREND_BADGE","TREND_TOKEN","HcgDoubling","forwardRef","defaultDate1","defaultDate2","onResultChange","onInsert","insertVariant","onCopy","onError","insertBrand","id","width","className","ref","t","i18n","useTranslation","setHcg1","useState","setDate1","setHcg2","setDate2","today","useMemo","result","useEffect","num","doublingText","r","riseText","jsxs","jsx","FormField","NumberInput","DateTimePicker","Card","Badge","InsertButton"],"mappings":"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"}
@@ -1,28 +1,42 @@
1
- import { jsx as e, jsxs as l } from "react/jsx-runtime";
2
- import { forwardRef as A, useRef as p, useImperativeHandle as C, useCallback as x, useMemo as I } from "react";
3
- import { c as N } from "./index-D2ZczOXr.js";
4
- import { useTranslation as E } from "react-i18next";
1
+ import { jsx as e, jsxs as d } from "react/jsx-runtime";
2
+ import { forwardRef as A, useRef as p, useImperativeHandle as x, useCallback as C, useMemo as I } from "react";
3
+ import { c as E } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as M } from "react-i18next";
5
5
  import { I as o } from "./icon-button-LqoiKcUN.js";
6
- import { I as M } from "./icon-button-group-C48khLE0.js";
7
- import { D as r } from "./dropdown-menu-DwwPovMZ.js";
8
- import { S as R } from "./switch-BJ6HD3Mn.js";
9
- import { c as v, a as H, L as _ } from "./locale-picker-C9JmBht3.js";
10
- import { u as O } from "./use-locale-BkCIHujH.js";
11
- import { u as P } from "./use-theme-CAuo6EYT.js";
12
- import { u as j } from "./registry-nPAVE19X.js";
6
+ import { I as N } from "./icon-button-group-C48khLE0.js";
7
+ import { D as r } from "./dropdown-menu-qrxjymfw.js";
8
+ import { S as j } from "./switch-OILsBLWo.js";
9
+ import { c as y, a as H, L as R } from "./locale-picker-ChYYSX2N.js";
10
+ import { u as P } from "./use-locale-BkCIHujH.js";
11
+ import { u as _ } from "./use-theme-CAuo6EYT.js";
12
+ import { u as O } from "./registry-DvAUVLHh.js";
13
13
  import { S as K } from "./settings-ca2Yi9R8.js";
14
- import { S as D, M as z } from "./sun-BuXE0xUS.js";
15
- import { M as V } from "./monitor-D-SFdbrU.js";
16
- const B = {
14
+ import { S as D, M as q } from "./sun-BuXE0xUS.js";
15
+ import { M as z } from "./monitor-D-SFdbrU.js";
16
+ const V = {
17
17
  id: "header-settings",
18
- capabilities: ["view_change"],
18
+ // Each setter persists a single preference value (locale / theme /
19
+ // accessibility) — `set_value` semantics, not an ephemeral view switch.
20
+ capabilities: ["set_value"],
19
21
  state: {},
20
22
  actions: {
21
23
  set_locale: {
22
24
  safety: "write",
23
25
  argsType: "{ locale: string }",
26
+ argsSchema: {
27
+ type: "object",
28
+ properties: {
29
+ locale: {
30
+ type: "string",
31
+ description: 'IETF language tag (e.g. "en", "it", "ar"). Unknown tags are silently dropped.'
32
+ }
33
+ },
34
+ required: ["locale"]
35
+ },
36
+ idempotent: !0,
24
37
  descriptionKey: "ui.agent.headerSettings.actions.setLocale",
25
38
  description: "Switch the active locale to the given IETF tag.",
39
+ examples: [{ args: { locale: "it" }, note: "Switch to Italian." }],
26
40
  invoke: (t, i) => {
27
41
  t.setLocale(i.locale);
28
42
  }
@@ -30,8 +44,17 @@ const B = {
30
44
  set_theme: {
31
45
  safety: "write",
32
46
  argsType: '{ theme: "light" | "dark" | "system" }',
47
+ argsSchema: {
48
+ type: "object",
49
+ properties: { theme: { enum: ["light", "dark", "system"] } },
50
+ required: ["theme"]
51
+ },
52
+ idempotent: !0,
33
53
  descriptionKey: "ui.agent.headerSettings.actions.setTheme",
34
54
  description: "Switch the theme preference.",
55
+ examples: [
56
+ { args: { theme: "dark" }, note: "Switch to the dark theme." }
57
+ ],
35
58
  invoke: (t, i) => {
36
59
  t.setTheme(i.theme);
37
60
  }
@@ -39,8 +62,20 @@ const B = {
39
62
  set_accessibility: {
40
63
  safety: "write",
41
64
  argsType: '{ accessibility: "default" | "accessible" }',
65
+ argsSchema: {
66
+ type: "object",
67
+ properties: { accessibility: { enum: ["default", "accessible"] } },
68
+ required: ["accessibility"]
69
+ },
70
+ idempotent: !0,
42
71
  descriptionKey: "ui.agent.headerSettings.actions.setAccessibility",
43
72
  description: "Switch the accessibility preference.",
73
+ examples: [
74
+ {
75
+ args: { accessibility: "accessible" },
76
+ note: "Enable the AAA-accessible profile."
77
+ }
78
+ ],
44
79
  invoke: (t, i) => {
45
80
  t.setAccessibility(i.accessibility);
46
81
  }
@@ -51,22 +86,27 @@ const B = {
51
86
  attr: "data-component",
52
87
  value: "header-settings",
53
88
  description: "Marks the HeaderSettings wrapper."
89
+ },
90
+ instanceId: {
91
+ attr: "data-component-id",
92
+ sourceProp: "id",
93
+ description: "Sourced from the id prop (forwarded via HTMLAttributes)."
54
94
  }
55
95
  }
56
96
  };
57
- function G(t, i) {
97
+ function B(t, i) {
58
98
  if (!(typeof window > "u"))
59
99
  try {
60
100
  window.localStorage.setItem(t, i);
61
101
  } catch {
62
102
  }
63
103
  }
64
- function W(t) {
104
+ function F(t) {
65
105
  if (typeof document > "u") return;
66
106
  const i = document.documentElement;
67
- i.lang = t, i.dir = v[t].dir;
107
+ i.lang = t, i.dir = y[t].dir;
68
108
  }
69
- const F = N("ds:inline-flex ds:items-center", {
109
+ const G = E("ds:inline-flex ds:items-center", {
70
110
  variants: {
71
111
  align: {
72
112
  start: "",
@@ -78,37 +118,37 @@ const F = N("ds:inline-flex ds:items-center", {
78
118
  "ds:w-[20rem] ds:p-[var(--spacing-xs)]",
79
119
  "ds:rounded-[var(--radius-md)] ds:border ds:border-border",
80
120
  "ds:bg-background ds:text-foreground ds:shadow-[var(--shadow-lg)]"
81
- ].join(" "), Y = A(
121
+ ].join(" "), W = A(
82
122
  (t, i) => {
83
123
  const {
84
124
  align: g = "end",
85
- size: y = "md",
125
+ size: v = "md",
86
126
  disabled: S = !1,
87
127
  className: w,
88
128
  id: m,
89
- ...L
90
- } = t, { t: s } = E(), n = P(), { setLocale: h } = O(), u = p(null);
91
- C(i, () => u.current, []);
92
- const f = x(
129
+ ...k
130
+ } = t, { t: s } = M(), n = _(), { setLocale: h } = P(), u = p(null);
131
+ x(i, () => u.current, []);
132
+ const b = C(
93
133
  (a) => {
94
- h(a), W(a), G(_, a);
134
+ h(a), F(a), B(R, a);
95
135
  },
96
136
  [h]
97
- ), b = p(f);
98
- b.current = f;
137
+ ), f = p(b);
138
+ f.current = b;
99
139
  const c = p(n);
100
140
  c.current = n;
101
- const k = I(
141
+ const L = I(
102
142
  () => ({
103
143
  setLocale: (a) => {
104
- Object.prototype.hasOwnProperty.call(v, a) && b.current(a);
144
+ Object.prototype.hasOwnProperty.call(y, a) && f.current(a);
105
145
  },
106
146
  setTheme: (a) => c.current.setTheme(a),
107
147
  setAccessibility: (a) => c.current.setAccessibility(a)
108
148
  }),
109
149
  []
110
150
  );
111
- j(B, k, m);
151
+ O(V, L, m);
112
152
  const T = n.accessibility === "accessible";
113
153
  return /* @__PURE__ */ e(
114
154
  "div",
@@ -116,27 +156,27 @@ const F = N("ds:inline-flex ds:items-center", {
116
156
  ref: u,
117
157
  "data-component": "header-settings",
118
158
  "data-component-id": m,
119
- className: F({ align: g, className: w }),
120
- ...L,
121
- children: /* @__PURE__ */ l(r.Root, { children: [
159
+ className: G({ align: g, className: w }),
160
+ ...k,
161
+ children: /* @__PURE__ */ d(r.Root, { children: [
122
162
  /* @__PURE__ */ e(r.Trigger, { asChild: !0, children: /* @__PURE__ */ e(
123
163
  o,
124
164
  {
125
- size: y,
165
+ size: v,
126
166
  disabled: S,
127
167
  icon: /* @__PURE__ */ e(K, { "aria-hidden": !0 }),
128
168
  "aria-label": s("navigation.headerSettings.trigger")
129
169
  }
130
170
  ) }),
131
- /* @__PURE__ */ e(r.Portal, { children: /* @__PURE__ */ l(
171
+ /* @__PURE__ */ e(r.Portal, { children: /* @__PURE__ */ d(
132
172
  r.Content,
133
173
  {
134
174
  align: g,
135
175
  sideOffset: 8,
136
176
  className: U,
137
177
  onKeyDownCapture: (a) => {
138
- const d = a.target;
139
- (d == null ? void 0 : d.tagName) === "INPUT" && // Always allow Escape so the menu can close.
178
+ const l = a.target;
179
+ (l == null ? void 0 : l.tagName) === "INPUT" && // Always allow Escape so the menu can close.
140
180
  a.key !== "Escape" && a.stopPropagation();
141
181
  },
142
182
  children: [
@@ -167,8 +207,8 @@ const F = N("ds:inline-flex ds:items-center", {
167
207
  role: "group",
168
208
  "aria-label": s("navigation.headerSettings.appearance.label"),
169
209
  className: "ds:px-[var(--spacing-sm)] ds:py-[var(--spacing-xs)]",
170
- children: /* @__PURE__ */ l(
171
- M,
210
+ children: /* @__PURE__ */ d(
211
+ N,
172
212
  {
173
213
  role: "radiogroup",
174
214
  mode: "toggle-single",
@@ -188,7 +228,7 @@ const F = N("ds:inline-flex ds:items-center", {
188
228
  /* @__PURE__ */ e(
189
229
  o,
190
230
  {
191
- icon: /* @__PURE__ */ e(z, { "aria-hidden": !0 }),
231
+ icon: /* @__PURE__ */ e(q, { "aria-hidden": !0 }),
192
232
  "aria-label": s("navigation.headerSettings.appearance.dark"),
193
233
  value: "dark"
194
234
  }
@@ -196,7 +236,7 @@ const F = N("ds:inline-flex ds:items-center", {
196
236
  /* @__PURE__ */ e(
197
237
  o,
198
238
  {
199
- icon: /* @__PURE__ */ e(V, { "aria-hidden": !0 }),
239
+ icon: /* @__PURE__ */ e(z, { "aria-hidden": !0 }),
200
240
  "aria-label": s(
201
241
  "navigation.headerSettings.appearance.system"
202
242
  ),
@@ -218,7 +258,7 @@ const F = N("ds:inline-flex ds:items-center", {
218
258
  ),
219
259
  className: "ds:px-[var(--spacing-sm)] ds:py-[var(--spacing-sm)]",
220
260
  children: /* @__PURE__ */ e(
221
- R,
261
+ j,
222
262
  {
223
263
  label: s("navigation.headerSettings.appearance.accessible"),
224
264
  labelSide: "start",
@@ -237,8 +277,8 @@ const F = N("ds:inline-flex ds:items-center", {
237
277
  );
238
278
  }
239
279
  );
240
- Y.displayName = "HeaderSettings";
280
+ W.displayName = "HeaderSettings";
241
281
  export {
242
- Y as H
282
+ W as H
243
283
  };
244
- //# sourceMappingURL=header-settings-CNOqIhoW.js.map
284
+ //# sourceMappingURL=header-settings-DJqoAl5m.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-settings-DJqoAl5m.js","sources":["../../src/components/header-settings/header-settings.agent.ts","../../src/components/header-settings/header-settings.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — HeaderSettings. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { HeaderSettingsHandle } from './header-settings';\n\nexport const headerSettingsAgent: AgentAdapter<HeaderSettingsHandle> = {\n id: 'header-settings',\n // Each setter persists a single preference value (locale / theme /\n // accessibility) — `set_value` semantics, not an ephemeral view switch.\n capabilities: ['set_value'],\n state: {},\n actions: {\n set_locale: {\n safety: 'write',\n argsType: '{ locale: string }',\n argsSchema: {\n type: 'object',\n properties: {\n locale: {\n type: 'string',\n description:\n 'IETF language tag (e.g. \"en\", \"it\", \"ar\"). Unknown tags are silently dropped.',\n },\n },\n required: ['locale'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.headerSettings.actions.setLocale',\n description: 'Switch the active locale to the given IETF tag.',\n examples: [{ args: { locale: 'it' }, note: 'Switch to Italian.' }],\n invoke: (handle, args: { locale: string }) => {\n // Validation happens inside the handle so the agent surface\n // accepts arbitrary tags and silently drops unknown ones.\n handle.setLocale(args.locale);\n },\n },\n set_theme: {\n safety: 'write',\n argsType: '{ theme: \"light\" | \"dark\" | \"system\" }',\n argsSchema: {\n type: 'object',\n properties: { theme: { enum: ['light', 'dark', 'system'] } },\n required: ['theme'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.headerSettings.actions.setTheme',\n description: 'Switch the theme preference.',\n examples: [\n { args: { theme: 'dark' }, note: 'Switch to the dark theme.' },\n ],\n invoke: (handle, args: { theme: 'light' | 'dark' | 'system' }) => {\n handle.setTheme(args.theme);\n },\n },\n set_accessibility: {\n safety: 'write',\n argsType: '{ accessibility: \"default\" | \"accessible\" }',\n argsSchema: {\n type: 'object',\n properties: { accessibility: { enum: ['default', 'accessible'] } },\n required: ['accessibility'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.headerSettings.actions.setAccessibility',\n description: 'Switch the accessibility preference.',\n examples: [\n {\n args: { accessibility: 'accessible' },\n note: 'Enable the AAA-accessible profile.',\n },\n ],\n invoke: (handle, args: { accessibility: 'default' | 'accessible' }) => {\n handle.setAccessibility(args.accessibility);\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'header-settings',\n description: 'Marks the HeaderSettings wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop (forwarded via HTMLAttributes).',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useRef,\n type HTMLAttributes,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Monitor, Moon, Settings, Sun } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\nimport { IconButtonGroup } from '../icon-button-group/icon-button-group';\nimport { DropdownMenu } from '../dropdown-menu/dropdown-menu';\nimport { Switch } from '../switch/switch';\nimport {\n LocalePicker,\n LOCALE_STORAGE_KEY,\n} from '../locale-picker/locale-picker';\nimport {\n useTheme,\n type AccessibilityPreference,\n type ThemePreference,\n} from '../../hooks';\nimport { useLocale } from '../../hooks/use-locale';\nimport { LOCALE_META, type Locale } from '../../i18n/locale-meta';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { headerSettingsAgent } from './header-settings.agent';\n\nfunction safeWriteStorage(key: string, value: string): void {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, value);\n } catch {\n /* Storage can throw in private mode — silent-fail per use-theme.ts. */\n }\n}\n\nfunction applyDocumentAttrs(locale: Locale): void {\n if (typeof document === 'undefined') return;\n const root = document.documentElement;\n root.lang = locale;\n root.dir = LOCALE_META[locale].dir;\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst wrapperVariants = cva('ds:inline-flex ds:items-center', {\n variants: {\n align: {\n start: '',\n end: '',\n },\n },\n defaultVariants: { align: 'end' },\n});\n\nconst dropdownContentClasses = [\n 'ds:w-[20rem] ds:p-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-border',\n 'ds:bg-background ds:text-foreground ds:shadow-[var(--shadow-lg)]',\n].join(' ');\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport interface HeaderSettingsProps\n extends\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>,\n VariantProps<typeof wrapperVariants> {\n /** Anchor side for the dropdown. Defaults to `end` (matches LTR + RTL). */\n align?: 'start' | 'end';\n /**\n * Size of the cog trigger only. Forwards to the underlying\n * `IconButton`. Defaults to `md` to preserve the existing visual.\n * Use `sm` when composing alongside other `<Button size=\"sm\">`\n * actions in a header row — keeps the visual rhythm consistent.\n *\n * The internal dropdown chrome (Appearance toggle group, locale\n * picker, accessibility switch) stays at kit defaults regardless\n * — this prop only sizes the trigger.\n */\n size?: 'sm' | 'md' | 'lg';\n /** Disable the trigger entirely. */\n disabled?: boolean;\n}\n\nexport interface HeaderSettingsHandle {\n /**\n * Switch the active locale. Widened to `string` (vs. `Locale`) so\n * agent surfaces with untyped inputs can call through without\n * extra casting — invalid tags no-op silently.\n */\n setLocale: (next: string) => void;\n setTheme: (next: ThemePreference) => void;\n setAccessibility: (next: AccessibilityPreference) => void;\n}\n\n/* ------------------------------------------------------------------ */\n/* HeaderSettings */\n/* */\n/* Single button → single DropdownMenu surface. Inside the menu, the */\n/* \"Language\" section embeds `LocalePicker.SearchList` (the kit's */\n/* searchable list without its own trigger / popover) and the */\n/* \"Appearance\" section mirrors `ThemeToggle`'s menu-variant internals */\n/* using `DropdownMenu.RadioGroup` + `CheckboxItem`. Both sections */\n/* read/write the same hooks (`useLocale`, `useTheme`) that the */\n/* standalone components use, so there's no state duplication. */\n/* ------------------------------------------------------------------ */\n\nexport const HeaderSettings = forwardRef<HTMLDivElement, HeaderSettingsProps>(\n (props, ref) => {\n const {\n align = 'end',\n size = 'md',\n disabled = false,\n className,\n id,\n ...rest\n } = props as HeaderSettingsProps & { id?: string };\n\n const { t } = useTranslation();\n const theme = useTheme();\n const { setLocale: setLocaleI18n } = useLocale();\n\n const forwardedRef = useRef<HTMLDivElement | null>(null);\n useImperativeHandle(ref, () => forwardedRef.current as HTMLDivElement, []);\n\n // Same side-effect chain as LocalePicker's internal helper:\n // i18next.changeLanguage → document.dir/lang → persist.\n // Inlined here (rather than exported from locale-picker) because\n // it's three small calls; the LocalePicker.SearchList component\n // continues to own its own copy for inline use, and both apply\n // the same persistence key (`alfadocs-ui.locale`) so a write from\n // either path is visible to the other on next mount.\n const setLocaleWithPersistence = useCallback(\n (next: Locale) => {\n void setLocaleI18n(next);\n applyDocumentAttrs(next);\n safeWriteStorage(LOCALE_STORAGE_KEY, next);\n },\n [setLocaleI18n],\n );\n const setLocaleRef = useRef(setLocaleWithPersistence);\n setLocaleRef.current = setLocaleWithPersistence;\n\n const themeRef = useRef(theme);\n themeRef.current = theme;\n const agentHandle = useMemo<HeaderSettingsHandle>(\n () => ({\n setLocale: (next: string) => {\n // Mirrors LocalePicker's gating — silently drop unknown tags\n // rather than crash mid-cascade. `LOCALES_WITH_BUNDLES` is\n // re-imported via the LOCALE_META keys so this file doesn't\n // need the resources module on the build-agent-catalog path.\n if (Object.prototype.hasOwnProperty.call(LOCALE_META, next)) {\n setLocaleRef.current(next as Locale);\n }\n },\n setTheme: (next) => themeRef.current.setTheme(next),\n setAccessibility: (next) => themeRef.current.setAccessibility(next),\n }),\n [],\n );\n useAgentRegistration(headerSettingsAgent, agentHandle, id);\n\n const accessibleChecked = theme.accessibility === 'accessible';\n\n return (\n <div\n ref={forwardedRef}\n data-component=\"header-settings\"\n data-component-id={id}\n className={wrapperVariants({ align, className })}\n {...rest}\n >\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <IconButton\n size={size}\n disabled={disabled}\n icon={<Settings aria-hidden />}\n aria-label={t('navigation.headerSettings.trigger')}\n />\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n align={align}\n sideOffset={8}\n className={dropdownContentClasses}\n // Search input inside the menu owns its own keyboard\n // capture (cmdk). Stop Radix Menu's typeahead from\n // intercepting letters typed into the search field —\n // `onKeyDownCapture` runs before the menu's listener.\n onKeyDownCapture={(event) => {\n const target = event.target as HTMLElement | null;\n if (\n target?.tagName === 'INPUT' &&\n // Always allow Escape so the menu can close.\n event.key !== 'Escape'\n ) {\n event.stopPropagation();\n }\n }}\n >\n <DropdownMenu.Label>\n {t('navigation.headerSettings.language.label')}\n </DropdownMenu.Label>\n {/* Render the kit's compact LocalePicker (its own\n Popover trigger + content). Clicking the trigger\n opens a nested popover containing the full\n searchable list — the HeaderSettings menu stays\n open behind it so the user can return to Appearance\n / Accessibility without re-opening.\n\n Wrapped in `role=\"group\"` so the menu's\n `aria-required-children` rule sees a permitted child\n role (the LocalePicker compact button alone would\n appear as a raw button child of `role=\"menu\"`). */}\n <div\n role=\"group\"\n aria-label={t('navigation.headerSettings.language.label')}\n className={[\n 'ds:px-[var(--spacing-sm)] ds:py-[var(--spacing-xs)]',\n // Stretch the compact LocalePicker to the full menu\n // width so it reads as a single row affordance (not\n // a centred pill). The picker's root is\n // inline-flex; the `*:` child selector + `flex-1`\n // gives it `flex: 1 1 0%` once it's a child of the\n // flex container we make this div into.\n 'ds:flex ds:[&>*]:flex-1',\n ].join(' ')}\n >\n {/* `popoverSide=\"end\"` opens the nested search popover\n as a side-flyout (inline-end, RTL-aware) rather\n than below the compact row — without this the\n nested popover stacks under the trigger inside the\n outer DropdownMenu and the two surfaces visually\n merge. Radix Popover auto-flips to the opposite\n side if there's no viewport room. */}\n <LocalePicker variant=\"compact\" popoverSide=\"end\" />\n </div>\n\n <DropdownMenu.Separator />\n\n <DropdownMenu.Label>\n {t('navigation.headerSettings.appearance.label')}\n </DropdownMenu.Label>\n {/* Horizontal segmented toggle (mirrors ThemeToggle's\n `split` variant) instead of stacked radio rows — uses\n fewer rows of menu real estate and reads as a single\n control. `role=\"radiogroup\"` keeps the screen-reader\n semantics correct, and the group is wrapped in\n `role=\"group\"` for the same reason the language\n search-list wrapper is — the menu's\n aria-required-children doesn't permit raw IconButtons\n as direct menu descendants. */}\n <div\n role=\"group\"\n aria-label={t('navigation.headerSettings.appearance.label')}\n className=\"ds:px-[var(--spacing-sm)] ds:py-[var(--spacing-xs)]\"\n >\n <IconButtonGroup\n role=\"radiogroup\"\n mode=\"toggle-single\"\n size=\"sm\"\n aria-label={t('navigation.headerSettings.appearance.label')}\n value={theme.theme}\n onValueChange={(next) =>\n theme.setTheme(next as ThemePreference)\n }\n >\n <IconButton\n icon={<Sun aria-hidden />}\n aria-label={t('navigation.headerSettings.appearance.light')}\n value=\"light\"\n />\n <IconButton\n icon={<Moon aria-hidden />}\n aria-label={t('navigation.headerSettings.appearance.dark')}\n value=\"dark\"\n />\n <IconButton\n icon={<Monitor aria-hidden />}\n aria-label={t(\n 'navigation.headerSettings.appearance.system',\n )}\n value=\"system\"\n />\n </IconButtonGroup>\n </div>\n\n <DropdownMenu.Separator />\n\n {/* Accessible-mode toggle uses the kit's Switch primitive\n for a clearer visual affordance than a checkbox tick.\n Rendered inside a `presentation` row (not a\n DropdownMenu.CheckboxItem) — the Switch is focusable\n via Tab while the menu is open, so keyboard users\n still reach it; arrow keys keep moving between the\n three theme radios above without falling into the\n switch's roving collection.\n\n When the switch flips, `setAccessibility` writes\n through useTheme (the same store the standalone\n ThemeToggle uses) so document.documentElement gets\n the `theme-accessible` class instantly — including\n swapping `--font-sans` to Lexend for Latin scripts\n (see src/tokens/index.css). */}\n {/* `role=\"group\"` so the menu's `aria-required-children`\n (which only permits menuitem* / group / separator /\n menu inside `role=\"menu\"`) is satisfied — the Switch's\n `role=\"switch\"` would be a forbidden direct child of\n the menu. `aria-label` names the group so SR users\n hear \"Accessibility toggle, group\". */}\n <div\n role=\"group\"\n aria-label={t(\n 'navigation.headerSettings.appearance.accessible',\n )}\n className=\"ds:px-[var(--spacing-sm)] ds:py-[var(--spacing-sm)]\"\n >\n <Switch\n label={t('navigation.headerSettings.appearance.accessible')}\n labelSide=\"start\"\n size=\"sm\"\n checked={accessibleChecked}\n onCheckedChange={(next) =>\n theme.setAccessibility(next ? 'accessible' : 'default')\n }\n />\n </div>\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n </div>\n );\n },\n);\n\nHeaderSettings.displayName = 'HeaderSettings';\n"],"names":["headerSettingsAgent","handle","args","safeWriteStorage","key","value","applyDocumentAttrs","locale","root","LOCALE_META","wrapperVariants","cva","dropdownContentClasses","HeaderSettings","forwardRef","props","ref","align","size","disabled","className","id","rest","t","useTranslation","theme","useTheme","setLocaleI18n","useLocale","forwardedRef","useRef","useImperativeHandle","setLocaleWithPersistence","useCallback","next","LOCALE_STORAGE_KEY","setLocaleRef","themeRef","agentHandle","useMemo","useAgentRegistration","accessibleChecked","jsx","jsxs","DropdownMenu","IconButton","Settings","event","target","LocalePicker","IconButtonGroup","Sun","Moon","Monitor","Switch"],"mappings":"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"}
@@ -1523,7 +1523,7 @@ export {
1523
1523
  It as P,
1524
1524
  Fn as a,
1525
1525
  vt as b,
1526
- q as c,
1527
- H as u
1526
+ H as c,
1527
+ q as u
1528
1528
  };
1529
- //# sourceMappingURL=index.modern-D2LGACWg.js.map
1529
+ //# sourceMappingURL=index.modern-Zta-A4Jm.js.map