@alfadocs/ui-kit-debug 1.3.13 → 1.4.1

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 (349) hide show
  1. package/dist/_chunks/agenda-card.agent-Cb5tuEh3.js +28 -0
  2. package/dist/_chunks/agenda-card.agent-Cb5tuEh3.js.map +1 -0
  3. package/dist/_chunks/{alia-sidebar-DzNz1gDf.js → alia-sidebar-DSBZMick.js} +3 -3
  4. package/dist/_chunks/{alia-sidebar-DzNz1gDf.js.map → alia-sidebar-DSBZMick.js.map} +1 -1
  5. package/dist/_chunks/{anamnesis-i18n-CfC0qYzy.js → anamnesis-i18n-DZcrt8dP.js} +2141 -2069
  6. package/dist/_chunks/anamnesis-i18n-DZcrt8dP.js.map +1 -0
  7. package/dist/_chunks/{antenatal-schedule-timeline-BMMpi2lb.js → antenatal-schedule-timeline-u8TsS2QJ.js} +27 -26
  8. package/dist/_chunks/{antenatal-schedule-timeline-BMMpi2lb.js.map → antenatal-schedule-timeline-u8TsS2QJ.js.map} +1 -1
  9. package/dist/_chunks/{appointment-timeline-B630OT_J.js → appointment-timeline-Bqf1sTU5.js} +2 -2
  10. package/dist/_chunks/{appointment-timeline-B630OT_J.js.map → appointment-timeline-Bqf1sTU5.js.map} +1 -1
  11. package/dist/_chunks/{ar-THMLfSoN.js → ar-BR1FGFP2.js} +14 -14
  12. package/dist/_chunks/{ar-THMLfSoN.js.map → ar-BR1FGFP2.js.map} +1 -1
  13. package/dist/_chunks/{bmi-calculator-CM0-G2mg.js → bmi-calculator-CpyY13MV.js} +2 -2
  14. package/dist/_chunks/{bmi-calculator-CM0-G2mg.js.map → bmi-calculator-CpyY13MV.js.map} +1 -1
  15. package/dist/_chunks/{booking-DjNbd7C1.js → booking-BjsA7j1-.js} +699 -688
  16. package/dist/_chunks/booking-BjsA7j1-.js.map +1 -0
  17. package/dist/_chunks/calculator-dialog-12d3Sxaz.js +48 -0
  18. package/dist/_chunks/{calculator-dialog-DuXMQSdm.js.map → calculator-dialog-12d3Sxaz.js.map} +1 -1
  19. package/dist/_chunks/{care-plan-card-1G_f4I5s.js → care-plan-card-BvQy366X.js} +3 -3
  20. package/dist/_chunks/{care-plan-card-1G_f4I5s.js.map → care-plan-card-BvQy366X.js.map} +1 -1
  21. package/dist/_chunks/{care-plan-entry-card-DmBsffHS.js → care-plan-entry-card-apk_5B3O.js} +2 -2
  22. package/dist/_chunks/{care-plan-entry-card-DmBsffHS.js.map → care-plan-entry-card-apk_5B3O.js.map} +1 -1
  23. package/dist/_chunks/{chat-container-HlFnoEIl.js → chat-container-CYYego1W.js} +105 -81
  24. package/dist/_chunks/chat-container-CYYego1W.js.map +1 -0
  25. package/dist/_chunks/cycle-calculator-B7fyH-h4.js +425 -0
  26. package/dist/_chunks/cycle-calculator-B7fyH-h4.js.map +1 -0
  27. package/dist/_chunks/{date-picker-ZHejTVAJ.js → date-picker-Bp64zk2p.js} +19 -19
  28. package/dist/_chunks/{date-picker-ZHejTVAJ.js.map → date-picker-Bp64zk2p.js.map} +1 -1
  29. package/dist/_chunks/date-picker-variants-pKAJfnWr.js +2089 -0
  30. package/dist/_chunks/date-picker-variants-pKAJfnWr.js.map +1 -0
  31. package/dist/_chunks/{date-range-picker-pEG3Ln3i.js → date-range-picker-CDrZ8Zh0.js} +27 -27
  32. package/dist/_chunks/{date-range-picker-pEG3Ln3i.js.map → date-range-picker-CDrZ8Zh0.js.map} +1 -1
  33. package/dist/_chunks/{date-time-picker-695QvBGj.js → date-time-picker-DafkGDGO.js} +10 -10
  34. package/dist/_chunks/{date-time-picker-695QvBGj.js.map → date-time-picker-DafkGDGO.js.map} +1 -1
  35. package/dist/_chunks/{de-DmZ-8rTN.js → de-3iM4rGqo.js} +7 -7
  36. package/dist/_chunks/{de-DmZ-8rTN.js.map → de-3iM4rGqo.js.map} +1 -1
  37. package/dist/_chunks/{document-preview-D3gg4MXB.js → document-preview-DOrsqiN1.js} +2 -2
  38. package/dist/_chunks/{document-preview-D3gg4MXB.js.map → document-preview-DOrsqiN1.js.map} +1 -1
  39. package/dist/_chunks/due-date-calculator-CnkbbAej.js +571 -0
  40. package/dist/_chunks/due-date-calculator-CnkbbAej.js.map +1 -0
  41. package/dist/_chunks/{editor-overlay-DE3esyio.js → editor-overlay-B1tr2i7B.js} +22 -21
  42. package/dist/_chunks/editor-overlay-B1tr2i7B.js.map +1 -0
  43. package/dist/_chunks/{el-Bela9mxs.js → el-C96rGJvU.js} +2 -2
  44. package/dist/_chunks/{el-Bela9mxs.js.map → el-C96rGJvU.js.map} +1 -1
  45. package/dist/_chunks/{es-BNncHKex.js → es-Cxiqjx8r.js} +12 -12
  46. package/dist/_chunks/{es-BNncHKex.js.map → es-Cxiqjx8r.js.map} +1 -1
  47. package/dist/_chunks/fetal-weight-avlj-l-S.js +223 -0
  48. package/dist/_chunks/fetal-weight-avlj-l-S.js.map +1 -0
  49. package/dist/_chunks/format-4HNwNGrN.js +1315 -0
  50. package/dist/_chunks/format-4HNwNGrN.js.map +1 -0
  51. package/dist/_chunks/{fr-CH8ADfhN.js → fr-Bhr6SYKj.js} +21 -21
  52. package/dist/_chunks/{fr-CH8ADfhN.js.map → fr-Bhr6SYKj.js.map} +1 -1
  53. package/dist/_chunks/{freemium-paywall-C_Ue6wxU.js → freemium-paywall-DRDdWuOg.js} +3 -3
  54. package/dist/_chunks/{freemium-paywall-C_Ue6wxU.js.map → freemium-paywall-DRDdWuOg.js.map} +1 -1
  55. package/dist/_chunks/gestational-age-calculator-BljY_DVJ.js +488 -0
  56. package/dist/_chunks/gestational-age-calculator-BljY_DVJ.js.map +1 -0
  57. package/dist/_chunks/hcg-doubling-Cv_vH61p.js +312 -0
  58. package/dist/_chunks/hcg-doubling-Cv_vH61p.js.map +1 -0
  59. package/dist/_chunks/header-settings-Cn5fPXCE.js +335 -0
  60. package/dist/_chunks/header-settings-Cn5fPXCE.js.map +1 -0
  61. package/dist/_chunks/{hi-Bppfxp8l.js → hi-BxXX26d_.js} +12 -12
  62. package/dist/_chunks/{hi-Bppfxp8l.js.map → hi-BxXX26d_.js.map} +1 -1
  63. package/dist/_chunks/isSameWeek-B73MagWB.js +13 -0
  64. package/dist/_chunks/{isSameWeek-CK4HS9lH.js.map → isSameWeek-B73MagWB.js.map} +1 -1
  65. package/dist/_chunks/{it-B4ySaRyK.js → it-Xmjomvyj.js} +24 -24
  66. package/dist/_chunks/{it-B4ySaRyK.js.map → it-Xmjomvyj.js.map} +1 -1
  67. package/dist/_chunks/{ja-CGF6Io9P.js → ja-mfZvt1ZV.js} +16 -16
  68. package/dist/_chunks/{ja-CGF6Io9P.js.map → ja-mfZvt1ZV.js.map} +1 -1
  69. package/dist/_chunks/{link-cell-renderer-C5XLwVXQ.js → link-cell-renderer-CJ_gk7gl.js} +3 -3
  70. package/dist/_chunks/{link-cell-renderer-C5XLwVXQ.js.map → link-cell-renderer-CJ_gk7gl.js.map} +1 -1
  71. package/dist/_chunks/{locale-picker-BfBUdT1m.js → locale-picker-D9Kv2zrK.js} +153 -132
  72. package/dist/_chunks/locale-picker-D9Kv2zrK.js.map +1 -0
  73. package/dist/_chunks/map-view-2yZCQW2l.js +445 -0
  74. package/dist/_chunks/map-view-2yZCQW2l.js.map +1 -0
  75. package/dist/_chunks/{marketplace-app-shell-DwcFMxzp.js → marketplace-app-shell-BLRvg-M0.js} +49 -40
  76. package/dist/_chunks/marketplace-app-shell-BLRvg-M0.js.map +1 -0
  77. package/dist/_chunks/{nl-DuShqwuV.js → nl-DDs-KEnD.js} +15 -15
  78. package/dist/_chunks/{nl-DuShqwuV.js.map → nl-DDs-KEnD.js.map} +1 -1
  79. package/dist/_chunks/{notes-panel-DPsgB4Mv.js → notes-panel-CiFN3sLW.js} +2 -2
  80. package/dist/_chunks/{notes-panel-DPsgB4Mv.js.map → notes-panel-CiFN3sLW.js.map} +1 -1
  81. package/dist/_chunks/{number-input-DrozbZAU.js → number-input-DOe5VYei.js} +64 -64
  82. package/dist/_chunks/number-input-DOe5VYei.js.map +1 -0
  83. package/dist/_chunks/{optical-prescription-BDHJr8Zz.js → optical-prescription-CRemE8fL.js} +2 -2
  84. package/dist/_chunks/{optical-prescription-BDHJr8Zz.js.map → optical-prescription-CRemE8fL.js.map} +1 -1
  85. package/dist/_chunks/{parse-DvA97ro9.js → parse-JqixfsU0.js} +43 -43
  86. package/dist/_chunks/{parse-DvA97ro9.js.map → parse-JqixfsU0.js.map} +1 -1
  87. package/dist/_chunks/parseISO-fOGpHKXm.js +120 -0
  88. package/dist/_chunks/parseISO-fOGpHKXm.js.map +1 -0
  89. package/dist/_chunks/{patient-details-DqjjwPmt.js → patient-details-CpunD0qx.js} +3 -3
  90. package/dist/_chunks/{patient-details-DqjjwPmt.js.map → patient-details-CpunD0qx.js.map} +1 -1
  91. package/dist/_chunks/{patient-table-BmIDrLIS.js → patient-table-2eWx-Rrk.js} +2 -2
  92. package/dist/_chunks/{patient-table-BmIDrLIS.js.map → patient-table-2eWx-Rrk.js.map} +1 -1
  93. package/dist/_chunks/{payment-form-h-BZ8onk.js → payment-form-Ds1I9KqB.js} +308 -231
  94. package/dist/_chunks/payment-form-Ds1I9KqB.js.map +1 -0
  95. package/dist/_chunks/{pdf-viewer-Ddx-T053.js → pdf-viewer-DUIsV9s5.js} +429 -369
  96. package/dist/_chunks/pdf-viewer-DUIsV9s5.js.map +1 -0
  97. package/dist/_chunks/{pl-CKQwX9Fk.js → pl-BYYMnEWP.js} +18 -18
  98. package/dist/_chunks/{pl-CKQwX9Fk.js.map → pl-BYYMnEWP.js.map} +1 -1
  99. package/dist/_chunks/{practice-results-B-HPc13W.js → practice-results-SjCniMd2.js} +2 -2
  100. package/dist/_chunks/{practice-results-B-HPc13W.js.map → practice-results-SjCniMd2.js.map} +1 -1
  101. package/dist/_chunks/pregnancy-dating-BmpHScZ0.js +770 -0
  102. package/dist/_chunks/pregnancy-dating-BmpHScZ0.js.map +1 -0
  103. package/dist/_chunks/pregnancy-weight-gain-B5KSJzdc.js +553 -0
  104. package/dist/_chunks/pregnancy-weight-gain-B5KSJzdc.js.map +1 -0
  105. package/dist/_chunks/progress-CK8otcQ-.js +343 -0
  106. package/dist/_chunks/progress-CK8otcQ-.js.map +1 -0
  107. package/dist/_chunks/{pt-_njpXyOZ.js → pt-BSPnVrQ7.js} +20 -20
  108. package/dist/_chunks/{pt-_njpXyOZ.js.map → pt-BSPnVrQ7.js.map} +1 -1
  109. package/dist/_chunks/{radiograph-panel.agent-BQZ64Riy.js → radiograph-panel.agent-CtFtNMzk.js} +3 -3
  110. package/dist/_chunks/{radiograph-panel.agent-BQZ64Riy.js.map → radiograph-panel.agent-CtFtNMzk.js.map} +1 -1
  111. package/dist/_chunks/{rich-text-editor-CfeXPPWs.js → rich-text-editor-BedTpWzL.js} +2 -2
  112. package/dist/_chunks/{rich-text-editor-CfeXPPWs.js.map → rich-text-editor-BedTpWzL.js.map} +1 -1
  113. package/dist/_chunks/{ro-3X6_4FcN.js → ro-BbiylGmG.js} +14 -14
  114. package/dist/_chunks/{ro-3X6_4FcN.js.map → ro-BbiylGmG.js.map} +1 -1
  115. package/dist/_chunks/{ru-bAcgmnS-.js → ru-BX_qsV67.js} +14 -14
  116. package/dist/_chunks/{ru-bAcgmnS-.js.map → ru-BX_qsV67.js.map} +1 -1
  117. package/dist/_chunks/{session-countdown-Bc70VXN1.js → session-countdown-BL-Psg8u.js} +2 -2
  118. package/dist/_chunks/{session-countdown-Bc70VXN1.js.map → session-countdown-BL-Psg8u.js.map} +1 -1
  119. package/dist/_chunks/{sign-document-CW_ByDUh.js → sign-document-jF4fZDJ5.js} +2 -2
  120. package/dist/_chunks/{sign-document-CW_ByDUh.js.map → sign-document-jF4fZDJ5.js.map} +1 -1
  121. package/dist/_chunks/slot-grid-DNiUcXy2.js +640 -0
  122. package/dist/_chunks/slot-grid-DNiUcXy2.js.map +1 -0
  123. package/dist/_chunks/{sparkline-BTY4B5tv.js → sparkline-BmGcEyZO.js} +209 -164
  124. package/dist/_chunks/sparkline-BmGcEyZO.js.map +1 -0
  125. package/dist/_chunks/{sq-jYFqr4Ga.js → sq-i9UOk4P7.js} +10 -10
  126. package/dist/_chunks/{sq-jYFqr4Ga.js.map → sq-i9UOk4P7.js.map} +1 -1
  127. package/dist/_chunks/subDays-CAUv47M1.js +8 -0
  128. package/dist/_chunks/{subDays-BcNi04uf.js.map → subDays-CAUv47M1.js.map} +1 -1
  129. package/dist/_chunks/{sv-BSGEJ-8B.js → sv-CpTdtmDQ.js} +8 -8
  130. package/dist/_chunks/{sv-BSGEJ-8B.js.map → sv-CpTdtmDQ.js.map} +1 -1
  131. package/dist/_chunks/{tab-bar-Axhk6xzx.js → tab-bar-BYESZINM.js} +83 -77
  132. package/dist/_chunks/tab-bar-BYESZINM.js.map +1 -0
  133. package/dist/_chunks/task-card.agent-CF2N_uu4.js +29 -0
  134. package/dist/_chunks/task-card.agent-CF2N_uu4.js.map +1 -0
  135. package/dist/_chunks/{tr-CTpgUtw6.js → tr-DXG2QN1K.js} +17 -17
  136. package/dist/_chunks/{tr-CTpgUtw6.js.map → tr-DXG2QN1K.js.map} +1 -1
  137. package/dist/_chunks/{unit-converter-COgkN7YP.js → unit-converter-CHPDuV7W.js} +2 -2
  138. package/dist/_chunks/{unit-converter-COgkN7YP.js.map → unit-converter-CHPDuV7W.js.map} +1 -1
  139. package/dist/_chunks/{warning-stack-BtjmJChC.js → warning-stack-B7t_8jRE.js} +42 -37
  140. package/dist/_chunks/{warning-stack-BtjmJChC.js.map → warning-stack-B7t_8jRE.js.map} +1 -1
  141. package/dist/_chunks/{zh-CN-BgM0Io2O.js → zh-CN-vPkPEK6H.js} +18 -18
  142. package/dist/_chunks/{zh-CN-BgM0Io2O.js.map → zh-CN-vPkPEK6H.js.map} +1 -1
  143. package/dist/agent-catalog.json +6426 -3382
  144. package/dist/agent-i18n/en.json +234 -15
  145. package/dist/components/agenda-card/agenda-card.agent.d.ts.map +1 -1
  146. package/dist/components/agenda-card/index.js +1 -1
  147. package/dist/components/appointment-timeline/index.js +1 -1
  148. package/dist/components/bmi-calculator/index.js +1 -1
  149. package/dist/components/booking/booking.d.ts.map +1 -1
  150. package/dist/components/booking/index.js +1 -1
  151. package/dist/components/calculator-dialog/calculator-dialog.d.ts.map +1 -1
  152. package/dist/components/calculator-dialog/index.js +1 -1
  153. package/dist/components/care-plan-card/index.js +1 -1
  154. package/dist/components/care-plan-entry-card/index.js +1 -1
  155. package/dist/components/chat-container/chat-container.agent.d.ts.map +1 -1
  156. package/dist/components/chat-container/chat-container.d.ts +14 -0
  157. package/dist/components/chat-container/chat-container.d.ts.map +1 -1
  158. package/dist/components/chat-container/index.js +1 -1
  159. package/dist/components/cycle-calculator/cycle-calculator.agent.d.ts +4 -0
  160. package/dist/components/cycle-calculator/cycle-calculator.agent.d.ts.map +1 -0
  161. package/dist/components/cycle-calculator/cycle-calculator.d.ts +42 -0
  162. package/dist/components/cycle-calculator/cycle-calculator.d.ts.map +1 -1
  163. package/dist/components/cycle-calculator/index.d.ts +1 -1
  164. package/dist/components/cycle-calculator/index.d.ts.map +1 -1
  165. package/dist/components/cycle-calculator/index.js +1 -1
  166. package/dist/components/data-table/index.js +1 -1
  167. package/dist/components/date-picker/index.js +1 -1
  168. package/dist/components/date-range-picker/index.js +1 -1
  169. package/dist/components/date-time-picker/index.js +1 -1
  170. package/dist/components/document-preview/index.js +1 -1
  171. package/dist/components/due-date-calculator/due-date-calculator.agent.d.ts +4 -0
  172. package/dist/components/due-date-calculator/due-date-calculator.agent.d.ts.map +1 -0
  173. package/dist/components/due-date-calculator/due-date-calculator.d.ts +61 -1
  174. package/dist/components/due-date-calculator/due-date-calculator.d.ts.map +1 -1
  175. package/dist/components/due-date-calculator/index.d.ts +1 -1
  176. package/dist/components/due-date-calculator/index.d.ts.map +1 -1
  177. package/dist/components/due-date-calculator/index.js +2 -2
  178. package/dist/components/editor-overlay/editor-overlay.d.ts +7 -1
  179. package/dist/components/editor-overlay/editor-overlay.d.ts.map +1 -1
  180. package/dist/components/editor-overlay/index.js +1 -1
  181. package/dist/components/fetal-weight/fetal-weight.agent.d.ts +4 -0
  182. package/dist/components/fetal-weight/fetal-weight.agent.d.ts.map +1 -0
  183. package/dist/components/fetal-weight/fetal-weight.d.ts +26 -0
  184. package/dist/components/fetal-weight/fetal-weight.d.ts.map +1 -1
  185. package/dist/components/fetal-weight/index.d.ts +1 -1
  186. package/dist/components/fetal-weight/index.d.ts.map +1 -1
  187. package/dist/components/fetal-weight/index.js +1 -1
  188. package/dist/components/freemium-paywall/index.js +1 -1
  189. package/dist/components/gestational-age-calculator/gestational-age-calculator.agent.d.ts +4 -0
  190. package/dist/components/gestational-age-calculator/gestational-age-calculator.agent.d.ts.map +1 -0
  191. package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts +44 -2
  192. package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts.map +1 -1
  193. package/dist/components/gestational-age-calculator/index.d.ts +1 -1
  194. package/dist/components/gestational-age-calculator/index.d.ts.map +1 -1
  195. package/dist/components/gestational-age-calculator/index.js +1 -1
  196. package/dist/components/hcg-doubling/hcg-doubling.agent.d.ts +4 -0
  197. package/dist/components/hcg-doubling/hcg-doubling.agent.d.ts.map +1 -0
  198. package/dist/components/hcg-doubling/hcg-doubling.d.ts +30 -0
  199. package/dist/components/hcg-doubling/hcg-doubling.d.ts.map +1 -1
  200. package/dist/components/hcg-doubling/index.d.ts +1 -1
  201. package/dist/components/hcg-doubling/index.d.ts.map +1 -1
  202. package/dist/components/hcg-doubling/index.js +1 -1
  203. package/dist/components/header-settings/header-settings.agent.d.ts.map +1 -1
  204. package/dist/components/header-settings/header-settings.d.ts +13 -1
  205. package/dist/components/header-settings/header-settings.d.ts.map +1 -1
  206. package/dist/components/header-settings/index.js +1 -1
  207. package/dist/components/locale-picker/index.js +1 -1
  208. package/dist/components/locale-picker/locale-picker.agent.d.ts.map +1 -1
  209. package/dist/components/locale-picker/locale-picker.d.ts +9 -0
  210. package/dist/components/locale-picker/locale-picker.d.ts.map +1 -1
  211. package/dist/components/map-view/index.js +1 -1
  212. package/dist/components/map-view/map-view.agent.d.ts.map +1 -1
  213. package/dist/components/map-view/map-view.d.ts +22 -0
  214. package/dist/components/map-view/map-view.d.ts.map +1 -1
  215. package/dist/components/notes-panel/index.js +1 -1
  216. package/dist/components/number-input/index.js +1 -1
  217. package/dist/components/number-input/number-input.d.ts +2 -1
  218. package/dist/components/number-input/number-input.d.ts.map +1 -1
  219. package/dist/components/optical-prescription/index.js +1 -1
  220. package/dist/components/patient-details/index.js +1 -1
  221. package/dist/components/patient-table/index.js +1 -1
  222. package/dist/components/payment-form/index.d.ts +1 -1
  223. package/dist/components/payment-form/index.d.ts.map +1 -1
  224. package/dist/components/payment-form/index.js +1 -1
  225. package/dist/components/payment-form/payment-form.agent.d.ts.map +1 -1
  226. package/dist/components/payment-form/payment-form.d.ts +32 -1
  227. package/dist/components/payment-form/payment-form.d.ts.map +1 -1
  228. package/dist/components/pdf-viewer/index.js +1 -1
  229. package/dist/components/pdf-viewer/pdf-viewer.agent.d.ts.map +1 -1
  230. package/dist/components/pdf-viewer/pdf-viewer.d.ts +13 -0
  231. package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  232. package/dist/components/practice-results/index.js +1 -1
  233. package/dist/components/pregnancy-dating/index.d.ts +1 -1
  234. package/dist/components/pregnancy-dating/index.d.ts.map +1 -1
  235. package/dist/components/pregnancy-dating/index.js +1 -1
  236. package/dist/components/pregnancy-dating/pregnancy-dating.agent.d.ts +4 -0
  237. package/dist/components/pregnancy-dating/pregnancy-dating.agent.d.ts.map +1 -0
  238. package/dist/components/pregnancy-dating/pregnancy-dating.d.ts +65 -1
  239. package/dist/components/pregnancy-dating/pregnancy-dating.d.ts.map +1 -1
  240. package/dist/components/pregnancy-weight-gain/index.d.ts +2 -1
  241. package/dist/components/pregnancy-weight-gain/index.d.ts.map +1 -1
  242. package/dist/components/pregnancy-weight-gain/index.js +6 -5
  243. package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.agent.d.ts +4 -0
  244. package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.agent.d.ts.map +1 -0
  245. package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts +35 -0
  246. package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts.map +1 -1
  247. package/dist/components/progress/index.js +1 -1
  248. package/dist/components/progress/progress.agent.d.ts.map +1 -1
  249. package/dist/components/progress/progress.d.ts +13 -0
  250. package/dist/components/progress/progress.d.ts.map +1 -1
  251. package/dist/components/radiograph-panel/index.js +1 -1
  252. package/dist/components/rich-text-editor/index.js +1 -1
  253. package/dist/components/session-countdown/index.js +1 -1
  254. package/dist/components/sign-document/index.js +1 -1
  255. package/dist/components/slot-grid/index.d.ts +2 -1
  256. package/dist/components/slot-grid/index.d.ts.map +1 -1
  257. package/dist/components/slot-grid/index.js +5 -4
  258. package/dist/components/slot-grid/slot-grid.agent.d.ts +4 -0
  259. package/dist/components/slot-grid/slot-grid.agent.d.ts.map +1 -0
  260. package/dist/components/slot-grid/slot-grid.d.ts +34 -0
  261. package/dist/components/slot-grid/slot-grid.d.ts.map +1 -1
  262. package/dist/components/sparkline/index.js +1 -1
  263. package/dist/components/sparkline/sparkline.agent.d.ts.map +1 -1
  264. package/dist/components/sparkline/sparkline.d.ts +10 -0
  265. package/dist/components/sparkline/sparkline.d.ts.map +1 -1
  266. package/dist/components/tab-bar/index.js +1 -1
  267. package/dist/components/tab-bar/tab-bar.d.ts +13 -0
  268. package/dist/components/tab-bar/tab-bar.d.ts.map +1 -1
  269. package/dist/components/task-card/index.js +1 -1
  270. package/dist/components/task-card/task-card.agent.d.ts.map +1 -1
  271. package/dist/components/unit-converter/index.js +1 -1
  272. package/dist/components/warning-stack/index.js +1 -1
  273. package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
  274. package/dist/index.js +630 -627
  275. package/dist/patterns/alia-assistant/index.js +1 -1
  276. package/dist/patterns/anamnesis/anamnesis-compare-panel.d.ts.map +1 -1
  277. package/dist/patterns/anamnesis/anamnesis-compile.d.ts.map +1 -1
  278. package/dist/patterns/anamnesis/anamnesis-derive.d.ts +27 -8
  279. package/dist/patterns/anamnesis/anamnesis-derive.d.ts.map +1 -1
  280. package/dist/patterns/anamnesis/anamnesis-events.d.ts.map +1 -1
  281. package/dist/patterns/anamnesis/anamnesis-evolution-grid.d.ts.map +1 -1
  282. package/dist/patterns/anamnesis/anamnesis-field.d.ts.map +1 -1
  283. package/dist/patterns/anamnesis/anamnesis-format.d.ts +11 -3
  284. package/dist/patterns/anamnesis/anamnesis-format.d.ts.map +1 -1
  285. package/dist/patterns/anamnesis/anamnesis-highlight.d.ts +6 -0
  286. package/dist/patterns/anamnesis/anamnesis-highlight.d.ts.map +1 -0
  287. package/dist/patterns/anamnesis/anamnesis-intake.d.ts.map +1 -1
  288. package/dist/patterns/anamnesis/anamnesis-matrix.d.ts.map +1 -1
  289. package/dist/patterns/anamnesis/anamnesis-questionnaire.d.ts +23 -9
  290. package/dist/patterns/anamnesis/anamnesis-questionnaire.d.ts.map +1 -1
  291. package/dist/patterns/anamnesis/anamnesis-readonly.d.ts.map +1 -1
  292. package/dist/patterns/anamnesis/anamnesis-target-strip.d.ts.map +1 -1
  293. package/dist/patterns/anamnesis/anamnesis-types.d.ts +7 -0
  294. package/dist/patterns/anamnesis/anamnesis-types.d.ts.map +1 -1
  295. package/dist/patterns/anamnesis/anamnesis-visit-note.d.ts.map +1 -1
  296. package/dist/patterns/anamnesis/anamnesis.d.ts +16 -7
  297. package/dist/patterns/anamnesis/anamnesis.d.ts.map +1 -1
  298. package/dist/patterns/anamnesis/index.d.ts +3 -2
  299. package/dist/patterns/anamnesis/index.d.ts.map +1 -1
  300. package/dist/patterns/anamnesis/index.js +7 -6
  301. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  302. package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts +6 -0
  303. package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts.map +1 -1
  304. package/dist/tokens.css +1 -1
  305. package/package.json +1 -1
  306. package/dist/_chunks/agenda-card.agent-mTCrkKSZ.js +0 -27
  307. package/dist/_chunks/agenda-card.agent-mTCrkKSZ.js.map +0 -1
  308. package/dist/_chunks/anamnesis-i18n-CfC0qYzy.js.map +0 -1
  309. package/dist/_chunks/booking-DjNbd7C1.js.map +0 -1
  310. package/dist/_chunks/calculator-dialog-DuXMQSdm.js +0 -40
  311. package/dist/_chunks/chat-container-HlFnoEIl.js.map +0 -1
  312. package/dist/_chunks/cycle-calculator-BwqYVPB4.js +0 -252
  313. package/dist/_chunks/cycle-calculator-BwqYVPB4.js.map +0 -1
  314. package/dist/_chunks/date-picker-variants-eL6HjWvw.js +0 -3363
  315. package/dist/_chunks/date-picker-variants-eL6HjWvw.js.map +0 -1
  316. package/dist/_chunks/due-date-calculator-CwfsFd3T.js +0 -256
  317. package/dist/_chunks/due-date-calculator-CwfsFd3T.js.map +0 -1
  318. package/dist/_chunks/editor-overlay-DE3esyio.js.map +0 -1
  319. package/dist/_chunks/fetal-weight-ePlLjJPc.js +0 -122
  320. package/dist/_chunks/fetal-weight-ePlLjJPc.js.map +0 -1
  321. package/dist/_chunks/gestational-age-calculator-DdgbH69Z.js +0 -311
  322. package/dist/_chunks/gestational-age-calculator-DdgbH69Z.js.map +0 -1
  323. package/dist/_chunks/hcg-doubling-BBqD2wI2.js +0 -170
  324. package/dist/_chunks/hcg-doubling-BBqD2wI2.js.map +0 -1
  325. package/dist/_chunks/header-settings--pjYOe6g.js +0 -284
  326. package/dist/_chunks/header-settings--pjYOe6g.js.map +0 -1
  327. package/dist/_chunks/isSameDay-DUEiAT0G.js +0 -39
  328. package/dist/_chunks/isSameDay-DUEiAT0G.js.map +0 -1
  329. package/dist/_chunks/isSameWeek-CK4HS9lH.js +0 -14
  330. package/dist/_chunks/locale-picker-BfBUdT1m.js.map +0 -1
  331. package/dist/_chunks/map-view-CsaHfoo6.js +0 -378
  332. package/dist/_chunks/map-view-CsaHfoo6.js.map +0 -1
  333. package/dist/_chunks/marketplace-app-shell-DwcFMxzp.js.map +0 -1
  334. package/dist/_chunks/number-input-DrozbZAU.js.map +0 -1
  335. package/dist/_chunks/payment-form-h-BZ8onk.js.map +0 -1
  336. package/dist/_chunks/pdf-viewer-Ddx-T053.js.map +0 -1
  337. package/dist/_chunks/pregnancy-dating-DzYTlBkT.js +0 -421
  338. package/dist/_chunks/pregnancy-dating-DzYTlBkT.js.map +0 -1
  339. package/dist/_chunks/pregnancy-weight-gain-O6J0sUIi.js +0 -322
  340. package/dist/_chunks/pregnancy-weight-gain-O6J0sUIi.js.map +0 -1
  341. package/dist/_chunks/progress-DA413-zn.js +0 -299
  342. package/dist/_chunks/progress-DA413-zn.js.map +0 -1
  343. package/dist/_chunks/slot-grid-CQSULZjd.js +0 -502
  344. package/dist/_chunks/slot-grid-CQSULZjd.js.map +0 -1
  345. package/dist/_chunks/sparkline-BTY4B5tv.js.map +0 -1
  346. package/dist/_chunks/subDays-BcNi04uf.js +0 -8
  347. package/dist/_chunks/tab-bar-Axhk6xzx.js.map +0 -1
  348. package/dist/_chunks/task-card.agent-Bt14CzUd.js +0 -25
  349. package/dist/_chunks/task-card.agent-Bt14CzUd.js.map +0 -1
