@band-app/server 0.27.0 → 0.27.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 (162) hide show
  1. package/dist/client/assets/{DockviewBrowserContainer-CGJxcrlC.js → DockviewBrowserContainer-COwf3WHv.js} +1 -1
  2. package/dist/client/assets/{DockviewTerminalContainer-Ch1hGjB3.js → DockviewTerminalContainer-CHShiUtc.js} +2 -2
  3. package/dist/client/assets/{TerminalPanel-D6316IRS.js → TerminalPanel-Do5FQ6ub.js} +1 -1
  4. package/dist/client/assets/{_basePickBy-CmBV18rc.js → _basePickBy-CsdxTHqK.js} +1 -1
  5. package/dist/client/assets/{_baseUniq-U0BTd0Rz.js → _baseUniq-B2EJ08Mj.js} +1 -1
  6. package/dist/client/assets/{arc-BsQxyIE1.js → arc-4o4sSvn3.js} +1 -1
  7. package/dist/client/assets/{architectureDiagram-VXUJARFQ-utzNWMoy.js → architectureDiagram-VXUJARFQ-BuLso7-7.js} +1 -1
  8. package/dist/client/assets/{blockDiagram-VD42YOAC-xxfCrQvu.js → blockDiagram-VD42YOAC-DLy4c1v0.js} +1 -1
  9. package/dist/client/assets/{c4Diagram-YG6GDRKO-CYbkaWJ4.js → c4Diagram-YG6GDRKO-CxGgKDvC.js} +1 -1
  10. package/dist/client/assets/channel-DK9j4T1y.js +1 -0
  11. package/dist/client/assets/{chunk-4BX2VUAB-DKCxjb37.js → chunk-4BX2VUAB-BjZOiC5V.js} +1 -1
  12. package/dist/client/assets/{chunk-55IACEB6-B9W9ltjh.js → chunk-55IACEB6-wLT4Ekdw.js} +1 -1
  13. package/dist/client/assets/{chunk-B4BG7PRW-0MSaUsdv.js → chunk-B4BG7PRW-DNHRjTkG.js} +1 -1
  14. package/dist/client/assets/{chunk-DI55MBZ5-K1HZY-B4.js → chunk-DI55MBZ5-xiMesNd-.js} +1 -1
  15. package/dist/client/assets/{chunk-FMBD7UC4-DL19-zkO.js → chunk-FMBD7UC4-wxbkh2Ei.js} +1 -1
  16. package/dist/client/assets/{chunk-QN33PNHL-Bjj5Xo40.js → chunk-QN33PNHL-C9S-hWrw.js} +1 -1
  17. package/dist/client/assets/{chunk-QZHKN3VN-B7u9UlRD.js → chunk-QZHKN3VN-BbSdiGqJ.js} +1 -1
  18. package/dist/client/assets/{chunk-TZMSLE5B-1C4Ii4Su.js → chunk-TZMSLE5B-qzA2kORG.js} +1 -1
  19. package/dist/client/assets/classDiagram-2ON5EDUG-ao4KqSJW.js +1 -0
  20. package/dist/client/assets/classDiagram-v2-WZHVMYZB-ao4KqSJW.js +1 -0
  21. package/dist/client/assets/clone-DwKf57Xw.js +1 -0
  22. package/dist/client/assets/{cose-bilkent-S5V4N54A-PGTI-4nv.js → cose-bilkent-S5V4N54A-Ce-91kdO.js} +1 -1
  23. package/dist/client/assets/{dagre-6UL2VRFP-SduuRX7O.js → dagre-6UL2VRFP-BJfEL8HP.js} +1 -1
  24. package/dist/client/assets/{diagram-PSM6KHXK-CBSJaBQx.js → diagram-PSM6KHXK-D9QZY1LM.js} +1 -1
  25. package/dist/client/assets/{diagram-QEK2KX5R-BtO_0TYR.js → diagram-QEK2KX5R-Dq_XSqOb.js} +1 -1
  26. package/dist/client/assets/{diagram-S2PKOQOG-CU-3HUn7.js → diagram-S2PKOQOG-NXHJcJ16.js} +1 -1
  27. package/dist/client/assets/{erDiagram-Q2GNP2WA-B7YcBWa7.js → erDiagram-Q2GNP2WA-BXnG9VYr.js} +1 -1
  28. package/dist/client/assets/{flowDiagram-NV44I4VS-B_exjXhH.js → flowDiagram-NV44I4VS-DtBdd0js.js} +1 -1
  29. package/dist/client/assets/{ganttDiagram-JELNMOA3-K_s2lhZo.js → ganttDiagram-JELNMOA3-BL9zC1XT.js} +1 -1
  30. package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-Cy8dWU3T.js → gitGraphDiagram-V2S2FVAM-DixbOeLs.js} +1 -1
  31. package/dist/client/assets/{graph-F7Go3eb_.js → graph-BHFgIvQj.js} +1 -1
  32. package/dist/client/assets/{highlighted-body-B3W2YXNL-JIbcl_Gj.js → highlighted-body-B3W2YXNL-BREAoDZ4.js} +1 -1
  33. package/dist/client/assets/{index-C8kfQI4r.js → index-9wcsPWJR.js} +1 -1
  34. package/dist/client/assets/{index-CpaiC9qY.js → index-BWCi_Zs0.js} +1 -1
  35. package/dist/client/assets/{index-DKc3v7ID.js → index-C-bVTGUD.js} +1 -1
  36. package/dist/client/assets/{index-Cg4Lw3Yz.js → index-CF-5li7T.js} +1 -1
  37. package/dist/client/assets/{index-DR5Cdr17.js → index-COFoUJ6K.js} +1 -1
  38. package/dist/client/assets/{index-Cy5Bsovp.js → index-CRC_o9Ev.js} +1 -1
  39. package/dist/client/assets/{index-2I1ScAnS.js → index-Cl45brGw.js} +1 -1
  40. package/dist/client/assets/{index-DtwjNrea.js → index-CltbWfI8.js} +1 -1
  41. package/dist/client/assets/{index-VnMyG1bC.js → index-CqEMg5bi.js} +1 -1
  42. package/dist/client/assets/{index-BwLCRFTA.js → index-CvMgaEGN.js} +1 -1
  43. package/dist/client/assets/{index-QMtr_UY_.js → index-DDNdnPFA.js} +1 -1
  44. package/dist/client/assets/{index-Ckir_3bE.js → index-DEK-0WIp.js} +1 -1
  45. package/dist/client/assets/{index-CyKK9pLi.js → index-DJlZKXEl.js} +1 -1
  46. package/dist/client/assets/{index-qr9Za9SW.js → index-DK9JYQdj.js} +1 -1
  47. package/dist/client/assets/{index-D2dWAqXm.js → index-DTFreZSi.js} +1 -1
  48. package/dist/client/assets/{index-T2mcmOLE.js → index-Dw-2va3g.js} +1 -1
  49. package/dist/client/assets/{index-O8FbcZ5P.js → index-Z0JH8qku.js} +1 -1
  50. package/dist/client/assets/{index-D3_75AIk.js → index-sbEmQu7V.js} +1 -1
  51. package/dist/client/assets/{infoDiagram-HS3SLOUP-DwTbDgO5.js → infoDiagram-HS3SLOUP-Ci0THpdm.js} +1 -1
  52. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-Di8V2Erc.js → journeyDiagram-XKPGCS4Q-BoRGQ0eN.js} +1 -1
  53. package/dist/client/assets/{kanban-definition-3W4ZIXB7-CsLOWnzV.js → kanban-definition-3W4ZIXB7-AQv1UOIJ.js} +1 -1
  54. package/dist/client/assets/{layout-C3qPiTeF.js → layout-D2p6hLD3.js} +1 -1
  55. package/dist/client/assets/{main-C0_EuI87.js → main-BOL9tKxz.js} +242 -242
  56. package/dist/client/assets/main-Cd3W1s-m.css +1 -0
  57. package/dist/client/assets/{mindmap-definition-VGOIOE7T-CTcR694h.js → mindmap-definition-VGOIOE7T-C9wrq9rZ.js} +1 -1
  58. package/dist/client/assets/{pieDiagram-ADFJNKIX-B-gdfE-T.js → pieDiagram-ADFJNKIX-TDDajIhh.js} +1 -1
  59. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-B0wmCtBi.js → quadrantDiagram-AYHSOK5B-c7rUV0Lx.js} +1 -1
  60. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-B1DgDXmR.js → requirementDiagram-UZGBJVZJ-DTSqqMot.js} +1 -1
  61. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-B-onab8X.js → sankeyDiagram-TZEHDZUN-BB3ht3wT.js} +1 -1
  62. package/dist/client/assets/{sequenceDiagram-WL72ISMW-B8sIiN1d.js → sequenceDiagram-WL72ISMW-DqBzLinO.js} +1 -1
  63. package/dist/client/assets/{square-terminal-Bi7EDEf7.js → square-terminal-Dp_ALPq8.js} +1 -1
  64. package/dist/client/assets/{stateDiagram-FKZM4ZOC-CTETJ7q1.js → stateDiagram-FKZM4ZOC-0RwNDoMO.js} +1 -1
  65. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-EK4CX-2u.js +1 -0
  66. package/dist/client/assets/{timeline-definition-IT6M3QCI-DYNUQPry.js → timeline-definition-IT6M3QCI-oQ14X47P.js} +1 -1
  67. package/dist/client/assets/{treemap-GDKQZRPO-extyB4z8.js → treemap-GDKQZRPO-BaGbKw1i.js} +1 -1
  68. package/dist/client/assets/workspace._workspaceId-7sbHEjW9.js +2 -0
  69. package/dist/client/assets/{workspace._workspaceId-D0Fj26bF.js → workspace._workspaceId-CmPT8dnn.js} +1 -1
  70. package/dist/client/assets/{xychartDiagram-PRI3JC2R-BtUY3rKA.js → xychartDiagram-PRI3JC2R-BWgqOpde.js} +1 -1
  71. package/dist/migrations/20260707132201_moaning_cerebro/migration.sql +2 -0
  72. package/dist/migrations/20260707132201_moaning_cerebro/snapshot.json +1187 -0
  73. package/dist/openapi.json +69 -15
  74. package/dist/server/assets/{DockviewBrowserContainer-BjdfNGy8.js → DockviewBrowserContainer-Cwa58lvF.js} +1 -1
  75. package/dist/server/assets/{DockviewTerminalContainer-CwXOWGN4.js → DockviewTerminalContainer-C1qdx1Wr.js} +3 -3
  76. package/dist/server/assets/{TerminalPanel-BkB-gDqg.js → TerminalPanel-D6sfYBb6.js} +1 -1
  77. package/dist/server/assets/{_basePickBy-8tzGwV15.js → _basePickBy-BRuNlqVs.js} +2 -2
  78. package/dist/server/assets/{_baseUniq-CTXsu8pj.js → _baseUniq-C9mURyHm.js} +1 -1
  79. package/dist/server/assets/_tanstack-start-manifest_v-CwczGC2T.js +4 -0
  80. package/dist/server/assets/{arc-DfLShGGX.js → arc-BtzL8k-u.js} +1 -1
  81. package/dist/server/assets/{architecture-7HQA4BMR-B3ThBUTU.js → architecture-7HQA4BMR-CKZ65Ll7.js} +6 -6
  82. package/dist/server/assets/{architectureDiagram-VXUJARFQ-CWzfFX__.js → architectureDiagram-VXUJARFQ-DTAYCIJW.js} +6 -6
  83. package/dist/server/assets/{blockDiagram-VD42YOAC-DCaPOrQR.js → blockDiagram-VD42YOAC-4VOCVg9L.js} +6 -6
  84. package/dist/server/assets/{c4Diagram-YG6GDRKO-BU-dO_db.js → c4Diagram-YG6GDRKO-BgCS3qmn.js} +2 -2
  85. package/dist/server/assets/{channel-Bs5JejOk.js → channel-DFQ08j-2.js} +1 -1
  86. package/dist/server/assets/{chunk-4BX2VUAB-BuiyFSiN.js → chunk-4BX2VUAB-DB8ZP4qQ.js} +1 -1
  87. package/dist/server/assets/{chunk-55IACEB6-CPYazKTg.js → chunk-55IACEB6-CfA2yw1X.js} +1 -1
  88. package/dist/server/assets/{chunk-B4BG7PRW-Kknt_fVn.js → chunk-B4BG7PRW-Cg_IGrn-.js} +4 -4
  89. package/dist/server/assets/{chunk-DI55MBZ5-9Ix3Oo-P.js → chunk-DI55MBZ5-C0P1Cguj.js} +3 -3
  90. package/dist/server/assets/{chunk-FMBD7UC4-OhxFQXHM.js → chunk-FMBD7UC4-BvqL2ldk.js} +1 -1
  91. package/dist/server/assets/{chunk-QN33PNHL-LsrLj9Ip.js → chunk-QN33PNHL-DG3BqN6c.js} +1 -1
  92. package/dist/server/assets/{chunk-QZHKN3VN-BwJQ_Q1g.js → chunk-QZHKN3VN-DbSVY1CL.js} +1 -1
  93. package/dist/server/assets/{chunk-TZMSLE5B-Bl5v6Ae6.js → chunk-TZMSLE5B-CQddTr4s.js} +1 -1
  94. package/dist/server/assets/{classDiagram-v2-WZHVMYZB-C6GK2Aoj.js → classDiagram-2ON5EDUG-lqwd66j1.js} +5 -5
  95. package/dist/server/assets/{classDiagram-2ON5EDUG-C6GK2Aoj.js → classDiagram-v2-WZHVMYZB-lqwd66j1.js} +5 -5
  96. package/dist/server/assets/{clone-DqNWgXxT.js → clone-Bm83-s49.js} +1 -1
  97. package/dist/server/assets/{cose-bilkent-S5V4N54A-qzfBNLDd.js → cose-bilkent-S5V4N54A-DJIkSye6.js} +1 -1
  98. package/dist/server/assets/{dagre-6UL2VRFP-DNZS86ly.js → dagre-6UL2VRFP-8RUa3xMj.js} +6 -6
  99. package/dist/server/assets/{diagram-PSM6KHXK-C6ImURyq.js → diagram-PSM6KHXK-flj7QMtm.js} +7 -7
  100. package/dist/server/assets/{diagram-QEK2KX5R-diOF3OBK.js → diagram-QEK2KX5R-CDO-gP_F.js} +6 -6
  101. package/dist/server/assets/{diagram-S2PKOQOG-CP1GoHeA.js → diagram-S2PKOQOG-WsMSDccc.js} +6 -6
  102. package/dist/server/assets/{erDiagram-Q2GNP2WA-DnkGfUio.js → erDiagram-Q2GNP2WA-C8BE13tX.js} +4 -4
  103. package/dist/server/assets/{flowDiagram-NV44I4VS-B1dpItw0.js → flowDiagram-NV44I4VS-CGQvsM8y.js} +5 -5
  104. package/dist/server/assets/{ganttDiagram-JELNMOA3-CfB_h9HP.js → ganttDiagram-JELNMOA3-CEYzmLyS.js} +1 -1
  105. package/dist/server/assets/{gitGraph-G5XIXVHT-uIxmtjOh.js → gitGraph-G5XIXVHT-CoBgFiav.js} +6 -6
  106. package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-BWi1KybI.js → gitGraphDiagram-V2S2FVAM-CTvj2CUF.js} +7 -7
  107. package/dist/server/assets/{graph-BpINl381.js → graph-CcLRlZbU.js} +2 -2
  108. package/dist/server/assets/{highlighted-body-B3W2YXNL-X1-_bh6z.js → highlighted-body-B3W2YXNL-B-KIjXRR.js} +1 -1
  109. package/dist/server/assets/{index-CGqMcWZv.js → index-B4Nb7YRL.js} +5 -5
  110. package/dist/server/assets/{index-Bqv1Yqbp.js → index-BO8SzaHU.js} +2 -2
  111. package/dist/server/assets/{index-YfWUTx8U.js → index-BOujpirM.js} +2 -2
  112. package/dist/server/assets/{index-oLF27Nfu.js → index-BaRsZ-GG.js} +2 -2
  113. package/dist/server/assets/{index-BUCj1Yl_.js → index-BfY0gR9U.js} +4 -4
  114. package/dist/server/assets/{index-B_uZBCQp.js → index-BkzW7_Ky.js} +2 -2
  115. package/dist/server/assets/{index-CF9A2ZU-.js → index-Bn2w4FXC.js} +2 -2
  116. package/dist/server/assets/{index-CyY0UzHL.js → index-C9huWiJ-.js} +2 -2
  117. package/dist/server/assets/{index-CecHlx7n.js → index-CEtsZqNS.js} +1 -1
  118. package/dist/server/assets/{index-IM5Lznch.js → index-CWreRmYM.js} +3 -3
  119. package/dist/server/assets/{index-Cuy6v4sQ.js → index-Cf9HnAif.js} +5 -5
  120. package/dist/server/assets/{index-DXfbzq6y.js → index-CoXEmnej.js} +2 -2
  121. package/dist/server/assets/{index-D3oif9Da.js → index-Cwo9DINN.js} +2 -2
  122. package/dist/server/assets/{index-Bcu0C2js.js → index-DG7cMtrE.js} +3 -3
  123. package/dist/server/assets/{index-Ch5w2qx-.js → index-DGLaWKzg.js} +2 -2
  124. package/dist/server/assets/{index-DEYBFbnW.js → index-DL8Aq-MC.js} +2 -2
  125. package/dist/server/assets/{index-Bm4xacwx.js → index-DnkAwjsP.js} +1 -1
  126. package/dist/server/assets/{index-BIn7ueGd.js → index-DtBrHSR6.js} +2 -2
  127. package/dist/server/assets/{info-VBDWY6EO-CqVqNO_U.js → info-VBDWY6EO-dPnWGou0.js} +6 -6
  128. package/dist/server/assets/{infoDiagram-HS3SLOUP-LstCwT5M.js → infoDiagram-HS3SLOUP-CanJ2UdU.js} +5 -5
  129. package/dist/server/assets/{journeyDiagram-XKPGCS4Q-Bq4xdGvc.js → journeyDiagram-XKPGCS4Q-DHO36eI-.js} +4 -4
  130. package/dist/server/assets/{kanban-definition-3W4ZIXB7-Cz8QJrE-.js → kanban-definition-3W4ZIXB7-CVMwRab0.js} +2 -2
  131. package/dist/server/assets/{layout-BR6KziPh.js → layout-4KBouLlF.js} +4 -4
  132. package/dist/server/assets/{mermaid-3ZIDBTTL-CX1H3heG.js → mermaid-3ZIDBTTL-B7ZUN_Qp.js} +1 -1
  133. package/dist/server/assets/{mermaid-parser.core-DErnTWrV.js → mermaid-parser.core-X4fas7Ck.js} +11 -11
  134. package/dist/server/assets/{mindmap-definition-VGOIOE7T-OX1eekPS.js → mindmap-definition-VGOIOE7T-abL0gs0k.js} +3 -3
  135. package/dist/server/assets/{packet-DYOGHKS2-C8FvmUVf.js → packet-DYOGHKS2-CXiTEP4R.js} +6 -6
  136. package/dist/server/assets/{pie-VRWISCQL-Bb_jFdxC.js → pie-VRWISCQL-LzzDSiEA.js} +6 -6
  137. package/dist/server/assets/{pieDiagram-ADFJNKIX-CyhwaYTd.js → pieDiagram-ADFJNKIX-Dcjcisnd.js} +7 -7
  138. package/dist/server/assets/{quadrantDiagram-AYHSOK5B-BRzFRm7k.js → quadrantDiagram-AYHSOK5B-PVZmGqa8.js} +1 -1
  139. package/dist/server/assets/{radar-ZZBFDIW7-C2cWeYfK.js → radar-ZZBFDIW7-D-RH85sp.js} +6 -6
  140. package/dist/server/assets/{requirementDiagram-UZGBJVZJ-fJ6FCY2X.js → requirementDiagram-UZGBJVZJ-o3XZfWHL.js} +3 -3
  141. package/dist/server/assets/{router-BSilWMbB.js → router-CR-9ZnLb.js} +800 -517
  142. package/dist/server/assets/{sankeyDiagram-TZEHDZUN-DkGxRBc4.js → sankeyDiagram-TZEHDZUN-DJ9W5U5_.js} +1 -1
  143. package/dist/server/assets/{sequenceDiagram-WL72ISMW-Y9h8QzpA.js → sequenceDiagram-WL72ISMW-DLHwNIY3.js} +3 -3
  144. package/dist/server/assets/{square-terminal-lPOPYTqx.js → square-terminal-fwIFFrU0.js} +1 -1
  145. package/dist/server/assets/{stateDiagram-FKZM4ZOC-D9Xo5bg5.js → stateDiagram-FKZM4ZOC-Doy5tRH0.js} +8 -8
  146. package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-BBj6Aiwx.js → stateDiagram-v2-4FDKWEC3-C9UezhSz.js} +4 -4
  147. package/dist/server/assets/{timeline-definition-IT6M3QCI-oAS-tbgM.js → timeline-definition-IT6M3QCI-DQgqc0il.js} +2 -2
  148. package/dist/server/assets/{treemap-GDKQZRPO-BA7EQwOb.js → treemap-GDKQZRPO-BYUsfiTc.js} +6 -6
  149. package/dist/server/assets/{workspace._workspaceId-BAO3HXDS.js → workspace._workspaceId-D89v3gxu.js} +1 -1
  150. package/dist/server/assets/{workspace._workspaceId-CREreypp.js → workspace._workspaceId-Du6uUhkr.js} +4 -4
  151. package/dist/server/assets/{xychartDiagram-PRI3JC2R-CYgqsSC_.js → xychartDiagram-PRI3JC2R-Bu3TCZ6_.js} +1 -1
  152. package/dist/server/server.js +2 -2
  153. package/dist/start-server.mjs +1225 -976
  154. package/package.json +4 -4
  155. package/dist/client/assets/channel-CpSzKNMk.js +0 -1
  156. package/dist/client/assets/classDiagram-2ON5EDUG-BgIuIwCk.js +0 -1
  157. package/dist/client/assets/classDiagram-v2-WZHVMYZB-BgIuIwCk.js +0 -1
  158. package/dist/client/assets/clone-BnxcJIG7.js +0 -1
  159. package/dist/client/assets/main-DFLn265W.css +0 -1
  160. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-BvVewf6E.js +0 -1
  161. package/dist/client/assets/workspace._workspaceId-C8Z_0tr5.js +0 -2
  162. package/dist/server/assets/_tanstack-start-manifest_v-Bu_aDRUe.js +0 -4
