@alfadocs/ui-kit-debug 1.3.13 → 1.4.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.
- package/dist/_chunks/agenda-card.agent-Cb5tuEh3.js +28 -0
- package/dist/_chunks/agenda-card.agent-Cb5tuEh3.js.map +1 -0
- package/dist/_chunks/{alia-sidebar-DzNz1gDf.js → alia-sidebar-DSBZMick.js} +3 -3
- package/dist/_chunks/{alia-sidebar-DzNz1gDf.js.map → alia-sidebar-DSBZMick.js.map} +1 -1
- package/dist/_chunks/{anamnesis-i18n-CfC0qYzy.js → anamnesis-i18n-BA631X4t.js} +2209 -2144
- package/dist/_chunks/anamnesis-i18n-BA631X4t.js.map +1 -0
- package/dist/_chunks/{antenatal-schedule-timeline-BMMpi2lb.js → antenatal-schedule-timeline-u8TsS2QJ.js} +27 -26
- package/dist/_chunks/{antenatal-schedule-timeline-BMMpi2lb.js.map → antenatal-schedule-timeline-u8TsS2QJ.js.map} +1 -1
- package/dist/_chunks/{appointment-timeline-B630OT_J.js → appointment-timeline-Bqf1sTU5.js} +2 -2
- package/dist/_chunks/{appointment-timeline-B630OT_J.js.map → appointment-timeline-Bqf1sTU5.js.map} +1 -1
- package/dist/_chunks/{ar-THMLfSoN.js → ar-BR1FGFP2.js} +14 -14
- package/dist/_chunks/{ar-THMLfSoN.js.map → ar-BR1FGFP2.js.map} +1 -1
- package/dist/_chunks/{bmi-calculator-CM0-G2mg.js → bmi-calculator-CpyY13MV.js} +2 -2
- package/dist/_chunks/{bmi-calculator-CM0-G2mg.js.map → bmi-calculator-CpyY13MV.js.map} +1 -1
- package/dist/_chunks/{booking-DjNbd7C1.js → booking-BjsA7j1-.js} +699 -688
- package/dist/_chunks/booking-BjsA7j1-.js.map +1 -0
- package/dist/_chunks/calculator-dialog-12d3Sxaz.js +48 -0
- package/dist/_chunks/{calculator-dialog-DuXMQSdm.js.map → calculator-dialog-12d3Sxaz.js.map} +1 -1
- package/dist/_chunks/{care-plan-card-1G_f4I5s.js → care-plan-card-BvQy366X.js} +3 -3
- package/dist/_chunks/{care-plan-card-1G_f4I5s.js.map → care-plan-card-BvQy366X.js.map} +1 -1
- package/dist/_chunks/{care-plan-entry-card-DmBsffHS.js → care-plan-entry-card-apk_5B3O.js} +2 -2
- package/dist/_chunks/{care-plan-entry-card-DmBsffHS.js.map → care-plan-entry-card-apk_5B3O.js.map} +1 -1
- package/dist/_chunks/{chat-container-HlFnoEIl.js → chat-container-CYYego1W.js} +105 -81
- package/dist/_chunks/chat-container-CYYego1W.js.map +1 -0
- package/dist/_chunks/cycle-calculator-B7fyH-h4.js +425 -0
- package/dist/_chunks/cycle-calculator-B7fyH-h4.js.map +1 -0
- package/dist/_chunks/{date-picker-ZHejTVAJ.js → date-picker-Bp64zk2p.js} +19 -19
- package/dist/_chunks/{date-picker-ZHejTVAJ.js.map → date-picker-Bp64zk2p.js.map} +1 -1
- package/dist/_chunks/date-picker-variants-pKAJfnWr.js +2089 -0
- package/dist/_chunks/date-picker-variants-pKAJfnWr.js.map +1 -0
- package/dist/_chunks/{date-range-picker-pEG3Ln3i.js → date-range-picker-CDrZ8Zh0.js} +27 -27
- package/dist/_chunks/{date-range-picker-pEG3Ln3i.js.map → date-range-picker-CDrZ8Zh0.js.map} +1 -1
- package/dist/_chunks/{date-time-picker-695QvBGj.js → date-time-picker-DafkGDGO.js} +10 -10
- package/dist/_chunks/{date-time-picker-695QvBGj.js.map → date-time-picker-DafkGDGO.js.map} +1 -1
- package/dist/_chunks/{de-DmZ-8rTN.js → de-3iM4rGqo.js} +7 -7
- package/dist/_chunks/{de-DmZ-8rTN.js.map → de-3iM4rGqo.js.map} +1 -1
- package/dist/_chunks/{document-preview-D3gg4MXB.js → document-preview-DOrsqiN1.js} +2 -2
- package/dist/_chunks/{document-preview-D3gg4MXB.js.map → document-preview-DOrsqiN1.js.map} +1 -1
- package/dist/_chunks/due-date-calculator-CnkbbAej.js +571 -0
- package/dist/_chunks/due-date-calculator-CnkbbAej.js.map +1 -0
- package/dist/_chunks/{editor-overlay-DE3esyio.js → editor-overlay-B1tr2i7B.js} +22 -21
- package/dist/_chunks/editor-overlay-B1tr2i7B.js.map +1 -0
- package/dist/_chunks/{el-Bela9mxs.js → el-C96rGJvU.js} +2 -2
- package/dist/_chunks/{el-Bela9mxs.js.map → el-C96rGJvU.js.map} +1 -1
- package/dist/_chunks/{es-BNncHKex.js → es-Cxiqjx8r.js} +12 -12
- package/dist/_chunks/{es-BNncHKex.js.map → es-Cxiqjx8r.js.map} +1 -1
- package/dist/_chunks/fetal-weight-avlj-l-S.js +223 -0
- package/dist/_chunks/fetal-weight-avlj-l-S.js.map +1 -0
- package/dist/_chunks/format-4HNwNGrN.js +1315 -0
- package/dist/_chunks/format-4HNwNGrN.js.map +1 -0
- package/dist/_chunks/{fr-CH8ADfhN.js → fr-Bhr6SYKj.js} +21 -21
- package/dist/_chunks/{fr-CH8ADfhN.js.map → fr-Bhr6SYKj.js.map} +1 -1
- package/dist/_chunks/{freemium-paywall-C_Ue6wxU.js → freemium-paywall-DRDdWuOg.js} +3 -3
- package/dist/_chunks/{freemium-paywall-C_Ue6wxU.js.map → freemium-paywall-DRDdWuOg.js.map} +1 -1
- package/dist/_chunks/gestational-age-calculator-BljY_DVJ.js +488 -0
- package/dist/_chunks/gestational-age-calculator-BljY_DVJ.js.map +1 -0
- package/dist/_chunks/hcg-doubling-Cv_vH61p.js +312 -0
- package/dist/_chunks/hcg-doubling-Cv_vH61p.js.map +1 -0
- package/dist/_chunks/header-settings-Cn5fPXCE.js +335 -0
- package/dist/_chunks/header-settings-Cn5fPXCE.js.map +1 -0
- package/dist/_chunks/{hi-Bppfxp8l.js → hi-BxXX26d_.js} +12 -12
- package/dist/_chunks/{hi-Bppfxp8l.js.map → hi-BxXX26d_.js.map} +1 -1
- package/dist/_chunks/isSameWeek-B73MagWB.js +13 -0
- package/dist/_chunks/{isSameWeek-CK4HS9lH.js.map → isSameWeek-B73MagWB.js.map} +1 -1
- package/dist/_chunks/{it-B4ySaRyK.js → it-Xmjomvyj.js} +24 -24
- package/dist/_chunks/{it-B4ySaRyK.js.map → it-Xmjomvyj.js.map} +1 -1
- package/dist/_chunks/{ja-CGF6Io9P.js → ja-mfZvt1ZV.js} +16 -16
- package/dist/_chunks/{ja-CGF6Io9P.js.map → ja-mfZvt1ZV.js.map} +1 -1
- package/dist/_chunks/{link-cell-renderer-C5XLwVXQ.js → link-cell-renderer-CJ_gk7gl.js} +3 -3
- package/dist/_chunks/{link-cell-renderer-C5XLwVXQ.js.map → link-cell-renderer-CJ_gk7gl.js.map} +1 -1
- package/dist/_chunks/{locale-picker-BfBUdT1m.js → locale-picker-D9Kv2zrK.js} +153 -132
- package/dist/_chunks/locale-picker-D9Kv2zrK.js.map +1 -0
- package/dist/_chunks/map-view-2yZCQW2l.js +445 -0
- package/dist/_chunks/map-view-2yZCQW2l.js.map +1 -0
- package/dist/_chunks/{marketplace-app-shell-DwcFMxzp.js → marketplace-app-shell-BLRvg-M0.js} +49 -40
- package/dist/_chunks/marketplace-app-shell-BLRvg-M0.js.map +1 -0
- package/dist/_chunks/{nl-DuShqwuV.js → nl-DDs-KEnD.js} +15 -15
- package/dist/_chunks/{nl-DuShqwuV.js.map → nl-DDs-KEnD.js.map} +1 -1
- package/dist/_chunks/{notes-panel-DPsgB4Mv.js → notes-panel-CiFN3sLW.js} +2 -2
- package/dist/_chunks/{notes-panel-DPsgB4Mv.js.map → notes-panel-CiFN3sLW.js.map} +1 -1
- package/dist/_chunks/{number-input-DrozbZAU.js → number-input-DOe5VYei.js} +64 -64
- package/dist/_chunks/number-input-DOe5VYei.js.map +1 -0
- package/dist/_chunks/{optical-prescription-BDHJr8Zz.js → optical-prescription-CRemE8fL.js} +2 -2
- package/dist/_chunks/{optical-prescription-BDHJr8Zz.js.map → optical-prescription-CRemE8fL.js.map} +1 -1
- package/dist/_chunks/{parse-DvA97ro9.js → parse-JqixfsU0.js} +43 -43
- package/dist/_chunks/{parse-DvA97ro9.js.map → parse-JqixfsU0.js.map} +1 -1
- package/dist/_chunks/parseISO-fOGpHKXm.js +120 -0
- package/dist/_chunks/parseISO-fOGpHKXm.js.map +1 -0
- package/dist/_chunks/{patient-details-DqjjwPmt.js → patient-details-CpunD0qx.js} +3 -3
- package/dist/_chunks/{patient-details-DqjjwPmt.js.map → patient-details-CpunD0qx.js.map} +1 -1
- package/dist/_chunks/{patient-table-BmIDrLIS.js → patient-table-2eWx-Rrk.js} +2 -2
- package/dist/_chunks/{patient-table-BmIDrLIS.js.map → patient-table-2eWx-Rrk.js.map} +1 -1
- package/dist/_chunks/{payment-form-h-BZ8onk.js → payment-form-Ds1I9KqB.js} +308 -231
- package/dist/_chunks/payment-form-Ds1I9KqB.js.map +1 -0
- package/dist/_chunks/{pdf-viewer-Ddx-T053.js → pdf-viewer-DUIsV9s5.js} +429 -369
- package/dist/_chunks/pdf-viewer-DUIsV9s5.js.map +1 -0
- package/dist/_chunks/{pl-CKQwX9Fk.js → pl-BYYMnEWP.js} +18 -18
- package/dist/_chunks/{pl-CKQwX9Fk.js.map → pl-BYYMnEWP.js.map} +1 -1
- package/dist/_chunks/{practice-results-B-HPc13W.js → practice-results-SjCniMd2.js} +2 -2
- package/dist/_chunks/{practice-results-B-HPc13W.js.map → practice-results-SjCniMd2.js.map} +1 -1
- package/dist/_chunks/pregnancy-dating-BmpHScZ0.js +770 -0
- package/dist/_chunks/pregnancy-dating-BmpHScZ0.js.map +1 -0
- package/dist/_chunks/pregnancy-weight-gain-B5KSJzdc.js +553 -0
- package/dist/_chunks/pregnancy-weight-gain-B5KSJzdc.js.map +1 -0
- package/dist/_chunks/progress-CK8otcQ-.js +343 -0
- package/dist/_chunks/progress-CK8otcQ-.js.map +1 -0
- package/dist/_chunks/{pt-_njpXyOZ.js → pt-BSPnVrQ7.js} +20 -20
- package/dist/_chunks/{pt-_njpXyOZ.js.map → pt-BSPnVrQ7.js.map} +1 -1
- package/dist/_chunks/{radiograph-panel.agent-BQZ64Riy.js → radiograph-panel.agent-CtFtNMzk.js} +3 -3
- package/dist/_chunks/{radiograph-panel.agent-BQZ64Riy.js.map → radiograph-panel.agent-CtFtNMzk.js.map} +1 -1
- package/dist/_chunks/{rich-text-editor-CfeXPPWs.js → rich-text-editor-BedTpWzL.js} +2 -2
- package/dist/_chunks/{rich-text-editor-CfeXPPWs.js.map → rich-text-editor-BedTpWzL.js.map} +1 -1
- package/dist/_chunks/{ro-3X6_4FcN.js → ro-BbiylGmG.js} +14 -14
- package/dist/_chunks/{ro-3X6_4FcN.js.map → ro-BbiylGmG.js.map} +1 -1
- package/dist/_chunks/{ru-bAcgmnS-.js → ru-BX_qsV67.js} +14 -14
- package/dist/_chunks/{ru-bAcgmnS-.js.map → ru-BX_qsV67.js.map} +1 -1
- package/dist/_chunks/{session-countdown-Bc70VXN1.js → session-countdown-BL-Psg8u.js} +2 -2
- package/dist/_chunks/{session-countdown-Bc70VXN1.js.map → session-countdown-BL-Psg8u.js.map} +1 -1
- package/dist/_chunks/{sign-document-CW_ByDUh.js → sign-document-jF4fZDJ5.js} +2 -2
- package/dist/_chunks/{sign-document-CW_ByDUh.js.map → sign-document-jF4fZDJ5.js.map} +1 -1
- package/dist/_chunks/slot-grid-DNiUcXy2.js +640 -0
- package/dist/_chunks/slot-grid-DNiUcXy2.js.map +1 -0
- package/dist/_chunks/{sparkline-BTY4B5tv.js → sparkline-BmGcEyZO.js} +209 -164
- package/dist/_chunks/sparkline-BmGcEyZO.js.map +1 -0
- package/dist/_chunks/{sq-jYFqr4Ga.js → sq-i9UOk4P7.js} +10 -10
- package/dist/_chunks/{sq-jYFqr4Ga.js.map → sq-i9UOk4P7.js.map} +1 -1
- package/dist/_chunks/subDays-CAUv47M1.js +8 -0
- package/dist/_chunks/{subDays-BcNi04uf.js.map → subDays-CAUv47M1.js.map} +1 -1
- package/dist/_chunks/{sv-BSGEJ-8B.js → sv-CpTdtmDQ.js} +8 -8
- package/dist/_chunks/{sv-BSGEJ-8B.js.map → sv-CpTdtmDQ.js.map} +1 -1
- package/dist/_chunks/{tab-bar-Axhk6xzx.js → tab-bar-BYESZINM.js} +83 -77
- package/dist/_chunks/tab-bar-BYESZINM.js.map +1 -0
- package/dist/_chunks/task-card.agent-CF2N_uu4.js +29 -0
- package/dist/_chunks/task-card.agent-CF2N_uu4.js.map +1 -0
- package/dist/_chunks/{tr-CTpgUtw6.js → tr-DXG2QN1K.js} +17 -17
- package/dist/_chunks/{tr-CTpgUtw6.js.map → tr-DXG2QN1K.js.map} +1 -1
- package/dist/_chunks/{unit-converter-COgkN7YP.js → unit-converter-CHPDuV7W.js} +2 -2
- package/dist/_chunks/{unit-converter-COgkN7YP.js.map → unit-converter-CHPDuV7W.js.map} +1 -1
- package/dist/_chunks/{warning-stack-BtjmJChC.js → warning-stack-B7t_8jRE.js} +42 -37
- package/dist/_chunks/{warning-stack-BtjmJChC.js.map → warning-stack-B7t_8jRE.js.map} +1 -1
- package/dist/_chunks/{zh-CN-BgM0Io2O.js → zh-CN-vPkPEK6H.js} +18 -18
- package/dist/_chunks/{zh-CN-BgM0Io2O.js.map → zh-CN-vPkPEK6H.js.map} +1 -1
- package/dist/agent-catalog.json +6426 -3382
- package/dist/agent-i18n/en.json +234 -15
- package/dist/components/agenda-card/agenda-card.agent.d.ts.map +1 -1
- package/dist/components/agenda-card/index.js +1 -1
- package/dist/components/appointment-timeline/index.js +1 -1
- package/dist/components/bmi-calculator/index.js +1 -1
- package/dist/components/booking/booking.d.ts.map +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/calculator-dialog/calculator-dialog.d.ts.map +1 -1
- package/dist/components/calculator-dialog/index.js +1 -1
- package/dist/components/care-plan-card/index.js +1 -1
- package/dist/components/care-plan-entry-card/index.js +1 -1
- package/dist/components/chat-container/chat-container.agent.d.ts.map +1 -1
- package/dist/components/chat-container/chat-container.d.ts +14 -0
- package/dist/components/chat-container/chat-container.d.ts.map +1 -1
- package/dist/components/chat-container/index.js +1 -1
- package/dist/components/cycle-calculator/cycle-calculator.agent.d.ts +4 -0
- package/dist/components/cycle-calculator/cycle-calculator.agent.d.ts.map +1 -0
- package/dist/components/cycle-calculator/cycle-calculator.d.ts +42 -0
- package/dist/components/cycle-calculator/cycle-calculator.d.ts.map +1 -1
- package/dist/components/cycle-calculator/index.d.ts +1 -1
- package/dist/components/cycle-calculator/index.d.ts.map +1 -1
- package/dist/components/cycle-calculator/index.js +1 -1
- package/dist/components/data-table/index.js +1 -1
- package/dist/components/date-picker/index.js +1 -1
- package/dist/components/date-range-picker/index.js +1 -1
- package/dist/components/date-time-picker/index.js +1 -1
- package/dist/components/document-preview/index.js +1 -1
- package/dist/components/due-date-calculator/due-date-calculator.agent.d.ts +4 -0
- package/dist/components/due-date-calculator/due-date-calculator.agent.d.ts.map +1 -0
- package/dist/components/due-date-calculator/due-date-calculator.d.ts +61 -1
- package/dist/components/due-date-calculator/due-date-calculator.d.ts.map +1 -1
- package/dist/components/due-date-calculator/index.d.ts +1 -1
- package/dist/components/due-date-calculator/index.d.ts.map +1 -1
- package/dist/components/due-date-calculator/index.js +2 -2
- package/dist/components/editor-overlay/editor-overlay.d.ts +7 -1
- package/dist/components/editor-overlay/editor-overlay.d.ts.map +1 -1
- package/dist/components/editor-overlay/index.js +1 -1
- package/dist/components/fetal-weight/fetal-weight.agent.d.ts +4 -0
- package/dist/components/fetal-weight/fetal-weight.agent.d.ts.map +1 -0
- package/dist/components/fetal-weight/fetal-weight.d.ts +26 -0
- package/dist/components/fetal-weight/fetal-weight.d.ts.map +1 -1
- package/dist/components/fetal-weight/index.d.ts +1 -1
- package/dist/components/fetal-weight/index.d.ts.map +1 -1
- package/dist/components/fetal-weight/index.js +1 -1
- package/dist/components/freemium-paywall/index.js +1 -1
- package/dist/components/gestational-age-calculator/gestational-age-calculator.agent.d.ts +4 -0
- package/dist/components/gestational-age-calculator/gestational-age-calculator.agent.d.ts.map +1 -0
- package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts +44 -2
- package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts.map +1 -1
- package/dist/components/gestational-age-calculator/index.d.ts +1 -1
- package/dist/components/gestational-age-calculator/index.d.ts.map +1 -1
- package/dist/components/gestational-age-calculator/index.js +1 -1
- package/dist/components/hcg-doubling/hcg-doubling.agent.d.ts +4 -0
- package/dist/components/hcg-doubling/hcg-doubling.agent.d.ts.map +1 -0
- package/dist/components/hcg-doubling/hcg-doubling.d.ts +30 -0
- package/dist/components/hcg-doubling/hcg-doubling.d.ts.map +1 -1
- package/dist/components/hcg-doubling/index.d.ts +1 -1
- package/dist/components/hcg-doubling/index.d.ts.map +1 -1
- package/dist/components/hcg-doubling/index.js +1 -1
- package/dist/components/header-settings/header-settings.agent.d.ts.map +1 -1
- package/dist/components/header-settings/header-settings.d.ts +13 -1
- package/dist/components/header-settings/header-settings.d.ts.map +1 -1
- package/dist/components/header-settings/index.js +1 -1
- package/dist/components/locale-picker/index.js +1 -1
- package/dist/components/locale-picker/locale-picker.agent.d.ts.map +1 -1
- package/dist/components/locale-picker/locale-picker.d.ts +9 -0
- package/dist/components/locale-picker/locale-picker.d.ts.map +1 -1
- package/dist/components/map-view/index.js +1 -1
- package/dist/components/map-view/map-view.agent.d.ts.map +1 -1
- package/dist/components/map-view/map-view.d.ts +22 -0
- package/dist/components/map-view/map-view.d.ts.map +1 -1
- package/dist/components/notes-panel/index.js +1 -1
- package/dist/components/number-input/index.js +1 -1
- package/dist/components/number-input/number-input.d.ts +2 -1
- package/dist/components/number-input/number-input.d.ts.map +1 -1
- package/dist/components/optical-prescription/index.js +1 -1
- package/dist/components/patient-details/index.js +1 -1
- package/dist/components/patient-table/index.js +1 -1
- package/dist/components/payment-form/index.d.ts +1 -1
- package/dist/components/payment-form/index.d.ts.map +1 -1
- package/dist/components/payment-form/index.js +1 -1
- package/dist/components/payment-form/payment-form.agent.d.ts.map +1 -1
- package/dist/components/payment-form/payment-form.d.ts +32 -1
- package/dist/components/payment-form/payment-form.d.ts.map +1 -1
- package/dist/components/pdf-viewer/index.js +1 -1
- package/dist/components/pdf-viewer/pdf-viewer.agent.d.ts.map +1 -1
- package/dist/components/pdf-viewer/pdf-viewer.d.ts +13 -0
- package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
- package/dist/components/practice-results/index.js +1 -1
- package/dist/components/pregnancy-dating/index.d.ts +1 -1
- package/dist/components/pregnancy-dating/index.d.ts.map +1 -1
- package/dist/components/pregnancy-dating/index.js +1 -1
- package/dist/components/pregnancy-dating/pregnancy-dating.agent.d.ts +4 -0
- package/dist/components/pregnancy-dating/pregnancy-dating.agent.d.ts.map +1 -0
- package/dist/components/pregnancy-dating/pregnancy-dating.d.ts +65 -1
- package/dist/components/pregnancy-dating/pregnancy-dating.d.ts.map +1 -1
- package/dist/components/pregnancy-weight-gain/index.d.ts +2 -1
- package/dist/components/pregnancy-weight-gain/index.d.ts.map +1 -1
- package/dist/components/pregnancy-weight-gain/index.js +6 -5
- package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.agent.d.ts +4 -0
- package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.agent.d.ts.map +1 -0
- package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts +35 -0
- package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts.map +1 -1
- package/dist/components/progress/index.js +1 -1
- package/dist/components/progress/progress.agent.d.ts.map +1 -1
- package/dist/components/progress/progress.d.ts +13 -0
- package/dist/components/progress/progress.d.ts.map +1 -1
- package/dist/components/radiograph-panel/index.js +1 -1
- package/dist/components/rich-text-editor/index.js +1 -1
- package/dist/components/session-countdown/index.js +1 -1
- package/dist/components/sign-document/index.js +1 -1
- package/dist/components/slot-grid/index.d.ts +2 -1
- package/dist/components/slot-grid/index.d.ts.map +1 -1
- package/dist/components/slot-grid/index.js +5 -4
- package/dist/components/slot-grid/slot-grid.agent.d.ts +4 -0
- package/dist/components/slot-grid/slot-grid.agent.d.ts.map +1 -0
- package/dist/components/slot-grid/slot-grid.d.ts +34 -0
- package/dist/components/slot-grid/slot-grid.d.ts.map +1 -1
- package/dist/components/sparkline/index.js +1 -1
- package/dist/components/sparkline/sparkline.agent.d.ts.map +1 -1
- package/dist/components/sparkline/sparkline.d.ts +10 -0
- package/dist/components/sparkline/sparkline.d.ts.map +1 -1
- package/dist/components/tab-bar/index.js +1 -1
- package/dist/components/tab-bar/tab-bar.d.ts +13 -0
- package/dist/components/tab-bar/tab-bar.d.ts.map +1 -1
- package/dist/components/task-card/index.js +1 -1
- package/dist/components/task-card/task-card.agent.d.ts.map +1 -1
- package/dist/components/unit-converter/index.js +1 -1
- package/dist/components/warning-stack/index.js +1 -1
- package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
- package/dist/index.js +630 -627
- package/dist/patterns/alia-assistant/index.js +1 -1
- package/dist/patterns/anamnesis/anamnesis-compare-panel.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-compile.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-derive.d.ts +27 -8
- package/dist/patterns/anamnesis/anamnesis-derive.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-evolution-grid.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-field.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-format.d.ts +11 -3
- package/dist/patterns/anamnesis/anamnesis-format.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-highlight.d.ts +6 -0
- package/dist/patterns/anamnesis/anamnesis-highlight.d.ts.map +1 -0
- package/dist/patterns/anamnesis/anamnesis-intake.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-matrix.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-questionnaire.d.ts +23 -9
- package/dist/patterns/anamnesis/anamnesis-questionnaire.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-readonly.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-target-strip.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-types.d.ts +7 -0
- package/dist/patterns/anamnesis/anamnesis-types.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-visit-note.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis.d.ts +16 -7
- package/dist/patterns/anamnesis/anamnesis.d.ts.map +1 -1
- package/dist/patterns/anamnesis/index.d.ts +3 -2
- package/dist/patterns/anamnesis/index.d.ts.map +1 -1
- package/dist/patterns/anamnesis/index.js +7 -6
- package/dist/patterns/marketplace-app-shell/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts +6 -0
- package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts.map +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +1 -1
- package/dist/_chunks/agenda-card.agent-mTCrkKSZ.js +0 -27
- package/dist/_chunks/agenda-card.agent-mTCrkKSZ.js.map +0 -1
- package/dist/_chunks/anamnesis-i18n-CfC0qYzy.js.map +0 -1
- package/dist/_chunks/booking-DjNbd7C1.js.map +0 -1
- package/dist/_chunks/calculator-dialog-DuXMQSdm.js +0 -40
- package/dist/_chunks/chat-container-HlFnoEIl.js.map +0 -1
- package/dist/_chunks/cycle-calculator-BwqYVPB4.js +0 -252
- package/dist/_chunks/cycle-calculator-BwqYVPB4.js.map +0 -1
- package/dist/_chunks/date-picker-variants-eL6HjWvw.js +0 -3363
- package/dist/_chunks/date-picker-variants-eL6HjWvw.js.map +0 -1
- package/dist/_chunks/due-date-calculator-CwfsFd3T.js +0 -256
- package/dist/_chunks/due-date-calculator-CwfsFd3T.js.map +0 -1
- package/dist/_chunks/editor-overlay-DE3esyio.js.map +0 -1
- package/dist/_chunks/fetal-weight-ePlLjJPc.js +0 -122
- package/dist/_chunks/fetal-weight-ePlLjJPc.js.map +0 -1
- package/dist/_chunks/gestational-age-calculator-DdgbH69Z.js +0 -311
- package/dist/_chunks/gestational-age-calculator-DdgbH69Z.js.map +0 -1
- package/dist/_chunks/hcg-doubling-BBqD2wI2.js +0 -170
- package/dist/_chunks/hcg-doubling-BBqD2wI2.js.map +0 -1
- package/dist/_chunks/header-settings--pjYOe6g.js +0 -284
- package/dist/_chunks/header-settings--pjYOe6g.js.map +0 -1
- package/dist/_chunks/isSameDay-DUEiAT0G.js +0 -39
- package/dist/_chunks/isSameDay-DUEiAT0G.js.map +0 -1
- package/dist/_chunks/isSameWeek-CK4HS9lH.js +0 -14
- package/dist/_chunks/locale-picker-BfBUdT1m.js.map +0 -1
- package/dist/_chunks/map-view-CsaHfoo6.js +0 -378
- package/dist/_chunks/map-view-CsaHfoo6.js.map +0 -1
- package/dist/_chunks/marketplace-app-shell-DwcFMxzp.js.map +0 -1
- package/dist/_chunks/number-input-DrozbZAU.js.map +0 -1
- package/dist/_chunks/payment-form-h-BZ8onk.js.map +0 -1
- package/dist/_chunks/pdf-viewer-Ddx-T053.js.map +0 -1
- package/dist/_chunks/pregnancy-dating-DzYTlBkT.js +0 -421
- package/dist/_chunks/pregnancy-dating-DzYTlBkT.js.map +0 -1
- package/dist/_chunks/pregnancy-weight-gain-O6J0sUIi.js +0 -322
- package/dist/_chunks/pregnancy-weight-gain-O6J0sUIi.js.map +0 -1
- package/dist/_chunks/progress-DA413-zn.js +0 -299
- package/dist/_chunks/progress-DA413-zn.js.map +0 -1
- package/dist/_chunks/slot-grid-CQSULZjd.js +0 -502
- package/dist/_chunks/slot-grid-CQSULZjd.js.map +0 -1
- package/dist/_chunks/sparkline-BTY4B5tv.js.map +0 -1
- package/dist/_chunks/subDays-BcNi04uf.js +0 -8
- package/dist/_chunks/tab-bar-Axhk6xzx.js.map +0 -1
- package/dist/_chunks/task-card.agent-Bt14CzUd.js +0 -25
- package/dist/_chunks/task-card.agent-Bt14CzUd.js.map +0 -1
|
@@ -1,256 +0,0 @@
|
|
|
1
|
-
import { jsxs as s, jsx as a } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as q, useState as c, useMemo as u, useEffect as J } from "react";
|
|
3
|
-
import { c as Q } from "./index-D2ZczOXr.js";
|
|
4
|
-
import { useTranslation as W } from "react-i18next";
|
|
5
|
-
import { R as m } from "./radio-TWf9Q-mp.js";
|
|
6
|
-
import { R as T } from "./radio-group-CI-6SmSw.js";
|
|
7
|
-
import { F as g } from "./form-field-M5UpX65Z.js";
|
|
8
|
-
import { D as b } from "./date-picker-ZHejTVAJ.js";
|
|
9
|
-
import { N as S } from "./number-input-DrozbZAU.js";
|
|
10
|
-
import { C as k } from "./card-DPmk26CL.js";
|
|
11
|
-
import { B } from "./badge-DCOqV9mI.js";
|
|
12
|
-
import { I as X } from "./insert-result-D074GtHX.js";
|
|
13
|
-
import { D as y, r as Z, c as ee, e as ae, f as te, A as le, h as re, i as se } from "./antenatal-schedule-timeline-BMMpi2lb.js";
|
|
14
|
-
const de = Q("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
15
|
-
variants: {
|
|
16
|
-
width: { full: "ds:w-full", auto: "ds:inline-flex" }
|
|
17
|
-
},
|
|
18
|
-
defaultVariants: { width: "full" }
|
|
19
|
-
}), oe = {
|
|
20
|
-
lmp: "dueDateCalculator.lmpDate",
|
|
21
|
-
conception: "dueDateCalculator.conceptionDate",
|
|
22
|
-
ivf: "dueDateCalculator.transferDate"
|
|
23
|
-
}, ce = q(
|
|
24
|
-
({
|
|
25
|
-
defaultMethod: F = "lmp",
|
|
26
|
-
onResultChange: p,
|
|
27
|
-
onInsert: x,
|
|
28
|
-
insertVariant: N = "insert",
|
|
29
|
-
onCopy: I,
|
|
30
|
-
onError: $,
|
|
31
|
-
insertBrand: R,
|
|
32
|
-
showSchedule: A = !1,
|
|
33
|
-
scheduleOptions: L,
|
|
34
|
-
id: _,
|
|
35
|
-
width: H,
|
|
36
|
-
className: M
|
|
37
|
-
}, O) => {
|
|
38
|
-
const { t: e, i18n: w } = W(), [r, V] = c(F), [o, z] = c(void 0), [v, G] = c(
|
|
39
|
-
y
|
|
40
|
-
), [C, j] = c(5), [D, Y] = c(null), [f, K] = c(void 0), E = u(() => /* @__PURE__ */ new Date(), []), [n, P] = c(() => /* @__PURE__ */ new Date()), l = u(() => r !== "lmp" || !o || D === null || !f ? null : Z({ lmp: o, scanDate: f, crlMm: D }), [r, o, D, f]), t = u(() => {
|
|
41
|
-
if (!o) return null;
|
|
42
|
-
const d = r === "lmp" && (l != null && l.redated) ? l.gestationalStart : o, U = r === "lmp" && (l != null && l.redated) ? y : v ?? y;
|
|
43
|
-
return ee(
|
|
44
|
-
{
|
|
45
|
-
method: r,
|
|
46
|
-
date: d,
|
|
47
|
-
cycleLength: U,
|
|
48
|
-
embryoAge: C
|
|
49
|
-
},
|
|
50
|
-
n
|
|
51
|
-
);
|
|
52
|
-
}, [r, o, v, C, l, n]), i = u(
|
|
53
|
-
() => new Intl.DateTimeFormat(w.language, { dateStyle: "long" }),
|
|
54
|
-
[w.language]
|
|
55
|
-
);
|
|
56
|
-
J(() => {
|
|
57
|
-
p == null || p(t);
|
|
58
|
-
}, [t, p]);
|
|
59
|
-
const h = u(() => !A || !t ? null : ae(t.gestationalStart, {
|
|
60
|
-
...L,
|
|
61
|
-
today: n
|
|
62
|
-
}), [A, t, n, L]);
|
|
63
|
-
return /* @__PURE__ */ s(
|
|
64
|
-
"div",
|
|
65
|
-
{
|
|
66
|
-
ref: O,
|
|
67
|
-
"data-component": "due-date-calculator",
|
|
68
|
-
"data-component-id": _,
|
|
69
|
-
className: de({ width: H, className: M }),
|
|
70
|
-
children: [
|
|
71
|
-
/* @__PURE__ */ s(
|
|
72
|
-
T,
|
|
73
|
-
{
|
|
74
|
-
label: e("dueDateCalculator.method.label"),
|
|
75
|
-
variant: "horizontal",
|
|
76
|
-
value: r,
|
|
77
|
-
onValueChange: (d) => V(d),
|
|
78
|
-
children: [
|
|
79
|
-
/* @__PURE__ */ a(m, { label: e("dueDateCalculator.method.lmp"), value: "lmp" }),
|
|
80
|
-
/* @__PURE__ */ a(
|
|
81
|
-
m,
|
|
82
|
-
{
|
|
83
|
-
label: e("dueDateCalculator.method.conception"),
|
|
84
|
-
value: "conception"
|
|
85
|
-
}
|
|
86
|
-
),
|
|
87
|
-
/* @__PURE__ */ a(m, { label: e("dueDateCalculator.method.ivf"), value: "ivf" })
|
|
88
|
-
]
|
|
89
|
-
}
|
|
90
|
-
),
|
|
91
|
-
/* @__PURE__ */ s("div", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2", children: [
|
|
92
|
-
/* @__PURE__ */ a(g, { label: e(oe[r]), children: /* @__PURE__ */ a(b, { value: o, onChange: z, maxDate: E }) }),
|
|
93
|
-
r === "lmp" && /* @__PURE__ */ a(
|
|
94
|
-
g,
|
|
95
|
-
{
|
|
96
|
-
label: e("dueDateCalculator.cycleLength"),
|
|
97
|
-
description: e("dueDateCalculator.cycleLengthHint"),
|
|
98
|
-
children: /* @__PURE__ */ a(
|
|
99
|
-
S,
|
|
100
|
-
{
|
|
101
|
-
mode: "integer",
|
|
102
|
-
min: 20,
|
|
103
|
-
max: 45,
|
|
104
|
-
value: v,
|
|
105
|
-
onChange: G
|
|
106
|
-
}
|
|
107
|
-
)
|
|
108
|
-
}
|
|
109
|
-
),
|
|
110
|
-
r === "ivf" && /* @__PURE__ */ s(
|
|
111
|
-
T,
|
|
112
|
-
{
|
|
113
|
-
label: e("dueDateCalculator.embryoAge"),
|
|
114
|
-
variant: "horizontal",
|
|
115
|
-
value: String(C),
|
|
116
|
-
onValueChange: (d) => j(Number(d)),
|
|
117
|
-
children: [
|
|
118
|
-
/* @__PURE__ */ a(m, { label: e("dueDateCalculator.day3"), value: "3" }),
|
|
119
|
-
/* @__PURE__ */ a(m, { label: e("dueDateCalculator.day5"), value: "5" })
|
|
120
|
-
]
|
|
121
|
-
}
|
|
122
|
-
)
|
|
123
|
-
] }),
|
|
124
|
-
/* @__PURE__ */ a(
|
|
125
|
-
g,
|
|
126
|
-
{
|
|
127
|
-
label: e("dueDateCalculator.asOfDate"),
|
|
128
|
-
description: e("dueDateCalculator.asOfDateHint"),
|
|
129
|
-
children: /* @__PURE__ */ a(b, { value: n, onChange: (d) => d && P(d) })
|
|
130
|
-
}
|
|
131
|
-
),
|
|
132
|
-
r === "lmp" ? /* @__PURE__ */ s("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]", children: [
|
|
133
|
-
/* @__PURE__ */ s("div", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2", children: [
|
|
134
|
-
/* @__PURE__ */ a(
|
|
135
|
-
g,
|
|
136
|
-
{
|
|
137
|
-
label: e("dueDateCalculator.crl"),
|
|
138
|
-
description: e("dueDateCalculator.crlHint"),
|
|
139
|
-
children: /* @__PURE__ */ a(
|
|
140
|
-
S,
|
|
141
|
-
{
|
|
142
|
-
mode: "decimal",
|
|
143
|
-
min: 0,
|
|
144
|
-
step: 0.1,
|
|
145
|
-
value: D,
|
|
146
|
-
onChange: Y
|
|
147
|
-
}
|
|
148
|
-
)
|
|
149
|
-
}
|
|
150
|
-
),
|
|
151
|
-
/* @__PURE__ */ a(g, { label: e("dueDateCalculator.scanDate"), children: /* @__PURE__ */ a(
|
|
152
|
-
b,
|
|
153
|
-
{
|
|
154
|
-
value: f,
|
|
155
|
-
onChange: K,
|
|
156
|
-
maxDate: E
|
|
157
|
-
}
|
|
158
|
-
) })
|
|
159
|
-
] }),
|
|
160
|
-
l ? /* @__PURE__ */ s("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]", children: [
|
|
161
|
-
/* @__PURE__ */ a(B, { variant: l.redated ? "warning" : "success", children: l.redated ? e("dueDateCalculator.redated", {
|
|
162
|
-
days: l.discrepancyDays
|
|
163
|
-
}) : e("dueDateCalculator.datesAgree") }),
|
|
164
|
-
l.crlInRange ? null : /* @__PURE__ */ a("span", { className: "type-meta ds:text-muted-foreground", children: e("dueDateCalculator.crlOutOfRange") })
|
|
165
|
-
] }) : null
|
|
166
|
-
] }) : null,
|
|
167
|
-
/* @__PURE__ */ a("p", { className: "ds:sr-only", role: "status", "aria-live": "polite", children: t ? `${e("dueDateCalculator.result.dueDateLabel")}: ${i.format(
|
|
168
|
-
t.dueDate
|
|
169
|
-
)}. ${e("dueDateCalculator.result.trimesterLabel")}: ${e(
|
|
170
|
-
`dueDateCalculator.trimester.${t.trimester}`
|
|
171
|
-
)}.` : "" }),
|
|
172
|
-
t ? /* @__PURE__ */ a(k, { variant: "elevated", children: /* @__PURE__ */ a(k.Body, { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: /* @__PURE__ */ s("dl", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-3", children: [
|
|
173
|
-
/* @__PURE__ */ s("div", { className: "ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]", children: [
|
|
174
|
-
/* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: e("dueDateCalculator.result.trimesterLabel") }),
|
|
175
|
-
/* @__PURE__ */ a("dd", { children: /* @__PURE__ */ a(
|
|
176
|
-
B,
|
|
177
|
-
{
|
|
178
|
-
variant: te[t.trimester],
|
|
179
|
-
size: "lg",
|
|
180
|
-
children: e(`dueDateCalculator.trimester.${t.trimester}`)
|
|
181
|
-
}
|
|
182
|
-
) })
|
|
183
|
-
] }),
|
|
184
|
-
/* @__PURE__ */ s("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
|
|
185
|
-
/* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: e("dueDateCalculator.result.gestationLabel") }),
|
|
186
|
-
/* @__PURE__ */ a("dd", { className: "type-body ds:text-foreground", children: t.gestationalAge ? e("dueDateCalculator.result.gestation", {
|
|
187
|
-
weeks: t.gestationalAge.weeks,
|
|
188
|
-
days: t.gestationalAge.days
|
|
189
|
-
}) : "—" })
|
|
190
|
-
] }),
|
|
191
|
-
/* @__PURE__ */ s("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
|
|
192
|
-
/* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: e("dueDateCalculator.result.dueDateLabel") }),
|
|
193
|
-
/* @__PURE__ */ a("dd", { className: "type-metric ds:text-foreground", children: i.format(t.dueDate) })
|
|
194
|
-
] })
|
|
195
|
-
] }) }) }) : /* @__PURE__ */ a("p", { className: "type-body ds:text-muted-foreground", children: e("dueDateCalculator.empty") }),
|
|
196
|
-
h ? /* @__PURE__ */ a(le, { events: h }) : null,
|
|
197
|
-
t && (N === "copy" || x) ? /* @__PURE__ */ a(
|
|
198
|
-
X,
|
|
199
|
-
{
|
|
200
|
-
variant: N,
|
|
201
|
-
onInsert: x,
|
|
202
|
-
onCopy: I,
|
|
203
|
-
onError: $,
|
|
204
|
-
card: {
|
|
205
|
-
title: e("insert.title.dueDate"),
|
|
206
|
-
icon: "calendar-heart",
|
|
207
|
-
highlight: i.format(t.dueDate),
|
|
208
|
-
// Chip tinted with the trimester's semantic token so the inserted
|
|
209
|
-
// PNG carries the same clinical-stage colour as the on-screen
|
|
210
|
-
// trimester badge — with the contrast-safe orange override for the
|
|
211
|
-
// `--warning` third trimester.
|
|
212
|
-
highlightToken: se(t.trimester),
|
|
213
|
-
brand: R,
|
|
214
|
-
fields: [
|
|
215
|
-
{
|
|
216
|
-
// The estimated date of delivery → calendar glyph.
|
|
217
|
-
icon: "calendar",
|
|
218
|
-
label: e("dueDateCalculator.result.dueDateLabel"),
|
|
219
|
-
value: i.format(t.dueDate)
|
|
220
|
-
},
|
|
221
|
-
{
|
|
222
|
-
// Gestational age is an elapsed duration → clock glyph.
|
|
223
|
-
icon: "clock",
|
|
224
|
-
label: e("dueDateCalculator.result.gestationLabel"),
|
|
225
|
-
value: t.gestationalAge ? e("dueDateCalculator.result.gestation", {
|
|
226
|
-
weeks: t.gestationalAge.weeks,
|
|
227
|
-
days: t.gestationalAge.days
|
|
228
|
-
}) : "—"
|
|
229
|
-
},
|
|
230
|
-
{
|
|
231
|
-
// Trimester is a clinical-stage classification → tag.
|
|
232
|
-
icon: "tag",
|
|
233
|
-
label: e("dueDateCalculator.result.trimesterLabel"),
|
|
234
|
-
value: e(`dueDateCalculator.trimester.${t.trimester}`)
|
|
235
|
-
},
|
|
236
|
-
// When the schedule is shown, the single Insert button carries
|
|
237
|
-
// the exam windows too (no second button).
|
|
238
|
-
...h ? re(
|
|
239
|
-
h,
|
|
240
|
-
e,
|
|
241
|
-
(d) => i.format(d)
|
|
242
|
-
) : []
|
|
243
|
-
]
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
) : null
|
|
247
|
-
]
|
|
248
|
-
}
|
|
249
|
-
);
|
|
250
|
-
}
|
|
251
|
-
);
|
|
252
|
-
ce.displayName = "DueDateCalculator";
|
|
253
|
-
export {
|
|
254
|
-
ce as D
|
|
255
|
-
};
|
|
256
|
-
//# sourceMappingURL=due-date-calculator-CwfsFd3T.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"due-date-calculator-CwfsFd3T.js","sources":["../../src/components/due-date-calculator/due-date-calculator.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* DueDateCalculator — estimate the date of delivery from one of three */\n/* dating methods, with current gestational age + trimester. */\n/* */\n/* - Maths lives in `./gestation` (pure, separately tested). */\n/* - Three methods: LMP (Naegele, cycle-length adjustable), conception, */\n/* and IVF transfer (Day-3 vs Day-5 embryo). */\n/* - The reference date can't be in the future, so the DatePicker caps */\n/* at today. */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { RadioGroup, Radio } from '../radio-group';\nimport { FormField } from '../form-field';\nimport { DatePicker } from '../date-picker';\nimport { NumberInput } from '../number-input';\nimport { Card } from '../card';\nimport { Badge } from '../badge';\nimport {\n InsertButton,\n type InsertPayload,\n type InsertVariant,\n type InsertMode,\n} from '../_shared/insert-result';\nimport {\n type DueDateMethod,\n type EmbryoAge,\n type DueDateResult,\n computeDueDate,\n redateByCrl,\n DEFAULT_CYCLE_LENGTH,\n TRIMESTER_BADGE_VARIANT,\n trimesterHighlightToken,\n} from '../_shared/obstetrics';\nimport {\n computeAntenatalSchedule,\n type AntenatalScheduleOptions,\n} from '../_shared/antenatal-schedule';\nimport {\n AntenatalScheduleTimeline,\n buildScheduleInsertFields,\n} from '../_shared/antenatal-schedule-timeline';\n\nconst rootVariants = cva('ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]', {\n variants: {\n width: { full: 'ds:w-full', auto: 'ds:inline-flex' },\n },\n defaultVariants: { width: 'full' },\n});\n\n/** Reference-date i18n key per method. */\nconst DATE_LABEL_KEY: Record<DueDateMethod, string> = {\n lmp: 'dueDateCalculator.lmpDate',\n conception: 'dueDateCalculator.conceptionDate',\n ivf: 'dueDateCalculator.transferDate',\n};\n\nexport interface DueDateCalculatorProps extends VariantProps<\n typeof rootVariants\n> {\n /** Initial dating method. Defaults to `'lmp'`. */\n defaultMethod?: DueDateMethod;\n /** Fires whenever a due date can be computed (and with `null` when it can't). */\n onResultChange?: (result: DueDateResult | null) => void;\n /** When provided, shows an \"Insert\" button that emits the result for an editor. */\n onInsert?: (payload: InsertPayload) => void;\n /**\n * Which verb the result button performs. Defaults to `'insert'`.\n * Use `'copy'` in an app-shell surface (no editor to insert into) — the\n * button writes the result to the clipboard as a multi-format `ClipboardItem`.\n */\n insertVariant?: InsertVariant;\n /** `copy` variant only — fired after a successful clipboard write. */\n onCopy?: (mode: InsertMode) => void;\n /** `copy` variant only — fired if the clipboard write can't proceed. */\n onError?: (error: unknown) => void;\n /**\n * Brand wordmark printed in the inserted/copied result-card footer.\n * Omitted → no brand line (and no footer hairline); a string → that custom\n * brand; `false` → no brand line. Brand is opt-in.\n */\n insertBrand?: string | false;\n /**\n * Append the antenatal exam schedule (the time-sensitive screening windows)\n * below the result, dated from the computed gestational start.\n */\n showSchedule?: boolean;\n /**\n * Passthrough options for the appended schedule (national `schedule`,\n * `plurality`, `chorionicity`, `rhNegative`, `gdmRisk`, …). `today` is\n * supplied by the component. Ignored unless `showSchedule` is set.\n */\n scheduleOptions?: Omit<AntenatalScheduleOptions, 'today'>;\n /** Opaque instance id, emitted as `data-component-id`. */\n id?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\n/**\n * @deprecated Superseded by `PregnancyDating`, which unifies the due-date and\n * gestational-age calculators (any anchor → both EDD and current GA) and adds a\n * manual ±days dating adjustment. This component will be removed in a future\n * release; migrate to `PregnancyDating` (`defaultMethod=\"lmp\"`).\n */\nexport const DueDateCalculator = forwardRef<\n HTMLDivElement,\n DueDateCalculatorProps\n>(\n (\n {\n defaultMethod = 'lmp',\n onResultChange,\n onInsert,\n insertVariant = 'insert',\n onCopy,\n onError,\n insertBrand,\n showSchedule = false,\n scheduleOptions,\n id,\n width,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n const [method, setMethod] = useState<DueDateMethod>(defaultMethod);\n const [refDate, setRefDate] = useState<Date | undefined>(undefined);\n const [cycleLength, setCycleLength] = useState<number | null>(\n DEFAULT_CYCLE_LENGTH,\n );\n const [embryoAge, setEmbryoAge] = useState<EmbryoAge>(5);\n // Optional first-trimester ultrasound (LMP method only) for ACOG CO700 redating.\n const [crlMm, setCrlMm] = useState<number | null>(null);\n const [scanDate, setScanDate] = useState<Date | undefined>(undefined);\n\n // Real today — caps the date inputs (LMP / ultrasound can't be in the future).\n const today = useMemo(() => new Date(), []);\n // The date GA, trimester and schedule status are evaluated against; defaults\n // to today but can be a future appointment date to project forward. (The EDD\n // itself is dating-anchored and does not depend on this.)\n const [asOfDate, setAsOfDate] = useState<Date>(() => new Date());\n\n // ACOG CO700 CRL redating — only when an LMP, a CRL and a scan date are set.\n const redating = useMemo(() => {\n if (method !== 'lmp' || !refDate || crlMm === null || !scanDate) {\n return null;\n }\n return redateByCrl({ lmp: refDate, scanDate, crlMm });\n }, [method, refDate, crlMm, scanDate]);\n\n const result = useMemo<DueDateResult | null>(() => {\n if (!refDate) return null;\n // A confirmed redating moves the effective LMP to the ultrasound's; the\n // CRL already reflects true gestation, so cycle adjustment no longer applies.\n const effectiveDate =\n method === 'lmp' && redating?.redated\n ? redating.gestationalStart\n : refDate;\n const effectiveCycle =\n method === 'lmp' && redating?.redated\n ? DEFAULT_CYCLE_LENGTH\n : (cycleLength ?? DEFAULT_CYCLE_LENGTH);\n return computeDueDate(\n {\n method,\n date: effectiveDate,\n cycleLength: effectiveCycle,\n embryoAge,\n },\n asOfDate,\n );\n }, [method, refDate, cycleLength, embryoAge, redating, asOfDate]);\n\n const dateFormatter = useMemo(\n () => new Intl.DateTimeFormat(i18n.language, { dateStyle: 'long' }),\n [i18n.language],\n );\n\n useEffect(() => {\n onResultChange?.(result);\n }, [result, onResultChange]);\n\n const schedule = useMemo(() => {\n if (!showSchedule || !result) return null;\n return computeAntenatalSchedule(result.gestationalStart, {\n ...scheduleOptions,\n today: asOfDate,\n });\n }, [showSchedule, result, asOfDate, scheduleOptions]);\n\n return (\n <div\n ref={ref}\n data-component=\"due-date-calculator\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <RadioGroup\n label={t('dueDateCalculator.method.label')}\n variant=\"horizontal\"\n value={method}\n onValueChange={(next) => setMethod(next as DueDateMethod)}\n >\n <Radio label={t('dueDateCalculator.method.lmp')} value=\"lmp\" />\n <Radio\n label={t('dueDateCalculator.method.conception')}\n value=\"conception\"\n />\n <Radio label={t('dueDateCalculator.method.ivf')} value=\"ivf\" />\n </RadioGroup>\n\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n <FormField label={t(DATE_LABEL_KEY[method])}>\n <DatePicker value={refDate} onChange={setRefDate} maxDate={today} />\n </FormField>\n\n {method === 'lmp' && (\n <FormField\n label={t('dueDateCalculator.cycleLength')}\n description={t('dueDateCalculator.cycleLengthHint')}\n >\n <NumberInput\n mode=\"integer\"\n min={20}\n max={45}\n value={cycleLength}\n onChange={setCycleLength}\n />\n </FormField>\n )}\n\n {method === 'ivf' && (\n <RadioGroup\n label={t('dueDateCalculator.embryoAge')}\n variant=\"horizontal\"\n value={String(embryoAge)}\n onValueChange={(next) => setEmbryoAge(Number(next) as EmbryoAge)}\n >\n <Radio label={t('dueDateCalculator.day3')} value=\"3\" />\n <Radio label={t('dueDateCalculator.day5')} value=\"5\" />\n </RadioGroup>\n )}\n </div>\n\n <FormField\n label={t('dueDateCalculator.asOfDate')}\n description={t('dueDateCalculator.asOfDateHint')}\n >\n <DatePicker value={asOfDate} onChange={(d) => d && setAsOfDate(d)} />\n </FormField>\n\n {method === 'lmp' ? (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\">\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n <FormField\n label={t('dueDateCalculator.crl')}\n description={t('dueDateCalculator.crlHint')}\n >\n <NumberInput\n mode=\"decimal\"\n min={0}\n step={0.1}\n value={crlMm}\n onChange={setCrlMm}\n />\n </FormField>\n <FormField label={t('dueDateCalculator.scanDate')}>\n <DatePicker\n value={scanDate}\n onChange={setScanDate}\n maxDate={today}\n />\n </FormField>\n </div>\n {redating ? (\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]\">\n <Badge variant={redating.redated ? 'warning' : 'success'}>\n {redating.redated\n ? t('dueDateCalculator.redated', {\n days: redating.discrepancyDays,\n })\n : t('dueDateCalculator.datesAgree')}\n </Badge>\n {!redating.crlInRange ? (\n <span className=\"type-meta ds:text-muted-foreground\">\n {t('dueDateCalculator.crlOutOfRange')}\n </span>\n ) : null}\n </div>\n ) : null}\n </div>\n ) : null}\n\n {/* Concise polite announcement when a due date resolves. */}\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {result\n ? `${t('dueDateCalculator.result.dueDateLabel')}: ${dateFormatter.format(\n result.dueDate,\n )}. ${t('dueDateCalculator.result.trimesterLabel')}: ${t(\n `dueDateCalculator.trimester.${result.trimester}`,\n )}.`\n : ''}\n </p>\n\n {result ? (\n <Card variant=\"elevated\">\n <Card.Body className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n <dl className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-3\">\n <div className=\"ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('dueDateCalculator.result.trimesterLabel')}\n </dt>\n <dd>\n <Badge\n variant={TRIMESTER_BADGE_VARIANT[result.trimester]}\n size=\"lg\"\n >\n {t(`dueDateCalculator.trimester.${result.trimester}`)}\n </Badge>\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('dueDateCalculator.result.gestationLabel')}\n </dt>\n <dd className=\"type-body ds:text-foreground\">\n {result.gestationalAge\n ? t('dueDateCalculator.result.gestation', {\n weeks: result.gestationalAge.weeks,\n days: result.gestationalAge.days,\n })\n : '—'}\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('dueDateCalculator.result.dueDateLabel')}\n </dt>\n <dd className=\"type-metric ds:text-foreground\">\n {dateFormatter.format(result.dueDate)}\n </dd>\n </div>\n </dl>\n </Card.Body>\n </Card>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('dueDateCalculator.empty')}\n </p>\n )}\n\n {schedule ? <AntenatalScheduleTimeline events={schedule} /> : null}\n\n {/* One result-action group for the whole result — sits after both the\n due-date card and the schedule, and its payload carries the schedule\n rows when shown (no per-card buttons). */}\n {result && (insertVariant === 'copy' || onInsert) ? (\n <InsertButton\n variant={insertVariant}\n onInsert={onInsert}\n onCopy={onCopy}\n onError={onError}\n card={{\n title: t('insert.title.dueDate'),\n icon: 'calendar-heart',\n highlight: dateFormatter.format(result.dueDate),\n // Chip tinted with the trimester's semantic token so the inserted\n // PNG carries the same clinical-stage colour as the on-screen\n // trimester badge — with the contrast-safe orange override for the\n // `--warning` third trimester.\n highlightToken: trimesterHighlightToken(result.trimester),\n brand: insertBrand,\n fields: [\n {\n // The estimated date of delivery → calendar glyph.\n icon: 'calendar',\n label: t('dueDateCalculator.result.dueDateLabel'),\n value: dateFormatter.format(result.dueDate),\n },\n {\n // Gestational age is an elapsed duration → clock glyph.\n icon: 'clock',\n label: t('dueDateCalculator.result.gestationLabel'),\n value: result.gestationalAge\n ? t('dueDateCalculator.result.gestation', {\n weeks: result.gestationalAge.weeks,\n days: result.gestationalAge.days,\n })\n : '—',\n },\n {\n // Trimester is a clinical-stage classification → tag.\n icon: 'tag',\n label: t('dueDateCalculator.result.trimesterLabel'),\n value: t(`dueDateCalculator.trimester.${result.trimester}`),\n },\n // When the schedule is shown, the single Insert button carries\n // the exam windows too (no second button).\n ...(schedule\n ? buildScheduleInsertFields(schedule, t, (d) =>\n dateFormatter.format(d),\n )\n : []),\n ],\n }}\n />\n ) : null}\n </div>\n );\n },\n);\n\nDueDateCalculator.displayName = 'DueDateCalculator';\n"],"names":["rootVariants","cva","DATE_LABEL_KEY","DueDateCalculator","forwardRef","defaultMethod","onResultChange","onInsert","insertVariant","onCopy","onError","insertBrand","showSchedule","scheduleOptions","id","width","className","ref","t","i18n","useTranslation","method","setMethod","useState","refDate","setRefDate","cycleLength","setCycleLength","DEFAULT_CYCLE_LENGTH","embryoAge","setEmbryoAge","crlMm","setCrlMm","scanDate","setScanDate","today","useMemo","asOfDate","setAsOfDate","redating","redateByCrl","result","effectiveDate","effectiveCycle","computeDueDate","dateFormatter","useEffect","schedule","computeAntenatalSchedule","jsxs","RadioGroup","next","jsx","Radio","FormField","DatePicker","NumberInput","Badge","Card","TRIMESTER_BADGE_VARIANT","AntenatalScheduleTimeline","InsertButton","trimesterHighlightToken","buildScheduleInsertFields"],"mappings":";;;;;;;;;;;;;AA6CA,MAAMA,KAAeC,EAAI,kDAAkD;AAAA,EACzE,UAAU;AAAA,IACR,OAAO,EAAE,MAAM,aAAa,MAAM,iBAAA;AAAA,EAAiB;AAAA,EAErD,iBAAiB,EAAE,OAAO,OAAA;AAC5B,CAAC,GAGKC,KAAgD;AAAA,EACpD,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,KAAK;AACP,GAkDaC,KAAoBC;AAAA,EAI/B,CACE;AAAA,IACE,eAAAC,IAAgB;AAAA,IAChB,gBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,eAAAC,IAAgB;AAAA,IAChB,QAAAC;AAAA,IACA,SAAAC;AAAA,IACA,aAAAC;AAAA,IACA,cAAAC,IAAe;AAAA,IACf,iBAAAC;AAAA,IACA,IAAAC;AAAA,IACA,OAAAC;AAAA,IACA,WAAAC;AAAA,EAAA,GAEFC,MACG;AACH,UAAM,EAAE,GAAAC,GAAG,MAAAC,EAAA,IAASC,EAAA,GAEd,CAACC,GAAQC,CAAS,IAAIC,EAAwBlB,CAAa,GAC3D,CAACmB,GAASC,CAAU,IAAIF,EAA2B,MAAS,GAC5D,CAACG,GAAaC,CAAc,IAAIJ;AAAA,MACpCK;AAAA,IAAA,GAEI,CAACC,GAAWC,CAAY,IAAIP,EAAoB,CAAC,GAEjD,CAACQ,GAAOC,CAAQ,IAAIT,EAAwB,IAAI,GAChD,CAACU,GAAUC,CAAW,IAAIX,EAA2B,MAAS,GAG9DY,IAAQC,EAAQ,0BAAU,KAAA,GAAQ,CAAA,CAAE,GAIpC,CAACC,GAAUC,CAAW,IAAIf,EAAe,MAAM,oBAAI,MAAM,GAGzDgB,IAAWH,EAAQ,MACnBf,MAAW,SAAS,CAACG,KAAWO,MAAU,QAAQ,CAACE,IAC9C,OAEFO,EAAY,EAAE,KAAKhB,GAAS,UAAAS,GAAU,OAAAF,GAAO,GACnD,CAACV,GAAQG,GAASO,GAAOE,CAAQ,CAAC,GAE/BQ,IAASL,EAA8B,MAAM;AACjD,UAAI,CAACZ,EAAS,QAAO;AAGrB,YAAMkB,IACJrB,MAAW,UAASkB,KAAA,QAAAA,EAAU,WAC1BA,EAAS,mBACTf,GACAmB,IACJtB,MAAW,UAASkB,KAAA,QAAAA,EAAU,WAC1BX,IACCF,KAAeE;AACtB,aAAOgB;AAAA,QACL;AAAA,UACE,QAAAvB;AAAA,UACA,MAAMqB;AAAA,UACN,aAAaC;AAAA,UACb,WAAAd;AAAA,QAAA;AAAA,QAEFQ;AAAA,MAAA;AAAA,IAEJ,GAAG,CAAChB,GAAQG,GAASE,GAAaG,GAAWU,GAAUF,CAAQ,CAAC,GAE1DQ,IAAgBT;AAAA,MACpB,MAAM,IAAI,KAAK,eAAejB,EAAK,UAAU,EAAE,WAAW,QAAQ;AAAA,MAClE,CAACA,EAAK,QAAQ;AAAA,IAAA;AAGhB,IAAA2B,EAAU,MAAM;AACd,MAAAxC,KAAA,QAAAA,EAAiBmC;AAAA,IACnB,GAAG,CAACA,GAAQnC,CAAc,CAAC;AAE3B,UAAMyC,IAAWX,EAAQ,MACnB,CAACxB,KAAgB,CAAC6B,IAAe,OAC9BO,GAAyBP,EAAO,kBAAkB;AAAA,MACvD,GAAG5B;AAAA,MACH,OAAOwB;AAAA,IAAA,CACR,GACA,CAACzB,GAAc6B,GAAQJ,GAAUxB,CAAe,CAAC;AAEpD,WACE,gBAAAoC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAhC;AAAA,QACA,kBAAe;AAAA,QACf,qBAAmBH;AAAA,QACnB,WAAWd,GAAa,EAAE,OAAAe,GAAO,WAAAC,GAAW;AAAA,QAE5C,UAAA;AAAA,UAAA,gBAAAiC;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,OAAOhC,EAAE,gCAAgC;AAAA,cACzC,SAAQ;AAAA,cACR,OAAOG;AAAA,cACP,eAAe,CAAC8B,MAAS7B,EAAU6B,CAAqB;AAAA,cAExD,UAAA;AAAA,gBAAA,gBAAAC,EAACC,KAAM,OAAOnC,EAAE,8BAA8B,GAAG,OAAM,OAAM;AAAA,gBAC7D,gBAAAkC;AAAA,kBAACC;AAAA,kBAAA;AAAA,oBACC,OAAOnC,EAAE,qCAAqC;AAAA,oBAC9C,OAAM;AAAA,kBAAA;AAAA,gBAAA;AAAA,kCAEPmC,GAAA,EAAM,OAAOnC,EAAE,8BAA8B,GAAG,OAAM,MAAA,CAAM;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAG/D,gBAAA+B,EAAC,OAAA,EAAI,WAAU,uEACb,UAAA;AAAA,YAAA,gBAAAG,EAACE,GAAA,EAAU,OAAOpC,EAAEhB,GAAemB,CAAM,CAAC,GACxC,UAAA,gBAAA+B,EAACG,GAAA,EAAW,OAAO/B,GAAS,UAAUC,GAAY,SAASU,GAAO,GACpE;AAAA,YAECd,MAAW,SACV,gBAAA+B;AAAA,cAACE;AAAA,cAAA;AAAA,gBACC,OAAOpC,EAAE,+BAA+B;AAAA,gBACxC,aAAaA,EAAE,mCAAmC;AAAA,gBAElD,UAAA,gBAAAkC;AAAA,kBAACI;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,KAAK;AAAA,oBACL,KAAK;AAAA,oBACL,OAAO9B;AAAA,oBACP,UAAUC;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACZ;AAAA,YAAA;AAAA,YAIHN,MAAW,SACV,gBAAA4B;AAAA,cAACC;AAAA,cAAA;AAAA,gBACC,OAAOhC,EAAE,6BAA6B;AAAA,gBACtC,SAAQ;AAAA,gBACR,OAAO,OAAOW,CAAS;AAAA,gBACvB,eAAe,CAACsB,MAASrB,EAAa,OAAOqB,CAAI,CAAc;AAAA,gBAE/D,UAAA;AAAA,kBAAA,gBAAAC,EAACC,KAAM,OAAOnC,EAAE,wBAAwB,GAAG,OAAM,KAAI;AAAA,oCACpDmC,GAAA,EAAM,OAAOnC,EAAE,wBAAwB,GAAG,OAAM,IAAA,CAAI;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACvD,GAEJ;AAAA,UAEA,gBAAAkC;AAAA,YAACE;AAAA,YAAA;AAAA,cACC,OAAOpC,EAAE,4BAA4B;AAAA,cACrC,aAAaA,EAAE,gCAAgC;AAAA,cAE/C,UAAA,gBAAAkC,EAACG,GAAA,EAAW,OAAOlB,GAAU,UAAU,CAAC,MAAM,KAAKC,EAAY,CAAC,EAAA,CAAG;AAAA,YAAA;AAAA,UAAA;AAAA,UAGpEjB,MAAW,QACV,gBAAA4B,EAAC,OAAA,EAAI,WAAU,kDACb,UAAA;AAAA,YAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,uEACb,UAAA;AAAA,cAAA,gBAAAG;AAAA,gBAACE;AAAA,gBAAA;AAAA,kBACC,OAAOpC,EAAE,uBAAuB;AAAA,kBAChC,aAAaA,EAAE,2BAA2B;AAAA,kBAE1C,UAAA,gBAAAkC;AAAA,oBAACI;AAAA,oBAAA;AAAA,sBACC,MAAK;AAAA,sBACL,KAAK;AAAA,sBACL,MAAM;AAAA,sBACN,OAAOzB;AAAA,sBACP,UAAUC;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACZ;AAAA,cAAA;AAAA,cAEF,gBAAAoB,EAACE,GAAA,EAAU,OAAOpC,EAAE,4BAA4B,GAC9C,UAAA,gBAAAkC;AAAA,gBAACG;AAAA,gBAAA;AAAA,kBACC,OAAOtB;AAAA,kBACP,UAAUC;AAAA,kBACV,SAASC;AAAA,gBAAA;AAAA,cAAA,EACX,CACF;AAAA,YAAA,GACF;AAAA,YACCI,IACC,gBAAAU,EAAC,OAAA,EAAI,WAAU,mEACb,UAAA;AAAA,cAAA,gBAAAG,EAACK,GAAA,EAAM,SAASlB,EAAS,UAAU,YAAY,WAC5C,UAAAA,EAAS,UACNrB,EAAE,6BAA6B;AAAA,gBAC7B,MAAMqB,EAAS;AAAA,cAAA,CAChB,IACDrB,EAAE,8BAA8B,GACtC;AAAA,cACEqB,EAAS,aAIP,OAHF,gBAAAa,EAAC,QAAA,EAAK,WAAU,sCACb,UAAAlC,EAAE,iCAAiC,EAAA,CACtC;AAAA,YACE,EAAA,CACN,IACE;AAAA,UAAA,EAAA,CACN,IACE;AAAA,UAGJ,gBAAAkC,EAAC,KAAA,EAAE,WAAU,cAAa,MAAK,UAAS,aAAU,UAC/C,UAAAX,IACG,GAAGvB,EAAE,uCAAuC,CAAC,KAAK2B,EAAc;AAAA,YAC9DJ,EAAO;AAAA,UAAA,CACR,KAAKvB,EAAE,yCAAyC,CAAC,KAAKA;AAAA,YACrD,+BAA+BuB,EAAO,SAAS;AAAA,UAAA,CAChD,MACD,IACN;AAAA,UAECA,IACC,gBAAAW,EAACM,GAAA,EAAK,SAAQ,YACZ,UAAA,gBAAAN,EAACM,EAAK,MAAL,EAAU,WAAU,kDACnB,UAAA,gBAAAT,EAAC,MAAA,EAAG,WAAU,uEACZ,UAAA;AAAA,YAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,iEACb,UAAA;AAAA,cAAA,gBAAAG,EAAC,MAAA,EAAG,WAAU,uCACX,UAAAlC,EAAE,yCAAyC,GAC9C;AAAA,gCACC,MAAA,EACC,UAAA,gBAAAkC;AAAA,gBAACK;AAAA,gBAAA;AAAA,kBACC,SAASE,GAAwBlB,EAAO,SAAS;AAAA,kBACjD,MAAK;AAAA,kBAEJ,UAAAvB,EAAE,+BAA+BuB,EAAO,SAAS,EAAE;AAAA,gBAAA;AAAA,cAAA,EACtD,CACF;AAAA,YAAA,GACF;AAAA,YACA,gBAAAQ,EAAC,OAAA,EAAI,WAAU,kDACb,UAAA;AAAA,cAAA,gBAAAG,EAAC,MAAA,EAAG,WAAU,uCACX,UAAAlC,EAAE,yCAAyC,GAC9C;AAAA,gCACC,MAAA,EAAG,WAAU,gCACX,UAAAuB,EAAO,iBACJvB,EAAE,sCAAsC;AAAA,gBACtC,OAAOuB,EAAO,eAAe;AAAA,gBAC7B,MAAMA,EAAO,eAAe;AAAA,cAAA,CAC7B,IACD,IAAA,CACN;AAAA,YAAA,GACF;AAAA,YACA,gBAAAQ,EAAC,OAAA,EAAI,WAAU,kDACb,UAAA;AAAA,cAAA,gBAAAG,EAAC,MAAA,EAAG,WAAU,uCACX,UAAAlC,EAAE,uCAAuC,GAC5C;AAAA,cACA,gBAAAkC,EAAC,QAAG,WAAU,kCACX,YAAc,OAAOX,EAAO,OAAO,EAAA,CACtC;AAAA,YAAA,EAAA,CACF;AAAA,UAAA,EAAA,CACF,EAAA,CACF,GACF,IAEA,gBAAAW,EAAC,OAAE,WAAU,sCACV,UAAAlC,EAAE,yBAAyB,EAAA,CAC9B;AAAA,UAGD6B,IAAW,gBAAAK,EAACQ,IAAA,EAA0B,QAAQb,GAAU,IAAK;AAAA,UAK7DN,MAAWjC,MAAkB,UAAUD,KACtC,gBAAA6C;AAAA,YAACS;AAAA,YAAA;AAAA,cACC,SAASrD;AAAA,cACT,UAAAD;AAAA,cACA,QAAAE;AAAA,cACA,SAAAC;AAAA,cACA,MAAM;AAAA,gBACJ,OAAOQ,EAAE,sBAAsB;AAAA,gBAC/B,MAAM;AAAA,gBACN,WAAW2B,EAAc,OAAOJ,EAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,gBAK9C,gBAAgBqB,GAAwBrB,EAAO,SAAS;AAAA,gBACxD,OAAO9B;AAAA,gBACP,QAAQ;AAAA,kBACN;AAAA;AAAA,oBAEE,MAAM;AAAA,oBACN,OAAOO,EAAE,uCAAuC;AAAA,oBAChD,OAAO2B,EAAc,OAAOJ,EAAO,OAAO;AAAA,kBAAA;AAAA,kBAE5C;AAAA;AAAA,oBAEE,MAAM;AAAA,oBACN,OAAOvB,EAAE,yCAAyC;AAAA,oBAClD,OAAOuB,EAAO,iBACVvB,EAAE,sCAAsC;AAAA,sBACtC,OAAOuB,EAAO,eAAe;AAAA,sBAC7B,MAAMA,EAAO,eAAe;AAAA,oBAAA,CAC7B,IACD;AAAA,kBAAA;AAAA,kBAEN;AAAA;AAAA,oBAEE,MAAM;AAAA,oBACN,OAAOvB,EAAE,yCAAyC;AAAA,oBAClD,OAAOA,EAAE,+BAA+BuB,EAAO,SAAS,EAAE;AAAA,kBAAA;AAAA;AAAA;AAAA,kBAI5D,GAAIM,IACAgB;AAAA,oBAA0BhB;AAAA,oBAAU7B;AAAA,oBAAG,CAAC,MACtC2B,EAAc,OAAO,CAAC;AAAA,kBAAA,IAExB,CAAA;AAAA,gBAAC;AAAA,cACP;AAAA,YACF;AAAA,UAAA,IAEA;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEA1C,GAAkB,cAAc;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"editor-overlay-DE3esyio.js","sources":["../../src/components/editor-overlay/editor-overlay.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* EditorOverlay — a non-modal, liquid-glass bar docked INSIDE an */\n/* editor region (Gemini / Mac Mail \"Help me write\" style). */\n/* */\n/* Unlike Dialog it does NOT centre on screen, trap focus, or make the */\n/* page inert — and there is NO scrim, so the editor stays visible and */\n/* usable behind it. It expands from the AI pill into a frosted, */\n/* translucent, rounded bar across the editor's block-end edge. The */\n/* host must be `position: relative` (the RichTextEditor editor region */\n/* is); the overlay anchors to it absolutely. Escape and the close */\n/* button dismiss it. Reusable for any editor-attached surface (AI */\n/* draft, future inline tools). */\n/* ------------------------------------------------------------------ */\n\nimport { useCallback, useEffect, useId, useRef, type ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { X } from 'lucide-react';\nimport { cva } from 'class-variance-authority';\n\nimport { IconButton } from '../button';\n\nexport interface EditorOverlayProps {\n /** Controlled visibility. */\n open: boolean;\n /** Close request (Escape or the close button). */\n onClose: () => void;\n /** Optional visible heading; renders a header row with a close button. */\n title?: ReactNode;\n /** Accessible name for the overlay region (use when there is no visible title). */\n ariaLabel?: string;\n /** Body content. */\n children: ReactNode;\n /** Optional footer slot (e.g. action buttons), right-aligned. */\n footer?: ReactNode;\n /** Extra classes on the glass card. */\n className?: string;\n}\n\n// Non-blocking liquid-glass bar docked across the editor's block-end edge,\n// expanding from the AI pill. No scrim — the editor stays visible + usable.\nconst cardVariants = cva(\n [\n // Spans the editor's block-end edge (a docked bar) and expands from the pill.\n 'ds:absolute ds:z-20',\n 'ds:[inset-inline-start:var(--spacing-md)] ds:[inset-inline-end:var(--spacing-md)]',\n 'ds:[inset-block-end:var(--spacing-md)]',\n // Slim docked bar — compact but with a little breathing room.\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]',\n 'ds:p-[var(--spacing-md)]',\n 'ds:rounded-[var(--radius-lg)]',\n // Apple \"Liquid Glass\": a translucent base + backdrop blur/saturate so the\n // editor shows through, a specular top \"rim\" + inner hairline ring, and a\n // soft drop shadow for a floating slab. --card-border is theme-aware (dark\n // hairline on light themes, bright on dark), so the rim reads in all four.\n 'ds:bg-[color-mix(in_srgb,var(--popover)_64%,transparent)]',\n 'ds:backdrop-blur-xl ds:backdrop-saturate-150',\n 'ds:border ds:border-[color-mix(in_srgb,var(--card-border)_70%,transparent)]',\n 'ds:shadow-[inset_0_1px_0_0_var(--card-border),inset_0_0_0_1px_color-mix(in_srgb,var(--card-border)_35%,transparent),var(--shadow-lg)]',\n // Liquid-glass grow out of the pill (bottom-inline-end origin).\n 'ds:origin-bottom-right ds:animate-in ds:fade-in-0 ds:zoom-in-95',\n 'ds:motion-reduce:animate-none',\n ].join(' '),\n);\n\nconst titleClass =\n 'ds:text-[length:var(--font-size-base)] ds:font-medium ds:text-[color:var(--foreground)]';\n\nexport function EditorOverlay({\n open,\n onClose,\n title,\n ariaLabel,\n children,\n footer,\n className,\n}: EditorOverlayProps): React.JSX.Element | null {\n const { t } = useTranslation();\n const cardRef = useRef<HTMLDivElement>(null);\n const restoreFocusRef = useRef<HTMLElement | null>(null);\n const titleId = useId();\n\n const handleClose = useCallback(() => onClose(), [onClose]);\n\n useEffect(() => {\n if (!open) return undefined;\n restoreFocusRef.current = document.activeElement as HTMLElement | null;\n // Move focus into the overlay (non-modal: we don't trap it, just seed it).\n const raf = window.requestAnimationFrame(() => {\n const focusable = cardRef.current?.querySelector<HTMLElement>(\n 'input, textarea, button, [tabindex]:not([tabindex=\"-1\"])',\n );\n (focusable ?? cardRef.current)?.focus();\n });\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape') {\n event.stopPropagation();\n handleClose();\n }\n };\n document.addEventListener('keydown', onKeyDown);\n return () => {\n window.cancelAnimationFrame(raf);\n document.removeEventListener('keydown', onKeyDown);\n restoreFocusRef.current?.focus?.();\n };\n }, [open, handleClose]);\n\n if (!open) return null;\n\n return (\n <div data-component=\"editor-overlay\">\n <div\n ref={cardRef}\n role=\"dialog\"\n aria-modal=\"false\"\n aria-labelledby={title ? titleId : undefined}\n aria-label={title ? undefined : ariaLabel}\n tabIndex={-1}\n className={[cardVariants(), className].filter(Boolean).join(' ')}\n >\n {/* Header only when there's a visible title — a title-less overlay is a\n header-less composer (named via ariaLabel) whose consumer provides\n its own inline close so no empty band is reserved for it. */}\n {title ? (\n <div className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]\">\n <div id={titleId} className={titleClass}>\n {title}\n </div>\n <IconButton\n size=\"sm\"\n intent=\"ghost\"\n icon={<X />}\n aria-label={t('common.close')}\n onClick={handleClose}\n />\n </div>\n ) : null}\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n {children}\n </div>\n {footer ? (\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:justify-end ds:gap-[var(--spacing-sm)]\">\n {footer}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n"],"names":["cardVariants","cva","titleClass","EditorOverlay","open","onClose","title","ariaLabel","children","footer","className","t","useTranslation","cardRef","useRef","restoreFocusRef","titleId","useId","handleClose","useCallback","useEffect","raf","_b","_a","onKeyDown","event","jsx","jsxs","IconButton","X"],"mappings":";;;;;;AAwCA,MAAMA,IAAeC;AAAA,EACnB;AAAA;AAAA,IAEE;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AACZ,GAEMC,IACJ;AAEK,SAASC,EAAc;AAAA,EAC5B,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AACF,GAAiD;AAC/C,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAAUC,EAAuB,IAAI,GACrCC,IAAkBD,EAA2B,IAAI,GACjDE,IAAUC,EAAA,GAEVC,IAAcC,EAAY,MAAMd,KAAW,CAACA,CAAO,CAAC;AA0B1D,SAxBAe,EAAU,MAAM;AACd,QAAI,CAAChB,EAAM;AACX,IAAAW,EAAgB,UAAU,SAAS;AAEnC,UAAMM,IAAM,OAAO,sBAAsB,MAAM;;AAI7C,OAACC,MAHiBC,IAAAV,EAAQ,YAAR,gBAAAU,EAAiB;AAAA,QACjC;AAAA,YAEYV,EAAQ,YAArB,QAAAS,EAA+B;AAAA,IAClC,CAAC,GACKE,IAAY,CAACC,MAA+B;AAChD,MAAIA,EAAM,QAAQ,aAChBA,EAAM,gBAAA,GACNP,EAAA;AAAA,IAEJ;AACA,oBAAS,iBAAiB,WAAWM,CAAS,GACvC,MAAM;;AACX,aAAO,qBAAqBH,CAAG,GAC/B,SAAS,oBAAoB,WAAWG,CAAS,IACjDF,KAAAC,IAAAR,EAAgB,YAAhB,gBAAAQ,EAAyB,UAAzB,QAAAD,EAAA,KAAAC;AAAA,IACF;AAAA,EACF,GAAG,CAACnB,GAAMc,CAAW,CAAC,GAEjBd,IAGH,gBAAAsB,EAAC,OAAA,EAAI,kBAAe,kBAClB,UAAA,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKd;AAAA,MACL,MAAK;AAAA,MACL,cAAW;AAAA,MACX,mBAAiBP,IAAQU,IAAU;AAAA,MACnC,cAAYV,IAAQ,SAAYC;AAAA,MAChC,UAAU;AAAA,MACV,WAAW,CAACP,EAAA,GAAgBU,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MAK9D,UAAA;AAAA,QAAAJ,IACC,gBAAAqB,EAAC,OAAA,EAAI,WAAU,yEACb,UAAA;AAAA,UAAA,gBAAAD,EAAC,OAAA,EAAI,IAAIV,GAAS,WAAWd,GAC1B,UAAAI,GACH;AAAA,UACA,gBAAAoB;AAAA,YAACE;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,QAAO;AAAA,cACP,wBAAOC,GAAA,EAAE;AAAA,cACT,cAAYlB,EAAE,cAAc;AAAA,cAC5B,SAASO;AAAA,YAAA;AAAA,UAAA;AAAA,QACX,EAAA,CACF,IACE;AAAA,QACJ,gBAAAQ,EAAC,OAAA,EAAI,WAAU,kDACZ,UAAAlB,EAAA,CACH;AAAA,QACCC,IACC,gBAAAiB,EAAC,OAAA,EAAI,WAAU,kFACZ,aACH,IACE;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAER,IAvCgB;AAyCpB;"}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { jsxs as m, jsx as t } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as T, useState as g, useMemo as W, useEffect as j } from "react";
|
|
3
|
-
import { c as V } from "./index-D2ZczOXr.js";
|
|
4
|
-
import { useTranslation as A } from "react-i18next";
|
|
5
|
-
import { F as D } from "./form-field-M5UpX65Z.js";
|
|
6
|
-
import { N as E } from "./number-input-DrozbZAU.js";
|
|
7
|
-
import { C as N } from "./card-DPmk26CL.js";
|
|
8
|
-
import { B as H } from "./badge-DCOqV9mI.js";
|
|
9
|
-
import { I as S } from "./insert-result-D074GtHX.js";
|
|
10
|
-
function h(l) {
|
|
11
|
-
return typeof l == "number" && Number.isFinite(l) && l > 0 ? l / 10 : null;
|
|
12
|
-
}
|
|
13
|
-
function q(l) {
|
|
14
|
-
const n = h(l.bpdMm), r = h(l.hcMm), s = h(l.acMm), d = h(l.flMm);
|
|
15
|
-
if (s === null || d === null) return null;
|
|
16
|
-
let o, c;
|
|
17
|
-
return n !== null && r !== null ? (o = 1.3596 - 386e-5 * s * d + 64e-4 * r + 61e-5 * n * s + 0.0424 * s + 0.174 * d, c = "hadlock4") : (o = 1.304 + 0.05281 * s + 0.1938 * d - 4e-3 * s * d, c = "hadlock1"), { grams: Math.round(10 ** o), method: c };
|
|
18
|
-
}
|
|
19
|
-
const z = V("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
20
|
-
variants: {
|
|
21
|
-
width: { full: "ds:w-full", auto: "ds:inline-flex" }
|
|
22
|
-
},
|
|
23
|
-
defaultVariants: { width: "full" }
|
|
24
|
-
}), G = T(
|
|
25
|
-
({
|
|
26
|
-
onResultChange: l,
|
|
27
|
-
onInsert: n,
|
|
28
|
-
insertVariant: r = "insert",
|
|
29
|
-
onCopy: s,
|
|
30
|
-
onError: d,
|
|
31
|
-
insertBrand: o,
|
|
32
|
-
id: c,
|
|
33
|
-
width: y,
|
|
34
|
-
className: M
|
|
35
|
-
}, w) => {
|
|
36
|
-
const { t: e, i18n: x } = A(), [u, F] = g(null), [p, $] = g(null), [b, B] = g(null), [v, L] = g(null), a = W(
|
|
37
|
-
() => q({ bpdMm: u, hcMm: p, acMm: b, flMm: v }),
|
|
38
|
-
[u, p, b, v]
|
|
39
|
-
);
|
|
40
|
-
j(() => {
|
|
41
|
-
l == null || l(a);
|
|
42
|
-
}, [a, l]);
|
|
43
|
-
const k = W(
|
|
44
|
-
() => new Intl.NumberFormat(x.language, { maximumFractionDigits: 0 }),
|
|
45
|
-
[x.language]
|
|
46
|
-
), C = e("fetalWeight.units.mm"), f = (i) => e("fetalWeight.efwValue", { grams: k.format(i.grams) }), I = [
|
|
47
|
-
{ label: e("fetalWeight.bpd"), value: u, onChange: F },
|
|
48
|
-
{ label: e("fetalWeight.hc"), value: p, onChange: $ },
|
|
49
|
-
{ label: e("fetalWeight.ac"), value: b, onChange: B },
|
|
50
|
-
{ label: e("fetalWeight.fl"), value: v, onChange: L }
|
|
51
|
-
];
|
|
52
|
-
return /* @__PURE__ */ m(
|
|
53
|
-
"div",
|
|
54
|
-
{
|
|
55
|
-
ref: w,
|
|
56
|
-
"data-component": "fetal-weight",
|
|
57
|
-
"data-component-id": c,
|
|
58
|
-
className: z({ width: y, className: M }),
|
|
59
|
-
children: [
|
|
60
|
-
/* @__PURE__ */ t("div", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2", children: I.map((i) => /* @__PURE__ */ t(D, { label: `${i.label} (${C})`, children: /* @__PURE__ */ t(
|
|
61
|
-
E,
|
|
62
|
-
{
|
|
63
|
-
mode: "decimal",
|
|
64
|
-
min: 0,
|
|
65
|
-
step: 0.1,
|
|
66
|
-
value: i.value,
|
|
67
|
-
onChange: i.onChange
|
|
68
|
-
}
|
|
69
|
-
) }, i.label)) }),
|
|
70
|
-
/* @__PURE__ */ t("p", { className: "ds:sr-only", role: "status", "aria-live": "polite", children: a ? `${e("fetalWeight.efwLabel")}: ${f(a)}.` : "" }),
|
|
71
|
-
a ? /* @__PURE__ */ t(N, { variant: "elevated", children: /* @__PURE__ */ m(N.Body, { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
|
|
72
|
-
/* @__PURE__ */ m("dl", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2", children: [
|
|
73
|
-
/* @__PURE__ */ m("div", { className: "ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]", children: [
|
|
74
|
-
/* @__PURE__ */ t("dt", { className: "type-label ds:text-muted-foreground", children: e("fetalWeight.efwLabel") }),
|
|
75
|
-
/* @__PURE__ */ t("dd", { className: "type-metric ds:text-foreground", children: f(a) })
|
|
76
|
-
] }),
|
|
77
|
-
/* @__PURE__ */ m("div", { className: "ds:flex ds:flex-col ds:items-end ds:gap-[var(--spacing-xs)] ds:text-end", children: [
|
|
78
|
-
/* @__PURE__ */ t("dt", { className: "type-label ds:text-muted-foreground", children: e("fetalWeight.methodLabel") }),
|
|
79
|
-
/* @__PURE__ */ t("dd", { children: /* @__PURE__ */ t(H, { variant: "info", children: e(`fetalWeight.method.${a.method}`) }) })
|
|
80
|
-
] })
|
|
81
|
-
] }),
|
|
82
|
-
/* @__PURE__ */ t("p", { className: "type-body-sm ds:text-muted-foreground", children: e("fetalWeight.disclaimer") }),
|
|
83
|
-
r === "copy" || n ? /* @__PURE__ */ t(
|
|
84
|
-
S,
|
|
85
|
-
{
|
|
86
|
-
onInsert: n,
|
|
87
|
-
variant: r,
|
|
88
|
-
onCopy: s,
|
|
89
|
-
onError: d,
|
|
90
|
-
card: {
|
|
91
|
-
title: e("insert.title.fetalWeight"),
|
|
92
|
-
icon: "scale",
|
|
93
|
-
highlight: f(a),
|
|
94
|
-
highlightToken: "--info",
|
|
95
|
-
brand: o,
|
|
96
|
-
fields: [
|
|
97
|
-
{
|
|
98
|
-
icon: "scale",
|
|
99
|
-
label: e("fetalWeight.efwLabel"),
|
|
100
|
-
value: f(a)
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
icon: "activity",
|
|
104
|
-
label: e("fetalWeight.methodLabel"),
|
|
105
|
-
value: e(`fetalWeight.method.${a.method}`)
|
|
106
|
-
}
|
|
107
|
-
]
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
) : null
|
|
111
|
-
] }) }) : /* @__PURE__ */ t("p", { className: "type-body ds:text-muted-foreground", children: e("fetalWeight.empty") })
|
|
112
|
-
]
|
|
113
|
-
}
|
|
114
|
-
);
|
|
115
|
-
}
|
|
116
|
-
);
|
|
117
|
-
G.displayName = "FetalWeight";
|
|
118
|
-
export {
|
|
119
|
-
G as F,
|
|
120
|
-
q as e
|
|
121
|
-
};
|
|
122
|
-
//# sourceMappingURL=fetal-weight-ePlLjJPc.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetal-weight-ePlLjJPc.js","sources":["../../src/components/fetal-weight/efw.ts","../../src/components/fetal-weight/fetal-weight.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* Estimated fetal weight (EFW) from ultrasound biometry — Hadlock. */\n/* */\n/* Pure, framework-free, unit-testable. Hadlock (1985) regressions on */\n/* log10(weight in grams) from biometry in CENTIMETRES (inputs are taken */\n/* in mm and converted). The 4-parameter formula (BPD+HC+AC+FL) is the */\n/* default; the AC+FL formula is the fallback for partial biometry. */\n/* */\n/* Hadlock FP, Harrist RB, Sharman RS, Deter RL, Park SK. \"Estimation of */\n/* fetal weight with the use of head, body, and femur measurements.\" */\n/* Am J Obstet Gynecol 1985;151:333-7. */\n/* ------------------------------------------------------------------ */\n\nexport interface FetalBiometryInput {\n /** Biparietal diameter, mm. */\n bpdMm?: number | null;\n /** Head circumference, mm. */\n hcMm?: number | null;\n /** Abdominal circumference, mm. */\n acMm?: number | null;\n /** Femur length, mm. */\n flMm?: number | null;\n}\n\n/** Which Hadlock regression produced the estimate. */\nexport type EfwMethod = 'hadlock4' | 'hadlock1';\n\nexport interface EfwResult {\n /** Estimated fetal weight, grams (rounded to the nearest gram). */\n grams: number;\n /** The Hadlock regression used, given the available measurements. */\n method: EfwMethod;\n}\n\n/** A measurement is usable when it is a positive, finite number. */\nfunction cm(mm: number | null | undefined): number | null {\n return typeof mm === 'number' && Number.isFinite(mm) && mm > 0\n ? mm / 10\n : null;\n}\n\n/**\n * Estimate fetal weight from biometry. Uses the Hadlock 4-parameter formula\n * when BPD, HC, AC and FL are all present, else the AC+FL formula. Returns\n * `null` when AC and FL (the minimum) aren't both available.\n */\nexport function estimateFetalWeight(\n input: FetalBiometryInput,\n): EfwResult | null {\n const bpd = cm(input.bpdMm);\n const hc = cm(input.hcMm);\n const ac = cm(input.acMm);\n const fl = cm(input.flMm);\n\n // AC + FL are the minimum for any Hadlock estimate.\n if (ac === null || fl === null) return null;\n\n let log10: number;\n let method: EfwMethod;\n\n if (bpd !== null && hc !== null) {\n // Hadlock 4 (BPD, HC, AC, FL).\n log10 =\n 1.3596 -\n 0.00386 * ac * fl +\n 0.0064 * hc +\n 0.00061 * bpd * ac +\n 0.0424 * ac +\n 0.174 * fl;\n method = 'hadlock4';\n } else {\n // Hadlock 1 (AC, FL).\n log10 = 1.304 + 0.05281 * ac + 0.1938 * fl - 0.004 * ac * fl;\n method = 'hadlock1';\n }\n\n return { grams: Math.round(10 ** log10), method };\n}\n","/* ------------------------------------------------------------------ */\n/* FetalWeight — estimated fetal weight from ultrasound biometry. */\n/* */\n/* Inputs BPD / HC / AC / FL (mm); outputs EFW in grams via Hadlock */\n/* (maths in `./fetal-weight`, pure + tested). */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { FormField } from '../form-field';\nimport { NumberInput } from '../number-input';\nimport { Card } from '../card';\nimport { Badge } from '../badge';\nimport {\n InsertButton,\n type InsertPayload,\n type InsertVariant,\n type InsertMode,\n} from '../_shared/insert-result';\nimport { type EfwResult, estimateFetalWeight } from './efw';\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\nexport interface FetalWeightProps extends VariantProps<typeof rootVariants> {\n /** Fires whenever an estimate can be computed (and `null` when it can't). */\n onResultChange?: (result: EfwResult | null) => void;\n /** When provided, shows the result-action buttons that emit / copy the result. */\n onInsert?: (payload: InsertPayload) => void;\n /** Which verb the result button performs. Defaults to `'insert'`. */\n insertVariant?: InsertVariant;\n /** `copy` variant only — fired after a successful clipboard write. */\n onCopy?: (mode: InsertMode) => void;\n /** `copy` variant only — fired if the clipboard write can't proceed. */\n onError?: (error: unknown) => void;\n /** Brand wordmark printed in the inserted/copied result-card footer. */\n insertBrand?: string | false;\n /** Opaque instance id, emitted as `data-component-id`. */\n id?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\nexport const FetalWeight = forwardRef<HTMLDivElement, FetalWeightProps>(\n (\n {\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 [bpdMm, setBpdMm] = useState<number | null>(null);\n const [hcMm, setHcMm] = useState<number | null>(null);\n const [acMm, setAcMm] = useState<number | null>(null);\n const [flMm, setFlMm] = useState<number | null>(null);\n\n const result = useMemo(\n () => estimateFetalWeight({ bpdMm, hcMm, acMm, flMm }),\n [bpdMm, hcMm, acMm, flMm],\n );\n\n useEffect(() => {\n onResultChange?.(result);\n }, [result, onResultChange]);\n\n const grams = useMemo(\n () => new Intl.NumberFormat(i18n.language, { maximumFractionDigits: 0 }),\n [i18n.language],\n );\n\n const unit = t('fetalWeight.units.mm');\n const efwText = (r: EfwResult): string =>\n t('fetalWeight.efwValue', { grams: grams.format(r.grams) });\n\n const fields: {\n label: string;\n value: number | null;\n onChange: (v: number | null) => void;\n }[] = [\n { label: t('fetalWeight.bpd'), value: bpdMm, onChange: setBpdMm },\n { label: t('fetalWeight.hc'), value: hcMm, onChange: setHcMm },\n { label: t('fetalWeight.ac'), value: acMm, onChange: setAcMm },\n { label: t('fetalWeight.fl'), value: flMm, onChange: setFlMm },\n ];\n\n return (\n <div\n ref={ref}\n data-component=\"fetal-weight\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n {fields.map((f) => (\n <FormField key={f.label} label={`${f.label} (${unit})`}>\n <NumberInput\n mode=\"decimal\"\n min={0}\n step={0.1}\n value={f.value}\n onChange={f.onChange}\n />\n </FormField>\n ))}\n </div>\n\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {result ? `${t('fetalWeight.efwLabel')}: ${efwText(result)}.` : ''}\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-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('fetalWeight.efwLabel')}\n </dt>\n <dd className=\"type-metric ds:text-foreground\">\n {efwText(result)}\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:items-end ds:gap-[var(--spacing-xs)] ds:text-end\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('fetalWeight.methodLabel')}\n </dt>\n <dd>\n <Badge variant=\"info\">\n {t(`fetalWeight.method.${result.method}`)}\n </Badge>\n </dd>\n </div>\n </dl>\n <p className=\"type-body-sm ds:text-muted-foreground\">\n {t('fetalWeight.disclaimer')}\n </p>\n {insertVariant === 'copy' || onInsert ? (\n <InsertButton\n onInsert={onInsert}\n variant={insertVariant}\n onCopy={onCopy}\n onError={onError}\n card={{\n title: t('insert.title.fetalWeight'),\n icon: 'scale',\n highlight: efwText(result),\n highlightToken: '--info',\n brand: insertBrand,\n fields: [\n {\n icon: 'scale',\n label: t('fetalWeight.efwLabel'),\n value: efwText(result),\n },\n {\n icon: 'activity',\n label: t('fetalWeight.methodLabel'),\n value: t(`fetalWeight.method.${result.method}`),\n },\n ],\n }}\n />\n ) : null}\n </Card.Body>\n </Card>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('fetalWeight.empty')}\n </p>\n )}\n </div>\n );\n },\n);\n\nFetalWeight.displayName = 'FetalWeight';\n"],"names":["cm","mm","estimateFetalWeight","input","bpd","hc","ac","fl","log10","method","rootVariants","cva","FetalWeight","forwardRef","onResultChange","onInsert","insertVariant","onCopy","onError","insertBrand","id","width","className","ref","t","i18n","useTranslation","bpdMm","setBpdMm","useState","hcMm","setHcMm","acMm","setAcMm","flMm","setFlMm","result","useMemo","useEffect","grams","unit","efwText","r","fields","jsxs","jsx","f","FormField","NumberInput","Card","Badge","InsertButton"],"mappings":"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"}
|