@alfadocs/ui-kit-debug 0.48.0 → 0.50.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 (318) hide show
  1. package/dist/_chunks/{address-autocomplete-CSjMrBvu.js → address-autocomplete-CT-9AOli.js} +2 -2
  2. package/dist/_chunks/{address-autocomplete-CSjMrBvu.js.map → address-autocomplete-CT-9AOli.js.map} +1 -1
  3. package/dist/_chunks/{ai-consent-banner-DO5ingMq.js → ai-consent-banner-F2md5JD3.js} +2 -2
  4. package/dist/_chunks/{ai-consent-banner-DO5ingMq.js.map → ai-consent-banner-F2md5JD3.js.map} +1 -1
  5. package/dist/_chunks/{ai-tools-rail-CxYG04cw.js → ai-tools-rail-CYLWrRmm.js} +6 -6
  6. package/dist/_chunks/ai-tools-rail-CYLWrRmm.js.map +1 -0
  7. package/dist/_chunks/{alert-ywPR59NE.js → alert-CUTxnym2.js} +56 -35
  8. package/dist/_chunks/alert-CUTxnym2.js.map +1 -0
  9. package/dist/_chunks/antenatal-schedule-timeline-CdiqkF05.js +413 -0
  10. package/dist/_chunks/antenatal-schedule-timeline-CdiqkF05.js.map +1 -0
  11. package/dist/_chunks/{ar-DEz65ZJW.js → ar-C68WKG5a.js} +2 -2
  12. package/dist/_chunks/{ar-DEz65ZJW.js.map → ar-C68WKG5a.js.map} +1 -1
  13. package/dist/_chunks/{audio-recorder-DC-v9YFW.js → audio-recorder-DVJXV7_k.js} +2 -2
  14. package/dist/_chunks/{audio-recorder-DC-v9YFW.js.map → audio-recorder-DVJXV7_k.js.map} +1 -1
  15. package/dist/_chunks/bishop-score-2MzAz8NE.js +185 -0
  16. package/dist/_chunks/bishop-score-2MzAz8NE.js.map +1 -0
  17. package/dist/_chunks/{booking-WV2GSru5.js → booking-DljH0JkS.js} +5 -5
  18. package/dist/_chunks/{booking-WV2GSru5.js.map → booking-DljH0JkS.js.map} +1 -1
  19. package/dist/_chunks/circle-arrow-up-CC_85SuH.js +16 -0
  20. package/dist/_chunks/circle-arrow-up-CC_85SuH.js.map +1 -0
  21. package/dist/_chunks/cycle-calculator-oOkj5wlB.js +252 -0
  22. package/dist/_chunks/cycle-calculator-oOkj5wlB.js.map +1 -0
  23. package/dist/_chunks/{date-picker-Bq7xhMA-.js → date-picker-BfHblqwA.js} +2 -2
  24. package/dist/_chunks/{date-picker-Bq7xhMA-.js.map → date-picker-BfHblqwA.js.map} +1 -1
  25. package/dist/_chunks/{date-picker-variants-DLi1Va_e.js → date-picker-variants-CXEAx3O_.js} +22 -22
  26. package/dist/_chunks/{date-picker-variants-DLi1Va_e.js.map → date-picker-variants-CXEAx3O_.js.map} +1 -1
  27. package/dist/_chunks/{date-range-picker-DcXuI9y7.js → date-range-picker-hcAMs1wO.js} +3 -3
  28. package/dist/_chunks/{date-range-picker-DcXuI9y7.js.map → date-range-picker-hcAMs1wO.js.map} +1 -1
  29. package/dist/_chunks/{date-time-picker-RimumeLR.js → date-time-picker-H-3Pwqlb.js} +9 -9
  30. package/dist/_chunks/{date-time-picker-RimumeLR.js.map → date-time-picker-H-3Pwqlb.js.map} +1 -1
  31. package/dist/_chunks/{de-bTBGdjPS.js → de-DK4A9_a8.js} +2 -2
  32. package/dist/_chunks/{de-bTBGdjPS.js.map → de-DK4A9_a8.js.map} +1 -1
  33. package/dist/_chunks/{document-scanner-BqLsGs4Y.js → document-scanner-Cxqvq7GR.js} +2 -2
  34. package/dist/_chunks/{document-scanner-BqLsGs4Y.js.map → document-scanner-Cxqvq7GR.js.map} +1 -1
  35. package/dist/_chunks/due-date-calculator-DykajWzh.js +256 -0
  36. package/dist/_chunks/due-date-calculator-DykajWzh.js.map +1 -0
  37. package/dist/_chunks/{editable-currency-cell-renderer-CLil9B29.js → editable-currency-cell-renderer-Bh48OHRv.js} +2 -2
  38. package/dist/_chunks/{editable-currency-cell-renderer-CLil9B29.js.map → editable-currency-cell-renderer-Bh48OHRv.js.map} +1 -1
  39. package/dist/_chunks/{el-BWG5RXxa.js → el-B29HXhG5.js} +2 -2
  40. package/dist/_chunks/{el-BWG5RXxa.js.map → el-B29HXhG5.js.map} +1 -1
  41. package/dist/_chunks/{es-DfO_G435.js → es-BOwPVwWn.js} +2 -2
  42. package/dist/_chunks/{es-DfO_G435.js.map → es-BOwPVwWn.js.map} +1 -1
  43. package/dist/_chunks/fetal-weight-Da-B4P4k.js +122 -0
  44. package/dist/_chunks/fetal-weight-Da-B4P4k.js.map +1 -0
  45. package/dist/_chunks/{fr-BTn24bs8.js → fr-DoDBtn0T.js} +2 -2
  46. package/dist/_chunks/{fr-BTn24bs8.js.map → fr-DoDBtn0T.js.map} +1 -1
  47. package/dist/_chunks/{freemium-paywall-DzpD63WY.js → freemium-paywall-BWaLWje-.js} +2 -2
  48. package/dist/_chunks/{freemium-paywall-DzpD63WY.js.map → freemium-paywall-BWaLWje-.js.map} +1 -1
  49. package/dist/_chunks/gestational-age-calculator-Bc55hq6t.js +311 -0
  50. package/dist/_chunks/gestational-age-calculator-Bc55hq6t.js.map +1 -0
  51. package/dist/_chunks/hcg-doubling-DAnpbale.js +170 -0
  52. package/dist/_chunks/hcg-doubling-DAnpbale.js.map +1 -0
  53. package/dist/_chunks/{hi-Dj3oYd84.js → hi-DGByrKby.js} +2 -2
  54. package/dist/_chunks/{hi-Dj3oYd84.js.map → hi-DGByrKby.js.map} +1 -1
  55. package/dist/_chunks/{isSameWeek-HfxKk6Lz.js → isSameWeek-B1odL2vR.js} +2 -2
  56. package/dist/_chunks/{isSameWeek-HfxKk6Lz.js.map → isSameWeek-B1odL2vR.js.map} +1 -1
  57. package/dist/_chunks/{it-Y85ofIQQ.js → it-B16rEecm.js} +3 -3
  58. package/dist/_chunks/{it-Y85ofIQQ.js.map → it-B16rEecm.js.map} +1 -1
  59. package/dist/_chunks/{ja-CQ7J6YoA.js → ja-B0viOgft.js} +2 -2
  60. package/dist/_chunks/{ja-CQ7J6YoA.js.map → ja-B0viOgft.js.map} +1 -1
  61. package/dist/_chunks/{marketplace-app-shell-Gfsf78ge.js → marketplace-app-shell-UKSLx9K_.js} +3 -3
  62. package/dist/_chunks/{marketplace-app-shell-Gfsf78ge.js.map → marketplace-app-shell-UKSLx9K_.js.map} +1 -1
  63. package/dist/_chunks/{nl-D9kHCmp3.js → nl-cBxEX2QU.js} +2 -2
  64. package/dist/_chunks/{nl-D9kHCmp3.js.map → nl-cBxEX2QU.js.map} +1 -1
  65. package/dist/_chunks/{patient-search-CocVcGJ3.js → patient-search-BJOmTmDA.js} +2 -2
  66. package/dist/_chunks/{patient-search-CocVcGJ3.js.map → patient-search-BJOmTmDA.js.map} +1 -1
  67. package/dist/_chunks/{patient-shell-CnT4L8gn.js → patient-shell-DUmhXnFq.js} +2 -2
  68. package/dist/_chunks/{patient-shell-CnT4L8gn.js.map → patient-shell-DUmhXnFq.js.map} +1 -1
  69. package/dist/_chunks/{payment-form-BNTx4876.js → payment-form-xmeCkxas.js} +2 -2
  70. package/dist/_chunks/{payment-form-BNTx4876.js.map → payment-form-xmeCkxas.js.map} +1 -1
  71. package/dist/_chunks/{pdf-viewer-G8SU6Azw.js → pdf-viewer-q1D3Uion.js} +2 -2
  72. package/dist/_chunks/{pdf-viewer-G8SU6Azw.js.map → pdf-viewer-q1D3Uion.js.map} +1 -1
  73. package/dist/_chunks/{pl-B3Smqpkr.js → pl-DtS08ioY.js} +3 -3
  74. package/dist/_chunks/{pl-B3Smqpkr.js.map → pl-DtS08ioY.js.map} +1 -1
  75. package/dist/_chunks/{practice-results-BFL_mcDW.js → practice-results-Cq1y8JFD.js} +2 -2
  76. package/dist/_chunks/{practice-results-BFL_mcDW.js.map → practice-results-Cq1y8JFD.js.map} +1 -1
  77. package/dist/_chunks/pregnancy-dating-48Gfvod1.js +421 -0
  78. package/dist/_chunks/pregnancy-dating-48Gfvod1.js.map +1 -0
  79. package/dist/_chunks/pregnancy-weight-gain-CCGrvarh.js +322 -0
  80. package/dist/_chunks/pregnancy-weight-gain-CCGrvarh.js.map +1 -0
  81. package/dist/_chunks/product-hub-panel-CkfZBA3t.js +620 -0
  82. package/dist/_chunks/product-hub-panel-CkfZBA3t.js.map +1 -0
  83. package/dist/_chunks/{pt-D3J-1c_7.js → pt-yFXs1VvH.js} +2 -2
  84. package/dist/_chunks/{pt-D3J-1c_7.js.map → pt-yFXs1VvH.js.map} +1 -1
  85. package/dist/_chunks/{ro-BKAbbEA3.js → ro-DsCzSrzR.js} +2 -2
  86. package/dist/_chunks/{ro-BKAbbEA3.js.map → ro-DsCzSrzR.js.map} +1 -1
  87. package/dist/_chunks/{ru-BeG8f0Ep.js → ru-DgDxL0pc.js} +3 -3
  88. package/dist/_chunks/{ru-BeG8f0Ep.js.map → ru-DgDxL0pc.js.map} +1 -1
  89. package/dist/_chunks/{sidebar-_vJXI9rB.js → sidebar-h78cTNLh.js} +440 -338
  90. package/dist/_chunks/sidebar-h78cTNLh.js.map +1 -0
  91. package/dist/_chunks/{sign-document-DPI2pY9V.js → sign-document-CZkAf28g.js} +2 -2
  92. package/dist/_chunks/{sign-document-DPI2pY9V.js.map → sign-document-CZkAf28g.js.map} +1 -1
  93. package/dist/_chunks/{sq-_hRPaeUy.js → sq-DHlCYN67.js} +2 -2
  94. package/dist/_chunks/{sq-_hRPaeUy.js.map → sq-DHlCYN67.js.map} +1 -1
  95. package/dist/_chunks/subDays-Bs00akhK.js +8 -0
  96. package/dist/_chunks/{subDays-Dv7q9S7u.js.map → subDays-Bs00akhK.js.map} +1 -1
  97. package/dist/_chunks/{sv-g009fSpe.js → sv-O0QaQs_s.js} +2 -2
  98. package/dist/_chunks/{sv-g009fSpe.js.map → sv-O0QaQs_s.js.map} +1 -1
  99. package/dist/_chunks/{tr-OKUOuhMW.js → tr-BmNDRuio.js} +2 -2
  100. package/dist/_chunks/{tr-OKUOuhMW.js.map → tr-BmNDRuio.js.map} +1 -1
  101. package/dist/_chunks/warning-stack-CXfoAT-_.js +220 -0
  102. package/dist/_chunks/warning-stack-CXfoAT-_.js.map +1 -0
  103. package/dist/_chunks/{workflow-map-ZXw-zsZ8.js → workflow-map-DzX_LI4y.js} +2 -2
  104. package/dist/_chunks/{workflow-map-ZXw-zsZ8.js.map → workflow-map-DzX_LI4y.js.map} +1 -1
  105. package/dist/_chunks/{zh-CN-De4zwEhx.js → zh-CN-CgVJZEzz.js} +3 -3
  106. package/dist/_chunks/{zh-CN-De4zwEhx.js.map → zh-CN-CgVJZEzz.js.map} +1 -1
  107. package/dist/agent-catalog.json +44 -1
  108. package/dist/components/_shared/antenatal-schedule-timeline.d.ts +18 -0
  109. package/dist/components/_shared/antenatal-schedule-timeline.d.ts.map +1 -0
  110. package/dist/components/_shared/antenatal-schedule.d.ts +68 -0
  111. package/dist/components/_shared/antenatal-schedule.d.ts.map +1 -0
  112. package/dist/components/_shared/index.d.ts +3 -0
  113. package/dist/components/_shared/index.d.ts.map +1 -1
  114. package/dist/components/_shared/obstetrics.d.ts +138 -0
  115. package/dist/components/_shared/obstetrics.d.ts.map +1 -0
  116. package/dist/components/address-autocomplete/index.js +1 -1
  117. package/dist/components/ai-consent-banner/index.js +1 -1
  118. package/dist/components/ai-tools-rail/ai-tools-rail.d.ts.map +1 -1
  119. package/dist/components/ai-tools-rail/index.js +1 -1
  120. package/dist/components/alert/alert.d.ts +2 -2
  121. package/dist/components/alert/alert.d.ts.map +1 -1
  122. package/dist/components/alert/index.js +1 -1
  123. package/dist/components/audio-recorder/index.js +1 -1
  124. package/dist/components/bishop-score/bishop-score.d.ts +27 -0
  125. package/dist/components/bishop-score/bishop-score.d.ts.map +1 -0
  126. package/dist/components/bishop-score/bishop.d.ts +30 -0
  127. package/dist/components/bishop-score/bishop.d.ts.map +1 -0
  128. package/dist/components/bishop-score/index.d.ts +4 -0
  129. package/dist/components/bishop-score/index.d.ts.map +1 -0
  130. package/dist/components/bishop-score/index.js +10 -0
  131. package/dist/components/bishop-score/index.js.map +1 -0
  132. package/dist/components/booking/index.js +1 -1
  133. package/dist/components/cycle-calculator/cycle-calculator.d.ts.map +1 -1
  134. package/dist/components/cycle-calculator/cycle.d.ts +5 -0
  135. package/dist/components/cycle-calculator/cycle.d.ts.map +1 -1
  136. package/dist/components/cycle-calculator/index.js +1 -1
  137. package/dist/components/data-table/index.js +1 -1
  138. package/dist/components/date-picker/index.js +1 -1
  139. package/dist/components/date-range-picker/index.js +1 -1
  140. package/dist/components/date-time-picker/index.js +1 -1
  141. package/dist/components/document-scanner/index.js +1 -1
  142. package/dist/components/due-date-calculator/due-date-calculator.d.ts +19 -1
  143. package/dist/components/due-date-calculator/due-date-calculator.d.ts.map +1 -1
  144. package/dist/components/due-date-calculator/gestation.d.ts +1 -59
  145. package/dist/components/due-date-calculator/gestation.d.ts.map +1 -1
  146. package/dist/components/due-date-calculator/index.d.ts +1 -1
  147. package/dist/components/due-date-calculator/index.d.ts.map +1 -1
  148. package/dist/components/due-date-calculator/index.js +16 -10
  149. package/dist/components/fetal-weight/efw.d.ts +25 -0
  150. package/dist/components/fetal-weight/efw.d.ts.map +1 -0
  151. package/dist/components/fetal-weight/fetal-weight.d.ts +27 -0
  152. package/dist/components/fetal-weight/fetal-weight.d.ts.map +1 -0
  153. package/dist/components/fetal-weight/index.d.ts +4 -0
  154. package/dist/components/fetal-weight/index.d.ts.map +1 -0
  155. package/dist/components/fetal-weight/index.js +6 -0
  156. package/dist/components/fetal-weight/index.js.map +1 -0
  157. package/dist/components/freemium-paywall/index.js +1 -1
  158. package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts +32 -1
  159. package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts.map +1 -1
  160. package/dist/components/gestational-age-calculator/index.js +1 -1
  161. package/dist/components/hcg-doubling/hcg-doubling.d.ts +31 -0
  162. package/dist/components/hcg-doubling/hcg-doubling.d.ts.map +1 -0
  163. package/dist/components/hcg-doubling/hcg.d.ts +33 -0
  164. package/dist/components/hcg-doubling/hcg.d.ts.map +1 -0
  165. package/dist/components/hcg-doubling/index.d.ts +4 -0
  166. package/dist/components/hcg-doubling/index.d.ts.map +1 -0
  167. package/dist/components/hcg-doubling/index.js +7 -0
  168. package/dist/components/hcg-doubling/index.js.map +1 -0
  169. package/dist/components/index.d.ts +5 -0
  170. package/dist/components/index.d.ts.map +1 -1
  171. package/dist/components/patient-search/index.js +1 -1
  172. package/dist/components/payment-form/index.js +1 -1
  173. package/dist/components/pdf-viewer/index.js +1 -1
  174. package/dist/components/practice-results/index.js +1 -1
  175. package/dist/components/pregnancy-dating/index.d.ts +3 -0
  176. package/dist/components/pregnancy-dating/index.d.ts.map +1 -0
  177. package/dist/components/pregnancy-dating/index.js +5 -0
  178. package/dist/components/pregnancy-dating/index.js.map +1 -0
  179. package/dist/components/pregnancy-dating/pregnancy-dating.d.ts +60 -0
  180. package/dist/components/pregnancy-dating/pregnancy-dating.d.ts.map +1 -0
  181. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  182. package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts +7 -0
  183. package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts.map +1 -1
  184. package/dist/components/pregnancy-weight-gain/weight-gain.d.ts +33 -8
  185. package/dist/components/pregnancy-weight-gain/weight-gain.d.ts.map +1 -1
  186. package/dist/components/product-hub-tray/index.d.ts +8 -0
  187. package/dist/components/product-hub-tray/index.d.ts.map +1 -0
  188. package/dist/components/product-hub-tray/index.js +10 -0
  189. package/dist/components/product-hub-tray/index.js.map +1 -0
  190. package/dist/components/product-hub-tray/product-hub-panel.agent.d.ts +4 -0
  191. package/dist/components/product-hub-tray/product-hub-panel.agent.d.ts.map +1 -0
  192. package/dist/components/product-hub-tray/product-hub-panel.d.ts +54 -0
  193. package/dist/components/product-hub-tray/product-hub-panel.d.ts.map +1 -0
  194. package/dist/components/product-hub-tray/product-hub-tray.agent.d.ts +4 -0
  195. package/dist/components/product-hub-tray/product-hub-tray.agent.d.ts.map +1 -0
  196. package/dist/components/product-hub-tray/product-hub-tray.d.ts +115 -0
  197. package/dist/components/product-hub-tray/product-hub-tray.d.ts.map +1 -0
  198. package/dist/components/sidebar/index.d.ts +2 -2
  199. package/dist/components/sidebar/index.d.ts.map +1 -1
  200. package/dist/components/sidebar/index.js +12 -11
  201. package/dist/components/sidebar/sidebar.d.ts +14 -1
  202. package/dist/components/sidebar/sidebar.d.ts.map +1 -1
  203. package/dist/components/sign-document/index.js +1 -1
  204. package/dist/components/warning-stack/index.js +1 -1
  205. package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
  206. package/dist/components/workflow/index.js +1 -1
  207. package/dist/i18n/locales/ar.d.ts +262 -1
  208. package/dist/i18n/locales/ar.d.ts.map +1 -1
  209. package/dist/i18n/locales/ar.js +261 -2
  210. package/dist/i18n/locales/ar.js.map +1 -1
  211. package/dist/i18n/locales/de.d.ts +262 -1
  212. package/dist/i18n/locales/de.d.ts.map +1 -1
  213. package/dist/i18n/locales/de.js +261 -2
  214. package/dist/i18n/locales/de.js.map +1 -1
  215. package/dist/i18n/locales/el.d.ts +262 -1
  216. package/dist/i18n/locales/el.d.ts.map +1 -1
  217. package/dist/i18n/locales/el.js +261 -2
  218. package/dist/i18n/locales/el.js.map +1 -1
  219. package/dist/i18n/locales/en.d.ts +262 -1
  220. package/dist/i18n/locales/en.d.ts.map +1 -1
  221. package/dist/i18n/locales/en.js +261 -2
  222. package/dist/i18n/locales/en.js.map +1 -1
  223. package/dist/i18n/locales/es.d.ts +262 -1
  224. package/dist/i18n/locales/es.d.ts.map +1 -1
  225. package/dist/i18n/locales/es.js +261 -2
  226. package/dist/i18n/locales/es.js.map +1 -1
  227. package/dist/i18n/locales/fr.d.ts +262 -1
  228. package/dist/i18n/locales/fr.d.ts.map +1 -1
  229. package/dist/i18n/locales/fr.js +261 -2
  230. package/dist/i18n/locales/fr.js.map +1 -1
  231. package/dist/i18n/locales/hi.d.ts +262 -1
  232. package/dist/i18n/locales/hi.d.ts.map +1 -1
  233. package/dist/i18n/locales/hi.js +261 -2
  234. package/dist/i18n/locales/hi.js.map +1 -1
  235. package/dist/i18n/locales/it.d.ts +262 -1
  236. package/dist/i18n/locales/it.d.ts.map +1 -1
  237. package/dist/i18n/locales/it.js +261 -2
  238. package/dist/i18n/locales/it.js.map +1 -1
  239. package/dist/i18n/locales/ja.d.ts +262 -1
  240. package/dist/i18n/locales/ja.d.ts.map +1 -1
  241. package/dist/i18n/locales/ja.js +261 -2
  242. package/dist/i18n/locales/ja.js.map +1 -1
  243. package/dist/i18n/locales/nl.d.ts +262 -1
  244. package/dist/i18n/locales/nl.d.ts.map +1 -1
  245. package/dist/i18n/locales/nl.js +261 -2
  246. package/dist/i18n/locales/nl.js.map +1 -1
  247. package/dist/i18n/locales/pl.d.ts +262 -1
  248. package/dist/i18n/locales/pl.d.ts.map +1 -1
  249. package/dist/i18n/locales/pl.js +261 -2
  250. package/dist/i18n/locales/pl.js.map +1 -1
  251. package/dist/i18n/locales/pt.d.ts +262 -1
  252. package/dist/i18n/locales/pt.d.ts.map +1 -1
  253. package/dist/i18n/locales/pt.js +261 -2
  254. package/dist/i18n/locales/pt.js.map +1 -1
  255. package/dist/i18n/locales/ro.d.ts +262 -1
  256. package/dist/i18n/locales/ro.d.ts.map +1 -1
  257. package/dist/i18n/locales/ro.js +261 -2
  258. package/dist/i18n/locales/ro.js.map +1 -1
  259. package/dist/i18n/locales/ru.d.ts +262 -1
  260. package/dist/i18n/locales/ru.d.ts.map +1 -1
  261. package/dist/i18n/locales/ru.js +261 -2
  262. package/dist/i18n/locales/ru.js.map +1 -1
  263. package/dist/i18n/locales/sq.d.ts +262 -1
  264. package/dist/i18n/locales/sq.d.ts.map +1 -1
  265. package/dist/i18n/locales/sq.js +261 -2
  266. package/dist/i18n/locales/sq.js.map +1 -1
  267. package/dist/i18n/locales/sv.d.ts +262 -1
  268. package/dist/i18n/locales/sv.d.ts.map +1 -1
  269. package/dist/i18n/locales/sv.js +261 -2
  270. package/dist/i18n/locales/sv.js.map +1 -1
  271. package/dist/i18n/locales/tr.d.ts +262 -1
  272. package/dist/i18n/locales/tr.d.ts.map +1 -1
  273. package/dist/i18n/locales/tr.js +261 -2
  274. package/dist/i18n/locales/tr.js.map +1 -1
  275. package/dist/i18n/locales/zh.d.ts +262 -1
  276. package/dist/i18n/locales/zh.d.ts.map +1 -1
  277. package/dist/i18n/locales/zh.js +261 -2
  278. package/dist/i18n/locales/zh.js.map +1 -1
  279. package/dist/index.js +661 -632
  280. package/dist/index.js.map +1 -1
  281. package/dist/locales/ar.json +263 -2
  282. package/dist/locales/de.json +263 -2
  283. package/dist/locales/el.json +263 -2
  284. package/dist/locales/en.json +263 -2
  285. package/dist/locales/es.json +263 -2
  286. package/dist/locales/fr.json +263 -2
  287. package/dist/locales/hi.json +263 -2
  288. package/dist/locales/it.json +263 -2
  289. package/dist/locales/ja.json +263 -2
  290. package/dist/locales/nl.json +263 -2
  291. package/dist/locales/pl.json +263 -2
  292. package/dist/locales/pt.json +263 -2
  293. package/dist/locales/ro.json +263 -2
  294. package/dist/locales/ru.json +263 -2
  295. package/dist/locales/sq.json +263 -2
  296. package/dist/locales/sv.json +263 -2
  297. package/dist/locales/tr.json +263 -2
  298. package/dist/locales/zh.json +263 -2
  299. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  300. package/dist/patterns/patient-shell/index.js +1 -1
  301. package/dist/tokens.css +1 -1
  302. package/package.json +21 -1
  303. package/dist/_chunks/ai-tools-rail-CxYG04cw.js.map +0 -1
  304. package/dist/_chunks/alert-ywPR59NE.js.map +0 -1
  305. package/dist/_chunks/cycle-calculator-DYvGm_m1.js +0 -211
  306. package/dist/_chunks/cycle-calculator-DYvGm_m1.js.map +0 -1
  307. package/dist/_chunks/due-date-calculator-BXd3ANj7.js +0 -216
  308. package/dist/_chunks/due-date-calculator-BXd3ANj7.js.map +0 -1
  309. package/dist/_chunks/gestation-mWF4AXea.js +0 -50
  310. package/dist/_chunks/gestation-mWF4AXea.js.map +0 -1
  311. package/dist/_chunks/gestational-age-calculator-Crj6FgZw.js +0 -203
  312. package/dist/_chunks/gestational-age-calculator-Crj6FgZw.js.map +0 -1
  313. package/dist/_chunks/pregnancy-weight-gain-C7dK89jE.js +0 -246
  314. package/dist/_chunks/pregnancy-weight-gain-C7dK89jE.js.map +0 -1
  315. package/dist/_chunks/sidebar-_vJXI9rB.js.map +0 -1
  316. package/dist/_chunks/subDays-Dv7q9S7u.js +0 -8
  317. package/dist/_chunks/warning-stack-DNR3-IbP.js +0 -180
  318. package/dist/_chunks/warning-stack-DNR3-IbP.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"due-date-calculator-BXd3ANj7.js","sources":["../../src/components/due-date-calculator/due-date-calculator.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* DueDateCalculator — estimate the date of delivery from one of three */\n/* dating methods, with current gestational age + trimester. */\n/* */\n/* - Maths lives in `./gestation` (pure, separately tested). */\n/* - Three methods: LMP (Naegele, cycle-length adjustable), conception, */\n/* and IVF transfer (Day-3 vs Day-5 embryo). */\n/* - The reference date can't be in the future, so the DatePicker caps */\n/* at today. */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { RadioGroup, Radio } from '../radio-group';\nimport { FormField } from '../form-field';\nimport { DatePicker } from '../date-picker';\nimport { NumberInput } from '../number-input';\nimport { Card } from '../card';\nimport { Badge } from '../badge';\nimport {\n InsertButton,\n type InsertPayload,\n type InsertVariant,\n type InsertMode,\n} from '../_shared/insert-result';\nimport {\n type DueDateMethod,\n type EmbryoAge,\n type Trimester,\n type DueDateResult,\n computeDueDate,\n DEFAULT_CYCLE_LENGTH,\n} from './gestation';\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 TRIMESTER_BADGE: Record<\n Trimester,\n 'neutral' | 'info' | 'success' | 'warning' | 'error'\n> = {\n preconception: 'neutral',\n first: 'info',\n second: 'success',\n third: 'warning',\n postterm: 'error',\n};\n\n/**\n * DS token NAME backing each trimester's result-card chip — the solid-fill\n * companion of the on-screen `TRIMESTER_BADGE` variant (Badge `error` fills\n * `--destructive`; `neutral` fills `--muted`). Passed as the card's\n * `highlightToken` so the inserted PNG chip matches the on-screen trimester\n * badge; `InsertButton` resolves the name to a concrete colour at raster time.\n */\nconst TRIMESTER_HIGHLIGHT_TOKEN: Record<Trimester, string> = {\n preconception: '--muted',\n first: '--info',\n second: '--success',\n third: '--warning-readable',\n postterm: '--destructive',\n};\n\n/**\n * Theme-aware trimester chip token. `third` resolves to `--warning-readable`,\n * which the result card's colour probe resolves in the live themed DOM: orange-600\n * in light, non-accessible mode (where bare `--warning` yellow only reaches\n * ~3.2:1 on the white card) and `--warning` elsewhere, whose deepened ramp already\n * clears contrast. Resolving the token NAME at the card means the choice tracks\n * the live theme regardless of where the theme class lives. Other trimesters are\n * unchanged.\n */\nfunction trimesterHighlightToken(trimester: Trimester): string {\n return TRIMESTER_HIGHLIGHT_TOKEN[trimester];\n}\n\n/** Reference-date i18n key per method. */\nconst DATE_LABEL_KEY: Record<DueDateMethod, string> = {\n lmp: 'dueDateCalculator.lmpDate',\n conception: 'dueDateCalculator.conceptionDate',\n ivf: 'dueDateCalculator.transferDate',\n};\n\nexport interface DueDateCalculatorProps extends VariantProps<\n typeof rootVariants\n> {\n /** Initial dating method. Defaults to `'lmp'`. */\n defaultMethod?: DueDateMethod;\n /** Fires whenever a due date can be computed (and with `null` when it can't). */\n onResultChange?: (result: DueDateResult | null) => void;\n /** When provided, shows an \"Insert\" button that emits the result for an editor. */\n onInsert?: (payload: InsertPayload) => void;\n /**\n * Which verb the result button performs. Defaults to `'insert'`.\n * Use `'copy'` in an app-shell surface (no editor to insert into) — the\n * button writes the result to the clipboard as a multi-format `ClipboardItem`.\n */\n insertVariant?: InsertVariant;\n /** `copy` variant only — fired after a successful clipboard write. */\n onCopy?: (mode: InsertMode) => void;\n /** `copy` variant only — fired if the clipboard write can't proceed. */\n onError?: (error: unknown) => void;\n /**\n * Brand wordmark printed in the inserted/copied result-card footer.\n * Omitted → no brand line (and no footer hairline); a string → that custom\n * brand; `false` → no brand line. Brand is opt-in.\n */\n insertBrand?: string | false;\n /** 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 DueDateCalculator = forwardRef<\n HTMLDivElement,\n DueDateCalculatorProps\n>(\n (\n {\n defaultMethod = 'lmp',\n onResultChange,\n onInsert,\n insertVariant = 'insert',\n onCopy,\n onError,\n insertBrand,\n id,\n width,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n const [method, setMethod] = useState<DueDateMethod>(defaultMethod);\n const [refDate, setRefDate] = useState<Date | undefined>(undefined);\n const [cycleLength, setCycleLength] = useState<number | null>(\n DEFAULT_CYCLE_LENGTH,\n );\n const [embryoAge, setEmbryoAge] = useState<EmbryoAge>(5);\n\n // `today` is captured once per render; the result re-derives from it.\n const result = useMemo<DueDateResult | null>(() => {\n if (!refDate) return null;\n return computeDueDate(\n {\n method,\n date: refDate,\n cycleLength: cycleLength ?? DEFAULT_CYCLE_LENGTH,\n embryoAge,\n },\n new Date(),\n );\n }, [method, refDate, cycleLength, embryoAge]);\n\n const dateFormatter = useMemo(\n () => new Intl.DateTimeFormat(i18n.language, { dateStyle: 'long' }),\n [i18n.language],\n );\n\n useEffect(() => {\n onResultChange?.(result);\n }, [result, onResultChange]);\n\n const today = useMemo(() => new Date(), []);\n\n return (\n <div\n ref={ref}\n data-component=\"due-date-calculator\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <RadioGroup\n label={t('dueDateCalculator.method.label')}\n variant=\"horizontal\"\n value={method}\n onValueChange={(next) => setMethod(next as DueDateMethod)}\n >\n <Radio label={t('dueDateCalculator.method.lmp')} value=\"lmp\" />\n <Radio\n label={t('dueDateCalculator.method.conception')}\n value=\"conception\"\n />\n <Radio label={t('dueDateCalculator.method.ivf')} value=\"ivf\" />\n </RadioGroup>\n\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n <FormField label={t(DATE_LABEL_KEY[method])}>\n <DatePicker value={refDate} onChange={setRefDate} maxDate={today} />\n </FormField>\n\n {method === 'lmp' && (\n <FormField\n label={t('dueDateCalculator.cycleLength')}\n description={t('dueDateCalculator.cycleLengthHint')}\n >\n <NumberInput\n mode=\"integer\"\n min={20}\n max={45}\n value={cycleLength}\n onChange={setCycleLength}\n />\n </FormField>\n )}\n\n {method === 'ivf' && (\n <RadioGroup\n label={t('dueDateCalculator.embryoAge')}\n variant=\"horizontal\"\n value={String(embryoAge)}\n onValueChange={(next) => setEmbryoAge(Number(next) as EmbryoAge)}\n >\n <Radio label={t('dueDateCalculator.day3')} value=\"3\" />\n <Radio label={t('dueDateCalculator.day5')} value=\"5\" />\n </RadioGroup>\n )}\n </div>\n\n {/* Concise polite announcement when a due date resolves. */}\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {result\n ? `${t('dueDateCalculator.result.dueDateLabel')}: ${dateFormatter.format(\n result.dueDate,\n )}. ${t('dueDateCalculator.result.trimesterLabel')}: ${t(\n `dueDateCalculator.trimester.${result.trimester}`,\n )}.`\n : ''}\n </p>\n\n {result ? (\n <Card variant=\"elevated\">\n <Card.Body className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n <dl className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-3\">\n <div className=\"ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('dueDateCalculator.result.trimesterLabel')}\n </dt>\n <dd>\n <Badge\n variant={TRIMESTER_BADGE[result.trimester]}\n size=\"lg\"\n >\n {t(`dueDateCalculator.trimester.${result.trimester}`)}\n </Badge>\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('dueDateCalculator.result.gestationLabel')}\n </dt>\n <dd className=\"type-body ds:text-foreground\">\n {result.gestationalAge\n ? t('dueDateCalculator.result.gestation', {\n weeks: result.gestationalAge.weeks,\n days: result.gestationalAge.days,\n })\n : '—'}\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('dueDateCalculator.result.dueDateLabel')}\n </dt>\n <dd className=\"type-metric ds:text-foreground\">\n {dateFormatter.format(result.dueDate)}\n </dd>\n </div>\n </dl>\n {insertVariant === 'copy' || onInsert ? (\n <InsertButton\n variant={insertVariant}\n onInsert={onInsert}\n onCopy={onCopy}\n onError={onError}\n card={{\n title: t('insert.title.dueDate'),\n icon: 'calendar-heart',\n highlight: dateFormatter.format(result.dueDate),\n // Chip tinted with the trimester's semantic token so the\n // inserted PNG carries the same clinical-stage colour as\n // the on-screen trimester badge — with the contrast-safe\n // orange override for the `--warning` third trimester.\n highlightToken: trimesterHighlightToken(result.trimester),\n brand: insertBrand,\n fields: [\n {\n // The estimated date of delivery → calendar glyph.\n icon: 'calendar',\n label: t('dueDateCalculator.result.dueDateLabel'),\n value: dateFormatter.format(result.dueDate),\n },\n {\n // Gestational age is an elapsed duration → clock glyph.\n icon: 'clock',\n label: t('dueDateCalculator.result.gestationLabel'),\n value: result.gestationalAge\n ? t('dueDateCalculator.result.gestation', {\n weeks: result.gestationalAge.weeks,\n days: result.gestationalAge.days,\n })\n : '—',\n },\n {\n // Trimester is a clinical-stage classification → tag.\n icon: 'tag',\n label: t('dueDateCalculator.result.trimesterLabel'),\n value: t(\n `dueDateCalculator.trimester.${result.trimester}`,\n ),\n },\n ],\n }}\n />\n ) : null}\n </Card.Body>\n </Card>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('dueDateCalculator.empty')}\n </p>\n )}\n </div>\n );\n },\n);\n\nDueDateCalculator.displayName = 'DueDateCalculator';\n"],"names":["rootVariants","cva","TRIMESTER_BADGE","TRIMESTER_HIGHLIGHT_TOKEN","trimesterHighlightToken","trimester","DATE_LABEL_KEY","DueDateCalculator","forwardRef","defaultMethod","onResultChange","onInsert","insertVariant","onCopy","onError","insertBrand","id","width","className","ref","t","i18n","useTranslation","method","setMethod","useState","refDate","setRefDate","cycleLength","setCycleLength","DEFAULT_CYCLE_LENGTH","embryoAge","setEmbryoAge","result","useMemo","computeDueDate","dateFormatter","useEffect","today","jsxs","RadioGroup","next","jsx","Radio","FormField","DatePicker","NumberInput","Card","Badge","InsertButton"],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- import { a, d as E } from "./date-picker-variants-DLi1Va_e.js";
