@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,311 +0,0 @@
|
|
|
1
|
-
import { jsxs as s, jsx as a, Fragment as X } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as Z, useState as o, useMemo as m, useEffect as ee } from "react";
|
|
3
|
-
import { c as ae } from "./index-D2ZczOXr.js";
|
|
4
|
-
import { useTranslation as te } from "react-i18next";
|
|
5
|
-
import { R as i } from "./radio-TWf9Q-mp.js";
|
|
6
|
-
import { R as y } from "./radio-group-CI-6SmSw.js";
|
|
7
|
-
import { F as x } from "./form-field-M5UpX65Z.js";
|
|
8
|
-
import { D as w } from "./date-picker-ZHejTVAJ.js";
|
|
9
|
-
import { S as le } from "./select-BW5ecXlX.js";
|
|
10
|
-
import { S as se } from "./switch-OILsBLWo.js";
|
|
11
|
-
import { C as R } from "./card-DPmk26CL.js";
|
|
12
|
-
import { B as T } from "./badge-DCOqV9mI.js";
|
|
13
|
-
import { I as ie } from "./insert-result-D074GtHX.js";
|
|
14
|
-
import { c as ne, g as oe, e as re, f as de, A as ce, h as me, i as ge, G as ue } from "./antenatal-schedule-timeline-BMMpi2lb.js";
|
|
15
|
-
import { s as he } from "./subDays-BcNi04uf.js";
|
|
16
|
-
import { i as pe } from "./date-picker-variants-eL6HjWvw.js";
|
|
17
|
-
const fe = ae("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
18
|
-
variants: {
|
|
19
|
-
width: { full: "ds:w-full", auto: "ds:inline-flex" }
|
|
20
|
-
},
|
|
21
|
-
defaultVariants: { width: "full" }
|
|
22
|
-
}), ve = Z(
|
|
23
|
-
({
|
|
24
|
-
defaultMethod: $ = "lmp",
|
|
25
|
-
defaultReferenceDate: G,
|
|
26
|
-
onResultChange: g,
|
|
27
|
-
onInsert: C,
|
|
28
|
-
insertVariant: S = "insert",
|
|
29
|
-
onCopy: F,
|
|
30
|
-
onError: L,
|
|
31
|
-
insertBrand: I,
|
|
32
|
-
showSchedule: f = !1,
|
|
33
|
-
defaultPlurality: V = "singleton",
|
|
34
|
-
defaultChorionicity: B = "unknown",
|
|
35
|
-
defaultRhNegative: E = !1,
|
|
36
|
-
defaultGdmRisk: O,
|
|
37
|
-
scheduleOptions: N,
|
|
38
|
-
id: z,
|
|
39
|
-
width: M,
|
|
40
|
-
className: j
|
|
41
|
-
}, _) => {
|
|
42
|
-
const { t: e, i18n: D } = te(), [d, H] = o($), [c, P] = o(
|
|
43
|
-
G
|
|
44
|
-
), [r, Y] = o(() => /* @__PURE__ */ new Date()), q = m(() => /* @__PURE__ */ new Date(), []), [u, J] = o(V), [v, K] = o(B), [b, Q] = o(E), [h, U] = o(
|
|
45
|
-
O ?? "none"
|
|
46
|
-
), l = m(() => {
|
|
47
|
-
if (!c) return null;
|
|
48
|
-
const t = d === "lmp" ? c : he(c, ue), n = ne({ method: "lmp", date: t }, r);
|
|
49
|
-
return {
|
|
50
|
-
result: {
|
|
51
|
-
gestationalAge: n.gestationalAge,
|
|
52
|
-
trimester: n.trimester,
|
|
53
|
-
dueDate: n.dueDate
|
|
54
|
-
},
|
|
55
|
-
milestones: oe(n.gestationalStart),
|
|
56
|
-
gestationalStart: n.gestationalStart
|
|
57
|
-
};
|
|
58
|
-
}, [d, c, r]), p = m(() => !f || !l ? null : re(l.gestationalStart, {
|
|
59
|
-
...N,
|
|
60
|
-
today: r,
|
|
61
|
-
plurality: u,
|
|
62
|
-
chorionicity: v,
|
|
63
|
-
rhNegative: b,
|
|
64
|
-
gdmRisk: h === "none" ? void 0 : h
|
|
65
|
-
}), [
|
|
66
|
-
f,
|
|
67
|
-
l,
|
|
68
|
-
r,
|
|
69
|
-
N,
|
|
70
|
-
u,
|
|
71
|
-
v,
|
|
72
|
-
b,
|
|
73
|
-
h
|
|
74
|
-
]), W = m(
|
|
75
|
-
() => [
|
|
76
|
-
"unknown",
|
|
77
|
-
"dichorionic-diamniotic",
|
|
78
|
-
"monochorionic-diamniotic",
|
|
79
|
-
"monochorionic-monoamniotic"
|
|
80
|
-
].map((t) => ({
|
|
81
|
-
value: t,
|
|
82
|
-
label: e(`antenatalSchedule.chorionicity.${t}`)
|
|
83
|
-
})),
|
|
84
|
-
[e]
|
|
85
|
-
), k = m(
|
|
86
|
-
() => new Intl.DateTimeFormat(D.language, { dateStyle: "medium" }),
|
|
87
|
-
[D.language]
|
|
88
|
-
);
|
|
89
|
-
ee(() => {
|
|
90
|
-
g == null || g((l == null ? void 0 : l.result) ?? null);
|
|
91
|
-
}, [l, g]);
|
|
92
|
-
const A = (t) => t ? e("gestationalAgeCalculator.gestation", {
|
|
93
|
-
weeks: t.weeks,
|
|
94
|
-
days: t.days
|
|
95
|
-
}) : "—";
|
|
96
|
-
return /* @__PURE__ */ s(
|
|
97
|
-
"div",
|
|
98
|
-
{
|
|
99
|
-
ref: _,
|
|
100
|
-
"data-component": "gestational-age-calculator",
|
|
101
|
-
"data-component-id": z,
|
|
102
|
-
className: fe({ width: M, className: j }),
|
|
103
|
-
children: [
|
|
104
|
-
/* @__PURE__ */ s(
|
|
105
|
-
y,
|
|
106
|
-
{
|
|
107
|
-
label: e("gestationalAgeCalculator.method.label"),
|
|
108
|
-
variant: "horizontal",
|
|
109
|
-
value: d,
|
|
110
|
-
onValueChange: (t) => H(t),
|
|
111
|
-
children: [
|
|
112
|
-
/* @__PURE__ */ a(i, { label: e("gestationalAgeCalculator.method.lmp"), value: "lmp" }),
|
|
113
|
-
/* @__PURE__ */ a(i, { label: e("gestationalAgeCalculator.method.edd"), value: "edd" })
|
|
114
|
-
]
|
|
115
|
-
}
|
|
116
|
-
),
|
|
117
|
-
/* @__PURE__ */ a(
|
|
118
|
-
x,
|
|
119
|
-
{
|
|
120
|
-
label: e(
|
|
121
|
-
d === "lmp" ? "gestationalAgeCalculator.lmpDate" : "gestationalAgeCalculator.eddDate"
|
|
122
|
-
),
|
|
123
|
-
children: /* @__PURE__ */ a(
|
|
124
|
-
w,
|
|
125
|
-
{
|
|
126
|
-
value: c,
|
|
127
|
-
onChange: P,
|
|
128
|
-
maxDate: d === "lmp" ? q : void 0
|
|
129
|
-
}
|
|
130
|
-
)
|
|
131
|
-
}
|
|
132
|
-
),
|
|
133
|
-
/* @__PURE__ */ a(
|
|
134
|
-
x,
|
|
135
|
-
{
|
|
136
|
-
label: e("gestationalAgeCalculator.asOfDate"),
|
|
137
|
-
description: e("gestationalAgeCalculator.asOfDateHint"),
|
|
138
|
-
children: /* @__PURE__ */ a(w, { value: r, onChange: (t) => t && Y(t) })
|
|
139
|
-
}
|
|
140
|
-
),
|
|
141
|
-
f ? /* @__PURE__ */ s(X, { children: [
|
|
142
|
-
/* @__PURE__ */ s(
|
|
143
|
-
y,
|
|
144
|
-
{
|
|
145
|
-
label: e("antenatalSchedule.plurality.label"),
|
|
146
|
-
variant: "horizontal",
|
|
147
|
-
value: u,
|
|
148
|
-
onValueChange: (t) => J(t),
|
|
149
|
-
children: [
|
|
150
|
-
/* @__PURE__ */ a(
|
|
151
|
-
i,
|
|
152
|
-
{
|
|
153
|
-
label: e("antenatalSchedule.plurality.singleton"),
|
|
154
|
-
value: "singleton"
|
|
155
|
-
}
|
|
156
|
-
),
|
|
157
|
-
/* @__PURE__ */ a(
|
|
158
|
-
i,
|
|
159
|
-
{
|
|
160
|
-
label: e("antenatalSchedule.plurality.twin"),
|
|
161
|
-
value: "twin"
|
|
162
|
-
}
|
|
163
|
-
),
|
|
164
|
-
/* @__PURE__ */ a(
|
|
165
|
-
i,
|
|
166
|
-
{
|
|
167
|
-
label: e("antenatalSchedule.plurality.triplet"),
|
|
168
|
-
value: "triplet"
|
|
169
|
-
}
|
|
170
|
-
)
|
|
171
|
-
]
|
|
172
|
-
}
|
|
173
|
-
),
|
|
174
|
-
u !== "singleton" ? /* @__PURE__ */ a(x, { label: e("antenatalSchedule.chorionicity.label"), children: /* @__PURE__ */ a(
|
|
175
|
-
le,
|
|
176
|
-
{
|
|
177
|
-
options: W,
|
|
178
|
-
value: v,
|
|
179
|
-
onValueChange: (t) => K(t)
|
|
180
|
-
}
|
|
181
|
-
) }) : null,
|
|
182
|
-
/* @__PURE__ */ a(
|
|
183
|
-
se,
|
|
184
|
-
{
|
|
185
|
-
label: e("antenatalSchedule.rhNegative"),
|
|
186
|
-
checked: b,
|
|
187
|
-
onCheckedChange: Q
|
|
188
|
-
}
|
|
189
|
-
),
|
|
190
|
-
/* @__PURE__ */ s(
|
|
191
|
-
y,
|
|
192
|
-
{
|
|
193
|
-
label: e("antenatalSchedule.gdmRisk.label"),
|
|
194
|
-
variant: "horizontal",
|
|
195
|
-
value: h,
|
|
196
|
-
onValueChange: (t) => U(t),
|
|
197
|
-
children: [
|
|
198
|
-
/* @__PURE__ */ a(i, { label: e("antenatalSchedule.gdmRisk.none"), value: "none" }),
|
|
199
|
-
/* @__PURE__ */ a(
|
|
200
|
-
i,
|
|
201
|
-
{
|
|
202
|
-
label: e("antenatalSchedule.gdmRisk.medium"),
|
|
203
|
-
value: "medium"
|
|
204
|
-
}
|
|
205
|
-
),
|
|
206
|
-
/* @__PURE__ */ a(i, { label: e("antenatalSchedule.gdmRisk.high"), value: "high" })
|
|
207
|
-
]
|
|
208
|
-
}
|
|
209
|
-
)
|
|
210
|
-
] }) : null,
|
|
211
|
-
/* @__PURE__ */ a("p", { className: "ds:sr-only", role: "status", "aria-live": "polite", children: l ? `${e("gestationalAgeCalculator.gestationLabel")}: ${A(
|
|
212
|
-
l.result.gestationalAge
|
|
213
|
-
)}. ${e("gestationalAgeCalculator.trimesterLabel")}: ${e(
|
|
214
|
-
`gestationalAgeCalculator.trimester.${l.result.trimester}`
|
|
215
|
-
)}.` : "" }),
|
|
216
|
-
l ? /* @__PURE__ */ a(R, { variant: "elevated", children: /* @__PURE__ */ s(R.Body, { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
|
|
217
|
-
/* @__PURE__ */ s("dl", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2", children: [
|
|
218
|
-
/* @__PURE__ */ s("div", { className: "ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]", children: [
|
|
219
|
-
/* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: e("gestationalAgeCalculator.trimesterLabel") }),
|
|
220
|
-
/* @__PURE__ */ a("dd", { children: /* @__PURE__ */ a(
|
|
221
|
-
T,
|
|
222
|
-
{
|
|
223
|
-
variant: de[l.result.trimester],
|
|
224
|
-
size: "lg",
|
|
225
|
-
children: e(
|
|
226
|
-
`gestationalAgeCalculator.trimester.${l.result.trimester}`
|
|
227
|
-
)
|
|
228
|
-
}
|
|
229
|
-
) })
|
|
230
|
-
] }),
|
|
231
|
-
/* @__PURE__ */ s("div", { className: "ds:flex ds:flex-col ds:items-end ds:gap-[var(--spacing-xs)] ds:text-end", children: [
|
|
232
|
-
/* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: e("gestationalAgeCalculator.gestationLabel") }),
|
|
233
|
-
/* @__PURE__ */ a("dd", { className: "type-metric ds:text-foreground", children: A(l.result.gestationalAge) })
|
|
234
|
-
] })
|
|
235
|
-
] }),
|
|
236
|
-
/* @__PURE__ */ s("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
|
|
237
|
-
/* @__PURE__ */ a("span", { className: "type-label ds:text-muted-foreground", children: e("gestationalAgeCalculator.milestonesLabel") }),
|
|
238
|
-
/* @__PURE__ */ a("ul", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: l.milestones.map((t) => {
|
|
239
|
-
const n = pe(r, t.date);
|
|
240
|
-
return /* @__PURE__ */ s(
|
|
241
|
-
"li",
|
|
242
|
-
{
|
|
243
|
-
className: "ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-md)]",
|
|
244
|
-
children: [
|
|
245
|
-
/* @__PURE__ */ a("span", { className: "type-body ds:text-foreground", children: e(`gestationalAgeCalculator.milestone.${t.key}`) }),
|
|
246
|
-
/* @__PURE__ */ s("span", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-sm)]", children: [
|
|
247
|
-
/* @__PURE__ */ a("span", { className: "type-body ds:text-muted-foreground", children: k.format(t.date) }),
|
|
248
|
-
n ? /* @__PURE__ */ a(T, { variant: "success", children: e("gestationalAgeCalculator.reached") }) : null
|
|
249
|
-
] })
|
|
250
|
-
]
|
|
251
|
-
},
|
|
252
|
-
t.key
|
|
253
|
-
);
|
|
254
|
-
}) })
|
|
255
|
-
] })
|
|
256
|
-
] }) }) : /* @__PURE__ */ a("p", { className: "type-body ds:text-muted-foreground", children: e("gestationalAgeCalculator.empty") }),
|
|
257
|
-
p ? /* @__PURE__ */ a(ce, { events: p }) : null,
|
|
258
|
-
l && (S === "copy" || C) ? /* @__PURE__ */ a(
|
|
259
|
-
ie,
|
|
260
|
-
{
|
|
261
|
-
onInsert: C,
|
|
262
|
-
variant: S,
|
|
263
|
-
onCopy: F,
|
|
264
|
-
onError: L,
|
|
265
|
-
card: {
|
|
266
|
-
title: e("insert.title.gestationalAge"),
|
|
267
|
-
icon: "baby",
|
|
268
|
-
highlight: e(
|
|
269
|
-
`gestationalAgeCalculator.trimester.${l.result.trimester}`
|
|
270
|
-
),
|
|
271
|
-
// Chip shares the trimester's semantic token so the inserted PNG
|
|
272
|
-
// chip matches the on-screen trimester badge — with the
|
|
273
|
-
// contrast-safe orange override for the `--warning` third trimester.
|
|
274
|
-
highlightToken: ge(l.result.trimester),
|
|
275
|
-
brand: I,
|
|
276
|
-
fields: [
|
|
277
|
-
{
|
|
278
|
-
// Gestational age is an elapsed duration → clock glyph.
|
|
279
|
-
icon: "clock",
|
|
280
|
-
label: e("gestationalAgeCalculator.gestationLabel"),
|
|
281
|
-
value: A(l.result.gestationalAge)
|
|
282
|
-
},
|
|
283
|
-
{
|
|
284
|
-
// Trimester is a clinical-stage classification → tag.
|
|
285
|
-
icon: "tag",
|
|
286
|
-
label: e("gestationalAgeCalculator.trimesterLabel"),
|
|
287
|
-
value: e(
|
|
288
|
-
`gestationalAgeCalculator.trimester.${l.result.trimester}`
|
|
289
|
-
)
|
|
290
|
-
},
|
|
291
|
-
// When the schedule is shown, the single Insert button carries
|
|
292
|
-
// the exam windows too (no second button).
|
|
293
|
-
...p ? me(
|
|
294
|
-
p,
|
|
295
|
-
e,
|
|
296
|
-
(t) => k.format(t)
|
|
297
|
-
) : []
|
|
298
|
-
]
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
) : null
|
|
302
|
-
]
|
|
303
|
-
}
|
|
304
|
-
);
|
|
305
|
-
}
|
|
306
|
-
);
|
|
307
|
-
ve.displayName = "GestationalAgeCalculator";
|
|
308
|
-
export {
|
|
309
|
-
ve as G
|
|
310
|
-
};
|
|
311
|
-
//# sourceMappingURL=gestational-age-calculator-DdgbH69Z.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gestational-age-calculator-DdgbH69Z.js","sources":["../../src/components/gestational-age-calculator/gestational-age-calculator.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* GestationalAgeCalculator — current gestational age, trimester and */\n/* milestone dates, from either a known LMP or a known due date. */\n/* */\n/* Reuses the shared `gestation` maths from due-date-calculator: GA day */\n/* 0 is the LMP; from an EDD we back out LMP = EDD − 280 days. */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { subDays, isAfter } from 'date-fns';\nimport { RadioGroup, Radio } from '../radio-group';\nimport { FormField } from '../form-field';\nimport { DatePicker } from '../date-picker';\nimport { Select } from '../select';\nimport { Switch } from '../switch';\nimport { Card } from '../card';\nimport { Badge } from '../badge';\nimport {\n InsertButton,\n type InsertPayload,\n type InsertVariant,\n type InsertMode,\n} from '../_shared/insert-result';\nimport {\n type Trimester,\n type GestationalAge,\n type Plurality,\n type Chorionicity,\n computeDueDate,\n gestationalMilestones,\n GESTATION_DAYS,\n TRIMESTER_BADGE_VARIANT,\n trimesterHighlightToken,\n} from '../_shared/obstetrics';\nimport {\n computeAntenatalSchedule,\n type AntenatalScheduleOptions,\n type GdmRisk,\n} from '../_shared/antenatal-schedule';\nimport {\n AntenatalScheduleTimeline,\n buildScheduleInsertFields,\n} from '../_shared/antenatal-schedule-timeline';\n\nconst rootVariants = cva('ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]', {\n variants: {\n width: { full: 'ds:w-full', auto: 'ds:inline-flex' },\n },\n defaultVariants: { width: 'full' },\n});\n\ntype DateMethod = 'lmp' | 'edd';\n\nexport interface GestationalAgeResult {\n gestationalAge: GestationalAge | null;\n trimester: Trimester;\n dueDate: Date;\n}\n\nexport interface GestationalAgeCalculatorProps extends VariantProps<\n typeof rootVariants\n> {\n /** Whether the input date is the last period (`lmp`) or the due date (`edd`). */\n defaultMethod?: DateMethod;\n /** Pre-fill the reference date (e.g. a known LMP from the patient record). */\n defaultReferenceDate?: Date;\n /** Fires whenever a result can be computed (and `null` when it can't). */\n onResultChange?: (result: GestationalAgeResult | null) => void;\n /** When provided, shows the result-action buttons that emit / copy the result. */\n onInsert?: (payload: InsertPayload) => void;\n /**\n * Which verb the result button performs. Defaults to `'insert'`.\n * Use `'copy'` in an app-shell surface (no editor to insert into) — the\n * button writes the result to the clipboard as a multi-format `ClipboardItem`.\n */\n insertVariant?: InsertVariant;\n /** `copy` variant only — fired after a successful clipboard write. */\n onCopy?: (mode: InsertMode) => void;\n /** `copy` variant only — fired if the clipboard write can't proceed. */\n onError?: (error: unknown) => void;\n /**\n * Brand wordmark printed in the inserted/copied result-card footer.\n * Omitted → no brand line (and no footer hairline); a string → that custom\n * brand; `false` → no brand line. Brand is opt-in.\n */\n insertBrand?: string | false;\n /**\n * Append the antenatal exam schedule (the time-sensitive screening windows)\n * below the result, dated from the computed gestational start, and reveal the\n * plurality / chorionicity inputs that drive it.\n */\n showSchedule?: boolean;\n /** `showSchedule` only — initial number of babies. Defaults to `'singleton'`. */\n defaultPlurality?: Plurality;\n /** `showSchedule` only — initial chorionicity for multiples. Defaults to `'unknown'`. */\n defaultChorionicity?: Chorionicity;\n /** `showSchedule` only — initial Rh-negative state (surfaces anti-D). */\n defaultRhNegative?: boolean;\n /** `showSchedule` only — initial gestational-diabetes risk tier (surfaces OGTT). */\n defaultGdmRisk?: GdmRisk;\n /**\n * Passthrough options for the appended schedule (national `schedule`,\n * `includeOnIndication`, `birthGuideline`). `today`, `plurality`,\n * `chorionicity`, `rhNegative` and `gdmRisk` come from the component's own\n * inputs. Ignored unless `showSchedule` is set.\n */\n scheduleOptions?: Omit<\n AntenatalScheduleOptions,\n 'today' | 'plurality' | 'chorionicity' | 'rhNegative' | 'gdmRisk'\n >;\n /** Opaque instance id, emitted as `data-component-id`. */\n id?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\n/**\n * @deprecated Superseded by `PregnancyDating`, which unifies the due-date and\n * gestational-age calculators (any anchor → both EDD and current GA) and adds a\n * manual ±days dating adjustment. This component will be removed in a future\n * release; migrate to `PregnancyDating` (`defaultMethod=\"edd\"` for the\n * date-back-from-EDD flow).\n */\nexport const GestationalAgeCalculator = forwardRef<\n HTMLDivElement,\n GestationalAgeCalculatorProps\n>(\n (\n {\n defaultMethod = 'lmp',\n defaultReferenceDate,\n onResultChange,\n onInsert,\n insertVariant = 'insert',\n onCopy,\n onError,\n insertBrand,\n showSchedule = false,\n defaultPlurality = 'singleton',\n defaultChorionicity = 'unknown',\n defaultRhNegative = false,\n defaultGdmRisk,\n scheduleOptions,\n id,\n width,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n const [method, setMethod] = useState<DateMethod>(defaultMethod);\n const [refDate, setRefDate] = useState<Date | undefined>(\n defaultReferenceDate,\n );\n // The date the result is evaluated against (\"as of\"); defaults to today but\n // can be a future appointment date to project the GA/schedule forward.\n const [asOfDate, setAsOfDate] = useState<Date>(() => new Date());\n // Real today — caps the dating-anchor input (an LMP can't be in the future).\n const today = useMemo(() => new Date(), []);\n const [plurality, setPlurality] = useState<Plurality>(defaultPlurality);\n const [chorionicity, setChorionicity] =\n useState<Chorionicity>(defaultChorionicity);\n const [rhNegative, setRhNegative] = useState<boolean>(defaultRhNegative);\n const [gdmRisk, setGdmRisk] = useState<GdmRisk | 'none'>(\n defaultGdmRisk ?? 'none',\n );\n\n const data = useMemo(() => {\n if (!refDate) return null;\n // Normalise to an LMP, then reuse the shared gestation maths.\n const lmp = method === 'lmp' ? refDate : subDays(refDate, GESTATION_DAYS);\n const r = computeDueDate({ method: 'lmp', date: lmp }, asOfDate);\n return {\n result: {\n gestationalAge: r.gestationalAge,\n trimester: r.trimester,\n dueDate: r.dueDate,\n } satisfies GestationalAgeResult,\n milestones: gestationalMilestones(r.gestationalStart),\n gestationalStart: r.gestationalStart,\n };\n }, [method, refDate, asOfDate]);\n\n const schedule = useMemo(() => {\n if (!showSchedule || !data) return null;\n return computeAntenatalSchedule(data.gestationalStart, {\n ...scheduleOptions,\n today: asOfDate,\n plurality,\n chorionicity,\n rhNegative,\n gdmRisk: gdmRisk === 'none' ? undefined : gdmRisk,\n });\n }, [\n showSchedule,\n data,\n asOfDate,\n scheduleOptions,\n plurality,\n chorionicity,\n rhNegative,\n gdmRisk,\n ]);\n\n const chorionicityOptions = useMemo(\n () =>\n (\n [\n 'unknown',\n 'dichorionic-diamniotic',\n 'monochorionic-diamniotic',\n 'monochorionic-monoamniotic',\n ] as const\n ).map((c) => ({\n value: c,\n label: t(`antenatalSchedule.chorionicity.${c}`),\n })),\n [t],\n );\n\n const dateFormatter = useMemo(\n () => new Intl.DateTimeFormat(i18n.language, { dateStyle: 'medium' }),\n [i18n.language],\n );\n\n useEffect(() => {\n onResultChange?.(data?.result ?? null);\n }, [data, onResultChange]);\n\n const gaText = (ga: GestationalAge | null): string =>\n ga\n ? t('gestationalAgeCalculator.gestation', {\n weeks: ga.weeks,\n days: ga.days,\n })\n : '—';\n\n return (\n <div\n ref={ref}\n data-component=\"gestational-age-calculator\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <RadioGroup\n label={t('gestationalAgeCalculator.method.label')}\n variant=\"horizontal\"\n value={method}\n onValueChange={(next) => setMethod(next as DateMethod)}\n >\n <Radio label={t('gestationalAgeCalculator.method.lmp')} value=\"lmp\" />\n <Radio label={t('gestationalAgeCalculator.method.edd')} value=\"edd\" />\n </RadioGroup>\n\n <FormField\n label={t(\n method === 'lmp'\n ? 'gestationalAgeCalculator.lmpDate'\n : 'gestationalAgeCalculator.eddDate',\n )}\n >\n <DatePicker\n value={refDate}\n onChange={setRefDate}\n maxDate={method === 'lmp' ? today : undefined}\n />\n </FormField>\n\n <FormField\n label={t('gestationalAgeCalculator.asOfDate')}\n description={t('gestationalAgeCalculator.asOfDateHint')}\n >\n <DatePicker value={asOfDate} onChange={(d) => d && setAsOfDate(d)} />\n </FormField>\n\n {showSchedule ? (\n <>\n <RadioGroup\n label={t('antenatalSchedule.plurality.label')}\n variant=\"horizontal\"\n value={plurality}\n onValueChange={(next) => setPlurality(next as Plurality)}\n >\n <Radio\n label={t('antenatalSchedule.plurality.singleton')}\n value=\"singleton\"\n />\n <Radio\n label={t('antenatalSchedule.plurality.twin')}\n value=\"twin\"\n />\n <Radio\n label={t('antenatalSchedule.plurality.triplet')}\n value=\"triplet\"\n />\n </RadioGroup>\n\n {plurality !== 'singleton' ? (\n <FormField label={t('antenatalSchedule.chorionicity.label')}>\n <Select\n options={chorionicityOptions}\n value={chorionicity}\n onValueChange={(next) =>\n setChorionicity(next as Chorionicity)\n }\n />\n </FormField>\n ) : null}\n\n <Switch\n label={t('antenatalSchedule.rhNegative')}\n checked={rhNegative}\n onCheckedChange={setRhNegative}\n />\n\n <RadioGroup\n label={t('antenatalSchedule.gdmRisk.label')}\n variant=\"horizontal\"\n value={gdmRisk}\n onValueChange={(next) => setGdmRisk(next as GdmRisk | 'none')}\n >\n <Radio label={t('antenatalSchedule.gdmRisk.none')} value=\"none\" />\n <Radio\n label={t('antenatalSchedule.gdmRisk.medium')}\n value=\"medium\"\n />\n <Radio label={t('antenatalSchedule.gdmRisk.high')} value=\"high\" />\n </RadioGroup>\n </>\n ) : null}\n\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {data\n ? `${t('gestationalAgeCalculator.gestationLabel')}: ${gaText(\n data.result.gestationalAge,\n )}. ${t('gestationalAgeCalculator.trimesterLabel')}: ${t(\n `gestationalAgeCalculator.trimester.${data.result.trimester}`,\n )}.`\n : ''}\n </p>\n\n {data ? (\n <Card variant=\"elevated\">\n <Card.Body className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n <dl className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n <div className=\"ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('gestationalAgeCalculator.trimesterLabel')}\n </dt>\n <dd>\n <Badge\n variant={TRIMESTER_BADGE_VARIANT[data.result.trimester]}\n size=\"lg\"\n >\n {t(\n `gestationalAgeCalculator.trimester.${data.result.trimester}`,\n )}\n </Badge>\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:items-end ds:gap-[var(--spacing-xs)] ds:text-end\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('gestationalAgeCalculator.gestationLabel')}\n </dt>\n <dd className=\"type-metric ds:text-foreground\">\n {gaText(data.result.gestationalAge)}\n </dd>\n </div>\n </dl>\n\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <span className=\"type-label ds:text-muted-foreground\">\n {t('gestationalAgeCalculator.milestonesLabel')}\n </span>\n <ul className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n {data.milestones.map((m) => {\n const reached = isAfter(asOfDate, m.date);\n return (\n <li\n key={m.key}\n className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-md)]\"\n >\n <span className=\"type-body ds:text-foreground\">\n {t(`gestationalAgeCalculator.milestone.${m.key}`)}\n </span>\n <span className=\"ds:flex ds:items-center ds:gap-[var(--spacing-sm)]\">\n <span className=\"type-body ds:text-muted-foreground\">\n {dateFormatter.format(m.date)}\n </span>\n {reached ? (\n <Badge variant=\"success\">\n {t('gestationalAgeCalculator.reached')}\n </Badge>\n ) : null}\n </span>\n </li>\n );\n })}\n </ul>\n </div>\n </Card.Body>\n </Card>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('gestationalAgeCalculator.empty')}\n </p>\n )}\n\n {schedule ? <AntenatalScheduleTimeline events={schedule} /> : null}\n\n {/* One result-action group for the whole result — sits after both the\n gestational-age card and the schedule, and its payload carries the\n schedule rows when shown (no per-card buttons). */}\n {data && (insertVariant === 'copy' || onInsert) ? (\n <InsertButton\n onInsert={onInsert}\n variant={insertVariant}\n onCopy={onCopy}\n onError={onError}\n card={{\n title: t('insert.title.gestationalAge'),\n icon: 'baby',\n highlight: t(\n `gestationalAgeCalculator.trimester.${data.result.trimester}`,\n ),\n // Chip shares the trimester's semantic token so the inserted PNG\n // chip matches the on-screen trimester badge — with the\n // contrast-safe orange override for the `--warning` third trimester.\n highlightToken: trimesterHighlightToken(data.result.trimester),\n brand: insertBrand,\n fields: [\n {\n // Gestational age is an elapsed duration → clock glyph.\n icon: 'clock',\n label: t('gestationalAgeCalculator.gestationLabel'),\n value: gaText(data.result.gestationalAge),\n },\n {\n // Trimester is a clinical-stage classification → tag.\n icon: 'tag',\n label: t('gestationalAgeCalculator.trimesterLabel'),\n value: t(\n `gestationalAgeCalculator.trimester.${data.result.trimester}`,\n ),\n },\n // When the schedule is shown, the single Insert button carries\n // the exam windows too (no second button).\n ...(schedule\n ? buildScheduleInsertFields(schedule, t, (d) =>\n dateFormatter.format(d),\n )\n : []),\n ],\n }}\n />\n ) : null}\n </div>\n );\n },\n);\n\nGestationalAgeCalculator.displayName = 'GestationalAgeCalculator';\n"],"names":["rootVariants","cva","GestationalAgeCalculator","forwardRef","defaultMethod","defaultReferenceDate","onResultChange","onInsert","insertVariant","onCopy","onError","insertBrand","showSchedule","defaultPlurality","defaultChorionicity","defaultRhNegative","defaultGdmRisk","scheduleOptions","id","width","className","ref","t","i18n","useTranslation","method","setMethod","useState","refDate","setRefDate","asOfDate","setAsOfDate","today","useMemo","plurality","setPlurality","chorionicity","setChorionicity","rhNegative","setRhNegative","gdmRisk","setGdmRisk","data","lmp","subDays","GESTATION_DAYS","r","computeDueDate","gestationalMilestones","schedule","computeAntenatalSchedule","chorionicityOptions","c","dateFormatter","useEffect","gaText","ga","jsxs","RadioGroup","next","jsx","Radio","FormField","DatePicker","d","Fragment","Select","Switch","Card","Badge","TRIMESTER_BADGE_VARIANT","m","reached","isAfter","AntenatalScheduleTimeline","InsertButton","trimesterHighlightToken","buildScheduleInsertFields"],"mappings":"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"}
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import { jsxs as t, jsx as l } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as k, useState as p, useMemo as T, useEffect as S } from "react";
|
|
3
|
-
import { c as V } from "./index-D2ZczOXr.js";
|
|
4
|
-
import { useTranslation as j } from "react-i18next";
|
|
5
|
-
import { F as f } from "./form-field-M5UpX65Z.js";
|
|
6
|
-
import { N as L } from "./number-input-DrozbZAU.js";
|
|
7
|
-
import { D as M } from "./date-time-picker-695QvBGj.js";
|
|
8
|
-
import { C as _ } from "./card-DPmk26CL.js";
|
|
9
|
-
import { B as A } from "./badge-DCOqV9mI.js";
|
|
10
|
-
import { I as C } from "./insert-result-D074GtHX.js";
|
|
11
|
-
const O = 1e3 * 60 * 60, z = 35;
|
|
12
|
-
function G(D) {
|
|
13
|
-
const { hcg1: r, hcg2: s, date1: d, date2: o } = D;
|
|
14
|
-
if (!(r > 0) || !(s > 0)) return null;
|
|
15
|
-
const i = (o.getTime() - d.getTime()) / O;
|
|
16
|
-
if (!(i > 0)) return null;
|
|
17
|
-
const a = s / r, v = (a - 1) * 100, c = (a ** (48 / i) - 1) * 100, x = a > 1 ? i * Math.LN2 / Math.log(a) : null, N = a <= 1 ? "plateau-falling" : c >= z ? "rising-normal" : "rising-slow";
|
|
18
|
-
return {
|
|
19
|
-
intervalHours: i,
|
|
20
|
-
ratio: a,
|
|
21
|
-
percentRise: v,
|
|
22
|
-
twoDayRisePercent: c,
|
|
23
|
-
doublingTimeHours: x,
|
|
24
|
-
trend: N
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
const K = V("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
28
|
-
variants: {
|
|
29
|
-
width: { full: "ds:w-full", auto: "ds:inline-flex" }
|
|
30
|
-
},
|
|
31
|
-
defaultVariants: { width: "full" }
|
|
32
|
-
}), U = {
|
|
33
|
-
"rising-normal": "success",
|
|
34
|
-
"rising-slow": "warning",
|
|
35
|
-
"plateau-falling": "error"
|
|
36
|
-
}, q = {
|
|
37
|
-
"rising-normal": "--success",
|
|
38
|
-
"rising-slow": "--warning-readable",
|
|
39
|
-
"plateau-falling": "--destructive"
|
|
40
|
-
}, J = k(
|
|
41
|
-
({
|
|
42
|
-
defaultDate1: D,
|
|
43
|
-
defaultDate2: r,
|
|
44
|
-
onResultChange: s,
|
|
45
|
-
onInsert: d,
|
|
46
|
-
insertVariant: o = "insert",
|
|
47
|
-
onCopy: i,
|
|
48
|
-
onError: a,
|
|
49
|
-
insertBrand: v,
|
|
50
|
-
id: c,
|
|
51
|
-
width: x,
|
|
52
|
-
className: N
|
|
53
|
-
}, I) => {
|
|
54
|
-
const { t: e, i18n: w } = j(), [g, B] = p(null), [u, F] = p(D), [m, P] = p(null), [h, R] = p(r), H = T(() => /* @__PURE__ */ new Date(), []), n = T(() => g === null || m === null || !u || !h ? null : G({ hcg1: g, date1: u, hcg2: m, date2: h }), [g, u, m, h]);
|
|
55
|
-
S(() => {
|
|
56
|
-
s == null || s(n);
|
|
57
|
-
}, [n, s]);
|
|
58
|
-
const $ = T(
|
|
59
|
-
() => new Intl.NumberFormat(w.language, { maximumFractionDigits: 0 }),
|
|
60
|
-
[w.language]
|
|
61
|
-
), y = (b) => b.doublingTimeHours === null ? "—" : e("hcgDoubling.hoursValue", {
|
|
62
|
-
hours: $.format(b.doublingTimeHours)
|
|
63
|
-
}), E = (b) => e("hcgDoubling.percentValue", { value: $.format(b.twoDayRisePercent) });
|
|
64
|
-
return /* @__PURE__ */ t(
|
|
65
|
-
"div",
|
|
66
|
-
{
|
|
67
|
-
ref: I,
|
|
68
|
-
"data-component": "hcg-doubling",
|
|
69
|
-
"data-component-id": c,
|
|
70
|
-
className: K({ width: x, className: N }),
|
|
71
|
-
children: [
|
|
72
|
-
/* @__PURE__ */ t("div", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2", children: [
|
|
73
|
-
/* @__PURE__ */ l(
|
|
74
|
-
f,
|
|
75
|
-
{
|
|
76
|
-
label: `${e("hcgDoubling.hcg1")} (${e("hcgDoubling.units")})`,
|
|
77
|
-
children: /* @__PURE__ */ l(
|
|
78
|
-
L,
|
|
79
|
-
{
|
|
80
|
-
mode: "decimal",
|
|
81
|
-
min: 0,
|
|
82
|
-
value: g,
|
|
83
|
-
onChange: B
|
|
84
|
-
}
|
|
85
|
-
)
|
|
86
|
-
}
|
|
87
|
-
),
|
|
88
|
-
/* @__PURE__ */ l(f, { label: e("hcgDoubling.date1"), children: /* @__PURE__ */ l(M, { value: u, onChange: F, maxDate: H }) }),
|
|
89
|
-
/* @__PURE__ */ l(
|
|
90
|
-
f,
|
|
91
|
-
{
|
|
92
|
-
label: `${e("hcgDoubling.hcg2")} (${e("hcgDoubling.units")})`,
|
|
93
|
-
children: /* @__PURE__ */ l(
|
|
94
|
-
L,
|
|
95
|
-
{
|
|
96
|
-
mode: "decimal",
|
|
97
|
-
min: 0,
|
|
98
|
-
value: m,
|
|
99
|
-
onChange: P
|
|
100
|
-
}
|
|
101
|
-
)
|
|
102
|
-
}
|
|
103
|
-
),
|
|
104
|
-
/* @__PURE__ */ l(f, { label: e("hcgDoubling.date2"), children: /* @__PURE__ */ l(M, { value: h, onChange: R, maxDate: H }) })
|
|
105
|
-
] }),
|
|
106
|
-
/* @__PURE__ */ l("p", { className: "ds:sr-only", role: "status", "aria-live": "polite", children: n ? `${e("hcgDoubling.doublingLabel")}: ${y(n)}. ${e(
|
|
107
|
-
`hcgDoubling.trend.${n.trend}`
|
|
108
|
-
)}.` : "" }),
|
|
109
|
-
n ? /* @__PURE__ */ l(_, { variant: "elevated", children: /* @__PURE__ */ t(_.Body, { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
|
|
110
|
-
/* @__PURE__ */ t("dl", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-3", children: [
|
|
111
|
-
/* @__PURE__ */ t("div", { className: "ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]", children: [
|
|
112
|
-
/* @__PURE__ */ l("dt", { className: "type-label ds:text-muted-foreground", children: e("hcgDoubling.doublingLabel") }),
|
|
113
|
-
/* @__PURE__ */ l("dd", { className: "type-metric ds:text-foreground", children: y(n) })
|
|
114
|
-
] }),
|
|
115
|
-
/* @__PURE__ */ t("div", { className: "ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]", children: [
|
|
116
|
-
/* @__PURE__ */ l("dt", { className: "type-label ds:text-muted-foreground", children: e("hcgDoubling.riseLabel") }),
|
|
117
|
-
/* @__PURE__ */ l("dd", { className: "type-body ds:text-foreground", children: E(n) })
|
|
118
|
-
] }),
|
|
119
|
-
/* @__PURE__ */ t("div", { className: "ds:flex ds:flex-col ds:items-end ds:gap-[var(--spacing-xs)] ds:text-end", children: [
|
|
120
|
-
/* @__PURE__ */ l("dt", { className: "type-label ds:text-muted-foreground", children: e("hcgDoubling.trendLabel") }),
|
|
121
|
-
/* @__PURE__ */ l("dd", { children: /* @__PURE__ */ l(A, { variant: U[n.trend], size: "lg", children: e(`hcgDoubling.trend.${n.trend}`) }) })
|
|
122
|
-
] })
|
|
123
|
-
] }),
|
|
124
|
-
/* @__PURE__ */ l("p", { className: "type-body-sm ds:text-muted-foreground", children: e("hcgDoubling.disclaimer") }),
|
|
125
|
-
o === "copy" || d ? /* @__PURE__ */ l(
|
|
126
|
-
C,
|
|
127
|
-
{
|
|
128
|
-
onInsert: d,
|
|
129
|
-
variant: o,
|
|
130
|
-
onCopy: i,
|
|
131
|
-
onError: a,
|
|
132
|
-
card: {
|
|
133
|
-
title: e("insert.title.hcg"),
|
|
134
|
-
icon: "activity",
|
|
135
|
-
highlight: e(`hcgDoubling.trend.${n.trend}`),
|
|
136
|
-
highlightToken: q[n.trend],
|
|
137
|
-
brand: v,
|
|
138
|
-
fields: [
|
|
139
|
-
{
|
|
140
|
-
icon: "clock",
|
|
141
|
-
label: e("hcgDoubling.doublingLabel"),
|
|
142
|
-
value: y(n)
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
icon: "trending-up",
|
|
146
|
-
label: e("hcgDoubling.riseLabel"),
|
|
147
|
-
value: E(n)
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
icon: "tag",
|
|
151
|
-
label: e("hcgDoubling.trendLabel"),
|
|
152
|
-
value: e(`hcgDoubling.trend.${n.trend}`)
|
|
153
|
-
}
|
|
154
|
-
]
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
) : null
|
|
158
|
-
] }) }) : /* @__PURE__ */ l("p", { className: "type-body ds:text-muted-foreground", children: e("hcgDoubling.empty") })
|
|
159
|
-
]
|
|
160
|
-
}
|
|
161
|
-
);
|
|
162
|
-
}
|
|
163
|
-
);
|
|
164
|
-
J.displayName = "HcgDoubling";
|
|
165
|
-
export {
|
|
166
|
-
J as H,
|
|
167
|
-
z as M,
|
|
168
|
-
G as a
|
|
169
|
-
};
|
|
170
|
-
//# sourceMappingURL=hcg-doubling-BBqD2wI2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hcg-doubling-BBqD2wI2.js","sources":["../../src/components/hcg-doubling/hcg.ts","../../src/components/hcg-doubling/hcg-doubling.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* Serum β-hCG doubling time — early-pregnancy viability. */\n/* */\n/* Pure, framework-free, unit-testable. From two timed β-hCG values it */\n/* derives the doubling time, the rise over the actual interval, and the */\n/* rise normalised to 48 hours (the standard comparison window). A */\n/* normal early intrauterine pregnancy rises at least ~35% over 48h */\n/* (Barnhart 2004); a plateau or fall is abnormal. */\n/* */\n/* Barnhart KT et al. \"Symptomatic patients with an early viable */\n/* intrauterine pregnancy.\" Obstet Gynecol 2004;104:50-5. */\n/* ------------------------------------------------------------------ */\n\nconst MS_PER_HOUR = 1000 * 60 * 60;\n/** Conservative minimal 48-hour rise for a potentially viable IUP, %. */\nexport const MINIMAL_48H_RISE_PERCENT = 35;\n\nexport interface HcgInput {\n /** First β-hCG value, mIU/mL. */\n hcg1: number;\n /** When the first sample was drawn. */\n date1: Date;\n /** Second β-hCG value, mIU/mL. */\n hcg2: number;\n /** When the second sample was drawn (must be after `date1`). */\n date2: Date;\n}\n\nexport type HcgTrend = 'rising-normal' | 'rising-slow' | 'plateau-falling';\n\nexport interface HcgResult {\n /** Hours between the two samples. */\n intervalHours: number;\n /** hcg2 / hcg1. */\n ratio: number;\n /** Rise over the actual interval, %. */\n percentRise: number;\n /** Rise normalised to a 48-hour window, % (comparable to the benchmark). */\n twoDayRisePercent: number;\n /** Doubling time in hours, or `null` when not rising. */\n doublingTimeHours: number | null;\n /** Trend band against the Barnhart minimal-rise benchmark. */\n trend: HcgTrend;\n}\n\n/**\n * Analyse a two-point β-hCG series. Returns `null` unless both values are\n * positive and the second sample is strictly after the first.\n */\nexport function analyseHcg(input: HcgInput): HcgResult | null {\n const { hcg1, hcg2, date1, date2 } = input;\n if (!(hcg1 > 0) || !(hcg2 > 0)) return null;\n\n const intervalHours = (date2.getTime() - date1.getTime()) / MS_PER_HOUR;\n if (!(intervalHours > 0)) return null;\n\n const ratio = hcg2 / hcg1;\n const percentRise = (ratio - 1) * 100;\n const twoDayRisePercent = (ratio ** (48 / intervalHours) - 1) * 100;\n const doublingTimeHours =\n ratio > 1 ? (intervalHours * Math.LN2) / Math.log(ratio) : null;\n\n const trend: HcgTrend =\n ratio <= 1\n ? 'plateau-falling'\n : twoDayRisePercent >= MINIMAL_48H_RISE_PERCENT\n ? 'rising-normal'\n : 'rising-slow';\n\n return {\n intervalHours,\n ratio,\n percentRise,\n twoDayRisePercent,\n doublingTimeHours,\n trend,\n };\n}\n","/* ------------------------------------------------------------------ */\n/* HcgDoubling — serum β-hCG doubling time from two timed values. */\n/* */\n/* Maths in `./hcg` (pure, tested). Two timepoints (value + datetime) */\n/* → doubling time, 48-hour-normalised rise and a viability trend band. */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { FormField } from '../form-field';\nimport { NumberInput } from '../number-input';\nimport { DateTimePicker } from '../date-time-picker';\nimport { Card } from '../card';\nimport { Badge } from '../badge';\nimport {\n InsertButton,\n type InsertPayload,\n type InsertVariant,\n type InsertMode,\n} from '../_shared/insert-result';\nimport { type HcgResult, type HcgTrend, analyseHcg } from './hcg';\n\nconst rootVariants = cva('ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]', {\n variants: {\n width: { full: 'ds:w-full', auto: 'ds:inline-flex' },\n },\n defaultVariants: { width: 'full' },\n});\n\nconst TREND_BADGE: Record<HcgTrend, 'success' | 'warning' | 'error'> = {\n 'rising-normal': 'success',\n 'rising-slow': 'warning',\n 'plateau-falling': 'error',\n};\nconst TREND_TOKEN: Record<HcgTrend, string> = {\n 'rising-normal': '--success',\n 'rising-slow': '--warning-readable',\n 'plateau-falling': '--destructive',\n};\n\nexport interface HcgDoublingProps extends VariantProps<typeof rootVariants> {\n /** Pre-fill the first sample's date/time (e.g. from the lab record). */\n defaultDate1?: Date;\n /** Pre-fill the second sample's date/time. */\n defaultDate2?: Date;\n /** Fires whenever both timed values resolve (and `null` when not). */\n onResultChange?: (result: HcgResult | null) => void;\n /** When provided, shows the result-action buttons that emit / copy the result. */\n onInsert?: (payload: InsertPayload) => void;\n /** Which verb the result button performs. Defaults to `'insert'`. */\n insertVariant?: InsertVariant;\n /** `copy` variant only — fired after a successful clipboard write. */\n onCopy?: (mode: InsertMode) => void;\n /** `copy` variant only — fired if the clipboard write can't proceed. */\n onError?: (error: unknown) => void;\n /** Brand wordmark printed in the inserted/copied result-card footer. */\n insertBrand?: string | false;\n /** Opaque instance id, emitted as `data-component-id`. */\n id?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\nexport const HcgDoubling = forwardRef<HTMLDivElement, HcgDoublingProps>(\n (\n {\n defaultDate1,\n defaultDate2,\n onResultChange,\n onInsert,\n insertVariant = 'insert',\n onCopy,\n onError,\n insertBrand,\n id,\n width,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n const [hcg1, setHcg1] = useState<number | null>(null);\n const [date1, setDate1] = useState<Date | undefined>(defaultDate1);\n const [hcg2, setHcg2] = useState<number | null>(null);\n const [date2, setDate2] = useState<Date | undefined>(defaultDate2);\n\n const today = useMemo(() => new Date(), []);\n\n const result = useMemo(() => {\n if (hcg1 === null || hcg2 === null || !date1 || !date2) return null;\n return analyseHcg({ hcg1, date1, hcg2, date2 });\n }, [hcg1, date1, hcg2, date2]);\n\n useEffect(() => {\n onResultChange?.(result);\n }, [result, onResultChange]);\n\n const num = useMemo(\n () => new Intl.NumberFormat(i18n.language, { maximumFractionDigits: 0 }),\n [i18n.language],\n );\n\n const doublingText = (r: HcgResult): string =>\n r.doublingTimeHours === null\n ? '—'\n : t('hcgDoubling.hoursValue', {\n hours: num.format(r.doublingTimeHours),\n });\n const riseText = (r: HcgResult): string =>\n t('hcgDoubling.percentValue', { value: num.format(r.twoDayRisePercent) });\n\n return (\n <div\n ref={ref}\n data-component=\"hcg-doubling\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n <FormField\n label={`${t('hcgDoubling.hcg1')} (${t('hcgDoubling.units')})`}\n >\n <NumberInput\n mode=\"decimal\"\n min={0}\n value={hcg1}\n onChange={setHcg1}\n />\n </FormField>\n <FormField label={t('hcgDoubling.date1')}>\n <DateTimePicker value={date1} onChange={setDate1} maxDate={today} />\n </FormField>\n <FormField\n label={`${t('hcgDoubling.hcg2')} (${t('hcgDoubling.units')})`}\n >\n <NumberInput\n mode=\"decimal\"\n min={0}\n value={hcg2}\n onChange={setHcg2}\n />\n </FormField>\n <FormField label={t('hcgDoubling.date2')}>\n <DateTimePicker value={date2} onChange={setDate2} maxDate={today} />\n </FormField>\n </div>\n\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {result\n ? `${t('hcgDoubling.doublingLabel')}: ${doublingText(result)}. ${t(\n `hcgDoubling.trend.${result.trend}`,\n )}.`\n : ''}\n </p>\n\n {result ? (\n <Card variant=\"elevated\">\n <Card.Body className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n <dl className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-3\">\n <div className=\"ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('hcgDoubling.doublingLabel')}\n </dt>\n <dd className=\"type-metric ds:text-foreground\">\n {doublingText(result)}\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('hcgDoubling.riseLabel')}\n </dt>\n <dd className=\"type-body ds:text-foreground\">\n {riseText(result)}\n </dd>\n </div>\n <div className=\"ds:flex ds:flex-col ds:items-end ds:gap-[var(--spacing-xs)] ds:text-end\">\n <dt className=\"type-label ds:text-muted-foreground\">\n {t('hcgDoubling.trendLabel')}\n </dt>\n <dd>\n <Badge variant={TREND_BADGE[result.trend]} size=\"lg\">\n {t(`hcgDoubling.trend.${result.trend}`)}\n </Badge>\n </dd>\n </div>\n </dl>\n <p className=\"type-body-sm ds:text-muted-foreground\">\n {t('hcgDoubling.disclaimer')}\n </p>\n {insertVariant === 'copy' || onInsert ? (\n <InsertButton\n onInsert={onInsert}\n variant={insertVariant}\n onCopy={onCopy}\n onError={onError}\n card={{\n title: t('insert.title.hcg'),\n icon: 'activity',\n highlight: t(`hcgDoubling.trend.${result.trend}`),\n highlightToken: TREND_TOKEN[result.trend],\n brand: insertBrand,\n fields: [\n {\n icon: 'clock',\n label: t('hcgDoubling.doublingLabel'),\n value: doublingText(result),\n },\n {\n icon: 'trending-up',\n label: t('hcgDoubling.riseLabel'),\n value: riseText(result),\n },\n {\n icon: 'tag',\n label: t('hcgDoubling.trendLabel'),\n value: t(`hcgDoubling.trend.${result.trend}`),\n },\n ],\n }}\n />\n ) : null}\n </Card.Body>\n </Card>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('hcgDoubling.empty')}\n </p>\n )}\n </div>\n );\n },\n);\n\nHcgDoubling.displayName = 'HcgDoubling';\n"],"names":["MS_PER_HOUR","MINIMAL_48H_RISE_PERCENT","analyseHcg","input","hcg1","hcg2","date1","date2","intervalHours","ratio","percentRise","twoDayRisePercent","doublingTimeHours","trend","rootVariants","cva","TREND_BADGE","TREND_TOKEN","HcgDoubling","forwardRef","defaultDate1","defaultDate2","onResultChange","onInsert","insertVariant","onCopy","onError","insertBrand","id","width","className","ref","t","i18n","useTranslation","setHcg1","useState","setDate1","setHcg2","setDate2","today","useMemo","result","useEffect","num","doublingText","r","riseText","jsxs","jsx","FormField","NumberInput","DateTimePicker","Card","Badge","InsertButton"],"mappings":"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"}
|