@qredence/fleet 0.6.1 → 0.6.2
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/CHANGELOG.md +11 -0
- package/dist/web/client/assets/agent-disclosure-CMrxF7L-.js +1 -0
- package/dist/web/client/assets/analytics-stub-C2vgmGm_.js +1 -0
- package/dist/web/client/assets/artifacts-panel-DmQghvw8.js +1 -0
- package/dist/web/client/assets/{bot-Bs7QWJ2q.js → bot-DbB9BKL0.js} +1 -1
- package/dist/web/client/assets/bundle-mjs-cJTHqqzI.js +1 -0
- package/dist/web/client/assets/button-Dl0ce3Y5.js +1 -0
- package/dist/web/client/assets/{card-DA3Vnqay.js → card-DCEnYd2G.js} +1 -1
- package/dist/web/client/assets/chat-C24kD2SP.js +52 -0
- package/dist/web/client/assets/chat-command-palette-BIwjhE6s.js +1 -0
- package/dist/web/client/assets/check-B3LlvM65.js +1 -0
- package/dist/web/client/assets/{chevron-down-BEVGmnSb.js → chevron-down-DUUprRP5.js} +1 -1
- package/dist/web/client/assets/chevron-right-NVqQIoiO.js +1 -0
- package/dist/web/client/assets/{chunk-YOKDWASO-BAf618wr.js → chunk-YOKDWASO-Bte3iwlH.js} +6 -6
- package/dist/web/client/assets/citations-BUvM92nt.js +1 -0
- package/dist/web/client/assets/collapsible-CUxOjhDJ.js +1 -0
- package/dist/web/client/assets/command-Dv96gATQ.js +1 -0
- package/dist/web/client/assets/createBaseUIEventDetails-B58Jldei.js +1 -0
- package/dist/web/client/assets/createLucideIcon-_dfI7Arx.js +1 -0
- package/dist/web/client/assets/dialog-BCb4rQh0.js +1 -0
- package/dist/web/client/assets/dist-52wg4XPY.js +1 -0
- package/dist/web/client/assets/dist-DbHxXSgQ.js +41 -0
- package/dist/web/client/assets/ease-CMumuPlX.js +1 -0
- package/dist/web/client/assets/{eye-B0DFz5hL.js → eye-CDHqtVoE.js} +1 -1
- package/dist/web/client/assets/file-text-TmalmYrb.js +1 -0
- package/dist/web/client/assets/{folder-BC5p7qK7.js → folder-vuNT4shY.js} +1 -1
- package/dist/web/client/assets/{fork-picker-dialog-B7NNpVmW.js → fork-picker-dialog-CpwEwsxA.js} +1 -1
- package/dist/web/client/assets/gauge-BsDqNM1A.js +1 -0
- package/dist/web/client/assets/globals-DCtBkCSD.css +2 -0
- package/dist/web/client/assets/{hard-drive-CHqgr7VQ.js → hard-drive-BT7UxHQu.js} +1 -1
- package/dist/web/client/assets/highlighted-body-KPVGNVTW-CgT7gqvs.js +1 -0
- package/dist/web/client/assets/horizontal-resize-VLjLByUV.js +1 -0
- package/dist/web/client/assets/index-BGnQeUYE.js +12 -0
- package/dist/web/client/assets/input-CxZp56Im.js +1 -0
- package/dist/web/client/assets/input-group-D7lAfKHR.js +1 -0
- package/dist/web/client/assets/ipython-tool-CkHaO3PW.js +3 -0
- package/dist/web/client/assets/is-ref-object-BcRWZ4l7.js +1 -0
- package/dist/web/client/assets/{loader-circle-DjfHXUPB.js → loader-circle-B5GIZGxd.js} +1 -1
- package/dist/web/client/assets/markdown-BHkByC9K.js +2 -0
- package/dist/web/client/assets/{markdown-code-xNyjdZ4g.js → markdown-code-CDTRq-HZ.js} +1 -1
- package/dist/web/client/assets/mermaid-HWGCJPDP-CY3N5ECk.js +1 -0
- package/dist/web/client/assets/message-queue-Dl8wbCOu.js +1 -0
- package/dist/web/client/assets/model-selector-list-CRZCXeBf.js +1 -0
- package/dist/web/client/assets/{notify-DxL0VD7Z.js → notify-DjVixft7.js} +1 -1
- package/dist/web/client/assets/{openui-renderer-TLNe5e_Q.js → openui-renderer-Bkkx5kmA.js} +37 -37
- package/dist/web/client/assets/{package-CdcJFPf2.js → package-BKBPgwMP.js} +1 -1
- package/dist/web/client/assets/{pencil-DcUwsKLn.js → pencil-CdO6qfv3.js} +1 -1
- package/dist/web/client/assets/{plug-Dt6VN0zF.js → plug-BRROUIw-.js} +1 -1
- package/dist/web/client/assets/prompt-input-WaGSKZCU.js +1 -0
- package/dist/web/client/assets/prompt-suggestions-BNyTcyWg.js +1 -0
- package/dist/web/client/assets/provider-catalog-C0XBIasJ.js +1 -0
- package/dist/web/client/assets/provider-label-Cka0ep0S.js +1 -0
- package/dist/web/client/assets/react-CwJFpaho.js +1 -0
- package/dist/web/client/assets/react-dom-DX3XddaT.js +1 -0
- package/dist/web/client/assets/{refresh-cw-IThTJ3j-.js → refresh-cw-l9WPHRkq.js} +1 -1
- package/dist/web/client/assets/repl-panel-L9dmPqio.js +1 -0
- package/dist/web/client/assets/{resource-helpers-Q2T0YCMO.js → resource-helpers-BuWybA8l.js} +1 -1
- package/dist/web/client/assets/resources-panel-mT-aMCvV.js +1 -0
- package/dist/web/client/assets/right-panel-context-CS8tJMzE.js +1 -0
- package/dist/web/client/assets/right-panel-registry-BCW7fQTG.js +2 -0
- package/dist/web/client/assets/{rotate-ccw-WNFNkKQD.js → rotate-ccw-CfGhzOv7.js} +1 -1
- package/dist/web/client/assets/routes-BWe5Iz-2.js +16 -0
- package/dist/web/client/assets/safe-external-url-BbAom7Bm.js +1 -0
- package/dist/web/client/assets/search-BjcXAUrI.js +1 -0
- package/dist/web/client/assets/session-insights-panel-B0rl37lo.js +1 -0
- package/dist/web/client/assets/session-reasoning-panel-8D2P7iaJ.js +1 -0
- package/dist/web/client/assets/session-tool-renderer-3E3cv8D0.js +1395 -0
- package/dist/web/client/assets/settings-dialog-B8lHq2tT.js +2 -0
- package/dist/web/client/assets/{skeleton-CkR2VmWc.js → skeleton-C3mo31Qu.js} +1 -1
- package/dist/web/client/assets/skeleton-loaders-BMa_G4yX.js +1 -0
- package/dist/web/client/assets/{shield-check-CkA2viVW.js → sparkles-D8XIY8pN.js} +1 -1
- package/dist/web/client/assets/square-DQaQu9bp.js +1 -0
- package/dist/web/client/assets/{square-terminal-BYTN_I86.js → square-terminal-BsopiuN7.js} +1 -1
- package/dist/web/client/assets/{subagent-chat-panel-oeLDPDAK.js → subagent-chat-panel-C5ukYiUx.js} +1 -1
- package/dist/web/client/assets/subagent-transcript-lqNcSVbH.js +1 -0
- package/dist/web/client/assets/subagents-panel-SJKhaVTr.js +1 -0
- package/dist/web/client/assets/{sun-BWiZFty0.js → sun-D0llhiMU.js} +1 -1
- package/dist/web/client/assets/surfaces-CpfsGAIA.js +1 -0
- package/dist/web/client/assets/switch-D3FhZU-S.js +1 -0
- package/dist/web/client/assets/terminal-BQAKkBY6.js +1 -0
- package/dist/web/client/assets/toast-lnCWGgSE.js +1 -0
- package/dist/web/client/assets/tokens-Ch5WqXC_.js +1 -0
- package/dist/web/client/assets/tool-result-B_yb2JoE.js +4 -0
- package/dist/web/client/assets/tool-timeline-VnMRQoLS.js +1 -0
- package/dist/web/client/assets/{triangle-alert-CU-gd7ui.js → triangle-alert-GAYh_5d3.js} +1 -1
- package/dist/web/client/assets/ui-preferences-aG2U2jjW.js +1 -0
- package/dist/web/client/assets/use-presence-7I2qv4qI.js +1 -0
- package/dist/web/client/assets/use-reduced-motion-BOcG709U.js +9 -0
- package/dist/web/client/assets/useBaseUiId-D9ZGPZ6f.js +1 -0
- package/dist/web/client/assets/useControlled-CgAAWIy9.js +1 -0
- package/dist/web/client/assets/utils-Brtgag-m.js +1 -0
- package/dist/web/client/assets/virtualized-turn-list-BgUgX6tM.js +6 -0
- package/dist/web/client/assets/workspace-panel-CKF5JQl2.js +1 -0
- package/dist/web/client/assets/workspace-path-nav-DqPbETfJ.js +2 -0
- package/dist/web/client/assets/{wrench-BJNNe07k.js → wrench-Myc12BTA.js} +1 -1
- package/dist/web/client/assets/x-BGsDD848.js +1 -0
- package/dist/web/client/bundle-budget.json +6 -6
- package/dist/web/server/_tanstack-start-manifest_v-BDPifIFN-DTSNCHBX.js +91 -0
- package/dist/web/server/{artifacts-panel-D3ySO--V-XSL53CXL.js → artifacts-panel-BN3DgqfV-N73J6N5Y.js} +39 -44
- package/dist/web/server/{chat-command-palette-kAbXhWVg-TJWXH2WW.js → chat-command-palette-G8awyZRw-2QE7FXGT.js} +18 -18
- package/dist/web/server/{chunk-SALXCFVO.js → chunk-33QA7BQJ.js} +19 -1
- package/dist/web/server/{chunk-5UCAJBAH.js → chunk-43S5N7SH.js} +80 -47
- package/dist/web/server/chunk-4EBSM4JR.js +74 -0
- package/dist/web/server/{chunk-ZIFSJ3HQ.js → chunk-4OTHKQMG.js} +185 -109
- package/dist/web/server/{chunk-NNKJTKOQ.js → chunk-6SOMNRAX.js} +309 -279
- package/dist/web/server/chunk-7E76R7MB.js +2138 -0
- package/dist/web/server/{chunk-EBG3XFGQ.js → chunk-7FK6YEMA.js} +49 -44
- package/dist/web/server/chunk-7HXCGBUP.js +56 -0
- package/dist/web/server/{chunk-P66QQWUM.js → chunk-7NZ3FJDA.js} +14 -1
- package/dist/web/server/{chunk-HF7DG7PC.js → chunk-7UTDOTOU.js} +80 -78
- package/dist/web/server/{chunk-OZO5ARFA.js → chunk-BQROC4PL.js} +11 -2
- package/dist/web/server/{chunk-JTCCQZLN.js → chunk-BUXJSBE3.js} +2 -2
- package/dist/web/server/{chunk-NIZBFVJF.js → chunk-CAPTFJOC.js} +9 -7
- package/dist/web/server/{chunk-YGYOBX7G.js → chunk-CCYLHNZJ.js} +1767 -52
- package/dist/web/server/{chunk-DJMHPJBP.js → chunk-CHEC7TWB.js} +3 -1
- package/dist/web/server/{chunk-NJ4QEZHK.js → chunk-CW6KZUKT.js} +7 -5
- package/dist/web/server/chunk-DLA5TLKX.js +164 -0
- package/dist/web/server/{chunk-MNBGB2SP.js → chunk-E5HALE4M.js} +4 -4
- package/dist/web/server/{chunk-D27LRYVT.js → chunk-EDAWH2MT.js} +10 -9
- package/dist/web/server/{chunk-NGCQJ33Y.js → chunk-ENGEUJIH.js} +1494 -1644
- package/dist/web/server/{chunk-RIP3PBWT.js → chunk-ESM7OCRL.js} +4 -4
- package/dist/web/server/{chunk-O3HDELZ2.js → chunk-FT74GAAH.js} +676 -670
- package/dist/web/server/{chunk-WNCAL4HN.js → chunk-HQ5TEXHT.js} +132 -152
- package/dist/web/server/{chunk-YOM42BKD.js → chunk-IPV4GLJL.js} +16 -16
- package/dist/web/server/{chunk-UL2725KQ.js → chunk-IXGLKAPN.js} +54 -46
- package/dist/web/server/{chunk-3TIMGWWI.js → chunk-JPDRUSUD.js} +2 -2
- package/dist/web/server/{chunk-4WBFCB4O.js → chunk-JVOW2NWC.js} +179 -177
- package/dist/web/server/chunk-K6PTNSCW.js +31 -0
- package/dist/web/server/{chunk-AR7O7JXD.js → chunk-KBWUBWVJ.js} +24 -1
- package/dist/web/server/{chunk-QIULBRTU.js → chunk-MJXXVQNA.js} +79 -84
- package/dist/web/server/{chunk-NWDI3OWB.js → chunk-NCK2FJAD.js} +30 -26
- package/dist/web/server/{chunk-QFRCJWQQ.js → chunk-NMBH57JT.js} +94 -33
- package/dist/web/server/{chunk-EAJTWMK5.js → chunk-NZ6KQT2X.js} +2 -2
- package/dist/web/server/{chunk-2DDWXTVG.js → chunk-O2UYZT3Z.js} +11 -11
- package/dist/web/server/{chunk-DLUZFOG3.js → chunk-OMEDERPG.js} +21 -25
- package/dist/web/server/{chunk-BLSX7WHW.js → chunk-OSMP55KI.js} +23 -2
- package/dist/web/server/{chunk-S3PQ6HKH.js → chunk-OVJYUWSQ.js} +2 -2
- package/dist/web/server/{chunk-UCUFC553.js → chunk-RXUMFFUV.js} +3 -3
- package/dist/web/server/{chunk-DO2O27B2.js → chunk-SDV3P3IW.js} +2 -2
- package/dist/web/server/chunk-TLNZNR7C.js +46 -0
- package/dist/web/server/{chunk-FYDQK6UX.js → chunk-UDD5W4CR.js} +32 -10
- package/dist/web/server/{chunk-MNPHMZU7.js → chunk-UE32PAV2.js} +47 -57
- package/dist/web/server/{chunk-KP2PNDGL.js → chunk-WB2LJC3R.js} +29 -32
- package/dist/web/server/{chunk-ETTDO4UO.js → chunk-WTYNN6EV.js} +1 -26
- package/dist/web/server/{chunk-EJEPDVK6.js → chunk-WU6X3GPJ.js} +48 -5
- package/dist/web/server/{chunk-XIB6XNUX.js → chunk-XJ6TGSUB.js} +425 -404
- package/dist/web/server/{chunk-PLYZ7P2Y.js → chunk-YMPJMHXZ.js} +41 -4
- package/dist/web/server/{chunk-GETSIVNU.js → chunk-YVGCPUAW.js} +7 -7
- package/dist/web/server/{chunk-4UBOIY2S.js → chunk-ZNFXBGLK.js} +1 -1
- package/dist/web/server/chunk-ZOVXMNJM.js +477 -0
- package/dist/web/server/{fork-picker-dialog-Ds6Tgtu3-DIBWN7MV.js → fork-picker-dialog-YKlapaxN-DR5L74ST.js} +9 -8
- package/dist/web/server/{markdown-DTnMbD87-FXGGAPJD.js → markdown-BzNejPoZ-6ITTDAV6.js} +2 -3
- package/dist/web/server/{markdown-code-BStjFfsy-SSLWUT4S.js → markdown-code-DAwXuW6m-HHVELO6I.js} +3 -4
- package/dist/web/server/{fleet-message-queue-D_w8lSeY-T3HB7HVQ.js → message-queue-Demph1x4-RBJUC3AT.js} +14 -10
- package/dist/web/server/{model-selector-list-DxeGZoD2-P6S6FSJH.js → model-selector-list-BmzLiCx9-TK6JGGKU.js} +20 -19
- package/dist/web/server/{openui-renderer-MKFv6LlH-MDRSVFEY.js → openui-renderer-moJGf0LA-QCU3PI6H.js} +17 -18
- package/dist/web/server/{prompt-suggestions-BOItmGnD-YQA7RHLG.js → prompt-suggestions-yPZqX__K-3VGJC4IF.js} +7 -6
- package/dist/web/server/{repl-panel-CuyF8wt5-CHDT2Q3N.js → repl-panel-CgUF1qUw-3DFD2V53.js} +10 -11
- package/dist/web/server/{resources-panel-CE5pD4vy-V5FXBTYC.js → resources-panel-ChUliWV--JITAGS6Q.js} +6 -7
- package/dist/web/server/{router-Dg72SESP-PCWKLFRG.js → router-CPdFlpbe-LAD4MNZB.js} +3111 -235
- package/dist/web/server/{routes-BGrVtPYF-SURPAJN6.js → routes-hkom6S6L-DUPPQHPY.js} +5045 -4285
- package/dist/web/server/server.js +2 -2
- package/dist/web/server/{session-insights-panel-CUhdgvRt-VB2HUCQP.js → session-insights-panel-xgrkX1Rp-FDNURBXZ.js} +9 -9
- package/dist/web/server/{fleet-reasoning-panel-DG_vuvv0-NCZWEEIT.js → session-reasoning-panel-m1RgcIph-NUXGXVKE.js} +21 -22
- package/dist/web/server/session-tool-renderer-CglQ2ky7-2JVYNZG2.js +45 -0
- package/dist/web/server/{settings-dialog-CK0FJlTg-HZRBAXDZ.js → settings-dialog-BCEfmgtP-T3WQEZHB.js} +175 -1373
- package/dist/web/server/{subagent-chat-panel-gzamnTgK-PQ2TLLJF.js → subagent-chat-panel-BTwI1kdB-LKBWA4GD.js} +32 -41
- package/dist/web/server/{subagents-panel-Berjd7HJ-EI5ZKC6V.js → subagents-panel-8Z9_csoV-HYMEEBHB.js} +37 -45
- package/dist/web/server/{fleet-tool-timeline-D6yM4ZMz-ZSFVRRRI.js → tool-timeline-QL9k5dzA-RLU26HXT.js} +6 -6
- package/dist/web/server/{workspace-panel-CBBa_3UO-B4PPFPMA.js → workspace-panel-BHEB9nRM-TS62SYBA.js} +24 -31
- package/package.json +1 -1
- package/dist/web/client/assets/action-swap-roll-COzQ86wm.js +0 -1
- package/dist/web/client/assets/agent-activity-svETLf_5.js +0 -1
- package/dist/web/client/assets/agent-disclosure-DAMuuGcM.js +0 -1
- package/dist/web/client/assets/analytics-stub-B6zGMuSV.js +0 -1
- package/dist/web/client/assets/artifacts-panel-HVjqBMyx.js +0 -1
- package/dist/web/client/assets/artifacts-utils-N_kUFbz2.js +0 -1
- package/dist/web/client/assets/bundle-mjs-DKHVkVWu.js +0 -1
- package/dist/web/client/assets/button-C5wFDY5_.js +0 -1
- package/dist/web/client/assets/chat-BhYseKd6.js +0 -52
- package/dist/web/client/assets/chat-command-palette-LILDO_vG.js +0 -1
- package/dist/web/client/assets/check-JjHKAZas.js +0 -1
- package/dist/web/client/assets/chevron-right-DrJxToLs.js +0 -1
- package/dist/web/client/assets/chevron-up-CnSvySGH.js +0 -1
- package/dist/web/client/assets/circle-alert-CONlFReH.js +0 -1
- package/dist/web/client/assets/circle-x-CkKCB__4.js +0 -1
- package/dist/web/client/assets/citations-BPv8HIpf.js +0 -2
- package/dist/web/client/assets/cn-C8c0S2mI.js +0 -1
- package/dist/web/client/assets/collapsible-BoXtZZWN.js +0 -1
- package/dist/web/client/assets/command-PhicLCoO.js +0 -1
- package/dist/web/client/assets/createBaseUIEventDetails-DV0dQrBX.js +0 -1
- package/dist/web/client/assets/createLucideIcon-DwxZHm0M.js +0 -1
- package/dist/web/client/assets/dialog-pBGUjAQ7.js +0 -1
- package/dist/web/client/assets/dist-BPaFisIZ.js +0 -41
- package/dist/web/client/assets/earth-DGZXAN5r.js +0 -1
- package/dist/web/client/assets/ease-u56MhKYS.js +0 -1
- package/dist/web/client/assets/file-text-T-NcAlZs.js +0 -1
- package/dist/web/client/assets/fleet-message-queue-fbYYwMj0.js +0 -1
- package/dist/web/client/assets/fleet-pi-tool-renderer-BRgNnmaJ.js +0 -1395
- package/dist/web/client/assets/fleet-reasoning-panel-CjA2dwUJ.js +0 -1
- package/dist/web/client/assets/fleet-subagent-list-iKUtLJKZ.js +0 -1
- package/dist/web/client/assets/fleet-tool-timeline-C8heL7ae.js +0 -1
- package/dist/web/client/assets/gauge-DNpstbBn.js +0 -1
- package/dist/web/client/assets/globals-CuIiqOTg.css +0 -2
- package/dist/web/client/assets/highlighted-body-KPVGNVTW-sUCZ1fHv.js +0 -1
- package/dist/web/client/assets/horizontal-resize-Cp3iHMH7.js +0 -1
- package/dist/web/client/assets/image-BbPmlw-n.js +0 -1
- package/dist/web/client/assets/index-CSGplyr_.js +0 -12
- package/dist/web/client/assets/input-PcdubeKn.js +0 -1
- package/dist/web/client/assets/input-group-C2HJEZvl.js +0 -1
- package/dist/web/client/assets/ipython-tool-CyuMOxz1.js +0 -3
- package/dist/web/client/assets/layout-gyLzPvVv.js +0 -1
- package/dist/web/client/assets/markdown-lvexwooo.js +0 -2
- package/dist/web/client/assets/mermaid-HWGCJPDP-Bm7CuruA.js +0 -1
- package/dist/web/client/assets/message-square-hbDao-A1.js +0 -1
- package/dist/web/client/assets/model-selector-list-CoXX358G.js +0 -1
- package/dist/web/client/assets/plus-DXN1Bg_z.js +0 -1
- package/dist/web/client/assets/prompt-input-fwP8TsgQ.js +0 -1
- package/dist/web/client/assets/prompt-suggestions-BlGXmWS7.js +0 -1
- package/dist/web/client/assets/provider-catalog-DYMFdbKc.js +0 -1
- package/dist/web/client/assets/provider-label-B4q5mI65.js +0 -1
- package/dist/web/client/assets/react-dom-Bwxum3ti.js +0 -1
- package/dist/web/client/assets/repl-panel-C5om8MGU.js +0 -1
- package/dist/web/client/assets/resources-panel-D867-goy.js +0 -1
- package/dist/web/client/assets/right-panel-context-DHlNWJsF.js +0 -1
- package/dist/web/client/assets/right-panel-registry-BBlxLxnx.js +0 -2
- package/dist/web/client/assets/routes-XGsAIqBJ.js +0 -16
- package/dist/web/client/assets/safe-external-url-D3PJJIcM.js +0 -1
- package/dist/web/client/assets/search-eWVnAJsb.js +0 -1
- package/dist/web/client/assets/session-insights-panel-YnaXvTpi.js +0 -1
- package/dist/web/client/assets/settings-dialog-BSBasR3o.js +0 -2
- package/dist/web/client/assets/skeleton-loaders-C9vHwAYV.js +0 -1
- package/dist/web/client/assets/sparkles-DuclzqlE.js +0 -1
- package/dist/web/client/assets/square-Bhn8gjr0.js +0 -1
- package/dist/web/client/assets/subagent-transcript-DaVHjNUH.js +0 -1
- package/dist/web/client/assets/subagent-utils-DDH5qm9Z.js +0 -1
- package/dist/web/client/assets/subagents-panel-D_aVgSCi.js +0 -1
- package/dist/web/client/assets/surfaces-BhAXz9So.js +0 -1
- package/dist/web/client/assets/switch-WhXeJNNY.js +0 -1
- package/dist/web/client/assets/terminal-DOS1s1gm.js +0 -1
- package/dist/web/client/assets/toast-D3c9XeGe.js +0 -1
- package/dist/web/client/assets/tool-result-Cki8WUNc.js +0 -4
- package/dist/web/client/assets/ui-preferences-CImQGZm_.js +0 -1
- package/dist/web/client/assets/use-reduced-motion-eORd7fqW.js +0 -9
- package/dist/web/client/assets/useBaseUiId-CHqXB2UQ.js +0 -1
- package/dist/web/client/assets/useControlled-CJJ9BOQB.js +0 -1
- package/dist/web/client/assets/utils-Eg7xtNmV.js +0 -1
- package/dist/web/client/assets/virtualized-turn-list-CdMa-ydT.js +0 -6
- package/dist/web/client/assets/workspace-panel-77bDbprs.js +0 -1
- package/dist/web/client/assets/workspace-path-nav-C0AQNZyy.js +0 -1
- package/dist/web/client/assets/x-CsRC_tCI.js +0 -1
- package/dist/web/server/_tanstack-start-manifest_v-0L7fqnH4-KMVGUFE4.js +0 -95
- package/dist/web/server/agent-activity-BuEE6iVw-CDZLK4D2.js +0 -514
- package/dist/web/server/chunk-2JHTYWD5.js +0 -1196
- package/dist/web/server/chunk-3JMESBAT.js +0 -35
- package/dist/web/server/chunk-42XU6WV7.js +0 -56
- package/dist/web/server/chunk-AQ66E5OW.js +0 -33
- package/dist/web/server/chunk-BYXBJQAS.js +0 -0
- package/dist/web/server/chunk-FAGDMGLK.js +0 -6589
- package/dist/web/server/chunk-FJV6EQDW.js +0 -36
- package/dist/web/server/chunk-GL6HWDJB.js +0 -19
- package/dist/web/server/chunk-L46H6IDX.js +0 -13
- package/dist/web/server/chunk-NIDBN7BQ.js +0 -86
- package/dist/web/server/chunk-ON33WDZX.js +0 -31
- package/dist/web/server/chunk-PVJCTQFK.js +0 -22
- package/dist/web/server/chunk-QPNUGF3V.js +0 -35
- package/dist/web/server/chunk-S5LFXXDY.js +0 -1265
- package/dist/web/server/chunk-VPKX7QRU.js +0 -42
- package/dist/web/server/chunk-ZCVWADNW.js +0 -37
- package/dist/web/server/fleet-pi-tool-renderer-qwc-qZFq-4U556N5Q.js +0 -51
- package/dist/web/server/fleet-subagent-list-BGb0PjhF-2X67FMUV.js +0 -18
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Keyboard,
|
|
3
|
+
Monitor,
|
|
4
|
+
Moon,
|
|
5
|
+
Sun
|
|
6
|
+
} from "./chunk-LJ6Y7DBH.js";
|
|
1
7
|
import {
|
|
2
8
|
AlertDialog,
|
|
3
9
|
AlertDialogAction,
|
|
@@ -7,84 +13,67 @@ import {
|
|
|
7
13
|
AlertDialogFooter,
|
|
8
14
|
AlertDialogTitle,
|
|
9
15
|
ArrowLeft,
|
|
10
|
-
COMPACT_ACTION_BUTTON_CLASS,
|
|
11
16
|
Cpu,
|
|
12
|
-
HIT_AREA_EXPAND_CLASS,
|
|
13
|
-
HIT_AREA_EXPAND_DENSE_CLASS,
|
|
14
17
|
PROVIDER_METADATA,
|
|
15
18
|
ProviderBrandIcon,
|
|
16
19
|
Settings,
|
|
17
20
|
Spinner,
|
|
18
21
|
Trash2,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
getDelay,
|
|
22
|
-
safePolygon,
|
|
23
|
-
useHoverFloatingInteraction,
|
|
24
|
-
useHoverInteractionSharedState,
|
|
25
|
-
useHoverReferenceInteraction,
|
|
26
|
-
usePopupHandleStore
|
|
27
|
-
} from "./chunk-2JHTYWD5.js";
|
|
28
|
-
import {
|
|
29
|
-
UI_PREFERENCES_KEY,
|
|
30
|
-
isModelPatternEnabled,
|
|
31
|
-
modelMatchesPattern,
|
|
32
|
-
modelPattern,
|
|
33
|
-
readUiPreferences
|
|
34
|
-
} from "./chunk-ETTDO4UO.js";
|
|
35
|
-
import {
|
|
36
|
-
MessageSquare
|
|
37
|
-
} from "./chunk-GL6HWDJB.js";
|
|
22
|
+
formatProviderLabel
|
|
23
|
+
} from "./chunk-ZOVXMNJM.js";
|
|
38
24
|
import {
|
|
39
25
|
Pencil
|
|
40
26
|
} from "./chunk-M5RSPNYN.js";
|
|
41
27
|
import {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
} from "./chunk-
|
|
28
|
+
COMPACT_ACTION_BUTTON_CLASS,
|
|
29
|
+
HIT_AREA_EXPAND_CLASS,
|
|
30
|
+
HIT_AREA_EXPAND_DENSE_CLASS,
|
|
31
|
+
rowSurface
|
|
32
|
+
} from "./chunk-7HXCGBUP.js";
|
|
47
33
|
import {
|
|
34
|
+
Plus,
|
|
48
35
|
useChatPanelDataContext,
|
|
49
36
|
useSettingsActionsContext
|
|
50
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-33QA7BQJ.js";
|
|
51
38
|
import {
|
|
52
|
-
|
|
53
|
-
|
|
39
|
+
isModelPatternEnabled,
|
|
40
|
+
modelMatchesPattern,
|
|
41
|
+
modelPattern
|
|
42
|
+
} from "./chunk-WTYNN6EV.js";
|
|
43
|
+
import {
|
|
44
|
+
applyUiPreferencesToDocument,
|
|
45
|
+
readUiPreferences,
|
|
46
|
+
writeUiPreferences
|
|
47
|
+
} from "./chunk-4EBSM4JR.js";
|
|
54
48
|
import {
|
|
55
49
|
RefreshCw
|
|
56
50
|
} from "./chunk-OKL5ZRVB.js";
|
|
57
51
|
import {
|
|
58
52
|
notify
|
|
59
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-BUXJSBE3.js";
|
|
54
|
+
import "./chunk-UCA4WN66.js";
|
|
60
55
|
import {
|
|
61
|
-
FloatingPortalLite,
|
|
62
56
|
Info
|
|
63
|
-
} from "./chunk-
|
|
64
|
-
import "./chunk-UCA4WN66.js";
|
|
57
|
+
} from "./chunk-IXGLKAPN.js";
|
|
65
58
|
import {
|
|
66
59
|
Eye
|
|
67
60
|
} from "./chunk-2ST2ULW7.js";
|
|
68
61
|
import {
|
|
69
62
|
ExternalLink,
|
|
70
|
-
Globe
|
|
71
|
-
} from "./chunk-BLSX7WHW.js";
|
|
72
|
-
import {
|
|
63
|
+
Globe,
|
|
73
64
|
Sparkles
|
|
74
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-OSMP55KI.js";
|
|
75
66
|
import {
|
|
76
67
|
HardDrive
|
|
77
68
|
} from "./chunk-D7ELZVTI.js";
|
|
78
|
-
import
|
|
79
|
-
writeStoredValue
|
|
80
|
-
} from "./chunk-SZJUXVWG.js";
|
|
69
|
+
import "./chunk-SZJUXVWG.js";
|
|
81
70
|
import {
|
|
82
71
|
InputGroup,
|
|
83
72
|
InputGroupAddon,
|
|
84
73
|
InputGroupButton,
|
|
85
74
|
InputGroupInput,
|
|
86
75
|
Textarea
|
|
87
|
-
} from "./chunk-
|
|
76
|
+
} from "./chunk-CW6KZUKT.js";
|
|
88
77
|
import {
|
|
89
78
|
Search
|
|
90
79
|
} from "./chunk-JIULUYHT.js";
|
|
@@ -105,132 +94,71 @@ import {
|
|
|
105
94
|
FieldGroup,
|
|
106
95
|
FieldLabel,
|
|
107
96
|
Switch
|
|
108
|
-
} from "./chunk-
|
|
97
|
+
} from "./chunk-WB2LJC3R.js";
|
|
109
98
|
import {
|
|
110
99
|
Select,
|
|
111
100
|
clamp,
|
|
112
|
-
getDisabledMountTransitionStyles,
|
|
113
101
|
normalizeScrollOffset,
|
|
114
102
|
styleDisableScrollbar,
|
|
115
|
-
useAnchorPositioning,
|
|
116
103
|
useCSPContext,
|
|
117
|
-
useDirection
|
|
118
|
-
|
|
119
|
-
useRender
|
|
120
|
-
} from "./chunk-NNKJTKOQ.js";
|
|
104
|
+
useDirection
|
|
105
|
+
} from "./chunk-6SOMNRAX.js";
|
|
121
106
|
import {
|
|
122
107
|
isCustomProviderId,
|
|
123
108
|
isNamedOccInstanceId,
|
|
124
109
|
isOccProviderId
|
|
125
110
|
} from "./chunk-RJOANOT4.js";
|
|
126
|
-
import "./chunk-WWJF4RO2.js";
|
|
127
111
|
import {
|
|
128
112
|
Input
|
|
129
|
-
} from "./chunk-
|
|
113
|
+
} from "./chunk-43S5N7SH.js";
|
|
130
114
|
import {
|
|
131
115
|
Dialog,
|
|
132
|
-
DialogBackdrop,
|
|
133
|
-
DialogClose,
|
|
134
116
|
DialogContent,
|
|
135
117
|
DialogDescription,
|
|
136
|
-
DialogDescription$1,
|
|
137
118
|
DialogHeader,
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
DialogRoot,
|
|
141
|
-
DialogTitle,
|
|
142
|
-
DialogTitle$1,
|
|
143
|
-
FOCUSABLE_POPUP_PROPS,
|
|
144
|
-
PopupHandleAttachment,
|
|
145
|
-
PopupTriggerMap,
|
|
146
|
-
SurfaceProvider,
|
|
147
|
-
applyPopupOpenChange,
|
|
148
|
-
createInitialPopupStoreState,
|
|
149
|
-
createPopupFloatingRootContext,
|
|
150
|
-
isMouseLikePointerType,
|
|
151
|
-
popupStateMapping,
|
|
152
|
-
popupStoreSelectors,
|
|
153
|
-
popupTransitionStateMapping,
|
|
154
|
-
surfaceClasses,
|
|
155
|
-
triggerOpenStateMapping,
|
|
156
|
-
useDismiss,
|
|
157
|
-
useImplicitActiveTrigger,
|
|
158
|
-
useOpenStateTransitions,
|
|
159
|
-
usePopupInteractionProps,
|
|
160
|
-
usePopupRootStore,
|
|
161
|
-
useSurface,
|
|
162
|
-
useTriggerDataForwarding
|
|
163
|
-
} from "./chunk-4WBFCB4O.js";
|
|
119
|
+
DialogTitle
|
|
120
|
+
} from "./chunk-JVOW2NWC.js";
|
|
164
121
|
import {
|
|
165
122
|
Button,
|
|
166
|
-
POPUP_COLLISION_AVOIDANCE,
|
|
167
|
-
ReactStore,
|
|
168
|
-
Timeout,
|
|
169
|
-
activeElement,
|
|
170
123
|
contains,
|
|
171
|
-
createAttribute,
|
|
172
|
-
cva,
|
|
173
|
-
fastComponent,
|
|
174
|
-
fastComponentRef,
|
|
175
124
|
getTarget,
|
|
176
|
-
isTargetInsideEnabledTrigger,
|
|
177
|
-
isTypeableElement,
|
|
178
|
-
mac,
|
|
179
|
-
matchesFocusVisible,
|
|
180
|
-
mergeCleanups,
|
|
181
|
-
ownerDocument,
|
|
182
125
|
useTimeout,
|
|
183
126
|
webkit
|
|
184
|
-
} from "./chunk-
|
|
127
|
+
} from "./chunk-HQ5TEXHT.js";
|
|
128
|
+
import "./chunk-TLNZNR7C.js";
|
|
185
129
|
import {
|
|
186
130
|
Check
|
|
187
131
|
} from "./chunk-4QD4PCVP.js";
|
|
188
|
-
import "./chunk-
|
|
189
|
-
import
|
|
190
|
-
|
|
191
|
-
useValueAsRef
|
|
192
|
-
} from "./chunk-MNBGB2SP.js";
|
|
132
|
+
import "./chunk-JBLHIEVG.js";
|
|
133
|
+
import "./chunk-WWJF4RO2.js";
|
|
134
|
+
import "./chunk-OVJYUWSQ.js";
|
|
193
135
|
import {
|
|
194
|
-
|
|
195
|
-
} from "./chunk-
|
|
136
|
+
useBaseUiId
|
|
137
|
+
} from "./chunk-E5HALE4M.js";
|
|
196
138
|
import {
|
|
197
|
-
EMPTY_OBJECT,
|
|
198
139
|
addEventListener,
|
|
199
|
-
createChangeEventDetails,
|
|
200
|
-
disabled,
|
|
201
140
|
formatErrorMessage,
|
|
202
|
-
getWindow,
|
|
203
|
-
imperativeAction,
|
|
204
|
-
isElement,
|
|
205
|
-
isHTMLElement,
|
|
206
|
-
mergeProps,
|
|
207
|
-
none,
|
|
208
|
-
triggerFocus,
|
|
209
|
-
triggerHover,
|
|
210
|
-
triggerPress,
|
|
211
141
|
useIsoLayoutEffect,
|
|
212
|
-
useOpenChangeComplete,
|
|
213
142
|
useRenderElement,
|
|
214
143
|
useStableCallback
|
|
215
|
-
} from "./chunk-
|
|
144
|
+
} from "./chunk-XJ6TGSUB.js";
|
|
216
145
|
import {
|
|
217
146
|
Plug
|
|
218
147
|
} from "./chunk-AHTO6GDS.js";
|
|
219
|
-
import "./chunk-EAJTWMK5.js";
|
|
220
148
|
import "./chunk-HFQZLPU2.js";
|
|
221
149
|
import {
|
|
222
150
|
createLucideIcon
|
|
223
151
|
} from "./chunk-4ZIEVI5O.js";
|
|
224
152
|
import {
|
|
225
153
|
cn
|
|
226
|
-
} from "./chunk-
|
|
154
|
+
} from "./chunk-CHEC7TWB.js";
|
|
227
155
|
import "./chunk-JDCCC7A7.js";
|
|
228
156
|
import "./chunk-L547YHC4.js";
|
|
229
157
|
import "./chunk-MLKGABMK.js";
|
|
230
158
|
|
|
231
|
-
// web/app/dist/server/assets/settings-dialog-
|
|
159
|
+
// web/app/dist/server/assets/settings-dialog-BCEfmgtP.js
|
|
232
160
|
import * as React$1 from "react";
|
|
233
|
-
import { useCallback
|
|
161
|
+
import { useCallback, useEffect as useEffect2, useId, useMemo as useMemo2, useRef as useRef2, useState as useState2 } from "react";
|
|
234
162
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
235
163
|
var Box = createLucideIcon("box", [
|
|
236
164
|
["path", {
|
|
@@ -300,6 +228,10 @@ var Lock = createLucideIcon("lock", [["rect", {
|
|
|
300
228
|
d: "M7 11V7a5 5 0 0 1 10 0v4",
|
|
301
229
|
key: "fwvmzm"
|
|
302
230
|
}]]);
|
|
231
|
+
var MessageSquare = createLucideIcon("message-square", [["path", {
|
|
232
|
+
d: "M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",
|
|
233
|
+
key: "18887p"
|
|
234
|
+
}]]);
|
|
303
235
|
var Paintbrush = createLucideIcon("paintbrush", [
|
|
304
236
|
["path", {
|
|
305
237
|
d: "m14.622 17.897-10.68-2.913",
|
|
@@ -362,366 +294,6 @@ var Users = createLucideIcon("users", [
|
|
|
362
294
|
key: "nufk8"
|
|
363
295
|
}]
|
|
364
296
|
]);
|
|
365
|
-
var FloatingDelayGroupContext = /* @__PURE__ */ React$1.createContext({
|
|
366
|
-
hasProvider: false,
|
|
367
|
-
timeoutMs: 0,
|
|
368
|
-
delayRef: { current: 0 },
|
|
369
|
-
initialDelayRef: { current: 0 },
|
|
370
|
-
timeout: new Timeout(),
|
|
371
|
-
currentIdRef: { current: null },
|
|
372
|
-
currentContextRef: { current: null }
|
|
373
|
-
});
|
|
374
|
-
function resetDelayRef(delayRef, initialDelayRef) {
|
|
375
|
-
delayRef.current = initialDelayRef.current;
|
|
376
|
-
}
|
|
377
|
-
function useDelayGroup(context, options = { open: false }) {
|
|
378
|
-
const { open } = options;
|
|
379
|
-
const store = "rootStore" in context ? context.rootStore : context;
|
|
380
|
-
const floatingId = store.useState("floatingId");
|
|
381
|
-
const { currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, hasProvider, timeout } = React$1.useContext(FloatingDelayGroupContext);
|
|
382
|
-
const [isInstantPhase, setIsInstantPhase] = React$1.useState(false);
|
|
383
|
-
const openRef = React$1.useRef(open);
|
|
384
|
-
useIsoLayoutEffect(() => {
|
|
385
|
-
openRef.current = open;
|
|
386
|
-
}, [open]);
|
|
387
|
-
useIsoLayoutEffect(() => {
|
|
388
|
-
function unset() {
|
|
389
|
-
currentContextRef.current?.setIsInstantPhase(false);
|
|
390
|
-
currentIdRef.current = null;
|
|
391
|
-
currentContextRef.current = null;
|
|
392
|
-
delayRef.current = initialDelayRef.current;
|
|
393
|
-
timeout.clear();
|
|
394
|
-
}
|
|
395
|
-
if (!currentIdRef.current) return;
|
|
396
|
-
if (!open && currentIdRef.current === floatingId) {
|
|
397
|
-
setIsInstantPhase(false);
|
|
398
|
-
if (timeoutMs) {
|
|
399
|
-
const closingId = floatingId;
|
|
400
|
-
timeout.start(timeoutMs, () => {
|
|
401
|
-
if (store.select("open") || currentIdRef.current && currentIdRef.current !== closingId) return;
|
|
402
|
-
unset();
|
|
403
|
-
});
|
|
404
|
-
return () => {
|
|
405
|
-
if (openRef.current || currentIdRef.current !== closingId) timeout.clear();
|
|
406
|
-
};
|
|
407
|
-
}
|
|
408
|
-
unset();
|
|
409
|
-
}
|
|
410
|
-
}, [
|
|
411
|
-
open,
|
|
412
|
-
floatingId,
|
|
413
|
-
currentIdRef,
|
|
414
|
-
delayRef,
|
|
415
|
-
timeoutMs,
|
|
416
|
-
initialDelayRef,
|
|
417
|
-
currentContextRef,
|
|
418
|
-
timeout,
|
|
419
|
-
store
|
|
420
|
-
]);
|
|
421
|
-
useIsoLayoutEffect(() => {
|
|
422
|
-
if (!open) return;
|
|
423
|
-
const prevContext = currentContextRef.current;
|
|
424
|
-
const prevId = currentIdRef.current;
|
|
425
|
-
timeout.clear();
|
|
426
|
-
currentContextRef.current = {
|
|
427
|
-
onOpenChange: store.setOpen,
|
|
428
|
-
setIsInstantPhase
|
|
429
|
-
};
|
|
430
|
-
currentIdRef.current = floatingId;
|
|
431
|
-
delayRef.current = {
|
|
432
|
-
open: 0,
|
|
433
|
-
close: getDelay(initialDelayRef.current, "close")
|
|
434
|
-
};
|
|
435
|
-
if (prevId !== null && prevId !== floatingId) {
|
|
436
|
-
setIsInstantPhase(true);
|
|
437
|
-
prevContext?.setIsInstantPhase(true);
|
|
438
|
-
prevContext?.onOpenChange(false, createChangeEventDetails(none));
|
|
439
|
-
} else {
|
|
440
|
-
setIsInstantPhase(false);
|
|
441
|
-
prevContext?.setIsInstantPhase(false);
|
|
442
|
-
}
|
|
443
|
-
}, [
|
|
444
|
-
open,
|
|
445
|
-
floatingId,
|
|
446
|
-
store,
|
|
447
|
-
currentIdRef,
|
|
448
|
-
delayRef,
|
|
449
|
-
initialDelayRef,
|
|
450
|
-
currentContextRef,
|
|
451
|
-
timeout
|
|
452
|
-
]);
|
|
453
|
-
useIsoLayoutEffect(() => {
|
|
454
|
-
return () => {
|
|
455
|
-
if (currentIdRef.current === floatingId) {
|
|
456
|
-
currentContextRef.current = null;
|
|
457
|
-
if (!openRef.current) return;
|
|
458
|
-
currentIdRef.current = null;
|
|
459
|
-
resetDelayRef(delayRef, initialDelayRef);
|
|
460
|
-
timeout.clear();
|
|
461
|
-
}
|
|
462
|
-
};
|
|
463
|
-
}, [
|
|
464
|
-
currentContextRef,
|
|
465
|
-
currentIdRef,
|
|
466
|
-
delayRef,
|
|
467
|
-
floatingId,
|
|
468
|
-
initialDelayRef,
|
|
469
|
-
timeout
|
|
470
|
-
]);
|
|
471
|
-
return React$1.useMemo(() => ({
|
|
472
|
-
hasProvider,
|
|
473
|
-
delayRef,
|
|
474
|
-
isInstantPhase
|
|
475
|
-
}), [
|
|
476
|
-
hasProvider,
|
|
477
|
-
delayRef,
|
|
478
|
-
isInstantPhase
|
|
479
|
-
]);
|
|
480
|
-
}
|
|
481
|
-
function createVirtualElement(domElement, data) {
|
|
482
|
-
let offsetX = null;
|
|
483
|
-
let offsetY = null;
|
|
484
|
-
let isAutoUpdateEvent = false;
|
|
485
|
-
return {
|
|
486
|
-
contextElement: domElement || void 0,
|
|
487
|
-
getBoundingClientRect() {
|
|
488
|
-
const domRect = domElement?.getBoundingClientRect() || {
|
|
489
|
-
width: 0,
|
|
490
|
-
height: 0,
|
|
491
|
-
x: 0,
|
|
492
|
-
y: 0
|
|
493
|
-
};
|
|
494
|
-
const isXAxis = data.axis === "x" || data.axis === "both";
|
|
495
|
-
const isYAxis = data.axis === "y" || data.axis === "both";
|
|
496
|
-
const canTrackCursorOnAutoUpdate = ["mouseenter", "mousemove"].includes(data.dataRef.current.openEvent?.type || "") && data.pointerType !== "touch";
|
|
497
|
-
let width = domRect.width;
|
|
498
|
-
let height = domRect.height;
|
|
499
|
-
let x = domRect.x;
|
|
500
|
-
let y = domRect.y;
|
|
501
|
-
if (offsetX == null && data.x && isXAxis) offsetX = domRect.x - data.x;
|
|
502
|
-
if (offsetY == null && data.y && isYAxis) offsetY = domRect.y - data.y;
|
|
503
|
-
x -= offsetX || 0;
|
|
504
|
-
y -= offsetY || 0;
|
|
505
|
-
width = 0;
|
|
506
|
-
height = 0;
|
|
507
|
-
if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {
|
|
508
|
-
width = data.axis === "y" ? domRect.width : 0;
|
|
509
|
-
height = data.axis === "x" ? domRect.height : 0;
|
|
510
|
-
x = isXAxis && data.x != null ? data.x : x;
|
|
511
|
-
y = isYAxis && data.y != null ? data.y : y;
|
|
512
|
-
} else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {
|
|
513
|
-
height = data.axis === "x" ? domRect.height : height;
|
|
514
|
-
width = data.axis === "y" ? domRect.width : width;
|
|
515
|
-
}
|
|
516
|
-
isAutoUpdateEvent = true;
|
|
517
|
-
return {
|
|
518
|
-
width,
|
|
519
|
-
height,
|
|
520
|
-
x,
|
|
521
|
-
y,
|
|
522
|
-
top: y,
|
|
523
|
-
right: x + width,
|
|
524
|
-
bottom: y + height,
|
|
525
|
-
left: x
|
|
526
|
-
};
|
|
527
|
-
}
|
|
528
|
-
};
|
|
529
|
-
}
|
|
530
|
-
function isMouseBasedEvent(event) {
|
|
531
|
-
return event != null && event.clientX != null;
|
|
532
|
-
}
|
|
533
|
-
function useClientPoint(context, props = {}) {
|
|
534
|
-
const { enabled = true, axis = "both" } = props;
|
|
535
|
-
const store = "rootStore" in context ? context.rootStore : context;
|
|
536
|
-
const open = store.useState("open");
|
|
537
|
-
const floating = store.useState("floatingElement");
|
|
538
|
-
const domReference = store.useState("domReferenceElement");
|
|
539
|
-
const dataRef = store.context.dataRef;
|
|
540
|
-
const initialRef = React$1.useRef(false);
|
|
541
|
-
const cleanupListenerRef = React$1.useRef(null);
|
|
542
|
-
const [pointerType, setPointerType] = React$1.useState();
|
|
543
|
-
const [reactive, setReactive] = React$1.useState([]);
|
|
544
|
-
const resetReference = useStableCallback((reference2) => {
|
|
545
|
-
store.set("positionReference", reference2);
|
|
546
|
-
});
|
|
547
|
-
const setReference = useStableCallback((newX, newY, referenceElement) => {
|
|
548
|
-
if (initialRef.current) return;
|
|
549
|
-
if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) return;
|
|
550
|
-
store.set("positionReference", createVirtualElement(referenceElement ?? domReference, {
|
|
551
|
-
x: newX,
|
|
552
|
-
y: newY,
|
|
553
|
-
axis,
|
|
554
|
-
dataRef,
|
|
555
|
-
pointerType
|
|
556
|
-
}));
|
|
557
|
-
});
|
|
558
|
-
const handleReferenceEnterOrMove = useStableCallback((event) => {
|
|
559
|
-
if (!open) setReference(event.clientX, event.clientY, event.currentTarget);
|
|
560
|
-
else if (!cleanupListenerRef.current) {
|
|
561
|
-
setReference(event.clientX, event.clientY, event.currentTarget);
|
|
562
|
-
setReactive([]);
|
|
563
|
-
}
|
|
564
|
-
});
|
|
565
|
-
const openCheck = isMouseLikePointerType(pointerType) ? floating : open;
|
|
566
|
-
React$1.useEffect(() => {
|
|
567
|
-
if (!enabled) {
|
|
568
|
-
resetReference(domReference);
|
|
569
|
-
return;
|
|
570
|
-
}
|
|
571
|
-
if (!openCheck) return;
|
|
572
|
-
function cleanupListener() {
|
|
573
|
-
cleanupListenerRef.current?.();
|
|
574
|
-
cleanupListenerRef.current = null;
|
|
575
|
-
}
|
|
576
|
-
const win = getWindow(floating);
|
|
577
|
-
function handleMouseMove(event) {
|
|
578
|
-
const target = getTarget(event);
|
|
579
|
-
if (!contains(floating, target)) setReference(event.clientX, event.clientY);
|
|
580
|
-
else cleanupListener();
|
|
581
|
-
}
|
|
582
|
-
if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) cleanupListenerRef.current = addEventListener(win, "mousemove", handleMouseMove);
|
|
583
|
-
else resetReference(domReference);
|
|
584
|
-
return cleanupListener;
|
|
585
|
-
}, [
|
|
586
|
-
openCheck,
|
|
587
|
-
enabled,
|
|
588
|
-
floating,
|
|
589
|
-
dataRef,
|
|
590
|
-
domReference,
|
|
591
|
-
store,
|
|
592
|
-
setReference,
|
|
593
|
-
resetReference,
|
|
594
|
-
reactive
|
|
595
|
-
]);
|
|
596
|
-
React$1.useEffect(() => () => {
|
|
597
|
-
store.set("positionReference", null);
|
|
598
|
-
}, [store]);
|
|
599
|
-
React$1.useEffect(() => {
|
|
600
|
-
if (enabled && !floating) initialRef.current = false;
|
|
601
|
-
}, [enabled, floating]);
|
|
602
|
-
React$1.useEffect(() => {
|
|
603
|
-
if (!enabled && open) initialRef.current = true;
|
|
604
|
-
}, [enabled, open]);
|
|
605
|
-
const reference = React$1.useMemo(() => {
|
|
606
|
-
function setPointerTypeRef(event) {
|
|
607
|
-
setPointerType(event.pointerType);
|
|
608
|
-
}
|
|
609
|
-
return {
|
|
610
|
-
onPointerDown: setPointerTypeRef,
|
|
611
|
-
onPointerEnter: setPointerTypeRef,
|
|
612
|
-
onMouseMove: handleReferenceEnterOrMove,
|
|
613
|
-
onMouseEnter: handleReferenceEnterOrMove
|
|
614
|
-
};
|
|
615
|
-
}, [handleReferenceEnterOrMove]);
|
|
616
|
-
return React$1.useMemo(() => enabled ? {
|
|
617
|
-
reference,
|
|
618
|
-
trigger: reference
|
|
619
|
-
} : {}, [enabled, reference]);
|
|
620
|
-
}
|
|
621
|
-
var isMacSafari = mac && webkit;
|
|
622
|
-
function useFocus(context, props = {}) {
|
|
623
|
-
const { enabled = true, delay: delay2 } = props;
|
|
624
|
-
const store = "rootStore" in context ? context.rootStore : context;
|
|
625
|
-
const { events, dataRef } = store.context;
|
|
626
|
-
const blockFocusRef = React$1.useRef(false);
|
|
627
|
-
const blockedReferenceRef = React$1.useRef(null);
|
|
628
|
-
const keyboardModalityRef = React$1.useRef(true);
|
|
629
|
-
const timeout = useTimeout();
|
|
630
|
-
React$1.useEffect(() => {
|
|
631
|
-
const domReference = store.select("domReferenceElement");
|
|
632
|
-
if (!enabled) return;
|
|
633
|
-
const win = getWindow(domReference);
|
|
634
|
-
function onBlur() {
|
|
635
|
-
const currentDomReference = store.select("domReferenceElement");
|
|
636
|
-
if (!store.select("open") && isHTMLElement(currentDomReference) && currentDomReference === activeElement(ownerDocument(currentDomReference))) blockFocusRef.current = true;
|
|
637
|
-
}
|
|
638
|
-
function onKeyDown() {
|
|
639
|
-
keyboardModalityRef.current = true;
|
|
640
|
-
}
|
|
641
|
-
function onPointerDown() {
|
|
642
|
-
keyboardModalityRef.current = false;
|
|
643
|
-
}
|
|
644
|
-
return mergeCleanups(addEventListener(win, "blur", onBlur), isMacSafari && addEventListener(win, "keydown", onKeyDown, true), isMacSafari && addEventListener(win, "pointerdown", onPointerDown, true));
|
|
645
|
-
}, [store, enabled]);
|
|
646
|
-
React$1.useEffect(() => {
|
|
647
|
-
if (!enabled) return;
|
|
648
|
-
function onOpenChangeLocal(details) {
|
|
649
|
-
if (details.reason === "trigger-press" || details.reason === "escape-key") {
|
|
650
|
-
const referenceElement = store.select("domReferenceElement");
|
|
651
|
-
if (isElement(referenceElement)) {
|
|
652
|
-
blockedReferenceRef.current = referenceElement;
|
|
653
|
-
blockFocusRef.current = true;
|
|
654
|
-
}
|
|
655
|
-
}
|
|
656
|
-
}
|
|
657
|
-
events.on("openchange", onOpenChangeLocal);
|
|
658
|
-
return () => {
|
|
659
|
-
events.off("openchange", onOpenChangeLocal);
|
|
660
|
-
};
|
|
661
|
-
}, [
|
|
662
|
-
events,
|
|
663
|
-
enabled,
|
|
664
|
-
store
|
|
665
|
-
]);
|
|
666
|
-
const reference = React$1.useMemo(() => {
|
|
667
|
-
function resetBlockedFocus() {
|
|
668
|
-
blockFocusRef.current = false;
|
|
669
|
-
blockedReferenceRef.current = null;
|
|
670
|
-
}
|
|
671
|
-
return {
|
|
672
|
-
onMouseLeave() {
|
|
673
|
-
resetBlockedFocus();
|
|
674
|
-
},
|
|
675
|
-
onFocus(event) {
|
|
676
|
-
const focusTarget = event.currentTarget;
|
|
677
|
-
if (blockFocusRef.current) {
|
|
678
|
-
if (blockedReferenceRef.current === focusTarget) return;
|
|
679
|
-
resetBlockedFocus();
|
|
680
|
-
}
|
|
681
|
-
const target = getTarget(event.nativeEvent);
|
|
682
|
-
if (isElement(target)) {
|
|
683
|
-
if (isMacSafari && !event.relatedTarget) {
|
|
684
|
-
if (!keyboardModalityRef.current && !isTypeableElement(target)) return;
|
|
685
|
-
} else if (!matchesFocusVisible(target)) return;
|
|
686
|
-
}
|
|
687
|
-
const movedFromOtherEnabledTrigger = isTargetInsideEnabledTrigger(event.relatedTarget, store.context.triggerElements);
|
|
688
|
-
const { nativeEvent, currentTarget } = event;
|
|
689
|
-
const delayValue = typeof delay2 === "function" ? delay2() : delay2;
|
|
690
|
-
if (store.select("open") && movedFromOtherEnabledTrigger || delayValue === 0 || delayValue === void 0) {
|
|
691
|
-
store.setOpen(true, createChangeEventDetails(triggerFocus, nativeEvent, currentTarget));
|
|
692
|
-
return;
|
|
693
|
-
}
|
|
694
|
-
timeout.start(delayValue, () => {
|
|
695
|
-
if (blockFocusRef.current) return;
|
|
696
|
-
store.setOpen(true, createChangeEventDetails(triggerFocus, nativeEvent, currentTarget));
|
|
697
|
-
});
|
|
698
|
-
},
|
|
699
|
-
onBlur(event) {
|
|
700
|
-
resetBlockedFocus();
|
|
701
|
-
const relatedTarget = event.relatedTarget;
|
|
702
|
-
const nativeEvent = event.nativeEvent;
|
|
703
|
-
const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute("focus-guard")) && relatedTarget.getAttribute("data-type") === "outside";
|
|
704
|
-
timeout.start(0, () => {
|
|
705
|
-
const domReference = store.select("domReferenceElement");
|
|
706
|
-
const activeEl = activeElement(ownerDocument(domReference));
|
|
707
|
-
if (!relatedTarget && activeEl === domReference) return;
|
|
708
|
-
if (contains(dataRef.current.floatingContext?.refs.floating.current, activeEl) || contains(domReference, activeEl) || movedToFocusGuard) return;
|
|
709
|
-
if (isTargetInsideEnabledTrigger(relatedTarget ?? activeEl, store.context.triggerElements)) return;
|
|
710
|
-
store.setOpen(false, createChangeEventDetails(triggerFocus, nativeEvent));
|
|
711
|
-
});
|
|
712
|
-
}
|
|
713
|
-
};
|
|
714
|
-
}, [
|
|
715
|
-
dataRef,
|
|
716
|
-
delay2,
|
|
717
|
-
store,
|
|
718
|
-
timeout
|
|
719
|
-
]);
|
|
720
|
-
return React$1.useMemo(() => enabled ? {
|
|
721
|
-
reference,
|
|
722
|
-
trigger: reference
|
|
723
|
-
} : {}, [enabled, reference]);
|
|
724
|
-
}
|
|
725
297
|
function Breadcrumb({ className, ...props }) {
|
|
726
298
|
return /* @__PURE__ */ jsx("nav", {
|
|
727
299
|
"aria-label": "breadcrumb",
|
|
@@ -776,16 +348,25 @@ function getOffset(element, prop, axis) {
|
|
|
776
348
|
if (axis === "x" && prop === "margin") return start * 2;
|
|
777
349
|
return start + parseFloat(styles[`${key}End`]);
|
|
778
350
|
}
|
|
351
|
+
var hasOverflowX = "data-has-overflow-x";
|
|
352
|
+
var hasOverflowY = "data-has-overflow-y";
|
|
353
|
+
var overflowXStart = "data-overflow-x-start";
|
|
354
|
+
var overflowXEnd = "data-overflow-x-end";
|
|
355
|
+
var overflowYStart = "data-overflow-y-start";
|
|
356
|
+
var overflowYEnd = "data-overflow-y-end";
|
|
779
357
|
var attr = (name) => (value) => value ? { [name]: "" } : null;
|
|
780
358
|
var scrollAreaStateAttributesMapping = {
|
|
781
|
-
hasOverflowX: attr(
|
|
782
|
-
hasOverflowY: attr(
|
|
783
|
-
overflowXStart: attr(
|
|
784
|
-
overflowXEnd: attr(
|
|
785
|
-
overflowYStart: attr(
|
|
786
|
-
overflowYEnd: attr(
|
|
359
|
+
hasOverflowX: attr(hasOverflowX),
|
|
360
|
+
hasOverflowY: attr(hasOverflowY),
|
|
361
|
+
overflowXStart: attr(overflowXStart),
|
|
362
|
+
overflowXEnd: attr(overflowXEnd),
|
|
363
|
+
overflowYStart: attr(overflowYStart),
|
|
364
|
+
overflowYEnd: attr(overflowYEnd),
|
|
787
365
|
cornerHidden: () => null
|
|
788
366
|
};
|
|
367
|
+
var scrollAreaCornerHeight = "--scroll-area-corner-height";
|
|
368
|
+
var scrollAreaCornerWidth = "--scroll-area-corner-width";
|
|
369
|
+
var orientation = "data-orientation";
|
|
789
370
|
var DEFAULT_COORDS = {
|
|
790
371
|
x: 0,
|
|
791
372
|
y: 0
|
|
@@ -866,7 +447,7 @@ var ScrollAreaRoot = /* @__PURE__ */ React$1.forwardRef(function ScrollAreaRoot2
|
|
|
866
447
|
activePointerIdRef.current = event.pointerId;
|
|
867
448
|
startYRef.current = event.clientY;
|
|
868
449
|
startXRef.current = event.clientX;
|
|
869
|
-
currentOrientationRef.current = event.currentTarget.getAttribute(
|
|
450
|
+
currentOrientationRef.current = event.currentTarget.getAttribute(orientation);
|
|
870
451
|
const viewportEl = viewportRef.current;
|
|
871
452
|
if (viewportEl) {
|
|
872
453
|
startScrollTopRef.current = viewportEl.scrollTop;
|
|
@@ -950,8 +531,8 @@ var ScrollAreaRoot = /* @__PURE__ */ React$1.forwardRef(function ScrollAreaRoot2
|
|
|
950
531
|
},
|
|
951
532
|
style: {
|
|
952
533
|
position: "relative",
|
|
953
|
-
[
|
|
954
|
-
[
|
|
534
|
+
[scrollAreaCornerHeight]: `${cornerSize.height}px`,
|
|
535
|
+
[scrollAreaCornerWidth]: `${cornerSize.width}px`
|
|
955
536
|
}
|
|
956
537
|
};
|
|
957
538
|
const element = useRenderElement("div", componentProps, {
|
|
@@ -1037,11 +618,17 @@ function normalizeOverflowEdgeThreshold(threshold) {
|
|
|
1037
618
|
};
|
|
1038
619
|
}
|
|
1039
620
|
var ScrollAreaViewportContext = /* @__PURE__ */ React$1.createContext(void 0);
|
|
621
|
+
var scrollAreaOverflowXStart = "--scroll-area-overflow-x-start";
|
|
622
|
+
var scrollAreaOverflowXEnd = "--scroll-area-overflow-x-end";
|
|
623
|
+
var scrollAreaOverflowYStart = "--scroll-area-overflow-y-start";
|
|
624
|
+
var scrollAreaOverflowYEnd = "--scroll-area-overflow-y-end";
|
|
625
|
+
var scrollAreaThumbHeight = "--scroll-area-thumb-height";
|
|
626
|
+
var scrollAreaThumbWidth = "--scroll-area-thumb-width";
|
|
1040
627
|
var OVERFLOW_EDGE_VARS = [
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
628
|
+
scrollAreaOverflowXStart,
|
|
629
|
+
scrollAreaOverflowXEnd,
|
|
630
|
+
scrollAreaOverflowYStart,
|
|
631
|
+
scrollAreaOverflowYEnd
|
|
1045
632
|
];
|
|
1046
633
|
var scrollAreaOverflowVarsRegistered = false;
|
|
1047
634
|
function removeCSSVariableInheritance() {
|
|
@@ -1135,12 +722,12 @@ var ScrollAreaViewport = /* @__PURE__ */ React$1.forwardRef(function ScrollAreaV
|
|
|
1135
722
|
height: clampedNextHeight
|
|
1136
723
|
}));
|
|
1137
724
|
if (scrollbarYEl && thumbYEl) {
|
|
1138
|
-
const thumbOffsetY = applyOverscrollThumb(thumbYEl,
|
|
725
|
+
const thumbOffsetY = applyOverscrollThumb(thumbYEl, scrollAreaThumbHeight, scrollTop, maxScrollTop, scrollableContentHeight, clampedNextHeight, scrollbarYEl.offsetHeight - clampedNextHeight - scrollbarYOffset - thumbYOffset);
|
|
1139
726
|
thumbYEl.style.transform = `translate3d(0,${thumbOffsetY}px,0)`;
|
|
1140
727
|
}
|
|
1141
728
|
if (scrollbarXEl && thumbXEl) {
|
|
1142
729
|
const maxThumbOffsetX = scrollbarXEl.offsetWidth - clampedNextWidth - scrollbarXOffset - thumbXOffset;
|
|
1143
|
-
const offsetX = applyOverscrollThumb(thumbXEl,
|
|
730
|
+
const offsetX = applyOverscrollThumb(thumbXEl, scrollAreaThumbWidth, direction === "rtl" ? -scrollLeft : scrollLeft, maxScrollLeft, scrollableContentWidth, clampedNextWidth, maxThumbOffsetX);
|
|
1144
731
|
thumbXEl.style.transform = `translate3d(${direction === "rtl" ? -offsetX : offsetX}px,0,0)`;
|
|
1145
732
|
}
|
|
1146
733
|
const overflowMetricsPx = [
|
|
@@ -1274,14 +861,14 @@ function useScrollAreaScrollbarContext() {
|
|
|
1274
861
|
return context;
|
|
1275
862
|
}
|
|
1276
863
|
var ScrollAreaScrollbar = /* @__PURE__ */ React$1.forwardRef(function ScrollAreaScrollbar2(componentProps, forwardedRef) {
|
|
1277
|
-
const { render, className, orientation = "vertical", keepMounted = false, style, ...elementProps } = componentProps;
|
|
864
|
+
const { render, className, orientation: orientation2 = "vertical", keepMounted = false, style, ...elementProps } = componentProps;
|
|
1278
865
|
const { hovering, scrollingX, scrollingY, hiddenState, scrollbarYRef, scrollbarXRef, viewportRef, thumbYRef, thumbXRef, handlePointerDown, handlePointerUp, handleScroll, disableViewportSnap, rootId, thumbSize, hasMeasuredScrollbar, viewportState } = useScrollAreaRootContext();
|
|
1279
|
-
const vertical =
|
|
866
|
+
const vertical = orientation2 === "vertical";
|
|
1280
867
|
const state = {
|
|
1281
868
|
...viewportState,
|
|
1282
869
|
hovering,
|
|
1283
870
|
scrolling: vertical ? scrollingY : scrollingX,
|
|
1284
|
-
orientation
|
|
871
|
+
orientation: orientation2
|
|
1285
872
|
};
|
|
1286
873
|
const direction = useDirection();
|
|
1287
874
|
const hideTrackUntilMeasured = !hasMeasuredScrollbar && !keepMounted;
|
|
@@ -1322,6 +909,7 @@ var ScrollAreaScrollbar = /* @__PURE__ */ React$1.forwardRef(function ScrollArea
|
|
|
1322
909
|
]);
|
|
1323
910
|
const props = {
|
|
1324
911
|
...rootId && { "data-id": `${rootId}-scrollbar` },
|
|
912
|
+
"aria-hidden": true,
|
|
1325
913
|
onPointerDown(event) {
|
|
1326
914
|
if (event.button !== 0) return;
|
|
1327
915
|
const target = getTarget(event.nativeEvent);
|
|
@@ -1353,6 +941,9 @@ var ScrollAreaScrollbar = /* @__PURE__ */ React$1.forwardRef(function ScrollArea
|
|
|
1353
941
|
});
|
|
1354
942
|
handlePointerDown(event);
|
|
1355
943
|
},
|
|
944
|
+
onMouseDown(event) {
|
|
945
|
+
event.preventDefault();
|
|
946
|
+
},
|
|
1356
947
|
onPointerUp: handlePointerUp,
|
|
1357
948
|
onPointerCancel: handlePointerUp,
|
|
1358
949
|
style: {
|
|
@@ -1363,14 +954,14 @@ var ScrollAreaScrollbar = /* @__PURE__ */ React$1.forwardRef(function ScrollArea
|
|
|
1363
954
|
visibility: hideTrackUntilMeasured ? "hidden" : void 0,
|
|
1364
955
|
...vertical ? {
|
|
1365
956
|
top: 0,
|
|
1366
|
-
bottom:
|
|
957
|
+
bottom: `var(${scrollAreaCornerHeight})`,
|
|
1367
958
|
insetInlineEnd: 0,
|
|
1368
|
-
[
|
|
959
|
+
[scrollAreaThumbHeight]: `${thumbSize.height}px`
|
|
1369
960
|
} : {
|
|
1370
961
|
insetInlineStart: 0,
|
|
1371
|
-
insetInlineEnd:
|
|
962
|
+
insetInlineEnd: `var(${scrollAreaCornerWidth})`,
|
|
1372
963
|
bottom: 0,
|
|
1373
|
-
[
|
|
964
|
+
[scrollAreaThumbWidth]: `${thumbSize.width}px`
|
|
1374
965
|
}
|
|
1375
966
|
}
|
|
1376
967
|
};
|
|
@@ -1382,20 +973,20 @@ var ScrollAreaScrollbar = /* @__PURE__ */ React$1.forwardRef(function ScrollArea
|
|
|
1382
973
|
});
|
|
1383
974
|
if (!shouldRender) return null;
|
|
1384
975
|
return /* @__PURE__ */ jsx(ScrollAreaScrollbarContext.Provider, {
|
|
1385
|
-
value:
|
|
976
|
+
value: orientation2,
|
|
1386
977
|
children: element
|
|
1387
978
|
});
|
|
1388
979
|
});
|
|
1389
980
|
var ScrollAreaThumb = /* @__PURE__ */ React$1.forwardRef(function ScrollAreaThumb2(componentProps, forwardedRef) {
|
|
1390
981
|
const { render, className, style, ...elementProps } = componentProps;
|
|
1391
982
|
const { thumbYRef, thumbXRef, handlePointerDown, handlePointerMove, handlePointerUp, scrollingX, scrollingY, hasMeasuredScrollbar } = useScrollAreaRootContext();
|
|
1392
|
-
const
|
|
1393
|
-
const vertical =
|
|
983
|
+
const orientation2 = useScrollAreaScrollbarContext();
|
|
984
|
+
const vertical = orientation2 === "vertical";
|
|
1394
985
|
return useRenderElement("div", componentProps, {
|
|
1395
986
|
ref: [forwardedRef, vertical ? thumbYRef : thumbXRef],
|
|
1396
987
|
state: {
|
|
1397
988
|
scrolling: vertical ? scrollingY : scrollingX,
|
|
1398
|
-
orientation
|
|
989
|
+
orientation: orientation2
|
|
1399
990
|
},
|
|
1400
991
|
props: [{
|
|
1401
992
|
onPointerDown: handlePointerDown,
|
|
@@ -1414,13 +1005,16 @@ var ScrollAreaCorner = /* @__PURE__ */ React$1.forwardRef(function ScrollAreaCor
|
|
|
1414
1005
|
const { cornerRef, cornerSize, hiddenState } = useScrollAreaRootContext();
|
|
1415
1006
|
const element = useRenderElement("div", componentProps, {
|
|
1416
1007
|
ref: [forwardedRef, cornerRef],
|
|
1417
|
-
props: [{
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1008
|
+
props: [{
|
|
1009
|
+
"aria-hidden": true,
|
|
1010
|
+
style: {
|
|
1011
|
+
position: "absolute",
|
|
1012
|
+
bottom: 0,
|
|
1013
|
+
insetInlineEnd: 0,
|
|
1014
|
+
width: cornerSize.width,
|
|
1015
|
+
height: cornerSize.height
|
|
1016
|
+
}
|
|
1017
|
+
}, elementProps]
|
|
1424
1018
|
});
|
|
1425
1019
|
if (hiddenState.corner) return null;
|
|
1426
1020
|
return element;
|
|
@@ -1441,11 +1035,11 @@ function ScrollArea({ className, children, ...props }) {
|
|
|
1441
1035
|
]
|
|
1442
1036
|
});
|
|
1443
1037
|
}
|
|
1444
|
-
function ScrollBar({ className, orientation = "vertical", ...props }) {
|
|
1038
|
+
function ScrollBar({ className, orientation: orientation2 = "vertical", ...props }) {
|
|
1445
1039
|
return /* @__PURE__ */ jsx(ScrollAreaScrollbar, {
|
|
1446
1040
|
"data-slot": "scroll-area-scrollbar",
|
|
1447
|
-
"data-orientation":
|
|
1448
|
-
orientation,
|
|
1041
|
+
"data-orientation": orientation2,
|
|
1042
|
+
orientation: orientation2,
|
|
1449
1043
|
className: cn("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent", className),
|
|
1450
1044
|
...props,
|
|
1451
1045
|
children: /* @__PURE__ */ jsx(ScrollAreaThumb, {
|
|
@@ -1454,808 +1048,9 @@ function ScrollBar({ className, orientation = "vertical", ...props }) {
|
|
|
1454
1048
|
})
|
|
1455
1049
|
});
|
|
1456
1050
|
}
|
|
1457
|
-
var MOBILE_BREAKPOINT = 768;
|
|
1458
|
-
function useIsMobile() {
|
|
1459
|
-
const [isMobile, setIsMobile] = React$1.useState(void 0);
|
|
1460
|
-
React$1.useEffect(() => {
|
|
1461
|
-
const mql = window.matchMedia(`(max-width: 767px)`);
|
|
1462
|
-
const onChange = () => {
|
|
1463
|
-
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
1464
|
-
};
|
|
1465
|
-
mql.addEventListener("change", onChange);
|
|
1466
|
-
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
1467
|
-
return () => mql.removeEventListener("change", onChange);
|
|
1468
|
-
}, []);
|
|
1469
|
-
return !!isMobile;
|
|
1470
|
-
}
|
|
1471
|
-
var SHEET_SURFACE_OFFSET = 4;
|
|
1472
|
-
function Sheet({ ...props }) {
|
|
1473
|
-
return /* @__PURE__ */ jsx(DialogRoot, {
|
|
1474
|
-
"data-slot": "sheet",
|
|
1475
|
-
...props
|
|
1476
|
-
});
|
|
1477
|
-
}
|
|
1478
|
-
function SheetPortal({ ...props }) {
|
|
1479
|
-
return /* @__PURE__ */ jsx(DialogPortal$1, {
|
|
1480
|
-
"data-slot": "sheet-portal",
|
|
1481
|
-
...props
|
|
1482
|
-
});
|
|
1483
|
-
}
|
|
1484
|
-
function SheetOverlay({ className, ...props }) {
|
|
1485
|
-
return /* @__PURE__ */ jsx(DialogBackdrop, {
|
|
1486
|
-
"data-slot": "sheet-overlay",
|
|
1487
|
-
className: cn("fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs", className),
|
|
1488
|
-
...props
|
|
1489
|
-
});
|
|
1490
|
-
}
|
|
1491
|
-
function SheetContent({ className, children, side = "right", showCloseButton = true, ...props }) {
|
|
1492
|
-
const substrate = useSurface();
|
|
1493
|
-
const level = Math.min(substrate + SHEET_SURFACE_OFFSET, 8);
|
|
1494
|
-
return /* @__PURE__ */ jsxs(SheetPortal, { children: [/* @__PURE__ */ jsx(SheetOverlay, {}), /* @__PURE__ */ jsx(DialogPopup, {
|
|
1495
|
-
"data-slot": "sheet-content",
|
|
1496
|
-
"data-side": side,
|
|
1497
|
-
className: cn("fixed z-50 flex flex-col gap-4 bg-clip-padding text-sm text-popover-foreground transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm", surfaceClasses(level), className),
|
|
1498
|
-
...props,
|
|
1499
|
-
children: /* @__PURE__ */ jsxs(SurfaceProvider, {
|
|
1500
|
-
value: level,
|
|
1501
|
-
children: [children, showCloseButton && /* @__PURE__ */ jsxs(DialogClose, {
|
|
1502
|
-
"data-slot": "sheet-close",
|
|
1503
|
-
render: /* @__PURE__ */ jsx(Button, {
|
|
1504
|
-
variant: "ghost",
|
|
1505
|
-
className: "absolute top-3 right-3",
|
|
1506
|
-
size: "icon-sm"
|
|
1507
|
-
}),
|
|
1508
|
-
children: [/* @__PURE__ */ jsx(X, {}), /* @__PURE__ */ jsx("span", {
|
|
1509
|
-
className: "sr-only",
|
|
1510
|
-
children: "Close"
|
|
1511
|
-
})]
|
|
1512
|
-
})]
|
|
1513
|
-
})
|
|
1514
|
-
})] });
|
|
1515
|
-
}
|
|
1516
|
-
function SheetHeader({ className, ...props }) {
|
|
1517
|
-
return /* @__PURE__ */ jsx("div", {
|
|
1518
|
-
"data-slot": "sheet-header",
|
|
1519
|
-
className: cn("flex flex-col gap-0.5 p-4", className),
|
|
1520
|
-
...props
|
|
1521
|
-
});
|
|
1522
|
-
}
|
|
1523
|
-
function SheetTitle({ className, ...props }) {
|
|
1524
|
-
return /* @__PURE__ */ jsx(DialogTitle$1, {
|
|
1525
|
-
"data-slot": "sheet-title",
|
|
1526
|
-
className: cn("font-heading text-base font-medium text-foreground", className),
|
|
1527
|
-
...props
|
|
1528
|
-
});
|
|
1529
|
-
}
|
|
1530
|
-
function SheetDescription({ className, ...props }) {
|
|
1531
|
-
return /* @__PURE__ */ jsx(DialogDescription$1, {
|
|
1532
|
-
"data-slot": "sheet-description",
|
|
1533
|
-
className: cn("text-sm text-muted-foreground", className),
|
|
1534
|
-
...props
|
|
1535
|
-
});
|
|
1536
|
-
}
|
|
1537
|
-
var TooltipRootContext = /* @__PURE__ */ React$1.createContext(void 0);
|
|
1538
|
-
function useTooltipRootContext(optional) {
|
|
1539
|
-
const context = React$1.useContext(TooltipRootContext);
|
|
1540
|
-
if (context === void 0 && !optional) throw new Error(formatErrorMessage(72));
|
|
1541
|
-
return context;
|
|
1542
|
-
}
|
|
1543
|
-
var selectors = {
|
|
1544
|
-
...popupStoreSelectors,
|
|
1545
|
-
disabled: (state) => state.disabled,
|
|
1546
|
-
instantType: (state) => state.instantType,
|
|
1547
|
-
isInstantPhase: (state) => state.isInstantPhase,
|
|
1548
|
-
trackCursorAxis: (state) => state.trackCursorAxis,
|
|
1549
|
-
disableHoverablePopup: (state) => state.disableHoverablePopup,
|
|
1550
|
-
lastOpenChangeReason: (state) => state.openChangeReason,
|
|
1551
|
-
closeOnClick: (state) => state.closeOnClick,
|
|
1552
|
-
closeDelay: (state) => state.closeDelay,
|
|
1553
|
-
adaptiveOrigin: (state) => state.adaptiveOrigin
|
|
1554
|
-
};
|
|
1555
|
-
var TooltipStore = class extends ReactStore {
|
|
1556
|
-
constructor(initialState, floatingId, nested) {
|
|
1557
|
-
const triggerElements = new PopupTriggerMap();
|
|
1558
|
-
super(createInitialState(initialState, triggerElements, floatingId, nested), createInitialContext(triggerElements), selectors);
|
|
1559
|
-
}
|
|
1560
|
-
setOpen = (nextOpen, eventDetails) => {
|
|
1561
|
-
applyPopupOpenChange(this, nextOpen, eventDetails, { extraState: { openChangeReason: eventDetails.reason } });
|
|
1562
|
-
};
|
|
1563
|
-
cancelPendingOpen(event) {
|
|
1564
|
-
this.state.floatingRootContext.dispatchOpenChange(false, createChangeEventDetails(triggerPress, event));
|
|
1565
|
-
}
|
|
1566
|
-
};
|
|
1567
|
-
function createInitialState(initialState, triggerElements, floatingId, nested = false) {
|
|
1568
|
-
const state = {
|
|
1569
|
-
...createInitialPopupStoreState(),
|
|
1570
|
-
disabled: false,
|
|
1571
|
-
instantType: void 0,
|
|
1572
|
-
isInstantPhase: false,
|
|
1573
|
-
trackCursorAxis: "none",
|
|
1574
|
-
disableHoverablePopup: false,
|
|
1575
|
-
openChangeReason: null,
|
|
1576
|
-
closeOnClick: true,
|
|
1577
|
-
closeDelay: 0,
|
|
1578
|
-
adaptiveOrigin: void 0,
|
|
1579
|
-
...initialState
|
|
1580
|
-
};
|
|
1581
|
-
state.floatingRootContext = createPopupFloatingRootContext(triggerElements, floatingId, nested);
|
|
1582
|
-
return state;
|
|
1583
|
-
}
|
|
1584
|
-
function createInitialContext(triggerElements) {
|
|
1585
|
-
return {
|
|
1586
|
-
popupRef: /* @__PURE__ */ React$1.createRef(),
|
|
1587
|
-
onOpenChange: void 0,
|
|
1588
|
-
onOpenChangeComplete: void 0,
|
|
1589
|
-
triggerElements
|
|
1590
|
-
};
|
|
1591
|
-
}
|
|
1592
|
-
var TooltipRoot = fastComponent(function TooltipRoot2(props) {
|
|
1593
|
-
const { disabled: disabled$1 = false, defaultOpen = false, open: openProp, disableHoverablePopup = false, trackCursorAxis = "none", actionsRef, onOpenChange, onOpenChangeComplete, handle, triggerId: triggerIdProp, defaultTriggerId: defaultTriggerIdProp = null, children } = props;
|
|
1594
|
-
const store = usePopupRootStore((floatingId, nested) => new TooltipStore({
|
|
1595
|
-
open: defaultOpen,
|
|
1596
|
-
openProp,
|
|
1597
|
-
activeTriggerId: defaultTriggerIdProp,
|
|
1598
|
-
triggerIdProp
|
|
1599
|
-
}, floatingId, nested));
|
|
1600
|
-
store.useControlledProp("openProp", openProp);
|
|
1601
|
-
store.useControlledProp("triggerIdProp", triggerIdProp);
|
|
1602
|
-
store.useContextCallback("onOpenChange", onOpenChange);
|
|
1603
|
-
store.useContextCallback("onOpenChangeComplete", onOpenChangeComplete);
|
|
1604
|
-
const openState = store.useState("open");
|
|
1605
|
-
const open = !disabled$1 && openState;
|
|
1606
|
-
const activeTriggerId = store.useState("activeTriggerId");
|
|
1607
|
-
const mounted = store.useState("mounted");
|
|
1608
|
-
const payload = store.useState("payload");
|
|
1609
|
-
store.useSyncedValues({
|
|
1610
|
-
trackCursorAxis,
|
|
1611
|
-
disableHoverablePopup,
|
|
1612
|
-
disabled: disabled$1
|
|
1613
|
-
});
|
|
1614
|
-
useImplicitActiveTrigger(store, { closeOnActiveTriggerUnmount: true });
|
|
1615
|
-
const { forceUnmount, transitionStatus } = useOpenStateTransitions(open, store);
|
|
1616
|
-
const isInstantPhase = store.useState("isInstantPhase");
|
|
1617
|
-
const instantType = store.useState("instantType");
|
|
1618
|
-
const lastOpenChangeReason = store.useState("lastOpenChangeReason");
|
|
1619
|
-
const previousInstantTypeRef = React$1.useRef(null);
|
|
1620
|
-
useIsoLayoutEffect(() => {
|
|
1621
|
-
if (openState && disabled$1) store.setOpen(false, createChangeEventDetails(disabled));
|
|
1622
|
-
}, [
|
|
1623
|
-
openState,
|
|
1624
|
-
disabled$1,
|
|
1625
|
-
store
|
|
1626
|
-
]);
|
|
1627
|
-
useIsoLayoutEffect(() => {
|
|
1628
|
-
if (transitionStatus === "ending" && lastOpenChangeReason === "none" || transitionStatus !== "ending" && isInstantPhase) {
|
|
1629
|
-
if (instantType !== "delay") previousInstantTypeRef.current = instantType;
|
|
1630
|
-
store.set("instantType", "delay");
|
|
1631
|
-
} else if (previousInstantTypeRef.current !== null) {
|
|
1632
|
-
store.set("instantType", previousInstantTypeRef.current);
|
|
1633
|
-
previousInstantTypeRef.current = null;
|
|
1634
|
-
}
|
|
1635
|
-
}, [
|
|
1636
|
-
transitionStatus,
|
|
1637
|
-
isInstantPhase,
|
|
1638
|
-
lastOpenChangeReason,
|
|
1639
|
-
instantType,
|
|
1640
|
-
store
|
|
1641
|
-
]);
|
|
1642
|
-
useIsoLayoutEffect(() => {
|
|
1643
|
-
if (open) {
|
|
1644
|
-
if (activeTriggerId == null) store.set("payload", void 0);
|
|
1645
|
-
}
|
|
1646
|
-
}, [
|
|
1647
|
-
store,
|
|
1648
|
-
activeTriggerId,
|
|
1649
|
-
open
|
|
1650
|
-
]);
|
|
1651
|
-
React$1.useImperativeHandle(actionsRef, () => ({
|
|
1652
|
-
unmount: forceUnmount,
|
|
1653
|
-
close: () => store.setOpen(false, createChangeEventDetails(imperativeAction))
|
|
1654
|
-
}), [forceUnmount, store]);
|
|
1655
|
-
const shouldRenderInteractions = open || mounted || !disabled$1 && trackCursorAxis !== "none";
|
|
1656
|
-
return /* @__PURE__ */ jsxs(TooltipRootContext.Provider, {
|
|
1657
|
-
value: store,
|
|
1658
|
-
children: [
|
|
1659
|
-
handle && /* @__PURE__ */ jsx(PopupHandleAttachment, {
|
|
1660
|
-
handle,
|
|
1661
|
-
store
|
|
1662
|
-
}),
|
|
1663
|
-
shouldRenderInteractions && /* @__PURE__ */ jsx(TooltipInteractions, {
|
|
1664
|
-
store,
|
|
1665
|
-
disabled: disabled$1,
|
|
1666
|
-
trackCursorAxis
|
|
1667
|
-
}),
|
|
1668
|
-
typeof children === "function" ? children({ payload }) : children
|
|
1669
|
-
]
|
|
1670
|
-
});
|
|
1671
|
-
});
|
|
1672
|
-
function TooltipInteractions({ store, disabled: disabled2, trackCursorAxis }) {
|
|
1673
|
-
const floatingRootContext = store.useState("floatingRootContext");
|
|
1674
|
-
const dismiss = useDismiss(floatingRootContext, {
|
|
1675
|
-
enabled: !disabled2,
|
|
1676
|
-
referencePress: () => store.select("closeOnClick")
|
|
1677
|
-
});
|
|
1678
|
-
const clientPoint = useClientPoint(floatingRootContext, {
|
|
1679
|
-
enabled: !disabled2 && trackCursorAxis !== "none",
|
|
1680
|
-
axis: trackCursorAxis === "none" ? void 0 : trackCursorAxis
|
|
1681
|
-
});
|
|
1682
|
-
const triggerProps = React$1.useMemo(() => mergeProps(clientPoint.reference, dismiss.reference), [clientPoint.reference, dismiss.reference]);
|
|
1683
|
-
usePopupInteractionProps(store, {
|
|
1684
|
-
activeTriggerProps: triggerProps,
|
|
1685
|
-
inactiveTriggerProps: triggerProps,
|
|
1686
|
-
popupProps: dismiss.floating ?? EMPTY_OBJECT
|
|
1687
|
-
});
|
|
1688
|
-
return null;
|
|
1689
|
-
}
|
|
1690
|
-
var TooltipProviderContext = /* @__PURE__ */ React$1.createContext(void 0);
|
|
1691
|
-
function useTooltipProviderContext() {
|
|
1692
|
-
return React$1.useContext(TooltipProviderContext);
|
|
1693
|
-
}
|
|
1694
|
-
var TOOLTIP_TRIGGER_IDENTIFIER = "data-base-ui-tooltip-trigger";
|
|
1695
|
-
function getTargetElement(event) {
|
|
1696
|
-
if ("composedPath" in event) {
|
|
1697
|
-
const path = event.composedPath();
|
|
1698
|
-
for (let i = 0; i < path.length; i += 1) {
|
|
1699
|
-
const element = path[i];
|
|
1700
|
-
if (isElement(element)) return element;
|
|
1701
|
-
}
|
|
1702
|
-
}
|
|
1703
|
-
const target = event.target;
|
|
1704
|
-
if (isElement(target)) return target;
|
|
1705
|
-
return null;
|
|
1706
|
-
}
|
|
1707
|
-
function closestEnabledTooltipTrigger(element) {
|
|
1708
|
-
let current = element;
|
|
1709
|
-
while (current) {
|
|
1710
|
-
const trigger = current.closest(`[${TOOLTIP_TRIGGER_IDENTIFIER}]`);
|
|
1711
|
-
if (trigger) return trigger;
|
|
1712
|
-
const root = current.getRootNode();
|
|
1713
|
-
current = "host" in root && isElement(root.host) ? root.host : null;
|
|
1714
|
-
}
|
|
1715
|
-
return null;
|
|
1716
|
-
}
|
|
1717
|
-
var TooltipTrigger$1 = fastComponentRef(function TooltipTrigger(componentProps, forwardedRef) {
|
|
1718
|
-
const { render, className, style, handle, payload, disabled: disabledProp, delay: delay2, closeOnClick = true, closeDelay, id: idProp, ...elementProps } = componentProps;
|
|
1719
|
-
const rootContext = useTooltipRootContext(true);
|
|
1720
|
-
const store = usePopupHandleStore(handle) ?? rootContext;
|
|
1721
|
-
if (!store) throw new Error(formatErrorMessage(82));
|
|
1722
|
-
const thisTriggerId = useBaseUiId(idProp);
|
|
1723
|
-
const isTriggerActive = store.useState("isTriggerActive", thisTriggerId);
|
|
1724
|
-
const isOpenedByThisTrigger = store.useState("isOpenedByTrigger", thisTriggerId);
|
|
1725
|
-
const floatingRootContext = store.useState("floatingRootContext");
|
|
1726
|
-
const triggerElementRef = React$1.useRef(null);
|
|
1727
|
-
const delayWithDefault = delay2 ?? 600;
|
|
1728
|
-
const closeDelayWithDefault = closeDelay ?? 0;
|
|
1729
|
-
const { registerTrigger, isMountedByThisTrigger } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store, {
|
|
1730
|
-
payload,
|
|
1731
|
-
closeOnClick,
|
|
1732
|
-
closeDelay: closeDelayWithDefault
|
|
1733
|
-
});
|
|
1734
|
-
const providerDelay = useTooltipProviderContext();
|
|
1735
|
-
const { delayRef, isInstantPhase, hasProvider } = useDelayGroup(floatingRootContext, { open: isOpenedByThisTrigger });
|
|
1736
|
-
const hoverInteraction = useHoverInteractionSharedState(floatingRootContext);
|
|
1737
|
-
store.useSyncedValue("isInstantPhase", isInstantPhase);
|
|
1738
|
-
const rootDisabled = store.useState("disabled");
|
|
1739
|
-
const disabled2 = disabledProp ?? rootDisabled;
|
|
1740
|
-
const disabledRef = useValueAsRef(disabled2);
|
|
1741
|
-
const trackCursorAxis = store.useState("trackCursorAxis");
|
|
1742
|
-
const disableHoverablePopup = store.useState("disableHoverablePopup");
|
|
1743
|
-
const isNestedTriggerHoveredRef = React$1.useRef(false);
|
|
1744
|
-
const nestedTriggerOpenTimeout = useTimeout();
|
|
1745
|
-
const pointerTypeRef = React$1.useRef(void 0);
|
|
1746
|
-
function getOpenDelay() {
|
|
1747
|
-
if (!hasProvider) return delayWithDefault;
|
|
1748
|
-
return getDelay(delayRef.current, "open") === 0 ? 0 : delay2 ?? providerDelay ?? 600;
|
|
1749
|
-
}
|
|
1750
|
-
function isEnabledNestedTriggerTarget(target) {
|
|
1751
|
-
const triggerEl = triggerElementRef.current;
|
|
1752
|
-
if (!triggerEl || !target) return false;
|
|
1753
|
-
const nearestTrigger = closestEnabledTooltipTrigger(target);
|
|
1754
|
-
return nearestTrigger !== null && nearestTrigger !== triggerEl && contains(triggerEl, nearestTrigger);
|
|
1755
|
-
}
|
|
1756
|
-
function detectNestedTriggerHover(target) {
|
|
1757
|
-
const nestedTriggerHovered = isEnabledNestedTriggerTarget(target);
|
|
1758
|
-
isNestedTriggerHoveredRef.current = nestedTriggerHovered;
|
|
1759
|
-
if (nestedTriggerHovered) {
|
|
1760
|
-
hoverInteraction.openChangeTimeout.clear();
|
|
1761
|
-
hoverInteraction.restTimeout.clear();
|
|
1762
|
-
hoverInteraction.restTimeoutPending = false;
|
|
1763
|
-
nestedTriggerOpenTimeout.clear();
|
|
1764
|
-
}
|
|
1765
|
-
return nestedTriggerHovered;
|
|
1766
|
-
}
|
|
1767
|
-
const hoverProps = useHoverReferenceInteraction(floatingRootContext, {
|
|
1768
|
-
enabled: !disabled2,
|
|
1769
|
-
mouseOnly: true,
|
|
1770
|
-
move: false,
|
|
1771
|
-
handleClose: !disableHoverablePopup && trackCursorAxis !== "both" ? safePolygon() : null,
|
|
1772
|
-
restMs: getOpenDelay,
|
|
1773
|
-
delay() {
|
|
1774
|
-
if (closeDelay == null && hasProvider) return { close: getDelay(delayRef.current, "close") };
|
|
1775
|
-
return { close: closeDelayWithDefault };
|
|
1776
|
-
},
|
|
1777
|
-
triggerElementRef,
|
|
1778
|
-
isActiveTrigger: isTriggerActive,
|
|
1779
|
-
isClosing: () => store.select("transitionStatus") === "ending",
|
|
1780
|
-
shouldOpen() {
|
|
1781
|
-
return !isNestedTriggerHoveredRef.current;
|
|
1782
|
-
}
|
|
1783
|
-
});
|
|
1784
|
-
const focusProps = useFocus(floatingRootContext, { enabled: !disabled2 }).reference;
|
|
1785
|
-
const handleNestedTriggerHover = (event) => {
|
|
1786
|
-
const wasNestedTriggerHovered = isNestedTriggerHoveredRef.current;
|
|
1787
|
-
const target = getTargetElement(event);
|
|
1788
|
-
const nestedTriggerHovered = detectNestedTriggerHover(target);
|
|
1789
|
-
const triggerEl = triggerElementRef.current;
|
|
1790
|
-
const targetInsideTrigger = triggerEl && target && contains(triggerEl, target);
|
|
1791
|
-
if (nestedTriggerHovered && store.select("open") && store.select("lastOpenChangeReason") === "trigger-hover") {
|
|
1792
|
-
store.setOpen(false, createChangeEventDetails(triggerHover, event));
|
|
1793
|
-
return;
|
|
1794
|
-
}
|
|
1795
|
-
if (wasNestedTriggerHovered && !nestedTriggerHovered && targetInsideTrigger && !disabledRef.current && !store.select("open") && triggerEl && isMouseLikePointerType(pointerTypeRef.current)) {
|
|
1796
|
-
const open = () => {
|
|
1797
|
-
if (!isNestedTriggerHoveredRef.current && !disabledRef.current && !store.select("open")) store.setOpen(true, createChangeEventDetails(triggerHover, event, triggerEl));
|
|
1798
|
-
};
|
|
1799
|
-
const openDelay = getOpenDelay();
|
|
1800
|
-
if (openDelay === 0) {
|
|
1801
|
-
nestedTriggerOpenTimeout.clear();
|
|
1802
|
-
open();
|
|
1803
|
-
} else nestedTriggerOpenTimeout.start(openDelay, open);
|
|
1804
|
-
}
|
|
1805
|
-
};
|
|
1806
|
-
const rootTriggerProps = store.useState("triggerProps", isMountedByThisTrigger);
|
|
1807
|
-
return useRenderElement("button", componentProps, {
|
|
1808
|
-
state: { open: isOpenedByThisTrigger },
|
|
1809
|
-
ref: [
|
|
1810
|
-
forwardedRef,
|
|
1811
|
-
registerTrigger,
|
|
1812
|
-
triggerElementRef
|
|
1813
|
-
],
|
|
1814
|
-
props: [
|
|
1815
|
-
hoverProps,
|
|
1816
|
-
focusProps,
|
|
1817
|
-
isMountedByThisTrigger || trackCursorAxis !== "none" ? rootTriggerProps : void 0,
|
|
1818
|
-
{
|
|
1819
|
-
onMouseOver(event) {
|
|
1820
|
-
handleNestedTriggerHover(event.nativeEvent);
|
|
1821
|
-
},
|
|
1822
|
-
onFocus(event) {
|
|
1823
|
-
if (isEnabledNestedTriggerTarget(getTargetElement(event.nativeEvent))) event.preventBaseUIHandler();
|
|
1824
|
-
},
|
|
1825
|
-
onMouseLeave() {
|
|
1826
|
-
isNestedTriggerHoveredRef.current = false;
|
|
1827
|
-
nestedTriggerOpenTimeout.clear();
|
|
1828
|
-
pointerTypeRef.current = void 0;
|
|
1829
|
-
},
|
|
1830
|
-
onPointerEnter(event) {
|
|
1831
|
-
pointerTypeRef.current = event.pointerType;
|
|
1832
|
-
},
|
|
1833
|
-
onPointerDown(event) {
|
|
1834
|
-
pointerTypeRef.current = event.pointerType;
|
|
1835
|
-
store.set("closeOnClick", closeOnClick);
|
|
1836
|
-
if (closeOnClick && !store.select("open")) store.cancelPendingOpen(event.nativeEvent);
|
|
1837
|
-
},
|
|
1838
|
-
onClick(event) {
|
|
1839
|
-
if (closeOnClick && !store.select("open")) store.cancelPendingOpen(event.nativeEvent);
|
|
1840
|
-
},
|
|
1841
|
-
id: thisTriggerId,
|
|
1842
|
-
"data-trigger-disabled": disabled2 ? "" : void 0,
|
|
1843
|
-
[TOOLTIP_TRIGGER_IDENTIFIER]: disabled2 ? void 0 : ""
|
|
1844
|
-
},
|
|
1845
|
-
elementProps
|
|
1846
|
-
],
|
|
1847
|
-
stateAttributesMapping: triggerOpenStateMapping
|
|
1848
|
-
});
|
|
1849
|
-
});
|
|
1850
|
-
var TooltipPortalContext = /* @__PURE__ */ React$1.createContext(void 0);
|
|
1851
|
-
function useTooltipPortalContext() {
|
|
1852
|
-
const value = React$1.useContext(TooltipPortalContext);
|
|
1853
|
-
if (value === void 0) throw new Error(formatErrorMessage(70));
|
|
1854
|
-
return value;
|
|
1855
|
-
}
|
|
1856
|
-
var TooltipPortal = /* @__PURE__ */ React$1.forwardRef(function TooltipPortal2(props, forwardedRef) {
|
|
1857
|
-
const { keepMounted = false, ...portalProps } = props;
|
|
1858
|
-
if (!(useTooltipRootContext().useState("mounted") || keepMounted)) return null;
|
|
1859
|
-
return /* @__PURE__ */ jsx(TooltipPortalContext.Provider, {
|
|
1860
|
-
value: keepMounted,
|
|
1861
|
-
children: /* @__PURE__ */ jsx(FloatingPortalLite, {
|
|
1862
|
-
ref: forwardedRef,
|
|
1863
|
-
...portalProps
|
|
1864
|
-
})
|
|
1865
|
-
});
|
|
1866
|
-
});
|
|
1867
|
-
var TooltipPositionerContext = /* @__PURE__ */ React$1.createContext(void 0);
|
|
1868
|
-
function useTooltipPositionerContext() {
|
|
1869
|
-
const context = React$1.useContext(TooltipPositionerContext);
|
|
1870
|
-
if (context === void 0) throw new Error(formatErrorMessage(71));
|
|
1871
|
-
return context;
|
|
1872
|
-
}
|
|
1873
|
-
var TooltipPositioner = /* @__PURE__ */ React$1.forwardRef(function TooltipPositioner2(componentProps, forwardedRef) {
|
|
1874
|
-
const { render, className, anchor, positionMethod = "absolute", side = "top", align = "center", sideOffset = 0, alignOffset = 0, collisionBoundary = "clipping-ancestors", collisionPadding = 5, arrowPadding = 5, sticky = false, disableAnchorTracking = false, collisionAvoidance = POPUP_COLLISION_AVOIDANCE, style, ...elementProps } = componentProps;
|
|
1875
|
-
const store = useTooltipRootContext();
|
|
1876
|
-
const keepMounted = useTooltipPortalContext();
|
|
1877
|
-
const open = store.useState("open");
|
|
1878
|
-
const mounted = store.useState("mounted");
|
|
1879
|
-
const trackCursorAxis = store.useState("trackCursorAxis");
|
|
1880
|
-
const disableHoverablePopup = store.useState("disableHoverablePopup");
|
|
1881
|
-
const floatingRootContext = store.useState("floatingRootContext");
|
|
1882
|
-
const instantType = store.useState("instantType");
|
|
1883
|
-
const transitionStatus = store.useState("transitionStatus");
|
|
1884
|
-
const adaptiveOrigin = store.useState("adaptiveOrigin");
|
|
1885
|
-
const positioning = useAnchorPositioning({
|
|
1886
|
-
anchor,
|
|
1887
|
-
positionMethod,
|
|
1888
|
-
floatingRootContext,
|
|
1889
|
-
mounted,
|
|
1890
|
-
side,
|
|
1891
|
-
sideOffset,
|
|
1892
|
-
align,
|
|
1893
|
-
alignOffset,
|
|
1894
|
-
collisionBoundary,
|
|
1895
|
-
collisionPadding,
|
|
1896
|
-
sticky,
|
|
1897
|
-
arrowPadding,
|
|
1898
|
-
disableAnchorTracking,
|
|
1899
|
-
keepMounted,
|
|
1900
|
-
collisionAvoidance,
|
|
1901
|
-
adaptiveOrigin
|
|
1902
|
-
});
|
|
1903
|
-
const state = React$1.useMemo(() => ({
|
|
1904
|
-
open,
|
|
1905
|
-
side: positioning.side,
|
|
1906
|
-
align: positioning.align,
|
|
1907
|
-
anchorHidden: positioning.anchorHidden,
|
|
1908
|
-
instant: trackCursorAxis !== "none" ? "tracking-cursor" : instantType
|
|
1909
|
-
}), [
|
|
1910
|
-
open,
|
|
1911
|
-
positioning.side,
|
|
1912
|
-
positioning.align,
|
|
1913
|
-
positioning.anchorHidden,
|
|
1914
|
-
trackCursorAxis,
|
|
1915
|
-
instantType
|
|
1916
|
-
]);
|
|
1917
|
-
const element = usePositioner(componentProps, state, {
|
|
1918
|
-
styles: positioning.positionerStyles,
|
|
1919
|
-
transitionStatus,
|
|
1920
|
-
props: elementProps,
|
|
1921
|
-
refs: [forwardedRef, store.useStateSetter("positionerElement")],
|
|
1922
|
-
hidden: !mounted,
|
|
1923
|
-
inert: !open || trackCursorAxis === "both" || disableHoverablePopup
|
|
1924
|
-
});
|
|
1925
|
-
return /* @__PURE__ */ jsx(TooltipPositionerContext.Provider, {
|
|
1926
|
-
value: positioning,
|
|
1927
|
-
children: element
|
|
1928
|
-
});
|
|
1929
|
-
});
|
|
1930
|
-
var TooltipPopup = /* @__PURE__ */ React$1.forwardRef(function TooltipPopup2(componentProps, forwardedRef) {
|
|
1931
|
-
const { render, className, style, ...elementProps } = componentProps;
|
|
1932
|
-
const store = useTooltipRootContext();
|
|
1933
|
-
const { side, align } = useTooltipPositionerContext();
|
|
1934
|
-
const open = store.useState("open");
|
|
1935
|
-
const instantType = store.useState("instantType");
|
|
1936
|
-
const transitionStatus = store.useState("transitionStatus");
|
|
1937
|
-
const popupProps = store.useState("popupProps");
|
|
1938
|
-
const floatingContext = store.useState("floatingRootContext");
|
|
1939
|
-
const disabled2 = store.useState("disabled");
|
|
1940
|
-
const closeDelay = store.useState("closeDelay");
|
|
1941
|
-
useOpenChangeComplete({
|
|
1942
|
-
open,
|
|
1943
|
-
ref: store.context.popupRef,
|
|
1944
|
-
onComplete() {
|
|
1945
|
-
if (open) store.context.onOpenChangeComplete?.(true);
|
|
1946
|
-
}
|
|
1947
|
-
});
|
|
1948
|
-
useHoverFloatingInteraction(floatingContext, {
|
|
1949
|
-
enabled: !disabled2,
|
|
1950
|
-
closeDelay
|
|
1951
|
-
});
|
|
1952
|
-
const setPopupElement = store.useStateSetter("popupElement");
|
|
1953
|
-
return useRenderElement("div", componentProps, {
|
|
1954
|
-
state: {
|
|
1955
|
-
open,
|
|
1956
|
-
side,
|
|
1957
|
-
align,
|
|
1958
|
-
instant: instantType,
|
|
1959
|
-
transitionStatus
|
|
1960
|
-
},
|
|
1961
|
-
ref: [
|
|
1962
|
-
forwardedRef,
|
|
1963
|
-
store.context.popupRef,
|
|
1964
|
-
setPopupElement
|
|
1965
|
-
],
|
|
1966
|
-
props: [
|
|
1967
|
-
FOCUSABLE_POPUP_PROPS,
|
|
1968
|
-
popupProps,
|
|
1969
|
-
getDisabledMountTransitionStyles(transitionStatus),
|
|
1970
|
-
elementProps
|
|
1971
|
-
],
|
|
1972
|
-
stateAttributesMapping: popupTransitionStateMapping
|
|
1973
|
-
});
|
|
1974
|
-
});
|
|
1975
|
-
var TooltipArrow = /* @__PURE__ */ React$1.forwardRef(function TooltipArrow2(componentProps, forwardedRef) {
|
|
1976
|
-
const { render, className, style, ...elementProps } = componentProps;
|
|
1977
|
-
const store = useTooltipRootContext();
|
|
1978
|
-
const { arrowRef, side, align, arrowUncentered, arrowStyles } = useTooltipPositionerContext();
|
|
1979
|
-
const state = {
|
|
1980
|
-
open: store.useState("open"),
|
|
1981
|
-
side,
|
|
1982
|
-
align,
|
|
1983
|
-
uncentered: arrowUncentered,
|
|
1984
|
-
instant: store.useState("instantType")
|
|
1985
|
-
};
|
|
1986
|
-
return useRenderElement("div", componentProps, {
|
|
1987
|
-
state,
|
|
1988
|
-
ref: [forwardedRef, arrowRef],
|
|
1989
|
-
props: [{
|
|
1990
|
-
style: arrowStyles,
|
|
1991
|
-
"aria-hidden": true
|
|
1992
|
-
}, elementProps],
|
|
1993
|
-
stateAttributesMapping: popupStateMapping
|
|
1994
|
-
});
|
|
1995
|
-
});
|
|
1996
|
-
function Tooltip({ ...props }) {
|
|
1997
|
-
return /* @__PURE__ */ jsx(TooltipRoot, {
|
|
1998
|
-
"data-slot": "tooltip",
|
|
1999
|
-
...props
|
|
2000
|
-
});
|
|
2001
|
-
}
|
|
2002
|
-
function TooltipTrigger2({ ...props }) {
|
|
2003
|
-
return /* @__PURE__ */ jsx(TooltipTrigger$1, {
|
|
2004
|
-
"data-slot": "tooltip-trigger",
|
|
2005
|
-
...props
|
|
2006
|
-
});
|
|
2007
|
-
}
|
|
2008
|
-
function TooltipContent({ className, side = "top", sideOffset = 4, align = "center", alignOffset = 0, children, ...props }) {
|
|
2009
|
-
return /* @__PURE__ */ jsx(TooltipPortal, { children: /* @__PURE__ */ jsx(TooltipPositioner, {
|
|
2010
|
-
align,
|
|
2011
|
-
alignOffset,
|
|
2012
|
-
side,
|
|
2013
|
-
sideOffset,
|
|
2014
|
-
className: "isolate z-50",
|
|
2015
|
-
children: /* @__PURE__ */ jsxs(TooltipPopup, {
|
|
2016
|
-
"data-slot": "tooltip-content",
|
|
2017
|
-
className: cn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
|
|
2018
|
-
...props,
|
|
2019
|
-
children: [children, /* @__PURE__ */ jsx(TooltipArrow, { className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5" })]
|
|
2020
|
-
})
|
|
2021
|
-
}) });
|
|
2022
|
-
}
|
|
2023
|
-
var SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
2024
|
-
var SIDEBAR_COOKIE_MAX_AGE = 604800;
|
|
2025
|
-
var SIDEBAR_WIDTH = "16rem";
|
|
2026
|
-
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
2027
|
-
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
2028
|
-
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
2029
|
-
var SidebarContext = React$1.createContext(null);
|
|
2030
|
-
function useSidebar() {
|
|
2031
|
-
const context = React$1.useContext(SidebarContext);
|
|
2032
|
-
if (!context) throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
2033
|
-
return context;
|
|
2034
|
-
}
|
|
2035
|
-
function SidebarProvider({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, enableKeyboardShortcut = true, persistState = true, ...props }) {
|
|
2036
|
-
const isMobile = useIsMobile();
|
|
2037
|
-
const [openMobile, setOpenMobile] = React$1.useState(false);
|
|
2038
|
-
const [internalOpen, setInternalOpen] = React$1.useState(defaultOpen);
|
|
2039
|
-
const open = openProp ?? internalOpen;
|
|
2040
|
-
const setOpen = React$1.useCallback((value) => {
|
|
2041
|
-
const openState = typeof value === "function" ? value(open) : value;
|
|
2042
|
-
if (setOpenProp) setOpenProp(openState);
|
|
2043
|
-
else setInternalOpen(openState);
|
|
2044
|
-
if (persistState) document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
|
|
2045
|
-
}, [
|
|
2046
|
-
setOpenProp,
|
|
2047
|
-
open,
|
|
2048
|
-
persistState
|
|
2049
|
-
]);
|
|
2050
|
-
const toggleSidebar = React$1.useCallback(() => {
|
|
2051
|
-
return isMobile ? setOpenMobile((prev) => !prev) : setOpen((prev) => !prev);
|
|
2052
|
-
}, [
|
|
2053
|
-
isMobile,
|
|
2054
|
-
setOpen,
|
|
2055
|
-
setOpenMobile
|
|
2056
|
-
]);
|
|
2057
|
-
const onGlobalKeyDown = React$1.useEffectEvent((event) => {
|
|
2058
|
-
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
2059
|
-
event.preventDefault();
|
|
2060
|
-
toggleSidebar();
|
|
2061
|
-
}
|
|
2062
|
-
});
|
|
2063
|
-
React$1.useEffect(() => {
|
|
2064
|
-
if (!enableKeyboardShortcut) return;
|
|
2065
|
-
const handleKeyDown = (event) => onGlobalKeyDown(event);
|
|
2066
|
-
window.addEventListener("keydown", handleKeyDown);
|
|
2067
|
-
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
2068
|
-
}, [enableKeyboardShortcut]);
|
|
2069
|
-
const state = open ? "expanded" : "collapsed";
|
|
2070
|
-
const contextValue = React$1.useMemo(() => ({
|
|
2071
|
-
state,
|
|
2072
|
-
open,
|
|
2073
|
-
setOpen,
|
|
2074
|
-
isMobile,
|
|
2075
|
-
openMobile,
|
|
2076
|
-
setOpenMobile,
|
|
2077
|
-
toggleSidebar
|
|
2078
|
-
}), [
|
|
2079
|
-
state,
|
|
2080
|
-
open,
|
|
2081
|
-
setOpen,
|
|
2082
|
-
isMobile,
|
|
2083
|
-
openMobile,
|
|
2084
|
-
setOpenMobile,
|
|
2085
|
-
toggleSidebar
|
|
2086
|
-
]);
|
|
2087
|
-
return /* @__PURE__ */ jsx(SidebarContext.Provider, {
|
|
2088
|
-
value: contextValue,
|
|
2089
|
-
children: /* @__PURE__ */ jsx("div", {
|
|
2090
|
-
"data-slot": "sidebar-wrapper",
|
|
2091
|
-
style: {
|
|
2092
|
-
"--sidebar-width": SIDEBAR_WIDTH,
|
|
2093
|
-
"--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
|
|
2094
|
-
...style
|
|
2095
|
-
},
|
|
2096
|
-
className: cn("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar", className),
|
|
2097
|
-
...props,
|
|
2098
|
-
children
|
|
2099
|
-
})
|
|
2100
|
-
});
|
|
2101
|
-
}
|
|
2102
|
-
function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas", className, children, dir, ...props }) {
|
|
2103
|
-
const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
|
|
2104
|
-
if (collapsible === "none") return /* @__PURE__ */ jsx("div", {
|
|
2105
|
-
"data-slot": "sidebar",
|
|
2106
|
-
className: cn("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground", className),
|
|
2107
|
-
...props,
|
|
2108
|
-
children
|
|
2109
|
-
});
|
|
2110
|
-
if (isMobile) return /* @__PURE__ */ jsx(Sheet, {
|
|
2111
|
-
open: openMobile,
|
|
2112
|
-
onOpenChange: setOpenMobile,
|
|
2113
|
-
...props,
|
|
2114
|
-
children: /* @__PURE__ */ jsxs(SheetContent, {
|
|
2115
|
-
dir,
|
|
2116
|
-
"data-sidebar": "sidebar",
|
|
2117
|
-
"data-slot": "sidebar",
|
|
2118
|
-
"data-mobile": "true",
|
|
2119
|
-
className: "w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",
|
|
2120
|
-
style: { "--sidebar-width": SIDEBAR_WIDTH_MOBILE },
|
|
2121
|
-
side,
|
|
2122
|
-
children: [/* @__PURE__ */ jsxs(SheetHeader, {
|
|
2123
|
-
className: "sr-only",
|
|
2124
|
-
children: [/* @__PURE__ */ jsx(SheetTitle, { children: "Sidebar" }), /* @__PURE__ */ jsx(SheetDescription, { children: "Displays the mobile sidebar." })]
|
|
2125
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
2126
|
-
className: "flex h-full w-full flex-col",
|
|
2127
|
-
children
|
|
2128
|
-
})]
|
|
2129
|
-
})
|
|
2130
|
-
});
|
|
2131
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
2132
|
-
className: "group peer hidden text-sidebar-foreground md:block",
|
|
2133
|
-
"data-state": state,
|
|
2134
|
-
"data-collapsible": state === "collapsed" ? collapsible : "",
|
|
2135
|
-
"data-variant": variant,
|
|
2136
|
-
"data-side": side,
|
|
2137
|
-
"data-slot": "sidebar",
|
|
2138
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
2139
|
-
"data-slot": "sidebar-gap",
|
|
2140
|
-
className: cn("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear", "group-data-[collapsible=offcanvas]:w-0", "group-data-[side=right]:rotate-180", variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)")
|
|
2141
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
2142
|
-
"data-slot": "sidebar-container",
|
|
2143
|
-
"data-side": side,
|
|
2144
|
-
className: cn("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex", variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l", className),
|
|
2145
|
-
...props,
|
|
2146
|
-
children: /* @__PURE__ */ jsx("div", {
|
|
2147
|
-
"data-sidebar": "sidebar",
|
|
2148
|
-
"data-slot": "sidebar-inner",
|
|
2149
|
-
className: "flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border",
|
|
2150
|
-
children
|
|
2151
|
-
})
|
|
2152
|
-
})]
|
|
2153
|
-
});
|
|
2154
|
-
}
|
|
2155
|
-
function SidebarHeader({ className, ...props }) {
|
|
2156
|
-
return /* @__PURE__ */ jsx("div", {
|
|
2157
|
-
"data-slot": "sidebar-header",
|
|
2158
|
-
"data-sidebar": "header",
|
|
2159
|
-
className: cn("flex flex-col gap-2 p-2", className),
|
|
2160
|
-
...props
|
|
2161
|
-
});
|
|
2162
|
-
}
|
|
2163
|
-
function SidebarContent({ className, ...props }) {
|
|
2164
|
-
return /* @__PURE__ */ jsx("div", {
|
|
2165
|
-
"data-slot": "sidebar-content",
|
|
2166
|
-
"data-sidebar": "content",
|
|
2167
|
-
className: cn("no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-auto group-data-[collapsible=icon]:overflow-hidden", className),
|
|
2168
|
-
...props
|
|
2169
|
-
});
|
|
2170
|
-
}
|
|
2171
|
-
function SidebarGroup({ className, ...props }) {
|
|
2172
|
-
return /* @__PURE__ */ jsx("div", {
|
|
2173
|
-
"data-slot": "sidebar-group",
|
|
2174
|
-
"data-sidebar": "group",
|
|
2175
|
-
className: cn("relative flex w-full min-w-0 flex-col p-2", className),
|
|
2176
|
-
...props
|
|
2177
|
-
});
|
|
2178
|
-
}
|
|
2179
|
-
function SidebarGroupLabel({ className, render, ...props }) {
|
|
2180
|
-
return useRender({
|
|
2181
|
-
defaultTagName: "div",
|
|
2182
|
-
props: mergeProps({ className: cn("flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", className) }, props),
|
|
2183
|
-
render,
|
|
2184
|
-
state: {
|
|
2185
|
-
slot: "sidebar-group-label",
|
|
2186
|
-
sidebar: "group-label"
|
|
2187
|
-
}
|
|
2188
|
-
});
|
|
2189
|
-
}
|
|
2190
|
-
function SidebarGroupContent({ className, ...props }) {
|
|
2191
|
-
return /* @__PURE__ */ jsx("div", {
|
|
2192
|
-
"data-slot": "sidebar-group-content",
|
|
2193
|
-
"data-sidebar": "group-content",
|
|
2194
|
-
className: cn("w-full text-sm", className),
|
|
2195
|
-
...props
|
|
2196
|
-
});
|
|
2197
|
-
}
|
|
2198
|
-
function SidebarMenu({ className, ...props }) {
|
|
2199
|
-
return /* @__PURE__ */ jsx("ul", {
|
|
2200
|
-
"data-slot": "sidebar-menu",
|
|
2201
|
-
"data-sidebar": "menu",
|
|
2202
|
-
className: cn("flex w-full min-w-0 flex-col gap-0", className),
|
|
2203
|
-
...props
|
|
2204
|
-
});
|
|
2205
|
-
}
|
|
2206
|
-
function SidebarMenuItem({ className, ...props }) {
|
|
2207
|
-
return /* @__PURE__ */ jsx("li", {
|
|
2208
|
-
"data-slot": "sidebar-menu-item",
|
|
2209
|
-
"data-sidebar": "menu-item",
|
|
2210
|
-
className: cn("group/menu-item relative", className),
|
|
2211
|
-
...props
|
|
2212
|
-
});
|
|
2213
|
-
}
|
|
2214
|
-
var sidebarMenuButtonVariants = cva("peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate", {
|
|
2215
|
-
variants: {
|
|
2216
|
-
variant: {
|
|
2217
|
-
default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
|
|
2218
|
-
outline: "bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"
|
|
2219
|
-
},
|
|
2220
|
-
size: {
|
|
2221
|
-
default: "h-8 text-sm",
|
|
2222
|
-
sm: "h-7 text-xs",
|
|
2223
|
-
lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!"
|
|
2224
|
-
}
|
|
2225
|
-
},
|
|
2226
|
-
defaultVariants: {
|
|
2227
|
-
variant: "default",
|
|
2228
|
-
size: "default"
|
|
2229
|
-
}
|
|
2230
|
-
});
|
|
2231
|
-
function SidebarMenuButton({ render, isActive = false, variant = "default", size = "default", tooltip, className, ...props }) {
|
|
2232
|
-
const { isMobile, state } = useSidebar();
|
|
2233
|
-
const comp = useRender({
|
|
2234
|
-
defaultTagName: "button",
|
|
2235
|
-
props: mergeProps({ className: cn(sidebarMenuButtonVariants({
|
|
2236
|
-
variant,
|
|
2237
|
-
size
|
|
2238
|
-
}), className) }, props),
|
|
2239
|
-
render: !tooltip ? render : /* @__PURE__ */ jsx(TooltipTrigger2, { render }),
|
|
2240
|
-
state: {
|
|
2241
|
-
slot: "sidebar-menu-button",
|
|
2242
|
-
sidebar: "menu-button",
|
|
2243
|
-
size,
|
|
2244
|
-
active: isActive
|
|
2245
|
-
}
|
|
2246
|
-
});
|
|
2247
|
-
if (!tooltip) return comp;
|
|
2248
|
-
if (typeof tooltip === "string") tooltip = { children: tooltip };
|
|
2249
|
-
return /* @__PURE__ */ jsxs(Tooltip, { children: [comp, /* @__PURE__ */ jsx(TooltipContent, {
|
|
2250
|
-
side: "right",
|
|
2251
|
-
align: "center",
|
|
2252
|
-
hidden: state !== "collapsed" || isMobile,
|
|
2253
|
-
...tooltip
|
|
2254
|
-
})] });
|
|
2255
|
-
}
|
|
2256
1051
|
function RowSurface({ className, interactive, padding, tone, ...props }) {
|
|
2257
1052
|
return /* @__PURE__ */ jsx("div", {
|
|
2258
|
-
className: cn(
|
|
1053
|
+
className: cn(rowSurface({
|
|
2259
1054
|
interactive,
|
|
2260
1055
|
padding,
|
|
2261
1056
|
tone
|
|
@@ -2315,13 +1110,13 @@ function SettingsPane({ actions, children, description, title }) {
|
|
|
2315
1110
|
})]
|
|
2316
1111
|
});
|
|
2317
1112
|
}
|
|
2318
|
-
function SettingsCommitActions({ dirty, disabled
|
|
1113
|
+
function SettingsCommitActions({ dirty, disabled, onRevert, onSave, saving }) {
|
|
2319
1114
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [dirty ? /* @__PURE__ */ jsx(Button, {
|
|
2320
1115
|
type: "button",
|
|
2321
1116
|
variant: "ghost",
|
|
2322
1117
|
size: "icon-sm",
|
|
2323
1118
|
className: "text-muted-foreground transition-transform active:scale-[0.96]",
|
|
2324
|
-
disabled:
|
|
1119
|
+
disabled: disabled || saving,
|
|
2325
1120
|
onClick: onRevert,
|
|
2326
1121
|
"aria-label": "Revert changes",
|
|
2327
1122
|
children: /* @__PURE__ */ jsx(RotateCcw, {})
|
|
@@ -2330,7 +1125,7 @@ function SettingsCommitActions({ dirty, disabled: disabled2, onRevert, onSave, s
|
|
|
2330
1125
|
variant: "outline",
|
|
2331
1126
|
size: "sm",
|
|
2332
1127
|
className: cn(COMPACT_ACTION_BUTTON_CLASS, "transition-transform active:scale-[0.96]", dirty && "border-primary/30 text-primary"),
|
|
2333
|
-
disabled: !dirty ||
|
|
1128
|
+
disabled: !dirty || disabled || saving,
|
|
2334
1129
|
onClick: onSave,
|
|
2335
1130
|
children: [saving ? /* @__PURE__ */ jsx(LoaderCircle, {
|
|
2336
1131
|
className: "animate-spin",
|
|
@@ -2364,7 +1159,7 @@ function useOAuthLoginFlow({ onConfigured, onOAuthLogin, providerId }) {
|
|
|
2364
1159
|
onOAuthLogin,
|
|
2365
1160
|
providerId
|
|
2366
1161
|
]);
|
|
2367
|
-
const cancelLoginId =
|
|
1162
|
+
const cancelLoginId = useCallback(async (loginId) => {
|
|
2368
1163
|
if (!loginId || !onOAuthLoginRef.current) return;
|
|
2369
1164
|
try {
|
|
2370
1165
|
await onOAuthLoginRef.current({
|
|
@@ -2375,7 +1170,7 @@ function useOAuthLoginFlow({ onConfigured, onOAuthLogin, providerId }) {
|
|
|
2375
1170
|
} catch {
|
|
2376
1171
|
}
|
|
2377
1172
|
}, []);
|
|
2378
|
-
const resetLocal =
|
|
1173
|
+
const resetLocal = useCallback(() => {
|
|
2379
1174
|
loginIdRef.current = null;
|
|
2380
1175
|
startingRef.current = false;
|
|
2381
1176
|
setLogin(null);
|
|
@@ -2390,7 +1185,7 @@ function useOAuthLoginFlow({ onConfigured, onOAuthLogin, providerId }) {
|
|
|
2390
1185
|
cancelLoginId(loginId);
|
|
2391
1186
|
};
|
|
2392
1187
|
}, [cancelLoginId]);
|
|
2393
|
-
const applyResult =
|
|
1188
|
+
const applyResult = useCallback((result, generation) => {
|
|
2394
1189
|
if (generation !== generationRef.current) {
|
|
2395
1190
|
if (result.status === "waiting" && result.loginId) cancelLoginId(result.loginId);
|
|
2396
1191
|
return;
|
|
@@ -2416,7 +1211,7 @@ function useOAuthLoginFlow({ onConfigured, onOAuthLogin, providerId }) {
|
|
|
2416
1211
|
if (result.loginId) loginIdRef.current = result.loginId;
|
|
2417
1212
|
setLogin(result);
|
|
2418
1213
|
}, [cancelLoginId]);
|
|
2419
|
-
const start =
|
|
1214
|
+
const start = useCallback(async () => {
|
|
2420
1215
|
if (!onOAuthLoginRef.current || startingRef.current) return;
|
|
2421
1216
|
startingRef.current = true;
|
|
2422
1217
|
const generation = generationRef.current;
|
|
@@ -2443,7 +1238,7 @@ function useOAuthLoginFlow({ onConfigured, onOAuthLogin, providerId }) {
|
|
|
2443
1238
|
if (generation === generationRef.current) setBusy(false);
|
|
2444
1239
|
}
|
|
2445
1240
|
}, [applyResult, cancelLoginId]);
|
|
2446
|
-
const submitPrompt =
|
|
1241
|
+
const submitPrompt = useCallback(async () => {
|
|
2447
1242
|
const loginId = loginIdRef.current;
|
|
2448
1243
|
if (!onOAuthLoginRef.current || !loginId) return;
|
|
2449
1244
|
const generation = generationRef.current;
|
|
@@ -2463,7 +1258,7 @@ function useOAuthLoginFlow({ onConfigured, onOAuthLogin, providerId }) {
|
|
|
2463
1258
|
if (generation === generationRef.current) setBusy(false);
|
|
2464
1259
|
}
|
|
2465
1260
|
}, [applyResult, promptAnswer]);
|
|
2466
|
-
const cancel =
|
|
1261
|
+
const cancel = useCallback(async () => {
|
|
2467
1262
|
generationRef.current += 1;
|
|
2468
1263
|
const loginId = loginIdRef.current;
|
|
2469
1264
|
resetLocal();
|
|
@@ -3088,7 +1883,7 @@ function AddModelsDialog({ configuredProviderIds, discoverableProviderIds, disco
|
|
|
3088
1883
|
children: groupedCandidates.map(([provider, models]) => /* @__PURE__ */ jsxs("div", {
|
|
3089
1884
|
className: "flex flex-col gap-1",
|
|
3090
1885
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
3091
|
-
className: "px-2 text-
|
|
1886
|
+
className: "px-2 text-caption font-medium tracking-wide text-muted-foreground uppercase",
|
|
3092
1887
|
children: [providerLabel(provider), (activeCountByProvider.get(provider) ?? 0) > 0 ? /* @__PURE__ */ jsxs("span", {
|
|
3093
1888
|
className: "ml-1 font-normal normal-case tabular-nums",
|
|
3094
1889
|
children: [
|
|
@@ -3161,7 +1956,7 @@ function AddModelsDialog({ configuredProviderIds, discoverableProviderIds, disco
|
|
|
3161
1956
|
}
|
|
3162
1957
|
function ModelDefaultsSection({ draft, discoveringProviderId, modelDirty, modelFilter, modelOptions, onAddModels, onDiscoverProvider, onModelFilterChange, onRemoveModel, onSetDefaultModel, onRevert, onSave, providers, saving, settingsLoading }) {
|
|
3163
1958
|
const [addOpen, setAddOpen] = useState2(false);
|
|
3164
|
-
const
|
|
1959
|
+
const disabled = !draft || settingsLoading;
|
|
3165
1960
|
const normalizedFilter = modelFilter.trim().toLowerCase();
|
|
3166
1961
|
const configuredProviderIds = useMemo2(() => {
|
|
3167
1962
|
const ids = /* @__PURE__ */ new Set();
|
|
@@ -3242,7 +2037,7 @@ function ModelDefaultsSection({ draft, discoveringProviderId, modelDirty, modelF
|
|
|
3242
2037
|
] }),
|
|
3243
2038
|
actions: /* @__PURE__ */ jsx(SettingsCommitActions, {
|
|
3244
2039
|
dirty: modelDirty,
|
|
3245
|
-
disabled
|
|
2040
|
+
disabled,
|
|
3246
2041
|
onRevert,
|
|
3247
2042
|
onSave,
|
|
3248
2043
|
saving
|
|
@@ -3260,13 +2055,13 @@ function ModelDefaultsSection({ draft, discoveringProviderId, modelDirty, modelF
|
|
|
3260
2055
|
value: modelFilter,
|
|
3261
2056
|
onChange: (event) => onModelFilterChange(event.target.value),
|
|
3262
2057
|
placeholder: "Search listed models\u2026",
|
|
3263
|
-
disabled:
|
|
2058
|
+
disabled: disabled || listedModels.length === 0
|
|
3264
2059
|
})]
|
|
3265
2060
|
}), /* @__PURE__ */ jsxs(Button, {
|
|
3266
2061
|
type: "button",
|
|
3267
2062
|
variant: "outline",
|
|
3268
2063
|
size: "sm",
|
|
3269
|
-
disabled
|
|
2064
|
+
disabled,
|
|
3270
2065
|
onClick: openAddDialog,
|
|
3271
2066
|
children: [/* @__PURE__ */ jsx(Plus, { "data-icon": "inline-start" }), "Add models"]
|
|
3272
2067
|
})]
|
|
@@ -3283,7 +2078,7 @@ function ModelDefaultsSection({ draft, discoveringProviderId, modelDirty, modelF
|
|
|
3283
2078
|
type: "button",
|
|
3284
2079
|
variant: "outline",
|
|
3285
2080
|
size: "sm",
|
|
3286
|
-
disabled
|
|
2081
|
+
disabled,
|
|
3287
2082
|
onClick: openAddDialog,
|
|
3288
2083
|
children: [/* @__PURE__ */ jsx(Plus, { "data-icon": "inline-start" }), "Add models"]
|
|
3289
2084
|
}) : null]
|
|
@@ -3306,7 +2101,7 @@ function ModelDefaultsSection({ draft, discoveringProviderId, modelDirty, modelF
|
|
|
3306
2101
|
variant: "ghost",
|
|
3307
2102
|
size: "sm",
|
|
3308
2103
|
className: cn(HIT_AREA_EXPAND_DENSE_CLASS, "h-7 px-2 text-xs text-muted-foreground transition-[background-color,color,transform] duration-150 active:scale-[0.96]"),
|
|
3309
|
-
disabled
|
|
2104
|
+
disabled,
|
|
3310
2105
|
"aria-label": `Set ${model.name} as default`,
|
|
3311
2106
|
onClick: () => onSetDefaultModel(model),
|
|
3312
2107
|
children: [/* @__PURE__ */ jsx(Star, { "data-icon": "inline-start" }), "Set default"]
|
|
@@ -3315,7 +2110,7 @@ function ModelDefaultsSection({ draft, discoveringProviderId, modelDirty, modelF
|
|
|
3315
2110
|
variant: "ghost",
|
|
3316
2111
|
size: "sm",
|
|
3317
2112
|
className: cn(HIT_AREA_EXPAND_DENSE_CLASS, "h-7 px-2 text-xs text-muted-foreground transition-[background-color,color,transform] duration-150 hover:text-destructive active:scale-[0.96]"),
|
|
3318
|
-
disabled
|
|
2113
|
+
disabled,
|
|
3319
2114
|
"aria-label": `Remove ${model.name}`,
|
|
3320
2115
|
onClick: () => onRemoveModel(model),
|
|
3321
2116
|
children: [/* @__PURE__ */ jsx(Trash2, { "data-icon": "inline-start" }), "Remove"]
|
|
@@ -3808,7 +2603,7 @@ function AddProviderPickerPanel({ addPickerQuery, credentialProvidersLength, fil
|
|
|
3808
2603
|
}) : null, filteredPickerConfigured.length > 0 ? /* @__PURE__ */ jsxs("div", {
|
|
3809
2604
|
className: "flex flex-col gap-1",
|
|
3810
2605
|
children: [filteredPickerAvailable.length > 0 ? /* @__PURE__ */ jsx("p", {
|
|
3811
|
-
className: "px-2 pt-1 text-
|
|
2606
|
+
className: "px-2 pt-1 text-caption font-medium tracking-wide text-muted-foreground uppercase",
|
|
3812
2607
|
children: "Already configured"
|
|
3813
2608
|
}) : null, filteredPickerConfigured.map((provider) => /* @__PURE__ */ jsx(ProviderPickerRow, {
|
|
3814
2609
|
provider,
|
|
@@ -4371,7 +3166,7 @@ var DELIVERY_OPTIONS = [{
|
|
|
4371
3166
|
label: "One at a time"
|
|
4372
3167
|
}];
|
|
4373
3168
|
function HarnessRuntimeSection({ draft, updateDraft }) {
|
|
4374
|
-
const
|
|
3169
|
+
const disabled = !draft;
|
|
4375
3170
|
return /* @__PURE__ */ jsxs("div", {
|
|
4376
3171
|
className: "flex flex-col gap-2",
|
|
4377
3172
|
children: [
|
|
@@ -4381,7 +3176,7 @@ function HarnessRuntimeSection({ draft, updateDraft }) {
|
|
|
4381
3176
|
trailing: /* @__PURE__ */ jsx(Switch, {
|
|
4382
3177
|
"aria-label": "Compaction",
|
|
4383
3178
|
checked: draft?.compaction.enabled ?? false,
|
|
4384
|
-
disabled
|
|
3179
|
+
disabled,
|
|
4385
3180
|
onCheckedChange: (enabled) => updateDraft((current) => ({
|
|
4386
3181
|
...current,
|
|
4387
3182
|
compaction: {
|
|
@@ -4397,7 +3192,7 @@ function HarnessRuntimeSection({ draft, updateDraft }) {
|
|
|
4397
3192
|
trailing: /* @__PURE__ */ jsx(Switch, {
|
|
4398
3193
|
"aria-label": "Auto-retry",
|
|
4399
3194
|
checked: draft?.retry.enabled ?? false,
|
|
4400
|
-
disabled
|
|
3195
|
+
disabled,
|
|
4401
3196
|
onCheckedChange: (enabled) => updateDraft((current) => ({
|
|
4402
3197
|
...current,
|
|
4403
3198
|
retry: {
|
|
@@ -4412,7 +3207,7 @@ function HarnessRuntimeSection({ draft, updateDraft }) {
|
|
|
4412
3207
|
trailing: /* @__PURE__ */ jsx(Select, {
|
|
4413
3208
|
"aria-label": "Transport",
|
|
4414
3209
|
className: "w-[160px]",
|
|
4415
|
-
disabled
|
|
3210
|
+
disabled,
|
|
4416
3211
|
onValueChange: (value) => updateDraft((current) => ({
|
|
4417
3212
|
...current,
|
|
4418
3213
|
transport: value
|
|
@@ -4427,7 +3222,7 @@ function HarnessRuntimeSection({ draft, updateDraft }) {
|
|
|
4427
3222
|
trailing: /* @__PURE__ */ jsx(Select, {
|
|
4428
3223
|
"aria-label": "Steering",
|
|
4429
3224
|
className: "w-[160px]",
|
|
4430
|
-
disabled
|
|
3225
|
+
disabled,
|
|
4431
3226
|
onValueChange: (value) => updateDraft((current) => ({
|
|
4432
3227
|
...current,
|
|
4433
3228
|
steeringMode: value
|
|
@@ -4442,7 +3237,7 @@ function HarnessRuntimeSection({ draft, updateDraft }) {
|
|
|
4442
3237
|
trailing: /* @__PURE__ */ jsx(Select, {
|
|
4443
3238
|
"aria-label": "Follow-up",
|
|
4444
3239
|
className: "w-[160px]",
|
|
4445
|
-
disabled
|
|
3240
|
+
disabled,
|
|
4446
3241
|
onValueChange: (value) => updateDraft((current) => ({
|
|
4447
3242
|
...current,
|
|
4448
3243
|
followUpMode: value
|
|
@@ -4455,14 +3250,14 @@ function HarnessRuntimeSection({ draft, updateDraft }) {
|
|
|
4455
3250
|
});
|
|
4456
3251
|
}
|
|
4457
3252
|
function ResourcesSection({ draft, onEnableSkillCommandsChange, onExtensionsChange, onPackageRowsChange, onPromptsChange, onRevert, onSave, onSkillsChange, onThemesChange, packageError, packageRows, resourceDirty, resources, resourceSummary, saving, scope = "harness", settingsLoading, updateDraft }) {
|
|
4458
|
-
const
|
|
3253
|
+
const disabled = !draft || settingsLoading || !!packageError;
|
|
4459
3254
|
const catalogSubtitle = resourceSummary.total === 0 ? "Empty" : resourceSummary.reloadRequired > 0 ? `${resourceSummary.total} \xB7 ${resourceSummary.reloadRequired} reload` : `${resourceSummary.total}`;
|
|
4460
3255
|
return /* @__PURE__ */ jsx(SettingsPane, {
|
|
4461
3256
|
title: scope === "skills" ? "Skills" : "Pi Harness",
|
|
4462
3257
|
description: scope === "skills" ? "Pick detected workspace skills and slash-command discovery." : "Runtime (compaction, retry, transport) plus packages, extensions, prompts, and themes.",
|
|
4463
3258
|
actions: /* @__PURE__ */ jsx(SettingsCommitActions, {
|
|
4464
3259
|
dirty: resourceDirty,
|
|
4465
|
-
disabled
|
|
3260
|
+
disabled,
|
|
4466
3261
|
onRevert,
|
|
4467
3262
|
onSave,
|
|
4468
3263
|
saving
|
|
@@ -4801,7 +3596,7 @@ function useModelDefaultsForm({ draft, setDraft, updateDraft, settings, provider
|
|
|
4801
3596
|
]);
|
|
4802
3597
|
const modelBaseline = lastCommittedModelSettings.current ?? (settings ? comparableModelSettings(settings.effective) : null);
|
|
4803
3598
|
const modelDirty = !!draft && !!modelBaseline && !sameJson(comparableModelSettings(draft), modelBaseline);
|
|
4804
|
-
const resetCommittedModelBaseline =
|
|
3599
|
+
const resetCommittedModelBaseline = useCallback(() => {
|
|
4805
3600
|
lastCommittedModelSettings.current = null;
|
|
4806
3601
|
}, []);
|
|
4807
3602
|
const commitModelSettings = async (nextDraft, options) => {
|
|
@@ -5172,18 +3967,17 @@ function useSettingsForm() {
|
|
|
5172
3967
|
resetCommittedModelBaseline
|
|
5173
3968
|
};
|
|
5174
3969
|
}
|
|
5175
|
-
function
|
|
5176
|
-
return /* @__PURE__ */
|
|
5177
|
-
|
|
3970
|
+
function SettingsNavItem({ active, onClick, icon: Icon, label }) {
|
|
3971
|
+
return /* @__PURE__ */ jsxs("button", {
|
|
3972
|
+
type: "button",
|
|
5178
3973
|
onClick,
|
|
5179
|
-
|
|
5180
|
-
|
|
3974
|
+
className: cn("flex w-full items-center gap-2 rounded-lg px-2 py-1.5 text-left text-label transition-colors", active ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:bg-muted hover:text-foreground"),
|
|
3975
|
+
children: [/* @__PURE__ */ jsx(Icon, { className: "size-4 shrink-0" }), /* @__PURE__ */ jsx("span", { children: label })]
|
|
3976
|
+
});
|
|
5181
3977
|
}
|
|
5182
3978
|
function SettingsDialog({ open, onOpenChange, initialTab }) {
|
|
5183
3979
|
useEffect2(() => {
|
|
5184
|
-
|
|
5185
|
-
document.documentElement.dataset.density = preferences.density;
|
|
5186
|
-
document.documentElement.classList.toggle("reduce-motion", preferences.motion === "reduced");
|
|
3980
|
+
applyUiPreferencesToDocument(readUiPreferences());
|
|
5187
3981
|
}, []);
|
|
5188
3982
|
return /* @__PURE__ */ jsx(SettingsDialogSession, {
|
|
5189
3983
|
initialTab,
|
|
@@ -5270,6 +4064,7 @@ function SettingsDialogPaneContent({ activeTab, form, preferences, updatePrefere
|
|
|
5270
4064
|
label: "Density",
|
|
5271
4065
|
description: "Adjust spacing across chat and panels.",
|
|
5272
4066
|
children: /* @__PURE__ */ jsx(Select, {
|
|
4067
|
+
"aria-label": "Density",
|
|
5273
4068
|
value: preferences.density,
|
|
5274
4069
|
onValueChange: (value) => updatePreference("density", value),
|
|
5275
4070
|
options: [{
|
|
@@ -5285,6 +4080,7 @@ function SettingsDialogPaneContent({ activeTab, form, preferences, updatePrefere
|
|
|
5285
4080
|
label: "Motion",
|
|
5286
4081
|
description: "Respect the system setting or reduce UI motion.",
|
|
5287
4082
|
children: /* @__PURE__ */ jsx(Select, {
|
|
4083
|
+
"aria-label": "Motion",
|
|
5288
4084
|
value: preferences.motion,
|
|
5289
4085
|
onValueChange: (value) => updatePreference("motion", value),
|
|
5290
4086
|
options: [{
|
|
@@ -5310,6 +4106,7 @@ function SettingsDialogPaneContent({ activeTab, form, preferences, updatePrefere
|
|
|
5310
4106
|
label: "Streaming transcript",
|
|
5311
4107
|
description: "Follow new output or preserve the reading position.",
|
|
5312
4108
|
children: /* @__PURE__ */ jsx(Select, {
|
|
4109
|
+
"aria-label": "Streaming transcript",
|
|
5313
4110
|
value: preferences.transcript,
|
|
5314
4111
|
onValueChange: (value) => updatePreference("transcript", value),
|
|
5315
4112
|
options: [{
|
|
@@ -5418,9 +4215,7 @@ function SettingsDialogBody({ initialTab, onCloseAttemptRef, onOpenChange }) {
|
|
|
5418
4215
|
const [activeTab, setActiveTab] = useState2(() => initialTab ?? "appearance");
|
|
5419
4216
|
const [preferences, setPreferences] = useState2(readUiPreferences);
|
|
5420
4217
|
useEffect2(() => {
|
|
5421
|
-
|
|
5422
|
-
document.documentElement.dataset.density = preferences.density;
|
|
5423
|
-
document.documentElement.classList.toggle("reduce-motion", preferences.motion === "reduced");
|
|
4218
|
+
writeUiPreferences(preferences);
|
|
5424
4219
|
}, [preferences]);
|
|
5425
4220
|
const updatePreference = (key, value) => {
|
|
5426
4221
|
setPreferences((current) => ({
|
|
@@ -5481,25 +4276,32 @@ function SettingsDialogBody({ initialTab, onCloseAttemptRef, onOpenChange }) {
|
|
|
5481
4276
|
className: "sr-only",
|
|
5482
4277
|
children: "Customize your settings here."
|
|
5483
4278
|
}),
|
|
5484
|
-
/* @__PURE__ */ jsxs(
|
|
5485
|
-
className: "h-full min-h-0 min-w-0",
|
|
5486
|
-
|
|
5487
|
-
|
|
5488
|
-
|
|
5489
|
-
|
|
5490
|
-
|
|
5491
|
-
|
|
5492
|
-
|
|
5493
|
-
|
|
5494
|
-
|
|
5495
|
-
|
|
5496
|
-
|
|
5497
|
-
|
|
5498
|
-
|
|
5499
|
-
|
|
5500
|
-
|
|
5501
|
-
|
|
5502
|
-
|
|
4279
|
+
/* @__PURE__ */ jsxs("div", {
|
|
4280
|
+
className: "flex h-full min-h-0 min-w-0",
|
|
4281
|
+
children: [/* @__PURE__ */ jsxs("nav", {
|
|
4282
|
+
"aria-label": "Settings sections",
|
|
4283
|
+
className: "hidden h-full w-52 shrink-0 flex-col border-r border-border bg-sidebar sm:flex",
|
|
4284
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
4285
|
+
className: "px-4 pt-5 pb-2 text-label font-semibold",
|
|
4286
|
+
children: "Settings"
|
|
4287
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
4288
|
+
className: "min-h-0 flex-1 overflow-y-auto px-2 pb-4",
|
|
4289
|
+
children: SETTINGS_SECTION_GROUPS.map((group) => /* @__PURE__ */ jsxs("div", {
|
|
4290
|
+
className: "py-2",
|
|
4291
|
+
children: [/* @__PURE__ */ jsx("p", {
|
|
4292
|
+
className: "px-2 pb-1 text-caption font-medium uppercase tracking-wide text-muted-foreground",
|
|
4293
|
+
children: group.label
|
|
4294
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
4295
|
+
className: "flex flex-col gap-0.5",
|
|
4296
|
+
children: SETTINGS_SECTIONS.filter((section) => section.group === group.id).map((section) => /* @__PURE__ */ jsx(SettingsNavItem, {
|
|
4297
|
+
active: activeTab === section.id,
|
|
4298
|
+
onClick: () => setActiveTab(section.id),
|
|
4299
|
+
icon: section.icon,
|
|
4300
|
+
label: section.title
|
|
4301
|
+
}, section.id))
|
|
4302
|
+
})]
|
|
4303
|
+
}, group.id))
|
|
4304
|
+
})]
|
|
5503
4305
|
}), /* @__PURE__ */ jsxs("main", {
|
|
5504
4306
|
className: "flex h-full min-h-0 min-w-0 flex-1 flex-col overflow-hidden",
|
|
5505
4307
|
children: [
|