@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.
Files changed (280) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/web/client/assets/DialogTitle-DiAm7YNe.js +1 -0
  3. package/dist/web/client/assets/agent-disclosure-CMrxF7L-.js +1 -0
  4. package/dist/web/client/assets/alert-dialog-CYE37KMM.js +1 -0
  5. package/dist/web/client/assets/analytics-stub-C2vgmGm_.js +1 -0
  6. package/dist/web/client/assets/artifacts-panel-ClDpGWOU.js +1 -0
  7. package/dist/web/client/assets/{bot-Bs7QWJ2q.js → bot-DbB9BKL0.js} +1 -1
  8. package/dist/web/client/assets/bundle-mjs-cJTHqqzI.js +1 -0
  9. package/dist/web/client/assets/button-Dl0ce3Y5.js +1 -0
  10. package/dist/web/client/assets/{card-DA3Vnqay.js → card-DCEnYd2G.js} +1 -1
  11. package/dist/web/client/assets/chat-BVMnC5Qh.js +52 -0
  12. package/dist/web/client/assets/chat-command-palette-YuyaJNbi.js +1 -0
  13. package/dist/web/client/assets/check-B3LlvM65.js +1 -0
  14. package/dist/web/client/assets/{chevron-down-BEVGmnSb.js → chevron-down-DUUprRP5.js} +1 -1
  15. package/dist/web/client/assets/chevron-right-NVqQIoiO.js +1 -0
  16. package/dist/web/client/assets/{chunk-YOKDWASO-BAf618wr.js → chunk-YOKDWASO-Bte3iwlH.js} +6 -6
  17. package/dist/web/client/assets/citations-DXqV2NLy.js +1 -0
  18. package/dist/web/client/assets/collapsible-CUxOjhDJ.js +1 -0
  19. package/dist/web/client/assets/command-Cw4X8Bpk.js +1 -0
  20. package/dist/web/client/assets/createBaseUIEventDetails-B58Jldei.js +1 -0
  21. package/dist/web/client/assets/createLucideIcon-_dfI7Arx.js +1 -0
  22. package/dist/web/client/assets/dialog-BzcIOvFC.js +1 -0
  23. package/dist/web/client/assets/dist-52wg4XPY.js +1 -0
  24. package/dist/web/client/assets/dist-DbHxXSgQ.js +41 -0
  25. package/dist/web/client/assets/ease-CMumuPlX.js +1 -0
  26. package/dist/web/client/assets/{eye-B0DFz5hL.js → eye-CDHqtVoE.js} +1 -1
  27. package/dist/web/client/assets/file-text-TmalmYrb.js +1 -0
  28. package/dist/web/client/assets/{folder-BC5p7qK7.js → folder-vuNT4shY.js} +1 -1
  29. package/dist/web/client/assets/{fork-picker-dialog-B7NNpVmW.js → fork-picker-dialog-BYRr-xTy.js} +1 -1
  30. package/dist/web/client/assets/gauge-BsDqNM1A.js +1 -0
  31. package/dist/web/client/assets/git-branch-CTq9aACS.js +1 -0
  32. package/dist/web/client/assets/globals-BtCXZXL_.css +2 -0
  33. package/dist/web/client/assets/{hard-drive-CHqgr7VQ.js → hard-drive-BT7UxHQu.js} +1 -1
  34. package/dist/web/client/assets/highlighted-body-KPVGNVTW-CgT7gqvs.js +1 -0
  35. package/dist/web/client/assets/horizontal-resize-VLjLByUV.js +1 -0
  36. package/dist/web/client/assets/index-B9aXxpOv.js +12 -0
  37. package/dist/web/client/assets/input-CxZp56Im.js +1 -0
  38. package/dist/web/client/assets/input-group-D7lAfKHR.js +1 -0
  39. package/dist/web/client/assets/ipython-tool-CkHaO3PW.js +3 -0
  40. package/dist/web/client/assets/is-ref-object-BcRWZ4l7.js +1 -0
  41. package/dist/web/client/assets/{loader-circle-DjfHXUPB.js → loader-circle-B5GIZGxd.js} +1 -1
  42. package/dist/web/client/assets/markdown-BHkByC9K.js +2 -0
  43. package/dist/web/client/assets/{markdown-code-xNyjdZ4g.js → markdown-code-CDTRq-HZ.js} +1 -1
  44. package/dist/web/client/assets/mermaid-HWGCJPDP-CY3N5ECk.js +1 -0
  45. package/dist/web/client/assets/message-queue-Dl8wbCOu.js +1 -0
  46. package/dist/web/client/assets/model-selector-list-CHD8lMAl.js +1 -0
  47. package/dist/web/client/assets/{notify-DxL0VD7Z.js → notify-DjVixft7.js} +1 -1
  48. package/dist/web/client/assets/{openui-renderer-TLNe5e_Q.js → openui-renderer-C4e9FOVR.js} +38 -38
  49. package/dist/web/client/assets/{package-CdcJFPf2.js → package-BKBPgwMP.js} +1 -1
  50. package/dist/web/client/assets/{pencil-DcUwsKLn.js → pencil-CdO6qfv3.js} +1 -1
  51. package/dist/web/client/assets/{plug-Dt6VN0zF.js → plug-BRROUIw-.js} +1 -1
  52. package/dist/web/client/assets/prompt-input-WaGSKZCU.js +1 -0
  53. package/dist/web/client/assets/prompt-suggestions-BNyTcyWg.js +1 -0
  54. package/dist/web/client/assets/provider-catalog-ClVvphe0.js +1 -0
  55. package/dist/web/client/assets/provider-label-CwZ-KDxk.js +1 -0
  56. package/dist/web/client/assets/react-CwJFpaho.js +1 -0
  57. package/dist/web/client/assets/react-dom-DX3XddaT.js +1 -0
  58. package/dist/web/client/assets/{refresh-cw-IThTJ3j-.js → refresh-cw-l9WPHRkq.js} +1 -1
  59. package/dist/web/client/assets/repl-panel-L9dmPqio.js +1 -0
  60. package/dist/web/client/assets/{resource-helpers-Q2T0YCMO.js → resource-helpers-BuWybA8l.js} +1 -1
  61. package/dist/web/client/assets/resources-panel-mT-aMCvV.js +1 -0
  62. package/dist/web/client/assets/right-panel-context-CS8tJMzE.js +1 -0
  63. package/dist/web/client/assets/right-panel-registry-BnYCffmM.js +2 -0
  64. package/dist/web/client/assets/{rotate-ccw-WNFNkKQD.js → rotate-ccw-CfGhzOv7.js} +1 -1
  65. package/dist/web/client/assets/routes-DUontXSG.js +16 -0
  66. package/dist/web/client/assets/safe-external-url-BbAom7Bm.js +1 -0
  67. package/dist/web/client/assets/search-BjcXAUrI.js +1 -0
  68. package/dist/web/client/assets/session-insights-panel-B0rl37lo.js +1 -0
  69. package/dist/web/client/assets/session-reasoning-panel-8D2P7iaJ.js +1 -0
  70. package/dist/web/client/assets/session-tool-renderer-Bd3dsE2D.js +1395 -0
  71. package/dist/web/client/assets/session-tree-panel-CM4_wwrM.js +1 -0
  72. package/dist/web/client/assets/settings-dialog-DMTD9m6z.js +2 -0
  73. package/dist/web/client/assets/{skeleton-CkR2VmWc.js → skeleton-C3mo31Qu.js} +1 -1
  74. package/dist/web/client/assets/skeleton-loaders-BMa_G4yX.js +1 -0
  75. package/dist/web/client/assets/sparkles-BY5MFyk6.js +1 -0
  76. package/dist/web/client/assets/square-DQaQu9bp.js +1 -0
  77. package/dist/web/client/assets/{square-terminal-BYTN_I86.js → square-terminal-BsopiuN7.js} +1 -1
  78. package/dist/web/client/assets/{subagent-chat-panel-oeLDPDAK.js → subagent-chat-panel-BESrXxAR.js} +1 -1
  79. package/dist/web/client/assets/subagent-transcript-CAqFJfMj.js +1 -0
  80. package/dist/web/client/assets/subagents-panel-8aKOwWLs.js +1 -0
  81. package/dist/web/client/assets/{sun-BWiZFty0.js → sun-D0llhiMU.js} +1 -1
  82. package/dist/web/client/assets/surfaces-CpfsGAIA.js +1 -0
  83. package/dist/web/client/assets/switch-D3FhZU-S.js +1 -0
  84. package/dist/web/client/assets/terminal-BQAKkBY6.js +1 -0
  85. package/dist/web/client/assets/toast-lnCWGgSE.js +1 -0
  86. package/dist/web/client/assets/tokens-Ch5WqXC_.js +1 -0
  87. package/dist/web/client/assets/tool-result-B_yb2JoE.js +4 -0
  88. package/dist/web/client/assets/tool-timeline-VnMRQoLS.js +1 -0
  89. package/dist/web/client/assets/{triangle-alert-CU-gd7ui.js → triangle-alert-GAYh_5d3.js} +1 -1
  90. package/dist/web/client/assets/ui-preferences-aG2U2jjW.js +1 -0
  91. package/dist/web/client/assets/use-presence-7I2qv4qI.js +1 -0
  92. package/dist/web/client/assets/use-reduced-motion-BOcG709U.js +9 -0
  93. package/dist/web/client/assets/useBaseUiId-D9ZGPZ6f.js +1 -0
  94. package/dist/web/client/assets/useControlled-CgAAWIy9.js +1 -0
  95. package/dist/web/client/assets/utils-Brtgag-m.js +1 -0
  96. package/dist/web/client/assets/virtualized-turn-list-mL3ONUUA.js +6 -0
  97. package/dist/web/client/assets/workspace-panel-CKF5JQl2.js +1 -0
  98. package/dist/web/client/assets/workspace-path-nav-DqPbETfJ.js +2 -0
  99. package/dist/web/client/assets/{wrench-BJNNe07k.js → wrench-Myc12BTA.js} +1 -1
  100. package/dist/web/client/assets/x-BGsDD848.js +1 -0
  101. package/dist/web/client/bundle-budget.json +6 -6
  102. package/dist/web/server/_tanstack-start-manifest_v-Cm8xE-Rb-TMLYN3GY.js +93 -0
  103. package/dist/web/server/{artifacts-panel-D3ySO--V-XSL53CXL.js → artifacts-panel-CwLVBqyi-CDORJY75.js} +37 -41
  104. package/dist/web/server/{chat-command-palette-kAbXhWVg-TJWXH2WW.js → chat-command-palette-DUha04ia-5OV7WVJZ.js} +20 -18
  105. package/dist/web/server/{chunk-SALXCFVO.js → chunk-33QA7BQJ.js} +19 -1
  106. package/dist/web/server/chunk-3Q3QKLHC.js +386 -0
  107. package/dist/web/server/chunk-4EBSM4JR.js +74 -0
  108. package/dist/web/server/{chunk-5UCAJBAH.js → chunk-5RTGRTPD.js} +82 -49
  109. package/dist/web/server/chunk-7E76R7MB.js +2138 -0
  110. package/dist/web/server/{chunk-EBG3XFGQ.js → chunk-7FK6YEMA.js} +49 -44
  111. package/dist/web/server/chunk-7HXCGBUP.js +56 -0
  112. package/dist/web/server/{chunk-P66QQWUM.js → chunk-7NZ3FJDA.js} +14 -1
  113. package/dist/web/server/{chunk-HF7DG7PC.js → chunk-7UTDOTOU.js} +80 -78
  114. package/dist/web/server/{chunk-NNKJTKOQ.js → chunk-ADYZWC5L.js} +311 -281
  115. package/dist/web/server/{chunk-NJ4QEZHK.js → chunk-B2LF64HM.js} +7 -5
  116. package/dist/web/server/{chunk-OZO5ARFA.js → chunk-BQROC4PL.js} +11 -2
  117. package/dist/web/server/{chunk-NIZBFVJF.js → chunk-CAPTFJOC.js} +9 -7
  118. package/dist/web/server/{chunk-DJMHPJBP.js → chunk-CHEC7TWB.js} +3 -1
  119. package/dist/web/server/chunk-DLA5TLKX.js +164 -0
  120. package/dist/web/server/{chunk-PLYZ7P2Y.js → chunk-DP26GVWH.js} +43 -5
  121. package/dist/web/server/{chunk-MNBGB2SP.js → chunk-E5HALE4M.js} +4 -4
  122. package/dist/web/server/chunk-ETCO5KZK.js +113 -0
  123. package/dist/web/server/{chunk-NGCQJ33Y.js → chunk-FMAYMBRS.js} +1492 -1640
  124. package/dist/web/server/{chunk-KP2PNDGL.js → chunk-FTLJ66KU.js} +30 -33
  125. package/dist/web/server/{chunk-BLSX7WHW.js → chunk-H5D5DX3K.js} +23 -21
  126. package/dist/web/server/chunk-HGVJEUV4.js +102 -0
  127. package/dist/web/server/{chunk-WNCAL4HN.js → chunk-HQ5TEXHT.js} +132 -152
  128. package/dist/web/server/{chunk-YOM42BKD.js → chunk-IPV4GLJL.js} +16 -16
  129. package/dist/web/server/chunk-K6PTNSCW.js +31 -0
  130. package/dist/web/server/{chunk-AR7O7JXD.js → chunk-KBWUBWVJ.js} +24 -1
  131. package/dist/web/server/{chunk-O3HDELZ2.js → chunk-KZ35W5M7.js} +667 -661
  132. package/dist/web/server/{chunk-QIULBRTU.js → chunk-MJXXVQNA.js} +79 -84
  133. package/dist/web/server/{chunk-EAJTWMK5.js → chunk-NZ6KQT2X.js} +2 -2
  134. package/dist/web/server/{chunk-YGYOBX7G.js → chunk-O2IC376F.js} +1811 -53
  135. package/dist/web/server/chunk-OMPXUTMX.js +33 -0
  136. package/dist/web/server/{chunk-S3PQ6HKH.js → chunk-OVJYUWSQ.js} +2 -2
  137. package/dist/web/server/{chunk-JTCCQZLN.js → chunk-RJNGEU6C.js} +2 -2
  138. package/dist/web/server/{chunk-UCUFC553.js → chunk-RXUMFFUV.js} +3 -3
  139. package/dist/web/server/{chunk-DLUZFOG3.js → chunk-S2IBIJIG.js} +18 -22
  140. package/dist/web/server/{chunk-DO2O27B2.js → chunk-SDV3P3IW.js} +2 -2
  141. package/dist/web/server/{chunk-2DDWXTVG.js → chunk-T2UTBHJ4.js} +55 -11
  142. package/dist/web/server/chunk-TLNZNR7C.js +46 -0
  143. package/dist/web/server/{chunk-UL2725KQ.js → chunk-TR2GA5OF.js} +57 -49
  144. package/dist/web/server/{chunk-QFRCJWQQ.js → chunk-TU2WNRAL.js} +93 -32
  145. package/dist/web/server/{chunk-FYDQK6UX.js → chunk-UDD5W4CR.js} +32 -10
  146. package/dist/web/server/{chunk-MNPHMZU7.js → chunk-UE32PAV2.js} +47 -57
  147. package/dist/web/server/{chunk-3TIMGWWI.js → chunk-UM3RHJNZ.js} +2 -2
  148. package/dist/web/server/{chunk-ZIFSJ3HQ.js → chunk-V5IFFLZQ.js} +185 -109
  149. package/dist/web/server/{chunk-ETTDO4UO.js → chunk-WTYNN6EV.js} +1 -26
  150. package/dist/web/server/{chunk-EJEPDVK6.js → chunk-WU6X3GPJ.js} +48 -5
  151. package/dist/web/server/{chunk-D27LRYVT.js → chunk-XEG4JTND.js} +10 -9
  152. package/dist/web/server/{chunk-XIB6XNUX.js → chunk-XJ6TGSUB.js} +425 -404
  153. package/dist/web/server/{chunk-NWDI3OWB.js → chunk-XSOUURPF.js} +30 -26
  154. package/dist/web/server/{chunk-RIP3PBWT.js → chunk-YCCF676T.js} +4 -4
  155. package/dist/web/server/{chunk-4WBFCB4O.js → chunk-YDDDSVNB.js} +178 -269
  156. package/dist/web/server/{chunk-GETSIVNU.js → chunk-YVGCPUAW.js} +7 -7
  157. package/dist/web/server/{chunk-4UBOIY2S.js → chunk-ZNFXBGLK.js} +1 -1
  158. package/dist/web/server/{fork-picker-dialog-Ds6Tgtu3-DIBWN7MV.js → fork-picker-dialog-DeMiLZtS-WTRTTP64.js} +10 -8
  159. package/dist/web/server/{markdown-DTnMbD87-FXGGAPJD.js → markdown-BzNejPoZ-6ITTDAV6.js} +2 -3
  160. package/dist/web/server/{markdown-code-BStjFfsy-SSLWUT4S.js → markdown-code-DAwXuW6m-HHVELO6I.js} +3 -4
  161. package/dist/web/server/{fleet-message-queue-D_w8lSeY-T3HB7HVQ.js → message-queue-Demph1x4-GGXJUUKO.js} +14 -10
  162. package/dist/web/server/{model-selector-list-DxeGZoD2-P6S6FSJH.js → model-selector-list-BeGQHwKV-UJYFO4KX.js} +21 -19
  163. package/dist/web/server/{openui-renderer-MKFv6LlH-MDRSVFEY.js → openui-renderer-B4z18Brm-HSMKJ47D.js} +17 -17
  164. package/dist/web/server/{prompt-suggestions-BOItmGnD-YQA7RHLG.js → prompt-suggestions-yPZqX__K-3VGJC4IF.js} +7 -6
  165. package/dist/web/server/{repl-panel-CuyF8wt5-CHDT2Q3N.js → repl-panel-CgUF1qUw-3DFD2V53.js} +10 -11
  166. package/dist/web/server/{resources-panel-CE5pD4vy-V5FXBTYC.js → resources-panel-ChUliWV--JITAGS6Q.js} +6 -7
  167. package/dist/web/server/{router-Dg72SESP-PCWKLFRG.js → router-DfG45nTQ-3VXEUYG5.js} +3336 -238
  168. package/dist/web/server/{routes-BGrVtPYF-SURPAJN6.js → routes-B9F9UfF1-UN2IVBMJ.js} +5156 -4242
  169. package/dist/web/server/server.js +2 -2
  170. package/dist/web/server/{session-insights-panel-CUhdgvRt-VB2HUCQP.js → session-insights-panel-xgrkX1Rp-FDNURBXZ.js} +9 -9
  171. package/dist/web/server/{fleet-reasoning-panel-DG_vuvv0-NCZWEEIT.js → session-reasoning-panel-m1RgcIph-NUXGXVKE.js} +21 -22
  172. package/dist/web/server/session-tool-renderer-CT65wuet-RQBMXHEZ.js +46 -0
  173. package/dist/web/server/session-tree-panel-rS0t1wbf-HNA6AJBY.js +229 -0
  174. package/dist/web/server/{settings-dialog-CK0FJlTg-HZRBAXDZ.js → settings-dialog-CqkrDSnm-LFEKSS7Y.js} +186 -1380
  175. package/dist/web/server/{subagent-chat-panel-gzamnTgK-PQ2TLLJF.js → subagent-chat-panel-Cf7QdDqH-DPPSVLSY.js} +31 -39
  176. package/dist/web/server/{subagents-panel-Berjd7HJ-EI5ZKC6V.js → subagents-panel-_JsUw-6t-MZWM5P45.js} +38 -45
  177. package/dist/web/server/{fleet-tool-timeline-D6yM4ZMz-ZSFVRRRI.js → tool-timeline-QL9k5dzA-RLU26HXT.js} +6 -6
  178. package/dist/web/server/{workspace-panel-CBBa_3UO-B4PPFPMA.js → workspace-panel-BHEB9nRM-Y6KGIVGP.js} +23 -30
  179. package/package.json +1 -1
  180. package/dist/web/client/assets/action-swap-roll-COzQ86wm.js +0 -1
  181. package/dist/web/client/assets/agent-activity-svETLf_5.js +0 -1
  182. package/dist/web/client/assets/agent-disclosure-DAMuuGcM.js +0 -1
  183. package/dist/web/client/assets/analytics-stub-B6zGMuSV.js +0 -1
  184. package/dist/web/client/assets/artifacts-panel-HVjqBMyx.js +0 -1
  185. package/dist/web/client/assets/artifacts-utils-N_kUFbz2.js +0 -1
  186. package/dist/web/client/assets/bundle-mjs-DKHVkVWu.js +0 -1
  187. package/dist/web/client/assets/button-C5wFDY5_.js +0 -1
  188. package/dist/web/client/assets/chat-BhYseKd6.js +0 -52
  189. package/dist/web/client/assets/chat-command-palette-LILDO_vG.js +0 -1
  190. package/dist/web/client/assets/check-JjHKAZas.js +0 -1
  191. package/dist/web/client/assets/chevron-right-DrJxToLs.js +0 -1
  192. package/dist/web/client/assets/chevron-up-CnSvySGH.js +0 -1
  193. package/dist/web/client/assets/circle-alert-CONlFReH.js +0 -1
  194. package/dist/web/client/assets/circle-x-CkKCB__4.js +0 -1
  195. package/dist/web/client/assets/citations-BPv8HIpf.js +0 -2
  196. package/dist/web/client/assets/cn-C8c0S2mI.js +0 -1
  197. package/dist/web/client/assets/collapsible-BoXtZZWN.js +0 -1
  198. package/dist/web/client/assets/command-PhicLCoO.js +0 -1
  199. package/dist/web/client/assets/createBaseUIEventDetails-DV0dQrBX.js +0 -1
  200. package/dist/web/client/assets/createLucideIcon-DwxZHm0M.js +0 -1
  201. package/dist/web/client/assets/dialog-pBGUjAQ7.js +0 -1
  202. package/dist/web/client/assets/dist-BPaFisIZ.js +0 -41
  203. package/dist/web/client/assets/earth-DGZXAN5r.js +0 -1
  204. package/dist/web/client/assets/ease-u56MhKYS.js +0 -1
  205. package/dist/web/client/assets/file-text-T-NcAlZs.js +0 -1
  206. package/dist/web/client/assets/fleet-message-queue-fbYYwMj0.js +0 -1
  207. package/dist/web/client/assets/fleet-pi-tool-renderer-BRgNnmaJ.js +0 -1395
  208. package/dist/web/client/assets/fleet-reasoning-panel-CjA2dwUJ.js +0 -1
  209. package/dist/web/client/assets/fleet-subagent-list-iKUtLJKZ.js +0 -1
  210. package/dist/web/client/assets/fleet-tool-timeline-C8heL7ae.js +0 -1
  211. package/dist/web/client/assets/gauge-DNpstbBn.js +0 -1
  212. package/dist/web/client/assets/globals-CuIiqOTg.css +0 -2
  213. package/dist/web/client/assets/highlighted-body-KPVGNVTW-sUCZ1fHv.js +0 -1
  214. package/dist/web/client/assets/horizontal-resize-Cp3iHMH7.js +0 -1
  215. package/dist/web/client/assets/image-BbPmlw-n.js +0 -1
  216. package/dist/web/client/assets/index-CSGplyr_.js +0 -12
  217. package/dist/web/client/assets/input-PcdubeKn.js +0 -1
  218. package/dist/web/client/assets/input-group-C2HJEZvl.js +0 -1
  219. package/dist/web/client/assets/ipython-tool-CyuMOxz1.js +0 -3
  220. package/dist/web/client/assets/layout-gyLzPvVv.js +0 -1
  221. package/dist/web/client/assets/markdown-lvexwooo.js +0 -2
  222. package/dist/web/client/assets/mermaid-HWGCJPDP-Bm7CuruA.js +0 -1
  223. package/dist/web/client/assets/message-square-hbDao-A1.js +0 -1
  224. package/dist/web/client/assets/model-selector-list-CoXX358G.js +0 -1
  225. package/dist/web/client/assets/plus-DXN1Bg_z.js +0 -1
  226. package/dist/web/client/assets/prompt-input-fwP8TsgQ.js +0 -1
  227. package/dist/web/client/assets/prompt-suggestions-BlGXmWS7.js +0 -1
  228. package/dist/web/client/assets/provider-catalog-DYMFdbKc.js +0 -1
  229. package/dist/web/client/assets/provider-label-B4q5mI65.js +0 -1
  230. package/dist/web/client/assets/react-dom-Bwxum3ti.js +0 -1
  231. package/dist/web/client/assets/repl-panel-C5om8MGU.js +0 -1
  232. package/dist/web/client/assets/resources-panel-D867-goy.js +0 -1
  233. package/dist/web/client/assets/right-panel-context-DHlNWJsF.js +0 -1
  234. package/dist/web/client/assets/right-panel-registry-BBlxLxnx.js +0 -2
  235. package/dist/web/client/assets/routes-XGsAIqBJ.js +0 -16
  236. package/dist/web/client/assets/safe-external-url-D3PJJIcM.js +0 -1
  237. package/dist/web/client/assets/search-eWVnAJsb.js +0 -1
  238. package/dist/web/client/assets/session-insights-panel-YnaXvTpi.js +0 -1
  239. package/dist/web/client/assets/settings-dialog-BSBasR3o.js +0 -2
  240. package/dist/web/client/assets/shield-check-CkA2viVW.js +0 -1
  241. package/dist/web/client/assets/skeleton-loaders-C9vHwAYV.js +0 -1
  242. package/dist/web/client/assets/sparkles-DuclzqlE.js +0 -1
  243. package/dist/web/client/assets/square-Bhn8gjr0.js +0 -1
  244. package/dist/web/client/assets/subagent-transcript-DaVHjNUH.js +0 -1
  245. package/dist/web/client/assets/subagent-utils-DDH5qm9Z.js +0 -1
  246. package/dist/web/client/assets/subagents-panel-D_aVgSCi.js +0 -1
  247. package/dist/web/client/assets/surfaces-BhAXz9So.js +0 -1
  248. package/dist/web/client/assets/switch-WhXeJNNY.js +0 -1
  249. package/dist/web/client/assets/terminal-DOS1s1gm.js +0 -1
  250. package/dist/web/client/assets/toast-D3c9XeGe.js +0 -1
  251. package/dist/web/client/assets/tool-result-Cki8WUNc.js +0 -4
  252. package/dist/web/client/assets/ui-preferences-CImQGZm_.js +0 -1
  253. package/dist/web/client/assets/use-reduced-motion-eORd7fqW.js +0 -9
  254. package/dist/web/client/assets/useBaseUiId-CHqXB2UQ.js +0 -1
  255. package/dist/web/client/assets/useControlled-CJJ9BOQB.js +0 -1
  256. package/dist/web/client/assets/utils-Eg7xtNmV.js +0 -1
  257. package/dist/web/client/assets/virtualized-turn-list-CdMa-ydT.js +0 -6
  258. package/dist/web/client/assets/workspace-panel-77bDbprs.js +0 -1
  259. package/dist/web/client/assets/workspace-path-nav-C0AQNZyy.js +0 -1
  260. package/dist/web/client/assets/x-CsRC_tCI.js +0 -1
  261. package/dist/web/server/_tanstack-start-manifest_v-0L7fqnH4-KMVGUFE4.js +0 -95
  262. package/dist/web/server/agent-activity-BuEE6iVw-CDZLK4D2.js +0 -514
  263. package/dist/web/server/chunk-2JHTYWD5.js +0 -1196
  264. package/dist/web/server/chunk-3JMESBAT.js +0 -35
  265. package/dist/web/server/chunk-42XU6WV7.js +0 -56
  266. package/dist/web/server/chunk-AQ66E5OW.js +0 -33
  267. package/dist/web/server/chunk-BYXBJQAS.js +0 -0
  268. package/dist/web/server/chunk-FAGDMGLK.js +0 -6589
  269. package/dist/web/server/chunk-FJV6EQDW.js +0 -36
  270. package/dist/web/server/chunk-GL6HWDJB.js +0 -19
  271. package/dist/web/server/chunk-L46H6IDX.js +0 -13
  272. package/dist/web/server/chunk-NIDBN7BQ.js +0 -86
  273. package/dist/web/server/chunk-ON33WDZX.js +0 -31
  274. package/dist/web/server/chunk-PVJCTQFK.js +0 -22
  275. package/dist/web/server/chunk-QPNUGF3V.js +0 -35
  276. package/dist/web/server/chunk-S5LFXXDY.js +0 -1265
  277. package/dist/web/server/chunk-VPKX7QRU.js +0 -42
  278. package/dist/web/server/chunk-ZCVWADNW.js +0 -37
  279. package/dist/web/server/fleet-pi-tool-renderer-qwc-qZFq-4U556N5Q.js +0 -51
  280. package/dist/web/server/fleet-subagent-list-BGb0PjhF-2X67FMUV.js +0 -18