@@ -7,8 +7,8 @@ import { useTranslation as X } from "react-i18next";
7
7
  import { u as Y } from "./use-controllable-state-BiY4xTzM.js";
8
8
  import { u as Z } from "./registry-DvAUVLHh.js";
9
9
  import { B as R } from "./button-CPGiR_bH.js";
10
- import { P as $ } from "./progress-DA413-zn.js";
11
- import { f as ee } from "./payment-form-h-BZ8onk.js";
10
+ import { P as $ } from "./progress-CK8otcQ-.js";
11
+ import { f as ee } from "./payment-form-Ds1I9KqB.js";
12
12
  import { T as se } from "./triangle-alert-CBnO6nq_.js";
13
13
  import { C as ae } from "./check-DrFSN__t.js";
14
14
  const re = {
@@ -276,4 +276,4 @@ export {
276
276
  de as F,
277
277
  re as f
278
278
  };
279
- //# sourceMappingURL=freemium-paywall-C_Ue6wxU.js.map
279
+ //# sourceMappingURL=freemium-paywall-DRDdWuOg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"freemium-paywall-C_Ue6wxU.js","sources":["../../src/components/freemium-paywall/freemium-paywall.agent.ts","../../src/components/freemium-paywall/freemium-paywall.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — FreemiumPaywall. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { FreemiumPaywallHandle } from './freemium-paywall';\n\nexport const freemiumPaywallAgent: AgentAdapter<FreemiumPaywallHandle> = {\n id: 'freemium-paywall',\n capabilities: ['submit', 'dismiss'],\n state: {\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.freemiumPaywall.state.isOpen',\n description: 'True when the paywall dialog is open.',\n read: (handle) => handle.isOpen(),\n },\n selectedPlanId: {\n type: 'string | null',\n descriptionKey: 'ui.agent.freemiumPaywall.state.selectedPlanId',\n description: 'Opaque id of the currently-selected plan.',\n read: (handle) => handle.getSelectedPlanId(),\n },\n },\n actions: {\n upgrade: {\n safety: 'write',\n // Backs the `submit` capability: commits the current plan selection\n // to the host's upgrade flow (checkout / billing).\n openWorld: true,\n descriptionKey: 'ui.agent.freemiumPaywall.actions.upgrade',\n description: 'Fire onUpgrade with the currently-selected plan id.',\n errors: ['No plan selected — upgrade is a no-op until a plan is chosen.'],\n invoke: (handle) => {\n handle.upgrade();\n },\n },\n dismiss: {\n safety: 'destructive',\n // Backs the `dismiss` capability.\n descriptionKey: 'ui.agent.freemiumPaywall.actions.dismiss',\n description:\n 'Dismiss the paywall via the Not Now action. Irreversible from the same UI.',\n invoke: (handle) => {\n handle.dismiss();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'freemium-paywall',\n description: 'Marks the FreemiumPaywall dialog content.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n type ReactNode,\n} from 'react';\nimport * as RadixAlertDialog from '@radix-ui/react-alert-dialog';\nimport * as RadixRadioGroup from '@radix-ui/react-radio-group';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { freemiumPaywallAgent } from './freemium-paywall.agent';\nimport { TriangleAlert, Check } from 'lucide-react';\nimport { Button } from '../button';\nimport { Progress } from '../progress';\nimport { formatPaymentAmount } from '../payment-form';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport interface FreemiumPlan {\n id: string;\n /** Translation key for the plan name (e.g. `app.paywall.plans.pro`). */\n nameKey: string;\n /** Amount in minor units (cents, centesimi). */\n priceAmount: number;\n /** ISO 4217 currency code. */\n currency: string;\n /** Translation key for the cadence suffix (e.g. `app.paywall.period.month`). */\n perKey?: string;\n /** Per-line feature translation keys. */\n featuresKeys?: string[];\n}\n\nconst contentVariants = cva(\n [\n 'ds:fixed ds:z-[var(--z-modal)] ds:overflow-auto',\n 'ds:bg-[color:var(--popover)] ds:text-[color:var(--popover-foreground)]',\n 'ds:border ds:border-border ds:shadow-[var(--shadow-lg)]',\n // forced-colors: keep the dialog boundary visible under Windows High\n // Contrast, where `var(--border)` may collapse to system colours.\n 'ds:forced-colors:border-[CanvasText]',\n 'ds:focus:outline-none',\n ].join(' '),\n {\n variants: {\n layout: {\n centered:\n 'ds:start-1/2 ds:top-1/2 ds:-translate-x-1/2 ds:-translate-y-1/2 ds:rtl:translate-x-1/2 ds:rounded-[var(--radius-md)] ds:max-w-[var(--dialog-width-xl)] ds:w-[calc(100vw-2rem)] ds:max-h-[90vh]',\n sheet:\n // `inset-x-0` compiles to logical `inset-inline`; the\n // `inset-inline-0` spelling compiled to nothing.\n 'ds:inset-x-0 ds:bottom-0 ds:w-full ds:max-h-[90vh] ds:rounded-t-[var(--radius-md)]',\n },\n density: {\n compact:\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:pt-[var(--spacing-md)] ds:pb-[var(--spacing-md)]',\n full: 'ds:ps-[var(--spacing-lg)] ds:pe-[var(--spacing-lg)] ds:pt-[var(--spacing-lg)] ds:pb-[var(--spacing-lg)]',\n },\n },\n defaultVariants: { layout: 'centered', density: 'full' },\n },\n);\n\n/** Curated imperative handle for agent / external automation. */\nexport interface FreemiumPaywallHandle {\n isOpen: () => boolean;\n getSelectedPlanId: () => string | null;\n upgrade: () => void;\n dismiss: () => void;\n}\n\nexport interface FreemiumPaywallProps extends VariantProps<\n typeof contentVariants\n> {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n plans: FreemiumPlan[];\n /** Currently-selected plan id (controlled) or default. */\n selectedPlanId?: string;\n defaultSelectedPlanId?: string;\n onSelectedPlanChange?: (id: string) => void;\n /** Usage indicator values — omit the object to hide the bar. */\n usage?: { used: number; limit: number };\n /** Fires on upgrade. */\n onUpgrade: (planId: string) => void;\n /** Fires when the user dismisses via Not Now. */\n onCancel?: () => void;\n /** Title override; defaults to t('paywall.title'). */\n title?: ReactNode;\n /** Description override; defaults to t('paywall.description'). */\n description?: ReactNode;\n /**\n * Stable instance id. Emitted on the dialog content as\n * `data-component-id` and used as the agent-registry instance key so\n * a host can address this specific paywall.\n */\n id?: string;\n className?: string;\n}\n\nexport const FreemiumPaywall = forwardRef<HTMLDivElement, FreemiumPaywallProps>(\n (\n {\n open,\n onOpenChange,\n plans,\n selectedPlanId,\n defaultSelectedPlanId,\n onSelectedPlanChange,\n usage,\n onUpgrade,\n onCancel,\n title,\n description,\n id,\n layout = 'centered',\n density = 'full',\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const titleId = useId();\n const descId = useId();\n\n const [currentSelectedRaw, handleSelectedChange] =\n useControllableState<string>({\n value: selectedPlanId,\n defaultValue: defaultSelectedPlanId ?? plans[0]?.id ?? '',\n onChange: onSelectedPlanChange,\n });\n const currentSelected = currentSelectedRaw ?? '';\n\n const handleCancel = () => {\n onCancel?.();\n onOpenChange(false);\n };\n\n const handleUpgrade = () => {\n if (!currentSelected) return;\n onUpgrade(currentSelected);\n };\n\n const openRef = useRef(open);\n openRef.current = open;\n const selectedRef = useRef<string>(currentSelected);\n selectedRef.current = currentSelected;\n\n const contentRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => contentRef.current as HTMLDivElement, []);\n\n const agentHandle = useMemo<FreemiumPaywallHandle>(\n () => ({\n isOpen: () => openRef.current,\n getSelectedPlanId: () => selectedRef.current || null,\n upgrade: () => handleUpgrade(),\n dismiss: () => handleCancel(),\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n useAgentRegistration(freemiumPaywallAgent, agentHandle, id);\n\n const usagePercent = usage\n ? Math.min(\n 100,\n Math.max(0, (usage.used / Math.max(1, usage.limit)) * 100),\n )\n : 0;\n const usageFull = usage ? usage.used >= usage.limit : false;\n\n return (\n <RadixAlertDialog.Root open={open} onOpenChange={onOpenChange}>\n <RadixAlertDialog.Portal>\n <RadixAlertDialog.Overlay\n className={[\n 'ds:fixed ds:inset-0 ds:z-[var(--z-modal-backdrop)]',\n 'ds:bg-[color:var(--background)]/70',\n 'ds:motion-safe:data-[state=open]:animate-in ds:motion-safe:data-[state=closed]:animate-out',\n 'ds:[.theme-accessible_&]:animate-none',\n ].join(' ')}\n />\n <RadixAlertDialog.Content\n ref={contentRef}\n aria-labelledby={titleId}\n aria-describedby={descId}\n className={contentVariants({ layout, density, className })}\n data-component=\"freemium-paywall\"\n data-component-id={id}\n >\n <RadixAlertDialog.Title id={titleId} asChild>\n <h2 className=\"type-title-card\">{title ?? t('paywall.title')}</h2>\n </RadixAlertDialog.Title>\n <RadixAlertDialog.Description id={descId} asChild>\n <p className=\"ds:mt-[var(--spacing-xs)] ds:text-[color:var(--muted-foreground)]\">\n {description ?? t('paywall.description')}\n </p>\n </RadixAlertDialog.Description>\n\n {usage ? (\n <div className=\"ds:mt-[var(--spacing-md)]\">\n <div className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)] ds:mb-[var(--spacing-xs)]\">\n {usageFull ? (\n <TriangleAlert\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:text-[color:var(--destructive)]\"\n />\n ) : null}\n <span\n className={[\n 'type-body-sm',\n usageFull\n ? 'ds:text-[color:var(--destructive)]'\n : 'ds:text-[color:var(--muted-foreground)]',\n ].join(' ')}\n >\n {usageFull\n ? t('paywall.usageFull')\n : t('paywall.usageLabel', {\n used: usage.used,\n limit: usage.limit,\n })}\n </span>\n </div>\n <Progress\n value={usagePercent}\n max={100}\n ariaLabel={t('paywall.usageLabel', {\n used: usage.used,\n limit: usage.limit,\n })}\n className={\n usageFull\n ? 'ds:[&_[role=progressbar]>*]:bg-[color:var(--destructive)]'\n : ''\n }\n />\n </div>\n ) : null}\n\n <RadixRadioGroup.Root\n value={currentSelected}\n onValueChange={handleSelectedChange}\n aria-label={t('paywall.title')}\n className=\"ds:mt-[var(--spacing-md)] ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\"\n >\n {plans.map((plan) => {\n // Reuse the payment-form helper — it knows about\n // zero-decimal currencies (JPY, KRW, VND …) and applies\n // the right divisor. Raw `/ 100` would 100× the price in\n // those currencies.\n const formattedPrice = formatPaymentAmount(\n plan.priceAmount,\n plan.currency,\n i18n.language,\n );\n const period = plan.perKey ? t(plan.perKey) : undefined;\n const priceLine = period\n ? t('paywall.pricePer', { price: formattedPrice, period })\n : formattedPrice;\n const planName = t(plan.nameKey);\n return (\n <RadixRadioGroup.Item\n key={plan.id}\n value={plan.id}\n className={[\n 'ds:group ds:relative ds:flex ds:flex-col ds:items-stretch',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-[color:var(--card-border)] ds:[.theme-accessible_&]:border-2',\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:pt-[var(--spacing-sm)] ds:pb-[var(--spacing-sm)]',\n 'ds:text-start ds:bg-[color:var(--card)] ds:text-[color:var(--card-foreground)]',\n 'ds:data-[state=checked]:border-[color:var(--primary)]',\n 'ds:data-[state=checked]:bg-[color:var(--primary)]/5',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n ].join(' ')}\n >\n <span className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]\">\n <span className=\"ds:font-semibold\">{planName}</span>\n <span className=\"ds:tabular-nums\">{priceLine}</span>\n </span>\n {plan.featuresKeys && plan.featuresKeys.length > 0 ? (\n <ul\n aria-label={t('paywall.features')}\n className=\"ds:mt-[var(--spacing-xs)] ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\"\n >\n {plan.featuresKeys.map((key, i) => (\n <li\n key={i}\n className=\"ds:flex ds:items-start ds:gap-[var(--spacing-xs)] type-body-sm\"\n >\n <Check\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:shrink-0 ds:text-[color:var(--primary)] ds:mt-[1px]\"\n />\n <span>{t(key)}</span>\n </li>\n ))}\n </ul>\n ) : null}\n </RadixRadioGroup.Item>\n );\n })}\n </RadixRadioGroup.Root>\n\n <div className=\"ds:mt-[var(--spacing-lg)] ds:flex ds:items-center ds:gap-[var(--spacing-sm)] ds:justify-end\">\n <RadixAlertDialog.Cancel asChild>\n <Button intent=\"outline\" onClick={handleCancel}>\n {t('paywall.notNow')}\n </Button>\n </RadixAlertDialog.Cancel>\n <RadixAlertDialog.Action asChild>\n <Button intent=\"primary\" onClick={handleUpgrade}>\n {t('paywall.upgrade')}\n </Button>\n </RadixAlertDialog.Action>\n </div>\n </RadixAlertDialog.Content>\n </RadixAlertDialog.Portal>\n </RadixAlertDialog.Root>\n );\n },\n);\n\nFreemiumPaywall.displayName = 'FreemiumPaywall';\n"],"names":["freemiumPaywallAgent","handle","contentVariants","cva","FreemiumPaywall","forwardRef","open","onOpenChange","plans","selectedPlanId","defaultSelectedPlanId","onSelectedPlanChange","usage","onUpgrade","onCancel","title","description","id","layout","density","className","ref","t","i18n","useTranslation","titleId","useId","descId","currentSelectedRaw","handleSelectedChange","useControllableState","_a","currentSelected","handleCancel","handleUpgrade","openRef","useRef","selectedRef","contentRef","useImperativeHandle","agentHandle","useMemo","useAgentRegistration","usagePercent","usageFull","jsx","RadixAlertDialog","jsxs","TriangleAlert","Progress","RadixRadioGroup","plan","formattedPrice","formatPaymentAmount","period","priceLine","planName","key","i","Check","Button"],"mappings":"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"}
1
+ {"version":3,"file":"freemium-paywall-DRDdWuOg.js","sources":["../../src/components/freemium-paywall/freemium-paywall.agent.ts","../../src/components/freemium-paywall/freemium-paywall.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — FreemiumPaywall. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { FreemiumPaywallHandle } from './freemium-paywall';\n\nexport const freemiumPaywallAgent: AgentAdapter<FreemiumPaywallHandle> = {\n id: 'freemium-paywall',\n capabilities: ['submit', 'dismiss'],\n state: {\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.freemiumPaywall.state.isOpen',\n description: 'True when the paywall dialog is open.',\n read: (handle) => handle.isOpen(),\n },\n selectedPlanId: {\n type: 'string | null',\n descriptionKey: 'ui.agent.freemiumPaywall.state.selectedPlanId',\n description: 'Opaque id of the currently-selected plan.',\n read: (handle) => handle.getSelectedPlanId(),\n },\n },\n actions: {\n upgrade: {\n safety: 'write',\n // Backs the `submit` capability: commits the current plan selection\n // to the host's upgrade flow (checkout / billing).\n openWorld: true,\n descriptionKey: 'ui.agent.freemiumPaywall.actions.upgrade',\n description: 'Fire onUpgrade with the currently-selected plan id.',\n errors: ['No plan selected — upgrade is a no-op until a plan is chosen.'],\n invoke: (handle) => {\n handle.upgrade();\n },\n },\n dismiss: {\n safety: 'destructive',\n // Backs the `dismiss` capability.\n descriptionKey: 'ui.agent.freemiumPaywall.actions.dismiss',\n description:\n 'Dismiss the paywall via the Not Now action. Irreversible from the same UI.',\n invoke: (handle) => {\n handle.dismiss();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'freemium-paywall',\n description: 'Marks the FreemiumPaywall dialog content.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n type ReactNode,\n} from 'react';\nimport * as RadixAlertDialog from '@radix-ui/react-alert-dialog';\nimport * as RadixRadioGroup from '@radix-ui/react-radio-group';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { freemiumPaywallAgent } from './freemium-paywall.agent';\nimport { TriangleAlert, Check } from 'lucide-react';\nimport { Button } from '../button';\nimport { Progress } from '../progress';\nimport { formatPaymentAmount } from '../payment-form';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport interface FreemiumPlan {\n id: string;\n /** Translation key for the plan name (e.g. `app.paywall.plans.pro`). */\n nameKey: string;\n /** Amount in minor units (cents, centesimi). */\n priceAmount: number;\n /** ISO 4217 currency code. */\n currency: string;\n /** Translation key for the cadence suffix (e.g. `app.paywall.period.month`). */\n perKey?: string;\n /** Per-line feature translation keys. */\n featuresKeys?: string[];\n}\n\nconst contentVariants = cva(\n [\n 'ds:fixed ds:z-[var(--z-modal)] ds:overflow-auto',\n 'ds:bg-[color:var(--popover)] ds:text-[color:var(--popover-foreground)]',\n 'ds:border ds:border-border ds:shadow-[var(--shadow-lg)]',\n // forced-colors: keep the dialog boundary visible under Windows High\n // Contrast, where `var(--border)` may collapse to system colours.\n 'ds:forced-colors:border-[CanvasText]',\n 'ds:focus:outline-none',\n ].join(' '),\n {\n variants: {\n layout: {\n centered:\n 'ds:start-1/2 ds:top-1/2 ds:-translate-x-1/2 ds:-translate-y-1/2 ds:rtl:translate-x-1/2 ds:rounded-[var(--radius-md)] ds:max-w-[var(--dialog-width-xl)] ds:w-[calc(100vw-2rem)] ds:max-h-[90vh]',\n sheet:\n // `inset-x-0` compiles to logical `inset-inline`; the\n // `inset-inline-0` spelling compiled to nothing.\n 'ds:inset-x-0 ds:bottom-0 ds:w-full ds:max-h-[90vh] ds:rounded-t-[var(--radius-md)]',\n },\n density: {\n compact:\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:pt-[var(--spacing-md)] ds:pb-[var(--spacing-md)]',\n full: 'ds:ps-[var(--spacing-lg)] ds:pe-[var(--spacing-lg)] ds:pt-[var(--spacing-lg)] ds:pb-[var(--spacing-lg)]',\n },\n },\n defaultVariants: { layout: 'centered', density: 'full' },\n },\n);\n\n/** Curated imperative handle for agent / external automation. */\nexport interface FreemiumPaywallHandle {\n isOpen: () => boolean;\n getSelectedPlanId: () => string | null;\n upgrade: () => void;\n dismiss: () => void;\n}\n\nexport interface FreemiumPaywallProps extends VariantProps<\n typeof contentVariants\n> {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n plans: FreemiumPlan[];\n /** Currently-selected plan id (controlled) or default. */\n selectedPlanId?: string;\n defaultSelectedPlanId?: string;\n onSelectedPlanChange?: (id: string) => void;\n /** Usage indicator values — omit the object to hide the bar. */\n usage?: { used: number; limit: number };\n /** Fires on upgrade. */\n onUpgrade: (planId: string) => void;\n /** Fires when the user dismisses via Not Now. */\n onCancel?: () => void;\n /** Title override; defaults to t('paywall.title'). */\n title?: ReactNode;\n /** Description override; defaults to t('paywall.description'). */\n description?: ReactNode;\n /**\n * Stable instance id. Emitted on the dialog content as\n * `data-component-id` and used as the agent-registry instance key so\n * a host can address this specific paywall.\n */\n id?: string;\n className?: string;\n}\n\nexport const FreemiumPaywall = forwardRef<HTMLDivElement, FreemiumPaywallProps>(\n (\n {\n open,\n onOpenChange,\n plans,\n selectedPlanId,\n defaultSelectedPlanId,\n onSelectedPlanChange,\n usage,\n onUpgrade,\n onCancel,\n title,\n description,\n id,\n layout = 'centered',\n density = 'full',\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const titleId = useId();\n const descId = useId();\n\n const [currentSelectedRaw, handleSelectedChange] =\n useControllableState<string>({\n value: selectedPlanId,\n defaultValue: defaultSelectedPlanId ?? plans[0]?.id ?? '',\n onChange: onSelectedPlanChange,\n });\n const currentSelected = currentSelectedRaw ?? '';\n\n const handleCancel = () => {\n onCancel?.();\n onOpenChange(false);\n };\n\n const handleUpgrade = () => {\n if (!currentSelected) return;\n onUpgrade(currentSelected);\n };\n\n const openRef = useRef(open);\n openRef.current = open;\n const selectedRef = useRef<string>(currentSelected);\n selectedRef.current = currentSelected;\n\n const contentRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => contentRef.current as HTMLDivElement, []);\n\n const agentHandle = useMemo<FreemiumPaywallHandle>(\n () => ({\n isOpen: () => openRef.current,\n getSelectedPlanId: () => selectedRef.current || null,\n upgrade: () => handleUpgrade(),\n dismiss: () => handleCancel(),\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n useAgentRegistration(freemiumPaywallAgent, agentHandle, id);\n\n const usagePercent = usage\n ? Math.min(\n 100,\n Math.max(0, (usage.used / Math.max(1, usage.limit)) * 100),\n )\n : 0;\n const usageFull = usage ? usage.used >= usage.limit : false;\n\n return (\n <RadixAlertDialog.Root open={open} onOpenChange={onOpenChange}>\n <RadixAlertDialog.Portal>\n <RadixAlertDialog.Overlay\n className={[\n 'ds:fixed ds:inset-0 ds:z-[var(--z-modal-backdrop)]',\n 'ds:bg-[color:var(--background)]/70',\n 'ds:motion-safe:data-[state=open]:animate-in ds:motion-safe:data-[state=closed]:animate-out',\n 'ds:[.theme-accessible_&]:animate-none',\n ].join(' ')}\n />\n <RadixAlertDialog.Content\n ref={contentRef}\n aria-labelledby={titleId}\n aria-describedby={descId}\n className={contentVariants({ layout, density, className })}\n data-component=\"freemium-paywall\"\n data-component-id={id}\n >\n <RadixAlertDialog.Title id={titleId} asChild>\n <h2 className=\"type-title-card\">{title ?? t('paywall.title')}</h2>\n </RadixAlertDialog.Title>\n <RadixAlertDialog.Description id={descId} asChild>\n <p className=\"ds:mt-[var(--spacing-xs)] ds:text-[color:var(--muted-foreground)]\">\n {description ?? t('paywall.description')}\n </p>\n </RadixAlertDialog.Description>\n\n {usage ? (\n <div className=\"ds:mt-[var(--spacing-md)]\">\n <div className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)] ds:mb-[var(--spacing-xs)]\">\n {usageFull ? (\n <TriangleAlert\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:text-[color:var(--destructive)]\"\n />\n ) : null}\n <span\n className={[\n 'type-body-sm',\n usageFull\n ? 'ds:text-[color:var(--destructive)]'\n : 'ds:text-[color:var(--muted-foreground)]',\n ].join(' ')}\n >\n {usageFull\n ? t('paywall.usageFull')\n : t('paywall.usageLabel', {\n used: usage.used,\n limit: usage.limit,\n })}\n </span>\n </div>\n <Progress\n value={usagePercent}\n max={100}\n ariaLabel={t('paywall.usageLabel', {\n used: usage.used,\n limit: usage.limit,\n })}\n className={\n usageFull\n ? 'ds:[&_[role=progressbar]>*]:bg-[color:var(--destructive)]'\n : ''\n }\n />\n </div>\n ) : null}\n\n <RadixRadioGroup.Root\n value={currentSelected}\n onValueChange={handleSelectedChange}\n aria-label={t('paywall.title')}\n className=\"ds:mt-[var(--spacing-md)] ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\"\n >\n {plans.map((plan) => {\n // Reuse the payment-form helper — it knows about\n // zero-decimal currencies (JPY, KRW, VND …) and applies\n // the right divisor. Raw `/ 100` would 100× the price in\n // those currencies.\n const formattedPrice = formatPaymentAmount(\n plan.priceAmount,\n plan.currency,\n i18n.language,\n );\n const period = plan.perKey ? t(plan.perKey) : undefined;\n const priceLine = period\n ? t('paywall.pricePer', { price: formattedPrice, period })\n : formattedPrice;\n const planName = t(plan.nameKey);\n return (\n <RadixRadioGroup.Item\n key={plan.id}\n value={plan.id}\n className={[\n 'ds:group ds:relative ds:flex ds:flex-col ds:items-stretch',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-[color:var(--card-border)] ds:[.theme-accessible_&]:border-2',\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:pt-[var(--spacing-sm)] ds:pb-[var(--spacing-sm)]',\n 'ds:text-start ds:bg-[color:var(--card)] ds:text-[color:var(--card-foreground)]',\n 'ds:data-[state=checked]:border-[color:var(--primary)]',\n 'ds:data-[state=checked]:bg-[color:var(--primary)]/5',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n ].join(' ')}\n >\n <span className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]\">\n <span className=\"ds:font-semibold\">{planName}</span>\n <span className=\"ds:tabular-nums\">{priceLine}</span>\n </span>\n {plan.featuresKeys && plan.featuresKeys.length > 0 ? (\n <ul\n aria-label={t('paywall.features')}\n className=\"ds:mt-[var(--spacing-xs)] ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\"\n >\n {plan.featuresKeys.map((key, i) => (\n <li\n key={i}\n className=\"ds:flex ds:items-start ds:gap-[var(--spacing-xs)] type-body-sm\"\n >\n <Check\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:shrink-0 ds:text-[color:var(--primary)] ds:mt-[1px]\"\n />\n <span>{t(key)}</span>\n </li>\n ))}\n </ul>\n ) : null}\n </RadixRadioGroup.Item>\n );\n })}\n </RadixRadioGroup.Root>\n\n <div className=\"ds:mt-[var(--spacing-lg)] ds:flex ds:items-center ds:gap-[var(--spacing-sm)] ds:justify-end\">\n <RadixAlertDialog.Cancel asChild>\n <Button intent=\"outline\" onClick={handleCancel}>\n {t('paywall.notNow')}\n </Button>\n </RadixAlertDialog.Cancel>\n <RadixAlertDialog.Action asChild>\n <Button intent=\"primary\" onClick={handleUpgrade}>\n {t('paywall.upgrade')}\n </Button>\n </RadixAlertDialog.Action>\n </div>\n </RadixAlertDialog.Content>\n </RadixAlertDialog.Portal>\n </RadixAlertDialog.Root>\n );\n },\n);\n\nFreemiumPaywall.displayName = 'FreemiumPaywall';\n"],"names":["freemiumPaywallAgent","handle","contentVariants","cva","FreemiumPaywall","forwardRef","open","onOpenChange","plans","selectedPlanId","defaultSelectedPlanId","onSelectedPlanChange","usage","onUpgrade","onCancel","title","description","id","layout","density","className","ref","t","i18n","useTranslation","titleId","useId","descId","currentSelectedRaw","handleSelectedChange","useControllableState","_a","currentSelected","handleCancel","handleUpgrade","openRef","useRef","selectedRef","contentRef","useImperativeHandle","agentHandle","useMemo","useAgentRegistration","usagePercent","usageFull","jsx","RadixAlertDialog","jsxs","TriangleAlert","Progress","RadixRadioGroup","plan","formattedPrice","formatPaymentAmount","period","priceLine","planName","key","i","Check","Button"],"mappings":";;;;;;;;;;;;;AAOO,MAAMA,KAA4D;AAAA,EACvE,IAAI;AAAA,EACJ,cAAc,CAAC,UAAU,SAAS;AAAA,EAClC,OAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,MAAM,CAACC,MAAWA,EAAO,OAAA;AAAA,IAAO;AAAA,IAElC,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,MAAM,CAACA,MAAWA,EAAO,kBAAA;AAAA,IAAkB;AAAA,EAC7C;AAAA,EAEF,SAAS;AAAA,IACP,SAAS;AAAA,MACP,QAAQ;AAAA;AAAA;AAAA,MAGR,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,QAAQ,CAAC,+DAA+D;AAAA,MACxE,QAAQ,CAACA,MAAW;AAClB,QAAAA,EAAO,QAAA;AAAA,MACT;AAAA,IAAA;AAAA,IAEF,SAAS;AAAA,MACP,QAAQ;AAAA;AAAA,MAER,gBAAgB;AAAA,MAChB,aACE;AAAA,MACF,QAAQ,CAACA,MAAW;AAClB,QAAAA,EAAO,QAAA;AAAA,MACT;AAAA,IAAA;AAAA,EACF;AAAA,EAEF,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IAAA;AAAA,IAEf,YAAY;AAAA,MACV,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ,GCtBMC,KAAkBC;AAAA,EACtB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,QAAQ;AAAA,QACN,UACE;AAAA,QACF;AAAA;AAAA;AAAA,UAGE;AAAA;AAAA,MAAA;AAAA,MAEJ,SAAS;AAAA,QACP,SACE;AAAA,QACF,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IAEF,iBAAiB,EAAE,QAAQ,YAAY,SAAS,OAAA;AAAA,EAAO;AAE3D,GAuCaC,KAAkBC;AAAA,EAC7B,CACE;AAAA,IACE,MAAAC;AAAA,IACA,cAAAC;AAAA,IACA,OAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,uBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,OAAAC;AAAA,IACA,WAAAC;AAAA,IACA,UAAAC;AAAA,IACA,OAAAC;AAAA,IACA,aAAAC;AAAA,IACA,IAAAC;AAAA,IACA,QAAAC,IAAS;AAAA,IACT,SAAAC,IAAU;AAAA,IACV,WAAAC;AAAA,EAAA,GAEFC,MACG;;AACH,UAAM,EAAE,GAAAC,GAAG,MAAAC,EAAA,IAASC,EAAA,GACdC,IAAUC,EAAA,GACVC,IAASD,EAAA,GAET,CAACE,GAAoBC,CAAoB,IAC7CC,EAA6B;AAAA,MAC3B,OAAOrB;AAAA,MACP,cAAcC,OAAyBqB,IAAAvB,EAAM,CAAC,MAAP,gBAAAuB,EAAU,OAAM;AAAA,MACvD,UAAUpB;AAAA,IAAA,CACX,GACGqB,IAAkBJ,KAAsB,IAExCK,IAAe,MAAM;AACzB,MAAAnB,KAAA,QAAAA,KACAP,EAAa,EAAK;AAAA,IACpB,GAEM2B,IAAgB,MAAM;AAC1B,MAAKF,KACLnB,EAAUmB,CAAe;AAAA,IAC3B,GAEMG,IAAUC,EAAO9B,CAAI;AAC3B,IAAA6B,EAAQ,UAAU7B;AAClB,UAAM+B,IAAcD,EAAeJ,CAAe;AAClD,IAAAK,EAAY,UAAUL;AAEtB,UAAMM,IAAaF,EAAuB,IAAI;AAC9C,IAAAG,EAAoBlB,GAAK,MAAMiB,EAAW,SAA2B,CAAA,CAAE;AAEvE,UAAME,IAAcC;AAAA,MAClB,OAAO;AAAA,QACL,QAAQ,MAAMN,EAAQ;AAAA,QACtB,mBAAmB,MAAME,EAAY,WAAW;AAAA,QAChD,SAAS,MAAMH,EAAA;AAAA,QACf,SAAS,MAAMD,EAAA;AAAA,MAAa;AAAA;AAAA,MAG9B,CAAA;AAAA,IAAC;AAEH,IAAAS,EAAqB1C,IAAsBwC,GAAavB,CAAE;AAE1D,UAAM0B,IAAe/B,IACjB,KAAK;AAAA,MACH;AAAA,MACA,KAAK,IAAI,GAAIA,EAAM,OAAO,KAAK,IAAI,GAAGA,EAAM,KAAK,IAAK,GAAG;AAAA,IAAA,IAE3D,GACEgC,IAAYhC,IAAQA,EAAM,QAAQA,EAAM,QAAQ;AAEtD,WACE,gBAAAiC,EAACC,EAAiB,MAAjB,EAAsB,MAAAxC,GAAY,cAAAC,GACjC,UAAA,gBAAAwC,EAACD,EAAiB,QAAjB,EACC,UAAA;AAAA,MAAA,gBAAAD;AAAA,QAACC,EAAiB;AAAA,QAAjB;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA,EACA,KAAK,GAAG;AAAA,QAAA;AAAA,MAAA;AAAA,MAEZ,gBAAAC;AAAA,QAACD,EAAiB;AAAA,QAAjB;AAAA,UACC,KAAKR;AAAA,UACL,mBAAiBb;AAAA,UACjB,oBAAkBE;AAAA,UAClB,WAAWzB,GAAgB,EAAE,QAAAgB,GAAQ,SAAAC,GAAS,WAAAC,GAAW;AAAA,UACzD,kBAAe;AAAA,UACf,qBAAmBH;AAAA,UAEnB,UAAA;AAAA,YAAA,gBAAA4B,EAACC,EAAiB,OAAjB,EAAuB,IAAIrB,GAAS,SAAO,IAC1C,UAAA,gBAAAoB,EAAC,MAAA,EAAG,WAAU,mBAAmB,UAAA9B,KAASO,EAAE,eAAe,GAAE,GAC/D;AAAA,8BACCwB,EAAiB,aAAjB,EAA6B,IAAInB,GAAQ,SAAO,IAC/C,UAAA,gBAAAkB,EAAC,KAAA,EAAE,WAAU,qEACV,UAAA7B,KAAeM,EAAE,qBAAqB,GACzC,GACF;AAAA,YAECV,IACC,gBAAAmC,EAAC,OAAA,EAAI,WAAU,6BACb,UAAA;AAAA,cAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,gFACZ,UAAA;AAAA,gBAAAH,IACC,gBAAAC;AAAA,kBAACG;AAAA,kBAAA;AAAA,oBACC,eAAY;AAAA,oBACZ,WAAU;AAAA,kBAAA;AAAA,gBAAA,IAEV;AAAA,gBACJ,gBAAAH;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAW;AAAA,sBACT;AAAA,sBACAD,IACI,uCACA;AAAA,oBAAA,EACJ,KAAK,GAAG;AAAA,oBAET,UAAAA,IACGtB,EAAE,mBAAmB,IACrBA,EAAE,sBAAsB;AAAA,sBACtB,MAAMV,EAAM;AAAA,sBACZ,OAAOA,EAAM;AAAA,oBAAA,CACd;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACP,GACF;AAAA,cACA,gBAAAiC;AAAA,gBAACI;AAAA,gBAAA;AAAA,kBACC,OAAON;AAAA,kBACP,KAAK;AAAA,kBACL,WAAWrB,EAAE,sBAAsB;AAAA,oBACjC,MAAMV,EAAM;AAAA,oBACZ,OAAOA,EAAM;AAAA,kBAAA,CACd;AAAA,kBACD,WACEgC,IACI,8DACA;AAAA,gBAAA;AAAA,cAAA;AAAA,YAER,EAAA,CACF,IACE;AAAA,YAEJ,gBAAAC;AAAA,cAACK,EAAgB;AAAA,cAAhB;AAAA,gBACC,OAAOlB;AAAA,gBACP,eAAeH;AAAA,gBACf,cAAYP,EAAE,eAAe;AAAA,gBAC7B,WAAU;AAAA,gBAET,UAAAd,EAAM,IAAI,CAAC2C,MAAS;AAKnB,wBAAMC,IAAiBC;AAAA,oBACrBF,EAAK;AAAA,oBACLA,EAAK;AAAA,oBACL5B,EAAK;AAAA,kBAAA,GAED+B,IAASH,EAAK,SAAS7B,EAAE6B,EAAK,MAAM,IAAI,QACxCI,IAAYD,IACdhC,EAAE,oBAAoB,EAAE,OAAO8B,GAAgB,QAAAE,EAAA,CAAQ,IACvDF,GACEI,IAAWlC,EAAE6B,EAAK,OAAO;AAC/B,yBACE,gBAAAJ;AAAA,oBAACG,EAAgB;AAAA,oBAAhB;AAAA,sBAEC,OAAOC,EAAK;AAAA,sBACZ,WAAW;AAAA,wBACT;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,sBAAA,EACA,KAAK,GAAG;AAAA,sBAEV,UAAA;AAAA,wBAAA,gBAAAJ,EAAC,QAAA,EAAK,WAAU,yEACd,UAAA;AAAA,0BAAA,gBAAAF,EAAC,QAAA,EAAK,WAAU,oBAAoB,UAAAW,GAAS;AAAA,0BAC7C,gBAAAX,EAAC,QAAA,EAAK,WAAU,mBAAmB,UAAAU,EAAA,CAAU;AAAA,wBAAA,GAC/C;AAAA,wBACCJ,EAAK,gBAAgBA,EAAK,aAAa,SAAS,IAC/C,gBAAAN;AAAA,0BAAC;AAAA,0BAAA;AAAA,4BACC,cAAYvB,EAAE,kBAAkB;AAAA,4BAChC,WAAU;AAAA,4BAET,UAAA6B,EAAK,aAAa,IAAI,CAACM,GAAKC,MAC3B,gBAAAX;AAAA,8BAAC;AAAA,8BAAA;AAAA,gCAEC,WAAU;AAAA,gCAEV,UAAA;AAAA,kCAAA,gBAAAF;AAAA,oCAACc;AAAA,oCAAA;AAAA,sCACC,eAAY;AAAA,sCACZ,WAAU;AAAA,oCAAA;AAAA,kCAAA;AAAA,kCAEZ,gBAAAd,EAAC,QAAA,EAAM,UAAAvB,EAAEmC,CAAG,EAAA,CAAE;AAAA,gCAAA;AAAA,8BAAA;AAAA,8BAPTC;AAAA,4BAAA,CASR;AAAA,0BAAA;AAAA,wBAAA,IAED;AAAA,sBAAA;AAAA,oBAAA;AAAA,oBAnCCP,EAAK;AAAA,kBAAA;AAAA,gBAsChB,CAAC;AAAA,cAAA;AAAA,YAAA;AAAA,YAGH,gBAAAJ,EAAC,OAAA,EAAI,WAAU,+FACb,UAAA;AAAA,cAAA,gBAAAF,EAACC,EAAiB,QAAjB,EAAwB,SAAO,IAC9B,UAAA,gBAAAD,EAACe,GAAA,EAAO,QAAO,WAAU,SAAS3B,GAC/B,UAAAX,EAAE,gBAAgB,GACrB,GACF;AAAA,cACA,gBAAAuB,EAACC,EAAiB,QAAjB,EAAwB,SAAO,IAC9B,UAAA,gBAAAD,EAACe,GAAA,EAAO,QAAO,WAAU,SAAS1B,GAC/B,UAAAZ,EAAE,iBAAiB,GACtB,EAAA,CACF;AAAA,YAAA,EAAA,CACF;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACF,EAAA,CACF,EAAA,CACF;AAAA,EAEJ;AACF;AAEAlB,GAAgB,cAAc;"}
@@ -0,0 +1,488 @@
1
+ import { jsxs as n, jsx as a, Fragment as se } from "react/jsx-runtime";
2
+ import { forwardRef as ne, useState as m, useMemo as g, useEffect as oe, useRef as ie } from "react";
3
+ import { c as de } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as ce } from "react-i18next";
5
+ import { u as ue } from "./registry-DvAUVLHh.js";
6
+ import { R as d } from "./radio-TWf9Q-mp.js";
7
+ import { R as S } from "./radio-group-CI-6SmSw.js";
8
+ import { F as k } from "./form-field-M5UpX65Z.js";
9
+ import { D as _ } from "./date-picker-Bp64zk2p.js";
10
+ import { S as me } from "./select-BW5ecXlX.js";
11
+ import { S as ge } from "./switch-OILsBLWo.js";
12
+ import { C as E } from "./card-DPmk26CL.js";
13
+ import { B as G } from "./badge-DCOqV9mI.js";
14
+ import { I as pe } from "./insert-result-D074GtHX.js";
15
+ import { c as he, g as fe, e as ye, f as ve, A as be, h as Ae, i as De, G as Ce } from "./antenatal-schedule-timeline-u8TsS2QJ.js";
16
+ import { s as we } from "./subDays-CAUv47M1.js";
17
+ import { c as j } from "./date-picker-variants-pKAJfnWr.js";
18
+ import { p as Se } from "./parseISO-fOGpHKXm.js";
19
+ import { f as ke } from "./format-4HNwNGrN.js";
20
+ const x = "Superseded by the `pregnancy-dating` adapter.", F = {
21
+ type: "string",
22
+ pattern: "^\\d{4}-\\d{2}-\\d{2}$"
23
+ }, xe = {
24
+ id: "gestational-age-calculator",
25
+ // set_value → the three `set_*` actions + the `inputs` state slot.
26
+ capabilities: ["set_value"],
27
+ state: {
28
+ inputs: {
29
+ type: "{ method: 'lmp' | 'edd', referenceDate: string | null, asOfDate: string }",
30
+ descriptionKey: "ui.agent.gestationalAgeCalculator.state.inputs",
31
+ description: "The dating inputs as entered — whether the reference date is a last period or a known due date, that date, and the evaluation date. Dates are `yyyy-MM-dd`. Read this to see which method a reference date will be interpreted under.",
32
+ read: (s) => s.getInputs()
33
+ },
34
+ result: {
35
+ type: "{ gestationalAge: { weeks: number, days: number, totalDays: number } | null, trimester: string, dueDate: string } | null",
36
+ descriptionKey: "ui.agent.gestationalAgeCalculator.state.result",
37
+ description: "Computed gestational age in completed weeks + days as of the evaluation date, the trimester band (preconception / first / second / third / postterm), and the estimated delivery date. Null until a reference date is set.",
38
+ read: (s) => s.getResult()
39
+ }
40
+ },
41
+ actions: {
42
+ set_method: {
43
+ // Drives the same local input state a user picks; nothing is persisted
44
+ // to a record, and the choice is reversible in the same UI.
45
+ safety: "write",
46
+ argsType: "{ method: 'lmp' | 'edd' }",
47
+ argsSchema: {
48
+ type: "object",
49
+ properties: {
50
+ method: {
51
+ enum: ["lmp", "edd"],
52
+ description: "Whether the reference date is the last menstrual period or a known estimated delivery date."
53
+ }
54
+ },
55
+ required: ["method"],
56
+ additionalProperties: !1
57
+ },
58
+ idempotent: !0,
59
+ deprecated: x,
60
+ returns: "boolean",
61
+ returnsSchema: {
62
+ type: "boolean",
63
+ description: "True when the method was applied."
64
+ },
65
+ errors: ["Returns false for a method other than `lmp` or `edd`."],
66
+ descriptionKey: "ui.agent.gestationalAgeCalculator.actions.setMethod",
67
+ description: "Choose how the reference date is read. The date is kept and re-interpreted under the new method, so set the method first — an EDD may be in the future, an LMP may not.",
68
+ invoke: (s, o) => s.setMethod(o.method)
69
+ },
70
+ set_reference_date: {
71
+ safety: "write",
72
+ argsType: "{ date: string | null }",
73
+ argsSchema: {
74
+ type: "object",
75
+ properties: {
76
+ date: {
77
+ oneOf: [
78
+ {
79
+ ...F,
80
+ description: "Local calendar date, `yyyy-MM-dd`."
81
+ },
82
+ { type: "null" }
83
+ ],
84
+ description: "The last period (not in the future) or the known due date, depending on the active method — or null to clear it."
85
+ }
86
+ },
87
+ required: ["date"],
88
+ additionalProperties: !1
89
+ },
90
+ idempotent: !0,
91
+ deprecated: x,
92
+ returns: "boolean",
93
+ returnsSchema: {
94
+ type: "boolean",
95
+ description: "True when the date was applied."
96
+ },
97
+ errors: [
98
+ "Returns false for an unparseable date, or for a future date under the `lmp` method — the on-screen DatePicker caps an LMP at today."
99
+ ],
100
+ examples: [
101
+ {
102
+ args: { date: "2026-01-12" },
103
+ note: "Under the default LMP method, a last period starting 12 January."
104
+ }
105
+ ],
106
+ descriptionKey: "ui.agent.gestationalAgeCalculator.actions.setReferenceDate",
107
+ description: "Set the dating anchor. This is the only required input — the result stays null without it.",
108
+ invoke: (s, o) => s.setReferenceDate(o.date)
109
+ },
110
+ set_as_of_date: {
111
+ safety: "write",
112
+ argsType: "{ date: string }",
113
+ argsSchema: {
114
+ type: "object",
115
+ properties: {
116
+ date: {
117
+ ...F,
118
+ description: "Date to evaluate gestational age and trimester against, `yyyy-MM-dd`. May be in the future to project forward."
119
+ }
120
+ },
121
+ required: ["date"],
122
+ additionalProperties: !1
123
+ },
124
+ idempotent: !0,
125
+ deprecated: x,
126
+ returns: "boolean",
127
+ returnsSchema: {
128
+ type: "boolean",
129
+ description: "True when the date was applied."
130
+ },
131
+ errors: ["Returns false for an unparseable date."],
132
+ examples: [
133
+ {
134
+ args: { date: "2026-09-15" },
135
+ note: "Project gestational age forward to an upcoming appointment."
136
+ }
137
+ ],
138
+ descriptionKey: "ui.agent.gestationalAgeCalculator.actions.setAsOfDate",
139
+ description: "Set the date gestational age, trimester and the antenatal schedule are evaluated against. Defaults to today; the estimated delivery date itself does not depend on it.",
140
+ invoke: (s, o) => s.setAsOfDate(o.date)
141
+ }
142
+ },
143
+ domHooks: {
144
+ root: {
145
+ attr: "data-component",
146
+ value: "gestational-age-calculator",
147
+ description: "Marks the GestationalAgeCalculator (current gestational age, trimester and milestones from LMP or due date)."
148
+ },
149
+ instanceId: {
150
+ attr: "data-component-id",
151
+ sourceProp: "id",
152
+ description: "Sourced from the id prop. Also the registry key — without an `id` the instance does not register and the handle-driven actions/state are unreachable."
153
+ }
154
+ }
155
+ }, Ne = de("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
156
+ variants: {
157
+ width: { full: "ds:w-full", auto: "ds:inline-flex" }
158
+ },
159
+ defaultVariants: { width: "full" }
160
+ }), N = (s) => ke(s, "yyyy-MM-dd"), V = (s) => {
161
+ const o = Se(s);
162
+ return Number.isNaN(o.getTime()) ? null : o;
163
+ }, Re = ne(
164
+ ({
165
+ defaultMethod: s = "lmp",
166
+ defaultReferenceDate: o,
167
+ onResultChange: p,
168
+ onInsert: R,
169
+ insertVariant: T = "insert",
170
+ onCopy: B,
171
+ onError: K,
172
+ insertBrand: q,
173
+ showSchedule: b = !1,
174
+ defaultPlurality: z = "singleton",
175
+ defaultChorionicity: H = "unknown",
176
+ defaultRhNegative: J = !1,
177
+ defaultGdmRisk: U,
178
+ scheduleOptions: M,
179
+ id: O,
180
+ width: W,
181
+ className: Y
182
+ }, Q) => {
183
+ const { t, i18n: P } = ce(), [c, I] = m(s), [u, A] = m(
184
+ o
185
+ ), [i, L] = m(() => /* @__PURE__ */ new Date()), X = g(() => /* @__PURE__ */ new Date(), []), [h, Z] = m(z), [D, ee] = m(H), [C, te] = m(J), [f, ae] = m(
186
+ U ?? "none"
187
+ ), r = g(() => {
188
+ if (!u) return null;
189
+ const e = c === "lmp" ? u : we(u, Ce), l = he({ method: "lmp", date: e }, i);
190
+ return {
191
+ result: {
192
+ gestationalAge: l.gestationalAge,
193
+ trimester: l.trimester,
194
+ dueDate: l.dueDate
195
+ },
196
+ milestones: fe(l.gestationalStart),
197
+ gestationalStart: l.gestationalStart
198
+ };
199
+ }, [c, u, i]), y = g(() => !b || !r ? null : ye(r.gestationalStart, {
200
+ ...M,
201
+ today: i,
202
+ plurality: h,
203
+ chorionicity: D,
204
+ rhNegative: C,
205
+ gdmRisk: f === "none" ? void 0 : f
206
+ }), [
207
+ b,
208
+ r,
209
+ i,
210
+ M,
211
+ h,
212
+ D,
213
+ C,
214
+ f
215
+ ]), re = g(
216
+ () => [
217
+ "unknown",
218
+ "dichorionic-diamniotic",
219
+ "monochorionic-diamniotic",
220
+ "monochorionic-monoamniotic"
221
+ ].map((e) => ({
222
+ value: e,
223
+ label: t(`antenatalSchedule.chorionicity.${e}`)
224
+ })),
225
+ [t]
226
+ ), $ = g(
227
+ () => new Intl.DateTimeFormat(P.language, { dateStyle: "medium" }),
228
+ [P.language]
229
+ );
230
+ oe(() => {
231
+ p == null || p((r == null ? void 0 : r.result) ?? null);
232
+ }, [r, p]);
233
+ const v = ie({ method: c, refDate: u, asOfDate: i, data: r });
234
+ v.current = { method: c, refDate: u, asOfDate: i, data: r };
235
+ const le = g(
236
+ () => ({
237
+ getInputs: () => {
238
+ const e = v.current;
239
+ return {
240
+ method: e.method,
241
+ referenceDate: e.refDate ? N(e.refDate) : null,
242
+ asOfDate: N(e.asOfDate)
243
+ };
244
+ },
245
+ getResult: () => {
246
+ var l;
247
+ const e = (l = v.current.data) == null ? void 0 : l.result;
248
+ return e ? {
249
+ gestationalAge: e.gestationalAge ? { ...e.gestationalAge } : null,
250
+ trimester: e.trimester,
251
+ dueDate: N(e.dueDate)
252
+ } : null;
253
+ },
254
+ setMethod: (e) => e !== "lmp" && e !== "edd" ? !1 : (I(e), !0),
255
+ setReferenceDate: (e) => {
256
+ if (e === null)
257
+ return A(void 0), !0;
258
+ const l = V(e);
259
+ return !l || v.current.method === "lmp" && j(l, /* @__PURE__ */ new Date()) ? !1 : (A(l), !0);
260
+ },
261
+ setAsOfDate: (e) => {
262
+ const l = V(e);
263
+ return l ? (L(l), !0) : !1;
264
+ }
265
+ }),
266
+ []
267
+ );
268
+ ue(xe, le, O);
269
+ const w = (e) => e ? t("gestationalAgeCalculator.gestation", {
270
+ weeks: e.weeks,
271
+ days: e.days
272
+ }) : "—";
273
+ return /* @__PURE__ */ n(
274
+ "div",
275
+ {
276
+ ref: Q,
277
+ "data-component": "gestational-age-calculator",
278
+ "data-component-id": O,
279
+ className: Ne({ width: W, className: Y }),
280
+ children: [
281
+ /* @__PURE__ */ n(
282
+ S,
283
+ {
284
+ label: t("gestationalAgeCalculator.method.label"),
285
+ variant: "horizontal",
286
+ value: c,
287
+ onValueChange: (e) => I(e),
288
+ children: [
289
+ /* @__PURE__ */ a(d, { label: t("gestationalAgeCalculator.method.lmp"), value: "lmp" }),
290
+ /* @__PURE__ */ a(d, { label: t("gestationalAgeCalculator.method.edd"), value: "edd" })
291
+ ]
292
+ }
293
+ ),
294
+ /* @__PURE__ */ a(
295
+ k,
296
+ {
297
+ label: t(
298
+ c === "lmp" ? "gestationalAgeCalculator.lmpDate" : "gestationalAgeCalculator.eddDate"
299
+ ),
300
+ children: /* @__PURE__ */ a(
301
+ _,
302
+ {
303
+ value: u,
304
+ onChange: A,
305
+ maxDate: c === "lmp" ? X : void 0
306
+ }
307
+ )
308
+ }
309
+ ),
310
+ /* @__PURE__ */ a(
311
+ k,
312
+ {
313
+ label: t("gestationalAgeCalculator.asOfDate"),
314
+ description: t("gestationalAgeCalculator.asOfDateHint"),
315
+ children: /* @__PURE__ */ a(_, { value: i, onChange: (e) => e && L(e) })
316
+ }
317
+ ),
318
+ b ? /* @__PURE__ */ n(se, { children: [
319
+ /* @__PURE__ */ n(
320
+ S,
321
+ {
322
+ label: t("antenatalSchedule.plurality.label"),
323
+ variant: "horizontal",
324
+ value: h,
325
+ onValueChange: (e) => Z(e),
326
+ children: [
327
+ /* @__PURE__ */ a(
328
+ d,
329
+ {
330
+ label: t("antenatalSchedule.plurality.singleton"),
331
+ value: "singleton"
332
+ }
333
+ ),
334
+ /* @__PURE__ */ a(
335
+ d,
336
+ {
337
+ label: t("antenatalSchedule.plurality.twin"),
338
+ value: "twin"
339
+ }
340
+ ),
341
+ /* @__PURE__ */ a(
342
+ d,
343
+ {
344
+ label: t("antenatalSchedule.plurality.triplet"),
345
+ value: "triplet"
346
+ }
347
+ )
348
+ ]
349
+ }
350
+ ),
351
+ h !== "singleton" ? /* @__PURE__ */ a(k, { label: t("antenatalSchedule.chorionicity.label"), children: /* @__PURE__ */ a(
352
+ me,
353
+ {
354
+ options: re,
355
+ value: D,
356
+ onValueChange: (e) => ee(e)
357
+ }
358
+ ) }) : null,
359
+ /* @__PURE__ */ a(
360
+ ge,
361
+ {
362
+ label: t("antenatalSchedule.rhNegative"),
363
+ checked: C,
364
+ onCheckedChange: te
365
+ }
366
+ ),
367
+ /* @__PURE__ */ n(
368
+ S,
369
+ {
370
+ label: t("antenatalSchedule.gdmRisk.label"),
371
+ variant: "horizontal",
372
+ value: f,
373
+ onValueChange: (e) => ae(e),
374
+ children: [
375
+ /* @__PURE__ */ a(d, { label: t("antenatalSchedule.gdmRisk.none"), value: "none" }),
376
+ /* @__PURE__ */ a(
377
+ d,
378
+ {
379
+ label: t("antenatalSchedule.gdmRisk.medium"),
380
+ value: "medium"
381
+ }
382
+ ),
383
+ /* @__PURE__ */ a(d, { label: t("antenatalSchedule.gdmRisk.high"), value: "high" })
384
+ ]
385
+ }
386
+ )
387
+ ] }) : null,
388
+ /* @__PURE__ */ a("p", { className: "ds:sr-only", role: "status", "aria-live": "polite", children: r ? `${t("gestationalAgeCalculator.gestationLabel")}: ${w(
389
+ r.result.gestationalAge
390
+ )}. ${t("gestationalAgeCalculator.trimesterLabel")}: ${t(
391
+ `gestationalAgeCalculator.trimester.${r.result.trimester}`
392
+ )}.` : "" }),
393
+ r ? /* @__PURE__ */ a(E, { variant: "elevated", children: /* @__PURE__ */ n(E.Body, { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
394
+ /* @__PURE__ */ n("dl", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2", children: [
395
+ /* @__PURE__ */ n("div", { className: "ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]", children: [
396
+ /* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: t("gestationalAgeCalculator.trimesterLabel") }),
397
+ /* @__PURE__ */ a("dd", { children: /* @__PURE__ */ a(
398
+ G,
399
+ {
400
+ variant: ve[r.result.trimester],
401
+ size: "lg",
402
+ children: t(
403
+ `gestationalAgeCalculator.trimester.${r.result.trimester}`
404
+ )
405
+ }
406
+ ) })
407
+ ] }),
408
+ /* @__PURE__ */ n("div", { className: "ds:flex ds:flex-col ds:items-end ds:gap-[var(--spacing-xs)] ds:text-end", children: [
409
+ /* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: t("gestationalAgeCalculator.gestationLabel") }),
410
+ /* @__PURE__ */ a("dd", { className: "type-metric ds:text-foreground", children: w(r.result.gestationalAge) })
411
+ ] })
412
+ ] }),
413
+ /* @__PURE__ */ n("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
414
+ /* @__PURE__ */ a("span", { className: "type-label ds:text-muted-foreground", children: t("gestationalAgeCalculator.milestonesLabel") }),
415
+ /* @__PURE__ */ a("ul", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: r.milestones.map((e) => {
416
+ const l = j(i, e.date);
417
+ return /* @__PURE__ */ n(
418
+ "li",
419
+ {
420
+ className: "ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-md)]",
421
+ children: [
422
+ /* @__PURE__ */ a("span", { className: "type-body ds:text-foreground", children: t(`gestationalAgeCalculator.milestone.${e.key}`) }),
423
+ /* @__PURE__ */ n("span", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-sm)]", children: [
424
+ /* @__PURE__ */ a("span", { className: "type-body ds:text-muted-foreground", children: $.format(e.date) }),
425
+ l ? /* @__PURE__ */ a(G, { variant: "success", children: t("gestationalAgeCalculator.reached") }) : null
426
+ ] })
427
+ ]
428
+ },
429
+ e.key
430
+ );
431
+ }) })
432
+ ] })
433
+ ] }) }) : /* @__PURE__ */ a("p", { className: "type-body ds:text-muted-foreground", children: t("gestationalAgeCalculator.empty") }),
434
+ y ? /* @__PURE__ */ a(be, { events: y }) : null,
435
+ r && (T === "copy" || R) ? /* @__PURE__ */ a(
436
+ pe,
437
+ {
438
+ onInsert: R,
439
+ variant: T,
440
+ onCopy: B,
441
+ onError: K,
442
+ card: {
443
+ title: t("insert.title.gestationalAge"),
444
+ icon: "baby",
445
+ highlight: t(
446
+ `gestationalAgeCalculator.trimester.${r.result.trimester}`
447
+ ),
448
+ // Chip shares the trimester's semantic token so the inserted PNG
449
+ // chip matches the on-screen trimester badge — with the
450
+ // contrast-safe orange override for the `--warning` third trimester.
451
+ highlightToken: De(r.result.trimester),
452
+ brand: q,
453
+ fields: [
454
+ {
455
+ // Gestational age is an elapsed duration → clock glyph.
456
+ icon: "clock",
457
+ label: t("gestationalAgeCalculator.gestationLabel"),
458
+ value: w(r.result.gestationalAge)
459
+ },
460
+ {
461
+ // Trimester is a clinical-stage classification → tag.
462
+ icon: "tag",
463
+ label: t("gestationalAgeCalculator.trimesterLabel"),
464
+ value: t(
465
+ `gestationalAgeCalculator.trimester.${r.result.trimester}`
466
+ )
467
+ },
468
+ // When the schedule is shown, the single Insert button carries
469
+ // the exam windows too (no second button).
470
+ ...y ? Ae(
471
+ y,
472
+ t,
473
+ (e) => $.format(e)
474
+ ) : []
475
+ ]
476
+ }
477
+ }
478
+ ) : null
479
+ ]
480
+ }
481
+ );
482
+ }
483
+ );
484
+ Re.displayName = "GestationalAgeCalculator";
485
+ export {
486
+ Re as G
487
+ };
488
+ //# sourceMappingURL=gestational-age-calculator-BljY_DVJ.js.map