@@ -1226,7 +1226,7 @@ const createLucideIcon = (iconName, iconNode) => {
1226
1226
  Component.displayName = toPascalCase(iconName);
1227
1227
  return Component;
1228
1228
  };
1229
- const __iconNode$1r = [
1229
+ const __iconNode$1s = [
1230
1230
  [
1231
1231
  "path",
1232
1232
  {
@@ -1235,45 +1235,45 @@ const __iconNode$1r = [
1235
1235
  }
1236
1236
  ]
1237
1237
  ];
1238
- const Activity = createLucideIcon("activity", __iconNode$1r);
1239
- const __iconNode$1q = [
1238
+ const Activity = createLucideIcon("activity", __iconNode$1s);
1239
+ const __iconNode$1r = [
1240
1240
  ["path", { d: "M12 17V3", key: "1cwfxf" }],
1241
1241
  ["path", { d: "m6 11 6 6 6-6", key: "12ii2o" }],
1242
1242
  ["path", { d: "M19 21H5", key: "150jfl" }]
1243
1243
  ];
1244
- const ArrowDownToLine = createLucideIcon("arrow-down-to-line", __iconNode$1q);
1245
- const __iconNode$1p = [
1244
+ const ArrowDownToLine = createLucideIcon("arrow-down-to-line", __iconNode$1r);
1245
+ const __iconNode$1q = [
1246
1246
  ["path", { d: "M12 5v14", key: "s699le" }],
1247
1247
  ["path", { d: "m19 12-7 7-7-7", key: "1idqje" }]
1248
1248
  ];
1249
- const ArrowDown = createLucideIcon("arrow-down", __iconNode$1p);
1250
- const __iconNode$1o = [
1249
+ const ArrowDown = createLucideIcon("arrow-down", __iconNode$1q);
1250
+ const __iconNode$1p = [
1251
1251
  ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
1252
1252
  ["path", { d: "M19 12H5", key: "x3x0zl" }]
1253
1253
  ];
1254
- const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1o);
1255
- const __iconNode$1n = [
1254
+ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1p);
1255
+ const __iconNode$1o = [
1256
1256
  ["path", { d: "M5 12h14", key: "1ays0h" }],
1257
1257
  ["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
1258
1258
  ];
1259
- const ArrowRight = createLucideIcon("arrow-right", __iconNode$1n);
1260
- const __iconNode$1m = [
1259
+ const ArrowRight = createLucideIcon("arrow-right", __iconNode$1o);
1260
+ const __iconNode$1n = [
1261
1261
  ["path", { d: "m18 9-6-6-6 6", key: "kcunyi" }],
1262
1262
  ["path", { d: "M12 3v14", key: "7cf3v8" }],
1263
1263
  ["path", { d: "M5 21h14", key: "11awu3" }]
1264
1264
  ];
1265
- const ArrowUpFromLine = createLucideIcon("arrow-up-from-line", __iconNode$1m);
1266
- const __iconNode$1l = [
1265
+ const ArrowUpFromLine = createLucideIcon("arrow-up-from-line", __iconNode$1n);
1266
+ const __iconNode$1m = [
1267
1267
  ["path", { d: "m5 12 7-7 7 7", key: "hav0vg" }],
1268
1268
  ["path", { d: "M12 19V5", key: "x0mq9r" }]
1269
1269
  ];
1270
- const ArrowUp = createLucideIcon("arrow-up", __iconNode$1l);
1271
- const __iconNode$1k = [
1270
+ const ArrowUp = createLucideIcon("arrow-up", __iconNode$1m);
1271
+ const __iconNode$1l = [
1272
1272
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1273
1273
  ["path", { d: "M4.929 4.929 19.07 19.071", key: "196cmz" }]
1274
1274
  ];
1275
- const Ban = createLucideIcon("ban", __iconNode$1k);
1276
- const __iconNode$1j = [
1275
+ const Ban = createLucideIcon("ban", __iconNode$1l);
1276
+ const __iconNode$1k = [
1277
1277
  ["path", { d: "M12 8V4H8", key: "hb8ula" }],
1278
1278
  ["rect", { width: "16", height: "12", x: "4", y: "8", rx: "2", key: "enze0r" }],
1279
1279
  ["path", { d: "M2 14h2", key: "vft8re" }],
@@ -1281,77 +1281,77 @@ const __iconNode$1j = [
1281
1281
  ["path", { d: "M15 13v2", key: "1xurst" }],
1282
1282
  ["path", { d: "M9 13v2", key: "rq6x2g" }]
1283
1283
  ];
1284
- const Bot = createLucideIcon("bot", __iconNode$1j);
1285
- const __iconNode$1i = [
1284
+ const Bot = createLucideIcon("bot", __iconNode$1k);
1285
+ const __iconNode$1j = [
1286
1286
  ["path", { d: "m2 16 4.039-9.69a.5.5 0 0 1 .923 0L11 16", key: "d5nyq2" }],
1287
1287
  ["path", { d: "M22 9v7", key: "pvm9v3" }],
1288
1288
  ["path", { d: "M3.304 13h6.392", key: "1q3zxz" }],
1289
1289
  ["circle", { cx: "18.5", cy: "12.5", r: "3.5", key: "z97x68" }]
1290
1290
  ];
1291
- const CaseSensitive = createLucideIcon("case-sensitive", __iconNode$1i);
1292
- const __iconNode$1h = [
1291
+ const CaseSensitive = createLucideIcon("case-sensitive", __iconNode$1j);
1292
+ const __iconNode$1i = [
1293
1293
  ["path", { d: "M3 3v16a2 2 0 0 0 2 2h16", key: "c24i48" }],
1294
1294
  ["path", { d: "M18 17V9", key: "2bz60n" }],
1295
1295
  ["path", { d: "M13 17V5", key: "1frdt8" }],
1296
1296
  ["path", { d: "M8 17v-3", key: "17ska0" }]
1297
1297
  ];
1298
- const ChartColumn = createLucideIcon("chart-column", __iconNode$1h);
1299
- const __iconNode$1g = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
1300
- const Check = createLucideIcon("check", __iconNode$1g);
1301
- const __iconNode$1f = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
1302
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$1f);
1303
- const __iconNode$1e = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
1304
- const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1e);
1305
- const __iconNode$1d = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
1306
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$1d);
1307
- const __iconNode$1c = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
1308
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$1c);
1309
- const __iconNode$1b = [
1298
+ const ChartColumn = createLucideIcon("chart-column", __iconNode$1i);
1299
+ const __iconNode$1h = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
1300
+ const Check = createLucideIcon("check", __iconNode$1h);
1301
+ const __iconNode$1g = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
1302
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$1g);
1303
+ const __iconNode$1f = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
1304
+ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1f);
1305
+ const __iconNode$1e = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
1306
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$1e);
1307
+ const __iconNode$1d = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
1308
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$1d);
1309
+ const __iconNode$1c = [
1310
1310
  ["path", { d: "m7 20 5-5 5 5", key: "13a0gw" }],
1311
1311
  ["path", { d: "m7 4 5 5 5-5", key: "1kwcof" }]
1312
1312
  ];
1313
- const ChevronsDownUp = createLucideIcon("chevrons-down-up", __iconNode$1b);
1314
- const __iconNode$1a = [
1313
+ const ChevronsDownUp = createLucideIcon("chevrons-down-up", __iconNode$1c);
1314
+ const __iconNode$1b = [
1315
1315
  ["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
1316
1316
  ["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
1317
1317
  ];
1318
- const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1a);
1319
- const __iconNode$19 = [
1318
+ const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1b);
1319
+ const __iconNode$1a = [
1320
1320
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1321
1321
  ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
1322
1322
  ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
1323
1323
  ];
1324
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$19);
1325
- const __iconNode$18 = [
1324
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$1a);
1325
+ const __iconNode$19 = [
1326
1326
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1327
1327
  ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
1328
1328
  ];
1329
- const CircleCheck = createLucideIcon("circle-check", __iconNode$18);
1330
- const __iconNode$17 = [
1329
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$19);
1330
+ const __iconNode$18 = [
1331
1331
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1332
1332
  ["path", { d: "m15 9-6 6", key: "1uzhvr" }],
1333
1333
  ["path", { d: "m9 9 6 6", key: "z0biqf" }]
1334
1334
  ];
1335
- const CircleX = createLucideIcon("circle-x", __iconNode$17);
1336
- const __iconNode$16 = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
1337
- const Circle = createLucideIcon("circle", __iconNode$16);
1338
- const __iconNode$15 = [
1335
+ const CircleX = createLucideIcon("circle-x", __iconNode$18);
1336
+ const __iconNode$17 = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
1337
+ const Circle = createLucideIcon("circle", __iconNode$17);
1338
+ const __iconNode$16 = [
1339
1339
  ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
1340
1340
  ["path", { d: "M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2", key: "4jdomd" }],
1341
1341
  ["path", { d: "M16 4h2a2 2 0 0 1 2 2v4", key: "3hqy98" }],
1342
1342
  ["path", { d: "M21 14H11", key: "1bme5i" }],
1343
1343
  ["path", { d: "m15 10-4 4 4 4", key: "5dvupr" }]
1344
1344
  ];
1345
- const ClipboardCopy = createLucideIcon("clipboard-copy", __iconNode$15);
1346
- const __iconNode$14 = [
1345
+ const ClipboardCopy = createLucideIcon("clipboard-copy", __iconNode$16);
1346
+ const __iconNode$15 = [
1347
1347
  ["path", { d: "M11 14h10", key: "1w8e9d" }],
1348
1348
  ["path", { d: "M16 4h2a2 2 0 0 1 2 2v1.344", key: "1e62lh" }],
1349
1349
  ["path", { d: "m17 18 4-4-4-4", key: "z2g111" }],
1350
1350
  ["path", { d: "M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 1.793-1.113", key: "bjbb7m" }],
1351
1351
  ["rect", { x: "8", y: "2", width: "8", height: "4", rx: "1", key: "ublpy" }]
1352
1352
  ];
1353
- const ClipboardPaste = createLucideIcon("clipboard-paste", __iconNode$14);
1354
- const __iconNode$13 = [
1353
+ const ClipboardPaste = createLucideIcon("clipboard-paste", __iconNode$15);
1354
+ const __iconNode$14 = [
1355
1355
  ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
1356
1356
  [
1357
1357
  "path",
@@ -1361,53 +1361,53 @@ const __iconNode$13 = [
1361
1361
  }
1362
1362
  ]
1363
1363
  ];
1364
- const Clipboard = createLucideIcon("clipboard", __iconNode$13);
1365
- const __iconNode$12 = [
1364
+ const Clipboard = createLucideIcon("clipboard", __iconNode$14);
1365
+ const __iconNode$13 = [
1366
1366
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1367
1367
  ["path", { d: "M12 6v6l4 2", key: "mmk7yg" }]
1368
1368
  ];
1369
- const Clock = createLucideIcon("clock", __iconNode$12);
1370
- const __iconNode$11 = [
1369
+ const Clock = createLucideIcon("clock", __iconNode$13);
1370
+ const __iconNode$12 = [
1371
1371
  ["path", { d: "m18 16 4-4-4-4", key: "1inbqp" }],
1372
1372
  ["path", { d: "m6 8-4 4 4 4", key: "15zrgr" }],
1373
1373
  ["path", { d: "m14.5 4-5 16", key: "e7oirm" }]
1374
1374
  ];
1375
- const CodeXml = createLucideIcon("code-xml", __iconNode$11);
1376
- const __iconNode$10 = [
1375
+ const CodeXml = createLucideIcon("code-xml", __iconNode$12);
1376
+ const __iconNode$11 = [
1377
1377
  ["path", { d: "m16 18 6-6-6-6", key: "eg8j8" }],
1378
1378
  ["path", { d: "m8 6-6 6 6 6", key: "ppft3o" }]
1379
1379
  ];
1380
- const Code = createLucideIcon("code", __iconNode$10);
1381
- const __iconNode$$ = [
1380
+ const Code = createLucideIcon("code", __iconNode$11);
1381
+ const __iconNode$10 = [
1382
1382
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
1383
1383
  ["path", { d: "M12 3v18", key: "108xh3" }]
1384
1384
  ];
1385
- const Columns2 = createLucideIcon("columns-2", __iconNode$$);
1386
- const __iconNode$_ = [
1385
+ const Columns2 = createLucideIcon("columns-2", __iconNode$10);
1386
+ const __iconNode$$ = [
1387
1387
  [
1388
1388
  "path",
1389
1389
  { d: "M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3", key: "11bfej" }
1390
1390
  ]
1391
1391
  ];
1392
- const Command$1 = createLucideIcon("command", __iconNode$_);
1393
- const __iconNode$Z = [
1392
+ const Command$1 = createLucideIcon("command", __iconNode$$);
1393
+ const __iconNode$_ = [
1394
1394
  ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
1395
1395
  ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
1396
1396
  ];
1397
- const Copy = createLucideIcon("copy", __iconNode$Z);
1398
- const __iconNode$Y = [
1397
+ const Copy = createLucideIcon("copy", __iconNode$_);
1398
+ const __iconNode$Z = [
1399
1399
  ["path", { d: "M12 15V3", key: "m9g1x1" }],
1400
1400
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
1401
1401
  ["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
1402
1402
  ];
1403
- const Download = createLucideIcon("download", __iconNode$Y);
1404
- const __iconNode$X = [
1403
+ const Download = createLucideIcon("download", __iconNode$Z);
1404
+ const __iconNode$Y = [
1405
1405
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
1406
1406
  ["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
1407
1407
  ["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
1408
1408
  ];
1409
- const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$X);
1410
- const __iconNode$W = [
1409
+ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$Y);
1410
+ const __iconNode$X = [
1411
1411
  ["path", { d: "m15 15 6 6", key: "1s409w" }],
1412
1412
  ["path", { d: "m15 9 6-6", key: "ko1vev" }],
1413
1413
  ["path", { d: "M21 16v5h-5", key: "1ck2sf" }],
@@ -1417,14 +1417,14 @@ const __iconNode$W = [
1417
1417
  ["path", { d: "M3 8V3h5", key: "1ln10m" }],
1418
1418
  ["path", { d: "M9 9 3 3", key: "v551iv" }]
1419
1419
  ];
1420
- const Expand = createLucideIcon("expand", __iconNode$W);
1421
- const __iconNode$V = [
1420
+ const Expand = createLucideIcon("expand", __iconNode$X);
1421
+ const __iconNode$W = [
1422
1422
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
1423
1423
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
1424
1424
  ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
1425
1425
  ];
1426
- const ExternalLink$1 = createLucideIcon("external-link", __iconNode$V);
1427
- const __iconNode$U = [
1426
+ const ExternalLink$1 = createLucideIcon("external-link", __iconNode$W);
1427
+ const __iconNode$V = [
1428
1428
  [
1429
1429
  "path",
1430
1430
  {
@@ -1434,8 +1434,8 @@ const __iconNode$U = [
1434
1434
  ],
1435
1435
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
1436
1436
  ];
1437
- const Eye = createLucideIcon("eye", __iconNode$U);
1438
- const __iconNode$T = [
1437
+ const Eye = createLucideIcon("eye", __iconNode$V);
1438
+ const __iconNode$U = [
1439
1439
  [
1440
1440
  "path",
1441
1441
  {
@@ -1446,8 +1446,8 @@ const __iconNode$T = [
1446
1446
  ["path", { d: "M12 9v4", key: "juzpu7" }],
1447
1447
  ["path", { d: "M12 17h.01", key: "p32p05" }]
1448
1448
  ];
1449
- const FileExclamationPoint = createLucideIcon("file-exclamation-point", __iconNode$T);
1450
- const __iconNode$S = [
1449
+ const FileExclamationPoint = createLucideIcon("file-exclamation-point", __iconNode$U);
1450
+ const __iconNode$T = [
1451
1451
  [
1452
1452
  "path",
1453
1453
  {
@@ -1459,8 +1459,8 @@ const __iconNode$S = [
1459
1459
  ["path", { d: "M2 15h10", key: "jfw4w8" }],
1460
1460
  ["path", { d: "m9 18 3-3-3-3", key: "112psh" }]
1461
1461
  ];
1462
- const FileInput = createLucideIcon("file-input", __iconNode$S);
1463
- const __iconNode$R = [
1462
+ const FileInput = createLucideIcon("file-input", __iconNode$T);
1463
+ const __iconNode$S = [
1464
1464
  [
1465
1465
  "path",
1466
1466
  {
@@ -1472,8 +1472,8 @@ const __iconNode$R = [
1472
1472
  ["path", { d: "M9 15h6", key: "cctwl0" }],
1473
1473
  ["path", { d: "M12 18v-6", key: "17g6i2" }]
1474
1474
  ];
1475
- const FilePlus = createLucideIcon("file-plus", __iconNode$R);
1476
- const __iconNode$Q = [
1475
+ const FilePlus = createLucideIcon("file-plus", __iconNode$S);
1476
+ const __iconNode$R = [
1477
1477
  [
1478
1478
  "path",
1479
1479
  {
@@ -1486,8 +1486,8 @@ const __iconNode$Q = [
1486
1486
  ["path", { d: "M16 13H8", key: "t4e002" }],
1487
1487
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
1488
1488
  ];
1489
- const FileText = createLucideIcon("file-text", __iconNode$Q);
1490
- const __iconNode$P = [
1489
+ const FileText = createLucideIcon("file-text", __iconNode$R);
1490
+ const __iconNode$Q = [
1491
1491
  [
1492
1492
  "path",
1493
1493
  {
@@ -1497,8 +1497,8 @@ const __iconNode$P = [
1497
1497
  ],
1498
1498
  ["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }]
1499
1499
  ];
1500
- const File$1 = createLucideIcon("file", __iconNode$P);
1501
- const __iconNode$O = [
1500
+ const File$1 = createLucideIcon("file", __iconNode$Q);
1501
+ const __iconNode$P = [
1502
1502
  [
1503
1503
  "path",
1504
1504
  {
@@ -1507,8 +1507,8 @@ const __iconNode$O = [
1507
1507
  }
1508
1508
  ]
1509
1509
  ];
1510
- const FolderOpen = createLucideIcon("folder-open", __iconNode$O);
1511
- const __iconNode$N = [
1510
+ const FolderOpen = createLucideIcon("folder-open", __iconNode$P);
1511
+ const __iconNode$O = [
1512
1512
  ["path", { d: "M12 10v6", key: "1bos4e" }],
1513
1513
  ["path", { d: "M9 13h6", key: "1uhe8q" }],
1514
1514
  [
@@ -1519,8 +1519,8 @@ const __iconNode$N = [
1519
1519
  }
1520
1520
  ]
1521
1521
  ];
1522
- const FolderPlus = createLucideIcon("folder-plus", __iconNode$N);
1523
- const __iconNode$M = [
1522
+ const FolderPlus = createLucideIcon("folder-plus", __iconNode$O);
1523
+ const __iconNode$N = [
1524
1524
  [
1525
1525
  "path",
1526
1526
  {
@@ -1529,39 +1529,39 @@ const __iconNode$M = [
1529
1529
  }
1530
1530
  ]
1531
1531
  ];
1532
- const Folder = createLucideIcon("folder", __iconNode$M);
1533
- const __iconNode$L = [
1532
+ const Folder = createLucideIcon("folder", __iconNode$N);
1533
+ const __iconNode$M = [
1534
1534
  ["path", { d: "M15 6a9 9 0 0 0-9 9V3", key: "1cii5b" }],
1535
1535
  ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
1536
1536
  ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }]
1537
1537
  ];
1538
- const GitBranch = createLucideIcon("git-branch", __iconNode$L);
1539
- const __iconNode$K = [
1538
+ const GitBranch = createLucideIcon("git-branch", __iconNode$M);
1539
+ const __iconNode$L = [
1540
1540
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }],
1541
1541
  ["line", { x1: "3", x2: "9", y1: "12", y2: "12", key: "1dyftd" }],
1542
1542
  ["line", { x1: "15", x2: "21", y1: "12", y2: "12", key: "oup4p8" }]
1543
1543
  ];
1544
- const GitCommitHorizontal = createLucideIcon("git-commit-horizontal", __iconNode$K);
1545
- const __iconNode$J = [
1544
+ const GitCommitHorizontal = createLucideIcon("git-commit-horizontal", __iconNode$L);
1545
+ const __iconNode$K = [
1546
1546
  ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }],
1547
1547
  ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
1548
1548
  ["path", { d: "M13 6h3a2 2 0 0 1 2 2v7", key: "1yeb86" }],
1549
1549
  ["path", { d: "M11 18H8a2 2 0 0 1-2-2V9", key: "19pyzm" }]
1550
1550
  ];
1551
- const GitCompare = createLucideIcon("git-compare", __iconNode$J);
1552
- const __iconNode$I = [
1551
+ const GitCompare = createLucideIcon("git-compare", __iconNode$K);
1552
+ const __iconNode$J = [
1553
1553
  ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }],
1554
1554
  ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
1555
1555
  ["path", { d: "M6 21V9a9 9 0 0 0 9 9", key: "7kw0sc" }]
1556
1556
  ];
1557
- const GitMerge = createLucideIcon("git-merge", __iconNode$I);
1558
- const __iconNode$H = [
1557
+ const GitMerge = createLucideIcon("git-merge", __iconNode$J);
1558
+ const __iconNode$I = [
1559
1559
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1560
1560
  ["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
1561
1561
  ["path", { d: "M2 12h20", key: "9i4pu4" }]
1562
1562
  ];
1563
- const Globe = createLucideIcon("globe", __iconNode$H);
1564
- const __iconNode$G = [
1563
+ const Globe = createLucideIcon("globe", __iconNode$I);
1564
+ const __iconNode$H = [
1565
1565
  ["circle", { cx: "12", cy: "9", r: "1", key: "124mty" }],
1566
1566
  ["circle", { cx: "19", cy: "9", r: "1", key: "1ruzo2" }],
1567
1567
  ["circle", { cx: "5", cy: "9", r: "1", key: "1a8b28" }],
@@ -1569,8 +1569,8 @@ const __iconNode$G = [
1569
1569
  ["circle", { cx: "19", cy: "15", r: "1", key: "1a92ep" }],
1570
1570
  ["circle", { cx: "5", cy: "15", r: "1", key: "5r1jwy" }]
1571
1571
  ];
1572
- const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$G);
1573
- const __iconNode$F = [
1572
+ const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$H);
1573
+ const __iconNode$G = [
1574
1574
  ["path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8", key: "5wwlr5" }],
1575
1575
  [
1576
1576
  "path",
@@ -1580,8 +1580,8 @@ const __iconNode$F = [
1580
1580
  }
1581
1581
  ]
1582
1582
  ];
1583
- const House = createLucideIcon("house", __iconNode$F);
1584
- const __iconNode$E = [
1583
+ const House = createLucideIcon("house", __iconNode$G);
1584
+ const __iconNode$F = [
1585
1585
  ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }],
1586
1586
  ["path", { d: "M10.41 10.41a2 2 0 1 1-2.83-2.83", key: "1bzlo9" }],
1587
1587
  ["line", { x1: "13.5", x2: "6", y1: "13.5", y2: "21", key: "1q0aeu" }],
@@ -1595,31 +1595,31 @@ const __iconNode$E = [
1595
1595
  ],
1596
1596
  ["path", { d: "M21 15V5a2 2 0 0 0-2-2H9", key: "43el77" }]
1597
1597
  ];
1598
- const ImageOff = createLucideIcon("image-off", __iconNode$E);
1599
- const __iconNode$D = [
1598
+ const ImageOff = createLucideIcon("image-off", __iconNode$F);
1599
+ const __iconNode$E = [
1600
1600
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1601
1601
  ["path", { d: "M12 16v-4", key: "1dtifu" }],
1602
1602
  ["path", { d: "M12 8h.01", key: "e9boi3" }]
1603
1603
  ];
1604
- const Info$1 = createLucideIcon("info", __iconNode$D);
1605
- const __iconNode$C = [
1604
+ const Info$1 = createLucideIcon("info", __iconNode$E);
1605
+ const __iconNode$D = [
1606
1606
  ["path", { d: "M16 5H3", key: "m91uny" }],
1607
1607
  ["path", { d: "M11 12H3", key: "51ecnj" }],
1608
1608
  ["path", { d: "M16 19H3", key: "zzsher" }],
1609
1609
  ["path", { d: "M21 12h-6", key: "bt1uis" }]
1610
1610
  ];
1611
- const ListMinus = createLucideIcon("list-minus", __iconNode$C);
1612
- const __iconNode$B = [
1611
+ const ListMinus = createLucideIcon("list-minus", __iconNode$D);
1612
+ const __iconNode$C = [
1613
1613
  ["path", { d: "M13 5h8", key: "a7qcls" }],
1614
1614
  ["path", { d: "M13 12h8", key: "h98zly" }],
1615
1615
  ["path", { d: "M13 19h8", key: "c3s6r1" }],
1616
1616
  ["path", { d: "m3 17 2 2 4-4", key: "1jhpwq" }],
1617
1617
  ["rect", { x: "3", y: "4", width: "6", height: "6", rx: "1", key: "cif1o7" }]
1618
1618
  ];
1619
- const ListTodo = createLucideIcon("list-todo", __iconNode$B);
1620
- const __iconNode$A = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
1621
- const LoaderCircle = createLucideIcon("loader-circle", __iconNode$A);
1622
- const __iconNode$z = [
1619
+ const ListTodo = createLucideIcon("list-todo", __iconNode$C);
1620
+ const __iconNode$B = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
1621
+ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$B);
1622
+ const __iconNode$A = [
1623
1623
  ["path", { d: "M12 2v4", key: "3427ic" }],
1624
1624
  ["path", { d: "m16.2 7.8 2.9-2.9", key: "r700ao" }],
1625
1625
  ["path", { d: "M18 12h4", key: "wj9ykh" }],
@@ -1629,15 +1629,15 @@ const __iconNode$z = [
1629
1629
  ["path", { d: "M2 12h4", key: "j09sii" }],
1630
1630
  ["path", { d: "m4.9 4.9 2.9 2.9", key: "giyufr" }]
1631
1631
  ];
1632
- const Loader = createLucideIcon("loader", __iconNode$z);
1633
- const __iconNode$y = [
1632
+ const Loader = createLucideIcon("loader", __iconNode$A);
1633
+ const __iconNode$z = [
1634
1634
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
1635
1635
  ["path", { d: "m21 3-7 7", key: "1l2asr" }],
1636
1636
  ["path", { d: "m3 21 7-7", key: "tjx5ai" }],
1637
1637
  ["path", { d: "M9 21H3v-6", key: "wtvkvv" }]
1638
1638
  ];
1639
- const Maximize2 = createLucideIcon("maximize-2", __iconNode$y);
1640
- const __iconNode$x = [
1639
+ const Maximize2 = createLucideIcon("maximize-2", __iconNode$z);
1640
+ const __iconNode$y = [
1641
1641
  [
1642
1642
  "path",
1643
1643
  {
@@ -1646,19 +1646,24 @@ const __iconNode$x = [
1646
1646
  }
1647
1647
  ]
1648
1648
  ];
1649
- const MessageSquare = createLucideIcon("message-square", __iconNode$x);
1650
- const __iconNode$w = [
1649
+ const MessageSquare = createLucideIcon("message-square", __iconNode$y);
1650
+ const __iconNode$x = [
1651
1651
  ["path", { d: "m14 10 7-7", key: "oa77jy" }],
1652
1652
  ["path", { d: "M20 10h-6V4", key: "mjg0md" }],
1653
1653
  ["path", { d: "m3 21 7-7", key: "tjx5ai" }],
1654
1654
  ["path", { d: "M4 14h6v6", key: "rmj7iw" }]
1655
1655
  ];
1656
- const Minimize2 = createLucideIcon("minimize-2", __iconNode$w);
1657
- const __iconNode$v = [
1656
+ const Minimize2 = createLucideIcon("minimize-2", __iconNode$x);
1657
+ const __iconNode$w = [
1658
1658
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
1659
1659
  ["path", { d: "M9 3v18", key: "fh3hqa" }]
1660
1660
  ];
1661
- const PanelLeft = createLucideIcon("panel-left", __iconNode$v);
1661
+ const PanelLeft = createLucideIcon("panel-left", __iconNode$w);
1662
+ const __iconNode$v = [
1663
+ ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
1664
+ ["path", { d: "M15 3v18", key: "14nvp0" }]
1665
+ ];
1666
+ const PanelRight = createLucideIcon("panel-right", __iconNode$v);
1662
1667
  const __iconNode$u = [
1663
1668
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
1664
1669
  ["path", { d: "M3 9h18", key: "1pudct" }]
@@ -14184,10 +14189,11 @@ function AccordionContent({
14184
14189
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
14185
14190
  Content2$6,
14186
14191
  {
14192
+ forceMount: true,
14187
14193
  "data-slot": "accordion-content",
14188
- className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
14194
+ className: "grid text-sm transition-[grid-template-rows,visibility] duration-200 ease-out motion-reduce:transition-none data-[state=open]:grid-rows-[1fr] data-[state=closed]:grid-rows-[0fr] data-[state=closed]:invisible",
14189
14195
  ...props,
14190
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: cn$2("pt-0 pb-4", className), children: children2 })
14196
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: cn$2("pt-0 pb-4", className), children: children2 }) })
14191
14197
  }
14192
14198
  );
14193
14199
  }
@@ -14267,7 +14273,7 @@ function Badge({
14267
14273
  );
14268
14274
  }
14269
14275
  const buttonVariants = cva(
14270
- "inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
14276
+ "inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,background-color,border-color,box-shadow,opacity,transform] outline-none active:scale-[0.97] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
14271
14277
  {
14272
14278
  variants: {
14273
14279
  variant: {
@@ -14366,7 +14372,7 @@ function PopoverContent({
14366
14372
  align,
14367
14373
  sideOffset,
14368
14374
  className: cn$2(
14369
- "z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
14375
+ "ease-out duration-150 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
14370
14376
  className
14371
14377
  ),
14372
14378
  ...props
@@ -14429,7 +14435,7 @@ function ColorPicker({ value, onChange, disabled, showHex = true, className }) {
14429
14435
  {
14430
14436
  type: "button",
14431
14437
  className: cn$2(
14432
- "w-7 h-7 rounded border-2 transition-all",
14438
+ "w-7 h-7 rounded border-2 transition-[border-color,transform]",
14433
14439
  colorValue === color2 ? "border-primary scale-110" : "border-transparent hover:border-border"
14434
14440
  ),
14435
14441
  style: { backgroundColor: color2 },
@@ -14782,10 +14788,10 @@ function DialogOverlay({
14782
14788
  );
14783
14789
  }
14784
14790
  const DIALOG_CONTENT_VARIANTS = {
14785
- default: "fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg",
14791
+ default: "ease-out fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg",
14786
14792
  "bottom-sheet": [
14787
14793
  // Shared
14788
- "fixed z-50 flex flex-col bg-background shadow-lg duration-200 outline-none",
14794
+ "ease-out fixed z-50 flex flex-col bg-background shadow-lg duration-200 outline-none",
14789
14795
  "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",
14790
14796
  // Mobile (< lg): bottom drawer
14791
14797
  "inset-x-0 bottom-0 w-full max-w-none rounded-t-2xl border border-b-0 p-6",
@@ -14797,8 +14803,11 @@ const DIALOG_CONTENT_VARIANTS = {
14797
14803
  ].join(" "),
14798
14804
  "command-palette": [
14799
14805
  // Shared
14800
- "fixed z-50 flex flex-col bg-background shadow-lg duration-200 outline-none",
14801
- "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",
14806
+ "fixed z-50 flex flex-col bg-background shadow-lg outline-none",
14807
+ // Mobile-only open/close animation: the drawer slide is touch-initiated.
14808
+ // Desktop (lg+) gets NO open/close animation — this is a keyboard-summoned
14809
+ // surface hit dozens of times a day; it must appear instantly.
14810
+ "max-lg:duration-200 max-lg:data-[state=closed]:animate-out max-lg:data-[state=closed]:fade-out-0 max-lg:data-[state=open]:animate-in max-lg:data-[state=open]:fade-in-0",
14802
14811
  // Mobile (< lg): bottom drawer with the input pinned to the bottom. Flip
14803
14812
  // the command's flex direction so the input sits below the results list,
14804
14813
  // and flip the input wrapper's divider to a top border to match. The sheet
@@ -14811,8 +14820,7 @@ const DIALOG_CONTENT_VARIANTS = {
14811
14820
  "max-lg:data-[state=open]:slide-in-from-bottom max-lg:data-[state=closed]:slide-out-to-bottom",
14812
14821
  // Desktop (lg+): anchored in the upper third by its TOP edge — no
14813
14822
  // `translate-y`, so the input never moves as the list grows downward.
14814
- "lg:inset-x-auto lg:bottom-auto lg:top-[12vh] lg:left-1/2 lg:w-full lg:max-w-lg lg:max-h-[70vh] lg:-translate-x-1/2 lg:rounded-lg lg:border",
14815
- "lg:data-[state=open]:zoom-in-95 lg:data-[state=closed]:zoom-out-95"
14823
+ "lg:inset-x-auto lg:bottom-auto lg:top-[12vh] lg:left-1/2 lg:w-full lg:max-w-lg lg:max-h-[70vh] lg:-translate-x-1/2 lg:rounded-lg lg:border"
14816
14824
  ].join(" ")
14817
14825
  };
14818
14826
  const keyboardInsetHolders = /* @__PURE__ */ new Set();
@@ -14848,7 +14856,15 @@ function DialogContent({
14848
14856
  }) {
14849
14857
  useKeyboardInset(variant === "command-palette");
14850
14858
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [
14851
- /* @__PURE__ */ jsxRuntimeExports.jsx(DialogOverlay, { className: overlayClassName }),
14859
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
14860
+ DialogOverlay,
14861
+ {
14862
+ className: cn$2(
14863
+ variant === "command-palette" && "lg:data-[state=open]:animate-none lg:data-[state=closed]:animate-none",
14864
+ overlayClassName
14865
+ )
14866
+ }
14867
+ ),
14852
14868
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
14853
14869
  Content$1,
14854
14870
  {
@@ -15060,7 +15076,7 @@ function ContextMenuContent({
15060
15076
  if (event.button === 2) event.stopPropagation();
15061
15077
  },
15062
15078
  className: cn$2(
15063
- "z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
15079
+ "ease-out duration-150 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
15064
15080
  className
15065
15081
  ),
15066
15082
  ...props
@@ -15122,7 +15138,7 @@ function ContextMenuSubContent({
15122
15138
  {
15123
15139
  "data-slot": "context-menu-sub-content",
15124
15140
  className: cn$2(
15125
- "z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
15141
+ "ease-out duration-150 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
15126
15142
  className
15127
15143
  ),
15128
15144
  ...props
@@ -15166,7 +15182,7 @@ function DropdownMenuContent({
15166
15182
  "data-slot": "dropdown-menu-content",
15167
15183
  sideOffset,
15168
15184
  className: cn$2(
15169
- "z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
15185
+ "ease-out duration-150 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
15170
15186
  className
15171
15187
  ),
15172
15188
  ...props
@@ -15292,7 +15308,7 @@ function DropdownMenuSubContent({
15292
15308
  {
15293
15309
  "data-slot": "dropdown-menu-sub-content",
15294
15310
  className: cn$2(
15295
- "z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
15311
+ "ease-out duration-150 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
15296
15312
  className
15297
15313
  ),
15298
15314
  ...props
@@ -15419,7 +15435,7 @@ function SelectContent({
15419
15435
  // Mirror DropdownMenuContent so dropdowns and selects render
15420
15436
  // identically (popover surface, explicit border-border so the
15421
15437
  // outline doesn't fall back to currentColor).
15422
- "relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
15438
+ "ease-out duration-150 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
15423
15439
  position2 === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
15424
15440
  className
15425
15441
  ),
@@ -15547,7 +15563,7 @@ function TooltipContent({
15547
15563
  "data-slot": "tooltip-content",
15548
15564
  sideOffset,
15549
15565
  className: cn$2(
15550
- "z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md bg-foreground px-3 py-1.5 text-xs text-balance text-background fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-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-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
15566
+ "z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in fade-in-0 duration-100 ease-out rounded-md bg-foreground px-3 py-1.5 text-xs text-balance text-background data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:duration-75",
15551
15567
  className
15552
15568
  ),
15553
15569
  ...props,
@@ -42829,53 +42845,53 @@ async function loadLanguage(lang) {
42829
42845
  try {
42830
42846
  switch (lang) {
42831
42847
  case "javascript":
42832
- return import("./index-Bqv1Yqbp.js").then((m2) => m2.javascript());
42848
+ return import("./index-BO8SzaHU.js").then((m2) => m2.javascript());
42833
42849
  case "jsx":
42834
- return import("./index-Bqv1Yqbp.js").then((m2) => m2.javascript({ jsx: true }));
42850
+ return import("./index-BO8SzaHU.js").then((m2) => m2.javascript({ jsx: true }));
42835
42851
  case "typescript":
42836
- return import("./index-Bqv1Yqbp.js").then(
42852
+ return import("./index-BO8SzaHU.js").then(
42837
42853
  (m2) => m2.javascript({ typescript: true })
42838
42854
  );
42839
42855
  case "tsx":
42840
- return import("./index-Bqv1Yqbp.js").then(
42856
+ return import("./index-BO8SzaHU.js").then(
42841
42857
  (m2) => m2.javascript({ jsx: true, typescript: true })
42842
42858
  );
42843
42859
  case "python":
42844
- return import("./index-CyY0UzHL.js").then((m2) => m2.python());
42860
+ return import("./index-C9huWiJ-.js").then((m2) => m2.python());
42845
42861
  case "html":
42846
- return import("./index-BUCj1Yl_.js").then((m2) => m2.html());
42862
+ return import("./index-BfY0gR9U.js").then((m2) => m2.html());
42847
42863
  case "css":
42848
- return import("./index-oLF27Nfu.js").then((m2) => m2.css());
42864
+ return import("./index-BaRsZ-GG.js").then((m2) => m2.css());
42849
42865
  case "scss":
42850
42866
  case "sass":
42851
- return import("./index-Bcu0C2js.js").then((m2) => m2.sass());
42867
+ return import("./index-DG7cMtrE.js").then((m2) => m2.sass());
42852
42868
  case "less":
42853
- return import("./index-IM5Lznch.js").then((m2) => m2.less());
42869
+ return import("./index-CWreRmYM.js").then((m2) => m2.less());
42854
42870
  case "json":
42855
42871
  case "jsonc":
42856
- return import("./index-CF9A2ZU-.js").then((m2) => m2.json());
42872
+ return import("./index-Bn2w4FXC.js").then((m2) => m2.json());
42857
42873
  case "markdown":
42858
42874
  case "mdx":
42859
- return import("./index-CGqMcWZv.js").then((m2) => m2.markdown());
42875
+ return import("./index-B4Nb7YRL.js").then((m2) => m2.markdown());
42860
42876
  case "xml":
42861
- return import("./index-BIn7ueGd.js").then((m2) => m2.xml());
42877
+ return import("./index-DtBrHSR6.js").then((m2) => m2.xml());
42862
42878
  case "yaml":
42863
- return import("./index-DEYBFbnW.js").then((m2) => m2.yaml());
42879
+ return import("./index-DL8Aq-MC.js").then((m2) => m2.yaml());
42864
42880
  case "sql":
42865
- return import("./index-YfWUTx8U.js").then((m2) => m2.sql());
42881
+ return import("./index-BOujpirM.js").then((m2) => m2.sql());
42866
42882
  case "rust":
42867
- return import("./index-D3oif9Da.js").then((m2) => m2.rust());
42883
+ return import("./index-Cwo9DINN.js").then((m2) => m2.rust());
42868
42884
  case "go":
42869
- return import("./index-B_uZBCQp.js").then((m2) => m2.go());
42885
+ return import("./index-BkzW7_Ky.js").then((m2) => m2.go());
42870
42886
  case "java":
42871
- return import("./index-Ch5w2qx-.js").then((m2) => m2.java());
42887
+ return import("./index-DGLaWKzg.js").then((m2) => m2.java());
42872
42888
  case "kotlin":
42873
- return import("./index-Ch5w2qx-.js").then((m2) => m2.java());
42889
+ return import("./index-DGLaWKzg.js").then((m2) => m2.java());
42874
42890
  case "c":
42875
42891
  case "cpp":
42876
- return import("./index-DXfbzq6y.js").then((m2) => m2.cpp());
42892
+ return import("./index-CoXEmnej.js").then((m2) => m2.cpp());
42877
42893
  case "php":
42878
- return import("./index-Cuy6v4sQ.js").then((m2) => m2.php());
42894
+ return import("./index-Cf9HnAif.js").then((m2) => m2.php());
42879
42895
  // Legacy modes via StreamLanguage
42880
42896
  case "bash":
42881
42897
  case "fish":
@@ -43915,12 +43931,12 @@ function buildCommands(deps) {
43915
43931
  // FileViewer toolbar and via this palette entry.
43916
43932
  id: "editor-go-back",
43917
43933
  label: "Go Back",
43918
- action: () => window.dispatchEvent(new CustomEvent("band:editor-go-back"))
43934
+ action: () => deps.editorGoBack()
43919
43935
  },
43920
43936
  {
43921
43937
  id: "editor-go-forward",
43922
43938
  label: "Go Forward",
43923
- action: () => window.dispatchEvent(new CustomEvent("band:editor-go-forward"))
43939
+ action: () => deps.editorGoForward()
43924
43940
  },
43925
43941
  {
43926
43942
  // No shortcut advertised: Shift+Tab is wired only inside the chat
@@ -49327,7 +49343,7 @@ function CollapsibleSection({
49327
49343
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
49328
49344
  "div",
49329
49345
  {
49330
- className: `grid transition-[grid-template-rows] duration-200 ease-out ${collapsed ? "grid-rows-[0fr]" : "grid-rows-[1fr]"}`,
49346
+ className: `grid transition-[grid-template-rows] duration-200 ease-out motion-reduce:transition-none ${collapsed ? "grid-rows-[0fr]" : "grid-rows-[1fr]"}`,
49331
49347
  children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `overflow-hidden ${className ?? ""}`, inert: collapsed, children: children2 })
49332
49348
  }
49333
49349
  );
@@ -60205,7 +60221,14 @@ function FileViewer({
60205
60221
  toolbar,
60206
60222
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-h-0 min-w-0 flex-1 overflow-hidden", children: [
60207
60223
  loading && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-32 items-center justify-center text-sm text-muted-foreground", children: "Loading..." }),
60208
- error && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-32 items-center justify-center text-sm text-destructive", children: error }),
60224
+ error && /* @__PURE__ */ jsxRuntimeExports.jsx(
60225
+ "div",
60226
+ {
60227
+ "data-testid": "file-viewer__error",
60228
+ className: "flex h-32 items-center justify-center text-sm text-destructive",
60229
+ children: error
60230
+ }
60231
+ ),
60209
60232
  !loading && !error && previewType === "image" && fileUrl && /* @__PURE__ */ jsxRuntimeExports.jsx(ImagePreview$1, { src: fileUrl, alt: getFilename(filePath) }),
60210
60233
  !loading && !error && previewType === "pdf" && fileUrl && /* @__PURE__ */ jsxRuntimeExports.jsx(PdfPreview, { src: fileUrl, filename: getFilename(filePath) }),
60211
60234
  !loading && !error && previewType === "markdown" && renderMarkdown && viewMode === "preview" && displayContent !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-full overflow-auto", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mx-auto max-w-3xl px-8 py-6 text-sm", children: renderMarkdown(displayContent) }) }),
@@ -65231,9 +65254,11 @@ class BandWorkspace extends Workspace {
65231
65254
  files = [];
65232
65255
  fileVersions = /* @__PURE__ */ Object.create(null);
65233
65256
  rootUri;
65234
- constructor(client, rootUri) {
65257
+ workspaceId;
65258
+ constructor(client, rootUri, workspaceId) {
65235
65259
  super(client);
65236
65260
  this.rootUri = rootUri;
65261
+ this.workspaceId = workspaceId;
65237
65262
  }
65238
65263
  nextFileVersion(uri) {
65239
65264
  const next2 = (this.fileVersions[uri] ?? -1) + 1;
@@ -65301,7 +65326,7 @@ class BandWorkspace extends Workspace {
65301
65326
  pendingNavigation = { resolve: resolve2, timer: timer2 };
65302
65327
  window.dispatchEvent(
65303
65328
  new CustomEvent("band:lsp-navigate", {
65304
- detail: { filePath }
65329
+ detail: { filePath, workspaceId: this.workspaceId }
65305
65330
  })
65306
65331
  );
65307
65332
  });
@@ -65354,7 +65379,7 @@ function createWebSocketTransport(url) {
65354
65379
  });
65355
65380
  }
65356
65381
  const clientCache = /* @__PURE__ */ new Map();
65357
- async function getOrCreateClient(wsUrl, rootUri) {
65382
+ async function getOrCreateClient(wsUrl, rootUri, workspaceId) {
65358
65383
  const cached2 = clientCache.get(wsUrl);
65359
65384
  if (cached2) {
65360
65385
  cached2.refCount++;
@@ -65362,7 +65387,7 @@ async function getOrCreateClient(wsUrl, rootUri) {
65362
65387
  }
65363
65388
  const client = new LSPClient({
65364
65389
  rootUri,
65365
- workspace: (c2) => new BandWorkspace(c2, rootUri),
65390
+ workspace: (c2) => new BandWorkspace(c2, rootUri, workspaceId),
65366
65391
  extensions: languageServerExtensions(),
65367
65392
  timeout: 1e4
65368
65393
  });
@@ -65479,8 +65504,8 @@ const cmdClickLinkPlugin = ViewPlugin.fromClass(
65479
65504
  },
65480
65505
  { decorations: (v2) => v2.decorations }
65481
65506
  );
65482
- async function createLspExtension(wsUrl, rootUri, documentUri, languageId) {
65483
- const client = await getOrCreateClient(wsUrl, rootUri);
65507
+ async function createLspExtension(wsUrl, rootUri, documentUri, languageId, workspaceId) {
65508
+ const client = await getOrCreateClient(wsUrl, rootUri, workspaceId);
65484
65509
  return [
65485
65510
  client.plugin(documentUri, languageId),
65486
65511
  // Cmd+Click (Mac) / Ctrl+Click (other) to jump to definition — the
@@ -68097,13 +68122,12 @@ function NavControls({
68097
68122
  ] })
68098
68123
  ] });
68099
68124
  }
68100
- function SidebarTitleBar({ sidebarVisible, offsetClass, ...nav2 }) {
68125
+ function SidebarTitleBar() {
68101
68126
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
68102
68127
  "div",
68103
68128
  {
68104
- className: `h-[38px] shrink-0 flex items-center gap-0.5 border-b border-border bg-sidebar pr-2 ${offsetClass}`,
68105
- style: DRAG_STYLE,
68106
- children: sidebarVisible && /* @__PURE__ */ jsxRuntimeExports.jsx(NavControls, { sidebarVisible, ...nav2 })
68129
+ className: "h-[38px] shrink-0 flex items-center border-b border-border bg-sidebar",
68130
+ style: DRAG_STYLE
68107
68131
  }
68108
68132
  );
68109
68133
  }
@@ -68115,10 +68139,7 @@ function WorkspaceTitleBar({
68115
68139
  onWorkspaceNameClick,
68116
68140
  panelItems,
68117
68141
  hiddenPanels,
68118
- onTogglePanelVisibility,
68119
- sidebarVisible,
68120
- offsetClass,
68121
- ...nav2
68142
+ onTogglePanelVisibility
68122
68143
  }) {
68123
68144
  const [appTitle, setAppTitle] = reactExports.useState(title ?? "Band");
68124
68145
  reactExports.useEffect(() => {
@@ -68132,11 +68153,10 @@ function WorkspaceTitleBar({
68132
68153
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
68133
68154
  "div",
68134
68155
  {
68135
- className: `h-[38px] shrink-0 flex items-center gap-1 border-b border-border bg-background pr-2 ${sidebarVisible ? "pl-2" : offsetClass}`,
68156
+ className: "relative h-[38px] shrink-0 flex items-center gap-1 border-b border-border bg-background pr-2 pl-2",
68136
68157
  style: DRAG_STYLE,
68137
68158
  children: [
68138
- !sidebarVisible && /* @__PURE__ */ jsxRuntimeExports.jsx(NavControls, { sidebarVisible, ...nav2 }),
68139
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-1 items-center justify-center min-w-0 px-1", children: workspaceName ? onWorkspaceNameClick ? (
68159
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-x-0 top-0 flex h-full items-center justify-center min-w-0 px-1 pointer-events-none", children: workspaceName ? onWorkspaceNameClick ? (
68140
68160
  // Interactive: clicking opens the workspace picker (mirrors the
68141
68161
  // mobile header). Lives inside the drag region, so it must reapply
68142
68162
  // NO_DRAG_STYLE and keep pointer events enabled, like the other
@@ -68165,41 +68185,48 @@ function WorkspaceTitleBar({
68165
68185
  ] })
68166
68186
  ] })
68167
68187
  ) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm font-semibold text-foreground select-none pointer-events-none truncate max-w-[50%]", children: workspaceName }) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-medium text-muted-foreground select-none pointer-events-none", children: appTitle }) }),
68168
- (hasEditorPicker || hasPanels) && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-1 pointer-events-auto", style: NO_DRAG_STYLE, children: [
68169
- hasEditorPicker && /* @__PURE__ */ jsxRuntimeExports.jsx(EditorPicker, { workspacePath, onCopyPath }),
68170
- hasPanels && /* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenu, { children: [
68171
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
68172
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
68173
- "button",
68174
- {
68175
- type: "button",
68176
- className: "flex items-center justify-center rounded-md p-1 text-muted-foreground hover:text-foreground hover:bg-accent/50 transition-colors",
68177
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(PanelTop, { className: "size-5" })
68178
- }
68179
- ) }) }),
68180
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", children: "Switch Panel" })
68181
- ] }),
68182
- /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuContent, { align: "end", children: panelItems?.map((item) => {
68183
- const Icon2 = item.icon;
68184
- const isVisible2 = !hiddenPanels?.includes(item.id);
68185
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(
68186
- DropdownMenuCheckboxItem,
68187
- {
68188
- checked: isVisible2,
68189
- onCheckedChange: () => {
68190
- onTogglePanelVisibility?.(item.id);
68191
- },
68192
- children: [
68193
- /* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "size-4" }),
68194
- item.label,
68195
- item.shortcut && /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuShortcut, { children: item.shortcut })
68196
- ]
68197
- },
68198
- item.id
68199
- );
68200
- }) })
68201
- ] })
68202
- ] })
68188
+ (hasEditorPicker || hasPanels) && /* @__PURE__ */ jsxRuntimeExports.jsxs(
68189
+ "div",
68190
+ {
68191
+ className: "relative ml-auto flex shrink-0 items-center gap-1 pointer-events-auto",
68192
+ style: NO_DRAG_STYLE,
68193
+ children: [
68194
+ hasEditorPicker && /* @__PURE__ */ jsxRuntimeExports.jsx(EditorPicker, { workspacePath, onCopyPath }),
68195
+ hasPanels && /* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenu, { children: [
68196
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
68197
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
68198
+ "button",
68199
+ {
68200
+ type: "button",
68201
+ className: "flex items-center justify-center rounded-md p-1 text-muted-foreground hover:text-foreground hover:bg-accent/50 transition-colors",
68202
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(PanelTop, { className: "size-5" })
68203
+ }
68204
+ ) }) }),
68205
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", children: "Switch Panel" })
68206
+ ] }),
68207
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuContent, { align: "end", children: panelItems?.map((item) => {
68208
+ const Icon2 = item.icon;
68209
+ const isVisible2 = !hiddenPanels?.includes(item.id);
68210
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
68211
+ DropdownMenuCheckboxItem,
68212
+ {
68213
+ checked: isVisible2,
68214
+ onCheckedChange: () => {
68215
+ onTogglePanelVisibility?.(item.id);
68216
+ },
68217
+ children: [
68218
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "size-4" }),
68219
+ item.label,
68220
+ item.shortcut && /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuShortcut, { children: item.shortcut })
68221
+ ]
68222
+ },
68223
+ item.id
68224
+ );
68225
+ }) })
68226
+ ] })
68227
+ ]
68228
+ }
68229
+ )
68203
68230
  ]
68204
68231
  }
68205
68232
  );
@@ -83290,7 +83317,62 @@ function refreshEdgeGroupVisibility(api, forceVisible) {
83290
83317
  }
83291
83318
  }
83292
83319
  }
83293
- function applyMaximizeEdgeVisibility(api, maximized) {
83320
+ const edgeAnimTimers = /* @__PURE__ */ new WeakMap();
83321
+ function attachSyncLayout(el, api) {
83322
+ const observer = new ResizeObserver((entries2) => {
83323
+ const rect2 = entries2[entries2.length - 1]?.contentRect;
83324
+ if (!rect2) return;
83325
+ api.layout(Math.round(rect2.width), Math.round(rect2.height));
83326
+ });
83327
+ observer.observe(el);
83328
+ return () => observer.disconnect();
83329
+ }
83330
+ function prepareMaximizeRestoreAnimation(root2) {
83331
+ if (!root2) return;
83332
+ anchorHiddenGridViews(root2);
83333
+ void root2.offsetWidth;
83334
+ }
83335
+ function anchorHiddenGridViews(root2) {
83336
+ for (const sv of Array.from(
83337
+ root2.querySelectorAll(".dv-branch-node > .dv-split-view-container")
83338
+ )) {
83339
+ if (sv.closest(".dv-content-container")) continue;
83340
+ const horizontal = sv.classList.contains("dv-horizontal");
83341
+ const views = Array.from(
83342
+ sv.querySelectorAll(":scope > .dv-view-container > .dv-view")
83343
+ );
83344
+ let farEdge = 0;
83345
+ for (const v2 of views) {
83346
+ if (!v2.classList.contains("visible")) continue;
83347
+ const start2 = Number.parseFloat(horizontal ? v2.style.left : v2.style.top) || 0;
83348
+ const size2 = Number.parseFloat(horizontal ? v2.style.width : v2.style.height) || 0;
83349
+ farEdge = Math.max(farEdge, start2 + size2);
83350
+ }
83351
+ let seenVisible = false;
83352
+ for (const v2 of views) {
83353
+ if (v2.classList.contains("visible")) {
83354
+ seenVisible = true;
83355
+ continue;
83356
+ }
83357
+ if (!seenVisible) continue;
83358
+ if (horizontal) v2.style.left = `${farEdge}px`;
83359
+ else v2.style.top = `${farEdge}px`;
83360
+ }
83361
+ }
83362
+ }
83363
+ function applyMaximizeEdgeVisibility(api, maximized, animateRoot) {
83364
+ if (animateRoot) {
83365
+ const pending2 = edgeAnimTimers.get(animateRoot);
83366
+ if (pending2 !== void 0) window.clearTimeout(pending2);
83367
+ animateRoot.classList.add("dv-edge-anim");
83368
+ edgeAnimTimers.set(
83369
+ animateRoot,
83370
+ window.setTimeout(() => {
83371
+ animateRoot.classList.remove("dv-edge-anim");
83372
+ edgeAnimTimers.delete(animateRoot);
83373
+ }, 300)
83374
+ );
83375
+ }
83294
83376
  if (maximized) {
83295
83377
  for (const direction of Object.keys(EDGE_GROUP_IDS$1)) {
83296
83378
  try {
@@ -83890,6 +83972,7 @@ function FileTabBar({
83890
83972
  onSaveUntitled,
83891
83973
  actions,
83892
83974
  treeCollapsed,
83975
+ treeSide = "left",
83893
83976
  onToggleTree
83894
83977
  }) {
83895
83978
  const activeRef = reactExports.useRef(null);
@@ -83985,9 +84068,10 @@ function FileTabBar({
83985
84068
  "button",
83986
84069
  {
83987
84070
  type: "button",
84071
+ "data-testid": "file-tab-bar__tree-toggle",
83988
84072
  onClick: onToggleTree,
83989
84073
  className: "ml-1 hidden size-7 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground transition-colors @[16rem]:inline-flex",
83990
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(PanelLeft, { className: "size-3.5" })
84074
+ children: treeSide === "right" ? /* @__PURE__ */ jsxRuntimeExports.jsx(PanelRight, { className: "size-3.5" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(PanelLeft, { className: "size-3.5" })
83991
84075
  }
83992
84076
  ) }),
83993
84077
  /* @__PURE__ */ jsxRuntimeExports.jsxs(TooltipContent, { side: "bottom", className: "text-xs", children: [
@@ -109547,7 +109631,7 @@ var tn = f$5("block", "before:content-[counter(line)]", "before:inline-block", "
109547
109631
  var et$1 = ({ className: e3, language: t2, style: o3, isIncomplete: n2, ...s2 }) => jsxRuntimeExports.jsx("div", { className: f$5("my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2", e3), "data-incomplete": n2 || void 0, "data-language": t2, "data-streamdown": "code-block", style: { contentVisibility: "auto", containIntrinsicSize: "auto 200px", ...o3 }, ...s2 });
109548
109632
  var Se$1 = reactExports.createContext({ code: "" }), de$2 = () => reactExports.useContext(Se$1);
109549
109633
  var ot$1 = ({ language: e3 }) => jsxRuntimeExports.jsx("div", { className: "flex h-8 items-center text-muted-foreground text-xs", "data-language": e3, "data-streamdown": "code-block-header", children: jsxRuntimeExports.jsx("span", { className: "ml-1 font-mono lowercase", children: e3 }) });
109550
- var cn = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-X1-_bh6z.js").then((e3) => ({ default: e3.HighlightedCodeBlockBody }))), rt = ({ code: e3, language: t2, className: o3, children: n2, isIncomplete: s2 = false, ...r2 }) => {
109634
+ var cn = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-B-KIjXRR.js").then((e3) => ({ default: e3.HighlightedCodeBlockBody }))), rt = ({ code: e3, language: t2, className: o3, children: n2, isIncomplete: s2 = false, ...r2 }) => {
109551
109635
  let i2 = reactExports.useMemo(() => e3.replace(cn, ""), [e3]), c2 = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i2.split(`
109552
109636
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i2]);
109553
109637
  return jsxRuntimeExports.jsx(Se$1.Provider, { value: { code: e3 }, children: jsxRuntimeExports.jsxs(et$1, { isIncomplete: s2, language: t2, children: [jsxRuntimeExports.jsx(ot$1, { language: t2 }), n2 ? jsxRuntimeExports.jsx("div", { className: "pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end", children: jsxRuntimeExports.jsx("div", { className: "pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur", "data-streamdown": "code-block-actions", children: n2 }) }) : null, jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: jsxRuntimeExports.jsx(Qe$1, { className: o3, language: t2, result: c2, ...r2 }), children: jsxRuntimeExports.jsx(dn, { className: o3, code: i2, language: t2, raw: c2, ...r2 }) })] }) });
@@ -109869,7 +109953,7 @@ var Dt = ({ children: e3, className: t2, onDownload: o3, onError: n2 }) => {
109869
109953
  }, []), jsxRuntimeExports.jsxs("div", { className: "relative", ref: i2, children: [jsxRuntimeExports.jsx("button", { className: f$5("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", t2), disabled: c2, onClick: () => r2(!s2), title: "Download table", type: "button", children: e3 != null ? e3 : jsxRuntimeExports.jsx(Z$2, { size: 14 }) }), s2 ? jsxRuntimeExports.jsxs("div", { className: "absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg", children: [jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("csv"), title: "Download table as CSV", type: "button", children: "CSV" }), jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("markdown"), title: "Download table as Markdown", type: "button", children: "Markdown" })] }) : null] });
109870
109954
  };
109871
109955
  var Vt = ({ children: e3, className: t2, showControls: o3, ...n2 }) => jsxRuntimeExports.jsxs("div", { className: "my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2", "data-streamdown": "table-wrapper", children: [o3 ? jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-end gap-1", children: [jsxRuntimeExports.jsx(Ht, {}), jsxRuntimeExports.jsx(Dt, {})] }) : null, jsxRuntimeExports.jsx("div", { className: "border-collapse overflow-x-auto overscroll-y-auto rounded-md border border-border bg-background", children: jsxRuntimeExports.jsx("table", { className: f$5("w-full divide-y divide-border", t2), "data-streamdown": "table", ...n2, children: e3 }) })] });
109872
- var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-CX1H3heG.js").then((e3) => ({ default: e3.Mermaid }))), Kn = /language-([^\s]+)/;
109956
+ var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-B7ZUN_Qp.js").then((e3) => ({ default: e3.Mermaid }))), Kn = /language-([^\s]+)/;
109873
109957
  function ke$1(e3, t2) {
109874
109958
  if (!(e3 != null && e3.position || t2 != null && t2.position)) return true;
109875
109959
  if (!(e3 != null && e3.position && (t2 != null && t2.position))) return false;
@@ -162040,12 +162124,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
162040
162124
  registerLayoutLoaders([
162041
162125
  {
162042
162126
  name: "dagre",
162043
- loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-DNZS86ly.js"), "loader")
162127
+ loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-8RUa3xMj.js"), "loader")
162044
162128
  },
162045
162129
  ...[
162046
162130
  {
162047
162131
  name: "cose-bilkent",
162048
- loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-qzfBNLDd.js"), "loader")
162132
+ loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-DJIkSye6.js"), "loader")
162049
162133
  }
162050
162134
  ]
162051
162135
  ]);
@@ -162484,7 +162568,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
162484
162568
  return /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt);
162485
162569
  }, "detector");
162486
162570
  var loader = /* @__PURE__ */ __name(async () => {
162487
- const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-BU-dO_db.js");
162571
+ const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-BgCS3qmn.js");
162488
162572
  return { id, diagram: diagram2 };
162489
162573
  }, "loader");
162490
162574
  var plugin = {
@@ -162501,7 +162585,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
162501
162585
  return /^\s*graph/.test(txt);
162502
162586
  }, "detector");
162503
162587
  var loader2 = /* @__PURE__ */ __name(async () => {
162504
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-B1dpItw0.js");
162588
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CGQvsM8y.js");
162505
162589
  return { id: id2, diagram: diagram2 };
162506
162590
  }, "loader");
162507
162591
  var plugin2 = {
@@ -162524,7 +162608,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
162524
162608
  return /^\s*flowchart/.test(txt);
162525
162609
  }, "detector");
162526
162610
  var loader3 = /* @__PURE__ */ __name(async () => {
162527
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-B1dpItw0.js");
162611
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CGQvsM8y.js");
162528
162612
  return { id: id3, diagram: diagram2 };
162529
162613
  }, "loader");
162530
162614
  var plugin3 = {
@@ -162538,7 +162622,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
162538
162622
  return /^\s*erDiagram/.test(txt);
162539
162623
  }, "detector");
162540
162624
  var loader4 = /* @__PURE__ */ __name(async () => {
162541
- const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-DnkGfUio.js");
162625
+ const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-C8BE13tX.js");
162542
162626
  return { id: id4, diagram: diagram2 };
162543
162627
  }, "loader");
162544
162628
  var plugin4 = {
@@ -162552,7 +162636,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
162552
162636
  return /^\s*gitGraph/.test(txt);
162553
162637
  }, "detector");
162554
162638
  var loader5 = /* @__PURE__ */ __name(async () => {
162555
- const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-BWi1KybI.js");
162639
+ const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-CTvj2CUF.js");
162556
162640
  return { id: id5, diagram: diagram2 };
162557
162641
  }, "loader");
162558
162642
  var plugin5 = {
@@ -162566,7 +162650,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
162566
162650
  return /^\s*gantt/.test(txt);
162567
162651
  }, "detector");
162568
162652
  var loader6 = /* @__PURE__ */ __name(async () => {
162569
- const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-CfB_h9HP.js");
162653
+ const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-CEYzmLyS.js");
162570
162654
  return { id: id6, diagram: diagram2 };
162571
162655
  }, "loader");
162572
162656
  var plugin6 = {
@@ -162580,7 +162664,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
162580
162664
  return /^\s*info/.test(txt);
162581
162665
  }, "detector");
162582
162666
  var loader7 = /* @__PURE__ */ __name(async () => {
162583
- const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-LstCwT5M.js");
162667
+ const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-CanJ2UdU.js");
162584
162668
  return { id: id7, diagram: diagram2 };
162585
162669
  }, "loader");
162586
162670
  var info = {
@@ -162593,7 +162677,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
162593
162677
  return /^\s*pie/.test(txt);
162594
162678
  }, "detector");
162595
162679
  var loader8 = /* @__PURE__ */ __name(async () => {
162596
- const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-CyhwaYTd.js");
162680
+ const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-Dcjcisnd.js");
162597
162681
  return { id: id8, diagram: diagram2 };
162598
162682
  }, "loader");
162599
162683
  var pie = {
@@ -162606,7 +162690,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
162606
162690
  return /^\s*quadrantChart/.test(txt);
162607
162691
  }, "detector");
162608
162692
  var loader9 = /* @__PURE__ */ __name(async () => {
162609
- const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-BRzFRm7k.js");
162693
+ const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-PVZmGqa8.js");
162610
162694
  return { id: id9, diagram: diagram2 };
162611
162695
  }, "loader");
162612
162696
  var plugin7 = {
@@ -162620,7 +162704,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
162620
162704
  return /^\s*xychart(-beta)?/.test(txt);
162621
162705
  }, "detector");
162622
162706
  var loader10 = /* @__PURE__ */ __name(async () => {
162623
- const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-CYgqsSC_.js");
162707
+ const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-Bu3TCZ6_.js");
162624
162708
  return { id: id10, diagram: diagram2 };
162625
162709
  }, "loader");
162626
162710
  var plugin8 = {
@@ -162634,7 +162718,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
162634
162718
  return /^\s*requirement(Diagram)?/.test(txt);
162635
162719
  }, "detector");
162636
162720
  var loader11 = /* @__PURE__ */ __name(async () => {
162637
- const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-fJ6FCY2X.js");
162721
+ const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-o3XZfWHL.js");
162638
162722
  return { id: id11, diagram: diagram2 };
162639
162723
  }, "loader");
162640
162724
  var plugin9 = {
@@ -162648,7 +162732,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
162648
162732
  return /^\s*sequenceDiagram/.test(txt);
162649
162733
  }, "detector");
162650
162734
  var loader12 = /* @__PURE__ */ __name(async () => {
162651
- const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-Y9h8QzpA.js");
162735
+ const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-DLHwNIY3.js");
162652
162736
  return { id: id12, diagram: diagram2 };
162653
162737
  }, "loader");
162654
162738
  var plugin10 = {
@@ -162665,7 +162749,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
162665
162749
  return /^\s*classDiagram/.test(txt);
162666
162750
  }, "detector");
162667
162751
  var loader13 = /* @__PURE__ */ __name(async () => {
162668
- const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-C6GK2Aoj.js");
162752
+ const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-lqwd66j1.js");
162669
162753
  return { id: id13, diagram: diagram2 };
162670
162754
  }, "loader");
162671
162755
  var plugin11 = {
@@ -162682,7 +162766,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
162682
162766
  return /^\s*classDiagram-v2/.test(txt);
162683
162767
  }, "detector");
162684
162768
  var loader14 = /* @__PURE__ */ __name(async () => {
162685
- const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-C6GK2Aoj.js");
162769
+ const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-lqwd66j1.js");
162686
162770
  return { id: id14, diagram: diagram2 };
162687
162771
  }, "loader");
162688
162772
  var plugin12 = {
@@ -162699,7 +162783,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
162699
162783
  return /^\s*stateDiagram/.test(txt);
162700
162784
  }, "detector");
162701
162785
  var loader15 = /* @__PURE__ */ __name(async () => {
162702
- const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-D9Xo5bg5.js");
162786
+ const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-Doy5tRH0.js");
162703
162787
  return { id: id15, diagram: diagram2 };
162704
162788
  }, "loader");
162705
162789
  var plugin13 = {
@@ -162719,7 +162803,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
162719
162803
  return false;
162720
162804
  }, "detector");
162721
162805
  var loader16 = /* @__PURE__ */ __name(async () => {
162722
- const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-BBj6Aiwx.js");
162806
+ const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-C9UezhSz.js");
162723
162807
  return { id: id16, diagram: diagram2 };
162724
162808
  }, "loader");
162725
162809
  var plugin14 = {
@@ -162733,7 +162817,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
162733
162817
  return /^\s*journey/.test(txt);
162734
162818
  }, "detector");
162735
162819
  var loader17 = /* @__PURE__ */ __name(async () => {
162736
- const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-Bq4xdGvc.js");
162820
+ const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-DHO36eI-.js");
162737
162821
  return { id: id17, diagram: diagram2 };
162738
162822
  }, "loader");
162739
162823
  var plugin15 = {
@@ -162800,7 +162884,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
162800
162884
  return false;
162801
162885
  }, "detector");
162802
162886
  var loader18 = /* @__PURE__ */ __name(async () => {
162803
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-B1dpItw0.js");
162887
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CGQvsM8y.js");
162804
162888
  return { id: id18, diagram: diagram2 };
162805
162889
  }, "loader");
162806
162890
  var plugin16 = {
@@ -162814,7 +162898,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
162814
162898
  return /^\s*timeline/.test(txt);
162815
162899
  }, "detector");
162816
162900
  var loader19 = /* @__PURE__ */ __name(async () => {
162817
- const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-oAS-tbgM.js");
162901
+ const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-DQgqc0il.js");
162818
162902
  return { id: id19, diagram: diagram2 };
162819
162903
  }, "loader");
162820
162904
  var plugin17 = {
@@ -162828,7 +162912,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
162828
162912
  return /^\s*mindmap/.test(txt);
162829
162913
  }, "detector");
162830
162914
  var loader20 = /* @__PURE__ */ __name(async () => {
162831
- const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-OX1eekPS.js");
162915
+ const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-abL0gs0k.js");
162832
162916
  return { id: id20, diagram: diagram2 };
162833
162917
  }, "loader");
162834
162918
  var plugin18 = {
@@ -162842,7 +162926,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
162842
162926
  return /^\s*kanban/.test(txt);
162843
162927
  }, "detector");
162844
162928
  var loader21 = /* @__PURE__ */ __name(async () => {
162845
- const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-Cz8QJrE-.js");
162929
+ const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-CVMwRab0.js");
162846
162930
  return { id: id21, diagram: diagram2 };
162847
162931
  }, "loader");
162848
162932
  var plugin19 = {
@@ -162856,7 +162940,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
162856
162940
  return /^\s*sankey(-beta)?/.test(txt);
162857
162941
  }, "detector");
162858
162942
  var loader22 = /* @__PURE__ */ __name(async () => {
162859
- const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-DkGxRBc4.js");
162943
+ const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-DJ9W5U5_.js");
162860
162944
  return { id: id22, diagram: diagram2 };
162861
162945
  }, "loader");
162862
162946
  var plugin20 = {
@@ -162870,7 +162954,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
162870
162954
  return /^\s*packet(-beta)?/.test(txt);
162871
162955
  }, "detector");
162872
162956
  var loader23 = /* @__PURE__ */ __name(async () => {
162873
- const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-CP1GoHeA.js");
162957
+ const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-WsMSDccc.js");
162874
162958
  return { id: id23, diagram: diagram2 };
162875
162959
  }, "loader");
162876
162960
  var packet = {
@@ -162883,7 +162967,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
162883
162967
  return /^\s*radar-beta/.test(txt);
162884
162968
  }, "detector");
162885
162969
  var loader24 = /* @__PURE__ */ __name(async () => {
162886
- const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-diOF3OBK.js");
162970
+ const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-CDO-gP_F.js");
162887
162971
  return { id: id24, diagram: diagram2 };
162888
162972
  }, "loader");
162889
162973
  var radar = {
@@ -162896,7 +162980,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
162896
162980
  return /^\s*block(-beta)?/.test(txt);
162897
162981
  }, "detector");
162898
162982
  var loader25 = /* @__PURE__ */ __name(async () => {
162899
- const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-DCaPOrQR.js");
162983
+ const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-4VOCVg9L.js");
162900
162984
  return { id: id25, diagram: diagram2 };
162901
162985
  }, "loader");
162902
162986
  var plugin21 = {
@@ -162910,7 +162994,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
162910
162994
  return /^\s*architecture/.test(txt);
162911
162995
  }, "detector");
162912
162996
  var loader26 = /* @__PURE__ */ __name(async () => {
162913
- const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-CWzfFX__.js");
162997
+ const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-DTAYCIJW.js");
162914
162998
  return { id: id26, diagram: diagram2 };
162915
162999
  }, "loader");
162916
163000
  var architecture = {
@@ -162924,7 +163008,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
162924
163008
  return /^\s*treemap/.test(txt);
162925
163009
  }, "detector");
162926
163010
  var loader27 = /* @__PURE__ */ __name(async () => {
162927
- const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-C6ImURyq.js");
163011
+ const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-flj7QMtm.js");
162928
163012
  return { id: id27, diagram: diagram2 };
162929
163013
  }, "loader");
162930
163014
  var treemap = {
@@ -163931,24 +164015,31 @@ function getHighlightCtor() {
163931
164015
  return typeof ctor === "function" ? ctor : null;
163932
164016
  }
163933
164017
  function fileTreeWidthKey(wsId) {
163934
- return `band-file-tree-width:${wsId}`;
164018
+ return `band-file-tree-width-px:${wsId}`;
163935
164019
  }
163936
164020
  function fileTreeCollapsedKey(wsId) {
163937
164021
  return `band-file-tree-collapsed:${wsId}`;
163938
164022
  }
164023
+ function fileTreeSideKey(wsId) {
164024
+ return `band-file-tree-side:${wsId}`;
164025
+ }
164026
+ const DEFAULT_FILE_TREE_WIDTH_PX = 240;
164027
+ const MIN_FILE_TREE_WIDTH_PX = 160;
164028
+ const MAX_FILE_TREE_WIDTH_RATIO = 0.5;
164029
+ const WIDTH_PERSIST_DEBOUNCE_MS = 200;
163939
164030
  function loadFileTreeWidth(wsId) {
163940
164031
  try {
163941
164032
  const raw2 = localStorage.getItem(fileTreeWidthKey(wsId));
163942
164033
  if (raw2 == null) return null;
163943
164034
  const val = Number(raw2);
163944
- return Number.isFinite(val) ? val : null;
164035
+ return Number.isFinite(val) && val > 0 ? val : null;
163945
164036
  } catch {
163946
164037
  return null;
163947
164038
  }
163948
164039
  }
163949
- function saveFileTreeWidth(wsId, width) {
164040
+ function saveFileTreeWidth(wsId, widthPx) {
163950
164041
  try {
163951
- localStorage.setItem(fileTreeWidthKey(wsId), String(width));
164042
+ localStorage.setItem(fileTreeWidthKey(wsId), String(Math.round(widthPx)));
163952
164043
  } catch {
163953
164044
  }
163954
164045
  }
@@ -163965,6 +164056,19 @@ function saveFileTreeCollapsed(wsId, collapsed) {
163965
164056
  } catch {
163966
164057
  }
163967
164058
  }
164059
+ function loadFileTreeSide(wsId) {
164060
+ try {
164061
+ return localStorage.getItem(fileTreeSideKey(wsId)) === "right" ? "right" : "left";
164062
+ } catch {
164063
+ return "left";
164064
+ }
164065
+ }
164066
+ function saveFileTreeSide(wsId, side) {
164067
+ try {
164068
+ localStorage.setItem(fileTreeSideKey(wsId), side);
164069
+ } catch {
164070
+ }
164071
+ }
163968
164072
  const TOOLBAR_COMPACT_BREAKPOINT = 200;
163969
164073
  const touchPointerUp = (fn2) => (e3) => {
163970
164074
  if (!fn2 || e3.pointerType === "mouse") return;
@@ -163977,7 +164081,9 @@ function FileTreeToolbar({
163977
164081
  onNewFile,
163978
164082
  onNewFolder,
163979
164083
  onOpenFile,
163980
- onNewUntitled
164084
+ onNewUntitled,
164085
+ side,
164086
+ onSetSide
163981
164087
  }) {
163982
164088
  const rootRef = reactExports.useRef(null);
163983
164089
  const [compact, setCompact] = reactExports.useState(false);
@@ -164008,10 +164114,11 @@ function FileTreeToolbar({
164008
164114
  pendingMenuAction.current = null;
164009
164115
  fn2?.();
164010
164116
  }, []);
164011
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(
164117
+ const header = /* @__PURE__ */ jsxRuntimeExports.jsxs(
164012
164118
  "div",
164013
164119
  {
164014
164120
  ref: rootRef,
164121
+ "data-testid": "file-tree__toolbar",
164015
164122
  className: "flex h-9 shrink-0 items-center gap-0.5 border-b border-border/50 pl-3 pr-1.5",
164016
164123
  children: [
164017
164124
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-medium text-muted-foreground", children: "Files" }),
@@ -164146,6 +164253,22 @@ function FileTreeToolbar({
164146
164253
  ]
164147
164254
  }
164148
164255
  );
164256
+ if (!side || !onSetSide) return header;
164257
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenu, { children: [
164258
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuTrigger, { asChild: true, children: header }),
164259
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuContent, { className: "min-w-[12rem]", children: [
164260
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { "data-testid": "file-tree__move-left", onSelect: () => onSetSide("left"), children: [
164261
+ /* @__PURE__ */ jsxRuntimeExports.jsx(PanelLeft, { className: "size-4" }),
164262
+ "Explorer on Left",
164263
+ side === "left" && /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "ml-auto size-4" })
164264
+ ] }),
164265
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { "data-testid": "file-tree__move-right", onSelect: () => onSetSide("right"), children: [
164266
+ /* @__PURE__ */ jsxRuntimeExports.jsx(PanelRight, { className: "size-4" }),
164267
+ "Explorer on Right",
164268
+ side === "right" && /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "ml-auto size-4" })
164269
+ ] })
164270
+ ] })
164271
+ ] });
164149
164272
  }
164150
164273
  function CodeBrowserView({
164151
164274
  workspaceId,
@@ -164296,7 +164419,7 @@ function CodeBrowserView({
164296
164419
  };
164297
164420
  const cmLang = langMap[ext ?? ""];
164298
164421
  const languageId = cmLang ? getLspLanguageId(cmLang) : void 0;
164299
- createLspExtension(lspWsUrl, rootUri, documentUri, languageId).then((ext2) => {
164422
+ createLspExtension(lspWsUrl, rootUri, documentUri, languageId, workspaceId).then((ext2) => {
164300
164423
  if (!cancelled2) setLspExtension(ext2);
164301
164424
  }).catch((err) => {
164302
164425
  console.warn("LSP extension creation failed:", err);
@@ -164305,7 +164428,7 @@ function CodeBrowserView({
164305
164428
  return () => {
164306
164429
  cancelled2 = true;
164307
164430
  };
164308
- }, [lspWsUrl, workspacePath, viewFilePath]);
164431
+ }, [lspWsUrl, workspacePath, viewFilePath, workspaceId]);
164309
164432
  reactExports.useEffect(() => {
164310
164433
  return () => {
164311
164434
  if (lspWsUrl) releaseLspClient(lspWsUrl);
@@ -164568,20 +164691,22 @@ function CodeBrowserView({
164568
164691
  setViewColumn(void 0);
164569
164692
  notifySelectFile(null);
164570
164693
  }, [viewFilePath, handleTabClose, notifySelectFile]);
164694
+ const persistActiveEditorState = reactExports.useCallback(() => {
164695
+ const view = editorViewRef.current;
164696
+ if (!view || !viewFilePath) return;
164697
+ try {
164698
+ const state2 = serializeEditorState(view);
164699
+ savedEditorStatesRef.current[viewFilePath] = state2;
164700
+ tabState.update(viewFilePath, {
164701
+ editorState: state2.editorState,
164702
+ scrollTop: state2.scrollTop
164703
+ });
164704
+ } catch {
164705
+ }
164706
+ }, [viewFilePath, tabState.update]);
164571
164707
  const handleTabSelect = reactExports.useCallback(
164572
164708
  (filePath) => {
164573
- const view = editorViewRef.current;
164574
- if (view && viewFilePath) {
164575
- try {
164576
- const state2 = serializeEditorState(view);
164577
- savedEditorStatesRef.current[viewFilePath] = state2;
164578
- tabState.update(viewFilePath, {
164579
- editorState: state2.editorState,
164580
- scrollTop: state2.scrollTop
164581
- });
164582
- } catch {
164583
- }
164584
- }
164709
+ persistActiveEditorState();
164585
164710
  if (filePath !== viewFilePath) skipFileEffectRef.current = true;
164586
164711
  fileTabs.setActiveTab(filePath);
164587
164712
  setViewFilePath(filePath);
@@ -164590,7 +164715,7 @@ function CodeBrowserView({
164590
164715
  setViewColumn(void 0);
164591
164716
  notifySelectFile(filePath);
164592
164717
  },
164593
- [fileTabs.setActiveTab, notifySelectFile, viewFilePath, tabState.update]
164718
+ [fileTabs.setActiveTab, notifySelectFile, viewFilePath, persistActiveEditorState]
164594
164719
  );
164595
164720
  const skipInitialTabSync = reactExports.useRef(true);
164596
164721
  reactExports.useEffect(() => {
@@ -164644,18 +164769,27 @@ function CodeBrowserView({
164644
164769
  if (entry) navigateToEntry(entry);
164645
164770
  }, [editorHistory.goForward, navigateToEntry]);
164646
164771
  reactExports.useEffect(() => {
164647
- const handleGoBack = () => handleEditorGoBack();
164648
- const handleGoForward = () => handleEditorGoForward();
164772
+ const handleGoBack = (e3) => {
164773
+ const detail = e3.detail;
164774
+ if (detail?.workspaceId && detail.workspaceId !== workspaceId) return;
164775
+ handleEditorGoBack();
164776
+ };
164777
+ const handleGoForward = (e3) => {
164778
+ const detail = e3.detail;
164779
+ if (detail?.workspaceId && detail.workspaceId !== workspaceId) return;
164780
+ handleEditorGoForward();
164781
+ };
164649
164782
  window.addEventListener("band:editor-go-back", handleGoBack);
164650
164783
  window.addEventListener("band:editor-go-forward", handleGoForward);
164651
164784
  return () => {
164652
164785
  window.removeEventListener("band:editor-go-back", handleGoBack);
164653
164786
  window.removeEventListener("band:editor-go-forward", handleGoForward);
164654
164787
  };
164655
- }, [handleEditorGoBack, handleEditorGoForward]);
164788
+ }, [handleEditorGoBack, handleEditorGoForward, workspaceId]);
164656
164789
  reactExports.useEffect(() => {
164657
164790
  const handleLspNavigate = (e3) => {
164658
164791
  const detail = e3.detail;
164792
+ if (detail?.workspaceId && detail.workspaceId !== workspaceId) return;
164659
164793
  if (detail?.filePath) {
164660
164794
  pushDepartureAndArrival({ filePath: detail.filePath });
164661
164795
  skipFileEffectRef.current = true;
@@ -164670,7 +164804,7 @@ function CodeBrowserView({
164670
164804
  };
164671
164805
  window.addEventListener("band:lsp-navigate", handleLspNavigate);
164672
164806
  return () => window.removeEventListener("band:lsp-navigate", handleLspNavigate);
164673
- }, [pushDepartureAndArrival, fileTabs.openTabPinned, notifySelectFile]);
164807
+ }, [pushDepartureAndArrival, fileTabs.openTabPinned, notifySelectFile, workspaceId]);
164674
164808
  reactExports.useEffect(() => {
164675
164809
  const cycleFileTabs = (direction) => {
164676
164810
  const tabs = fileTabs.openTabs;
@@ -164951,21 +165085,75 @@ function CodeBrowserView({
164951
165085
  );
164952
165086
  const treePanelRef = ln$2();
164953
165087
  const [treeCollapsed, setTreeCollapsed] = reactExports.useState(() => loadFileTreeCollapsed(workspaceId));
164954
- const skipFirstLayoutCallback = reactExports.useRef(true);
164955
- const savedCollapsed = loadFileTreeCollapsed(workspaceId);
164956
- const savedWidth = loadFileTreeWidth(workspaceId);
164957
- const defaultLayout = savedCollapsed ? { "file-tree": 0, "file-viewer": 100 } : savedWidth ? { "file-tree": savedWidth, "file-viewer": 100 - savedWidth } : void 0;
164958
- const handleLayoutChanged = reactExports.useCallback(
164959
- (layout) => {
164960
- if (skipFirstLayoutCallback.current) {
164961
- skipFirstLayoutCallback.current = false;
165088
+ const [treeSide, setTreeSide] = reactExports.useState(() => loadFileTreeSide(workspaceId));
165089
+ const collapsedRef = reactExports.useRef(treeCollapsed);
165090
+ const treeWidthRef = reactExports.useRef(loadFileTreeWidth(workspaceId) ?? DEFAULT_FILE_TREE_WIDTH_PX);
165091
+ reactExports.useLayoutEffect(() => {
165092
+ if (treeCollapsed) treePanelRef.current?.collapse();
165093
+ }, [treeSide, useMobileLayout, treePanelRef]);
165094
+ const widthPersistTimerRef = reactExports.useRef(null);
165095
+ const scheduleWidthPersist = reactExports.useCallback(() => {
165096
+ if (widthPersistTimerRef.current !== null) {
165097
+ clearTimeout(widthPersistTimerRef.current);
165098
+ }
165099
+ widthPersistTimerRef.current = setTimeout(() => {
165100
+ widthPersistTimerRef.current = null;
165101
+ saveFileTreeWidth(workspaceId, treeWidthRef.current);
165102
+ }, WIDTH_PERSIST_DEBOUNCE_MS);
165103
+ }, [workspaceId]);
165104
+ reactExports.useEffect(() => {
165105
+ return () => {
165106
+ if (widthPersistTimerRef.current !== null) {
165107
+ clearTimeout(widthPersistTimerRef.current);
165108
+ saveFileTreeWidth(workspaceId, treeWidthRef.current);
165109
+ }
165110
+ };
165111
+ }, [workspaceId]);
165112
+ const groupWidthRef = reactExports.useRef(0);
165113
+ const selfResizeRef = reactExports.useRef(false);
165114
+ const handleTreeResize = reactExports.useCallback(
165115
+ (size2) => {
165116
+ const collapsed = size2.asPercentage === 0;
165117
+ if (collapsed !== collapsedRef.current) {
165118
+ collapsedRef.current = collapsed;
165119
+ setTreeCollapsed(collapsed);
165120
+ saveFileTreeCollapsed(workspaceId, collapsed);
165121
+ }
165122
+ if (collapsed) return;
165123
+ const groupWidth = size2.inPixels / (size2.asPercentage / 100);
165124
+ const groupResized = Math.abs(groupWidth - groupWidthRef.current) > 1;
165125
+ groupWidthRef.current = groupWidth;
165126
+ if (selfResizeRef.current) {
165127
+ selfResizeRef.current = false;
164962
165128
  return;
164963
165129
  }
164964
- if (layout["file-tree"] != null) {
164965
- saveFileTreeWidth(workspaceId, layout["file-tree"]);
165130
+ if (!groupResized) {
165131
+ treeWidthRef.current = size2.inPixels;
165132
+ scheduleWidthPersist();
165133
+ return;
165134
+ }
165135
+ const maxWidth = groupWidth * MAX_FILE_TREE_WIDTH_RATIO;
165136
+ if (maxWidth < MIN_FILE_TREE_WIDTH_PX) return;
165137
+ const target = Math.min(treeWidthRef.current, maxWidth);
165138
+ if (Math.abs(size2.inPixels - target) > 1) {
165139
+ selfResizeRef.current = true;
165140
+ treePanelRef.current?.resize(`${target}px`);
164966
165141
  }
164967
165142
  },
164968
- [workspaceId]
165143
+ [workspaceId, treePanelRef, scheduleWidthPersist]
165144
+ );
165145
+ const handleSetTreeSide = reactExports.useCallback(
165146
+ (side) => {
165147
+ persistActiveEditorState();
165148
+ const size2 = treePanelRef.current?.getSize();
165149
+ if (size2 && size2.inPixels > 0) {
165150
+ treeWidthRef.current = size2.inPixels;
165151
+ saveFileTreeWidth(workspaceId, size2.inPixels);
165152
+ }
165153
+ setTreeSide(side);
165154
+ saveFileTreeSide(workspaceId, side);
165155
+ },
165156
+ [workspaceId, treePanelRef, persistActiveEditorState]
164969
165157
  );
164970
165158
  const toggleTree = reactExports.useCallback(() => {
164971
165159
  const panel = treePanelRef.current;
@@ -164986,6 +165174,72 @@ function CodeBrowserView({
164986
165174
  treePanelRef.current?.expand();
164987
165175
  }
164988
165176
  }, [fileTabs.openTabs.length, treeCollapsed, treePanelRef]);
165177
+ const treePanelEl = /* @__PURE__ */ jsxRuntimeExports.jsx(
165178
+ Yt$1,
165179
+ {
165180
+ id: "file-tree",
165181
+ defaultSize: `${treeWidthRef.current}px`,
165182
+ minSize: `${MIN_FILE_TREE_WIDTH_PX}px`,
165183
+ maxSize: `${MAX_FILE_TREE_WIDTH_RATIO * 100}%`,
165184
+ groupResizeBehavior: "preserve-pixel-size",
165185
+ collapsible: true,
165186
+ collapsedSize: "0%",
165187
+ panelRef: treePanelRef,
165188
+ onResize: handleTreeResize,
165189
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
165190
+ "div",
165191
+ {
165192
+ className: `flex h-full flex-col overflow-hidden border-border ${treeSide === "left" ? "border-r" : "border-l"}`,
165193
+ children: [
165194
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
165195
+ FileTreeToolbar,
165196
+ {
165197
+ onNewFile: handleNewFile,
165198
+ onNewFolder: handleNewFolder,
165199
+ onOpenFile: pickFile ? handleOpenExternalFile : void 0,
165200
+ onNewUntitled: handleNewUntitled,
165201
+ side: treeSide,
165202
+ onSetSide: handleSetTreeSide
165203
+ }
165204
+ ),
165205
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-h-0 flex-1 overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
165206
+ FileBrowser,
165207
+ {
165208
+ ref: fileBrowserRef,
165209
+ workspaceId,
165210
+ workspacePath,
165211
+ onOpenFile: handleSelectFile,
165212
+ onOpenFilePinned: handleSelectFilePinned,
165213
+ compact: true,
165214
+ selectedFile: viewFilePath,
165215
+ onPathRenamed: handlePathRenamed,
165216
+ onPathDeleted: handlePathDeleted
165217
+ }
165218
+ ) })
165219
+ ]
165220
+ }
165221
+ )
165222
+ },
165223
+ "file-tree"
165224
+ );
165225
+ const pointsLeft = treeSide === "left" ? !treeCollapsed : treeCollapsed;
165226
+ const separatorEl = /* @__PURE__ */ jsxRuntimeExports.jsx(
165227
+ Qt$1,
165228
+ {
165229
+ id: "file-tree-separator",
165230
+ className: "group relative w-[3px] bg-transparent hover:bg-accent-foreground/20 active:bg-accent-foreground/30 transition-colors cursor-col-resize",
165231
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
165232
+ "button",
165233
+ {
165234
+ type: "button",
165235
+ onClick: toggleTree,
165236
+ className: "absolute top-1/2 left-1/2 z-10 flex size-7 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full border-2 border-accent-foreground/30 bg-background text-muted-foreground opacity-0 shadow-md transition-opacity hover:border-accent-foreground/50 hover:text-foreground group-hover:opacity-100",
165237
+ children: pointsLeft ? /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronLeft, { className: "size-4" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronRight, { className: "size-4" })
165238
+ }
165239
+ )
165240
+ },
165241
+ "file-tree-separator"
165242
+ );
164989
165243
  return (
164990
165244
  // h-full + w-full + overflow-hidden + min-w-0 is required so that
164991
165245
  // CodeMirror's wide intrinsic content (long unwrapped lines, scrollable
@@ -165072,162 +165326,112 @@ function CodeBrowserView({
165072
165326
  ] })
165073
165327
  )
165074
165328
  ) : (
165075
- // Desktop: side-by-side layout with resizable file tree
165076
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
165077
- Ut$1,
165078
- {
165079
- orientation: "horizontal",
165080
- defaultLayout,
165081
- onLayoutChanged: handleLayoutChanged,
165082
- children: [
165083
- /* @__PURE__ */ jsxRuntimeExports.jsx(
165084
- Yt$1,
165085
- {
165086
- id: "file-tree",
165087
- defaultSize: "15rem",
165088
- minSize: "10rem",
165089
- maxSize: "50%",
165090
- collapsible: true,
165091
- collapsedSize: "0%",
165092
- panelRef: treePanelRef,
165093
- onResize: (size2) => {
165094
- const collapsed = size2.asPercentage === 0;
165095
- setTreeCollapsed(collapsed);
165096
- saveFileTreeCollapsed(workspaceId, collapsed);
165097
- },
165098
- children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-full flex-col overflow-hidden border-r border-border", children: [
165099
- /* @__PURE__ */ jsxRuntimeExports.jsx(
165100
- FileTreeToolbar,
165329
+ // Desktop: side-by-side layout with resizable file tree. The Group is
165330
+ // keyed on the side so it fully remounts when the explorer moves —
165331
+ // react-resizable-panels sorts its panels by `offsetLeft` when they
165332
+ // register, so reordering the children in place would leave it holding
165333
+ // a stale order.
165334
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Ut$1, { orientation: "horizontal", children: [
165335
+ treeSide === "left" && treePanelEl,
165336
+ treeSide === "left" && separatorEl,
165337
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Yt$1, { id: "file-viewer", minSize: "20%", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative flex h-full min-w-0 flex-col overflow-hidden", children: [
165338
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
165339
+ FileTabBar,
165340
+ {
165341
+ workspacePath,
165342
+ tabs: fileTabs.openTabs,
165343
+ activeTabPath: fileTabs.activeTabPath,
165344
+ onSelectTab: handleTabSelect,
165345
+ onCloseTab: handleTabClose,
165346
+ onPinTab: fileTabs.pinTab,
165347
+ onGoBack: handleEditorGoBack,
165348
+ onGoForward: handleEditorGoForward,
165349
+ canGoBack: editorHistory.canGoBack,
165350
+ canGoForward: editorHistory.canGoForward,
165351
+ isDirty: tabState.isDirty,
165352
+ onSaveUntitled: pickSaveFile ? handleSaveUntitledForClose : void 0,
165353
+ treeCollapsed,
165354
+ treeSide,
165355
+ onToggleTree: toggleTree,
165356
+ actions: isMarkdown ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0.5", children: [
165357
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
165358
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
165359
+ "button",
165101
165360
  {
165102
- onNewFile: handleNewFile,
165103
- onNewFolder: handleNewFolder,
165104
- onOpenFile: pickFile ? handleOpenExternalFile : void 0,
165105
- onNewUntitled: handleNewUntitled
165361
+ type: "button",
165362
+ onClick: () => setMdViewMode("preview"),
165363
+ className: `inline-flex size-6 items-center justify-center rounded-md transition-colors ${mdViewMode === "preview" ? "bg-accent text-accent-foreground" : "text-muted-foreground hover:bg-accent hover:text-foreground"}`,
165364
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Eye, { className: "size-3.5" })
165106
165365
  }
165107
- ),
165108
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-h-0 flex-1 overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
165109
- FileBrowser,
165366
+ ) }),
165367
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", className: "text-xs", children: "Preview" })
165368
+ ] }),
165369
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
165370
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
165371
+ "button",
165110
165372
  {
165111
- ref: fileBrowserRef,
165112
- workspaceId,
165113
- workspacePath,
165114
- onOpenFile: handleSelectFile,
165115
- onOpenFilePinned: handleSelectFilePinned,
165116
- compact: true,
165117
- selectedFile: viewFilePath,
165118
- onPathRenamed: handlePathRenamed,
165119
- onPathDeleted: handlePathDeleted
165373
+ type: "button",
165374
+ onClick: () => setMdViewMode("source"),
165375
+ className: `inline-flex size-6 items-center justify-center rounded-md transition-colors ${mdViewMode === "source" ? "bg-accent text-accent-foreground" : "text-muted-foreground hover:bg-accent hover:text-foreground"}`,
165376
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Code, { className: "size-3.5" })
165120
165377
  }
165121
- ) })
165378
+ ) }),
165379
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", className: "text-xs", children: "Source" })
165122
165380
  ] })
165123
- }
165124
- ),
165125
- /* @__PURE__ */ jsxRuntimeExports.jsx(Qt$1, { className: "group relative w-[3px] bg-transparent hover:bg-accent-foreground/20 active:bg-accent-foreground/30 transition-colors cursor-col-resize", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
165126
- "button",
165127
- {
165128
- type: "button",
165129
- onClick: toggleTree,
165130
- className: "absolute top-1/2 left-1/2 z-10 flex size-7 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full border-2 border-accent-foreground/30 bg-background text-muted-foreground opacity-0 shadow-md transition-opacity hover:border-accent-foreground/50 hover:text-foreground group-hover:opacity-100",
165131
- children: treeCollapsed ? /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronRight, { className: "size-4" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronLeft, { className: "size-4" })
165132
- }
165133
- ) }),
165134
- /* @__PURE__ */ jsxRuntimeExports.jsx(Yt$1, { id: "file-viewer", minSize: "20%", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative flex h-full min-w-0 flex-col overflow-hidden", children: [
165135
- /* @__PURE__ */ jsxRuntimeExports.jsx(
165136
- FileTabBar,
165381
+ ] }) : void 0
165382
+ }
165383
+ ),
165384
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-h-0 min-w-0 flex-1 overflow-hidden", children: viewFilePath ? /* @__PURE__ */ jsxRuntimeExports.jsx(
165385
+ FileViewer,
165386
+ {
165387
+ workspaceId,
165388
+ filePath: viewFilePath,
165389
+ external: viewIsExternal,
165390
+ untitled: isUntitledPath(viewFilePath),
165391
+ line: viewLine,
165392
+ lineEnd: viewLineEnd,
165393
+ column: viewColumn,
165394
+ onEditorView: handleEditorView,
165395
+ onCursorLineChange: handleCursorLineChange,
165396
+ renderMarkdown,
165397
+ editable: true,
165398
+ hideTitleBar: true,
165399
+ lspExtension: viewIsExternal || isUntitledPath(viewFilePath) ? null : lspExtension,
165400
+ viewMode: isMarkdown ? mdViewMode : void 0,
165401
+ onViewModeChange: isMarkdown ? setMdViewMode : void 0,
165402
+ initialEditedContent: tabState.get(viewFilePath)?.editedContent ?? null,
165403
+ savedEditorState: savedEditorStatesRef.current[viewFilePath]?.editorState ?? tabState.get(viewFilePath)?.editorState,
165404
+ savedScrollTop: savedEditorStatesRef.current[viewFilePath]?.scrollTop ?? tabState.get(viewFilePath)?.scrollTop,
165405
+ onEditedContentChange: handleEditedContentChange,
165406
+ languageOverride: tabState.getLanguage(viewFilePath),
165407
+ onLanguageOverrideChange: (id28) => handleLanguageOverride(viewFilePath, id28),
165408
+ onSaveAs: isUntitledPath(viewFilePath) && pickSaveFile ? (content2) => handleSaveUntitled(viewFilePath, content2) : void 0,
165409
+ onLoadError: handleFileLoadError,
165410
+ toolbar: search2.searchOpen ? /* @__PURE__ */ jsxRuntimeExports.jsx(
165411
+ SearchBar,
165137
165412
  {
165138
- workspacePath,
165139
- tabs: fileTabs.openTabs,
165140
- activeTabPath: fileTabs.activeTabPath,
165141
- onSelectTab: handleTabSelect,
165142
- onCloseTab: handleTabClose,
165143
- onPinTab: fileTabs.pinTab,
165144
- onGoBack: handleEditorGoBack,
165145
- onGoForward: handleEditorGoForward,
165146
- canGoBack: editorHistory.canGoBack,
165147
- canGoForward: editorHistory.canGoForward,
165148
- isDirty: tabState.isDirty,
165149
- onSaveUntitled: pickSaveFile ? handleSaveUntitledForClose : void 0,
165150
- treeCollapsed,
165151
- onToggleTree: toggleTree,
165152
- actions: isMarkdown ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0.5", children: [
165153
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
165154
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
165155
- "button",
165156
- {
165157
- type: "button",
165158
- onClick: () => setMdViewMode("preview"),
165159
- className: `inline-flex size-6 items-center justify-center rounded-md transition-colors ${mdViewMode === "preview" ? "bg-accent text-accent-foreground" : "text-muted-foreground hover:bg-accent hover:text-foreground"}`,
165160
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Eye, { className: "size-3.5" })
165161
- }
165162
- ) }),
165163
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", className: "text-xs", children: "Preview" })
165164
- ] }),
165165
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip$1, { children: [
165166
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
165167
- "button",
165168
- {
165169
- type: "button",
165170
- onClick: () => setMdViewMode("source"),
165171
- className: `inline-flex size-6 items-center justify-center rounded-md transition-colors ${mdViewMode === "source" ? "bg-accent text-accent-foreground" : "text-muted-foreground hover:bg-accent hover:text-foreground"}`,
165172
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(Code, { className: "size-3.5" })
165173
- }
165174
- ) }),
165175
- /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", className: "text-xs", children: "Source" })
165176
- ] })
165177
- ] }) : void 0
165413
+ ref: search2.searchBarRef,
165414
+ query: search2.searchQuery,
165415
+ onQueryChange: search2.setSearchQuery,
165416
+ options: search2.searchOptions,
165417
+ onOptionsChange: search2.setSearchOptions,
165418
+ placeholder: isMarkdownPreviewActive ? "Find in preview..." : "Find in file...",
165419
+ matchInfo: isMarkdownPreviewActive ? mdMatchInfo : search2.matchInfo,
165420
+ onNext: handleSearchNext,
165421
+ onPrevious: handleSearchPrevious,
165422
+ onClose: handleSearchClose
165178
165423
  }
165179
- ),
165180
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-h-0 min-w-0 flex-1 overflow-hidden", children: viewFilePath ? /* @__PURE__ */ jsxRuntimeExports.jsx(
165181
- FileViewer,
165182
- {
165183
- workspaceId,
165184
- filePath: viewFilePath,
165185
- external: viewIsExternal,
165186
- untitled: isUntitledPath(viewFilePath),
165187
- line: viewLine,
165188
- lineEnd: viewLineEnd,
165189
- column: viewColumn,
165190
- onEditorView: handleEditorView,
165191
- onCursorLineChange: handleCursorLineChange,
165192
- renderMarkdown,
165193
- editable: true,
165194
- hideTitleBar: true,
165195
- lspExtension: viewIsExternal || isUntitledPath(viewFilePath) ? null : lspExtension,
165196
- viewMode: isMarkdown ? mdViewMode : void 0,
165197
- onViewModeChange: isMarkdown ? setMdViewMode : void 0,
165198
- initialEditedContent: tabState.get(viewFilePath)?.editedContent ?? null,
165199
- savedEditorState: savedEditorStatesRef.current[viewFilePath]?.editorState ?? tabState.get(viewFilePath)?.editorState,
165200
- savedScrollTop: savedEditorStatesRef.current[viewFilePath]?.scrollTop ?? tabState.get(viewFilePath)?.scrollTop,
165201
- onEditedContentChange: handleEditedContentChange,
165202
- languageOverride: tabState.getLanguage(viewFilePath),
165203
- onLanguageOverrideChange: (id28) => handleLanguageOverride(viewFilePath, id28),
165204
- onSaveAs: isUntitledPath(viewFilePath) && pickSaveFile ? (content2) => handleSaveUntitled(viewFilePath, content2) : void 0,
165205
- onLoadError: handleFileLoadError,
165206
- toolbar: search2.searchOpen ? /* @__PURE__ */ jsxRuntimeExports.jsx(
165207
- SearchBar,
165208
- {
165209
- ref: search2.searchBarRef,
165210
- query: search2.searchQuery,
165211
- onQueryChange: search2.setSearchQuery,
165212
- options: search2.searchOptions,
165213
- onOptionsChange: search2.setSearchOptions,
165214
- placeholder: isMarkdownPreviewActive ? "Find in preview..." : "Find in file...",
165215
- matchInfo: isMarkdownPreviewActive ? mdMatchInfo : search2.matchInfo,
165216
- onNext: handleSearchNext,
165217
- onPrevious: handleSearchPrevious,
165218
- onClose: handleSearchClose
165219
- }
165220
- ) : void 0
165221
- },
165222
- isUntitledPath(viewFilePath) ? viewFilePath : "file"
165223
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center gap-3 px-8 text-center", children: [
165224
- /* @__PURE__ */ jsxRuntimeExports.jsx(File$1, { className: "size-8 text-muted-foreground/30" }),
165225
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: "Select a file to view" })
165226
- ] }) }) })
165227
- ] }) })
165228
- ]
165229
- }
165230
- )
165424
+ ) : void 0
165425
+ },
165426
+ isUntitledPath(viewFilePath) ? viewFilePath : "file"
165427
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center gap-3 px-8 text-center", children: [
165428
+ /* @__PURE__ */ jsxRuntimeExports.jsx(File$1, { className: "size-8 text-muted-foreground/30" }),
165429
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: "Select a file to view" })
165430
+ ] }) }) })
165431
+ ] }) }, "file-viewer"),
165432
+ treeSide === "right" && separatorEl,
165433
+ treeSide === "right" && treePanelEl
165434
+ ] }, treeSide)
165231
165435
  ) })
165232
165436
  );
165233
165437
  }
@@ -176613,6 +176817,8 @@ function ChatView({
176613
176817
  const getMessageKey = reactExports.useCallback((message) => message.id, []);
176614
176818
  const messagesRef = reactExports.useRef(messages);
176615
176819
  messagesRef.current = messages;
176820
+ const seenMessageIdsRef = reactExports.useRef(null);
176821
+ const enteringIdsRef = reactExports.useRef(/* @__PURE__ */ new Set());
176616
176822
  reactExports.useEffect(() => {
176617
176823
  const sentinel = sentinelRef.current;
176618
176824
  if (!sentinel || !scrollEl || !hasMore || loadingHistory) return;
@@ -176633,6 +176839,20 @@ function ChatView({
176633
176839
  (message, messageIndex) => {
176634
176840
  const currentMessages = messagesRef.current;
176635
176841
  const isLastMessage = messageIndex === currentMessages.length - 1;
176842
+ const seen = seenMessageIdsRef.current;
176843
+ let entering = false;
176844
+ if (seen === null) {
176845
+ seenMessageIdsRef.current = new Set(currentMessages.map((m2) => m2.id));
176846
+ } else if (!seen.has(message.id)) {
176847
+ seen.add(message.id);
176848
+ if (messageIndex >= currentMessages.length - 2) {
176849
+ entering = true;
176850
+ enteringIdsRef.current.add(message.id);
176851
+ window.setTimeout(() => enteringIdsRef.current.delete(message.id), 400);
176852
+ }
176853
+ } else if (enteringIdsRef.current.has(message.id)) {
176854
+ entering = true;
176855
+ }
176636
176856
  const isLastAssistant = message.role === "assistant" && isLastMessage;
176637
176857
  const hasPendingInteractiveTool = isLastAssistant && message.parts.some((p2) => {
176638
176858
  if (!isToolUIPart(p2) || !IN_PROGRESS_STATES.has(p2.state)) return false;
@@ -176643,7 +176863,7 @@ function ChatView({
176643
176863
  const segments = groupMessageParts(message.parts);
176644
176864
  if (message.role !== "assistant") {
176645
176865
  if (segments.length === 0) return null;
176646
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Message, { from: "user", children: /* @__PURE__ */ jsxRuntimeExports.jsx(MessageContent, { children: segments.map((segment) => {
176866
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Message, { from: "user", className: entering ? "chat-message-enter" : void 0, children: /* @__PURE__ */ jsxRuntimeExports.jsx(MessageContent, { children: segments.map((segment) => {
176647
176867
  if (segment.type === "text" && segment.part.type === "text" && segment.part.text.trim()) {
176648
176868
  return /* @__PURE__ */ jsxRuntimeExports.jsx(MessageResponse, { children: segment.part.text }, `${message.id}-text-${segment.partIndex}`);
176649
176869
  }
@@ -176660,7 +176880,7 @@ function ChatView({
176660
176880
  }) }) });
176661
176881
  }
176662
176882
  if (segments.length === 0 && !showThinking) return null;
176663
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Message, { from: "assistant", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(MessageContent, { children: [
176883
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Message, { from: "assistant", className: entering ? "chat-message-enter" : void 0, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(MessageContent, { children: [
176664
176884
  segments.map((segment) => {
176665
176885
  if (segment.type === "text") {
176666
176886
  const { part, partIndex } = segment;
@@ -177093,7 +177313,7 @@ function ContextMeter({
177093
177313
  cy: "12",
177094
177314
  r: DONUT_RADIUS,
177095
177315
  fill: "none",
177096
- className: cn$2("transition-all", progressColor),
177316
+ className: cn$2("transition-[stroke-dashoffset,stroke]", progressColor),
177097
177317
  strokeWidth: "3",
177098
177318
  strokeLinecap: "round",
177099
177319
  strokeDasharray: DONUT_CIRCUMFERENCE,
@@ -178963,10 +179183,15 @@ function createEntry(terminalId, opts) {
178963
179183
  probeConnection();
178964
179184
  }
178965
179185
  };
179186
+ const handleForeground = () => {
179187
+ handleResume();
179188
+ scheduleRepair();
179189
+ };
178966
179190
  const handleVisibility = () => {
178967
- if (!document.hidden) handleResume();
179191
+ if (!document.hidden) handleForeground();
178968
179192
  };
178969
179193
  window.addEventListener("online", handleResume);
179194
+ window.addEventListener("focus", handleForeground);
178970
179195
  document.addEventListener("visibilitychange", handleVisibility);
178971
179196
  connect();
178972
179197
  term.onData((data) => {
@@ -179070,6 +179295,7 @@ function createEntry(terminalId, opts) {
179070
179295
  clearReconnectTimer();
179071
179296
  stopHeartbeat();
179072
179297
  window.removeEventListener("online", handleResume);
179298
+ window.removeEventListener("focus", handleForeground);
179073
179299
  document.removeEventListener("visibilitychange", handleVisibility);
179074
179300
  themeObserver.disconnect();
179075
179301
  resizeObserver.disconnect();
@@ -179330,6 +179556,8 @@ function MultiWorkspacePanelHost({ emptyState, children: children2 }) {
179330
179556
  settings.maxCachedWorkspaces ?? DEFAULT_MAX_CACHED_WORKSPACES
179331
179557
  );
179332
179558
  const activeWorkspaceId = parseWorkspaceFromPath(pathname);
179559
+ const wrapperRef = reactExports.useRef(null);
179560
+ const prevWorkspaceIdRef = reactExports.useRef(activeWorkspaceId);
179333
179561
  if (activeWorkspaceId && !cache.has(activeWorkspaceId)) {
179334
179562
  setCache((prev2) => {
179335
179563
  if (prev2.has(activeWorkspaceId)) return prev2;
@@ -179362,6 +179590,20 @@ function MultiWorkspacePanelHost({ emptyState, children: children2 }) {
179362
179590
  return next2;
179363
179591
  });
179364
179592
  }, [activeWorkspaceId]);
179593
+ reactExports.useLayoutEffect(() => {
179594
+ const prev2 = prevWorkspaceIdRef.current;
179595
+ prevWorkspaceIdRef.current = activeWorkspaceId;
179596
+ if (!prev2 || !activeWorkspaceId || prev2 === activeWorkspaceId) return;
179597
+ const el = wrapperRef.current;
179598
+ if (!el) return;
179599
+ el.style.transition = "none";
179600
+ el.style.opacity = "0.6";
179601
+ const raf = requestAnimationFrame(() => {
179602
+ el.style.transition = "opacity 140ms cubic-bezier(0.23, 1, 0.32, 1)";
179603
+ el.style.opacity = "1";
179604
+ });
179605
+ return () => cancelAnimationFrame(raf);
179606
+ }, [activeWorkspaceId]);
179365
179607
  const { projects, isLoading, error } = useProjects();
179366
179608
  reactExports.useEffect(() => {
179367
179609
  if (isLoading || error) return;
@@ -179399,7 +179641,7 @@ function MultiWorkspacePanelHost({ emptyState, children: children2 }) {
179399
179641
  lastCacheKeysRef.current = current2;
179400
179642
  }, [cache]);
179401
179643
  if (!activeWorkspaceId) return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative h-full w-full", children: emptyState });
179402
- return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative h-full w-full", children: Array.from(cache.values()).map(({ workspaceId }) => {
179644
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: wrapperRef, className: "relative h-full w-full", children: Array.from(cache.values()).map(({ workspaceId }) => {
179403
179645
  const isActive = workspaceId === activeWorkspaceId;
179404
179646
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
179405
179647
  "div",
@@ -202981,12 +203223,12 @@ const PANEL_SHORTCUTS = {
202981
203223
  browser: "⇧⌘B"
202982
203224
  };
202983
203225
  const DockviewTerminalContainer = reactExports.lazy(
202984
- () => import("./DockviewTerminalContainer-CwXOWGN4.js").then((m2) => ({
203226
+ () => import("./DockviewTerminalContainer-C1qdx1Wr.js").then((m2) => ({
202985
203227
  default: m2.DockviewTerminalContainer
202986
203228
  }))
202987
203229
  );
202988
203230
  const DockviewBrowserContainer = reactExports.lazy(
202989
- () => import("./DockviewBrowserContainer-BjdfNGy8.js").then((m2) => ({
203231
+ () => import("./DockviewBrowserContainer-Cwa58lvF.js").then((m2) => ({
202990
203232
  default: m2.DockviewBrowserContainer
202991
203233
  }))
202992
203234
  );
@@ -203197,9 +203439,13 @@ const MainGroupRightActions = reactExports.memo(function MainGroupRightActions2(
203197
203439
  {
203198
203440
  type: "button",
203199
203441
  "aria-label": label,
203200
- onClick: () => {
203201
- if (props.api.isMaximized()) props.api.exitMaximized();
203202
- else props.api.maximize();
203442
+ onClick: (e3) => {
203443
+ if (props.api.isMaximized()) {
203444
+ prepareMaximizeRestoreAnimation(e3.currentTarget.closest(".dv-shell"));
203445
+ props.api.exitMaximized();
203446
+ } else {
203447
+ props.api.maximize();
203448
+ }
203203
203449
  },
203204
203450
  className: "inline-flex size-7 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
203205
203451
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "size-3.5" })
@@ -203488,6 +203734,20 @@ function SharedDockviewLayout() {
203488
203734
  detail: { workspaceId: ws, filePath }
203489
203735
  })
203490
203736
  );
203737
+ },
203738
+ editorGoBack: () => {
203739
+ const ws = activeWorkspaceIdRef.current;
203740
+ if (!ws) return;
203741
+ window.dispatchEvent(
203742
+ new CustomEvent("band:editor-go-back", { detail: { workspaceId: ws } })
203743
+ );
203744
+ },
203745
+ editorGoForward: () => {
203746
+ const ws = activeWorkspaceIdRef.current;
203747
+ if (!ws) return;
203748
+ window.dispatchEvent(
203749
+ new CustomEvent("band:editor-go-forward", { detail: { workspaceId: ws } })
203750
+ );
203491
203751
  }
203492
203752
  }),
203493
203753
  []
@@ -203629,11 +203889,18 @@ function SharedDockviewLayout() {
203629
203889
  const active = api.activeGroup;
203630
203890
  if (!active) return;
203631
203891
  if (active.api.location.type !== "grid") {
203632
- if (api.hasMaximizedGroup()) api.exitMaximizedGroup();
203892
+ if (api.hasMaximizedGroup()) {
203893
+ prepareMaximizeRestoreAnimation(containerRef.current);
203894
+ api.exitMaximizedGroup();
203895
+ }
203633
203896
  return;
203634
203897
  }
203635
- if (active.api.isMaximized()) active.api.exitMaximized();
203636
- else active.api.maximize();
203898
+ if (active.api.isMaximized()) {
203899
+ prepareMaximizeRestoreAnimation(containerRef.current);
203900
+ active.api.exitMaximized();
203901
+ } else {
203902
+ active.api.maximize();
203903
+ }
203637
203904
  }
203638
203905
  };
203639
203906
  window.addEventListener("keydown", handler, true);
@@ -203921,7 +204188,10 @@ function SharedDockviewLayout() {
203921
204188
  (e3) => {
203922
204189
  if (!initializedRef.current) return;
203923
204190
  if (inSaveLayoutToJSON) return;
203924
- applyMaximizeEdgeVisibility(event.api, !!e3.isMaximized);
204191
+ applyMaximizeEdgeVisibility(event.api, !!e3.isMaximized, containerRef.current);
204192
+ if (e3.isMaximized && containerRef.current) {
204193
+ anchorHiddenGridViews(containerRef.current);
204194
+ }
203925
204195
  const workspaceId = activeWorkspaceIdRef.current;
203926
204196
  if (!workspaceId) return;
203927
204197
  if (e3.isMaximized && !e3.group?.id) return;
@@ -203942,6 +204212,12 @@ function SharedDockviewLayout() {
203942
204212
  },
203943
204213
  [buildDefaultLayout, addMissingPanel]
203944
204214
  );
204215
+ reactExports.useEffect(() => {
204216
+ const el = containerRef.current;
204217
+ const api = apiRef.current;
204218
+ if (!el || !api) return;
204219
+ return attachSyncLayout(el, api);
204220
+ }, []);
203945
204221
  reactExports.useEffect(() => {
203946
204222
  const panel = apiRef.current?.getPanel("changes");
203947
204223
  if (!panel) return;
@@ -203955,6 +204231,9 @@ function SharedDockviewLayout() {
203955
204231
  if (activeState) {
203956
204232
  applyGroupActiveViewsToApi(api, activeState);
203957
204233
  }
204234
+ if (api.hasMaximizedGroup()) {
204235
+ prepareMaximizeRestoreAnimation(containerRef.current);
204236
+ }
203958
204237
  applyMaximizedGroupToApi(api, activeState?.maximizedGroup);
203959
204238
  applyMaximizeEdgeVisibility(api, !!activeState?.maximizedGroup);
203960
204239
  }, [activeWorkspaceId]);
@@ -203978,17 +204257,6 @@ function SharedDockviewLayout() {
203978
204257
  }
203979
204258
  }
203980
204259
  }, [hiddenPanels, addMissingPanel]);
203981
- reactExports.useEffect(() => {
203982
- if (!apiRef.current || !containerRef.current) return;
203983
- const api = apiRef.current;
203984
- const el = containerRef.current;
203985
- requestAnimationFrame(() => {
203986
- const { clientWidth, clientHeight } = el;
203987
- if (clientWidth !== api.width || clientHeight !== api.height) {
203988
- api.layout(clientWidth, clientHeight);
203989
- }
203990
- });
203991
- }, []);
203992
204260
  reactExports.useEffect(() => {
203993
204261
  const api = apiRef.current;
203994
204262
  if (!api) return;
@@ -204217,6 +204485,12 @@ function useZoom() {
204217
204485
  e3.preventDefault();
204218
204486
  e3.stopPropagation();
204219
204487
  zoomOut();
204488
+ return;
204489
+ }
204490
+ if (e3.shiftKey && e3.code === "Digit0") {
204491
+ e3.preventDefault();
204492
+ e3.stopPropagation();
204493
+ zoomReset();
204220
204494
  }
204221
204495
  };
204222
204496
  window.addEventListener("keydown", handler, true);
@@ -204526,9 +204800,11 @@ function AppShell() {
204526
204800
  const animateSidebarToggle = reactExports.useCallback(() => {
204527
204801
  const sidebar = sidebarElRef.current;
204528
204802
  if (!sidebar) return;
204803
+ if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
204529
204804
  const els = [sidebar, mainElRef.current];
204530
204805
  for (const el of els) {
204531
- if (el) el.style.transition = "flex-grow 200ms ease, flex-basis 200ms ease";
204806
+ if (el)
204807
+ el.style.transition = "flex-grow 200ms cubic-bezier(0.77, 0, 0.175, 1), flex-basis 200ms cubic-bezier(0.77, 0, 0.175, 1)";
204532
204808
  }
204533
204809
  let timer2 = 0;
204534
204810
  const clear3 = (e3) => {
@@ -204591,64 +204867,71 @@ function AppShell() {
204591
204867
  if (!useDesktopLayout) {
204592
204868
  return /* @__PURE__ */ jsxRuntimeExports.jsx(Outlet, {});
204593
204869
  }
204594
- return /* @__PURE__ */ jsxRuntimeExports.jsx(ToolbarOverflowProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col h-full w-full overflow-hidden bg-background text-foreground", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 min-h-0 overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
204595
- Ut$1,
204596
- {
204597
- orientation: "horizontal",
204598
- defaultLayout: sidebarDefaultLayout,
204599
- onLayoutChanged: handleSidebarLayoutChanged,
204600
- className: "h-full w-full",
204601
- children: [
204602
- /* @__PURE__ */ jsxRuntimeExports.jsx(
204603
- Yt$1,
204604
- {
204605
- id: "sidebar",
204606
- panelRef: sidebarPanelRef,
204607
- elementRef: sidebarElRef,
204608
- defaultSize: SIDEBAR_MIN_SIZE,
204609
- minSize: SIDEBAR_MIN_SIZE,
204610
- maxSize: SIDEBAR_MAX_SIZE,
204611
- collapsible: true,
204612
- collapsedSize: "0%",
204613
- onResize: handleSidebarResize,
204614
- children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
204615
- "div",
204616
- {
204617
- className: "h-full flex flex-col overflow-hidden border-r border-border bg-sidebar",
204618
- "data-testid": "app-shell__sidebar",
204619
- children: [
204620
- /* @__PURE__ */ jsxRuntimeExports.jsx(SidebarTitleBar, { ...navControlProps, offsetClass: titleBarOffset }),
204621
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 min-h-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(DashboardShell, { hideTitleBar: true, bottomActions: /* @__PURE__ */ jsxRuntimeExports.jsx(ToolbarActionBar, {}) }) })
204622
- ]
204623
- }
204624
- )
204625
- }
204626
- ),
204627
- /* @__PURE__ */ jsxRuntimeExports.jsx(Qt$1, { className: "w-[3px] bg-transparent hover:bg-accent-foreground/20 active:bg-accent-foreground/30 transition-colors cursor-col-resize" }),
204628
- /* @__PURE__ */ jsxRuntimeExports.jsx(Yt$1, { id: "main", elementRef: mainElRef, minSize: "20%", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "h-full flex flex-col min-w-0 overflow-hidden", children: [
204870
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(ToolbarOverflowProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative flex flex-col h-full w-full overflow-hidden bg-background text-foreground", children: [
204871
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
204872
+ "div",
204873
+ {
204874
+ className: `pointer-events-none absolute top-0 left-0 z-10 flex h-[38px] items-center ${titleBarOffset}`,
204875
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(NavControls, { ...navControlProps })
204876
+ }
204877
+ ),
204878
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 min-h-0 overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
204879
+ Ut$1,
204880
+ {
204881
+ orientation: "horizontal",
204882
+ defaultLayout: sidebarDefaultLayout,
204883
+ onLayoutChanged: handleSidebarLayoutChanged,
204884
+ className: "h-full w-full",
204885
+ children: [
204629
204886
  /* @__PURE__ */ jsxRuntimeExports.jsx(
204630
- WorkspaceTitleBar,
204887
+ Yt$1,
204631
204888
  {
204632
- ...navControlProps,
204633
- offsetClass: titleBarOffset,
204634
- workspaceName: activeWorkspaceId ?? void 0,
204635
- workspacePath: activeWorkspaceId ? workspacePath : void 0,
204636
- onCopyPath: activeWorkspaceId ? handleCopyPath : void 0,
204637
- onWorkspaceNameClick: activeWorkspaceId ? handleWorkspaceNameClick : void 0,
204638
- panelItems: activeWorkspaceId ? panelItems : void 0,
204639
- hiddenPanels: activeWorkspaceId ? hiddenPanels : void 0,
204640
- onTogglePanelVisibility: activeWorkspaceId ? handleTogglePanelVisibility : void 0
204889
+ id: "sidebar",
204890
+ panelRef: sidebarPanelRef,
204891
+ elementRef: sidebarElRef,
204892
+ defaultSize: SIDEBAR_MIN_SIZE,
204893
+ minSize: SIDEBAR_MIN_SIZE,
204894
+ maxSize: SIDEBAR_MAX_SIZE,
204895
+ collapsible: true,
204896
+ collapsedSize: "0%",
204897
+ onResize: handleSidebarResize,
204898
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
204899
+ "div",
204900
+ {
204901
+ className: "h-full flex flex-col overflow-hidden border-r border-border bg-sidebar",
204902
+ "data-testid": "app-shell__sidebar",
204903
+ children: [
204904
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SidebarTitleBar, {}),
204905
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 min-h-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(DashboardShell, { hideTitleBar: true, bottomActions: /* @__PURE__ */ jsxRuntimeExports.jsx(ToolbarActionBar, {}) }) })
204906
+ ]
204907
+ }
204908
+ )
204641
204909
  }
204642
204910
  ),
204643
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-h-0 min-w-0 overflow-hidden relative", children: [
204644
- /* @__PURE__ */ jsxRuntimeExports.jsx(Outlet, {}),
204645
- /* @__PURE__ */ jsxRuntimeExports.jsx(SharedDockviewLayout, {}),
204646
- /* @__PURE__ */ jsxRuntimeExports.jsx(BrowserHostBridge, {})
204647
- ] })
204648
- ] }) })
204649
- ]
204650
- }
204651
- ) }) }) });
204911
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Qt$1, { className: "w-[3px] bg-transparent hover:bg-accent-foreground/20 active:bg-accent-foreground/30 transition-colors cursor-col-resize" }),
204912
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Yt$1, { id: "main", elementRef: mainElRef, minSize: "20%", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "h-full flex flex-col min-w-0 overflow-hidden", children: [
204913
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
204914
+ WorkspaceTitleBar,
204915
+ {
204916
+ workspaceName: activeWorkspaceId ?? void 0,
204917
+ workspacePath: activeWorkspaceId ? workspacePath : void 0,
204918
+ onCopyPath: activeWorkspaceId ? handleCopyPath : void 0,
204919
+ onWorkspaceNameClick: activeWorkspaceId ? handleWorkspaceNameClick : void 0,
204920
+ panelItems: activeWorkspaceId ? panelItems : void 0,
204921
+ hiddenPanels: activeWorkspaceId ? hiddenPanels : void 0,
204922
+ onTogglePanelVisibility: activeWorkspaceId ? handleTogglePanelVisibility : void 0
204923
+ }
204924
+ ),
204925
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-h-0 min-w-0 overflow-hidden relative", children: [
204926
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Outlet, {}),
204927
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SharedDockviewLayout, {}),
204928
+ /* @__PURE__ */ jsxRuntimeExports.jsx(BrowserHostBridge, {})
204929
+ ] })
204930
+ ] }) })
204931
+ ]
204932
+ }
204933
+ ) })
204934
+ ] }) });
204652
204935
  }
204653
204936
  function RootLayout() {
204654
204937
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("html", { lang: "en", children: [
@@ -204668,12 +204951,12 @@ function RootLayout() {
204668
204951
  ] })
204669
204952
  ] });
204670
204953
  }
204671
- const $$splitComponentImporter$1 = () => import("./index-Bm4xacwx.js");
204954
+ const $$splitComponentImporter$1 = () => import("./index-DnkAwjsP.js");
204672
204955
  const Route$1 = createFileRoute("/")({
204673
204956
  component: lazyRouteComponent($$splitComponentImporter$1, "component")
204674
204957
  });
204675
- const $$splitNotFoundComponentImporter = () => import("./workspace._workspaceId-BAO3HXDS.js");
204676
- const $$splitComponentImporter = () => import("./workspace._workspaceId-CREreypp.js");
204958
+ const $$splitNotFoundComponentImporter = () => import("./workspace._workspaceId-D89v3gxu.js");
204959
+ const $$splitComponentImporter = () => import("./workspace._workspaceId-Du6uUhkr.js");
204677
204960
  const Route2 = createFileRoute("/workspace/$workspaceId")({
204678
204961
  component: lazyRouteComponent($$splitComponentImporter, "component"),
204679
204962
  // Bookmarks / shared links from before route unification (`/workspace/$id/changes`,