@@ -1,90 +1,82 @@
1
1
  import {
2
- AlertDialog,
3
- AlertDialogAction,
4
- AlertDialogCancel,
5
- AlertDialogContent,
6
- AlertDialogDescription,
7
- AlertDialogFooter,
8
- AlertDialogTitle,
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
- fleetPiRowSurface,
20
- formatProviderLabel,
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
- UI_PREFERENCES_KEY,
30
- isModelPatternEnabled,
31
- modelMatchesPattern,
32
- modelPattern,
33
- readUiPreferences
34
- } from "./chunk-ETTDO4UO.js";
35
- import {
36
- MessageSquare
37
- } from "./chunk-GL6HWDJB.js";
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
- Keyboard,
43
- Monitor,
44
- Moon,
45
- Sun
46
- } from "./chunk-LJ6Y7DBH.js";
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-SALXCFVO.js";
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-JTCCQZLN.js";
46
+ } from "./chunk-RJNGEU6C.js";
60
47
  import {
61
- FloatingPortalLite,
62
48
  Info
63
- } from "./chunk-UL2725KQ.js";
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-3JMESBAT.js";
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
- writeStoredValue
80
- } from "./chunk-SZJUXVWG.js";
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-NJ4QEZHK.js";
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-KP2PNDGL.js";
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
- usePositioner,
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-5UCAJBAH.js";
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
- DialogPopup,
139
- DialogPortal$1,
140
- DialogRoot,
141
- DialogTitle,
142
- DialogTitle$1,
143
- FOCUSABLE_POPUP_PROPS,
144
- PopupHandleAttachment,
145
- PopupTriggerMap,
146
- SurfaceProvider,
147
- applyPopupOpenChange,
148
- createInitialPopupStoreState,
149
- createPopupFloatingRootContext,
150
- isMouseLikePointerType,
151
- popupStateMapping,
152
- popupStoreSelectors,
153
- popupTransitionStateMapping,
154
- surfaceClasses,
155
- triggerOpenStateMapping,
156
- useDismiss,
157
- useImplicitActiveTrigger,
158
- useOpenStateTransitions,
159
- usePopupInteractionProps,
160
- usePopupRootStore,
161
- useSurface,
162
- useTriggerDataForwarding
163
- } from "./chunk-4WBFCB4O.js";
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-WNCAL4HN.js";
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
- X
195
- } from "./chunk-JBLHIEVG.js";
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-XIB6XNUX.js";
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-DJMHPJBP.js";
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-CK0FJlTg.js
163
+ // web/app/dist/server/assets/settings-dialog-CqkrDSnm.js
232
164
  import * as React$1 from "react";
