@alfadocs/ui-kit-debug 0.67.1 → 0.69.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/{accordion-9lJSMMsZ.js → accordion-DnIa7OHX.js} +69 -47
- package/dist/_chunks/accordion-DnIa7OHX.js.map +1 -0
- package/dist/_chunks/actions-cell-renderer-DrcaxB0w.js +2061 -0
- package/dist/_chunks/actions-cell-renderer-DrcaxB0w.js.map +1 -0
- package/dist/_chunks/address-autocomplete-BEX9PXty.js +496 -0
- package/dist/_chunks/address-autocomplete-BEX9PXty.js.map +1 -0
- package/dist/_chunks/{agenda-card.agent-B_R47-c9.js → agenda-card.agent-mTCrkKSZ.js} +6 -1
- package/dist/_chunks/{agenda-card.agent-B_R47-c9.js.map → agenda-card.agent-mTCrkKSZ.js.map} +1 -1
- package/dist/_chunks/{agenda-tray-T-BumlGZ.js → agenda-tray-g0kg7HwB.js} +36 -24
- package/dist/_chunks/agenda-tray-g0kg7HwB.js.map +1 -0
- package/dist/_chunks/{ai-consent-banner-Dxtx_WAh.js → ai-consent-banner-CXlsNX1c.js} +3 -3
- package/dist/_chunks/{ai-consent-banner-Dxtx_WAh.js.map → ai-consent-banner-CXlsNX1c.js.map} +1 -1
- package/dist/_chunks/{ai-prompt-input-BwEACCPm.js → ai-prompt-input-CuhTo9mh.js} +80 -61
- package/dist/_chunks/ai-prompt-input-CuhTo9mh.js.map +1 -0
- package/dist/_chunks/{ai-tools-rail-CInA_1-E.js → ai-tools-rail-BA_sqy1A.js} +87 -70
- package/dist/_chunks/ai-tools-rail-BA_sqy1A.js.map +1 -0
- package/dist/_chunks/{alia-sidebar-Ckv0yCKi.js → alia-sidebar-B47qRQb5.js} +5 -5
- package/dist/_chunks/{alia-sidebar-Ckv0yCKi.js.map → alia-sidebar-B47qRQb5.js.map} +1 -1
- package/dist/_chunks/{anamnesis-card-N8pIKWuS.js → anamnesis-card-DRmE24OQ.js} +2 -2
- package/dist/_chunks/{anamnesis-card-N8pIKWuS.js.map → anamnesis-card-DRmE24OQ.js.map} +1 -1
- package/dist/_chunks/{appointment-tray-BMl89NPW.js → appointment-tray-CZtvtaH-.js} +32 -20
- package/dist/_chunks/appointment-tray-CZtvtaH-.js.map +1 -0
- package/dist/_chunks/{audio-recorder-DjXLP4aF.js → audio-recorder-DYXXnGug.js} +59 -56
- package/dist/_chunks/audio-recorder-DYXXnGug.js.map +1 -0
- package/dist/_chunks/{autocomplete-CcCFlVf-.js → autocomplete-DOeGouCL.js} +157 -132
- package/dist/_chunks/autocomplete-DOeGouCL.js.map +1 -0
- package/dist/_chunks/bishop-score-PJI3AXzA.js +304 -0
- package/dist/_chunks/bishop-score-PJI3AXzA.js.map +1 -0
- package/dist/_chunks/bmi-calculator-BZtIJ53x.js +434 -0
- package/dist/_chunks/bmi-calculator-BZtIJ53x.js.map +1 -0
- package/dist/_chunks/{booking-L8-YP8BJ.js → booking-C3VqFReX.js} +420 -397
- package/dist/_chunks/booking-C3VqFReX.js.map +1 -0
- package/dist/_chunks/{breadcrumb-OTbaY70e.js → breadcrumb-CchdeG7d.js} +42 -28
- package/dist/_chunks/breadcrumb-CchdeG7d.js.map +1 -0
- package/dist/_chunks/{calculator-dialog-CFk4I91b.js → calculator-dialog-BR5iU0kf.js} +2 -2
- package/dist/_chunks/{calculator-dialog-CFk4I91b.js.map → calculator-dialog-BR5iU0kf.js.map} +1 -1
- package/dist/_chunks/{calendar-oYWOCrnf.js → calendar-CZUjL8SZ.js} +258 -201
- package/dist/_chunks/calendar-CZUjL8SZ.js.map +1 -0
- package/dist/_chunks/{care-plan-card-BwVUyUBb.js → care-plan-card-CvFGXa2z.js} +10 -6
- package/dist/_chunks/care-plan-card-CvFGXa2z.js.map +1 -0
- package/dist/_chunks/{care-plan-entry-card-VzdQHcOL.js → care-plan-entry-card-C3E_gClk.js} +17 -13
- package/dist/_chunks/care-plan-entry-card-C3E_gClk.js.map +1 -0
- package/dist/_chunks/{carousel.agent-vt21A_el.js → carousel.agent-4v8Emr9E.js} +219 -198
- package/dist/_chunks/{carousel.agent-vt21A_el.js.map → carousel.agent-4v8Emr9E.js.map} +1 -1
- package/dist/_chunks/{chart-Cg3e9EH9.js → chart-CMr3eW62.js} +150 -109
- package/dist/_chunks/chart-CMr3eW62.js.map +1 -0
- package/dist/_chunks/{chat-container-ogB4OskO.js → chat-container-DWho5hPR.js} +47 -34
- package/dist/_chunks/chat-container-DWho5hPR.js.map +1 -0
- package/dist/_chunks/{chat-input-B5zjNEUN.js → chat-input-BcXTetgM.js} +57 -41
- package/dist/_chunks/chat-input-BcXTetgM.js.map +1 -0
- package/dist/_chunks/{checkbox-DRcOdmXv.js → checkbox-BuZ1u__2.js} +41 -27
- package/dist/_chunks/checkbox-BuZ1u__2.js.map +1 -0
- package/dist/_chunks/{checkbox-group-CpUwlHug.js → checkbox-group-PqNmQ-cE.js} +3 -3
- package/dist/_chunks/{checkbox-group-CpUwlHug.js.map → checkbox-group-PqNmQ-cE.js.map} +1 -1
- package/dist/_chunks/{clinical-note-card-gtrxv6zn.js → clinical-note-card-DqQYf_D4.js} +2 -2
- package/dist/_chunks/{clinical-note-card-gtrxv6zn.js.map → clinical-note-card-DqQYf_D4.js.map} +1 -1
- package/dist/_chunks/{collapsible-X3oaLPU3.js → collapsible-BrnRiCC6.js} +26 -23
- package/dist/_chunks/collapsible-BrnRiCC6.js.map +1 -0
- package/dist/_chunks/{color-picker-FXpItIaF.js → color-picker-C_fZl6sA.js} +124 -112
- package/dist/_chunks/color-picker-C_fZl6sA.js.map +1 -0
- package/dist/_chunks/{combobox-BC-DFx8G.js → combobox-Clum7gJ1.js} +165 -128
- package/dist/_chunks/combobox-Clum7gJ1.js.map +1 -0
- package/dist/_chunks/{command-palette-BiPAAno-.js → command-palette-CJzmc5pC.js} +87 -64
- package/dist/_chunks/command-palette-CJzmc5pC.js.map +1 -0
- package/dist/_chunks/{contact-profile-card-7BMB85T6.js → contact-profile-card-Dramqa9C.js} +13 -11
- package/dist/_chunks/contact-profile-card-Dramqa9C.js.map +1 -0
- package/dist/_chunks/{copy-field-CCq7j6Zc.js → copy-field-Bjw9u2cV.js} +42 -35
- package/dist/_chunks/copy-field-Bjw9u2cV.js.map +1 -0
- package/dist/_chunks/counter-dRlTNC_y.js +55 -0
- package/dist/_chunks/counter-dRlTNC_y.js.map +1 -0
- package/dist/_chunks/{cycle-calculator-BF0ointe.js → cycle-calculator-DmRGJNaT.js} +3 -3
- package/dist/_chunks/{cycle-calculator-BF0ointe.js.map → cycle-calculator-DmRGJNaT.js.map} +1 -1
- package/dist/_chunks/{date-picker-oGg5BnXL.js → date-picker-Dl9RKxaV.js} +76 -57
- package/dist/_chunks/{date-picker-oGg5BnXL.js.map → date-picker-Dl9RKxaV.js.map} +1 -1
- package/dist/_chunks/{date-range-picker-C5BWfH_T.js → date-range-picker-CTUeR6Bj.js} +73 -46
- package/dist/_chunks/date-range-picker-CTUeR6Bj.js.map +1 -0
- package/dist/_chunks/{date-time-picker-Ze1My59T.js → date-time-picker-BhoogS5Q.js} +64 -40
- package/dist/_chunks/date-time-picker-BhoogS5Q.js.map +1 -0
- package/dist/_chunks/{dependent-selector-DpzGtr_J.js → dependent-selector-CG_FOHya.js} +44 -30
- package/dist/_chunks/dependent-selector-CG_FOHya.js.map +1 -0
- package/dist/_chunks/{dialog-DMGnSelc.js → dialog-ZNuboNmy.js} +35 -28
- package/dist/_chunks/dialog-ZNuboNmy.js.map +1 -0
- package/dist/_chunks/{document-scanner-D2qehl3-.js → document-scanner-CTubA0-N.js} +12 -4
- package/dist/_chunks/document-scanner-CTubA0-N.js.map +1 -0
- package/dist/_chunks/{dropdown-menu-DwwPovMZ.js → dropdown-menu-qrxjymfw.js} +94 -93
- package/dist/_chunks/dropdown-menu-qrxjymfw.js.map +1 -0
- package/dist/_chunks/{due-date-calculator-DU9AEWNy.js → due-date-calculator-BTmsIQqD.js} +4 -4
- package/dist/_chunks/{due-date-calculator-DU9AEWNy.js.map → due-date-calculator-BTmsIQqD.js.map} +1 -1
- package/dist/_chunks/editable-currency-cell-renderer-kgqp_mIw.js +448 -0
- package/dist/_chunks/editable-currency-cell-renderer-kgqp_mIw.js.map +1 -0
- package/dist/_chunks/editor-overlay-wYm22wZK.js.map +1 -1
- package/dist/_chunks/{email-input-lQivsFrw.js → email-input-B_Y55f5G.js} +3 -3
- package/dist/_chunks/{email-input-lQivsFrw.js.map → email-input-B_Y55f5G.js.map} +1 -1
- package/dist/_chunks/{fetal-weight-BVSzOhuR.js → fetal-weight-CRz7KE2D.js} +2 -2
- package/dist/_chunks/{fetal-weight-BVSzOhuR.js.map → fetal-weight-CRz7KE2D.js.map} +1 -1
- package/dist/_chunks/{file-upload-BosbPDb1.js → file-upload-5ScQd4fE.js} +118 -100
- package/dist/_chunks/file-upload-5ScQd4fE.js.map +1 -0
- package/dist/_chunks/{fiscal-code-input-DPtqluVb.js → fiscal-code-input-Cf-8O4Fj.js} +76 -63
- package/dist/_chunks/fiscal-code-input-Cf-8O4Fj.js.map +1 -0
- package/dist/_chunks/{freemium-paywall-CkWjv3o6.js → freemium-paywall-DZ2mBS3w.js} +78 -71
- package/dist/_chunks/freemium-paywall-DZ2mBS3w.js.map +1 -0
- package/dist/_chunks/{gestational-age-calculator-DBlFdoiP.js → gestational-age-calculator-BleUdhbI.js} +5 -5
- package/dist/_chunks/{gestational-age-calculator-DBlFdoiP.js.map → gestational-age-calculator-BleUdhbI.js.map} +1 -1
- package/dist/_chunks/{hcg-doubling-if4Q8aSX.js → hcg-doubling-CnjDXX6U.js} +3 -3
- package/dist/_chunks/{hcg-doubling-if4Q8aSX.js.map → hcg-doubling-CnjDXX6U.js.map} +1 -1
- package/dist/_chunks/{header-settings-CNOqIhoW.js → header-settings-DJqoAl5m.js} +86 -46
- package/dist/_chunks/header-settings-DJqoAl5m.js.map +1 -0
- package/dist/_chunks/{index.modern-D2LGACWg.js → index.modern-Zta-A4Jm.js} +3 -3
- package/dist/_chunks/{index.modern-D2LGACWg.js.map → index.modern-Zta-A4Jm.js.map} +1 -1
- package/dist/_chunks/{list-BOwqwy03.js → list-DgE1xWBM.js} +99 -84
- package/dist/_chunks/list-DgE1xWBM.js.map +1 -0
- package/dist/_chunks/{locale-picker-C9JmBht3.js → locale-picker-ChYYSX2N.js} +47 -35
- package/dist/_chunks/locale-picker-ChYYSX2N.js.map +1 -0
- package/dist/_chunks/{map-view-Tb5VfK9Y.js → map-view-BkOoGoX2.js} +160 -115
- package/dist/_chunks/map-view-BkOoGoX2.js.map +1 -0
- package/dist/_chunks/{marketplace-app-shell-D4-T9Qzz.js → marketplace-app-shell-6T9W4Knl.js} +4 -4
- package/dist/_chunks/{marketplace-app-shell-D4-T9Qzz.js.map → marketplace-app-shell-6T9W4Knl.js.map} +1 -1
- package/dist/_chunks/{message-card.agent-4IeIgrnJ.js → message-card.agent-ZLhx3Bs5.js} +6 -1
- package/dist/_chunks/message-card.agent-ZLhx3Bs5.js.map +1 -0
- package/dist/_chunks/{message-tray-CVyJajVJ.js → message-tray-DwrBLJlf.js} +90 -48
- package/dist/_chunks/message-tray-DwrBLJlf.js.map +1 -0
- package/dist/_chunks/{multi-select-BcPylvHR.js → multi-select-BdHHDrRN.js} +196 -153
- package/dist/_chunks/multi-select-BdHHDrRN.js.map +1 -0
- package/dist/_chunks/{navigation-menu-C6lBYVv9.js → navigation-menu-DRUi6sSj.js} +75 -42
- package/dist/_chunks/navigation-menu-DRUi6sSj.js.map +1 -0
- package/dist/_chunks/{notification-card.agent-Rqt3ofk9.js → notification-card.agent-DxGBZb8T.js} +5 -1
- package/dist/_chunks/notification-card.agent-DxGBZb8T.js.map +1 -0
- package/dist/_chunks/{notification-tray-DlgenTEe.js → notification-tray-Btb9oQeZ.js} +112 -97
- package/dist/_chunks/notification-tray-Btb9oQeZ.js.map +1 -0
- package/dist/_chunks/{number-input-Dj5L3pXK.js → number-input-DxphVG_A.js} +36 -27
- package/dist/_chunks/number-input-DxphVG_A.js.map +1 -0
- package/dist/_chunks/{operator-hero-f_KaRhw5.js → operator-hero-CP2Nhupm.js} +12 -8
- package/dist/_chunks/operator-hero-CP2Nhupm.js.map +1 -0
- package/dist/_chunks/{otp-input-xQ4Ps5VY.js → otp-input-DzBQ-CpE.js} +52 -33
- package/dist/_chunks/otp-input-DzBQ-CpE.js.map +1 -0
- package/dist/_chunks/{pagination-DQOgnxxw.js → pagination-D58kglCr.js} +181 -162
- package/dist/_chunks/pagination-D58kglCr.js.map +1 -0
- package/dist/_chunks/{patient-search-DR9XUYRQ.js → patient-search-CBC_ySF6.js} +69 -60
- package/dist/_chunks/patient-search-CBC_ySF6.js.map +1 -0
- package/dist/_chunks/{patient-shell-BfgufL_q.js → patient-shell-DV3XEtIB.js} +3 -3
- package/dist/_chunks/{patient-shell-BfgufL_q.js.map → patient-shell-DV3XEtIB.js.map} +1 -1
- package/dist/_chunks/{patient-summary-card-hEmr4eTW.js → patient-summary-card-B836_fDB.js} +95 -103
- package/dist/_chunks/patient-summary-card-B836_fDB.js.map +1 -0
- package/dist/_chunks/patient-table-CDuosVru.js +889 -0
- package/dist/_chunks/patient-table-CDuosVru.js.map +1 -0
- package/dist/_chunks/{payment-form-nXocS_MX.js → payment-form-DvjwYVIT.js} +56 -44
- package/dist/_chunks/payment-form-DvjwYVIT.js.map +1 -0
- package/dist/_chunks/{payment-request-card-CYE5vhZ0.js → payment-request-card-DioWKBUq.js} +2 -2
- package/dist/_chunks/{payment-request-card-CYE5vhZ0.js.map → payment-request-card-DioWKBUq.js.map} +1 -1
- package/dist/_chunks/{pdf-viewer-GsfNqeeT.js → pdf-viewer-D6BPfW2D.js} +205 -157
- package/dist/_chunks/pdf-viewer-D6BPfW2D.js.map +1 -0
- package/dist/_chunks/{periodontal-chart-card-Dh3KgvYG.js → periodontal-chart-card-BuDEMbHE.js} +2 -2
- package/dist/_chunks/{periodontal-chart-card-Dh3KgvYG.js.map → periodontal-chart-card-BuDEMbHE.js.map} +1 -1
- package/dist/_chunks/{phone-input-DVXhNlIl.js → phone-input-DjU-XmO_.js} +64 -47
- package/dist/_chunks/phone-input-DjU-XmO_.js.map +1 -0
- package/dist/_chunks/{popover-DTbfAuR0.js → popover-B2qCDhJC.js} +37 -32
- package/dist/_chunks/popover-B2qCDhJC.js.map +1 -0
- package/dist/_chunks/{practice-results-DND2SAt7.js → practice-results-KrTHqZua.js} +278 -242
- package/dist/_chunks/practice-results-KrTHqZua.js.map +1 -0
- package/dist/_chunks/{pregnancy-dating-QY-sqpvj.js → pregnancy-dating-DORUAOHB.js} +6 -6
- package/dist/_chunks/{pregnancy-dating-QY-sqpvj.js.map → pregnancy-dating-DORUAOHB.js.map} +1 -1
- package/dist/_chunks/{pregnancy-weight-gain-DOJXXNYP.js → pregnancy-weight-gain-DVz4rr7-.js} +3 -3
- package/dist/_chunks/{pregnancy-weight-gain-DOJXXNYP.js.map → pregnancy-weight-gain-DVz4rr7-.js.map} +1 -1
- package/dist/_chunks/{privacy-lock-C7JyMf0y.js → privacy-lock-BzMLQu-j.js} +32 -28
- package/dist/_chunks/privacy-lock-BzMLQu-j.js.map +1 -0
- package/dist/_chunks/{product-hub-panel-CAXDFeGP.js → product-hub-panel-e6pW220e.js} +45 -27
- package/dist/_chunks/product-hub-panel-e6pW220e.js.map +1 -0
- package/dist/_chunks/{progress-kzIRcdaq.js → progress-DA413-zn.js} +2 -2
- package/dist/_chunks/{progress-kzIRcdaq.js.map → progress-DA413-zn.js.map} +1 -1
- package/dist/_chunks/{public-footer.agent-CfXuW1x6.js → public-footer.agent-D0cFbjWl.js} +151 -146
- package/dist/_chunks/public-footer.agent-D0cFbjWl.js.map +1 -0
- package/dist/_chunks/{public-header.agent-BOhJgZEU.js → public-header.agent-DqkqA-ca.js} +107 -102
- package/dist/_chunks/{public-header.agent-BOhJgZEU.js.map → public-header.agent-DqkqA-ca.js.map} +1 -1
- package/dist/_chunks/{qr-code-DNXhi6se.js → qr-code-CPkEs5mG.js} +52 -46
- package/dist/_chunks/qr-code-CPkEs5mG.js.map +1 -0
- package/dist/_chunks/{radio-group-CLjK-SlK.js → radio-group-BPt7pKZW.js} +5 -5
- package/dist/_chunks/{radio-group-CLjK-SlK.js.map → radio-group-BPt7pKZW.js.map} +1 -1
- package/dist/_chunks/{recaptcha-widget-BCNHsgqt.js → recaptcha-widget-BC-4To9b.js} +9 -2
- package/dist/_chunks/recaptcha-widget-BC-4To9b.js.map +1 -0
- package/dist/_chunks/registry-DvAUVLHh.js +51 -0
- package/dist/_chunks/registry-DvAUVLHh.js.map +1 -0
- package/dist/_chunks/{resizable-3vzqDlg6.js → resizable-DVGcfOrk.js} +193 -173
- package/dist/_chunks/resizable-DVGcfOrk.js.map +1 -0
- package/dist/_chunks/{reviews-panel-DBktKm7i.js → reviews-panel-Dq7LMDcH.js} +87 -68
- package/dist/_chunks/reviews-panel-Dq7LMDcH.js.map +1 -0
- package/dist/_chunks/rich-text-editor-BsV7zUdg.js +2142 -0
- package/dist/_chunks/rich-text-editor-BsV7zUdg.js.map +1 -0
- package/dist/_chunks/{search-bar-SY2BcV2N.js → search-bar-C_T3pBJn.js} +105 -78
- package/dist/_chunks/search-bar-C_T3pBJn.js.map +1 -0
- package/dist/_chunks/{search-input-DbxrnHkW.js → search-input-DQvGxR74.js} +2 -2
- package/dist/_chunks/{search-input-DbxrnHkW.js.map → search-input-DQvGxR74.js.map} +1 -1
- package/dist/_chunks/{search-input.agent-CfZvViOd.js → search-input.agent-DRH54coT.js} +19 -4
- package/dist/_chunks/search-input.agent-DRH54coT.js.map +1 -0
- package/dist/_chunks/{select-CEtRcon5.js → select-DMLG44F5.js} +72 -56
- package/dist/_chunks/select-DMLG44F5.js.map +1 -0
- package/dist/_chunks/{session-countdown-LPnhTHjn.js → session-countdown-X1Ki6i0M.js} +3 -3
- package/dist/_chunks/{session-countdown-LPnhTHjn.js.map → session-countdown-X1Ki6i0M.js.map} +1 -1
- package/dist/_chunks/{sheet-taJer-Ha.js → sheet-BxsE7eQm.js} +59 -45
- package/dist/_chunks/sheet-BxsE7eQm.js.map +1 -0
- package/dist/_chunks/{sidebar-DaB4ulxH.js → sidebar-DY9jGjgt.js} +254 -248
- package/dist/_chunks/sidebar-DY9jGjgt.js.map +1 -0
- package/dist/_chunks/{sign-document-CdAiHiCh.js → sign-document-B4DeRhTe.js} +75 -49
- package/dist/_chunks/sign-document-B4DeRhTe.js.map +1 -0
- package/dist/_chunks/{signature-capture-COi0Uiqu.js → signature-capture-Ct_4Md4e.js} +138 -104
- package/dist/_chunks/signature-capture-Ct_4Md4e.js.map +1 -0
- package/dist/_chunks/{slider-BHWzXdjt.js → slider-DN1CWkKB.js} +85 -65
- package/dist/_chunks/slider-DN1CWkKB.js.map +1 -0
- package/dist/_chunks/{sparkline-DGhCSw8M.js → sparkline-iOXYgvJe.js} +75 -53
- package/dist/_chunks/sparkline-iOXYgvJe.js.map +1 -0
- package/dist/_chunks/{stepper-accordion.agent-C4quJ-MD.js → stepper-accordion.agent-cmEguIdx.js} +7 -1
- package/dist/_chunks/stepper-accordion.agent-cmEguIdx.js.map +1 -0
- package/dist/_chunks/{stepper-progress-DDjq5nei.js → stepper-progress-Bv0njx4g.js} +30 -24
- package/dist/_chunks/stepper-progress-Bv0njx4g.js.map +1 -0
- package/dist/_chunks/{suggestion-chip.agent-6sNWFj7m.js → suggestion-chip.agent-Brn3CiFE.js} +9 -8
- package/dist/_chunks/{suggestion-chip.agent-6sNWFj7m.js.map → suggestion-chip.agent-Brn3CiFE.js.map} +1 -1
- package/dist/_chunks/{switch-BJ6HD3Mn.js → switch-OILsBLWo.js} +25 -19
- package/dist/_chunks/switch-OILsBLWo.js.map +1 -0
- package/dist/_chunks/{tabs-BIQ0ew1T.js → tabs-BxcOziCo.js} +67 -58
- package/dist/_chunks/tabs-BxcOziCo.js.map +1 -0
- package/dist/_chunks/{task-card.agent-CUPKYd7w.js → task-card.agent-Bt14CzUd.js} +4 -1
- package/dist/_chunks/task-card.agent-Bt14CzUd.js.map +1 -0
- package/dist/_chunks/{task-tray-CAncV-QQ.js → task-tray-qOEQflu4.js} +74 -57
- package/dist/_chunks/task-tray-qOEQflu4.js.map +1 -0
- package/dist/_chunks/{text-area-BIx0tZ05.js → text-area-Bt3p7Pt0.js} +41 -34
- package/dist/_chunks/text-area-Bt3p7Pt0.js.map +1 -0
- package/dist/_chunks/{text-input-BaClJL8Y.js → text-input-B-OWQ1Je.js} +15 -8
- package/dist/_chunks/text-input-B-OWQ1Je.js.map +1 -0
- package/dist/_chunks/{theme-toggle-DETmSu_h.js → theme-toggle-XB6o_lgs.js} +38 -26
- package/dist/_chunks/theme-toggle-XB6o_lgs.js.map +1 -0
- package/dist/_chunks/{time-picker-B5umYwfv.js → time-picker-BPlJWm8w.js} +41 -31
- package/dist/_chunks/time-picker-BPlJWm8w.js.map +1 -0
- package/dist/_chunks/{timeline-DQa5Tyz4.js → timeline-CqA4nKTI.js} +33 -25
- package/dist/_chunks/timeline-CqA4nKTI.js.map +1 -0
- package/dist/_chunks/{toast.agent-vuLRRn2a.js → toast.agent-57UzyR9U.js} +62 -45
- package/dist/_chunks/{toast.agent-vuLRRn2a.js.map → toast.agent-57UzyR9U.js.map} +1 -1
- package/dist/_chunks/{tooth-scheme-BIx1O2aJ.js → tooth-scheme-yBr53cvv.js} +421 -348
- package/dist/_chunks/tooth-scheme-yBr53cvv.js.map +1 -0
- package/dist/_chunks/{transcript-panel-CLHmv83g.js → transcript-panel-3THQX6nJ.js} +47 -33
- package/dist/_chunks/transcript-panel-3THQX6nJ.js.map +1 -0
- package/dist/_chunks/unit-converter-YEpD9evj.js +337 -0
- package/dist/_chunks/unit-converter-YEpD9evj.js.map +1 -0
- package/dist/_chunks/{use-password-requirements-DsgduV1x.js → use-password-requirements-BXvS2MBS.js} +131 -117
- package/dist/_chunks/use-password-requirements-BXvS2MBS.js.map +1 -0
- package/dist/_chunks/users-MBVtUzwd.js +17 -0
- package/dist/_chunks/users-MBVtUzwd.js.map +1 -0
- package/dist/_chunks/warning-stack-BsgaEbL8.js +283 -0
- package/dist/_chunks/warning-stack-BsgaEbL8.js.map +1 -0
- package/dist/_chunks/{whatsapp-button-DUjlWGKf.js → whatsapp-button-BIy6NaJK.js} +6 -3
- package/dist/_chunks/whatsapp-button-BIy6NaJK.js.map +1 -0
- package/dist/_chunks/{workflow-map-JAZryZJr.js → workflow-map-Bdam9pGp.js} +99 -88
- package/dist/_chunks/workflow-map-Bdam9pGp.js.map +1 -0
- package/dist/agent/index.d.ts +4 -4
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +36 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/registry.d.ts +33 -0
- package/dist/agent/registry.d.ts.map +1 -1
- package/dist/agent/types.d.ts +78 -2
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent-catalog.json +6905 -509
- package/dist/agent-i18n/en.json +1175 -0
- package/dist/components/accordion/accordion.agent.d.ts.map +1 -1
- package/dist/components/accordion/accordion.d.ts.map +1 -1
- package/dist/components/accordion/index.js +1 -1
- package/dist/components/address-autocomplete/address-autocomplete.agent.d.ts +4 -0
- package/dist/components/address-autocomplete/address-autocomplete.agent.d.ts.map +1 -0
- package/dist/components/address-autocomplete/address-autocomplete.d.ts +18 -0
- package/dist/components/address-autocomplete/address-autocomplete.d.ts.map +1 -1
- package/dist/components/address-autocomplete/index.d.ts +2 -1
- package/dist/components/address-autocomplete/index.d.ts.map +1 -1
- package/dist/components/address-autocomplete/index.js +3 -2
- package/dist/components/agenda-card/agenda-card.agent.d.ts.map +1 -1
- package/dist/components/agenda-card/index.js +1 -1
- package/dist/components/agenda-tray/agenda-tray.agent.d.ts.map +1 -1
- package/dist/components/agenda-tray/index.js +1 -1
- package/dist/components/ai-consent-banner/index.js +1 -1
- package/dist/components/ai-prompt-input/ai-prompt-input.agent.d.ts.map +1 -1
- package/dist/components/ai-prompt-input/index.js +1 -1
- package/dist/components/ai-tools-rail/ai-tools-rail.agent.d.ts.map +1 -1
- package/dist/components/ai-tools-rail/index.js +1 -1
- package/dist/components/anamnesis-card/index.js +1 -1
- package/dist/components/appointment-card/appointment-card.agent.d.ts.map +1 -1
- package/dist/components/appointment-card/appointment-tray.agent.d.ts.map +1 -1
- package/dist/components/appointment-card/index.js +1 -1
- package/dist/components/audio-recorder/audio-recorder.agent.d.ts.map +1 -1
- package/dist/components/audio-recorder/index.js +1 -1
- package/dist/components/autocomplete/autocomplete.agent.d.ts.map +1 -1
- package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
- package/dist/components/autocomplete/index.js +1 -1
- package/dist/components/bishop-score/bishop-score.agent.d.ts +4 -0
- package/dist/components/bishop-score/bishop-score.agent.d.ts.map +1 -0
- package/dist/components/bishop-score/bishop-score.d.ts +17 -1
- package/dist/components/bishop-score/bishop-score.d.ts.map +1 -1
- package/dist/components/bishop-score/index.js +1 -1
- package/dist/components/bmi-calculator/bmi-calculator.agent.d.ts +4 -0
- package/dist/components/bmi-calculator/bmi-calculator.agent.d.ts.map +1 -0
- package/dist/components/bmi-calculator/bmi-calculator.d.ts +26 -0
- package/dist/components/bmi-calculator/bmi-calculator.d.ts.map +1 -1
- package/dist/components/bmi-calculator/index.js +1 -1
- package/dist/components/booking/booking.agent.d.ts.map +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/breadcrumb/breadcrumb.agent.d.ts.map +1 -1
- package/dist/components/breadcrumb/index.js +1 -1
- package/dist/components/calculator-dialog/index.js +1 -1
- package/dist/components/calendar/calendar.agent.d.ts.map +1 -1
- package/dist/components/calendar/index.js +1 -1
- package/dist/components/care-plan-card/care-plan-card.agent.d.ts.map +1 -1
- package/dist/components/care-plan-card/index.js +1 -1
- package/dist/components/care-plan-entry-card/care-plan-entry-card.agent.d.ts.map +1 -1
- package/dist/components/care-plan-entry-card/index.js +1 -1
- package/dist/components/carousel/carousel.agent.d.ts.map +1 -1
- package/dist/components/carousel/index.js +1 -1
- package/dist/components/chart/chart.agent.d.ts.map +1 -1
- package/dist/components/chart/index.js +1 -1
- package/dist/components/chat-container/chat-container.agent.d.ts.map +1 -1
- package/dist/components/chat-container/index.js +1 -1
- package/dist/components/chat-input/chat-input.agent.d.ts.map +1 -1
- package/dist/components/chat-input/index.js +1 -1
- package/dist/components/checkbox/checkbox.agent.d.ts.map +1 -1
- package/dist/components/checkbox/index.js +1 -1
- package/dist/components/checkbox-group/index.js +1 -1
- package/dist/components/clinical-note-card/index.js +1 -1
- package/dist/components/collapsible/collapsible.agent.d.ts.map +1 -1
- package/dist/components/collapsible/index.js +1 -1
- package/dist/components/color-picker/color-picker.agent.d.ts.map +1 -1
- package/dist/components/color-picker/index.js +1 -1
- package/dist/components/combobox/combobox.agent.d.ts.map +1 -1
- package/dist/components/combobox/combobox.d.ts.map +1 -1
- package/dist/components/combobox/index.js +1 -1
- package/dist/components/command-palette/command-palette.agent.d.ts.map +1 -1
- package/dist/components/command-palette/command-palette.d.ts.map +1 -1
- package/dist/components/command-palette/index.js +1 -1
- package/dist/components/contact-profile-card/contact-profile-card.agent.d.ts.map +1 -1
- package/dist/components/contact-profile-card/index.js +1 -1
- package/dist/components/copy-field/copy-field.agent.d.ts.map +1 -1
- package/dist/components/copy-field/index.js +1 -1
- package/dist/components/counter/counter.d.ts +22 -0
- package/dist/components/counter/counter.d.ts.map +1 -0
- package/dist/components/counter/index.d.ts +3 -0
- package/dist/components/counter/index.d.ts.map +1 -0
- package/dist/components/counter/index.js +5 -0
- package/dist/components/counter/index.js.map +1 -0
- package/dist/components/cycle-calculator/index.js +1 -1
- package/dist/components/data-table/data-table.agent.d.ts.map +1 -1
- package/dist/components/data-table/data-table.d.ts +1 -1
- package/dist/components/data-table/data-table.d.ts.map +1 -1
- package/dist/components/data-table/filters/date-range-filter.d.ts +1 -1
- package/dist/components/data-table/filters/date-range-filter.d.ts.map +1 -1
- package/dist/components/data-table/index.js +31 -30
- package/dist/components/data-table/index.js.map +1 -1
- package/dist/components/data-table/toolbar.d.ts +4 -1
- package/dist/components/data-table/toolbar.d.ts.map +1 -1
- package/dist/components/date-picker/date-picker.agent.d.ts.map +1 -1
- package/dist/components/date-picker/index.js +1 -1
- package/dist/components/date-range-picker/date-range-picker.agent.d.ts.map +1 -1
- package/dist/components/date-range-picker/index.js +1 -1
- package/dist/components/date-time-picker/date-time-picker.agent.d.ts.map +1 -1
- package/dist/components/date-time-picker/index.js +1 -1
- package/dist/components/dependent-selector/dependent-selector.agent.d.ts.map +1 -1
- package/dist/components/dependent-selector/index.js +1 -1
- package/dist/components/dialog/dialog.agent.d.ts.map +1 -1
- package/dist/components/dialog/index.js +1 -1
- package/dist/components/document-scanner/document-scanner.agent.d.ts.map +1 -1
- package/dist/components/document-scanner/index.js +1 -1
- package/dist/components/dropdown-menu/dropdown-menu.agent.d.ts.map +1 -1
- package/dist/components/dropdown-menu/index.js +1 -1
- package/dist/components/due-date-calculator/index.js +1 -1
- package/dist/components/editor-overlay/editor-overlay.d.ts.map +1 -1
- package/dist/components/email-input/index.js +1 -1
- package/dist/components/fetal-weight/index.js +1 -1
- package/dist/components/file-upload/file-upload.agent.d.ts.map +1 -1
- package/dist/components/file-upload/index.js +1 -1
- package/dist/components/fiscal-code-input/fiscal-code-input.agent.d.ts.map +1 -1
- package/dist/components/fiscal-code-input/index.js +1 -1
- package/dist/components/freemium-paywall/freemium-paywall.agent.d.ts.map +1 -1
- package/dist/components/freemium-paywall/freemium-paywall.d.ts +6 -0
- package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
- package/dist/components/freemium-paywall/index.js +1 -1
- package/dist/components/gestational-age-calculator/index.js +1 -1
- package/dist/components/hcg-doubling/index.js +1 -1
- package/dist/components/header-settings/header-settings.agent.d.ts.map +1 -1
- package/dist/components/header-settings/index.js +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/list/index.js +1 -1
- package/dist/components/list/list.agent.d.ts.map +1 -1
- package/dist/components/locale-picker/index.js +1 -1
- package/dist/components/locale-picker/locale-picker.agent.d.ts.map +1 -1
- package/dist/components/map-view/index.js +1 -1
- package/dist/components/map-view/map-view.agent.d.ts.map +1 -1
- package/dist/components/message-card/index.js +1 -1
- package/dist/components/message-card/message-card.agent.d.ts.map +1 -1
- package/dist/components/message-tray/index.js +1 -1
- package/dist/components/message-tray/message-tray.agent.d.ts.map +1 -1
- package/dist/components/multi-select/index.js +1 -1
- package/dist/components/multi-select/multi-select.agent.d.ts.map +1 -1
- package/dist/components/multi-select/multi-select.d.ts.map +1 -1
- package/dist/components/navigation-menu/index.js +1 -1
- package/dist/components/navigation-menu/navigation-menu.agent.d.ts.map +1 -1
- package/dist/components/notification-card/index.js +1 -1
- package/dist/components/notification-card/notification-card.agent.d.ts.map +1 -1
- package/dist/components/notification-tray/index.js +1 -1
- package/dist/components/notification-tray/notification-tray.agent.d.ts.map +1 -1
- package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
- package/dist/components/number-input/index.js +1 -1
- package/dist/components/number-input/number-input.agent.d.ts.map +1 -1
- package/dist/components/operator-hero/index.js +1 -1
- package/dist/components/operator-hero/operator-hero.agent.d.ts.map +1 -1
- package/dist/components/otp-input/index.js +1 -1
- package/dist/components/otp-input/otp-input.agent.d.ts.map +1 -1
- package/dist/components/pagination/index.js +1 -1
- package/dist/components/pagination/pagination.agent.d.ts.map +1 -1
- package/dist/components/password-input/index.js +1 -1
- package/dist/components/password-input/password-input.agent.d.ts.map +1 -1
- package/dist/components/patient-search/index.js +1 -1
- package/dist/components/patient-search/patient-search.agent.d.ts.map +1 -1
- package/dist/components/patient-summary-card/index.js +1 -1
- package/dist/components/patient-summary-card/patient-summary-card.agent.d.ts.map +1 -1
- package/dist/components/patient-table/cell-renderers/balance-badge-cell.d.ts +13 -0
- package/dist/components/patient-table/cell-renderers/balance-badge-cell.d.ts.map +1 -0
- package/dist/components/patient-table/cell-renderers/care-plan-status-cell.d.ts +43 -0
- package/dist/components/patient-table/cell-renderers/care-plan-status-cell.d.ts.map +1 -0
- package/dist/components/patient-table/cell-renderers/contact-cell.d.ts +45 -0
- package/dist/components/patient-table/cell-renderers/contact-cell.d.ts.map +1 -0
- package/dist/components/patient-table/cell-renderers/next-appointment-cell.d.ts +24 -0
- package/dist/components/patient-table/cell-renderers/next-appointment-cell.d.ts.map +1 -0
- package/dist/components/patient-table/cell-renderers/patient-identity-cell.d.ts +26 -0
- package/dist/components/patient-table/cell-renderers/patient-identity-cell.d.ts.map +1 -0
- package/dist/components/patient-table/columns.d.ts +102 -0
- package/dist/components/patient-table/columns.d.ts.map +1 -0
- package/dist/components/patient-table/index.d.ts +24 -0
- package/dist/components/patient-table/index.d.ts.map +1 -0
- package/dist/components/patient-table/index.js +13 -0
- package/dist/components/patient-table/index.js.map +1 -0
- package/dist/components/patient-table/patient-table.d.ts +138 -0
- package/dist/components/patient-table/patient-table.d.ts.map +1 -0
- package/dist/components/patient-table/types.d.ts +172 -0
- package/dist/components/patient-table/types.d.ts.map +1 -0
- package/dist/components/patient-table/use-responsive-columns.d.ts +109 -0
- package/dist/components/patient-table/use-responsive-columns.d.ts.map +1 -0
- package/dist/components/payment-card/index.js +1 -1
- package/dist/components/payment-form/index.js +1 -1
- package/dist/components/payment-form/payment-form.agent.d.ts.map +1 -1
- package/dist/components/pdf-viewer/index.js +1 -1
- package/dist/components/pdf-viewer/pdf-viewer.agent.d.ts.map +1 -1
- package/dist/components/periodontal-chart-card/index.js +1 -1
- package/dist/components/phone-input/index.js +1 -1
- package/dist/components/phone-input/phone-input.agent.d.ts.map +1 -1
- package/dist/components/popover/index.js +1 -1
- package/dist/components/popover/popover.agent.d.ts.map +1 -1
- package/dist/components/practice-results/index.js +1 -1
- package/dist/components/practice-results/practice-results.agent.d.ts.map +1 -1
- package/dist/components/pregnancy-dating/index.js +1 -1
- package/dist/components/pregnancy-weight-gain/index.js +1 -1
- package/dist/components/privacy-lock/index.js +1 -1
- package/dist/components/privacy-lock/privacy-lock.agent.d.ts.map +1 -1
- package/dist/components/product-hub-tray/index.js +1 -1
- package/dist/components/product-hub-tray/product-hub-panel.agent.d.ts.map +1 -1
- package/dist/components/product-hub-tray/product-hub-tray.agent.d.ts.map +1 -1
- package/dist/components/progress/index.js +1 -1
- package/dist/components/public-footer/index.js +1 -1
- package/dist/components/public-footer/public-footer.agent.d.ts.map +1 -1
- package/dist/components/public-footer/public-footer.d.ts.map +1 -1
- package/dist/components/public-header/index.js +1 -1
- package/dist/components/public-header/public-header.agent.d.ts.map +1 -1
- package/dist/components/qr-code/index.js +1 -1
- package/dist/components/qr-code/qr-code.agent.d.ts.map +1 -1
- package/dist/components/radio-group/index.js +1 -1
- package/dist/components/recaptcha-widget/index.js +1 -1
- package/dist/components/recaptcha-widget/recaptcha-widget.agent.d.ts.map +1 -1
- package/dist/components/resizable/index.js +1 -1
- package/dist/components/resizable/resizable.agent.d.ts.map +1 -1
- package/dist/components/resizable/resizable.d.ts.map +1 -1
- package/dist/components/reviews-panel/index.js +1 -1
- package/dist/components/reviews-panel/reviews-panel.agent.d.ts.map +1 -1
- package/dist/components/rich-text-editor/help-me-write-overlay.d.ts.map +1 -1
- package/dist/components/rich-text-editor/index.js +1 -1
- package/dist/components/rich-text-editor/rich-text-editor.agent.d.ts.map +1 -1
- package/dist/components/rich-text-editor/rich-text-editor.d.ts +15 -0
- package/dist/components/rich-text-editor/rich-text-editor.d.ts.map +1 -1
- package/dist/components/search-bar/index.js +1 -1
- package/dist/components/search-bar/search-bar.agent.d.ts.map +1 -1
- package/dist/components/search-input/index.js +2 -2
- package/dist/components/search-input/search-input.agent.d.ts.map +1 -1
- package/dist/components/select/index.js +1 -1
- package/dist/components/select/select.agent.d.ts.map +1 -1
- package/dist/components/session-countdown/index.js +1 -1
- package/dist/components/sheet/index.js +1 -1
- package/dist/components/sheet/sheet.agent.d.ts.map +1 -1
- package/dist/components/sidebar/index.js +1 -1
- package/dist/components/sidebar/sidebar.agent.d.ts.map +1 -1
- package/dist/components/sidebar/sidebar.d.ts +7 -0
- package/dist/components/sidebar/sidebar.d.ts.map +1 -1
- package/dist/components/sign-document/index.js +1 -1
- package/dist/components/sign-document/sign-document.agent.d.ts.map +1 -1
- package/dist/components/signature-capture/index.js +1 -1
- package/dist/components/signature-capture/signature-capture.agent.d.ts.map +1 -1
- package/dist/components/slider/index.js +1 -1
- package/dist/components/slider/slider.agent.d.ts.map +1 -1
- package/dist/components/sparkline/index.js +1 -1
- package/dist/components/sparkline/sparkline.agent.d.ts.map +1 -1
- package/dist/components/stepper-accordion/index.js +1 -1
- package/dist/components/stepper-accordion/stepper-accordion.agent.d.ts.map +1 -1
- package/dist/components/stepper-progress/index.js +1 -1
- package/dist/components/stepper-progress/stepper-progress.agent.d.ts.map +1 -1
- package/dist/components/suggestion-chip/index.js +1 -1
- package/dist/components/suggestion-chip/suggestion-chip.agent.d.ts.map +1 -1
- package/dist/components/switch/index.js +1 -1
- package/dist/components/switch/switch.agent.d.ts.map +1 -1
- package/dist/components/tabs/index.js +1 -1
- package/dist/components/tabs/tabs.agent.d.ts.map +1 -1
- package/dist/components/tabs/tabs.d.ts.map +1 -1
- package/dist/components/task-card/index.js +1 -1
- package/dist/components/task-card/task-card.agent.d.ts.map +1 -1
- package/dist/components/task-tray/index.js +1 -1
- package/dist/components/task-tray/task-tray.agent.d.ts.map +1 -1
- package/dist/components/text-area/index.js +1 -1
- package/dist/components/text-area/text-area.agent.d.ts.map +1 -1
- package/dist/components/text-input/index.js +1 -1
- package/dist/components/text-input/text-input.agent.d.ts.map +1 -1
- package/dist/components/theme-toggle/index.js +1 -1
- package/dist/components/theme-toggle/theme-toggle.agent.d.ts.map +1 -1
- package/dist/components/time-picker/index.js +1 -1
- package/dist/components/time-picker/time-picker.agent.d.ts.map +1 -1
- package/dist/components/timeline/index.js +1 -1
- package/dist/components/timeline/timeline.agent.d.ts.map +1 -1
- package/dist/components/toast/index.js +1 -1
- package/dist/components/toast/toast.agent.d.ts.map +1 -1
- package/dist/components/toast/toast.d.ts.map +1 -1
- package/dist/components/tooth-scheme/index.js +1 -1
- package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts.map +1 -1
- package/dist/components/transcript-panel/index.js +1 -1
- package/dist/components/transcript-panel/transcript-panel.agent.d.ts.map +1 -1
- package/dist/components/unit-converter/index.js +1 -1
- package/dist/components/unit-converter/unit-converter.agent.d.ts +4 -0
- package/dist/components/unit-converter/unit-converter.agent.d.ts.map +1 -0
- package/dist/components/unit-converter/unit-converter.d.ts +27 -0
- package/dist/components/unit-converter/unit-converter.d.ts.map +1 -1
- package/dist/components/warning-stack/index.js +1 -1
- package/dist/components/warning-stack/warning-stack.d.ts +9 -0
- package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
- package/dist/components/whatsapp-button/index.d.ts +1 -1
- package/dist/components/whatsapp-button/index.d.ts.map +1 -1
- package/dist/components/whatsapp-button/index.js +3 -2
- package/dist/components/whatsapp-button/whatsapp-button.d.ts +3 -0
- package/dist/components/whatsapp-button/whatsapp-button.d.ts.map +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/components/workflow/workflow.agent.d.ts.map +1 -1
- package/dist/i18n/locales/ar.d.ts +74 -0
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +76 -2
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +74 -0
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +76 -2
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +74 -0
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +76 -2
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +92 -0
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +94 -2
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +74 -0
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +76 -2
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +74 -0
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +76 -2
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +74 -0
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +76 -2
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +74 -0
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +76 -2
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +74 -0
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +76 -2
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +74 -0
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +76 -2
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +74 -0
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +76 -2
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +74 -0
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +76 -2
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +74 -0
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +76 -2
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +74 -0
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +76 -2
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +74 -0
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +76 -2
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +74 -0
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +76 -2
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +74 -0
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +76 -2
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +74 -0
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +76 -2
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +688 -673
- package/dist/index.js.map +1 -1
- package/dist/locales/ar.json +76 -2
- package/dist/locales/de.json +76 -2
- package/dist/locales/el.json +76 -2
- package/dist/locales/en.json +76 -2
- package/dist/locales/es.json +76 -2
- package/dist/locales/fr.json +76 -2
- package/dist/locales/hi.json +76 -2
- package/dist/locales/it.json +76 -2
- package/dist/locales/ja.json +76 -2
- package/dist/locales/nl.json +76 -2
- package/dist/locales/pl.json +76 -2
- package/dist/locales/pt.json +76 -2
- package/dist/locales/ro.json +76 -2
- package/dist/locales/ru.json +76 -2
- package/dist/locales/sq.json +76 -2
- package/dist/locales/sv.json +76 -2
- package/dist/locales/tr.json +76 -2
- package/dist/locales/zh.json +76 -2
- package/dist/patterns/alia-assistant/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/index.js +1 -1
- package/dist/patterns/patient-shell/index.js +1 -1
- package/dist/tokens.css +3 -2
- package/package.json +14 -1
- package/dist/_chunks/accordion-9lJSMMsZ.js.map +0 -1
- package/dist/_chunks/address-autocomplete-CT-9AOli.js +0 -358
- package/dist/_chunks/address-autocomplete-CT-9AOli.js.map +0 -1
- package/dist/_chunks/agenda-tray-T-BumlGZ.js.map +0 -1
- package/dist/_chunks/ai-prompt-input-BwEACCPm.js.map +0 -1
- package/dist/_chunks/ai-tools-rail-CInA_1-E.js.map +0 -1
- package/dist/_chunks/appointment-tray-BMl89NPW.js.map +0 -1
- package/dist/_chunks/audio-recorder-DjXLP4aF.js.map +0 -1
- package/dist/_chunks/autocomplete-CcCFlVf-.js.map +0 -1
- package/dist/_chunks/bishop-score-CjsB9bM-.js +0 -185
- package/dist/_chunks/bishop-score-CjsB9bM-.js.map +0 -1
- package/dist/_chunks/bmi-calculator-n-823_1V.js +0 -258
- package/dist/_chunks/bmi-calculator-n-823_1V.js.map +0 -1
- package/dist/_chunks/booking-L8-YP8BJ.js.map +0 -1
- package/dist/_chunks/breadcrumb-OTbaY70e.js.map +0 -1
- package/dist/_chunks/calendar-oYWOCrnf.js.map +0 -1
- package/dist/_chunks/care-plan-card-BwVUyUBb.js.map +0 -1
- package/dist/_chunks/care-plan-entry-card-VzdQHcOL.js.map +0 -1
- package/dist/_chunks/chart-Cg3e9EH9.js.map +0 -1
- package/dist/_chunks/chat-container-ogB4OskO.js.map +0 -1
- package/dist/_chunks/chat-input-B5zjNEUN.js.map +0 -1
- package/dist/_chunks/checkbox-DRcOdmXv.js.map +0 -1
- package/dist/_chunks/collapsible-X3oaLPU3.js.map +0 -1
- package/dist/_chunks/color-picker-FXpItIaF.js.map +0 -1
- package/dist/_chunks/combobox-BC-DFx8G.js.map +0 -1
- package/dist/_chunks/command-palette-BiPAAno-.js.map +0 -1
- package/dist/_chunks/contact-profile-card-7BMB85T6.js.map +0 -1
- package/dist/_chunks/copy-field-CCq7j6Zc.js.map +0 -1
- package/dist/_chunks/date-range-picker-C5BWfH_T.js.map +0 -1
- package/dist/_chunks/date-time-picker-Ze1My59T.js.map +0 -1
- package/dist/_chunks/dependent-selector-DpzGtr_J.js.map +0 -1
- package/dist/_chunks/dialog-DMGnSelc.js.map +0 -1
- package/dist/_chunks/document-scanner-D2qehl3-.js.map +0 -1
- package/dist/_chunks/dropdown-menu-DwwPovMZ.js.map +0 -1
- package/dist/_chunks/editable-currency-cell-renderer-D1ewvJKO.js +0 -2391
- package/dist/_chunks/editable-currency-cell-renderer-D1ewvJKO.js.map +0 -1
- package/dist/_chunks/file-upload-BosbPDb1.js.map +0 -1
- package/dist/_chunks/fiscal-code-input-DPtqluVb.js.map +0 -1
- package/dist/_chunks/freemium-paywall-CkWjv3o6.js.map +0 -1
- package/dist/_chunks/header-settings-CNOqIhoW.js.map +0 -1
- package/dist/_chunks/list-BOwqwy03.js.map +0 -1
- package/dist/_chunks/locale-picker-C9JmBht3.js.map +0 -1
- package/dist/_chunks/map-view-Tb5VfK9Y.js.map +0 -1
- package/dist/_chunks/message-card.agent-4IeIgrnJ.js.map +0 -1
- package/dist/_chunks/message-tray-CVyJajVJ.js.map +0 -1
- package/dist/_chunks/multi-select-BcPylvHR.js.map +0 -1
- package/dist/_chunks/navigation-menu-C6lBYVv9.js.map +0 -1
- package/dist/_chunks/notification-card.agent-Rqt3ofk9.js.map +0 -1
- package/dist/_chunks/notification-tray-DlgenTEe.js.map +0 -1
- package/dist/_chunks/number-input-Dj5L3pXK.js.map +0 -1
- package/dist/_chunks/operator-hero-f_KaRhw5.js.map +0 -1
- package/dist/_chunks/otp-input-xQ4Ps5VY.js.map +0 -1
- package/dist/_chunks/pagination-DQOgnxxw.js.map +0 -1
- package/dist/_chunks/patient-search-DR9XUYRQ.js.map +0 -1
- package/dist/_chunks/patient-summary-card-hEmr4eTW.js.map +0 -1
- package/dist/_chunks/payment-form-nXocS_MX.js.map +0 -1
- package/dist/_chunks/pdf-viewer-GsfNqeeT.js.map +0 -1
- package/dist/_chunks/phone-input-DVXhNlIl.js.map +0 -1
- package/dist/_chunks/popover-DTbfAuR0.js.map +0 -1
- package/dist/_chunks/practice-results-DND2SAt7.js.map +0 -1
- package/dist/_chunks/privacy-lock-C7JyMf0y.js.map +0 -1
- package/dist/_chunks/product-hub-panel-CAXDFeGP.js.map +0 -1
- package/dist/_chunks/public-footer.agent-CfXuW1x6.js.map +0 -1
- package/dist/_chunks/qr-code-DNXhi6se.js.map +0 -1
- package/dist/_chunks/recaptcha-widget-BCNHsgqt.js.map +0 -1
- package/dist/_chunks/registry-nPAVE19X.js +0 -21
- package/dist/_chunks/registry-nPAVE19X.js.map +0 -1
- package/dist/_chunks/resizable-3vzqDlg6.js.map +0 -1
- package/dist/_chunks/reviews-panel-DBktKm7i.js.map +0 -1
- package/dist/_chunks/rich-text-editor-DAeCXiQG.js +0 -1973
- package/dist/_chunks/rich-text-editor-DAeCXiQG.js.map +0 -1
- package/dist/_chunks/search-bar-SY2BcV2N.js.map +0 -1
- package/dist/_chunks/search-input.agent-CfZvViOd.js.map +0 -1
- package/dist/_chunks/select-CEtRcon5.js.map +0 -1
- package/dist/_chunks/sheet-taJer-Ha.js.map +0 -1
- package/dist/_chunks/sidebar-DaB4ulxH.js.map +0 -1
- package/dist/_chunks/sign-document-CdAiHiCh.js.map +0 -1
- package/dist/_chunks/signature-capture-COi0Uiqu.js.map +0 -1
- package/dist/_chunks/slider-BHWzXdjt.js.map +0 -1
- package/dist/_chunks/sparkline-DGhCSw8M.js.map +0 -1
- package/dist/_chunks/stepper-accordion.agent-C4quJ-MD.js.map +0 -1
- package/dist/_chunks/stepper-progress-DDjq5nei.js.map +0 -1
- package/dist/_chunks/switch-BJ6HD3Mn.js.map +0 -1
- package/dist/_chunks/tabs-BIQ0ew1T.js.map +0 -1
- package/dist/_chunks/task-card.agent-CUPKYd7w.js.map +0 -1
- package/dist/_chunks/task-tray-CAncV-QQ.js.map +0 -1
- package/dist/_chunks/text-area-BIx0tZ05.js.map +0 -1
- package/dist/_chunks/text-input-BaClJL8Y.js.map +0 -1
- package/dist/_chunks/theme-toggle-DETmSu_h.js.map +0 -1
- package/dist/_chunks/time-picker-B5umYwfv.js.map +0 -1
- package/dist/_chunks/timeline-DQa5Tyz4.js.map +0 -1
- package/dist/_chunks/tooth-scheme-BIx1O2aJ.js.map +0 -1
- package/dist/_chunks/transcript-panel-CLHmv83g.js.map +0 -1
- package/dist/_chunks/unit-converter-C1V3ACM9.js +0 -196
- package/dist/_chunks/unit-converter-C1V3ACM9.js.map +0 -1
- package/dist/_chunks/use-password-requirements-DsgduV1x.js.map +0 -1
- package/dist/_chunks/warning-stack-Cv4fr5zo.js +0 -220
- package/dist/_chunks/warning-stack-Cv4fr5zo.js.map +0 -1
- package/dist/_chunks/whatsapp-button-DUjlWGKf.js.map +0 -1
- package/dist/_chunks/workflow-map-JAZryZJr.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-form-DvjwYVIT.js","sources":["../../src/tokens/themes/bridges/stripe-appearance.ts","../../src/components/payment-form/payment-form.agent.ts","../../src/components/payment-form/payment-form.tsx"],"sourcesContent":["import type { Appearance } from '@stripe/stripe-js';\n\n/**\n * Reads the current design-system tokens from a theme-root element and maps\n * them to Stripe Elements' Appearance API. `root` defaults to\n * `document.documentElement` but consumers can pass a scoped theme wrapper\n * (e.g. a modal with its own `.theme-accessible` override) so that Stripe\n * iframes pick up the right token set.\n *\n * Tokens referenced: --primary, --background, --foreground, --muted,\n * --muted-foreground, --border, --destructive, --radius-md, --font-sans,\n * --font-size-base, --spacing-sm, --animation-duration, --focus-ring-width,\n * --ring.\n *\n * No hex / rgb / hsl literals — every value flows from the token layer.\n */\n\nfunction isBrowser(): boolean {\n return typeof document !== 'undefined' && typeof window !== 'undefined';\n}\n\nexport function getStripeAppearance(root?: HTMLElement): Appearance {\n if (!isBrowser()) {\n return { theme: 'stripe' };\n }\n\n const target = root ?? document.documentElement;\n const styles = getComputedStyle(target);\n const read = (token: string) => styles.getPropertyValue(token).trim();\n const isDark = target.classList.contains('theme-dark');\n\n return {\n theme: isDark ? 'night' : 'stripe',\n variables: {\n colorPrimary: read('--primary'),\n colorBackground: read('--background'),\n colorText: read('--foreground'),\n colorDanger: read('--destructive'),\n colorTextSecondary: read('--muted-foreground'),\n colorTextPlaceholder: read('--muted-foreground'),\n borderRadius: read('--radius-md'),\n fontFamily: read('--font-sans'),\n fontSizeBase: read('--font-size-base'),\n // Stripe multiplies spacingUnit throughout every Element; --spacing-sm\n // gives readable density. Keep this in sync with the JSDoc above.\n spacingUnit: read('--spacing-sm'),\n },\n rules: {\n '.Input': {\n backgroundColor: read('--background'),\n border: `1px solid ${read('--border')}`,\n color: read('--foreground'),\n padding: read('--spacing-sm'),\n transition: `border-color ${read('--animation-duration')} ease-out`,\n },\n '.Input:focus': {\n borderColor: read('--primary'),\n boxShadow: `0 0 0 ${read('--focus-ring-width')} ${read('--ring')}`,\n outline: 'none',\n },\n '.Input--invalid': {\n borderColor: read('--destructive'),\n color: read('--foreground'),\n },\n '.Label': {\n color: read('--foreground'),\n fontWeight: read('--font-weight-medium'),\n fontSize: read('--font-size-sm'),\n },\n '.Error': {\n color: read('--destructive'),\n fontSize: read('--font-size-sm'),\n },\n '.Tab': {\n border: `1px solid ${read('--border')}`,\n backgroundColor: read('--background'),\n color: read('--foreground'),\n },\n '.Tab--selected': {\n borderColor: read('--primary'),\n backgroundColor: read('--background'),\n color: read('--primary'),\n },\n // Accordion method rows (the `accordion` layout): keep Stripe's native\n // per-method card structure, restyled with our tokens — our border +\n // radius, our background, `--primary` on the selected row, no extra shadow.\n '.AccordionItem': {\n backgroundColor: read('--background'),\n border: `1px solid ${read('--border')}`,\n borderRadius: read('--radius-md'),\n boxShadow: 'none',\n },\n '.AccordionItem--selected': {\n borderColor: read('--primary'),\n backgroundColor: read('--background'),\n },\n // Stripe's in-method notice blocks (e.g. PayPal's \"you'll be redirected\")\n // otherwise render in their own bordered box — a card nested inside the\n // selected method card. Flatten to inline icon + text, no inner box.\n '.Block': {\n border: 'none',\n borderRadius: '0',\n boxShadow: 'none',\n backgroundColor: 'transparent',\n },\n },\n };\n}\n\n/**\n * Calls `onChange(getStripeAppearance(root))` whenever the theme root's\n * class list mutates (theme switch) or the user toggles\n * `prefers-color-scheme` / `prefers-reduced-motion`. Returns an\n * unsubscribe function.\n */\nexport function subscribeStripeAppearance(\n onChange: (next: Appearance) => void,\n root?: HTMLElement,\n): () => void {\n if (!isBrowser()) return () => undefined;\n\n const target = root ?? document.documentElement;\n const emit = () => onChange(getStripeAppearance(root));\n\n const observer = new MutationObserver(emit);\n observer.observe(target, {\n attributes: true,\n attributeFilter: ['class', 'dir', 'lang'],\n });\n\n const schemeMql = window.matchMedia('(prefers-color-scheme: dark)');\n const motionMql = window.matchMedia('(prefers-reduced-motion: reduce)');\n schemeMql.addEventListener('change', emit);\n motionMql.addEventListener('change', emit);\n\n return () => {\n observer.disconnect();\n schemeMql.removeEventListener('change', emit);\n motionMql.removeEventListener('change', emit);\n };\n}\n","import type { AgentAdapter } from '../../agent/types';\nimport type { PaymentFormHandle } from './payment-form';\n\nexport const paymentFormAgent: AgentAdapter<PaymentFormHandle> = {\n id: 'payment-form',\n capabilities: ['submit'],\n state: {},\n actions: {\n submit: {\n safety: 'destructive',\n // Charges an external payment processor — irreversible, hits a system\n // outside this UI.\n openWorld: true,\n returns: 'Promise<void>',\n errors: [\n 'Validation failed (incomplete or invalid card details).',\n 'Payment was declined by the processor.',\n 'Network or processor error during the charge.',\n ],\n descriptionKey: 'ui.agent.paymentForm.actions.submit',\n description:\n 'Submit the payment. Charges the configured payment method — irreversible.',\n invoke: (handle) => handle.submit(),\n },\n reset: {\n safety: 'destructive',\n idempotent: true,\n descriptionKey: 'ui.agent.paymentForm.actions.reset',\n description:\n 'Reset the form to its initial state. Loses any in-progress input.',\n invoke: (handle) => {\n handle.reset();\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'payment-form' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","/* ------------------------------------------------------------------ */\n/* PaymentForm — Stripe Elements wrapper (PCI DSS SAQ-A). */\n/* */\n/* - Library: `@stripe/react-stripe-js` + `@stripe/stripe-js` (see */\n/* `src/docs/08-third-party.mdx §Payments`). Card number, expiry, */\n/* CVC, and postal code all live inside Stripe-hosted iframes on */\n/* `js.stripe.com` — raw PAN never touches our origin, keeping us */\n/* inside PCI DSS SAQ-A scope. */\n/* */\n/* - Theming: the `stripe-appearance` bridge snapshots our tokens into */\n/* Stripe's Appearance API (`variables`, `rules`). A */\n/* `MutationObserver` on `<html class>` re-runs the snapshot when */\n/* the user flips theme so the embedded iframes repaint. */\n/* */\n/* - Security invariants enforced in this file: */\n/* 1. No `<input type=\"tel\" name=\"card\">` anywhere. */\n/* 2. Error strings are sanitised via `stripCardLikeDigits` before */\n/* forwarding to `onError` (replaces any `\\b\\d{4,}\\b` with */\n/* `****`). */\n/* 3. Element change events are never logged; any dev-only logging */\n/* is gated behind `import.meta.env.DEV` — never runs in prod. */\n/* */\n/* TODO: */\n/* - Stripe's `direction: 'rtl'` is not part of the current */\n/* `Appearance` TypeScript type; we rely on CSS mirroring of our */\n/* chrome via logical properties and let Stripe lay out the iframe */\n/* ltr for now. Revisit when @stripe/stripe-js publishes the type. */\n/* - No `<CardNumberElement>` / split-fields story — `PaymentElement` */\n/* handles tabs + card-only modes via its own `layout` option. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type FormEvent,\n type ReactElement,\n} from 'react';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Spinner } from '../spinner';\nimport { Alert } from '../alert';\nimport {\n loadStripe,\n type Stripe,\n type Appearance,\n type StripeElementLocale,\n type StripeElementsOptions,\n} from '@stripe/stripe-js';\nimport {\n Elements,\n PaymentElement,\n AddressElement,\n useElements,\n useStripe,\n} from '@stripe/react-stripe-js';\n\nimport {\n getStripeAppearance,\n subscribeStripeAppearance,\n} from '../../tokens/themes/bridges/stripe-appearance';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { paymentFormAgent } from './payment-form.agent';\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport type PaymentCurrency = string; // ISO-4217\n\nexport interface PaymentFormProps {\n /** Opaque instance id — emitted as `data-component-id` for the agent registry. */\n id?: string;\n /**\n * Client secret from your server, created via the PaymentIntents API.\n *\n * Omit to use **deferred-intent mode** — the Payment Element renders from\n * just the publishable key (no `clientSecret`, no backend round-trip up\n * front). In deferred mode supply `onCreatePaymentIntent` to actually\n * confirm: your server mints + returns the client secret at submit time.\n */\n clientSecret?: string;\n /**\n * Deferred-intent setup: `'payment'` collects a charge, `'setup'` saves a\n * method for later. Ignored when `clientSecret` is supplied (the secret's\n * own intent type wins). Defaults to `'payment'`.\n */\n mode?: 'payment' | 'setup';\n /**\n * Deferred-confirm callback. Called at submit time (after client-side\n * field validation succeeds) so your server can mint a PaymentIntent and\n * return its `client_secret`. The returned secret is used ONLY to confirm\n * and is never logged or sent to any third-party origin. When omitted in\n * deferred mode the form runs in PREVIEW: fields render + validate, but no\n * charge is attempted.\n */\n onCreatePaymentIntent?: () => Promise<string>;\n /** Stripe publishable key (`pk_test_…` / `pk_live_…`). */\n publishableKey: string;\n /** ISO-4217 currency code (e.g. 'EUR', 'USD', 'JPY'). */\n currency: PaymentCurrency;\n /** Amount in the currency's smallest unit (cents for EUR/USD, yen for JPY). */\n amount: number;\n /** Called with the PaymentIntent id on successful confirmation. */\n onSuccess?: (paymentIntentId: string) => void;\n /** Called with a sanitised error (no PAN digits, no Stripe English strings). */\n onError?: (error: { code: string; translatedMessage: string }) => void;\n /** Show the billing-address collector below the payment fields. */\n billingAddress?: boolean;\n /** Locale override — defaults to the active i18next locale. */\n locale?: string;\n /** Accessible label for the form. */\n ariaLabel?: string;\n /** URL Stripe redirects to when a payment method requires it. */\n returnUrl?: string;\n /** Pre-injected Stripe instance — used by tests + stories to bypass the network. */\n stripePromise?: Promise<Stripe | null> | null;\n /**\n * Payment Element layout. `tabs` (default) renders methods as a tile row —\n * best in wide containers. `accordion` stacks them as full-width rows — use\n * it in narrow columns (< ~400px) where Stripe's tab row clips a partial tile.\n */\n layout?: 'tabs' | 'accordion';\n className?: string;\n}\n\nexport interface PaymentFormHandle {\n /** Programmatically submit the form (same flow as the Pay button). */\n submit: () => Promise<void>;\n /** Reset the form to its initial state. */\n reset: () => void;\n}\n\n/* ------------------------------------------------------------------ */\n/* Currency helpers */\n/* ------------------------------------------------------------------ */\n\n/**\n * Currencies that Stripe bills in their base unit (no decimals). Source:\n * https://stripe.com/docs/currencies#zero-decimal — list pinned per\n * 08-third-party.mdx.\n */\nconst ZERO_DECIMAL_CURRENCIES = new Set<string>([\n 'BIF',\n 'CLP',\n 'DJF',\n 'GNF',\n 'IDR',\n 'JPY',\n 'KMF',\n 'KRW',\n 'MGA',\n 'PYG',\n 'RWF',\n 'UGX',\n 'VND',\n 'VUV',\n 'XAF',\n 'XOF',\n 'XPF',\n]);\n\nexport function formatPaymentAmount(\n amount: number,\n currency: string,\n locale: string,\n): string {\n const iso = currency.toUpperCase();\n const major = ZERO_DECIMAL_CURRENCIES.has(iso) ? amount : amount / 100;\n try {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: iso,\n }).format(major);\n } catch {\n // Invalid locale/currency pair — fall back to a safe format so we\n // never leak raw amount integers into the UI.\n return new Intl.NumberFormat('en', {\n style: 'currency',\n currency: iso,\n }).format(major);\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* Return URL validation */\n/* ------------------------------------------------------------------ */\n\n/**\n * Resolve `returnUrl` against the current origin. Accepts:\n * - absolute URLs on the same origin as `window.location`\n * - relative paths (resolved against the current origin)\n * Rejects (returns `null`):\n * - cross-origin URLs — would leak `payment_intent_client_secret`\n * - `javascript:` / `data:` / `file:` / `blob:` schemes\n * - SSR contexts (no `window`) — the submit path requires a browser\n * anyway, so rejecting here is the safer default.\n * See security-hardening.mdx.\n */\nexport function validateReturnUrl(\n returnUrl: string | undefined,\n): string | null {\n if (returnUrl === undefined) return null;\n const raw = returnUrl.trim();\n if (raw === '') return null;\n if (typeof window === 'undefined') return null;\n try {\n const resolved = new URL(raw, window.location.href);\n const allowedSchemes = new Set(['http:', 'https:']);\n if (!allowedSchemes.has(resolved.protocol)) return null;\n if (resolved.origin !== window.location.origin) return null;\n return resolved.toString();\n } catch {\n return null;\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* Error sanitisation */\n/* ------------------------------------------------------------------ */\n\n/**\n * Replace any run of 4+ consecutive digits with `****`. Called before any\n * error text leaves the wrapper. Defensive: even though Stripe's error\n * strings don't normally contain PANs, a future SDK change could, and we\n * want a hard guarantee that `console` / analytics / Sentry breadcrumbs\n * stay clear of anything that looks like card data.\n */\nexport function stripCardLikeDigits(message: string): string {\n if (!message) return message;\n // Deliberately no word boundaries: a PAN run embedded between word\n // characters (e.g. \"CARD4242424242424242DECLINED\") must still be masked.\n return message.replace(/\\d{4,}/g, '****');\n}\n\n/**\n * Map a Stripe error code (e.g. `card_declined`, `incorrect_number`) to a\n * translation key under `payment.error.*`. Unknown codes fall through to\n * `payment.error.generic`.\n */\nexport function stripeErrorCodeToI18nKey(code: string | undefined): string {\n switch (code) {\n case 'incorrect_number':\n case 'invalid_number':\n return 'payment.error.cardNumber';\n case 'invalid_expiry_month':\n case 'invalid_expiry_year':\n case 'expired_card':\n return 'payment.error.expiry';\n case 'invalid_cvc':\n case 'incorrect_cvc':\n return 'payment.error.cvc';\n case 'incorrect_zip':\n case 'invalid_zip':\n return 'payment.error.postalCode';\n case 'card_declined':\n case 'do_not_honor':\n case 'generic_decline':\n return 'payment.error.declined';\n case 'network_error':\n case 'api_connection_error':\n return 'payment.error.network';\n default:\n return 'payment.error.generic';\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst formVariants = cva(\n [\n 'ds:payment-form-alfadocs ds:flex ds:flex-col',\n 'ds:gap-[var(--spacing-md)]',\n // Transparent, padding-less container — the consuming surface (a Card, the\n // check-in step, a checkout column) owns the card chrome + padding, so the\n // Stripe method boxes never read as cards nested inside another card.\n 'ds:text-[var(--foreground)]',\n 'ds:aria-disabled:opacity-[var(--opacity-50)] ds:aria-disabled:cursor-not-allowed',\n ].join(' '),\n);\n\nconst fieldLabelVariants = cva(\n ['ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]'].join(' '),\n);\n\nconst labelTextVariants = cva(\n ['type-label', 'ds:text-[var(--foreground)]'].join(' '),\n);\n\nconst amountSummaryVariants = cva(\n [\n 'ds:flex ds:items-baseline ds:justify-between',\n 'ds:gap-[var(--spacing-sm)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]',\n 'ds:bg-[var(--muted)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:text-[var(--foreground)]',\n ].join(' '),\n);\n\nconst submitButtonVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:justify-center ds:gap-[var(--spacing-xs)]',\n 'ds:[min-block-size:var(--min-target-size)]',\n 'ds:[min-inline-size:var(--min-target-size)]',\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:bg-[var(--primary)] ds:text-[var(--primary-foreground)]',\n 'ds:text-[length:var(--font-size-base)] ds:font-medium',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:hover:bg-[var(--primary-hover)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[var(--ring)]',\n 'ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n 'ds:aria-disabled:opacity-[var(--opacity-50)] ds:aria-disabled:cursor-not-allowed',\n 'ds:aria-busy:cursor-wait',\n ].join(' '),\n);\n\n/* ------------------------------------------------------------------ */\n/* Inner form — lives inside the <Elements> provider */\n/* ------------------------------------------------------------------ */\n\ninterface InnerPaymentFormProps {\n amount: number;\n currency: string;\n locale: string;\n billingAddress: boolean;\n returnUrl: string | undefined;\n /** Present in immediate mode; `undefined` in deferred mode. */\n clientSecret: string | undefined;\n /** Deferred-confirm callback; `undefined` → preview (validate-only). */\n onCreatePaymentIntent: PaymentFormProps['onCreatePaymentIntent'];\n onSuccess: PaymentFormProps['onSuccess'];\n onError: PaymentFormProps['onError'];\n layout: NonNullable<PaymentFormProps['layout']>;\n}\n\nfunction InnerPaymentForm(props: InnerPaymentFormProps): ReactElement {\n const {\n amount,\n currency,\n locale,\n billingAddress,\n returnUrl,\n clientSecret,\n onCreatePaymentIntent,\n onSuccess,\n onError,\n layout,\n } = props;\n\n const { t } = useTranslation();\n const stripe = useStripe();\n const elements = useElements();\n\n const rawId = useId();\n const idSafe = useMemo(\n () => `pay-${rawId.replace(/[^a-zA-Z0-9-_]/g, '')}`,\n [rawId],\n );\n const paymentFieldId = `${idSafe}-payment`;\n const addressFieldId = `${idSafe}-address`;\n const errorId = `${idSafe}-error`;\n\n const [processing, setProcessing] = useState(false);\n const [elementComplete, setElementComplete] = useState(false);\n const [errorKey, setErrorKey] = useState<string | null>(null);\n const [errorMessage, setErrorMessage] = useState<string>('');\n\n const onSuccessRef = useRef(onSuccess);\n const onErrorRef = useRef(onError);\n useEffect(() => {\n onSuccessRef.current = onSuccess;\n onErrorRef.current = onError;\n }, [onSuccess, onError]);\n\n const handleSubmit = useCallback(\n async (event?: FormEvent<HTMLFormElement>): Promise<void> => {\n if (event) event.preventDefault();\n if (!stripe || !elements) return;\n if (processing) return;\n\n setProcessing(true);\n setErrorKey(null);\n setErrorMessage('');\n\n // The single sanitise → map → setError → onError pipeline. Every error\n // surfaced by either path (immediate or deferred) flows through here so\n // raw Stripe English / PAN-like digit runs can never reach the UI or\n // `onError`. `rawMessage` is sanitised; the i18n key is mapped from\n // the Stripe error code.\n const reportError = (\n code: string,\n rawMessage: string | undefined,\n ): void => {\n const key = stripeErrorCodeToI18nKey(code);\n // CRITICAL: sanitise before storing OR forwarding.\n const safe = stripCardLikeDigits(rawMessage ?? '');\n setErrorKey(key);\n setErrorMessage(t(key));\n onErrorRef.current?.({\n code,\n translatedMessage: safe || t(key),\n });\n };\n\n // Validate returnUrl at the boundary so even a careless consumer\n // cannot leak payment_intent_client_secret to a third-party origin.\n const safeReturnUrl = validateReturnUrl(returnUrl);\n if (returnUrl !== undefined && safeReturnUrl === null) {\n setErrorKey('payment.error.invalidReturnUrl');\n setErrorMessage(t('payment.error.invalidReturnUrl'));\n onErrorRef.current?.({\n code: 'invalid_return_url',\n translatedMessage: t('payment.error.invalidReturnUrl'),\n });\n setProcessing(false);\n return;\n }\n\n const confirmParams = safeReturnUrl ? { return_url: safeReturnUrl } : {};\n\n try {\n if (clientSecret !== undefined) {\n // ----- Immediate mode: the consumer already minted the secret. ---\n const result = await stripe.confirmPayment({\n elements,\n confirmParams,\n redirect: 'if_required',\n });\n\n if (result.error) {\n reportError(result.error.code ?? 'generic', result.error.message);\n return;\n }\n\n // Success path — only the PaymentIntent id leaves the wrapper.\n if (result.paymentIntent) {\n onSuccessRef.current?.(result.paymentIntent.id);\n }\n return;\n }\n\n // ----- Deferred-intent mode: no secret up front. -----------------\n // Run client-side field validation first; on failure we run the\n // SAME sanitise/map/report pipeline and stop (no secret minted).\n const { error: submitError } = await elements.submit();\n if (submitError) {\n reportError(submitError.code ?? 'generic', submitError.message);\n return;\n }\n\n // No confirm callback → PREVIEW mode. The field validation above is\n // the end of the flow: no secret is minted, no charge is attempted,\n // and we surface no error — the fields simply validated.\n if (!onCreatePaymentIntent) {\n return;\n }\n\n // Mint the secret on the consumer's server, then confirm with it.\n // The minted secret is used ONLY here and is never logged or sent to\n // a third-party origin.\n const mintedSecret = await onCreatePaymentIntent();\n const result = await stripe.confirmPayment({\n elements,\n clientSecret: mintedSecret,\n confirmParams,\n redirect: 'if_required',\n });\n\n if (result.error) {\n reportError(result.error.code ?? 'generic', result.error.message);\n return;\n }\n\n if (result.paymentIntent) {\n onSuccessRef.current?.(result.paymentIntent.id);\n }\n } catch (err: unknown) {\n const raw = err instanceof Error ? err.message : '';\n // Generic, sanitised — covers a thrown onCreatePaymentIntent and any\n // unexpected SDK rejection. Never surface the raw thrown text.\n reportError('unexpected', raw);\n } finally {\n setProcessing(false);\n }\n },\n [\n stripe,\n elements,\n processing,\n returnUrl,\n clientSecret,\n onCreatePaymentIntent,\n t,\n ],\n );\n\n // Imperative submit hook used by the outer component's ref handle.\n useEffect(() => {\n const host = document.getElementById(idSafe);\n if (!host) return;\n const submitter = () => {\n void handleSubmit();\n };\n host.addEventListener('payment-form:submit', submitter);\n return () => host.removeEventListener('payment-form:submit', submitter);\n }, [idSafe, handleSubmit]);\n\n // Preview mode = deferred (no clientSecret) with no confirm callback. There\n // no charge happens, so we keep the button enabled even before the fields\n // report complete: clicking it triggers `elements.submit()` validation,\n // which is the entire point of the preview.\n const isPreview = clientSecret === undefined && !onCreatePaymentIntent;\n const submitDisabled =\n !stripe || !elements || processing || (!isPreview && !elementComplete);\n\n return (\n <form\n id={idSafe}\n onSubmit={handleSubmit}\n aria-label={t('payment.ariaLabel')}\n aria-busy={processing || undefined}\n noValidate\n >\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n <div className={amountSummaryVariants()}>\n <span className={labelTextVariants()}>\n {t('payment.amountLabel')}\n </span>\n <span className=\"type-title-card\" data-testid=\"payment-amount\">\n {formatPaymentAmount(amount, currency, locale)}\n </span>\n </div>\n\n <label\n htmlFor={paymentFieldId}\n className={fieldLabelVariants()}\n data-testid=\"payment-field\"\n >\n <span className={labelTextVariants()}>\n {t('payment.fields.card')}\n </span>\n <PaymentElement\n id={paymentFieldId}\n options={{\n // `tabs` = method tiles (Card selected by default); `accordion`\n // = full-width stacked rows for narrow columns where the tab row\n // clips. Stripe owns overflow + tab alignment either way.\n layout:\n layout === 'accordion'\n ? { type: 'accordion', defaultCollapsed: true }\n : { type: 'tabs' },\n }}\n onChange={(ev) => {\n // NOTE: never log `ev` — change events may include hints\n // about field contents. Keep only the boolean completeness.\n setElementComplete(ev.complete === true);\n if (ev.complete) {\n setErrorKey(null);\n setErrorMessage('');\n }\n }}\n />\n </label>\n\n {billingAddress ? (\n <label\n htmlFor={addressFieldId}\n className={fieldLabelVariants()}\n data-testid=\"payment-address\"\n >\n <span className={labelTextVariants()}>\n {t('payment.billingAddress')}\n </span>\n <AddressElement id={addressFieldId} options={{ mode: 'billing' }} />\n </label>\n ) : null}\n\n {errorKey ? (\n <Alert\n id={errorId}\n variant=\"error\"\n live=\"polite\"\n data-testid=\"payment-error\"\n >\n <Alert.Description>{errorMessage}</Alert.Description>\n </Alert>\n ) : null}\n\n <button\n type=\"submit\"\n aria-disabled={submitDisabled || undefined}\n aria-busy={processing || undefined}\n aria-describedby={errorKey ? errorId : undefined}\n className={submitButtonVariants()}\n data-testid=\"payment-submit\"\n >\n {processing ? (\n <>\n <Spinner\n variant=\"pulse\"\n size=\"sm\"\n label={t('payment.processing')}\n />\n <span>{t('payment.processing')}</span>\n </>\n ) : (\n <span>\n {t('payment.submit', {\n amount: formatPaymentAmount(amount, currency, locale),\n })}\n </span>\n )}\n </button>\n </div>\n </form>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* PaymentForm — outer wrapper */\n/* ------------------------------------------------------------------ */\n\n/**\n * Stripe ships a closed union of supported locales; anything outside it\n * must fall through to `'auto'` (Stripe picks the best match from the\n * browser). We also normalise the legacy `cn` code to `zh` per\n * `src/docs/06-i18n.mdx`.\n */\nconst STRIPE_LOCALES = new Set<StripeElementLocale>([\n 'auto',\n 'ar',\n 'bg',\n 'cs',\n 'da',\n 'de',\n 'el',\n 'en',\n 'en-AU',\n 'en-CA',\n 'en-NZ',\n 'en-GB',\n 'es',\n 'es-ES',\n 'es-419',\n 'et',\n 'fi',\n 'fil',\n 'fr',\n 'fr-CA',\n 'fr-FR',\n 'he',\n 'hu',\n 'hr',\n 'id',\n 'it',\n 'it-IT',\n 'ja',\n 'ko',\n 'lt',\n 'lv',\n 'ms',\n 'mt',\n 'nb',\n 'nl',\n 'no',\n 'pl',\n 'pt',\n 'pt-BR',\n 'ro',\n 'ru',\n 'sk',\n 'sl',\n 'sv',\n 'th',\n 'tr',\n 'vi',\n 'zh',\n 'zh-HK',\n 'zh-TW',\n]);\n\nfunction normaliseLocale(input: string): StripeElementLocale {\n if (!input) return 'auto';\n const candidate = input === 'cn' ? 'zh' : input;\n if ((STRIPE_LOCALES as Set<string>).has(candidate)) {\n return candidate as StripeElementLocale;\n }\n // Try stripping region (\"en-US\" → \"en\") before giving up.\n const base = candidate.split('-')[0];\n if ((STRIPE_LOCALES as Set<string>).has(base)) {\n return base as StripeElementLocale;\n }\n return 'auto';\n}\n\nexport const PaymentForm = forwardRef<HTMLDivElement, PaymentFormProps>(\n (\n {\n id,\n clientSecret,\n mode = 'payment',\n onCreatePaymentIntent,\n publishableKey,\n currency,\n amount,\n onSuccess,\n onError,\n billingAddress = false,\n locale,\n ariaLabel,\n returnUrl,\n stripePromise: injectedStripe,\n layout = 'tabs',\n className,\n },\n ref,\n ) => {\n const { i18n } = useTranslation();\n const activeLocale = normaliseLocale(locale ?? i18n.language ?? 'en');\n\n // Stripe instance — pre-injected (tests/stories) or lazily loaded.\n const [stripeInstance, setStripeInstance] =\n useState<Promise<Stripe | null> | null>(injectedStripe ?? null);\n\n useEffect(() => {\n if (injectedStripe !== undefined) {\n setStripeInstance(injectedStripe);\n return;\n }\n if (!publishableKey) {\n setStripeInstance(null);\n return;\n }\n // `loadStripe` is cached by the SDK — safe to call per mount.\n setStripeInstance(loadStripe(publishableKey));\n }, [injectedStripe, publishableKey]);\n\n // Appearance bridge — snapshot + subscribe.\n const [appearance, setAppearance] = useState<Appearance>(() =>\n getStripeAppearance(),\n );\n useEffect(() => {\n setAppearance(getStripeAppearance());\n const unsubscribe = subscribeStripeAppearance(setAppearance);\n return unsubscribe;\n }, []);\n\n // Imperative handle — dispatch a custom event at the inner form so we\n // can trigger the same submit path as the button without leaking refs\n // through the Stripe `<Elements>` provider (which owns its own tree).\n const hostRef = useRef<HTMLDivElement>(null);\n\n const agentHandle = useMemo<PaymentFormHandle>(\n () => ({\n submit: async () => {\n const form = hostRef.current?.querySelector('form');\n if (form) {\n form.dispatchEvent(\n new CustomEvent('payment-form:submit', { bubbles: true }),\n );\n }\n },\n reset: () => {\n const form = hostRef.current?.querySelector('form');\n if (form instanceof HTMLFormElement) {\n form.reset();\n }\n },\n }),\n [],\n );\n useImperativeHandle(ref, () => hostRef.current as HTMLDivElement, []);\n useAgentRegistration(paymentFormAgent, agentHandle, id);\n\n const elementsOptions = useMemo<StripeElementsOptions>(\n () =>\n clientSecret !== undefined\n ? // Immediate mode — the consumer already created the intent.\n { clientSecret, appearance, locale: activeLocale }\n : // Deferred-intent mode — no secret yet; Stripe needs the intent\n // shape (mode + amount + currency) to render the Payment Element.\n // Stripe expects a lowercase ISO-4217 currency here.\n {\n mode,\n amount,\n currency: currency.toLowerCase(),\n appearance,\n locale: activeLocale,\n },\n [clientSecret, mode, amount, currency, appearance, activeLocale],\n );\n\n return (\n <div\n ref={hostRef}\n aria-label={ariaLabel}\n className={[formVariants(), className].filter(Boolean).join(' ')}\n data-component=\"payment-form\"\n data-component-id={id}\n data-testid=\"payment-form-root\"\n >\n {stripeInstance ? (\n // Render the real Payment Element whenever a Stripe instance is\n // available — in immediate mode (clientSecret present) AND in\n // deferred mode (no secret). The skeleton is reserved for the\n // no-Stripe case (missing publishableKey / injected null).\n <Elements\n stripe={stripeInstance}\n options={elementsOptions}\n key={clientSecret ?? 'deferred'}\n >\n <InnerPaymentForm\n amount={amount}\n currency={currency}\n locale={activeLocale}\n billingAddress={billingAddress}\n returnUrl={returnUrl}\n clientSecret={clientSecret}\n onCreatePaymentIntent={onCreatePaymentIntent}\n onSuccess={onSuccess}\n onError={onError}\n layout={layout}\n />\n </Elements>\n ) : (\n <PaymentFormSkeleton\n amount={amount}\n currency={currency}\n locale={activeLocale}\n billingAddress={billingAddress}\n />\n )}\n </div>\n );\n },\n);\n\nPaymentForm.displayName = 'PaymentForm';\n\n/* ------------------------------------------------------------------ */\n/* Skeleton — visual chrome when Stripe hasn't loaded yet */\n/* ------------------------------------------------------------------ */\n\ninterface PaymentFormSkeletonProps {\n amount: number;\n currency: string;\n locale: string;\n billingAddress: boolean;\n}\n\nfunction PaymentFormSkeleton(props: PaymentFormSkeletonProps): ReactElement {\n const { amount, currency, locale, billingAddress } = props;\n const { t } = useTranslation();\n\n return (\n <div\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\"\n data-testid=\"payment-skeleton\"\n aria-busy=\"true\"\n >\n <div className={amountSummaryVariants()}>\n <span className={labelTextVariants()}>{t('payment.amountLabel')}</span>\n <span className=\"type-title-card\">\n {formatPaymentAmount(amount, currency, locale)}\n </span>\n </div>\n <div className={fieldLabelVariants()}>\n <span className={labelTextVariants()}>{t('payment.fields.card')}</span>\n <div\n className=\"ds:[min-block-size:var(--min-target-size)] ds:rounded-[var(--radius-sm)] ds:border ds:border-[color:var(--border)] ds:bg-[var(--muted)]\"\n aria-hidden=\"true\"\n />\n </div>\n {billingAddress ? (\n <div className={fieldLabelVariants()} data-testid=\"payment-address\">\n <span className={labelTextVariants()}>\n {t('payment.billingAddress')}\n </span>\n <div\n className=\"ds:[min-block-size:calc(var(--min-target-size)*2)] ds:rounded-[var(--radius-sm)] ds:border ds:border-[color:var(--border)] ds:bg-[var(--muted)]\"\n aria-hidden=\"true\"\n />\n </div>\n ) : null}\n <button\n type=\"button\"\n aria-disabled=\"true\"\n className={submitButtonVariants()}\n disabled\n >\n <Spinner variant=\"pulse\" size=\"sm\" label={t('payment.processing')} />\n <span>{t('payment.processing')}</span>\n </button>\n </div>\n );\n}\n\nexport {\n formVariants as paymentFormVariants,\n submitButtonVariants as paymentSubmitButtonVariants,\n};\n"],"names":["isBrowser","getStripeAppearance","root","target","styles","read","token","subscribeStripeAppearance","onChange","emit","observer","schemeMql","motionMql","paymentFormAgent","handle","ZERO_DECIMAL_CURRENCIES","formatPaymentAmount","amount","currency","locale","iso","major","validateReturnUrl","returnUrl","raw","resolved","stripCardLikeDigits","message","stripeErrorCodeToI18nKey","code","formVariants","cva","fieldLabelVariants","labelTextVariants","amountSummaryVariants","submitButtonVariants","InnerPaymentForm","props","billingAddress","clientSecret","onCreatePaymentIntent","onSuccess","onError","layout","t","useTranslation","stripe","useStripe","elements","useElements","rawId","useId","idSafe","useMemo","paymentFieldId","addressFieldId","errorId","processing","setProcessing","useState","elementComplete","setElementComplete","errorKey","setErrorKey","errorMessage","setErrorMessage","onSuccessRef","useRef","onErrorRef","useEffect","handleSubmit","useCallback","event","reportError","rawMessage","key","safe","_a","safeReturnUrl","confirmParams","result","_b","submitError","mintedSecret","_c","err","host","submitter","submitDisabled","jsx","jsxs","PaymentElement","ev","AddressElement","Alert","Fragment","Spinner","STRIPE_LOCALES","normaliseLocale","input","candidate","base","PaymentForm","forwardRef","id","mode","publishableKey","ariaLabel","injectedStripe","className","ref","i18n","activeLocale","stripeInstance","setStripeInstance","loadStripe","appearance","setAppearance","hostRef","agentHandle","form","useImperativeHandle","useAgentRegistration","elementsOptions","Elements","PaymentFormSkeleton"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { C as R } from "./card-DPmk26CL.js";
|
|
|
7
7
|
import { D as d } from "./description-list-gkNGWk5G.js";
|
|
8
8
|
import { K as Y, a as j } from "./key-value-pair-BrgbMfbF.js";
|
|
9
9
|
import { T as W, A as te, a as re } from "./transaction-chip-DK84XCBU.js";
|
|
10
|
-
import { u as J } from "./registry-
|
|
10
|
+
import { u as J } from "./registry-DvAUVLHh.js";
|
|
11
11
|
import { c as F } from "./createLucideIcon-CrFbzy84.js";
|
|
12
12
|
import { C as ne } from "./calendar-days-C4BmpCZg.js";
|
|
13
13
|
import { F as Q } from "./file-text-DSNuv2B8.js";
|
|
@@ -475,4 +475,4 @@ export {
|
|
|
475
475
|
Pe as b,
|
|
476
476
|
he as p
|
|
477
477
|
};
|
|
478
|
-
//# sourceMappingURL=payment-request-card-
|
|
478
|
+
//# sourceMappingURL=payment-request-card-DioWKBUq.js.map
|
package/dist/_chunks/{payment-request-card-CYE5vhZ0.js.map → payment-request-card-DioWKBUq.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-request-card-CYE5vhZ0.js","sources":["../../node_modules/lucide-react/dist/esm/icons/credit-card.js","../../node_modules/lucide-react/dist/esm/icons/hash.js","../../node_modules/lucide-react/dist/esm/icons/receipt-text.js","../../src/components/payment-card/payment-card.agent.ts","../../src/components/payment-card/payment-card.tsx","../../src/components/payment-card/payment-request-card.agent.ts","../../src/components/payment-card/payment-request-card.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 [\"rect\", { width: \"20\", height: \"14\", x: \"2\", y: \"5\", rx: \"2\", key: \"ynyp8z\" }],\n [\"line\", { x1: \"2\", x2: \"22\", y1: \"10\", y2: \"10\", key: \"1b3vmo\" }]\n];\nconst CreditCard = createLucideIcon(\"credit-card\", __iconNode);\n\nexport { __iconNode, CreditCard as default };\n//# sourceMappingURL=credit-card.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"9\", y2: \"9\", key: \"4lhtct\" }],\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"15\", y2: \"15\", key: \"vyu0kd\" }],\n [\"line\", { x1: \"10\", x2: \"8\", y1: \"3\", y2: \"21\", key: \"1ggp8o\" }],\n [\"line\", { x1: \"16\", x2: \"14\", y1: \"3\", y2: \"21\", key: \"weycgp\" }]\n];\nconst Hash = createLucideIcon(\"hash\", __iconNode);\n\nexport { __iconNode, Hash as default };\n//# sourceMappingURL=hash.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M13 16H8\", key: \"wsln4y\" }],\n [\"path\", { d: \"M14 8H8\", key: \"1l3xfs\" }],\n [\"path\", { d: \"M16 12H8\", key: \"1fr5h0\" }],\n [\n \"path\",\n {\n d: \"M4 3a1 1 0 0 1 1-1 1.3 1.3 0 0 1 .7.2l.933.6a1.3 1.3 0 0 0 1.4 0l.934-.6a1.3 1.3 0 0 1 1.4 0l.933.6a1.3 1.3 0 0 0 1.4 0l.933-.6a1.3 1.3 0 0 1 1.4 0l.934.6a1.3 1.3 0 0 0 1.4 0l.933-.6A1.3 1.3 0 0 1 19 2a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1 1.3 1.3 0 0 1-.7-.2l-.933-.6a1.3 1.3 0 0 0-1.4 0l-.934.6a1.3 1.3 0 0 1-1.4 0l-.933-.6a1.3 1.3 0 0 0-1.4 0l-.933.6a1.3 1.3 0 0 1-1.4 0l-.934-.6a1.3 1.3 0 0 0-1.4 0l-.933.6a1.3 1.3 0 0 1-.7.2 1 1 0 0 1-1-1z\",\n key: \"ycz6yz\"\n }\n ]\n];\nconst ReceiptText = createLucideIcon(\"receipt-text\", __iconNode);\n\nexport { __iconNode, ReceiptText as default };\n//# sourceMappingURL=receipt-text.js.map\n","/* -------------------------------------------------------------------- */\n/* Agent adapter — PaymentCard. */\n/* */\n/* Read-only financial-record surface. Exposes the payment number */\n/* (identifier) and the resolved headline state (structural) — never */\n/* patient / operator names or any other PHI. No actions: the card is a */\n/* passive presentation surface. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { PaymentCardHandle } from './payment-card';\n\nexport const paymentCardAgent: AgentAdapter<PaymentCardHandle> = {\n id: 'payment-card',\n capabilities: [],\n state: {\n number: {\n type: 'string',\n descriptionKey: 'ui.agent.paymentCard.state.number',\n description: 'Payment number / reference currently rendered.',\n read: (handle) => handle.getNumber(),\n },\n state: {\n type: \"'debt' | 'to-invoice' | 'settled'\",\n descriptionKey: 'ui.agent.paymentCard.state.state',\n description:\n 'Resolved headline financial state. Structural state only — never patient identity.',\n read: (handle) => handle.getState(),\n },\n },\n actions: {},\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'payment-card',\n description: 'Marks the PaymentCard root region.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop. Addresses a specific card.',\n },\n },\n};\n","import {\n forwardRef,\n useId,\n useMemo,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport {\n ArrowDownLeft,\n ArrowUpRight,\n CalendarDays,\n FileText,\n Hash,\n ReceiptText,\n User,\n UserCog,\n} from 'lucide-react';\nimport { Badge } from '../badge/badge';\nimport { Card } from '../card/card';\nimport { DescriptionList } from '../description-list/description-list';\nimport { KeyValueList, KeyValuePair } from '../key-value-pair/key-value-pair';\nimport { TransactionChip } from '../transaction-chip/transaction-chip';\nimport { entitySurfaceVariants } from '../_shared/entity-card';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { paymentCardAgent } from './payment-card.agent';\n\n/* -------------------------------------------------------------------- */\n/* PaymentCard */\n/* */\n/* Financial-record card for a single payment / receipt. Replaces the */\n/* hand-rolled \"Pagamento\" / payment-row cards that the platform's */\n/* care-plan and patient-ledger surfaces compose today. Composes */\n/* TransactionChip (the settled/debt/to-invoice headline) + KeyValueList */\n/* (number, date, type, direction, relations) + DescriptionList (line */\n/* items) + Badge (the payment type). */\n/* */\n/* The component owns the ORDER, ICONS, and LABELS; the consumer passes */\n/* the data. Every visible string flows through `useTranslation('ui')` */\n/* against the `paymentCard.*` namespace. The agent state slot exposes */\n/* identifiers + structural state only — never patient names. */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* Vocabulary */\n/* -------------------------------------------------------------------- */\n\n/** Payment type → translation-key segment + Badge variant. */\nexport type PaymentType = 'full' | 'partial' | 'credit' | 'proforma' | 'other';\n\nexport type PaymentDirection = 'incoming' | 'outgoing';\n\ntype BadgeVariant = NonNullable<\n ComponentPropsWithoutRef<typeof Badge>['variant']\n>;\n\nconst PAYMENT_TYPE_BADGE = {\n full: 'success',\n partial: 'warning',\n credit: 'info',\n proforma: 'neutral',\n other: 'neutral',\n} as const satisfies Record<PaymentType, BadgeVariant>;\n\nconst DEFAULT_CURRENCY = 'EUR';\n\n// Inline English fallbacks — belt-and-braces only. The canonical keys\n// live in the locale bundle (`ui.paymentCard.*`); these guard against a\n// stale / not-yet-wired bundle so the card never renders a raw key.\nconst TYPE_DEFAULTS: Record<PaymentType, string> = {\n full: 'Full payment',\n partial: 'Partial payment',\n credit: 'Credit note',\n proforma: 'Proforma',\n other: 'Other',\n};\n\nconst DIRECTION_DEFAULTS: Record<PaymentDirection, string> = {\n incoming: 'Incoming',\n outgoing: 'Outgoing',\n};\n\n/* -------------------------------------------------------------------- */\n/* CVA — root */\n/* -------------------------------------------------------------------- */\n\nconst rootVariants = cva('ds:w-full ds:text-[color:var(--foreground)]', {\n variants: {\n surface: {\n flat: '',\n elevated: '',\n },\n },\n defaultVariants: { surface: 'elevated' },\n});\n\n/* -------------------------------------------------------------------- */\n/* Public types */\n/* -------------------------------------------------------------------- */\n\nexport interface PaymentLineItem {\n /** Human-readable description of the line. */\n description: string;\n /** Amount in the smallest currency unit (cents / centesimi). */\n amountCents: number;\n /** Optional VAT percentage (e.g. `22` for 22%). */\n vatPercentage?: number;\n}\n\nexport interface PaymentCardRelations {\n /** Care-plan / treatment-plan number this payment belongs to. */\n carePlanNumber?: string;\n /** Patient display name — rendered, but never exposed to the agent. */\n patientName?: string;\n /** Operator display name — rendered, but never exposed to the agent. */\n operatorName?: string;\n}\n\nexport interface PaymentCardHandle {\n /** Stable payment number currently rendered. Identifier only — no PHI. */\n getNumber: () => string;\n /** Resolved headline financial state. Structural state only. */\n getState: () => TransactionStateValue;\n}\n\n/** The TransactionChip state this card resolves the payment to. */\ntype TransactionStateValue = 'debt' | 'to-invoice' | 'settled';\n\nexport interface PaymentCardProps extends Omit<\n ComponentPropsWithoutRef<'div'>,\n 'aria-label' | 'children'\n> {\n /** Agent-readiness consumer id, surfaced as `data-component-id`. */\n id?: string;\n /** Human-readable payment number / reference. Rendered as the heading. */\n number: string;\n /** ISO-8601 date string for the payment date. */\n dateIso?: string;\n /** Payment type — drives the type Badge + label. */\n type: PaymentType;\n /** Money flow direction — incoming (patient → practice) or outgoing. */\n direction: PaymentDirection;\n /** Gross total in the smallest currency unit (cents). */\n grossCents?: number;\n /** Amount already paid, in cents. */\n paidCents?: number;\n /** Amount still outstanding, in cents. */\n unpaidCents?: number;\n /** Marks the record as written-off — renders a neutral chip. */\n writtenOff?: boolean;\n /** Linked entities (care plan / patient / operator). */\n relations?: PaymentCardRelations;\n /** Itemised breakdown rendered as a DescriptionList. */\n lineItems?: PaymentLineItem[];\n /** BCP-47 locale override. Falls back to the active i18next language. */\n locale?: string;\n /** ISO-4217 currency code. Defaults to `EUR`. */\n currency?: string;\n\n /* ----- Styling ----- */\n\n /**\n * `'elevated'` (default) wraps in `<Card variant=\"elevated\">`. `'flat'`\n * drops the Card — use inside an existing card / sheet.\n */\n surface?: 'flat' | 'elevated';\n\n /* ----- a11y ----- */\n\n /** Override the default region aria-label. */\n 'aria-label'?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------- */\n\n/** Format cents → currency string for the consumer's locale. */\nfunction formatMoney(cents: number, currency: string, locale: string): string {\n try {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n }).format(cents / 100);\n } catch {\n return (cents / 100).toFixed(2);\n }\n}\n\n/** Format an ISO date for the consumer's locale, gracefully degrading. */\nfunction formatDate(iso: string, locale: string): string {\n const date = new Date(iso);\n if (Number.isNaN(date.getTime())) return iso;\n try {\n return new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n }).format(date);\n } catch {\n return iso;\n }\n}\n\n/**\n * Resolve the headline TransactionChip state from the paid / unpaid /\n * written-off inputs. Written-off → settled chip; an outstanding balance\n * → debt; a proforma with nothing paid → to-invoice; otherwise settled.\n */\nfunction resolveState(\n type: PaymentType,\n paidCents: number | undefined,\n unpaidCents: number | undefined,\n writtenOff: boolean | undefined,\n): TransactionStateValue {\n if (writtenOff) return 'settled';\n if (unpaidCents != null && unpaidCents > 0) return 'debt';\n if (type === 'proforma' && (paidCents == null || paidCents === 0)) {\n return 'to-invoice';\n }\n return 'settled';\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const PaymentCard = forwardRef<HTMLDivElement, PaymentCardProps>(\n (\n {\n id,\n number,\n dateIso,\n type,\n direction,\n grossCents,\n paidCents,\n unpaidCents,\n writtenOff = false,\n relations,\n lineItems,\n locale,\n currency = DEFAULT_CURRENCY,\n surface = 'elevated',\n 'aria-label': ariaLabel,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const headingId = useId();\n const activeLocale = locale ?? i18n.language ?? 'en';\n\n const resolvedAriaLabel =\n ariaLabel ??\n t('paymentCard.regionLabel', {\n number,\n defaultValue: 'Payment {{number}}',\n });\n\n const state = resolveState(type, paidCents, unpaidCents, writtenOff);\n\n // The chip headline reflects the most informative figure: the\n // outstanding balance when there's a debt, otherwise the gross total.\n const chipAmountCents =\n state === 'debt' && unpaidCents != null\n ? unpaidCents\n : (grossCents ?? paidCents ?? unpaidCents ?? 0);\n\n useAgentRegistration(\n paymentCardAgent,\n {\n getNumber: () => number,\n getState: () => state,\n },\n id,\n );\n\n const typeLabel = t(`paymentCard.type.${type}`, {\n defaultValue: TYPE_DEFAULTS[type],\n });\n const directionIcon =\n direction === 'incoming' ? (\n <ArrowDownLeft aria-hidden=\"true\" />\n ) : (\n <ArrowUpRight aria-hidden=\"true\" />\n );\n const directionLabel = t(`paymentCard.direction.${direction}`, {\n defaultValue: DIRECTION_DEFAULTS[direction],\n });\n\n // Compose the metadata rows in display order. Omitting a field omits\n // the row — KeyValueList collapses the subgrid cleanly.\n const rows: Array<{\n key: string;\n icon: ReactNode;\n label: string;\n value: ReactNode;\n }> = [];\n\n rows.push({\n key: 'number',\n icon: <Hash aria-hidden=\"true\" />,\n label: t('paymentCard.label.number', 'Number'),\n value: number,\n });\n\n if (dateIso) {\n rows.push({\n key: 'date',\n icon: <CalendarDays aria-hidden=\"true\" />,\n label: t('paymentCard.label.date', 'Date'),\n value: formatDate(dateIso, activeLocale),\n });\n }\n\n rows.push({\n key: 'type',\n icon: <ReceiptText aria-hidden=\"true\" />,\n label: t('paymentCard.label.type', 'Type'),\n value: <Badge variant={PAYMENT_TYPE_BADGE[type]}>{typeLabel}</Badge>,\n });\n\n rows.push({\n key: 'direction',\n icon: directionIcon,\n label: t('paymentCard.label.direction', 'Direction'),\n value: directionLabel,\n });\n\n if (relations?.carePlanNumber) {\n rows.push({\n key: 'carePlan',\n icon: <FileText aria-hidden=\"true\" />,\n label: t('paymentCard.label.carePlan', 'Care plan'),\n value: relations.carePlanNumber,\n });\n }\n\n if (relations?.patientName) {\n rows.push({\n key: 'patient',\n icon: <User aria-hidden=\"true\" />,\n label: t('paymentCard.label.patient', 'Patient'),\n value: relations.patientName,\n });\n }\n\n if (relations?.operatorName) {\n rows.push({\n key: 'operator',\n icon: <UserCog aria-hidden=\"true\" />,\n label: t('paymentCard.label.operator', 'Operator'),\n value: relations.operatorName,\n });\n }\n\n const formattedGross = useMemo(\n () =>\n grossCents != null\n ? formatMoney(grossCents, currency, activeLocale)\n : undefined,\n [grossCents, currency, activeLocale],\n );\n const formattedPaid = useMemo(\n () =>\n paidCents != null\n ? formatMoney(paidCents, currency, activeLocale)\n : undefined,\n [paidCents, currency, activeLocale],\n );\n const formattedUnpaid = useMemo(\n () =>\n unpaidCents != null\n ? formatMoney(unpaidCents, currency, activeLocale)\n : undefined,\n [unpaidCents, currency, activeLocale],\n );\n\n const hasAmounts =\n formattedGross != null ||\n formattedPaid != null ||\n formattedUnpaid != null;\n\n const hasLineItems = !!lineItems && lineItems.length > 0;\n\n const inner = (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n {/* Heading row — payment number + headline TransactionChip. */}\n <div className=\"ds:flex ds:items-start ds:gap-[var(--spacing-md)] ds:flex-wrap\">\n <h3\n id={headingId}\n className=\"type-title-card ds:m-0 ds:text-[color:var(--foreground)]\"\n >\n {t('paymentCard.heading', {\n number,\n defaultValue: 'Payment {{number}}',\n })}\n </h3>\n <span className=\"ds:ms-auto ds:shrink-0\">\n <TransactionChip\n state={state}\n amount={chipAmountCents / 100}\n currency={currency}\n locale={activeLocale}\n size=\"lg\"\n />\n </span>\n </div>\n\n {/* Metadata rows. */}\n <KeyValueList rowGap=\"sm\">\n {rows.map((row) => (\n <KeyValuePair\n key={row.key}\n icon={row.icon as React.ReactElement}\n label={row.label}\n value={row.value}\n />\n ))}\n </KeyValueList>\n\n {/* Amount summary — gross / paid / outstanding. */}\n {hasAmounts ? (\n <DescriptionList layout=\"inline\" density=\"compact\" labelWidth=\"fixed\">\n {formattedGross != null ? (\n <DescriptionList.Row>\n <DescriptionList.Term>\n {t('paymentCard.label.gross', 'Gross total')}\n </DescriptionList.Term>\n <DescriptionList.Detail numeric>\n {formattedGross}\n </DescriptionList.Detail>\n </DescriptionList.Row>\n ) : null}\n {formattedPaid != null ? (\n <DescriptionList.Row>\n <DescriptionList.Term>\n {t('paymentCard.label.paid', 'Paid')}\n </DescriptionList.Term>\n <DescriptionList.Detail numeric>\n {formattedPaid}\n </DescriptionList.Detail>\n </DescriptionList.Row>\n ) : null}\n {formattedUnpaid != null ? (\n <DescriptionList.Row>\n <DescriptionList.Term>\n {t('paymentCard.label.unpaid', 'Outstanding')}\n </DescriptionList.Term>\n <DescriptionList.Detail numeric>\n {formattedUnpaid}\n </DescriptionList.Detail>\n </DescriptionList.Row>\n ) : null}\n </DescriptionList>\n ) : null}\n\n {/* Line items. */}\n {hasLineItems ? (\n <section\n aria-label={t('paymentCard.lineItems.heading', 'Line items')}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\"\n >\n <h4 className=\"type-eyebrow ds:m-0 ds:text-[color:var(--muted-foreground)]\">\n {t('paymentCard.lineItems.heading', 'Line items')}\n </h4>\n <DescriptionList\n layout=\"inline\"\n density=\"compact\"\n labelWidth=\"auto\"\n >\n {lineItems!.map((item, index) => (\n <DescriptionList.Row key={`${item.description}-${index}`}>\n <DescriptionList.Term>\n {item.vatPercentage != null\n ? t('paymentCard.lineItems.withVat', {\n description: item.description,\n vat: item.vatPercentage,\n defaultValue: '{{description}} (VAT {{vat}}%)',\n })\n : item.description}\n </DescriptionList.Term>\n <DescriptionList.Detail numeric>\n {formatMoney(item.amountCents, currency, activeLocale)}\n </DescriptionList.Detail>\n </DescriptionList.Row>\n ))}\n </DescriptionList>\n </section>\n ) : null}\n </div>\n );\n\n return (\n <div\n ref={ref}\n role=\"region\"\n aria-label={resolvedAriaLabel}\n aria-labelledby={headingId}\n data-component=\"payment-card\"\n data-component-id={id}\n data-state={state}\n data-type={type}\n data-direction={direction}\n id={id}\n className={rootVariants({ surface, className })}\n {...rest}\n >\n {surface === 'elevated' ? (\n <Card variant=\"elevated\">\n <Card.Body>{inner}</Card.Body>\n </Card>\n ) : (\n <div className={entitySurfaceVariants({ surface: 'flat' })}>\n {inner}\n </div>\n )}\n </div>\n );\n },\n);\n\nPaymentCard.displayName = 'PaymentCard';\n\nexport type PaymentCardSurface = NonNullable<\n VariantProps<typeof rootVariants>['surface']\n>;\n","/* -------------------------------------------------------------------- */\n/* Agent adapter — PaymentRequestCard. */\n/* */\n/* Read-only payment-request surface. Exposes the lifecycle status */\n/* (structural state) only — never any patient identity or the hosted */\n/* payment URL. No actions: navigation to the pay link is a user-driven */\n/* affordance, not an agent operation. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { PaymentRequestCardHandle } from './payment-request-card';\n\nexport const paymentRequestCardAgent: AgentAdapter<PaymentRequestCardHandle> = {\n id: 'payment-request-card',\n capabilities: [],\n state: {\n status: {\n type: \"'new' | 'authorization_requested' | 'authorized' | 'paid' | 'failed' | 'cancelled'\",\n descriptionKey: 'ui.agent.paymentRequestCard.state.status',\n description:\n 'Current lifecycle status of the payment request. Structural state only.',\n read: (handle) => handle.getStatus(),\n },\n },\n actions: {},\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'payment-request-card',\n description: 'Marks the PaymentRequestCard root region.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description:\n 'Sourced from the id prop. Addresses a specific request card.',\n },\n },\n};\n","import {\n forwardRef,\n useId,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { CalendarClock, CreditCard, FileText } from 'lucide-react';\nimport { Badge } from '../badge/badge';\nimport { Card } from '../card/card';\nimport { KeyValueList, KeyValuePair } from '../key-value-pair/key-value-pair';\nimport { Link } from '../link/link';\nimport { TransactionChip } from '../transaction-chip/transaction-chip';\nimport { entitySurfaceVariants, isSafeEntityUrl } from '../_shared/entity-card';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { paymentRequestCardAgent } from './payment-request-card.agent';\n\n/* -------------------------------------------------------------------- */\n/* PaymentRequestCard */\n/* */\n/* Companion to PaymentCard: a card for an *outstanding* payment request */\n/* (a Stripe / online-payment ask) rather than a recorded payment. Shows */\n/* the amount as a TransactionChip, the lifecycle status as a Badge, and */\n/* — when a safe `paymentUrl` is supplied — a \"Pay now\" Link. */\n/* */\n/* Every visible string flows through `useTranslation('ui')` against the */\n/* `paymentRequestCard.*` namespace. The agent state exposes the request */\n/* status (structural state) and never any patient identity. */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* Vocabulary */\n/* -------------------------------------------------------------------- */\n\nexport type PaymentRequestStatus =\n | 'new'\n | 'authorization_requested'\n | 'authorized'\n | 'paid'\n | 'failed'\n | 'cancelled';\n\ntype BadgeVariant = NonNullable<\n ComponentPropsWithoutRef<typeof Badge>['variant']\n>;\n\nconst STATUS_BADGE = {\n new: 'info',\n authorization_requested: 'warning',\n authorized: 'info',\n paid: 'success',\n failed: 'error',\n cancelled: 'neutral',\n} as const satisfies Record<PaymentRequestStatus, BadgeVariant>;\n\nconst DEFAULT_CURRENCY = 'EUR';\n\n// Inline English fallbacks — belt-and-braces only. The canonical keys\n// live in the locale bundle (`ui.paymentRequestCard.*`); these guard\n// against a stale / not-yet-wired bundle so the card never shows a key.\nconst STATUS_DEFAULTS: Record<PaymentRequestStatus, string> = {\n new: 'New',\n authorization_requested: 'Authorization requested',\n authorized: 'Authorized',\n paid: 'Paid',\n failed: 'Failed',\n cancelled: 'Cancelled',\n};\n\n/* -------------------------------------------------------------------- */\n/* CVA — root */\n/* -------------------------------------------------------------------- */\n\nconst rootVariants = cva('ds:w-full ds:text-[color:var(--foreground)]', {\n variants: {\n surface: {\n flat: '',\n elevated: '',\n },\n },\n defaultVariants: { surface: 'elevated' },\n});\n\n/* -------------------------------------------------------------------- */\n/* Public types */\n/* -------------------------------------------------------------------- */\n\nexport interface PaymentRequestCardHandle {\n /** Current lifecycle status. Structural state only — no PHI. */\n getStatus: () => PaymentRequestStatus;\n}\n\nexport interface PaymentRequestCardProps extends Omit<\n ComponentPropsWithoutRef<'div'>,\n 'aria-label' | 'children' | 'title'\n> {\n /** Agent-readiness consumer id, surfaced as `data-component-id`. */\n id?: string;\n /** Heading for the request. Falls back to a localised default. */\n title?: string;\n /** Optional supporting copy rendered beneath the heading. */\n description?: string;\n /** Requested amount in the smallest currency unit (cents). */\n amountCents: number;\n /** ISO-8601 due date. */\n dueDateIso?: string;\n /** Lifecycle status — drives the status Badge and pay-link gating. */\n status: PaymentRequestStatus;\n /** Hosted payment URL. Only rendered when it passes the URL allow-list. */\n paymentUrl?: string;\n /** Care-plan / treatment-plan number this request relates to. */\n carePlanNumber?: string;\n /** BCP-47 locale override. Falls back to the active i18next language. */\n locale?: string;\n /** ISO-4217 currency code. Defaults to `EUR`. */\n currency?: string;\n\n /* ----- Styling ----- */\n\n /**\n * `'elevated'` (default) wraps in `<Card variant=\"elevated\">`. `'flat'`\n * drops the Card — use inside an existing card / sheet.\n */\n surface?: 'flat' | 'elevated';\n\n /* ----- a11y ----- */\n\n /** Override the default region aria-label. */\n 'aria-label'?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------- */\n\nfunction formatDate(iso: string, locale: string): string {\n const date = new Date(iso);\n if (Number.isNaN(date.getTime())) return iso;\n try {\n return new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n }).format(date);\n } catch {\n return iso;\n }\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const PaymentRequestCard = forwardRef<\n HTMLDivElement,\n PaymentRequestCardProps\n>(\n (\n {\n id,\n title,\n description,\n amountCents,\n dueDateIso,\n status,\n paymentUrl,\n carePlanNumber,\n locale,\n currency = DEFAULT_CURRENCY,\n surface = 'elevated',\n 'aria-label': ariaLabel,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const headingId = useId();\n const activeLocale = locale ?? i18n.language ?? 'en';\n\n const resolvedTitle =\n title ?? t('paymentRequestCard.heading', 'Payment request');\n const resolvedAriaLabel = ariaLabel ?? resolvedTitle;\n\n useAgentRegistration(\n paymentRequestCardAgent,\n { getStatus: () => status },\n id,\n );\n\n const statusLabel = t(`paymentRequestCard.status.${status}`, {\n defaultValue: STATUS_DEFAULTS[status],\n });\n\n // A paid request settles; an open one is \"to-invoice\" (awaiting money);\n // anything terminal-but-unpaid renders as a debt.\n const chipState: 'to-invoice' | 'settled' | 'debt' =\n status === 'paid'\n ? 'settled'\n : status === 'failed' || status === 'cancelled'\n ? 'debt'\n : 'to-invoice';\n\n // The pay link only renders when the request is still actionable AND\n // the URL passes the shared card-family allow-list (no javascript:,\n // data:, protocol-relative). Otherwise the affordance is suppressed.\n const isActionable =\n status === 'new' ||\n status === 'authorization_requested' ||\n status === 'authorized';\n const showPayLink =\n isActionable && !!paymentUrl && isSafeEntityUrl(paymentUrl);\n\n const rows: Array<{\n key: string;\n icon: ReactNode;\n label: string;\n value: ReactNode;\n }> = [];\n\n rows.push({\n key: 'status',\n icon: <CreditCard aria-hidden=\"true\" />,\n label: t('paymentRequestCard.label.status', 'Status'),\n value: <Badge variant={STATUS_BADGE[status]}>{statusLabel}</Badge>,\n });\n\n if (dueDateIso) {\n rows.push({\n key: 'dueDate',\n icon: <CalendarClock aria-hidden=\"true\" />,\n label: t('paymentRequestCard.label.dueDate', 'Due date'),\n value: formatDate(dueDateIso, activeLocale),\n });\n }\n\n if (carePlanNumber) {\n rows.push({\n key: 'carePlan',\n icon: <FileText aria-hidden=\"true\" />,\n label: t('paymentRequestCard.label.carePlan', 'Care plan'),\n value: carePlanNumber,\n });\n }\n\n const inner = (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n {/* Heading row — title + amount TransactionChip. */}\n <div className=\"ds:flex ds:items-start ds:gap-[var(--spacing-md)] ds:flex-wrap\">\n <div className=\"ds:flex ds:min-w-0 ds:flex-col ds:gap-[var(--spacing-2xs)]\">\n <h3\n id={headingId}\n className=\"type-title-card ds:m-0 ds:text-[color:var(--foreground)]\"\n >\n {resolvedTitle}\n </h3>\n {description ? (\n <p className=\"type-body-sm ds:m-0 ds:text-[color:var(--muted-foreground)]\">\n {description}\n </p>\n ) : null}\n </div>\n <span className=\"ds:ms-auto ds:shrink-0\">\n <TransactionChip\n state={chipState}\n amount={amountCents / 100}\n currency={currency}\n locale={activeLocale}\n size=\"lg\"\n />\n </span>\n </div>\n\n {/* Metadata rows. */}\n <KeyValueList rowGap=\"sm\">\n {rows.map((row) => (\n <KeyValuePair\n key={row.key}\n icon={row.icon as React.ReactElement}\n label={row.label}\n value={row.value}\n />\n ))}\n </KeyValueList>\n\n {/* Pay affordance — only when actionable + the URL is safe. */}\n {showPayLink ? (\n <div className=\"ds:flex\">\n <Link href={paymentUrl!} external startIcon={<CreditCard />}>\n {t('paymentRequestCard.pay', 'Pay now')}\n </Link>\n </div>\n ) : null}\n </div>\n );\n\n return (\n <div\n ref={ref}\n role=\"region\"\n aria-label={resolvedAriaLabel}\n aria-labelledby={headingId}\n data-component=\"payment-request-card\"\n data-component-id={id}\n data-status={status}\n id={id}\n className={rootVariants({ surface, className })}\n {...rest}\n >\n {surface === 'elevated' ? (\n <Card variant=\"elevated\">\n <Card.Body>{inner}</Card.Body>\n </Card>\n ) : (\n <div className={entitySurfaceVariants({ surface: 'flat' })}>\n {inner}\n </div>\n )}\n </div>\n );\n },\n);\n\nPaymentRequestCard.displayName = 'PaymentRequestCard';\n\nexport type PaymentRequestCardSurface = NonNullable<\n VariantProps<typeof rootVariants>['surface']\n>;\n"],"names":["__iconNode","CreditCard","createLucideIcon","Hash","ReceiptText","paymentCardAgent","handle","PAYMENT_TYPE_BADGE","DEFAULT_CURRENCY","TYPE_DEFAULTS","DIRECTION_DEFAULTS","rootVariants","cva","formatMoney","cents","currency","locale","formatDate","iso","date","resolveState","type","paidCents","unpaidCents","writtenOff","PaymentCard","forwardRef","id","number","dateIso","direction","grossCents","relations","lineItems","surface","ariaLabel","className","rest","ref","i18n","useTranslation","headingId","useId","activeLocale","resolvedAriaLabel","state","chipAmountCents","useAgentRegistration","typeLabel","directionIcon","jsx","ArrowDownLeft","ArrowUpRight","directionLabel","rows","CalendarDays","Badge","FileText","User","UserCog","formattedGross","useMemo","formattedPaid","formattedUnpaid","hasAmounts","hasLineItems","inner","jsxs","TransactionChip","KeyValueList","row","KeyValuePair","DescriptionList","item","index","Card","entitySurfaceVariants","paymentRequestCardAgent","STATUS_BADGE","STATUS_DEFAULTS","PaymentRequestCard","title","description","amountCents","dueDateIso","status","paymentUrl","carePlanNumber","t","resolvedTitle","statusLabel","chipState","showPayLink","isSafeEntityUrl","CalendarClock","Link"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
|
1
|
+
{"version":3,"file":"payment-request-card-DioWKBUq.js","sources":["../../node_modules/lucide-react/dist/esm/icons/credit-card.js","../../node_modules/lucide-react/dist/esm/icons/hash.js","../../node_modules/lucide-react/dist/esm/icons/receipt-text.js","../../src/components/payment-card/payment-card.agent.ts","../../src/components/payment-card/payment-card.tsx","../../src/components/payment-card/payment-request-card.agent.ts","../../src/components/payment-card/payment-request-card.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 [\"rect\", { width: \"20\", height: \"14\", x: \"2\", y: \"5\", rx: \"2\", key: \"ynyp8z\" }],\n [\"line\", { x1: \"2\", x2: \"22\", y1: \"10\", y2: \"10\", key: \"1b3vmo\" }]\n];\nconst CreditCard = createLucideIcon(\"credit-card\", __iconNode);\n\nexport { __iconNode, CreditCard as default };\n//# sourceMappingURL=credit-card.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"9\", y2: \"9\", key: \"4lhtct\" }],\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"15\", y2: \"15\", key: \"vyu0kd\" }],\n [\"line\", { x1: \"10\", x2: \"8\", y1: \"3\", y2: \"21\", key: \"1ggp8o\" }],\n [\"line\", { x1: \"16\", x2: \"14\", y1: \"3\", y2: \"21\", key: \"weycgp\" }]\n];\nconst Hash = createLucideIcon(\"hash\", __iconNode);\n\nexport { __iconNode, Hash as default };\n//# sourceMappingURL=hash.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M13 16H8\", key: \"wsln4y\" }],\n [\"path\", { d: \"M14 8H8\", key: \"1l3xfs\" }],\n [\"path\", { d: \"M16 12H8\", key: \"1fr5h0\" }],\n [\n \"path\",\n {\n d: \"M4 3a1 1 0 0 1 1-1 1.3 1.3 0 0 1 .7.2l.933.6a1.3 1.3 0 0 0 1.4 0l.934-.6a1.3 1.3 0 0 1 1.4 0l.933.6a1.3 1.3 0 0 0 1.4 0l.933-.6a1.3 1.3 0 0 1 1.4 0l.934.6a1.3 1.3 0 0 0 1.4 0l.933-.6A1.3 1.3 0 0 1 19 2a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1 1.3 1.3 0 0 1-.7-.2l-.933-.6a1.3 1.3 0 0 0-1.4 0l-.934.6a1.3 1.3 0 0 1-1.4 0l-.933-.6a1.3 1.3 0 0 0-1.4 0l-.933.6a1.3 1.3 0 0 1-1.4 0l-.934-.6a1.3 1.3 0 0 0-1.4 0l-.933.6a1.3 1.3 0 0 1-.7.2 1 1 0 0 1-1-1z\",\n key: \"ycz6yz\"\n }\n ]\n];\nconst ReceiptText = createLucideIcon(\"receipt-text\", __iconNode);\n\nexport { __iconNode, ReceiptText as default };\n//# sourceMappingURL=receipt-text.js.map\n","/* -------------------------------------------------------------------- */\n/* Agent adapter — PaymentCard. */\n/* */\n/* Read-only financial-record surface. Exposes the payment number */\n/* (identifier) and the resolved headline state (structural) — never */\n/* patient / operator names or any other PHI. No actions: the card is a */\n/* passive presentation surface. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { PaymentCardHandle } from './payment-card';\n\nexport const paymentCardAgent: AgentAdapter<PaymentCardHandle> = {\n id: 'payment-card',\n capabilities: [],\n state: {\n number: {\n type: 'string',\n descriptionKey: 'ui.agent.paymentCard.state.number',\n description: 'Payment number / reference currently rendered.',\n read: (handle) => handle.getNumber(),\n },\n state: {\n type: \"'debt' | 'to-invoice' | 'settled'\",\n descriptionKey: 'ui.agent.paymentCard.state.state',\n description:\n 'Resolved headline financial state. Structural state only — never patient identity.',\n read: (handle) => handle.getState(),\n },\n },\n actions: {},\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'payment-card',\n description: 'Marks the PaymentCard root region.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop. Addresses a specific card.',\n },\n },\n};\n","import {\n forwardRef,\n useId,\n useMemo,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport {\n ArrowDownLeft,\n ArrowUpRight,\n CalendarDays,\n FileText,\n Hash,\n ReceiptText,\n User,\n UserCog,\n} from 'lucide-react';\nimport { Badge } from '../badge/badge';\nimport { Card } from '../card/card';\nimport { DescriptionList } from '../description-list/description-list';\nimport { KeyValueList, KeyValuePair } from '../key-value-pair/key-value-pair';\nimport { TransactionChip } from '../transaction-chip/transaction-chip';\nimport { entitySurfaceVariants } from '../_shared/entity-card';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { paymentCardAgent } from './payment-card.agent';\n\n/* -------------------------------------------------------------------- */\n/* PaymentCard */\n/* */\n/* Financial-record card for a single payment / receipt. Replaces the */\n/* hand-rolled \"Pagamento\" / payment-row cards that the platform's */\n/* care-plan and patient-ledger surfaces compose today. Composes */\n/* TransactionChip (the settled/debt/to-invoice headline) + KeyValueList */\n/* (number, date, type, direction, relations) + DescriptionList (line */\n/* items) + Badge (the payment type). */\n/* */\n/* The component owns the ORDER, ICONS, and LABELS; the consumer passes */\n/* the data. Every visible string flows through `useTranslation('ui')` */\n/* against the `paymentCard.*` namespace. The agent state slot exposes */\n/* identifiers + structural state only — never patient names. */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* Vocabulary */\n/* -------------------------------------------------------------------- */\n\n/** Payment type → translation-key segment + Badge variant. */\nexport type PaymentType = 'full' | 'partial' | 'credit' | 'proforma' | 'other';\n\nexport type PaymentDirection = 'incoming' | 'outgoing';\n\ntype BadgeVariant = NonNullable<\n ComponentPropsWithoutRef<typeof Badge>['variant']\n>;\n\nconst PAYMENT_TYPE_BADGE = {\n full: 'success',\n partial: 'warning',\n credit: 'info',\n proforma: 'neutral',\n other: 'neutral',\n} as const satisfies Record<PaymentType, BadgeVariant>;\n\nconst DEFAULT_CURRENCY = 'EUR';\n\n// Inline English fallbacks — belt-and-braces only. The canonical keys\n// live in the locale bundle (`ui.paymentCard.*`); these guard against a\n// stale / not-yet-wired bundle so the card never renders a raw key.\nconst TYPE_DEFAULTS: Record<PaymentType, string> = {\n full: 'Full payment',\n partial: 'Partial payment',\n credit: 'Credit note',\n proforma: 'Proforma',\n other: 'Other',\n};\n\nconst DIRECTION_DEFAULTS: Record<PaymentDirection, string> = {\n incoming: 'Incoming',\n outgoing: 'Outgoing',\n};\n\n/* -------------------------------------------------------------------- */\n/* CVA — root */\n/* -------------------------------------------------------------------- */\n\nconst rootVariants = cva('ds:w-full ds:text-[color:var(--foreground)]', {\n variants: {\n surface: {\n flat: '',\n elevated: '',\n },\n },\n defaultVariants: { surface: 'elevated' },\n});\n\n/* -------------------------------------------------------------------- */\n/* Public types */\n/* -------------------------------------------------------------------- */\n\nexport interface PaymentLineItem {\n /** Human-readable description of the line. */\n description: string;\n /** Amount in the smallest currency unit (cents / centesimi). */\n amountCents: number;\n /** Optional VAT percentage (e.g. `22` for 22%). */\n vatPercentage?: number;\n}\n\nexport interface PaymentCardRelations {\n /** Care-plan / treatment-plan number this payment belongs to. */\n carePlanNumber?: string;\n /** Patient display name — rendered, but never exposed to the agent. */\n patientName?: string;\n /** Operator display name — rendered, but never exposed to the agent. */\n operatorName?: string;\n}\n\nexport interface PaymentCardHandle {\n /** Stable payment number currently rendered. Identifier only — no PHI. */\n getNumber: () => string;\n /** Resolved headline financial state. Structural state only. */\n getState: () => TransactionStateValue;\n}\n\n/** The TransactionChip state this card resolves the payment to. */\ntype TransactionStateValue = 'debt' | 'to-invoice' | 'settled';\n\nexport interface PaymentCardProps extends Omit<\n ComponentPropsWithoutRef<'div'>,\n 'aria-label' | 'children'\n> {\n /** Agent-readiness consumer id, surfaced as `data-component-id`. */\n id?: string;\n /** Human-readable payment number / reference. Rendered as the heading. */\n number: string;\n /** ISO-8601 date string for the payment date. */\n dateIso?: string;\n /** Payment type — drives the type Badge + label. */\n type: PaymentType;\n /** Money flow direction — incoming (patient → practice) or outgoing. */\n direction: PaymentDirection;\n /** Gross total in the smallest currency unit (cents). */\n grossCents?: number;\n /** Amount already paid, in cents. */\n paidCents?: number;\n /** Amount still outstanding, in cents. */\n unpaidCents?: number;\n /** Marks the record as written-off — renders a neutral chip. */\n writtenOff?: boolean;\n /** Linked entities (care plan / patient / operator). */\n relations?: PaymentCardRelations;\n /** Itemised breakdown rendered as a DescriptionList. */\n lineItems?: PaymentLineItem[];\n /** BCP-47 locale override. Falls back to the active i18next language. */\n locale?: string;\n /** ISO-4217 currency code. Defaults to `EUR`. */\n currency?: string;\n\n /* ----- Styling ----- */\n\n /**\n * `'elevated'` (default) wraps in `<Card variant=\"elevated\">`. `'flat'`\n * drops the Card — use inside an existing card / sheet.\n */\n surface?: 'flat' | 'elevated';\n\n /* ----- a11y ----- */\n\n /** Override the default region aria-label. */\n 'aria-label'?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------- */\n\n/** Format cents → currency string for the consumer's locale. */\nfunction formatMoney(cents: number, currency: string, locale: string): string {\n try {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n }).format(cents / 100);\n } catch {\n return (cents / 100).toFixed(2);\n }\n}\n\n/** Format an ISO date for the consumer's locale, gracefully degrading. */\nfunction formatDate(iso: string, locale: string): string {\n const date = new Date(iso);\n if (Number.isNaN(date.getTime())) return iso;\n try {\n return new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n }).format(date);\n } catch {\n return iso;\n }\n}\n\n/**\n * Resolve the headline TransactionChip state from the paid / unpaid /\n * written-off inputs. Written-off → settled chip; an outstanding balance\n * → debt; a proforma with nothing paid → to-invoice; otherwise settled.\n */\nfunction resolveState(\n type: PaymentType,\n paidCents: number | undefined,\n unpaidCents: number | undefined,\n writtenOff: boolean | undefined,\n): TransactionStateValue {\n if (writtenOff) return 'settled';\n if (unpaidCents != null && unpaidCents > 0) return 'debt';\n if (type === 'proforma' && (paidCents == null || paidCents === 0)) {\n return 'to-invoice';\n }\n return 'settled';\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const PaymentCard = forwardRef<HTMLDivElement, PaymentCardProps>(\n (\n {\n id,\n number,\n dateIso,\n type,\n direction,\n grossCents,\n paidCents,\n unpaidCents,\n writtenOff = false,\n relations,\n lineItems,\n locale,\n currency = DEFAULT_CURRENCY,\n surface = 'elevated',\n 'aria-label': ariaLabel,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const headingId = useId();\n const activeLocale = locale ?? i18n.language ?? 'en';\n\n const resolvedAriaLabel =\n ariaLabel ??\n t('paymentCard.regionLabel', {\n number,\n defaultValue: 'Payment {{number}}',\n });\n\n const state = resolveState(type, paidCents, unpaidCents, writtenOff);\n\n // The chip headline reflects the most informative figure: the\n // outstanding balance when there's a debt, otherwise the gross total.\n const chipAmountCents =\n state === 'debt' && unpaidCents != null\n ? unpaidCents\n : (grossCents ?? paidCents ?? unpaidCents ?? 0);\n\n useAgentRegistration(\n paymentCardAgent,\n {\n getNumber: () => number,\n getState: () => state,\n },\n id,\n );\n\n const typeLabel = t(`paymentCard.type.${type}`, {\n defaultValue: TYPE_DEFAULTS[type],\n });\n const directionIcon =\n direction === 'incoming' ? (\n <ArrowDownLeft aria-hidden=\"true\" />\n ) : (\n <ArrowUpRight aria-hidden=\"true\" />\n );\n const directionLabel = t(`paymentCard.direction.${direction}`, {\n defaultValue: DIRECTION_DEFAULTS[direction],\n });\n\n // Compose the metadata rows in display order. Omitting a field omits\n // the row — KeyValueList collapses the subgrid cleanly.\n const rows: Array<{\n key: string;\n icon: ReactNode;\n label: string;\n value: ReactNode;\n }> = [];\n\n rows.push({\n key: 'number',\n icon: <Hash aria-hidden=\"true\" />,\n label: t('paymentCard.label.number', 'Number'),\n value: number,\n });\n\n if (dateIso) {\n rows.push({\n key: 'date',\n icon: <CalendarDays aria-hidden=\"true\" />,\n label: t('paymentCard.label.date', 'Date'),\n value: formatDate(dateIso, activeLocale),\n });\n }\n\n rows.push({\n key: 'type',\n icon: <ReceiptText aria-hidden=\"true\" />,\n label: t('paymentCard.label.type', 'Type'),\n value: <Badge variant={PAYMENT_TYPE_BADGE[type]}>{typeLabel}</Badge>,\n });\n\n rows.push({\n key: 'direction',\n icon: directionIcon,\n label: t('paymentCard.label.direction', 'Direction'),\n value: directionLabel,\n });\n\n if (relations?.carePlanNumber) {\n rows.push({\n key: 'carePlan',\n icon: <FileText aria-hidden=\"true\" />,\n label: t('paymentCard.label.carePlan', 'Care plan'),\n value: relations.carePlanNumber,\n });\n }\n\n if (relations?.patientName) {\n rows.push({\n key: 'patient',\n icon: <User aria-hidden=\"true\" />,\n label: t('paymentCard.label.patient', 'Patient'),\n value: relations.patientName,\n });\n }\n\n if (relations?.operatorName) {\n rows.push({\n key: 'operator',\n icon: <UserCog aria-hidden=\"true\" />,\n label: t('paymentCard.label.operator', 'Operator'),\n value: relations.operatorName,\n });\n }\n\n const formattedGross = useMemo(\n () =>\n grossCents != null\n ? formatMoney(grossCents, currency, activeLocale)\n : undefined,\n [grossCents, currency, activeLocale],\n );\n const formattedPaid = useMemo(\n () =>\n paidCents != null\n ? formatMoney(paidCents, currency, activeLocale)\n : undefined,\n [paidCents, currency, activeLocale],\n );\n const formattedUnpaid = useMemo(\n () =>\n unpaidCents != null\n ? formatMoney(unpaidCents, currency, activeLocale)\n : undefined,\n [unpaidCents, currency, activeLocale],\n );\n\n const hasAmounts =\n formattedGross != null ||\n formattedPaid != null ||\n formattedUnpaid != null;\n\n const hasLineItems = !!lineItems && lineItems.length > 0;\n\n const inner = (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n {/* Heading row — payment number + headline TransactionChip. */}\n <div className=\"ds:flex ds:items-start ds:gap-[var(--spacing-md)] ds:flex-wrap\">\n <h3\n id={headingId}\n className=\"type-title-card ds:m-0 ds:text-[color:var(--foreground)]\"\n >\n {t('paymentCard.heading', {\n number,\n defaultValue: 'Payment {{number}}',\n })}\n </h3>\n <span className=\"ds:ms-auto ds:shrink-0\">\n <TransactionChip\n state={state}\n amount={chipAmountCents / 100}\n currency={currency}\n locale={activeLocale}\n size=\"lg\"\n />\n </span>\n </div>\n\n {/* Metadata rows. */}\n <KeyValueList rowGap=\"sm\">\n {rows.map((row) => (\n <KeyValuePair\n key={row.key}\n icon={row.icon as React.ReactElement}\n label={row.label}\n value={row.value}\n />\n ))}\n </KeyValueList>\n\n {/* Amount summary — gross / paid / outstanding. */}\n {hasAmounts ? (\n <DescriptionList layout=\"inline\" density=\"compact\" labelWidth=\"fixed\">\n {formattedGross != null ? (\n <DescriptionList.Row>\n <DescriptionList.Term>\n {t('paymentCard.label.gross', 'Gross total')}\n </DescriptionList.Term>\n <DescriptionList.Detail numeric>\n {formattedGross}\n </DescriptionList.Detail>\n </DescriptionList.Row>\n ) : null}\n {formattedPaid != null ? (\n <DescriptionList.Row>\n <DescriptionList.Term>\n {t('paymentCard.label.paid', 'Paid')}\n </DescriptionList.Term>\n <DescriptionList.Detail numeric>\n {formattedPaid}\n </DescriptionList.Detail>\n </DescriptionList.Row>\n ) : null}\n {formattedUnpaid != null ? (\n <DescriptionList.Row>\n <DescriptionList.Term>\n {t('paymentCard.label.unpaid', 'Outstanding')}\n </DescriptionList.Term>\n <DescriptionList.Detail numeric>\n {formattedUnpaid}\n </DescriptionList.Detail>\n </DescriptionList.Row>\n ) : null}\n </DescriptionList>\n ) : null}\n\n {/* Line items. */}\n {hasLineItems ? (\n <section\n aria-label={t('paymentCard.lineItems.heading', 'Line items')}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\"\n >\n <h4 className=\"type-eyebrow ds:m-0 ds:text-[color:var(--muted-foreground)]\">\n {t('paymentCard.lineItems.heading', 'Line items')}\n </h4>\n <DescriptionList\n layout=\"inline\"\n density=\"compact\"\n labelWidth=\"auto\"\n >\n {lineItems!.map((item, index) => (\n <DescriptionList.Row key={`${item.description}-${index}`}>\n <DescriptionList.Term>\n {item.vatPercentage != null\n ? t('paymentCard.lineItems.withVat', {\n description: item.description,\n vat: item.vatPercentage,\n defaultValue: '{{description}} (VAT {{vat}}%)',\n })\n : item.description}\n </DescriptionList.Term>\n <DescriptionList.Detail numeric>\n {formatMoney(item.amountCents, currency, activeLocale)}\n </DescriptionList.Detail>\n </DescriptionList.Row>\n ))}\n </DescriptionList>\n </section>\n ) : null}\n </div>\n );\n\n return (\n <div\n ref={ref}\n role=\"region\"\n aria-label={resolvedAriaLabel}\n aria-labelledby={headingId}\n data-component=\"payment-card\"\n data-component-id={id}\n data-state={state}\n data-type={type}\n data-direction={direction}\n id={id}\n className={rootVariants({ surface, className })}\n {...rest}\n >\n {surface === 'elevated' ? (\n <Card variant=\"elevated\">\n <Card.Body>{inner}</Card.Body>\n </Card>\n ) : (\n <div className={entitySurfaceVariants({ surface: 'flat' })}>\n {inner}\n </div>\n )}\n </div>\n );\n },\n);\n\nPaymentCard.displayName = 'PaymentCard';\n\nexport type PaymentCardSurface = NonNullable<\n VariantProps<typeof rootVariants>['surface']\n>;\n","/* -------------------------------------------------------------------- */\n/* Agent adapter — PaymentRequestCard. */\n/* */\n/* Read-only payment-request surface. Exposes the lifecycle status */\n/* (structural state) only — never any patient identity or the hosted */\n/* payment URL. No actions: navigation to the pay link is a user-driven */\n/* affordance, not an agent operation. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { PaymentRequestCardHandle } from './payment-request-card';\n\nexport const paymentRequestCardAgent: AgentAdapter<PaymentRequestCardHandle> = {\n id: 'payment-request-card',\n capabilities: [],\n state: {\n status: {\n type: \"'new' | 'authorization_requested' | 'authorized' | 'paid' | 'failed' | 'cancelled'\",\n descriptionKey: 'ui.agent.paymentRequestCard.state.status',\n description:\n 'Current lifecycle status of the payment request. Structural state only.',\n read: (handle) => handle.getStatus(),\n },\n },\n actions: {},\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'payment-request-card',\n description: 'Marks the PaymentRequestCard root region.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description:\n 'Sourced from the id prop. Addresses a specific request card.',\n },\n },\n};\n","import {\n forwardRef,\n useId,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { CalendarClock, CreditCard, FileText } from 'lucide-react';\nimport { Badge } from '../badge/badge';\nimport { Card } from '../card/card';\nimport { KeyValueList, KeyValuePair } from '../key-value-pair/key-value-pair';\nimport { Link } from '../link/link';\nimport { TransactionChip } from '../transaction-chip/transaction-chip';\nimport { entitySurfaceVariants, isSafeEntityUrl } from '../_shared/entity-card';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { paymentRequestCardAgent } from './payment-request-card.agent';\n\n/* -------------------------------------------------------------------- */\n/* PaymentRequestCard */\n/* */\n/* Companion to PaymentCard: a card for an *outstanding* payment request */\n/* (a Stripe / online-payment ask) rather than a recorded payment. Shows */\n/* the amount as a TransactionChip, the lifecycle status as a Badge, and */\n/* — when a safe `paymentUrl` is supplied — a \"Pay now\" Link. */\n/* */\n/* Every visible string flows through `useTranslation('ui')` against the */\n/* `paymentRequestCard.*` namespace. The agent state exposes the request */\n/* status (structural state) and never any patient identity. */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* Vocabulary */\n/* -------------------------------------------------------------------- */\n\nexport type PaymentRequestStatus =\n | 'new'\n | 'authorization_requested'\n | 'authorized'\n | 'paid'\n | 'failed'\n | 'cancelled';\n\ntype BadgeVariant = NonNullable<\n ComponentPropsWithoutRef<typeof Badge>['variant']\n>;\n\nconst STATUS_BADGE = {\n new: 'info',\n authorization_requested: 'warning',\n authorized: 'info',\n paid: 'success',\n failed: 'error',\n cancelled: 'neutral',\n} as const satisfies Record<PaymentRequestStatus, BadgeVariant>;\n\nconst DEFAULT_CURRENCY = 'EUR';\n\n// Inline English fallbacks — belt-and-braces only. The canonical keys\n// live in the locale bundle (`ui.paymentRequestCard.*`); these guard\n// against a stale / not-yet-wired bundle so the card never shows a key.\nconst STATUS_DEFAULTS: Record<PaymentRequestStatus, string> = {\n new: 'New',\n authorization_requested: 'Authorization requested',\n authorized: 'Authorized',\n paid: 'Paid',\n failed: 'Failed',\n cancelled: 'Cancelled',\n};\n\n/* -------------------------------------------------------------------- */\n/* CVA — root */\n/* -------------------------------------------------------------------- */\n\nconst rootVariants = cva('ds:w-full ds:text-[color:var(--foreground)]', {\n variants: {\n surface: {\n flat: '',\n elevated: '',\n },\n },\n defaultVariants: { surface: 'elevated' },\n});\n\n/* -------------------------------------------------------------------- */\n/* Public types */\n/* -------------------------------------------------------------------- */\n\nexport interface PaymentRequestCardHandle {\n /** Current lifecycle status. Structural state only — no PHI. */\n getStatus: () => PaymentRequestStatus;\n}\n\nexport interface PaymentRequestCardProps extends Omit<\n ComponentPropsWithoutRef<'div'>,\n 'aria-label' | 'children' | 'title'\n> {\n /** Agent-readiness consumer id, surfaced as `data-component-id`. */\n id?: string;\n /** Heading for the request. Falls back to a localised default. */\n title?: string;\n /** Optional supporting copy rendered beneath the heading. */\n description?: string;\n /** Requested amount in the smallest currency unit (cents). */\n amountCents: number;\n /** ISO-8601 due date. */\n dueDateIso?: string;\n /** Lifecycle status — drives the status Badge and pay-link gating. */\n status: PaymentRequestStatus;\n /** Hosted payment URL. Only rendered when it passes the URL allow-list. */\n paymentUrl?: string;\n /** Care-plan / treatment-plan number this request relates to. */\n carePlanNumber?: string;\n /** BCP-47 locale override. Falls back to the active i18next language. */\n locale?: string;\n /** ISO-4217 currency code. Defaults to `EUR`. */\n currency?: string;\n\n /* ----- Styling ----- */\n\n /**\n * `'elevated'` (default) wraps in `<Card variant=\"elevated\">`. `'flat'`\n * drops the Card — use inside an existing card / sheet.\n */\n surface?: 'flat' | 'elevated';\n\n /* ----- a11y ----- */\n\n /** Override the default region aria-label. */\n 'aria-label'?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------- */\n\nfunction formatDate(iso: string, locale: string): string {\n const date = new Date(iso);\n if (Number.isNaN(date.getTime())) return iso;\n try {\n return new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n }).format(date);\n } catch {\n return iso;\n }\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const PaymentRequestCard = forwardRef<\n HTMLDivElement,\n PaymentRequestCardProps\n>(\n (\n {\n id,\n title,\n description,\n amountCents,\n dueDateIso,\n status,\n paymentUrl,\n carePlanNumber,\n locale,\n currency = DEFAULT_CURRENCY,\n surface = 'elevated',\n 'aria-label': ariaLabel,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const headingId = useId();\n const activeLocale = locale ?? i18n.language ?? 'en';\n\n const resolvedTitle =\n title ?? t('paymentRequestCard.heading', 'Payment request');\n const resolvedAriaLabel = ariaLabel ?? resolvedTitle;\n\n useAgentRegistration(\n paymentRequestCardAgent,\n { getStatus: () => status },\n id,\n );\n\n const statusLabel = t(`paymentRequestCard.status.${status}`, {\n defaultValue: STATUS_DEFAULTS[status],\n });\n\n // A paid request settles; an open one is \"to-invoice\" (awaiting money);\n // anything terminal-but-unpaid renders as a debt.\n const chipState: 'to-invoice' | 'settled' | 'debt' =\n status === 'paid'\n ? 'settled'\n : status === 'failed' || status === 'cancelled'\n ? 'debt'\n : 'to-invoice';\n\n // The pay link only renders when the request is still actionable AND\n // the URL passes the shared card-family allow-list (no javascript:,\n // data:, protocol-relative). Otherwise the affordance is suppressed.\n const isActionable =\n status === 'new' ||\n status === 'authorization_requested' ||\n status === 'authorized';\n const showPayLink =\n isActionable && !!paymentUrl && isSafeEntityUrl(paymentUrl);\n\n const rows: Array<{\n key: string;\n icon: ReactNode;\n label: string;\n value: ReactNode;\n }> = [];\n\n rows.push({\n key: 'status',\n icon: <CreditCard aria-hidden=\"true\" />,\n label: t('paymentRequestCard.label.status', 'Status'),\n value: <Badge variant={STATUS_BADGE[status]}>{statusLabel}</Badge>,\n });\n\n if (dueDateIso) {\n rows.push({\n key: 'dueDate',\n icon: <CalendarClock aria-hidden=\"true\" />,\n label: t('paymentRequestCard.label.dueDate', 'Due date'),\n value: formatDate(dueDateIso, activeLocale),\n });\n }\n\n if (carePlanNumber) {\n rows.push({\n key: 'carePlan',\n icon: <FileText aria-hidden=\"true\" />,\n label: t('paymentRequestCard.label.carePlan', 'Care plan'),\n value: carePlanNumber,\n });\n }\n\n const inner = (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n {/* Heading row — title + amount TransactionChip. */}\n <div className=\"ds:flex ds:items-start ds:gap-[var(--spacing-md)] ds:flex-wrap\">\n <div className=\"ds:flex ds:min-w-0 ds:flex-col ds:gap-[var(--spacing-2xs)]\">\n <h3\n id={headingId}\n className=\"type-title-card ds:m-0 ds:text-[color:var(--foreground)]\"\n >\n {resolvedTitle}\n </h3>\n {description ? (\n <p className=\"type-body-sm ds:m-0 ds:text-[color:var(--muted-foreground)]\">\n {description}\n </p>\n ) : null}\n </div>\n <span className=\"ds:ms-auto ds:shrink-0\">\n <TransactionChip\n state={chipState}\n amount={amountCents / 100}\n currency={currency}\n locale={activeLocale}\n size=\"lg\"\n />\n </span>\n </div>\n\n {/* Metadata rows. */}\n <KeyValueList rowGap=\"sm\">\n {rows.map((row) => (\n <KeyValuePair\n key={row.key}\n icon={row.icon as React.ReactElement}\n label={row.label}\n value={row.value}\n />\n ))}\n </KeyValueList>\n\n {/* Pay affordance — only when actionable + the URL is safe. */}\n {showPayLink ? (\n <div className=\"ds:flex\">\n <Link href={paymentUrl!} external startIcon={<CreditCard />}>\n {t('paymentRequestCard.pay', 'Pay now')}\n </Link>\n </div>\n ) : null}\n </div>\n );\n\n return (\n <div\n ref={ref}\n role=\"region\"\n aria-label={resolvedAriaLabel}\n aria-labelledby={headingId}\n data-component=\"payment-request-card\"\n data-component-id={id}\n data-status={status}\n id={id}\n className={rootVariants({ surface, className })}\n {...rest}\n >\n {surface === 'elevated' ? (\n <Card variant=\"elevated\">\n <Card.Body>{inner}</Card.Body>\n </Card>\n ) : (\n <div className={entitySurfaceVariants({ surface: 'flat' })}>\n {inner}\n </div>\n )}\n </div>\n );\n },\n);\n\nPaymentRequestCard.displayName = 'PaymentRequestCard';\n\nexport type PaymentRequestCardSurface = NonNullable<\n VariantProps<typeof rootVariants>['surface']\n>;\n"],"names":["__iconNode","CreditCard","createLucideIcon","Hash","ReceiptText","paymentCardAgent","handle","PAYMENT_TYPE_BADGE","DEFAULT_CURRENCY","TYPE_DEFAULTS","DIRECTION_DEFAULTS","rootVariants","cva","formatMoney","cents","currency","locale","formatDate","iso","date","resolveState","type","paidCents","unpaidCents","writtenOff","PaymentCard","forwardRef","id","number","dateIso","direction","grossCents","relations","lineItems","surface","ariaLabel","className","rest","ref","i18n","useTranslation","headingId","useId","activeLocale","resolvedAriaLabel","state","chipAmountCents","useAgentRegistration","typeLabel","directionIcon","jsx","ArrowDownLeft","ArrowUpRight","directionLabel","rows","CalendarDays","Badge","FileText","User","UserCog","formattedGross","useMemo","formattedPaid","formattedUnpaid","hasAmounts","hasLineItems","inner","jsxs","TransactionChip","KeyValueList","row","KeyValuePair","DescriptionList","item","index","Card","entitySurfaceVariants","paymentRequestCardAgent","STATUS_BADGE","STATUS_DEFAULTS","PaymentRequestCard","title","description","amountCents","dueDateIso","status","paymentUrl","carePlanNumber","t","resolvedTitle","statusLabel","chipState","showPayLink","isSafeEntityUrl","CalendarClock","Link"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|