@band-app/server 0.14.0 → 0.15.0

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 (166) hide show
  1. package/dist/client/assets/{DockviewTerminalContainer-CjLCp0Ep.js → DockviewTerminalContainer-DJBIrF63.js} +2 -2
  2. package/dist/client/assets/{TerminalPanel-Cu7fEaGN.js → TerminalPanel-CJRwWyR3.js} +1 -1
  3. package/dist/client/assets/{_basePickBy-CQtQtDdV.js → _basePickBy-Dc0lZvrW.js} +1 -1
  4. package/dist/client/assets/{_baseUniq-D4iUo06T.js → _baseUniq-Cf73kSyg.js} +1 -1
  5. package/dist/client/assets/{arc-Bk8y2eXC.js → arc-CwSM8pE7.js} +1 -1
  6. package/dist/client/assets/{architectureDiagram-VXUJARFQ-nOygF9m2.js → architectureDiagram-VXUJARFQ-CH39Gb3A.js} +1 -1
  7. package/dist/client/assets/{blockDiagram-VD42YOAC-CZ4Nt28v.js → blockDiagram-VD42YOAC-DDxgl1uo.js} +1 -1
  8. package/dist/client/assets/{c4Diagram-YG6GDRKO-C31ZTlu2.js → c4Diagram-YG6GDRKO-BfEjKk-g.js} +1 -1
  9. package/dist/client/assets/channel-CXGOk1aw.js +1 -0
  10. package/dist/client/assets/{chunk-4BX2VUAB-GjIrL7gq.js → chunk-4BX2VUAB-m8XoXk_H.js} +1 -1
  11. package/dist/client/assets/{chunk-55IACEB6-Dd6rfkjS.js → chunk-55IACEB6-CtGE4lZU.js} +1 -1
  12. package/dist/client/assets/{chunk-B4BG7PRW-Dzfqlv3x.js → chunk-B4BG7PRW-e8RHFxfZ.js} +1 -1
  13. package/dist/client/assets/{chunk-DI55MBZ5-CP20GTKI.js → chunk-DI55MBZ5-6OH7qKMA.js} +1 -1
  14. package/dist/client/assets/{chunk-FMBD7UC4-BjMT67vC.js → chunk-FMBD7UC4-OC-xaPXK.js} +1 -1
  15. package/dist/client/assets/{chunk-QN33PNHL-DjTHrDYb.js → chunk-QN33PNHL-OAk8wo3f.js} +1 -1
  16. package/dist/client/assets/{chunk-QZHKN3VN-DaZKkfet.js → chunk-QZHKN3VN-BQaX9Wrw.js} +1 -1
  17. package/dist/client/assets/{chunk-TZMSLE5B-C-s0f3Nv.js → chunk-TZMSLE5B-BB9WpJAf.js} +1 -1
  18. package/dist/client/assets/classDiagram-2ON5EDUG-CN-WyCFd.js +1 -0
  19. package/dist/client/assets/classDiagram-v2-WZHVMYZB-CN-WyCFd.js +1 -0
  20. package/dist/client/assets/clone-BLJrTeWA.js +1 -0
  21. package/dist/client/assets/{cose-bilkent-S5V4N54A-DWG1ghIg.js → cose-bilkent-S5V4N54A-C9h_X8Kk.js} +1 -1
  22. package/dist/client/assets/{dagre-6UL2VRFP-D5Xahd1k.js → dagre-6UL2VRFP-DqYC11ua.js} +1 -1
  23. package/dist/client/assets/{diagram-PSM6KHXK-DB5Yj4_A.js → diagram-PSM6KHXK-CI1DRC6A.js} +1 -1
  24. package/dist/client/assets/{diagram-QEK2KX5R-CaI4Qm9S.js → diagram-QEK2KX5R-fCfXFf0Y.js} +1 -1
  25. package/dist/client/assets/{diagram-S2PKOQOG-Bc8uBUs8.js → diagram-S2PKOQOG-ShkC9z2o.js} +1 -1
  26. package/dist/client/assets/{erDiagram-Q2GNP2WA-BEdcnVfH.js → erDiagram-Q2GNP2WA-CaIQw3Ar.js} +1 -1
  27. package/dist/client/assets/{flowDiagram-NV44I4VS-CP1RMYLo.js → flowDiagram-NV44I4VS-CBTayrED.js} +1 -1
  28. package/dist/client/assets/{ganttDiagram-JELNMOA3-DybSY1zy.js → ganttDiagram-JELNMOA3-BXX1Htdo.js} +1 -1
  29. package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-B1zM9cMa.js → gitGraphDiagram-V2S2FVAM-Dwzg4ngG.js} +1 -1
  30. package/dist/client/assets/{graph-CPZWfRvB.js → graph-CiXo3Prx.js} +1 -1
  31. package/dist/client/assets/{highlighted-body-B3W2YXNL-Bugc5R-I.js → highlighted-body-B3W2YXNL-7aLtgz8i.js} +1 -1
  32. package/dist/client/assets/{index-mOXvCPx7.js → index-BCNUajNr.js} +1 -1
  33. package/dist/client/assets/{index-CYD8Chzm.js → index-BMWcJGJE.js} +1 -1
  34. package/dist/client/assets/{index-BydRuBb_.js → index-C1zwysWn.js} +1 -1
  35. package/dist/client/assets/{index-Cm01-0la.js → index-CO6I2abN.js} +1 -1
  36. package/dist/client/assets/{index-CijlrIEA.js → index-CR-ehys5.js} +1 -1
  37. package/dist/client/assets/{index-DEVawlAU.js → index-CVm5Qdu2.js} +1 -1
  38. package/dist/client/assets/{index-Bu-ZuLPi.js → index-CfYqVQ5p.js} +1 -1
  39. package/dist/client/assets/{index-D5BWxHiy.js → index-Cg6YccFW.js} +1 -1
  40. package/dist/client/assets/{index-X_vPvtM3.js → index-DQmzIoYb.js} +1 -1
  41. package/dist/client/assets/{index-D4U4UdW8.js → index-DRtcpY-M.js} +1 -1
  42. package/dist/client/assets/{index-BGq7dGXw.js → index-DZu_2Bx_.js} +1 -1
  43. package/dist/client/assets/{index-vP2I9_aT.js → index-De1kIhJh.js} +1 -1
  44. package/dist/client/assets/{index-CrF4PAiW.js → index-Di4toQJ5.js} +1 -1
  45. package/dist/client/assets/{index-SP7EGmTJ.js → index-DmilV26W.js} +1 -1
  46. package/dist/client/assets/{index-BSZ6dtOY.js → index-Du9yJkB_.js} +1 -1
  47. package/dist/client/assets/{index-BSvAdzfH.js → index-DypgdPcb.js} +1 -1
  48. package/dist/client/assets/{index-BQkn45ME.js → index-Gs7HImF7.js} +1 -1
  49. package/dist/client/assets/{index-BKUORVg0.js → index-eX1Ljh4a.js} +1 -1
  50. package/dist/client/assets/{infoDiagram-HS3SLOUP-BCk158Sc.js → infoDiagram-HS3SLOUP-CWD1TyOW.js} +1 -1
  51. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-Dmw405Jr.js → journeyDiagram-XKPGCS4Q-DhxNYqmd.js} +1 -1
  52. package/dist/client/assets/{kanban-definition-3W4ZIXB7-DqNJB_Z3.js → kanban-definition-3W4ZIXB7-CnS4C6i0.js} +1 -1
  53. package/dist/client/assets/{layout-ODCofYfe.js → layout-CSID7t17.js} +1 -1
  54. package/dist/client/assets/{linear-CHYpf9oZ.js → linear-DoyBnBXg.js} +1 -1
  55. package/dist/client/assets/{main-81Q8XW4n.js → main-DqsO5O95.js} +225 -225
  56. package/dist/client/assets/{mindmap-definition-VGOIOE7T-DD4Ndh7U.js → mindmap-definition-VGOIOE7T-DInqVMnG.js} +1 -1
  57. package/dist/client/assets/{pieDiagram-ADFJNKIX-C9vB0eMW.js → pieDiagram-ADFJNKIX-9NXrhDdT.js} +1 -1
  58. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-DKJimp3K.js → quadrantDiagram-AYHSOK5B-C9V_pdwH.js} +1 -1
  59. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-_AjYejyE.js → requirementDiagram-UZGBJVZJ-D7InXBsj.js} +1 -1
  60. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-BN_ggjKc.js → sankeyDiagram-TZEHDZUN-wucasjR9.js} +1 -1
  61. package/dist/client/assets/{sequenceDiagram-WL72ISMW-Ck-zlUdD.js → sequenceDiagram-WL72ISMW-z8y3Dw_f.js} +1 -1
  62. package/dist/client/assets/{square-terminal-DVejknjY.js → square-terminal-BGmf1D-6.js} +1 -1
  63. package/dist/client/assets/{stateDiagram-FKZM4ZOC-Ccmp8_yK.js → stateDiagram-FKZM4ZOC-UgwHItEV.js} +1 -1
  64. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-B0Y2fSqT.js +1 -0
  65. package/dist/client/assets/{timeline-definition-IT6M3QCI-Bm5sYZxz.js → timeline-definition-IT6M3QCI-BFRCSYLj.js} +1 -1
  66. package/dist/client/assets/{treemap-GDKQZRPO-C6oEKt2u.js → treemap-GDKQZRPO-aQmWnuZQ.js} +1 -1
  67. package/dist/client/assets/{useSessionListContext-l-QdtVht.js → useSessionListContext-HoR6j8FY.js} +1 -1
  68. package/dist/client/assets/{workspace._workspaceId-BPktlGJd.js → workspace._workspaceId-DGCQw9gi.js} +1 -1
  69. package/dist/client/assets/{workspace._workspaceId.changes-DNu9WOV2.js → workspace._workspaceId.changes-DBE9NcLH.js} +1 -1
  70. package/dist/client/assets/workspace._workspaceId.code-Cc2uBW1l.js +1 -0
  71. package/dist/client/assets/{workspace._workspaceId.code._-BHhCSQ0w.js → workspace._workspaceId.code._-CsnvG2rj.js} +1 -1
  72. package/dist/client/assets/{workspace._workspaceId.code.index-0y_GQ6sP.js → workspace._workspaceId.code.index-BdfNmZpz.js} +1 -1
  73. package/dist/client/assets/{workspace._workspaceId.index-CtrlsI9z.js → workspace._workspaceId.index-C7NyedGf.js} +1 -1
  74. package/dist/client/assets/{workspace._workspaceId.terminal-DsvwvNc_.js → workspace._workspaceId.terminal-C5ph2UWn.js} +2 -2
  75. package/dist/client/assets/{xychartDiagram-PRI3JC2R-ru_cdw1P.js → xychartDiagram-PRI3JC2R-DElSdzdM.js} +1 -1
  76. package/dist/server/assets/{DockviewTerminalContainer-DVUKt_HJ.js → DockviewTerminalContainer-Btn06b30.js} +3 -3
  77. package/dist/server/assets/{TerminalPanel-hEaDQqdo.js → TerminalPanel-DiuUhPK5.js} +1 -1
  78. package/dist/server/assets/{_basePickBy-Nag5vQgo.js → _basePickBy-D5WFbUhD.js} +2 -2
  79. package/dist/server/assets/{_baseUniq-BcTT1Srn.js → _baseUniq-DFZeWlPn.js} +1 -1
  80. package/dist/server/assets/{_tanstack-start-manifest_v-D0rpEWOW.js → _tanstack-start-manifest_v-UCApGYfd.js} +1 -1
  81. package/dist/server/assets/{arc-CDj2zIqg.js → arc-B1QmYB3V.js} +1 -1
  82. package/dist/server/assets/{architecture-7HQA4BMR-7A5zOnYc.js → architecture-7HQA4BMR-SXElPY6g.js} +6 -6
  83. package/dist/server/assets/{architectureDiagram-VXUJARFQ--uDzxMk3.js → architectureDiagram-VXUJARFQ-H4ZI6Opr.js} +6 -6
  84. package/dist/server/assets/{blockDiagram-VD42YOAC-DAc1UHQ6.js → blockDiagram-VD42YOAC-UhTmqpkK.js} +6 -6
  85. package/dist/server/assets/{c4Diagram-YG6GDRKO-ByeFZAO1.js → c4Diagram-YG6GDRKO-BcLh1QQl.js} +2 -2
  86. package/dist/server/assets/{channel-B6u30R-7.js → channel-DVtl256s.js} +1 -1
  87. package/dist/server/assets/{chunk-4BX2VUAB-X_mApFBH.js → chunk-4BX2VUAB-BYUElNcW.js} +1 -1
  88. package/dist/server/assets/{chunk-55IACEB6-DMO5XJKd.js → chunk-55IACEB6-CQXVz3Ix.js} +1 -1
  89. package/dist/server/assets/{chunk-B4BG7PRW-Da7HlBM1.js → chunk-B4BG7PRW-xbFaXlOL.js} +4 -4
  90. package/dist/server/assets/{chunk-DI55MBZ5-DuioLWo-.js → chunk-DI55MBZ5-BWUyQjGD.js} +3 -3
  91. package/dist/server/assets/{chunk-FMBD7UC4-BhKTk6rW.js → chunk-FMBD7UC4-tuJ9minw.js} +1 -1
  92. package/dist/server/assets/{chunk-QN33PNHL-BgZXw9n5.js → chunk-QN33PNHL-B9p522HA.js} +1 -1
  93. package/dist/server/assets/{chunk-QZHKN3VN-DHuwppPm.js → chunk-QZHKN3VN-C6GPdMrh.js} +1 -1
  94. package/dist/server/assets/{chunk-TZMSLE5B-w8fhHHwn.js → chunk-TZMSLE5B-6Ng3t3Od.js} +1 -1
  95. package/dist/server/assets/{classDiagram-v2-WZHVMYZB-BZf5qvSp.js → classDiagram-2ON5EDUG-BvOdRP7s.js} +5 -5
  96. package/dist/server/assets/{classDiagram-2ON5EDUG-BZf5qvSp.js → classDiagram-v2-WZHVMYZB-BvOdRP7s.js} +5 -5
  97. package/dist/server/assets/{clone-CjoEs-v-.js → clone-CuDKCzEN.js} +1 -1
  98. package/dist/server/assets/{cose-bilkent-S5V4N54A-BNk0NAbB.js → cose-bilkent-S5V4N54A-BhU6LMhN.js} +1 -1
  99. package/dist/server/assets/{dagre-6UL2VRFP-C0_F8CHc.js → dagre-6UL2VRFP-CH-VbyTI.js} +6 -6
  100. package/dist/server/assets/{diagram-PSM6KHXK-LARMaMiS.js → diagram-PSM6KHXK-BE0vVJdc.js} +7 -7
  101. package/dist/server/assets/{diagram-QEK2KX5R-jKvozWzw.js → diagram-QEK2KX5R-rlYyF51_.js} +6 -6
  102. package/dist/server/assets/{diagram-S2PKOQOG-5a2K9q2r.js → diagram-S2PKOQOG-CsrxbKjr.js} +6 -6
  103. package/dist/server/assets/{erDiagram-Q2GNP2WA-DPxBpQns.js → erDiagram-Q2GNP2WA-DeBKeqCX.js} +4 -4
  104. package/dist/server/assets/{flowDiagram-NV44I4VS-CX3XZT5Y.js → flowDiagram-NV44I4VS-hg6b4dSR.js} +5 -5
  105. package/dist/server/assets/{ganttDiagram-JELNMOA3-BmjiDolw.js → ganttDiagram-JELNMOA3-oy5gzveG.js} +2 -2
  106. package/dist/server/assets/{gitGraph-G5XIXVHT-BxG8jjGU.js → gitGraph-G5XIXVHT-DyKGpXFt.js} +6 -6
  107. package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-ChLdCg6Z.js → gitGraphDiagram-V2S2FVAM-CN8rFh7o.js} +7 -7
  108. package/dist/server/assets/{graph-Bx5JUzop.js → graph-CdsnxBHP.js} +2 -2
  109. package/dist/server/assets/{highlighted-body-B3W2YXNL-DDkviWDm.js → highlighted-body-B3W2YXNL-D6ahbJdi.js} +1 -1
  110. package/dist/server/assets/{index-DrrqcbHg.js → index-7k2BqwZv.js} +2 -2
  111. package/dist/server/assets/{index-DTkAyV2J.js → index-B9hFfb3C.js} +2 -2
  112. package/dist/server/assets/{index-BoT6zVKn.js → index-BJorH749.js} +2 -2
  113. package/dist/server/assets/{index-CDCloCld.js → index-BT8sxrq0.js} +2 -2
  114. package/dist/server/assets/{index-BP-Fy_Ud.js → index-BhJN38EV.js} +2 -2
  115. package/dist/server/assets/{index-BnAK5zRH.js → index-BzYp7sVL.js} +1 -1
  116. package/dist/server/assets/{index-DSGH2NU6.js → index-C9H7VUtp.js} +2 -2
  117. package/dist/server/assets/{index-Bb41VJM3.js → index-CaRM9svU.js} +4 -4
  118. package/dist/server/assets/{index-Dp74K7A4.js → index-CchdHjwq.js} +2 -2
  119. package/dist/server/assets/{index-OEnZTnkb.js → index-Crgd09US.js} +2 -2
  120. package/dist/server/assets/{index-Cuuby6oP.js → index-CsnrxvSd.js} +3 -3
  121. package/dist/server/assets/{index-C4USpn2y.js → index-D2P0pxCr.js} +2 -2
  122. package/dist/server/assets/{index-DjhMY50H.js → index-DBbuiN2t.js} +3 -3
  123. package/dist/server/assets/{index-BBCpeEJl.js → index-DIv5BUol.js} +2 -2
  124. package/dist/server/assets/{index-Duvita0E.js → index-Dp5TbN68.js} +5 -5
  125. package/dist/server/assets/{index-DO3wKBul.js → index-DsLZMKNC.js} +5 -5
  126. package/dist/server/assets/{index-CLsI0TMm.js → index-XaoY6ovr.js} +2 -2
  127. package/dist/server/assets/{index-BKnmhk3u.js → index-aOrOBCQS.js} +1 -1
  128. package/dist/server/assets/{info-VBDWY6EO-6bfVBBeD.js → info-VBDWY6EO-HckNvgz-.js} +6 -6
  129. package/dist/server/assets/{infoDiagram-HS3SLOUP-B1v9HmWX.js → infoDiagram-HS3SLOUP-P_hugt8D.js} +5 -5
  130. package/dist/server/assets/{journeyDiagram-XKPGCS4Q-Cb26EUwI.js → journeyDiagram-XKPGCS4Q-lQfkL_-i.js} +4 -4
  131. package/dist/server/assets/{kanban-definition-3W4ZIXB7-Cv4GaETC.js → kanban-definition-3W4ZIXB7-CFh-YdaO.js} +2 -2
  132. package/dist/server/assets/{layout-CQJCngSZ.js → layout-Ce1d_Ibk.js} +4 -4
  133. package/dist/server/assets/{linear-Civ7P345.js → linear-CuiUQTrq.js} +1 -1
  134. package/dist/server/assets/{mermaid-3ZIDBTTL-EBg4-fWO.js → mermaid-3ZIDBTTL-C7xGj9Xg.js} +1 -1
  135. package/dist/server/assets/{mermaid-parser.core-2e_OlBPy.js → mermaid-parser.core-BOlp9l_E.js} +11 -11
  136. package/dist/server/assets/{mindmap-definition-VGOIOE7T-uP_bqLZ-.js → mindmap-definition-VGOIOE7T-Byc-qFo2.js} +3 -3
  137. package/dist/server/assets/{packet-DYOGHKS2-C9RhEbus.js → packet-DYOGHKS2-BiRLh9CC.js} +6 -6
  138. package/dist/server/assets/{pie-VRWISCQL-DXIjmNyN.js → pie-VRWISCQL-hgf7Lgm4.js} +6 -6
  139. package/dist/server/assets/{pieDiagram-ADFJNKIX-C2Qp43pf.js → pieDiagram-ADFJNKIX-YXV3ET4_.js} +7 -7
  140. package/dist/server/assets/{quadrantDiagram-AYHSOK5B-C9I9kDB1.js → quadrantDiagram-AYHSOK5B-r_peNHCA.js} +2 -2
  141. package/dist/server/assets/{radar-ZZBFDIW7-CEz6u4b9.js → radar-ZZBFDIW7-CGIDKJlK.js} +6 -6
  142. package/dist/server/assets/{requirementDiagram-UZGBJVZJ-DmCcKz-Y.js → requirementDiagram-UZGBJVZJ-aI3jQPLf.js} +3 -3
  143. package/dist/server/assets/{router-BlHVACji.js → router-BNIoB7QX.js} +998 -337
  144. package/dist/server/assets/{sankeyDiagram-TZEHDZUN-DM2H1xi3.js → sankeyDiagram-TZEHDZUN-B1Sb9Zvd.js} +1 -1
  145. package/dist/server/assets/{sequenceDiagram-WL72ISMW-DWDQKCiq.js → sequenceDiagram-WL72ISMW-DrJxigNy.js} +3 -3
  146. package/dist/server/assets/{square-terminal-CCwkUkGX.js → square-terminal-DWTC1p8r.js} +1 -1
  147. package/dist/server/assets/{stateDiagram-FKZM4ZOC-_4Khdh4I.js → stateDiagram-FKZM4ZOC-Dnsp85zH.js} +8 -8
  148. package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-Cos-pE9j.js → stateDiagram-v2-4FDKWEC3-C6x8SVRv.js} +4 -4
  149. package/dist/server/assets/{timeline-definition-IT6M3QCI-DeLSZGNq.js → timeline-definition-IT6M3QCI-DSIrepaO.js} +2 -2
  150. package/dist/server/assets/{treemap-GDKQZRPO-LKeqy604.js → treemap-GDKQZRPO-C9hefMmZ.js} +6 -6
  151. package/dist/server/assets/{workspace._workspaceId-C0PMWq41.js → workspace._workspaceId-BY5hpCRH.js} +2 -2
  152. package/dist/server/assets/{workspace._workspaceId.changes-CzyqOgM_.js → workspace._workspaceId.changes-CiekaeTG.js} +1 -1
  153. package/dist/server/assets/{workspace._workspaceId.code._-QG2CLJod.js → workspace._workspaceId.code._-Bi-RxK7c.js} +1 -1
  154. package/dist/server/assets/{workspace._workspaceId.code.index-CVy3VzQK.js → workspace._workspaceId.code.index-DRR8qo6z.js} +1 -1
  155. package/dist/server/assets/{workspace._workspaceId.index-LBt-0JYY.js → workspace._workspaceId.index-BRFgw3FA.js} +1 -1
  156. package/dist/server/assets/{workspace._workspaceId.terminal-jMK4pgOD.js → workspace._workspaceId.terminal-BhyASMi7.js} +2 -2
  157. package/dist/server/assets/{xychartDiagram-PRI3JC2R-DHrKht9t.js → xychartDiagram-PRI3JC2R-0ftH7hFg.js} +2 -2
  158. package/dist/server/server.js +2 -2
  159. package/dist/start-server.mjs +66 -10
  160. package/package.json +5 -5
  161. package/dist/client/assets/channel-BgmjEVPj.js +0 -1
  162. package/dist/client/assets/classDiagram-2ON5EDUG-BKsagNLe.js +0 -1
  163. package/dist/client/assets/classDiagram-v2-WZHVMYZB-BKsagNLe.js +0 -1
  164. package/dist/client/assets/clone-CBcd3GIz.js +0 -1
  165. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-Cgq8vGxD.js +0 -1
  166. package/dist/client/assets/workspace._workspaceId.code-DP6cBpn1.js +0 -1
