@qredence/fleet 0.6.1 → 0.6.2

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