@alfadocs/ui-kit-debug 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{agenda-card-CalZqycc.js → agenda-card-DU13wUTA.js} +4 -4
- package/dist/_chunks/agenda-card-DU13wUTA.js.map +1 -0
- package/dist/_chunks/{agenda-tray-3ffFDQZC.js → agenda-tray-gQUXklO4.js} +9 -9
- package/dist/_chunks/agenda-tray-gQUXklO4.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-DUpWoPPk.js} +6 -6
- package/dist/_chunks/combobox-DUpWoPPk.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-BVbfiANR.js} +81 -81
- package/dist/_chunks/file-upload-BVbfiANR.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-CRIE2Cuk.js} +3 -3
- package/dist/_chunks/notification-card-CRIE2Cuk.js.map +1 -0
- package/dist/_chunks/{notification-tray-PGtMqXbP.js → notification-tray-CfXNYrxv.js} +21 -21
- package/dist/_chunks/notification-tray-CfXNYrxv.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-D4Np8ikf.js} +15 -15
- package/dist/_chunks/sparkline-D4Np8ikf.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-BaSULpSJ.js} +2 -2
- package/dist/_chunks/{timeline-BvmnQadS.js.map → timeline-BaSULpSJ.js.map} +1 -1
- 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-eVbolm0B.js} +2 -2
- package/dist/_chunks/{transaction-chip-DE6DITun.js.map → transaction-chip-eVbolm0B.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-B1M8lE2t.js} +29 -32
- package/dist/_chunks/use-password-requirements-B1M8lE2t.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/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/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/index.js +1 -1
- package/dist/components/color-picker/index.js +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/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-tray/index.js +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/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 +4 -3
- 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/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":"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"}
|
|
@@ -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
|