233
- import { useCallback as useCallback2, useEffect as useEffect2, useId, useMemo as useMemo2, useRef as useRef2, useState as useState2 } from "react";
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("data-has-overflow-x"),
782
- hasOverflowY: attr("data-has-overflow-y"),
783
- overflowXStart: attr("data-overflow-x-start"),
784
- overflowXEnd: attr("data-overflow-x-end"),
785
- overflowYStart: attr("data-overflow-y-start"),
786
- overflowYEnd: attr("data-overflow-y-end"),
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("data-orientation");
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
- ["--scroll-area-corner-height"]: `${cornerSize.height}px`,
954
- ["--scroll-area-corner-width"]: `${cornerSize.width}px`
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
- "--scroll-area-overflow-x-start",
1042
- "--scroll-area-overflow-x-end",
1043
- "--scroll-area-overflow-y-start",
1044
- "--scroll-area-overflow-y-end"
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, "--scroll-area-thumb-height", scrollTop, maxScrollTop, scrollableContentHeight, clampedNextHeight, scrollbarYEl.offsetHeight - clampedNextHeight - scrollbarYOffset - thumbYOffset);
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, "--scroll-area-thumb-width", direction === "rtl" ? -scrollLeft : scrollLeft, maxScrollLeft, scrollableContentWidth, clampedNextWidth, maxThumbOffsetX);
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 = orientation === "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: "var(--scroll-area-corner-height)",
961
+ bottom: `var(${scrollAreaCornerHeight})`,
1367
962
  insetInlineEnd: 0,
