@alfadocs/ui-kit-debug 0.8.1 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{agenda-card-CalZqycc.js → agenda-card-CsCm7hQv.js} +5 -5
- package/dist/_chunks/agenda-card-CsCm7hQv.js.map +1 -0
- package/dist/_chunks/{agenda-tray-3ffFDQZC.js → agenda-tray-B8QZ3wEp.js} +9 -9
- package/dist/_chunks/agenda-tray-B8QZ3wEp.js.map +1 -0
- package/dist/_chunks/{ai-prompt-input-DLgY8lrW.js → ai-prompt-input-bAJwYu84.js} +45 -45
- package/dist/_chunks/ai-prompt-input-bAJwYu84.js.map +1 -0
- package/dist/_chunks/{alert-CVMq99Cq.js → alert-pgdXrEO5.js} +2 -2
- package/dist/_chunks/{alert-CVMq99Cq.js.map → alert-pgdXrEO5.js.map} +1 -1
- package/dist/_chunks/{app-frame-CDJOgPXe.js → app-frame-BYx1gcV7.js} +2 -2
- package/dist/_chunks/{app-frame-CDJOgPXe.js.map → app-frame-BYx1gcV7.js.map} +1 -1
- package/dist/_chunks/{audio-recorder-cOl_Z_Pk.js → audio-recorder-BHBonrFf.js} +54 -54
- package/dist/_chunks/{audio-recorder-cOl_Z_Pk.js.map → audio-recorder-BHBonrFf.js.map} +1 -1
- package/dist/_chunks/{audio-visualiser-ByDEFLNm.js → audio-visualiser-I-T4Z7EU.js} +2 -2
- package/dist/_chunks/audio-visualiser-I-T4Z7EU.js.map +1 -0
- package/dist/_chunks/{autocomplete-D4oUZbsP.js → autocomplete-C34hbfKh.js} +6 -6
- package/dist/_chunks/autocomplete-C34hbfKh.js.map +1 -0
- package/dist/_chunks/{avatar-Dcr6XuDQ.js → avatar-I10iCDs8.js} +2 -2
- package/dist/_chunks/{avatar-Dcr6XuDQ.js.map → avatar-I10iCDs8.js.map} +1 -1
- package/dist/_chunks/{badge-DKFbntoa.js → badge-cLYVGlMh.js} +2 -2
- package/dist/_chunks/{badge-DKFbntoa.js.map → badge-cLYVGlMh.js.map} +1 -1
- package/dist/_chunks/{balance-cell-renderer-BuExGe6u.js → balance-cell-renderer-DWWtX-VM.js} +5 -5
- package/dist/_chunks/{balance-cell-renderer-BuExGe6u.js.map → balance-cell-renderer-DWWtX-VM.js.map} +1 -1
- package/dist/_chunks/{breadcrumb-D1snXjPb.js → breadcrumb--YI7lcHA.js} +4 -4
- package/dist/_chunks/breadcrumb--YI7lcHA.js.map +1 -0
- package/dist/_chunks/{button-group-CONver7M.js → button-group-Bh2g_Ng-.js} +2 -2
- package/dist/_chunks/button-group-Bh2g_Ng-.js.map +1 -0
- package/dist/_chunks/{chat-container-ClzsWXp2.js → chat-container-izziXViv.js} +4 -4
- package/dist/_chunks/chat-container-izziXViv.js.map +1 -0
- package/dist/_chunks/{chat-message-DoAhgUTj.js → chat-message-g3lxpXM_.js} +2 -2
- package/dist/_chunks/{chat-message-DoAhgUTj.js.map → chat-message-g3lxpXM_.js.map} +1 -1
- package/dist/_chunks/{checkbox-group-CarPLDIC.js → checkbox-group-Qkm3Rg1S.js} +6 -6
- package/dist/_chunks/checkbox-group-Qkm3Rg1S.js.map +1 -0
- package/dist/_chunks/{color-picker-CTIcHlDF.js → color-picker-BPfcByHH.js} +13 -13
- package/dist/_chunks/color-picker-BPfcByHH.js.map +1 -0
- package/dist/_chunks/{combobox-BLWruOxK.js → combobox-BHhnR3qm.js} +8 -12
- package/dist/_chunks/combobox-BHhnR3qm.js.map +1 -0
- package/dist/_chunks/{contact-card-DNyATxKv.js → contact-card-VJIUqKB2.js} +13 -13
- package/dist/_chunks/contact-card-VJIUqKB2.js.map +1 -0
- package/dist/_chunks/{date-picker-B1PO1ZQP.js → date-picker-BD5FYW08.js} +3 -3
- package/dist/_chunks/{date-picker-B1PO1ZQP.js.map → date-picker-BD5FYW08.js.map} +1 -1
- package/dist/_chunks/{date-range-picker-mix2nEVC.js → date-range-picker-BZLVgcXE.js} +27 -27
- package/dist/_chunks/date-range-picker-BZLVgcXE.js.map +1 -0
- package/dist/_chunks/{date-time-picker-Dnong_BY.js → date-time-picker-CCoRWX7R.js} +5 -5
- package/dist/_chunks/date-time-picker-CCoRWX7R.js.map +1 -0
- package/dist/_chunks/{description-list-BYA77Yud.js → description-list-y7Hk51KI.js} +16 -16
- package/dist/_chunks/description-list-y7Hk51KI.js.map +1 -0
- package/dist/_chunks/{dialog-W8uDfXD8.js → dialog-DRp6Dejy.js} +2 -2
- package/dist/_chunks/{dialog-W8uDfXD8.js.map → dialog-DRp6Dejy.js.map} +1 -1
- package/dist/_chunks/{file-upload-C947ACDK.js → file-upload-DIecAfC-.js} +82 -86
- package/dist/_chunks/file-upload-DIecAfC-.js.map +1 -0
- package/dist/_chunks/{floating-action-button-C8OYj8mE.js → floating-action-button-pojvb9gG.js} +6 -6
- package/dist/_chunks/{floating-action-button-C8OYj8mE.js.map → floating-action-button-pojvb9gG.js.map} +1 -1
- package/dist/_chunks/{form-field-Bmkeh7WY.js → form-field-BOm9hK35.js} +2 -2
- package/dist/_chunks/form-field-BOm9hK35.js.map +1 -0
- package/dist/_chunks/{freemium-paywall-B9kIDtm1.js → freemium-paywall-BTEiVkes.js} +29 -29
- package/dist/_chunks/freemium-paywall-BTEiVkes.js.map +1 -0
- package/dist/_chunks/{key-value-pair-CgWvAIGb.js → key-value-pair-AbrRwesr.js} +14 -14
- package/dist/_chunks/key-value-pair-AbrRwesr.js.map +1 -0
- package/dist/_chunks/{leo-sidebar-BWECDYpu.js → leo-sidebar-B054wsZm.js} +8 -8
- package/dist/_chunks/{leo-sidebar-BWECDYpu.js.map → leo-sidebar-B054wsZm.js.map} +1 -1
- package/dist/_chunks/{link-BcYW1eNM.js → link-BGpwaFik.js} +2 -2
- package/dist/_chunks/{link-BcYW1eNM.js.map → link-BGpwaFik.js.map} +1 -1
- package/dist/_chunks/{list-qP6p0NTw.js → list-DcjV0m5B.js} +2 -2
- package/dist/_chunks/list-DcjV0m5B.js.map +1 -0
- package/dist/_chunks/{message-card-DjvsB_3U.js → message-card-c6R0-qXq.js} +6 -6
- package/dist/_chunks/message-card-c6R0-qXq.js.map +1 -0
- package/dist/_chunks/{message-tray-BbnAzlLH.js → message-tray-Fsend-du.js} +21 -21
- package/dist/_chunks/message-tray-Fsend-du.js.map +1 -0
- package/dist/_chunks/{multi-select-wqqrgjUQ.js → multi-select-Bh-xR8kP.js} +10 -10
- package/dist/_chunks/multi-select-Bh-xR8kP.js.map +1 -0
- package/dist/_chunks/{navigation-menu-ClbHeawy.js → navigation-menu-Bav1d_wA.js} +2 -2
- package/dist/_chunks/navigation-menu-Bav1d_wA.js.map +1 -0
- package/dist/_chunks/{notification-card-uTPEvAQS.js → notification-card-ejOw5g6g.js} +3 -6
- package/dist/_chunks/notification-card-ejOw5g6g.js.map +1 -0
- package/dist/_chunks/{notification-tray-PGtMqXbP.js → notification-tray-C3dYdLAF.js} +21 -24
- package/dist/_chunks/notification-tray-C3dYdLAF.js.map +1 -0
- package/dist/_chunks/{number-input-Q7wkHnvQ.js → number-input-mpSLk-ld.js} +3 -3
- package/dist/_chunks/{number-input-Q7wkHnvQ.js.map → number-input-mpSLk-ld.js.map} +1 -1
- package/dist/_chunks/{otp-input-C9gUByF0.js → otp-input-CI-Zv5q6.js} +2 -2
- package/dist/_chunks/{otp-input-C9gUByF0.js.map → otp-input-CI-Zv5q6.js.map} +1 -1
- package/dist/_chunks/{pagination-3AC4zTsi.js → pagination-OQBlnb1H.js} +7 -7
- package/dist/_chunks/pagination-OQBlnb1H.js.map +1 -0
- package/dist/_chunks/{patient-shell-IhMULVrt.js → patient-shell-BS2V6V1b.js} +3 -3
- package/dist/_chunks/{patient-shell-IhMULVrt.js.map → patient-shell-BS2V6V1b.js.map} +1 -1
- package/dist/_chunks/{payment-form-C3HMAsGG.js → payment-form-CI77oIx1.js} +3 -3
- package/dist/_chunks/{payment-form-C3HMAsGG.js.map → payment-form-CI77oIx1.js.map} +1 -1
- package/dist/_chunks/{pdf-viewer-DO95bm2o.js → pdf-viewer-CNETPubN.js} +3 -3
- package/dist/_chunks/{pdf-viewer-DO95bm2o.js.map → pdf-viewer-CNETPubN.js.map} +1 -1
- package/dist/_chunks/{phone-input-CSHJOJ13.js → phone-input-DtBVs5fz.js} +7 -7
- package/dist/_chunks/phone-input-DtBVs5fz.js.map +1 -0
- package/dist/_chunks/{popover-DekUKNBk.js → popover--derJ_wq.js} +2 -2
- package/dist/_chunks/{popover-DekUKNBk.js.map → popover--derJ_wq.js.map} +1 -1
- package/dist/_chunks/{progress-C11tqhoI.js → progress-B-PSO5OS.js} +4 -4
- package/dist/_chunks/progress-B-PSO5OS.js.map +1 -0
- package/dist/_chunks/{recaptcha-widget-NyfOfLII.js → recaptcha-widget-Kp1XntuE.js} +3 -3
- package/dist/_chunks/recaptcha-widget-Kp1XntuE.js.map +1 -0
- package/dist/_chunks/{resizable-mpXXyIsN.js → resizable-COV-cnth.js} +3 -3
- package/dist/_chunks/resizable-COV-cnth.js.map +1 -0
- package/dist/_chunks/{search-bar-BTDfgYtg.js → search-bar-DmZZ9UvV.js} +2 -2
- package/dist/_chunks/{search-bar-BTDfgYtg.js.map → search-bar-DmZZ9UvV.js.map} +1 -1
- package/dist/_chunks/{search-input-CdJIEjFo.js → search-input-BBtSRH-Q.js} +4 -4
- package/dist/_chunks/{search-input-CdJIEjFo.js.map → search-input-BBtSRH-Q.js.map} +1 -1
- package/dist/_chunks/{select-BOU_Osnf.js → select-i9MwQeQy.js} +20 -20
- package/dist/_chunks/select-i9MwQeQy.js.map +1 -0
- package/dist/_chunks/{sheet-BAg7GY9j.js → sheet-BT0izeoI.js} +9 -9
- package/dist/_chunks/{sheet-BAg7GY9j.js.map → sheet-BT0izeoI.js.map} +1 -1
- package/dist/_chunks/{sidebar-Bx3wCDyy.js → sidebar-CoLHtVrP.js} +83 -83
- package/dist/_chunks/sidebar-CoLHtVrP.js.map +1 -0
- package/dist/_chunks/{sign-in-with-alfadocs-button-B9UrqOqH.js → sign-in-with-alfadocs-button-4zZC-I6y.js} +3 -3
- package/dist/_chunks/sign-in-with-alfadocs-button-4zZC-I6y.js.map +1 -0
- package/dist/_chunks/{skip-link-DmZ3c6cb.js → skip-link-BaSMtPwB.js} +2 -2
- package/dist/_chunks/{skip-link-DmZ3c6cb.js.map → skip-link-BaSMtPwB.js.map} +1 -1
- package/dist/_chunks/{slider-BT2bZWsy.js → slider-CkR6CLun.js} +3 -3
- package/dist/_chunks/slider-CkR6CLun.js.map +1 -0
- package/dist/_chunks/{sparkline-_gy8aJDG.js → sparkline-B5Ms55PZ.js} +16 -16
- package/dist/_chunks/sparkline-B5Ms55PZ.js.map +1 -0
- package/dist/_chunks/{spinner-DLaYfLPl.js → spinner-DirtWZNG.js} +2 -2
- package/dist/_chunks/spinner-DirtWZNG.js.map +1 -0
- package/dist/_chunks/{stat-B9PHSPbN.js → stat-CDQ_a0vk.js} +4 -4
- package/dist/_chunks/stat-CDQ_a0vk.js.map +1 -0
- package/dist/_chunks/{switch-C0psfIQF.js → switch-D916VW86.js} +2 -2
- package/dist/_chunks/{switch-C0psfIQF.js.map → switch-D916VW86.js.map} +1 -1
- package/dist/_chunks/{tabs-BZQy_Rmb.js → tabs-Cg794H0Q.js} +3 -3
- package/dist/_chunks/tabs-Cg794H0Q.js.map +1 -0
- package/dist/_chunks/{tag-DuLMjRbF.js → tag-CQmHRM4Y.js} +3 -3
- package/dist/_chunks/tag-CQmHRM4Y.js.map +1 -0
- package/dist/_chunks/{task-card-Dw_ZJDL8.js → task-card-BUVMh6HN.js} +2 -2
- package/dist/_chunks/task-card-BUVMh6HN.js.map +1 -0
- package/dist/_chunks/{task-tray-XlIW9ueh.js → task-tray-B3A2fRGR.js} +13 -13
- package/dist/_chunks/task-tray-B3A2fRGR.js.map +1 -0
- package/dist/_chunks/{text-area-CO9Dz0qX.js → text-area-DHtcpcLv.js} +13 -13
- package/dist/_chunks/{text-area-CO9Dz0qX.js.map → text-area-DHtcpcLv.js.map} +1 -1
- package/dist/_chunks/{text-input-DZwt9L8H.js → text-input-1oqFRbVI.js} +2 -2
- package/dist/_chunks/{text-input-DZwt9L8H.js.map → text-input-1oqFRbVI.js.map} +1 -1
- package/dist/_chunks/{theme-toggle-B3UR6ouK.js → theme-toggle-B3meAb3y.js} +14 -14
- package/dist/_chunks/theme-toggle-B3meAb3y.js.map +1 -0
- package/dist/_chunks/{time-picker-DvPUmHH-.js → time-picker-DeVZkIY2.js} +2 -2
- package/dist/_chunks/{time-picker-DvPUmHH-.js.map → time-picker-DeVZkIY2.js.map} +1 -1
- package/dist/_chunks/{timeline-BvmnQadS.js → timeline-rmls7dIh.js} +10 -10
- package/dist/_chunks/timeline-rmls7dIh.js.map +1 -0
- package/dist/_chunks/{toast.agent-DihA6MON.js → toast.agent-32WNQ-_x.js} +2 -2
- package/dist/_chunks/{toast.agent-DihA6MON.js.map → toast.agent-32WNQ-_x.js.map} +1 -1
- package/dist/_chunks/{transaction-chip-DE6DITun.js → transaction-chip-z9ENE50O.js} +3 -3
- package/dist/_chunks/{transaction-chip-DE6DITun.js.map → transaction-chip-z9ENE50O.js.map} +1 -1
- package/dist/_chunks/{transcript-panel-Bx5ANMsv.js → transcript-panel-BpJqPr7I.js} +8 -8
- package/dist/_chunks/transcript-panel-BpJqPr7I.js.map +1 -0
- package/dist/_chunks/{typing-indicator-BZ5jXZPn.js → typing-indicator-DHeVN4ob.js} +9 -9
- package/dist/_chunks/typing-indicator-DHeVN4ob.js.map +1 -0
- package/dist/_chunks/{use-password-requirements-DgEYdN4H.js → use-password-requirements-DbPZMfV9.js} +30 -33
- package/dist/_chunks/use-password-requirements-DbPZMfV9.js.map +1 -0
- package/dist/_chunks/{warning-stack-CdLIe534.js → warning-stack-CeRihME9.js} +15 -15
- package/dist/_chunks/warning-stack-CeRihME9.js.map +1 -0
- package/dist/_chunks/{workflow-map-CESZNNZe.js → workflow-map-D3MvrsZV.js} +4 -4
- package/dist/_chunks/{workflow-map-CESZNNZe.js.map → workflow-map-D3MvrsZV.js.map} +1 -1
- package/dist/agent-catalog.json +1 -1
- package/dist/components/agenda-card/index.js +1 -1
- package/dist/components/agenda-tray/agenda-tray.d.ts.map +1 -1
- package/dist/components/agenda-tray/index.js +1 -1
- package/dist/components/ai-prompt-input/index.js +1 -1
- package/dist/components/alert/index.js +1 -1
- package/dist/components/app-frame/index.js +1 -1
- package/dist/components/audio-recorder/audio-recorder.d.ts.map +1 -1
- package/dist/components/audio-recorder/index.js +1 -1
- package/dist/components/audio-visualiser/index.js +1 -1
- package/dist/components/autocomplete/index.js +1 -1
- package/dist/components/avatar/index.js +1 -1
- package/dist/components/badge/index.js +1 -1
- package/dist/components/breadcrumb/index.js +1 -1
- package/dist/components/button-group/index.js +1 -1
- package/dist/components/chat-container/index.js +1 -1
- package/dist/components/chat-message/index.js +1 -1
- package/dist/components/checkbox-group/checkbox-group.d.ts.map +1 -1
- package/dist/components/checkbox-group/index.js +1 -1
- package/dist/components/color-picker/index.js +1 -1
- package/dist/components/combobox/combobox.d.ts.map +1 -1
- package/dist/components/combobox/index.js +1 -1
- package/dist/components/contact-card/index.js +1 -1
- package/dist/components/data-table/index.js +1 -1
- package/dist/components/date-picker/index.js +1 -1
- package/dist/components/date-range-picker/index.js +1 -1
- package/dist/components/date-time-picker/index.js +1 -1
- package/dist/components/description-list/index.js +1 -1
- package/dist/components/dialog/index.js +1 -1
- package/dist/components/file-upload/file-upload.d.ts.map +1 -1
- package/dist/components/file-upload/index.js +1 -1
- package/dist/components/floating-action-button/index.js +1 -1
- package/dist/components/form-field/index.js +1 -1
- package/dist/components/freemium-paywall/freemium-paywall.d.ts +2 -2
- package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
- package/dist/components/freemium-paywall/index.js +1 -1
- package/dist/components/key-value-pair/index.js +1 -1
- package/dist/components/link/index.js +1 -1
- package/dist/components/list/index.js +1 -1
- package/dist/components/message-card/index.js +1 -1
- package/dist/components/message-tray/index.js +1 -1
- package/dist/components/multi-select/index.js +1 -1
- package/dist/components/navigation-menu/index.js +2 -2
- package/dist/components/notification-card/index.js +1 -1
- package/dist/components/notification-card/notification-card.d.ts.map +1 -1
- package/dist/components/notification-tray/index.js +1 -1
- package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
- package/dist/components/number-input/index.js +1 -1
- package/dist/components/otp-input/index.js +1 -1
- package/dist/components/pagination/index.js +1 -1
- package/dist/components/password-input/index.js +1 -1
- package/dist/components/password-input/password-input.d.ts.map +1 -1
- package/dist/components/payment-form/index.js +1 -1
- package/dist/components/pdf-viewer/index.js +1 -1
- package/dist/components/phone-input/index.js +1 -1
- package/dist/components/popover/index.js +1 -1
- package/dist/components/progress/index.js +1 -1
- package/dist/components/recaptcha-widget/index.js +1 -1
- package/dist/components/resizable/index.js +1 -1
- package/dist/components/search-bar/index.js +1 -1
- package/dist/components/search-input/index.js +1 -1
- package/dist/components/select/index.js +1 -1
- package/dist/components/sheet/index.js +1 -1
- package/dist/components/sidebar/index.js +1 -1
- package/dist/components/sidebar/sidebar.d.ts +1 -1
- package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
- package/dist/components/skip-link/index.js +1 -1
- package/dist/components/skip-link/skip-link.d.ts +1 -1
- package/dist/components/slider/index.js +1 -1
- package/dist/components/sparkline/index.js +1 -1
- package/dist/components/spinner/index.js +1 -1
- package/dist/components/stat/index.js +1 -1
- package/dist/components/switch/index.js +1 -1
- package/dist/components/tabs/index.js +1 -1
- package/dist/components/tag/index.js +1 -1
- package/dist/components/task-card/index.js +1 -1
- package/dist/components/task-tray/index.js +1 -1
- package/dist/components/text-area/index.js +1 -1
- package/dist/components/text-input/index.js +1 -1
- package/dist/components/theme-toggle/index.js +1 -1
- package/dist/components/time-picker/index.js +1 -1
- package/dist/components/timeline/index.js +1 -1
- package/dist/components/toast/index.js +1 -1
- package/dist/components/transaction-chip/index.js +1 -1
- package/dist/components/transcript-panel/index.js +1 -1
- package/dist/components/typing-indicator/index.js +1 -1
- package/dist/components/typing-indicator/typing-indicator.d.ts +1 -1
- package/dist/components/typing-indicator/typing-indicator.d.ts.map +1 -1
- package/dist/components/warning-stack/index.js +1 -1
- package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/i18n/config.d.ts +2 -1
- package/dist/i18n/config.d.ts.map +1 -1
- package/dist/i18n/config.js +49 -31
- package/dist/i18n/config.js.map +1 -1
- package/dist/i18n/registerUiBundle.d.ts +15 -0
- package/dist/i18n/registerUiBundle.d.ts.map +1 -0
- package/dist/index.js +77 -77
- package/dist/patterns/leo-assistant/index.js +1 -1
- package/dist/patterns/patient-shell/index.js +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +2 -1
- package/dist/_chunks/agenda-card-CalZqycc.js.map +0 -1
- package/dist/_chunks/agenda-tray-3ffFDQZC.js.map +0 -1
- package/dist/_chunks/ai-prompt-input-DLgY8lrW.js.map +0 -1
- package/dist/_chunks/audio-visualiser-ByDEFLNm.js.map +0 -1
- package/dist/_chunks/autocomplete-D4oUZbsP.js.map +0 -1
- package/dist/_chunks/breadcrumb-D1snXjPb.js.map +0 -1
- package/dist/_chunks/button-group-CONver7M.js.map +0 -1
- package/dist/_chunks/chat-container-ClzsWXp2.js.map +0 -1
- package/dist/_chunks/checkbox-group-CarPLDIC.js.map +0 -1
- package/dist/_chunks/color-picker-CTIcHlDF.js.map +0 -1
- package/dist/_chunks/combobox-BLWruOxK.js.map +0 -1
- package/dist/_chunks/contact-card-DNyATxKv.js.map +0 -1
- package/dist/_chunks/date-range-picker-mix2nEVC.js.map +0 -1
- package/dist/_chunks/date-time-picker-Dnong_BY.js.map +0 -1
- package/dist/_chunks/description-list-BYA77Yud.js.map +0 -1
- package/dist/_chunks/file-upload-C947ACDK.js.map +0 -1
- package/dist/_chunks/form-field-Bmkeh7WY.js.map +0 -1
- package/dist/_chunks/freemium-paywall-B9kIDtm1.js.map +0 -1
- package/dist/_chunks/key-value-pair-CgWvAIGb.js.map +0 -1
- package/dist/_chunks/list-qP6p0NTw.js.map +0 -1
- package/dist/_chunks/message-card-DjvsB_3U.js.map +0 -1
- package/dist/_chunks/message-tray-BbnAzlLH.js.map +0 -1
- package/dist/_chunks/multi-select-wqqrgjUQ.js.map +0 -1
- package/dist/_chunks/navigation-menu-ClbHeawy.js.map +0 -1
- package/dist/_chunks/notification-card-uTPEvAQS.js.map +0 -1
- package/dist/_chunks/notification-tray-PGtMqXbP.js.map +0 -1
- package/dist/_chunks/pagination-3AC4zTsi.js.map +0 -1
- package/dist/_chunks/phone-input-CSHJOJ13.js.map +0 -1
- package/dist/_chunks/progress-C11tqhoI.js.map +0 -1
- package/dist/_chunks/recaptcha-widget-NyfOfLII.js.map +0 -1
- package/dist/_chunks/resizable-mpXXyIsN.js.map +0 -1
- package/dist/_chunks/select-BOU_Osnf.js.map +0 -1
- package/dist/_chunks/sidebar-Bx3wCDyy.js.map +0 -1
- package/dist/_chunks/sign-in-with-alfadocs-button-B9UrqOqH.js.map +0 -1
- package/dist/_chunks/slider-BT2bZWsy.js.map +0 -1
- package/dist/_chunks/sparkline-_gy8aJDG.js.map +0 -1
- package/dist/_chunks/spinner-DLaYfLPl.js.map +0 -1
- package/dist/_chunks/stat-B9PHSPbN.js.map +0 -1
- package/dist/_chunks/tabs-BZQy_Rmb.js.map +0 -1
- package/dist/_chunks/tag-DuLMjRbF.js.map +0 -1
- package/dist/_chunks/task-card-Dw_ZJDL8.js.map +0 -1
- package/dist/_chunks/task-tray-XlIW9ueh.js.map +0 -1
- package/dist/_chunks/theme-toggle-B3UR6ouK.js.map +0 -1
- package/dist/_chunks/timeline-BvmnQadS.js.map +0 -1
- package/dist/_chunks/transcript-panel-Bx5ANMsv.js.map +0 -1
- package/dist/_chunks/typing-indicator-BZ5jXZPn.js.map +0 -1
- package/dist/_chunks/use-password-requirements-DgEYdN4H.js.map +0 -1
- package/dist/_chunks/warning-stack-CdLIe534.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover-DekUKNBk.js","sources":["../../src/components/popover/popover.agent.ts","../../src/components/popover/popover.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { PopoverHandle } from './popover';\n\nexport const popoverAgent: AgentAdapter<PopoverHandle> = {\n id: 'popover',\n capabilities: ['open', 'close'],\n state: {\n isOpen: {\n type: 'boolean',\n description: 'True when the popover is currently open.',\n read: (handle) => handle.getIsOpen(),\n },\n },\n actions: {\n open: {\n safety: 'read',\n description: 'Open the popover.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'read',\n description: 'Close the popover.',\n invoke: (handle) => {\n handle.close();\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'popover' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop on Popover.Root.',\n },\n },\n};\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { X } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\nimport { useAgentRegistration } from '../../agent';\nimport { popoverAgent } from './popover.agent';\n\ninterface PopoverA11yContext {\n headingId: string | undefined;\n setHeadingId: (id: string | undefined) => void;\n descriptionId: string | undefined;\n setDescriptionId: (id: string | undefined) => void;\n}\n\nconst A11yContext = createContext<PopoverA11yContext>({\n headingId: undefined,\n setHeadingId: () => {},\n descriptionId: undefined,\n setDescriptionId: () => {},\n});\n\ninterface PopoverHoverContext {\n isHoverMode: boolean;\n clearHoverTimer: () => void;\n closeWithDelay: () => void;\n}\n\nconst HoverContext = createContext<PopoverHoverContext>({\n isHoverMode: false,\n clearHoverTimer: () => {},\n closeWithDelay: () => {},\n});\n\nfunction resolvePhysicalSide(\n logicalSide: 'start' | 'top' | 'end' | 'bottom',\n): 'left' | 'top' | 'right' | 'bottom' {\n if (logicalSide === 'top' || logicalSide === 'bottom') return logicalSide;\n const isRtl =\n typeof document !== 'undefined' && document.documentElement.dir === 'rtl';\n if (logicalSide === 'start') return isRtl ? 'right' : 'left';\n /* logicalSide === 'end' */\n return isRtl ? 'left' : 'right';\n}\n\nconst contentVariants = cva(\n [\n // Border kept (transparent) so the forced-colors override below can\n // repaint a visible edge in HCM. In normal modes the soft drop-shadow\n // carries the edge cue; the heavy `--border` (grey-800 since WCAG\n // 1.4.11 bump in 67fef8c) made the popover read as a charcoal box.\n 'ds:relative ds:bg-[var(--popover)] ds:border ds:border-transparent ds:rounded-[var(--radius-md)]',\n 'ds:p-[var(--spacing-md)]',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:z-[var(--z-popover)]',\n 'ds:text-[var(--popover-foreground)] ds:text-[length:var(--font-size-sm)]',\n 'ds:break-words',\n 'ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out',\n 'ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0',\n 'ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95',\n 'ds:data-[side=bottom]:slide-in-from-top-2 ds:data-[side=left]:slide-in-from-right-2',\n 'ds:data-[side=right]:slide-in-from-left-2 ds:data-[side=top]:slide-in-from-bottom-2',\n 'ds:motion-reduce:transition-none ds:motion-reduce:animate-none',\n 'ds:forced-colors:border-[CanvasText]',\n 'ds:focus-visible:outline-none',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:max-w-[var(--popover-size-sm)]',\n md: 'ds:max-w-[var(--popover-size-md)]',\n lg: 'ds:max-w-[var(--popover-size-lg)]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n// Curated agent-readiness handle — see popover.agent.ts.\nexport interface PopoverHandle {\n getIsOpen: () => boolean;\n open: () => void;\n close: () => void;\n}\n\nexport interface PopoverRootProps extends ComponentPropsWithoutRef<\n typeof RadixPopover.Root\n> {\n openOn?: 'click' | 'hover' | 'hover-or-click';\n /** Opaque instance id — forwarded to Popover.Content as `data-component-id`. */\n id?: string;\n children: ReactNode;\n}\n\nconst PopoverIdContext = createContext<string | undefined>(undefined);\n\nfunction PopoverRoot({\n openOn = 'click',\n children,\n id,\n open: controlledOpen,\n onOpenChange,\n defaultOpen,\n modal,\n}: PopoverRootProps) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen ?? false);\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) setInternalOpen(nextOpen);\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n const hoverTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isHoverMode = openOn === 'hover' || openOn === 'hover-or-click';\n\n const clearHoverTimer = useCallback(() => {\n if (hoverTimerRef.current) {\n clearTimeout(hoverTimerRef.current);\n hoverTimerRef.current = null;\n }\n }, []);\n\n const openWithDelay = useCallback(() => {\n clearHoverTimer();\n hoverTimerRef.current = setTimeout(() => {\n handleOpenChange(true);\n }, 300);\n }, [clearHoverTimer, handleOpenChange]);\n\n const closeWithDelay = useCallback(() => {\n clearHoverTimer();\n hoverTimerRef.current = setTimeout(() => {\n handleOpenChange(false);\n }, 300);\n }, [clearHoverTimer, handleOpenChange]);\n\n useEffect(() => {\n return () => clearHoverTimer();\n }, [clearHoverTimer]);\n\n // Agent handle.\n const openRef = useRef(isOpen);\n useEffect(() => {\n openRef.current = isOpen;\n }, [isOpen]);\n\n const agentHandle = useMemo<PopoverHandle>(\n () => ({\n getIsOpen: () => openRef.current,\n open: () => handleOpenChange(true),\n close: () => handleOpenChange(false),\n }),\n [handleOpenChange],\n );\n useAgentRegistration(popoverAgent, agentHandle, id);\n\n /* a11y context state */\n const [headingId, setHeadingId] = useState<string | undefined>(undefined);\n const [descriptionId, setDescriptionId] = useState<string | undefined>(\n undefined,\n );\n\n const hoverHandlers = isHoverMode\n ? {\n onMouseEnter: openWithDelay,\n onMouseLeave: closeWithDelay,\n onFocus: () => {\n clearHoverTimer();\n handleOpenChange(true);\n },\n onBlur: closeWithDelay,\n }\n : {};\n\n return (\n <PopoverIdContext.Provider value={id}>\n <A11yContext.Provider\n value={{ headingId, setHeadingId, descriptionId, setDescriptionId }}\n >\n <HoverContext.Provider\n value={{ isHoverMode, clearHoverTimer, closeWithDelay }}\n >\n <RadixPopover.Root\n open={isOpen}\n onOpenChange={handleOpenChange}\n modal={modal}\n >\n {isHoverMode ? (\n <span className=\"ds:inline-flex\" {...hoverHandlers}>\n {children}\n </span>\n ) : (\n children\n )}\n </RadixPopover.Root>\n </HoverContext.Provider>\n </A11yContext.Provider>\n </PopoverIdContext.Provider>\n );\n}\nPopoverRoot.displayName = 'Popover.Root';\n\nconst PopoverTrigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof RadixPopover.Trigger>\n>(({ children, ...props }, ref) => (\n <RadixPopover.Trigger ref={ref} {...props}>\n {children}\n </RadixPopover.Trigger>\n));\nPopoverTrigger.displayName = 'Popover.Trigger';\n\nexport interface PopoverContentProps\n extends\n Omit<\n ComponentPropsWithoutRef<typeof RadixPopover.Content>,\n 'side' | 'align'\n >,\n VariantProps<typeof contentVariants> {\n side?: 'start' | 'top' | 'end' | 'bottom';\n align?: 'start' | 'center' | 'end';\n size?: 'sm' | 'md' | 'lg';\n showArrow?: boolean;\n className?: string;\n children: ReactNode;\n}\n\nconst PopoverContent = forwardRef<HTMLDivElement, PopoverContentProps>(\n (\n {\n side = 'bottom',\n align = 'center',\n size = 'md',\n showArrow = true,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const { headingId, descriptionId } = useContext(A11yContext);\n const instanceId = useContext(PopoverIdContext);\n const {\n isHoverMode: isHover,\n clearHoverTimer: cancelTimer,\n closeWithDelay: delayClose,\n } = useContext(HoverContext);\n const physicalSide = resolvePhysicalSide(side);\n\n const contentHoverHandlers = isHover\n ? {\n onMouseEnter: cancelTimer,\n onMouseLeave: delayClose,\n onFocus: cancelTimer,\n onBlur: delayClose,\n }\n : {};\n\n return (\n <RadixPopover.Portal>\n <RadixPopover.Content\n ref={ref}\n side={physicalSide}\n align={align}\n sideOffset={8}\n collisionPadding={8}\n aria-labelledby={headingId}\n aria-describedby={descriptionId}\n className={contentVariants({ size, className })}\n data-component=\"popover\"\n data-component-id={instanceId}\n {...contentHoverHandlers}\n {...props}\n >\n {children}\n {showArrow && (\n <RadixPopover.Arrow\n width={12}\n height={6}\n className=\"ds:fill-[var(--popover)]\"\n />\n )}\n </RadixPopover.Content>\n </RadixPopover.Portal>\n );\n },\n);\nPopoverContent.displayName = 'Popover.Content';\n\nconst PopoverClose = forwardRef<HTMLButtonElement, { className?: string }>(\n ({ className }, ref) => {\n const { t } = useTranslation();\n\n return (\n <div\n className={[\n 'ds:absolute ds:top-[var(--spacing-sm)] ds:end-[var(--spacing-sm)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <RadixPopover.Close asChild>\n <IconButton\n ref={ref}\n icon={<X />}\n intent=\"ghost\"\n size=\"sm\"\n aria-label={t('ui.common.close', 'Close')}\n />\n </RadixPopover.Close>\n </div>\n );\n },\n);\nPopoverClose.displayName = 'Popover.Close';\n\ninterface PopoverHeadingProps extends HTMLAttributes<HTMLHeadingElement> {\n as?: 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n}\n\nconst PopoverHeading = forwardRef<HTMLHeadingElement, PopoverHeadingProps>(\n ({ as: Tag = 'h3', className, ...props }, ref) => {\n const generatedId = useId();\n const { setHeadingId } = useContext(A11yContext);\n\n useEffect(() => {\n setHeadingId(generatedId);\n return () => setHeadingId(undefined);\n }, [generatedId, setHeadingId]);\n\n return (\n <Tag\n ref={ref}\n id={generatedId}\n className={[\n 'type-title-item ds:leading-snug ds:break-words',\n 'ds:pe-[var(--spacing-xl)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n );\n },\n);\nPopoverHeading.displayName = 'Popover.Heading';\n\nconst PopoverDescription = forwardRef<\n HTMLParagraphElement,\n HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const generatedId = useId();\n const { setDescriptionId } = useContext(A11yContext);\n\n useEffect(() => {\n setDescriptionId(generatedId);\n return () => setDescriptionId(undefined);\n }, [generatedId, setDescriptionId]);\n\n return (\n <p\n ref={ref}\n id={generatedId}\n className={[\n 'ds:text-[var(--muted-foreground)] type-body-sm ds:mt-[var(--spacing-xs)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n );\n});\nPopoverDescription.displayName = 'Popover.Description';\n\nexport const Popover = Object.assign(PopoverRoot, {\n Root: PopoverRoot,\n Trigger: PopoverTrigger,\n Content: PopoverContent,\n Close: PopoverClose,\n Heading: PopoverHeading,\n Description: PopoverDescription,\n});\n\nexport type { PopoverRootProps as PopoverProps, PopoverHeadingProps };\n"],"names":["popoverAgent","handle","A11yContext","createContext","HoverContext","resolvePhysicalSide","logicalSide","isRtl","contentVariants","cva","PopoverIdContext","PopoverRoot","openOn","children","id","controlledOpen","onOpenChange","defaultOpen","modal","internalOpen","setInternalOpen","useState","isControlled","isOpen","handleOpenChange","useCallback","nextOpen","hoverTimerRef","useRef","isHoverMode","clearHoverTimer","openWithDelay","closeWithDelay","useEffect","openRef","agentHandle","useMemo","useAgentRegistration","headingId","setHeadingId","descriptionId","setDescriptionId","hoverHandlers","jsx","RadixPopover","PopoverTrigger","forwardRef","props","ref","PopoverContent","side","align","size","showArrow","className","useContext","instanceId","isHover","cancelTimer","delayClose","physicalSide","contentHoverHandlers","jsxs","PopoverClose","t","useTranslation","IconButton","X","PopoverHeading","Tag","generatedId","useId","PopoverDescription","Popover"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"popover--derJ_wq.js","sources":["../../src/components/popover/popover.agent.ts","../../src/components/popover/popover.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { PopoverHandle } from './popover';\n\nexport const popoverAgent: AgentAdapter<PopoverHandle> = {\n id: 'popover',\n capabilities: ['open', 'close'],\n state: {\n isOpen: {\n type: 'boolean',\n description: 'True when the popover is currently open.',\n read: (handle) => handle.getIsOpen(),\n },\n },\n actions: {\n open: {\n safety: 'read',\n description: 'Open the popover.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'read',\n description: 'Close the popover.',\n invoke: (handle) => {\n handle.close();\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'popover' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop on Popover.Root.',\n },\n },\n};\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { X } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\nimport { useAgentRegistration } from '../../agent';\nimport { popoverAgent } from './popover.agent';\n\ninterface PopoverA11yContext {\n headingId: string | undefined;\n setHeadingId: (id: string | undefined) => void;\n descriptionId: string | undefined;\n setDescriptionId: (id: string | undefined) => void;\n}\n\nconst A11yContext = createContext<PopoverA11yContext>({\n headingId: undefined,\n setHeadingId: () => {},\n descriptionId: undefined,\n setDescriptionId: () => {},\n});\n\ninterface PopoverHoverContext {\n isHoverMode: boolean;\n clearHoverTimer: () => void;\n closeWithDelay: () => void;\n}\n\nconst HoverContext = createContext<PopoverHoverContext>({\n isHoverMode: false,\n clearHoverTimer: () => {},\n closeWithDelay: () => {},\n});\n\nfunction resolvePhysicalSide(\n logicalSide: 'start' | 'top' | 'end' | 'bottom',\n): 'left' | 'top' | 'right' | 'bottom' {\n if (logicalSide === 'top' || logicalSide === 'bottom') return logicalSide;\n const isRtl =\n typeof document !== 'undefined' && document.documentElement.dir === 'rtl';\n if (logicalSide === 'start') return isRtl ? 'right' : 'left';\n /* logicalSide === 'end' */\n return isRtl ? 'left' : 'right';\n}\n\nconst contentVariants = cva(\n [\n // Border kept (transparent) so the forced-colors override below can\n // repaint a visible edge in HCM. In normal modes the soft drop-shadow\n // carries the edge cue; the heavy `--border` (grey-800 since WCAG\n // 1.4.11 bump in 67fef8c) made the popover read as a charcoal box.\n 'ds:relative ds:bg-[var(--popover)] ds:border ds:border-transparent ds:rounded-[var(--radius-md)]',\n 'ds:p-[var(--spacing-md)]',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:z-[var(--z-popover)]',\n 'ds:text-[var(--popover-foreground)] ds:text-[length:var(--font-size-sm)]',\n 'ds:break-words',\n 'ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out',\n 'ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0',\n 'ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95',\n 'ds:data-[side=bottom]:slide-in-from-top-2 ds:data-[side=left]:slide-in-from-right-2',\n 'ds:data-[side=right]:slide-in-from-left-2 ds:data-[side=top]:slide-in-from-bottom-2',\n 'ds:motion-reduce:transition-none ds:motion-reduce:animate-none',\n 'ds:forced-colors:border-[CanvasText]',\n 'ds:focus-visible:outline-none',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:max-w-[var(--popover-size-sm)]',\n md: 'ds:max-w-[var(--popover-size-md)]',\n lg: 'ds:max-w-[var(--popover-size-lg)]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n// Curated agent-readiness handle — see popover.agent.ts.\nexport interface PopoverHandle {\n getIsOpen: () => boolean;\n open: () => void;\n close: () => void;\n}\n\nexport interface PopoverRootProps extends ComponentPropsWithoutRef<\n typeof RadixPopover.Root\n> {\n openOn?: 'click' | 'hover' | 'hover-or-click';\n /** Opaque instance id — forwarded to Popover.Content as `data-component-id`. */\n id?: string;\n children: ReactNode;\n}\n\nconst PopoverIdContext = createContext<string | undefined>(undefined);\n\nfunction PopoverRoot({\n openOn = 'click',\n children,\n id,\n open: controlledOpen,\n onOpenChange,\n defaultOpen,\n modal,\n}: PopoverRootProps) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen ?? false);\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) setInternalOpen(nextOpen);\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n const hoverTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isHoverMode = openOn === 'hover' || openOn === 'hover-or-click';\n\n const clearHoverTimer = useCallback(() => {\n if (hoverTimerRef.current) {\n clearTimeout(hoverTimerRef.current);\n hoverTimerRef.current = null;\n }\n }, []);\n\n const openWithDelay = useCallback(() => {\n clearHoverTimer();\n hoverTimerRef.current = setTimeout(() => {\n handleOpenChange(true);\n }, 300);\n }, [clearHoverTimer, handleOpenChange]);\n\n const closeWithDelay = useCallback(() => {\n clearHoverTimer();\n hoverTimerRef.current = setTimeout(() => {\n handleOpenChange(false);\n }, 300);\n }, [clearHoverTimer, handleOpenChange]);\n\n useEffect(() => {\n return () => clearHoverTimer();\n }, [clearHoverTimer]);\n\n // Agent handle.\n const openRef = useRef(isOpen);\n useEffect(() => {\n openRef.current = isOpen;\n }, [isOpen]);\n\n const agentHandle = useMemo<PopoverHandle>(\n () => ({\n getIsOpen: () => openRef.current,\n open: () => handleOpenChange(true),\n close: () => handleOpenChange(false),\n }),\n [handleOpenChange],\n );\n useAgentRegistration(popoverAgent, agentHandle, id);\n\n /* a11y context state */\n const [headingId, setHeadingId] = useState<string | undefined>(undefined);\n const [descriptionId, setDescriptionId] = useState<string | undefined>(\n undefined,\n );\n\n const hoverHandlers = isHoverMode\n ? {\n onMouseEnter: openWithDelay,\n onMouseLeave: closeWithDelay,\n onFocus: () => {\n clearHoverTimer();\n handleOpenChange(true);\n },\n onBlur: closeWithDelay,\n }\n : {};\n\n return (\n <PopoverIdContext.Provider value={id}>\n <A11yContext.Provider\n value={{ headingId, setHeadingId, descriptionId, setDescriptionId }}\n >\n <HoverContext.Provider\n value={{ isHoverMode, clearHoverTimer, closeWithDelay }}\n >\n <RadixPopover.Root\n open={isOpen}\n onOpenChange={handleOpenChange}\n modal={modal}\n >\n {isHoverMode ? (\n <span className=\"ds:inline-flex\" {...hoverHandlers}>\n {children}\n </span>\n ) : (\n children\n )}\n </RadixPopover.Root>\n </HoverContext.Provider>\n </A11yContext.Provider>\n </PopoverIdContext.Provider>\n );\n}\nPopoverRoot.displayName = 'Popover.Root';\n\nconst PopoverTrigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof RadixPopover.Trigger>\n>(({ children, ...props }, ref) => (\n <RadixPopover.Trigger ref={ref} {...props}>\n {children}\n </RadixPopover.Trigger>\n));\nPopoverTrigger.displayName = 'Popover.Trigger';\n\nexport interface PopoverContentProps\n extends\n Omit<\n ComponentPropsWithoutRef<typeof RadixPopover.Content>,\n 'side' | 'align'\n >,\n VariantProps<typeof contentVariants> {\n side?: 'start' | 'top' | 'end' | 'bottom';\n align?: 'start' | 'center' | 'end';\n size?: 'sm' | 'md' | 'lg';\n showArrow?: boolean;\n className?: string;\n children: ReactNode;\n}\n\nconst PopoverContent = forwardRef<HTMLDivElement, PopoverContentProps>(\n (\n {\n side = 'bottom',\n align = 'center',\n size = 'md',\n showArrow = true,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const { headingId, descriptionId } = useContext(A11yContext);\n const instanceId = useContext(PopoverIdContext);\n const {\n isHoverMode: isHover,\n clearHoverTimer: cancelTimer,\n closeWithDelay: delayClose,\n } = useContext(HoverContext);\n const physicalSide = resolvePhysicalSide(side);\n\n const contentHoverHandlers = isHover\n ? {\n onMouseEnter: cancelTimer,\n onMouseLeave: delayClose,\n onFocus: cancelTimer,\n onBlur: delayClose,\n }\n : {};\n\n return (\n <RadixPopover.Portal>\n <RadixPopover.Content\n ref={ref}\n side={physicalSide}\n align={align}\n sideOffset={8}\n collisionPadding={8}\n aria-labelledby={headingId}\n aria-describedby={descriptionId}\n className={contentVariants({ size, className })}\n data-component=\"popover\"\n data-component-id={instanceId}\n {...contentHoverHandlers}\n {...props}\n >\n {children}\n {showArrow && (\n <RadixPopover.Arrow\n width={12}\n height={6}\n className=\"ds:fill-[var(--popover)]\"\n />\n )}\n </RadixPopover.Content>\n </RadixPopover.Portal>\n );\n },\n);\nPopoverContent.displayName = 'Popover.Content';\n\nconst PopoverClose = forwardRef<HTMLButtonElement, { className?: string }>(\n ({ className }, ref) => {\n const { t } = useTranslation();\n\n return (\n <div\n className={[\n 'ds:absolute ds:top-[var(--spacing-sm)] ds:end-[var(--spacing-sm)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <RadixPopover.Close asChild>\n <IconButton\n ref={ref}\n icon={<X />}\n intent=\"ghost\"\n size=\"sm\"\n aria-label={t('common.close', 'Close')}\n />\n </RadixPopover.Close>\n </div>\n );\n },\n);\nPopoverClose.displayName = 'Popover.Close';\n\ninterface PopoverHeadingProps extends HTMLAttributes<HTMLHeadingElement> {\n as?: 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n}\n\nconst PopoverHeading = forwardRef<HTMLHeadingElement, PopoverHeadingProps>(\n ({ as: Tag = 'h3', className, ...props }, ref) => {\n const generatedId = useId();\n const { setHeadingId } = useContext(A11yContext);\n\n useEffect(() => {\n setHeadingId(generatedId);\n return () => setHeadingId(undefined);\n }, [generatedId, setHeadingId]);\n\n return (\n <Tag\n ref={ref}\n id={generatedId}\n className={[\n 'type-title-item ds:leading-snug ds:break-words',\n 'ds:pe-[var(--spacing-xl)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n );\n },\n);\nPopoverHeading.displayName = 'Popover.Heading';\n\nconst PopoverDescription = forwardRef<\n HTMLParagraphElement,\n HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const generatedId = useId();\n const { setDescriptionId } = useContext(A11yContext);\n\n useEffect(() => {\n setDescriptionId(generatedId);\n return () => setDescriptionId(undefined);\n }, [generatedId, setDescriptionId]);\n\n return (\n <p\n ref={ref}\n id={generatedId}\n className={[\n 'ds:text-[var(--muted-foreground)] type-body-sm ds:mt-[var(--spacing-xs)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n );\n});\nPopoverDescription.displayName = 'Popover.Description';\n\nexport const Popover = Object.assign(PopoverRoot, {\n Root: PopoverRoot,\n Trigger: PopoverTrigger,\n Content: PopoverContent,\n Close: PopoverClose,\n Heading: PopoverHeading,\n Description: PopoverDescription,\n});\n\nexport type { PopoverRootProps as PopoverProps, PopoverHeadingProps };\n"],"names":["popoverAgent","handle","A11yContext","createContext","HoverContext","resolvePhysicalSide","logicalSide","isRtl","contentVariants","cva","PopoverIdContext","PopoverRoot","openOn","children","id","controlledOpen","onOpenChange","defaultOpen","modal","internalOpen","setInternalOpen","useState","isControlled","isOpen","handleOpenChange","useCallback","nextOpen","hoverTimerRef","useRef","isHoverMode","clearHoverTimer","openWithDelay","closeWithDelay","useEffect","openRef","agentHandle","useMemo","useAgentRegistration","headingId","setHeadingId","descriptionId","setDescriptionId","hoverHandlers","jsx","RadixPopover","PopoverTrigger","forwardRef","props","ref","PopoverContent","side","align","size","showArrow","className","useContext","instanceId","isHover","cancelTimer","delayClose","physicalSide","contentHoverHandlers","jsxs","PopoverClose","t","useTranslation","IconButton","X","PopoverHeading","Tag","generatedId","useId","PopoverDescription","Popover"],"mappings":"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"}
|
|
@@ -54,7 +54,7 @@ const M = {
|
|
|
54
54
|
},
|
|
55
55
|
defaultVariants: { size: "md" }
|
|
56
56
|
}), Y = R(({ children: a, className: i, ...e }, t) => {
|
|
57
|
-
const r = W(), { t: u, i18n: m } = C(), f = r.isIndeterminate ? u("
|
|
57
|
+
const r = W(), { t: u, i18n: m } = C(), f = r.isIndeterminate ? u("common.loading", "Loading...") : u("common.progress_label", {
|
|
58
58
|
percent: new Intl.NumberFormat(m.language, {
|
|
59
59
|
style: "percent",
|
|
60
60
|
maximumFractionDigits: 0
|
|
@@ -73,7 +73,7 @@ const M = {
|
|
|
73
73
|
});
|
|
74
74
|
Y.displayName = "Progress.Label";
|
|
75
75
|
const Z = R(({ className: a, ...i }, e) => {
|
|
76
|
-
const t = W(), { t: r, i18n: u } = C(), m = t.isIndeterminate ? r("
|
|
76
|
+
const t = W(), { t: r, i18n: u } = C(), m = t.isIndeterminate ? r("common.loading", "Loading...") : new Intl.NumberFormat(u.language, {
|
|
77
77
|
style: "percent",
|
|
78
78
|
maximumFractionDigits: 0
|
|
79
79
|
}).format((t.value ?? 0) / t.max);
|
|
@@ -161,7 +161,7 @@ const $ = R(
|
|
|
161
161
|
[e, t, r, f]
|
|
162
162
|
);
|
|
163
163
|
be(ee, () => _, [_]), xe(ke, _, a);
|
|
164
|
-
const ne = s ? D("
|
|
164
|
+
const ne = s ? D("common.loading", "Loading...") : D("common.progress_label", {
|
|
165
165
|
percent: new Intl.NumberFormat(re.language, {
|
|
166
166
|
style: "percent",
|
|
167
167
|
maximumFractionDigits: 0
|
|
@@ -295,4 +295,4 @@ export {
|
|
|
295
295
|
Ce as P,
|
|
296
296
|
ke as p
|
|
297
297
|
};
|
|
298
|
-
//# sourceMappingURL=progress-
|
|
298
|
+
//# sourceMappingURL=progress-B-PSO5OS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-B-PSO5OS.js","sources":["../../src/components/progress/progress.agent.ts","../../src/components/progress/progress.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { ProgressHandle } from './progress';\n\nexport const progressAgent: AgentAdapter<ProgressHandle> = {\n id: 'progress',\n capabilities: [],\n state: {},\n actions: {\n set_value: {\n safety: 'read',\n argsType: '{ value: number }',\n description: 'Set the displayed progress value (0–100).',\n invoke: (handle, args: { value: number }) => {\n handle.setValue(args.value);\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'progress' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useId,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { progressAgent } from './progress.agent';\n\n/* ── Public types ─────────────────────────────────────────────────────── */\n\nexport interface ProgressHandle {\n setValue: (value: number) => void;\n}\n\nexport interface ProgressProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'role'\n> {\n value?: number;\n max?: number;\n shape?: 'bar' | 'circular';\n size?: 'sm' | 'md' | 'lg';\n ariaLabel?: string;\n ariaValueText?: string;\n debouncePercent?: number;\n disabled?: boolean;\n children?: ReactNode;\n}\n\n/* ── Context ──────────────────────────────────────────────────────────── */\n\ntype ProgressContextValue = {\n labelId: string;\n isIndeterminate: boolean;\n value: number | undefined;\n max: number;\n};\n\nconst ProgressCtx = createContext<ProgressContextValue | null>(null);\n\nfunction useProgressCtx(): ProgressContextValue {\n const ctx = useContext(ProgressCtx);\n if (!ctx)\n throw new Error('Progress sub-components must be used within <Progress>');\n return ctx;\n}\n\n/* ── Circle geometry ──────────────────────────────────────────────────── */\n\nconst CIRCLE = {\n sm: { viewBox: '0 0 24 24', cx: 12, cy: 12, r: 10 },\n md: { viewBox: '0 0 40 40', cx: 20, cy: 20, r: 18 },\n lg: { viewBox: '0 0 56 56', cx: 28, cy: 28, r: 26 },\n} as const;\n\n/* ── CVA ──────────────────────────────────────────────────────────────── */\n\nconst barTrackVariants = cva(\n 'ds:relative ds:w-full ds:overflow-hidden ds:rounded-[var(--radius-full)] ds:bg-[var(--progress-track)]',\n {\n variants: {\n size: { sm: 'ds:h-1', md: 'ds:h-2', lg: 'ds:h-3' },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst circularVariants = cva('', {\n variants: {\n size: {\n sm: 'ds:w-6 ds:h-6',\n md: 'ds:w-10 ds:h-10',\n lg: 'ds:w-14 ds:h-14',\n },\n },\n defaultVariants: { size: 'md' },\n});\n\n/* ── Progress.Label ───────────────────────────────────────────────────── */\n\nconst ProgressLabel = forwardRef<\n HTMLSpanElement,\n HTMLAttributes<HTMLSpanElement>\n>(({ children, className, ...props }, ref) => {\n const ctx = useProgressCtx();\n const { t, i18n } = useTranslation();\n\n const defaultText = ctx.isIndeterminate\n ? t('common.loading', 'Loading...')\n : t('common.progress_label', {\n percent: new Intl.NumberFormat(i18n.language, {\n style: 'percent',\n maximumFractionDigits: 0,\n }).format((ctx.value ?? 0) / ctx.max),\n });\n\n return (\n <span\n ref={ref}\n id={ctx.labelId}\n className={['type-label ds:text-foreground', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {children ?? defaultText}\n </span>\n );\n});\nProgressLabel.displayName = 'Progress.Label';\n\n/* ── Progress.Value ───────────────────────────────────────────────────── */\n\nconst ProgressValue = forwardRef<\n HTMLSpanElement,\n HTMLAttributes<HTMLSpanElement>\n>(({ className, ...props }, ref) => {\n const ctx = useProgressCtx();\n const { t, i18n } = useTranslation();\n\n const text = ctx.isIndeterminate\n ? t('common.loading', 'Loading...')\n : new Intl.NumberFormat(i18n.language, {\n style: 'percent',\n maximumFractionDigits: 0,\n }).format((ctx.value ?? 0) / ctx.max);\n\n return (\n <span\n ref={ref}\n className={[\n 'type-body-sm ds:tabular-nums ds:text-muted-foreground',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {text}\n </span>\n );\n});\nProgressValue.displayName = 'Progress.Value';\n\n/* ── Progress root ────────────────────────────────────────────────────── */\n\nconst ProgressRoot = forwardRef<ProgressHandle, ProgressProps>(\n (\n {\n id,\n value,\n max = 100,\n shape = 'bar',\n size = 'md',\n ariaLabel,\n ariaValueText,\n debouncePercent = 1,\n disabled = false,\n className,\n children,\n ...rest\n },\n ref,\n ) => {\n const labelId = useId();\n const { t, i18n } = useTranslation();\n const barTrackRef = useRef<HTMLDivElement>(null);\n const barFillRef = useRef<HTMLDivElement>(null);\n const circTrackRef = useRef<SVGSVGElement>(null);\n const circFillRef = useRef<SVGCircleElement>(null);\n /* Separate typed refs for each shape to avoid union-type casts */\n const lastAnnouncedPercentRef = useRef<number | null>(null);\n\n const isIndeterminate = value === undefined;\n const clampedValue = isIndeterminate\n ? undefined\n : Math.min(max, Math.max(0, value));\n const targetPercent =\n clampedValue !== undefined ? (clampedValue / max) * 100 : undefined;\n\n /* ── Mount-in animation ──────────────────────────────────────────── */\n // Paint once at 0 before showing the target value, so the existing\n // transition on stroke-dashoffset / inline-size animates from empty\n // → target on mount. First render: hasMounted=false → percent=0,\n // useLayoutEffect writes 0 to the style, browser paints empty.\n // useEffect then flips hasMounted, triggering a re-render at the\n // target percent; the style write inside useLayoutEffect produces\n // the change the transition needs.\n const [hasMounted, setHasMounted] = useState(false);\n useEffect(() => {\n setHasMounted(true);\n }, []);\n const percent = hasMounted || isIndeterminate ? targetPercent : 0;\n\n /* ── CSS property updates (visual fill) ──────────────────────────── */\n useLayoutEffect(() => {\n if (isIndeterminate || percent === undefined) return;\n\n if (shape === 'bar') {\n barFillRef.current?.style.setProperty(\n '--progress-value',\n String(percent),\n );\n } else {\n const { r } = CIRCLE[size];\n const circumference = 2 * Math.PI * r;\n const offset = circumference * (1 - percent / 100);\n circFillRef.current?.style.setProperty(\n 'stroke-dashoffset',\n String(offset),\n );\n }\n }, [isIndeterminate, percent, shape, size]);\n\n /* ── Debounced ARIA value updates ────────────────────────────────── */\n useLayoutEffect(() => {\n const trackEl =\n shape === 'bar' ? barTrackRef.current : circTrackRef.current;\n if (!trackEl) return;\n\n if (isIndeterminate) {\n trackEl.removeAttribute('aria-valuenow');\n lastAnnouncedPercentRef.current = null;\n return;\n }\n if (clampedValue === undefined) return;\n\n const pct = (clampedValue / max) * 100;\n const last = lastAnnouncedPercentRef.current;\n const delta = last === null ? Infinity : Math.abs(pct - last);\n if (delta >= debouncePercent) {\n trackEl.setAttribute('aria-valuenow', String(clampedValue));\n lastAnnouncedPercentRef.current = pct;\n }\n }, [isIndeterminate, clampedValue, max, debouncePercent, shape]);\n\n /* ── Imperative handle for high-frequency updates ────────────────── */\n const rootRef = useRef<HTMLDivElement>(null);\n\n const agentHandle = useMemo<ProgressHandle>(\n () => ({\n setValue: (v: number) => {\n const clamped = Math.min(max, Math.max(0, v));\n const pct = (clamped / max) * 100;\n\n if (shape === 'bar') {\n barFillRef.current?.style.setProperty(\n '--progress-value',\n String(pct),\n );\n } else {\n const { r } = CIRCLE[size];\n const circumference = 2 * Math.PI * r;\n const offset = circumference * (1 - pct / 100);\n circFillRef.current?.style.setProperty(\n 'stroke-dashoffset',\n String(offset),\n );\n }\n\n const trackEl =\n shape === 'bar' ? barTrackRef.current : circTrackRef.current;\n const last = lastAnnouncedPercentRef.current;\n const delta = last === null ? Infinity : Math.abs(pct - last);\n if (delta >= debouncePercent && trackEl) {\n trackEl.setAttribute('aria-valuenow', String(clamped));\n lastAnnouncedPercentRef.current = pct;\n }\n },\n }),\n [max, shape, size, debouncePercent],\n );\n useImperativeHandle(ref, () => agentHandle, [agentHandle]);\n useAgentRegistration(progressAgent, agentHandle, id);\n\n /* ── ARIA props shared by both shapes ────────────────────────────── */\n // Provide aria-label as fallback alongside aria-labelledby: per ARIA spec,\n // AT falls back to aria-label when aria-labelledby references a missing id.\n // This covers the case where neither ariaLabel nor Progress.Label is used.\n const fallbackAriaLabel = isIndeterminate\n ? t('common.loading', 'Loading...')\n : t('common.progress_label', {\n percent: new Intl.NumberFormat(i18n.language, {\n style: 'percent',\n maximumFractionDigits: 0,\n }).format((clampedValue ?? 0) / max),\n });\n\n const labelProps = ariaLabel\n ? { 'aria-label': ariaLabel }\n : { 'aria-labelledby': labelId, 'aria-label': fallbackAriaLabel };\n\n const stateProps = isIndeterminate\n ? { 'aria-busy': true as const, 'aria-valuemin': 0, 'aria-valuemax': max }\n : {\n 'aria-valuemin': 0 as const,\n 'aria-valuemax': max,\n ...(ariaValueText ? { 'aria-valuetext': ariaValueText } : {}),\n };\n\n const disabledProp = disabled ? { 'aria-disabled': true as const } : {};\n\n const wrapperClass = [\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]',\n disabled && 'ds:opacity-50',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const ctxValue: ProgressContextValue = {\n labelId,\n isIndeterminate,\n value: clampedValue,\n max,\n };\n\n /* ── Bar shape ──────────────────────────────────────────────────── */\n if (shape === 'bar') {\n const fillClass = isIndeterminate\n ? [\n 'ds:absolute ds:[inset-block:0] ds:bg-primary ds:rounded-[var(--radius-full)]',\n 'ds:[@media(prefers-reduced-motion:no-preference)]:animate-[progress-bar-indeterminate_1200ms_ease-in-out_infinite]',\n 'ds:[.theme-accessible_&]:animate-none',\n 'ds:motion-reduce:animate-[progress-indeterminate-pulse_var(--animation-duration)_ease-in-out_infinite]',\n ].join(' ')\n : [\n 'ds:absolute ds:[inset-block:0] ds:start-0',\n 'ds:[inline-size:calc(var(--progress-value,0)*1%)]',\n 'ds:bg-primary ds:rounded-[var(--radius-full)]',\n 'ds:transition-[inline-size] ds:duration-[var(--animation-duration)]',\n 'ds:ease-[var(--ease-out)] ds:motion-reduce:transition-none',\n ].join(' ');\n\n return (\n <ProgressCtx.Provider value={ctxValue}>\n <div\n ref={rootRef}\n className={wrapperClass}\n data-component=\"progress\"\n data-component-id={id}\n {...rest}\n >\n {children}\n <div\n ref={barTrackRef}\n role=\"progressbar\"\n {...labelProps}\n {...stateProps}\n {...disabledProp}\n className={barTrackVariants({ size })}\n >\n <div ref={barFillRef} className={fillClass} />\n </div>\n </div>\n </ProgressCtx.Provider>\n );\n }\n\n /* ── Circular shape ─────────────────────────────────────────────── */\n const { viewBox, cx, cy, r } = CIRCLE[size];\n const circumference = 2 * Math.PI * r;\n const indeterminateDashOffset = circumference * 0.25;\n // For determinate progress, paint an empty arc on first mount. The\n // effect above then sets stroke-dashoffset to the target, and the\n // CSS transition animates from empty → target.\n const initialDashOffset = isIndeterminate\n ? indeterminateDashOffset\n : circumference;\n\n const svgClass = isIndeterminate\n ? [\n circularVariants({ size }),\n 'ds:[transform:rotate(-90deg)]',\n 'ds:[@media(prefers-reduced-motion:no-preference)]:animate-[progress-circular-spin_1200ms_linear_infinite]',\n 'ds:[.theme-accessible_&]:animate-none',\n 'ds:motion-reduce:animate-[progress-indeterminate-pulse_var(--animation-duration)_ease-in-out_infinite]',\n ].join(' ')\n : [\n circularVariants({ size }),\n 'ds:[transform:rotate(-90deg)]',\n 'ds:rtl:[transform:rotate(-90deg)_scaleX(-1)]',\n ].join(' ');\n\n const fillStrokeClass = [\n 'ds:stroke-primary ds:[stroke-width:var(--spacing-xs)]',\n !isIndeterminate &&\n 'ds:transition-[stroke-dashoffset] ds:duration-[var(--animation-duration)] ds:ease-[var(--ease-out)] ds:motion-reduce:transition-none',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <ProgressCtx.Provider value={ctxValue}>\n <div\n ref={rootRef}\n className={wrapperClass}\n data-component=\"progress\"\n {...rest}\n >\n {children}\n <svg\n ref={circTrackRef}\n role=\"progressbar\"\n {...labelProps}\n {...stateProps}\n {...disabledProp}\n viewBox={viewBox}\n className={svgClass}\n >\n <circle\n cx={cx}\n cy={cy}\n r={r}\n fill=\"none\"\n strokeDasharray={circumference}\n className=\"ds:[stroke:var(--progress-track)] ds:[stroke-width:var(--spacing-xs)]\"\n />\n <circle\n ref={circFillRef}\n cx={cx}\n cy={cy}\n r={r}\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={initialDashOffset}\n className={fillStrokeClass}\n />\n </svg>\n </div>\n </ProgressCtx.Provider>\n );\n },\n);\n\nProgressRoot.displayName = 'Progress';\n\n/* ── Compound export ──────────────────────────────────────────────────── */\n\nexport const Progress = Object.assign(ProgressRoot, {\n Label: ProgressLabel,\n Value: ProgressValue,\n});\n"],"names":["progressAgent","handle","args","ProgressCtx","createContext","useProgressCtx","ctx","useContext","CIRCLE","barTrackVariants","cva","circularVariants","ProgressLabel","forwardRef","children","className","props","ref","t","i18n","useTranslation","defaultText","jsx","ProgressValue","text","ProgressRoot","id","value","max","shape","size","ariaLabel","ariaValueText","debouncePercent","disabled","rest","labelId","useId","barTrackRef","useRef","barFillRef","circTrackRef","circFillRef","lastAnnouncedPercentRef","isIndeterminate","clampedValue","targetPercent","hasMounted","setHasMounted","useState","useEffect","percent","useLayoutEffect","_a","r","offset","_b","trackEl","pct","last","rootRef","agentHandle","useMemo","v","clamped","useImperativeHandle","useAgentRegistration","fallbackAriaLabel","labelProps","stateProps","disabledProp","wrapperClass","ctxValue","fillClass","jsxs","viewBox","cx","cy","circumference","indeterminateDashOffset","initialDashOffset","svgClass","fillStrokeClass","Progress"],"mappings":";;;;;AAGO,MAAMA,KAA8C;AAAA,EACzD,IAAI;AAAA,EACJ,cAAc,CAAA;AAAA,EACd,OAAO,CAAA;AAAA,EACP,SAAS;AAAA,IACP,WAAW;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,aAAa;AAAA,MACb,QAAQ,CAACC,GAAQC,MAA4B;AAC3C,QAAAD,EAAO,SAASC,EAAK,KAAK;AAAA,MAC5B;AAAA,IAAA;AAAA,EACF;AAAA,EAEF,UAAU;AAAA,IACR,MAAM,EAAE,MAAM,kBAAkB,OAAO,WAAA;AAAA,IACvC,YAAY;AAAA,MACV,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ,GCwBMC,IAAcC,GAA2C,IAAI;AAEnE,SAASC,IAAuC;AAC9C,QAAMC,IAAMC,GAAWJ,CAAW;AAClC,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,wDAAwD;AAC1E,SAAOA;AACT;AAIA,MAAME,IAAS;AAAA,EACb,IAAI,EAAE,SAAS,aAAa,IAAI,IAAI,IAAI,IAAI,GAAG,GAAA;AAAA,EAC/C,IAAI,EAAE,SAAS,aAAa,IAAI,IAAI,IAAI,IAAI,GAAG,GAAA;AAAA,EAC/C,IAAI,EAAE,SAAS,aAAa,IAAI,IAAI,IAAI,IAAI,GAAG,GAAA;AACjD,GAIMC,KAAmBC;AAAA,EACvB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM,EAAE,IAAI,UAAU,IAAI,UAAU,IAAI,SAAA;AAAA,IAAS;AAAA,IAEnD,iBAAiB,EAAE,MAAM,KAAA;AAAA,EAAK;AAElC,GAEMC,IAAmBD,EAAI,IAAI;AAAA,EAC/B,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EACN;AAAA,EAEF,iBAAiB,EAAE,MAAM,KAAA;AAC3B,CAAC,GAIKE,IAAgBC,EAGpB,CAAC,EAAE,UAAAC,GAAU,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAAQ;AAC5C,QAAMX,IAAMD,EAAA,GACN,EAAE,GAAAa,GAAG,MAAAC,EAAA,IAASC,EAAA,GAEdC,IAAcf,EAAI,kBACpBY,EAAE,kBAAkB,YAAY,IAChCA,EAAE,yBAAyB;AAAA,IACzB,SAAS,IAAI,KAAK,aAAaC,EAAK,UAAU;AAAA,MAC5C,OAAO;AAAA,MACP,uBAAuB;AAAA,IAAA,CACxB,EAAE,QAAQb,EAAI,SAAS,KAAKA,EAAI,GAAG;AAAA,EAAA,CACrC;AAEL,SACE,gBAAAgB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAL;AAAA,MACA,IAAIX,EAAI;AAAA,MACR,WAAW,CAAC,iCAAiCS,CAAS,EACnD,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACV,GAAGC;AAAA,MAEH,UAAAF,KAAYO;AAAA,IAAA;AAAA,EAAA;AAGnB,CAAC;AACDT,EAAc,cAAc;AAI5B,MAAMW,IAAgBV,EAGpB,CAAC,EAAE,WAAAE,GAAW,GAAGC,EAAA,GAASC,MAAQ;AAClC,QAAMX,IAAMD,EAAA,GACN,EAAE,GAAAa,GAAG,MAAAC,EAAA,IAASC,EAAA,GAEdI,IAAOlB,EAAI,kBACbY,EAAE,kBAAkB,YAAY,IAChC,IAAI,KAAK,aAAaC,EAAK,UAAU;AAAA,IACnC,OAAO;AAAA,IACP,uBAAuB;AAAA,EAAA,CACxB,EAAE,QAAQb,EAAI,SAAS,KAAKA,EAAI,GAAG;AAExC,SACE,gBAAAgB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAL;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACAF;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACV,GAAGC;AAAA,MAEH,UAAAQ;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;AACDD,EAAc,cAAc;AAI5B,MAAME,IAAeZ;AAAA,EACnB,CACE;AAAA,IACE,IAAAa;AAAA,IACA,OAAAC;AAAA,IACA,KAAAC,IAAM;AAAA,IACN,OAAAC,IAAQ;AAAA,IACR,MAAAC,IAAO;AAAA,IACP,WAAAC;AAAA,IACA,eAAAC;AAAA,IACA,iBAAAC,IAAkB;AAAA,IAClB,UAAAC,IAAW;AAAA,IACX,WAAAnB;AAAA,IACA,UAAAD;AAAA,IACA,GAAGqB;AAAA,EAAA,GAELlB,OACG;AACH,UAAMmB,IAAUC,GAAA,GACV,EAAE,GAAAnB,GAAG,MAAAC,GAAA,IAASC,EAAA,GACdkB,IAAcC,EAAuB,IAAI,GACzCC,IAAaD,EAAuB,IAAI,GACxCE,IAAeF,EAAsB,IAAI,GACzCG,IAAcH,EAAyB,IAAI,GAE3CI,IAA0BJ,EAAsB,IAAI,GAEpDK,IAAkBjB,MAAU,QAC5BkB,IAAeD,IACjB,SACA,KAAK,IAAIhB,GAAK,KAAK,IAAI,GAAGD,CAAK,CAAC,GAC9BmB,KACJD,MAAiB,SAAaA,IAAejB,IAAO,MAAM,QAUtD,CAACmB,IAAYC,EAAa,IAAIC,GAAS,EAAK;AAClD,IAAAC,GAAU,MAAM;AACd,MAAAF,GAAc,EAAI;AAAA,IACpB,GAAG,CAAA,CAAE;AACL,UAAMG,IAAUJ,MAAcH,IAAkBE,KAAgB;AAGhE,IAAAM,EAAgB,MAAM;;AACpB,UAAI,EAAAR,KAAmBO,MAAY;AAEnC,YAAItB,MAAU;AACZ,WAAAwB,IAAAb,EAAW,YAAX,QAAAa,EAAoB,MAAM;AAAA,YACxB;AAAA,YACA,OAAOF,CAAO;AAAA;AAAA,aAEX;AACL,gBAAM,EAAE,GAAAG,MAAM9C,EAAOsB,CAAI,GAEnByB,IADgB,IAAI,KAAK,KAAKD,KACJ,IAAIH,IAAU;AAC9C,WAAAK,IAAAd,EAAY,YAAZ,QAAAc,EAAqB,MAAM;AAAA,YACzB;AAAA,YACA,OAAOD,CAAM;AAAA;AAAA,QAEjB;AAAA,IACF,GAAG,CAACX,GAAiBO,GAAStB,GAAOC,CAAI,CAAC,GAG1CsB,EAAgB,MAAM;AACpB,YAAMK,IACJ5B,MAAU,QAAQS,EAAY,UAAUG,EAAa;AACvD,UAAI,CAACgB,EAAS;AAEd,UAAIb,GAAiB;AACnB,QAAAa,EAAQ,gBAAgB,eAAe,GACvCd,EAAwB,UAAU;AAClC;AAAA,MACF;AACA,UAAIE,MAAiB,OAAW;AAEhC,YAAMa,IAAOb,IAAejB,IAAO,KAC7B+B,IAAOhB,EAAwB;AAErC,OADcgB,MAAS,OAAO,QAAW,KAAK,IAAID,IAAMC,CAAI,MAC/C1B,MACXwB,EAAQ,aAAa,iBAAiB,OAAOZ,CAAY,CAAC,GAC1DF,EAAwB,UAAUe;AAAA,IAEtC,GAAG,CAACd,GAAiBC,GAAcjB,GAAKK,GAAiBJ,CAAK,CAAC;AAG/D,UAAM+B,IAAUrB,EAAuB,IAAI,GAErCsB,IAAcC;AAAA,MAClB,OAAO;AAAA,QACL,UAAU,CAACC,MAAc;;AACvB,gBAAMC,IAAU,KAAK,IAAIpC,GAAK,KAAK,IAAI,GAAGmC,CAAC,CAAC,GACtCL,IAAOM,IAAUpC,IAAO;AAE9B,cAAIC,MAAU;AACZ,aAAAwB,IAAAb,EAAW,YAAX,QAAAa,EAAoB,MAAM;AAAA,cACxB;AAAA,cACA,OAAOK,CAAG;AAAA;AAAA,eAEP;AACL,kBAAM,EAAE,GAAAJ,OAAM9C,EAAOsB,CAAI,GAEnByB,KADgB,IAAI,KAAK,KAAKD,MACJ,IAAII,IAAM;AAC1C,aAAAF,IAAAd,EAAY,YAAZ,QAAAc,EAAqB,MAAM;AAAA,cACzB;AAAA,cACA,OAAOD,EAAM;AAAA;AAAA,UAEjB;AAEA,gBAAME,IACJ5B,MAAU,QAAQS,EAAY,UAAUG,EAAa,SACjDkB,IAAOhB,EAAwB;AAErC,WADcgB,MAAS,OAAO,QAAW,KAAK,IAAID,IAAMC,CAAI,MAC/C1B,KAAmBwB,MAC9BA,EAAQ,aAAa,iBAAiB,OAAOO,CAAO,CAAC,GACrDrB,EAAwB,UAAUe;AAAA,QAEtC;AAAA,MAAA;AAAA,MAEF,CAAC9B,GAAKC,GAAOC,GAAMG,CAAe;AAAA,IAAA;AAEpC,IAAAgC,GAAoBhD,IAAK,MAAM4C,GAAa,CAACA,CAAW,CAAC,GACzDK,GAAqBlE,IAAe6D,GAAanC,CAAE;AAMnD,UAAMyC,KAAoBvB,IACtB1B,EAAE,kBAAkB,YAAY,IAChCA,EAAE,yBAAyB;AAAA,MACzB,SAAS,IAAI,KAAK,aAAaC,GAAK,UAAU;AAAA,QAC5C,OAAO;AAAA,QACP,uBAAuB;AAAA,MAAA,CACxB,EAAE,QAAQ0B,KAAgB,KAAKjB,CAAG;AAAA,IAAA,CACpC,GAECwC,IAAarC,IACf,EAAE,cAAcA,MAChB,EAAE,mBAAmBK,GAAS,cAAc+B,GAAA,GAE1CE,IAAazB,IACf,EAAE,aAAa,IAAe,iBAAiB,GAAG,iBAAiBhB,MACnE;AAAA,MACE,iBAAiB;AAAA,MACjB,iBAAiBA;AAAA,MACjB,GAAII,IAAgB,EAAE,kBAAkBA,MAAkB,CAAA;AAAA,IAAC,GAG3DsC,IAAepC,IAAW,EAAE,iBAAiB,GAAA,IAAkB,CAAA,GAE/DqC,IAAe;AAAA,MACnB;AAAA,MACArC,KAAY;AAAA,MACZnB;AAAA,IAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAELyD,IAAiC;AAAA,MACrC,SAAApC;AAAA,MACA,iBAAAQ;AAAA,MACA,OAAOC;AAAA,MACP,KAAAjB;AAAA,IAAA;AAIF,QAAIC,MAAU,OAAO;AACnB,YAAM4C,IAAY7B,IACd;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,EACA,KAAK,GAAG,IACV;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,EACA,KAAK,GAAG;AAEd,aACE,gBAAAtB,EAACnB,EAAY,UAAZ,EAAqB,OAAOqE,GAC3B,UAAA,gBAAAE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAKd;AAAA,UACL,WAAWW;AAAA,UACX,kBAAe;AAAA,UACf,qBAAmB7C;AAAA,UAClB,GAAGS;AAAA,UAEH,UAAA;AAAA,YAAArB;AAAA,YACD,gBAAAQ;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,KAAKgB;AAAA,gBACL,MAAK;AAAA,gBACJ,GAAG8B;AAAA,gBACH,GAAGC;AAAA,gBACH,GAAGC;AAAA,gBACJ,WAAW7D,GAAiB,EAAE,MAAAqB,GAAM;AAAA,gBAEpC,UAAA,gBAAAR,EAAC,OAAA,EAAI,KAAKkB,GAAY,WAAWiC,EAAA,CAAW;AAAA,cAAA;AAAA,YAAA;AAAA,UAC9C;AAAA,QAAA;AAAA,MAAA,GAEJ;AAAA,IAEJ;AAGA,UAAM,EAAE,SAAAE,IAAS,IAAAC,GAAI,IAAAC,GAAI,GAAAvB,EAAA,IAAM9C,EAAOsB,CAAI,GACpCgD,IAAgB,IAAI,KAAK,KAAKxB,GAC9ByB,KAA0BD,IAAgB,MAI1CE,KAAoBpC,IACtBmC,KACAD,GAEEG,KAAWrC,IACb;AAAA,MACEjC,EAAiB,EAAE,MAAAmB,GAAM;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,EACA,KAAK,GAAG,IACV;AAAA,MACEnB,EAAiB,EAAE,MAAAmB,GAAM;AAAA,MACzB;AAAA,MACA;AAAA,IAAA,EACA,KAAK,GAAG,GAERoD,KAAkB;AAAA,MACtB;AAAA,MACA,CAACtC,KACC;AAAA,IAAA,EAED,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,WACE,gBAAAtB,EAACnB,EAAY,UAAZ,EAAqB,OAAOqE,GAC3B,UAAA,gBAAAE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKd;AAAA,QACL,WAAWW;AAAA,QACX,kBAAe;AAAA,QACd,GAAGpC;AAAA,QAEH,UAAA;AAAA,UAAArB;AAAA,UACD,gBAAA4D;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAKjC;AAAA,cACL,MAAK;AAAA,cACJ,GAAG2B;AAAA,cACH,GAAGC;AAAA,cACH,GAAGC;AAAA,cACJ,SAAAK;AAAA,cACA,WAAWM;AAAA,cAEX,UAAA;AAAA,gBAAA,gBAAA3D;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,IAAAsD;AAAA,oBACA,IAAAC;AAAA,oBACA,GAAAvB;AAAA,oBACA,MAAK;AAAA,oBACL,iBAAiBwB;AAAA,oBACjB,WAAU;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEZ,gBAAAxD;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,KAAKoB;AAAA,oBACL,IAAAkC;AAAA,oBACA,IAAAC;AAAA,oBACA,GAAAvB;AAAA,oBACA,MAAK;AAAA,oBACL,eAAc;AAAA,oBACd,iBAAiBwB;AAAA,oBACjB,kBAAkBE;AAAA,oBAClB,WAAWE;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACb;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,EAEJ;AACF;AAEAzD,EAAa,cAAc;AAIpB,MAAM0D,KAAW,OAAO,OAAO1D,GAAc;AAAA,EAClD,OAAOb;AAAA,EACP,OAAOW;AACT,CAAC;"}
|
|
@@ -82,10 +82,10 @@ const oe = q(function({
|
|
|
82
82
|
const { t: S, i18n: H } = Q(), _ = X(), { resolvedTheme: N } = Y(), w = u(null), a = u(null), c = u(null), [$, h] = E(""), v = B ?? _.id, A = k ? `${v}-error` : void 0, O = [_.describedBy, A].filter(Boolean).join(" ") || void 0, x = g ?? (N.startsWith("dark") ? "dark" : "light"), I = b ?? H.language, e = u(p), y = u(r), o = u(T);
|
|
83
83
|
e.current = p, y.current = r, o.current = T;
|
|
84
84
|
const W = S(
|
|
85
|
-
"
|
|
85
|
+
"inputs.recaptcha.expired",
|
|
86
86
|
"Verification expired — please retry."
|
|
87
87
|
), P = S(
|
|
88
|
-
"
|
|
88
|
+
"inputs.recaptcha.error",
|
|
89
89
|
"Verification failed — please retry."
|
|
90
90
|
);
|
|
91
91
|
G(() => {
|
|
@@ -189,4 +189,4 @@ export {
|
|
|
189
189
|
oe as R,
|
|
190
190
|
z as r
|
|
191
191
|
};
|
|
192
|
-
//# sourceMappingURL=recaptcha-widget-
|
|
192
|
+
//# sourceMappingURL=recaptcha-widget-Kp1XntuE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recaptcha-widget-Kp1XntuE.js","sources":["../../src/components/recaptcha-widget/recaptcha-widget.agent.ts","../../src/components/recaptcha-widget/recaptcha-widget.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — RecaptchaWidget. */\n/* */\n/* Recaptcha already exposes a curated `RecaptchaWidgetHandle` via */\n/* useImperativeHandle. The adapter wires `execute` (issue token, write) */\n/* and `reset` (clear token, destructive) into that existing handle. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { RecaptchaWidgetHandle } from './recaptcha-widget';\n\nexport const recaptchaWidgetAgent: AgentAdapter<RecaptchaWidgetHandle> = {\n id: 'recaptcha-widget',\n capabilities: ['submit'],\n state: {\n hasToken: {\n type: 'boolean',\n descriptionKey: 'ui.agent.recaptchaWidget.state.hasToken',\n description:\n 'True when the widget currently holds a valid verification token.',\n read: (handle) => handle.getResponse().length > 0,\n },\n },\n actions: {\n execute: {\n safety: 'write',\n descriptionKey: 'ui.agent.recaptchaWidget.actions.execute',\n description:\n 'Programmatically trigger the captcha challenge. Issues a token via the callback.',\n invoke: (handle) => {\n handle.execute();\n },\n },\n reset: {\n safety: 'destructive',\n descriptionKey: 'ui.agent.recaptchaWidget.actions.reset',\n description:\n 'Clear the current token and re-roll the captcha. Irreversible.',\n invoke: (handle) => {\n handle.reset();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'recaptcha-widget',\n description: 'Marks the RecaptchaWidget wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description:\n 'Sourced from the id prop (or the surrounding FormField id).',\n },\n },\n};\n","import {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useFormField } from '../form-field/form-field-context';\nimport { useTheme } from '../../hooks';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { recaptchaWidgetAgent } from './recaptcha-widget.agent';\n\n/* ------------------------------------------------------------------ */\n/* Loader — idempotent across instances */\n/* ------------------------------------------------------------------ */\n\n/**\n * Google reCAPTCHA v2 ships as a global `grecaptcha` object loaded from\n * `https://www.google.com/recaptcha/api.js`. We lazy-load the script\n * once per page using a shared promise so N widgets on the same form\n * (or N renders of a single widget) all wait on the same fetch.\n *\n * The `?render=explicit` query parameter is required so we control\n * when each widget mounts via `grecaptcha.render`, rather than letting\n * the global auto-bind to every `.g-recaptcha` div on the page.\n */\nconst SCRIPT_SRC = 'https://www.google.com/recaptcha/api.js';\nconst SCRIPT_ID = 'alfadocs-ui-recaptcha-loader';\n\ninterface RecaptchaApi {\n render: (\n container: HTMLElement,\n parameters: {\n sitekey: string;\n theme?: 'light' | 'dark';\n size?: 'normal' | 'compact' | 'invisible';\n hl?: string;\n callback?: (token: string) => void;\n 'expired-callback'?: () => void;\n 'error-callback'?: () => void;\n },\n ) => number;\n reset: (widgetId?: number) => void;\n getResponse: (widgetId?: number) => string;\n execute: (widgetId?: number) => void;\n}\n\ndeclare global {\n interface Window {\n grecaptcha?: RecaptchaApi;\n ___grecaptchaOnLoad___?: () => void;\n }\n}\n\nlet loaderPromise: Promise<RecaptchaApi> | null = null;\n\nfunction loadRecaptcha(hl: string | undefined): Promise<RecaptchaApi> {\n if (typeof window === 'undefined') {\n return Promise.reject(new Error('recaptcha: window is not available'));\n }\n if (window.grecaptcha && typeof window.grecaptcha.render === 'function') {\n return Promise.resolve(window.grecaptcha);\n }\n if (loaderPromise) {\n return loaderPromise;\n }\n\n loaderPromise = new Promise<RecaptchaApi>((resolve, reject) => {\n const existing = document.getElementById(\n SCRIPT_ID,\n ) as HTMLScriptElement | null;\n\n const onReady = () => {\n if (window.grecaptcha && typeof window.grecaptcha.render === 'function') {\n resolve(window.grecaptcha);\n } else {\n reject(new Error('recaptcha: grecaptcha global missing after load'));\n }\n };\n\n window.___grecaptchaOnLoad___ = onReady;\n\n if (existing) {\n // Another instance kicked off the load — wait for the global\n // onload callback we just (re)installed.\n return;\n }\n\n const params = new URLSearchParams({\n onload: '___grecaptchaOnLoad___',\n render: 'explicit',\n });\n if (hl) params.set('hl', hl);\n\n const script = document.createElement('script');\n script.id = SCRIPT_ID;\n script.src = `${SCRIPT_SRC}?${params.toString()}`;\n script.async = true;\n script.defer = true;\n script.onerror = () => {\n loaderPromise = null;\n reject(new Error('recaptcha: script failed to load'));\n };\n document.head.appendChild(script);\n });\n\n return loaderPromise;\n}\n\n/* ------------------------------------------------------------------ */\n/* Public API */\n/* ------------------------------------------------------------------ */\n\nexport interface RecaptchaWidgetHandle {\n /** Re-roll the captcha — clears the response token. */\n reset: () => void;\n /** Returns the current response token, or empty string when unsolved. */\n getResponse: () => string;\n /** Programmatically trigger an invisible captcha challenge. */\n execute: () => void;\n}\n\nexport interface RecaptchaWidgetProps {\n /** Google reCAPTCHA v2 site key. Required. */\n siteKey: string;\n /**\n * Visual theme. Defaults to the resolved DS theme (`useTheme`).\n * Pass `'light'` / `'dark'` to force.\n */\n theme?: 'light' | 'dark';\n /** Two-letter locale hint. Defaults to the current i18next language. */\n locale?: string;\n /** Widget size. */\n size?: 'normal' | 'compact' | 'invisible';\n /** Called with the verification token, or `null` when expired/reset. */\n onChange?: (token: string | null) => void;\n /** Called when the user solves but the token then times out. */\n onExpired?: () => void;\n /** Called when the script or challenge errors out. */\n onError?: () => void;\n /** Error message — wires aria-describedby + announces via the live region. */\n error?: string;\n /** Override the DOM id; defaults to the surrounding FormField id. */\n id?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport const RecaptchaWidget = forwardRef<\n RecaptchaWidgetHandle,\n RecaptchaWidgetProps\n>(function RecaptchaWidget(\n {\n siteKey,\n theme,\n locale,\n size = 'normal',\n onChange,\n onExpired,\n onError,\n error,\n id,\n className,\n },\n ref,\n) {\n const { t, i18n } = useTranslation();\n const formField = useFormField();\n const { resolvedTheme } = useTheme();\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n const widgetIdRef = useRef<number | null>(null);\n const apiRef = useRef<RecaptchaApi | null>(null);\n const [statusMessage, setStatusMessage] = useState<string>('');\n\n const wrapperId = id ?? formField.id;\n const errorId = error ? `${wrapperId}-error` : undefined;\n const describedBy =\n [formField.describedBy, errorId].filter(Boolean).join(' ') || undefined;\n\n // Mirror the DS theme into reCAPTCHA's two-tone setting.\n const effectiveTheme: 'light' | 'dark' =\n theme ?? (resolvedTheme.startsWith('dark') ? 'dark' : 'light');\n const effectiveLocale = locale ?? i18n.language;\n\n // Stable callbacks via refs so we don't re-render the widget on\n // every parent state change.\n const onChangeRef = useRef(onChange);\n const onExpiredRef = useRef(onExpired);\n const onErrorRef = useRef(onError);\n onChangeRef.current = onChange;\n onExpiredRef.current = onExpired;\n onErrorRef.current = onError;\n\n const expiredLabel = t(\n 'inputs.recaptcha.expired',\n 'Verification expired — please retry.',\n );\n const errorLabel = t(\n 'inputs.recaptcha.error',\n 'Verification failed — please retry.',\n );\n\n useEffect(() => {\n if (!siteKey || !containerRef.current) return;\n let cancelled = false;\n\n loadRecaptcha(effectiveLocale)\n .then((api) => {\n if (cancelled || !containerRef.current) return;\n apiRef.current = api;\n widgetIdRef.current = api.render(containerRef.current, {\n sitekey: siteKey,\n theme: effectiveTheme,\n size,\n hl: effectiveLocale,\n callback: (token) => {\n setStatusMessage('');\n onChangeRef.current?.(token);\n },\n 'expired-callback': () => {\n setStatusMessage(expiredLabel);\n onChangeRef.current?.(null);\n onExpiredRef.current?.();\n },\n 'error-callback': () => {\n setStatusMessage(errorLabel);\n onChangeRef.current?.(null);\n onErrorRef.current?.();\n },\n });\n })\n .catch(() => {\n if (cancelled) return;\n setStatusMessage(errorLabel);\n onErrorRef.current?.();\n });\n\n return () => {\n cancelled = true;\n // grecaptcha has no public destroy. The shared script stays\n // loaded; we reset the widget so its iframe stops listening.\n if (apiRef.current && widgetIdRef.current !== null) {\n try {\n apiRef.current.reset(widgetIdRef.current);\n } catch {\n /* widget id may already be invalid — safe to ignore. */\n }\n }\n };\n // Re-render the widget when the underlying configuration changes.\n }, [\n siteKey,\n effectiveTheme,\n effectiveLocale,\n size,\n expiredLabel,\n errorLabel,\n ]);\n\n const agentHandle = useMemo<RecaptchaWidgetHandle>(\n () => ({\n reset: () => {\n if (apiRef.current && widgetIdRef.current !== null) {\n apiRef.current.reset(widgetIdRef.current);\n setStatusMessage('');\n onChangeRef.current?.(null);\n }\n },\n getResponse: () => {\n if (apiRef.current && widgetIdRef.current !== null) {\n return apiRef.current.getResponse(widgetIdRef.current);\n }\n return '';\n },\n execute: () => {\n if (apiRef.current && widgetIdRef.current !== null) {\n apiRef.current.execute(widgetIdRef.current);\n }\n },\n }),\n [],\n );\n useImperativeHandle(ref, () => agentHandle, [agentHandle]);\n useAgentRegistration(recaptchaWidgetAgent, agentHandle, wrapperId);\n\n const liveMessage = error || statusMessage;\n // For invisible widgets the iframe is offscreen, so we mark the\n // wrapper as a non-visual badge. Otherwise the wrapper just hosts\n // the rendered iframe and contributes no interactive role itself.\n const wrapperRole = size === 'invisible' ? 'presentation' : undefined;\n\n return (\n <div\n className={[\n 'ds:inline-block',\n // Keep the iframe inside the wrapper's stacking context so\n // popovers etc. above the form continue to overlay correctly.\n 'ds:relative ds:isolate',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n data-component=\"recaptcha-widget\"\n data-component-id={wrapperId}\n data-size={size}\n role={wrapperRole}\n >\n <div\n ref={containerRef}\n id={wrapperId}\n // The class name is the canonical hook Google's verifier\n // looks for when the page form is submitted server-side. Some\n // Symfony / Laravel validators short-circuit when this class\n // is missing, so we render it even though we're using\n // grecaptcha.render explicitly.\n className=\"g-recaptcha\"\n data-sitekey={siteKey}\n data-theme={effectiveTheme}\n data-size={size}\n aria-describedby={describedBy}\n aria-invalid={error || formField.invalid ? true : undefined}\n />\n {/* Live announcement for expired / error states. Empty when the\n widget is healthy so SR users aren't spammed. */}\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"ds:sr-only\"\n >\n {liveMessage}\n </div>\n </div>\n );\n});\n"],"names":["recaptchaWidgetAgent","handle","SCRIPT_SRC","SCRIPT_ID","loaderPromise","loadRecaptcha","hl","resolve","reject","existing","onReady","params","script","RecaptchaWidget","forwardRef","siteKey","theme","locale","size","onChange","onExpired","onError","error","id","className","ref","t","i18n","useTranslation","formField","useFormField","resolvedTheme","useTheme","containerRef","useRef","widgetIdRef","apiRef","statusMessage","setStatusMessage","useState","wrapperId","errorId","describedBy","effectiveTheme","effectiveLocale","onChangeRef","onExpiredRef","onErrorRef","expiredLabel","errorLabel","useEffect","cancelled","api","token","_a","_b","agentHandle","useMemo","useImperativeHandle","useAgentRegistration","liveMessage","wrapperRole","jsxs","jsx"],"mappings":"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"}
|
|
@@ -328,7 +328,7 @@ const fe = ee(
|
|
|
328
328
|
h.current !== null && (cancelAnimationFrame(h.current), h.current = null), x.current && (clearTimeout(x.current), x.current = null);
|
|
329
329
|
const y = new Intl.NumberFormat(C.language, {
|
|
330
330
|
style: "percent"
|
|
331
|
-
}).format(t / 100), S = v("
|
|
331
|
+
}).format(t / 100), S = v("resizable.sizeAnnounce", { percent: y });
|
|
332
332
|
i ? l(S) : h.current = requestAnimationFrame(() => {
|
|
333
333
|
h.current = null, x.current = setTimeout(
|
|
334
334
|
() => l(S),
|
|
@@ -458,7 +458,7 @@ const fe = ee(
|
|
|
458
458
|
"aria-valuenow": Math.round(p[O] ?? 0),
|
|
459
459
|
"aria-valuetext": $(p[O] ?? 0),
|
|
460
460
|
"aria-controls": [o == null ? void 0 : o.id, D == null ? void 0 : D.id].filter(Boolean).join(" ") || void 0,
|
|
461
|
-
"aria-label": v("
|
|
461
|
+
"aria-label": v("resizable.resizeLabel"),
|
|
462
462
|
"data-dragging": d ? "" : void 0,
|
|
463
463
|
className: Me({ orientation: q, className: u }),
|
|
464
464
|
onPointerDown: j,
|
|
@@ -480,4 +480,4 @@ export {
|
|
|
480
480
|
Re as r,
|
|
481
481
|
le as u
|
|
482
482
|
};
|
|
483
|
-
//# sourceMappingURL=resizable-
|
|
483
|
+
//# sourceMappingURL=resizable-COV-cnth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resizable-COV-cnth.js","sources":["../../src/components/resizable/resizable-context.ts","../../src/components/resizable/resizable.agent.ts","../../src/components/resizable/resizable.tsx"],"sourcesContent":["import {\n createContext,\n useContext,\n type MutableRefObject,\n type RefObject,\n} from 'react';\n\nexport interface PanelConfig {\n id: string;\n index: number;\n defaultSize: number;\n minSize: number;\n maxSize: number;\n collapsible: boolean;\n collapsedSize: number;\n}\n\nexport interface ResizableContextShape {\n direction: 'horizontal' | 'vertical';\n sizes: number[];\n liveSizesRef: MutableRefObject<number[]>;\n panels: PanelConfig[];\n groupRef: RefObject<HTMLDivElement>;\n updateSizesImperative: (newSizes: number[]) => void;\n commitSizes: (newSizes: number[]) => void;\n registerPanelElement: (index: number, el: HTMLDivElement) => void;\n unregisterPanelElement: (index: number) => void;\n setAnnounceText: (text: string) => void;\n}\n\nexport const ResizableContext = createContext<ResizableContextShape | null>(\n null,\n);\n\nexport function useResizable(): ResizableContextShape {\n const ctx = useContext(ResizableContext);\n if (!ctx) {\n throw new Error('useResizable must be used within a PanelGroup');\n }\n return ctx;\n}\n","/* -------------------------------------------------------------------- */\n/* Agent adapter — Resizable. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { ResizableHandle } from './resizable';\n\nexport const resizableAgent: AgentAdapter<ResizableHandle> = {\n id: 'resizable',\n capabilities: ['range_navigate'],\n state: {\n sizes: {\n type: 'number[]',\n description: 'Current per-panel sizes as percentages of the group.',\n read: (handle) => handle.getSizes(),\n },\n },\n actions: {\n set_sizes: {\n safety: 'read',\n argsType: '{ sizes: number[] }',\n description: 'Replace the panel sizes (percentages, summing to 100).',\n invoke: (handle, args: { sizes: number[] }) => {\n handle.setSizes(args.sizes);\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'resizable' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop on PanelGroup.',\n },\n item: {\n attr: 'data-panel-id',\n description:\n 'Each Panel forwards its `id` to react-resizable-panels which emits it as `data-panel-id`.',\n },\n },\n};\n","import {\n Children,\n cloneElement,\n forwardRef,\n isValidElement,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type MutableRefObject,\n type PointerEvent as ReactPointerEvent,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport {\n ResizableContext,\n useResizable,\n type PanelConfig,\n} from './resizable-context';\nimport { useAgentRegistration } from '../../agent';\nimport { resizableAgent } from './resizable.agent';\n\n// ─── storage ──────────────────────────────────────────────────────────────────\n\nconst STORAGE_PREFIX = 'ui-kit:resizable:';\n\nfunction loadFromStorage(groupId: string | undefined): number[] | null {\n if (!groupId) return null;\n try {\n const raw = localStorage.getItem(`${STORAGE_PREFIX}${groupId}`);\n if (!raw) return null;\n const parsed = JSON.parse(raw) as { v: number; sizes: number[] };\n if (parsed.v !== 1 || !Array.isArray(parsed.sizes)) return null;\n return parsed.sizes;\n } catch {\n return null;\n }\n}\n\nfunction saveToStorage(groupId: string, sizes: number[]): void {\n try {\n localStorage.setItem(\n `${STORAGE_PREFIX}${groupId}`,\n JSON.stringify({ v: 1, sizes }),\n );\n } catch {\n // QuotaExceeded or private mode\n }\n}\n\n// ─── size helpers ─────────────────────────────────────────────────────────────\n\nfunction normalizeSizes(raw: number[]): number[] {\n const total = raw.reduce((a, b) => a + b, 0);\n if (total === 0) return raw.map(() => 100 / raw.length);\n return raw.map((s) => (s / total) * 100);\n}\n\nfunction computeNewSizes(\n currentSizes: number[],\n handleIndex: number,\n deltaPercent: number,\n panels: PanelConfig[],\n groupSizePx: number,\n): number[] {\n const sizes = [...currentSizes];\n const li = handleIndex;\n const ri = handleIndex + 1;\n if (li >= sizes.length || ri >= sizes.length) return sizes;\n\n const lc = panels[li];\n const rc = panels[ri];\n const total = sizes[li] + sizes[ri];\n const collapseThreshold = groupSizePx > 0 ? (20 / groupSizePx) * 100 : 2;\n\n let newLeft = sizes[li] + deltaPercent;\n let newRight = total - newLeft;\n\n if (lc.collapsible && newLeft < lc.minSize) {\n if (newLeft < lc.minSize - collapseThreshold) {\n sizes[li] = lc.collapsedSize;\n sizes[ri] = total - lc.collapsedSize;\n return sizes;\n }\n newLeft = lc.minSize;\n newRight = total - newLeft;\n }\n\n if (rc.collapsible && newRight < rc.minSize) {\n if (newRight < rc.minSize - collapseThreshold) {\n sizes[ri] = rc.collapsedSize;\n sizes[li] = total - rc.collapsedSize;\n return sizes;\n }\n newRight = rc.minSize;\n newLeft = total - newRight;\n }\n\n const lMin = lc.collapsible ? lc.collapsedSize : lc.minSize;\n const rMin = rc.collapsible ? rc.collapsedSize : rc.minSize;\n\n newLeft = Math.max(lMin, Math.min(lc.maxSize, newLeft));\n newRight = total - newLeft;\n newRight = Math.max(rMin, Math.min(rc.maxSize, newRight));\n newLeft = total - newRight;\n newLeft = Math.max(lMin, Math.min(lc.maxSize, newLeft));\n\n sizes[li] = Math.max(0, newLeft);\n sizes[ri] = Math.max(0, total - sizes[li]);\n return sizes;\n}\n\n// ─── Handle CVA ──────────────────────────────────────────────────────────────\n// calc with underscores for Tailwind arbitrary value spaces\n// Extends hit area to --min-target-size via ::before pseudo-element\n\nconst handleVariants = cva(\n [\n 'ds:relative ds:flex ds:items-center ds:justify-center ds:shrink-0 ds:select-none',\n 'ds:bg-[var(--border)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:hover:bg-[var(--accent)] ds:data-[dragging]:bg-[var(--accent)]',\n \"ds:before:absolute ds:before:content-['']\",\n ],\n {\n variants: {\n orientation: {\n horizontal: [\n 'ds:[inline-size:var(--resizable-handle-size)] ds:cursor-col-resize ds:[block-size:100%]',\n 'ds:before:[block-size:100%]',\n 'ds:before:[inline-size:var(--min-target-size)]',\n 'ds:before:[inset-block:0]',\n 'ds:before:[inset-inline:calc(0px_-_(var(--min-target-size)_-_var(--resizable-handle-size))_/_2)]',\n ],\n vertical: [\n 'ds:[block-size:var(--resizable-handle-size)] ds:cursor-row-resize ds:[inline-size:100%]',\n 'ds:before:[inline-size:100%]',\n 'ds:before:[block-size:var(--min-target-size)]',\n 'ds:before:[inset-inline:0]',\n 'ds:before:[inset-block:calc(0px_-_(var(--min-target-size)_-_var(--resizable-handle-size))_/_2)]',\n ],\n },\n },\n defaultVariants: { orientation: 'horizontal' },\n },\n);\n\n// ─── PanelGroup CVA ──────────────────────────────────────────────────────────\n\nconst panelGroupVariants = cva('ds:flex ds:overflow-hidden', {\n variants: {\n direction: {\n horizontal: 'ds:flex-row',\n vertical: 'ds:flex-col',\n },\n },\n defaultVariants: { direction: 'horizontal' },\n});\n\n// ─── Panel CVA ────────────────────────────────────────────────────────────────\n\nconst panelVariants = cva(\n 'ds:[flex:0_0_var(--panel-self-size,50%)] ds:overflow-auto',\n {\n variants: {\n direction: {\n horizontal: 'ds:[min-inline-size:0]',\n vertical: 'ds:[min-block-size:0]',\n },\n },\n defaultVariants: { direction: 'horizontal' },\n },\n);\n\n// ─── Public types ─────────────────────────────────────────────────────────────\n\nexport interface PanelGroupProps {\n direction: 'horizontal' | 'vertical';\n groupId?: string;\n /** Opaque instance id — emitted as `data-component-id` for the agent registry. */\n id?: string;\n onLayout?: (sizes: number[]) => void;\n className?: string;\n children: ReactNode;\n}\n\n// Curated agent-readiness handle — see resizable.agent.ts.\nexport interface ResizableHandle {\n getSizes: () => number[];\n setSizes: (sizes: number[]) => void;\n}\n\nexport interface PanelHandle {\n resize: (size: number) => void;\n}\n\nexport interface PanelProps {\n defaultSize: number;\n minSize?: number;\n maxSize?: number;\n collapsible?: boolean;\n collapsedSize?: number;\n className?: string;\n children?: ReactNode;\n}\n\nexport interface HandleProps {\n className?: string;\n}\n\n// Internal injection (not exported)\ntype PanelInternalProps = PanelProps & {\n _panelIndex?: number;\n _panelId?: string;\n};\n\ntype HandleInternalProps = HandleProps & {\n _handleIndex?: number;\n};\n\n// ─── PanelGroup ───────────────────────────────────────────────────────────────\n\nexport const PanelGroup = forwardRef<HTMLDivElement, PanelGroupProps>(\n ({ direction, groupId, id, onLayout, className, children }, outerRef) => {\n const baseId = useId();\n const groupRef = useRef<HTMLDivElement>(null!);\n const panelElementsRef = useRef<Map<number, HTMLDivElement>>(new Map());\n const storageTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(\n null,\n );\n const [announceText, setAnnounceText] = useState('');\n\n // Walk children to extract panel configs and inject internal indices\n const { panelConfigs, processedChildren } = useMemo(() => {\n const configs: PanelConfig[] = [];\n let panelIdx = 0;\n let handleIdx = 0;\n\n const walk = (child: ReactNode): ReactNode => {\n if (!isValidElement(child)) return child;\n if (child.type === Panel) {\n const idx = panelIdx;\n const p = child.props as PanelProps;\n configs.push({\n id: `${baseId}-panel-${idx}`,\n index: idx,\n defaultSize: p.defaultSize,\n minSize: p.minSize ?? 10,\n maxSize: p.maxSize ?? 90,\n collapsible: p.collapsible ?? false,\n collapsedSize: p.collapsedSize ?? 0,\n });\n panelIdx++;\n return cloneElement(child as ReactElement<PanelInternalProps>, {\n _panelIndex: idx,\n _panelId: `${baseId}-panel-${idx}`,\n });\n }\n if (child.type === Handle) {\n const idx = handleIdx++;\n return cloneElement(child as ReactElement<HandleInternalProps>, {\n _handleIndex: idx,\n });\n }\n return child;\n };\n\n return {\n panelConfigs: configs,\n processedChildren: Children.map(children, walk),\n };\n }, [children, baseId]);\n\n // Initial sizes from storage or defaults\n const [committedSizes, setCommittedSizes] = useState<number[]>(() => {\n if (panelConfigs.length === 0) return [];\n const stored = loadFromStorage(groupId);\n if (stored && stored.length === panelConfigs.length) return stored;\n return normalizeSizes(panelConfigs.map((p) => p.defaultSize));\n });\n\n const liveSizesRef = useRef<number[]>(committedSizes);\n\n useEffect(() => {\n liveSizesRef.current = committedSizes;\n }, [committedSizes]);\n\n const updateSizesImperative = useCallback((newSizes: number[]) => {\n liveSizesRef.current = newSizes;\n panelElementsRef.current.forEach((el, idx) => {\n if (idx < newSizes.length) {\n el.style.setProperty('--panel-self-size', `${newSizes[idx]}%`);\n }\n });\n }, []);\n\n const commitSizes = useCallback(\n (newSizes: number[]) => {\n liveSizesRef.current = newSizes;\n setCommittedSizes(newSizes);\n onLayout?.(newSizes);\n if (groupId) {\n if (storageTimeoutRef.current)\n clearTimeout(storageTimeoutRef.current);\n storageTimeoutRef.current = setTimeout(\n () => saveToStorage(groupId, newSizes),\n 120,\n );\n }\n },\n [groupId, onLayout],\n );\n\n // Apply CSS vars to panel elements when committed sizes change\n useLayoutEffect(() => {\n panelElementsRef.current.forEach((el, idx) => {\n if (idx < committedSizes.length) {\n el.style.setProperty('--panel-self-size', `${committedSizes[idx]}%`);\n }\n });\n }, [committedSizes]);\n\n const registerPanelElement = useCallback(\n (index: number, el: HTMLDivElement) => {\n panelElementsRef.current.set(index, el);\n const size = liveSizesRef.current[index];\n if (size !== undefined) {\n el.style.setProperty('--panel-self-size', `${size}%`);\n }\n },\n [],\n );\n\n const unregisterPanelElement = useCallback((index: number) => {\n panelElementsRef.current.delete(index);\n }, []);\n\n const setAnnounceCb = useCallback((text: string) => {\n setAnnounceText(text);\n }, []);\n\n const containerClass = panelGroupVariants({ direction, className });\n\n const ctxValue = {\n direction,\n sizes: committedSizes,\n liveSizesRef,\n panels: panelConfigs,\n groupRef,\n updateSizesImperative,\n commitSizes,\n registerPanelElement,\n unregisterPanelElement,\n setAnnounceText: setAnnounceCb,\n };\n\n const setRef = (el: HTMLDivElement | null) => {\n (groupRef as MutableRefObject<HTMLDivElement | null>).current = el;\n if (typeof outerRef === 'function') outerRef(el);\n else if (outerRef) outerRef.current = el;\n };\n\n // Agent handle for the root PanelGroup.\n const agentHandle = useMemo<ResizableHandle>(\n () => ({\n getSizes: () => [...liveSizesRef.current],\n setSizes: (next) => commitSizes(normalizeSizes(next)),\n }),\n [commitSizes],\n );\n useAgentRegistration(resizableAgent, agentHandle, id);\n\n return (\n <ResizableContext.Provider value={ctxValue}>\n <div\n ref={setRef}\n className={containerClass}\n data-component=\"resizable\"\n data-component-id={id}\n data-panel-group\n data-direction={direction}\n >\n {processedChildren}\n <span className=\"ds:sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n {announceText}\n </span>\n </div>\n </ResizableContext.Provider>\n );\n },\n);\n\nPanelGroup.displayName = 'PanelGroup';\n\n// ─── Panel ────────────────────────────────────────────────────────────────────\n\nexport const Panel = forwardRef<PanelHandle, PanelInternalProps>(\n (\n {\n _panelIndex = 0,\n _panelId,\n minSize = 10,\n maxSize = 90,\n children,\n className,\n },\n ref,\n ) => {\n const {\n direction,\n liveSizesRef,\n panels,\n updateSizesImperative,\n commitSizes,\n registerPanelElement,\n unregisterPanelElement,\n } = useResizable();\n\n const panelRef = useRef<HTMLDivElement>(null!);\n\n useEffect(() => {\n const el = panelRef.current;\n if (!el) return;\n registerPanelElement(_panelIndex, el);\n return () => unregisterPanelElement(_panelIndex);\n }, [_panelIndex, registerPanelElement, unregisterPanelElement]);\n\n useImperativeHandle(\n ref,\n () => ({\n resize: (newSize: number) => {\n const currentSizes = [...liveSizesRef.current];\n const clamped = Math.max(minSize, Math.min(maxSize, newSize));\n const diff = clamped - (currentSizes[_panelIndex] ?? 0);\n if (Math.abs(diff) < 0.001) return;\n\n const newSizes = [...currentSizes];\n newSizes[_panelIndex] = clamped;\n\n const otherIndices = currentSizes\n .map((_, i) => i)\n .filter((i) => i !== _panelIndex);\n const otherTotal = otherIndices.reduce(\n (s, i) => s + (currentSizes[i] ?? 0),\n 0,\n );\n otherIndices.forEach((i) => {\n newSizes[i] =\n otherTotal > 0\n ? (currentSizes[i] ?? 0) -\n diff * ((currentSizes[i] ?? 0) / otherTotal)\n : (currentSizes[i] ?? 0) - diff / otherIndices.length;\n });\n\n updateSizesImperative(newSizes);\n commitSizes(newSizes);\n },\n }),\n [\n _panelIndex,\n minSize,\n maxSize,\n panels,\n liveSizesRef,\n updateSizesImperative,\n commitSizes,\n ],\n );\n\n return (\n <div\n ref={panelRef}\n id={_panelId}\n data-panel\n data-panel-index={_panelIndex}\n className={panelVariants({ direction, className })}\n >\n {children}\n </div>\n );\n },\n);\n\nPanel.displayName = 'Panel';\n\n// ─── Handle ───────────────────────────────────────────────────────────────────\n\nexport const Handle = forwardRef<HTMLDivElement, HandleInternalProps>(\n ({ _handleIndex = 0, className }, ref) => {\n const { t, i18n } = useTranslation();\n const {\n direction,\n sizes,\n liveSizesRef,\n panels,\n groupRef,\n updateSizesImperative,\n commitSizes,\n setAnnounceText,\n } = useResizable();\n\n const [isDragging, setIsDragging] = useState(false);\n const dragStateRef = useRef<{\n startX: number;\n startY: number;\n startSizes: number[];\n groupRect: DOMRect;\n } | null>(null);\n const announceTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(\n null,\n );\n const announceRafRef = useRef<number | null>(null);\n const handleRef = useRef<HTMLDivElement>(null!);\n\n const scheduleAnnounce = useCallback(\n (size: number, immediate = false) => {\n if (announceRafRef.current !== null) {\n cancelAnimationFrame(announceRafRef.current);\n announceRafRef.current = null;\n }\n if (announceTimeoutRef.current) {\n clearTimeout(announceTimeoutRef.current);\n announceTimeoutRef.current = null;\n }\n const formatted = new Intl.NumberFormat(i18n.language, {\n style: 'percent',\n }).format(size / 100);\n const text = t('resizable.sizeAnnounce', { percent: formatted });\n if (immediate) {\n setAnnounceText(text);\n } else {\n // rAF coalesces calls within the same frame; 200ms debounce prevents spam\n announceRafRef.current = requestAnimationFrame(() => {\n announceRafRef.current = null;\n announceTimeoutRef.current = setTimeout(\n () => setAnnounceText(text),\n 200,\n );\n });\n }\n },\n [t, i18n.language, setAnnounceText],\n );\n\n const isRtl = useCallback(() => {\n if (!groupRef.current) return false;\n return getComputedStyle(groupRef.current).direction === 'rtl';\n }, [groupRef]);\n\n const onPointerDown = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (!groupRef.current) return;\n e.currentTarget.setPointerCapture(e.pointerId);\n e.currentTarget.style.setProperty('touch-action', 'none');\n dragStateRef.current = {\n startX: e.clientX,\n startY: e.clientY,\n startSizes: [...liveSizesRef.current],\n groupRect: groupRef.current.getBoundingClientRect(),\n };\n setIsDragging(true);\n };\n\n const onPointerMove = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (!dragStateRef.current) return;\n const { startX, startY, startSizes, groupRect } = dragStateRef.current;\n const isHorizontal = direction === 'horizontal';\n const groupSize = isHorizontal ? groupRect.width : groupRect.height;\n if (groupSize === 0) return;\n\n const rawDelta = isHorizontal ? e.clientX - startX : e.clientY - startY;\n const effectiveDelta = isHorizontal && isRtl() ? -rawDelta : rawDelta;\n const percentDelta = (effectiveDelta / groupSize) * 100;\n\n const newSizes = computeNewSizes(\n startSizes,\n _handleIndex,\n percentDelta,\n panels,\n groupSize,\n );\n\n updateSizesImperative(newSizes);\n\n if (handleRef.current) {\n const rounded = Math.round(newSizes[_handleIndex]);\n handleRef.current.setAttribute('aria-valuenow', String(rounded));\n handleRef.current.setAttribute(\n 'aria-valuetext',\n new Intl.NumberFormat(i18n.language, { style: 'percent' }).format(\n rounded / 100,\n ),\n );\n }\n\n scheduleAnnounce(newSizes[_handleIndex]);\n };\n\n const onPointerUp = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (!dragStateRef.current) return;\n e.currentTarget.releasePointerCapture(e.pointerId);\n e.currentTarget.style.removeProperty('touch-action');\n dragStateRef.current = null;\n setIsDragging(false);\n const finalSizes = liveSizesRef.current;\n commitSizes(finalSizes);\n scheduleAnnounce(finalSizes[_handleIndex], true);\n };\n\n const onPointerCancel = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (!dragStateRef.current) return;\n e.currentTarget.releasePointerCapture(e.pointerId);\n e.currentTarget.style.removeProperty('touch-action');\n dragStateRef.current = null;\n setIsDragging(false);\n const finalSizes = liveSizesRef.current;\n commitSizes(finalSizes);\n };\n\n const onKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n const li = _handleIndex;\n const ri = _handleIndex + 1;\n if (li >= panels.length || ri >= panels.length) return;\n\n const lc = panels[li];\n const rc = panels[ri];\n const isHorizontal = direction === 'horizontal';\n const rtl = isHorizontal && isRtl();\n const step = e.shiftKey ? 10 : 1;\n const current = [...liveSizesRef.current];\n\n const growLeft = (amount = step): number[] | null => {\n const avail = Math.min(\n amount,\n lc.maxSize - current[li],\n current[ri] - (rc.collapsible ? rc.collapsedSize : rc.minSize),\n );\n if (avail <= 0) return null;\n const ns = [...current];\n ns[li] += avail;\n ns[ri] -= avail;\n return ns;\n };\n\n const shrinkLeft = (amount = step): number[] | null => {\n const lMin = lc.collapsible ? lc.collapsedSize : lc.minSize;\n const avail = Math.min(amount, current[li] - lMin);\n if (avail <= 0) return null;\n const ns = [...current];\n ns[li] -= avail;\n ns[ri] += avail;\n return ns;\n };\n\n let newSizes: number[] | null = null;\n\n switch (e.key) {\n case 'ArrowRight':\n if (!isHorizontal) break;\n e.preventDefault();\n newSizes = rtl ? shrinkLeft() : growLeft();\n break;\n case 'ArrowLeft':\n if (!isHorizontal) break;\n e.preventDefault();\n newSizes = rtl ? growLeft() : shrinkLeft();\n break;\n case 'ArrowDown':\n if (isHorizontal) break;\n e.preventDefault();\n newSizes = growLeft();\n break;\n case 'ArrowUp':\n if (isHorizontal) break;\n e.preventDefault();\n newSizes = shrinkLeft();\n break;\n case 'Home': {\n e.preventDefault();\n const lMin = lc.collapsible ? lc.collapsedSize : lc.minSize;\n const delta = current[li] - lMin;\n if (delta > 0) {\n const ns = [...current];\n ns[li] = lMin;\n ns[ri] += delta;\n newSizes = ns;\n }\n break;\n }\n case 'End': {\n e.preventDefault();\n const rMin = rc.collapsible ? rc.collapsedSize : rc.minSize;\n const avail = Math.min(lc.maxSize - current[li], current[ri] - rMin);\n if (avail > 0) {\n const ns = [...current];\n ns[li] += avail;\n ns[ri] -= avail;\n newSizes = ns;\n }\n break;\n }\n case 'Enter': {\n e.preventDefault();\n const panel = lc.collapsible ? lc : rc.collapsible ? rc : null;\n const pIdx = lc.collapsible ? li : rc.collapsible ? ri : -1;\n if (!panel || pIdx < 0) break;\n const partner = pIdx === li ? ri : li;\n const isCollapsed =\n Math.abs(current[pIdx] - panel.collapsedSize) < 0.5;\n const total = current[li] + current[ri];\n const ns = [...current];\n if (isCollapsed) {\n ns[pIdx] = panel.minSize;\n ns[partner] = total - panel.minSize;\n } else {\n ns[pIdx] = panel.collapsedSize;\n ns[partner] = total - panel.collapsedSize;\n }\n newSizes = ns;\n break;\n }\n default:\n break;\n }\n\n if (newSizes) {\n updateSizesImperative(newSizes);\n commitSizes(newSizes);\n scheduleAnnounce(newSizes[li], true);\n }\n };\n\n const li = _handleIndex;\n const ri = _handleIndex + 1;\n const leftPanel = panels[li];\n const rightPanel = panels[ri];\n const orientation =\n direction === 'horizontal'\n ? ('horizontal' as const)\n : ('vertical' as const);\n\n const formatValueText = (size: number) =>\n new Intl.NumberFormat(i18n.language, { style: 'percent' }).format(\n size / 100,\n );\n\n const setRefs = (el: HTMLDivElement | null) => {\n (handleRef as MutableRefObject<HTMLDivElement | null>).current = el;\n if (typeof ref === 'function') ref(el);\n else if (ref) ref.current = el;\n };\n\n return (\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- separator handle is keyboard-actionable via arrow keys to resize the adjacent panels\n <div\n ref={setRefs}\n role=\"separator\"\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex -- separator handle is keyboard-actionable via arrow keys to resize the adjacent panels\n tabIndex={0}\n aria-orientation={orientation}\n aria-valuemin={\n leftPanel\n ? leftPanel.collapsible\n ? leftPanel.collapsedSize\n : leftPanel.minSize\n : 0\n }\n aria-valuemax={leftPanel?.maxSize ?? 100}\n aria-valuenow={Math.round(sizes[li] ?? 0)}\n aria-valuetext={formatValueText(sizes[li] ?? 0)}\n aria-controls={\n [leftPanel?.id, rightPanel?.id].filter(Boolean).join(' ') || undefined\n }\n aria-label={t('resizable.resizeLabel')}\n data-dragging={isDragging ? '' : undefined}\n className={handleVariants({ orientation, className })}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerCancel={onPointerCancel}\n onKeyDown={onKeyDown}\n />\n );\n },\n);\n\nHandle.displayName = 'Handle';\n"],"names":["ResizableContext","createContext","useResizable","ctx","useContext","resizableAgent","handle","args","STORAGE_PREFIX","loadFromStorage","groupId","raw","parsed","saveToStorage","sizes","normalizeSizes","total","a","b","s","computeNewSizes","currentSizes","handleIndex","deltaPercent","panels","groupSizePx","li","ri","lc","rc","collapseThreshold","newLeft","newRight","lMin","rMin","handleVariants","cva","panelGroupVariants","panelVariants","PanelGroup","forwardRef","direction","id","onLayout","className","children","outerRef","baseId","useId","groupRef","useRef","panelElementsRef","storageTimeoutRef","announceText","setAnnounceText","useState","panelConfigs","processedChildren","useMemo","configs","panelIdx","handleIdx","walk","child","isValidElement","Panel","idx","p","cloneElement","Handle","Children","committedSizes","setCommittedSizes","stored","liveSizesRef","useEffect","updateSizesImperative","useCallback","newSizes","el","commitSizes","useLayoutEffect","registerPanelElement","index","size","unregisterPanelElement","setAnnounceCb","text","containerClass","ctxValue","setRef","agentHandle","next","useAgentRegistration","jsx","jsxs","_panelIndex","_panelId","minSize","maxSize","ref","panelRef","useImperativeHandle","newSize","clamped","diff","otherIndices","_","i","otherTotal","_handleIndex","t","i18n","useTranslation","isDragging","setIsDragging","dragStateRef","announceTimeoutRef","announceRafRef","handleRef","scheduleAnnounce","immediate","formatted","isRtl","onPointerDown","e","onPointerMove","startX","startY","startSizes","groupRect","isHorizontal","groupSize","rawDelta","percentDelta","rounded","onPointerUp","finalSizes","onPointerCancel","onKeyDown","rtl","step","current","growLeft","amount","avail","ns","shrinkLeft","delta","panel","pIdx","partner","isCollapsed","leftPanel","rightPanel","orientation","formatValueText"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { forwardRef as te, useState as _, useEffect as F, useRef as j, useMemo a
|
|
|
3
3
|
import { c as A } from "./index-D2ZczOXr.js";
|
|
4
4
|
import { useTranslation as U } from "react-i18next";
|
|
5
5
|
import * as q from "@radix-ui/react-popover";
|
|
6
|
-
import { S as oe } from "./search-input-
|
|
6
|
+
import { S as oe } from "./search-input-BBtSRH-Q.js";
|
|
7
7
|
import { u as W } from "./registry-C9nwlNyL.js";
|
|
8
8
|
import { n as O } from "./normalize-diacritics-BNGbFNlJ.js";
|
|
9
9
|
import { S as ie } from "./search-BonnQsHv.js";
|
|
@@ -582,4 +582,4 @@ export {
|
|
|
582
582
|
Ie as f,
|
|
583
583
|
J as s
|
|
584
584
|
};
|
|
585
|
-
//# sourceMappingURL=search-bar-
|
|
585
|
+
//# sourceMappingURL=search-bar-DmZZ9UvV.js.map
|