@qredence/fleet 0.6.1 → 0.6.3
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 +17 -0
- package/dist/web/client/assets/DialogTitle-DiAm7YNe.js +1 -0
- package/dist/web/client/assets/agent-disclosure-CMrxF7L-.js +1 -0
- package/dist/web/client/assets/alert-dialog-CYE37KMM.js +1 -0
- package/dist/web/client/assets/analytics-stub-C2vgmGm_.js +1 -0
- package/dist/web/client/assets/artifacts-panel-ClDpGWOU.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-BVMnC5Qh.js +52 -0
- package/dist/web/client/assets/chat-command-palette-YuyaJNbi.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-DXqV2NLy.js +1 -0
- package/dist/web/client/assets/collapsible-CUxOjhDJ.js +1 -0
- package/dist/web/client/assets/command-Cw4X8Bpk.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-BzcIOvFC.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-BYRr-xTy.js} +1 -1
- package/dist/web/client/assets/gauge-BsDqNM1A.js +1 -0
- package/dist/web/client/assets/git-branch-CTq9aACS.js +1 -0
- package/dist/web/client/assets/globals-BtCXZXL_.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-B9aXxpOv.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-CHD8lMAl.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-C4e9FOVR.js} +38 -38
- 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-ClVvphe0.js +1 -0
- package/dist/web/client/assets/provider-label-CwZ-KDxk.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-BnYCffmM.js +2 -0
- package/dist/web/client/assets/{rotate-ccw-WNFNkKQD.js → rotate-ccw-CfGhzOv7.js} +1 -1
- package/dist/web/client/assets/routes-DUontXSG.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-Bd3dsE2D.js +1395 -0
- package/dist/web/client/assets/session-tree-panel-CM4_wwrM.js +1 -0
- package/dist/web/client/assets/settings-dialog-DMTD9m6z.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/sparkles-BY5MFyk6.js +1 -0
- 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-BESrXxAR.js} +1 -1
- package/dist/web/client/assets/subagent-transcript-CAqFJfMj.js +1 -0
- package/dist/web/client/assets/subagents-panel-8aKOwWLs.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-mL3ONUUA.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-Cm8xE-Rb-TMLYN3GY.js +93 -0
- package/dist/web/server/{artifacts-panel-D3ySO--V-XSL53CXL.js → artifacts-panel-CwLVBqyi-CDORJY75.js} +37 -41
- package/dist/web/server/{chat-command-palette-kAbXhWVg-TJWXH2WW.js → chat-command-palette-DUha04ia-5OV7WVJZ.js} +20 -18
- package/dist/web/server/{chunk-SALXCFVO.js → chunk-33QA7BQJ.js} +19 -1
- package/dist/web/server/chunk-3Q3QKLHC.js +386 -0
- package/dist/web/server/chunk-4EBSM4JR.js +74 -0
- package/dist/web/server/{chunk-5UCAJBAH.js → chunk-5RTGRTPD.js} +82 -49
- 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-NNKJTKOQ.js → chunk-ADYZWC5L.js} +311 -281
- package/dist/web/server/{chunk-NJ4QEZHK.js → chunk-B2LF64HM.js} +7 -5
- package/dist/web/server/{chunk-OZO5ARFA.js → chunk-BQROC4PL.js} +11 -2
- package/dist/web/server/{chunk-NIZBFVJF.js → chunk-CAPTFJOC.js} +9 -7
- package/dist/web/server/{chunk-DJMHPJBP.js → chunk-CHEC7TWB.js} +3 -1
- package/dist/web/server/chunk-DLA5TLKX.js +164 -0
- package/dist/web/server/{chunk-PLYZ7P2Y.js → chunk-DP26GVWH.js} +43 -5
- package/dist/web/server/{chunk-MNBGB2SP.js → chunk-E5HALE4M.js} +4 -4
- package/dist/web/server/chunk-ETCO5KZK.js +113 -0
- package/dist/web/server/{chunk-NGCQJ33Y.js → chunk-FMAYMBRS.js} +1492 -1640
- package/dist/web/server/{chunk-KP2PNDGL.js → chunk-FTLJ66KU.js} +30 -33
- package/dist/web/server/{chunk-BLSX7WHW.js → chunk-H5D5DX3K.js} +23 -21
- package/dist/web/server/chunk-HGVJEUV4.js +102 -0
- 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-K6PTNSCW.js +31 -0
- package/dist/web/server/{chunk-AR7O7JXD.js → chunk-KBWUBWVJ.js} +24 -1
- package/dist/web/server/{chunk-O3HDELZ2.js → chunk-KZ35W5M7.js} +667 -661
- package/dist/web/server/{chunk-QIULBRTU.js → chunk-MJXXVQNA.js} +79 -84
- package/dist/web/server/{chunk-EAJTWMK5.js → chunk-NZ6KQT2X.js} +2 -2
- package/dist/web/server/{chunk-YGYOBX7G.js → chunk-O2IC376F.js} +1811 -53
- package/dist/web/server/chunk-OMPXUTMX.js +33 -0
- package/dist/web/server/{chunk-S3PQ6HKH.js → chunk-OVJYUWSQ.js} +2 -2
- package/dist/web/server/{chunk-JTCCQZLN.js → chunk-RJNGEU6C.js} +2 -2
- package/dist/web/server/{chunk-UCUFC553.js → chunk-RXUMFFUV.js} +3 -3
- package/dist/web/server/{chunk-DLUZFOG3.js → chunk-S2IBIJIG.js} +18 -22
- package/dist/web/server/{chunk-DO2O27B2.js → chunk-SDV3P3IW.js} +2 -2
- package/dist/web/server/{chunk-2DDWXTVG.js → chunk-T2UTBHJ4.js} +55 -11
- package/dist/web/server/chunk-TLNZNR7C.js +46 -0
- package/dist/web/server/{chunk-UL2725KQ.js → chunk-TR2GA5OF.js} +57 -49
- package/dist/web/server/{chunk-QFRCJWQQ.js → chunk-TU2WNRAL.js} +93 -32
- 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-3TIMGWWI.js → chunk-UM3RHJNZ.js} +2 -2
- package/dist/web/server/{chunk-ZIFSJ3HQ.js → chunk-V5IFFLZQ.js} +185 -109
- 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-D27LRYVT.js → chunk-XEG4JTND.js} +10 -9
- package/dist/web/server/{chunk-XIB6XNUX.js → chunk-XJ6TGSUB.js} +425 -404
- package/dist/web/server/{chunk-NWDI3OWB.js → chunk-XSOUURPF.js} +30 -26
- package/dist/web/server/{chunk-RIP3PBWT.js → chunk-YCCF676T.js} +4 -4
- package/dist/web/server/{chunk-4WBFCB4O.js → chunk-YDDDSVNB.js} +178 -269
- 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/{fork-picker-dialog-Ds6Tgtu3-DIBWN7MV.js → fork-picker-dialog-DeMiLZtS-WTRTTP64.js} +10 -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-GGXJUUKO.js} +14 -10
- package/dist/web/server/{model-selector-list-DxeGZoD2-P6S6FSJH.js → model-selector-list-BeGQHwKV-UJYFO4KX.js} +21 -19
- package/dist/web/server/{openui-renderer-MKFv6LlH-MDRSVFEY.js → openui-renderer-B4z18Brm-HSMKJ47D.js} +17 -17
- 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-DfG45nTQ-3VXEUYG5.js} +3336 -238
- package/dist/web/server/{routes-BGrVtPYF-SURPAJN6.js → routes-B9F9UfF1-UN2IVBMJ.js} +5156 -4242
- 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-CT65wuet-RQBMXHEZ.js +46 -0
- package/dist/web/server/session-tree-panel-rS0t1wbf-HNA6AJBY.js +229 -0
- package/dist/web/server/{settings-dialog-CK0FJlTg-HZRBAXDZ.js → settings-dialog-CqkrDSnm-LFEKSS7Y.js} +186 -1380
- package/dist/web/server/{subagent-chat-panel-gzamnTgK-PQ2TLLJF.js → subagent-chat-panel-Cf7QdDqH-DPPSVLSY.js} +31 -39
- package/dist/web/server/{subagents-panel-Berjd7HJ-EI5ZKC6V.js → subagents-panel-_JsUw-6t-MZWM5P45.js} +38 -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-Y6KGIVGP.js} +23 -30
- 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/shield-check-CkA2viVW.js +0 -1
- 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,90 +1,82 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
isModelPatternEnabled,
|
|
3
|
+
modelMatchesPattern,
|
|
4
|
+
modelPattern
|
|
5
|
+
} from "./chunk-WTYNN6EV.js";
|
|
6
|
+
import {
|
|
7
|
+
Keyboard,
|
|
8
|
+
Monitor,
|
|
9
|
+
Moon,
|
|
10
|
+
Sun
|
|
11
|
+
} from "./chunk-LJ6Y7DBH.js";
|
|
12
|
+
import {
|
|
9
13
|
ArrowLeft,
|
|
10
|
-
COMPACT_ACTION_BUTTON_CLASS,
|
|
11
14
|
Cpu,
|
|
12
|
-
HIT_AREA_EXPAND_CLASS,
|
|
13
|
-
HIT_AREA_EXPAND_DENSE_CLASS,
|
|
14
15
|
PROVIDER_METADATA,
|
|
15
16
|
ProviderBrandIcon,
|
|
16
17
|
Settings,
|
|
17
18
|
Spinner,
|
|
18
19
|
Trash2,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
getDelay,
|
|
22
|
-
safePolygon,
|
|
23
|
-
useHoverFloatingInteraction,
|
|
24
|
-
useHoverInteractionSharedState,
|
|
25
|
-
useHoverReferenceInteraction,
|
|
26
|
-
usePopupHandleStore
|
|
27
|
-
} from "./chunk-2JHTYWD5.js";
|
|
20
|
+
formatProviderLabel
|
|
21
|
+
} from "./chunk-3Q3QKLHC.js";
|
|
28
22
|
import {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
readUiPreferences
|
|
34
|
-
} from "./chunk-ETTDO4UO.js";
|
|
35
|
-
import {
|
|
36
|
-
MessageSquare
|
|
37
|
-
} from "./chunk-GL6HWDJB.js";
|
|
23
|
+
applyUiPreferencesToDocument,
|
|
24
|
+
readUiPreferences,
|
|
25
|
+
writeUiPreferences
|
|
26
|
+
} from "./chunk-4EBSM4JR.js";
|
|
38
27
|
import {
|
|
39
28
|
Pencil
|
|
40
29
|
} from "./chunk-M5RSPNYN.js";
|
|
41
30
|
import {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
} from "./chunk-
|
|
31
|
+
COMPACT_ACTION_BUTTON_CLASS,
|
|
32
|
+
HIT_AREA_EXPAND_CLASS,
|
|
33
|
+
HIT_AREA_EXPAND_DENSE_CLASS,
|
|
34
|
+
rowSurface
|
|
35
|
+
} from "./chunk-7HXCGBUP.js";
|
|
47
36
|
import {
|
|
37
|
+
Plus,
|
|
48
38
|
useChatPanelDataContext,
|
|
49
39
|
useSettingsActionsContext
|
|
50
|
-
} from "./chunk-
|
|
51
|
-
import {
|
|
52
|
-
Plus
|
|
53
|
-
} from "./chunk-PVJCTQFK.js";
|
|
40
|
+
} from "./chunk-33QA7BQJ.js";
|
|
54
41
|
import {
|
|
55
42
|
RefreshCw
|
|
56
43
|
} from "./chunk-OKL5ZRVB.js";
|
|
57
44
|
import {
|
|
58
45
|
notify
|
|
59
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-RJNGEU6C.js";
|
|
60
47
|
import {
|
|
61
|
-
FloatingPortalLite,
|
|
62
48
|
Info
|
|
63
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-TR2GA5OF.js";
|
|
64
50
|
import "./chunk-UCA4WN66.js";
|
|
65
51
|
import {
|
|
66
52
|
Eye
|
|
67
53
|
} from "./chunk-2ST2ULW7.js";
|
|
68
54
|
import {
|
|
69
55
|
ExternalLink,
|
|
70
|
-
Globe
|
|
71
|
-
} from "./chunk-BLSX7WHW.js";
|
|
72
|
-
import {
|
|
56
|
+
Globe,
|
|
73
57
|
Sparkles
|
|
74
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-H5D5DX3K.js";
|
|
75
59
|
import {
|
|
76
60
|
HardDrive
|
|
77
61
|
} from "./chunk-D7ELZVTI.js";
|
|
62
|
+
import "./chunk-SZJUXVWG.js";
|
|
78
63
|
import {
|
|
79
|
-
|
|
80
|
-
|
|
64
|
+
AlertDialog,
|
|
65
|
+
AlertDialogAction,
|
|
66
|
+
AlertDialogCancel,
|
|
67
|
+
AlertDialogContent,
|
|
68
|
+
AlertDialogDescription,
|
|
69
|
+
AlertDialogFooter,
|
|
70
|
+
AlertDialogTitle
|
|
71
|
+
} from "./chunk-HGVJEUV4.js";
|
|
72
|
+
import "./chunk-OMPXUTMX.js";
|
|
81
73
|
import {
|
|
82
74
|
InputGroup,
|
|
83
75
|
InputGroupAddon,
|
|
84
76
|
InputGroupButton,
|
|
85
77
|
InputGroupInput,
|
|
86
78
|
Textarea
|
|
87
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-B2LF64HM.js";
|
|
88
80
|
import {
|
|
89
81
|
Search
|
|
90
82
|
} from "./chunk-JIULUYHT.js";
|
|
@@ -105,19 +97,15 @@ import {
|
|
|
105
97
|
FieldGroup,
|
|
106
98
|
FieldLabel,
|
|
107
99
|
Switch
|
|
108
|
-
} from "./chunk-
|
|
100
|
+
} from "./chunk-FTLJ66KU.js";
|
|
109
101
|
import {
|
|
110
102
|
Select,
|
|
111
103
|
clamp,
|
|
112
|
-
getDisabledMountTransitionStyles,
|
|
113
104
|
normalizeScrollOffset,
|
|
114
105
|
styleDisableScrollbar,
|
|
115
|
-
useAnchorPositioning,
|
|
116
106
|
useCSPContext,
|
|
117
|
-
useDirection
|
|
118
|
-
|
|
119
|
-
useRender
|
|
120
|
-
} from "./chunk-NNKJTKOQ.js";
|
|
107
|
+
useDirection
|
|
108
|
+
} from "./chunk-ADYZWC5L.js";
|
|
121
109
|
import {
|
|
122
110
|
isCustomProviderId,
|
|
123
111
|
isNamedOccInstanceId,
|
|
@@ -126,111 +114,55 @@ import {
|
|
|
126
114
|
import "./chunk-WWJF4RO2.js";
|
|
127
115
|
import {
|
|
128
116
|
Input
|
|
129
|
-
} from "./chunk-
|
|
117
|
+
} from "./chunk-5RTGRTPD.js";
|
|
130
118
|
import {
|
|
131
119
|
Dialog,
|
|
132
|
-
DialogBackdrop,
|
|
133
|
-
DialogClose,
|
|
134
120
|
DialogContent,
|
|
135
121
|
DialogDescription,
|
|
136
|
-
DialogDescription$1,
|
|
137
122
|
DialogHeader,
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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";
|
|
123
|
+
DialogTitle
|
|
124
|
+
} from "./chunk-ETCO5KZK.js";
|
|
125
|
+
import {
|
|
126
|
+
Check
|
|
127
|
+
} from "./chunk-4QD4PCVP.js";
|
|
128
|
+
import "./chunk-OVJYUWSQ.js";
|
|
129
|
+
import "./chunk-JBLHIEVG.js";
|
|
130
|
+
import "./chunk-YDDDSVNB.js";
|
|
164
131
|
import {
|
|
165
132
|
Button,
|
|
166
|
-
POPUP_COLLISION_AVOIDANCE,
|
|
167
|
-
ReactStore,
|
|
168
|
-
Timeout,
|
|
169
|
-
activeElement,
|
|
170
133
|
contains,
|
|
171
|
-
createAttribute,
|
|
172
|
-
cva,
|
|
173
|
-
fastComponent,
|
|
174
|
-
fastComponentRef,
|
|
175
134
|
getTarget,
|
|
176
|
-
isTargetInsideEnabledTrigger,
|
|
177
|
-
isTypeableElement,
|
|
178
|
-
mac,
|
|
179
|
-
matchesFocusVisible,
|
|
180
|
-
mergeCleanups,
|
|
181
|
-
ownerDocument,
|
|
182
135
|
useTimeout,
|
|
183
136
|
webkit
|
|
184
|
-
} from "./chunk-
|
|
185
|
-
import
|
|
186
|
-
Check
|
|
187
|
-
} from "./chunk-4QD4PCVP.js";
|
|
188
|
-
import "./chunk-S3PQ6HKH.js";
|
|
189
|
-
import {
|
|
190
|
-
useBaseUiId,
|
|
191
|
-
useValueAsRef
|
|
192
|
-
} from "./chunk-MNBGB2SP.js";
|
|
137
|
+
} from "./chunk-HQ5TEXHT.js";
|
|
138
|
+
import "./chunk-TLNZNR7C.js";
|
|
193
139
|
import {
|
|
194
|
-
|
|
195
|
-
} from "./chunk-
|
|
140
|
+
useBaseUiId
|
|
141
|
+
} from "./chunk-E5HALE4M.js";
|
|
196
142
|
import {
|
|
197
|
-
EMPTY_OBJECT,
|
|
198
143
|
addEventListener,
|
|
199
|
-
createChangeEventDetails,
|
|
200
|
-
disabled,
|
|
201
144
|
formatErrorMessage,
|
|
202
|
-
getWindow,
|
|
203
|
-
imperativeAction,
|
|
204
|
-
isElement,
|
|
205
|
-
isHTMLElement,
|
|
206
|
-
mergeProps,
|
|
207
|
-
none,
|
|
208
|
-
triggerFocus,
|
|
209
|
-
triggerHover,
|
|
210
|
-
triggerPress,
|
|
211
145
|
useIsoLayoutEffect,
|
|
212
|
-
useOpenChangeComplete,
|
|
213
146
|
useRenderElement,
|
|
214
147
|
useStableCallback
|
|
215
|
-
} from "./chunk-
|
|
148
|
+
} from "./chunk-XJ6TGSUB.js";
|
|
216
149
|
import {
|
|
217
150
|
Plug
|
|
218
151
|
} from "./chunk-AHTO6GDS.js";
|
|
219
|
-
import "./chunk-EAJTWMK5.js";
|
|
220
152
|
import "./chunk-HFQZLPU2.js";
|
|
221
153
|
import {
|
|
222
154
|
createLucideIcon
|
|
223
155
|
} from "./chunk-4ZIEVI5O.js";
|
|
224
156
|
import {
|
|
225
157
|
cn
|
|
226
|
-
} from "./chunk-
|
|
158
|
+
} from "./chunk-CHEC7TWB.js";
|
|
227
159
|
import "./chunk-JDCCC7A7.js";
|
|
228
160
|
import "./chunk-L547YHC4.js";
|
|
229
161
|
import "./chunk-MLKGABMK.js";
|
|
230
162
|
|
|
231
|
-
// web/app/dist/server/assets/settings-dialog-
|
|
163
|
+
// web/app/dist/server/assets/settings-dialog-CqkrDSnm.js
|
|
232
164
|
import * as React$1 from "react";
|
|
233
|
-
import { useCallback
|
|
165
|
+
import { useCallback, useEffect as useEffect2, useId, useMemo as useMemo2, useRef as useRef2, useState as useState2 } from "react";
|
|
234
166
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
235
167
|
var Box = createLucideIcon("box", [
|
|
236
168
|
["path", {
|
|
@@ -300,6 +232,10 @@ var Lock = createLucideIcon("lock", [["rect", {
|
|
|
300
232
|
d: "M7 11V7a5 5 0 0 1 10 0v4",
|
|
301
233
|
key: "fwvmzm"
|
|
302
234
|
}]]);
|
|
235
|
+
var MessageSquare = createLucideIcon("message-square", [["path", {
|
|
236
|
+
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",
|
|
237
|
+
key: "18887p"
|
|
238
|
+
}]]);
|
|
303
239
|
var Paintbrush = createLucideIcon("paintbrush", [
|
|
304
240
|
["path", {
|
|
305
241
|
d: "m14.622 17.897-10.68-2.913",
|
|
@@ -362,366 +298,6 @@ var Users = createLucideIcon("users", [
|
|
|
362
298
|
key: "nufk8"
|
|
363
299
|
}]
|
|
364
300
|
]);
|
|
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
301
|
function Breadcrumb({ className, ...props }) {
|
|
726
302
|
return /* @__PURE__ */ jsx("nav", {
|
|
727
303
|
"aria-label": "breadcrumb",
|
|
@@ -776,16 +352,25 @@ function getOffset(element, prop, axis) {
|
|
|
776
352
|
if (axis === "x" && prop === "margin") return start * 2;
|
|
777
353
|
return start + parseFloat(styles[`${key}End`]);
|
|
778
354
|
}
|
|
355
|
+
var hasOverflowX = "data-has-overflow-x";
|
|
356
|
+
var hasOverflowY = "data-has-overflow-y";
|
|
357
|
+
var overflowXStart = "data-overflow-x-start";
|
|
358
|
+
var overflowXEnd = "data-overflow-x-end";
|
|
359
|
+
var overflowYStart = "data-overflow-y-start";
|
|
360
|
+
var overflowYEnd = "data-overflow-y-end";
|
|
779
361
|
var attr = (name) => (value) => value ? { [name]: "" } : null;
|
|
780
362
|
var scrollAreaStateAttributesMapping = {
|
|
781
|
-
hasOverflowX: attr(
|
|
782
|
-
hasOverflowY: attr(
|
|
783
|
-
overflowXStart: attr(
|
|
784
|
-
overflowXEnd: attr(
|
|
785
|
-
overflowYStart: attr(
|
|
786
|
-
overflowYEnd: attr(
|
|
363
|
+
hasOverflowX: attr(hasOverflowX),
|
|
364
|
+
hasOverflowY: attr(hasOverflowY),
|
|
365
|
+
overflowXStart: attr(overflowXStart),
|
|
366
|
+
overflowXEnd: attr(overflowXEnd),
|
|
367
|
+
overflowYStart: attr(overflowYStart),
|
|
368
|
+
overflowYEnd: attr(overflowYEnd),
|
|
787
369
|
cornerHidden: () => null
|
|
788
370
|
};
|
|
371
|
+
var scrollAreaCornerHeight = "--scroll-area-corner-height";
|
|
372
|
+
var scrollAreaCornerWidth = "--scroll-area-corner-width";
|
|
373
|
+
var orientation = "data-orientation";
|
|
789
374
|
var DEFAULT_COORDS = {
|
|
790
375
|
x: 0,
|
|
791
376
|
y: 0
|
|
@@ -866,7 +451,7 @@ var ScrollAreaRoot = /* @__PURE__ */ React$1.forwardRef(function ScrollAreaRoot2
|
|
|
866
451
|
activePointerIdRef.current = event.pointerId;
|
|
867
452
|
startYRef.current = event.clientY;
|
|
868
453
|
startXRef.current = event.clientX;
|
|
869
|
-
currentOrientationRef.current = event.currentTarget.getAttribute(
|
|
454
|
+
currentOrientationRef.current = event.currentTarget.getAttribute(orientation);
|
|
870
455
|
const viewportEl = viewportRef.current;
|
|
871
456
|
if (viewportEl) {
|
|
872
457
|
startScrollTopRef.current = viewportEl.scrollTop;
|
|
@@ -950,8 +535,8 @@ var ScrollAreaRoot = /* @__PURE__ */ React$1.forwardRef(function ScrollAreaRoot2
|
|
|
950
535
|
},
|
|
951
536
|
style: {
|
|
952
537
|
position: "relative",
|
|
953
|
-
[
|
|
954
|
-
[
|
|
538
|
+
[scrollAreaCornerHeight]: `${cornerSize.height}px`,
|
|
539
|
+
[scrollAreaCornerWidth]: `${cornerSize.width}px`
|
|
955
540
|
}
|
|
956
541
|
};
|
|
957
542
|
const element = useRenderElement("div", componentProps, {
|
|
@@ -1037,11 +622,17 @@ function normalizeOverflowEdgeThreshold(threshold) {
|
|
|
1037
622
|
};
|
|
1038
623
|
}
|
|
1039
624
|
var ScrollAreaViewportContext = /* @__PURE__ */ React$1.createContext(void 0);
|
|
625
|
+
var scrollAreaOverflowXStart = "--scroll-area-overflow-x-start";
|
|
626
|
+
var scrollAreaOverflowXEnd = "--scroll-area-overflow-x-end";
|
|
627
|
+
var scrollAreaOverflowYStart = "--scroll-area-overflow-y-start";
|
|
628
|
+
var scrollAreaOverflowYEnd = "--scroll-area-overflow-y-end";
|
|
629
|
+
var scrollAreaThumbHeight = "--scroll-area-thumb-height";
|
|
630
|
+
var scrollAreaThumbWidth = "--scroll-area-thumb-width";
|
|
1040
631
|
var OVERFLOW_EDGE_VARS = [
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
632
|
+
scrollAreaOverflowXStart,
|
|
633
|
+
scrollAreaOverflowXEnd,
|
|
634
|
+
scrollAreaOverflowYStart,
|
|
635
|
+
scrollAreaOverflowYEnd
|
|
1045
636
|
];
|
|
1046
637
|
var scrollAreaOverflowVarsRegistered = false;
|
|
1047
638
|
function removeCSSVariableInheritance() {
|
|
@@ -1135,12 +726,12 @@ var ScrollAreaViewport = /* @__PURE__ */ React$1.forwardRef(function ScrollAreaV
|
|
|
1135
726
|
height: clampedNextHeight
|
|
1136
727
|
}));
|
|
1137
728
|
if (scrollbarYEl && thumbYEl) {
|
|
1138
|
-
const thumbOffsetY = applyOverscrollThumb(thumbYEl,
|
|
729
|
+
const thumbOffsetY = applyOverscrollThumb(thumbYEl, scrollAreaThumbHeight, scrollTop, maxScrollTop, scrollableContentHeight, clampedNextHeight, scrollbarYEl.offsetHeight - clampedNextHeight - scrollbarYOffset - thumbYOffset);
|
|
1139
730
|
thumbYEl.style.transform = `translate3d(0,${thumbOffsetY}px,0)`;
|
|
1140
731
|
}
|
|
1141
732
|
if (scrollbarXEl && thumbXEl) {
|
|
1142
733
|
const maxThumbOffsetX = scrollbarXEl.offsetWidth - clampedNextWidth - scrollbarXOffset - thumbXOffset;
|
|
1143
|
-
const offsetX = applyOverscrollThumb(thumbXEl,
|
|
734
|
+
const offsetX = applyOverscrollThumb(thumbXEl, scrollAreaThumbWidth, direction === "rtl" ? -scrollLeft : scrollLeft, maxScrollLeft, scrollableContentWidth, clampedNextWidth, maxThumbOffsetX);
|
|
1144
735
|
thumbXEl.style.transform = `translate3d(${direction === "rtl" ? -offsetX : offsetX}px,0,0)`;
|
|
1145
736
|
}
|
|
1146
737
|
const overflowMetricsPx = [
|
|
@@ -1274,14 +865,14 @@ function useScrollAreaScrollbarContext() {
|
|
|
1274
865
|
return context;
|
|
1275
866
|
}
|
|
1276
867
|
var ScrollAreaScrollbar = /* @__PURE__ */ React$1.forwardRef(function ScrollAreaScrollbar2(componentProps, forwardedRef) {
|
|
1277
|
-
const { render, className, orientation = "vertical", keepMounted = false, style, ...elementProps } = componentProps;
|
|
868
|
+
const { render, className, orientation: orientation2 = "vertical", keepMounted = false, style, ...elementProps } = componentProps;
|
|
1278
869
|
const { hovering, scrollingX, scrollingY, hiddenState, scrollbarYRef, scrollbarXRef, viewportRef, thumbYRef, thumbXRef, handlePointerDown, handlePointerUp, handleScroll, disableViewportSnap, rootId, thumbSize, hasMeasuredScrollbar, viewportState } = useScrollAreaRootContext();
|
|
1279
|
-
const vertical =
|
|
870
|
+
const vertical = orientation2 === "vertical";
|
|
1280
871
|
const state = {
|
|
1281
872
|
...viewportState,
|
|
1282
873
|
hovering,
|
|
1283
874
|
scrolling: vertical ? scrollingY : scrollingX,
|
|
1284
|
-
orientation
|
|
875
|
+
orientation: orientation2
|
|
1285
876
|
};
|
|
1286
877
|
const direction = useDirection();
|
|
1287
878
|
const hideTrackUntilMeasured = !hasMeasuredScrollbar && !keepMounted;
|
|
@@ -1322,6 +913,7 @@ var ScrollAreaScrollbar = /* @__PURE__ */ React$1.forwardRef(function ScrollArea
|
|
|
1322
913
|
]);
|
|
1323
914
|
const props = {
|
|
1324
915
|
...rootId && { "data-id": `${rootId}-scrollbar` },
|
|
916
|
+
"aria-hidden": true,
|
|
1325
917
|
onPointerDown(event) {
|
|
1326
918
|
if (event.button !== 0) return;
|
|
1327
919
|
const target = getTarget(event.nativeEvent);
|
|
@@ -1353,6 +945,9 @@ var ScrollAreaScrollbar = /* @__PURE__ */ React$1.forwardRef(function ScrollArea
|
|
|
1353
945
|
});
|
|
1354
946
|
handlePointerDown(event);
|
|
1355
947
|
},
|
|
948
|
+
onMouseDown(event) {
|
|
949
|
+
event.preventDefault();
|
|
950
|
+
},
|
|
1356
951
|
onPointerUp: handlePointerUp,
|
|
1357
952
|
onPointerCancel: handlePointerUp,
|
|
1358
953
|
style: {
|
|
@@ -1363,14 +958,14 @@ var ScrollAreaScrollbar = /* @__PURE__ */ React$1.forwardRef(function ScrollArea
|
|
|
1363
958
|
visibility: hideTrackUntilMeasured ? "hidden" : void 0,
|
|
1364
959
|
...vertical ? {
|
|
1365
960
|
top: 0,
|
|
1366
|
-
bottom:
|
|
961
|
+
bottom: `var(${scrollAreaCornerHeight})`,
|
|
1367
962
|
insetInlineEnd: 0,
|
|
1368
|
-
[
|
|
963
|
+
[scrollAreaThumbHeight]: `${thumbSize.height}px`
|
|
1369
964
|
} : {
|
|
1370
965
|
insetInlineStart: 0,
|
|
1371
|
-
insetInlineEnd:
|
|
966
|
+
insetInlineEnd: `var(${scrollAreaCornerWidth})`,
|
|
1372
967
|
bottom: 0,
|
|
1373
|
-
[
|
|
968
|
+
[scrollAreaThumbWidth]: `${thumbSize.width}px`
|
|
1374
969
|
}
|
|
1375
970
|
}
|
|
1376
971
|
};
|
|
@@ -1382,20 +977,20 @@ var ScrollAreaScrollbar = /* @__PURE__ */ React$1.forwardRef(function ScrollArea
|
|
|
1382
977
|
});
|
|
1383
978
|
if (!shouldRender) return null;
|
|
1384
979
|
return /* @__PURE__ */ jsx(ScrollAreaScrollbarContext.Provider, {
|
|
1385
|
-
value:
|
|
980
|
+
value: orientation2,
|
|
1386
981
|
children: element
|
|
1387
982
|
});
|
|
1388
983
|
});
|
|
1389
984
|
var ScrollAreaThumb = /* @__PURE__ */ React$1.forwardRef(function ScrollAreaThumb2(componentProps, forwardedRef) {
|
|
1390
985
|
const { render, className, style, ...elementProps } = componentProps;
|
|
1391
986
|
const { thumbYRef, thumbXRef, handlePointerDown, handlePointerMove, handlePointerUp, scrollingX, scrollingY, hasMeasuredScrollbar } = useScrollAreaRootContext();
|
|
1392
|
-
const
|
|
1393
|
-
const vertical =
|
|
987
|
+
const orientation2 = useScrollAreaScrollbarContext();
|
|
988
|
+
const vertical = orientation2 === "vertical";
|
|
1394
989
|
return useRenderElement("div", componentProps, {
|
|
1395
990
|
ref: [forwardedRef, vertical ? thumbYRef : thumbXRef],
|
|
1396
991
|
state: {
|
|
1397
992
|
scrolling: vertical ? scrollingY : scrollingX,
|
|
1398
|
-
orientation
|
|
993
|
+
orientation: orientation2
|
|
1399
994
|
},
|
|
1400
995
|
props: [{
|
|
1401
996
|
onPointerDown: handlePointerDown,
|
|
@@ -1414,13 +1009,16 @@ var ScrollAreaCorner = /* @__PURE__ */ React$1.forwardRef(function ScrollAreaCor
|
|
|
1414
1009
|
const { cornerRef, cornerSize, hiddenState } = useScrollAreaRootContext();
|
|
1415
1010
|
const element = useRenderElement("div", componentProps, {
|
|
1416
1011
|
ref: [forwardedRef, cornerRef],
|
|
1417
|
-
props: [{
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1012
|
+
props: [{
|
|
1013
|
+
"aria-hidden": true,
|
|
1014
|
+
style: {
|
|
1015
|
+
position: "absolute",
|
|
1016
|
+
bottom: 0,
|
|
1017
|
+
insetInlineEnd: 0,
|
|
1018
|
+
width: cornerSize.width,
|
|
1019
|
+
height: cornerSize.height
|
|
1020
|
+
}
|
|
1021
|
+
}, elementProps]
|
|
1424
1022
|
});
|
|
1425
1023
|
if (hiddenState.corner) return null;
|
|
1426
1024
|
return element;
|
|
@@ -1441,11 +1039,11 @@ function ScrollArea({ className, children, ...props }) {
|
|
|
1441
1039
|
]
|
|
1442
1040
|
});
|
|
1443
1041
|
}
|
|
1444
|
-
function ScrollBar({ className, orientation = "vertical", ...props }) {
|
|
1042
|
+
function ScrollBar({ className, orientation: orientation2 = "vertical", ...props }) {
|
|
1445
1043
|
return /* @__PURE__ */ jsx(ScrollAreaScrollbar, {
|
|
1446
1044
|
"data-slot": "scroll-area-scrollbar",
|
|
1447
|
-
"data-orientation":
|
|
1448
|
-
orientation,
|
|
1045
|
+
"data-orientation": orientation2,
|
|
1046
|
+
orientation: orientation2,
|
|
1449
1047
|
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
1048
|
...props,
|
|
1451
1049
|
children: /* @__PURE__ */ jsx(ScrollAreaThumb, {
|
|
@@ -1454,808 +1052,9 @@ function ScrollBar({ className, orientation = "vertical", ...props }) {
|
|
|
1454
1052
|
})
|
|
1455
1053
|
});
|
|
1456
1054
|
}
|
|
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
1055
|
function RowSurface({ className, interactive, padding, tone, ...props }) {
|
|
2257
1056
|
return /* @__PURE__ */ jsx("div", {
|
|
2258
|
-
className: cn(
|
|
1057
|
+
className: cn(rowSurface({
|
|
2259
1058
|
interactive,
|
|
2260
1059
|
padding,
|
|
2261
1060
|
tone
|
|
@@ -2315,13 +1114,13 @@ function SettingsPane({ actions, children, description, title }) {
|
|
|
2315
1114
|
})]
|
|
2316
1115
|
});
|
|
2317
1116
|
}
|
|
2318
|
-
function SettingsCommitActions({ dirty, disabled
|
|
1117
|
+
function SettingsCommitActions({ dirty, disabled, onRevert, onSave, saving }) {
|
|
2319
1118
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [dirty ? /* @__PURE__ */ jsx(Button, {
|
|
2320
1119
|
type: "button",
|
|
2321
1120
|
variant: "ghost",
|
|
2322
1121
|
size: "icon-sm",
|
|
2323
1122
|
className: "text-muted-foreground transition-transform active:scale-[0.96]",
|
|
2324
|
-
disabled:
|
|
1123
|
+
disabled: disabled || saving,
|
|
2325
1124
|
onClick: onRevert,
|
|
2326
1125
|
"aria-label": "Revert changes",
|
|
2327
1126
|
children: /* @__PURE__ */ jsx(RotateCcw, {})
|
|
@@ -2330,7 +1129,7 @@ function SettingsCommitActions({ dirty, disabled: disabled2, onRevert, onSave, s
|
|
|
2330
1129
|
variant: "outline",
|
|
2331
1130
|
size: "sm",
|
|
2332
1131
|
className: cn(COMPACT_ACTION_BUTTON_CLASS, "transition-transform active:scale-[0.96]", dirty && "border-primary/30 text-primary"),
|
|
2333
|
-
disabled: !dirty ||
|
|
1132
|
+
disabled: !dirty || disabled || saving,
|
|
2334
1133
|
onClick: onSave,
|
|
2335
1134
|
children: [saving ? /* @__PURE__ */ jsx(LoaderCircle, {
|
|
2336
1135
|
className: "animate-spin",
|
|
@@ -2364,7 +1163,7 @@ function useOAuthLoginFlow({ onConfigured, onOAuthLogin, providerId }) {
|
|
|
2364
1163
|
onOAuthLogin,
|
|
2365
1164
|
providerId
|
|
2366
1165
|
]);
|
|
2367
|
-
const cancelLoginId =
|
|
1166
|
+
const cancelLoginId = useCallback(async (loginId) => {
|
|
2368
1167
|
if (!loginId || !onOAuthLoginRef.current) return;
|
|
2369
1168
|
try {
|
|
2370
1169
|
await onOAuthLoginRef.current({
|
|
@@ -2375,7 +1174,7 @@ function useOAuthLoginFlow({ onConfigured, onOAuthLogin, providerId }) {
|
|
|
2375
1174
|
} catch {
|
|
2376
1175
|
}
|
|
2377
1176
|
}, []);
|
|
2378
|
-
const resetLocal =
|
|
1177
|
+
const resetLocal = useCallback(() => {
|
|
2379
1178
|
loginIdRef.current = null;
|
|
2380
1179
|
startingRef.current = false;
|
|
2381
1180
|
setLogin(null);
|
|
@@ -2390,7 +1189,7 @@ function useOAuthLoginFlow({ onConfigured, onOAuthLogin, providerId }) {
|
|
|
2390
1189
|
cancelLoginId(loginId);
|
|
2391
1190
|
};
|
|
2392
1191
|
}, [cancelLoginId]);
|
|
2393
|
-
const applyResult =
|
|
1192
|
+
const applyResult = useCallback((result, generation) => {
|
|
2394
1193
|
if (generation !== generationRef.current) {
|
|
2395
1194
|
if (result.status === "waiting" && result.loginId) cancelLoginId(result.loginId);
|
|
2396
1195
|
return;
|
|
@@ -2416,7 +1215,7 @@ function useOAuthLoginFlow({ onConfigured, onOAuthLogin, providerId }) {
|
|
|
2416
1215
|
if (result.loginId) loginIdRef.current = result.loginId;
|
|
2417
1216
|
setLogin(result);
|
|
2418
1217
|
}, [cancelLoginId]);
|
|
2419
|
-
const start =
|
|
1218
|
+
const start = useCallback(async () => {
|
|
2420
1219
|
if (!onOAuthLoginRef.current || startingRef.current) return;
|
|
2421
1220
|
startingRef.current = true;
|
|
2422
1221
|
const generation = generationRef.current;
|
|
@@ -2443,7 +1242,7 @@ function useOAuthLoginFlow({ onConfigured, onOAuthLogin, providerId }) {
|
|
|
2443
1242
|
if (generation === generationRef.current) setBusy(false);
|
|
2444
1243
|
}
|
|
2445
1244
|
}, [applyResult, cancelLoginId]);
|
|
2446
|
-
const submitPrompt =
|
|
1245
|
+
const submitPrompt = useCallback(async () => {
|
|
2447
1246
|
const loginId = loginIdRef.current;
|
|
2448
1247
|
if (!onOAuthLoginRef.current || !loginId) return;
|
|
2449
1248
|
const generation = generationRef.current;
|
|
@@ -2463,7 +1262,7 @@ function useOAuthLoginFlow({ onConfigured, onOAuthLogin, providerId }) {
|
|
|
2463
1262
|
if (generation === generationRef.current) setBusy(false);
|
|
2464
1263
|
}
|
|
2465
1264
|
}, [applyResult, promptAnswer]);
|
|
2466
|
-
const cancel =
|
|
1265
|
+
const cancel = useCallback(async () => {
|
|
2467
1266
|
generationRef.current += 1;
|
|
2468
1267
|
const loginId = loginIdRef.current;
|
|
2469
1268
|
resetLocal();
|
|
@@ -3088,7 +1887,7 @@ function AddModelsDialog({ configuredProviderIds, discoverableProviderIds, disco
|
|
|
3088
1887
|
children: groupedCandidates.map(([provider, models]) => /* @__PURE__ */ jsxs("div", {
|
|
3089
1888
|
className: "flex flex-col gap-1",
|
|
3090
1889
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
3091
|
-
className: "px-2 text-
|
|
1890
|
+
className: "px-2 text-caption font-medium tracking-wide text-muted-foreground uppercase",
|
|
3092
1891
|
children: [providerLabel(provider), (activeCountByProvider.get(provider) ?? 0) > 0 ? /* @__PURE__ */ jsxs("span", {
|
|
3093
1892
|
className: "ml-1 font-normal normal-case tabular-nums",
|
|
3094
1893
|
children: [
|
|
@@ -3161,7 +1960,7 @@ function AddModelsDialog({ configuredProviderIds, discoverableProviderIds, disco
|
|
|
3161
1960
|
}
|
|
3162
1961
|
function ModelDefaultsSection({ draft, discoveringProviderId, modelDirty, modelFilter, modelOptions, onAddModels, onDiscoverProvider, onModelFilterChange, onRemoveModel, onSetDefaultModel, onRevert, onSave, providers, saving, settingsLoading }) {
|
|
3163
1962
|
const [addOpen, setAddOpen] = useState2(false);
|
|
3164
|
-
const
|
|
1963
|
+
const disabled = !draft || settingsLoading;
|
|
3165
1964
|
const normalizedFilter = modelFilter.trim().toLowerCase();
|
|
3166
1965
|
const configuredProviderIds = useMemo2(() => {
|
|
3167
1966
|
const ids = /* @__PURE__ */ new Set();
|
|
@@ -3242,7 +2041,7 @@ function ModelDefaultsSection({ draft, discoveringProviderId, modelDirty, modelF
|
|
|
3242
2041
|
] }),
|
|
3243
2042
|
actions: /* @__PURE__ */ jsx(SettingsCommitActions, {
|
|
3244
2043
|
dirty: modelDirty,
|
|
3245
|
-
disabled
|
|
2044
|
+
disabled,
|
|
3246
2045
|
onRevert,
|
|
3247
2046
|
onSave,
|
|
3248
2047
|
saving
|
|
@@ -3260,13 +2059,13 @@ function ModelDefaultsSection({ draft, discoveringProviderId, modelDirty, modelF
|
|
|
3260
2059
|
value: modelFilter,
|
|
3261
2060
|
onChange: (event) => onModelFilterChange(event.target.value),
|
|
3262
2061
|
placeholder: "Search listed models\u2026",
|
|
3263
|
-
disabled:
|
|
2062
|
+
disabled: disabled || listedModels.length === 0
|
|
3264
2063
|
})]
|
|
3265
2064
|
}), /* @__PURE__ */ jsxs(Button, {
|
|
3266
2065
|
type: "button",
|
|
3267
2066
|
variant: "outline",
|
|
3268
2067
|
size: "sm",
|
|
3269
|
-
disabled
|
|
2068
|
+
disabled,
|
|
3270
2069
|
onClick: openAddDialog,
|
|
3271
2070
|
children: [/* @__PURE__ */ jsx(Plus, { "data-icon": "inline-start" }), "Add models"]
|
|
3272
2071
|
})]
|
|
@@ -3283,7 +2082,7 @@ function ModelDefaultsSection({ draft, discoveringProviderId, modelDirty, modelF
|
|
|
3283
2082
|
type: "button",
|
|
3284
2083
|
variant: "outline",
|
|
3285
2084
|
size: "sm",
|
|
3286
|
-
disabled
|
|
2085
|
+
disabled,
|
|
3287
2086
|
onClick: openAddDialog,
|
|
3288
2087
|
children: [/* @__PURE__ */ jsx(Plus, { "data-icon": "inline-start" }), "Add models"]
|
|
3289
2088
|
}) : null]
|
|
@@ -3306,7 +2105,7 @@ function ModelDefaultsSection({ draft, discoveringProviderId, modelDirty, modelF
|
|
|
3306
2105
|
variant: "ghost",
|
|
3307
2106
|
size: "sm",
|
|
3308
2107
|
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
|
|
2108
|
+
disabled,
|
|
3310
2109
|
"aria-label": `Set ${model.name} as default`,
|
|
3311
2110
|
onClick: () => onSetDefaultModel(model),
|
|
3312
2111
|
children: [/* @__PURE__ */ jsx(Star, { "data-icon": "inline-start" }), "Set default"]
|
|
@@ -3315,7 +2114,7 @@ function ModelDefaultsSection({ draft, discoveringProviderId, modelDirty, modelF
|
|
|
3315
2114
|
variant: "ghost",
|
|
3316
2115
|
size: "sm",
|
|
3317
2116
|
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
|
|
2117
|
+
disabled,
|
|
3319
2118
|
"aria-label": `Remove ${model.name}`,
|
|
3320
2119
|
onClick: () => onRemoveModel(model),
|
|
3321
2120
|
children: [/* @__PURE__ */ jsx(Trash2, { "data-icon": "inline-start" }), "Remove"]
|
|
@@ -3808,7 +2607,7 @@ function AddProviderPickerPanel({ addPickerQuery, credentialProvidersLength, fil
|
|
|
3808
2607
|
}) : null, filteredPickerConfigured.length > 0 ? /* @__PURE__ */ jsxs("div", {
|
|
3809
2608
|
className: "flex flex-col gap-1",
|
|
3810
2609
|
children: [filteredPickerAvailable.length > 0 ? /* @__PURE__ */ jsx("p", {
|
|
3811
|
-
className: "px-2 pt-1 text-
|
|
2610
|
+
className: "px-2 pt-1 text-caption font-medium tracking-wide text-muted-foreground uppercase",
|
|
3812
2611
|
children: "Already configured"
|
|
3813
2612
|
}) : null, filteredPickerConfigured.map((provider) => /* @__PURE__ */ jsx(ProviderPickerRow, {
|
|
3814
2613
|
provider,
|
|
@@ -4371,7 +3170,7 @@ var DELIVERY_OPTIONS = [{
|
|
|
4371
3170
|
label: "One at a time"
|
|
4372
3171
|
}];
|
|
4373
3172
|
function HarnessRuntimeSection({ draft, updateDraft }) {
|
|
4374
|
-
const
|
|
3173
|
+
const disabled = !draft;
|
|
4375
3174
|
return /* @__PURE__ */ jsxs("div", {
|
|
4376
3175
|
className: "flex flex-col gap-2",
|
|
4377
3176
|
children: [
|
|
@@ -4381,7 +3180,7 @@ function HarnessRuntimeSection({ draft, updateDraft }) {
|
|
|
4381
3180
|
trailing: /* @__PURE__ */ jsx(Switch, {
|
|
4382
3181
|
"aria-label": "Compaction",
|
|
4383
3182
|
checked: draft?.compaction.enabled ?? false,
|
|
4384
|
-
disabled
|
|
3183
|
+
disabled,
|
|
4385
3184
|
onCheckedChange: (enabled) => updateDraft((current) => ({
|
|
4386
3185
|
...current,
|
|
4387
3186
|
compaction: {
|
|
@@ -4397,7 +3196,7 @@ function HarnessRuntimeSection({ draft, updateDraft }) {
|
|
|
4397
3196
|
trailing: /* @__PURE__ */ jsx(Switch, {
|
|
4398
3197
|
"aria-label": "Auto-retry",
|
|
4399
3198
|
checked: draft?.retry.enabled ?? false,
|
|
4400
|
-
disabled
|
|
3199
|
+
disabled,
|
|
4401
3200
|
onCheckedChange: (enabled) => updateDraft((current) => ({
|
|
4402
3201
|
...current,
|
|
4403
3202
|
retry: {
|
|
@@ -4412,7 +3211,7 @@ function HarnessRuntimeSection({ draft, updateDraft }) {
|
|
|
4412
3211
|
trailing: /* @__PURE__ */ jsx(Select, {
|
|
4413
3212
|
"aria-label": "Transport",
|
|
4414
3213
|
className: "w-[160px]",
|
|
4415
|
-
disabled
|
|
3214
|
+
disabled,
|
|
4416
3215
|
onValueChange: (value) => updateDraft((current) => ({
|
|
4417
3216
|
...current,
|
|
4418
3217
|
transport: value
|
|
@@ -4427,7 +3226,7 @@ function HarnessRuntimeSection({ draft, updateDraft }) {
|
|
|
4427
3226
|
trailing: /* @__PURE__ */ jsx(Select, {
|
|
4428
3227
|
"aria-label": "Steering",
|
|
4429
3228
|
className: "w-[160px]",
|
|
4430
|
-
disabled
|
|
3229
|
+
disabled,
|
|
4431
3230
|
onValueChange: (value) => updateDraft((current) => ({
|
|
4432
3231
|
...current,
|
|
4433
3232
|
steeringMode: value
|
|
@@ -4442,7 +3241,7 @@ function HarnessRuntimeSection({ draft, updateDraft }) {
|
|
|
4442
3241
|
trailing: /* @__PURE__ */ jsx(Select, {
|
|
4443
3242
|
"aria-label": "Follow-up",
|
|
4444
3243
|
className: "w-[160px]",
|
|
4445
|
-
disabled
|
|
3244
|
+
disabled,
|
|
4446
3245
|
onValueChange: (value) => updateDraft((current) => ({
|
|
4447
3246
|
...current,
|
|
4448
3247
|
followUpMode: value
|
|
@@ -4455,14 +3254,14 @@ function HarnessRuntimeSection({ draft, updateDraft }) {
|
|
|
4455
3254
|
});
|
|
4456
3255
|
}
|
|
4457
3256
|
function ResourcesSection({ draft, onEnableSkillCommandsChange, onExtensionsChange, onPackageRowsChange, onPromptsChange, onRevert, onSave, onSkillsChange, onThemesChange, packageError, packageRows, resourceDirty, resources, resourceSummary, saving, scope = "harness", settingsLoading, updateDraft }) {
|
|
4458
|
-
const
|
|
3257
|
+
const disabled = !draft || settingsLoading || !!packageError;
|
|
4459
3258
|
const catalogSubtitle = resourceSummary.total === 0 ? "Empty" : resourceSummary.reloadRequired > 0 ? `${resourceSummary.total} \xB7 ${resourceSummary.reloadRequired} reload` : `${resourceSummary.total}`;
|
|
4460
3259
|
return /* @__PURE__ */ jsx(SettingsPane, {
|
|
4461
3260
|
title: scope === "skills" ? "Skills" : "Pi Harness",
|
|
4462
3261
|
description: scope === "skills" ? "Pick detected workspace skills and slash-command discovery." : "Runtime (compaction, retry, transport) plus packages, extensions, prompts, and themes.",
|
|
4463
3262
|
actions: /* @__PURE__ */ jsx(SettingsCommitActions, {
|
|
4464
3263
|
dirty: resourceDirty,
|
|
4465
|
-
disabled
|
|
3264
|
+
disabled,
|
|
4466
3265
|
onRevert,
|
|
4467
3266
|
onSave,
|
|
4468
3267
|
saving
|
|
@@ -4801,7 +3600,7 @@ function useModelDefaultsForm({ draft, setDraft, updateDraft, settings, provider
|
|
|
4801
3600
|
]);
|
|
4802
3601
|
const modelBaseline = lastCommittedModelSettings.current ?? (settings ? comparableModelSettings(settings.effective) : null);
|
|
4803
3602
|
const modelDirty = !!draft && !!modelBaseline && !sameJson(comparableModelSettings(draft), modelBaseline);
|
|
4804
|
-
const resetCommittedModelBaseline =
|
|
3603
|
+
const resetCommittedModelBaseline = useCallback(() => {
|
|
4805
3604
|
lastCommittedModelSettings.current = null;
|
|
4806
3605
|
}, []);
|
|
4807
3606
|
const commitModelSettings = async (nextDraft, options) => {
|
|
@@ -5172,18 +3971,17 @@ function useSettingsForm() {
|
|
|
5172
3971
|
resetCommittedModelBaseline
|
|
5173
3972
|
};
|
|
5174
3973
|
}
|
|
5175
|
-
function
|
|
5176
|
-
return /* @__PURE__ */
|
|
5177
|
-
|
|
3974
|
+
function SettingsNavItem({ active, onClick, icon: Icon, label }) {
|
|
3975
|
+
return /* @__PURE__ */ jsxs("button", {
|
|
3976
|
+
type: "button",
|
|
5178
3977
|
onClick,
|
|
5179
|
-
|
|
5180
|
-
|
|
3978
|
+
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"),
|
|
3979
|
+
children: [/* @__PURE__ */ jsx(Icon, { className: "size-4 shrink-0" }), /* @__PURE__ */ jsx("span", { children: label })]
|
|
3980
|
+
});
|
|
5181
3981
|
}
|
|
5182
3982
|
function SettingsDialog({ open, onOpenChange, initialTab }) {
|
|
5183
3983
|
useEffect2(() => {
|
|
5184
|
-
|
|
5185
|
-
document.documentElement.dataset.density = preferences.density;
|
|
5186
|
-
document.documentElement.classList.toggle("reduce-motion", preferences.motion === "reduced");
|
|
3984
|
+
applyUiPreferencesToDocument(readUiPreferences());
|
|
5187
3985
|
}, []);
|
|
5188
3986
|
return /* @__PURE__ */ jsx(SettingsDialogSession, {
|
|
5189
3987
|
initialTab,
|
|
@@ -5270,6 +4068,7 @@ function SettingsDialogPaneContent({ activeTab, form, preferences, updatePrefere
|
|
|
5270
4068
|
label: "Density",
|
|
5271
4069
|
description: "Adjust spacing across chat and panels.",
|
|
5272
4070
|
children: /* @__PURE__ */ jsx(Select, {
|
|
4071
|
+
"aria-label": "Density",
|
|
5273
4072
|
value: preferences.density,
|
|
5274
4073
|
onValueChange: (value) => updatePreference("density", value),
|
|
5275
4074
|
options: [{
|
|
@@ -5285,6 +4084,7 @@ function SettingsDialogPaneContent({ activeTab, form, preferences, updatePrefere
|
|
|
5285
4084
|
label: "Motion",
|
|
5286
4085
|
description: "Respect the system setting or reduce UI motion.",
|
|
5287
4086
|
children: /* @__PURE__ */ jsx(Select, {
|
|
4087
|
+
"aria-label": "Motion",
|
|
5288
4088
|
value: preferences.motion,
|
|
5289
4089
|
onValueChange: (value) => updatePreference("motion", value),
|
|
5290
4090
|
options: [{
|
|
@@ -5310,6 +4110,7 @@ function SettingsDialogPaneContent({ activeTab, form, preferences, updatePrefere
|
|
|
5310
4110
|
label: "Streaming transcript",
|
|
5311
4111
|
description: "Follow new output or preserve the reading position.",
|
|
5312
4112
|
children: /* @__PURE__ */ jsx(Select, {
|
|
4113
|
+
"aria-label": "Streaming transcript",
|
|
5313
4114
|
value: preferences.transcript,
|
|
5314
4115
|
onValueChange: (value) => updatePreference("transcript", value),
|
|
5315
4116
|
options: [{
|
|
@@ -5418,9 +4219,7 @@ function SettingsDialogBody({ initialTab, onCloseAttemptRef, onOpenChange }) {
|
|
|
5418
4219
|
const [activeTab, setActiveTab] = useState2(() => initialTab ?? "appearance");
|
|
5419
4220
|
const [preferences, setPreferences] = useState2(readUiPreferences);
|
|
5420
4221
|
useEffect2(() => {
|
|
5421
|
-
|
|
5422
|
-
document.documentElement.dataset.density = preferences.density;
|
|
5423
|
-
document.documentElement.classList.toggle("reduce-motion", preferences.motion === "reduced");
|
|
4222
|
+
writeUiPreferences(preferences);
|
|
5424
4223
|
}, [preferences]);
|
|
5425
4224
|
const updatePreference = (key, value) => {
|
|
5426
4225
|
setPreferences((current) => ({
|
|
@@ -5481,25 +4280,32 @@ function SettingsDialogBody({ initialTab, onCloseAttemptRef, onOpenChange }) {
|
|
|
5481
4280
|
className: "sr-only",
|
|
5482
4281
|
children: "Customize your settings here."
|
|
5483
4282
|
}),
|
|
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
|
-
|
|
4283
|
+
/* @__PURE__ */ jsxs("div", {
|
|
4284
|
+
className: "flex h-full min-h-0 min-w-0",
|
|
4285
|
+
children: [/* @__PURE__ */ jsxs("nav", {
|
|
4286
|
+
"aria-label": "Settings sections",
|
|
4287
|
+
className: "hidden h-full w-52 shrink-0 flex-col border-r border-border bg-sidebar sm:flex",
|
|
4288
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
4289
|
+
className: "px-4 pt-5 pb-2 text-label font-semibold",
|
|
4290
|
+
children: "Settings"
|
|
4291
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
4292
|
+
className: "min-h-0 flex-1 overflow-y-auto px-2 pb-4",
|
|
4293
|
+
children: SETTINGS_SECTION_GROUPS.map((group) => /* @__PURE__ */ jsxs("div", {
|
|
4294
|
+
className: "py-2",
|
|
4295
|
+
children: [/* @__PURE__ */ jsx("p", {
|
|
4296
|
+
className: "px-2 pb-1 text-caption font-medium uppercase tracking-wide text-muted-foreground",
|
|
4297
|
+
children: group.label
|
|
4298
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
4299
|
+
className: "flex flex-col gap-0.5",
|
|
4300
|
+
children: SETTINGS_SECTIONS.filter((section) => section.group === group.id).map((section) => /* @__PURE__ */ jsx(SettingsNavItem, {
|
|
4301
|
+
active: activeTab === section.id,
|
|
4302
|
+
onClick: () => setActiveTab(section.id),
|
|
4303
|
+
icon: section.icon,
|
|
4304
|
+
label: section.title
|
|
4305
|
+
}, section.id))
|
|
4306
|
+
})]
|
|
4307
|
+
}, group.id))
|
|
4308
|
+
})]
|
|
5503
4309
|
}), /* @__PURE__ */ jsxs("main", {
|
|
5504
4310
|
className: "flex h-full min-h-0 min-w-0 flex-1 flex-col overflow-hidden",
|
|
5505
4311
|
children: [
|