2
- import { s as i } from "./subDays-Dv7q9S7u.js";
3
- const T = 280, m = 14, u = 266, d = 28;
4
- function p(e) {
5
- if (e < 0) return "preconception";
6
- const t = Math.floor(e / 7);
7
- return t < 14 ? "first" : t < 28 ? "second" : t < 42 ? "third" : "postterm";
8
- }
9
- function S(e, t) {
10
- const { method: f, date: s } = e;
11
- let o, r;
12
- if (f === "lmp") {
13
- const c = e.cycleLength ?? d;
14
- o = s, r = a(s, T + (c - d));
15
- } else if (f === "conception")
16
- o = i(s, m), r = a(s, u);
17
- else {
18
- const c = e.embryoAge ?? 5, l = i(s, c);
19
- o = i(l, m), r = a(l, u);
20
- }
21
- const n = E(t, o), D = n < 0 ? null : {
22
- weeks: Math.floor(n / 7),
23
- days: n % 7,
24
- totalDays: n
25
- };
26
- return {
27
- dueDate: r,
28
- gestationalStart: o,
29
- gestationalAge: D,
30
- trimester: p(n)
31
- };
32
- }
33
- const y = [12, 24, 28, 37, 40];
34
- function g(e) {
35
- return y.map((t) => ({
36
- key: `w${t}`,
37
- week: t,
38
- date: a(e, t * 7)
39
- }));
40
- }
41
- export {
42
- d as D,
43
- T as G,
44
- y as M,
45
- u as T,
46
- S as c,
47
- g,
48
- p as t
49
- };
50
- //# sourceMappingURL=gestation-mWF4AXea.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gestation-mWF4AXea.js","sources":["../../src/components/due-date-calculator/gestation.ts"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* Estimated-due-date maths — pure, framework-free, unit-testable. */\n/* */\n/* All three methods are normalised onto a single \"gestational start\" */\n/* (the notional first day of the last menstrual period, GA day 0) so */\n/* gestational age and trimester are computed identically regardless */\n/* of how the pregnancy was dated. */\n/* ------------------------------------------------------------------ */\n\nimport { addDays, subDays, differenceInCalendarDays } from 'date-fns';\n\nexport type DueDateMethod = 'lmp' | 'conception' | 'ivf';\n\n/** Embryo age at transfer, in days (cleavage vs blastocyst). */\nexport type EmbryoAge = 3 | 5;\n\nexport type Trimester =\n | 'preconception'\n | 'first'\n | 'second'\n | 'third'\n | 'postterm';\n\n/** Naegele's rule: a term pregnancy is 280 days from the LMP. */\nexport const GESTATION_DAYS = 280;\n/** Ovulation/conception sits ~14 days after the LMP in a 28-day cycle. */\nexport const CONCEPTION_OFFSET_DAYS = 14;\n/** A term pregnancy is 266 days from conception. */\nexport const TERM_FROM_CONCEPTION_DAYS = 266;\n/** Standard menstrual-cycle length Naegele assumes. */\nexport const DEFAULT_CYCLE_LENGTH = 28;\n\nexport interface DueDateInput {\n method: DueDateMethod;\n /** The reference date for the chosen method (LMP / conception / transfer). */\n date: Date;\n /** LMP only — average cycle length in days. Defaults to 28. */\n cycleLength?: number;\n /** IVF only — embryo age at transfer in days. Defaults to 5 (blastocyst). */\n embryoAge?: EmbryoAge;\n}\n\nexport interface GestationalAge {\n weeks: number;\n days: number;\n totalDays: number;\n}\n\nexport interface DueDateResult {\n /** Estimated date of delivery. */\n dueDate: Date;\n /** GA day-0 anchor (notional LMP) the trimester maths counts from. */\n gestationalStart: Date;\n /** Gestational age as of `today`; `null` before conception. */\n gestationalAge: GestationalAge | null;\n trimester: Trimester;\n}\n\n/** Classify gestational age (in completed weeks) into a trimester. */\nexport function trimesterForWeeks(totalDays: number): Trimester {\n if (totalDays < 0) return 'preconception';\n const weeks = Math.floor(totalDays / 7);\n if (weeks < 14) return 'first';\n if (weeks < 28) return 'second';\n if (weeks < 42) return 'third';\n return 'postterm';\n}\n\n/**\n * Resolve the gestational start (notional LMP) and due date for a method.\n * `cycleLength` shifts a longer/shorter cycle's ovulation, moving the due\n * date while GA stays counted from the LMP — the standard convention.\n */\nexport function computeDueDate(\n input: DueDateInput,\n today: Date,\n): DueDateResult {\n const { method, date } = input;\n\n let gestationalStart: Date;\n let dueDate: Date;\n\n if (method === 'lmp') {\n const cycle = input.cycleLength ?? DEFAULT_CYCLE_LENGTH;\n gestationalStart = date;\n dueDate = addDays(date, GESTATION_DAYS + (cycle - DEFAULT_CYCLE_LENGTH));\n } else if (method === 'conception') {\n gestationalStart = subDays(date, CONCEPTION_OFFSET_DAYS);\n dueDate = addDays(date, TERM_FROM_CONCEPTION_DAYS);\n } else {\n // IVF: back out the conception (egg-retrieval) date from the transfer.\n const embryo = input.embryoAge ?? 5;\n const conceptionDate = subDays(date, embryo);\n gestationalStart = subDays(conceptionDate, CONCEPTION_OFFSET_DAYS);\n dueDate = addDays(conceptionDate, TERM_FROM_CONCEPTION_DAYS);\n }\n\n const totalDays = differenceInCalendarDays(today, gestationalStart);\n const gestationalAge: GestationalAge | null =\n totalDays < 0\n ? null\n : {\n weeks: Math.floor(totalDays / 7),\n days: totalDays % 7,\n totalDays,\n };\n\n return {\n dueDate,\n gestationalStart,\n gestationalAge,\n trimester: trimesterForWeeks(totalDays),\n };\n}\n\n/* ------------------------------------------------------------------ */\n/* Milestones */\n/* ------------------------------------------------------------------ */\n\n/** Gestational weeks at which clinically notable milestones fall. */\nexport const MILESTONE_WEEKS = [12, 24, 28, 37, 40] as const;\n\nexport interface GestationalMilestone {\n /** Stable key (`w12`, `w24`, …) for i18n lookup. */\n key: string;\n /** Completed gestational weeks. */\n week: number;\n /** Calendar date the milestone is reached. */\n date: Date;\n}\n\n/**\n * Project the standard milestone dates from a gestational start (notional\n * LMP / GA day 0): end of first trimester (12w), viability (24w), third\n * trimester (28w), term (37w) and the 40-week due date.\n */\nexport function gestationalMilestones(\n gestationalStart: Date,\n): GestationalMilestone[] {\n return MILESTONE_WEEKS.map((week) => ({\n key: `w${week}`,\n week,\n date: addDays(gestationalStart, week * 7),\n }));\n}\n"],"names":["GESTATION_DAYS","CONCEPTION_OFFSET_DAYS","TERM_FROM_CONCEPTION_DAYS","DEFAULT_CYCLE_LENGTH","trimesterForWeeks","totalDays","weeks","computeDueDate","input","today","method","date","gestationalStart","dueDate","cycle","addDays","subDays","embryo","conceptionDate","differenceInCalendarDays","gestationalAge","MILESTONE_WEEKS","gestationalMilestones","week"],"mappings":";;AAwBO,MAAMA,IAAiB,KAEjBC,IAAyB,IAEzBC,IAA4B,KAE5BC,IAAuB;AA6B7B,SAASC,EAAkBC,GAA8B;AAC9D,MAAIA,IAAY,EAAG,QAAO;AAC1B,QAAMC,IAAQ,KAAK,MAAMD,IAAY,CAAC;AACtC,SAAIC,IAAQ,KAAW,UACnBA,IAAQ,KAAW,WACnBA,IAAQ,KAAW,UAChB;AACT;AAOO,SAASC,EACdC,GACAC,GACe;AACf,QAAM,EAAE,QAAAC,GAAQ,MAAAC,EAAA,IAASH;AAEzB,MAAII,GACAC;AAEJ,MAAIH,MAAW,OAAO;AACpB,UAAMI,IAAQN,EAAM,eAAeL;AACnC,IAAAS,IAAmBD,GACnBE,IAAUE,EAAQJ,GAAMX,KAAkBc,IAAQX,EAAqB;AAAA,EACzE,WAAWO,MAAW;AACpB,IAAAE,IAAmBI,EAAQL,GAAMV,CAAsB,GACvDY,IAAUE,EAAQJ,GAAMT,CAAyB;AAAA,OAC5C;AAEL,UAAMe,IAAST,EAAM,aAAa,GAC5BU,IAAiBF,EAAQL,GAAMM,CAAM;AAC3C,IAAAL,IAAmBI,EAAQE,GAAgBjB,CAAsB,GACjEY,IAAUE,EAAQG,GAAgBhB,CAAyB;AAAA,EAC7D;AAEA,QAAMG,IAAYc,EAAyBV,GAAOG,CAAgB,GAC5DQ,IACJf,IAAY,IACR,OACA;AAAA,IACE,OAAO,KAAK,MAAMA,IAAY,CAAC;AAAA,IAC/B,MAAMA,IAAY;AAAA,IAClB,WAAAA;AAAA,EAAA;AAGR,SAAO;AAAA,IACL,SAAAQ;AAAA,IACA,kBAAAD;AAAA,IACA,gBAAAQ;AAAA,IACA,WAAWhB,EAAkBC,CAAS;AAAA,EAAA;AAE1C;AAOO,MAAMgB,IAAkB,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE;AAgB3C,SAASC,EACdV,GACwB;AACxB,SAAOS,EAAgB,IAAI,CAACE,OAAU;AAAA,IACpC,KAAK,IAAIA,CAAI;AAAA,IACb,MAAAA;AAAA,IACA,MAAMR,EAAQH,GAAkBW,IAAO,CAAC;AAAA,EAAA,EACxC;AACJ;"}
@@ -1,203 +0,0 @@
1
- import { jsxs as l, jsx as t } from "react/jsx-runtime";
2
- import { forwardRef as E, useState as h, useMemo as g, useEffect as L } from "react";
3
- import { c as I } from "./index-D2ZczOXr.js";
4
- import { useTranslation as S } from "react-i18next";
5
- import { R as x } from "./radio-TWf9Q-mp.js";
6
- import { R as B } from "./radio-group-CLjK-SlK.js";
7
- import { F } from "./form-field-BOm9hK35.js";
8
- import { D as M } from "./date-picker-Bq7xhMA-.js";
9
- import { C as A } from "./card-DPmk26CL.js";
10
- import { B as v } from "./badge-zsf5i5bH.js";
11
- import { I as R } from "./insert-result-DNdi_JYW.js";
12
- import { c as H, g as _, G as j } from "./gestation-mWF4AXea.js";
13
- import { s as z } from "./subDays-Dv7q9S7u.js";
14
- import { i as O } from "./date-picker-variants-DLi1Va_e.js";
15
- const V = I("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
16
- variants: {
17
- width: { full: "ds:w-full", auto: "ds:inline-flex" }
18
- },
19
- defaultVariants: { width: "full" }
20
- }), K = {
21
- preconception: "neutral",
22
- first: "info",
23
- second: "success",
24
- third: "warning",
25
- postterm: "error"
26
- }, P = {
27
- preconception: "--muted",
28
- first: "--info",
29
- second: "--success",
30
- third: "--warning-readable",
31
- postterm: "--destructive"
32
- };
33
- function Y(c) {
34
- return P[c];
35
- }
36
- const q = E(
37
- ({
38
- defaultMethod: c = "lmp",
39
- onResultChange: d,
40
- onInsert: u,
41
- insertVariant: p = "insert",
42
- onCopy: b,
43
- onError: y,
44
- insertBrand: C,
45
- id: N,
46
- width: D,
47
- className: T
48
- }, w) => {
49
- const { t: e, i18n: f } = S(), [o, G] = h(c), [i, $] = h(void 0), n = g(() => /* @__PURE__ */ new Date(), []), a = g(() => {
50
- if (!i) return null;
51
- const s = o === "lmp" ? i : z(i, j), r = H({ method: "lmp", date: s }, n);
52
- return {
53
- result: {
54
- gestationalAge: r.gestationalAge,
55
- trimester: r.trimester,
56
- dueDate: r.dueDate
57
- },
58
- milestones: _(r.gestationalStart)
59
- };
60
- }, [o, i, n]), k = g(
61
- () => new Intl.DateTimeFormat(f.language, { dateStyle: "medium" }),
62
- [f.language]
63
- );
64
- L(() => {
65
- d == null || d((a == null ? void 0 : a.result) ?? null);
66
- }, [a, d]);
67
- const m = (s) => s ? e("gestationalAgeCalculator.gestation", {
68
- weeks: s.weeks,
69
- days: s.days
70
- }) : "—";
71
- return /* @__PURE__ */ l(
72
- "div",
73
- {
74
- ref: w,
75
- "data-component": "gestational-age-calculator",
76
- "data-component-id": N,
77
- className: V({ width: D, className: T }),
78
- children: [
79
- /* @__PURE__ */ l(
80
- B,
81
- {
82
- label: e("gestationalAgeCalculator.method.label"),
83
- variant: "horizontal",
84
- value: o,
85
- onValueChange: (s) => G(s),
86
- children: [
87
- /* @__PURE__ */ t(x, { label: e("gestationalAgeCalculator.method.lmp"), value: "lmp" }),
88
- /* @__PURE__ */ t(x, { label: e("gestationalAgeCalculator.method.edd"), value: "edd" })
89
- ]
90
- }
91
- ),
92
- /* @__PURE__ */ t(
93
- F,
94
- {
95
- label: e(
96
- o === "lmp" ? "gestationalAgeCalculator.lmpDate" : "gestationalAgeCalculator.eddDate"
97
- ),
98
- children: /* @__PURE__ */ t(
99
- M,
100
- {
101
- value: i,
102
- onChange: $,
103
- maxDate: o === "lmp" ? n : void 0
104
- }
105
- )
106
- }
107
- ),
108
- /* @__PURE__ */ t("p", { className: "ds:sr-only", role: "status", "aria-live": "polite", children: a ? `${e("gestationalAgeCalculator.gestationLabel")}: ${m(
109
- a.result.gestationalAge
110
- )}. ${e("gestationalAgeCalculator.trimesterLabel")}: ${e(
111
- `gestationalAgeCalculator.trimester.${a.result.trimester}`
112
- )}.` : "" }),
113
- a ? /* @__PURE__ */ t(A, { variant: "elevated", children: /* @__PURE__ */ l(A.Body, { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
114
- /* @__PURE__ */ l("dl", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2", children: [
115
- /* @__PURE__ */ l("div", { className: "ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]", children: [
116
- /* @__PURE__ */ t("dt", { className: "type-label ds:text-muted-foreground", children: e("gestationalAgeCalculator.trimesterLabel") }),
117
- /* @__PURE__ */ t("dd", { children: /* @__PURE__ */ t(
118
- v,
119
- {
120
- variant: K[a.result.trimester],
121
- size: "lg",
122
- children: e(
123
- `gestationalAgeCalculator.trimester.${a.result.trimester}`
124
- )
125
- }
126
- ) })
127
- ] }),
128
- /* @__PURE__ */ l("div", { className: "ds:flex ds:flex-col ds:items-end ds:gap-[var(--spacing-xs)] ds:text-end", children: [
129
- /* @__PURE__ */ t("dt", { className: "type-label ds:text-muted-foreground", children: e("gestationalAgeCalculator.gestationLabel") }),
130
- /* @__PURE__ */ t("dd", { className: "type-metric ds:text-foreground", children: m(a.result.gestationalAge) })
131
- ] })
132
- ] }),
133
- /* @__PURE__ */ l("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
134
- /* @__PURE__ */ t("span", { className: "type-label ds:text-muted-foreground", children: e("gestationalAgeCalculator.milestonesLabel") }),
135
- /* @__PURE__ */ t("ul", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: a.milestones.map((s) => {
136
- const r = O(n, s.date);
137
- return /* @__PURE__ */ l(
138
- "li",
139
- {
140
- className: "ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-md)]",
141
- children: [
142
- /* @__PURE__ */ t("span", { className: "type-body ds:text-foreground", children: e(`gestationalAgeCalculator.milestone.${s.key}`) }),
143
- /* @__PURE__ */ l("span", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-sm)]", children: [
144
- /* @__PURE__ */ t("span", { className: "type-body ds:text-muted-foreground", children: k.format(s.date) }),
145
- r ? /* @__PURE__ */ t(v, { variant: "success", children: e("gestationalAgeCalculator.reached") }) : null
146
- ] })
147
- ]
148
- },
149
- s.key
150
- );
151
- }) })
152
- ] }),
153
- p === "copy" || u ? /* @__PURE__ */ t(
154
- R,
155
- {
156
- onInsert: u,
157
- variant: p,
158
- onCopy: b,
159
- onError: y,
160
- card: {
161
- title: e("insert.title.gestationalAge"),
162
- icon: "baby",
163
- highlight: e(
164
- `gestationalAgeCalculator.trimester.${a.result.trimester}`
165
- ),
166
- // Chip shares the trimester's semantic token so the
167
- // inserted PNG chip matches the on-screen trimester badge —
168
- // with the contrast-safe orange override for the
169
- // `--warning` third trimester.
170
- highlightToken: Y(
171
- a.result.trimester
172
- ),
173
- brand: C,
174
- fields: [
175
- {
176
- // Gestational age is an elapsed duration → clock glyph.
177
- icon: "clock",
178
- label: e("gestationalAgeCalculator.gestationLabel"),
179
- value: m(a.result.gestationalAge)
180
- },
181
- {
182
- // Trimester is a clinical-stage classification → tag.
183
- icon: "tag",
184
- label: e("gestationalAgeCalculator.trimesterLabel"),
185
- value: e(
186
- `gestationalAgeCalculator.trimester.${a.result.trimester}`
187
- )
188
- }
189
- ]
190
- }
191
- }
192
- ) : null
193
- ] }) }) : /* @__PURE__ */ t("p", { className: "type-body ds:text-muted-foreground", children: e("gestationalAgeCalculator.empty") })
194
- ]
195
- }
196
- );
197
- }
198
- );
199
- q.displayName = "GestationalAgeCalculator";
200
- export {
201
- q as G
202
- };
203
- //# sourceMappingURL=gestational-age-calculator-Crj6FgZw.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gestational-age-calculator-Crj6FgZw.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 { 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 computeDueDate,\n gestationalMilestones,\n GESTATION_DAYS,\n} from '../due-date-calculator';\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 TRIMESTER_BADGE: Record<\n Trimester,\n 'neutral' | 'info' | 'success' | 'warning' | 'error'\n> = {\n preconception: 'neutral',\n first: 'info',\n second: 'success',\n third: 'warning',\n postterm: 'error',\n};\n\n/**\n * DS token NAME backing each trimester's result-card chip — the solid-fill\n * companion of the on-screen `TRIMESTER_BADGE` variant (Badge `error` fills\n * `--destructive`; `neutral` fills `--muted`). Passed as the card's\n * `highlightToken` so the inserted PNG chip matches the on-screen trimester\n * badge; `InsertButton` resolves the name to a concrete colour at raster time.\n */\nconst TRIMESTER_HIGHLIGHT_TOKEN: Record<Trimester, string> = {\n preconception: '--muted',\n first: '--info',\n second: '--success',\n third: '--warning-readable',\n postterm: '--destructive',\n};\n\n/**\n * Theme-aware trimester chip token. `third` resolves to `--warning-readable`,\n * which the result card's colour probe resolves in the live themed DOM: orange-600\n * in light, non-accessible mode (where bare `--warning` yellow only reaches\n * ~3.2:1 on the white card) and `--warning` elsewhere, whose deepened ramp already\n * clears contrast. Resolving the token NAME at the card means the choice tracks\n * the live theme regardless of where the theme class lives. Other trimesters are\n * unchanged.\n */\nfunction trimesterHighlightToken(trimester: Trimester): string {\n return TRIMESTER_HIGHLIGHT_TOKEN[trimester];\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 /** 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 /** 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 GestationalAgeCalculator = forwardRef<\n HTMLDivElement,\n GestationalAgeCalculatorProps\n>(\n (\n {\n defaultMethod = 'lmp',\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 [method, setMethod] = useState<DateMethod>(defaultMethod);\n const [refDate, setRefDate] = useState<Date | undefined>(undefined);\n\n const today = useMemo(() => new Date(), []);\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 }, today);\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 };\n }, [method, refDate, today]);\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 <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[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(today, 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 {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\n // inserted PNG chip matches the on-screen trimester badge —\n // with the contrast-safe orange override for the\n // `--warning` third trimester.\n highlightToken: trimesterHighlightToken(\n data.result.trimester,\n ),\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 ],\n }}\n />\n ) : null}\n </Card.Body>\n </Card>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('gestationalAgeCalculator.empty')}\n </p>\n )}\n </div>\n );\n },\n);\n\nGestationalAgeCalculator.displayName = 'GestationalAgeCalculator';\n"],"names":["rootVariants","cva","TRIMESTER_BADGE","TRIMESTER_HIGHLIGHT_TOKEN","trimesterHighlightToken","trimester","GestationalAgeCalculator","forwardRef","defaultMethod","onResultChange","onInsert","insertVariant","onCopy","onError","insertBrand","id","width","className","ref","t","i18n","useTranslation","method","setMethod","useState","refDate","setRefDate","today","useMemo","data","lmp","subDays","GESTATION_DAYS","computeDueDate","gestationalMilestones","dateFormatter","useEffect","gaText","ga","jsxs","RadioGroup","next","jsx","Radio","FormField","DatePicker","Card","Badge","m","reached","isAfter","InsertButton"],"mappings":"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"}
@@ -1,246 +0,0 @@
1
- import { jsxs as s, jsx as a } from "react/jsx-runtime";
2
- import { forwardRef as A, useState as f, useMemo as w, useEffect as F } from "react";
3
- import { c as k } from "./index-D2ZczOXr.js";
4
- import { useTranslation as R } from "react-i18next";
5
- import { F as y } from "./form-field-BOm9hK35.js";
6
- import { N as x } from "./number-input-Dj5L3pXK.js";
7
- import { C as $ } from "./card-DPmk26CL.js";
8
- import { B as C } from "./badge-zsf5i5bH.js";
9
- import { I as H } from "./insert-result-DNdi_JYW.js";
10
- import { b as M, e as j } from "./bmi-BxD-tFzU.js";
11
- const L = {
12
- underweight: { min: 12.5, max: 18 },
13
- normal: { min: 11.5, max: 16 },
14
- overweight: { min: 7, max: 11.5 },
15
- obese: { min: 5, max: 9 }
16
- }, O = {
17
- underweight: { min: 0.44, max: 0.58 },
18
- normal: { min: 0.35, max: 0.5 },
19
- overweight: { min: 0.23, max: 0.33 },
20
- obese: { min: 0.17, max: 0.27 }
21
- }, G = { min: 0.5, max: 2 }, v = 13;
22
- function U(t, i) {
23
- if (i <= 0) return { min: 0, max: 0 };
24
- if (i <= v) {
25
- const c = i / v;
26
- return {
27
- min: G.min * c,
28
- max: G.max * c
29
- };
30
- }
31
- const l = Math.min(i, 40) - v, r = O[t];
32
- return {
33
- min: G.min + r.min * l,
34
- max: G.max + r.max * l
35
- };
36
- }
37
- function z(t) {
38
- const i = M(t.prePregnancyBmi), l = L[i], r = U(
39
- i,
40
- t.gestationalWeeks
41
- ), c = t.currentWeightKg - t.prePregnancyWeightKg, W = c < r.min ? "below" : c > r.max ? "above" : "within";
42
- return { category: i, totalRange: l, recommendedToDate: r, actualGainKg: c, status: W };
43
- }
44
- const V = k("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
45
- variants: {
46
- width: { full: "ds:w-full", auto: "ds:inline-flex" }
47
- },
48
- defaultVariants: { width: "full" }
49
- }), q = {
50
- below: "warning",
51
- within: "success",
52
- above: "warning"
53
- }, J = {
54
- below: "--warning-readable",
55
- within: "--success",
56
- above: "--warning-readable"
57
- };
58
- function Q(t) {
59
- return J[t];
60
- }
61
- const X = A(
62
- ({
63
- onResultChange: t,
64
- onInsert: i,
65
- insertVariant: l = "insert",
66
- onCopy: r,
67
- onError: c,
68
- insertBrand: W,
69
- id: K,
70
- width: P,
71
- className: S
72
- }, B) => {
73
- const { t: e, i18n: b } = R(), [N, D] = f(null), [m, I] = f(null), [g, E] = f(null), [u, _] = f(null), p = j(m, N), n = w(() => p === null || m === null || g === null || u === null ? null : z({
74
- prePregnancyBmi: p,
75
- prePregnancyWeightKg: m,
76
- currentWeightKg: g,
77
- gestationalWeeks: u
78
- }), [p, m, g, u]), d = w(
79
- () => new Intl.NumberFormat(b.language, {
80
- minimumFractionDigits: 1,
81
- maximumFractionDigits: 1
82
- }),
83
- [b.language]
84
- );
85
- F(() => {
86
- t == null || t(n);
87
- }, [n, t]);
88
- const o = e("pregnancyWeightGain.units.kg"), h = (T) => `${d.format(T.min)} – ${d.format(T.max)} ${o}`;
89
- return /* @__PURE__ */ s(
90
- "div",
91
- {
92
- ref: B,
93
- "data-component": "pregnancy-weight-gain",
94
- "data-component-id": K,
95
- className: V({ width: P, className: S }),
96
- children: [
97
- /* @__PURE__ */ s("div", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2", children: [
98
- /* @__PURE__ */ a(
99
- y,
100
- {
101
- label: `${e("pregnancyWeightGain.height")} (${e("pregnancyWeightGain.units.cm")})`,
102
- children: /* @__PURE__ */ a(
103
- x,
104
- {
105
- mode: "decimal",
106
- min: 0,
107
- step: 0.5,
108
- value: N,
109
- onChange: D
110
- }
111
- )
112
- }
113
- ),
114
- /* @__PURE__ */ a(
115
- y,
116
- {
117
- label: `${e("pregnancyWeightGain.prePregnancyWeight")} (${o})`,
118
- children: /* @__PURE__ */ a(
119
- x,
120
- {
121
- mode: "decimal",
122
- min: 0,
123
- step: 0.1,
124
- value: m,
125
- onChange: I
126
- }
127
- )
128
- }
129
- ),
130
- /* @__PURE__ */ a(
131
- y,
132
- {
133
- label: `${e("pregnancyWeightGain.currentWeight")} (${o})`,
134
- children: /* @__PURE__ */ a(
135
- x,
136
- {
137
- mode: "decimal",
138
- min: 0,
139
- step: 0.1,
140
- value: g,
141
- onChange: E
142
- }
143
- )
144
- }
145
- ),
146
- /* @__PURE__ */ a(y, { label: e("pregnancyWeightGain.gestationalWeeks"), children: /* @__PURE__ */ a(
147
- x,
148
- {
149
- mode: "integer",
150
- min: 0,
151
- max: 42,
152
- value: u,
153
- onChange: _
154
- }
155
- ) })
156
- ] }),
157
- /* @__PURE__ */ a("p", { className: "ds:sr-only", role: "status", "aria-live": "polite", children: n ? `${e("pregnancyWeightGain.actualGain")}: ${d.format(
158
- n.actualGainKg
159
- )} ${o}. ${e(`pregnancyWeightGain.status.${n.status}`)}.` : "" }),
160
- n ? /* @__PURE__ */ a($, { variant: "elevated", children: /* @__PURE__ */ s($.Body, { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
161
- /* @__PURE__ */ s("dl", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2", children: [
162
- /* @__PURE__ */ s("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
163
- /* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: e("pregnancyWeightGain.prePregnancyBmi") }),
164
- /* @__PURE__ */ s("dd", { className: "type-body ds:text-foreground", children: [
165
- d.format(p ?? 0),
166
- " ·",
167
- " ",
168
- e(`pregnancyWeightGain.category.${n.category}`)
169
- ] })
170
- ] }),
171
- /* @__PURE__ */ s("div", { className: "ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]", children: [
172
- /* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: e("pregnancyWeightGain.actualGain") }),
173
- /* @__PURE__ */ s("dd", { className: "ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]", children: [
174
- /* @__PURE__ */ s("span", { className: "type-metric ds:text-foreground", children: [
175
- d.format(n.actualGainKg),
176
- " ",
177
- o
178
- ] }),
179
- /* @__PURE__ */ a(C, { variant: q[n.status], size: "lg", children: e(`pregnancyWeightGain.status.${n.status}`) })
180
- ] })
181
- ] }),
182
- /* @__PURE__ */ s("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
183
- /* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: e("pregnancyWeightGain.recommendedToDate") }),
184
- /* @__PURE__ */ a("dd", { className: "type-body ds:text-foreground", children: h(n.recommendedToDate) })
185
- ] }),
186
- /* @__PURE__ */ s("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
187
- /* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: e("pregnancyWeightGain.recommendedTotal") }),
188
- /* @__PURE__ */ a("dd", { className: "type-body ds:text-foreground", children: h(n.totalRange) })
189
- ] })
190
- ] }),
191
- /* @__PURE__ */ a("p", { className: "type-body-sm ds:text-muted-foreground", children: e("pregnancyWeightGain.disclaimer") }),
192
- l === "copy" || i ? /* @__PURE__ */ a(
193
- H,
194
- {
195
- onInsert: i,
196
- variant: l,
197
- onCopy: r,
198
- onError: c,
199
- card: {
200
- title: e("insert.title.weightGain"),
201
- icon: "baby",
202
- highlight: e(`pregnancyWeightGain.status.${n.status}`),
203
- // Chip shares the gain-status semantic token so the
204
- // inserted PNG chip matches the on-screen status badge —
205
- // with the contrast-safe orange override for the
206
- // `--warning` below/above statuses.
207
- highlightToken: Q(n.status),
208
- brand: W,
209
- fields: [
210
- {
211
- // Actual gain is the headline trend → trending-up glyph.
212
- icon: "trending-up",
213
- label: e("pregnancyWeightGain.actualGain"),
214
- value: `${d.format(n.actualGainKg)} ${o}`
215
- },
216
- {
217
- // Recommended weight band → scale glyph.
218
- icon: "scale",
219
- label: e("pregnancyWeightGain.recommendedToDate"),
220
- value: h(n.recommendedToDate)
221
- },
222
- {
223
- // Recommended total weight band → scale glyph.
224
- icon: "scale",
225
- label: e("pregnancyWeightGain.recommendedTotal"),
226
- value: h(n.totalRange)
227
- }
228
- ]
229
- }
230
- }
231
- ) : null
232
- ] }) }) : /* @__PURE__ */ a("p", { className: "type-body ds:text-muted-foreground", children: e("pregnancyWeightGain.empty") })
233
- ]
234
- }
235
- );
236
- }
237
- );
238
- X.displayName = "PregnancyWeightGain";
239
- export {
240
- X as P,
241
- O as R,
242
- L as T,
243
- z as a,
244
- U as r
245
- };
246
- //# sourceMappingURL=pregnancy-weight-gain-C7dK89jE.js.map