@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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alfadocs/ui-kit-debug",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.39.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AlfaDocs shared design system — tokens, components, patterns, and translations for platform, booking, and alfascribe. (debug build — identical runtime to @alfadocs/ui-kit, ships source maps for symbolication).",
|
|
6
6
|
"license": "BUSL-1.1",
|
|
@@ -95,6 +95,26 @@
|
|
|
95
95
|
"types": "./dist/components/bmi-calculator/index.d.ts",
|
|
96
96
|
"import": "./dist/components/bmi-calculator/index.js"
|
|
97
97
|
},
|
|
98
|
+
"./calculator-dialog": {
|
|
99
|
+
"types": "./dist/components/calculator-dialog/index.d.ts",
|
|
100
|
+
"import": "./dist/components/calculator-dialog/index.js"
|
|
101
|
+
},
|
|
102
|
+
"./cycle-calculator": {
|
|
103
|
+
"types": "./dist/components/cycle-calculator/index.d.ts",
|
|
104
|
+
"import": "./dist/components/cycle-calculator/index.js"
|
|
105
|
+
},
|
|
106
|
+
"./gestational-age-calculator": {
|
|
107
|
+
"types": "./dist/components/gestational-age-calculator/index.d.ts",
|
|
108
|
+
"import": "./dist/components/gestational-age-calculator/index.js"
|
|
109
|
+
},
|
|
110
|
+
"./pregnancy-weight-gain": {
|
|
111
|
+
"types": "./dist/components/pregnancy-weight-gain/index.d.ts",
|
|
112
|
+
"import": "./dist/components/pregnancy-weight-gain/index.js"
|
|
113
|
+
},
|
|
114
|
+
"./unit-converter": {
|
|
115
|
+
"types": "./dist/components/unit-converter/index.d.ts",
|
|
116
|
+
"import": "./dist/components/unit-converter/index.js"
|
|
117
|
+
},
|
|
98
118
|
"./booking": {
|
|
99
119
|
"types": "./dist/components/booking/index.d.ts",
|
|
100
120
|
"import": "./dist/components/booking/index.js"
|
|
@@ -187,6 +207,10 @@
|
|
|
187
207
|
"types": "./dist/components/date-time-picker/index.d.ts",
|
|
188
208
|
"import": "./dist/components/date-time-picker/index.js"
|
|
189
209
|
},
|
|
210
|
+
"./dependent-selector": {
|
|
211
|
+
"types": "./dist/components/dependent-selector/index.d.ts",
|
|
212
|
+
"import": "./dist/components/dependent-selector/index.js"
|
|
213
|
+
},
|
|
190
214
|
"./description-list": {
|
|
191
215
|
"types": "./dist/components/description-list/index.d.ts",
|
|
192
216
|
"import": "./dist/components/description-list/index.js"
|
|
@@ -195,6 +219,10 @@
|
|
|
195
219
|
"types": "./dist/components/dialog/index.d.ts",
|
|
196
220
|
"import": "./dist/components/dialog/index.js"
|
|
197
221
|
},
|
|
222
|
+
"./document-scanner": {
|
|
223
|
+
"types": "./dist/components/document-scanner/index.d.ts",
|
|
224
|
+
"import": "./dist/components/document-scanner/index.js"
|
|
225
|
+
},
|
|
198
226
|
"./dropdown-menu": {
|
|
199
227
|
"types": "./dist/components/dropdown-menu/index.d.ts",
|
|
200
228
|
"import": "./dist/components/dropdown-menu/index.js"
|
|
@@ -215,6 +243,10 @@
|
|
|
215
243
|
"types": "./dist/components/file-upload/index.d.ts",
|
|
216
244
|
"import": "./dist/components/file-upload/index.js"
|
|
217
245
|
},
|
|
246
|
+
"./fiscal-code-input": {
|
|
247
|
+
"types": "./dist/components/fiscal-code-input/index.d.ts",
|
|
248
|
+
"import": "./dist/components/fiscal-code-input/index.js"
|
|
249
|
+
},
|
|
218
250
|
"./flag": {
|
|
219
251
|
"types": "./dist/components/flag/index.d.ts",
|
|
220
252
|
"import": "./dist/components/flag/index.js"
|
|
@@ -363,6 +395,10 @@
|
|
|
363
395
|
"types": "./dist/components/public-header/index.d.ts",
|
|
364
396
|
"import": "./dist/components/public-header/index.js"
|
|
365
397
|
},
|
|
398
|
+
"./qr-code": {
|
|
399
|
+
"types": "./dist/components/qr-code/index.d.ts",
|
|
400
|
+
"import": "./dist/components/qr-code/index.js"
|
|
401
|
+
},
|
|
366
402
|
"./radio-group": {
|
|
367
403
|
"types": "./dist/components/radio-group/index.d.ts",
|
|
368
404
|
"import": "./dist/components/radio-group/index.js"
|
|
@@ -407,6 +443,10 @@
|
|
|
407
443
|
"types": "./dist/components/separator/index.d.ts",
|
|
408
444
|
"import": "./dist/components/separator/index.js"
|
|
409
445
|
},
|
|
446
|
+
"./session-countdown": {
|
|
447
|
+
"types": "./dist/components/session-countdown/index.d.ts",
|
|
448
|
+
"import": "./dist/components/session-countdown/index.js"
|
|
449
|
+
},
|
|
410
450
|
"./sheet": {
|
|
411
451
|
"types": "./dist/components/sheet/index.d.ts",
|
|
412
452
|
"import": "./dist/components/sheet/index.js"
|
|
@@ -415,6 +455,10 @@
|
|
|
415
455
|
"types": "./dist/components/sidebar/index.d.ts",
|
|
416
456
|
"import": "./dist/components/sidebar/index.js"
|
|
417
457
|
},
|
|
458
|
+
"./sign-document": {
|
|
459
|
+
"types": "./dist/components/sign-document/index.d.ts",
|
|
460
|
+
"import": "./dist/components/sign-document/index.js"
|
|
461
|
+
},
|
|
418
462
|
"./sign-in-with-alfadocs-button": {
|
|
419
463
|
"types": "./dist/components/sign-in-with-alfadocs-button/index.d.ts",
|
|
420
464
|
"import": "./dist/components/sign-in-with-alfadocs-button/index.js"
|
|
@@ -435,6 +479,10 @@
|
|
|
435
479
|
"types": "./dist/components/slot-grid/index.d.ts",
|
|
436
480
|
"import": "./dist/components/slot-grid/index.js"
|
|
437
481
|
},
|
|
482
|
+
"./social-sign-in-button": {
|
|
483
|
+
"types": "./dist/components/social-sign-in-button/index.d.ts",
|
|
484
|
+
"import": "./dist/components/social-sign-in-button/index.js"
|
|
485
|
+
},
|
|
438
486
|
"./sparkline": {
|
|
439
487
|
"types": "./dist/components/sparkline/index.d.ts",
|
|
440
488
|
"import": "./dist/components/sparkline/index.js"
|
|
@@ -519,6 +567,10 @@
|
|
|
519
567
|
"types": "./dist/components/typing-indicator/index.d.ts",
|
|
520
568
|
"import": "./dist/components/typing-indicator/index.js"
|
|
521
569
|
},
|
|
570
|
+
"./wallet-pay-button": {
|
|
571
|
+
"types": "./dist/components/wallet-pay-button/index.d.ts",
|
|
572
|
+
"import": "./dist/components/wallet-pay-button/index.js"
|
|
573
|
+
},
|
|
522
574
|
"./warning-stack": {
|
|
523
575
|
"types": "./dist/components/warning-stack/index.d.ts",
|
|
524
576
|
"import": "./dist/components/warning-stack/index.js"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"accordion-bSU21uTV.js","sources":["../../src/components/accordion/accordion.agent.ts","../../src/components/accordion/accordion.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { AccordionHandle } from './accordion';\n\nexport const accordionAgent: AgentAdapter<AccordionHandle> = {\n id: 'accordion',\n capabilities: ['expand', 'select_single', 'select_multiple'],\n state: {\n openItems: {\n type: 'string[]',\n description:\n 'Ids (values) of currently-expanded items. Single-mode accordions return an array with 0 or 1 entries.',\n read: (handle) => handle.getOpenItems(),\n },\n },\n actions: {\n expand: {\n safety: 'read',\n argsType: '{ itemId: string }',\n description: 'Expand the item with the given value.',\n invoke: (handle, args: { itemId: string }) => {\n handle.expand(args.itemId);\n },\n },\n collapse: {\n safety: 'read',\n argsType: '{ itemId: string }',\n description: 'Collapse the item with the given value.',\n invoke: (handle, args: { itemId: string }) => {\n handle.collapse(args.itemId);\n },\n },\n clear: {\n safety: 'read',\n description:\n 'Collapse all items. Only meaningful for multi-mode accordions; single-mode equivalent to collapsing the active item.',\n invoke: (handle) => {\n handle.clear();\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'accordion' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-item-id',\n description: 'Each Accordion.Item emits its value as data-item-id.',\n },\n },\n};\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n} from 'react';\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { ChevronDown } from 'lucide-react';\nimport { useDirection } from '../_shared/use-direction';\nimport { composeRefs } from '../_shared/compose-refs';\nimport { useAgentRegistration } from '../../agent';\nimport { accordionAgent } from './accordion.agent';\n\ntype AccordionVariant = 'default' | 'card' | 'separated';\n\nconst AccordionContext = createContext<{ variant: AccordionVariant }>({\n variant: 'default',\n});\n\nconst accordionVariants = cva('', {\n variants: {\n variant: {\n default: 'ds:divide-y ds:divide-border',\n card: 'ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]',\n separated: 'ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst accordionItemVariants = cva('', {\n variants: {\n variant: {\n default: '',\n card: 'ds:bg-[var(--card)] ds:border ds:border-[var(--card-border,var(--border))] ds:rounded-[var(--radius-lg)] ds:overflow-hidden',\n separated:\n 'ds:border ds:border-border ds:rounded-[var(--radius-md)] ds:overflow-hidden',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst contentVariants = cva(\n [\n 'ds:overflow-hidden',\n 'ds:data-[state=open]:animate-[accordion-down_calc(var(--animation-duration)*1.5)_var(--ease-out)]',\n 'ds:data-[state=closed]:animate-[accordion-up_calc(var(--animation-duration)*1.5)_var(--ease-in)]',\n ].join(' '),\n);\n\nconst chevronVariants = cva(\n 'ds:ms-auto ds:size-4 ds:shrink-0 ds:transition-transform ds:duration-[calc(var(--animation-duration)*1.5)] ds:ease-[var(--ease-out)] ds:motion-reduce:transition-none ds:group-data-[state=open]:rotate-180',\n);\n\nconst triggerVariants = cva(\n [\n 'ds:group ds:flex ds:w-full ds:items-center ds:[min-block-size:var(--min-target-size)]',\n 'ds:py-[var(--spacing-md)] ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]',\n 'ds:text-start ds:font-medium ds:hover:underline',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:disabled:cursor-not-allowed ds:disabled:opacity-50',\n 'ds:transition-all ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n ].join(' '),\n);\n\ntype PrimitiveSingleProps = ComponentPropsWithoutRef<\n typeof AccordionPrimitive.Root\n> & {\n type: 'single';\n};\ntype PrimitiveMultipleProps = ComponentPropsWithoutRef<\n typeof AccordionPrimitive.Root\n> & {\n type: 'multiple';\n};\n\nexport type AccordionProps = (PrimitiveSingleProps | PrimitiveMultipleProps) &\n VariantProps<typeof accordionVariants>;\n\n// Curated agent-readiness handle — see accordion.agent.ts.\nexport interface AccordionHandle {\n getOpenItems: () => string[];\n expand: (itemId: string) => void;\n collapse: (itemId: string) => void;\n clear: () => void;\n}\n\nexport type AccordionItemProps = ComponentPropsWithoutRef<\n typeof AccordionPrimitive.Item\n> &\n VariantProps<typeof accordionItemVariants>;\n\nexport type AccordionTriggerProps = ComponentPropsWithoutRef<\n typeof AccordionPrimitive.Trigger\n>;\n\nexport type AccordionContentProps = ComponentPropsWithoutRef<\n typeof AccordionPrimitive.Content\n>;\n\nconst AccordionRoot = forwardRef<HTMLDivElement, AccordionProps>(\n ({ variant = 'default', className, children, id, ...props }, ref) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const composedRef = composeRefs(ref, rootRef);\n const dir = useDirection(rootRef);\n\n // Mirror Radix's controlled/uncontrolled value into local state so the\n // agent handle can read live state and synthesise updates.\n const accordionProps = props as ComponentPropsWithoutRef<\n typeof AccordionPrimitive.Root\n >;\n const accordionType = (props as { type?: 'single' | 'multiple' }).type;\n const isMultiple = accordionType === 'multiple';\n const isValueControlled =\n (accordionProps as { value?: unknown }).value !== undefined;\n\n const [internalValue, setInternalValue] = useState<string | string[]>(\n () => {\n const dv = (accordionProps as { defaultValue?: string | string[] })\n .defaultValue;\n if (dv !== undefined) return dv;\n return isMultiple ? [] : '';\n },\n );\n\n const controlledValue = (accordionProps as { value?: string | string[] })\n .value;\n const currentValue = isValueControlled\n ? (controlledValue as string | string[])\n : internalValue;\n const valueRef = useRef<string | string[]>(currentValue);\n useEffect(() => {\n valueRef.current = currentValue;\n }, [currentValue]);\n\n const onValueChange = (\n accordionProps as { onValueChange?: (next: string | string[]) => void }\n ).onValueChange;\n const commitValue = useCallback(\n (next: string | string[]) => {\n if (!isValueControlled) setInternalValue(next);\n onValueChange?.(next);\n },\n [isValueControlled, onValueChange],\n );\n\n const handle = useMemo<AccordionHandle>(\n () => ({\n getOpenItems: () => {\n const v = valueRef.current;\n if (Array.isArray(v)) return [...v];\n return v ? [v] : [];\n },\n expand: (itemId: string) => {\n const v = valueRef.current;\n if (Array.isArray(v)) {\n if (v.includes(itemId)) return;\n commitValue([...v, itemId]);\n } else {\n if (v === itemId) return;\n commitValue(itemId);\n }\n },\n collapse: (itemId: string) => {\n const v = valueRef.current;\n if (Array.isArray(v)) {\n if (!v.includes(itemId)) return;\n commitValue(v.filter((x) => x !== itemId));\n } else if (v === itemId) {\n commitValue('');\n }\n },\n clear: () => {\n const v = valueRef.current;\n if (Array.isArray(v)) commitValue([]);\n else commitValue('');\n },\n }),\n [commitValue],\n );\n useAgentRegistration(accordionAgent, handle, id);\n\n // Bridge controlled/uncontrolled into Radix as a controlled root so our\n // internal state drives the primitive. Cast at construction because Radix's\n // Root is a discriminated union on `type` that TS can't narrow from `isMultiple`.\n const radixControlProps = (\n isMultiple\n ? {\n value: Array.isArray(currentValue) ? currentValue : [],\n onValueChange: (next: string[]) => commitValue(next),\n }\n : {\n value: typeof currentValue === 'string' ? currentValue : '',\n onValueChange: (next: string) => commitValue(next),\n }\n ) as ComponentPropsWithoutRef<typeof AccordionPrimitive.Root>;\n\n const {\n value: _omittedValue,\n defaultValue: _omittedDefault,\n onValueChange: _omittedOnChange,\n ...passthrough\n } = accordionProps as ComponentPropsWithoutRef<\n typeof AccordionPrimitive.Root\n > & {\n value?: unknown;\n defaultValue?: unknown;\n onValueChange?: unknown;\n };\n\n return (\n <AccordionContext.Provider value={{ variant: variant ?? 'default' }}>\n <AccordionPrimitive.Root\n ref={composedRef}\n dir={dir}\n id={id}\n data-component=\"accordion\"\n data-component-id={id}\n className={accordionVariants({ variant, className })}\n {...({\n ...passthrough,\n ...radixControlProps,\n } as ComponentPropsWithoutRef<typeof AccordionPrimitive.Root>)}\n >\n {children}\n </AccordionPrimitive.Root>\n </AccordionContext.Provider>\n );\n },\n);\nAccordionRoot.displayName = 'Accordion';\n\nconst AccordionItem = forwardRef<HTMLDivElement, AccordionItemProps>(\n ({ variant: variantProp, className, children, ...props }, ref) => {\n const { variant: ctxVariant } = useContext(AccordionContext);\n const variant = variantProp ?? ctxVariant;\n return (\n <AccordionPrimitive.Item\n ref={ref}\n className={accordionItemVariants({ variant, className })}\n {...props}\n >\n {children}\n </AccordionPrimitive.Item>\n );\n },\n);\nAccordionItem.displayName = 'AccordionItem';\n\nconst AccordionTrigger = forwardRef<HTMLButtonElement, AccordionTriggerProps>(\n ({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"ds:flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={triggerVariants({ className })}\n {...props}\n >\n {children}\n <ChevronDown aria-hidden=\"true\" className={chevronVariants()} />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n ),\n);\nAccordionTrigger.displayName = 'AccordionTrigger';\n\nconst AccordionContent = forwardRef<HTMLDivElement, AccordionContentProps>(\n ({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className={contentVariants({ className })}\n {...props}\n >\n <div className=\"ds:pb-[var(--spacing-md)] ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]\">\n {children}\n </div>\n </AccordionPrimitive.Content>\n ),\n);\nAccordionContent.displayName = 'AccordionContent';\n\nexport const Accordion = Object.assign(AccordionRoot, {\n Item: AccordionItem,\n Trigger: AccordionTrigger,\n Content: AccordionContent,\n});\n\nexport { AccordionItem, AccordionTrigger, AccordionContent };\n"],"names":["accordionAgent","handle","args","AccordionContext","createContext","accordionVariants","cva","accordionItemVariants","contentVariants","chevronVariants","triggerVariants","AccordionRoot","forwardRef","variant","className","children","id","props","ref","rootRef","useRef","composedRef","composeRefs","dir","useDirection","accordionProps","isMultiple","isValueControlled","internalValue","setInternalValue","useState","dv","controlledValue","currentValue","valueRef","useEffect","onValueChange","commitValue","useCallback","next","useMemo","v","itemId","x","useAgentRegistration","radixControlProps","_omittedValue","_omittedDefault","_omittedOnChange","passthrough","jsx","AccordionPrimitive","AccordionItem","variantProp","ctxVariant","useContext","AccordionTrigger","jsxs","ChevronDown","AccordionContent","Accordion"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agenda-tray-By_asPN9.js","sources":["../../node_modules/lucide-react/dist/esm/icons/calendar-days.js","../../src/components/agenda-tray/agenda-tray.agent.ts","../../src/components/agenda-tray/agenda-tray.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 [\"path\", { d: \"M8 2v4\", key: \"1cmpym\" }],\n [\"path\", { d: \"M16 2v4\", key: \"4m81vk\" }],\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"4\", rx: \"2\", key: \"1hopcy\" }],\n [\"path\", { d: \"M3 10h18\", key: \"8toen8\" }],\n [\"path\", { d: \"M8 14h.01\", key: \"6423bh\" }],\n [\"path\", { d: \"M12 14h.01\", key: \"1etili\" }],\n [\"path\", { d: \"M16 14h.01\", key: \"1gbofw\" }],\n [\"path\", { d: \"M8 18h.01\", key: \"lrp35t\" }],\n [\"path\", { d: \"M12 18h.01\", key: \"mhygvu\" }],\n [\"path\", { d: \"M16 18h.01\", key: \"kzsmim\" }]\n];\nconst CalendarDays = createLucideIcon(\"calendar-days\", __iconNode);\n\nexport { __iconNode, CalendarDays as default };\n//# sourceMappingURL=calendar-days.js.map\n","/* -------------------------------------------------------------------- */\n/* Agent adapter — AgendaTray. */\n/* */\n/* Tray-level surface: read appointment ids + lifecycle status (never */\n/* patient names / treatments), and route an activation through the */\n/* curated handle. AgendaTray is in-page (no open/close). */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { AgendaTrayHandle } from './agenda-tray';\n\nexport const agendaTrayAgent: AgentAdapter<AgendaTrayHandle> = {\n id: 'agenda-tray',\n capabilities: ['select_single'],\n state: {\n items: {\n type: 'Array<{ id: string; status: string }>',\n descriptionKey: 'ui.agent.agendaTray.state.items',\n description:\n 'Currently-displayed appointments. Ids + status only — never patient identity.',\n read: (handle) => handle.getItems(),\n },\n },\n actions: {\n select_item: {\n safety: 'read',\n argsType: '{ id: string }',\n descriptionKey: 'ui.agent.agendaTray.actions.selectItem',\n description: 'Activate the appointment with the given id.',\n invoke: (handle, args: { id: string }) => {\n handle.selectItem(args.id);\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'agenda-tray',\n description: 'Marks the AgendaTray wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description:\n 'Sourced from the id prop. Required to address a specific tray from the agent.',\n },\n item: {\n attr: 'data-appointment-id',\n description:\n 'Stable appointment id emitted on each rendered AgendaCard inside the tray.',\n },\n },\n};\n","import {\n forwardRef,\n useImperativeHandle,\n useMemo,\n useRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { CalendarDays, Plus } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\nimport { Skeleton } from '../skeleton/skeleton';\nimport { EmptyState } from '../empty-state/empty-state';\nimport { AgendaCard, type AgendaItem } from '../agenda-card';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { agendaTrayAgent } from './agenda-tray.agent';\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst agendaTrayVariants = cva(\n [\n 'ds:flex ds:flex-col',\n 'ds:rounded-[var(--radius-md)] ds:shadow-[var(--shadow-card)]',\n 'ds:bg-[color:var(--card)] ds:text-[color:var(--card-foreground)]',\n 'ds:overflow-hidden',\n ].join(' '),\n {\n variants: {\n size: {\n sm: '',\n md: '',\n },\n },\n defaultVariants: {\n size: 'sm',\n },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\n/**\n * Curated imperative handle for AgendaTray. Exposed as the forwardRef\n * target so a future agent / MCP UI bridge can drive the tray without\n * touching the DOM. See `agenda-tray.agent.ts`.\n */\nexport interface AgendaTrayHandle {\n getItems: () => Array<{ id: string; status: string }>;\n selectItem: (id: string) => void;\n}\n\nexport interface AgendaTrayProps\n extends\n Omit<HTMLAttributes<HTMLElement>, 'onClick' | 'id'>,\n VariantProps<typeof agendaTrayVariants> {\n /**\n * Stable instance id. Surfaced on the root as `data-component-id` so\n * an agent / MCP UI bridge can address this specific tray.\n */\n id?: string;\n items: AgendaItem[];\n /** Section title — rendered in the header. Localised by the consumer. */\n title?: string;\n /** Optional small caption (e.g. localised date) shown next to the title. */\n caption?: string;\n size?: 'sm' | 'md';\n onOpenAppointment?: (item: AgendaItem) => void;\n onAddAppointment?: () => void;\n /** Localised label for the \"Add\" affordance. */\n addLabel?: string;\n loading?: boolean;\n emptyTitle?: string;\n emptyDescription?: string;\n}\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport const AgendaTray = forwardRef<HTMLElement, AgendaTrayProps>(\n (\n {\n id,\n items,\n title,\n caption,\n size = 'sm',\n onOpenAppointment,\n onAddAppointment,\n addLabel,\n loading = false,\n emptyTitle,\n emptyDescription,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const heading = title ?? t('agendaTray.title', \"Today's appointments\");\n const resolvedAddLabel = addLabel ?? t('agendaTray.add', 'Add appointment');\n const isEmpty = !loading && items.length === 0;\n\n let body: ReactNode;\n if (loading) {\n body = (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-sm)]\">\n {[0, 1, 2].map((i) => (\n <Skeleton key={i} variant=\"rectangular\" height=\"2.5rem\" />\n ))}\n </div>\n );\n } else if (isEmpty) {\n body = (\n <div className=\"ds:p-[var(--spacing-md)]\">\n <EmptyState\n variant=\"first-use\"\n size=\"sm\"\n title={emptyTitle ?? t('agendaTray.empty.title', 'No appointments')}\n description={\n emptyDescription ??\n t(\n 'agendaTray.empty.description',\n 'New appointments will appear here.',\n )\n }\n />\n </div>\n );\n } else {\n body = (\n <ul className=\"ds:flex ds:list-none ds:flex-col\">\n {items.map((item) => (\n <AgendaCard\n key={item.id}\n item={item}\n size={size}\n onActivate={onOpenAppointment}\n data-appointment-id={item.id}\n />\n ))}\n </ul>\n );\n }\n\n /* Curated imperative handle for agent integration. See\n * agenda-tray.agent.ts. */\n const itemsRef = useRef<AgendaItem[]>(items);\n itemsRef.current = items;\n\n const innerRef = useRef<HTMLElement>(null);\n useImperativeHandle(ref, () => innerRef.current as HTMLElement, []);\n\n const handle = useMemo<AgendaTrayHandle>(\n () => ({\n getItems: () =>\n itemsRef.current.map((i) => ({\n id: i.id,\n status: i.status ?? 'confirmed',\n })),\n selectItem: (targetId: string) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onOpenAppointment?.(found);\n },\n }),\n [onOpenAppointment],\n );\n\n useAgentRegistration(agendaTrayAgent, handle, id);\n\n return (\n <section\n ref={innerRef}\n aria-label={heading}\n data-component=\"agenda-tray\"\n data-component-id={id}\n className={agendaTrayVariants({ size, className })}\n {...rest}\n >\n <header className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-sm)]\">\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)] ds:min-w-0\">\n <h3 className=\"ds:m-0 ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] type-title-card\">\n <CalendarDays aria-hidden=\"true\" className=\"ds:size-4\" />\n {heading}\n </h3>\n {caption ? (\n <span className=\"type-eyebrow ds:text-[color:var(--muted-foreground)]\">\n {caption}\n </span>\n ) : null}\n </div>\n {onAddAppointment ? (\n <IconButton\n icon={<Plus />}\n intent=\"outline\"\n size=\"sm\"\n aria-label={resolvedAddLabel}\n onClick={onAddAppointment}\n />\n ) : null}\n </header>\n {body}\n </section>\n );\n },\n);\n\nAgendaTray.displayName = 'AgendaTray';\n"],"names":["__iconNode","CalendarDays","createLucideIcon","agendaTrayAgent","handle","args","agendaTrayVariants","cva","AgendaTray","forwardRef","id","items","title","caption","size","onOpenAppointment","onAddAppointment","addLabel","loading","emptyTitle","emptyDescription","className","rest","ref","t","useTranslation","heading","resolvedAddLabel","isEmpty","body","jsx","i","Skeleton","EmptyState","item","AgendaCard","itemsRef","useRef","innerRef","useImperativeHandle","useMemo","targetId","found","useAgentRegistration","jsxs","IconButton","Plus"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
import { jsxs as s, jsx as l } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as z, useId as K, useState as o, useMemo as O, useEffect as X } from "react";
|
|
3
|
-
import { c as Y } from "./index-D2ZczOXr.js";
|
|
4
|
-
import { useTranslation as q } from "react-i18next";
|
|
5
|
-
import { R as _ } from "./radio-TWf9Q-mp.js";
|
|
6
|
-
import { R as J } from "./radio-group-BcF92GEF.js";
|
|
7
|
-
import { F as G } from "./form-field-BOm9hK35.js";
|
|
8
|
-
import { N as p } from "./number-input-Dj5L3pXK.js";
|
|
9
|
-
import { C as Q } from "./chart-DnHvmiDX.js";
|
|
10
|
-
import { B as Z } from "./badge-zsf5i5bH.js";
|
|
11
|
-
const A = 0.45359237, S = 2.54, y = 12, T = (a) => a * A, aa = (a) => a / A, ta = (a) => a * S, la = (a) => a / S;
|
|
12
|
-
function ea(a) {
|
|
13
|
-
const e = la(a), r = Math.floor(e / y);
|
|
14
|
-
return { ft: r, in: e - r * y };
|
|
15
|
-
}
|
|
16
|
-
const $ = (a, e) => ta(a * y + e);
|
|
17
|
-
function ia(a, e) {
|
|
18
|
-
if (a === null || e === null || !Number.isFinite(a) || !Number.isFinite(e) || a <= 0 || e <= 0)
|
|
19
|
-
return null;
|
|
20
|
-
const r = e / 100;
|
|
21
|
-
return a / (r * r);
|
|
22
|
-
}
|
|
23
|
-
function na(a) {
|
|
24
|
-
return a < 18.5 ? "underweight" : a < 25 ? "normal" : a < 30 ? "overweight" : "obese";
|
|
25
|
-
}
|
|
26
|
-
const E = 12, ra = 40;
|
|
27
|
-
function sa(a) {
|
|
28
|
-
const e = (a - E) / (ra - E) * 100;
|
|
29
|
-
return Math.min(100, Math.max(0, e));
|
|
30
|
-
}
|
|
31
|
-
const oa = Y("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
|
|
32
|
-
variants: {
|
|
33
|
-
width: {
|
|
34
|
-
full: "ds:w-full",
|
|
35
|
-
auto: "ds:inline-flex"
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
defaultVariants: { width: "full" }
|
|
39
|
-
}), ca = {
|
|
40
|
-
underweight: "info",
|
|
41
|
-
normal: "success",
|
|
42
|
-
overweight: "warning",
|
|
43
|
-
obese: "error"
|
|
44
|
-
}, h = (a) => Math.round(a * 10) / 10, ma = z(
|
|
45
|
-
({ defaultUnitSystem: a = "metric", onResultChange: e, id: r, width: k, className: H }, L) => {
|
|
46
|
-
const { t, i18n: x } = q(), N = K(), [c, P] = o(a), [b, I] = o(null), [f, F] = o(null), [m, w] = o(null), [u, M] = o(null), [d, B] = o(null), R = (D) => {
|
|
47
|
-
const v = D;
|
|
48
|
-
if (v !== c) {
|
|
49
|
-
if (v === "imperial") {
|
|
50
|
-
if (b !== null) {
|
|
51
|
-
const { ft: W, in: j } = ea(b);
|
|
52
|
-
w(W), M(h(j));
|
|
53
|
-
}
|
|
54
|
-
f !== null && B(h(aa(f)));
|
|
55
|
-
} else
|
|
56
|
-
(m !== null || u !== null) && I(h($(m ?? 0, u ?? 0))), d !== null && F(h(T(d)));
|
|
57
|
-
P(v);
|
|
58
|
-
}
|
|
59
|
-
}, U = c === "metric" ? b : m !== null || u !== null ? $(m ?? 0, u ?? 0) : null, V = c === "metric" ? f : d !== null ? T(d) : null, i = ia(V, U), n = i !== null ? na(i) : null, C = O(
|
|
60
|
-
() => new Intl.NumberFormat(x.language, {
|
|
61
|
-
minimumFractionDigits: 1,
|
|
62
|
-
maximumFractionDigits: 1
|
|
63
|
-
}),
|
|
64
|
-
[x.language]
|
|
65
|
-
);
|
|
66
|
-
X(() => {
|
|
67
|
-
e == null || e(
|
|
68
|
-
i !== null && n !== null ? { bmi: i, category: n } : null
|
|
69
|
-
);
|
|
70
|
-
}, [i, n, e]);
|
|
71
|
-
const g = c === "metric";
|
|
72
|
-
return /* @__PURE__ */ s(
|
|
73
|
-
"div",
|
|
74
|
-
{
|
|
75
|
-
ref: L,
|
|
76
|
-
"data-component": "bmi-calculator",
|
|
77
|
-
"data-component-id": r,
|
|
78
|
-
className: oa({ width: k, className: H }),
|
|
79
|
-
children: [
|
|
80
|
-
/* @__PURE__ */ s(
|
|
81
|
-
J,
|
|
82
|
-
{
|
|
83
|
-
label: t("bmiCalculator.unitSystem.label"),
|
|
84
|
-
variant: "horizontal",
|
|
85
|
-
value: c,
|
|
86
|
-
onValueChange: R,
|
|
87
|
-
children: [
|
|
88
|
-
/* @__PURE__ */ l(_, { label: t("bmiCalculator.unitSystem.metric"), value: "metric" }),
|
|
89
|
-
/* @__PURE__ */ l(
|
|
90
|
-
_,
|
|
91
|
-
{
|
|
92
|
-
label: t("bmiCalculator.unitSystem.imperial"),
|
|
93
|
-
value: "imperial"
|
|
94
|
-
}
|
|
95
|
-
)
|
|
96
|
-
]
|
|
97
|
-
}
|
|
98
|
-
),
|
|
99
|
-
/* @__PURE__ */ s("div", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2", children: [
|
|
100
|
-
g ? /* @__PURE__ */ l(
|
|
101
|
-
G,
|
|
102
|
-
{
|
|
103
|
-
label: `${t("bmiCalculator.height")} (${t("bmiCalculator.units.cm")})`,
|
|
104
|
-
children: /* @__PURE__ */ l(
|
|
105
|
-
p,
|
|
106
|
-
{
|
|
107
|
-
mode: "decimal",
|
|
108
|
-
min: 0,
|
|
109
|
-
step: 0.5,
|
|
110
|
-
value: b,
|
|
111
|
-
onChange: I
|
|
112
|
-
}
|
|
113
|
-
)
|
|
114
|
-
}
|
|
115
|
-
) : /* @__PURE__ */ s("div", { role: "group", "aria-labelledby": N, children: [
|
|
116
|
-
/* @__PURE__ */ l(
|
|
117
|
-
"span",
|
|
118
|
-
{
|
|
119
|
-
id: N,
|
|
120
|
-
className: "type-label ds:mb-[var(--spacing-xs)] ds:block ds:text-foreground",
|
|
121
|
-
children: t("bmiCalculator.height")
|
|
122
|
-
}
|
|
123
|
-
),
|
|
124
|
-
/* @__PURE__ */ s("div", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-sm)]", children: [
|
|
125
|
-
/* @__PURE__ */ l(
|
|
126
|
-
p,
|
|
127
|
-
{
|
|
128
|
-
mode: "integer",
|
|
129
|
-
min: 0,
|
|
130
|
-
value: m,
|
|
131
|
-
onChange: w,
|
|
132
|
-
"aria-label": t("bmiCalculator.feet")
|
|
133
|
-
}
|
|
134
|
-
),
|
|
135
|
-
/* @__PURE__ */ l("span", { className: "type-label ds:text-muted-foreground", children: t("bmiCalculator.units.ft") }),
|
|
136
|
-
/* @__PURE__ */ l(
|
|
137
|
-
p,
|
|
138
|
-
{
|
|
139
|
-
mode: "decimal",
|
|
140
|
-
min: 0,
|
|
141
|
-
max: 11.9,
|
|
142
|
-
step: 0.5,
|
|
143
|
-
value: u,
|
|
144
|
-
onChange: M,
|
|
145
|
-
"aria-label": t("bmiCalculator.inches")
|
|
146
|
-
}
|
|
147
|
-
),
|
|
148
|
-
/* @__PURE__ */ l("span", { className: "type-label ds:text-muted-foreground", children: t("bmiCalculator.units.in") })
|
|
149
|
-
] })
|
|
150
|
-
] }),
|
|
151
|
-
/* @__PURE__ */ l(
|
|
152
|
-
G,
|
|
153
|
-
{
|
|
154
|
-
label: `${t("bmiCalculator.weight")} (${t(
|
|
155
|
-
g ? "bmiCalculator.units.kg" : "bmiCalculator.units.lb"
|
|
156
|
-
)})`,
|
|
157
|
-
children: /* @__PURE__ */ l(
|
|
158
|
-
p,
|
|
159
|
-
{
|
|
160
|
-
mode: "decimal",
|
|
161
|
-
min: 0,
|
|
162
|
-
step: g ? 0.1 : 0.5,
|
|
163
|
-
value: g ? f : d,
|
|
164
|
-
onChange: g ? F : B
|
|
165
|
-
}
|
|
166
|
-
)
|
|
167
|
-
}
|
|
168
|
-
)
|
|
169
|
-
] }),
|
|
170
|
-
/* @__PURE__ */ l("p", { className: "ds:sr-only", role: "status", "aria-live": "polite", children: i !== null && n !== null ? t("bmiCalculator.gaugeAria", {
|
|
171
|
-
bmi: C.format(i),
|
|
172
|
-
category: t(`bmiCalculator.category.${n}`)
|
|
173
|
-
}) : "" }),
|
|
174
|
-
i !== null && n !== null ? /* @__PURE__ */ s("div", { className: "ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-md)] ds:sm:flex-row ds:sm:items-center ds:sm:gap-[var(--spacing-lg)]", children: [
|
|
175
|
-
/* @__PURE__ */ l(
|
|
176
|
-
Q,
|
|
177
|
-
{
|
|
178
|
-
type: "radialBar",
|
|
179
|
-
title: t("bmiCalculator.gaugeAria", {
|
|
180
|
-
bmi: C.format(i),
|
|
181
|
-
category: t(`bmiCalculator.category.${n}`)
|
|
182
|
-
}),
|
|
183
|
-
series: [sa(i)],
|
|
184
|
-
labels: [t(`bmiCalculator.category.${n}`)],
|
|
185
|
-
radialValueFormatter: () => C.format(i),
|
|
186
|
-
height: 240,
|
|
187
|
-
width: 240
|
|
188
|
-
}
|
|
189
|
-
),
|
|
190
|
-
/* @__PURE__ */ s("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
|
|
191
|
-
/* @__PURE__ */ l("span", { className: "type-label ds:text-muted-foreground", children: t("bmiCalculator.category.label") }),
|
|
192
|
-
/* @__PURE__ */ l(Z, { variant: ca[n], size: "lg", children: t(`bmiCalculator.category.${n}`) }),
|
|
193
|
-
/* @__PURE__ */ l("p", { className: "type-body ds:text-muted-foreground", children: t(`bmiCalculator.range.${n}`) })
|
|
194
|
-
] })
|
|
195
|
-
] }) : /* @__PURE__ */ l("p", { className: "type-body ds:text-muted-foreground", children: t("bmiCalculator.empty") })
|
|
196
|
-
]
|
|
197
|
-
}
|
|
198
|
-
);
|
|
199
|
-
}
|
|
200
|
-
);
|
|
201
|
-
ma.displayName = "BmiCalculator";
|
|
202
|
-
export {
|
|
203
|
-
ma as B,
|
|
204
|
-
sa as a,
|
|
205
|
-
na as b,
|
|
206
|
-
ea as c,
|
|
207
|
-
la as d,
|
|
208
|
-
ia as e,
|
|
209
|
-
$ as f,
|
|
210
|
-
ta as i,
|
|
211
|
-
aa as k,
|
|
212
|
-
T as l
|
|
213
|
-
};
|
|
214
|
-
//# sourceMappingURL=bmi-calculator-DQD5_nE-.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bmi-calculator-DQD5_nE-.js","sources":["../../src/components/bmi-calculator/bmi.ts","../../src/components/bmi-calculator/bmi-calculator.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* BMI maths + unit conversion — pure, framework-free, unit-testable. */\n/* */\n/* Kept separate from the component so the clinical formulae can be */\n/* tested in isolation and reused by consumers without pulling React. */\n/* ------------------------------------------------------------------ */\n\nexport type UnitSystem = 'metric' | 'imperial';\n\n/** WHO adult BMI categories (kg/m²). Order = ascending BMI. */\nexport type BmiCategory = 'underweight' | 'normal' | 'overweight' | 'obese';\n\n/* ---- exact conversion constants -------------------------------------- */\n/** 1 lb = 0.45359237 kg (international avoirdupois pound, exact). */\nexport const KG_PER_LB = 0.45359237;\n/** 1 inch = 2.54 cm (exact). */\nexport const CM_PER_IN = 2.54;\n/** Inches per foot. */\nexport const IN_PER_FT = 12;\n\nexport const lbToKg = (lb: number): number => lb * KG_PER_LB;\nexport const kgToLb = (kg: number): number => kg / KG_PER_LB;\nexport const inToCm = (inches: number): number => inches * CM_PER_IN;\nexport const cmToIn = (cm: number): number => cm / CM_PER_IN;\n\n/** Split a height in centimetres into whole feet + remaining inches. */\nexport function cmToFtIn(cm: number): { ft: number; in: number } {\n const totalInches = cmToIn(cm);\n const ft = Math.floor(totalInches / IN_PER_FT);\n return { ft, in: totalInches - ft * IN_PER_FT };\n}\n\n/** Combine feet + inches into centimetres. */\nexport const ftInToCm = (ft: number, inches: number): number =>\n inToCm(ft * IN_PER_FT + inches);\n\n/* ---- BMI ------------------------------------------------------------- */\n\n/**\n * Body mass index in kg/m². Returns `null` when either input is missing or\n * non-positive (height of 0 would divide by zero).\n */\nexport function computeBmi(\n weightKg: number | null,\n heightCm: number | null,\n): number | null {\n if (\n weightKg === null ||\n heightCm === null ||\n !Number.isFinite(weightKg) ||\n !Number.isFinite(heightCm) ||\n weightKg <= 0 ||\n heightCm <= 0\n ) {\n return null;\n }\n const heightM = heightCm / 100;\n return weightKg / (heightM * heightM);\n}\n\n/** WHO adult cut-offs. Boundaries follow WHO: <18.5, <25, <30, ≥30. */\nexport function bmiCategory(bmi: number): BmiCategory {\n if (bmi < 18.5) return 'underweight';\n if (bmi < 25) return 'normal';\n if (bmi < 30) return 'overweight';\n return 'obese';\n}\n\n/**\n * Clinically meaningful display range for the gauge arc. Values below/above\n * are clamped so the ring still reads. 12–40 spans severe-thinness through\n * obesity without wasting the dial on impossible extremes.\n */\nexport const BMI_GAUGE_MIN = 12;\nexport const BMI_GAUGE_MAX = 40;\n\n/** Map a BMI onto a 0–100 arc-fill percent for the radialBar gauge. */\nexport function bmiToGaugePercent(bmi: number): number {\n const pct = ((bmi - BMI_GAUGE_MIN) / (BMI_GAUGE_MAX - BMI_GAUGE_MIN)) * 100;\n return Math.min(100, Math.max(0, pct));\n}\n","/* ------------------------------------------------------------------ */\n/* BmiCalculator — height + weight → WHO body-mass-index, shown on a */\n/* radialBar gauge. */\n/* */\n/* - Maths + unit conversion live in `./bmi` (pure, separately tested). */\n/* - Metric ⇄ imperial toggle persists the entered figures across the */\n/* switch by converting them (a patient measured in lb/ft doesn't */\n/* lose their numbers when a clinician flips to kg/cm). */\n/* - The gauge reuses the kit `Chart` (radialBar). Because ApexCharts */\n/* reads a radialBar series value as a 0–100 percent, the arc is fed */\n/* the BMI mapped onto the clinical 12–40 span and the true BMI is */\n/* printed in the centre via `radialValueFormatter`. */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useId, 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 { NumberInput } from '../number-input';\nimport { Chart } from '../chart';\nimport { Badge } from '../badge';\nimport {\n type UnitSystem,\n type BmiCategory,\n computeBmi,\n bmiCategory,\n bmiToGaugePercent,\n cmToFtIn,\n ftInToCm,\n kgToLb,\n lbToKg,\n} from './bmi';\n\n/* ------------------------------------------------------------------ */\n/* Result payload emitted to consumers */\n/* ------------------------------------------------------------------ */\n\nexport interface BmiResult {\n /** BMI in kg/m². */\n bmi: number;\n /** WHO category the BMI falls into. */\n category: BmiCategory;\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst rootVariants = cva('ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]', {\n variants: {\n width: {\n full: 'ds:w-full',\n auto: 'ds:inline-flex',\n },\n },\n defaultVariants: { width: 'full' },\n});\n\n/* ------------------------------------------------------------------ */\n/* Category → semantic intent for the Stat headline */\n/* ------------------------------------------------------------------ */\n\nconst CATEGORY_BADGE: Record<\n BmiCategory,\n 'info' | 'success' | 'warning' | 'error'\n> = {\n underweight: 'info',\n normal: 'success',\n overweight: 'warning',\n obese: 'error',\n};\n\nexport interface BmiCalculatorProps extends VariantProps<typeof rootVariants> {\n /** Initial unit system. Defaults to `'metric'`. */\n defaultUnitSystem?: UnitSystem;\n /** Fires whenever a valid BMI can be computed (and with `null` when it can't). */\n onResultChange?: (result: BmiResult | null) => 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\n/** Round to one decimal place — used when seeding a unit-switch. */\nconst round1 = (n: number): number => Math.round(n * 10) / 10;\n\nexport const BmiCalculator = forwardRef<HTMLDivElement, BmiCalculatorProps>(\n (\n { defaultUnitSystem = 'metric', onResultChange, id, width, className },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const heightGroupId = useId();\n\n const [unitSystem, setUnitSystem] = useState<UnitSystem>(defaultUnitSystem);\n\n // Raw per-system inputs. Metric is canonical for cm/kg; imperial keeps\n // ft + in + lb so typing isn't fought by rounding round-trips.\n const [heightCm, setHeightCm] = useState<number | null>(null);\n const [weightKg, setWeightKg] = useState<number | null>(null);\n const [heightFt, setHeightFt] = useState<number | null>(null);\n const [heightIn, setHeightIn] = useState<number | null>(null);\n const [weightLb, setWeightLb] = useState<number | null>(null);\n\n const handleUnitChange = (next: string): void => {\n const target = next as UnitSystem;\n if (target === unitSystem) return;\n if (target === 'imperial') {\n if (heightCm !== null) {\n const { ft, in: inches } = cmToFtIn(heightCm);\n setHeightFt(ft);\n setHeightIn(round1(inches));\n }\n if (weightKg !== null) setWeightLb(round1(kgToLb(weightKg)));\n } else {\n if (heightFt !== null || heightIn !== null) {\n setHeightCm(round1(ftInToCm(heightFt ?? 0, heightIn ?? 0)));\n }\n if (weightLb !== null) setWeightKg(round1(lbToKg(weightLb)));\n }\n setUnitSystem(target);\n };\n\n /* Canonical metric figures for the active system. */\n const canonicalHeightCm =\n unitSystem === 'metric'\n ? heightCm\n : heightFt !== null || heightIn !== null\n ? ftInToCm(heightFt ?? 0, heightIn ?? 0)\n : null;\n const canonicalWeightKg =\n unitSystem === 'metric'\n ? weightKg\n : weightLb !== null\n ? lbToKg(weightLb)\n : null;\n\n const bmi = computeBmi(canonicalWeightKg, canonicalHeightCm);\n const category = bmi !== null ? bmiCategory(bmi) : null;\n\n const bmiFormatter = useMemo(\n () =>\n new Intl.NumberFormat(i18n.language, {\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n }),\n [i18n.language],\n );\n\n // Notify consumers without re-firing on unrelated re-renders.\n useEffect(() => {\n onResultChange?.(\n bmi !== null && category !== null ? { bmi, category } : null,\n );\n }, [bmi, category, onResultChange]);\n\n const isMetric = unitSystem === 'metric';\n\n return (\n <div\n ref={ref}\n data-component=\"bmi-calculator\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <RadioGroup\n label={t('bmiCalculator.unitSystem.label')}\n variant=\"horizontal\"\n value={unitSystem}\n onValueChange={handleUnitChange}\n >\n <Radio label={t('bmiCalculator.unitSystem.metric')} value=\"metric\" />\n <Radio\n label={t('bmiCalculator.unitSystem.imperial')}\n value=\"imperial\"\n />\n </RadioGroup>\n\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-2\">\n {isMetric ? (\n <FormField\n label={`${t('bmiCalculator.height')} (${t('bmiCalculator.units.cm')})`}\n >\n <NumberInput\n mode=\"decimal\"\n min={0}\n step={0.5}\n value={heightCm}\n onChange={setHeightCm}\n />\n </FormField>\n ) : (\n <div role=\"group\" aria-labelledby={heightGroupId}>\n <span\n id={heightGroupId}\n className=\"type-label ds:mb-[var(--spacing-xs)] ds:block ds:text-foreground\"\n >\n {t('bmiCalculator.height')}\n </span>\n <div className=\"ds:flex ds:items-center ds:gap-[var(--spacing-sm)]\">\n <NumberInput\n mode=\"integer\"\n min={0}\n value={heightFt}\n onChange={setHeightFt}\n aria-label={t('bmiCalculator.feet')}\n />\n <span className=\"type-label ds:text-muted-foreground\">\n {t('bmiCalculator.units.ft')}\n </span>\n <NumberInput\n mode=\"decimal\"\n min={0}\n max={11.9}\n step={0.5}\n value={heightIn}\n onChange={setHeightIn}\n aria-label={t('bmiCalculator.inches')}\n />\n <span className=\"type-label ds:text-muted-foreground\">\n {t('bmiCalculator.units.in')}\n </span>\n </div>\n </div>\n )}\n\n <FormField\n label={`${t('bmiCalculator.weight')} (${t(\n isMetric ? 'bmiCalculator.units.kg' : 'bmiCalculator.units.lb',\n )})`}\n >\n <NumberInput\n mode=\"decimal\"\n min={0}\n step={isMetric ? 0.1 : 0.5}\n value={isMetric ? weightKg : weightLb}\n onChange={isMetric ? setWeightKg : setWeightLb}\n />\n </FormField>\n </div>\n\n {/* Concise polite announcement when the result resolves — the gauge\n itself stays out of the live region to avoid re-reading on every\n keystroke. */}\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {bmi !== null && category !== null\n ? t('bmiCalculator.gaugeAria', {\n bmi: bmiFormatter.format(bmi),\n category: t(`bmiCalculator.category.${category}`),\n })\n : ''}\n </p>\n\n {bmi !== null && category !== null ? (\n <div className=\"ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-md)] ds:sm:flex-row ds:sm:items-center ds:sm:gap-[var(--spacing-lg)]\">\n <Chart\n type=\"radialBar\"\n title={t('bmiCalculator.gaugeAria', {\n bmi: bmiFormatter.format(bmi),\n category: t(`bmiCalculator.category.${category}`),\n })}\n series={[bmiToGaugePercent(bmi)]}\n labels={[t(`bmiCalculator.category.${category}`)]}\n radialValueFormatter={() => bmiFormatter.format(bmi)}\n height={240}\n width={240}\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('bmiCalculator.category.label')}\n </span>\n <Badge variant={CATEGORY_BADGE[category]} size=\"lg\">\n {t(`bmiCalculator.category.${category}`)}\n </Badge>\n <p className=\"type-body ds:text-muted-foreground\">\n {t(`bmiCalculator.range.${category}`)}\n </p>\n </div>\n </div>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('bmiCalculator.empty')}\n </p>\n )}\n </div>\n );\n },\n);\n\nBmiCalculator.displayName = 'BmiCalculator';\n"],"names":["KG_PER_LB","CM_PER_IN","IN_PER_FT","lbToKg","lb","kgToLb","kg","inToCm","inches","cmToIn","cm","cmToFtIn","totalInches","ft","ftInToCm","computeBmi","weightKg","heightCm","heightM","bmiCategory","bmi","BMI_GAUGE_MIN","BMI_GAUGE_MAX","bmiToGaugePercent","pct","rootVariants","cva","CATEGORY_BADGE","round1","n","BmiCalculator","forwardRef","defaultUnitSystem","onResultChange","id","width","className","ref","i18n","useTranslation","heightGroupId","useId","unitSystem","setUnitSystem","useState","setHeightCm","setWeightKg","heightFt","setHeightFt","heightIn","setHeightIn","weightLb","setWeightLb","handleUnitChange","next","target","canonicalHeightCm","canonicalWeightKg","category","bmiFormatter","useMemo","useEffect","isMetric","jsxs","RadioGroup","jsx","Radio","FormField","NumberInput","Chart","Badge"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chart-DnHvmiDX.js","sources":["../../src/components/chart/chart.agent.ts","../../src/components/chart/chart.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { ChartHandle } from './chart';\n\nexport const chartAgent: AgentAdapter<ChartHandle> = {\n id: 'chart',\n capabilities: [],\n state: {},\n actions: {\n update_series: {\n safety: 'read',\n argsType: 'series',\n description: 'Replace the chart series without remounting.',\n invoke: (\n handle,\n args: { series: Parameters<ChartHandle['updateSeries']>[0] },\n ) => {\n handle.updateSeries(args.series);\n },\n },\n export_png: {\n safety: 'read',\n description:\n 'Return a PNG data URI of the chart for export or screenshotting.',\n invoke: (handle) => handle.dataURI(),\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'chart' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","/* ------------------------------------------------------------------ */\n/* Chart — thin, typed wrapper over ApexCharts (react-apexcharts). */\n/* */\n/* - All chrome, colours, and fonts flow from */\n/* `src/tokens/apexcharts-theme.ts` — never hex literals in user */\n/* code. A MutationObserver on `<html class>` re-reads the bridge so */\n/* theme changes repaint without remount. */\n/* - A ResizeObserver on the wrapper keeps the chart responsive */\n/* without listening on `window.resize`. */\n/* - Accessibility: the wrapper carries `role=\"img\"` + `aria-label` */\n/* (required `title` prop) + `aria-describedby` pointing at a */\n/* visually-hidden `<table>` that mirrors series × categories. */\n/* - Colour-blind users: `patterns` prop flips `fill.type` to pattern */\n/* using ApexCharts' built-in pattern presets. */\n/* - Numbers format via `Intl.NumberFormat(locale)` — no hand-rolled */\n/* `toFixed()`. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\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 ReactApexChart from 'react-apexcharts';\nimport ApexCharts from 'apexcharts';\nimport { getApexChartsTheme } from '../../tokens/apexcharts-theme';\nimport { usePrefersReducedMotion } from '../../hooks';\nimport { useNeutraliseHiddenFocus } from '../_shared/use-neutralize-hidden-focus';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { chartAgent } from './chart.agent';\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst chartVariants = cva('ds:relative ds:block ds:w-full', {\n variants: {\n density: {\n compact: 'ds:min-h-[var(--chart-min-height-compact)]',\n comfortable: 'ds:min-h-[var(--chart-min-height-comfortable)]',\n },\n },\n defaultVariants: { density: 'comfortable' },\n});\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport type ChartType = 'line' | 'bar' | 'pie' | 'donut' | 'area' | 'radialBar';\n\nexport interface ChartSeries {\n name: string;\n data: number[];\n}\n\nexport interface ChartProps extends VariantProps<typeof chartVariants> {\n /** Required — drives aria-label and sr-only table caption. */\n title: string;\n /** Opaque instance id — emitted as `data-component-id` for the agent registry. */\n id?: string;\n /** Chart visual type. */\n type: ChartType;\n /**\n * For `line` / `bar` / `area`: an array of `ChartSeries`.\n * For `pie` / `donut` / `radialBar`: an array of numbers matched to `labels`.\n */\n series: ChartSeries[] | number[];\n /** Category axis labels (line / bar / area). */\n categories?: string[];\n /** Slice labels (pie / donut / radialBar). */\n labels?: string[];\n /** Height override. Defaults to 320px. */\n height?: number | string;\n /** Width override. Defaults to 100% of container. */\n width?: number | string;\n /** Opt-in pattern fills for colour-blind users. */\n patterns?: boolean;\n /** Show the ApexCharts toolbar. Defaults to false. */\n toolbar?: boolean;\n /** Locale override — defaults to the active i18next language. */\n locale?: string;\n /**\n * radialBar only. Formats the value printed in the ring centre. Use when the\n * gauge represents a non-percentage figure: pass the arc fill (0–100) as the\n * single `series` value and return the real figure here (e.g. `(_, ) => '22.4'`).\n * Ignored for every other chart type. Defaults to ApexCharts' `${value}%`.\n */\n radialValueFormatter?: (value: number) => string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\nexport interface ChartHandle {\n /** Returns a PNG data URI for the chart. */\n dataURI: () => Promise<string>;\n /** Updates series without remounting. */\n updateSeries: (next: ChartProps['series']) => void;\n}\n\n/* ------------------------------------------------------------------ */\n/* Constants */\n/* ------------------------------------------------------------------ */\n\nconst PATTERN_STYLES = [\n 'verticalLines',\n 'horizontalLines',\n 'slantedLines',\n 'squares',\n 'circles',\n] as const;\n\n/** Types where `categories` belong on an x-axis. */\nconst CATEGORICAL_TYPES: ReadonlyArray<ChartType> = ['line', 'bar', 'area'];\n\n/** Types where `series` is a flat `number[]` paired with `labels`. */\nconst SLICE_TYPES: ReadonlyArray<ChartType> = ['pie', 'donut', 'radialBar'];\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nfunction isSliceType(type: ChartType): boolean {\n return SLICE_TYPES.includes(type);\n}\n\nfunction isCategoricalType(type: ChartType): boolean {\n return CATEGORICAL_TYPES.includes(type);\n}\n\n/** Coerce `series` into `ChartSeries[]` for shared logic (table, aria). */\nfunction normaliseSeries(\n series: ChartSeries[] | number[],\n type: ChartType,\n): ChartSeries[] {\n if (isSliceType(type)) {\n const nums = series as number[];\n return [\n {\n name: '',\n data: nums,\n },\n ];\n }\n return series as ChartSeries[];\n}\n\n/* ------------------------------------------------------------------ */\n/* Chart component */\n/* ------------------------------------------------------------------ */\n\nexport const Chart = forwardRef<ChartHandle, ChartProps>(\n (\n {\n title,\n id,\n type,\n series,\n categories,\n labels,\n height,\n width,\n patterns = false,\n toolbar = false,\n locale: localeProp,\n radialValueFormatter,\n density,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const rawId = useId();\n const chartId = useMemo(\n () => `chart-${rawId.replace(/[^a-zA-Z0-9-_]/g, '')}`,\n [rawId],\n );\n const summaryId = `${chartId}-summary`;\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState(0);\n\n /* ApexCharts injects focusable canvases inside the `aria-hidden` */\n /* chart wrapper. Neutralise their tabindex so axe's */\n /* `aria-hidden-focus` rule passes. Same hook used in Sparkline. */\n useNeutraliseHiddenFocus(wrapperRef);\n\n const locale = localeProp ?? i18n.language ?? 'en';\n\n /* ---- dev warning if title missing ------------------------------ */\n if (import.meta.env.DEV && !title) {\n console.warn(\n 'Chart: `title` prop is required. It drives aria-label and the screen-reader summary table.',\n );\n }\n\n /* ---- theme-reactive state -------------------------------------- */\n const [themeOptions, setThemeOptions] = useState<ApexCharts.ApexOptions>(\n () => {\n try {\n return getApexChartsTheme();\n } catch {\n return {};\n }\n },\n );\n\n /* ---- MutationObserver: re-read theme on class change ------------ */\n useEffect(() => {\n if (typeof document === 'undefined') return undefined;\n let timer: ReturnType<typeof setTimeout>;\n const observer = new MutationObserver(() => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n try {\n setThemeOptions(getApexChartsTheme());\n } catch {\n /* no-op in non-browser environments */\n }\n }, 50);\n });\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n return () => {\n clearTimeout(timer);\n observer.disconnect();\n };\n }, []);\n\n /* ---- ResizeObserver: track container width --------------------- */\n useEffect(() => {\n const el = wrapperRef.current;\n if (!el || typeof ResizeObserver === 'undefined') return undefined;\n const ro = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) setContainerWidth(Math.floor(entry.contentRect.width));\n });\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n /* ---- imperative handle ----------------------------------------- */\n const agentHandle = useMemo<ChartHandle>(\n () => ({\n async dataURI(): Promise<string> {\n const instance = ApexCharts.getChartByID(chartId);\n if (!instance) return '';\n const result = await instance.dataURI();\n return (result as { imgURI: string }).imgURI;\n },\n updateSeries(next) {\n const instance = ApexCharts.getChartByID(chartId);\n if (!instance) return;\n if (isSliceType(type)) {\n instance.updateSeries(next as number[]);\n } else {\n instance.updateSeries(next as ChartSeries[]);\n }\n },\n }),\n [chartId, type],\n );\n useImperativeHandle(ref, () => agentHandle, [agentHandle]);\n useAgentRegistration(chartAgent, agentHandle, id);\n\n /* ---- RTL detection --------------------------------------------- */\n const isRtl =\n typeof document !== 'undefined' && document.documentElement.dir === 'rtl';\n\n /* ---- normalised series for sr-only table ----------------------- */\n const tableSeries = useMemo(\n () => normaliseSeries(series, type),\n [series, type],\n );\n\n /* ---- Intl formatter -------------------------------------------- */\n const numberFormatter = useMemo(\n () => new Intl.NumberFormat(locale),\n [locale],\n );\n\n /* ---- toolbar localisation -------------------------------------- */\n const toolbarLocale = useMemo(\n () => ({\n name: locale,\n options: {\n toolbar: {\n download: t('chart.toolbar.download'),\n selection: t('chart.toolbar.selection'),\n selectionZoom: t('chart.toolbar.selectionZoom'),\n zoomIn: t('chart.toolbar.zoomIn'),\n zoomOut: t('chart.toolbar.zoomOut'),\n pan: t('chart.toolbar.pan'),\n reset: t('chart.toolbar.reset'),\n exportToSVG: t('chart.toolbar.exportToSVG'),\n exportToPNG: t('chart.toolbar.exportToPNG'),\n exportToCSV: t('chart.toolbar.exportToCSV'),\n },\n },\n }),\n [locale, t],\n );\n\n /* ---- build ApexOptions ----------------------------------------- */\n const reducedMotion = usePrefersReducedMotion();\n\n const chartOptions: ApexCharts.ApexOptions = useMemo(() => {\n const base = themeOptions;\n\n const options: ApexCharts.ApexOptions = {\n ...base,\n chart: {\n ...base.chart,\n id: chartId,\n toolbar: { show: toolbar },\n zoom: { enabled: toolbar },\n animations: {\n enabled: !reducedMotion,\n dynamicAnimation: { enabled: !reducedMotion },\n },\n locales: [toolbarLocale],\n defaultLocale: locale,\n parentHeightOffset: 0,\n },\n labels: labels,\n legend: {\n ...base.legend,\n position: 'bottom',\n // ApexCharts legend.horizontalAlign is a physical prop mapped internally\n // to the chart's own text flow. For RTL we flip via `yaxis.opposite`\n // and ApexCharts' own `direction: 'rtl'` handling; legend stays anchored\n // to the inline-start by asking for 'left' on LTR and 'right' on RTL.\n horizontalAlign: isRtl ? 'right' : 'left',\n fontFamily: 'inherit',\n },\n tooltip: {\n ...base.tooltip,\n y: {\n formatter: (value: number) => numberFormatter.format(value),\n },\n },\n noData: {\n text: t('chart.noData'),\n },\n };\n\n if (isCategoricalType(type)) {\n options.xaxis = {\n ...base.xaxis,\n categories: categories ?? [],\n };\n options.yaxis = {\n ...base.yaxis,\n opposite: isRtl,\n labels: {\n formatter: (value: number) => numberFormatter.format(value),\n },\n };\n options.stroke = {\n curve: 'smooth',\n width: type === 'bar' ? 0 : 2,\n };\n options.dataLabels = { enabled: false };\n }\n\n if (type === 'radialBar' && radialValueFormatter) {\n // ApexCharts treats a radialBar series value as a 0–100 percent and\n // renders it verbatim in the ring centre. When the displayed value is\n // NOT a percentage (e.g. a BMI), the consumer scales the series to a\n // percent for the arc and supplies `radialValueFormatter` to print the\n // real value in the centre. Without this, the gauge would read \"56%\"\n // for a BMI of 22.4 — misleading. Default behaviour is untouched.\n const basePlot = (base.plotOptions ?? {}) as NonNullable<\n ApexCharts.ApexOptions['plotOptions']\n >;\n options.plotOptions = {\n ...basePlot,\n radialBar: {\n ...(basePlot.radialBar ?? {}),\n dataLabels: {\n ...(basePlot.radialBar?.dataLabels ?? {}),\n value: {\n ...(basePlot.radialBar?.dataLabels?.value ?? {}),\n formatter: (val: number) => radialValueFormatter(Number(val)),\n },\n },\n },\n };\n }\n\n if (patterns) {\n options.fill = {\n type: 'pattern',\n opacity: type === 'area' ? 0.3 : 1,\n pattern: {\n style: [...PATTERN_STYLES],\n strokeWidth: 2,\n },\n };\n } else if (type === 'area') {\n options.fill = {\n type: 'gradient',\n opacity: 0.3,\n };\n }\n\n return options;\n }, [\n themeOptions,\n chartId,\n toolbar,\n reducedMotion,\n toolbarLocale,\n locale,\n labels,\n numberFormatter,\n t,\n type,\n categories,\n isRtl,\n patterns,\n radialValueFormatter,\n ]);\n\n /* ---- resolved dimensions --------------------------------------- */\n const resolvedWidth =\n width ?? (containerWidth > 0 ? containerWidth : '100%');\n const resolvedHeight = height ?? 320;\n\n /* ---- sr-only data table --------------------------------------- */\n const srTable = useMemo(() => {\n const columnLabels = isSliceType(type)\n ? (labels ?? [])\n : (categories ?? []);\n const rows = tableSeries;\n return (\n <table id={summaryId} className=\"ds:sr-only\">\n <caption>{title}</caption>\n <thead>\n <tr>\n <th scope=\"col\">{t('chart.table.series')}</th>\n {columnLabels.map((col, i) => (\n <th key={`${col}-${i}`} scope=\"col\">\n {col}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((row, rowIndex) => (\n <tr key={`${row.name}-${rowIndex}`}>\n <th scope=\"row\">{row.name || t('chart.table.value')}</th>\n {row.data.map((value, colIndex) => (\n <td key={`${rowIndex}-${colIndex}`}>\n {/* For a radialBar gauge the series is a synthetic arc\n percent — announce the consumer's display value (e.g.\n the real BMI) instead of the raw fill so AT users get\n the same figure sighted users see in the ring. */}\n {type === 'radialBar' && radialValueFormatter\n ? radialValueFormatter(value)\n : numberFormatter.format(value)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n );\n }, [\n type,\n tableSeries,\n labels,\n categories,\n summaryId,\n title,\n t,\n numberFormatter,\n radialValueFormatter,\n ]);\n\n /* ---- ApexCharts `series` prop shape ----------------------------- */\n const apexSeries = useMemo(() => {\n if (isSliceType(type)) {\n return series as number[];\n }\n return series as ChartSeries[];\n }, [series, type]);\n\n return (\n <div\n ref={wrapperRef}\n role=\"img\"\n aria-label={title}\n aria-describedby={summaryId}\n className={chartVariants({ density, className })}\n data-component=\"chart\"\n data-component-id={id}\n >\n {srTable}\n <ReactApexChart\n type={type}\n series={apexSeries as ApexCharts.ApexOptions['series']}\n options={chartOptions}\n width={resolvedWidth}\n height={resolvedHeight}\n aria-hidden=\"true\"\n />\n </div>\n );\n },\n);\n\nChart.displayName = 'Chart';\n\n/* ------------------------------------------------------------------ */\n/* Re-export internal helper for downstream theming (kept narrow). */\n/* ------------------------------------------------------------------ */\n\nexport { chartVariants };\n"],"names":["chartAgent","handle","args","chartVariants","cva","PATTERN_STYLES","CATEGORICAL_TYPES","SLICE_TYPES","isSliceType","type","isCategoricalType","normaliseSeries","series","Chart","forwardRef","title","id","categories","labels","height","width","patterns","toolbar","localeProp","radialValueFormatter","density","className","ref","t","i18n","useTranslation","rawId","useId","chartId","useMemo","summaryId","wrapperRef","useRef","containerWidth","setContainerWidth","useState","useNeutraliseHiddenFocus","locale","themeOptions","setThemeOptions","getApexChartsTheme","useEffect","timer","observer","el","ro","entries","entry","agentHandle","instance","ApexCharts","next","useImperativeHandle","useAgentRegistration","isRtl","tableSeries","numberFormatter","toolbarLocale","reducedMotion","usePrefersReducedMotion","chartOptions","base","options","value","basePlot","_a","_c","_b","val","resolvedWidth","resolvedHeight","srTable","columnLabels","rows","jsx","jsxs","col","i","row","rowIndex","colIndex","apexSeries","ReactApexChart"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chat-message-D53_fH2w.js","sources":["../../node_modules/lucide-react/dist/esm/icons/rotate-ccw.js","../../src/components/chat-message/chat-message.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 [\"path\", { d: \"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\", key: \"1357e3\" }],\n [\"path\", { d: \"M3 3v5h5\", key: \"1xhq8a\" }]\n];\nconst RotateCcw = createLucideIcon(\"rotate-ccw\", __iconNode);\n\nexport { __iconNode, RotateCcw as default };\n//# sourceMappingURL=rotate-ccw.js.map\n","import {\n forwardRef,\n Fragment,\n useMemo,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { AlertCircle, Check, Clock, RotateCcw } from 'lucide-react';\nimport { Button } from '../button';\nimport { Avatar } from '../avatar';\nimport { Timestamp } from '../timestamp';\nimport { safeImageSrc } from '../_shared';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport type ChatMessageRole = 'user' | 'assistant' | 'system';\nexport type ChatMessageStatus = 'sending' | 'sent' | 'error' | 'edited';\n\nexport interface ChatMessageAvatar {\n name?: string;\n src?: string;\n /**\n * Optional custom avatar node. When provided, it REPLACES the built-in\n * `<Avatar>` (initials / image) for this message. Used by the Alia\n * pattern to render a Sparkles identity tile instead of an avatar, and\n * by consumers that want to swap in a user-icon chip, brand glyph, etc.\n * The caller is responsible for accessible labelling on the custom node\n * — ChatMessage's own `aria-label` already announces the role/time, so\n * purely decorative nodes can be `aria-hidden`.\n */\n slot?: ReactNode;\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst rowVariants = cva(\n 'ds:flex ds:w-full ds:items-start ds:gap-[var(--spacing-sm)]',\n {\n variants: {\n role: {\n user: 'ds:flex-row-reverse',\n assistant: 'ds:flex-row',\n system: 'ds:flex-col ds:items-center ds:text-center',\n },\n },\n defaultVariants: { role: 'assistant' },\n },\n);\n\nconst bubbleVariants = cva(\n [\n // Cap at 42rem on wide surfaces; on narrow docks (Alia sidebar ≈22rem)\n // leave room for the avatar column (size-8 = 32px = --spacing-xl) +\n // `gap-sm` (8px = --spacing-sm) so avatars don't clip off the inline\n // edge when the row is width-constrained.\n 'ds:relative ds:max-w-[min(42rem,calc(100%-var(--spacing-xl)-var(--spacing-sm)))]',\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]',\n 'ds:pt-[var(--spacing-sm)] ds:pb-[var(--spacing-sm)]',\n 'type-body',\n 'ds:break-words',\n ].join(' '),\n {\n variants: {\n role: {\n user: 'ds:bg-[color:var(--primary)] ds:text-[color:var(--primary-foreground)] ds:rounded-[var(--radius-md)] ds:rounded-ee-[var(--radius-sm)]',\n assistant:\n 'ds:bg-muted/40 ds:text-foreground ds:rounded-[var(--radius-md)] ds:rounded-es-[var(--radius-sm)]',\n system:\n 'ds:bg-transparent ds:text-[color:var(--muted-foreground)] type-body-sm ds:italic',\n },\n },\n defaultVariants: { role: 'assistant' },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Safe markdown-ish (bold, inline code, line-breaks, links as text) */\n/* No dangerouslySetInnerHTML. */\n/* ------------------------------------------------------------------ */\n\ntype Token =\n | { type: 'text'; value: string }\n | { type: 'bold'; value: string }\n | { type: 'code'; value: string }\n | { type: 'br' }\n | { type: 'link'; label: string; href: string };\n\nconst SAFE_SCHEMES = /^(https?:|mailto:)/i;\n\nfunction tokenize(input: string): Token[] {\n const tokens: Token[] = [];\n let remaining = input;\n const pattern = /\\*\\*([^*]+)\\*\\*|`([^`]+)`|\\[([^\\]]+)\\]\\(([^)]+)\\)|\\n/;\n while (remaining.length > 0) {\n const match = pattern.exec(remaining);\n if (!match) {\n tokens.push({ type: 'text', value: remaining });\n break;\n }\n if (match.index > 0) {\n tokens.push({ type: 'text', value: remaining.slice(0, match.index) });\n }\n if (match[1] !== undefined) {\n tokens.push({ type: 'bold', value: match[1] });\n } else if (match[2] !== undefined) {\n tokens.push({ type: 'code', value: match[2] });\n } else if (match[3] !== undefined && match[4] !== undefined) {\n tokens.push({ type: 'link', label: match[3], href: match[4] });\n } else {\n tokens.push({ type: 'br' });\n }\n remaining = remaining.slice(match.index + match[0].length);\n }\n return tokens;\n}\n\nfunction renderBody(input: string): ReactNode {\n return tokenize(input).map((tok, i) => {\n if (tok.type === 'bold') return <strong key={i}>{tok.value}</strong>;\n if (tok.type === 'code') {\n return (\n <code\n key={i}\n dir=\"ltr\"\n className=\"ds:rounded-[var(--radius-sm)] ds:bg-muted/30 ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)] ds:font-[family-name:var(--font-mono)]\"\n >\n {tok.value}\n </code>\n );\n }\n if (tok.type === 'br') return <br key={i} />;\n if (tok.type === 'link') {\n if (!SAFE_SCHEMES.test(tok.href)) {\n // Unsafe scheme (javascript:, data:) — render as inert text.\n return <Fragment key={i}>{tok.label}</Fragment>;\n }\n return (\n <a\n key={i}\n href={tok.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"ds:underline ds:underline-offset-2 ds:hover:opacity-80\"\n >\n {tok.label}\n </a>\n );\n }\n return <Fragment key={i}>{tok.value}</Fragment>;\n });\n}\n\n/* ------------------------------------------------------------------ */\n/* ChatMessage */\n/* ------------------------------------------------------------------ */\n\ntype NativeProps = Omit<HTMLAttributes<HTMLElement>, 'content' | 'role'>;\n\nexport interface ChatMessageProps\n extends NativeProps, VariantProps<typeof bubbleVariants> {\n role: ChatMessageRole;\n content: string;\n avatar?: ChatMessageAvatar;\n timestamp?: Date | number | string;\n status?: ChatMessageStatus;\n /** Parse a small, safe subset of markdown. Never renders raw HTML. */\n renderMarkdown?: boolean;\n /** Invoked when the retry button is activated (error status only). */\n onRetry?: () => void;\n}\n\nexport const ChatMessage = forwardRef<HTMLElement, ChatMessageProps>(\n (\n {\n role,\n content,\n avatar,\n timestamp,\n status,\n renderMarkdown = false,\n onRetry,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n // Local format — used for the aria-label interpolation only. Visible\n // label is rendered by `<Timestamp>` below, which computes the same\n // locale-aware HH:MM internally.\n const formattedTime = useMemo(() => {\n if (!timestamp) return null;\n const date = timestamp instanceof Date ? timestamp : new Date(timestamp);\n if (Number.isNaN(date.getTime())) return null;\n return new Intl.DateTimeFormat(i18n.language, {\n hour: '2-digit',\n minute: '2-digit',\n }).format(date);\n }, [timestamp, i18n.language]);\n\n const roleLabel = t(`chat.message.role.${role}`);\n const messageLabel = formattedTime\n ? t('chat.message.label', { role: roleLabel, time: formattedTime })\n : t('chat.message.labelNoTime', { role: roleLabel });\n\n const body = renderMarkdown ? renderBody(content) : content;\n\n const statusIcon = (() => {\n if (!status || status === 'edited') return null;\n if (status === 'sending')\n return <Clock aria-hidden=\"true\" className=\"ds:size-3.5\" />;\n if (status === 'sent')\n return <Check aria-hidden=\"true\" className=\"ds:size-3.5\" />;\n return (\n <AlertCircle\n aria-hidden=\"true\"\n className=\"ds:size-3.5 ds:text-[color:var(--destructive)]\"\n />\n );\n })();\n\n const statusText = status ? t(`chat.message.status.${status}`) : null;\n\n return (\n <article\n ref={ref}\n aria-label={messageLabel}\n data-component=\"chat-message\"\n className={[\n rowVariants({ role, className }),\n // Entrance: fade + slide up on mount. `--animation-duration` is 0ms\n // under `prefers-reduced-motion` and `.theme-accessible`, so both\n // collapse the animation to an instant state change automatically.\n 'ds:motion-safe:animate-in ds:motion-safe:fade-in-0 ds:motion-safe:slide-in-from-bottom-2',\n 'ds:duration-[var(--animation-duration)] ds:ease-[var(--ease-out)]',\n ].join(' ')}\n {...rest}\n >\n {role !== 'system' && avatar ? (\n avatar.slot ? (\n // Consumer-supplied avatar node (e.g. Alia's Sparkles tile).\n avatar.slot\n ) : (\n // Allow-list the src: LLM-supplied values can carry\n // `javascript:` / `data:text/html` / `data:image/svg+xml` and so\n // are scrubbed here before reaching <Avatar>. Fallback to initials.\n <Avatar\n name={avatar.name}\n src={safeImageSrc(avatar.src)}\n size=\"sm\"\n />\n )\n ) : null}\n\n <div\n className={[\n // min-w-0 allows this flex item to shrink below its content's\n // natural width — without it, a single unbreakable token (URL,\n // CJK run, hash) can force the bubble wider than the parent\n // and spill outside narrow containers like the Alia sidebar.\n 'ds:flex ds:flex-col ds:min-w-0',\n role === 'user'\n ? 'ds:items-end'\n : role === 'assistant'\n ? 'ds:items-start'\n : 'ds:items-center',\n ].join(' ')}\n >\n <div\n dir=\"auto\"\n className={[\n bubbleVariants({ role }),\n // `break-words` (from bubbleVariants) handles soft hyphens;\n // `overflow-wrap: anywhere` is the last-resort break for\n // URLs, hashes, or CJK runs that would otherwise push the\n // bubble wider than its parent in narrow docks like Alia.\n 'ds:[overflow-wrap:anywhere]',\n ].join(' ')}\n >\n {body}\n </div>\n\n {(formattedTime || statusText) && role !== 'system' ? (\n <div\n className={[\n 'ds:mt-[var(--spacing-xs)] ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]',\n 'type-meta ds:text-[color:var(--muted-foreground)]',\n ].join(' ')}\n >\n {timestamp ? (\n <Timestamp\n value={timestamp}\n format=\"absolute\"\n absoluteFormat={{ hour: '2-digit', minute: '2-digit' }}\n dir=\"ltr\"\n />\n ) : null}\n {statusIcon ? (\n // `key={status}` re-mounts the span on every status change so\n // `animate-in` re-runs — gives the sending → sent → error\n // swap a subtle cross-fade instead of an abrupt pop.\n <span\n key={status}\n className={[\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]',\n 'ds:motion-safe:animate-in ds:motion-safe:fade-in-0',\n 'ds:duration-[var(--animation-duration)] ds:ease-[var(--ease-out)]',\n ].join(' ')}\n >\n {statusIcon}\n <span className=\"ds:sr-only\">{statusText}</span>\n </span>\n ) : null}\n {status === 'error' && onRetry ? (\n <Button\n intent=\"ghost\"\n size=\"sm\"\n onClick={onRetry}\n startIcon={<RotateCcw />}\n >\n {t('chat.message.retry')}\n </Button>\n ) : null}\n </div>\n ) : null}\n </div>\n </article>\n );\n },\n);\n\nChatMessage.displayName = 'ChatMessage';\n"],"names":["__iconNode","RotateCcw","createLucideIcon","rowVariants","cva","bubbleVariants","SAFE_SCHEMES","tokenize","input","tokens","remaining","pattern","match","renderBody","tok","i","jsx","Fragment","ChatMessage","forwardRef","role","content","avatar","timestamp","status","renderMarkdown","onRetry","className","rest","ref","t","i18n","useTranslation","formattedTime","useMemo","date","roleLabel","messageLabel","body","statusIcon","Clock","Check","AlertCircle","statusText","jsxs","Avatar","safeImageSrc","Timestamp","Button"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"collapsible-CERONory.js","sources":["../../src/components/collapsible/collapsible.agent.ts","../../src/components/collapsible/collapsible.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — Collapsible. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { CollapsibleHandle } from './collapsible';\n\nexport const collapsibleAgent: AgentAdapter<CollapsibleHandle> = {\n id: 'collapsible',\n capabilities: ['expand'],\n state: {\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.collapsible.state.isOpen',\n description: 'True when the content panel is expanded.',\n read: (handle) => handle.isOpen(),\n },\n },\n actions: {\n toggle: {\n safety: 'write',\n descriptionKey: 'ui.agent.collapsible.actions.toggle',\n description: 'Toggle between open and closed.',\n invoke: (handle) => {\n handle.toggle();\n },\n },\n open: {\n safety: 'write',\n descriptionKey: 'ui.agent.collapsible.actions.open',\n description: 'Expand the content panel.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'write',\n descriptionKey: 'ui.agent.collapsible.actions.close',\n description: 'Collapse the content panel.',\n invoke: (handle) => {\n handle.close();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'collapsible',\n description: 'Marks the Collapsible root.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n type ComponentPropsWithoutRef,\n type ElementRef,\n} from 'react';\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\nimport { cva, cx, type VariantProps } from 'class-variance-authority';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { collapsibleAgent } from './collapsible.agent';\n\nconst collapsibleVariants = cva('', {\n variants: {\n variant: {\n default: '',\n card: 'ds:bg-[var(--card)] ds:border ds:border-border ds:rounded-[var(--radius-lg)] ds:overflow-hidden',\n minimal: 'ds:forced-colors:[border-block-end:1px_solid]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst contentCls = [\n 'ds:overflow-hidden',\n 'ds:transition-[block-size]',\n 'ds:duration-[var(--animation-duration)]',\n 'ds:ease-out',\n 'ds:motion-reduce:transition-none',\n 'ds:data-[state=open]:[block-size:var(--radix-collapsible-content-height)]',\n 'ds:data-[state=closed]:[block-size:0]',\n].join(' ');\n\ntype RootProps = ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Root>;\ntype TriggerProps = ComponentPropsWithoutRef<\n typeof CollapsiblePrimitive.Trigger\n>;\ntype PrimitiveContentProps = ComponentPropsWithoutRef<\n typeof CollapsiblePrimitive.Content\n>;\n\nexport interface CollapsibleProps\n extends\n Omit<RootProps, 'asChild'>,\n VariantProps<typeof collapsibleVariants> {}\n\n/** Curated imperative handle for agent / external automation. */\nexport interface CollapsibleHandle {\n isOpen: () => boolean;\n toggle: () => void;\n open: () => void;\n close: () => void;\n}\n\nexport type CollapsibleTriggerProps = TriggerProps;\n\nexport type CollapsibleContentProps = PrimitiveContentProps;\n\ntype CollapsibleRootElement = ElementRef<typeof CollapsiblePrimitive.Root>;\n\nexport const Collapsible = forwardRef<CollapsibleRootElement, CollapsibleProps>(\n (\n {\n variant,\n className,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n ...props\n },\n ref,\n ) => {\n const [currentOpenRaw, setOpen] = useControllableState<boolean>({\n value: openProp,\n defaultValue: Boolean(defaultOpen),\n onChange: onOpenChange,\n });\n const currentOpen = currentOpenRaw ?? false;\n // Latest snapshot for the imperative handle — keeps invoke callers from\n // reading stale state when they fire `toggle()` then `isOpen()` in rapid\n // succession (the latest setState batch may not have flushed yet).\n const latestRef = useRef(currentOpen);\n latestRef.current = currentOpen;\n\n const agentHandle = useMemo<CollapsibleHandle>(\n () => ({\n isOpen: () => latestRef.current,\n toggle: () => setOpen(!latestRef.current),\n open: () => setOpen(true),\n close: () => setOpen(false),\n }),\n [setOpen],\n );\n useAgentRegistration(collapsibleAgent, agentHandle, props.id);\n\n return (\n <CollapsiblePrimitive.Root\n ref={ref}\n open={currentOpen}\n onOpenChange={setOpen}\n className={collapsibleVariants({ variant, className })}\n data-component=\"collapsible\"\n data-component-id={props.id}\n {...props}\n >\n {children}\n </CollapsiblePrimitive.Root>\n );\n },\n);\nCollapsible.displayName = 'Collapsible';\n\nexport const CollapsibleTrigger = forwardRef<\n HTMLButtonElement,\n CollapsibleTriggerProps\n>(({ asChild = false, children, ...props }, ref) => (\n <CollapsiblePrimitive.Trigger ref={ref} asChild={asChild} {...props}>\n {children}\n </CollapsiblePrimitive.Trigger>\n));\nCollapsibleTrigger.displayName = 'CollapsibleTrigger';\n\nexport const CollapsibleContent = forwardRef<\n HTMLDivElement,\n CollapsibleContentProps\n>(\n (\n {\n className,\n children,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-label': ariaLabel,\n ...props\n },\n ref,\n ) => {\n useEffect(() => {\n if (import.meta.env.DEV && !ariaLabelledBy && !ariaLabel) {\n console.warn(\n 'CollapsibleContent: Provide `aria-labelledby` pointing at the trigger id, or `aria-label`, so screen readers can identify this region.',\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <CollapsiblePrimitive.Content\n ref={ref}\n aria-labelledby={ariaLabelledBy}\n aria-label={ariaLabel}\n className={cx(contentCls, className)}\n {...props}\n >\n {children}\n </CollapsiblePrimitive.Content>\n );\n },\n);\nCollapsibleContent.displayName = 'CollapsibleContent';\n"],"names":["collapsibleAgent","handle","collapsibleVariants","cva","contentCls","Collapsible","forwardRef","variant","className","children","openProp","defaultOpen","onOpenChange","props","ref","currentOpenRaw","setOpen","useControllableState","currentOpen","latestRef","useRef","agentHandle","useMemo","useAgentRegistration","jsx","CollapsiblePrimitive","CollapsibleTrigger","asChild","CollapsibleContent","ariaLabelledBy","ariaLabel","useEffect","cx"],"mappings":"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"}
|