@alfadocs/ui-kit-debug 0.37.0 → 0.39.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/Alfadocs_Logo_Mark-7o3L3WBI.js +56 -0
- package/dist/_chunks/Alfadocs_Logo_Mark-7o3L3WBI.js.map +1 -0
- package/dist/_chunks/{accordion-bSU21uTV.js → accordion-9lJSMMsZ.js} +6 -6
- package/dist/_chunks/accordion-9lJSMMsZ.js.map +1 -0
- package/dist/_chunks/{agenda-tray-By_asPN9.js → agenda-tray-Dyj9ChHC.js} +22 -21
- package/dist/_chunks/agenda-tray-Dyj9ChHC.js.map +1 -0
- package/dist/_chunks/{alia-sidebar-BEoMl6UL.js → alia-sidebar-DXsYPinm.js} +2 -2
- package/dist/_chunks/{alia-sidebar-BEoMl6UL.js.map → alia-sidebar-DXsYPinm.js.map} +1 -1
- package/dist/_chunks/{ar-D1RwVZFj.js → ar-Cn_NxqkN.js} +2 -2
- package/dist/_chunks/{ar-D1RwVZFj.js.map → ar-Cn_NxqkN.js.map} +1 -1
- package/dist/_chunks/bmi-BxD-tFzU.js +32 -0
- package/dist/_chunks/bmi-BxD-tFzU.js.map +1 -0
- package/dist/_chunks/bmi-calculator-DnEr513I.js +213 -0
- package/dist/_chunks/bmi-calculator-DnEr513I.js.map +1 -0
- package/dist/_chunks/{booking-DqXsd1Mv.js → booking-4mCw3Mpl.js} +5 -5
- package/dist/_chunks/{booking-DqXsd1Mv.js.map → booking-4mCw3Mpl.js.map} +1 -1
- package/dist/_chunks/calculator-dialog-B74fqpFZ.js +40 -0
- package/dist/_chunks/calculator-dialog-B74fqpFZ.js.map +1 -0
- package/dist/_chunks/{chart-DnHvmiDX.js → chart-Cbt0_sKv.js} +46 -37
- package/dist/_chunks/chart-Cbt0_sKv.js.map +1 -0
- package/dist/_chunks/{chat-message-D53_fH2w.js → chat-message-ASgGtj-L.js} +30 -39
- package/dist/_chunks/chat-message-ASgGtj-L.js.map +1 -0
- package/dist/_chunks/{collapsible-CERONory.js → collapsible-X3oaLPU3.js} +5 -5
- package/dist/_chunks/collapsible-X3oaLPU3.js.map +1 -0
- package/dist/_chunks/{contact-profile-card-BA6fgS45.js → contact-profile-card-DHyuAPXM.js} +14 -13
- package/dist/_chunks/{contact-profile-card-BA6fgS45.js.map → contact-profile-card-DHyuAPXM.js.map} +1 -1
- package/dist/_chunks/cycle-calculator-B5Uj9QeT.js +185 -0
- package/dist/_chunks/cycle-calculator-B5Uj9QeT.js.map +1 -0
- package/dist/_chunks/{date-picker-CXFpu-qY.js → date-picker-CvQfs6Xh.js} +2 -2
- package/dist/_chunks/{date-picker-CXFpu-qY.js.map → date-picker-CvQfs6Xh.js.map} +1 -1
- package/dist/_chunks/{date-range-picker-I-q5rifj.js → date-range-picker-U9fn1g9d.js} +3 -3
- package/dist/_chunks/{date-range-picker-I-q5rifj.js.map → date-range-picker-U9fn1g9d.js.map} +1 -1
- package/dist/_chunks/{date-time-picker-CqpGPlcH.js → date-time-picker-Cva0ZCWw.js} +2 -2
- package/dist/_chunks/{date-time-picker-CqpGPlcH.js.map → date-time-picker-Cva0ZCWw.js.map} +1 -1
- package/dist/_chunks/{de-HTQ4b4-J.js → de-BMM2H7Bs.js} +2 -2
- package/dist/_chunks/{de-HTQ4b4-J.js.map → de-BMM2H7Bs.js.map} +1 -1
- package/dist/_chunks/dependent-selector-CRWgieHm.js +324 -0
- package/dist/_chunks/dependent-selector-CRWgieHm.js.map +1 -0
- package/dist/_chunks/document-scanner-CqS_klIr.js +703 -0
- package/dist/_chunks/document-scanner-CqS_klIr.js.map +1 -0
- package/dist/_chunks/due-date-calculator-CUspKSTw.js +171 -0
- package/dist/_chunks/due-date-calculator-CUspKSTw.js.map +1 -0
- package/dist/_chunks/{editable-currency-cell-renderer-DnjwZNZP.js → editable-currency-cell-renderer-DgkCIIcO.js} +3 -3
- package/dist/_chunks/{editable-currency-cell-renderer-DnjwZNZP.js.map → editable-currency-cell-renderer-DgkCIIcO.js.map} +1 -1
- package/dist/_chunks/{el-Dr1pjuDq.js → el-BYPonAaK.js} +2 -2
- package/dist/_chunks/{el-Dr1pjuDq.js.map → el-BYPonAaK.js.map} +1 -1
- package/dist/_chunks/{es-CvyTjLS0.js → es-CMkVCQ4F.js} +2 -2
- package/dist/_chunks/{es-CvyTjLS0.js.map → es-CMkVCQ4F.js.map} +1 -1
- package/dist/_chunks/{file-upload-CdozCPct.js → file-upload-BosbPDb1.js} +3 -2
- package/dist/_chunks/file-upload-BosbPDb1.js.map +1 -0
- package/dist/_chunks/fiscal-code-input-BZ0FxwUl.js +540 -0
- package/dist/_chunks/fiscal-code-input-BZ0FxwUl.js.map +1 -0
- package/dist/_chunks/{fr-CS7aqaFR.js → fr-BcuWxqft.js} +2 -2
- package/dist/_chunks/{fr-CS7aqaFR.js.map → fr-BcuWxqft.js.map} +1 -1
- package/dist/_chunks/{freemium-paywall-D1N02Oam.js → freemium-paywall-BAk3a6er.js} +7 -7
- package/dist/_chunks/{freemium-paywall-D1N02Oam.js.map → freemium-paywall-BAk3a6er.js.map} +1 -1
- package/dist/_chunks/gestation-BXEgDGmP.js +50 -0
- package/dist/_chunks/gestation-BXEgDGmP.js.map +1 -0
- package/dist/_chunks/gestational-age-calculator-CsQ05qDy.js +165 -0
- package/dist/_chunks/gestational-age-calculator-CsQ05qDy.js.map +1 -0
- package/dist/_chunks/header-settings-CBLwUK6t.js +244 -0
- package/dist/_chunks/header-settings-CBLwUK6t.js.map +1 -0
- package/dist/_chunks/heart-C0faivFf.js +20 -0
- package/dist/_chunks/heart-C0faivFf.js.map +1 -0
- package/dist/_chunks/{hi-3uy8KpsH.js → hi-wkq_rQAh.js} +2 -2
- package/dist/_chunks/{hi-3uy8KpsH.js.map → hi-wkq_rQAh.js.map} +1 -1
- package/dist/_chunks/image-C6RM5hfF.js +16 -0
- package/dist/_chunks/image-C6RM5hfF.js.map +1 -0
- package/dist/_chunks/insert-result-yJ0QavoN.js +133 -0
- package/dist/_chunks/insert-result-yJ0QavoN.js.map +1 -0
- package/dist/_chunks/{isSameWeek-DRpMibi9.js → isSameWeek-Bim5ftRd.js} +2 -2
- package/dist/_chunks/{isSameWeek-DRpMibi9.js.map → isSameWeek-Bim5ftRd.js.map} +1 -1
- package/dist/_chunks/{it-B_RF5VSw.js → it-GiQrQ9p4.js} +3 -3
- package/dist/_chunks/{it-B_RF5VSw.js.map → it-GiQrQ9p4.js.map} +1 -1
- package/dist/_chunks/{ja-C1mEYy35.js → ja-qfYg3Rua.js} +2 -2
- package/dist/_chunks/{ja-C1mEYy35.js.map → ja-qfYg3Rua.js.map} +1 -1
- package/dist/_chunks/{logo-_Z-jLq80.js → logo-yituK7sE.js} +42 -91
- package/dist/_chunks/logo-yituK7sE.js.map +1 -0
- package/dist/_chunks/{map-view-vD5pvWs9.js → map-view-qJLybrmN.js} +2 -2
- package/dist/_chunks/{map-view-vD5pvWs9.js.map → map-view-qJLybrmN.js.map} +1 -1
- package/dist/_chunks/marketplace-app-shell-BlxVizU4.js +296 -0
- package/dist/_chunks/marketplace-app-shell-BlxVizU4.js.map +1 -0
- package/dist/_chunks/{message-card-BbRhZkDI.js → message-card-DSPw5ghw.js} +20 -19
- package/dist/_chunks/message-card-DSPw5ghw.js.map +1 -0
- package/dist/_chunks/{message-tray-B762TKuv.js → message-tray-hSQff9u4.js} +3 -3
- package/dist/_chunks/message-tray-hSQff9u4.js.map +1 -0
- package/dist/_chunks/{nl-Dl7lO2t3.js → nl-xOogO4sZ.js} +2 -2
- package/dist/_chunks/{nl-Dl7lO2t3.js.map → nl-xOogO4sZ.js.map} +1 -1
- package/dist/_chunks/{notification-card-DMdO4g54.js → notification-card-CObnGdJu.js} +22 -21
- package/dist/_chunks/notification-card-CObnGdJu.js.map +1 -0
- package/dist/_chunks/{notification-tray-Dl3FTleW.js → notification-tray-BWHDIjgd.js} +2 -2
- package/dist/_chunks/{notification-tray-Dl3FTleW.js.map → notification-tray-BWHDIjgd.js.map} +1 -1
- package/dist/_chunks/{otp-input-CDTWT5EK.js → otp-input-CMphfBxZ.js} +70 -71
- package/dist/_chunks/otp-input-CMphfBxZ.js.map +1 -0
- package/dist/_chunks/{patient-shell-CDvMw_Nk.js → patient-shell-DF81lALv.js} +37 -36
- package/dist/_chunks/{patient-shell-CDvMw_Nk.js.map → patient-shell-DF81lALv.js.map} +1 -1
- package/dist/_chunks/{payment-form-D5rgnZu7.js → payment-form-Dy3WIIsC.js} +18 -18
- package/dist/_chunks/payment-form-Dy3WIIsC.js.map +1 -0
- package/dist/_chunks/{pdf-viewer-DvtEHcEP.js → pdf-viewer-Cy6Ul3hZ.js} +2 -2
- package/dist/_chunks/pdf-viewer-Cy6Ul3hZ.js.map +1 -0
- package/dist/_chunks/{pl-Dgsogljx.js → pl-GnOW6eGK.js} +3 -3
- package/dist/_chunks/{pl-Dgsogljx.js.map → pl-GnOW6eGK.js.map} +1 -1
- package/dist/_chunks/{practice-results-BFM_lyUs.js → practice-results-C0d4IL5E.js} +4 -3
- package/dist/_chunks/{practice-results-BFM_lyUs.js.map → practice-results-C0d4IL5E.js.map} +1 -1
- package/dist/_chunks/pregnancy-weight-gain-BCdi-JSv.js +209 -0
- package/dist/_chunks/pregnancy-weight-gain-BCdi-JSv.js.map +1 -0
- package/dist/_chunks/{privacy-lock-DD-wHxBg.js → privacy-lock-BmX_gkvt.js} +2 -2
- package/dist/_chunks/{privacy-lock-DD-wHxBg.js.map → privacy-lock-BmX_gkvt.js.map} +1 -1
- package/dist/_chunks/{pt-Dm2JF4bc.js → pt-_bV5b5RW.js} +2 -2
- package/dist/_chunks/{pt-Dm2JF4bc.js.map → pt-_bV5b5RW.js.map} +1 -1
- package/dist/_chunks/{public-footer.agent-Cjfe5jus.js → public-footer.agent-okt8ZRc5.js} +3 -3
- package/dist/_chunks/{public-footer.agent-Cjfe5jus.js.map → public-footer.agent-okt8ZRc5.js.map} +1 -1
- package/dist/_chunks/qr-code-DNXhi6se.js +568 -0
- package/dist/_chunks/qr-code-DNXhi6se.js.map +1 -0
- package/dist/_chunks/{react-day-picker-DYDdR8Vv.js → react-day-picker-CdtIiKjx.js} +24 -24
- package/dist/_chunks/{react-day-picker-DYDdR8Vv.js.map → react-day-picker-CdtIiKjx.js.map} +1 -1
- package/dist/_chunks/{reviews-panel-Dow8Dzoa.js → reviews-panel-CPrXu5TX.js} +2 -2
- package/dist/_chunks/{reviews-panel-Dow8Dzoa.js.map → reviews-panel-CPrXu5TX.js.map} +1 -1
- package/dist/_chunks/{rich-text-editor-CHmr9Bz8.js → rich-text-editor-DLbg2852.js} +114 -124
- package/dist/_chunks/rich-text-editor-DLbg2852.js.map +1 -0
- package/dist/_chunks/{ro-BXFZ_xIX.js → ro-BEcyh5Nj.js} +2 -2
- package/dist/_chunks/{ro-BXFZ_xIX.js.map → ro-BEcyh5Nj.js.map} +1 -1
- package/dist/_chunks/rotate-ccw-BWANpitO.js +15 -0
- package/dist/_chunks/rotate-ccw-BWANpitO.js.map +1 -0
- package/dist/_chunks/{ru-BPQkNRRV.js → ru-Bi86hqMf.js} +3 -3
- package/dist/_chunks/{ru-BPQkNRRV.js.map → ru-Bi86hqMf.js.map} +1 -1
- package/dist/_chunks/session-countdown-LPnhTHjn.js +214 -0
- package/dist/_chunks/session-countdown-LPnhTHjn.js.map +1 -0
- package/dist/_chunks/{shield-check-BhHyReu8.js → shield-check-C73ma9Cs.js} +8 -24
- package/dist/_chunks/shield-check-C73ma9Cs.js.map +1 -0
- package/dist/_chunks/{sidebar-BbR8f6oe.js → sidebar-_vJXI9rB.js} +2 -2
- package/dist/_chunks/{sidebar-BbR8f6oe.js.map → sidebar-_vJXI9rB.js.map} +1 -1
- package/dist/_chunks/sign-document-DId1p-nn.js +315 -0
- package/dist/_chunks/sign-document-DId1p-nn.js.map +1 -0
- package/dist/_chunks/{sign-in-with-alfadocs-button-BI0fVonM.js → sign-in-with-alfadocs-button-DeHBFRNS.js} +2 -2
- package/dist/_chunks/{sign-in-with-alfadocs-button-BI0fVonM.js.map → sign-in-with-alfadocs-button-DeHBFRNS.js.map} +1 -1
- package/dist/_chunks/{signature-capture-C-fF71xI.js → signature-capture-BRzCklg4.js} +27 -24
- package/dist/_chunks/signature-capture-BRzCklg4.js.map +1 -0
- package/dist/_chunks/social-sign-in-button-X54ySJr1.js +243 -0
- package/dist/_chunks/social-sign-in-button-X54ySJr1.js.map +1 -0
- package/dist/_chunks/{sparkline-DEROcSl0.js → sparkline-DGhCSw8M.js} +55 -46
- package/dist/_chunks/sparkline-DGhCSw8M.js.map +1 -0
- package/dist/_chunks/{sq-ChTlGFcJ.js → sq-BujHSAWu.js} +2 -2
- package/dist/_chunks/{sq-ChTlGFcJ.js.map → sq-BujHSAWu.js.map} +1 -1
- package/dist/_chunks/{stepper-accordion-BfS6lUB9.js → stepper-accordion-Dki6r9ZE.js} +2 -2
- package/dist/_chunks/stepper-accordion-Dki6r9ZE.js.map +1 -0
- package/dist/_chunks/subDays-_T9YeKPX.js +8 -0
- package/dist/_chunks/{subDays-D-WYRpdW.js.map → subDays-_T9YeKPX.js.map} +1 -1
- package/dist/_chunks/{sv-Do_gs6ir.js → sv-C8AeDrTA.js} +2 -2
- package/dist/_chunks/{sv-Do_gs6ir.js.map → sv-C8AeDrTA.js.map} +1 -1
- package/dist/_chunks/{tag-CyoaEmf_.js → tag-CdA0s_VV.js} +16 -16
- package/dist/_chunks/tag-CdA0s_VV.js.map +1 -0
- package/dist/_chunks/{task-card-BUVMh6HN.js → task-card-CPyQ5AXC.js} +6 -5
- package/dist/_chunks/task-card-CPyQ5AXC.js.map +1 -0
- package/dist/_chunks/{task-tray-DRK0b0Qb.js → task-tray-B8jFv5FV.js} +36 -35
- package/dist/_chunks/task-tray-B8jFv5FV.js.map +1 -0
- package/dist/_chunks/{tr-da_UnkYH.js → tr-CMSs_Vgf.js} +2 -2
- package/dist/_chunks/{tr-da_UnkYH.js.map → tr-CMSs_Vgf.js.map} +1 -1
- package/dist/_chunks/{transcript-panel-DyhTpAP7.js → transcript-panel-CR7VY1uw.js} +8 -7
- package/dist/_chunks/transcript-panel-CR7VY1uw.js.map +1 -0
- package/dist/_chunks/unit-converter-EUwO6QYq.js +168 -0
- package/dist/_chunks/unit-converter-EUwO6QYq.js.map +1 -0
- package/dist/_chunks/wallet-pay-button-DK4ESYge.js +250 -0
- package/dist/_chunks/wallet-pay-button-DK4ESYge.js.map +1 -0
- package/dist/_chunks/{warning-stack-bDicCvxs.js → warning-stack-DNR3-IbP.js} +17 -16
- package/dist/_chunks/warning-stack-DNR3-IbP.js.map +1 -0
- package/dist/_chunks/{workflow-map-uSiHbOWQ.js → workflow-map-C3gB0FvB.js} +3 -2
- package/dist/_chunks/{workflow-map-uSiHbOWQ.js.map → workflow-map-C3gB0FvB.js.map} +1 -1
- package/dist/_chunks/{zh-CN-C9qi5oak.js → zh-CN-eXB-PFu4.js} +3 -3
- package/dist/_chunks/{zh-CN-C9qi5oak.js.map → zh-CN-eXB-PFu4.js.map} +1 -1
- package/dist/agent-catalog.json +241 -1
- package/dist/brand/product-lockup/product-lockup.d.ts.map +1 -1
- package/dist/brand/provider-marks/apple-pay.d.ts +12 -0
- package/dist/brand/provider-marks/apple-pay.d.ts.map +1 -0
- package/dist/brand/provider-marks/apple.d.ts +12 -0
- package/dist/brand/provider-marks/apple.d.ts.map +1 -0
- package/dist/brand/provider-marks/google-pay.d.ts +12 -0
- package/dist/brand/provider-marks/google-pay.d.ts.map +1 -0
- package/dist/brand/provider-marks/google.d.ts +13 -0
- package/dist/brand/provider-marks/google.d.ts.map +1 -0
- package/dist/components/_shared/insert-result.d.ts +47 -0
- package/dist/components/_shared/insert-result.d.ts.map +1 -0
- package/dist/components/accordion/index.js +1 -1
- package/dist/components/agenda-tray/agenda-tray.d.ts.map +1 -1
- package/dist/components/agenda-tray/index.js +1 -1
- package/dist/components/bmi-calculator/bmi-calculator.d.ts +3 -0
- package/dist/components/bmi-calculator/bmi-calculator.d.ts.map +1 -1
- package/dist/components/bmi-calculator/index.js +6 -5
- package/dist/components/bmi-calculator/index.js.map +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/calculator-dialog/calculator-dialog.d.ts +26 -0
- package/dist/components/calculator-dialog/calculator-dialog.d.ts.map +1 -0
- package/dist/components/calculator-dialog/index.d.ts +3 -0
- package/dist/components/calculator-dialog/index.d.ts.map +1 -0
- package/dist/components/calculator-dialog/index.js +5 -0
- package/dist/components/calculator-dialog/index.js.map +1 -0
- package/dist/components/chart/chart.d.ts +1 -1
- package/dist/components/chart/chart.d.ts.map +1 -1
- package/dist/components/chart/index.js +1 -1
- package/dist/components/chat-message/index.js +1 -1
- package/dist/components/collapsible/index.js +1 -1
- package/dist/components/contact-profile-card/index.js +1 -1
- package/dist/components/cycle-calculator/cycle-calculator.d.ts +21 -0
- package/dist/components/cycle-calculator/cycle-calculator.d.ts.map +1 -0
- package/dist/components/cycle-calculator/cycle.d.ts +37 -0
- package/dist/components/cycle-calculator/cycle.d.ts.map +1 -0
- package/dist/components/cycle-calculator/index.d.ts +4 -0
- package/dist/components/cycle-calculator/index.d.ts.map +1 -0
- package/dist/components/cycle-calculator/index.js +7 -0
- package/dist/components/cycle-calculator/index.js.map +1 -0
- 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/dependent-selector/dependent-selector.agent.d.ts +4 -0
- package/dist/components/dependent-selector/dependent-selector.agent.d.ts.map +1 -0
- package/dist/components/dependent-selector/dependent-selector.d.ts +72 -0
- package/dist/components/dependent-selector/dependent-selector.d.ts.map +1 -0
- package/dist/components/dependent-selector/index.d.ts +4 -0
- package/dist/components/dependent-selector/index.d.ts.map +1 -0
- package/dist/components/dependent-selector/index.js +6 -0
- package/dist/components/dependent-selector/index.js.map +1 -0
- package/dist/components/document-scanner/document-scanner.agent.d.ts +4 -0
- package/dist/components/document-scanner/document-scanner.agent.d.ts.map +1 -0
- package/dist/components/document-scanner/document-scanner.d.ts +93 -0
- package/dist/components/document-scanner/document-scanner.d.ts.map +1 -0
- package/dist/components/document-scanner/index.d.ts +4 -0
- package/dist/components/document-scanner/index.d.ts.map +1 -0
- package/dist/components/document-scanner/index.js +6 -0
- package/dist/components/document-scanner/index.js.map +1 -0
- package/dist/components/due-date-calculator/due-date-calculator.d.ts +3 -0
- package/dist/components/due-date-calculator/due-date-calculator.d.ts.map +1 -1
- package/dist/components/due-date-calculator/gestation.d.ts +16 -0
- package/dist/components/due-date-calculator/gestation.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 +10 -7
- package/dist/components/due-date-calculator/index.js.map +1 -1
- package/dist/components/file-upload/index.js +1 -1
- package/dist/components/fiscal-code-input/calculate-codice-fiscale.d.ts +24 -0
- package/dist/components/fiscal-code-input/calculate-codice-fiscale.d.ts.map +1 -0
- package/dist/components/fiscal-code-input/fiscal-code-input.agent.d.ts +4 -0
- package/dist/components/fiscal-code-input/fiscal-code-input.agent.d.ts.map +1 -0
- package/dist/components/fiscal-code-input/fiscal-code-input.d.ts +61 -0
- package/dist/components/fiscal-code-input/fiscal-code-input.d.ts.map +1 -0
- package/dist/components/fiscal-code-input/index.d.ts +6 -0
- package/dist/components/fiscal-code-input/index.d.ts.map +1 -0
- package/dist/components/fiscal-code-input/index.js +11 -0
- package/dist/components/fiscal-code-input/index.js.map +1 -0
- package/dist/components/fiscal-code-input/is-valid-codice-fiscale.d.ts +21 -0
- package/dist/components/fiscal-code-input/is-valid-codice-fiscale.d.ts.map +1 -0
- package/dist/components/freemium-paywall/index.js +1 -1
- package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts +27 -0
- package/dist/components/gestational-age-calculator/gestational-age-calculator.d.ts.map +1 -0
- package/dist/components/gestational-age-calculator/index.d.ts +3 -0
- package/dist/components/gestational-age-calculator/index.d.ts.map +1 -0
- package/dist/components/gestational-age-calculator/index.js +5 -0
- package/dist/components/gestational-age-calculator/index.js.map +1 -0
- package/dist/components/header-settings/header-settings.agent.d.ts +4 -0
- package/dist/components/header-settings/header-settings.agent.d.ts.map +1 -0
- package/dist/components/header-settings/header-settings.d.ts +36 -0
- package/dist/components/header-settings/header-settings.d.ts.map +1 -0
- package/dist/components/header-settings/index.d.ts +2 -0
- package/dist/components/header-settings/index.d.ts.map +1 -0
- package/dist/components/header-settings/index.js +2 -241
- package/dist/components/header-settings/index.js.map +1 -1
- package/dist/components/index.d.ts +14 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/locale-picker/locale-picker.agent.d.ts +4 -0
- package/dist/components/locale-picker/locale-picker.agent.d.ts.map +1 -0
- package/dist/components/locale-picker/locale-picker.d.ts +80 -0
- package/dist/components/locale-picker/locale-picker.d.ts.map +1 -0
- package/dist/components/logo/index.js +1 -1
- package/dist/components/map-view/index.js +1 -1
- package/dist/components/message-card/index.js +1 -1
- package/dist/components/message-card/message-card.d.ts.map +1 -1
- package/dist/components/message-tray/index.js +1 -1
- package/dist/components/notification-card/index.js +1 -1
- package/dist/components/notification-card/notification-card.d.ts.map +1 -1
- package/dist/components/notification-tray/index.js +1 -1
- package/dist/components/otp-input/index.d.ts +1 -1
- package/dist/components/otp-input/index.d.ts.map +1 -1
- package/dist/components/otp-input/index.js +1 -1
- package/dist/components/otp-input/otp-input.d.ts +1 -1
- package/dist/components/otp-input/otp-input.d.ts.map +1 -1
- package/dist/components/payment-form/index.js +1 -1
- package/dist/components/pdf-viewer/index.js +1 -1
- package/dist/components/practice-results/index.js +1 -1
- package/dist/components/pregnancy-weight-gain/index.d.ts +4 -0
- package/dist/components/pregnancy-weight-gain/index.d.ts.map +1 -0
- package/dist/components/pregnancy-weight-gain/index.js +9 -0
- package/dist/components/pregnancy-weight-gain/index.js.map +1 -0
- package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts +19 -0
- package/dist/components/pregnancy-weight-gain/pregnancy-weight-gain.d.ts.map +1 -0
- package/dist/components/pregnancy-weight-gain/weight-gain.d.ts +41 -0
- package/dist/components/pregnancy-weight-gain/weight-gain.d.ts.map +1 -0
- package/dist/components/privacy-lock/index.js +1 -1
- package/dist/components/public-footer/index.js +1 -1
- package/dist/components/qr-code/index.d.ts +5 -0
- package/dist/components/qr-code/index.d.ts.map +1 -0
- package/dist/components/qr-code/index.js +8 -0
- package/dist/components/qr-code/index.js.map +1 -0
- package/dist/components/qr-code/qr-code.agent.d.ts +3 -0
- package/dist/components/qr-code/qr-code.agent.d.ts.map +1 -0
- package/dist/components/qr-code/qr-code.d.ts +59 -0
- package/dist/components/qr-code/qr-code.d.ts.map +1 -0
- package/dist/components/qr-code/qr-encode.d.ts +46 -0
- package/dist/components/qr-code/qr-encode.d.ts.map +1 -0
- package/dist/components/reviews-panel/index.js +1 -1
- package/dist/components/rich-text-editor/index.js +1 -1
- package/dist/components/session-countdown/index.d.ts +4 -0
- package/dist/components/session-countdown/index.d.ts.map +1 -0
- package/dist/components/session-countdown/index.js +6 -0
- package/dist/components/session-countdown/index.js.map +1 -0
- package/dist/components/session-countdown/session-countdown.agent.d.ts +3 -0
- package/dist/components/session-countdown/session-countdown.agent.d.ts.map +1 -0
- package/dist/components/session-countdown/session-countdown.d.ts +38 -0
- package/dist/components/session-countdown/session-countdown.d.ts.map +1 -0
- package/dist/components/sidebar/index.js +1 -1
- package/dist/components/sign-document/index.d.ts +4 -0
- package/dist/components/sign-document/index.d.ts.map +1 -0
- package/dist/components/sign-document/index.js +6 -0
- package/dist/components/sign-document/index.js.map +1 -0
- package/dist/components/sign-document/sign-document.agent.d.ts +4 -0
- package/dist/components/sign-document/sign-document.agent.d.ts.map +1 -0
- package/dist/components/sign-document/sign-document.d.ts +47 -0
- package/dist/components/sign-document/sign-document.d.ts.map +1 -0
- package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
- package/dist/components/signature-capture/index.js +1 -1
- package/dist/components/signature-capture/signature-capture.d.ts.map +1 -1
- package/dist/components/social-sign-in-button/index.d.ts +3 -0
- package/dist/components/social-sign-in-button/index.d.ts.map +1 -0
- package/dist/components/social-sign-in-button/index.js +5 -0
- package/dist/components/social-sign-in-button/index.js.map +1 -0
- package/dist/components/social-sign-in-button/social-sign-in-button.d.ts +56 -0
- package/dist/components/social-sign-in-button/social-sign-in-button.d.ts.map +1 -0
- package/dist/components/sparkline/index.js +1 -1
- package/dist/components/sparkline/sparkline.d.ts +1 -1
- package/dist/components/sparkline/sparkline.d.ts.map +1 -1
- package/dist/components/stepper-accordion/index.js +1 -1
- package/dist/components/tag/index.js +1 -1
- package/dist/components/task-card/index.js +1 -1
- package/dist/components/task-card/task-card.d.ts.map +1 -1
- package/dist/components/task-tray/index.js +1 -1
- package/dist/components/task-tray/task-tray.d.ts.map +1 -1
- package/dist/components/transcript-panel/index.js +1 -1
- package/dist/components/transcript-panel/transcript-panel.d.ts.map +1 -1
- package/dist/components/unit-converter/index.d.ts +4 -0
- package/dist/components/unit-converter/index.d.ts.map +1 -0
- package/dist/components/unit-converter/index.js +9 -0
- package/dist/components/unit-converter/index.js.map +1 -0
- package/dist/components/unit-converter/unit-converter.d.ts +21 -0
- package/dist/components/unit-converter/unit-converter.d.ts.map +1 -0
- package/dist/components/unit-converter/units.d.ts +18 -0
- package/dist/components/unit-converter/units.d.ts.map +1 -0
- package/dist/components/wallet-pay-button/index.d.ts +3 -0
- package/dist/components/wallet-pay-button/index.d.ts.map +1 -0
- package/dist/components/wallet-pay-button/index.js +5 -0
- package/dist/components/wallet-pay-button/index.js.map +1 -0
- package/dist/components/wallet-pay-button/wallet-pay-button.d.ts +63 -0
- package/dist/components/wallet-pay-button/wallet-pay-button.d.ts.map +1 -0
- package/dist/components/warning-stack/index.js +1 -1
- package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/components/workflow/workflow-map.d.ts.map +1 -1
- package/dist/i18n/locale-meta.d.ts +56 -0
- package/dist/i18n/locale-meta.d.ts.map +1 -0
- package/dist/i18n/locales/ar.d.ts +274 -0
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +271 -0
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +274 -0
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +271 -0
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +274 -0
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +271 -0
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +274 -0
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +274 -0
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +274 -0
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +271 -0
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +274 -0
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +271 -0
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +274 -0
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +271 -0
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +274 -0
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +271 -0
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +274 -0
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +267 -0
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +274 -0
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +271 -0
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +274 -0
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +271 -0
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +274 -0
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +274 -0
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +274 -0
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +271 -0
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +274 -0
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +271 -0
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +274 -0
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +271 -0
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +274 -0
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +271 -0
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +274 -0
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +271 -0
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +274 -0
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +267 -0
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +590 -535
- package/dist/index.js.map +1 -1
- package/dist/locales/ar.json +274 -0
- package/dist/locales/de.json +274 -0
- package/dist/locales/el.json +274 -0
- package/dist/locales/en.json +274 -0
- package/dist/locales/es.json +274 -0
- package/dist/locales/fr.json +274 -0
- package/dist/locales/hi.json +274 -0
- package/dist/locales/it.json +274 -0
- package/dist/locales/ja.json +274 -0
- package/dist/locales/nl.json +274 -0
- package/dist/locales/pl.json +274 -0
- package/dist/locales/pt.json +274 -0
- package/dist/locales/ro.json +274 -0
- package/dist/locales/ru.json +274 -0
- package/dist/locales/sq.json +274 -0
- package/dist/locales/sv.json +274 -0
- package/dist/locales/tr.json +274 -0
- package/dist/locales/zh.json +274 -0
- package/dist/patterns/alia-assistant/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts +12 -8
- package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts.map +1 -1
- package/dist/patterns/patient-shell/index.js +1 -1
- package/dist/patterns/patient-shell/patient-shell.d.ts.map +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +53 -1
- package/dist/_chunks/accordion-bSU21uTV.js.map +0 -1
- package/dist/_chunks/agenda-tray-By_asPN9.js.map +0 -1
- package/dist/_chunks/bmi-calculator-DQD5_nE-.js +0 -214
- package/dist/_chunks/bmi-calculator-DQD5_nE-.js.map +0 -1
- package/dist/_chunks/chart-DnHvmiDX.js.map +0 -1
- package/dist/_chunks/chat-message-D53_fH2w.js.map +0 -1
- package/dist/_chunks/collapsible-CERONory.js.map +0 -1
- package/dist/_chunks/due-date-calculator-kf9U_g7O.js +0 -173
- package/dist/_chunks/due-date-calculator-kf9U_g7O.js.map +0 -1
- package/dist/_chunks/file-upload-CdozCPct.js.map +0 -1
- package/dist/_chunks/logo-_Z-jLq80.js.map +0 -1
- package/dist/_chunks/marketplace-app-shell-DXHxy9dj.js +0 -295
- package/dist/_chunks/marketplace-app-shell-DXHxy9dj.js.map +0 -1
- package/dist/_chunks/message-card-BbRhZkDI.js.map +0 -1
- package/dist/_chunks/message-tray-B762TKuv.js.map +0 -1
- package/dist/_chunks/notification-card-DMdO4g54.js.map +0 -1
- package/dist/_chunks/otp-input-CDTWT5EK.js.map +0 -1
- package/dist/_chunks/payment-form-D5rgnZu7.js.map +0 -1
- package/dist/_chunks/pdf-viewer-DvtEHcEP.js.map +0 -1
- package/dist/_chunks/rich-text-editor-CHmr9Bz8.js.map +0 -1
- package/dist/_chunks/shield-check-BhHyReu8.js.map +0 -1
- package/dist/_chunks/signature-capture-C-fF71xI.js.map +0 -1
- package/dist/_chunks/sparkline-DEROcSl0.js.map +0 -1
- package/dist/_chunks/stepper-accordion-BfS6lUB9.js.map +0 -1
- package/dist/_chunks/subDays-D-WYRpdW.js +0 -8
- package/dist/_chunks/tag-CyoaEmf_.js.map +0 -1
- package/dist/_chunks/task-card-BUVMh6HN.js.map +0 -1
- package/dist/_chunks/task-tray-DRK0b0Qb.js.map +0 -1
- package/dist/_chunks/transcript-panel-DyhTpAP7.js.map +0 -1
- package/dist/_chunks/warning-stack-bDicCvxs.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-scanner-CqS_klIr.js","sources":["../../node_modules/lucide-react/dist/esm/icons/camera.js","../../node_modules/lucide-react/dist/esm/icons/image-up.js","../../src/components/document-scanner/document-scanner.agent.ts","../../src/components/document-scanner/document-scanner.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z\",\n key: \"18u6gg\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"13\", r: \"3\", key: \"1vg3eu\" }]\n];\nconst Camera = createLucideIcon(\"camera\", __iconNode);\n\nexport { __iconNode, Camera as default };\n//# sourceMappingURL=camera.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M10.3 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10l-3.1-3.1a2 2 0 0 0-2.814.014L6 21\",\n key: \"9csbqa\"\n }\n ],\n [\"path\", { d: \"m14 19.5 3-3 3 3\", key: \"9vmjn0\" }],\n [\"path\", { d: \"M17 22v-5.5\", key: \"1aa6fl\" }],\n [\"circle\", { cx: \"9\", cy: \"9\", r: \"2\", key: \"af1f0g\" }]\n];\nconst ImageUp = createLucideIcon(\"image-up\", __iconNode);\n\nexport { __iconNode, ImageUp as default };\n//# sourceMappingURL=image-up.js.map\n","/* -------------------------------------------------------------------- */\n/* Agent adapter — DocumentScanner. */\n/* */\n/* State exposes only structural lifecycle info — never the captured */\n/* image bytes (PHI). Actions drive the camera + capture flow. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { DocumentScannerHandle } from './document-scanner';\n\nexport const documentScannerAgent: AgentAdapter<DocumentScannerHandle> = {\n id: 'document-scanner',\n capabilities: ['submit'],\n state: {\n hasCapture: {\n type: 'boolean',\n descriptionKey: 'documentScanner.agent.state.hasCapture',\n description: 'True when a captured or uploaded image is available.',\n read: (handle) => handle.hasCapture(),\n },\n phase: {\n type: 'string',\n descriptionKey: 'documentScanner.agent.state.phase',\n description:\n \"Lifecycle phase: 'idle' | 'requesting' | 'streaming' | 'captured' | 'error'.\",\n read: (handle) => handle.getPhase(),\n },\n },\n actions: {\n start_camera: {\n safety: 'write',\n descriptionKey: 'documentScanner.agent.actions.startCamera',\n description: 'Request camera permission and begin the live viewfinder.',\n invoke: (handle) => handle.startCamera(),\n },\n capture: {\n safety: 'write',\n descriptionKey: 'documentScanner.agent.actions.capture',\n description: 'Freeze the current viewfinder frame as a captured image.',\n invoke: (handle) => handle.capture(),\n },\n submit: {\n safety: 'write',\n descriptionKey: 'documentScanner.agent.actions.confirm',\n description: 'Confirm the current capture, emitting it via onConfirm.',\n invoke: (handle) => {\n handle.confirm();\n },\n },\n retake: {\n safety: 'destructive',\n descriptionKey: 'documentScanner.agent.actions.retake',\n description:\n 'Discard the current capture and return to the capture path.',\n invoke: (handle) => {\n handle.retake();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'document-scanner',\n description: 'Marks the DocumentScanner wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","/* ------------------------------------------------------------------ */\n/* DocumentScanner — patient check-in ID-document capture. */\n/* */\n/* - Native MediaDevices: a live <video autoplay playsinline muted> */\n/* viewfinder via getUserMedia({ video: { facingMode } }), an */\n/* offscreen <canvas> for the freeze-frame / crop draw, and an <img> */\n/* for the captured preview. No third-party dependency for capture. */\n/* - Upload fallback: the existing kit FileUpload (variant='button') */\n/* handles accept / maxSize / reject and is ALWAYS reachable — even */\n/* on a hard camera error it is the recovery path (per HTP-5113). */\n/* - Lifecycle: the camera starts only on an explicit user gesture and */\n/* every MediaStreamTrack is stopped on unmount, on capture, on */\n/* error, on Escape, and on document visibilitychange→hidden so the */\n/* camera LED is released (privacy + battery). Mirrors */\n/* audio-recorder's teardown pattern. */\n/* - Confirm payload: { dataUrl, blob, source, width, height, mimeType, */\n/* byteSize, capturedAt (ISO-8601), sha256 }. sha256 is the */\n/* SubtleCrypto digest of the encoded bytes — tamper-evident for */\n/* audit, matching signature-capture. Document-only: no selfie, no */\n/* liveness, no OCR / MRZ / auto-crop (out of scope, would need a */\n/* separate 08-third-party dependency). */\n/* - Security: no fetch / XHR / localStorage / sessionStorage / globals */\n/* in this file — the captured ID document is PHI and the consumer */\n/* owns persistence + the \"already on file → skip\" decision. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Camera, RotateCcw, Check, ImageUp, Loader2 } from 'lucide-react';\nimport { Button } from '../button';\nimport { Alert } from '../alert';\nimport { FileUpload, type FileUploadRejection } from '../file-upload';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useAgentRegistration } from '../../agent';\nimport { documentScannerAgent } from './document-scanner.agent';\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport type DocumentScannerSource = 'camera' | 'upload';\n\nexport interface DocumentCapture {\n /** Data URL of the captured / uploaded image (encoded to `mimeType`). */\n dataUrl: string;\n /** Encoded bytes as a Blob — the consumer persists this. */\n blob: Blob;\n /** Where the image came from. */\n source: DocumentScannerSource;\n /** Intrinsic pixel width of the encoded image. */\n width: number;\n /** Intrinsic pixel height of the encoded image. */\n height: number;\n /** MIME of the encoded image. */\n mimeType: string;\n /** Encoded byte size. */\n byteSize: number;\n /** ISO-8601 UTC timestamp for when the capture was confirmed. */\n capturedAt: string;\n /** Hex-encoded SHA-256 digest of the encoded bytes. */\n sha256: string;\n}\n\nexport type DocumentScannerErrorKind =\n | 'permission-denied'\n | 'no-camera'\n | 'not-readable'\n | 'insecure-context'\n | 'capture-failed'\n | 'file-invalid-type'\n | 'file-too-large';\n\nexport interface DocumentScannerError {\n kind: DocumentScannerErrorKind;\n}\n\nexport type DocumentType = 'tessera-sanitaria' | 'cie' | 'id-card' | 'generic';\n\nexport type DocumentScannerPhase =\n | 'idle'\n | 'requesting'\n | 'streaming'\n | 'captured'\n | 'error';\n\n/** Curated imperative handle for agent / external automation. */\nexport interface DocumentScannerHandle {\n /** True when a captured or uploaded image is held. */\n hasCapture: () => boolean;\n /** Current lifecycle phase. */\n getPhase: () => DocumentScannerPhase;\n /** Request the camera and begin the viewfinder. */\n startCamera: () => Promise<void> | void;\n /** Freeze the current viewfinder frame. */\n capture: () => Promise<void> | void;\n /** Confirm the current capture, firing `onConfirm`. */\n confirm: () => void;\n /** Discard the current capture and return to the capture path. */\n retake: () => void;\n}\n\nexport interface DocumentScannerProps {\n /** Opaque instance id — emitted as `data-component-id` for the agent registry. */\n id?: string;\n /** Controlled captured-image value. When defined the component is controlled. */\n value?: DocumentCapture | null;\n /** Initial captured image for uncontrolled use; seeds the `captured` preview. */\n defaultValue?: DocumentCapture | null;\n /** Fired when the user confirms a captured or uploaded image. */\n onConfirm?: (capture: DocumentCapture) => void;\n /** Fired when the user discards the current capture to retake / re-upload. */\n onRetake?: () => void;\n /** Fired on a permission / hardware / decode failure (telemetry). */\n onError?: (error: DocumentScannerError) => void;\n /** Drives the overlay frame aspect ratio + the translated hint copy. */\n documentType?: DocumentType;\n /** Camera-vs-upload strategy. `auto` falls back to upload on camera failure. */\n captureMode?: 'auto' | 'camera-only' | 'upload-only';\n /** react-dropzone accept map for the upload fallback. */\n accept?: Record<string, string[]>;\n /** Max upload byte size. Defaults to 10MB. */\n maxSize?: number;\n /** Camera to request. Defaults to the rear (`environment`) camera. */\n facingMode?: 'environment' | 'user';\n /** MIME of the encoded capture. */\n outputType?: 'image/jpeg' | 'image/webp' | 'image/png';\n /** 0..1 quality for lossy `outputType`. Ignored for image/png. */\n outputQuality?: number;\n /** Crop the confirmed image to the overlay frame rect. */\n cropToFrame?: boolean;\n /** Disable all controls and skip the camera request. */\n disabled?: boolean;\n /** Accessible label for the component's group region. */\n ariaLabel?: string;\n /** Extra classes merged onto the outermost wrapper. */\n className?: string;\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst rootVariants = cva(\n [\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-md)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-[color:var(--card-border)]',\n 'ds:shadow-[var(--shadow-card)] ds:[.theme-accessible_&]:border-2',\n 'ds:bg-[var(--background)] ds:text-[var(--foreground)]',\n 'ds:p-[var(--spacing-md)]',\n 'ds:aria-disabled:opacity-[var(--opacity-50)] ds:aria-disabled:cursor-not-allowed',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:max-inline-size-[20rem]',\n md: 'ds:max-inline-size-[28rem]',\n lg: 'ds:max-inline-size-[36rem]',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\n// The viewport is a positioned, neutral surface that holds the <video> /\n// <img> and the (absolutely-positioned, aria-hidden) frame overlay. The\n// document aspect ratio drives the box shape so the frame matches the card.\nconst viewportVariants = cva(\n [\n 'ds:relative ds:block ds:inline-size-full ds:overflow-hidden',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:bg-[var(--muted)]',\n ].join(' '),\n {\n variants: {\n // ID-1 cards (Tessera Sanitaria / CIE / id-card) are ~1.586:1; the\n // generic frame is a slightly squarer neutral card.\n frame: {\n 'tessera-sanitaria': 'ds:aspect-[1.586/1]',\n cie: 'ds:aspect-[1.586/1]',\n 'id-card': 'ds:aspect-[1.586/1]',\n generic: 'ds:aspect-[1.4/1]',\n },\n },\n defaultVariants: { frame: 'tessera-sanitaria' },\n },\n);\n\nconst mediaVariants = cva(\n [\n 'ds:absolute ds:inset-0 ds:block',\n 'ds:inline-size-full ds:block-size-full',\n 'ds:object-cover',\n ].join(' '),\n);\n\n// The alignment frame sits over arbitrary live video. It is a\n// high-contrast neutral stroke (var(--background) = white on light /\n// near-black on dark) backed by a tokenised scrim — NEVER the magenta\n// accent (fails AA over an unknown image). Decorative → aria-hidden.\nconst frameOverlayVariants = cva(\n [\n 'ds:pointer-events-none ds:absolute',\n 'ds:inset-[12%]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:border-2 ds:border-[color:var(--background)]',\n 'ds:shadow-[0_0_0_100vmax_color-mix(in_srgb,var(--foreground)_45%,transparent)]',\n ].join(' '),\n);\n\nconst cornerVariants = cva(\n [\n 'ds:pointer-events-none ds:absolute ds:size-6',\n 'ds:border-[color:var(--background)]',\n ].join(' '),\n);\n\nconst controlBarVariants = cva(\n ['ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]'].join(' '),\n);\n\nconst hintVariants = cva(\n ['type-body-sm ds:text-center', 'ds:text-[var(--muted-foreground)]'].join(\n ' ',\n ),\n);\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nfunction toHex(bytes: Uint8Array): string {\n let out = '';\n for (let i = 0; i < bytes.length; i += 1) {\n out += bytes[i].toString(16).padStart(2, '0');\n }\n return out;\n}\n\nasync function sha256Hex(buffer: ArrayBuffer): Promise<string> {\n const g = globalThis as { crypto?: Crypto };\n if (g.crypto?.subtle) {\n // Copy into a fresh ArrayBuffer so the BufferSource is never a\n // SharedArrayBuffer (SubtleCrypto's narrowing rejects the latter).\n const copy = new Uint8Array(buffer.byteLength);\n copy.set(new Uint8Array(buffer));\n const digest = await g.crypto.subtle.digest('SHA-256', copy.buffer);\n return toHex(new Uint8Array(digest));\n }\n // No subtle crypto (older test env) — return empty so the rest of the\n // payload is still usable. Tests stub crypto.subtle.\n return '';\n}\n\n/** Map a getUserMedia rejection (a DOMException) to our error kind. */\nfunction classifyMediaError(err: unknown): DocumentScannerErrorKind {\n const name = err instanceof Error ? err.name : '';\n if (name === 'NotAllowedError' || name === 'SecurityError') {\n return 'permission-denied';\n }\n if (name === 'NotFoundError' || name === 'OverconstrainedError') {\n return 'no-camera';\n }\n if (name === 'NotReadableError' || name === 'AbortError') {\n return 'not-readable';\n }\n return 'capture-failed';\n}\n\n/** True when getUserMedia is actually reachable (HTTPS / localhost + API). */\nfunction mediaDevicesAvailable(): boolean {\n return (\n typeof navigator !== 'undefined' &&\n typeof navigator.mediaDevices !== 'undefined' &&\n typeof navigator.mediaDevices.getUserMedia === 'function'\n );\n}\n\nconst HINT_KEY: Record<DocumentType, string> = {\n 'tessera-sanitaria': 'documentScanner.hint.tesseraSanitaria',\n cie: 'documentScanner.hint.cie',\n 'id-card': 'documentScanner.hint.idCard',\n generic: 'documentScanner.hint.generic',\n};\n\nconst ERROR_KEY: Record<DocumentScannerErrorKind, string> = {\n 'permission-denied': 'documentScanner.error.permissionDenied',\n 'no-camera': 'documentScanner.error.noCamera',\n 'not-readable': 'documentScanner.error.notReadable',\n 'insecure-context': 'documentScanner.error.insecureContext',\n 'capture-failed': 'documentScanner.error.captureFailed',\n 'file-invalid-type': 'documentScanner.error.fileInvalidType',\n 'file-too-large': 'documentScanner.error.fileTooLarge',\n};\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\ntype SizeVariant = NonNullable<VariantProps<typeof rootVariants>['size']>;\n\ninterface DocumentScannerInternalProps extends DocumentScannerProps {\n /** Visual size variant (exposed via Controls). */\n size?: SizeVariant;\n}\n\nexport const DocumentScanner = forwardRef<\n DocumentScannerHandle,\n DocumentScannerInternalProps\n>(\n (\n {\n id,\n value,\n defaultValue = null,\n onConfirm,\n onRetake,\n onError,\n documentType = 'tessera-sanitaria',\n captureMode = 'auto',\n accept = {\n 'image/jpeg': ['.jpg', '.jpeg'],\n 'image/png': ['.png'],\n 'image/webp': ['.webp'],\n },\n maxSize = 10 * 1024 * 1024,\n facingMode = 'environment',\n outputType = 'image/jpeg',\n outputQuality = 0.92,\n cropToFrame = true,\n disabled = false,\n size = 'md',\n ariaLabel,\n className,\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const rawId = useId();\n const hintId = `ds-${rawId.replace(/[^a-zA-Z0-9-_]/g, '')}-hint`;\n\n // Controlled / uncontrolled captured value. `value` defined → controlled.\n const [capture, setCapture] = useControllableState<DocumentCapture | null>({\n value,\n defaultValue,\n });\n\n // Whether the captured value was seeded by `defaultValue` (already on\n // file) — drives the \"Already on file\" badge + Retake-only chrome.\n const seededRef = useRef<boolean>(defaultValue != null || value != null);\n\n const [phase, setPhase] = useState<DocumentScannerPhase>(\n defaultValue != null || value != null ? 'captured' : 'idle',\n );\n const [errorKind, setErrorKind] = useState<DocumentScannerErrorKind | null>(\n null,\n );\n const [streamReady, setStreamReady] = useState(false);\n // True while an uploaded image is being decoded (distinct from the\n // camera-permission `requesting` so the live region announces the right\n // \"Processing image\" copy).\n const [decoding, setDecoding] = useState(false);\n\n const videoRef = useRef<HTMLVideoElement>(null);\n const viewportRef = useRef<HTMLDivElement>(null);\n const streamRef = useRef<MediaStream | null>(null);\n const unmountedRef = useRef(false);\n\n const confirmBtnRef = useRef<HTMLButtonElement>(null);\n const shutterBtnRef = useRef<HTMLButtonElement>(null);\n const useCameraBtnRef = useRef<HTMLButtonElement>(null);\n const recoveryRef = useRef<HTMLButtonElement>(null);\n\n // Latest callbacks via refs so the async media path never closes over\n // a stale prop.\n const onErrorRef = useRef(onError);\n const onConfirmRef = useRef(onConfirm);\n const onRetakeRef = useRef(onRetake);\n useEffect(() => {\n onErrorRef.current = onError;\n onConfirmRef.current = onConfirm;\n onRetakeRef.current = onRetake;\n }, [onError, onConfirm, onRetake]);\n\n const isControlled = value !== undefined;\n const isUploadOnly = captureMode === 'upload-only';\n\n /* ---- Stream teardown — the single most important privacy path ---- */\n const stopStream = useCallback(() => {\n const held = streamRef.current;\n if (held) {\n held.getTracks().forEach((track) => track.stop());\n }\n streamRef.current = null;\n const video = videoRef.current;\n if (video) {\n // Detach so the element releases its reference to the (now-stopped)\n // stream and the browser drops the camera indicator.\n video.srcObject = null;\n }\n setStreamReady(false);\n }, []);\n\n const reportError = useCallback((kind: DocumentScannerErrorKind) => {\n setErrorKind(kind);\n setPhase('error');\n onErrorRef.current?.({ kind });\n }, []);\n\n /* ---- Start the camera — user gesture only, never auto on mount ---- */\n const startCamera = useCallback(async () => {\n if (disabled || isUploadOnly) return;\n if (!mediaDevicesAvailable()) {\n // No mediaDevices → insecure context (non-HTTPS) or unsupported.\n reportError('insecure-context');\n return;\n }\n setErrorKind(null);\n setPhase('requesting');\n try {\n const stream = await navigator.mediaDevices.getUserMedia({\n video: { facingMode },\n audio: false,\n });\n // Guard against an unmount between the permission prompt and\n // resolution — otherwise the freshly-acquired track leaks and the\n // camera LED stays live.\n if (unmountedRef.current) {\n stream.getTracks().forEach((track) => track.stop());\n return;\n }\n streamRef.current = stream;\n const video = videoRef.current;\n if (video) {\n try {\n video.srcObject = stream;\n } catch {\n // Some environments reject a non-native MediaStream on\n // srcObject; the stream is still held + torn down correctly.\n }\n // iOS Safari needs an explicit play() after attaching.\n const playResult = video.play?.();\n if (playResult && typeof playResult.catch === 'function') {\n playResult.catch(() => {\n /* autoplay can reject silently in some browsers; the\n loadedmetadata handler still enables the shutter */\n });\n }\n }\n setPhase('streaming');\n } catch (err: unknown) {\n stopStream();\n reportError(classifyMediaError(err));\n }\n }, [disabled, isUploadOnly, facingMode, stopStream, reportError]);\n\n /* ---- Shutter enablement: gate on the video actually playing ---- */\n const handleVideoReady = useCallback(() => {\n const video = videoRef.current;\n if (!video) return;\n // HAVE_CURRENT_DATA (2) means at least one frame is decodable.\n if (video.readyState >= 2) {\n setStreamReady(true);\n }\n }, []);\n\n /* ---- Poll readiness on entering streaming ---- */\n // The loadedmetadata / canplay events can fire before React attaches the\n // listeners (the metadata may already be decoded by the time the stream\n // is swapped onto the element). A short poll closes that race so the\n // shutter reliably enables.\n useEffect(() => {\n if (phase !== 'streaming') return undefined;\n handleVideoReady();\n const interval = window.setInterval(handleVideoReady, 100);\n const stopAfter = window.setTimeout(\n () => window.clearInterval(interval),\n 4000,\n );\n return () => {\n window.clearInterval(interval);\n window.clearTimeout(stopAfter);\n };\n }, [phase, handleVideoReady]);\n\n /* ---- Capture: freeze the current frame onto a canvas ---- */\n const capturePhoto = useCallback(async () => {\n const video = videoRef.current;\n if (!video || video.readyState < 2) {\n reportError('capture-failed');\n return;\n }\n const vw = video.videoWidth || video.clientWidth;\n const vh = video.videoHeight || video.clientHeight;\n if (vw === 0 || vh === 0) {\n reportError('capture-failed');\n return;\n }\n\n // Crop region in source-video pixel space. The overlay frame is\n // inset 12% on each edge of the viewport; mirror that onto the\n // source so the cropped image is the document, not the whole frame.\n let sx = 0;\n let sy = 0;\n let sw = vw;\n let sh = vh;\n if (cropToFrame) {\n const insetX = vw * 0.12;\n const insetY = vh * 0.12;\n sx = insetX;\n sy = insetY;\n sw = vw - insetX * 2;\n sh = vh - insetY * 2;\n }\n\n const canvas = document.createElement('canvas');\n canvas.width = Math.max(1, Math.round(sw));\n canvas.height = Math.max(1, Math.round(sh));\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n reportError('capture-failed');\n return;\n }\n try {\n ctx.drawImage(video, sx, sy, sw, sh, 0, 0, canvas.width, canvas.height);\n } catch {\n // A video element with no decoded frame throws InvalidStateError in\n // some browsers — surface it as a capture failure rather than crash.\n reportError('capture-failed');\n return;\n }\n\n // Release the camera as soon as the frame is frozen — we no longer\n // need the live stream and the LED should go dark immediately.\n stopStream();\n\n const blob = await new Promise<Blob | null>((resolve) => {\n if (typeof canvas.toBlob === 'function') {\n canvas.toBlob(\n (b) => resolve(b),\n outputType,\n outputType === 'image/png' ? undefined : outputQuality,\n );\n } else {\n resolve(null);\n }\n });\n if (!blob) {\n reportError('capture-failed');\n return;\n }\n const dataUrl = canvas.toDataURL(\n outputType,\n outputType === 'image/png' ? undefined : outputQuality,\n );\n const arrayBuffer = await blob.arrayBuffer();\n const sha256 = await sha256Hex(arrayBuffer);\n\n seededRef.current = false;\n const next: DocumentCapture = {\n dataUrl,\n blob,\n source: 'camera',\n width: canvas.width,\n height: canvas.height,\n mimeType: outputType,\n byteSize: blob.size,\n capturedAt: new Date().toISOString(),\n sha256,\n };\n setCapture(next);\n setPhase('captured');\n }, [\n cropToFrame,\n outputType,\n outputQuality,\n stopStream,\n reportError,\n setCapture,\n ]);\n\n /* ---- Upload fallback → decode an image File into a capture ---- */\n const handleUploadDrop = useCallback(\n async (accepted: File[]) => {\n const file = accepted[0];\n if (!file) return;\n setDecoding(true);\n try {\n const objectUrl = URL.createObjectURL(file);\n const dimensions = await new Promise<{ w: number; h: number }>(\n (resolve, reject) => {\n const img = new Image();\n img.onload = () =>\n resolve({ w: img.naturalWidth, h: img.naturalHeight });\n img.onerror = () => reject(new Error('decode-failed'));\n img.src = objectUrl;\n },\n ).finally(() => {\n // The object URL is only needed to read intrinsic dimensions;\n // the persisted payload carries a data URL instead.\n URL.revokeObjectURL(objectUrl);\n });\n\n const dataUrl = await new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(String(reader.result));\n reader.onerror = () => reject(new Error('read-failed'));\n reader.readAsDataURL(file);\n });\n\n const arrayBuffer = await file.arrayBuffer();\n const sha256 = await sha256Hex(arrayBuffer);\n\n seededRef.current = false;\n setErrorKind(null);\n setCapture({\n dataUrl,\n blob: file,\n source: 'upload',\n width: dimensions.w,\n height: dimensions.h,\n mimeType: file.type || outputType,\n byteSize: file.size,\n capturedAt: new Date().toISOString(),\n sha256,\n });\n setPhase('captured');\n } catch {\n reportError('capture-failed');\n } finally {\n setDecoding(false);\n }\n },\n [outputType, reportError, setCapture],\n );\n\n const handleUploadReject = useCallback(\n (rejections: FileUploadRejection[]) => {\n // FileUpload's reason enum is wider than our two error kinds. The\n // dropzone is locked to a single image (maxFiles:1, multiple:false),\n // so 'too-many-files' / 'file-too-small' are unreachable here; both\n // size/type problems fold into the matching inline message and\n // default to invalid-type for anything else.\n const reason = rejections[0]?.reason;\n const kind: DocumentScannerErrorKind =\n reason === 'file-too-large' ? 'file-too-large' : 'file-invalid-type';\n reportError(kind);\n },\n [reportError],\n );\n\n /* ---- Confirm / Retake ---- */\n const confirm = useCallback(() => {\n if (!capture) return;\n onConfirmRef.current?.(capture);\n }, [capture]);\n\n // Set when a user-initiated transition back to idle should move focus to\n // the Use-camera button (Retake). Distinguishes retake-to-idle from the\n // initial idle mount, so focus is never stolen on first paint.\n const focusUseCameraRef = useRef(false);\n\n const retake = useCallback(() => {\n // Controlled mode: retake is advisory only. The consumer owns `value`,\n // so we must NOT clear the capture, flip seededRef, or force a local\n // phase — doing so would race the controlled-value sync effect (which\n // re-asserts `captured` while value is still set), dropping the\n // \"already on file\" badge and surfacing a stray Confirm for an\n // already-persisted image. Emit onRetake and let the value drive phase.\n if (isControlled) {\n onRetakeRef.current?.();\n return;\n }\n seededRef.current = false;\n focusUseCameraRef.current = true;\n setCapture(null);\n setErrorKind(null);\n setDecoding(false);\n setPhase('idle');\n onRetakeRef.current?.();\n }, [isControlled, setCapture]);\n\n /* ---- Focus management on phase transitions ---- */\n useEffect(() => {\n if (phase === 'captured' && !seededRef.current) {\n // Land the keyboard / SR user on the next logical action.\n confirmBtnRef.current?.focus();\n } else if (phase === 'error') {\n recoveryRef.current?.focus();\n } else if (phase === 'idle' && focusUseCameraRef.current) {\n // After a Retake, return focus to the capture entry point. Never on\n // the initial idle mount (the flag is only set by retake()).\n focusUseCameraRef.current = false;\n useCameraBtnRef.current?.focus();\n }\n }, [phase]);\n\n /* ---- Escape from streaming returns to idle and stops the stream ---- */\n useEffect(() => {\n if (phase !== 'streaming') return undefined;\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n stopStream();\n setPhase('idle');\n }\n };\n document.addEventListener('keydown', onKeyDown);\n return () => document.removeEventListener('keydown', onKeyDown);\n }, [phase, stopStream]);\n\n /* ---- Release the camera when the tab is hidden ---- */\n useEffect(() => {\n const onVisibility = () => {\n if (document.visibilityState === 'hidden' && streamRef.current) {\n stopStream();\n setPhase('idle');\n }\n };\n document.addEventListener('visibilitychange', onVisibility);\n return () =>\n document.removeEventListener('visibilitychange', onVisibility);\n }, [stopStream]);\n\n /* ---- Unmount cleanup: release the camera if still held ---- */\n useEffect(() => {\n return () => {\n unmountedRef.current = true;\n const held = streamRef.current;\n if (held) held.getTracks().forEach((track) => track.stop());\n streamRef.current = null;\n };\n }, []);\n\n /* ---- Sync controlled value → phase ---- */\n useEffect(() => {\n if (!isControlled) return;\n if (value != null) {\n setPhase('captured');\n } else if (phase === 'captured') {\n setPhase('idle');\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, isControlled]);\n\n /* ---- Imperative handle + agent registration ---- */\n const agentHandle = useMemo<DocumentScannerHandle>(\n () => ({\n hasCapture: () => capture != null,\n getPhase: () => phase,\n startCamera: () => startCamera(),\n capture: () => capturePhoto(),\n confirm: () => confirm(),\n retake: () => retake(),\n }),\n [capture, phase, startCamera, capturePhoto, confirm, retake],\n );\n useImperativeHandle(ref, () => agentHandle, [agentHandle]);\n useAgentRegistration(documentScannerAgent, agentHandle, id);\n\n /* ---- Derived strings ---- */\n const regionLabel = ariaLabel ?? t('documentScanner.regionLabel');\n const hintText = t(HINT_KEY[documentType]);\n const maxSizeMb = Math.round(maxSize / (1024 * 1024));\n\n const statusText = (() => {\n if (decoding) return t('documentScanner.state.uploading');\n switch (phase) {\n case 'idle':\n return t('documentScanner.state.idle');\n case 'requesting':\n return t('documentScanner.state.requesting');\n case 'streaming':\n return t('documentScanner.state.streaming');\n case 'captured':\n return t('documentScanner.state.captured');\n case 'error':\n return errorKind\n ? t(ERROR_KEY[errorKind], { maxSizeMb })\n : t('documentScanner.error.captureFailed');\n }\n })();\n\n // A camera retry only makes sense for a hardware/permission failure —\n // not for upload-side rejections or an insecure (non-HTTPS) context.\n const canRetryCamera =\n !isUploadOnly &&\n errorKind !== 'file-invalid-type' &&\n errorKind !== 'file-too-large' &&\n errorKind !== 'insecure-context';\n\n // The upload affordance is always reachable: shown in idle/error for\n // auto + camera-only, primary in upload-only, and the recovery path on\n // any hard camera error.\n const showUploadFallback =\n !disabled &&\n (captureMode === 'auto' ||\n captureMode === 'upload-only' ||\n phase === 'error');\n\n const uploadAffordance = (\n <FileUpload\n variant=\"button\"\n accept={accept}\n maxSize={maxSize}\n multiple={false}\n maxFiles={1}\n disabled={disabled}\n showPreview={false}\n onDrop={(acceptedFiles) => {\n void handleUploadDrop(acceptedFiles);\n }}\n onReject={handleUploadReject}\n />\n );\n\n /* ---- Render ---- */\n const showViewport =\n phase === 'idle' ||\n phase === 'requesting' ||\n phase === 'streaming' ||\n phase === 'error';\n\n return (\n <div\n role=\"group\"\n aria-label={regionLabel}\n aria-disabled={disabled || undefined}\n className={[rootVariants({ size }), className]\n .filter(Boolean)\n .join(' ')}\n data-component=\"document-scanner\"\n data-component-id={id}\n data-phase={phase}\n >\n {/* Polite live region — announces every phase change to SR users. */}\n <span\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"ds:sr-only\"\n data-testid=\"document-scanner-live\"\n >\n {statusText}\n </span>\n\n {phase === 'captured' && capture ? (\n /* ---- Captured preview ---- */\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n <div className={viewportVariants({ frame: documentType })}>\n <img\n src={capture.dataUrl}\n alt={t('documentScanner.previewAlt')}\n className={mediaVariants()}\n data-testid=\"document-scanner-preview\"\n />\n {seededRef.current ? (\n <span className=\"ds:absolute ds:top-[var(--spacing-sm)] ds:start-[var(--spacing-sm)] ds:rounded-[var(--radius-full)] ds:bg-[var(--primary)] ds:text-[var(--primary-foreground)] ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:py-[var(--spacing-2xs)] type-meta\">\n {t('documentScanner.onFileBadge')}\n </span>\n ) : null}\n </div>\n <div className={controlBarVariants()}>\n <Button\n intent=\"secondary\"\n size=\"md\"\n // Button's md variant is h-10 (40px) with no min-target\n // compensation — pin to --min-target-size (44/48px) to clear\n // WCAG 2.5.5, matching SignatureCapture's action buttons.\n className=\"ds:min-block-size-[var(--min-target-size)] ds:min-inline-size-[var(--min-target-size)]\"\n startIcon={<RotateCcw aria-hidden=\"true\" />}\n onClick={retake}\n disabled={disabled}\n >\n {t('documentScanner.retake')}\n </Button>\n {/* Seeded \"already on file\" images need no Confirm — they are\n already persisted; the only action is Retake. */}\n {seededRef.current ? null : (\n <Button\n ref={confirmBtnRef}\n intent=\"primary\"\n size=\"md\"\n className=\"ds:min-block-size-[var(--min-target-size)] ds:min-inline-size-[var(--min-target-size)]\"\n startIcon={<Check aria-hidden=\"true\" />}\n onClick={confirm}\n disabled={disabled || capture == null}\n >\n {t('documentScanner.confirm')}\n </Button>\n )}\n </div>\n </div>\n ) : null}\n\n {showViewport ? (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n {/* Viewport — only meaningful while streaming/requesting; in\n idle/error it is a neutral placeholder behind the controls. */}\n {!isUploadOnly && phase !== 'error' ? (\n <div\n ref={viewportRef}\n className={viewportVariants({ frame: documentType })}\n aria-busy={phase === 'requesting' || undefined}\n >\n <video\n ref={videoRef}\n autoPlay\n playsInline\n muted\n aria-label={t('documentScanner.videoLabel')}\n className={mediaVariants()}\n onLoadedMetadata={handleVideoReady}\n onCanPlay={handleVideoReady}\n data-testid=\"document-scanner-video\"\n />\n {phase === 'requesting' ? (\n <div className=\"ds:absolute ds:inset-0 ds:flex ds:items-center ds:justify-center ds:bg-[color-mix(in_srgb,var(--foreground)_20%,transparent)]\">\n <Loader2\n aria-hidden=\"true\"\n className=\"ds:size-8 ds:animate-spin ds:text-[var(--background)] ds:motion-reduce:animate-none\"\n />\n </div>\n ) : null}\n {/* Decorative alignment frame + corner guides. */}\n <div\n aria-hidden=\"true\"\n className={frameOverlayVariants()}\n data-testid=\"document-scanner-frame\"\n >\n <span\n className={[\n cornerVariants(),\n 'ds:top-0 ds:start-0 ds:border-t-2 ds:border-s-2 ds:rounded-ss-[var(--radius-sm)]',\n ].join(' ')}\n />\n <span\n className={[\n cornerVariants(),\n 'ds:top-0 ds:end-0 ds:border-t-2 ds:border-e-2 ds:rounded-se-[var(--radius-sm)]',\n ].join(' ')}\n />\n <span\n className={[\n cornerVariants(),\n 'ds:bottom-0 ds:start-0 ds:border-b-2 ds:border-s-2 ds:rounded-es-[var(--radius-sm)]',\n ].join(' ')}\n />\n <span\n className={[\n cornerVariants(),\n 'ds:bottom-0 ds:end-0 ds:border-b-2 ds:border-e-2 ds:rounded-ee-[var(--radius-sm)]',\n ].join(' ')}\n />\n </div>\n </div>\n ) : null}\n\n {phase === 'streaming' ? (\n <p id={hintId} className={hintVariants()}>\n {hintText}\n </p>\n ) : null}\n\n {/* Error block — Alert pattern with the upload recovery path. */}\n {phase === 'error' && errorKind ? (\n <Alert variant=\"error\" live=\"assertive\">\n <Alert.Description>\n {t(ERROR_KEY[errorKind], { maxSizeMb })}\n </Alert.Description>\n <Alert.Action>\n {/* The camera-retry button is the focus target on a\n hardware/permission error; for upload-side or\n insecure-context errors there is nothing to retry and\n the upload affordance is the recovery path. */}\n {canRetryCamera ? (\n <Button\n ref={recoveryRef}\n intent=\"secondary\"\n size=\"sm\"\n onClick={() => {\n void startCamera();\n }}\n disabled={disabled}\n >\n {t('documentScanner.retry')}\n </Button>\n ) : null}\n {showUploadFallback ? uploadAffordance : null}\n </Alert.Action>\n </Alert>\n ) : null}\n\n {/* Primary control bar (no hard error). */}\n {phase !== 'error' ? (\n <div className={controlBarVariants()}>\n {phase === 'streaming' ? (\n <Button\n ref={shutterBtnRef}\n intent=\"primary\"\n size=\"lg\"\n startIcon={<Camera aria-hidden=\"true\" />}\n onClick={() => {\n void capturePhoto();\n }}\n disabled={disabled || !streamReady}\n aria-describedby={hintId}\n aria-label={t('documentScanner.capture')}\n >\n {t('documentScanner.capture')}\n </Button>\n ) : null}\n\n {(phase === 'idle' || phase === 'requesting') &&\n !isUploadOnly ? (\n <Button\n ref={useCameraBtnRef}\n intent=\"primary\"\n size=\"md\"\n className=\"ds:min-block-size-[var(--min-target-size)] ds:min-inline-size-[var(--min-target-size)]\"\n loading={phase === 'requesting'}\n startIcon={<Camera aria-hidden=\"true\" />}\n onClick={() => {\n void startCamera();\n }}\n disabled={disabled}\n >\n {t('documentScanner.useCamera')}\n </Button>\n ) : null}\n\n {decoding ? (\n <span className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] type-body-sm ds:text-[var(--muted-foreground)]\">\n <Loader2\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:animate-spin ds:motion-reduce:animate-none\"\n />\n {t('documentScanner.state.uploading')}\n </span>\n ) : showUploadFallback && phase !== 'streaming' ? (\n isUploadOnly ? (\n uploadAffordance\n ) : (\n <div className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)] type-body-sm ds:text-[var(--muted-foreground)]\">\n <ImageUp aria-hidden=\"true\" className=\"ds:size-4\" />\n {uploadAffordance}\n </div>\n )\n ) : null}\n\n {/* In streaming, upload stays reachable as a low-emphasis\n fallback below the shutter. */}\n {phase === 'streaming' && captureMode !== 'camera-only'\n ? uploadAffordance\n : null}\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n },\n);\n\nDocumentScanner.displayName = 'DocumentScanner';\n\nexport {\n rootVariants as documentScannerRootVariants,\n viewportVariants as documentScannerViewportVariants,\n};\n"],"names":["__iconNode","Camera","createLucideIcon","ImageUp","documentScannerAgent","handle","rootVariants","cva","viewportVariants","mediaVariants","frameOverlayVariants","cornerVariants","controlBarVariants","hintVariants","toHex","bytes","out","i","sha256Hex","buffer","g","_a","copy","digest","classifyMediaError","err","name","mediaDevicesAvailable","HINT_KEY","ERROR_KEY","DocumentScanner","forwardRef","id","value","defaultValue","onConfirm","onRetake","onError","documentType","captureMode","accept","maxSize","facingMode","outputType","outputQuality","cropToFrame","disabled","size","ariaLabel","className","ref","t","useTranslation","hintId","useId","capture","setCapture","useControllableState","seededRef","useRef","phase","setPhase","useState","errorKind","setErrorKind","streamReady","setStreamReady","decoding","setDecoding","videoRef","viewportRef","streamRef","unmountedRef","confirmBtnRef","shutterBtnRef","useCameraBtnRef","recoveryRef","onErrorRef","onConfirmRef","onRetakeRef","useEffect","isControlled","isUploadOnly","stopStream","useCallback","held","track","video","reportError","kind","startCamera","stream","playResult","handleVideoReady","interval","stopAfter","capturePhoto","vw","vh","sx","sy","sw","sh","insetX","insetY","canvas","ctx","blob","resolve","b","dataUrl","arrayBuffer","sha256","next","handleUploadDrop","accepted","file","objectUrl","dimensions","reject","img","reader","handleUploadReject","rejections","confirm","focusUseCameraRef","retake","_b","_c","onKeyDown","event","onVisibility","agentHandle","useMemo","useImperativeHandle","useAgentRegistration","regionLabel","hintText","maxSizeMb","statusText","canRetryCamera","showUploadFallback","uploadAffordance","jsx","FileUpload","acceptedFiles","showViewport","jsxs","Button","RotateCcw","Check","Loader2","Alert"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { jsxs as l, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as $, useState as i, useMemo as g, useEffect as F } from "react";
|
|
3
|
+
import { c as k } from "./index-D2ZczOXr.js";
|
|
4
|
+
import { useTranslation as B } from "react-i18next";
|
|
5
|
+
import { R as s } from "./radio-TWf9Q-mp.js";
|
|
6
|
+
import { R as f } from "./radio-group-BcF92GEF.js";
|
|
7
|
+
import { F as h } from "./form-field-BOm9hK35.js";
|
|
8
|
+
import { D as _ } from "./date-picker-CvQfs6Xh.js";
|
|
9
|
+
import { N as I } from "./number-input-Dj5L3pXK.js";
|
|
10
|
+
import { B as S } from "./badge-zsf5i5bH.js";
|
|
11
|
+
import { I as V } from "./insert-result-yJ0QavoN.js";
|
|
12
|
+
import { D as v, c as z } from "./gestation-BXEgDGmP.js";
|
|
13
|
+
const G = k("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
14
|
+
variants: {
|
|
15
|
+
width: { full: "ds:w-full", auto: "ds:inline-flex" }
|
|
16
|
+
},
|
|
17
|
+
defaultVariants: { width: "full" }
|
|
18
|
+
}), M = {
|
|
19
|
+
preconception: "neutral",
|
|
20
|
+
first: "info",
|
|
21
|
+
second: "success",
|
|
22
|
+
third: "warning",
|
|
23
|
+
postterm: "error"
|
|
24
|
+
}, R = {
|
|
25
|
+
lmp: "dueDateCalculator.lmpDate",
|
|
26
|
+
conception: "dueDateCalculator.conceptionDate",
|
|
27
|
+
ivf: "dueDateCalculator.transferDate"
|
|
28
|
+
}, j = $(
|
|
29
|
+
({ defaultMethod: b = "lmp", onResultChange: d, onInsert: p, id: C, width: y, className: x }, N) => {
|
|
30
|
+
const { t: e, i18n: D } = B(), [r, L] = i(b), [o, A] = i(void 0), [u, w] = i(
|
|
31
|
+
v
|
|
32
|
+
), [n, E] = i(5), t = g(() => o ? z(
|
|
33
|
+
{
|
|
34
|
+
method: r,
|
|
35
|
+
date: o,
|
|
36
|
+
cycleLength: u ?? v,
|
|
37
|
+
embryoAge: n
|
|
38
|
+
},
|
|
39
|
+
/* @__PURE__ */ new Date()
|
|
40
|
+
) : null, [r, o, u, n]), c = g(
|
|
41
|
+
() => new Intl.DateTimeFormat(D.language, { dateStyle: "long" }),
|
|
42
|
+
[D.language]
|
|
43
|
+
);
|
|
44
|
+
F(() => {
|
|
45
|
+
d == null || d(t);
|
|
46
|
+
}, [t, d]);
|
|
47
|
+
const T = g(() => /* @__PURE__ */ new Date(), []);
|
|
48
|
+
return /* @__PURE__ */ l(
|
|
49
|
+
"div",
|
|
50
|
+
{
|
|
51
|
+
ref: N,
|
|
52
|
+
"data-component": "due-date-calculator",
|
|
53
|
+
"data-component-id": C,
|
|
54
|
+
className: G({ width: y, className: x }),
|
|
55
|
+
children: [
|
|
56
|
+
/* @__PURE__ */ l(
|
|
57
|
+
f,
|
|
58
|
+
{
|
|
59
|
+
label: e("dueDateCalculator.method.label"),
|
|
60
|
+
variant: "horizontal",
|
|
61
|
+
value: r,
|
|
62
|
+
onValueChange: (m) => L(m),
|
|
63
|
+
children: [
|
|
64
|
+
/* @__PURE__ */ a(s, { label: e("dueDateCalculator.method.lmp"), value: "lmp" }),
|
|
65
|
+
/* @__PURE__ */ a(
|
|
66
|
+
s,
|
|
67
|
+
{
|
|
68
|
+
label: e("dueDateCalculator.method.conception"),
|
|
69
|
+
value: "conception"
|
|
70
|
+
}
|
|
71
|
+
),
|
|
72
|
+
/* @__PURE__ */ a(s, { label: e("dueDateCalculator.method.ivf"), value: "ivf" })
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
),
|
|
76
|
+
/* @__PURE__ */ l("div", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2", children: [
|
|
77
|
+
/* @__PURE__ */ a(h, { label: e(R[r]), children: /* @__PURE__ */ a(_, { value: o, onChange: A, maxDate: T }) }),
|
|
78
|
+
r === "lmp" && /* @__PURE__ */ a(
|
|
79
|
+
h,
|
|
80
|
+
{
|
|
81
|
+
label: e("dueDateCalculator.cycleLength"),
|
|
82
|
+
description: e("dueDateCalculator.cycleLengthHint"),
|
|
83
|
+
children: /* @__PURE__ */ a(
|
|
84
|
+
I,
|
|
85
|
+
{
|
|
86
|
+
mode: "integer",
|
|
87
|
+
min: 20,
|
|
88
|
+
max: 45,
|
|
89
|
+
value: u,
|
|
90
|
+
onChange: w
|
|
91
|
+
}
|
|
92
|
+
)
|
|
93
|
+
}
|
|
94
|
+
),
|
|
95
|
+
r === "ivf" && /* @__PURE__ */ l(
|
|
96
|
+
f,
|
|
97
|
+
{
|
|
98
|
+
label: e("dueDateCalculator.embryoAge"),
|
|
99
|
+
variant: "horizontal",
|
|
100
|
+
value: String(n),
|
|
101
|
+
onValueChange: (m) => E(Number(m)),
|
|
102
|
+
children: [
|
|
103
|
+
/* @__PURE__ */ a(s, { label: e("dueDateCalculator.day3"), value: "3" }),
|
|
104
|
+
/* @__PURE__ */ a(s, { label: e("dueDateCalculator.day5"), value: "5" })
|
|
105
|
+
]
|
|
106
|
+
}
|
|
107
|
+
)
|
|
108
|
+
] }),
|
|
109
|
+
/* @__PURE__ */ a("p", { className: "ds:sr-only", role: "status", "aria-live": "polite", children: t ? `${e("dueDateCalculator.result.dueDateLabel")}: ${c.format(
|
|
110
|
+
t.dueDate
|
|
111
|
+
)}. ${e("dueDateCalculator.result.trimesterLabel")}: ${e(
|
|
112
|
+
`dueDateCalculator.trimester.${t.trimester}`
|
|
113
|
+
)}.` : "" }),
|
|
114
|
+
t ? /* @__PURE__ */ l("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
|
|
115
|
+
/* @__PURE__ */ l("dl", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-3", children: [
|
|
116
|
+
/* @__PURE__ */ l("div", { className: "ds:flex ds:flex-col ds:items-start ds:gap-[var(--spacing-xs)]", children: [
|
|
117
|
+
/* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: e("dueDateCalculator.result.trimesterLabel") }),
|
|
118
|
+
/* @__PURE__ */ a("dd", { children: /* @__PURE__ */ a(S, { variant: M[t.trimester], size: "lg", children: e(`dueDateCalculator.trimester.${t.trimester}`) }) })
|
|
119
|
+
] }),
|
|
120
|
+
/* @__PURE__ */ l("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
|
|
121
|
+
/* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: e("dueDateCalculator.result.gestationLabel") }),
|
|
122
|
+
/* @__PURE__ */ a("dd", { className: "type-body ds:text-foreground", children: t.gestationalAge ? e("dueDateCalculator.result.gestation", {
|
|
123
|
+
weeks: t.gestationalAge.weeks,
|
|
124
|
+
days: t.gestationalAge.days
|
|
125
|
+
}) : "—" })
|
|
126
|
+
] }),
|
|
127
|
+
/* @__PURE__ */ l("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
|
|
128
|
+
/* @__PURE__ */ a("dt", { className: "type-label ds:text-muted-foreground", children: e("dueDateCalculator.result.dueDateLabel") }),
|
|
129
|
+
/* @__PURE__ */ a("dd", { className: "type-metric ds:text-foreground", children: c.format(t.dueDate) })
|
|
130
|
+
] })
|
|
131
|
+
] }),
|
|
132
|
+
p ? /* @__PURE__ */ a(
|
|
133
|
+
V,
|
|
134
|
+
{
|
|
135
|
+
onInsert: p,
|
|
136
|
+
card: {
|
|
137
|
+
title: e("insert.title.dueDate"),
|
|
138
|
+
highlight: c.format(t.dueDate),
|
|
139
|
+
fields: [
|
|
140
|
+
{
|
|
141
|
+
label: e("dueDateCalculator.result.dueDateLabel"),
|
|
142
|
+
value: c.format(t.dueDate)
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
label: e("dueDateCalculator.result.gestationLabel"),
|
|
146
|
+
value: t.gestationalAge ? e("dueDateCalculator.result.gestation", {
|
|
147
|
+
weeks: t.gestationalAge.weeks,
|
|
148
|
+
days: t.gestationalAge.days
|
|
149
|
+
}) : "—"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
label: e("dueDateCalculator.result.trimesterLabel"),
|
|
153
|
+
value: e(
|
|
154
|
+
`dueDateCalculator.trimester.${t.trimester}`
|
|
155
|
+
)
|
|
156
|
+
}
|
|
157
|
+
]
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
) : null
|
|
161
|
+
] }) : /* @__PURE__ */ a("p", { className: "type-body ds:text-muted-foreground", children: e("dueDateCalculator.empty") })
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
);
|
|
167
|
+
j.displayName = "DueDateCalculator";
|
|
168
|
+
export {
|
|
169
|
+
j as D
|
|
170
|
+
};
|
|
171
|
+
//# sourceMappingURL=due-date-calculator-CUspKSTw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"due-date-calculator-CUspKSTw.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 { Badge } from '../badge';\nimport { InsertButton, type InsertPayload } from '../_shared/insert-result';\nimport {\n type DueDateMethod,\n type EmbryoAge,\n type Trimester,\n type DueDateResult,\n computeDueDate,\n DEFAULT_CYCLE_LENGTH,\n} from './gestation';\n\nconst rootVariants = cva('ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]', {\n variants: {\n width: { full: 'ds:w-full', auto: 'ds:inline-flex' },\n },\n defaultVariants: { width: 'full' },\n});\n\nconst TRIMESTER_BADGE: Record<\n Trimester,\n 'neutral' | 'info' | 'success' | 'warning' | 'error'\n> = {\n preconception: 'neutral',\n first: 'info',\n second: 'success',\n third: 'warning',\n postterm: 'error',\n};\n\n/** 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 /** Opaque instance id, emitted as `data-component-id`. */\n id?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\nexport const DueDateCalculator = forwardRef<\n HTMLDivElement,\n DueDateCalculatorProps\n>(\n (\n { defaultMethod = 'lmp', onResultChange, onInsert, id, width, className },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n const [method, setMethod] = useState<DueDateMethod>(defaultMethod);\n const [refDate, setRefDate] = useState<Date | undefined>(undefined);\n const [cycleLength, setCycleLength] = useState<number | null>(\n DEFAULT_CYCLE_LENGTH,\n );\n const [embryoAge, setEmbryoAge] = useState<EmbryoAge>(5);\n\n // `today` is captured once per render; the result re-derives from it.\n const result = useMemo<DueDateResult | null>(() => {\n if (!refDate) return null;\n return computeDueDate(\n {\n method,\n date: refDate,\n cycleLength: cycleLength ?? DEFAULT_CYCLE_LENGTH,\n embryoAge,\n },\n new Date(),\n );\n }, [method, refDate, cycleLength, embryoAge]);\n\n const dateFormatter = useMemo(\n () => new Intl.DateTimeFormat(i18n.language, { dateStyle: 'long' }),\n [i18n.language],\n );\n\n useEffect(() => {\n onResultChange?.(result);\n }, [result, onResultChange]);\n\n const today = useMemo(() => new Date(), []);\n\n return (\n <div\n ref={ref}\n data-component=\"due-date-calculator\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <RadioGroup\n label={t('dueDateCalculator.method.label')}\n variant=\"horizontal\"\n value={method}\n onValueChange={(next) => setMethod(next as DueDateMethod)}\n >\n <Radio label={t('dueDateCalculator.method.lmp')} value=\"lmp\" />\n <Radio\n label={t('dueDateCalculator.method.conception')}\n value=\"conception\"\n />\n <Radio label={t('dueDateCalculator.method.ivf')} value=\"ivf\" />\n </RadioGroup>\n\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n <FormField label={t(DATE_LABEL_KEY[method])}>\n <DatePicker value={refDate} onChange={setRefDate} maxDate={today} />\n </FormField>\n\n {method === 'lmp' && (\n <FormField\n label={t('dueDateCalculator.cycleLength')}\n description={t('dueDateCalculator.cycleLengthHint')}\n >\n <NumberInput\n mode=\"integer\"\n min={20}\n max={45}\n value={cycleLength}\n onChange={setCycleLength}\n />\n </FormField>\n )}\n\n {method === 'ivf' && (\n <RadioGroup\n label={t('dueDateCalculator.embryoAge')}\n variant=\"horizontal\"\n value={String(embryoAge)}\n onValueChange={(next) => setEmbryoAge(Number(next) as EmbryoAge)}\n >\n <Radio label={t('dueDateCalculator.day3')} value=\"3\" />\n <Radio label={t('dueDateCalculator.day5')} value=\"5\" />\n </RadioGroup>\n )}\n </div>\n\n {/* Concise polite announcement when a due date resolves. */}\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {result\n ? `${t('dueDateCalculator.result.dueDateLabel')}: ${dateFormatter.format(\n result.dueDate,\n )}. ${t('dueDateCalculator.result.trimesterLabel')}: ${t(\n `dueDateCalculator.trimester.${result.trimester}`,\n )}.`\n : ''}\n </p>\n\n {result ? (\n <div 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 variant={TRIMESTER_BADGE[result.trimester]} size=\"lg\">\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 {onInsert ? (\n <InsertButton\n onInsert={onInsert}\n card={{\n title: t('insert.title.dueDate'),\n highlight: dateFormatter.format(result.dueDate),\n fields: [\n {\n label: t('dueDateCalculator.result.dueDateLabel'),\n value: dateFormatter.format(result.dueDate),\n },\n {\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 label: t('dueDateCalculator.result.trimesterLabel'),\n value: t(\n `dueDateCalculator.trimester.${result.trimester}`,\n ),\n },\n ],\n }}\n />\n ) : null}\n </div>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('dueDateCalculator.empty')}\n </p>\n )}\n </div>\n );\n },\n);\n\nDueDateCalculator.displayName = 'DueDateCalculator';\n"],"names":["rootVariants","cva","TRIMESTER_BADGE","DATE_LABEL_KEY","DueDateCalculator","forwardRef","defaultMethod","onResultChange","onInsert","id","width","className","ref","t","i18n","useTranslation","method","setMethod","useState","refDate","setRefDate","cycleLength","setCycleLength","DEFAULT_CYCLE_LENGTH","embryoAge","setEmbryoAge","result","useMemo","computeDueDate","dateFormatter","useEffect","today","jsxs","RadioGroup","next","jsx","Radio","FormField","DatePicker","NumberInput","Badge","InsertButton"],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ import { I as B } from "./icon-button-CKEOrN37.js";
|
|
|
11
11
|
import { P as Z } from "./popover-Devce-tT.js";
|
|
12
12
|
import { C as Re } from "./checkbox-DRcOdmXv.js";
|
|
13
13
|
import { T as fe } from "./text-input-BaClJL8Y.js";
|
|
14
|
-
import { T as ae } from "./tag-
|
|
14
|
+
import { T as ae } from "./tag-CdA0s_VV.js";
|
|
15
15
|
import { D as Y } from "./dropdown-menu-BC5ZdOMo.js";
|
|
16
16
|
import { X as De } from "./x-CCcI3eJp.js";
|
|
17
17
|
import { R as Rt } from "./refresh-cw-CC8jSKMr.js";
|
|
@@ -26,7 +26,7 @@ import { S as Ie } from "./select-hsCaJSX3.js";
|
|
|
26
26
|
import { u as zt } from "./use-prefers-reduced-motion-BMwIQRjB.js";
|
|
27
27
|
import { u as At } from "./use-theme-C2dHKUAN.js";
|
|
28
28
|
import { u as Pt } from "./registry-nPAVE19X.js";
|
|
29
|
-
import { D as ze } from "./date-range-picker-
|
|
29
|
+
import { D as ze } from "./date-range-picker-U9fn1g9d.js";
|
|
30
30
|
import { M as Ot } from "./multi-select-DOLO3K_z.js";
|
|
31
31
|
import { A as Ae } from "./autocomplete-DIgdhCGJ.js";
|
|
32
32
|
import { N as ee } from "./number-input-Dj5L3pXK.js";
|
|
@@ -2332,4 +2332,4 @@ export {
|
|
|
2332
2332
|
Be as q,
|
|
2333
2333
|
xn as u
|
|
2334
2334
|
};
|
|
2335
|
-
//# sourceMappingURL=editable-currency-cell-renderer-
|
|
2335
|
+
//# sourceMappingURL=editable-currency-cell-renderer-DgkCIIcO.js.map
|