@@ -1093,44 +1093,44 @@ const createLucideIcon = (iconName, iconNode) => {
1093
1093
  Component.displayName = toPascalCase(iconName);
1094
1094
  return Component;
1095
1095
  };
1096
- const __iconNode$1x = [
1096
+ const __iconNode$1y = [
1097
1097
  ["path", { d: "M12 17V3", key: "1cwfxf" }],
1098
1098
  ["path", { d: "m6 11 6 6 6-6", key: "12ii2o" }],
1099
1099
  ["path", { d: "M19 21H5", key: "150jfl" }]
1100
1100
  ];
1101
- const ArrowDownToLine = createLucideIcon("arrow-down-to-line", __iconNode$1x);
1102
- const __iconNode$1w = [
1101
+ const ArrowDownToLine = createLucideIcon("arrow-down-to-line", __iconNode$1y);
1102
+ const __iconNode$1x = [
1103
1103
  ["path", { d: "M12 5v14", key: "s699le" }],
1104
1104
  ["path", { d: "m19 12-7 7-7-7", key: "1idqje" }]
1105
1105
  ];
1106
- const ArrowDown = createLucideIcon("arrow-down", __iconNode$1w);
1107
- const __iconNode$1v = [
1106
+ const ArrowDown = createLucideIcon("arrow-down", __iconNode$1x);
1107
+ const __iconNode$1w = [
1108
1108
  ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
1109
1109
  ["path", { d: "M19 12H5", key: "x3x0zl" }]
1110
1110
  ];
1111
- const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1v);
1112
- const __iconNode$1u = [
1111
+ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1w);
1112
+ const __iconNode$1v = [
1113
1113
  ["path", { d: "M5 12h14", key: "1ays0h" }],
1114
1114
  ["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
1115
1115
  ];
1116
- const ArrowRight = createLucideIcon("arrow-right", __iconNode$1u);
1117
- const __iconNode$1t = [
1116
+ const ArrowRight = createLucideIcon("arrow-right", __iconNode$1v);
1117
+ const __iconNode$1u = [
1118
1118
  ["path", { d: "m18 9-6-6-6 6", key: "kcunyi" }],
1119
1119
  ["path", { d: "M12 3v14", key: "7cf3v8" }],
1120
1120
  ["path", { d: "M5 21h14", key: "11awu3" }]
1121
1121
  ];
1122
- const ArrowUpFromLine = createLucideIcon("arrow-up-from-line", __iconNode$1t);
1123
- const __iconNode$1s = [
1122
+ const ArrowUpFromLine = createLucideIcon("arrow-up-from-line", __iconNode$1u);
1123
+ const __iconNode$1t = [
1124
1124
  ["path", { d: "m5 12 7-7 7 7", key: "hav0vg" }],
1125
1125
  ["path", { d: "M12 19V5", key: "x0mq9r" }]
1126
1126
  ];
1127
- const ArrowUp = createLucideIcon("arrow-up", __iconNode$1s);
1128
- const __iconNode$1r = [
1127
+ const ArrowUp = createLucideIcon("arrow-up", __iconNode$1t);
1128
+ const __iconNode$1s = [
1129
1129
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1130
1130
  ["path", { d: "M4.929 4.929 19.07 19.071", key: "196cmz" }]
1131
1131
  ];
1132
- const Ban = createLucideIcon("ban", __iconNode$1r);
1133
- const __iconNode$1q = [
1132
+ const Ban = createLucideIcon("ban", __iconNode$1s);
1133
+ const __iconNode$1r = [
1134
1134
  ["path", { d: "M12 8V4H8", key: "hb8ula" }],
1135
1135
  ["rect", { width: "16", height: "12", x: "4", y: "8", rx: "2", key: "enze0r" }],
1136
1136
  ["path", { d: "M2 14h2", key: "vft8re" }],
@@ -1138,8 +1138,8 @@ const __iconNode$1q = [
1138
1138
  ["path", { d: "M15 13v2", key: "1xurst" }],
1139
1139
  ["path", { d: "M9 13v2", key: "rq6x2g" }]
1140
1140
  ];
1141
- const Bot = createLucideIcon("bot", __iconNode$1q);
1142
- const __iconNode$1p = [
1141
+ const Bot = createLucideIcon("bot", __iconNode$1r);
1142
+ const __iconNode$1q = [
1143
1143
  [
1144
1144
  "path",
1145
1145
  { d: "M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1", key: "ezmyqa" }
@@ -1152,62 +1152,62 @@ const __iconNode$1p = [
1152
1152
  }
1153
1153
  ]
1154
1154
  ];
1155
- const Braces = createLucideIcon("braces", __iconNode$1p);
1156
- const __iconNode$1o = [
1155
+ const Braces = createLucideIcon("braces", __iconNode$1q);
1156
+ const __iconNode$1p = [
1157
1157
  ["path", { d: "m2 16 4.039-9.69a.5.5 0 0 1 .923 0L11 16", key: "d5nyq2" }],
1158
1158
  ["path", { d: "M22 9v7", key: "pvm9v3" }],
1159
1159
  ["path", { d: "M3.304 13h6.392", key: "1q3zxz" }],
1160
1160
  ["circle", { cx: "18.5", cy: "12.5", r: "3.5", key: "z97x68" }]
1161
1161
  ];
1162
- const CaseSensitive = createLucideIcon("case-sensitive", __iconNode$1o);
1163
- const __iconNode$1n = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
1164
- const Check = createLucideIcon("check", __iconNode$1n);
1165
- const __iconNode$1m = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
1166
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$1m);
1167
- const __iconNode$1l = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
1168
- const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1l);
1169
- const __iconNode$1k = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
1170
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$1k);
1171
- const __iconNode$1j = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
1172
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$1j);
1173
- const __iconNode$1i = [
1162
+ const CaseSensitive = createLucideIcon("case-sensitive", __iconNode$1p);
1163
+ const __iconNode$1o = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
1164
+ const Check = createLucideIcon("check", __iconNode$1o);
1165
+ const __iconNode$1n = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
1166
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$1n);
1167
+ const __iconNode$1m = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
1168
+ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1m);
1169
+ const __iconNode$1l = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
1170
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$1l);
1171
+ const __iconNode$1k = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
1172
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$1k);
1173
+ const __iconNode$1j = [
1174
1174
  ["path", { d: "m7 20 5-5 5 5", key: "13a0gw" }],
1175
1175
  ["path", { d: "m7 4 5 5 5-5", key: "1kwcof" }]
1176
1176
  ];
1177
- const ChevronsDownUp = createLucideIcon("chevrons-down-up", __iconNode$1i);
1178
- const __iconNode$1h = [
1177
+ const ChevronsDownUp = createLucideIcon("chevrons-down-up", __iconNode$1j);
1178
+ const __iconNode$1i = [
1179
1179
  ["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
1180
1180
  ["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
1181
1181
  ];
1182
- const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1h);
1183
- const __iconNode$1g = [
1182
+ const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1i);
1183
+ const __iconNode$1h = [
1184
1184
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1185
1185
  ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
1186
1186
  ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
1187
1187
  ];
1188
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$1g);
1189
- const __iconNode$1f = [
1188
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$1h);
1189
+ const __iconNode$1g = [
1190
1190
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1191
1191
  ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
1192
1192
  ];
1193
- const CircleCheck = createLucideIcon("circle-check", __iconNode$1f);
1194
- const __iconNode$1e = [
1193
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$1g);
1194
+ const __iconNode$1f = [
1195
1195
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1196
1196
  ["path", { d: "m15 9-6 6", key: "1uzhvr" }],
1197
1197
  ["path", { d: "m9 9 6 6", key: "z0biqf" }]
1198
1198
  ];
1199
- const CircleX = createLucideIcon("circle-x", __iconNode$1e);
1200
- const __iconNode$1d = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
1201
- const Circle = createLucideIcon("circle", __iconNode$1d);
1202
- const __iconNode$1c = [
1199
+ const CircleX = createLucideIcon("circle-x", __iconNode$1f);
1200
+ const __iconNode$1e = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
1201
+ const Circle = createLucideIcon("circle", __iconNode$1e);
1202
+ const __iconNode$1d = [
1203
1203
  ["path", { d: "M11 14h10", key: "1w8e9d" }],
1204
1204
  ["path", { d: "M16 4h2a2 2 0 0 1 2 2v1.344", key: "1e62lh" }],
1205
1205
  ["path", { d: "m17 18 4-4-4-4", key: "z2g111" }],
1206
1206
  ["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" }],
1207
1207
  ["rect", { x: "8", y: "2", width: "8", height: "4", rx: "1", key: "ublpy" }]
1208
1208
  ];
1209
- const ClipboardPaste = createLucideIcon("clipboard-paste", __iconNode$1c);
1210
- const __iconNode$1b = [
1209
+ const ClipboardPaste = createLucideIcon("clipboard-paste", __iconNode$1d);
1210
+ const __iconNode$1c = [
1211
1211
  ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
1212
1212
  [
1213
1213
  "path",
@@ -1217,59 +1217,59 @@ const __iconNode$1b = [
1217
1217
  }
1218
1218
  ]
1219
1219
  ];
1220
- const Clipboard = createLucideIcon("clipboard", __iconNode$1b);
1221
- const __iconNode$1a = [
1220
+ const Clipboard = createLucideIcon("clipboard", __iconNode$1c);
1221
+ const __iconNode$1b = [
1222
1222
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1223
1223
  ["path", { d: "M12 6v6l4 2", key: "mmk7yg" }]
1224
1224
  ];
1225
- const Clock = createLucideIcon("clock", __iconNode$1a);
1226
- const __iconNode$19 = [
1225
+ const Clock = createLucideIcon("clock", __iconNode$1b);
1226
+ const __iconNode$1a = [
1227
1227
  ["path", { d: "m18 16 4-4-4-4", key: "1inbqp" }],
1228
1228
  ["path", { d: "m6 8-4 4 4 4", key: "15zrgr" }],
1229
1229
  ["path", { d: "m14.5 4-5 16", key: "e7oirm" }]
1230
1230
  ];
1231
- const CodeXml = createLucideIcon("code-xml", __iconNode$19);
1232
- const __iconNode$18 = [
1231
+ const CodeXml = createLucideIcon("code-xml", __iconNode$1a);
1232
+ const __iconNode$19 = [
1233
1233
  ["path", { d: "m16 18 6-6-6-6", key: "eg8j8" }],
1234
1234
  ["path", { d: "m8 6-6 6 6 6", key: "ppft3o" }]
1235
1235
  ];
1236
- const Code = createLucideIcon("code", __iconNode$18);
1237
- const __iconNode$17 = [
1236
+ const Code = createLucideIcon("code", __iconNode$19);
1237
+ const __iconNode$18 = [
1238
1238
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
1239
1239
  ["path", { d: "M12 3v18", key: "108xh3" }]
1240
1240
  ];
1241
- const Columns2 = createLucideIcon("columns-2", __iconNode$17);
1242
- const __iconNode$16 = [
1241
+ const Columns2 = createLucideIcon("columns-2", __iconNode$18);
1242
+ const __iconNode$17 = [
1243
1243
  [
1244
1244
  "path",
1245
1245
  { 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" }
1246
1246
  ]
1247
1247
  ];
1248
- const Command$1 = createLucideIcon("command", __iconNode$16);
1249
- const __iconNode$15 = [
1248
+ const Command$1 = createLucideIcon("command", __iconNode$17);
1249
+ const __iconNode$16 = [
1250
1250
  ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
1251
1251
  ["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" }]
1252
1252
  ];
1253
- const Copy = createLucideIcon("copy", __iconNode$15);
1254
- const __iconNode$14 = [
1253
+ const Copy = createLucideIcon("copy", __iconNode$16);
1254
+ const __iconNode$15 = [
1255
1255
  ["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
1256
1256
  ["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
1257
1257
  ["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
1258
1258
  ];
1259
- const Database = createLucideIcon("database", __iconNode$14);
1260
- const __iconNode$13 = [
1259
+ const Database = createLucideIcon("database", __iconNode$15);
1260
+ const __iconNode$14 = [
1261
1261
  ["path", { d: "M12 15V3", key: "m9g1x1" }],
1262
1262
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
1263
1263
  ["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
1264
1264
  ];
1265
- const Download = createLucideIcon("download", __iconNode$13);
1266
- const __iconNode$12 = [
1265
+ const Download = createLucideIcon("download", __iconNode$14);
1266
+ const __iconNode$13 = [
1267
1267
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
1268
1268
  ["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
1269
1269
  ["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
1270
1270
  ];
1271
- const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$12);
1272
- const __iconNode$11 = [
1271
+ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$13);
1272
+ const __iconNode$12 = [
1273
1273
  ["path", { d: "m15 15 6 6", key: "1s409w" }],
1274
1274
  ["path", { d: "m15 9 6-6", key: "ko1vev" }],
1275
1275
  ["path", { d: "M21 16v5h-5", key: "1ck2sf" }],
@@ -1279,14 +1279,14 @@ const __iconNode$11 = [
1279
1279
  ["path", { d: "M3 8V3h5", key: "1ln10m" }],
1280
1280
  ["path", { d: "M9 9 3 3", key: "v551iv" }]
1281
1281
  ];
1282
- const Expand = createLucideIcon("expand", __iconNode$11);
1283
- const __iconNode$10 = [
1282
+ const Expand = createLucideIcon("expand", __iconNode$12);
1283
+ const __iconNode$11 = [
1284
1284
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
1285
1285
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
1286
1286
  ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
1287
1287
  ];
1288
- const ExternalLink$1 = createLucideIcon("external-link", __iconNode$10);
1289
- const __iconNode$$ = [
1288
+ const ExternalLink$1 = createLucideIcon("external-link", __iconNode$11);
1289
+ const __iconNode$10 = [
1290
1290
  [
1291
1291
  "path",
1292
1292
  {
@@ -1296,8 +1296,8 @@ const __iconNode$$ = [
1296
1296
  ],
1297
1297
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
1298
1298
  ];
1299
- const Eye = createLucideIcon("eye", __iconNode$$);
1300
- const __iconNode$_ = [
1299
+ const Eye = createLucideIcon("eye", __iconNode$10);
1300
+ const __iconNode$$ = [
1301
1301
  [
1302
1302
  "path",
1303
1303
  {
@@ -1315,8 +1315,8 @@ const __iconNode$_ = [
1315
1315
  { d: "M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1", key: "mpwhp6" }
1316
1316
  ]
1317
1317
  ];
1318
- const FileBraces = createLucideIcon("file-braces", __iconNode$_);
1319
- const __iconNode$Z = [
1318
+ const FileBraces = createLucideIcon("file-braces", __iconNode$$);
1319
+ const __iconNode$_ = [
1320
1320
  [
1321
1321
  "path",
1322
1322
  {
@@ -1328,8 +1328,8 @@ const __iconNode$Z = [
1328
1328
  ["path", { d: "m5 16-3 3 3 3", key: "331omg" }],
1329
1329
  ["path", { d: "m9 22 3-3-3-3", key: "lsp7cz" }]
1330
1330
  ];
1331
- const FileCodeCorner = createLucideIcon("file-code-corner", __iconNode$Z);
1332
- const __iconNode$Y = [
1331
+ const FileCodeCorner = createLucideIcon("file-code-corner", __iconNode$_);
1332
+ const __iconNode$Z = [
1333
1333
  [
1334
1334
  "path",
1335
1335
  {
@@ -1340,8 +1340,8 @@ const __iconNode$Y = [
1340
1340
  ["path", { d: "M12 9v4", key: "juzpu7" }],
1341
1341
  ["path", { d: "M12 17h.01", key: "p32p05" }]
1342
1342
  ];
1343
- const FileExclamationPoint = createLucideIcon("file-exclamation-point", __iconNode$Y);
1344
- const __iconNode$X = [
1343
+ const FileExclamationPoint = createLucideIcon("file-exclamation-point", __iconNode$Z);
1344
+ const __iconNode$Y = [
1345
1345
  [
1346
1346
  "path",
1347
1347
  {
@@ -1353,8 +1353,8 @@ const __iconNode$X = [
1353
1353
  ["path", { d: "M2 15h10", key: "jfw4w8" }],
1354
1354
  ["path", { d: "m9 18 3-3-3-3", key: "112psh" }]
1355
1355
  ];
1356
- const FileInput = createLucideIcon("file-input", __iconNode$X);
1357
- const __iconNode$W = [
1356
+ const FileInput = createLucideIcon("file-input", __iconNode$Y);
1357
+ const __iconNode$X = [
1358
1358
  [
1359
1359
  "path",
1360
1360
  {
@@ -1366,8 +1366,8 @@ const __iconNode$W = [
1366
1366
  ["path", { d: "M9 15h6", key: "cctwl0" }],
1367
1367
  ["path", { d: "M12 18v-6", key: "17g6i2" }]
1368
1368
  ];
1369
- const FilePlus = createLucideIcon("file-plus", __iconNode$W);
1370
- const __iconNode$V = [
1369
+ const FilePlus = createLucideIcon("file-plus", __iconNode$X);
1370
+ const __iconNode$W = [
1371
1371
  [
1372
1372
  "path",
1373
1373
  {
@@ -1380,8 +1380,8 @@ const __iconNode$V = [
1380
1380
  ["path", { d: "M16 13H8", key: "t4e002" }],
1381
1381
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
1382
1382
  ];
1383
- const FileText = createLucideIcon("file-text", __iconNode$V);
1384
- const __iconNode$U = [
1383
+ const FileText = createLucideIcon("file-text", __iconNode$W);
1384
+ const __iconNode$V = [
1385
1385
  [
1386
1386
  "path",
1387
1387
  {
@@ -1391,8 +1391,8 @@ const __iconNode$U = [
1391
1391
  ],
1392
1392
  ["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }]
1393
1393
  ];
1394
- const File = createLucideIcon("file", __iconNode$U);
1395
- const __iconNode$T = [
1394
+ const File = createLucideIcon("file", __iconNode$V);
1395
+ const __iconNode$U = [
1396
1396
  [
1397
1397
  "path",
1398
1398
  {
@@ -1401,8 +1401,8 @@ const __iconNode$T = [
1401
1401
  }
1402
1402
  ]
1403
1403
  ];
1404
- const FolderOpen = createLucideIcon("folder-open", __iconNode$T);
1405
- const __iconNode$S = [
1404
+ const FolderOpen = createLucideIcon("folder-open", __iconNode$U);
1405
+ const __iconNode$T = [
1406
1406
  ["path", { d: "M12 10v6", key: "1bos4e" }],
1407
1407
  ["path", { d: "M9 13h6", key: "1uhe8q" }],
1408
1408
  [
@@ -1413,8 +1413,8 @@ const __iconNode$S = [
1413
1413
  }
1414
1414
  ]
1415
1415
  ];
1416
- const FolderPlus = createLucideIcon("folder-plus", __iconNode$S);
1417
- const __iconNode$R = [
1416
+ const FolderPlus = createLucideIcon("folder-plus", __iconNode$T);
1417
+ const __iconNode$S = [
1418
1418
  [
1419
1419
  "path",
1420
1420
  {
@@ -1423,8 +1423,8 @@ const __iconNode$R = [
1423
1423
  }
1424
1424
  ]
1425
1425
  ];
1426
- const Folder = createLucideIcon("folder", __iconNode$R);
1427
- const __iconNode$Q = [
1426
+ const Folder = createLucideIcon("folder", __iconNode$S);
1427
+ const __iconNode$R = [
1428
1428
  [
1429
1429
  "path",
1430
1430
  {
@@ -1437,39 +1437,39 @@ const __iconNode$Q = [
1437
1437
  { d: "M3 8.268a2 2 0 0 0-1 1.738V19a2 2 0 0 0 2 2h11a2 2 0 0 0 1.732-1", key: "yxbcw3" }
1438
1438
  ]
1439
1439
  ];
1440
- const Folders = createLucideIcon("folders", __iconNode$Q);
1441
- const __iconNode$P = [
1440
+ const Folders = createLucideIcon("folders", __iconNode$R);
1441
+ const __iconNode$Q = [
1442
1442
  ["path", { d: "M15 6a9 9 0 0 0-9 9V3", key: "1cii5b" }],
1443
1443
  ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
1444
1444
  ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }]
1445
1445
  ];
1446
- const GitBranch = createLucideIcon("git-branch", __iconNode$P);
1447
- const __iconNode$O = [
1446
+ const GitBranch = createLucideIcon("git-branch", __iconNode$Q);
1447
+ const __iconNode$P = [
1448
1448
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }],
1449
1449
  ["line", { x1: "3", x2: "9", y1: "12", y2: "12", key: "1dyftd" }],
1450
1450
  ["line", { x1: "15", x2: "21", y1: "12", y2: "12", key: "oup4p8" }]
1451
1451
  ];
1452
- const GitCommitHorizontal = createLucideIcon("git-commit-horizontal", __iconNode$O);
1453
- const __iconNode$N = [
1452
+ const GitCommitHorizontal = createLucideIcon("git-commit-horizontal", __iconNode$P);
1453
+ const __iconNode$O = [
1454
1454
  ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }],
1455
1455
  ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
1456
1456
  ["path", { d: "M13 6h3a2 2 0 0 1 2 2v7", key: "1yeb86" }],
1457
1457
  ["path", { d: "M11 18H8a2 2 0 0 1-2-2V9", key: "19pyzm" }]
1458
1458
  ];
1459
- const GitCompare = createLucideIcon("git-compare", __iconNode$N);
1460
- const __iconNode$M = [
1459
+ const GitCompare = createLucideIcon("git-compare", __iconNode$O);
1460
+ const __iconNode$N = [
1461
1461
  ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }],
1462
1462
  ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
1463
1463
  ["path", { d: "M6 21V9a9 9 0 0 0 9 9", key: "7kw0sc" }]
1464
1464
  ];
1465
- const GitMerge = createLucideIcon("git-merge", __iconNode$M);
1466
- const __iconNode$L = [
1465
+ const GitMerge = createLucideIcon("git-merge", __iconNode$N);
1466
+ const __iconNode$M = [
1467
1467
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1468
1468
  ["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
1469
1469
  ["path", { d: "M2 12h20", key: "9i4pu4" }]
1470
1470
  ];
1471
- const Globe = createLucideIcon("globe", __iconNode$L);
1472
- const __iconNode$K = [
1471
+ const Globe = createLucideIcon("globe", __iconNode$M);
1472
+ const __iconNode$L = [
1473
1473
  ["circle", { cx: "12", cy: "9", r: "1", key: "124mty" }],
1474
1474
  ["circle", { cx: "19", cy: "9", r: "1", key: "1ruzo2" }],
1475
1475
  ["circle", { cx: "5", cy: "9", r: "1", key: "1a8b28" }],
@@ -1477,14 +1477,14 @@ const __iconNode$K = [
1477
1477
  ["circle", { cx: "19", cy: "15", r: "1", key: "1a92ep" }],
1478
1478
  ["circle", { cx: "5", cy: "15", r: "1", key: "5r1jwy" }]
1479
1479
  ];
1480
- const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$K);
1481
- const __iconNode$J = [
1480
+ const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$L);
1481
+ const __iconNode$K = [
1482
1482
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
1483
1483
  ["path", { d: "M3 3v5h5", key: "1xhq8a" }],
1484
1484
  ["path", { d: "M12 7v5l4 2", key: "1fdv2h" }]
1485
1485
  ];
1486
- const History = createLucideIcon("history", __iconNode$J);
1487
- const __iconNode$I = [
1486
+ const History = createLucideIcon("history", __iconNode$K);
1487
+ const __iconNode$J = [
1488
1488
  ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }],
1489
1489
  ["path", { d: "M10.41 10.41a2 2 0 1 1-2.83-2.83", key: "1bzlo9" }],
1490
1490
  ["line", { x1: "13.5", x2: "6", y1: "13.5", y2: "21", key: "1q0aeu" }],
@@ -1498,31 +1498,31 @@ const __iconNode$I = [
1498
1498
  ],
1499
1499
  ["path", { d: "M21 15V5a2 2 0 0 0-2-2H9", key: "43el77" }]
1500
1500
  ];
1501
- const ImageOff = createLucideIcon("image-off", __iconNode$I);
1502
- const __iconNode$H = [
1501
+ const ImageOff = createLucideIcon("image-off", __iconNode$J);
1502
+ const __iconNode$I = [
1503
1503
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
1504
1504
  ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }],
1505
1505
  ["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }]
1506
1506
  ];
1507
- const Image$1 = createLucideIcon("image", __iconNode$H);
1508
- const __iconNode$G = [
1507
+ const Image$1 = createLucideIcon("image", __iconNode$I);
1508
+ const __iconNode$H = [
1509
1509
  ["path", { d: "M16 5H3", key: "m91uny" }],
1510
1510
  ["path", { d: "M11 12H3", key: "51ecnj" }],
1511
1511
  ["path", { d: "M16 19H3", key: "zzsher" }],
1512
1512
  ["path", { d: "M21 12h-6", key: "bt1uis" }]
1513
1513
  ];
1514
- const ListMinus = createLucideIcon("list-minus", __iconNode$G);
1515
- const __iconNode$F = [
1514
+ const ListMinus = createLucideIcon("list-minus", __iconNode$H);
1515
+ const __iconNode$G = [
1516
1516
  ["path", { d: "M13 5h8", key: "a7qcls" }],
1517
1517
  ["path", { d: "M13 12h8", key: "h98zly" }],
1518
1518
  ["path", { d: "M13 19h8", key: "c3s6r1" }],
1519
1519
  ["path", { d: "m3 17 2 2 4-4", key: "1jhpwq" }],
1520
1520
  ["rect", { x: "3", y: "4", width: "6", height: "6", rx: "1", key: "cif1o7" }]
1521
1521
  ];
1522
- const ListTodo = createLucideIcon("list-todo", __iconNode$F);
1523
- const __iconNode$E = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
1524
- const LoaderCircle = createLucideIcon("loader-circle", __iconNode$E);
1525
- const __iconNode$D = [
1522
+ const ListTodo = createLucideIcon("list-todo", __iconNode$G);
1523
+ const __iconNode$F = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
1524
+ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$F);
1525
+ const __iconNode$E = [
1526
1526
  ["path", { d: "M12 2v4", key: "3427ic" }],
1527
1527
  ["path", { d: "m16.2 7.8 2.9-2.9", key: "r700ao" }],
1528
1528
  ["path", { d: "M18 12h4", key: "wj9ykh" }],
@@ -1532,26 +1532,26 @@ const __iconNode$D = [
1532
1532
  ["path", { d: "M2 12h4", key: "j09sii" }],
1533
1533
  ["path", { d: "m4.9 4.9 2.9 2.9", key: "giyufr" }]
1534
1534
  ];
1535
- const Loader = createLucideIcon("loader", __iconNode$D);
1536
- const __iconNode$C = [
1535
+ const Loader = createLucideIcon("loader", __iconNode$E);
1536
+ const __iconNode$D = [
1537
1537
  ["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }],
1538
1538
  ["path", { d: "M7 11V7a5 5 0 0 1 10 0v4", key: "fwvmzm" }]
1539
1539
  ];
1540
- const Lock = createLucideIcon("lock", __iconNode$C);
1541
- const __iconNode$B = [
1540
+ const Lock = createLucideIcon("lock", __iconNode$D);
1541
+ const __iconNode$C = [
1542
1542
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
1543
1543
  ["path", { d: "m21 3-7 7", key: "1l2asr" }],
1544
1544
  ["path", { d: "m3 21 7-7", key: "tjx5ai" }],
1545
1545
  ["path", { d: "M9 21H3v-6", key: "wtvkvv" }]
1546
1546
  ];
1547
- const Maximize2 = createLucideIcon("maximize-2", __iconNode$B);
1548
- const __iconNode$A = [
1547
+ const Maximize2 = createLucideIcon("maximize-2", __iconNode$C);
1548
+ const __iconNode$B = [
1549
1549
  ["path", { d: "M4 5h16", key: "1tepv9" }],
1550
1550
  ["path", { d: "M4 12h16", key: "1lakjw" }],
1551
1551
  ["path", { d: "M4 19h16", key: "1djgab" }]
1552
1552
  ];
1553
- const Menu$1 = createLucideIcon("menu", __iconNode$A);
1554
- const __iconNode$z = [
1553
+ const Menu$1 = createLucideIcon("menu", __iconNode$B);
1554
+ const __iconNode$A = [
1555
1555
  [
1556
1556
  "path",
1557
1557
  {
@@ -1560,21 +1560,21 @@ const __iconNode$z = [
1560
1560
  }
1561
1561
  ]
1562
1562
  ];
1563
- const MessageSquare = createLucideIcon("message-square", __iconNode$z);
1564
- const __iconNode$y = [
1563
+ const MessageSquare = createLucideIcon("message-square", __iconNode$A);
1564
+ const __iconNode$z = [
1565
1565
  ["path", { d: "m14 10 7-7", key: "oa77jy" }],
1566
1566
  ["path", { d: "M20 10h-6V4", key: "mjg0md" }],
1567
1567
  ["path", { d: "m3 21 7-7", key: "tjx5ai" }],
1568
1568
  ["path", { d: "M4 14h6v6", key: "rmj7iw" }]
1569
1569
  ];
1570
- const Minimize2 = createLucideIcon("minimize-2", __iconNode$y);
1571
- const __iconNode$x = [
1570
+ const Minimize2 = createLucideIcon("minimize-2", __iconNode$z);
1571
+ const __iconNode$y = [
1572
1572
  ["path", { d: "M9 18V5l12-2v13", key: "1jmyc2" }],
1573
1573
  ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }],
1574
1574
  ["circle", { cx: "18", cy: "16", r: "3", key: "1hluhg" }]
1575
1575
  ];
1576
- const Music = createLucideIcon("music", __iconNode$x);
1577
- const __iconNode$w = [
1576
+ const Music = createLucideIcon("music", __iconNode$y);
1577
+ const __iconNode$x = [
1578
1578
  [
1579
1579
  "path",
1580
1580
  {
@@ -1586,18 +1586,18 @@ const __iconNode$w = [
1586
1586
  ["polyline", { points: "3.29 7 12 12 20.71 7", key: "ousv84" }],
1587
1587
  ["path", { d: "m7.5 4.27 9 5.15", key: "1c824w" }]
1588
1588
  ];
1589
- const Package = createLucideIcon("package", __iconNode$w);
1590
- const __iconNode$v = [
1589
+ const Package = createLucideIcon("package", __iconNode$x);
1590
+ const __iconNode$w = [
1591
1591
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
1592
1592
  ["path", { d: "M9 3v18", key: "fh3hqa" }]
1593
1593
  ];
1594
- const PanelLeft = createLucideIcon("panel-left", __iconNode$v);
1595
- const __iconNode$u = [
1594
+ const PanelLeft = createLucideIcon("panel-left", __iconNode$w);
1595
+ const __iconNode$v = [
1596
1596
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
1597
1597
  ["path", { d: "M3 9h18", key: "1pudct" }]
1598
1598
  ];
1599
- const PanelTop = createLucideIcon("panel-top", __iconNode$u);
1600
- const __iconNode$t = [
1599
+ const PanelTop = createLucideIcon("panel-top", __iconNode$v);
1600
+ const __iconNode$u = [
1601
1601
  [
1602
1602
  "path",
1603
1603
  {
@@ -1606,8 +1606,8 @@ const __iconNode$t = [
1606
1606
  }
1607
1607
  ]
1608
1608
  ];
1609
- const Paperclip = createLucideIcon("paperclip", __iconNode$t);
1610
- const __iconNode$s = [
1609
+ const Paperclip = createLucideIcon("paperclip", __iconNode$u);
1610
+ const __iconNode$t = [
1611
1611
  [
1612
1612
  "path",
1613
1613
  {
@@ -1617,8 +1617,8 @@ const __iconNode$s = [
1617
1617
  ],
1618
1618
  ["path", { d: "m15 5 4 4", key: "1mk7zo" }]
1619
1619
  ];
1620
- const Pencil = createLucideIcon("pencil", __iconNode$s);
1621
- const __iconNode$r = [
1620
+ const Pencil = createLucideIcon("pencil", __iconNode$t);
1621
+ const __iconNode$s = [
1622
1622
  ["path", { d: "M12 17v5", key: "bb1du9" }],
1623
1623
  ["path", { d: "M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89", key: "znwnzq" }],
1624
1624
  ["path", { d: "m2 2 20 20", key: "1ooewy" }],
@@ -1630,8 +1630,8 @@ const __iconNode$r = [
1630
1630
  }
1631
1631
  ]
1632
1632
  ];
1633
- const PinOff = createLucideIcon("pin-off", __iconNode$r);
1634
- const __iconNode$q = [
1633
+ const PinOff = createLucideIcon("pin-off", __iconNode$s);
1634
+ const __iconNode$r = [
1635
1635
  ["path", { d: "M12 17v5", key: "bb1du9" }],
1636
1636
  [
1637
1637
  "path",
@@ -1641,8 +1641,8 @@ const __iconNode$q = [
1641
1641
  }
1642
1642
  ]
1643
1643
  ];
1644
- const Pin = createLucideIcon("pin", __iconNode$q);
1645
- const __iconNode$p = [
1644
+ const Pin = createLucideIcon("pin", __iconNode$r);
1645
+ const __iconNode$q = [
1646
1646
  [
1647
1647
  "path",
1648
1648
  {
@@ -1651,20 +1651,20 @@ const __iconNode$p = [
1651
1651
  }
1652
1652
  ]
1653
1653
  ];
1654
- const Play = createLucideIcon("play", __iconNode$p);
1655
- const __iconNode$o = [
1654
+ const Play = createLucideIcon("play", __iconNode$q);
1655
+ const __iconNode$p = [
1656
1656
  ["path", { d: "M5 12h14", key: "1ays0h" }],
1657
1657
  ["path", { d: "M12 5v14", key: "s699le" }]
1658
1658
  ];
1659
- const Plus = createLucideIcon("plus", __iconNode$o);
1660
- const __iconNode$n = [
1659
+ const Plus = createLucideIcon("plus", __iconNode$p);
1660
+ const __iconNode$o = [
1661
1661
  ["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
1662
1662
  ["path", { d: "M21 3v5h-5", key: "1q7to0" }],
1663
1663
  ["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }],
1664
1664
  ["path", { d: "M8 16H3v5", key: "1cv678" }]
1665
1665
  ];
1666
- const RefreshCw = createLucideIcon("refresh-cw", __iconNode$n);
1667
- const __iconNode$m = [
1666
+ const RefreshCw = createLucideIcon("refresh-cw", __iconNode$o);
1667
+ const __iconNode$n = [
1668
1668
  ["path", { d: "M17 3v10", key: "15fgeh" }],
1669
1669
  ["path", { d: "m12.67 5.5 8.66 5", key: "1gpheq" }],
1670
1670
  ["path", { d: "m12.67 10.5 8.66-5", key: "1dkfa6" }],
@@ -1673,23 +1673,23 @@ const __iconNode$m = [
1673
1673
  { d: "M9 17a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-2z", key: "swwfx4" }
1674
1674
  ]
1675
1675
  ];
1676
- const Regex = createLucideIcon("regex", __iconNode$m);
1677
- const __iconNode$l = [
1676
+ const Regex = createLucideIcon("regex", __iconNode$n);
1677
+ const __iconNode$m = [
1678
1678
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
1679
1679
  ["path", { d: "M3 3v5h5", key: "1xhq8a" }]
1680
1680
  ];
1681
- const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$l);
1682
- const __iconNode$k = [
1681
+ const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$m);
1682
+ const __iconNode$l = [
1683
1683
  ["path", { d: "M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8", key: "1p45f6" }],
1684
1684
  ["path", { d: "M21 3v5h-5", key: "1q7to0" }]
1685
1685
  ];
1686
- const RotateCw = createLucideIcon("rotate-cw", __iconNode$k);
1687
- const __iconNode$j = [
1686
+ const RotateCw = createLucideIcon("rotate-cw", __iconNode$l);
1687
+ const __iconNode$k = [
1688
1688
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
1689
1689
  ["path", { d: "M3 12h18", key: "1i2n21" }]
1690
1690
  ];
1691
- const Rows2 = createLucideIcon("rows-2", __iconNode$j);
1692
- const __iconNode$i = [
1691
+ const Rows2 = createLucideIcon("rows-2", __iconNode$k);
1692
+ const __iconNode$j = [
1693
1693
  [
1694
1694
  "path",
1695
1695
  {
@@ -1700,16 +1700,16 @@ const __iconNode$i = [
1700
1700
  ["path", { d: "M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7", key: "1ydtos" }],
1701
1701
  ["path", { d: "M7 3v4a1 1 0 0 0 1 1h7", key: "t51u73" }]
1702
1702
  ];
1703
- const Save = createLucideIcon("save", __iconNode$i);
1704
- const __iconNode$h = [
1703
+ const Save = createLucideIcon("save", __iconNode$j);
1704
+ const __iconNode$i = [
1705
1705
  ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
1706
1706
  ["path", { d: "M8.12 8.12 12 12", key: "1alkpv" }],
1707
1707
  ["path", { d: "M20 4 8.12 15.88", key: "xgtan2" }],
1708
1708
  ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }],
1709
1709
  ["path", { d: "M14.8 14.8 20 20", key: "ptml3r" }]
1710
1710
  ];
1711
- const Scissors = createLucideIcon("scissors", __iconNode$h);
1712
- const __iconNode$g = [
1711
+ const Scissors = createLucideIcon("scissors", __iconNode$i);
1712
+ const __iconNode$h = [
1713
1713
  ["path", { d: "M15 12h-5", key: "r7krc0" }],
1714
1714
  ["path", { d: "M15 8h-5", key: "1khuty" }],
1715
1715
  ["path", { d: "M19 17V5a2 2 0 0 0-2-2H4", key: "zz82l3" }],
@@ -1721,13 +1721,13 @@ const __iconNode$g = [
1721
1721
  }
1722
1722
  ]
1723
1723
  ];
1724
- const ScrollText = createLucideIcon("scroll-text", __iconNode$g);
1725
- const __iconNode$f = [
1724
+ const ScrollText = createLucideIcon("scroll-text", __iconNode$h);
1725
+ const __iconNode$g = [
1726
1726
  ["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
1727
1727
  ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
1728
1728
  ];
1729
- const Search = createLucideIcon("search", __iconNode$f);
1730
- const __iconNode$e = [
1729
+ const Search = createLucideIcon("search", __iconNode$g);
1730
+ const __iconNode$f = [
1731
1731
  [
1732
1732
  "path",
1733
1733
  {
@@ -1737,8 +1737,8 @@ const __iconNode$e = [
1737
1737
  ],
1738
1738
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
1739
1739
  ];
1740
- const Settings$1 = createLucideIcon("settings", __iconNode$e);
1741
- const __iconNode$d = [
1740
+ const Settings$1 = createLucideIcon("settings", __iconNode$f);
1741
+ const __iconNode$e = [
1742
1742
  [
1743
1743
  "path",
1744
1744
  {
@@ -1750,18 +1750,18 @@ const __iconNode$d = [
1750
1750
  ["path", { d: "M22 4h-4", key: "gwowj6" }],
1751
1751
  ["circle", { cx: "4", cy: "20", r: "2", key: "6kqj1y" }]
1752
1752
  ];
1753
- const Sparkles = createLucideIcon("sparkles", __iconNode$d);
1754
- const __iconNode$c = [
1753
+ const Sparkles = createLucideIcon("sparkles", __iconNode$e);
1754
+ const __iconNode$d = [
1755
1755
  ["path", { d: "M21 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h6", key: "y09zxi" }],
1756
1756
  ["path", { d: "m21 3-9 9", key: "mpx6sq" }],
1757
1757
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }]
1758
1758
  ];
1759
- const SquareArrowOutUpRight = createLucideIcon("square-arrow-out-up-right", __iconNode$c);
1760
- const __iconNode$b = [
1759
+ const SquareArrowOutUpRight = createLucideIcon("square-arrow-out-up-right", __iconNode$d);
1760
+ const __iconNode$c = [
1761
1761
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }]
1762
1762
  ];
1763
- const Square = createLucideIcon("square", __iconNode$b);
1764
- const __iconNode$a = [
1763
+ const Square = createLucideIcon("square", __iconNode$c);
1764
+ const __iconNode$b = [
1765
1765
  [
1766
1766
  "path",
1767
1767
  {
@@ -1771,35 +1771,35 @@ const __iconNode$a = [
1771
1771
  ],
1772
1772
  ["circle", { cx: "7.5", cy: "7.5", r: ".5", fill: "currentColor", key: "kqv944" }]
1773
1773
  ];
1774
- const Tag$1 = createLucideIcon("tag", __iconNode$a);
1775
- const __iconNode$9 = [
1774
+ const Tag$1 = createLucideIcon("tag", __iconNode$b);
1775
+ const __iconNode$a = [
1776
1776
  ["path", { d: "M12 19h8", key: "baeox8" }],
1777
1777
  ["path", { d: "m4 17 6-6-6-6", key: "1yngyt" }]
1778
1778
  ];
1779
- const Terminal = createLucideIcon("terminal", __iconNode$9);
1780
- const __iconNode$8 = [
1779
+ const Terminal = createLucideIcon("terminal", __iconNode$a);
1780
+ const __iconNode$9 = [
1781
1781
  ["path", { d: "M21 5H3", key: "1fi0y6" }],
1782
1782
  ["path", { d: "M10 12H3", key: "1ulcyk" }],
1783
1783
  ["path", { d: "M10 19H3", key: "108z41" }],
1784
1784
  ["circle", { cx: "17", cy: "15", r: "3", key: "1upz2a" }],
1785
1785
  ["path", { d: "m21 19-1.9-1.9", key: "dwi7p8" }]
1786
1786
  ];
1787
- const TextSearch = createLucideIcon("text-search", __iconNode$8);
1788
- const __iconNode$7 = [
1787
+ const TextSearch = createLucideIcon("text-search", __iconNode$9);
1788
+ const __iconNode$8 = [
1789
1789
  ["line", { x1: "10", x2: "14", y1: "2", y2: "2", key: "14vaq8" }],
1790
1790
  ["line", { x1: "12", x2: "15", y1: "14", y2: "11", key: "17fdiu" }],
1791
1791
  ["circle", { cx: "12", cy: "14", r: "8", key: "1e1u0o" }]
1792
1792
  ];
1793
- const Timer$1 = createLucideIcon("timer", __iconNode$7);
1794
- const __iconNode$6 = [
1793
+ const Timer$1 = createLucideIcon("timer", __iconNode$8);
1794
+ const __iconNode$7 = [
1795
1795
  ["path", { d: "M10 11v6", key: "nco0om" }],
1796
1796
  ["path", { d: "M14 11v6", key: "outv1u" }],
1797
1797
  ["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6", key: "miytrc" }],
1798
1798
  ["path", { d: "M3 6h18", key: "d0wm0j" }],
1799
1799
  ["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2", key: "e791ji" }]
1800
1800
  ];
1801
- const Trash2 = createLucideIcon("trash-2", __iconNode$6);
1802
- const __iconNode$5 = [
1801
+ const Trash2 = createLucideIcon("trash-2", __iconNode$7);
1802
+ const __iconNode$6 = [
1803
1803
  [
1804
1804
  "path",
1805
1805
  {
@@ -1810,13 +1810,13 @@ const __iconNode$5 = [
1810
1810
  ["path", { d: "M12 9v4", key: "juzpu7" }],
1811
1811
  ["path", { d: "M12 17h.01", key: "p32p05" }]
1812
1812
  ];
1813
- const TriangleAlert = createLucideIcon("triangle-alert", __iconNode$5);
1814
- const __iconNode$4 = [
1813
+ const TriangleAlert = createLucideIcon("triangle-alert", __iconNode$6);
1814
+ const __iconNode$5 = [
1815
1815
  ["path", { d: "M9 14 4 9l5-5", key: "102s5s" }],
1816
1816
  ["path", { d: "M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11", key: "f3b9sd" }]
1817
1817
  ];
1818
- const Undo2 = createLucideIcon("undo-2", __iconNode$4);
1819
- const __iconNode$3 = [
1818
+ const Undo2 = createLucideIcon("undo-2", __iconNode$5);
1819
+ const __iconNode$4 = [
1820
1820
  [
1821
1821
  "path",
1822
1822
  {
@@ -1826,7 +1826,24 @@ const __iconNode$3 = [
1826
1826
  ],
1827
1827
  ["rect", { x: "2", y: "6", width: "14", height: "12", rx: "2", key: "158x01" }]
1828
1828
  ];
1829
- const Video = createLucideIcon("video", __iconNode$3);
1829
+ const Video = createLucideIcon("video", __iconNode$4);
1830
+ const __iconNode$3 = [
1831
+ [
1832
+ "path",
1833
+ {
1834
+ d: "m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72",
1835
+ key: "ul74o6"
1836
+ }
1837
+ ],
1838
+ ["path", { d: "m14 7 3 3", key: "1r5n42" }],
1839
+ ["path", { d: "M5 6v4", key: "ilb8ba" }],
1840
+ ["path", { d: "M19 14v4", key: "blhpug" }],
1841
+ ["path", { d: "M10 2v2", key: "7u0qdc" }],
1842
+ ["path", { d: "M7 8H3", key: "zfb6yr" }],
1843
+ ["path", { d: "M21 16h-4", key: "1cnmox" }],
1844
+ ["path", { d: "M11 3H9", key: "1obp7u" }]
1845
+ ];
1846
+ const WandSparkles = createLucideIcon("wand-sparkles", __iconNode$3);
1830
1847
  const __iconNode$2 = [
1831
1848
  ["circle", { cx: "7", cy: "12", r: "3", key: "12clwm" }],
1832
1849
  ["path", { d: "M10 9v6", key: "17i7lo" }],
@@ -14852,6 +14869,19 @@ function CommandGroup({
14852
14869
  }
14853
14870
  );
14854
14871
  }
14872
+ function CommandSeparator({
14873
+ className,
14874
+ ...props
14875
+ }) {
14876
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
14877
+ _e$4.Separator,
14878
+ {
14879
+ "data-slot": "command-separator",
14880
+ className: cn$2("-mx-1 h-px bg-border", className),
14881
+ ...props
14882
+ }
14883
+ );
14884
+ }
14855
14885
  function CommandItem({ className, ...props }) {
14856
14886
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
14857
14887
  _e$4.Item,
@@ -40575,53 +40605,53 @@ async function loadLanguage(lang) {
40575
40605
  try {
40576
40606
  switch (lang) {
40577
40607
  case "javascript":
40578
- return import("./index-C4USpn2y.js").then((m2) => m2.javascript());
40608
+ return import("./index-D2P0pxCr.js").then((m2) => m2.javascript());
40579
40609
  case "jsx":
40580
- return import("./index-C4USpn2y.js").then((m2) => m2.javascript({ jsx: true }));
40610
+ return import("./index-D2P0pxCr.js").then((m2) => m2.javascript({ jsx: true }));
40581
40611
  case "typescript":
40582
- return import("./index-C4USpn2y.js").then(
40612
+ return import("./index-D2P0pxCr.js").then(
40583
40613
  (m2) => m2.javascript({ typescript: true })
40584
40614
  );
40585
40615
  case "tsx":
40586
- return import("./index-C4USpn2y.js").then(
40616
+ return import("./index-D2P0pxCr.js").then(
40587
40617
  (m2) => m2.javascript({ jsx: true, typescript: true })
40588
40618
  );
40589
40619
  case "python":
40590
- return import("./index-CDCloCld.js").then((m2) => m2.python());
40620
+ return import("./index-BT8sxrq0.js").then((m2) => m2.python());
40591
40621
  case "html":
40592
- return import("./index-Bb41VJM3.js").then((m2) => m2.html());
40622
+ return import("./index-CaRM9svU.js").then((m2) => m2.html());
40593
40623
  case "css":
40594
- return import("./index-DrrqcbHg.js").then((m2) => m2.css());
40624
+ return import("./index-7k2BqwZv.js").then((m2) => m2.css());
40595
40625
  case "scss":
40596
40626
  case "sass":
40597
- return import("./index-DjhMY50H.js").then((m2) => m2.sass());
40627
+ return import("./index-DBbuiN2t.js").then((m2) => m2.sass());
40598
40628
  case "less":
40599
- return import("./index-Cuuby6oP.js").then((m2) => m2.less());
40629
+ return import("./index-CsnrxvSd.js").then((m2) => m2.less());
40600
40630
  case "json":
40601
40631
  case "jsonc":
40602
- return import("./index-DSGH2NU6.js").then((m2) => m2.json());
40632
+ return import("./index-C9H7VUtp.js").then((m2) => m2.json());
40603
40633
  case "markdown":
40604
40634
  case "mdx":
40605
- return import("./index-Duvita0E.js").then((m2) => m2.markdown());
40635
+ return import("./index-Dp5TbN68.js").then((m2) => m2.markdown());
40606
40636
  case "xml":
40607
- return import("./index-BBCpeEJl.js").then((m2) => m2.xml());
40637
+ return import("./index-DIv5BUol.js").then((m2) => m2.xml());
40608
40638
  case "yaml":
40609
- return import("./index-DTkAyV2J.js").then((m2) => m2.yaml());
40639
+ return import("./index-B9hFfb3C.js").then((m2) => m2.yaml());
40610
40640
  case "sql":
40611
- return import("./index-BoT6zVKn.js").then((m2) => m2.sql());
40641
+ return import("./index-BJorH749.js").then((m2) => m2.sql());
40612
40642
  case "rust":
40613
- return import("./index-Dp74K7A4.js").then((m2) => m2.rust());
40643
+ return import("./index-CchdHjwq.js").then((m2) => m2.rust());
40614
40644
  case "go":
40615
- return import("./index-OEnZTnkb.js").then((m2) => m2.go());
40645
+ return import("./index-Crgd09US.js").then((m2) => m2.go());
40616
40646
  case "java":
40617
- return import("./index-CLsI0TMm.js").then((m2) => m2.java());
40647
+ return import("./index-XaoY6ovr.js").then((m2) => m2.java());
40618
40648
  case "kotlin":
40619
- return import("./index-CLsI0TMm.js").then((m2) => m2.java());
40649
+ return import("./index-XaoY6ovr.js").then((m2) => m2.java());
40620
40650
  case "c":
40621
40651
  case "cpp":
40622
- return import("./index-BP-Fy_Ud.js").then((m2) => m2.cpp());
40652
+ return import("./index-BhJN38EV.js").then((m2) => m2.cpp());
40623
40653
  case "php":
40624
- return import("./index-DO3wKBul.js").then((m2) => m2.php());
40654
+ return import("./index-DsLZMKNC.js").then((m2) => m2.php());
40625
40655
  // Legacy modes via StreamLanguage
40626
40656
  case "bash":
40627
40657
  case "fish":
@@ -41412,6 +41442,16 @@ function activatePanel(deps, panelId) {
41412
41442
  }
41413
41443
  function buildCommands(deps) {
41414
41444
  return [
41445
+ {
41446
+ // ⌘N — open a new untitled (scratch) editor tab. Listed first
41447
+ // because it's the closest sibling to Quick Open ("create a new
41448
+ // editing surface" vs "find an existing one") and the keybinding
41449
+ // is one of the most discoverable in the app.
41450
+ id: "new-untitled-tab",
41451
+ label: "New Untitled File",
41452
+ shortcut: "Cmd+N",
41453
+ action: () => deps.newUntitledTab()
41454
+ },
41415
41455
  {
41416
41456
  id: "quick-open",
41417
41457
  label: "Quick Open",
@@ -41446,6 +41486,16 @@ function buildCommands(deps) {
41446
41486
  shortcut: "Cmd+Shift+F",
41447
41487
  action: () => deps.formatCurrentFile()
41448
41488
  },
41489
+ {
41490
+ // Searchable language-mode picker for the active editor tab
41491
+ // (issue #434). No keyboard shortcut — VS Code's equivalent
41492
+ // (Cmd+K M) is a chord we don't yet support; the status-bar
41493
+ // language indicator and this palette entry are the two reachable
41494
+ // surfaces.
41495
+ id: "change-language-mode",
41496
+ label: "Change Language Mode…",
41497
+ action: () => deps.changeLanguageMode()
41498
+ },
41449
41499
  {
41450
41500
  id: "show-chat",
41451
41501
  label: "Show Chat",
@@ -50367,6 +50417,109 @@ function extensionToLanguage(ext) {
50367
50417
  function filenameToLanguage(filename) {
50368
50418
  return FILENAME_MAP[filename];
50369
50419
  }
50420
+ const SUPPORTED_LANGUAGES = [
50421
+ { id: "plaintext", label: "Plain Text" },
50422
+ { id: "bash", label: "Bash / Shell" },
50423
+ { id: "c", label: "C" },
50424
+ { id: "clojure", label: "Clojure" },
50425
+ { id: "cpp", label: "C++" },
50426
+ { id: "csharp", label: "C#" },
50427
+ { id: "css", label: "CSS" },
50428
+ { id: "dart", label: "Dart" },
50429
+ { id: "diff", label: "Diff" },
50430
+ { id: "dockerfile", label: "Dockerfile" },
50431
+ { id: "elixir", label: "Elixir" },
50432
+ { id: "erlang", label: "Erlang" },
50433
+ { id: "go", label: "Go" },
50434
+ { id: "graphql", label: "GraphQL" },
50435
+ { id: "haskell", label: "Haskell" },
50436
+ { id: "hcl", label: "HCL / Terraform" },
50437
+ { id: "html", label: "HTML" },
50438
+ { id: "ini", label: "INI" },
50439
+ { id: "java", label: "Java" },
50440
+ { id: "javascript", label: "JavaScript" },
50441
+ { id: "json", label: "JSON" },
50442
+ { id: "jsonc", label: "JSON with Comments" },
50443
+ { id: "jsx", label: "JavaScript (JSX)" },
50444
+ { id: "kotlin", label: "Kotlin" },
50445
+ { id: "less", label: "Less" },
50446
+ { id: "lua", label: "Lua" },
50447
+ { id: "makefile", label: "Makefile" },
50448
+ { id: "markdown", label: "Markdown" },
50449
+ { id: "mdx", label: "MDX" },
50450
+ { id: "php", label: "PHP" },
50451
+ { id: "powershell", label: "PowerShell" },
50452
+ { id: "python", label: "Python" },
50453
+ { id: "r", label: "R" },
50454
+ { id: "ruby", label: "Ruby" },
50455
+ { id: "rust", label: "Rust" },
50456
+ { id: "sass", label: "Sass" },
50457
+ { id: "scala", label: "Scala" },
50458
+ { id: "scss", label: "SCSS" },
50459
+ { id: "sql", label: "SQL" },
50460
+ { id: "svelte", label: "Svelte" },
50461
+ { id: "swift", label: "Swift" },
50462
+ { id: "toml", label: "TOML" },
50463
+ { id: "typescript", label: "TypeScript" },
50464
+ { id: "tsx", label: "TypeScript (TSX)" },
50465
+ { id: "vue", label: "Vue" },
50466
+ { id: "xml", label: "XML" },
50467
+ { id: "yaml", label: "YAML" }
50468
+ ];
50469
+ const LANGUAGE_LABEL_BY_ID = new Map(SUPPORTED_LANGUAGES.map((l4) => [l4.id, l4.label]));
50470
+ function languageLabel(id28) {
50471
+ const label = LANGUAGE_LABEL_BY_ID.get(id28);
50472
+ if (label) return label;
50473
+ return id28.charAt(0).toUpperCase() + id28.slice(1);
50474
+ }
50475
+ const LANGUAGE_TO_EXTENSION = {
50476
+ javascript: ".js",
50477
+ jsx: ".jsx",
50478
+ typescript: ".ts",
50479
+ tsx: ".tsx",
50480
+ json: ".json",
50481
+ jsonc: ".jsonc",
50482
+ html: ".html",
50483
+ css: ".css",
50484
+ scss: ".scss",
50485
+ sass: ".sass",
50486
+ less: ".less",
50487
+ markdown: ".md",
50488
+ mdx: ".mdx",
50489
+ yaml: ".yaml",
50490
+ xml: ".xml",
50491
+ python: ".py",
50492
+ ruby: ".rb",
50493
+ rust: ".rs",
50494
+ go: ".go",
50495
+ java: ".java",
50496
+ kotlin: ".kt",
50497
+ swift: ".swift",
50498
+ c: ".c",
50499
+ cpp: ".cpp",
50500
+ csharp: ".cs",
50501
+ php: ".php",
50502
+ bash: ".sh",
50503
+ sql: ".sql",
50504
+ graphql: ".graphql",
50505
+ vue: ".vue",
50506
+ svelte: ".svelte",
50507
+ lua: ".lua",
50508
+ r: ".r",
50509
+ dart: ".dart",
50510
+ elixir: ".ex",
50511
+ erlang: ".erl",
50512
+ haskell: ".hs",
50513
+ scala: ".scala",
50514
+ clojure: ".clj",
50515
+ toml: ".toml",
50516
+ hcl: ".hcl",
50517
+ ini: ".ini",
50518
+ diff: ".diff"
50519
+ };
50520
+ function languageToExtension(id28) {
50521
+ return LANGUAGE_TO_EXTENSION[id28];
50522
+ }
50370
50523
  function useDeferredMenuAction() {
50371
50524
  const pendingRef = reactExports.useRef(null);
50372
50525
  const queue = reactExports.useCallback((fn2) => {
@@ -53467,6 +53620,60 @@ function ImagePreview$1({ src, alt }) {
53467
53620
  ] })
53468
53621
  ] });
53469
53622
  }
53623
+ const AUTO_DETECT_LANGUAGE_ID = "__auto__";
53624
+ function LanguagePickerDialog({
53625
+ open: open2,
53626
+ onOpenChange,
53627
+ currentLanguage,
53628
+ hasOverride,
53629
+ onSelect
53630
+ }) {
53631
+ const handleSelect = reactExports.useCallback(
53632
+ (id28) => {
53633
+ onOpenChange(false);
53634
+ requestAnimationFrame(() => onSelect(id28));
53635
+ },
53636
+ [onOpenChange, onSelect]
53637
+ );
53638
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Dialog, { open: open2, onOpenChange, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogContent, { className: "overflow-hidden p-0 sm:max-w-[480px]", showCloseButton: false, children: [
53639
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogHeader, { className: "sr-only", children: [
53640
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DialogTitle, { children: "Select Language Mode" }),
53641
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DialogDescription, { children: "Search for a language to syntax-highlight the file" })
53642
+ ] }),
53643
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Command, { children: [
53644
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CommandInput, { placeholder: "Select language mode…", autoFocus: true }),
53645
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(CommandList, { className: "max-h-[360px]", children: [
53646
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CommandEmpty, { children: "No languages found." }),
53647
+ hasOverride && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
53648
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CommandGroup, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
53649
+ CommandItem,
53650
+ {
53651
+ value: "Auto Detect",
53652
+ onSelect: () => handleSelect(AUTO_DETECT_LANGUAGE_ID),
53653
+ children: [
53654
+ /* @__PURE__ */ jsxRuntimeExports.jsx(WandSparkles, { className: "size-3.5" }),
53655
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-1 text-sm", children: "Auto Detect" })
53656
+ ]
53657
+ }
53658
+ ) }),
53659
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CommandSeparator, {})
53660
+ ] }),
53661
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CommandGroup, { children: SUPPORTED_LANGUAGES.map((lang) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
53662
+ CommandItem,
53663
+ {
53664
+ value: `${lang.label} ${lang.id}`,
53665
+ onSelect: () => handleSelect(lang.id),
53666
+ children: [
53667
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-1 text-sm", children: lang.label }),
53668
+ lang.id === currentLanguage && /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3.5 text-muted-foreground" })
53669
+ ]
53670
+ },
53671
+ lang.id
53672
+ )) })
53673
+ ] })
53674
+ ] })
53675
+ ] }) });
53676
+ }
53470
53677
  function PdfPreview({ src, filename }) {
53471
53678
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-full flex-col", children: /* @__PURE__ */ jsxRuntimeExports.jsx("iframe", { src, title: filename, className: "h-full w-full border-0" }) });
53472
53679
  }
@@ -53486,6 +53693,11 @@ function detectLanguage(filePath, serverHint) {
53486
53693
  const fromName = filenameToLanguage(getFilename(filePath));
53487
53694
  return fromName || "plaintext";
53488
53695
  }
53696
+ function matchesFilePathHint(hint, viewerPath, viewerUntitled, viewerExternal) {
53697
+ if (hint == null) return true;
53698
+ if (hint === viewerPath) return true;
53699
+ return Boolean(viewerUntitled || viewerExternal);
53700
+ }
53489
53701
  function FileViewer({
53490
53702
  workspaceId,
53491
53703
  filePath,
@@ -53510,7 +53722,11 @@ function FileViewer({
53510
53722
  savedEditorState,
53511
53723
  savedScrollTop,
53512
53724
  onEditedContentChange,
53513
- external
53725
+ external,
53726
+ untitled,
53727
+ languageOverride,
53728
+ onLanguageOverrideChange,
53729
+ onSaveAs
53514
53730
  }) {
53515
53731
  const adapter2 = useAdapter();
53516
53732
  const [data, setData] = reactExports.useState(null);
@@ -53528,9 +53744,10 @@ function FileViewer({
53528
53744
  const editorViewRef = reactExports.useRef(null);
53529
53745
  const dataRef = reactExports.useRef(data);
53530
53746
  dataRef.current = data;
53531
- const isDirty = editedContent !== null && editedContent !== data?.content;
53532
- const canEdit = editable2 && (external ? !!adapter2.saveExternalFile : !!adapter2.saveWorkspaceFile);
53533
- const previewType = getFilePreviewType(filePath);
53747
+ const isDirty = untitled ? editedContent != null && editedContent !== "" : editedContent !== null && editedContent !== data?.content;
53748
+ const canEdit = editable2 && (untitled ? true : external ? !!adapter2.saveExternalFile : !!adapter2.saveWorkspaceFile);
53749
+ const canSave = untitled ? !!onSaveAs : external ? !!adapter2.saveExternalFile : !!adapter2.saveWorkspaceFile;
53750
+ const previewType = untitled ? "code" : getFilePreviewType(filePath);
53534
53751
  reactExports.useEffect(() => {
53535
53752
  if (!controlledViewMode) setInternalViewMode("preview");
53536
53753
  setEditedContent(initialEditedContent ?? null);
@@ -53562,6 +53779,12 @@ function FileViewer({
53562
53779
  }
53563
53780
  }, [previewType, viewMode, onEditorView]);
53564
53781
  reactExports.useEffect(() => {
53782
+ if (untitled) {
53783
+ setData({ content: "", size: 0, binary: false, tooLarge: false });
53784
+ setLoading(false);
53785
+ setError(null);
53786
+ return;
53787
+ }
53565
53788
  if (!external && (previewType === "image" || previewType === "pdf")) {
53566
53789
  setData(null);
53567
53790
  setLoading(false);
@@ -53589,8 +53812,8 @@ function FileViewer({
53589
53812
  return () => {
53590
53813
  cancelled = true;
53591
53814
  };
53592
- }, [adapter2, workspaceId, filePath, previewType, external]);
53593
- const lang = data?.content ? detectLanguage(filePath, data.language) : "plaintext";
53815
+ }, [adapter2, workspaceId, filePath, previewType, external, untitled]);
53816
+ const lang = languageOverride ? languageOverride : untitled ? "plaintext" : data?.content ? detectLanguage(filePath, data.language) : "plaintext";
53594
53817
  const fileUrl = !external && adapter2.getWorkspaceFileUrl ? adapter2.getWorkspaceFileUrl(workspaceId, filePath) : void 0;
53595
53818
  const showMarkdownToggle = previewType === "markdown" && renderMarkdown;
53596
53819
  const displayContent = editedContent ?? data?.content;
@@ -53599,6 +53822,23 @@ function FileViewer({
53599
53822
  const onEditedContentChangeRef = reactExports.useRef(onEditedContentChange);
53600
53823
  onEditedContentChangeRef.current = onEditedContentChange;
53601
53824
  const handleSave = reactExports.useCallback(async () => {
53825
+ if (untitled) {
53826
+ if (!onSaveAs) return;
53827
+ const content2 = editorViewRef.current?.state.doc.toString() ?? editedContentRef.current ?? "";
53828
+ setSaving(true);
53829
+ setSaveError(null);
53830
+ try {
53831
+ const newPath = await onSaveAs(content2);
53832
+ if (newPath != null) {
53833
+ window.dispatchEvent(new CustomEvent("band:dirty-change"));
53834
+ }
53835
+ } catch (err) {
53836
+ setSaveError(err instanceof Error ? err.message : "Failed to save");
53837
+ } finally {
53838
+ setSaving(false);
53839
+ }
53840
+ return;
53841
+ }
53602
53842
  if (editedContentRef.current === null) return;
53603
53843
  const save = external ? adapter2.saveExternalFile && ((c2) => adapter2.saveExternalFile(filePath, c2)) : adapter2.saveWorkspaceFile && ((c2) => adapter2.saveWorkspaceFile(workspaceId, filePath, c2));
53604
53844
  if (!save) return;
@@ -53616,7 +53856,7 @@ function FileViewer({
53616
53856
  } finally {
53617
53857
  setSaving(false);
53618
53858
  }
53619
- }, [adapter2, workspaceId, filePath, external]);
53859
+ }, [adapter2, workspaceId, filePath, external, untitled, onSaveAs]);
53620
53860
  const handleFormat = reactExports.useCallback(async () => {
53621
53861
  if (!adapter2.formatWorkspaceFile) {
53622
53862
  setFormatStatus({ kind: "error", message: "Formatting not supported by this adapter" });
@@ -53633,7 +53873,20 @@ function FileViewer({
53633
53873
  setFormatting(true);
53634
53874
  setFormatStatus(null);
53635
53875
  try {
53636
- const result = await adapter2.formatWorkspaceFile(workspaceId, filePath, sourceContent);
53876
+ let formatPath = filePath;
53877
+ if (untitled) {
53878
+ const ext = languageOverride ? languageToExtension(languageOverride) : void 0;
53879
+ if (!ext) {
53880
+ setFormatStatus({
53881
+ kind: "info",
53882
+ message: "Set a language mode first to format this untitled tab"
53883
+ });
53884
+ return;
53885
+ }
53886
+ const tabKey = filePath.replace(/[^a-z0-9]/gi, "-");
53887
+ formatPath = `.band-${tabKey}${ext}`;
53888
+ }
53889
+ const result = await adapter2.formatWorkspaceFile(workspaceId, formatPath, sourceContent);
53637
53890
  if (result.skipped) {
53638
53891
  setFormatStatus({ kind: "info", message: result.reason });
53639
53892
  return;
@@ -53667,17 +53920,17 @@ function FileViewer({
53667
53920
  formattingRef.current = false;
53668
53921
  setFormatting(false);
53669
53922
  }
53670
- }, [adapter2, workspaceId, filePath]);
53923
+ }, [adapter2, workspaceId, filePath, untitled, languageOverride]);
53671
53924
  reactExports.useEffect(() => {
53672
53925
  const handler = (e2) => {
53673
53926
  const detail = e2.detail;
53674
53927
  if (!detail || detail.workspaceId !== workspaceId) return;
53675
- if (detail.filePath != null && detail.filePath !== filePath) return;
53928
+ if (!matchesFilePathHint(detail.filePath, filePath, untitled, external)) return;
53676
53929
  void handleFormat();
53677
53930
  };
53678
53931
  window.addEventListener("band:format-current-file", handler);
53679
53932
  return () => window.removeEventListener("band:format-current-file", handler);
53680
- }, [workspaceId, filePath, handleFormat]);
53933
+ }, [workspaceId, filePath, untitled, external, handleFormat]);
53681
53934
  reactExports.useEffect(() => {
53682
53935
  if (formatStatus?.kind !== "ok") return;
53683
53936
  const timer2 = window.setTimeout(() => setFormatStatus(null), 2500);
@@ -53708,6 +53961,17 @@ function FileViewer({
53708
53961
  onEditedContentChangeRef.current?.(null);
53709
53962
  onBack?.();
53710
53963
  }, [isDirty, onBack]);
53964
+ const [languagePickerOpen, setLanguagePickerOpen] = reactExports.useState(false);
53965
+ reactExports.useEffect(() => {
53966
+ const handler = (e2) => {
53967
+ const detail = e2.detail;
53968
+ if (!detail || detail.workspaceId !== workspaceId) return;
53969
+ if (!matchesFilePathHint(detail.filePath, filePath, untitled, external)) return;
53970
+ setLanguagePickerOpen(true);
53971
+ };
53972
+ window.addEventListener("band:open-language-picker", handler);
53973
+ return () => window.removeEventListener("band:open-language-picker", handler);
53974
+ }, [workspaceId, filePath, untitled, external]);
53711
53975
  return (
53712
53976
  // min-w-0 prevents intrinsic-width content (CodeMirror's long unwrapped
53713
53977
  // lines, in particular) from forcing this box wider than its allocated
@@ -53761,7 +54025,7 @@ function FileViewer({
53761
54025
  ] })
53762
54026
  ] }),
53763
54027
  /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "min-w-0 flex-1 truncate font-mono text-xs", children: [
53764
- filePath,
54028
+ untitled ? "Untitled" : filePath,
53765
54029
  isDirty && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ml-1 text-muted-foreground", children: "(modified)" })
53766
54030
  ] }),
53767
54031
  saveError && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "shrink-0 text-xs text-destructive", children: saveError }),
@@ -53774,7 +54038,12 @@ function FileViewer({
53774
54038
  }
53775
54039
  ),
53776
54040
  formatting && /* @__PURE__ */ jsxRuntimeExports.jsx(LoaderCircle, { className: "size-3.5 shrink-0 animate-spin text-muted-foreground" }),
53777
- canEdit && isDirty && /* @__PURE__ */ jsxRuntimeExports.jsx(
54041
+ canSave && isDirty && // Gate on canSave (which requires a working save target —
54042
+ // adapter method for file-backed tabs, `onSaveAs` for
54043
+ // untitled ones) rather than canEdit, so an untitled tab in
54044
+ // the web build still renders an editable surface even
54045
+ // though no Save button can appear.
54046
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
53778
54047
  "button",
53779
54048
  {
53780
54049
  type: "button",
@@ -53861,7 +54130,29 @@ function FileViewer({
53861
54130
  formatSize(data.size),
53862
54131
  ")"
53863
54132
  ] })
53864
- ] })
54133
+ ] }),
54134
+ onLanguageOverrideChange && previewType === "code" && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-6 shrink-0 items-center justify-end gap-2 border-t border-border/50 bg-background px-2 text-xs", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
54135
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
54136
+ "button",
54137
+ {
54138
+ type: "button",
54139
+ onClick: () => setLanguagePickerOpen(true),
54140
+ className: "inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-muted-foreground hover:bg-accent hover:text-foreground transition-colors",
54141
+ children: languageLabel(lang)
54142
+ }
54143
+ ) }),
54144
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "top", className: "text-xs", children: "Select Language Mode" })
54145
+ ] }) }),
54146
+ onLanguageOverrideChange && /* @__PURE__ */ jsxRuntimeExports.jsx(
54147
+ LanguagePickerDialog,
54148
+ {
54149
+ open: languagePickerOpen,
54150
+ onOpenChange: setLanguagePickerOpen,
54151
+ currentLanguage: lang,
54152
+ hasOverride: languageOverride != null,
54153
+ onSelect: onLanguageOverrideChange
54154
+ }
54155
+ )
53865
54156
  ] })
53866
54157
  );
53867
54158
  }
@@ -54046,7 +54337,10 @@ function QuickOpenDialog({
54046
54337
  canOpenExternal && /* @__PURE__ */ jsxRuntimeExports.jsx(CommandGroup, { heading: "Actions", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(CommandItem, { value: "__band_open_file_external__", onSelect: handleOpenExternal, children: [
54047
54338
  /* @__PURE__ */ jsxRuntimeExports.jsx(FileInput, { className: "size-4 shrink-0 text-muted-foreground" }),
54048
54339
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm", children: "Open File…" }),
54049
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ml-auto text-xs text-muted-foreground", children: "Pick a file outside this workspace" })
54340
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ml-auto flex items-center gap-2 text-xs text-muted-foreground", children: [
54341
+ "Pick a file outside this workspace",
54342
+ /* @__PURE__ */ jsxRuntimeExports.jsx("kbd", { className: "rounded border border-popover-foreground/25 bg-popover-foreground/10 px-1 py-0.5 font-mono text-[10px]", children: "⌘O" })
54343
+ ] })
54050
54344
  ] }) })
54051
54345
  ] }) })
54052
54346
  ] })
@@ -61206,6 +61500,27 @@ class NativeShellCapabilities {
61206
61500
  if (!isDesktopShell()) return null;
61207
61501
  return desktopInvoke("pick_file");
61208
61502
  }
61503
+ /**
61504
+ * Open the OS "Save As" picker and persist `content` to the chosen
61505
+ * path. Returns the absolute path (or `null` when the user cancels).
61506
+ *
61507
+ * Backs the editor's "Save untitled tab" flow — the renderer holds an
61508
+ * in-memory buffer until the user picks a destination; this bridge
61509
+ * runs the dialog and the write in a single IPC round-trip so the
61510
+ * file-system trust boundary stays inside the Electron main process.
61511
+ *
61512
+ * Only meaningful inside the Electron shell; plain browser tabs return
61513
+ * `null` and callers gate the UI on `capabilities.pickSaveFile` being
61514
+ * defined (same pattern `pickFile` uses).
61515
+ */
61516
+ async pickSaveFile(args) {
61517
+ if (!isDesktopShell()) return null;
61518
+ return desktopInvoke("pick_save_file", {
61519
+ content: args.content,
61520
+ defaultName: args.defaultName,
61521
+ defaultPath: args.defaultPath
61522
+ });
61523
+ }
61209
61524
  async openUrl(url) {
61210
61525
  if (!isDesktopShell()) {
61211
61526
  window.open(url, "_blank");
@@ -61670,10 +61985,10 @@ function parseWorkspaceFromPath(pathname) {
61670
61985
  return match ? decodeURIComponent(match[1]) : null;
61671
61986
  }
61672
61987
  const state$1 = /* @__PURE__ */ new Map();
61673
- const listeners$1 = /* @__PURE__ */ new Map();
61988
+ const listeners$2 = /* @__PURE__ */ new Map();
61674
61989
  const DEFAULT = { wsActive: true };
61675
61990
  function notify(workspaceId) {
61676
- const set2 = listeners$1.get(workspaceId);
61991
+ const set2 = listeners$2.get(workspaceId);
61677
61992
  if (set2) {
61678
61993
  for (const cb of set2) cb();
61679
61994
  }
@@ -61687,20 +62002,20 @@ function setWsActive(workspaceId, wsActive) {
61687
62002
  function getWsActive(workspaceId) {
61688
62003
  return state$1.get(workspaceId)?.wsActive ?? DEFAULT.wsActive;
61689
62004
  }
61690
- function subscribe$2(workspaceId, cb) {
61691
- let set2 = listeners$1.get(workspaceId);
62005
+ function subscribe$3(workspaceId, cb) {
62006
+ let set2 = listeners$2.get(workspaceId);
61692
62007
  if (!set2) {
61693
62008
  set2 = /* @__PURE__ */ new Set();
61694
- listeners$1.set(workspaceId, set2);
62009
+ listeners$2.set(workspaceId, set2);
61695
62010
  }
61696
62011
  set2.add(cb);
61697
62012
  return () => {
61698
62013
  set2.delete(cb);
61699
- if (set2.size === 0) listeners$1.delete(workspaceId);
62014
+ if (set2.size === 0) listeners$2.delete(workspaceId);
61700
62015
  };
61701
62016
  }
61702
62017
  function useWsActive(workspaceId) {
61703
- const sub2 = reactExports.useCallback((cb) => subscribe$2(workspaceId, cb), [workspaceId]);
62018
+ const sub2 = reactExports.useCallback((cb) => subscribe$3(workspaceId, cb), [workspaceId]);
61704
62019
  const snap = reactExports.useCallback(() => getWsActive(workspaceId), [workspaceId]);
61705
62020
  return reactExports.useSyncExternalStore(sub2, snap);
61706
62021
  }
@@ -78706,13 +79021,16 @@ function Qt$1({
78706
79021
  );
78707
79022
  }
78708
79023
  Qt$1.displayName = "Separator";
79024
+ const UNTITLED_PREFIX = "untitled:";
79025
+ function isUntitledPath(filePath) {
79026
+ return filePath.startsWith(UNTITLED_PREFIX);
79027
+ }
78709
79028
  function storageKey$1(workspaceId) {
78710
79029
  return `band-open-tabs:${workspaceId}`;
78711
79030
  }
78712
- function loadTabState(workspaceId) {
79031
+ function parseTabState(raw2) {
79032
+ if (!raw2) return null;
78713
79033
  try {
78714
- const raw2 = localStorage.getItem(storageKey$1(workspaceId));
78715
- if (!raw2) return null;
78716
79034
  const parsed = JSON.parse(raw2);
78717
79035
  if (!Array.isArray(parsed.tabs)) return null;
78718
79036
  const tabs = [];
@@ -78724,6 +79042,12 @@ function loadTabState(workspaceId) {
78724
79042
  const tab2 = { filePath: obj.filePath };
78725
79043
  if (obj.isPreview === true) tab2.isPreview = true;
78726
79044
  if (obj.isExternal === true) tab2.isExternal = true;
79045
+ if (obj.isUntitled === true && obj.filePath.startsWith(UNTITLED_PREFIX)) {
79046
+ tab2.isUntitled = true;
79047
+ if (typeof obj.untitledLabel === "string") {
79048
+ tab2.untitledLabel = obj.untitledLabel;
79049
+ }
79050
+ }
78727
79051
  tabs.push(tab2);
78728
79052
  }
78729
79053
  }
@@ -78733,22 +79057,46 @@ function loadTabState(workspaceId) {
78733
79057
  return null;
78734
79058
  }
78735
79059
  }
79060
+ function loadTabState(workspaceId) {
79061
+ try {
79062
+ return parseTabState(localStorage.getItem(storageKey$1(workspaceId)));
79063
+ } catch {
79064
+ return null;
79065
+ }
79066
+ }
79067
+ function serializeTabState(tabs, active) {
79068
+ const persistedActive = active != null && tabs.some((t2) => t2.filePath === active) ? active : null;
79069
+ const state2 = {
79070
+ tabs: tabs.map((t2) => {
79071
+ if (!t2.isPreview && !t2.isExternal && !t2.isUntitled) return t2.filePath;
79072
+ const out = { filePath: t2.filePath };
79073
+ if (t2.isPreview) out.isPreview = true;
79074
+ if (t2.isExternal) out.isExternal = true;
79075
+ if (t2.isUntitled) {
79076
+ out.isUntitled = true;
79077
+ if (t2.untitledLabel) out.untitledLabel = t2.untitledLabel;
79078
+ }
79079
+ return out;
79080
+ }),
79081
+ active: persistedActive
79082
+ };
79083
+ return JSON.stringify(state2);
79084
+ }
78736
79085
  function saveTabState(workspaceId, tabs, active) {
78737
79086
  try {
78738
- const state2 = {
78739
- tabs: tabs.map((t2) => {
78740
- if (!t2.isPreview && !t2.isExternal) return t2.filePath;
78741
- const out = { filePath: t2.filePath };
78742
- if (t2.isPreview) out.isPreview = true;
78743
- if (t2.isExternal) out.isExternal = true;
78744
- return out;
78745
- }),
78746
- active
78747
- };
78748
- localStorage.setItem(storageKey$1(workspaceId), JSON.stringify(state2));
79087
+ localStorage.setItem(storageKey$1(workspaceId), serializeTabState(tabs, active));
78749
79088
  } catch {
78750
79089
  }
78751
79090
  }
79091
+ function initialUntitledCounter(tabs) {
79092
+ let max2 = 0;
79093
+ for (const t2 of tabs) {
79094
+ if (!t2.isUntitled) continue;
79095
+ const n2 = Number.parseInt(t2.filePath.slice(UNTITLED_PREFIX.length), 10);
79096
+ if (Number.isFinite(n2) && n2 > max2) max2 = n2;
79097
+ }
79098
+ return max2;
79099
+ }
78752
79100
  function useFileTabs(workspaceId) {
78753
79101
  const [openTabs, setOpenTabs] = reactExports.useState(() => {
78754
79102
  const saved = loadTabState(workspaceId);
@@ -78777,9 +79125,11 @@ function useFileTabs(workspaceId) {
78777
79125
  if (saved) {
78778
79126
  setOpenTabs(saved.tabs);
78779
79127
  setActiveTabPathState(saved.active);
79128
+ untitledCounterRef.current = initialUntitledCounter(saved.tabs);
78780
79129
  } else {
78781
79130
  setOpenTabs([]);
78782
79131
  setActiveTabPathState(null);
79132
+ untitledCounterRef.current = 0;
78783
79133
  }
78784
79134
  }
78785
79135
  }, [workspaceId]);
@@ -78802,6 +79152,36 @@ function useFileTabs(workspaceId) {
78802
79152
  });
78803
79153
  setActiveTabPathState(filePath);
78804
79154
  }, []);
79155
+ const untitledCounterRef = reactExports.useRef(initialUntitledCounter(openTabs));
79156
+ const openTabUntitled = reactExports.useCallback(() => {
79157
+ untitledCounterRef.current += 1;
79158
+ const n2 = untitledCounterRef.current;
79159
+ const filePath = `${UNTITLED_PREFIX}${n2}`;
79160
+ const label = `Untitled-${n2}`;
79161
+ setOpenTabs((prev2) => [...prev2, { filePath, isUntitled: true, untitledLabel: label }]);
79162
+ setActiveTabPathState(filePath);
79163
+ return { filePath, label };
79164
+ }, []);
79165
+ const renameUntitledToFile = reactExports.useCallback(
79166
+ (untitledPath, newPath, isExternal) => {
79167
+ setOpenTabs((prev2) => {
79168
+ const idx = prev2.findIndex((t2) => t2.filePath === untitledPath);
79169
+ if (idx === -1) {
79170
+ return [
79171
+ ...prev2,
79172
+ isExternal ? { filePath: newPath, isExternal: true } : { filePath: newPath }
79173
+ ];
79174
+ }
79175
+ const dedup = prev2.filter((t2, i2) => i2 === idx || t2.filePath !== newPath);
79176
+ const slotIdx = dedup.findIndex((t2) => t2.filePath === untitledPath);
79177
+ const next2 = dedup.slice();
79178
+ next2[slotIdx] = isExternal ? { filePath: newPath, isExternal: true } : { filePath: newPath };
79179
+ return next2;
79180
+ });
79181
+ setActiveTabPathState((current) => current === untitledPath ? newPath : current);
79182
+ },
79183
+ []
79184
+ );
78805
79185
  const openTabExternal = reactExports.useCallback((absolutePath) => {
78806
79186
  setOpenTabs((prev2) => {
78807
79187
  const idx = prev2.findIndex((t2) => t2.filePath === absolutePath);
@@ -78954,6 +79334,8 @@ function useFileTabs(workspaceId) {
78954
79334
  openTabPreview,
78955
79335
  openTabPinned,
78956
79336
  openTabExternal,
79337
+ openTabUntitled,
79338
+ renameUntitledToFile,
78957
79339
  pinTab,
78958
79340
  closeTab,
78959
79341
  setActiveTab,
@@ -78964,19 +79346,19 @@ function useFileTabs(workspaceId) {
78964
79346
  };
78965
79347
  }
78966
79348
  const DESKTOP_QUERY = "(min-width: 1024px)";
78967
- function subscribe$1(cb) {
79349
+ function subscribe$2(cb) {
78968
79350
  const mql = window.matchMedia(DESKTOP_QUERY);
78969
79351
  mql.addEventListener("change", cb);
78970
79352
  return () => mql.removeEventListener("change", cb);
78971
79353
  }
78972
- function getSnapshot$1() {
79354
+ function getSnapshot$2() {
78973
79355
  return window.matchMedia(DESKTOP_QUERY).matches;
78974
79356
  }
78975
79357
  function getServerSnapshot() {
78976
79358
  return false;
78977
79359
  }
78978
79360
  function useIsDesktop() {
78979
- return reactExports.useSyncExternalStore(subscribe$1, getSnapshot$1, getServerSnapshot);
79361
+ return reactExports.useSyncExternalStore(subscribe$2, getSnapshot$2, getServerSnapshot);
78980
79362
  }
78981
79363
  function storageKey(workspaceId) {
78982
79364
  return `band-tab-state:${workspaceId}`;
@@ -79027,6 +79409,17 @@ function useTabState(workspaceId) {
79027
79409
  },
79028
79410
  [workspaceId]
79029
79411
  );
79412
+ const getLanguage = reactExports.useCallback((filePath) => {
79413
+ return stateRef.current[filePath]?.language;
79414
+ }, []);
79415
+ const setLanguage = reactExports.useCallback(
79416
+ (filePath, language2) => {
79417
+ const entry = stateRef.current[filePath] ?? {};
79418
+ stateRef.current[filePath] = { ...entry, language: language2 };
79419
+ saveState(workspaceId, stateRef.current);
79420
+ },
79421
+ [workspaceId]
79422
+ );
79030
79423
  const isDirty = reactExports.useCallback((filePath) => {
79031
79424
  return stateRef.current[filePath]?.editedContent != null;
79032
79425
  }, []);
@@ -79075,16 +79468,41 @@ function useTabState(workspaceId) {
79075
79468
  },
79076
79469
  [workspaceId]
79077
79470
  );
79078
- return {
79079
- get: get2,
79080
- update,
79081
- getViewMode,
79082
- setViewMode,
79083
- isDirty,
79084
- removeFile,
79085
- renameFile,
79086
- removePath
79087
- };
79471
+ return reactExports.useMemo(
79472
+ () => ({
79473
+ get: get2,
79474
+ update,
79475
+ getViewMode,
79476
+ setViewMode,
79477
+ getLanguage,
79478
+ setLanguage,
79479
+ isDirty,
79480
+ removeFile,
79481
+ renameFile,
79482
+ removePath
79483
+ }),
79484
+ [
79485
+ get2,
79486
+ update,
79487
+ getViewMode,
79488
+ setViewMode,
79489
+ getLanguage,
79490
+ setLanguage,
79491
+ isDirty,
79492
+ removeFile,
79493
+ renameFile,
79494
+ removePath
79495
+ ]
79496
+ );
79497
+ }
79498
+ function pathInside(parent, child) {
79499
+ if (!parent) return null;
79500
+ const root2 = parent.replace(/\/+$/, "");
79501
+ if (!root2) return null;
79502
+ if (child === root2) return "";
79503
+ const prefix = `${root2}/`;
79504
+ if (!child.startsWith(prefix)) return null;
79505
+ return child.slice(prefix.length);
79088
79506
  }
79089
79507
  function getBasename$1(filePath) {
79090
79508
  if (typeof filePath !== "string") return String(filePath ?? "");
@@ -79102,6 +79520,7 @@ function FileTabBar({
79102
79520
  canGoBack,
79103
79521
  canGoForward,
79104
79522
  isDirty: isDirtyFn,
79523
+ onSaveUntitled,
79105
79524
  actions,
79106
79525
  treeCollapsed,
79107
79526
  onToggleTree
@@ -79109,6 +79528,24 @@ function FileTabBar({
79109
79528
  const activeRef = reactExports.useRef(null);
79110
79529
  const containerRef = reactExports.useRef(null);
79111
79530
  const [confirmClosePath, setConfirmClosePath] = reactExports.useState(null);
79531
+ const [confirmCloseIsUntitled, setConfirmCloseIsUntitled] = reactExports.useState(false);
79532
+ const [confirmCloseLabel, setConfirmCloseLabel] = reactExports.useState("");
79533
+ const openConfirmClose = reactExports.useCallback(
79534
+ (filePath) => {
79535
+ const tab2 = tabs.find((t2) => t2.filePath === filePath);
79536
+ setConfirmClosePath(filePath);
79537
+ setConfirmCloseIsUntitled(!!tab2?.isUntitled);
79538
+ setConfirmCloseLabel(
79539
+ tab2?.isUntitled ? tab2.untitledLabel ?? "Untitled" : getBasename$1(filePath)
79540
+ );
79541
+ },
79542
+ [tabs]
79543
+ );
79544
+ const closeConfirmDialog = reactExports.useCallback(() => {
79545
+ setConfirmClosePath(null);
79546
+ setConfirmCloseIsUntitled(false);
79547
+ setConfirmCloseLabel("");
79548
+ }, []);
79112
79549
  const [, forceUpdate] = reactExports.useReducer((x2) => x2 + 1, 0);
79113
79550
  reactExports.useEffect(() => {
79114
79551
  window.addEventListener("band:dirty-change", forceUpdate);
@@ -79134,19 +79571,32 @@ function FileTabBar({
79134
79571
  const handleClose2 = reactExports.useCallback(
79135
79572
  (filePath) => {
79136
79573
  if (isDirtyFn?.(filePath)) {
79137
- setConfirmClosePath(filePath);
79574
+ openConfirmClose(filePath);
79138
79575
  return;
79139
79576
  }
79140
79577
  onCloseTab(filePath);
79141
79578
  },
79142
- [onCloseTab, isDirtyFn]
79579
+ [onCloseTab, isDirtyFn, openConfirmClose]
79143
79580
  );
79144
79581
  const handleConfirmClose = reactExports.useCallback(() => {
79145
79582
  if (confirmClosePath) {
79146
79583
  onCloseTab(confirmClosePath);
79147
- setConfirmClosePath(null);
79584
+ closeConfirmDialog();
79148
79585
  }
79149
- }, [confirmClosePath, onCloseTab]);
79586
+ }, [confirmClosePath, onCloseTab, closeConfirmDialog]);
79587
+ const [saveAndClosePending, setSaveAndClosePending] = reactExports.useState(false);
79588
+ const handleSaveAndClose = reactExports.useCallback(async () => {
79589
+ if (!confirmClosePath || !onSaveUntitled || saveAndClosePending) return;
79590
+ setSaveAndClosePending(true);
79591
+ try {
79592
+ const saved = await onSaveUntitled(confirmClosePath);
79593
+ if (saved) {
79594
+ closeConfirmDialog();
79595
+ }
79596
+ } finally {
79597
+ setSaveAndClosePending(false);
79598
+ }
79599
+ }, [confirmClosePath, onSaveUntitled, saveAndClosePending, closeConfirmDialog]);
79150
79600
  const handleMouseDown = reactExports.useCallback(
79151
79601
  (e2, filePath) => {
79152
79602
  if (e2.button === 1) {
@@ -79225,10 +79675,11 @@ function FileTabBar({
79225
79675
  const isDirty = isDirtyFn?.(tab2.filePath) ?? false;
79226
79676
  const isPreview = tab2.isPreview ?? false;
79227
79677
  const isExternal = tab2.isExternal ?? false;
79228
- const basename2 = getBasename$1(tab2.filePath);
79229
- const Icon2 = getFileIcon(basename2);
79230
- const absolutePath = isExternal ? tab2.filePath : workspacePath ? `${workspacePath.replace(/\/$/, "")}/${tab2.filePath}` : tab2.filePath;
79231
- const tabTitle = isExternal ? `${tab2.filePath} (external file)` : isPreview ? `${tab2.filePath} (preview — double-click to keep open)` : tab2.filePath;
79678
+ const isUntitled = tab2.isUntitled ?? false;
79679
+ const basename2 = isUntitled ? tab2.untitledLabel ?? "Untitled" : getBasename$1(tab2.filePath);
79680
+ const Icon2 = isUntitled ? FileText : getFileIcon(basename2);
79681
+ const absolutePath = isUntitled ? null : isExternal ? tab2.filePath : workspacePath ? `${workspacePath.replace(/\/$/, "")}/${tab2.filePath}` : tab2.filePath;
79682
+ const tabTitle = isUntitled ? `${basename2} (unsaved — Save to write to disk)` : isExternal ? `${tab2.filePath} (external file)` : isPreview ? `${tab2.filePath} (preview — double-click to keep open)` : tab2.filePath;
79232
79683
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenu, { children: [
79233
79684
  /* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
79234
79685
  "button",
@@ -79291,15 +79742,15 @@ function FileTabBar({
79291
79742
  ] }),
79292
79743
  /* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuSeparator, {})
79293
79744
  ] }),
79294
- /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { onClick: () => copyToClipboard(tab2.filePath), children: [
79745
+ !isUntitled && /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { onClick: () => copyToClipboard(tab2.filePath), children: [
79295
79746
  /* @__PURE__ */ jsxRuntimeExports.jsx(Copy, { className: "size-4" }),
79296
79747
  "Copy Relative Path"
79297
79748
  ] }),
79298
- /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { onClick: () => copyToClipboard(absolutePath), children: [
79749
+ absolutePath !== null && /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { onClick: () => copyToClipboard(absolutePath), children: [
79299
79750
  /* @__PURE__ */ jsxRuntimeExports.jsx(Clipboard, { className: "size-4" }),
79300
79751
  "Copy Absolute Path"
79301
79752
  ] }),
79302
- /* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuSeparator, {}),
79753
+ !isUntitled && /* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuSeparator, {}),
79303
79754
  /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { onClick: () => handleClose2(tab2.filePath), children: [
79304
79755
  /* @__PURE__ */ jsxRuntimeExports.jsx(X$7, { className: "size-4" }),
79305
79756
  "Close"
@@ -79315,19 +79766,24 @@ function FileTabBar({
79315
79766
  Dialog,
79316
79767
  {
79317
79768
  open: confirmClosePath !== null,
79318
- onOpenChange: (open2) => !open2 && setConfirmClosePath(null),
79769
+ onOpenChange: (open2) => !open2 && closeConfirmDialog(),
79319
79770
  children: /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogContent, { showCloseButton: false, children: [
79320
79771
  /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogHeader, { children: [
79321
79772
  /* @__PURE__ */ jsxRuntimeExports.jsx(DialogTitle, { children: "Unsaved Changes" }),
79322
79773
  /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogDescription, { children: [
79323
79774
  "“",
79324
- confirmClosePath ? getBasename$1(confirmClosePath) : "",
79775
+ confirmCloseLabel,
79325
79776
  "” has unsaved changes that will be lost if you close it."
79326
79777
  ] })
79327
79778
  ] }),
79328
79779
  /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogFooter, { children: [
79329
- /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { variant: "outline", onClick: () => setConfirmClosePath(null), children: "Cancel" }),
79330
- /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { variant: "destructive", onClick: handleConfirmClose, children: "Close Without Saving" })
79780
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { variant: "outline", onClick: closeConfirmDialog, children: "Cancel" }),
79781
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { variant: "destructive", onClick: handleConfirmClose, children: confirmCloseIsUntitled ? "Discard" : "Close Without Saving" }),
79782
+ confirmCloseIsUntitled && onSaveUntitled && // Save flows through the OS dialog (Cmd+S on an untitled
79783
+ // tab). On success the untitled tab is renamed to the
79784
+ // chosen path and the close completes; on cancel we
79785
+ // leave both the dialog and the tab open.
79786
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { onClick: handleSaveAndClose, disabled: saveAndClosePending, children: "Save…" })
79331
79787
  ] })
79332
79788
  ] })
79333
79789
  }
@@ -94632,12 +95088,12 @@ function tokenizeDomain(effects, ok2, nok) {
94632
95088
  function tokenizePath(effects, ok2) {
94633
95089
  let sizeOpen = 0;
94634
95090
  let sizeClose = 0;
94635
- return pathInside;
94636
- function pathInside(code2) {
95091
+ return pathInside2;
95092
+ function pathInside2(code2) {
94637
95093
  if (code2 === 40) {
94638
95094
  sizeOpen++;
94639
95095
  effects.consume(code2);
94640
- return pathInside;
95096
+ return pathInside2;
94641
95097
  }
94642
95098
  if (code2 === 41 && sizeClose < sizeOpen) {
94643
95099
  return pathAtPunctuation(code2);
@@ -94649,14 +95105,14 @@ function tokenizePath(effects, ok2) {
94649
95105
  return ok2(code2);
94650
95106
  }
94651
95107
  effects.consume(code2);
94652
- return pathInside;
95108
+ return pathInside2;
94653
95109
  }
94654
95110
  function pathAtPunctuation(code2) {
94655
95111
  if (code2 === 41) {
94656
95112
  sizeClose++;
94657
95113
  }
94658
95114
  effects.consume(code2);
94659
- return pathInside;
95115
+ return pathInside2;
94660
95116
  }
94661
95117
  }
94662
95118
  function tokenizeTrail(effects, ok2, nok) {
@@ -104724,7 +105180,7 @@ var tn = f$5("block", "before:content-[counter(line)]", "before:inline-block", "
104724
105180
  var et$1 = ({ className: e2, 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", e2), "data-incomplete": n2 || void 0, "data-language": t2, "data-streamdown": "code-block", style: { contentVisibility: "auto", containIntrinsicSize: "auto 200px", ...o3 }, ...s2 });
104725
105181
  var Se$1 = reactExports.createContext({ code: "" }), de$2 = () => reactExports.useContext(Se$1);
104726
105182
  var ot$1 = ({ language: e2 }) => jsxRuntimeExports.jsx("div", { className: "flex h-8 items-center text-muted-foreground text-xs", "data-language": e2, "data-streamdown": "code-block-header", children: jsxRuntimeExports.jsx("span", { className: "ml-1 font-mono lowercase", children: e2 }) });
104727
- var cn = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-DDkviWDm.js").then((e2) => ({ default: e2.HighlightedCodeBlockBody }))), rt = ({ code: e2, language: t2, className: o3, children: n2, isIncomplete: s2 = false, ...r2 }) => {
105183
+ var cn = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-D6ahbJdi.js").then((e2) => ({ default: e2.HighlightedCodeBlockBody }))), rt = ({ code: e2, language: t2, className: o3, children: n2, isIncomplete: s2 = false, ...r2 }) => {
104728
105184
  let i2 = reactExports.useMemo(() => e2.replace(cn, ""), [e2]), c2 = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i2.split(`
104729
105185
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i2]);
104730
105186
  return jsxRuntimeExports.jsx(Se$1.Provider, { value: { code: e2 }, 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 }) })] }) });
@@ -105046,7 +105502,7 @@ var Dt = ({ children: e2, className: t2, onDownload: o3, onError: n2 }) => {
105046
105502
  }, []), 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: e2 != null ? e2 : 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] });
105047
105503
  };
105048
105504
  var Vt = ({ children: e2, 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: e2 }) })] });
105049
- var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-EBg4-fWO.js").then((e2) => ({ default: e2.Mermaid }))), Kn = /language-([^\s]+)/;
105505
+ var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-C7xGj9Xg.js").then((e2) => ({ default: e2.Mermaid }))), Kn = /language-([^\s]+)/;
105050
105506
  function ke$1(e2, t2) {
105051
105507
  if (!(e2 != null && e2.position || t2 != null && t2.position)) return true;
105052
105508
  if (!(e2 != null && e2.position && (t2 != null && t2.position))) return false;
@@ -154848,12 +155304,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
154848
155304
  registerLayoutLoaders([
154849
155305
  {
154850
155306
  name: "dagre",
154851
- loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-C0_F8CHc.js"), "loader")
155307
+ loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-CH-VbyTI.js"), "loader")
154852
155308
  },
154853
155309
  ...[
154854
155310
  {
154855
155311
  name: "cose-bilkent",
154856
- loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-BNk0NAbB.js"), "loader")
155312
+ loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-BhU6LMhN.js"), "loader")
154857
155313
  }
154858
155314
  ]
154859
155315
  ]);
@@ -155292,7 +155748,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
155292
155748
  return /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt);
155293
155749
  }, "detector");
155294
155750
  var loader = /* @__PURE__ */ __name(async () => {
155295
- const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-ByeFZAO1.js");
155751
+ const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-BcLh1QQl.js");
155296
155752
  return { id, diagram: diagram2 };
155297
155753
  }, "loader");
155298
155754
  var plugin = {
@@ -155309,7 +155765,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
155309
155765
  return /^\s*graph/.test(txt);
155310
155766
  }, "detector");
155311
155767
  var loader2 = /* @__PURE__ */ __name(async () => {
155312
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CX3XZT5Y.js");
155768
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-hg6b4dSR.js");
155313
155769
  return { id: id2, diagram: diagram2 };
155314
155770
  }, "loader");
155315
155771
  var plugin2 = {
@@ -155332,7 +155788,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
155332
155788
  return /^\s*flowchart/.test(txt);
155333
155789
  }, "detector");
155334
155790
  var loader3 = /* @__PURE__ */ __name(async () => {
155335
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CX3XZT5Y.js");
155791
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-hg6b4dSR.js");
155336
155792
  return { id: id3, diagram: diagram2 };
155337
155793
  }, "loader");
155338
155794
  var plugin3 = {
@@ -155346,7 +155802,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
155346
155802
  return /^\s*erDiagram/.test(txt);
155347
155803
  }, "detector");
155348
155804
  var loader4 = /* @__PURE__ */ __name(async () => {
155349
- const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-DPxBpQns.js");
155805
+ const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-DeBKeqCX.js");
155350
155806
  return { id: id4, diagram: diagram2 };
155351
155807
  }, "loader");
155352
155808
  var plugin4 = {
@@ -155360,7 +155816,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
155360
155816
  return /^\s*gitGraph/.test(txt);
155361
155817
  }, "detector");
155362
155818
  var loader5 = /* @__PURE__ */ __name(async () => {
155363
- const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-ChLdCg6Z.js");
155819
+ const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-CN8rFh7o.js");
155364
155820
  return { id: id5, diagram: diagram2 };
155365
155821
  }, "loader");
155366
155822
  var plugin5 = {
@@ -155374,7 +155830,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
155374
155830
  return /^\s*gantt/.test(txt);
155375
155831
  }, "detector");
155376
155832
  var loader6 = /* @__PURE__ */ __name(async () => {
155377
- const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-BmjiDolw.js");
155833
+ const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-oy5gzveG.js");
155378
155834
  return { id: id6, diagram: diagram2 };
155379
155835
  }, "loader");
155380
155836
  var plugin6 = {
@@ -155388,7 +155844,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
155388
155844
  return /^\s*info/.test(txt);
155389
155845
  }, "detector");
155390
155846
  var loader7 = /* @__PURE__ */ __name(async () => {
155391
- const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-B1v9HmWX.js");
155847
+ const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-P_hugt8D.js");
155392
155848
  return { id: id7, diagram: diagram2 };
155393
155849
  }, "loader");
155394
155850
  var info = {
@@ -155401,7 +155857,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
155401
155857
  return /^\s*pie/.test(txt);
155402
155858
  }, "detector");
155403
155859
  var loader8 = /* @__PURE__ */ __name(async () => {
155404
- const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-C2Qp43pf.js");
155860
+ const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-YXV3ET4_.js");
155405
155861
  return { id: id8, diagram: diagram2 };
155406
155862
  }, "loader");
155407
155863
  var pie = {
@@ -155414,7 +155870,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
155414
155870
  return /^\s*quadrantChart/.test(txt);
155415
155871
  }, "detector");
155416
155872
  var loader9 = /* @__PURE__ */ __name(async () => {
155417
- const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-C9I9kDB1.js");
155873
+ const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-r_peNHCA.js");
155418
155874
  return { id: id9, diagram: diagram2 };
155419
155875
  }, "loader");
155420
155876
  var plugin7 = {
@@ -155428,7 +155884,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
155428
155884
  return /^\s*xychart(-beta)?/.test(txt);
155429
155885
  }, "detector");
155430
155886
  var loader10 = /* @__PURE__ */ __name(async () => {
155431
- const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-DHrKht9t.js");
155887
+ const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-0ftH7hFg.js");
155432
155888
  return { id: id10, diagram: diagram2 };
155433
155889
  }, "loader");
155434
155890
  var plugin8 = {
@@ -155442,7 +155898,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
155442
155898
  return /^\s*requirement(Diagram)?/.test(txt);
155443
155899
  }, "detector");
155444
155900
  var loader11 = /* @__PURE__ */ __name(async () => {
155445
- const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-DmCcKz-Y.js");
155901
+ const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-aI3jQPLf.js");
155446
155902
  return { id: id11, diagram: diagram2 };
155447
155903
  }, "loader");
155448
155904
  var plugin9 = {
@@ -155456,7 +155912,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
155456
155912
  return /^\s*sequenceDiagram/.test(txt);
155457
155913
  }, "detector");
155458
155914
  var loader12 = /* @__PURE__ */ __name(async () => {
155459
- const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-DWDQKCiq.js");
155915
+ const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-DrJxigNy.js");
155460
155916
  return { id: id12, diagram: diagram2 };
155461
155917
  }, "loader");
155462
155918
  var plugin10 = {
@@ -155473,7 +155929,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
155473
155929
  return /^\s*classDiagram/.test(txt);
155474
155930
  }, "detector");
155475
155931
  var loader13 = /* @__PURE__ */ __name(async () => {
155476
- const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-BZf5qvSp.js");
155932
+ const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-BvOdRP7s.js");
155477
155933
  return { id: id13, diagram: diagram2 };
155478
155934
  }, "loader");
155479
155935
  var plugin11 = {
@@ -155490,7 +155946,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
155490
155946
  return /^\s*classDiagram-v2/.test(txt);
155491
155947
  }, "detector");
155492
155948
  var loader14 = /* @__PURE__ */ __name(async () => {
155493
- const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-BZf5qvSp.js");
155949
+ const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-BvOdRP7s.js");
155494
155950
  return { id: id14, diagram: diagram2 };
155495
155951
  }, "loader");
155496
155952
  var plugin12 = {
@@ -155507,7 +155963,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
155507
155963
  return /^\s*stateDiagram/.test(txt);
155508
155964
  }, "detector");
155509
155965
  var loader15 = /* @__PURE__ */ __name(async () => {
155510
- const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-_4Khdh4I.js");
155966
+ const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-Dnsp85zH.js");
155511
155967
  return { id: id15, diagram: diagram2 };
155512
155968
  }, "loader");
155513
155969
  var plugin13 = {
@@ -155527,7 +155983,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
155527
155983
  return false;
155528
155984
  }, "detector");
155529
155985
  var loader16 = /* @__PURE__ */ __name(async () => {
155530
- const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-Cos-pE9j.js");
155986
+ const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-C6x8SVRv.js");
155531
155987
  return { id: id16, diagram: diagram2 };
155532
155988
  }, "loader");
155533
155989
  var plugin14 = {
@@ -155541,7 +155997,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
155541
155997
  return /^\s*journey/.test(txt);
155542
155998
  }, "detector");
155543
155999
  var loader17 = /* @__PURE__ */ __name(async () => {
155544
- const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-Cb26EUwI.js");
156000
+ const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-lQfkL_-i.js");
155545
156001
  return { id: id17, diagram: diagram2 };
155546
156002
  }, "loader");
155547
156003
  var plugin15 = {
@@ -155608,7 +156064,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
155608
156064
  return false;
155609
156065
  }, "detector");
155610
156066
  var loader18 = /* @__PURE__ */ __name(async () => {
155611
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CX3XZT5Y.js");
156067
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-hg6b4dSR.js");
155612
156068
  return { id: id18, diagram: diagram2 };
155613
156069
  }, "loader");
155614
156070
  var plugin16 = {
@@ -155622,7 +156078,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
155622
156078
  return /^\s*timeline/.test(txt);
155623
156079
  }, "detector");
155624
156080
  var loader19 = /* @__PURE__ */ __name(async () => {
155625
- const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-DeLSZGNq.js");
156081
+ const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-DSIrepaO.js");
155626
156082
  return { id: id19, diagram: diagram2 };
155627
156083
  }, "loader");
155628
156084
  var plugin17 = {
@@ -155636,7 +156092,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
155636
156092
  return /^\s*mindmap/.test(txt);
155637
156093
  }, "detector");
155638
156094
  var loader20 = /* @__PURE__ */ __name(async () => {
155639
- const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-uP_bqLZ-.js");
156095
+ const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-Byc-qFo2.js");
155640
156096
  return { id: id20, diagram: diagram2 };
155641
156097
  }, "loader");
155642
156098
  var plugin18 = {
@@ -155650,7 +156106,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
155650
156106
  return /^\s*kanban/.test(txt);
155651
156107
  }, "detector");
155652
156108
  var loader21 = /* @__PURE__ */ __name(async () => {
155653
- const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-Cv4GaETC.js");
156109
+ const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-CFh-YdaO.js");
155654
156110
  return { id: id21, diagram: diagram2 };
155655
156111
  }, "loader");
155656
156112
  var plugin19 = {
@@ -155664,7 +156120,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
155664
156120
  return /^\s*sankey(-beta)?/.test(txt);
155665
156121
  }, "detector");
155666
156122
  var loader22 = /* @__PURE__ */ __name(async () => {
155667
- const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-DM2H1xi3.js");
156123
+ const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-B1Sb9Zvd.js");
155668
156124
  return { id: id22, diagram: diagram2 };
155669
156125
  }, "loader");
155670
156126
  var plugin20 = {
@@ -155678,7 +156134,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
155678
156134
  return /^\s*packet(-beta)?/.test(txt);
155679
156135
  }, "detector");
155680
156136
  var loader23 = /* @__PURE__ */ __name(async () => {
155681
- const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-5a2K9q2r.js");
156137
+ const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-CsrxbKjr.js");
155682
156138
  return { id: id23, diagram: diagram2 };
155683
156139
  }, "loader");
155684
156140
  var packet = {
@@ -155691,7 +156147,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
155691
156147
  return /^\s*radar-beta/.test(txt);
155692
156148
  }, "detector");
155693
156149
  var loader24 = /* @__PURE__ */ __name(async () => {
155694
- const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-jKvozWzw.js");
156150
+ const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-rlYyF51_.js");
155695
156151
  return { id: id24, diagram: diagram2 };
155696
156152
  }, "loader");
155697
156153
  var radar = {
@@ -155704,7 +156160,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
155704
156160
  return /^\s*block(-beta)?/.test(txt);
155705
156161
  }, "detector");
155706
156162
  var loader25 = /* @__PURE__ */ __name(async () => {
155707
- const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-DAc1UHQ6.js");
156163
+ const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-UhTmqpkK.js");
155708
156164
  return { id: id25, diagram: diagram2 };
155709
156165
  }, "loader");
155710
156166
  var plugin21 = {
@@ -155718,7 +156174,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
155718
156174
  return /^\s*architecture/.test(txt);
155719
156175
  }, "detector");
155720
156176
  var loader26 = /* @__PURE__ */ __name(async () => {
155721
- const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ--uDzxMk3.js");
156177
+ const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-H4ZI6Opr.js");
155722
156178
  return { id: id26, diagram: diagram2 };
155723
156179
  }, "loader");
155724
156180
  var architecture = {
@@ -155732,7 +156188,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
155732
156188
  return /^\s*treemap/.test(txt);
155733
156189
  }, "detector");
155734
156190
  var loader27 = /* @__PURE__ */ __name(async () => {
155735
- const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-LARMaMiS.js");
156191
+ const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-BE0vVJdc.js");
155736
156192
  return { id: id27, diagram: diagram2 };
155737
156193
  }, "loader");
155738
156194
  var treemap = {
@@ -156781,7 +157237,12 @@ const touchPointerUp = (fn2) => (e2) => {
156781
157237
  };
156782
157238
  const fireOpenQuickOpen = () => window.dispatchEvent(new CustomEvent("band:open-quick-open"));
156783
157239
  const fireOpenSearchFiles = () => window.dispatchEvent(new CustomEvent("band:open-search-files"));
156784
- function FileTreeToolbar({ onNewFile, onNewFolder, onOpenFile }) {
157240
+ function FileTreeToolbar({
157241
+ onNewFile,
157242
+ onNewFolder,
157243
+ onOpenFile,
157244
+ onNewUntitled
157245
+ }) {
156785
157246
  const rootRef = reactExports.useRef(null);
156786
157247
  const [compact, setCompact] = reactExports.useState(false);
156787
157248
  reactExports.useLayoutEffect(() => {
@@ -156838,6 +157299,11 @@ function FileTreeToolbar({ onNewFile, onNewFolder, onOpenFile }) {
156838
157299
  className: "min-w-[10rem]",
156839
157300
  onCloseAutoFocus: flushMenuAction,
156840
157301
  children: [
157302
+ onNewUntitled && /* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuItem, { onSelect: () => queueMenuAction(onNewUntitled), children: [
157303
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FilePlus, { className: "size-4" }),
157304
+ "New Untitled File",
157305
+ /* @__PURE__ */ jsxRuntimeExports.jsx("kbd", { className: "ml-auto rounded border border-popover-foreground/25 bg-popover-foreground/10 px-1 py-0.5 font-mono text-[10px]", children: "⌘N" })
157306
+ ] }),
156841
157307
  onNewFile && /* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuItem, { onSelect: () => queueMenuAction(onNewFile), children: [
156842
157308
  /* @__PURE__ */ jsxRuntimeExports.jsx(FilePlus, { className: "size-4" }),
156843
157309
  "New File"
@@ -156846,7 +157312,7 @@ function FileTreeToolbar({ onNewFile, onNewFolder, onOpenFile }) {
156846
157312
  /* @__PURE__ */ jsxRuntimeExports.jsx(FolderPlus, { className: "size-4" }),
156847
157313
  "New Folder"
156848
157314
  ] }),
156849
- (onNewFile || onNewFolder) && /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuSeparator, {}),
157315
+ (onNewUntitled || onNewFile || onNewFolder) && /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuSeparator, {}),
156850
157316
  /* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuItem, { onSelect: () => queueMenuAction(fireOpenQuickOpen), children: [
156851
157317
  /* @__PURE__ */ jsxRuntimeExports.jsx(Search, { className: "size-4" }),
156852
157318
  "Quick Open",
@@ -156859,7 +157325,8 @@ function FileTreeToolbar({ onNewFile, onNewFolder, onOpenFile }) {
156859
157325
  ] }),
156860
157326
  onOpenFile && /* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuItem, { onSelect: () => queueMenuAction(onOpenFile), children: [
156861
157327
  /* @__PURE__ */ jsxRuntimeExports.jsx(FileInput, { className: "size-4" }),
156862
- "Open File…"
157328
+ "Open File…",
157329
+ /* @__PURE__ */ jsxRuntimeExports.jsx("kbd", { className: "ml-auto rounded border border-popover-foreground/25 bg-popover-foreground/10 px-1 py-0.5 font-mono text-[10px]", children: "⌘O" })
156863
157330
  ] })
156864
157331
  ]
156865
157332
  }
@@ -157030,6 +157497,7 @@ function CodeBrowserView({
157030
157497
  const notifySelectFile = reactExports.useCallback(
157031
157498
  (filePath) => {
157032
157499
  if (isExternalPath(filePath)) return;
157500
+ if (filePath !== null && isUntitledPath(filePath)) return;
157033
157501
  onSelectFile?.(filePath);
157034
157502
  },
157035
157503
  [isExternalPath, onSelectFile]
@@ -157522,6 +157990,91 @@ function CodeBrowserView({
157522
157990
  window.addEventListener("band:open-file-external", handler);
157523
157991
  return () => window.removeEventListener("band:open-file-external", handler);
157524
157992
  }, [pickFile, handleOpenExternalFile]);
157993
+ const pickSaveFile = capabilities2.pickSaveFile;
157994
+ const handleNewUntitled = reactExports.useCallback(() => {
157995
+ const { filePath } = fileTabs.openTabUntitled();
157996
+ setViewFilePath(filePath);
157997
+ setViewLine(void 0);
157998
+ setViewLineEnd(void 0);
157999
+ setViewColumn(void 0);
158000
+ }, [fileTabs.openTabUntitled]);
158001
+ reactExports.useEffect(() => {
158002
+ const handler = () => handleNewUntitled();
158003
+ window.addEventListener("band:new-untitled-tab", handler);
158004
+ return () => window.removeEventListener("band:new-untitled-tab", handler);
158005
+ }, [handleNewUntitled]);
158006
+ const openTabsRef = reactExports.useRef(fileTabs.openTabs);
158007
+ openTabsRef.current = fileTabs.openTabs;
158008
+ const handleSaveUntitled = reactExports.useCallback(
158009
+ async (untitledPath, content2) => {
158010
+ if (!pickSaveFile) return null;
158011
+ const tab2 = openTabsRef.current.find((t2) => t2.filePath === untitledPath);
158012
+ const override = tabState.getLanguage(untitledPath);
158013
+ const ext = (override ? languageToExtension(override) : void 0) ?? ".txt";
158014
+ const stem = tab2?.untitledLabel ?? "Untitled";
158015
+ const defaultName = `${stem}${ext}`;
158016
+ const chosen = await pickSaveFile({
158017
+ content: content2,
158018
+ defaultName,
158019
+ defaultPath: workspacePath
158020
+ });
158021
+ if (!chosen) return null;
158022
+ const chosenPosix = chosen.replace(/\\/g, "/");
158023
+ const relative = workspacePath != null ? pathInside(workspacePath, chosenPosix) : null;
158024
+ const isExternal = relative === null;
158025
+ const newPath = relative ?? chosenPosix;
158026
+ if (override) tabState.setLanguage(newPath, override);
158027
+ const oldState = tabState.get(untitledPath);
158028
+ tabState.update(newPath, {
158029
+ viewMode: oldState?.viewMode,
158030
+ editorState: oldState?.editorState,
158031
+ scrollTop: oldState?.scrollTop
158032
+ });
158033
+ tabState.removeFile(untitledPath);
158034
+ if (savedEditorStatesRef.current[untitledPath]) {
158035
+ savedEditorStatesRef.current[newPath] = savedEditorStatesRef.current[untitledPath];
158036
+ delete savedEditorStatesRef.current[untitledPath];
158037
+ }
158038
+ fileTabs.renameUntitledToFile(untitledPath, newPath, isExternal);
158039
+ skipFileEffectRef.current = true;
158040
+ setViewFilePath(newPath);
158041
+ setViewLine(void 0);
158042
+ setViewLineEnd(void 0);
158043
+ setViewColumn(void 0);
158044
+ if (!isExternal) notifySelectFile(newPath);
158045
+ window.dispatchEvent(new CustomEvent("band:dirty-change"));
158046
+ return chosenPosix;
158047
+ },
158048
+ [pickSaveFile, workspacePath, fileTabs.renameUntitledToFile, notifySelectFile, tabState]
158049
+ );
158050
+ const handleSaveUntitledForClose = reactExports.useCallback(
158051
+ async (untitledPath) => {
158052
+ let content2;
158053
+ if (viewFilePathRef.current === untitledPath && editorViewRef.current) {
158054
+ content2 = editorViewRef.current.state.doc.toString();
158055
+ } else {
158056
+ content2 = tabState.get(untitledPath)?.editedContent ?? "";
158057
+ }
158058
+ try {
158059
+ const saved = await handleSaveUntitled(untitledPath, content2);
158060
+ return saved != null;
158061
+ } catch (err) {
158062
+ console.error("[band] Save-as failed for untitled tab:", err);
158063
+ return false;
158064
+ }
158065
+ },
158066
+ [handleSaveUntitled, tabState]
158067
+ );
158068
+ const handleLanguageOverride = reactExports.useCallback(
158069
+ (filePath, languageId) => {
158070
+ if (languageId === AUTO_DETECT_LANGUAGE_ID) {
158071
+ tabState.update(filePath, { language: void 0 });
158072
+ return;
158073
+ }
158074
+ tabState.setLanguage(filePath, languageId);
158075
+ },
158076
+ [tabState]
158077
+ );
157525
158078
  const flushActiveEditorState = reactExports.useCallback(() => {
157526
158079
  const view = editorViewRef.current;
157527
158080
  const fp = viewFilePathRef.current;
@@ -157650,6 +158203,7 @@ function CodeBrowserView({
157650
158203
  workspaceId,
157651
158204
  filePath: viewFilePath,
157652
158205
  external: viewIsExternal,
158206
+ untitled: isUntitledPath(viewFilePath),
157653
158207
  line: viewLine,
157654
158208
  lineEnd: viewLineEnd,
157655
158209
  column: viewColumn,
@@ -157661,11 +158215,14 @@ function CodeBrowserView({
157661
158215
  onCursorLineChange: handleCursorLineChange,
157662
158216
  renderMarkdown,
157663
158217
  editable: true,
157664
- lspExtension: viewIsExternal ? null : lspExtension,
158218
+ lspExtension: viewIsExternal || isUntitledPath(viewFilePath) ? null : lspExtension,
157665
158219
  initialEditedContent: tabState.get(viewFilePath)?.editedContent ?? null,
157666
158220
  savedEditorState: savedEditorStatesRef.current[viewFilePath]?.editorState ?? tabState.get(viewFilePath)?.editorState,
157667
158221
  savedScrollTop: savedEditorStatesRef.current[viewFilePath]?.scrollTop ?? tabState.get(viewFilePath)?.scrollTop,
157668
158222
  onEditedContentChange: handleEditedContentChange,
158223
+ languageOverride: tabState.getLanguage(viewFilePath),
158224
+ onLanguageOverrideChange: (id28) => handleLanguageOverride(viewFilePath, id28),
158225
+ onSaveAs: isUntitledPath(viewFilePath) && pickSaveFile ? (content2) => handleSaveUntitled(viewFilePath, content2) : void 0,
157669
158226
  toolbar: search2.searchOpen ? /* @__PURE__ */ jsxRuntimeExports.jsx(
157670
158227
  SearchBar,
157671
158228
  {
@@ -157681,7 +158238,8 @@ function CodeBrowserView({
157681
158238
  onClose: handleSearchClose
157682
158239
  }
157683
158240
  ) : void 0
157684
- }
158241
+ },
158242
+ isUntitledPath(viewFilePath) ? viewFilePath : "file"
157685
158243
  ) : (
157686
158244
  // Same toolbar-above-tree layout the desktop side-by-side uses,
157687
158245
  // so New File / New Folder / Quick Open / Search in Files are
@@ -157695,7 +158253,8 @@ function CodeBrowserView({
157695
158253
  {
157696
158254
  onNewFile: handleNewFile,
157697
158255
  onNewFolder: handleNewFolder,
157698
- onOpenFile: pickFile ? handleOpenExternalFile : void 0
158256
+ onOpenFile: pickFile ? handleOpenExternalFile : void 0,
158257
+ onNewUntitled: handleNewUntitled
157699
158258
  }
157700
158259
  ),
157701
158260
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-h-0 flex-1 overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -157742,7 +158301,8 @@ function CodeBrowserView({
157742
158301
  {
157743
158302
  onNewFile: handleNewFile,
157744
158303
  onNewFolder: handleNewFolder,
157745
- onOpenFile: pickFile ? handleOpenExternalFile : void 0
158304
+ onOpenFile: pickFile ? handleOpenExternalFile : void 0,
158305
+ onNewUntitled: handleNewUntitled
157746
158306
  }
157747
158307
  ),
157748
158308
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-h-0 flex-1 overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -157785,6 +158345,7 @@ function CodeBrowserView({
157785
158345
  canGoBack: editorHistory.canGoBack,
157786
158346
  canGoForward: editorHistory.canGoForward,
157787
158347
  isDirty: tabState.isDirty,
158348
+ onSaveUntitled: pickSaveFile ? handleSaveUntitledForClose : void 0,
157788
158349
  treeCollapsed,
157789
158350
  onToggleTree: toggleTree,
157790
158351
  actions: isMarkdown ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0.5", children: [
@@ -157821,6 +158382,7 @@ function CodeBrowserView({
157821
158382
  workspaceId,
157822
158383
  filePath: viewFilePath,
157823
158384
  external: viewIsExternal,
158385
+ untitled: isUntitledPath(viewFilePath),
157824
158386
  line: viewLine,
157825
158387
  lineEnd: viewLineEnd,
157826
158388
  column: viewColumn,
@@ -157829,13 +158391,16 @@ function CodeBrowserView({
157829
158391
  renderMarkdown,
157830
158392
  editable: true,
157831
158393
  hideTitleBar: true,
157832
- lspExtension: viewIsExternal ? null : lspExtension,
158394
+ lspExtension: viewIsExternal || isUntitledPath(viewFilePath) ? null : lspExtension,
157833
158395
  viewMode: isMarkdown ? mdViewMode : void 0,
157834
158396
  onViewModeChange: isMarkdown ? setMdViewMode : void 0,
157835
158397
  initialEditedContent: tabState.get(viewFilePath)?.editedContent ?? null,
157836
158398
  savedEditorState: savedEditorStatesRef.current[viewFilePath]?.editorState ?? tabState.get(viewFilePath)?.editorState,
157837
158399
  savedScrollTop: savedEditorStatesRef.current[viewFilePath]?.scrollTop ?? tabState.get(viewFilePath)?.scrollTop,
157838
158400
  onEditedContentChange: handleEditedContentChange,
158401
+ languageOverride: tabState.getLanguage(viewFilePath),
158402
+ onLanguageOverrideChange: (id28) => handleLanguageOverride(viewFilePath, id28),
158403
+ onSaveAs: isUntitledPath(viewFilePath) && pickSaveFile ? (content2) => handleSaveUntitled(viewFilePath, content2) : void 0,
157839
158404
  toolbar: search2.searchOpen ? /* @__PURE__ */ jsxRuntimeExports.jsx(
157840
158405
  SearchBar,
157841
158406
  {
@@ -157851,7 +158416,8 @@ function CodeBrowserView({
157851
158416
  onClose: handleSearchClose
157852
158417
  }
157853
158418
  ) : void 0
157854
- }
158419
+ },
158420
+ isUntitledPath(viewFilePath) ? viewFilePath : "file"
157855
158421
  ) : /* @__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: [
157856
158422
  /* @__PURE__ */ jsxRuntimeExports.jsx(File, { className: "size-8 text-muted-foreground/30" }),
157857
158423
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: "Select a file to view" })
@@ -157887,7 +158453,7 @@ function injectInitialUrls(layout, urls) {
157887
158453
  }
157888
158454
  let domOverlayCount = 0;
157889
158455
  let manualHoldCount = 0;
157890
- const listeners = /* @__PURE__ */ new Set();
158456
+ const listeners$1 = /* @__PURE__ */ new Set();
157891
158457
  let lastEmitted = false;
157892
158458
  function isFrozen() {
157893
158459
  return domOverlayCount + manualHoldCount > 0;
@@ -157896,19 +158462,19 @@ function emitIfChanged() {
157896
158462
  const next2 = isFrozen();
157897
158463
  if (next2 === lastEmitted) return;
157898
158464
  lastEmitted = next2;
157899
- for (const l4 of listeners) l4();
158465
+ for (const l4 of listeners$1) l4();
157900
158466
  }
157901
- function subscribe(l4) {
157902
- listeners.add(l4);
158467
+ function subscribe$1(l4) {
158468
+ listeners$1.add(l4);
157903
158469
  return () => {
157904
- listeners.delete(l4);
158470
+ listeners$1.delete(l4);
157905
158471
  };
157906
158472
  }
157907
- function getSnapshot() {
158473
+ function getSnapshot$1() {
157908
158474
  return lastEmitted;
157909
158475
  }
157910
158476
  function useBrowserPaneFrozen() {
157911
- return reactExports.useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
158477
+ return reactExports.useSyncExternalStore(subscribe$1, getSnapshot$1, getSnapshot$1);
157912
158478
  }
157913
158479
  function acquireFreezeHold() {
157914
158480
  manualHoldCount += 1;
@@ -158289,6 +158855,68 @@ function useBrowserPaneFreeze(args) {
158289
158855
  }, [frozen, created, visible, ipcKeyRef]);
158290
158856
  return { snapshot };
158291
158857
  }
158858
+ let hosts = /* @__PURE__ */ new Set();
158859
+ const listeners = /* @__PURE__ */ new Set();
158860
+ let bootstrapped = false;
158861
+ function setHosts(updater) {
158862
+ const next2 = updater(hosts);
158863
+ if (next2 === hosts) return;
158864
+ hosts = next2;
158865
+ for (const cb of listeners) cb();
158866
+ }
158867
+ function addHost(raw2) {
158868
+ const h2 = raw2.toLowerCase();
158869
+ if (!h2 || hosts.has(h2)) return;
158870
+ setHosts((prev2) => {
158871
+ const next2 = new Set(prev2);
158872
+ next2.add(h2);
158873
+ return next2;
158874
+ });
158875
+ }
158876
+ function bootstrap() {
158877
+ if (bootstrapped) return;
158878
+ if (!isDesktop) return;
158879
+ bootstrapped = true;
158880
+ void listen("browser-host-overridden", (event) => {
158881
+ if (event.payload.host) addHost(event.payload.host);
158882
+ }).catch((err) => {
158883
+ console.error("browser-host-overridden listen failed:", err);
158884
+ bootstrapped = false;
158885
+ });
158886
+ invoke("browser_get_overridden_hosts").then((list2) => {
158887
+ if (!Array.isArray(list2)) return;
158888
+ for (const h2 of list2) addHost(h2);
158889
+ }).catch((err) => {
158890
+ console.error("browser_get_overridden_hosts failed:", err);
158891
+ });
158892
+ }
158893
+ function subscribe(cb) {
158894
+ bootstrap();
158895
+ listeners.add(cb);
158896
+ return () => {
158897
+ listeners.delete(cb);
158898
+ };
158899
+ }
158900
+ function getSnapshot() {
158901
+ return hosts;
158902
+ }
158903
+ function useOverriddenHosts() {
158904
+ const currentHosts = reactExports.useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
158905
+ const isOverriddenHost = reactExports.useCallback(
158906
+ (currentUrl) => {
158907
+ if (!currentUrl) return false;
158908
+ let host;
158909
+ try {
158910
+ host = new URL(currentUrl).hostname.toLowerCase();
158911
+ } catch {
158912
+ return false;
158913
+ }
158914
+ return currentHosts.has(host);
158915
+ },
158916
+ [currentHosts]
158917
+ );
158918
+ return { isOverriddenHost };
158919
+ }
158292
158920
  function AddressBarAutocomplete({ state: state2, onSelect }) {
158293
158921
  if (!state2.isOpen || state2.items.length === 0) return null;
158294
158922
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -158568,6 +159196,20 @@ function HistoryPopover({ workspaceId, onNavigate }) {
158568
159196
  )
158569
159197
  ] });
158570
159198
  }
159199
+ function NotSecureBadge() {
159200
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
159201
+ "span",
159202
+ {
159203
+ className: "inline-flex shrink-0 items-center gap-1 rounded bg-destructive/10 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-destructive",
159204
+ title: "The certificate for this site was overridden for the current session. Use with caution.",
159205
+ "data-testid": "cert-not-secure-badge",
159206
+ children: [
159207
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TriangleAlert, { className: "size-3", "aria-hidden": true }),
159208
+ "Not secure"
159209
+ ]
159210
+ }
159211
+ );
159212
+ }
158571
159213
  const DEFAULT_URL = "";
158572
159214
  const BLANK_URL = "about:blank";
158573
159215
  const faviconMap = /* @__PURE__ */ new Map();
@@ -158614,6 +159256,7 @@ function BrowserPaneComponent({
158614
159256
  visible: api.isVisible && params.wsActive !== false,
158615
159257
  ipcKeyRef
158616
159258
  });
159259
+ const { isOverriddenHost } = useOverriddenHosts();
158617
159260
  const getBounds = reactExports.useCallback(() => {
158618
159261
  const el = placeholderRef.current;
158619
159262
  if (!el) return null;
@@ -158967,6 +159610,7 @@ function BrowserPaneComponent({
158967
159610
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(RotateCw, { className: "size-4" })
158968
159611
  }
158969
159612
  ),
159613
+ isOverriddenHost(currentUrl) ? /* @__PURE__ */ jsxRuntimeExports.jsx(NotSecureBadge, {}) : null,
158970
159614
  /* @__PURE__ */ jsxRuntimeExports.jsx(
158971
159615
  "input",
158972
159616
  {
@@ -175303,7 +175947,7 @@ const PANEL_SHORTCUTS = {
175303
175947
  browser: "⇧⌘B"
175304
175948
  };
175305
175949
  const DockviewTerminalContainer = reactExports.lazy(
175306
- () => import("./DockviewTerminalContainer-DVUKt_HJ.js").then((m2) => ({
175950
+ () => import("./DockviewTerminalContainer-Btn06b30.js").then((m2) => ({
175307
175951
  default: m2.DockviewTerminalContainer
175308
175952
  }))
175309
175953
  );
@@ -175763,6 +176407,17 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
175763
176407
  detail: { workspaceId, filePath }
175764
176408
  })
175765
176409
  );
176410
+ },
176411
+ newUntitledTab: () => {
176412
+ window.dispatchEvent(new CustomEvent("band:new-untitled-tab"));
176413
+ },
176414
+ changeLanguageMode: () => {
176415
+ const filePath = currentFileRef.current;
176416
+ window.dispatchEvent(
176417
+ new CustomEvent("band:open-language-picker", {
176418
+ detail: { workspaceId, filePath }
176419
+ })
176420
+ );
175766
176421
  }
175767
176422
  }),
175768
176423
  [workspaceId]
@@ -175822,13 +176477,16 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
175822
176477
  if (key2 === "n" && e2.shiftKey) {
175823
176478
  e2.preventDefault();
175824
176479
  window.dispatchEvent(new CustomEvent("band:new-chat-session"));
176480
+ } else if (key2 === "n" && !e2.shiftKey && !e2.altKey) {
176481
+ e2.preventDefault();
176482
+ window.dispatchEvent(new CustomEvent("band:new-untitled-tab"));
175825
176483
  } else if (key2 === "p" && e2.shiftKey) {
175826
176484
  e2.preventDefault();
175827
176485
  setCommandPaletteOpen(true);
175828
176486
  } else if (key2 === "p" && !e2.shiftKey) {
175829
176487
  e2.preventDefault();
175830
176488
  setQuickOpenOpen(true);
175831
- } else if (key2 === "f" && e2.shiftKey) {
176489
+ } else if (key2 === "f" && e2.altKey) {
175832
176490
  e2.preventDefault();
175833
176491
  const filePath = currentFileRef.current;
175834
176492
  window.dispatchEvent(
@@ -175836,16 +176494,19 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
175836
176494
  detail: { workspaceId, filePath }
175837
176495
  })
175838
176496
  );
175839
- } else if (key2 === "h" && e2.shiftKey) {
176497
+ } else if (key2 === "f" && e2.shiftKey) {
175840
176498
  e2.preventDefault();
175841
176499
  setSearchFilesOpen(true);
175842
- } else if (key2 === "f" && !e2.shiftKey) {
176500
+ } else if (key2 === "f" && !e2.shiftKey && !e2.altKey) {
175843
176501
  e2.preventDefault();
175844
176502
  if (findInFileRef.current) {
175845
176503
  findInFileRef.current();
175846
176504
  } else {
175847
176505
  window.dispatchEvent(new CustomEvent("band:find-in-file"));
175848
176506
  }
176507
+ } else if (key2 === "o" && !e2.shiftKey && !e2.altKey) {
176508
+ e2.preventDefault();
176509
+ window.dispatchEvent(new CustomEvent("band:open-file-external"));
175849
176510
  } else if (key2 === "i" && e2.ctrlKey && e2.metaKey && api) {
175850
176511
  e2.preventDefault();
175851
176512
  if (!hiddenPanelsRef.current.includes("chat")) {
@@ -176827,11 +177488,11 @@ function RootLayout() {
176827
177488
  ] })
176828
177489
  ] });
176829
177490
  }
176830
- const $$splitComponentImporter$7 = () => import("./index-BKnmhk3u.js");
177491
+ const $$splitComponentImporter$7 = () => import("./index-aOrOBCQS.js");
176831
177492
  const Route$7 = createFileRoute("/")({
176832
177493
  component: lazyRouteComponent($$splitComponentImporter$7, "component")
176833
177494
  });
176834
- const $$splitComponentImporter$6 = () => import("./workspace._workspaceId-C0PMWq41.js");
177495
+ const $$splitComponentImporter$6 = () => import("./workspace._workspaceId-BY5hpCRH.js");
176835
177496
  const Route$6 = createFileRoute("/workspace/$workspaceId")({
176836
177497
  component: lazyRouteComponent($$splitComponentImporter$6, "component")
176837
177498
  });
@@ -176850,11 +177511,11 @@ const FindInFileContext = reactExports.createContext({
176850
177511
  function useFindInFileContext() {
176851
177512
  return reactExports.useContext(FindInFileContext);
176852
177513
  }
176853
- const $$splitComponentImporter$5 = () => import("./workspace._workspaceId.index-LBt-0JYY.js");
177514
+ const $$splitComponentImporter$5 = () => import("./workspace._workspaceId.index-BRFgw3FA.js");
176854
177515
  const Route$5 = createFileRoute("/workspace/$workspaceId/")({
176855
177516
  component: lazyRouteComponent($$splitComponentImporter$5, "component")
176856
177517
  });
176857
- const $$splitComponentImporter$4 = () => import("./workspace._workspaceId.terminal-jMK4pgOD.js");
177518
+ const $$splitComponentImporter$4 = () => import("./workspace._workspaceId.terminal-BhyASMi7.js");
176858
177519
  const Route$4 = createFileRoute("/workspace/$workspaceId/terminal")({
176859
177520
  component: lazyRouteComponent($$splitComponentImporter$4, "component")
176860
177521
  });
@@ -176862,15 +177523,15 @@ const $$splitComponentImporter$3 = () => import("./workspace._workspaceId.code-C
176862
177523
  const Route$3 = createFileRoute("/workspace/$workspaceId/code")({
176863
177524
  component: lazyRouteComponent($$splitComponentImporter$3, "component")
176864
177525
  });
176865
- const $$splitComponentImporter$2 = () => import("./workspace._workspaceId.changes-CzyqOgM_.js");
177526
+ const $$splitComponentImporter$2 = () => import("./workspace._workspaceId.changes-CiekaeTG.js");
176866
177527
  const Route$2 = createFileRoute("/workspace/$workspaceId/changes")({
176867
177528
  component: lazyRouteComponent($$splitComponentImporter$2, "component")
176868
177529
  });
176869
- const $$splitComponentImporter$1 = () => import("./workspace._workspaceId.code.index-CVy3VzQK.js");
177530
+ const $$splitComponentImporter$1 = () => import("./workspace._workspaceId.code.index-DRR8qo6z.js");
176870
177531
  const Route$1 = createFileRoute("/workspace/$workspaceId/code/")({
176871
177532
  component: lazyRouteComponent($$splitComponentImporter$1, "component")
176872
177533
  });
176873
- const $$splitComponentImporter = () => import("./workspace._workspaceId.code._-QG2CLJod.js");
177534
+ const $$splitComponentImporter = () => import("./workspace._workspaceId.code._-Bi-RxK7c.js");
176874
177535
  const Route2 = createFileRoute("/workspace/$workspaceId/code/$")({
176875
177536
  component: lazyRouteComponent($$splitComponentImporter, "component")
176876
177537
  });