1368
- ["--scroll-area-thumb-height"]: `${thumbSize.height}px`
963
+ [scrollAreaThumbHeight]: `${thumbSize.height}px`
1369
964
  } : {
1370
965
  insetInlineStart: 0,
1371
- insetInlineEnd: "var(--scroll-area-corner-width)",
966
+ insetInlineEnd: `var(${scrollAreaCornerWidth})`,
1372
967
  bottom: 0,
1373
- ["--scroll-area-thumb-width"]: `${thumbSize.width}px`
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: orientation,
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 orientation = useScrollAreaScrollbarContext();
1393
- const vertical = orientation === "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: [{ style: {
1418
- position: "absolute",
1419
- bottom: 0,
1420
- insetInlineEnd: 0,
1421
- width: cornerSize.width,
1422
- height: cornerSize.height
1423
- } }, elementProps]
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": 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(fleetPiRowSurface({
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: disabled2, onRevert, onSave, saving }) {
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: disabled2 || saving,
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 || disabled2 || saving,
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 = useCallback2(async (loginId) => {
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 = useCallback2(() => {
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 = useCallback2((result, generation) => {
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 = useCallback2(async () => {
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 = useCallback2(async () => {
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 = useCallback2(async () => {
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-[0.6875rem] font-medium tracking-wide text-muted-foreground uppercase",
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 disabled2 = !draft || settingsLoading;
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: disabled2,
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: disabled2 || listedModels.length === 0
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: disabled2,
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: disabled2,
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: disabled2,
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: disabled2,
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-[0.6875rem] font-medium tracking-wide text-muted-foreground uppercase",
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 disabled2 = !draft;
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: disabled2,
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: disabled2,
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: disabled2,
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: disabled2,
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: disabled2,
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 disabled2 = !draft || settingsLoading || !!packageError;
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: disabled2,
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 = useCallback2(() => {
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 SidebarNavItem({ active, onClick, icon: Icon, label }) {
5176
- return /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsxs(SidebarMenuButton, {
5177
- isActive: active,
3974
+ function SettingsNavItem({ active, onClick, icon: Icon, label }) {
3975
+ return /* @__PURE__ */ jsxs("button", {
3976
+ type: "button",
5178
3977
  onClick,
5179
- children: [/* @__PURE__ */ jsx(Icon, {}), /* @__PURE__ */ jsx("span", { children: label })]
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
- const preferences = readUiPreferences();
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
- writeStoredValue(UI_PREFERENCES_KEY, JSON.stringify(preferences));
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(SidebarProvider, {
5485
- className: "h-full min-h-0 min-w-0",
5486
- enableKeyboardShortcut: false,
5487
- persistState: false,
5488
- children: [/* @__PURE__ */ jsxs(Sidebar, {
5489
- collapsible: "none",
5490
- className: "hidden h-full shrink-0 flex-col border-r border-sidebar-border bg-sidebar sm:flex sm:w-52",
5491
- children: [/* @__PURE__ */ jsx(SidebarHeader, {
5492
- className: "px-4 pt-5 pb-2",
5493
- children: /* @__PURE__ */ jsx("span", {
5494
- className: "text-sm font-semibold",
5495
- children: "Settings"
5496
- })
5497
- }), /* @__PURE__ */ jsx(SidebarContent, { children: SETTINGS_SECTION_GROUPS.map((group) => /* @__PURE__ */ jsxs(SidebarGroup, { children: [/* @__PURE__ */ jsx(SidebarGroupLabel, { children: group.label }), /* @__PURE__ */ jsx(SidebarGroupContent, { children: /* @__PURE__ */ jsx(SidebarMenu, { children: SETTINGS_SECTIONS.filter((section) => section.group === group.id).map((section) => /* @__PURE__ */ jsx(SidebarNavItem, {
5498
- active: activeTab === section.id,
5499
- onClick: () => setActiveTab(section.id),
5500
- icon: section.icon,
5501
- label: section.title
5502
- }, section.id)) }) })] }, group.id)) })]
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: [