@alfadocs/ui-kit-debug 0.68.0 → 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/{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-VawKN1FI.js → rich-text-editor-BsV7zUdg.js} +736 -647
- 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/index.js +31 -30
- package/dist/components/data-table/index.js.map +1 -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/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/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.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 +72 -0
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +73 -1
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +72 -0
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +73 -1
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +72 -0
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +73 -1
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +90 -0
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +91 -1
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +72 -0
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +73 -1
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +72 -0
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +73 -1
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +72 -0
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +73 -1
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +72 -0
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +73 -1
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +72 -0
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +73 -1
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +72 -0
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +73 -1
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +72 -0
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +73 -1
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +72 -0
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +73 -1
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +72 -0
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +73 -1
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +72 -0
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +73 -1
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +72 -0
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +73 -1
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +72 -0
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +73 -1
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +72 -0
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +73 -1
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +72 -0
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +73 -1
- 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 +73 -1
- package/dist/locales/de.json +73 -1
- package/dist/locales/el.json +73 -1
- package/dist/locales/en.json +73 -1
- package/dist/locales/es.json +73 -1
- package/dist/locales/fr.json +73 -1
- package/dist/locales/hi.json +73 -1
- package/dist/locales/it.json +73 -1
- package/dist/locales/ja.json +73 -1
- package/dist/locales/nl.json +73 -1
- package/dist/locales/pl.json +73 -1
- package/dist/locales/pt.json +73 -1
- package/dist/locales/ro.json +73 -1
- package/dist/locales/ru.json +73 -1
- package/dist/locales/sq.json +73 -1
- package/dist/locales/sv.json +73 -1
- package/dist/locales/tr.json +73 -1
- package/dist/locales/zh.json +73 -1
- 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-DHOspPee.js +0 -2409
- package/dist/_chunks/editable-currency-cell-renderer-DHOspPee.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-VawKN1FI.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":"signature-capture-Ct_4Md4e.js","sources":["../../src/components/signature-capture/signature-capture.agent.ts","../../src/components/signature-capture/signature-capture.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { SignatureCaptureHandle } from './signature-capture';\n\nexport const signatureCaptureAgent: AgentAdapter<SignatureCaptureHandle> = {\n id: 'signature-capture',\n // Multi-step media lifecycle: draw / type strokes (capture) then commit the\n // serialised signature (submit).\n capabilities: ['capture', 'submit'],\n state: {\n isEmpty: {\n type: 'boolean',\n descriptionKey: 'ui.agent.signatureCapture.state.isEmpty',\n description: 'True when no signature has been drawn or typed.',\n read: (handle) => handle.isEmpty(),\n },\n },\n actions: {\n clear: {\n // Erases all captured strokes — destructive (loses drawn/typed input).\n safety: 'destructive',\n idempotent: true,\n descriptionKey: 'ui.agent.signatureCapture.actions.clear',\n description: 'Erase the current signature. Loses unsaved input.',\n invoke: (handle) => {\n handle.clear();\n },\n },\n undo: {\n // Removes the last stroke — reversible by redrawing.\n safety: 'write',\n descriptionKey: 'ui.agent.signatureCapture.actions.undo',\n description: 'Undo the last stroke.',\n invoke: (handle) => {\n handle.undo();\n },\n },\n confirm: {\n // Commits the captured media and returns its serialised payload.\n safety: 'write',\n returns: 'SignatureConfirmPayload | null',\n returnsSchema: {\n oneOf: [\n {\n type: 'object',\n description: 'The committed signature payload.',\n properties: {\n dataUrl: {\n type: 'string',\n description: 'PNG data URL of the captured signature.',\n },\n capturedAt: {\n type: 'string',\n description: 'ISO-8601 UTC timestamp of the commit.',\n },\n },\n required: ['dataUrl'],\n },\n {\n type: 'null',\n description: 'Returned when the pad is empty.',\n },\n ],\n },\n descriptionKey: 'ui.agent.signatureCapture.actions.confirm',\n description: 'Commit the signature and return its serialised payload.',\n invoke: (handle) => handle.confirm(),\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'signature-capture' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","/* ------------------------------------------------------------------ */\n/* SignatureCapture — thin React wrapper over signature_pad. */\n/* */\n/* - Library: `signature_pad` (08-third-party §Signature Pad). We */\n/* instantiate one pad per mounted canvas and expose imperative */\n/* clear / undo / isEmpty / confirm verbs to the consumer. */\n/* - Colors: `penColor` / `backgroundColor` default to */\n/* `--foreground` / `--background` via `getComputedStyle()`. Theme */\n/* switches are observed via a MutationObserver on `<html class>` */\n/* so the ink recolours when the theme flips. */\n/* - DPR scaling: canvas attribute `width/height = cssSize * DPR`; the */\n/* 2D context is scaled by the same factor. A `ResizeObserver` */\n/* replays strokes via `fromData()` on re-scale so nothing is lost. */\n/* - Typed fallback: keyboard-only path renders a text input styled in */\n/* italic `var(--font-sans)` (per 23-constraints §10 — serif is */\n/* marketing only). On confirm we render the string to an offscreen */\n/* canvas for the PNG/SVG export. */\n/* - Confirm payload: `{ png, svg, widthMm, heightMm, capturedAt, */\n/* sha256, strokes? }`. `sha256` is the SubtleCrypto digest of the */\n/* PNG bytes — tamper-evident for audit trails. */\n/* - Security: no `fetch` / `XMLHttpRequest` / `localStorage` / */\n/* `sessionStorage` in this file — the consumer owns persistence. */\n/* */\n/* TODO: */\n/* - 3× DPI re-render for print: currently `toDataURL('image/png')` */\n/* exports the live canvas (already at DPR). A proper 300-DPI */\n/* pipeline would create an offscreen canvas at `cssSize × 3` and */\n/* replay strokes via `fromData()` — deferred pending the print */\n/* bridge landing. */\n/* - Typed-fallback canvas font can't read CSS variables directly */\n/* (Canvas2D resolves fonts at paint time and won't expand */\n/* `var(--font-size-2xl)`); we use a fixed `32px italic` + the */\n/* user's font stack, which is visually close but not */\n/* theme-reactive. Will migrate once the typography tokens expose */\n/* a resolved `font` shorthand. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from 'react';\nimport SignaturePad from 'signature_pad';\nimport type { PointGroup } from 'signature_pad';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { signatureCaptureAgent } from './signature-capture.agent';\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport interface SignatureConfirmPayload {\n /** Data URL of the captured signature rendered as PNG. */\n png: string;\n /** SVG string trimmed to the stroke bounding box. */\n svg: string;\n /** Physical width in millimetres, derived from CSS px. */\n widthMm: number;\n /** Physical height in millimetres, derived from CSS px. */\n heightMm: number;\n /** ISO-8601 UTC timestamp for when `confirm()` resolved. */\n capturedAt: string;\n /** Hex-encoded SHA-256 digest of the PNG bytes. */\n sha256: string;\n /** Raw stroke data from `signature_pad.toData()` — optional for replays. */\n strokes?: PointGroup[];\n}\n\nexport interface SignatureCaptureProps {\n /** Opaque instance id — emitted as `data-component-id` for the agent registry. */\n id?: string;\n /** Called with the export payload when the user confirms the signature. */\n onConfirm?: (payload: SignatureConfirmPayload) => void;\n /** Called after the pad is cleared (explicit user action). */\n onClear?: () => void;\n /** Called when the user starts drawing a new stroke. */\n onStart?: () => void;\n /** CSS width of the pad. Default 400. */\n width?: number | string;\n /** CSS height of the pad. Default 200. */\n height?: number | string;\n /** Pen colour override — defaults to `var(--foreground)`. */\n penColor?: string;\n /** Background override — defaults to `var(--background)`. */\n backgroundColor?: string;\n /** Show the typed-name fallback toggle. Default `true`. */\n allowTypedFallback?: boolean;\n /**\n * When set, on confirm() the captured PNG data URL is written into a hidden\n * `<input name={name}>` so consumers can POST the signature declaratively.\n * The PNG data URL satisfies the server's `data:image/png` prefix check.\n * Default off.\n */\n name?: string;\n /** Disable the entire component. */\n disabled?: boolean;\n /** Accessible label for the pad region. */\n ariaLabel?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\nexport interface SignatureCaptureHandle {\n clear: () => void;\n undo: () => void;\n isEmpty: () => boolean;\n confirm: () => Promise<SignatureConfirmPayload | null>;\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst wrapperVariants = cva(\n [\n 'ds:signature-capture-alfadocs ds:flex ds:flex-col',\n 'ds:gap-[var(--spacing-sm)]',\n 'ds:bg-[var(--background)] ds:text-[var(--foreground)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-[color:var(--card-border)]',\n 'ds:shadow-[var(--shadow-card)]',\n 'ds:[.theme-accessible_&]:border-2',\n 'ds:p-[var(--spacing-sm)]',\n 'ds:aria-disabled:opacity-[var(--opacity-50)] ds:aria-disabled:cursor-not-allowed',\n ].join(' '),\n);\n\nconst padFrameVariants = cva(\n [\n 'ds:relative ds:block',\n // Mobile-first: fill the available width but never exceed the configured\n // pad width. Arbitrary-property form because `inline-size-[…]` /\n // `block-size-[…]` named utilities emit no CSS here (see canvasVariants).\n 'ds:[inline-size:100%]',\n 'ds:[max-inline-size:var(--signature-width)]',\n 'ds:[block-size:var(--signature-height)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:border ds:border-[color:var(--border)]',\n 'ds:bg-[var(--background)]',\n 'ds:overflow-hidden',\n 'ds:touch-none',\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:forced-colors:focus-visible:outline-[CanvasText]',\n ].join(' '),\n);\n\nconst canvasVariants = cva(\n [\n 'ds:block',\n // Arbitrary-property form, NOT `inline-size-full` / `block-size-full`:\n // the `inline-size-*` / `block-size-*` named utilities generate no CSS in\n // this Tailwind setup, so on a block <div> they silently fall back to auto\n // (harmless) but on a replaced <canvas> the element then sizes to its\n // backing-store `width`/`height` attribute — which scaleCanvas drives up to\n // MAX_CANVAS_PX (4096) in a feedback loop, overflowing the pad on mobile.\n // The `[property:value]` escape hatch always emits, pinning the canvas to\n // the frame so the loop can't run away.\n 'ds:[inline-size:100%]',\n 'ds:[block-size:100%]',\n 'ds:touch-none',\n 'ds:select-none',\n ].join(' '),\n);\n\nconst toolbarVariants = cva(\n ['ds:flex ds:items-stretch ds:flex-wrap ds:gap-[var(--spacing-sm)]'].join(\n ' ',\n ),\n);\n\n// Toolbar actions are sized for thumbs: they grow to fill the pad width\n// (`flex-1`), sit above the 44/48px floor, and use base-size text so they read\n// clearly on a phone.\nconst actionButtonVariants = cva(\n [\n 'ds:inline-flex ds:flex-1 ds:items-center ds:justify-center',\n 'ds:[min-block-size:var(--min-target-size)]',\n 'ds:[min-inline-size:var(--min-target-size)]',\n 'ds:gap-[var(--spacing-xs)]',\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]',\n 'ds:pt-[var(--spacing-md)] ds:pb-[var(--spacing-md)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:border ds:border-[color:var(--border)]',\n 'ds:bg-transparent ds:text-[var(--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(--muted)]',\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 ].join(' '),\n);\n\nconst confirmButtonVariants = cva(\n [\n 'ds:inline-flex ds:flex-1 ds:items-center ds:justify-center',\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:pt-[var(--spacing-md)] ds:pb-[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 ].join(' '),\n);\n\nconst typedInputVariants = cva(\n [\n 'ds:block ds:inline-size-full',\n 'ds:[min-block-size:var(--min-target-size)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:border ds:border-[color:var(--border)]',\n 'ds:bg-[var(--background)] ds:text-[var(--foreground)]',\n 'ds:font-[family-name:var(--font-sans)]',\n 'ds:italic',\n 'ds:tracking-[0.1em]',\n 'ds:text-[length:var(--font-size-lg)]',\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:forced-colors:focus-visible:outline-[CanvasText]',\n ].join(' '),\n);\n\nconst typedPreviewVariants = cva(\n [\n 'ds:flex ds:items-center ds:justify-center',\n // Match the pad frame: responsive width capped at the configured size.\n // Arbitrary-property form (the named `*-size-[…]` utilities are no-ops here).\n 'ds:[inline-size:100%]',\n 'ds:[max-inline-size:var(--signature-width)]',\n 'ds:[block-size:var(--signature-height)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:border ds:border-[color:var(--card-border)]',\n 'ds:[.theme-accessible_&]:border-2',\n 'ds:bg-[var(--background)] ds:text-[var(--foreground)]',\n 'ds:font-[family-name:var(--font-sans)]',\n 'ds:italic',\n 'ds:tracking-[0.1em]',\n 'ds:text-[length:var(--font-size-2xl)]',\n 'ds:p-[var(--spacing-md)]',\n ].join(' '),\n);\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\ntype SignatureState = 'empty' | 'drawing' | 'captured' | 'cleared';\n\n/**\n * Resolve a CSS custom property against `document.documentElement`. We\n * can't pass `var(--foreground)` to signature_pad directly — the lib\n * stamps the string straight into `ctx.strokeStyle`, which only accepts\n * concrete colour values. Looking the variable up at runtime keeps the\n * component in tokens-only compliance.\n */\nfunction resolveCssVar(name: string): string {\n if (typeof document === 'undefined') return '';\n const value = getComputedStyle(document.documentElement)\n .getPropertyValue(name)\n .trim();\n return value;\n}\n\nfunction toCssSize(v: number | string | undefined, fallback: string): string {\n if (typeof v === 'number') return `${v}px`;\n if (typeof v === 'string' && v.length > 0) return v;\n return fallback;\n}\n\n/**\n * Parse a pixel value, returning `null` for non-pixel strings (e.g.\n * \"100%\", \"50vw\") so the caller can fall back to the measured rect.\n * parseFloat(\"100%\") would silently return 100 — a 100mm-wide export\n * masquerading as 26mm. Allow only digits, dot, minus, whitespace, \"px\".\n */\nfunction parsePxValue(v: string): number | null {\n if (typeof v === 'string' && /[^0-9.\\s\\-px]/i.test(v)) return null;\n const n = parseFloat(v);\n if (!Number.isFinite(n)) return null;\n return n;\n}\n\n/** Hex-encode a Uint8Array. */\nfunction toHex(bytes: Uint8Array): string {\n let out = '';\n for (let i = 0; i < bytes.length; i += 1) {\n const b = bytes[i];\n out += b.toString(16).padStart(2, '0');\n }\n return out;\n}\n\n/** Decode a base64 string into bytes without `atob` polyfills. */\nfunction base64ToBytes(b64: string): Uint8Array {\n if (typeof atob === 'function') {\n const bin = atob(b64);\n const bytes = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i += 1) bytes[i] = bin.charCodeAt(i);\n return bytes;\n }\n // Fallback — node-style Buffer, gated behind a runtime check.\n const g = globalThis as {\n Buffer?: { from: (s: string, enc: string) => Uint8Array };\n };\n if (g.Buffer) return g.Buffer.from(b64, 'base64');\n return new Uint8Array();\n}\n\nasync function sha256Hex(bytes: Uint8Array): Promise<string> {\n const g = globalThis as { crypto?: Crypto };\n if (g.crypto?.subtle) {\n // Copy the bytes into a fresh ArrayBuffer so the slice is always an\n // ArrayBuffer (never a SharedArrayBuffer) — SubtleCrypto's BufferSource\n // narrowing doesn't accept the latter.\n const copy = new Uint8Array(bytes.byteLength);\n copy.set(bytes);\n const digest = await g.crypto.subtle.digest('SHA-256', copy.buffer);\n return toHex(new Uint8Array(digest));\n }\n // No subtle crypto — return empty so callers can still use the rest\n // of the payload. Test env is expected to stub crypto.subtle.\n return '';\n}\n\n/**\n * Render the typed fallback string onto an offscreen canvas and return\n * it. Used by the confirm path when the user has typed their name\n * instead of drawing. Size is fixed at `32px italic` because Canvas2D\n * resolves fonts eagerly and can't expand `var(--font-size-*)`.\n */\nfunction renderTypedSignatureToCanvas(\n text: string,\n cssWidth: number,\n cssHeight: number,\n penColor: string,\n backgroundColor: string,\n): HTMLCanvasElement {\n const dpr = Math.max(\n 1,\n typeof window !== 'undefined' ? window.devicePixelRatio : 1,\n );\n const canvas = document.createElement('canvas');\n canvas.width = Math.floor(cssWidth * dpr);\n canvas.height = Math.floor(cssHeight * dpr);\n const ctx = canvas.getContext('2d');\n if (!ctx) return canvas;\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n // Fill background with the token-resolved colour.\n ctx.fillStyle = backgroundColor || 'transparent';\n ctx.fillRect(0, 0, cssWidth, cssHeight);\n // Draw the typed signature centred.\n ctx.fillStyle = penColor || 'currentColor';\n ctx.font = '32px italic sans-serif';\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillText(text, cssWidth / 2, cssHeight / 2, cssWidth - 16);\n return canvas;\n}\n\n/* ------------------------------------------------------------------ */\n/* SignatureCapture */\n/* ------------------------------------------------------------------ */\n\nexport const SignatureCapture = forwardRef<\n SignatureCaptureHandle,\n SignatureCaptureProps\n>(\n (\n {\n id,\n onConfirm,\n onClear,\n onStart,\n width = 400,\n height = 200,\n penColor,\n backgroundColor,\n allowTypedFallback = true,\n name,\n disabled = false,\n ariaLabel,\n className,\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const rawId = useId();\n const idSafe = useMemo(\n () => `sig-${rawId.replace(/[^a-zA-Z0-9-_]/g, '')}`,\n [rawId],\n );\n const liveRegionId = `${idSafe}-live`;\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n const padFrameRef = useRef<HTMLDivElement>(null);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const typedPreviewRef = useRef<HTMLDivElement>(null);\n const signaturePadRef = useRef<SignaturePad | null>(null);\n\n const [mode, setMode] = useState<'draw' | 'typed'>('draw');\n const [typedValue, setTypedValue] = useState('');\n // Mirrors the last confirmed PNG data URL into a hidden form field when\n // `name` is set, so consumers can POST the signature declaratively.\n const [boundValue, setBoundValue] = useState('');\n // Tracks whether the pad has any ink — gates the Confirm button.\n // signature_pad's isEmpty() is a sync ref read and won't trigger\n // re-renders; this state mirrors it so React sees the change.\n const [padHasInk, setPadHasInk] = useState(false);\n // Retained state — consumers may subscribe to the pad's lifecycle via\n // `onConfirm`/`onClear`/`onStart`; we still track the machine internally\n // so the live region + confirm button stay coherent.\n const signatureStateRef = useRef<SignatureState>('empty');\n const [announcement, setAnnouncement] = useState<string>('');\n const [resolvedPen, setResolvedPen] = useState<string>('');\n const [resolvedBg, setResolvedBg] = useState<string>('');\n\n // Stable callback refs so we can wire signature_pad once without\n // re-instantiating on every render.\n const onStartRef = useRef<SignatureCaptureProps['onStart']>(onStart);\n const onClearRef = useRef<SignatureCaptureProps['onClear']>(onClear);\n const onConfirmRef = useRef<SignatureCaptureProps['onConfirm']>(onConfirm);\n useEffect(() => {\n onStartRef.current = onStart;\n onClearRef.current = onClear;\n onConfirmRef.current = onConfirm;\n }, [onStart, onClear, onConfirm]);\n\n /* ---- Announce helper ---------------------------------------- */\n const announce = useCallback(\n (next: SignatureState) => {\n signatureStateRef.current = next;\n setAnnouncement(t(`signature.state.${next}`));\n },\n [t],\n );\n\n /* ---- Resolve tokens ----------------------------------------- */\n useEffect(() => {\n if (typeof document === 'undefined') return undefined;\n function resolveAll(): void {\n const pen = penColor ?? resolveCssVar('--foreground');\n const bg = backgroundColor ?? resolveCssVar('--background');\n // Fall back to `currentColor` / `transparent` — keyword literals\n // are token-neutral and honour the surrounding theme even when\n // the CSS variable is briefly unavailable (SSR, initial paint).\n setResolvedPen(pen || 'currentColor');\n setResolvedBg(bg || 'transparent');\n }\n resolveAll();\n // Watch for theme-class changes on <html>.\n const mo = new MutationObserver(() => {\n resolveAll();\n });\n mo.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n return () => mo.disconnect();\n }, [penColor, backgroundColor]);\n\n /* ---- Apply colour changes to an existing pad ---------------- */\n useEffect(() => {\n const pad = signaturePadRef.current;\n if (!pad) return;\n if (resolvedPen) pad.penColor = resolvedPen;\n if (resolvedBg) pad.backgroundColor = resolvedBg;\n }, [resolvedPen, resolvedBg]);\n\n /* ---- Instantiate signature_pad ------------------------------ */\n useEffect(() => {\n if (mode !== 'draw') return undefined;\n const canvas = canvasRef.current;\n if (!canvas) return undefined;\n\n const pad = new SignaturePad(canvas, {\n penColor: resolvedPen || 'currentColor',\n backgroundColor: resolvedBg || 'transparent',\n minWidth: 0.5,\n maxWidth: 2.5,\n velocityFilterWeight: 0.7,\n });\n signaturePadRef.current = pad;\n\n const handleBegin = (): void => {\n setPadHasInk(true);\n announce('drawing');\n onStartRef.current?.();\n };\n const handleEnd = (): void => {\n // Keep state as 'drawing' — transition to 'captured' on confirm.\n };\n pad.addEventListener('beginStroke', handleBegin);\n pad.addEventListener('endStroke', handleEnd);\n\n // Initial DPR scale + announcement.\n scaleCanvas(canvas);\n announce('empty');\n\n return () => {\n pad.removeEventListener('beginStroke', handleBegin);\n pad.removeEventListener('endStroke', handleEnd);\n // Clear strokes from memory; 08-third-party §Signature Pad.\n pad.clear();\n pad.off();\n signaturePadRef.current = null;\n };\n // We intentionally re-create the pad only when switching between\n // typed and draw modes. Color updates flow through the effect above.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mode]);\n\n /* ---- Disabled state ----------------------------------------- */\n useEffect(() => {\n const pad = signaturePadRef.current;\n if (!pad) return;\n if (disabled) pad.off();\n else pad.on();\n }, [disabled, mode]);\n\n /* ---- DPR + ResizeObserver ----------------------------------- */\n // Hard-cap backing-store dimensions to bound memory. 4096 px × 4096 px at\n // 4 bytes per pixel is ~67 MB — generous for any realistic signature, but\n // well under the multi-GB allocation a careless or malicious prop could\n // request on a high-DPR display. See security-hardening.mdx.\n const MAX_CANVAS_PX = 4096;\n const scaleCanvas = useCallback(\n (canvas: HTMLCanvasElement) => {\n const rect = canvas.getBoundingClientRect();\n const dpr = Math.max(\n 1,\n typeof window !== 'undefined' ? window.devicePixelRatio : 1,\n );\n const rawWidth = Math.max(1, Math.floor(rect.width * dpr));\n const rawHeight = Math.max(1, Math.floor(rect.height * dpr));\n const targetWidth = Math.min(rawWidth, MAX_CANVAS_PX);\n const targetHeight = Math.min(rawHeight, MAX_CANVAS_PX);\n if (\n import.meta.env.DEV &&\n (rawWidth !== targetWidth || rawHeight !== targetHeight)\n ) {\n // Silent in production; a consumer shipping 10k × 10k probably wants\n // the nudge.\n console.warn(\n `[SignatureCapture] clamped canvas backing store from ${rawWidth}x${rawHeight} to ${targetWidth}x${targetHeight} (cap = ${MAX_CANVAS_PX}px).`,\n );\n }\n if (canvas.width === targetWidth && canvas.height === targetHeight)\n return;\n\n const pad = signaturePadRef.current;\n const prior = pad ? pad.toData() : null;\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n const ctx = canvas.getContext('2d');\n if (ctx) ctx.scale(dpr, dpr);\n if (pad) {\n if (resolvedBg) pad.backgroundColor = resolvedBg;\n if (resolvedPen) pad.penColor = resolvedPen;\n pad.clear();\n if (prior && prior.length > 0) {\n pad.fromData(prior);\n }\n }\n },\n [resolvedBg, resolvedPen],\n );\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return undefined;\n if (typeof ResizeObserver === 'undefined') {\n scaleCanvas(canvas);\n return undefined;\n }\n const ro = new ResizeObserver(() => {\n scaleCanvas(canvas);\n });\n ro.observe(canvas);\n return () => ro.disconnect();\n }, [scaleCanvas]);\n\n /* ---- Imperative handle -------------------------------------- */\n const clear = useCallback(() => {\n const pad = signaturePadRef.current;\n if (pad) pad.clear();\n setTypedValue('');\n setBoundValue('');\n setPadHasInk(false);\n announce('cleared');\n onClearRef.current?.();\n }, [announce]);\n\n const undo = useCallback(() => {\n const pad = signaturePadRef.current;\n if (!pad) return;\n const data = pad.toData();\n if (!data || data.length === 0) return;\n data.pop();\n pad.fromData(data);\n if (data.length === 0) {\n setPadHasInk(false);\n announce('empty');\n }\n }, [announce]);\n\n const isEmpty = useCallback((): boolean => {\n if (mode === 'typed') return typedValue.trim().length === 0;\n const pad = signaturePadRef.current;\n return pad ? pad.isEmpty() : true;\n }, [mode, typedValue]);\n\n const confirm =\n useCallback(async (): Promise<SignatureConfirmPayload | null> => {\n // parsePxValue returns null for \"100%\" / \"50vw\" etc. — fall back\n // to the live rendered rect so widthMm reflects reality, not a\n // mis-parsed parseFloat(\"100%\") = 100.\n const widthParsed = parsePxValue(\n typeof width === 'number' ? `${width}` : String(width),\n );\n const heightParsed = parsePxValue(\n typeof height === 'number' ? `${height}` : String(height),\n );\n const measureEl =\n mode === 'draw'\n ? (canvasRef.current ?? padFrameRef.current ?? wrapperRef.current)\n : (typedPreviewRef.current ?? wrapperRef.current);\n const measuredRect = measureEl?.getBoundingClientRect();\n const cssWidth =\n widthParsed ?? (measuredRect ? measuredRect.width : 400);\n const cssHeight =\n heightParsed ?? (measuredRect ? measuredRect.height : 200);\n\n let pngDataUrl = '';\n let svgString = '';\n let strokes: PointGroup[] | undefined;\n\n if (mode === 'draw') {\n const pad = signaturePadRef.current;\n if (!pad || pad.isEmpty()) return null;\n pngDataUrl = pad.toDataURL('image/png');\n svgString = pad.toSVG();\n strokes = pad.toData();\n } else {\n const value = typedValue.trim();\n if (value.length === 0) return null;\n const offscreen = renderTypedSignatureToCanvas(\n value,\n cssWidth,\n cssHeight,\n resolvedPen || 'currentColor',\n resolvedBg || 'transparent',\n );\n pngDataUrl = offscreen.toDataURL('image/png');\n // Inline SVG — we can't call toSVG() because signature_pad isn't\n // driving the canvas. Build a minimal SVG with the rendered text.\n const safeText = value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n svgString =\n `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${cssWidth} ${cssHeight}\" width=\"${cssWidth}\" height=\"${cssHeight}\">` +\n `<text x=\"50%\" y=\"50%\" dominant-baseline=\"middle\" text-anchor=\"middle\" font-family=\"sans-serif\" font-style=\"italic\" font-size=\"32\" fill=\"${resolvedPen || 'currentColor'}\" letter-spacing=\"3\">${safeText}</text>` +\n `</svg>`;\n }\n\n // 96 CSS px = 25.4 mm (per W3C CSS absolute length definition).\n const widthMm = (cssWidth * 25.4) / 96;\n const heightMm = (cssHeight * 25.4) / 96;\n const capturedAt = new Date().toISOString();\n\n // Compute SHA-256 of the PNG bytes.\n let sha256 = '';\n if (pngDataUrl) {\n const commaIx = pngDataUrl.indexOf(',');\n const b64 = commaIx >= 0 ? pngDataUrl.slice(commaIx + 1) : '';\n const bytes = base64ToBytes(b64);\n sha256 = await sha256Hex(bytes);\n }\n\n const payload: SignatureConfirmPayload = {\n png: pngDataUrl,\n svg: svgString,\n widthMm,\n heightMm,\n capturedAt,\n sha256,\n strokes,\n };\n\n announce('captured');\n if (name) setBoundValue(payload.png);\n onConfirmRef.current?.(payload);\n return payload;\n }, [\n mode,\n typedValue,\n width,\n height,\n resolvedPen,\n resolvedBg,\n announce,\n name,\n ]);\n\n const agentHandle = useMemo<SignatureCaptureHandle>(\n () => ({\n clear,\n undo,\n isEmpty,\n confirm,\n }),\n [clear, undo, isEmpty, confirm],\n );\n useImperativeHandle(ref, () => agentHandle, [agentHandle]);\n useAgentRegistration(signatureCaptureAgent, agentHandle, id);\n\n /* ---- Derived UI state --------------------------------------- */\n // Gate Confirm on React state, not the signature_pad ref — its\n // isEmpty() doesn't trigger re-renders, leaving the button stale.\n const hasContent =\n mode === 'typed' ? typedValue.trim().length > 0 : padHasInk;\n const confirmDisabled = disabled || !hasContent;\n // Inline style — permitted per 23-constraints §Runtime-computed\n // dimensions (CSS custom property setter for dynamic width/height\n // from consumer props; the width rule lives in Tailwind arbitrary\n // values that read --signature-width / --signature-height).\n const sizeStyle: CSSProperties = {\n ['--signature-width' as unknown as keyof CSSProperties]: toCssSize(\n width,\n 'var(--signature-default-width)',\n ),\n ['--signature-height' as unknown as keyof CSSProperties]: toCssSize(\n height,\n 'var(--signature-default-height)',\n ),\n } as CSSProperties;\n\n /* ---- Render -------------------------------------------------- */\n return (\n <div\n ref={wrapperRef}\n role=\"group\"\n aria-label={ariaLabel ?? t('signature.padLabel')}\n aria-disabled={disabled || undefined}\n className={[wrapperVariants(), className].filter(Boolean).join(' ')}\n // eslint-disable-next-line react/forbid-dom-props -- runtime-computed pad dimensions\n style={sizeStyle}\n data-component=\"signature-capture\"\n data-component-id={id}\n >\n {name ? (\n <input type=\"hidden\" name={name} value={boundValue} readOnly />\n ) : null}\n {mode === 'draw' ? (\n <div ref={padFrameRef} className={padFrameVariants()}>\n <canvas\n ref={canvasRef}\n role=\"img\"\n aria-label={t('signature.padLabel')}\n className={canvasVariants()}\n data-testid=\"signature-canvas\"\n />\n </div>\n ) : (\n <label className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <span className=\"type-body-sm ds:text-[var(--muted-foreground)]\">\n {t('signature.typedFallback.label')}\n </span>\n <input\n type=\"text\"\n value={typedValue}\n onChange={(e) => {\n setTypedValue(e.target.value);\n if (e.target.value.length > 0) announce('drawing');\n else announce('empty');\n }}\n placeholder={t('signature.typedFallback.placeholder')}\n aria-label={t('signature.typedFallback.label')}\n disabled={disabled}\n className={typedInputVariants()}\n data-testid=\"signature-typed-input\"\n />\n {typedValue ? (\n <div\n ref={typedPreviewRef}\n className={typedPreviewVariants()}\n aria-hidden=\"true\"\n >\n {typedValue}\n </div>\n ) : null}\n </label>\n )}\n\n {/* Live region — state transitions (empty, drawing, captured, cleared) */}\n <div\n id={liveRegionId}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"ds:sr-only\"\n data-testid=\"signature-live\"\n >\n {announcement}\n </div>\n\n <div\n className={toolbarVariants()}\n role=\"group\"\n aria-label={t('signature.padLabel')}\n >\n <button\n type=\"button\"\n onClick={() => {\n if (disabled) return;\n clear();\n }}\n aria-disabled={disabled || undefined}\n className={actionButtonVariants()}\n >\n {t('signature.clear')}\n </button>\n {allowTypedFallback ? (\n <button\n type=\"button\"\n onClick={() => {\n if (disabled) return;\n setTypedValue('');\n setMode((m) => (m === 'draw' ? 'typed' : 'draw'));\n announce('cleared');\n }}\n aria-disabled={disabled || undefined}\n className={actionButtonVariants()}\n aria-pressed={mode === 'typed'}\n >\n {mode === 'draw'\n ? t('signature.typedFallback.toggle')\n : t('signature.typedFallback.toggleDraw')}\n </button>\n ) : null}\n <button\n type=\"button\"\n onClick={() => {\n if (confirmDisabled) return;\n void confirm();\n }}\n aria-disabled={confirmDisabled || undefined}\n aria-describedby={liveRegionId}\n className={confirmButtonVariants()}\n data-testid=\"signature-confirm\"\n >\n {t('signature.confirm')}\n </button>\n </div>\n </div>\n );\n },\n);\n\nSignatureCapture.displayName = 'SignatureCapture';\n\nexport {\n wrapperVariants as signatureWrapperVariants,\n actionButtonVariants as signatureActionButtonVariants,\n confirmButtonVariants as signatureConfirmButtonVariants,\n};\n"],"names":["signatureCaptureAgent","handle","wrapperVariants","cva","padFrameVariants","canvasVariants","toolbarVariants","actionButtonVariants","confirmButtonVariants","typedInputVariants","typedPreviewVariants","resolveCssVar","name","toCssSize","v","fallback","parsePxValue","toHex","bytes","out","i","b","base64ToBytes","b64","bin","g","sha256Hex","_a","copy","digest","renderTypedSignatureToCanvas","text","cssWidth","cssHeight","penColor","backgroundColor","dpr","canvas","ctx","SignatureCapture","forwardRef","id","onConfirm","onClear","onStart","width","height","allowTypedFallback","disabled","ariaLabel","className","ref","t","useTranslation","rawId","useId","liveRegionId","useMemo","wrapperRef","useRef","padFrameRef","canvasRef","typedPreviewRef","signaturePadRef","mode","setMode","useState","typedValue","setTypedValue","boundValue","setBoundValue","padHasInk","setPadHasInk","signatureStateRef","announcement","setAnnouncement","resolvedPen","setResolvedPen","resolvedBg","setResolvedBg","onStartRef","onClearRef","onConfirmRef","useEffect","announce","useCallback","next","resolveAll","pen","bg","mo","pad","SignaturePad","handleBegin","handleEnd","scaleCanvas","MAX_CANVAS_PX","rect","rawWidth","rawHeight","targetWidth","targetHeight","prior","ro","clear","undo","data","isEmpty","confirm","widthParsed","heightParsed","measureEl","measuredRect","pngDataUrl","svgString","strokes","value","safeText","widthMm","heightMm","capturedAt","sha256","commaIx","payload","agentHandle","useImperativeHandle","useAgentRegistration","hasContent","confirmDisabled","sizeStyle","jsxs","jsx","m"],"mappings":"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"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import { jsxs as b, jsx as
|
|
2
|
-
import { forwardRef as ca, useContext as ua, useState as ma, useCallback as pa, useRef as
|
|
1
|
+
import { jsxs as b, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as ca, useContext as ua, useState as ma, useCallback as pa, useRef as C, useMemo as fa } from "react";
|
|
3
|
+
import { u as va } from "./registry-DvAUVLHh.js";
|
|
3
4
|
import * as g from "@radix-ui/react-slider";
|
|
4
|
-
import { c as
|
|
5
|
-
import { useTranslation as
|
|
6
|
-
import { u as
|
|
7
|
-
import { c as
|
|
8
|
-
import { u as
|
|
9
|
-
|
|
10
|
-
const ya = {
|
|
5
|
+
import { c as e } from "./index-D2ZczOXr.js";
|
|
6
|
+
import { useTranslation as ha } from "react-i18next";
|
|
7
|
+
import { u as ba, F as ga } from "./form-field-context-B3APVHKx.js";
|
|
8
|
+
import { c as xa } from "./compose-refs-C0k0tdqF.js";
|
|
9
|
+
import { u as ya } from "./use-direction-Dp8h70PP.js";
|
|
10
|
+
const wa = {
|
|
11
11
|
id: "slider",
|
|
12
|
-
|
|
12
|
+
// Persisted numeric value (value state + set_value) → set_value; the
|
|
13
|
+
// dual-thumb mode additionally supports a range, so range_pick stays.
|
|
14
|
+
capabilities: ["set_value", "range_pick"],
|
|
13
15
|
state: {
|
|
14
16
|
value: {
|
|
15
17
|
type: "number[]",
|
|
@@ -22,8 +24,26 @@ const ya = {
|
|
|
22
24
|
set_value: {
|
|
23
25
|
safety: "write",
|
|
24
26
|
argsType: "{ value: number[] }",
|
|
27
|
+
argsSchema: {
|
|
28
|
+
type: "object",
|
|
29
|
+
properties: {
|
|
30
|
+
value: {
|
|
31
|
+
type: "array",
|
|
32
|
+
items: { type: "number" },
|
|
33
|
+
minItems: 1,
|
|
34
|
+
maxItems: 2,
|
|
35
|
+
description: "Thumb value(s): a 1-tuple for a single slider, a 2-tuple for a range."
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
required: ["value"]
|
|
39
|
+
},
|
|
40
|
+
idempotent: !0,
|
|
25
41
|
descriptionKey: "ui.agent.slider.actions.setValue",
|
|
26
42
|
description: "Replace the thumb value(s). Pass a 1-tuple for single, 2-tuple for range.",
|
|
43
|
+
examples: [
|
|
44
|
+
{ args: { value: [50] }, note: "Set a single slider to 50." },
|
|
45
|
+
{ args: { value: [20, 80] }, note: "Set a range to 20–80." }
|
|
46
|
+
],
|
|
27
47
|
invoke: (l, x) => {
|
|
28
48
|
l.setValue(x.value);
|
|
29
49
|
}
|
|
@@ -41,7 +61,7 @@ const ya = {
|
|
|
41
61
|
description: "Sourced from the id prop."
|
|
42
62
|
}
|
|
43
63
|
}
|
|
44
|
-
}, Va =
|
|
64
|
+
}, Va = e(
|
|
45
65
|
[
|
|
46
66
|
"ds:relative ds:flex ds:touch-none ds:select-none ds:items-center",
|
|
47
67
|
"ds:data-[orientation=horizontal]:w-full",
|
|
@@ -58,19 +78,19 @@ const ya = {
|
|
|
58
78
|
},
|
|
59
79
|
defaultVariants: { size: "md" }
|
|
60
80
|
}
|
|
61
|
-
), za =
|
|
81
|
+
), za = e(
|
|
62
82
|
[
|
|
63
83
|
"ds:relative ds:grow ds:overflow-hidden ds:rounded-[var(--radius-full)] ds:bg-muted",
|
|
64
84
|
"ds:data-[orientation=horizontal]:h-full",
|
|
65
85
|
"ds:data-[orientation=vertical]:w-full"
|
|
66
86
|
].join(" ")
|
|
67
|
-
), ka =
|
|
87
|
+
), ka = e(
|
|
68
88
|
[
|
|
69
89
|
"ds:absolute ds:bg-primary ds:rounded-[var(--radius-full)]",
|
|
70
90
|
"ds:data-[orientation=horizontal]:h-full",
|
|
71
91
|
"ds:data-[orientation=vertical]:w-full"
|
|
72
92
|
].join(" ")
|
|
73
|
-
),
|
|
93
|
+
), Sa = e(
|
|
74
94
|
[
|
|
75
95
|
"ds:group/thumb",
|
|
76
96
|
"ds:relative ds:block ds:rounded-full",
|
|
@@ -91,7 +111,7 @@ const ya = {
|
|
|
91
111
|
},
|
|
92
112
|
defaultVariants: { size: "md" }
|
|
93
113
|
}
|
|
94
|
-
),
|
|
114
|
+
), Na = e("ds:absolute ds:rounded-full", {
|
|
95
115
|
variants: {
|
|
96
116
|
size: {
|
|
97
117
|
sm: "ds:-inset-[calc((var(--min-target-size)-1rem)/2)]",
|
|
@@ -100,7 +120,7 @@ const ya = {
|
|
|
100
120
|
}
|
|
101
121
|
},
|
|
102
122
|
defaultVariants: { size: "md" }
|
|
103
|
-
}), Fa =
|
|
123
|
+
}), Fa = e(
|
|
104
124
|
"ds:absolute ds:flex ds:pointer-events-none ds:items-center ds:justify-center",
|
|
105
125
|
{
|
|
106
126
|
variants: {
|
|
@@ -111,7 +131,7 @@ const ya = {
|
|
|
111
131
|
},
|
|
112
132
|
defaultVariants: { orientation: "horizontal" }
|
|
113
133
|
}
|
|
114
|
-
), Ra =
|
|
134
|
+
), Ra = e(
|
|
115
135
|
[
|
|
116
136
|
"ds:whitespace-nowrap ds:bg-foreground ds:text-background",
|
|
117
137
|
"ds:px-[var(--spacing-sm)] ds:py-[var(--spacing-xs)]",
|
|
@@ -132,7 +152,7 @@ const ya = {
|
|
|
132
152
|
},
|
|
133
153
|
defaultVariants: { orientation: "horizontal", alwaysShow: !1 }
|
|
134
154
|
}
|
|
135
|
-
), La =
|
|
155
|
+
), La = e("ds:absolute ds:pointer-events-none", {
|
|
136
156
|
variants: {
|
|
137
157
|
orientation: {
|
|
138
158
|
horizontal: "ds:start-0 ds:end-0 ds:top-full",
|
|
@@ -140,7 +160,7 @@ const ya = {
|
|
|
140
160
|
}
|
|
141
161
|
},
|
|
142
162
|
defaultVariants: { orientation: "horizontal" }
|
|
143
|
-
}),
|
|
163
|
+
}), ja = e("ds:absolute ds:flex ds:items-center", {
|
|
144
164
|
variants: {
|
|
145
165
|
orientation: {
|
|
146
166
|
horizontal: "ds:flex-col ds:-translate-x-1/2 ds:rtl:translate-x-1/2",
|
|
@@ -148,7 +168,7 @@ const ya = {
|
|
|
148
168
|
}
|
|
149
169
|
},
|
|
150
170
|
defaultVariants: { orientation: "horizontal" }
|
|
151
|
-
}),
|
|
171
|
+
}), Ia = e("ds:bg-border", {
|
|
152
172
|
variants: {
|
|
153
173
|
orientation: {
|
|
154
174
|
horizontal: "ds:w-px ds:h-1",
|
|
@@ -156,9 +176,9 @@ const ya = {
|
|
|
156
176
|
}
|
|
157
177
|
},
|
|
158
178
|
defaultVariants: { orientation: "horizontal" }
|
|
159
|
-
}),
|
|
179
|
+
}), Ma = e(
|
|
160
180
|
"ds:text-muted-foreground type-meta ds:mt-[var(--spacing-xs)]"
|
|
161
|
-
),
|
|
181
|
+
), Ta = e(
|
|
162
182
|
"ds:flex ds:items-center ds:gap-[var(--spacing-sm)]",
|
|
163
183
|
{
|
|
164
184
|
variants: {
|
|
@@ -169,52 +189,52 @@ const ya = {
|
|
|
169
189
|
},
|
|
170
190
|
defaultVariants: { orientation: "horizontal" }
|
|
171
191
|
}
|
|
172
|
-
), K =
|
|
192
|
+
), K = e(
|
|
173
193
|
"ds:text-muted-foreground type-meta ds:tabular-nums ds:shrink-0"
|
|
174
194
|
), Aa = ca((l, x) => {
|
|
175
195
|
const {
|
|
176
196
|
value: m,
|
|
177
197
|
defaultValue: L,
|
|
178
|
-
marks:
|
|
179
|
-
minLabel:
|
|
198
|
+
marks: y,
|
|
199
|
+
minLabel: w,
|
|
180
200
|
maxLabel: V,
|
|
181
|
-
formatValue:
|
|
182
|
-
alwaysShowValue:
|
|
183
|
-
step:
|
|
184
|
-
largeStep:
|
|
201
|
+
formatValue: _,
|
|
202
|
+
alwaysShowValue: E = !1,
|
|
203
|
+
step: H = 1,
|
|
204
|
+
largeStep: j = 10,
|
|
185
205
|
thumbLabels: p,
|
|
186
206
|
size: z = "md",
|
|
187
207
|
orientation: s = "horizontal",
|
|
188
208
|
min: d = 0,
|
|
189
209
|
max: k = 100,
|
|
190
|
-
disabled:
|
|
191
|
-
dir:
|
|
192
|
-
id:
|
|
210
|
+
disabled: U,
|
|
211
|
+
dir: W,
|
|
212
|
+
id: S,
|
|
193
213
|
className: O,
|
|
194
214
|
onValueChange: f,
|
|
195
215
|
onValueCommit: r,
|
|
196
|
-
onKeyDown:
|
|
197
|
-
...
|
|
198
|
-
} = l, { t: F, i18n:
|
|
216
|
+
onKeyDown: N,
|
|
217
|
+
...I
|
|
218
|
+
} = l, { t: F, i18n: M } = ha(), i = ba(), G = ua(ga) !== null, c = m !== void 0, [J, Q] = ma(
|
|
199
219
|
m ?? L ?? [d]
|
|
200
220
|
), u = c ? m : J, R = (a) => {
|
|
201
221
|
c || Q(a), f == null || f(a);
|
|
202
|
-
},
|
|
203
|
-
(a) => new Intl.NumberFormat(
|
|
204
|
-
[
|
|
205
|
-
), B =
|
|
206
|
-
if (
|
|
222
|
+
}, T = !!(i.disabled || U), A = i.describedBy || void 0, X = S ?? i.id, Y = pa(
|
|
223
|
+
(a) => new Intl.NumberFormat(M.language).format(a),
|
|
224
|
+
[M.language]
|
|
225
|
+
), B = _ ?? Y, Z = F("inputs.slider.minLabel", "Minimum"), aa = F("inputs.slider.maxLabel", "Maximum"), ea = I["aria-label"], ta = (a) => p != null && p[a] ? p[a] : u.length === 2 ? a === 0 ? Z : aa : ea, sa = (a) => {
|
|
226
|
+
if (N == null || N(a), a.defaultPrevented || T || a.key !== "PageUp" && a.key !== "PageDown") return;
|
|
207
227
|
a.preventDefault();
|
|
208
228
|
const n = Array.from(
|
|
209
229
|
a.currentTarget.querySelectorAll('[role="slider"]')
|
|
210
230
|
), o = Math.max(
|
|
211
231
|
0,
|
|
212
232
|
n.indexOf(document.activeElement)
|
|
213
|
-
), v = a.key === "PageUp" ?
|
|
214
|
-
(
|
|
233
|
+
), v = a.key === "PageUp" ? j : -j, h = u.map(
|
|
234
|
+
(q, la) => la === o ? Math.max(d, Math.min(k, q + v)) : q
|
|
215
235
|
);
|
|
216
236
|
R(h), r == null || r(h);
|
|
217
|
-
}, ra = k - d || 1, ia = (a) => (a - d) / ra * 100, D =
|
|
237
|
+
}, ra = k - d || 1, ia = (a) => (a - d) / ra * 100, D = C(null), na = xa(x, D), oa = ya(D), P = C(u);
|
|
218
238
|
P.current = u;
|
|
219
239
|
const da = fa(
|
|
220
240
|
() => ({
|
|
@@ -226,18 +246,18 @@ const ya = {
|
|
|
226
246
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
227
247
|
[c, f, r]
|
|
228
248
|
);
|
|
229
|
-
wa
|
|
249
|
+
va(wa, da, S);
|
|
230
250
|
const $ = /* @__PURE__ */ b(
|
|
231
251
|
g.Root,
|
|
232
252
|
{
|
|
233
253
|
ref: na,
|
|
234
254
|
id: X,
|
|
235
|
-
dir:
|
|
255
|
+
dir: W ?? oa,
|
|
236
256
|
orientation: s,
|
|
237
257
|
min: d,
|
|
238
258
|
max: k,
|
|
239
|
-
step:
|
|
240
|
-
disabled:
|
|
259
|
+
step: H,
|
|
260
|
+
disabled: T,
|
|
241
261
|
value: c ? m : void 0,
|
|
242
262
|
defaultValue: c ? void 0 : L ?? [d],
|
|
243
263
|
onValueChange: R,
|
|
@@ -248,26 +268,26 @@ const ya = {
|
|
|
248
268
|
"aria-required": i.required || void 0,
|
|
249
269
|
className: Va({ size: z, className: O }),
|
|
250
270
|
"data-component": "slider",
|
|
251
|
-
"data-component-id":
|
|
252
|
-
...
|
|
271
|
+
"data-component-id": S,
|
|
272
|
+
...I,
|
|
253
273
|
"aria-label": void 0,
|
|
254
274
|
children: [
|
|
255
|
-
/* @__PURE__ */
|
|
256
|
-
|
|
275
|
+
/* @__PURE__ */ t(g.Track, { className: za(), children: /* @__PURE__ */ t(g.Range, { className: ka() }) }),
|
|
276
|
+
y && y.length > 0 ? /* @__PURE__ */ t(
|
|
257
277
|
"span",
|
|
258
278
|
{
|
|
259
279
|
"aria-hidden": "true",
|
|
260
280
|
className: La({ orientation: s }),
|
|
261
|
-
children:
|
|
281
|
+
children: y.map((a) => {
|
|
262
282
|
const n = ia(a.value), o = s === "vertical" ? { insetBlockEnd: `${n}%` } : { insetInlineStart: `${n}%` };
|
|
263
283
|
return /* @__PURE__ */ b(
|
|
264
284
|
"span",
|
|
265
285
|
{
|
|
266
|
-
className:
|
|
286
|
+
className: ja({ orientation: s }),
|
|
267
287
|
style: o,
|
|
268
288
|
children: [
|
|
269
|
-
/* @__PURE__ */
|
|
270
|
-
a.label ? /* @__PURE__ */
|
|
289
|
+
/* @__PURE__ */ t("span", { className: Ia({ orientation: s }) }),
|
|
290
|
+
a.label ? /* @__PURE__ */ t("span", { className: Ma(), children: a.label }) : null
|
|
271
291
|
]
|
|
272
292
|
},
|
|
273
293
|
`${a.value}-${a.label ?? ""}`
|
|
@@ -276,7 +296,7 @@ const ya = {
|
|
|
276
296
|
}
|
|
277
297
|
) : null,
|
|
278
298
|
u.map((a, n) => {
|
|
279
|
-
const o =
|
|
299
|
+
const o = ta(n), v = !o && G ? `${i.id}-label` : void 0, h = !o && !v ? F("inputs.slider.value", "Value") : void 0;
|
|
280
300
|
return /* @__PURE__ */ b(
|
|
281
301
|
g.Thumb,
|
|
282
302
|
{
|
|
@@ -285,20 +305,20 @@ const ya = {
|
|
|
285
305
|
"aria-valuetext": B(a),
|
|
286
306
|
"aria-describedby": A,
|
|
287
307
|
"aria-invalid": i.invalid || void 0,
|
|
288
|
-
className:
|
|
308
|
+
className: Sa({ size: z }),
|
|
289
309
|
children: [
|
|
290
|
-
/* @__PURE__ */
|
|
291
|
-
/* @__PURE__ */
|
|
310
|
+
/* @__PURE__ */ t("span", { "aria-hidden": "true", className: Na({ size: z }) }),
|
|
311
|
+
/* @__PURE__ */ t(
|
|
292
312
|
"span",
|
|
293
313
|
{
|
|
294
314
|
"aria-hidden": "true",
|
|
295
315
|
className: Fa({ orientation: s }),
|
|
296
|
-
children: /* @__PURE__ */
|
|
316
|
+
children: /* @__PURE__ */ t(
|
|
297
317
|
"span",
|
|
298
318
|
{
|
|
299
319
|
className: Ra({
|
|
300
320
|
orientation: s,
|
|
301
|
-
alwaysShow:
|
|
321
|
+
alwaysShow: E
|
|
302
322
|
}),
|
|
303
323
|
children: B(a)
|
|
304
324
|
}
|
|
@@ -313,14 +333,14 @@ const ya = {
|
|
|
313
333
|
]
|
|
314
334
|
}
|
|
315
335
|
);
|
|
316
|
-
return
|
|
317
|
-
|
|
336
|
+
return w !== void 0 || V !== void 0 ? /* @__PURE__ */ b("div", { className: Ta({ orientation: s }), children: [
|
|
337
|
+
w !== void 0 ? /* @__PURE__ */ t("span", { className: K(), children: w }) : null,
|
|
318
338
|
$,
|
|
319
|
-
V !== void 0 ? /* @__PURE__ */
|
|
339
|
+
V !== void 0 ? /* @__PURE__ */ t("span", { className: K(), children: V }) : null
|
|
320
340
|
] }) : $;
|
|
321
341
|
});
|
|
322
342
|
Aa.displayName = "Slider";
|
|
323
343
|
export {
|
|
324
344
|
Aa as S
|
|
325
345
|
};
|
|
326
|
-
//# sourceMappingURL=slider-
|
|
346
|
+
//# sourceMappingURL=slider-DN1CWkKB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-DN1CWkKB.js","sources":["../../src/components/slider/slider.agent.ts","../../src/components/slider/slider.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — Slider. */\n/* */\n/* Slider supports both single-thumb and dual-thumb (range) operation. */\n/* Capabilities cover both — the runtime distinguishes them via the */\n/* value tuple length. See `src/docs/26-agent-readiness.mdx`. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { SliderHandle } from './slider';\n\nexport const sliderAgent: AgentAdapter<SliderHandle> = {\n id: 'slider',\n // Persisted numeric value (value state + set_value) → set_value; the\n // dual-thumb mode additionally supports a range, so range_pick stays.\n capabilities: ['set_value', 'range_pick'],\n state: {\n value: {\n type: 'number[]',\n descriptionKey: 'ui.agent.slider.state.value',\n description:\n 'Current thumb values; length 1 for a single slider, length 2 for a range.',\n read: (handle) => handle.getValue(),\n },\n },\n actions: {\n set_value: {\n safety: 'write',\n argsType: '{ value: number[] }',\n argsSchema: {\n type: 'object',\n properties: {\n value: {\n type: 'array',\n items: { type: 'number' },\n minItems: 1,\n maxItems: 2,\n description:\n 'Thumb value(s): a 1-tuple for a single slider, a 2-tuple for a range.',\n },\n },\n required: ['value'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.slider.actions.setValue',\n description:\n 'Replace the thumb value(s). Pass a 1-tuple for single, 2-tuple for range.',\n examples: [\n { args: { value: [50] }, note: 'Set a single slider to 50.' },\n { args: { value: [20, 80] }, note: 'Set a range to 20–80.' },\n ],\n invoke: (handle, args: { value: number[] }) => {\n handle.setValue(args.value);\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'slider',\n description: 'Marks the Slider root.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type KeyboardEvent,\n} from 'react';\nimport { useAgentRegistration } from '../../agent';\nimport { sliderAgent } from './slider.agent';\n\n/** Agent-readiness curated handle for Slider. */\nexport interface SliderHandle {\n getValue: () => number[];\n setValue: (value: number[]) => void;\n}\nimport * as RadixSlider from '@radix-ui/react-slider';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useContext } from 'react';\nimport {\n FormFieldContext,\n useFormField,\n} from '../form-field/form-field-context';\nimport { useDirection } from '../_shared/use-direction';\nimport { composeRefs } from '../_shared/compose-refs';\n\nexport interface SliderMark {\n value: number;\n label?: string;\n}\n\nconst sliderVariants = cva(\n [\n 'ds:relative ds:flex ds:touch-none ds:select-none ds:items-center',\n 'ds:data-[orientation=horizontal]:w-full',\n 'ds:data-[orientation=vertical]:flex-col ds:data-[orientation=vertical]:h-full',\n 'ds:data-[disabled]:cursor-not-allowed ds:data-[disabled]:opacity-50',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:data-[orientation=horizontal]:h-1 ds:data-[orientation=vertical]:w-1',\n md: 'ds:data-[orientation=horizontal]:h-2 ds:data-[orientation=vertical]:w-2',\n lg: 'ds:data-[orientation=horizontal]:h-3 ds:data-[orientation=vertical]:w-3',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst trackVariants = cva(\n [\n 'ds:relative ds:grow ds:overflow-hidden ds:rounded-[var(--radius-full)] ds:bg-muted',\n 'ds:data-[orientation=horizontal]:h-full',\n 'ds:data-[orientation=vertical]:w-full',\n ].join(' '),\n);\n\nconst rangeVariants = cva(\n [\n 'ds:absolute ds:bg-primary ds:rounded-[var(--radius-full)]',\n 'ds:data-[orientation=horizontal]:h-full',\n 'ds:data-[orientation=vertical]:w-full',\n ].join(' '),\n);\n\nconst thumbVariants = cva(\n [\n 'ds:group/thumb',\n 'ds:relative ds:block ds:rounded-full',\n 'ds:bg-background ds:border-2 ds:border-primary ds:shadow-[var(--shadow-sm)]',\n 'ds:transition-[transform,box-shadow] ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:outline-none',\n 'ds:focus-visible:shadow-[var(--shadow-focus),var(--shadow-sm)]',\n 'ds:active:shadow-[var(--shadow-sm)]',\n 'ds:data-[disabled]:cursor-not-allowed ds:data-[disabled]:opacity-50',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:size-4',\n md: 'ds:size-5',\n lg: 'ds:size-6',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst hitAreaVariants = cva('ds:absolute ds:rounded-full', {\n variants: {\n size: {\n sm: 'ds:-inset-[calc((var(--min-target-size)-1rem)/2)]',\n md: 'ds:-inset-[calc((var(--min-target-size)-1.25rem)/2)]',\n lg: 'ds:-inset-[calc((var(--min-target-size)-1.5rem)/2)]',\n },\n },\n defaultVariants: { size: 'md' },\n});\n\nconst tooltipWrapperVariants = cva(\n 'ds:absolute ds:flex ds:pointer-events-none ds:items-center ds:justify-center',\n {\n variants: {\n orientation: {\n horizontal: 'ds:start-0 ds:end-0 ds:bottom-full',\n vertical: 'ds:top-0 ds:bottom-0 ds:start-full',\n },\n },\n defaultVariants: { orientation: 'horizontal' },\n },\n);\n\nconst tooltipBubbleVariants = cva(\n [\n 'ds:whitespace-nowrap ds:bg-foreground ds:text-background',\n 'ds:px-[var(--spacing-sm)] ds:py-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-sm)] ds:text-[length:var(--font-size-xs)] ds:tabular-nums',\n 'ds:shadow-[var(--shadow-sm)]',\n 'ds:transition-opacity ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n ].join(' '),\n {\n variants: {\n orientation: {\n horizontal: 'ds:mb-[var(--spacing-xs)]',\n vertical: 'ds:ms-[var(--spacing-xs)]',\n },\n alwaysShow: {\n true: 'ds:opacity-100',\n false:\n 'ds:opacity-0 ds:group-hover/thumb:opacity-100 ds:group-focus-visible/thumb:opacity-100',\n },\n },\n defaultVariants: { orientation: 'horizontal', alwaysShow: false },\n },\n);\n\nconst marksContainerVariants = cva('ds:absolute ds:pointer-events-none', {\n variants: {\n orientation: {\n horizontal: 'ds:start-0 ds:end-0 ds:top-full',\n vertical: 'ds:top-0 ds:bottom-0 ds:start-full',\n },\n },\n defaultVariants: { orientation: 'horizontal' },\n});\n\nconst markVariants = cva('ds:absolute ds:flex ds:items-center', {\n variants: {\n orientation: {\n horizontal: 'ds:flex-col ds:-translate-x-1/2 ds:rtl:translate-x-1/2',\n vertical: 'ds:flex-row ds:-translate-y-1/2 ds:ps-[var(--spacing-xs)]',\n },\n },\n defaultVariants: { orientation: 'horizontal' },\n});\n\nconst tickVariants = cva('ds:bg-border', {\n variants: {\n orientation: {\n horizontal: 'ds:w-px ds:h-1',\n vertical: 'ds:h-px ds:w-1',\n },\n },\n defaultVariants: { orientation: 'horizontal' },\n});\n\nconst markLabelVariants = cva(\n 'ds:text-muted-foreground type-meta ds:mt-[var(--spacing-xs)]',\n);\n\nconst endpointWrapperVariants = cva(\n 'ds:flex ds:items-center ds:gap-[var(--spacing-sm)]',\n {\n variants: {\n orientation: {\n horizontal: 'ds:w-full ds:flex-row',\n vertical: 'ds:h-full ds:flex-col-reverse',\n },\n },\n defaultVariants: { orientation: 'horizontal' },\n },\n);\n\nconst endpointLabelVariants = cva(\n 'ds:text-muted-foreground type-meta ds:tabular-nums ds:shrink-0',\n);\n\ntype RadixSliderRootProps = ComponentPropsWithoutRef<typeof RadixSlider.Root>;\n\nexport interface SliderProps\n extends\n Omit<RadixSliderRootProps, 'children'>,\n VariantProps<typeof sliderVariants> {\n value?: number[];\n defaultValue?: number[];\n marks?: SliderMark[];\n minLabel?: string;\n maxLabel?: string;\n formatValue?: (value: number) => string;\n alwaysShowValue?: boolean;\n step?: number;\n largeStep?: number;\n thumbLabels?: string[];\n size?: 'sm' | 'md' | 'lg';\n orientation?: 'horizontal' | 'vertical';\n onValueChange?: (value: number[]) => void;\n onValueCommit?: (value: number[]) => void;\n className?: string;\n}\n\nexport const Slider = forwardRef<\n ElementRef<typeof RadixSlider.Root>,\n SliderProps\n>((props, ref) => {\n const {\n value,\n defaultValue,\n marks,\n minLabel,\n maxLabel,\n formatValue,\n alwaysShowValue = false,\n step = 1,\n largeStep = 10,\n thumbLabels,\n size = 'md',\n orientation = 'horizontal',\n min = 0,\n max = 100,\n disabled,\n dir,\n id,\n className,\n onValueChange,\n onValueCommit,\n onKeyDown,\n ...rest\n } = props;\n\n const { t, i18n } = useTranslation();\n const ctx = useFormField();\n // We only want to point `aria-labelledby` at the FormField label when one\n // actually exists — outside a `<FormField>` `useFormField()` returns a\n // synthesised fallback whose label element won't be in the DOM.\n const insideFormField = useContext(FormFieldContext) !== null;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<number[]>(\n value ?? defaultValue ?? [min],\n );\n const currentValue: number[] = isControlled\n ? (value as number[])\n : internalValue;\n\n const handleValueChange = (next: number[]) => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n };\n\n const effectiveDisabled = Boolean(ctx.disabled || disabled);\n const describedBy = ctx.describedBy || undefined;\n const sliderId = id ?? ctx.id;\n\n const defaultFormat = useCallback(\n (n: number) => new Intl.NumberFormat(i18n.language).format(n),\n [i18n.language],\n );\n const format = formatValue ?? defaultFormat;\n\n const defaultMinThumbLabel = t('inputs.slider.minLabel', 'Minimum');\n const defaultMaxThumbLabel = t('inputs.slider.maxLabel', 'Maximum');\n // Root's `aria-label` is the user-facing slider name (e.g. \"Hue\").\n // Radix puts `role=\"slider\"` on the Thumb, not the Root, so axe's\n // aria-input-field-name rule looks at the Thumb. Surface the Root's\n // label on the single-thumb case when no thumbLabels override is given.\n const rootAriaLabel = (rest as { 'aria-label'?: string })['aria-label'];\n\n const labelForThumb = (i: number): string | undefined => {\n if (thumbLabels?.[i]) return thumbLabels[i];\n if (currentValue.length === 2) {\n return i === 0 ? defaultMinThumbLabel : defaultMaxThumbLabel;\n }\n return rootAriaLabel;\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n if (effectiveDisabled) return;\n if (event.key !== 'PageUp' && event.key !== 'PageDown') return;\n\n event.preventDefault();\n const thumbs = Array.from(\n event.currentTarget.querySelectorAll<HTMLElement>('[role=\"slider\"]'),\n );\n const activeIndex = Math.max(\n 0,\n thumbs.indexOf(document.activeElement as HTMLElement),\n );\n const delta = event.key === 'PageUp' ? largeStep : -largeStep;\n const next = currentValue.map((v, i) =>\n i === activeIndex ? Math.max(min, Math.min(max, v + delta)) : v,\n );\n handleValueChange(next);\n onValueCommit?.(next);\n };\n\n const denom = max - min || 1;\n const percentFor = (n: number) => ((n - min) / denom) * 100;\n\n const rootRef = useRef<HTMLSpanElement>(null);\n const composedRef = composeRefs(ref, rootRef);\n const autoDir = useDirection(rootRef);\n\n const currentValueRef = useRef<number[]>(currentValue);\n currentValueRef.current = currentValue;\n\n const agentHandle = useMemo<SliderHandle>(\n () => ({\n getValue: () => currentValueRef.current.slice(),\n setValue: (next) => {\n handleValueChange(next);\n onValueCommit?.(next);\n },\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isControlled, onValueChange, onValueCommit],\n );\n useAgentRegistration(sliderAgent, agentHandle, id);\n\n const root = (\n <RadixSlider.Root\n ref={composedRef}\n id={sliderId}\n dir={dir ?? autoDir}\n orientation={orientation}\n min={min}\n max={max}\n step={step}\n disabled={effectiveDisabled}\n value={isControlled ? value : undefined}\n defaultValue={!isControlled ? (defaultValue ?? [min]) : undefined}\n onValueChange={handleValueChange}\n onValueCommit={onValueCommit}\n onKeyDown={handleKeyDown}\n aria-describedby={describedBy}\n aria-invalid={ctx.invalid || undefined}\n aria-required={ctx.required || undefined}\n className={sliderVariants({ size, className })}\n data-component=\"slider\"\n data-component-id={id}\n {...rest}\n // Strip aria-label off the Root span — Radix puts `role=\"slider\"`\n // on the Thumb, so the label belongs there (see `labelForThumb`).\n // Carrying aria-label on both the Root and the Thumb produces\n // duplicate matches under accessible-name queries.\n aria-label={undefined}\n >\n <RadixSlider.Track className={trackVariants()}>\n <RadixSlider.Range className={rangeVariants()} />\n </RadixSlider.Track>\n {marks && marks.length > 0 ? (\n <span\n aria-hidden=\"true\"\n className={marksContainerVariants({ orientation })}\n >\n {marks.map((m) => {\n const p = percentFor(m.value);\n const positionStyle: CSSProperties =\n orientation === 'vertical'\n ? { insetBlockEnd: `${p}%` }\n : { insetInlineStart: `${p}%` };\n return (\n <span\n key={`${m.value}-${m.label ?? ''}`}\n className={markVariants({ orientation })}\n // eslint-disable-next-line react/forbid-dom-props -- runtime-computed slider mark position\n style={positionStyle}\n >\n <span className={tickVariants({ orientation })} />\n {m.label ? (\n <span className={markLabelVariants()}>{m.label}</span>\n ) : null}\n </span>\n );\n })}\n </span>\n ) : null}\n {currentValue.map((v, i) => {\n const explicitLabel = labelForThumb(i);\n // Fall back to the FormField label when no explicit thumb label is\n // provided — axe's aria-input-field-name rule fires on every\n // role=\"slider\" element that lacks an accessible name. Outside of a\n // FormField, fall back to a generic localized label so axe is\n // satisfied for standalone usage too.\n const labelledById =\n !explicitLabel && insideFormField ? `${ctx.id}-label` : undefined;\n const fallbackLabel =\n !explicitLabel && !labelledById\n ? t('inputs.slider.value', 'Value')\n : undefined;\n return (\n <RadixSlider.Thumb\n key={i}\n aria-label={explicitLabel ?? fallbackLabel}\n aria-labelledby={labelledById}\n aria-valuetext={format(v)}\n // The thumb is the focusable element — assistive tech reads its\n // aria-describedby / aria-invalid when the user tabs onto it, not\n // the parent Root's. Propagate FormField context to each thumb.\n aria-describedby={describedBy}\n aria-invalid={ctx.invalid || undefined}\n className={thumbVariants({ size })}\n >\n <span aria-hidden=\"true\" className={hitAreaVariants({ size })} />\n <span\n aria-hidden=\"true\"\n className={tooltipWrapperVariants({ orientation })}\n >\n <span\n className={tooltipBubbleVariants({\n orientation,\n alwaysShow: alwaysShowValue,\n })}\n >\n {format(v)}\n </span>\n </span>\n </RadixSlider.Thumb>\n );\n })}\n </RadixSlider.Root>\n );\n\n if (minLabel !== undefined || maxLabel !== undefined) {\n return (\n <div className={endpointWrapperVariants({ orientation })}>\n {minLabel !== undefined ? (\n <span className={endpointLabelVariants()}>{minLabel}</span>\n ) : null}\n {root}\n {maxLabel !== undefined ? (\n <span className={endpointLabelVariants()}>{maxLabel}</span>\n ) : null}\n </div>\n );\n }\n\n return root;\n});\n\nSlider.displayName = 'Slider';\n"],"names":["sliderAgent","handle","args","sliderVariants","cva","trackVariants","rangeVariants","thumbVariants","hitAreaVariants","tooltipWrapperVariants","tooltipBubbleVariants","marksContainerVariants","markVariants","tickVariants","markLabelVariants","endpointWrapperVariants","endpointLabelVariants","Slider","forwardRef","props","ref","value","defaultValue","marks","minLabel","maxLabel","formatValue","alwaysShowValue","step","largeStep","thumbLabels","size","orientation","min","max","disabled","dir","id","className","onValueChange","onValueCommit","onKeyDown","rest","t","i18n","useTranslation","ctx","useFormField","insideFormField","useContext","FormFieldContext","isControlled","internalValue","setInternalValue","useState","currentValue","handleValueChange","next","effectiveDisabled","describedBy","sliderId","defaultFormat","useCallback","n","format","defaultMinThumbLabel","defaultMaxThumbLabel","rootAriaLabel","labelForThumb","i","handleKeyDown","event","thumbs","activeIndex","delta","v","denom","percentFor","rootRef","useRef","composedRef","composeRefs","autoDir","useDirection","currentValueRef","agentHandle","useMemo","useAgentRegistration","root","jsxs","RadixSlider","jsx","m","p","positionStyle","explicitLabel","labelledById","fallbackLabel"],"mappings":"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"}
|