@thxgg/steward 0.1.5 → 0.1.7

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 (1596) hide show
  1. package/.output/nitro.json +15 -0
  2. package/.output/public/_nuxt/2EtD6e53.js +1 -0
  3. package/.output/public/_nuxt/2UxHyX5q.js +1 -0
  4. package/.output/public/_nuxt/3e1v2bzS.js +1 -0
  5. package/.output/public/_nuxt/4A_iFExJ.js +1 -0
  6. package/.output/public/_nuxt/5X7smno1.js +1 -0
  7. package/.output/public/_nuxt/5i3qLPDT.js +1 -0
  8. package/.output/public/_nuxt/83L43bj1.js +1 -0
  9. package/.output/public/_nuxt/85-TOEBH.js +1 -0
  10. package/.output/public/_nuxt/B0m2ddpp.js +1 -0
  11. package/.output/public/_nuxt/B1dDrJ26.js +1 -0
  12. package/.output/public/_nuxt/B1yitclQ.js +1 -0
  13. package/.output/public/_nuxt/B3hkJjmY.js +1 -0
  14. package/.output/public/_nuxt/B6aJPvgy.js +1 -0
  15. package/.output/public/_nuxt/B7c-h3xW.js +1 -0
  16. package/.output/public/_nuxt/B7mTdjB0.js +1 -0
  17. package/.output/public/_nuxt/B93PlW-d.js +1 -0
  18. package/.output/public/_nuxt/BBf5iR-q.js +1 -0
  19. package/.output/public/_nuxt/BEDo0Tqx.js +1 -0
  20. package/.output/public/_nuxt/BERRCDM3.js +1 -0
  21. package/.output/public/_nuxt/BETggiCN.js +1 -0
  22. package/.output/public/_nuxt/BEwlwnbL.js +1 -0
  23. package/.output/public/_nuxt/BFfxhgS-.js +1 -0
  24. package/.output/public/_nuxt/BGHnOYBU.js +1 -0
  25. package/.output/public/_nuxt/BGJmEYvX.js +1 -0
  26. package/.output/public/_nuxt/BH7IYjvW.js +1 -0
  27. package/.output/public/_nuxt/BIGW1oBm.js +1 -0
  28. package/.output/public/_nuxt/BJDFO7_C.js +1 -0
  29. package/.output/public/_nuxt/BLmx8bSh.js +1 -0
  30. package/.output/public/_nuxt/BLtJtn59.js +1 -0
  31. package/.output/public/_nuxt/BM1_JUlF.js +1 -0
  32. package/.output/public/_nuxt/BMWR74SV.js +1 -0
  33. package/.output/public/_nuxt/BNzFoVmP.js +1 -0
  34. package/.output/public/_nuxt/BPQ3VLAy.js +1 -0
  35. package/.output/public/_nuxt/BQ8w6xss.js +1 -0
  36. package/.output/public/_nuxt/BR5kRUq4.js +1 -0
  37. package/.output/public/_nuxt/BRDbaJqY.js +4 -0
  38. package/.output/public/_nuxt/BRHolxvo.js +1 -0
  39. package/.output/public/_nuxt/BRZ36xJF.js +1 -0
  40. package/.output/public/_nuxt/BTJTHyun.js +1 -0
  41. package/.output/public/_nuxt/BTifaqeh.js +1 -0
  42. package/.output/public/_nuxt/BUw7H-hv.js +1 -0
  43. package/.output/public/_nuxt/BV7otONQ.js +1 -0
  44. package/.output/public/_nuxt/BVQ-GDCI.js +1 -0
  45. package/.output/public/_nuxt/BWvSN4gD.js +1 -0
  46. package/.output/public/_nuxt/BXkSAIEj.js +1 -0
  47. package/.output/public/_nuxt/BYV0-3_D.js +1 -0
  48. package/.output/public/_nuxt/BYunw83y.js +1 -0
  49. package/.output/public/_nuxt/BZvkOJ9d.js +1 -0
  50. package/.output/public/_nuxt/B_m7g4N7.js +1 -0
  51. package/.output/public/_nuxt/Ba13S78F.js +1 -0
  52. package/.output/public/_nuxt/BcOcwvcX.js +1 -0
  53. package/.output/public/_nuxt/BcVCzyr7.js +1 -0
  54. package/.output/public/_nuxt/BdImnpbu.js +1 -0
  55. package/.output/public/_nuxt/BdnUsdx6.js +1 -0
  56. package/.output/public/_nuxt/BfHTSMKl.js +1 -0
  57. package/.output/public/_nuxt/BfjtVDDH.js +1 -0
  58. package/.output/public/_nuxt/BgDCqdQA.js +1 -0
  59. package/.output/public/_nuxt/BhOHFoWU.js +1 -0
  60. package/.output/public/_nuxt/BhRPY-oY.js +1 -0
  61. package/.output/public/_nuxt/Bhrxn6JZ.js +1 -0
  62. package/.output/public/_nuxt/BkioyH1T.js +1 -0
  63. package/.output/public/_nuxt/Bkuqu6BP.js +1 -0
  64. package/.output/public/_nuxt/BmXAJ9_W.js +1 -0
  65. package/.output/public/_nuxt/Bmn6On1c.js +1 -0
  66. package/.output/public/_nuxt/Bo1Fdv48.js +76 -0
  67. package/.output/public/_nuxt/Bp3cYrEr.js +1 -0
  68. package/.output/public/_nuxt/Bp6g37R7.js +1 -0
  69. package/.output/public/_nuxt/BqTXFGrv.js +1 -0
  70. package/.output/public/_nuxt/BqYA7rlc.js +1 -0
  71. package/.output/public/_nuxt/BqmZq_gb.js +1 -0
  72. package/.output/public/_nuxt/Br6cN0cg.js +1 -0
  73. package/.output/public/_nuxt/Bri1ZtcQ.js +1 -0
  74. package/.output/public/_nuxt/BrzmwbiE.js +1 -0
  75. package/.output/public/_nuxt/BsS91CYL.js +1 -0
  76. package/.output/public/_nuxt/BspZqrRM.js +1 -0
  77. package/.output/public/_nuxt/BtCnVYZw.js +1 -0
  78. package/.output/public/_nuxt/BtOb2qkB.js +1 -0
  79. package/.output/public/_nuxt/BthQWCQV.js +1 -0
  80. package/.output/public/_nuxt/BtqSS_iP.js +1 -0
  81. package/.output/public/_nuxt/BtvRca6l.js +1 -0
  82. package/.output/public/_nuxt/Buea-lGh.js +1 -0
  83. package/.output/public/_nuxt/Bv_4Rxtq.js +1 -0
  84. package/.output/public/_nuxt/BvzEVeQv.js +1 -0
  85. package/.output/public/_nuxt/Bw305WKR.js +1 -0
  86. package/.output/public/_nuxt/BxgE0vQu.js +1 -0
  87. package/.output/public/_nuxt/BzJJZx-M.js +1 -0
  88. package/.output/public/_nuxt/BzTr9Aqm.js +1 -0
  89. package/.output/public/_nuxt/C-HG3fhB.js +1 -0
  90. package/.output/public/_nuxt/C-SQnVFl.js +1 -0
  91. package/.output/public/_nuxt/C-sUppwS.js +1 -0
  92. package/.output/public/_nuxt/C0HS_06l.js +1 -0
  93. package/.output/public/_nuxt/C0hk2d4L.js +1 -0
  94. package/.output/public/_nuxt/C151Ov-r.js +1 -0
  95. package/.output/public/_nuxt/C2t-YnRu.js +1 -0
  96. package/.output/public/_nuxt/C39BiMTA.js +1 -0
  97. package/.output/public/_nuxt/C3B-1QV4.js +1 -0
  98. package/.output/public/_nuxt/C3Wv6jpd.js +1 -0
  99. package/.output/public/_nuxt/C3mMm8J8.js +1 -0
  100. package/.output/public/_nuxt/C47S-Tmv.js +1 -0
  101. package/.output/public/_nuxt/C4EeE6gA.js +1 -0
  102. package/.output/public/_nuxt/C4IJs8-o.js +1 -0
  103. package/.output/public/_nuxt/C4gqWexZ.js +1 -0
  104. package/.output/public/_nuxt/C5YyOfLZ.js +1 -0
  105. package/.output/public/_nuxt/C7zT0LnQ.js +1 -0
  106. package/.output/public/_nuxt/C8M2exoo.js +1 -0
  107. package/.output/public/_nuxt/C8lEn-DE.js +1 -0
  108. package/.output/public/_nuxt/C98Dy4si.js +1 -0
  109. package/.output/public/_nuxt/C9XAeP06.js +1 -0
  110. package/.output/public/_nuxt/C9dUb6Cb.js +1 -0
  111. package/.output/public/_nuxt/C9oPPf7i.js +1 -0
  112. package/.output/public/_nuxt/C9tS-k6U.js +1 -0
  113. package/.output/public/_nuxt/CDVJQ6XC.js +1 -0
  114. package/.output/public/_nuxt/CDx5xZoG.js +1 -0
  115. package/.output/public/_nuxt/CEJOILWG.js +1 -0
  116. package/.output/public/_nuxt/CEL-wOlO.js +1 -0
  117. package/.output/public/_nuxt/CEu0bR-o.js +1 -0
  118. package/.output/public/_nuxt/CF10PKvl.js +1 -0
  119. package/.output/public/_nuxt/CFHQjOhq.js +1 -0
  120. package/.output/public/_nuxt/CFsNy2aC.js +1 -0
  121. package/.output/public/_nuxt/CG6Dc4jp.js +1 -0
  122. package/.output/public/_nuxt/CG8Ifv2g.js +1 -0
  123. package/.output/public/_nuxt/CGscLIrv.js +1 -0
  124. package/.output/public/_nuxt/CH1njM8p.js +1 -0
  125. package/.output/public/_nuxt/CHLpvVh8.js +1 -0
  126. package/.output/public/_nuxt/CHM0blh-.js +1 -0
  127. package/.output/public/_nuxt/CJc9bBzg.js +1 -0
  128. package/.output/public/_nuxt/CKIfxQSi.js +1 -0
  129. package/.output/public/_nuxt/CLZrNe3w.js +1 -0
  130. package/.output/public/_nuxt/CLxacb5B.js +1 -0
  131. package/.output/public/_nuxt/CMTm3GFP.js +1 -0
  132. package/.output/public/_nuxt/CMjwMIkn.js +1 -0
  133. package/.output/public/_nuxt/CO1LY3CK.js +1 -0
  134. package/.output/public/_nuxt/COcwbKMJ.js +1 -0
  135. package/.output/public/_nuxt/COkxafJQ.js +1 -0
  136. package/.output/public/_nuxt/COt5Ahok.js +1 -0
  137. package/.output/public/_nuxt/CQ8jqdy-.js +1 -0
  138. package/.output/public/_nuxt/CS3Unz2-.js +1 -0
  139. package/.output/public/_nuxt/CSXwinHm.js +1 -0
  140. package/.output/public/_nuxt/CTRr51gU.js +1 -0
  141. package/.output/public/_nuxt/CVO1_9PV.js +1 -0
  142. package/.output/public/_nuxt/CVdnzihN.js +1 -0
  143. package/.output/public/_nuxt/CW8IKDeL.js +1 -0
  144. package/.output/public/_nuxt/CXZktZb0.js +1 -0
  145. package/.output/public/_nuxt/CXtECtnM.js +1 -0
  146. package/.output/public/_nuxt/CYsAdtH9.js +1 -0
  147. package/.output/public/_nuxt/CZhp0h8q.js +1 -0
  148. package/.output/public/_nuxt/CafNBF8u.js +1 -0
  149. package/.output/public/_nuxt/CbFg5uaA.js +1 -0
  150. package/.output/public/_nuxt/CbfX1IO0.js +1 -0
  151. package/.output/public/_nuxt/CeAyd5Ju.js +1 -0
  152. package/.output/public/_nuxt/CeZK1NFH.js +1 -0
  153. package/.output/public/_nuxt/CenWIFCC.js +1 -0
  154. package/.output/public/_nuxt/CfQXZHmo.js +1 -0
  155. package/.output/public/_nuxt/Cg-RD9OK.js +1 -0
  156. package/.output/public/_nuxt/ChMvpjG-.js +1 -0
  157. package/.output/public/_nuxt/Cj5Yp3dK.js +1 -0
  158. package/.output/public/_nuxt/CjoLj4QM.js +1 -0
  159. package/.output/public/_nuxt/CkByrt1z.js +1 -0
  160. package/.output/public/_nuxt/CkXjmgJE.js +1 -0
  161. package/.output/public/_nuxt/CklMAg4u.js +1 -0
  162. package/.output/public/_nuxt/Cl0AqbOI.js +1 -0
  163. package/.output/public/_nuxt/Cm3UrAx6.js +1 -0
  164. package/.output/public/_nuxt/CmIQRyeF.js +1 -0
  165. package/.output/public/_nuxt/Cmh6b_Ma.js +1 -0
  166. package/.output/public/_nuxt/Cn7AkR1O.js +1 -0
  167. package/.output/public/_nuxt/CnnebwVN.js +1 -0
  168. package/.output/public/_nuxt/CnnmHF94.js +1 -0
  169. package/.output/public/_nuxt/CnsnAmq5.js +1 -0
  170. package/.output/public/_nuxt/Co6uUVPk.js +1 -0
  171. package/.output/public/_nuxt/CoDkCxhg.js +1 -0
  172. package/.output/public/_nuxt/Cp-IABpG.js +1 -0
  173. package/.output/public/_nuxt/CpOuai2O.js +1 -0
  174. package/.output/public/_nuxt/Cq5zzVJU.js +1 -0
  175. package/.output/public/_nuxt/CquLrc37.js +1 -0
  176. package/.output/public/_nuxt/CsfeWuGM.js +1 -0
  177. package/.output/public/_nuxt/Csfq5Kiy.js +1 -0
  178. package/.output/public/_nuxt/CuPHTKiy.js +1 -0
  179. package/.output/public/_nuxt/CufHLc7y.js +1 -0
  180. package/.output/public/_nuxt/Cuk6v7N8.js +1 -0
  181. package/.output/public/_nuxt/Cvjx9yec.js +1 -0
  182. package/.output/public/_nuxt/CwoSXNpI.js +1 -0
  183. package/.output/public/_nuxt/CxGSJlkm.js +1 -0
  184. package/.output/public/_nuxt/CxLEBnE3.js +1 -0
  185. package/.output/public/_nuxt/CxbxFI8M.js +1 -0
  186. package/.output/public/_nuxt/CyktbL80.js +1 -0
  187. package/.output/public/_nuxt/CylS5w8V.js +1 -0
  188. package/.output/public/_nuxt/CzTSHFRz.js +1 -0
  189. package/.output/public/_nuxt/D-2ljcwZ.js +1 -0
  190. package/.output/public/_nuxt/D0YGMca9.js +1 -0
  191. package/.output/public/_nuxt/D0r3Knsf.js +1 -0
  192. package/.output/public/_nuxt/D0zW6lUK.js +1 -0
  193. package/.output/public/_nuxt/D17OF-Vu.js +1 -0
  194. package/.output/public/_nuxt/D1j8_8rp.js +1 -0
  195. package/.output/public/_nuxt/D3lLCCz7.js +1 -0
  196. package/.output/public/_nuxt/D4_iv3hh.js +1 -0
  197. package/.output/public/_nuxt/D4h5O-jR.js +1 -0
  198. package/.output/public/_nuxt/D5-asLiD.js +1 -0
  199. package/.output/public/_nuxt/D53aC0YG.js +1 -0
  200. package/.output/public/_nuxt/D5KoaKCx.js +1 -0
  201. package/.output/public/_nuxt/D7o27uSR.js +1 -0
  202. package/.output/public/_nuxt/D7oLnXFd.js +1 -0
  203. package/.output/public/_nuxt/D82EKSYY.js +1 -0
  204. package/.output/public/_nuxt/D87Tk5Gz.js +1 -0
  205. package/.output/public/_nuxt/D8_7TLub.js +1 -0
  206. package/.output/public/_nuxt/D93ZcfNL.js +1 -0
  207. package/.output/public/_nuxt/D97Zzqfu.js +1 -0
  208. package/.output/public/_nuxt/DAi9KRSo.js +1 -0
  209. package/.output/public/_nuxt/DEthMvLe.js +1 -0
  210. package/.output/public/_nuxt/DFQXde-d.js +1 -0
  211. package/.output/public/_nuxt/DFWUc33u.js +1 -0
  212. package/.output/public/_nuxt/DFXneXwc.js +1 -0
  213. package/.output/public/_nuxt/DGP4VlC8.js +1 -0
  214. package/.output/public/_nuxt/DGztddWO.js +1 -0
  215. package/.output/public/_nuxt/DH5Ifo-i.js +1 -0
  216. package/.output/public/_nuxt/DHCkPAjA.js +1 -0
  217. package/.output/public/_nuxt/DHJKELXO.js +1 -0
  218. package/.output/public/_nuxt/DHQR4-dF.js +1 -0
  219. package/.output/public/_nuxt/DJjDtW9f.js +1 -0
  220. package/.output/public/_nuxt/DM8c43g1.js +1 -0
  221. package/.output/public/_nuxt/DMwsHuHA.js +1 -0
  222. package/.output/public/_nuxt/DMzUqQB5.js +1 -0
  223. package/.output/public/_nuxt/DPfMkruS.js +1 -0
  224. package/.output/public/_nuxt/DQwYQDb2.js +1 -0
  225. package/.output/public/_nuxt/DQyhUUbL.js +1 -0
  226. package/.output/public/_nuxt/DRg8JJMk.js +1 -0
  227. package/.output/public/_nuxt/DRw_LuNl.js +1 -0
  228. package/.output/public/_nuxt/DU1UobuO.js +1 -0
  229. package/.output/public/_nuxt/DUszq2jm.js +1 -0
  230. package/.output/public/_nuxt/DV7GczEv.js +1 -0
  231. package/.output/public/_nuxt/DVFEvuxE.js +1 -0
  232. package/.output/public/_nuxt/DVMEJ2y_.js +1 -0
  233. package/.output/public/_nuxt/DVxCFoDh.js +1 -0
  234. package/.output/public/_nuxt/DWedfzmr.js +1 -0
  235. package/.output/public/_nuxt/DWrx1Km3.js +1 -0
  236. package/.output/public/_nuxt/DXbdFlpD.js +1 -0
  237. package/.output/public/_nuxt/DXmwc3jG.js +1 -0
  238. package/.output/public/_nuxt/DXvB9xmW.js +1 -0
  239. package/.output/public/_nuxt/DYDTtHLR.js +1 -0
  240. package/.output/public/_nuxt/DYoxhk2S.js +1 -0
  241. package/.output/public/_nuxt/DZf3V79B.js +1 -0
  242. package/.output/public/_nuxt/DZu-aV2c.js +1 -0
  243. package/.output/public/_nuxt/DZxFcAj9.js +1 -0
  244. package/.output/public/_nuxt/D_Q5rh1f.js +1 -0
  245. package/.output/public/_nuxt/Da5cRb03.js +1 -0
  246. package/.output/public/_nuxt/DcaNXYhu.js +1 -0
  247. package/.output/public/_nuxt/Dd19v3D-.js +1 -0
  248. package/.output/public/_nuxt/DdkO51Og.js +1 -0
  249. package/.output/public/_nuxt/Ddv68eIx.js +1 -0
  250. package/.output/public/_nuxt/Des-eS-w.js +1 -0
  251. package/.output/public/_nuxt/Df6bDoY_.js +1 -0
  252. package/.output/public/_nuxt/Dg5xB15N.js +1 -0
  253. package/.output/public/_nuxt/DhQtydpF.js +3 -0
  254. package/.output/public/_nuxt/DhmSosst.js +1 -0
  255. package/.output/public/_nuxt/DkFqJrB1.js +1 -0
  256. package/.output/public/_nuxt/DkwncUOv.js +1 -0
  257. package/.output/public/_nuxt/DlAUqK2U.js +1 -0
  258. package/.output/public/_nuxt/DnULxvSX.js +1 -0
  259. package/.output/public/_nuxt/Dpen1YoG.js +1 -0
  260. package/.output/public/_nuxt/Dph4kLrZ.js +1 -0
  261. package/.output/public/_nuxt/DqQDbK_p.js +1 -0
  262. package/.output/public/_nuxt/DqwNpetd.js +1 -0
  263. package/.output/public/_nuxt/DsOJ9woJ.js +1 -0
  264. package/.output/public/_nuxt/Dspwwk_N.js +1 -0
  265. package/.output/public/_nuxt/DsumFeuD.js +1 -0
  266. package/.output/public/_nuxt/Dv7Oe6Be.js +1 -0
  267. package/.output/public/_nuxt/Dx-B1_4e.js +1 -0
  268. package/.output/public/_nuxt/DxNHbxmM.js +1 -0
  269. package/.output/public/_nuxt/DxSwrfjg.js +1 -0
  270. package/.output/public/_nuxt/DyxjwDmM.js +1 -0
  271. package/.output/public/_nuxt/Dzze3sRP.js +1 -0
  272. package/.output/public/_nuxt/E3gJ1_iC.js +1 -0
  273. package/.output/public/_nuxt/GsRaNv29.js +1 -0
  274. package/.output/public/_nuxt/IF9eRakj.js +1 -0
  275. package/.output/public/_nuxt/IeuSbFQv.js +1 -0
  276. package/.output/public/_nuxt/L9t79GZl.js +1 -0
  277. package/.output/public/_nuxt/MzD3tlZU.js +1 -0
  278. package/.output/public/_nuxt/P80f7IUj.js +1 -0
  279. package/.output/public/_nuxt/Pmp26Uib.js +1 -0
  280. package/.output/public/_nuxt/QIJgUcNo.js +1 -0
  281. package/.output/public/_nuxt/RNghxpo_.js +1 -0
  282. package/.output/public/_nuxt/TsXTqZ29.js +1 -0
  283. package/.output/public/_nuxt/VCDPK7BO.js +1 -0
  284. package/.output/public/_nuxt/VOosw3JB.js +1 -0
  285. package/.output/public/_nuxt/W9tJ9s81.js +1 -0
  286. package/.output/public/_nuxt/X6fIXIFO.js +1 -0
  287. package/.output/public/_nuxt/YqXBG_HV.js +1 -0
  288. package/.output/public/_nuxt/Yzrsuije.js +1 -0
  289. package/.output/public/_nuxt/_prd_.DYvuV73Q.css +1 -0
  290. package/.output/public/_nuxt/_ykCGR6B.js +1 -0
  291. package/.output/public/_nuxt/bCR0ucgS.js +1 -0
  292. package/.output/public/_nuxt/bN70gL4F.js +1 -0
  293. package/.output/public/_nuxt/builds/latest.json +1 -0
  294. package/.output/public/_nuxt/builds/meta/6683a0d9-9c02-4098-b750-bbbc0305261e.json +1 -0
  295. package/.output/public/_nuxt/dwOrl1Do.js +1 -0
  296. package/.output/public/_nuxt/entry.Dk19PK4d.css +1 -0
  297. package/.output/public/_nuxt/error-404.o50T1Yh0.css +1 -0
  298. package/.output/public/_nuxt/error-500.DdcU-NLM.css +1 -0
  299. package/.output/public/_nuxt/fKv21gyL.js +1 -0
  300. package/.output/public/_nuxt/fuZLfV_i.js +1 -0
  301. package/.output/public/_nuxt/g9-lgVsj.js +1 -0
  302. package/.output/public/_nuxt/gcz8RCvz.js +1 -0
  303. package/.output/public/_nuxt/hJgmCMqR.js +1 -0
  304. package/.output/public/_nuxt/hegEt444.js +1 -0
  305. package/.output/public/_nuxt/k_qm7-4y.js +1 -0
  306. package/.output/public/_nuxt/lXgVvXCa.js +1 -0
  307. package/.output/public/_nuxt/m17aaUwq.js +1 -0
  308. package/.output/public/_nuxt/mWjccvbQ.js +1 -0
  309. package/.output/public/_nuxt/mjskCLCv.js +1 -0
  310. package/.output/public/_nuxt/n2N0HUVH.js +1 -0
  311. package/.output/public/_nuxt/qdsjHGoJ.js +1 -0
  312. package/.output/public/_nuxt/rGO070M0.js +1 -0
  313. package/.output/public/_nuxt/u5AG7uiY.js +1 -0
  314. package/.output/public/_nuxt/uYugtg8r.js +1 -0
  315. package/.output/public/_nuxt/vGWfd6FD.js +1 -0
  316. package/.output/public/_nuxt/wDzz0qaB.js +1 -0
  317. package/.output/public/_nuxt/yv6CvBhz.js +1 -0
  318. package/.output/server/chunks/_/error-500.mjs +19 -0
  319. package/.output/server/chunks/_/error-500.mjs.map +1 -0
  320. package/.output/server/chunks/_/git-api.mjs +100 -0
  321. package/.output/server/chunks/_/git-api.mjs.map +1 -0
  322. package/.output/server/chunks/_/git.mjs +303 -0
  323. package/.output/server/chunks/_/git.mjs.map +1 -0
  324. package/.output/server/chunks/_/watcher.mjs +129 -0
  325. package/.output/server/chunks/_/watcher.mjs.map +1 -0
  326. package/.output/server/chunks/build/Column-styles.fAtZNsCt.mjs +8 -0
  327. package/.output/server/chunks/build/Column-styles.fAtZNsCt.mjs.map +1 -0
  328. package/.output/server/chunks/build/DiffViewer-styles-1.mjs-ZdBUa15f.mjs +4 -0
  329. package/.output/server/chunks/build/DiffViewer-styles-1.mjs-ZdBUa15f.mjs.map +1 -0
  330. package/.output/server/chunks/build/DiffViewer-styles-2.mjs-X6QKNjM0.mjs +4 -0
  331. package/.output/server/chunks/build/DiffViewer-styles-2.mjs-X6QKNjM0.mjs.map +1 -0
  332. package/.output/server/chunks/build/DiffViewer-styles.0AbHFl6N.mjs +8 -0
  333. package/.output/server/chunks/build/DiffViewer-styles.0AbHFl6N.mjs.map +1 -0
  334. package/.output/server/chunks/build/DiffViewer-styles.CoMVrk_N.mjs +8 -0
  335. package/.output/server/chunks/build/DiffViewer-styles.CoMVrk_N.mjs.map +1 -0
  336. package/.output/server/chunks/build/DiffViewer-styles.cLfMOdMh.mjs +10 -0
  337. package/.output/server/chunks/build/DiffViewer-styles.cLfMOdMh.mjs.map +1 -0
  338. package/.output/server/chunks/build/Viewer-styles.CshnetGw.mjs +8 -0
  339. package/.output/server/chunks/build/Viewer-styles.CshnetGw.mjs.map +1 -0
  340. package/.output/server/chunks/build/_plugin-vue_export-helper-1tPrXgE0.mjs +10 -0
  341. package/.output/server/chunks/build/_plugin-vue_export-helper-1tPrXgE0.mjs.map +1 -0
  342. package/.output/server/chunks/build/_prd_-CnwhMRyf.mjs +4225 -0
  343. package/.output/server/chunks/build/_prd_-CnwhMRyf.mjs.map +1 -0
  344. package/.output/server/chunks/build/client.precomputed.mjs +4 -0
  345. package/.output/server/chunks/build/client.precomputed.mjs.map +1 -0
  346. package/.output/server/chunks/build/default-DGOIWqjD.mjs +2222 -0
  347. package/.output/server/chunks/build/default-DGOIWqjD.mjs.map +1 -0
  348. package/.output/server/chunks/build/error-404-Bf6kdO80.mjs +98 -0
  349. package/.output/server/chunks/build/error-404-Bf6kdO80.mjs.map +1 -0
  350. package/.output/server/chunks/build/error-404-styles.DjEXIT5C.mjs +8 -0
  351. package/.output/server/chunks/build/error-404-styles.DjEXIT5C.mjs.map +1 -0
  352. package/.output/server/chunks/build/error-500-D_bcARXN.mjs +76 -0
  353. package/.output/server/chunks/build/error-500-D_bcARXN.mjs.map +1 -0
  354. package/.output/server/chunks/build/error-500-styles.DObwArFs.mjs +8 -0
  355. package/.output/server/chunks/build/error-500-styles.DObwArFs.mjs.map +1 -0
  356. package/.output/server/chunks/build/index-CTpuP9Mj.mjs +76 -0
  357. package/.output/server/chunks/build/index-CTpuP9Mj.mjs.map +1 -0
  358. package/.output/server/chunks/build/index-D21S97KB.mjs +256 -0
  359. package/.output/server/chunks/build/index-D21S97KB.mjs.map +1 -0
  360. package/.output/server/chunks/build/nuxt-link-SvT1nf8Z.mjs +290 -0
  361. package/.output/server/chunks/build/nuxt-link-SvT1nf8Z.mjs.map +1 -0
  362. package/.output/server/chunks/build/server.mjs +1257 -0
  363. package/.output/server/chunks/build/server.mjs.map +1 -0
  364. package/.output/server/chunks/build/styles.mjs +17 -0
  365. package/.output/server/chunks/build/styles.mjs.map +1 -0
  366. package/.output/server/chunks/build/usePrd-YhvN6Ary.mjs +563 -0
  367. package/.output/server/chunks/build/usePrd-YhvN6Ary.mjs.map +1 -0
  368. package/.output/server/chunks/nitro/nitro.mjs +8056 -0
  369. package/.output/server/chunks/nitro/nitro.mjs.map +1 -0
  370. package/.output/server/chunks/routes/api/browse.get.mjs +55 -0
  371. package/.output/server/chunks/routes/api/browse.get.mjs.map +1 -0
  372. package/.output/server/chunks/routes/api/index.get.mjs +17 -0
  373. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -0
  374. package/.output/server/chunks/routes/api/index.post.mjs +46 -0
  375. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -0
  376. package/.output/server/chunks/routes/api/repos/_repoId/git/commits.get.mjs +111 -0
  377. package/.output/server/chunks/routes/api/repos/_repoId/git/commits.get.mjs.map +1 -0
  378. package/.output/server/chunks/routes/api/repos/_repoId/git/diff.get.mjs +86 -0
  379. package/.output/server/chunks/routes/api/repos/_repoId/git/diff.get.mjs.map +1 -0
  380. package/.output/server/chunks/routes/api/repos/_repoId/git/file-content.get.mjs +95 -0
  381. package/.output/server/chunks/routes/api/repos/_repoId/git/file-content.get.mjs.map +1 -0
  382. package/.output/server/chunks/routes/api/repos/_repoId/git/file-diff.get.mjs +112 -0
  383. package/.output/server/chunks/routes/api/repos/_repoId/git/file-diff.get.mjs.map +1 -0
  384. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/progress.get.mjs +44 -0
  385. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/progress.get.mjs.map +1 -0
  386. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks/_taskId/commits.get.mjs +121 -0
  387. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks/_taskId/commits.get.mjs.map +1 -0
  388. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks.get.mjs +44 -0
  389. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks.get.mjs.map +1 -0
  390. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug_.get.mjs +81 -0
  391. package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug_.get.mjs.map +1 -0
  392. package/.output/server/chunks/routes/api/repos/_repoId/prds.get.mjs +76 -0
  393. package/.output/server/chunks/routes/api/repos/_repoId/prds.get.mjs.map +1 -0
  394. package/.output/server/chunks/routes/api/repos/_repoId/refresh-git-repos.post.mjs +44 -0
  395. package/.output/server/chunks/routes/api/repos/_repoId/refresh-git-repos.post.mjs.map +1 -0
  396. package/.output/server/chunks/routes/api/repos/_repoId_.delete.mjs +34 -0
  397. package/.output/server/chunks/routes/api/repos/_repoId_.delete.mjs.map +1 -0
  398. package/.output/server/chunks/routes/api/watch.get.mjs +67 -0
  399. package/.output/server/chunks/routes/api/watch.get.mjs.map +1 -0
  400. package/.output/server/chunks/routes/renderer.mjs +500 -0
  401. package/.output/server/chunks/routes/renderer.mjs.map +1 -0
  402. package/.output/server/chunks/virtual/_virtual_spa-template.mjs +4 -0
  403. package/.output/server/chunks/virtual/_virtual_spa-template.mjs.map +1 -0
  404. package/.output/server/index.mjs +11 -0
  405. package/.output/server/index.mjs.map +1 -0
  406. package/.output/server/node_modules/@babel/parser/lib/index.js +14582 -0
  407. package/.output/server/node_modules/@babel/parser/package.json +50 -0
  408. package/.output/server/node_modules/@floating-ui/core/dist/floating-ui.core.mjs +1055 -0
  409. package/.output/server/node_modules/@floating-ui/core/package.json +63 -0
  410. package/.output/server/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs +777 -0
  411. package/.output/server/node_modules/@floating-ui/dom/package.json +71 -0
  412. package/.output/server/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs +161 -0
  413. package/.output/server/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs +139 -0
  414. package/.output/server/node_modules/@floating-ui/utils/package.json +70 -0
  415. package/.output/server/node_modules/@floating-ui/vue/dist/floating-ui.vue.mjs +190 -0
  416. package/.output/server/node_modules/@floating-ui/vue/package.json +71 -0
  417. package/.output/server/node_modules/@internationalized/date/dist/BuddhistCalendar.mjs +48 -0
  418. package/.output/server/node_modules/@internationalized/date/dist/CalendarDate.mjs +252 -0
  419. package/.output/server/node_modules/@internationalized/date/dist/DateFormatter.mjs +140 -0
  420. package/.output/server/node_modules/@internationalized/date/dist/EthiopicCalendar.mjs +167 -0
  421. package/.output/server/node_modules/@internationalized/date/dist/GregorianCalendar.mjs +140 -0
  422. package/.output/server/node_modules/@internationalized/date/dist/HebrewCalendar.mjs +150 -0
  423. package/.output/server/node_modules/@internationalized/date/dist/IndianCalendar.mjs +101 -0
  424. package/.output/server/node_modules/@internationalized/date/dist/IslamicCalendar.mjs +161 -0
  425. package/.output/server/node_modules/@internationalized/date/dist/JapaneseCalendar.mjs +174 -0
  426. package/.output/server/node_modules/@internationalized/date/dist/PersianCalendar.mjs +82 -0
  427. package/.output/server/node_modules/@internationalized/date/dist/TaiwanCalendar.mjs +75 -0
  428. package/.output/server/node_modules/@internationalized/date/dist/conversion.mjs +218 -0
  429. package/.output/server/node_modules/@internationalized/date/dist/createCalendar.mjs +64 -0
  430. package/.output/server/node_modules/@internationalized/date/dist/import.mjs +45 -0
  431. package/.output/server/node_modules/@internationalized/date/dist/manipulation.mjs +344 -0
  432. package/.output/server/node_modules/@internationalized/date/dist/queries.mjs +320 -0
  433. package/.output/server/node_modules/@internationalized/date/dist/string.mjs +175 -0
  434. package/.output/server/node_modules/@internationalized/date/dist/utils.mjs +17 -0
  435. package/.output/server/node_modules/@internationalized/date/dist/weekStartData.mjs +113 -0
  436. package/.output/server/node_modules/@internationalized/date/package.json +35 -0
  437. package/.output/server/node_modules/@internationalized/number/dist/NumberFormatter.mjs +152 -0
  438. package/.output/server/node_modules/@internationalized/number/dist/NumberParser.mjs +273 -0
  439. package/.output/server/node_modules/@internationalized/number/dist/import.mjs +19 -0
  440. package/.output/server/node_modules/@internationalized/number/package.json +35 -0
  441. package/.output/server/node_modules/@shikijs/core/dist/index.mjs +2446 -0
  442. package/.output/server/node_modules/@shikijs/core/package.json +56 -0
  443. package/.output/server/node_modules/@shikijs/engine-javascript/dist/engine-compile.mjs +52 -0
  444. package/.output/server/node_modules/@shikijs/engine-javascript/dist/engine-raw.mjs +22 -0
  445. package/.output/server/node_modules/@shikijs/engine-javascript/dist/index.mjs +4 -0
  446. package/.output/server/node_modules/@shikijs/engine-javascript/dist/shared/engine-javascript.hzpS1_41.mjs +93 -0
  447. package/.output/server/node_modules/@shikijs/engine-javascript/package.json +39 -0
  448. package/.output/server/node_modules/@shikijs/engine-oniguruma/dist/index.mjs +448 -0
  449. package/.output/server/node_modules/@shikijs/engine-oniguruma/dist/wasm-inlined.mjs +8 -0
  450. package/.output/server/node_modules/@shikijs/engine-oniguruma/package.json +42 -0
  451. package/.output/server/node_modules/@shikijs/langs/dist/abap.mjs +5 -0
  452. package/.output/server/node_modules/@shikijs/langs/dist/actionscript-3.mjs +5 -0
  453. package/.output/server/node_modules/@shikijs/langs/dist/ada.mjs +5 -0
  454. package/.output/server/node_modules/@shikijs/langs/dist/angular-expression.mjs +5 -0
  455. package/.output/server/node_modules/@shikijs/langs/dist/angular-html.mjs +16 -0
  456. package/.output/server/node_modules/@shikijs/langs/dist/angular-inline-style.mjs +8 -0
  457. package/.output/server/node_modules/@shikijs/langs/dist/angular-inline-template.mjs +10 -0
  458. package/.output/server/node_modules/@shikijs/langs/dist/angular-let-declaration.mjs +8 -0
  459. package/.output/server/node_modules/@shikijs/langs/dist/angular-template-blocks.mjs +10 -0
  460. package/.output/server/node_modules/@shikijs/langs/dist/angular-template.mjs +8 -0
  461. package/.output/server/node_modules/@shikijs/langs/dist/angular-ts.mjs +18 -0
  462. package/.output/server/node_modules/@shikijs/langs/dist/apache.mjs +5 -0
  463. package/.output/server/node_modules/@shikijs/langs/dist/apex.mjs +5 -0
  464. package/.output/server/node_modules/@shikijs/langs/dist/apl.mjs +16 -0
  465. package/.output/server/node_modules/@shikijs/langs/dist/applescript.mjs +5 -0
  466. package/.output/server/node_modules/@shikijs/langs/dist/ara.mjs +5 -0
  467. package/.output/server/node_modules/@shikijs/langs/dist/asciidoc.mjs +5 -0
  468. package/.output/server/node_modules/@shikijs/langs/dist/asm.mjs +5 -0
  469. package/.output/server/node_modules/@shikijs/langs/dist/astro.mjs +18 -0
  470. package/.output/server/node_modules/@shikijs/langs/dist/awk.mjs +5 -0
  471. package/.output/server/node_modules/@shikijs/langs/dist/ballerina.mjs +5 -0
  472. package/.output/server/node_modules/@shikijs/langs/dist/bat.mjs +5 -0
  473. package/.output/server/node_modules/@shikijs/langs/dist/beancount.mjs +5 -0
  474. package/.output/server/node_modules/@shikijs/langs/dist/berry.mjs +5 -0
  475. package/.output/server/node_modules/@shikijs/langs/dist/bibtex.mjs +5 -0
  476. package/.output/server/node_modules/@shikijs/langs/dist/bicep.mjs +5 -0
  477. package/.output/server/node_modules/@shikijs/langs/dist/blade.mjs +20 -0
  478. package/.output/server/node_modules/@shikijs/langs/dist/bsl.mjs +8 -0
  479. package/.output/server/node_modules/@shikijs/langs/dist/c.mjs +5 -0
  480. package/.output/server/node_modules/@shikijs/langs/dist/c3.mjs +5 -0
  481. package/.output/server/node_modules/@shikijs/langs/dist/cadence.mjs +5 -0
  482. package/.output/server/node_modules/@shikijs/langs/dist/cairo.mjs +8 -0
  483. package/.output/server/node_modules/@shikijs/langs/dist/clarity.mjs +5 -0
  484. package/.output/server/node_modules/@shikijs/langs/dist/clojure.mjs +5 -0
  485. package/.output/server/node_modules/@shikijs/langs/dist/cmake.mjs +5 -0
  486. package/.output/server/node_modules/@shikijs/langs/dist/cobol.mjs +10 -0
  487. package/.output/server/node_modules/@shikijs/langs/dist/codeowners.mjs +5 -0
  488. package/.output/server/node_modules/@shikijs/langs/dist/codeql.mjs +5 -0
  489. package/.output/server/node_modules/@shikijs/langs/dist/coffee.mjs +8 -0
  490. package/.output/server/node_modules/@shikijs/langs/dist/common-lisp.mjs +5 -0
  491. package/.output/server/node_modules/@shikijs/langs/dist/coq.mjs +5 -0
  492. package/.output/server/node_modules/@shikijs/langs/dist/cpp-macro.mjs +12 -0
  493. package/.output/server/node_modules/@shikijs/langs/dist/cpp.mjs +14 -0
  494. package/.output/server/node_modules/@shikijs/langs/dist/crystal.mjs +18 -0
  495. package/.output/server/node_modules/@shikijs/langs/dist/csharp.mjs +5 -0
  496. package/.output/server/node_modules/@shikijs/langs/dist/css.mjs +5 -0
  497. package/.output/server/node_modules/@shikijs/langs/dist/csv.mjs +5 -0
  498. package/.output/server/node_modules/@shikijs/langs/dist/cue.mjs +5 -0
  499. package/.output/server/node_modules/@shikijs/langs/dist/cypher.mjs +5 -0
  500. package/.output/server/node_modules/@shikijs/langs/dist/d.mjs +5 -0
  501. package/.output/server/node_modules/@shikijs/langs/dist/dart.mjs +5 -0
  502. package/.output/server/node_modules/@shikijs/langs/dist/dax.mjs +5 -0
  503. package/.output/server/node_modules/@shikijs/langs/dist/desktop.mjs +5 -0
  504. package/.output/server/node_modules/@shikijs/langs/dist/diff.mjs +5 -0
  505. package/.output/server/node_modules/@shikijs/langs/dist/docker.mjs +5 -0
  506. package/.output/server/node_modules/@shikijs/langs/dist/dotenv.mjs +5 -0
  507. package/.output/server/node_modules/@shikijs/langs/dist/dream-maker.mjs +5 -0
  508. package/.output/server/node_modules/@shikijs/langs/dist/edge.mjs +12 -0
  509. package/.output/server/node_modules/@shikijs/langs/dist/elixir.mjs +8 -0
  510. package/.output/server/node_modules/@shikijs/langs/dist/elm.mjs +8 -0
  511. package/.output/server/node_modules/@shikijs/langs/dist/emacs-lisp.mjs +5 -0
  512. package/.output/server/node_modules/@shikijs/langs/dist/erb.mjs +10 -0
  513. package/.output/server/node_modules/@shikijs/langs/dist/erlang.mjs +8 -0
  514. package/.output/server/node_modules/@shikijs/langs/dist/es-tag-css.mjs +12 -0
  515. package/.output/server/node_modules/@shikijs/langs/dist/es-tag-glsl.mjs +12 -0
  516. package/.output/server/node_modules/@shikijs/langs/dist/es-tag-html.mjs +12 -0
  517. package/.output/server/node_modules/@shikijs/langs/dist/es-tag-sql.mjs +10 -0
  518. package/.output/server/node_modules/@shikijs/langs/dist/es-tag-xml.mjs +8 -0
  519. package/.output/server/node_modules/@shikijs/langs/dist/fennel.mjs +5 -0
  520. package/.output/server/node_modules/@shikijs/langs/dist/fish.mjs +5 -0
  521. package/.output/server/node_modules/@shikijs/langs/dist/fluent.mjs +5 -0
  522. package/.output/server/node_modules/@shikijs/langs/dist/fortran-fixed-form.mjs +8 -0
  523. package/.output/server/node_modules/@shikijs/langs/dist/fortran-free-form.mjs +5 -0
  524. package/.output/server/node_modules/@shikijs/langs/dist/fsharp.mjs +8 -0
  525. package/.output/server/node_modules/@shikijs/langs/dist/gdresource.mjs +10 -0
  526. package/.output/server/node_modules/@shikijs/langs/dist/gdscript.mjs +5 -0
  527. package/.output/server/node_modules/@shikijs/langs/dist/gdshader.mjs +5 -0
  528. package/.output/server/node_modules/@shikijs/langs/dist/genie.mjs +5 -0
  529. package/.output/server/node_modules/@shikijs/langs/dist/gherkin.mjs +5 -0
  530. package/.output/server/node_modules/@shikijs/langs/dist/git-commit.mjs +8 -0
  531. package/.output/server/node_modules/@shikijs/langs/dist/git-rebase.mjs +8 -0
  532. package/.output/server/node_modules/@shikijs/langs/dist/gleam.mjs +5 -0
  533. package/.output/server/node_modules/@shikijs/langs/dist/glimmer-js.mjs +14 -0
  534. package/.output/server/node_modules/@shikijs/langs/dist/glimmer-ts.mjs +14 -0
  535. package/.output/server/node_modules/@shikijs/langs/dist/glsl.mjs +8 -0
  536. package/.output/server/node_modules/@shikijs/langs/dist/gn.mjs +5 -0
  537. package/.output/server/node_modules/@shikijs/langs/dist/gnuplot.mjs +5 -0
  538. package/.output/server/node_modules/@shikijs/langs/dist/go.mjs +5 -0
  539. package/.output/server/node_modules/@shikijs/langs/dist/graphql.mjs +14 -0
  540. package/.output/server/node_modules/@shikijs/langs/dist/groovy.mjs +5 -0
  541. package/.output/server/node_modules/@shikijs/langs/dist/hack.mjs +10 -0
  542. package/.output/server/node_modules/@shikijs/langs/dist/haml.mjs +10 -0
  543. package/.output/server/node_modules/@shikijs/langs/dist/handlebars.mjs +14 -0
  544. package/.output/server/node_modules/@shikijs/langs/dist/haskell.mjs +5 -0
  545. package/.output/server/node_modules/@shikijs/langs/dist/haxe.mjs +5 -0
  546. package/.output/server/node_modules/@shikijs/langs/dist/hcl.mjs +5 -0
  547. package/.output/server/node_modules/@shikijs/langs/dist/hjson.mjs +5 -0
  548. package/.output/server/node_modules/@shikijs/langs/dist/hlsl.mjs +5 -0
  549. package/.output/server/node_modules/@shikijs/langs/dist/html-derivative.mjs +8 -0
  550. package/.output/server/node_modules/@shikijs/langs/dist/html.mjs +10 -0
  551. package/.output/server/node_modules/@shikijs/langs/dist/http.mjs +14 -0
  552. package/.output/server/node_modules/@shikijs/langs/dist/hurl.mjs +12 -0
  553. package/.output/server/node_modules/@shikijs/langs/dist/hxml.mjs +8 -0
  554. package/.output/server/node_modules/@shikijs/langs/dist/hy.mjs +5 -0
  555. package/.output/server/node_modules/@shikijs/langs/dist/imba.mjs +5 -0
  556. package/.output/server/node_modules/@shikijs/langs/dist/ini.mjs +5 -0
  557. package/.output/server/node_modules/@shikijs/langs/dist/java.mjs +5 -0
  558. package/.output/server/node_modules/@shikijs/langs/dist/javascript.mjs +5 -0
  559. package/.output/server/node_modules/@shikijs/langs/dist/jinja-html.mjs +8 -0
  560. package/.output/server/node_modules/@shikijs/langs/dist/jinja.mjs +8 -0
  561. package/.output/server/node_modules/@shikijs/langs/dist/jison.mjs +8 -0
  562. package/.output/server/node_modules/@shikijs/langs/dist/json.mjs +5 -0
  563. package/.output/server/node_modules/@shikijs/langs/dist/json5.mjs +5 -0
  564. package/.output/server/node_modules/@shikijs/langs/dist/jsonc.mjs +5 -0
  565. package/.output/server/node_modules/@shikijs/langs/dist/jsonl.mjs +5 -0
  566. package/.output/server/node_modules/@shikijs/langs/dist/jsonnet.mjs +5 -0
  567. package/.output/server/node_modules/@shikijs/langs/dist/jssm.mjs +5 -0
  568. package/.output/server/node_modules/@shikijs/langs/dist/jsx.mjs +5 -0
  569. package/.output/server/node_modules/@shikijs/langs/dist/julia.mjs +16 -0
  570. package/.output/server/node_modules/@shikijs/langs/dist/kdl.mjs +5 -0
  571. package/.output/server/node_modules/@shikijs/langs/dist/kotlin.mjs +5 -0
  572. package/.output/server/node_modules/@shikijs/langs/dist/kusto.mjs +5 -0
  573. package/.output/server/node_modules/@shikijs/langs/dist/latex.mjs +8 -0
  574. package/.output/server/node_modules/@shikijs/langs/dist/lean.mjs +5 -0
  575. package/.output/server/node_modules/@shikijs/langs/dist/less.mjs +5 -0
  576. package/.output/server/node_modules/@shikijs/langs/dist/liquid.mjs +14 -0
  577. package/.output/server/node_modules/@shikijs/langs/dist/llvm.mjs +5 -0
  578. package/.output/server/node_modules/@shikijs/langs/dist/log.mjs +5 -0
  579. package/.output/server/node_modules/@shikijs/langs/dist/logo.mjs +5 -0
  580. package/.output/server/node_modules/@shikijs/langs/dist/lua.mjs +8 -0
  581. package/.output/server/node_modules/@shikijs/langs/dist/luau.mjs +5 -0
  582. package/.output/server/node_modules/@shikijs/langs/dist/make.mjs +5 -0
  583. package/.output/server/node_modules/@shikijs/langs/dist/markdown-nix.mjs +5 -0
  584. package/.output/server/node_modules/@shikijs/langs/dist/markdown-vue.mjs +5 -0
  585. package/.output/server/node_modules/@shikijs/langs/dist/markdown.mjs +5 -0
  586. package/.output/server/node_modules/@shikijs/langs/dist/marko.mjs +14 -0
  587. package/.output/server/node_modules/@shikijs/langs/dist/matlab.mjs +5 -0
  588. package/.output/server/node_modules/@shikijs/langs/dist/mdc.mjs +12 -0
  589. package/.output/server/node_modules/@shikijs/langs/dist/mdx.mjs +5 -0
  590. package/.output/server/node_modules/@shikijs/langs/dist/mermaid.mjs +5 -0
  591. package/.output/server/node_modules/@shikijs/langs/dist/mipsasm.mjs +5 -0
  592. package/.output/server/node_modules/@shikijs/langs/dist/mojo.mjs +5 -0
  593. package/.output/server/node_modules/@shikijs/langs/dist/moonbit.mjs +5 -0
  594. package/.output/server/node_modules/@shikijs/langs/dist/move.mjs +5 -0
  595. package/.output/server/node_modules/@shikijs/langs/dist/narrat.mjs +5 -0
  596. package/.output/server/node_modules/@shikijs/langs/dist/nextflow.mjs +5 -0
  597. package/.output/server/node_modules/@shikijs/langs/dist/nginx.mjs +8 -0
  598. package/.output/server/node_modules/@shikijs/langs/dist/nim.mjs +20 -0
  599. package/.output/server/node_modules/@shikijs/langs/dist/nix.mjs +8 -0
  600. package/.output/server/node_modules/@shikijs/langs/dist/nushell.mjs +5 -0
  601. package/.output/server/node_modules/@shikijs/langs/dist/objective-c.mjs +5 -0
  602. package/.output/server/node_modules/@shikijs/langs/dist/objective-cpp.mjs +5 -0
  603. package/.output/server/node_modules/@shikijs/langs/dist/ocaml.mjs +5 -0
  604. package/.output/server/node_modules/@shikijs/langs/dist/odin.mjs +5 -0
  605. package/.output/server/node_modules/@shikijs/langs/dist/openscad.mjs +5 -0
  606. package/.output/server/node_modules/@shikijs/langs/dist/pascal.mjs +5 -0
  607. package/.output/server/node_modules/@shikijs/langs/dist/perl.mjs +16 -0
  608. package/.output/server/node_modules/@shikijs/langs/dist/php.mjs +18 -0
  609. package/.output/server/node_modules/@shikijs/langs/dist/pkl.mjs +5 -0
  610. package/.output/server/node_modules/@shikijs/langs/dist/plsql.mjs +5 -0
  611. package/.output/server/node_modules/@shikijs/langs/dist/po.mjs +5 -0
  612. package/.output/server/node_modules/@shikijs/langs/dist/polar.mjs +5 -0
  613. package/.output/server/node_modules/@shikijs/langs/dist/postcss.mjs +5 -0
  614. package/.output/server/node_modules/@shikijs/langs/dist/powerquery.mjs +5 -0
  615. package/.output/server/node_modules/@shikijs/langs/dist/powershell.mjs +5 -0
  616. package/.output/server/node_modules/@shikijs/langs/dist/prisma.mjs +5 -0
  617. package/.output/server/node_modules/@shikijs/langs/dist/prolog.mjs +5 -0
  618. package/.output/server/node_modules/@shikijs/langs/dist/proto.mjs +5 -0
  619. package/.output/server/node_modules/@shikijs/langs/dist/pug.mjs +12 -0
  620. package/.output/server/node_modules/@shikijs/langs/dist/puppet.mjs +5 -0
  621. package/.output/server/node_modules/@shikijs/langs/dist/purescript.mjs +5 -0
  622. package/.output/server/node_modules/@shikijs/langs/dist/python.mjs +5 -0
  623. package/.output/server/node_modules/@shikijs/langs/dist/qml.mjs +8 -0
  624. package/.output/server/node_modules/@shikijs/langs/dist/qmldir.mjs +5 -0
  625. package/.output/server/node_modules/@shikijs/langs/dist/qss.mjs +5 -0
  626. package/.output/server/node_modules/@shikijs/langs/dist/r.mjs +5 -0
  627. package/.output/server/node_modules/@shikijs/langs/dist/racket.mjs +5 -0
  628. package/.output/server/node_modules/@shikijs/langs/dist/raku.mjs +5 -0
  629. package/.output/server/node_modules/@shikijs/langs/dist/razor.mjs +10 -0
  630. package/.output/server/node_modules/@shikijs/langs/dist/reg.mjs +5 -0
  631. package/.output/server/node_modules/@shikijs/langs/dist/regexp.mjs +5 -0
  632. package/.output/server/node_modules/@shikijs/langs/dist/rel.mjs +5 -0
  633. package/.output/server/node_modules/@shikijs/langs/dist/riscv.mjs +5 -0
  634. package/.output/server/node_modules/@shikijs/langs/dist/ron.mjs +5 -0
  635. package/.output/server/node_modules/@shikijs/langs/dist/rosmsg.mjs +5 -0
  636. package/.output/server/node_modules/@shikijs/langs/dist/rst.mjs +22 -0
  637. package/.output/server/node_modules/@shikijs/langs/dist/ruby.mjs +30 -0
  638. package/.output/server/node_modules/@shikijs/langs/dist/rust.mjs +5 -0
  639. package/.output/server/node_modules/@shikijs/langs/dist/sas.mjs +8 -0
  640. package/.output/server/node_modules/@shikijs/langs/dist/sass.mjs +5 -0
  641. package/.output/server/node_modules/@shikijs/langs/dist/scala.mjs +5 -0
  642. package/.output/server/node_modules/@shikijs/langs/dist/scheme.mjs +5 -0
  643. package/.output/server/node_modules/@shikijs/langs/dist/scss.mjs +8 -0
  644. package/.output/server/node_modules/@shikijs/langs/dist/sdbl.mjs +5 -0
  645. package/.output/server/node_modules/@shikijs/langs/dist/shaderlab.mjs +8 -0
  646. package/.output/server/node_modules/@shikijs/langs/dist/shellscript.mjs +5 -0
  647. package/.output/server/node_modules/@shikijs/langs/dist/shellsession.mjs +8 -0
  648. package/.output/server/node_modules/@shikijs/langs/dist/smalltalk.mjs +5 -0
  649. package/.output/server/node_modules/@shikijs/langs/dist/solidity.mjs +5 -0
  650. package/.output/server/node_modules/@shikijs/langs/dist/soy.mjs +8 -0
  651. package/.output/server/node_modules/@shikijs/langs/dist/sparql.mjs +8 -0
  652. package/.output/server/node_modules/@shikijs/langs/dist/splunk.mjs +5 -0
  653. package/.output/server/node_modules/@shikijs/langs/dist/sql.mjs +5 -0
  654. package/.output/server/node_modules/@shikijs/langs/dist/ssh-config.mjs +5 -0
  655. package/.output/server/node_modules/@shikijs/langs/dist/stata.mjs +8 -0
  656. package/.output/server/node_modules/@shikijs/langs/dist/stylus.mjs +5 -0
  657. package/.output/server/node_modules/@shikijs/langs/dist/surrealql.mjs +8 -0
  658. package/.output/server/node_modules/@shikijs/langs/dist/svelte.mjs +14 -0
  659. package/.output/server/node_modules/@shikijs/langs/dist/swift.mjs +5 -0
  660. package/.output/server/node_modules/@shikijs/langs/dist/system-verilog.mjs +5 -0
  661. package/.output/server/node_modules/@shikijs/langs/dist/systemd.mjs +5 -0
  662. package/.output/server/node_modules/@shikijs/langs/dist/talonscript.mjs +5 -0
  663. package/.output/server/node_modules/@shikijs/langs/dist/tasl.mjs +5 -0
  664. package/.output/server/node_modules/@shikijs/langs/dist/tcl.mjs +5 -0
  665. package/.output/server/node_modules/@shikijs/langs/dist/templ.mjs +12 -0
  666. package/.output/server/node_modules/@shikijs/langs/dist/terraform.mjs +5 -0
  667. package/.output/server/node_modules/@shikijs/langs/dist/tex.mjs +8 -0
  668. package/.output/server/node_modules/@shikijs/langs/dist/toml.mjs +5 -0
  669. package/.output/server/node_modules/@shikijs/langs/dist/ts-tags.mjs +18 -0
  670. package/.output/server/node_modules/@shikijs/langs/dist/tsv.mjs +5 -0
  671. package/.output/server/node_modules/@shikijs/langs/dist/tsx.mjs +5 -0
  672. package/.output/server/node_modules/@shikijs/langs/dist/turtle.mjs +5 -0
  673. package/.output/server/node_modules/@shikijs/langs/dist/twig.mjs +18 -0
  674. package/.output/server/node_modules/@shikijs/langs/dist/typescript.mjs +5 -0
  675. package/.output/server/node_modules/@shikijs/langs/dist/typespec.mjs +5 -0
  676. package/.output/server/node_modules/@shikijs/langs/dist/typst.mjs +5 -0
  677. package/.output/server/node_modules/@shikijs/langs/dist/v.mjs +5 -0
  678. package/.output/server/node_modules/@shikijs/langs/dist/vala.mjs +5 -0
  679. package/.output/server/node_modules/@shikijs/langs/dist/vb.mjs +5 -0
  680. package/.output/server/node_modules/@shikijs/langs/dist/verilog.mjs +5 -0
  681. package/.output/server/node_modules/@shikijs/langs/dist/vhdl.mjs +5 -0
  682. package/.output/server/node_modules/@shikijs/langs/dist/viml.mjs +5 -0
  683. package/.output/server/node_modules/@shikijs/langs/dist/vue-directives.mjs +5 -0
  684. package/.output/server/node_modules/@shikijs/langs/dist/vue-html.mjs +8 -0
  685. package/.output/server/node_modules/@shikijs/langs/dist/vue-interpolations.mjs +5 -0
  686. package/.output/server/node_modules/@shikijs/langs/dist/vue-sfc-style-variable-injection.mjs +8 -0
  687. package/.output/server/node_modules/@shikijs/langs/dist/vue-vine.mjs +18 -0
  688. package/.output/server/node_modules/@shikijs/langs/dist/vue.mjs +26 -0
  689. package/.output/server/node_modules/@shikijs/langs/dist/vyper.mjs +5 -0
  690. package/.output/server/node_modules/@shikijs/langs/dist/wasm.mjs +5 -0
  691. package/.output/server/node_modules/@shikijs/langs/dist/wenyan.mjs +5 -0
  692. package/.output/server/node_modules/@shikijs/langs/dist/wgsl.mjs +5 -0
  693. package/.output/server/node_modules/@shikijs/langs/dist/wikitext.mjs +5 -0
  694. package/.output/server/node_modules/@shikijs/langs/dist/wit.mjs +5 -0
  695. package/.output/server/node_modules/@shikijs/langs/dist/wolfram.mjs +5 -0
  696. package/.output/server/node_modules/@shikijs/langs/dist/xml.mjs +8 -0
  697. package/.output/server/node_modules/@shikijs/langs/dist/xsl.mjs +8 -0
  698. package/.output/server/node_modules/@shikijs/langs/dist/yaml.mjs +5 -0
  699. package/.output/server/node_modules/@shikijs/langs/dist/zenscript.mjs +5 -0
  700. package/.output/server/node_modules/@shikijs/langs/dist/zig.mjs +5 -0
  701. package/.output/server/node_modules/@shikijs/langs/package.json +380 -0
  702. package/.output/server/node_modules/@shikijs/themes/dist/andromeeda.mjs +2 -0
  703. package/.output/server/node_modules/@shikijs/themes/dist/aurora-x.mjs +2 -0
  704. package/.output/server/node_modules/@shikijs/themes/dist/ayu-dark.mjs +2 -0
  705. package/.output/server/node_modules/@shikijs/themes/dist/ayu-light.mjs +2 -0
  706. package/.output/server/node_modules/@shikijs/themes/dist/ayu-mirage.mjs +2 -0
  707. package/.output/server/node_modules/@shikijs/themes/dist/catppuccin-frappe.mjs +2 -0
  708. package/.output/server/node_modules/@shikijs/themes/dist/catppuccin-latte.mjs +2 -0
  709. package/.output/server/node_modules/@shikijs/themes/dist/catppuccin-macchiato.mjs +2 -0
  710. package/.output/server/node_modules/@shikijs/themes/dist/catppuccin-mocha.mjs +2 -0
  711. package/.output/server/node_modules/@shikijs/themes/dist/dark-plus.mjs +2 -0
  712. package/.output/server/node_modules/@shikijs/themes/dist/dracula-soft.mjs +2 -0
  713. package/.output/server/node_modules/@shikijs/themes/dist/dracula.mjs +2 -0
  714. package/.output/server/node_modules/@shikijs/themes/dist/everforest-dark.mjs +2 -0
  715. package/.output/server/node_modules/@shikijs/themes/dist/everforest-light.mjs +2 -0
  716. package/.output/server/node_modules/@shikijs/themes/dist/github-dark-default.mjs +2 -0
  717. package/.output/server/node_modules/@shikijs/themes/dist/github-dark-dimmed.mjs +2 -0
  718. package/.output/server/node_modules/@shikijs/themes/dist/github-dark-high-contrast.mjs +2 -0
  719. package/.output/server/node_modules/@shikijs/themes/dist/github-dark.mjs +2 -0
  720. package/.output/server/node_modules/@shikijs/themes/dist/github-light-default.mjs +2 -0
  721. package/.output/server/node_modules/@shikijs/themes/dist/github-light-high-contrast.mjs +2 -0
  722. package/.output/server/node_modules/@shikijs/themes/dist/github-light.mjs +2 -0
  723. package/.output/server/node_modules/@shikijs/themes/dist/gruvbox-dark-hard.mjs +2 -0
  724. package/.output/server/node_modules/@shikijs/themes/dist/gruvbox-dark-medium.mjs +2 -0
  725. package/.output/server/node_modules/@shikijs/themes/dist/gruvbox-dark-soft.mjs +2 -0
  726. package/.output/server/node_modules/@shikijs/themes/dist/gruvbox-light-hard.mjs +2 -0
  727. package/.output/server/node_modules/@shikijs/themes/dist/gruvbox-light-medium.mjs +2 -0
  728. package/.output/server/node_modules/@shikijs/themes/dist/gruvbox-light-soft.mjs +2 -0
  729. package/.output/server/node_modules/@shikijs/themes/dist/horizon.mjs +2 -0
  730. package/.output/server/node_modules/@shikijs/themes/dist/houston.mjs +2 -0
  731. package/.output/server/node_modules/@shikijs/themes/dist/kanagawa-dragon.mjs +2 -0
  732. package/.output/server/node_modules/@shikijs/themes/dist/kanagawa-lotus.mjs +2 -0
  733. package/.output/server/node_modules/@shikijs/themes/dist/kanagawa-wave.mjs +2 -0
  734. package/.output/server/node_modules/@shikijs/themes/dist/laserwave.mjs +2 -0
  735. package/.output/server/node_modules/@shikijs/themes/dist/light-plus.mjs +2 -0
  736. package/.output/server/node_modules/@shikijs/themes/dist/material-theme-darker.mjs +2 -0
  737. package/.output/server/node_modules/@shikijs/themes/dist/material-theme-lighter.mjs +2 -0
  738. package/.output/server/node_modules/@shikijs/themes/dist/material-theme-ocean.mjs +2 -0
  739. package/.output/server/node_modules/@shikijs/themes/dist/material-theme-palenight.mjs +2 -0
  740. package/.output/server/node_modules/@shikijs/themes/dist/material-theme.mjs +2 -0
  741. package/.output/server/node_modules/@shikijs/themes/dist/min-dark.mjs +2 -0
  742. package/.output/server/node_modules/@shikijs/themes/dist/min-light.mjs +2 -0
  743. package/.output/server/node_modules/@shikijs/themes/dist/monokai.mjs +2 -0
  744. package/.output/server/node_modules/@shikijs/themes/dist/night-owl-light.mjs +2 -0
  745. package/.output/server/node_modules/@shikijs/themes/dist/night-owl.mjs +2 -0
  746. package/.output/server/node_modules/@shikijs/themes/dist/nord.mjs +2 -0
  747. package/.output/server/node_modules/@shikijs/themes/dist/one-dark-pro.mjs +2 -0
  748. package/.output/server/node_modules/@shikijs/themes/dist/one-light.mjs +2 -0
  749. package/.output/server/node_modules/@shikijs/themes/dist/plastic.mjs +2 -0
  750. package/.output/server/node_modules/@shikijs/themes/dist/poimandres.mjs +2 -0
  751. package/.output/server/node_modules/@shikijs/themes/dist/red.mjs +2 -0
  752. package/.output/server/node_modules/@shikijs/themes/dist/rose-pine-dawn.mjs +2 -0
  753. package/.output/server/node_modules/@shikijs/themes/dist/rose-pine-moon.mjs +2 -0
  754. package/.output/server/node_modules/@shikijs/themes/dist/rose-pine.mjs +2 -0
  755. package/.output/server/node_modules/@shikijs/themes/dist/slack-dark.mjs +2 -0
  756. package/.output/server/node_modules/@shikijs/themes/dist/slack-ochin.mjs +2 -0
  757. package/.output/server/node_modules/@shikijs/themes/dist/snazzy-light.mjs +2 -0
  758. package/.output/server/node_modules/@shikijs/themes/dist/solarized-dark.mjs +2 -0
  759. package/.output/server/node_modules/@shikijs/themes/dist/solarized-light.mjs +2 -0
  760. package/.output/server/node_modules/@shikijs/themes/dist/synthwave-84.mjs +2 -0
  761. package/.output/server/node_modules/@shikijs/themes/dist/tokyo-night.mjs +2 -0
  762. package/.output/server/node_modules/@shikijs/themes/dist/vesper.mjs +2 -0
  763. package/.output/server/node_modules/@shikijs/themes/dist/vitesse-black.mjs +2 -0
  764. package/.output/server/node_modules/@shikijs/themes/dist/vitesse-dark.mjs +2 -0
  765. package/.output/server/node_modules/@shikijs/themes/dist/vitesse-light.mjs +2 -0
  766. package/.output/server/node_modules/@shikijs/themes/package.json +102 -0
  767. package/.output/server/node_modules/@shikijs/types/dist/index.mjs +8 -0
  768. package/.output/server/node_modules/@shikijs/types/package.json +36 -0
  769. package/.output/server/node_modules/@shikijs/vscode-textmate/dist/index.js +3216 -0
  770. package/.output/server/node_modules/@shikijs/vscode-textmate/package.json +46 -0
  771. package/.output/server/node_modules/@swc/helpers/cjs/_check_private_redeclaration.cjs +8 -0
  772. package/.output/server/node_modules/@swc/helpers/cjs/_class_private_field_init.cjs +9 -0
  773. package/.output/server/node_modules/@swc/helpers/esm/_check_private_redeclaration.js +6 -0
  774. package/.output/server/node_modules/@swc/helpers/esm/_class_private_field_init.js +7 -0
  775. package/.output/server/node_modules/@swc/helpers/package.json +694 -0
  776. package/.output/server/node_modules/@tanstack/virtual-core/dist/esm/index.js +887 -0
  777. package/.output/server/node_modules/@tanstack/virtual-core/dist/esm/utils.js +73 -0
  778. package/.output/server/node_modules/@tanstack/virtual-core/package.json +56 -0
  779. package/.output/server/node_modules/@tanstack/vue-virtual/dist/esm/index.js +66 -0
  780. package/.output/server/node_modules/@tanstack/vue-virtual/package.json +68 -0
  781. package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6763 -0
  782. package/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
  783. package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +689 -0
  784. package/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
  785. package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1413 -0
  786. package/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  787. package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/api.js +2 -0
  788. package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/app.js +2 -0
  789. package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/component.js +2 -0
  790. package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/context.js +2 -0
  791. package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/hooks.js +2 -0
  792. package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/index.js +22 -0
  793. package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/util.js +2 -0
  794. package/.output/server/node_modules/@vue/devtools-api/lib/cjs/const.js +5 -0
  795. package/.output/server/node_modules/@vue/devtools-api/lib/cjs/env.js +17 -0
  796. package/.output/server/node_modules/@vue/devtools-api/lib/cjs/index.js +45 -0
  797. package/.output/server/node_modules/@vue/devtools-api/lib/cjs/plugin.js +2 -0
  798. package/.output/server/node_modules/@vue/devtools-api/lib/cjs/proxy.js +111 -0
  799. package/.output/server/node_modules/@vue/devtools-api/lib/cjs/time.js +28 -0
  800. package/.output/server/node_modules/@vue/devtools-api/package.json +37 -0
  801. package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1870 -0
  802. package/.output/server/node_modules/@vue/reactivity/package.json +55 -0
  803. package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6798 -0
  804. package/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
  805. package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1750 -0
  806. package/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
  807. package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +879 -0
  808. package/.output/server/node_modules/@vue/server-renderer/package.json +55 -0
  809. package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +604 -0
  810. package/.output/server/node_modules/@vue/shared/package.json +47 -0
  811. package/.output/server/node_modules/@vueuse/core/dist/index.js +8596 -0
  812. package/.output/server/node_modules/@vueuse/core/package.json +49 -0
  813. package/.output/server/node_modules/@vueuse/shared/dist/index.js +2066 -0
  814. package/.output/server/node_modules/@vueuse/shared/package.json +42 -0
  815. package/.output/server/node_modules/aria-hidden/dist/es5/index.js +174 -0
  816. package/.output/server/node_modules/aria-hidden/package.json +71 -0
  817. package/.output/server/node_modules/ccount/index.js +27 -0
  818. package/.output/server/node_modules/ccount/package.json +71 -0
  819. package/.output/server/node_modules/character-entities-html4/index.js +259 -0
  820. package/.output/server/node_modules/character-entities-html4/package.json +79 -0
  821. package/.output/server/node_modules/character-entities-legacy/index.js +113 -0
  822. package/.output/server/node_modules/character-entities-legacy/package.json +77 -0
  823. package/.output/server/node_modules/chokidar/handler.js +632 -0
  824. package/.output/server/node_modules/chokidar/index.js +822 -0
  825. package/.output/server/node_modules/chokidar/package.json +63 -0
  826. package/.output/server/node_modules/class-variance-authority/dist/index.mjs +56 -0
  827. package/.output/server/node_modules/class-variance-authority/package.json +63 -0
  828. package/.output/server/node_modules/clsx/dist/clsx.mjs +1 -0
  829. package/.output/server/node_modules/clsx/package.json +60 -0
  830. package/.output/server/node_modules/comma-separated-tokens/index.js +74 -0
  831. package/.output/server/node_modules/comma-separated-tokens/package.json +72 -0
  832. package/.output/server/node_modules/defu/dist/defu.mjs +69 -0
  833. package/.output/server/node_modules/defu/package.json +43 -0
  834. package/.output/server/node_modules/devalue/index.js +4 -0
  835. package/.output/server/node_modules/devalue/package.json +37 -0
  836. package/.output/server/node_modules/devalue/src/base64.js +110 -0
  837. package/.output/server/node_modules/devalue/src/constants.js +7 -0
  838. package/.output/server/node_modules/devalue/src/parse.js +246 -0
  839. package/.output/server/node_modules/devalue/src/stringify.js +350 -0
  840. package/.output/server/node_modules/devalue/src/uneval.js +490 -0
  841. package/.output/server/node_modules/devalue/src/utils.js +148 -0
  842. package/.output/server/node_modules/dompurify/dist/purify.es.mjs +1386 -0
  843. package/.output/server/node_modules/dompurify/package.json +171 -0
  844. package/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  845. package/.output/server/node_modules/entities/dist/commonjs/decode.js +568 -0
  846. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
  847. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
  848. package/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
  849. package/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
  850. package/.output/server/node_modules/entities/dist/commonjs/package.json +3 -0
  851. package/.output/server/node_modules/entities/package.json +120 -0
  852. package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  853. package/.output/server/node_modules/estree-walker/package.json +37 -0
  854. package/.output/server/node_modules/hast-util-to-html/index.js +8 -0
  855. package/.output/server/node_modules/hast-util-to-html/lib/handle/comment.js +52 -0
  856. package/.output/server/node_modules/hast-util-to-html/lib/handle/doctype.js +27 -0
  857. package/.output/server/node_modules/hast-util-to-html/lib/handle/element.js +265 -0
  858. package/.output/server/node_modules/hast-util-to-html/lib/handle/index.js +47 -0
  859. package/.output/server/node_modules/hast-util-to-html/lib/handle/raw.js +27 -0
  860. package/.output/server/node_modules/hast-util-to-html/lib/handle/root.js +22 -0
  861. package/.output/server/node_modules/hast-util-to-html/lib/handle/text.js +38 -0
  862. package/.output/server/node_modules/hast-util-to-html/lib/index.js +257 -0
  863. package/.output/server/node_modules/hast-util-to-html/lib/omission/closing.js +358 -0
  864. package/.output/server/node_modules/hast-util-to-html/lib/omission/omission.js +44 -0
  865. package/.output/server/node_modules/hast-util-to-html/lib/omission/opening.js +148 -0
  866. package/.output/server/node_modules/hast-util-to-html/lib/omission/util/siblings.js +50 -0
  867. package/.output/server/node_modules/hast-util-to-html/package.json +106 -0
  868. package/.output/server/node_modules/hast-util-whitespace/index.js +1 -0
  869. package/.output/server/node_modules/hast-util-whitespace/lib/index.js +34 -0
  870. package/.output/server/node_modules/hast-util-whitespace/package.json +83 -0
  871. package/.output/server/node_modules/hookable/dist/index.mjs +266 -0
  872. package/.output/server/node_modules/hookable/package.json +52 -0
  873. package/.output/server/node_modules/html-void-elements/index.js +27 -0
  874. package/.output/server/node_modules/html-void-elements/package.json +79 -0
  875. package/.output/server/node_modules/lucide-vue-next/dist/cjs/lucide-vue-next.js +24066 -0
  876. package/.output/server/node_modules/lucide-vue-next/package.json +64 -0
  877. package/.output/server/node_modules/marked/lib/marked.esm.js +72 -0
  878. package/.output/server/node_modules/marked/package.json +103 -0
  879. package/.output/server/node_modules/ohash/dist/crypto/node/index.mjs +5 -0
  880. package/.output/server/node_modules/ohash/dist/index.mjs +10 -0
  881. package/.output/server/node_modules/ohash/dist/shared/ohash.D__AXeF1.mjs +13 -0
  882. package/.output/server/node_modules/ohash/package.json +57 -0
  883. package/.output/server/node_modules/oniguruma-parser/dist/parser/node-utils.js +2 -0
  884. package/.output/server/node_modules/oniguruma-parser/dist/parser/parse.js +2 -0
  885. package/.output/server/node_modules/oniguruma-parser/dist/tokenizer/tokenize.js +34 -0
  886. package/.output/server/node_modules/oniguruma-parser/dist/traverser/traverse.js +2 -0
  887. package/.output/server/node_modules/oniguruma-parser/dist/utils.js +2 -0
  888. package/.output/server/node_modules/oniguruma-parser/package.json +64 -0
  889. package/.output/server/node_modules/oniguruma-to-es/dist/esm/index.js +1876 -0
  890. package/.output/server/node_modules/oniguruma-to-es/dist/esm/package.json +1 -0
  891. package/.output/server/node_modules/oniguruma-to-es/package.json +61 -0
  892. package/.output/server/node_modules/perfect-debounce/dist/index.mjs +89 -0
  893. package/.output/server/node_modules/perfect-debounce/package.json +41 -0
  894. package/.output/server/node_modules/property-information/index.js +17 -0
  895. package/.output/server/node_modules/property-information/lib/aria.js +61 -0
  896. package/.output/server/node_modules/property-information/lib/find.js +97 -0
  897. package/.output/server/node_modules/property-information/lib/hast-to-react.js +30 -0
  898. package/.output/server/node_modules/property-information/lib/html.js +322 -0
  899. package/.output/server/node_modules/property-information/lib/normalize.js +12 -0
  900. package/.output/server/node_modules/property-information/lib/svg.js +567 -0
  901. package/.output/server/node_modules/property-information/lib/util/case-insensitive-transform.js +13 -0
  902. package/.output/server/node_modules/property-information/lib/util/case-sensitive-transform.js +11 -0
  903. package/.output/server/node_modules/property-information/lib/util/create.js +69 -0
  904. package/.output/server/node_modules/property-information/lib/util/defined-info.js +60 -0
  905. package/.output/server/node_modules/property-information/lib/util/info.js +32 -0
  906. package/.output/server/node_modules/property-information/lib/util/merge.js +27 -0
  907. package/.output/server/node_modules/property-information/lib/util/schema.js +29 -0
  908. package/.output/server/node_modules/property-information/lib/util/types.js +13 -0
  909. package/.output/server/node_modules/property-information/lib/xlink.js +17 -0
  910. package/.output/server/node_modules/property-information/lib/xml.js +9 -0
  911. package/.output/server/node_modules/property-information/lib/xmlns.js +9 -0
  912. package/.output/server/node_modules/property-information/package.json +121 -0
  913. package/.output/server/node_modules/readdirp/index.js +272 -0
  914. package/.output/server/node_modules/readdirp/package.json +66 -0
  915. package/.output/server/node_modules/regex/package.json +60 -0
  916. package/.output/server/node_modules/regex/src/atomic.js +224 -0
  917. package/.output/server/node_modules/regex/src/internals.js +2 -0
  918. package/.output/server/node_modules/regex/src/subclass.js +98 -0
  919. package/.output/server/node_modules/regex/src/utils-internals.js +33 -0
  920. package/.output/server/node_modules/regex-recursion/package.json +47 -0
  921. package/.output/server/node_modules/regex-recursion/src/index.js +365 -0
  922. package/.output/server/node_modules/regex-utilities/package.json +35 -0
  923. package/.output/server/node_modules/regex-utilities/src/index.js +170 -0
  924. package/.output/server/node_modules/reka-ui/dist/Accordion/AccordionContent.js +66 -0
  925. package/.output/server/node_modules/reka-ui/dist/Accordion/AccordionHeader.js +53 -0
  926. package/.output/server/node_modules/reka-ui/dist/Accordion/AccordionItem.js +116 -0
  927. package/.output/server/node_modules/reka-ui/dist/Accordion/AccordionRoot.js +96 -0
  928. package/.output/server/node_modules/reka-ui/dist/Accordion/AccordionTrigger.js +68 -0
  929. package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogAction.js +37 -0
  930. package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogCancel.js +42 -0
  931. package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogContent.js +73 -0
  932. package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogDescription.js +37 -0
  933. package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogOverlay.js +40 -0
  934. package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogPortal.js +42 -0
  935. package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogRoot.js +40 -0
  936. package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogTitle.js +37 -0
  937. package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogTrigger.js +37 -0
  938. package/.output/server/node_modules/reka-ui/dist/AspectRatio/AspectRatio.js +56 -0
  939. package/.output/server/node_modules/reka-ui/dist/Avatar/AvatarFallback.js +59 -0
  940. package/.output/server/node_modules/reka-ui/dist/Avatar/AvatarImage.js +76 -0
  941. package/.output/server/node_modules/reka-ui/dist/Avatar/AvatarRoot.js +42 -0
  942. package/.output/server/node_modules/reka-ui/dist/Avatar/utils.js +49 -0
  943. package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarCell.js +53 -0
  944. package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarCellTrigger.js +176 -0
  945. package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarGrid.js +51 -0
  946. package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarGridBody.js +35 -0
  947. package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarGridHead.js +35 -0
  948. package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarGridRow.js +35 -0
  949. package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarHeadCell.js +35 -0
  950. package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarHeader.js +35 -0
  951. package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarHeading.js +37 -0
  952. package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarNext.js +58 -0
  953. package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarPrev.js +58 -0
  954. package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarRoot.js +317 -0
  955. package/.output/server/node_modules/reka-ui/dist/Calendar/useCalendar.js +267 -0
  956. package/.output/server/node_modules/reka-ui/dist/Checkbox/CheckboxGroupRoot.js +115 -0
  957. package/.output/server/node_modules/reka-ui/dist/Checkbox/CheckboxIndicator.js +59 -0
  958. package/.output/server/node_modules/reka-ui/dist/Checkbox/CheckboxRoot.js +157 -0
  959. package/.output/server/node_modules/reka-ui/dist/Checkbox/utils.js +11 -0
  960. package/.output/server/node_modules/reka-ui/dist/Collapsible/CollapsibleContent.js +113 -0
  961. package/.output/server/node_modules/reka-ui/dist/Collapsible/CollapsibleRoot.js +86 -0
  962. package/.output/server/node_modules/reka-ui/dist/Collapsible/CollapsibleTrigger.js +59 -0
  963. package/.output/server/node_modules/reka-ui/dist/Collection/Collection.js +79 -0
  964. package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxAnchor.js +50 -0
  965. package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxArrow.js +55 -0
  966. package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxCancel.js +50 -0
  967. package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxContent.js +144 -0
  968. package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxContentImpl.js +214 -0
  969. package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxEmpty.js +37 -0
  970. package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxGroup.js +58 -0
  971. package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxInput.js +134 -0
  972. package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxItem.js +88 -0
  973. package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxItemIndicator.js +35 -0
  974. package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxLabel.js +48 -0
  975. package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxPortal.js +42 -0
  976. package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxRoot.js +259 -0
  977. package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxSeparator.js +36 -0
  978. package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxTrigger.js +68 -0
  979. package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxViewport.js +64 -0
  980. package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxVirtualizer.js +45 -0
  981. package/.output/server/node_modules/reka-ui/dist/ConfigProvider/ConfigProvider.js +58 -0
  982. package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuArrow.js +51 -0
  983. package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuCheckboxItem.js +55 -0
  984. package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuContent.js +136 -0
  985. package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuGroup.js +36 -0
  986. package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuItem.js +51 -0
  987. package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuItemIndicator.js +40 -0
  988. package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuLabel.js +36 -0
  989. package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuPortal.js +42 -0
  990. package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuRadioGroup.js +47 -0
  991. package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuRadioItem.js +55 -0
  992. package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuRoot.js +74 -0
  993. package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuSeparator.js +36 -0
  994. package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuSub.js +47 -0
  995. package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuSubContent.js +126 -0
  996. package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuSubTrigger.js +44 -0
  997. package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuTrigger.js +124 -0
  998. package/.output/server/node_modules/reka-ui/dist/ContextMenu/utils.js +8 -0
  999. package/.output/server/node_modules/reka-ui/dist/DateField/DateFieldInput.js +90 -0
  1000. package/.output/server/node_modules/reka-ui/dist/DateField/DateFieldRoot.js +284 -0
  1001. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerAnchor.js +38 -0
  1002. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerArrow.js +46 -0
  1003. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerCalendar.js +60 -0
  1004. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerCell.js +38 -0
  1005. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerCellTrigger.js +42 -0
  1006. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerClose.js +34 -0
  1007. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerContent.js +147 -0
  1008. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerField.js +56 -0
  1009. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerGrid.js +34 -0
  1010. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerGridBody.js +34 -0
  1011. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerGridHead.js +34 -0
  1012. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerGridRow.js +34 -0
  1013. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerHeadCell.js +34 -0
  1014. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerHeader.js +34 -0
  1015. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerHeading.js +34 -0
  1016. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerInput.js +38 -0
  1017. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerNext.js +38 -0
  1018. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerPrev.js +38 -0
  1019. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerRoot.js +245 -0
  1020. package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerTrigger.js +41 -0
  1021. package/.output/server/node_modules/reka-ui/dist/DateRangeField/DateRangeFieldInput.js +96 -0
  1022. package/.output/server/node_modules/reka-ui/dist/DateRangeField/DateRangeFieldRoot.js +342 -0
  1023. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerAnchor.js +38 -0
  1024. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerArrow.js +46 -0
  1025. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerCalendar.js +66 -0
  1026. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerCell.js +38 -0
  1027. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerCellTrigger.js +42 -0
  1028. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerClose.js +34 -0
  1029. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerContent.js +147 -0
  1030. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerField.js +57 -0
  1031. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerGrid.js +34 -0
  1032. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerGridBody.js +34 -0
  1033. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerGridHead.js +34 -0
  1034. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerGridRow.js +34 -0
  1035. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerHeadCell.js +34 -0
  1036. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerHeader.js +34 -0
  1037. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerHeading.js +34 -0
  1038. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerInput.js +42 -0
  1039. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerNext.js +38 -0
  1040. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerPrev.js +38 -0
  1041. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerRoot.js +284 -0
  1042. package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerTrigger.js +41 -0
  1043. package/.output/server/node_modules/reka-ui/dist/Dialog/DialogClose.js +42 -0
  1044. package/.output/server/node_modules/reka-ui/dist/Dialog/DialogContent.js +79 -0
  1045. package/.output/server/node_modules/reka-ui/dist/Dialog/DialogContentImpl.js +111 -0
  1046. package/.output/server/node_modules/reka-ui/dist/Dialog/DialogContentModal.js +85 -0
  1047. package/.output/server/node_modules/reka-ui/dist/Dialog/DialogContentNonModal.js +87 -0
  1048. package/.output/server/node_modules/reka-ui/dist/Dialog/DialogDescription.js +39 -0
  1049. package/.output/server/node_modules/reka-ui/dist/Dialog/DialogOverlay.js +52 -0
  1050. package/.output/server/node_modules/reka-ui/dist/Dialog/DialogOverlayImpl.js +48 -0
  1051. package/.output/server/node_modules/reka-ui/dist/Dialog/DialogPortal.js +42 -0
  1052. package/.output/server/node_modules/reka-ui/dist/Dialog/DialogRoot.js +71 -0
  1053. package/.output/server/node_modules/reka-ui/dist/Dialog/DialogTitle.js +39 -0
  1054. package/.output/server/node_modules/reka-ui/dist/Dialog/DialogTrigger.js +58 -0
  1055. package/.output/server/node_modules/reka-ui/dist/Dialog/utils.js +26 -0
  1056. package/.output/server/node_modules/reka-ui/dist/DismissableLayer/DismissableLayer.js +130 -0
  1057. package/.output/server/node_modules/reka-ui/dist/DismissableLayer/DismissableLayerBranch.js +43 -0
  1058. package/.output/server/node_modules/reka-ui/dist/DismissableLayer/utils.js +122 -0
  1059. package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuArrow.js +51 -0
  1060. package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuCheckboxItem.js +55 -0
  1061. package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuContent.js +158 -0
  1062. package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuGroup.js +36 -0
  1063. package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuItem.js +51 -0
  1064. package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuItemIndicator.js +40 -0
  1065. package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuLabel.js +36 -0
  1066. package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuPortal.js +42 -0
  1067. package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuRadioGroup.js +47 -0
  1068. package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuRadioItem.js +52 -0
  1069. package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuRoot.js +82 -0
  1070. package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuSeparator.js +36 -0
  1071. package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuSub.js +47 -0
  1072. package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuSubContent.js +126 -0
  1073. package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuSubTrigger.js +44 -0
  1074. package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuTrigger.js +95 -0
  1075. package/.output/server/node_modules/reka-ui/dist/Editable/EditableArea.js +53 -0
  1076. package/.output/server/node_modules/reka-ui/dist/Editable/EditableCancelTrigger.js +52 -0
  1077. package/.output/server/node_modules/reka-ui/dist/Editable/EditableEditTrigger.js +52 -0
  1078. package/.output/server/node_modules/reka-ui/dist/Editable/EditableInput.js +90 -0
  1079. package/.output/server/node_modules/reka-ui/dist/Editable/EditablePreview.js +62 -0
  1080. package/.output/server/node_modules/reka-ui/dist/Editable/EditableRoot.js +224 -0
  1081. package/.output/server/node_modules/reka-ui/dist/Editable/EditableSubmitTrigger.js +52 -0
  1082. package/.output/server/node_modules/reka-ui/dist/FocusScope/FocusScope.js +154 -0
  1083. package/.output/server/node_modules/reka-ui/dist/FocusScope/stack.js +34 -0
  1084. package/.output/server/node_modules/reka-ui/dist/FocusScope/utils.js +79 -0
  1085. package/.output/server/node_modules/reka-ui/dist/HoverCard/HoverCardArrow.js +51 -0
  1086. package/.output/server/node_modules/reka-ui/dist/HoverCard/HoverCardContent.js +131 -0
  1087. package/.output/server/node_modules/reka-ui/dist/HoverCard/HoverCardContentImpl.js +192 -0
  1088. package/.output/server/node_modules/reka-ui/dist/HoverCard/HoverCardPortal.js +42 -0
  1089. package/.output/server/node_modules/reka-ui/dist/HoverCard/HoverCardRoot.js +88 -0
  1090. package/.output/server/node_modules/reka-ui/dist/HoverCard/HoverCardTrigger.js +70 -0
  1091. package/.output/server/node_modules/reka-ui/dist/HoverCard/utils.js +20 -0
  1092. package/.output/server/node_modules/reka-ui/dist/Label/Label.js +43 -0
  1093. package/.output/server/node_modules/reka-ui/dist/Listbox/ListboxContent.js +79 -0
  1094. package/.output/server/node_modules/reka-ui/dist/Listbox/ListboxFilter.js +104 -0
  1095. package/.output/server/node_modules/reka-ui/dist/Listbox/ListboxGroup.js +39 -0
  1096. package/.output/server/node_modules/reka-ui/dist/Listbox/ListboxGroupLabel.js +41 -0
  1097. package/.output/server/node_modules/reka-ui/dist/Listbox/ListboxItem.js +108 -0
  1098. package/.output/server/node_modules/reka-ui/dist/Listbox/ListboxItemIndicator.js +42 -0
  1099. package/.output/server/node_modules/reka-ui/dist/Listbox/ListboxRoot.js +338 -0
  1100. package/.output/server/node_modules/reka-ui/dist/Listbox/ListboxVirtualizer.js +218 -0
  1101. package/.output/server/node_modules/reka-ui/dist/Listbox/utils.js +22 -0
  1102. package/.output/server/node_modules/reka-ui/dist/Menu/MenuAnchor.js +38 -0
  1103. package/.output/server/node_modules/reka-ui/dist/Menu/MenuArrow.js +46 -0
  1104. package/.output/server/node_modules/reka-ui/dist/Menu/MenuCheckboxItem.js +65 -0
  1105. package/.output/server/node_modules/reka-ui/dist/Menu/MenuContent.js +143 -0
  1106. package/.output/server/node_modules/reka-ui/dist/Menu/MenuContentImpl.js +324 -0
  1107. package/.output/server/node_modules/reka-ui/dist/Menu/MenuGroup.js +34 -0
  1108. package/.output/server/node_modules/reka-ui/dist/Menu/MenuItem.js +90 -0
  1109. package/.output/server/node_modules/reka-ui/dist/Menu/MenuItemImpl.js +100 -0
  1110. package/.output/server/node_modules/reka-ui/dist/Menu/MenuItemIndicator.js +54 -0
  1111. package/.output/server/node_modules/reka-ui/dist/Menu/MenuLabel.js +35 -0
  1112. package/.output/server/node_modules/reka-ui/dist/Menu/MenuPortal.js +42 -0
  1113. package/.output/server/node_modules/reka-ui/dist/Menu/MenuRadioGroup.js +54 -0
  1114. package/.output/server/node_modules/reka-ui/dist/Menu/MenuRadioItem.js +66 -0
  1115. package/.output/server/node_modules/reka-ui/dist/Menu/MenuRoot.js +71 -0
  1116. package/.output/server/node_modules/reka-ui/dist/Menu/MenuRootContentModal.js +135 -0
  1117. package/.output/server/node_modules/reka-ui/dist/Menu/MenuRootContentNonModal.js +129 -0
  1118. package/.output/server/node_modules/reka-ui/dist/Menu/MenuSeparator.js +37 -0
  1119. package/.output/server/node_modules/reka-ui/dist/Menu/MenuSub.js +64 -0
  1120. package/.output/server/node_modules/reka-ui/dist/Menu/MenuSubContent.js +167 -0
  1121. package/.output/server/node_modules/reka-ui/dist/Menu/MenuSubTrigger.js +157 -0
  1122. package/.output/server/node_modules/reka-ui/dist/Menu/utils.js +69 -0
  1123. package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarArrow.js +51 -0
  1124. package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarCheckboxItem.js +55 -0
  1125. package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarContent.js +180 -0
  1126. package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarGroup.js +36 -0
  1127. package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarItem.js +51 -0
  1128. package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarItemIndicator.js +40 -0
  1129. package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarLabel.js +36 -0
  1130. package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarMenu.js +56 -0
  1131. package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarPortal.js +42 -0
  1132. package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarRadioGroup.js +47 -0
  1133. package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarRadioItem.js +52 -0
  1134. package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarRoot.js +100 -0
  1135. package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarSeparator.js +36 -0
  1136. package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarSub.js +47 -0
  1137. package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarSubContent.js +147 -0
  1138. package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarSubTrigger.js +44 -0
  1139. package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarTrigger.js +125 -0
  1140. package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuContent.js +95 -0
  1141. package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuContentImpl.js +166 -0
  1142. package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuIndicator.js +85 -0
  1143. package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuItem.js +121 -0
  1144. package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuLink.js +75 -0
  1145. package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuList.js +57 -0
  1146. package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuRoot.js +183 -0
  1147. package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuSub.js +114 -0
  1148. package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuTrigger.js +150 -0
  1149. package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuViewport.js +158 -0
  1150. package/.output/server/node_modules/reka-ui/dist/NavigationMenu/utils.js +61 -0
  1151. package/.output/server/node_modules/reka-ui/dist/NumberField/NumberFieldDecrement.js +69 -0
  1152. package/.output/server/node_modules/reka-ui/dist/NumberField/NumberFieldIncrement.js +69 -0
  1153. package/.output/server/node_modules/reka-ui/dist/NumberField/NumberFieldInput.js +115 -0
  1154. package/.output/server/node_modules/reka-ui/dist/NumberField/NumberFieldRoot.js +224 -0
  1155. package/.output/server/node_modules/reka-ui/dist/NumberField/utils.js +72 -0
  1156. package/.output/server/node_modules/reka-ui/dist/Pagination/PaginationEllipsis.js +36 -0
  1157. package/.output/server/node_modules/reka-ui/dist/Pagination/PaginationFirst.js +45 -0
  1158. package/.output/server/node_modules/reka-ui/dist/Pagination/PaginationLast.js +45 -0
  1159. package/.output/server/node_modules/reka-ui/dist/Pagination/PaginationList.js +42 -0
  1160. package/.output/server/node_modules/reka-ui/dist/Pagination/PaginationListItem.js +59 -0
  1161. package/.output/server/node_modules/reka-ui/dist/Pagination/PaginationNext.js +45 -0
  1162. package/.output/server/node_modules/reka-ui/dist/Pagination/PaginationPrev.js +45 -0
  1163. package/.output/server/node_modules/reka-ui/dist/Pagination/PaginationRoot.js +96 -0
  1164. package/.output/server/node_modules/reka-ui/dist/Pagination/utils.js +74 -0
  1165. package/.output/server/node_modules/reka-ui/dist/PinInput/PinInputInput.js +210 -0
  1166. package/.output/server/node_modules/reka-ui/dist/PinInput/PinInputRoot.js +149 -0
  1167. package/.output/server/node_modules/reka-ui/dist/Popover/PopoverAnchor.js +48 -0
  1168. package/.output/server/node_modules/reka-ui/dist/Popover/PopoverArrow.js +51 -0
  1169. package/.output/server/node_modules/reka-ui/dist/Popover/PopoverClose.js +48 -0
  1170. package/.output/server/node_modules/reka-ui/dist/Popover/PopoverContent.js +139 -0
  1171. package/.output/server/node_modules/reka-ui/dist/Popover/PopoverContentImpl.js +171 -0
  1172. package/.output/server/node_modules/reka-ui/dist/Popover/PopoverContentModal.js +146 -0
  1173. package/.output/server/node_modules/reka-ui/dist/Popover/PopoverContentNonModal.js +148 -0
  1174. package/.output/server/node_modules/reka-ui/dist/Popover/PopoverPortal.js +42 -0
  1175. package/.output/server/node_modules/reka-ui/dist/Popover/PopoverRoot.js +70 -0
  1176. package/.output/server/node_modules/reka-ui/dist/Popover/PopoverTrigger.js +68 -0
  1177. package/.output/server/node_modules/reka-ui/dist/Popper/PopperAnchor.js +49 -0
  1178. package/.output/server/node_modules/reka-ui/dist/Popper/PopperArrow.js +96 -0
  1179. package/.output/server/node_modules/reka-ui/dist/Popper/PopperContent.js +273 -0
  1180. package/.output/server/node_modules/reka-ui/dist/Popper/PopperRoot.js +27 -0
  1181. package/.output/server/node_modules/reka-ui/dist/Popper/utils.js +52 -0
  1182. package/.output/server/node_modules/reka-ui/dist/Presence/Presence.js +50 -0
  1183. package/.output/server/node_modules/reka-ui/dist/Presence/usePresence.js +122 -0
  1184. package/.output/server/node_modules/reka-ui/dist/Primitive/Primitive.js +33 -0
  1185. package/.output/server/node_modules/reka-ui/dist/Primitive/Slot.js +30 -0
  1186. package/.output/server/node_modules/reka-ui/dist/Primitive/usePrimitiveElement.js +16 -0
  1187. package/.output/server/node_modules/reka-ui/dist/Progress/ProgressIndicator.js +46 -0
  1188. package/.output/server/node_modules/reka-ui/dist/Progress/ProgressRoot.js +124 -0
  1189. package/.output/server/node_modules/reka-ui/dist/RadioGroup/Radio.js +126 -0
  1190. package/.output/server/node_modules/reka-ui/dist/RadioGroup/RadioGroupIndicator.js +57 -0
  1191. package/.output/server/node_modules/reka-ui/dist/RadioGroup/RadioGroupItem.js +132 -0
  1192. package/.output/server/node_modules/reka-ui/dist/RadioGroup/RadioGroupRoot.js +138 -0
  1193. package/.output/server/node_modules/reka-ui/dist/RadioGroup/utils.js +15 -0
  1194. package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarCell.js +53 -0
  1195. package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarCellTrigger.js +237 -0
  1196. package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarGrid.js +52 -0
  1197. package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarGridBody.js +35 -0
  1198. package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarGridHead.js +35 -0
  1199. package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarGridRow.js +35 -0
  1200. package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarHeadCell.js +35 -0
  1201. package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarHeader.js +35 -0
  1202. package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarHeading.js +37 -0
  1203. package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarNext.js +58 -0
  1204. package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarPrev.js +58 -0
  1205. package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarRoot.js +392 -0
  1206. package/.output/server/node_modules/reka-ui/dist/RangeCalendar/useRangeCalendar.js +145 -0
  1207. package/.output/server/node_modules/reka-ui/dist/RovingFocus/RovingFocusGroup.js +145 -0
  1208. package/.output/server/node_modules/reka-ui/dist/RovingFocus/RovingFocusItem.js +110 -0
  1209. package/.output/server/node_modules/reka-ui/dist/RovingFocus/utils.js +47 -0
  1210. package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaCorner.js +40 -0
  1211. package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaCornerImpl.js +53 -0
  1212. package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaRoot.js +128 -0
  1213. package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbar.js +99 -0
  1214. package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbarAuto.js +52 -0
  1215. package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbarGlimpse.js +126 -0
  1216. package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbarHover.js +65 -0
  1217. package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbarImpl.js +123 -0
  1218. package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbarScroll.js +88 -0
  1219. package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbarVisible.js +107 -0
  1220. package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbarX.js +45 -0
  1221. package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbarY.js +46 -0
  1222. package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaThumb.js +98 -0
  1223. package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaViewport.js +76 -0
  1224. package/.output/server/node_modules/reka-ui/dist/ScrollArea/utils.js +72 -0
  1225. package/.output/server/node_modules/reka-ui/dist/Select/BubbleSelect.js +95 -0
  1226. package/.output/server/node_modules/reka-ui/dist/Select/SelectArrow.js +51 -0
  1227. package/.output/server/node_modules/reka-ui/dist/Select/SelectContent.js +160 -0
  1228. package/.output/server/node_modules/reka-ui/dist/Select/SelectContentImpl.js +311 -0
  1229. package/.output/server/node_modules/reka-ui/dist/Select/SelectGroup.js +39 -0
  1230. package/.output/server/node_modules/reka-ui/dist/Select/SelectIcon.js +38 -0
  1231. package/.output/server/node_modules/reka-ui/dist/Select/SelectItem.js +153 -0
  1232. package/.output/server/node_modules/reka-ui/dist/Select/SelectItemAlignedPosition.js +162 -0
  1233. package/.output/server/node_modules/reka-ui/dist/Select/SelectItemIndicator.js +40 -0
  1234. package/.output/server/node_modules/reka-ui/dist/Select/SelectItemText.js +66 -0
  1235. package/.output/server/node_modules/reka-ui/dist/Select/SelectLabel.js +41 -0
  1236. package/.output/server/node_modules/reka-ui/dist/Select/SelectPopperPosition.js +118 -0
  1237. package/.output/server/node_modules/reka-ui/dist/Select/SelectPortal.js +42 -0
  1238. package/.output/server/node_modules/reka-ui/dist/Select/SelectProvider.js +29 -0
  1239. package/.output/server/node_modules/reka-ui/dist/Select/SelectRoot.js +185 -0
  1240. package/.output/server/node_modules/reka-ui/dist/Select/SelectScrollButtonImpl.js +62 -0
  1241. package/.output/server/node_modules/reka-ui/dist/Select/SelectScrollDownButton.js +62 -0
  1242. package/.output/server/node_modules/reka-ui/dist/Select/SelectScrollUpButton.js +61 -0
  1243. package/.output/server/node_modules/reka-ui/dist/Select/SelectSeparator.js +34 -0
  1244. package/.output/server/node_modules/reka-ui/dist/Select/SelectTrigger.js +132 -0
  1245. package/.output/server/node_modules/reka-ui/dist/Select/SelectValue.js +72 -0
  1246. package/.output/server/node_modules/reka-ui/dist/Select/SelectViewport.js +97 -0
  1247. package/.output/server/node_modules/reka-ui/dist/Select/utils.js +30 -0
  1248. package/.output/server/node_modules/reka-ui/dist/Separator/Separator.js +43 -0
  1249. package/.output/server/node_modules/reka-ui/dist/Slider/SliderHorizontal.js +106 -0
  1250. package/.output/server/node_modules/reka-ui/dist/Slider/SliderImpl.js +78 -0
  1251. package/.output/server/node_modules/reka-ui/dist/Slider/SliderRange.js +58 -0
  1252. package/.output/server/node_modules/reka-ui/dist/Slider/SliderRoot.js +217 -0
  1253. package/.output/server/node_modules/reka-ui/dist/Slider/SliderThumb.js +40 -0
  1254. package/.output/server/node_modules/reka-ui/dist/Slider/SliderThumbImpl.js +103 -0
  1255. package/.output/server/node_modules/reka-ui/dist/Slider/SliderTrack.js +48 -0
  1256. package/.output/server/node_modules/reka-ui/dist/Slider/SliderVertical.js +101 -0
  1257. package/.output/server/node_modules/reka-ui/dist/Slider/utils.js +129 -0
  1258. package/.output/server/node_modules/reka-ui/dist/Splitter/SplitterGroup.js +409 -0
  1259. package/.output/server/node_modules/reka-ui/dist/Splitter/SplitterPanel.js +151 -0
  1260. package/.output/server/node_modules/reka-ui/dist/Splitter/SplitterResizeHandle.js +154 -0
  1261. package/.output/server/node_modules/reka-ui/dist/Stepper/StepperDescription.js +39 -0
  1262. package/.output/server/node_modules/reka-ui/dist/Stepper/StepperIndicator.js +38 -0
  1263. package/.output/server/node_modules/reka-ui/dist/Stepper/StepperItem.js +94 -0
  1264. package/.output/server/node_modules/reka-ui/dist/Stepper/StepperRoot.js +172 -0
  1265. package/.output/server/node_modules/reka-ui/dist/Stepper/StepperSeparator.js +52 -0
  1266. package/.output/server/node_modules/reka-ui/dist/Stepper/StepperTitle.js +39 -0
  1267. package/.output/server/node_modules/reka-ui/dist/Stepper/StepperTrigger.js +115 -0
  1268. package/.output/server/node_modules/reka-ui/dist/Switch/SwitchRoot.js +133 -0
  1269. package/.output/server/node_modules/reka-ui/dist/Switch/SwitchThumb.js +48 -0
  1270. package/.output/server/node_modules/reka-ui/dist/Tabs/TabsContent.js +88 -0
  1271. package/.output/server/node_modules/reka-ui/dist/Tabs/TabsIndicator.js +70 -0
  1272. package/.output/server/node_modules/reka-ui/dist/Tabs/TabsList.js +68 -0
  1273. package/.output/server/node_modules/reka-ui/dist/Tabs/TabsRoot.js +109 -0
  1274. package/.output/server/node_modules/reka-ui/dist/Tabs/TabsTrigger.js +93 -0
  1275. package/.output/server/node_modules/reka-ui/dist/Tabs/utils.js +11 -0
  1276. package/.output/server/node_modules/reka-ui/dist/TagsInput/TagsInputClear.js +47 -0
  1277. package/.output/server/node_modules/reka-ui/dist/TagsInput/TagsInputInput.js +151 -0
  1278. package/.output/server/node_modules/reka-ui/dist/TagsInput/TagsInputItem.js +78 -0
  1279. package/.output/server/node_modules/reka-ui/dist/TagsInput/TagsInputItemDelete.js +61 -0
  1280. package/.output/server/node_modules/reka-ui/dist/TagsInput/TagsInputItemText.js +41 -0
  1281. package/.output/server/node_modules/reka-ui/dist/TagsInput/TagsInputRoot.js +256 -0
  1282. package/.output/server/node_modules/reka-ui/dist/Teleport/Teleport.js +49 -0
  1283. package/.output/server/node_modules/reka-ui/dist/TimeField/TimeFieldInput.js +92 -0
  1284. package/.output/server/node_modules/reka-ui/dist/TimeField/TimeFieldRoot.js +320 -0
  1285. package/.output/server/node_modules/reka-ui/dist/Toast/FocusProxy.js +36 -0
  1286. package/.output/server/node_modules/reka-ui/dist/Toast/ToastAction.js +53 -0
  1287. package/.output/server/node_modules/reka-ui/dist/Toast/ToastAnnounce.js +32 -0
  1288. package/.output/server/node_modules/reka-ui/dist/Toast/ToastAnnounceExclude.js +46 -0
  1289. package/.output/server/node_modules/reka-ui/dist/Toast/ToastClose.js +47 -0
  1290. package/.output/server/node_modules/reka-ui/dist/Toast/ToastDescription.js +36 -0
  1291. package/.output/server/node_modules/reka-ui/dist/Toast/ToastPortal.js +42 -0
  1292. package/.output/server/node_modules/reka-ui/dist/Toast/ToastProvider.js +80 -0
  1293. package/.output/server/node_modules/reka-ui/dist/Toast/ToastRoot.js +140 -0
  1294. package/.output/server/node_modules/reka-ui/dist/Toast/ToastRootImpl.js +234 -0
  1295. package/.output/server/node_modules/reka-ui/dist/Toast/ToastTitle.js +36 -0
  1296. package/.output/server/node_modules/reka-ui/dist/Toast/ToastViewport.js +178 -0
  1297. package/.output/server/node_modules/reka-ui/dist/Toast/utils.js +47 -0
  1298. package/.output/server/node_modules/reka-ui/dist/Toggle/Toggle.js +110 -0
  1299. package/.output/server/node_modules/reka-ui/dist/ToggleGroup/ToggleGroupItem.js +63 -0
  1300. package/.output/server/node_modules/reka-ui/dist/ToggleGroup/ToggleGroupRoot.js +128 -0
  1301. package/.output/server/node_modules/reka-ui/dist/Toolbar/ToolbarButton.js +51 -0
  1302. package/.output/server/node_modules/reka-ui/dist/Toolbar/ToolbarLink.js +49 -0
  1303. package/.output/server/node_modules/reka-ui/dist/Toolbar/ToolbarRoot.js +81 -0
  1304. package/.output/server/node_modules/reka-ui/dist/Toolbar/ToolbarSeparator.js +46 -0
  1305. package/.output/server/node_modules/reka-ui/dist/Toolbar/ToolbarToggleGroup.js +89 -0
  1306. package/.output/server/node_modules/reka-ui/dist/Toolbar/ToolbarToggleItem.js +48 -0
  1307. package/.output/server/node_modules/reka-ui/dist/Tooltip/TooltipArrow.js +47 -0
  1308. package/.output/server/node_modules/reka-ui/dist/Tooltip/TooltipContent.js +104 -0
  1309. package/.output/server/node_modules/reka-ui/dist/Tooltip/TooltipContentHoverable.js +100 -0
  1310. package/.output/server/node_modules/reka-ui/dist/Tooltip/TooltipContentImpl.js +148 -0
  1311. package/.output/server/node_modules/reka-ui/dist/Tooltip/TooltipPortal.js +42 -0
  1312. package/.output/server/node_modules/reka-ui/dist/Tooltip/TooltipProvider.js +78 -0
  1313. package/.output/server/node_modules/reka-ui/dist/Tooltip/TooltipRoot.js +132 -0
  1314. package/.output/server/node_modules/reka-ui/dist/Tooltip/TooltipTrigger.js +114 -0
  1315. package/.output/server/node_modules/reka-ui/dist/Tooltip/utils.js +6 -0
  1316. package/.output/server/node_modules/reka-ui/dist/Tree/TreeItem.js +175 -0
  1317. package/.output/server/node_modules/reka-ui/dist/Tree/TreeRoot.js +243 -0
  1318. package/.output/server/node_modules/reka-ui/dist/Tree/TreeVirtualizer.js +168 -0
  1319. package/.output/server/node_modules/reka-ui/dist/Tree/utils.js +12 -0
  1320. package/.output/server/node_modules/reka-ui/dist/Viewport/Viewport.js +62 -0
  1321. package/.output/server/node_modules/reka-ui/dist/VisuallyHidden/VisuallyHidden.js +66 -0
  1322. package/.output/server/node_modules/reka-ui/dist/VisuallyHidden/VisuallyHiddenInput.js +86 -0
  1323. package/.output/server/node_modules/reka-ui/dist/VisuallyHidden/VisuallyHiddenInputBubble.js +73 -0
  1324. package/.output/server/node_modules/reka-ui/dist/component/Arrow.js +69 -0
  1325. package/.output/server/node_modules/reka-ui/dist/component/BaseSeparator.js +61 -0
  1326. package/.output/server/node_modules/reka-ui/dist/composables/useWindowSplitterBehavior.js +48 -0
  1327. package/.output/server/node_modules/reka-ui/dist/composables/useWindowSplitterPanelGroupBehavior.js +94 -0
  1328. package/.output/server/node_modules/reka-ui/dist/date/calendar.js +156 -0
  1329. package/.output/server/node_modules/reka-ui/dist/date/comparators.js +194 -0
  1330. package/.output/server/node_modules/reka-ui/dist/date/index.js +0 -0
  1331. package/.output/server/node_modules/reka-ui/dist/date/parser.js +135 -0
  1332. package/.output/server/node_modules/reka-ui/dist/date/parts.js +27 -0
  1333. package/.output/server/node_modules/reka-ui/dist/date/placeholders.js +493 -0
  1334. package/.output/server/node_modules/reka-ui/dist/date/segment.js +41 -0
  1335. package/.output/server/node_modules/reka-ui/dist/date/useDateField.js +720 -0
  1336. package/.output/server/node_modules/reka-ui/dist/date/utils.js +85 -0
  1337. package/.output/server/node_modules/reka-ui/dist/index.js +466 -0
  1338. package/.output/server/node_modules/reka-ui/dist/index2.js +0 -0
  1339. package/.output/server/node_modules/reka-ui/dist/shared/arrays.js +42 -0
  1340. package/.output/server/node_modules/reka-ui/dist/shared/browser.js +6 -0
  1341. package/.output/server/node_modules/reka-ui/dist/shared/clamp.js +66 -0
  1342. package/.output/server/node_modules/reka-ui/dist/shared/createContext.js +35 -0
  1343. package/.output/server/node_modules/reka-ui/dist/shared/getActiveElement.js +11 -0
  1344. package/.output/server/node_modules/reka-ui/dist/shared/handleAndDispatchCustomEvent.js +15 -0
  1345. package/.output/server/node_modules/reka-ui/dist/shared/isValueEqualOrExist.js +22 -0
  1346. package/.output/server/node_modules/reka-ui/dist/shared/nullish.js +8 -0
  1347. package/.output/server/node_modules/reka-ui/dist/shared/renderSlotFragments.js +14 -0
  1348. package/.output/server/node_modules/reka-ui/dist/shared/useArrowNavigation.js +64 -0
  1349. package/.output/server/node_modules/reka-ui/dist/shared/useBodyScrollLock.js +95 -0
  1350. package/.output/server/node_modules/reka-ui/dist/shared/useDateFormatter.js +140 -0
  1351. package/.output/server/node_modules/reka-ui/dist/shared/useDirection.js +17 -0
  1352. package/.output/server/node_modules/reka-ui/dist/shared/useEmitAsProps.js +26 -0
  1353. package/.output/server/node_modules/reka-ui/dist/shared/useFilter.js +58 -0
  1354. package/.output/server/node_modules/reka-ui/dist/shared/useFocusGuards.js +37 -0
  1355. package/.output/server/node_modules/reka-ui/dist/shared/useFormControl.js +11 -0
  1356. package/.output/server/node_modules/reka-ui/dist/shared/useForwardExpose.js +57 -0
  1357. package/.output/server/node_modules/reka-ui/dist/shared/useForwardProps.js +37 -0
  1358. package/.output/server/node_modules/reka-ui/dist/shared/useForwardPropsEmits.js +29 -0
  1359. package/.output/server/node_modules/reka-ui/dist/shared/useGraceArea.js +200 -0
  1360. package/.output/server/node_modules/reka-ui/dist/shared/useHideOthers.js +26 -0
  1361. package/.output/server/node_modules/reka-ui/dist/shared/useId.js +24 -0
  1362. package/.output/server/node_modules/reka-ui/dist/shared/useIsUsingKeyboard.js +27 -0
  1363. package/.output/server/node_modules/reka-ui/dist/shared/useKbd.js +43 -0
  1364. package/.output/server/node_modules/reka-ui/dist/shared/useLocale.js +17 -0
  1365. package/.output/server/node_modules/reka-ui/dist/shared/useNonce.js +12 -0
  1366. package/.output/server/node_modules/reka-ui/dist/shared/useSelectionBehavior.js +53 -0
  1367. package/.output/server/node_modules/reka-ui/dist/shared/useSingleOrMultipleValue.js +63 -0
  1368. package/.output/server/node_modules/reka-ui/dist/shared/useSize.js +48 -0
  1369. package/.output/server/node_modules/reka-ui/dist/shared/useStateMachine.js +32 -0
  1370. package/.output/server/node_modules/reka-ui/dist/shared/useTypeahead.js +70 -0
  1371. package/.output/server/node_modules/reka-ui/dist/shared/withDefault.js +25 -0
  1372. package/.output/server/node_modules/reka-ui/dist/utils/assert.js +11 -0
  1373. package/.output/server/node_modules/reka-ui/dist/utils/calculate.js +113 -0
  1374. package/.output/server/node_modules/reka-ui/dist/utils/callPanelCallbacks.js +25 -0
  1375. package/.output/server/node_modules/reka-ui/dist/utils/compare.js +17 -0
  1376. package/.output/server/node_modules/reka-ui/dist/utils/constants.js +6 -0
  1377. package/.output/server/node_modules/reka-ui/dist/utils/debounce.js +15 -0
  1378. package/.output/server/node_modules/reka-ui/dist/utils/dom.js +38 -0
  1379. package/.output/server/node_modules/reka-ui/dist/utils/events.js +36 -0
  1380. package/.output/server/node_modules/reka-ui/dist/utils/layout.js +137 -0
  1381. package/.output/server/node_modules/reka-ui/dist/utils/pivot.js +11 -0
  1382. package/.output/server/node_modules/reka-ui/dist/utils/rects.js +9 -0
  1383. package/.output/server/node_modules/reka-ui/dist/utils/registry.js +183 -0
  1384. package/.output/server/node_modules/reka-ui/dist/utils/resizePanel.js +22 -0
  1385. package/.output/server/node_modules/reka-ui/dist/utils/stackingOrder.js +94 -0
  1386. package/.output/server/node_modules/reka-ui/dist/utils/storage.js +61 -0
  1387. package/.output/server/node_modules/reka-ui/dist/utils/style.js +62 -0
  1388. package/.output/server/node_modules/reka-ui/dist/utils/validation.js +53 -0
  1389. package/.output/server/node_modules/reka-ui/package.json +121 -0
  1390. package/.output/server/node_modules/shiki/dist/bundle-full.mjs +27 -0
  1391. package/.output/server/node_modules/shiki/dist/bundle-web.mjs +366 -0
  1392. package/.output/server/node_modules/shiki/dist/index.mjs +6 -0
  1393. package/.output/server/node_modules/shiki/dist/langs.mjs +1412 -0
  1394. package/.output/server/node_modules/shiki/dist/themes.mjs +389 -0
  1395. package/.output/server/node_modules/shiki/dist/wasm.mjs +2 -0
  1396. package/.output/server/node_modules/shiki/package.json +70 -0
  1397. package/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
  1398. package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  1399. package/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
  1400. package/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  1401. package/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  1402. package/.output/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
  1403. package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  1404. package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  1405. package/.output/server/node_modules/source-map-js/lib/source-node.js +413 -0
  1406. package/.output/server/node_modules/source-map-js/lib/util.js +594 -0
  1407. package/.output/server/node_modules/source-map-js/package.json +71 -0
  1408. package/.output/server/node_modules/source-map-js/source-map.js +8 -0
  1409. package/.output/server/node_modules/space-separated-tokens/index.js +24 -0
  1410. package/.output/server/node_modules/space-separated-tokens/package.json +67 -0
  1411. package/.output/server/node_modules/stringify-entities/index.js +6 -0
  1412. package/.output/server/node_modules/stringify-entities/lib/constant/dangerous.js +16 -0
  1413. package/.output/server/node_modules/stringify-entities/lib/core.js +117 -0
  1414. package/.output/server/node_modules/stringify-entities/lib/index.js +36 -0
  1415. package/.output/server/node_modules/stringify-entities/lib/util/format-basic.js +9 -0
  1416. package/.output/server/node_modules/stringify-entities/lib/util/format-smart.js +69 -0
  1417. package/.output/server/node_modules/stringify-entities/lib/util/to-decimal.js +16 -0
  1418. package/.output/server/node_modules/stringify-entities/lib/util/to-hexadecimal.js +16 -0
  1419. package/.output/server/node_modules/stringify-entities/lib/util/to-named.js +57 -0
  1420. package/.output/server/node_modules/stringify-entities/package.json +86 -0
  1421. package/.output/server/node_modules/tailwind-merge/dist/bundle-mjs.mjs +3282 -0
  1422. package/.output/server/node_modules/tailwind-merge/package.json +93 -0
  1423. package/.output/server/node_modules/ufo/dist/index.mjs +645 -0
  1424. package/.output/server/node_modules/ufo/package.json +48 -0
  1425. package/.output/server/node_modules/unhead/dist/index.mjs +9 -0
  1426. package/.output/server/node_modules/unhead/dist/parser.mjs +508 -0
  1427. package/.output/server/node_modules/unhead/dist/plugins.mjs +101 -0
  1428. package/.output/server/node_modules/unhead/dist/scripts.mjs +30 -0
  1429. package/.output/server/node_modules/unhead/dist/server.mjs +180 -0
  1430. package/.output/server/node_modules/unhead/dist/shared/unhead.B578PsDV.mjs +266 -0
  1431. package/.output/server/node_modules/unhead/dist/shared/unhead.BFfcxOoW.mjs +180 -0
  1432. package/.output/server/node_modules/unhead/dist/shared/unhead.BPM0-cfG.mjs +44 -0
  1433. package/.output/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +43 -0
  1434. package/.output/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs +148 -0
  1435. package/.output/server/node_modules/unhead/dist/shared/unhead.CbpEuj3y.mjs +71 -0
  1436. package/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
  1437. package/.output/server/node_modules/unhead/dist/shared/unhead.ckV6dpEQ.mjs +166 -0
  1438. package/.output/server/node_modules/unhead/dist/shared/unhead.eK9_7LaY.mjs +198 -0
  1439. package/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
  1440. package/.output/server/node_modules/unhead/dist/utils.mjs +5 -0
  1441. package/.output/server/node_modules/unhead/package.json +105 -0
  1442. package/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
  1443. package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  1444. package/.output/server/node_modules/vue/index.js +7 -0
  1445. package/.output/server/node_modules/vue/index.mjs +1 -0
  1446. package/.output/server/node_modules/vue/package.json +112 -0
  1447. package/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
  1448. package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +301 -0
  1449. package/.output/server/node_modules/vue-bundle-renderer/package.json +55 -0
  1450. package/.output/server/node_modules/vue-demi/lib/index.mjs +34 -0
  1451. package/.output/server/node_modules/vue-demi/package.json +47 -0
  1452. package/.output/server/node_modules/vue-router/dist/devtools-EWN81iOl.mjs +1220 -0
  1453. package/.output/server/node_modules/vue-router/dist/vue-router.mjs +1557 -0
  1454. package/.output/server/node_modules/vue-router/package.json +153 -0
  1455. package/.output/server/node_modules/vue-router/vue-router.node.mjs +2 -0
  1456. package/.output/server/node_modules/vue-sonner/lib/vue-sonner.js +801 -0
  1457. package/.output/server/node_modules/vue-sonner/package.json +80 -0
  1458. package/.output/server/node_modules/zwitch/index.js +118 -0
  1459. package/.output/server/node_modules/zwitch/package.json +72 -0
  1460. package/.output/server/package.json +78 -0
  1461. package/README.md +1 -2
  1462. package/dist/host/src/index.js +2 -2
  1463. package/dist/host/src/ui.js +62 -22
  1464. package/dist/server/utils/repos.js +2 -2
  1465. package/package.json +17 -15
  1466. package/app/app.vue +0 -14
  1467. package/app/assets/css/main.css +0 -129
  1468. package/app/components/CommandPalette.vue +0 -182
  1469. package/app/components/ShortcutsHelp.vue +0 -85
  1470. package/app/components/git/ChangesMinimap.vue +0 -143
  1471. package/app/components/git/CommitList.vue +0 -224
  1472. package/app/components/git/DiffPanel.vue +0 -402
  1473. package/app/components/git/DiffViewer.vue +0 -803
  1474. package/app/components/layout/RepoSelector.vue +0 -358
  1475. package/app/components/layout/Sidebar.vue +0 -91
  1476. package/app/components/prd/Meta.vue +0 -69
  1477. package/app/components/prd/Viewer.vue +0 -285
  1478. package/app/components/tasks/Board.vue +0 -86
  1479. package/app/components/tasks/Card.vue +0 -108
  1480. package/app/components/tasks/Column.vue +0 -108
  1481. package/app/components/tasks/Detail.vue +0 -291
  1482. package/app/components/ui/badge/Badge.vue +0 -26
  1483. package/app/components/ui/badge/index.ts +0 -26
  1484. package/app/components/ui/button/Button.vue +0 -29
  1485. package/app/components/ui/button/index.ts +0 -38
  1486. package/app/components/ui/card/Card.vue +0 -22
  1487. package/app/components/ui/card/CardAction.vue +0 -17
  1488. package/app/components/ui/card/CardContent.vue +0 -17
  1489. package/app/components/ui/card/CardDescription.vue +0 -17
  1490. package/app/components/ui/card/CardFooter.vue +0 -17
  1491. package/app/components/ui/card/CardHeader.vue +0 -17
  1492. package/app/components/ui/card/CardTitle.vue +0 -17
  1493. package/app/components/ui/card/index.ts +0 -7
  1494. package/app/components/ui/combobox/Combobox.vue +0 -19
  1495. package/app/components/ui/combobox/ComboboxAnchor.vue +0 -23
  1496. package/app/components/ui/combobox/ComboboxEmpty.vue +0 -21
  1497. package/app/components/ui/combobox/ComboboxGroup.vue +0 -27
  1498. package/app/components/ui/combobox/ComboboxInput.vue +0 -42
  1499. package/app/components/ui/combobox/ComboboxItem.vue +0 -24
  1500. package/app/components/ui/combobox/ComboboxItemIndicator.vue +0 -23
  1501. package/app/components/ui/combobox/ComboboxList.vue +0 -33
  1502. package/app/components/ui/combobox/ComboboxSeparator.vue +0 -21
  1503. package/app/components/ui/combobox/ComboboxTrigger.vue +0 -24
  1504. package/app/components/ui/combobox/ComboboxViewport.vue +0 -23
  1505. package/app/components/ui/combobox/index.ts +0 -13
  1506. package/app/components/ui/command/Command.vue +0 -103
  1507. package/app/components/ui/command/CommandDialog.vue +0 -33
  1508. package/app/components/ui/command/CommandEmpty.vue +0 -27
  1509. package/app/components/ui/command/CommandGroup.vue +0 -45
  1510. package/app/components/ui/command/CommandInput.vue +0 -54
  1511. package/app/components/ui/command/CommandItem.vue +0 -76
  1512. package/app/components/ui/command/CommandList.vue +0 -25
  1513. package/app/components/ui/command/CommandSeparator.vue +0 -21
  1514. package/app/components/ui/command/CommandShortcut.vue +0 -17
  1515. package/app/components/ui/command/index.ts +0 -25
  1516. package/app/components/ui/dialog/Dialog.vue +0 -19
  1517. package/app/components/ui/dialog/DialogClose.vue +0 -15
  1518. package/app/components/ui/dialog/DialogContent.vue +0 -53
  1519. package/app/components/ui/dialog/DialogDescription.vue +0 -23
  1520. package/app/components/ui/dialog/DialogFooter.vue +0 -15
  1521. package/app/components/ui/dialog/DialogHeader.vue +0 -17
  1522. package/app/components/ui/dialog/DialogOverlay.vue +0 -21
  1523. package/app/components/ui/dialog/DialogScrollContent.vue +0 -59
  1524. package/app/components/ui/dialog/DialogTitle.vue +0 -23
  1525. package/app/components/ui/dialog/DialogTrigger.vue +0 -15
  1526. package/app/components/ui/dialog/index.ts +0 -10
  1527. package/app/components/ui/input/Input.vue +0 -33
  1528. package/app/components/ui/input/index.ts +0 -1
  1529. package/app/components/ui/scroll-area/ScrollArea.vue +0 -33
  1530. package/app/components/ui/scroll-area/ScrollBar.vue +0 -32
  1531. package/app/components/ui/scroll-area/index.ts +0 -2
  1532. package/app/components/ui/separator/Separator.vue +0 -29
  1533. package/app/components/ui/separator/index.ts +0 -1
  1534. package/app/components/ui/sheet/Sheet.vue +0 -19
  1535. package/app/components/ui/sheet/SheetClose.vue +0 -15
  1536. package/app/components/ui/sheet/SheetContent.vue +0 -62
  1537. package/app/components/ui/sheet/SheetDescription.vue +0 -21
  1538. package/app/components/ui/sheet/SheetFooter.vue +0 -16
  1539. package/app/components/ui/sheet/SheetHeader.vue +0 -15
  1540. package/app/components/ui/sheet/SheetOverlay.vue +0 -21
  1541. package/app/components/ui/sheet/SheetTitle.vue +0 -21
  1542. package/app/components/ui/sheet/SheetTrigger.vue +0 -15
  1543. package/app/components/ui/sheet/index.ts +0 -8
  1544. package/app/components/ui/tabs/Tabs.vue +0 -24
  1545. package/app/components/ui/tabs/TabsContent.vue +0 -21
  1546. package/app/components/ui/tabs/TabsList.vue +0 -24
  1547. package/app/components/ui/tabs/TabsTrigger.vue +0 -26
  1548. package/app/components/ui/tabs/index.ts +0 -4
  1549. package/app/components/ui/tooltip/Tooltip.vue +0 -19
  1550. package/app/components/ui/tooltip/TooltipContent.vue +0 -34
  1551. package/app/components/ui/tooltip/TooltipProvider.vue +0 -14
  1552. package/app/components/ui/tooltip/TooltipTrigger.vue +0 -15
  1553. package/app/components/ui/tooltip/index.ts +0 -4
  1554. package/app/composables/useFileWatch.ts +0 -78
  1555. package/app/composables/useGit.ts +0 -180
  1556. package/app/composables/useKeyboard.ts +0 -180
  1557. package/app/composables/usePrd.ts +0 -86
  1558. package/app/composables/useRepos.ts +0 -108
  1559. package/app/composables/useThemeMode.ts +0 -38
  1560. package/app/composables/useToast.ts +0 -31
  1561. package/app/layouts/default.vue +0 -197
  1562. package/app/lib/utils.ts +0 -7
  1563. package/app/pages/[repo]/[prd].vue +0 -263
  1564. package/app/pages/index.vue +0 -257
  1565. package/app/types/git.ts +0 -81
  1566. package/app/types/index.ts +0 -29
  1567. package/app/types/prd.ts +0 -49
  1568. package/app/types/repo.ts +0 -37
  1569. package/app/types/task.ts +0 -134
  1570. package/components.json +0 -21
  1571. package/nuxt.config.ts +0 -34
  1572. package/server/api/browse.get.ts +0 -52
  1573. package/server/api/repos/[repoId]/git/commits.get.ts +0 -103
  1574. package/server/api/repos/[repoId]/git/diff.get.ts +0 -77
  1575. package/server/api/repos/[repoId]/git/file-content.get.ts +0 -66
  1576. package/server/api/repos/[repoId]/git/file-diff.get.ts +0 -109
  1577. package/server/api/repos/[repoId]/prd/[prdSlug]/progress.get.ts +0 -36
  1578. package/server/api/repos/[repoId]/prd/[prdSlug]/tasks/[taskId]/commits.get.ts +0 -146
  1579. package/server/api/repos/[repoId]/prd/[prdSlug]/tasks.get.ts +0 -36
  1580. package/server/api/repos/[repoId]/prd/[prdSlug].get.ts +0 -97
  1581. package/server/api/repos/[repoId]/prds.get.ts +0 -85
  1582. package/server/api/repos/[repoId]/refresh-git-repos.post.ts +0 -42
  1583. package/server/api/repos/[repoId].delete.ts +0 -27
  1584. package/server/api/repos/index.get.ts +0 -5
  1585. package/server/api/repos/index.post.ts +0 -39
  1586. package/server/api/watch.get.ts +0 -63
  1587. package/server/plugins/migrate-legacy-state.ts +0 -19
  1588. package/server/tsconfig.json +0 -3
  1589. package/server/utils/db.ts +0 -169
  1590. package/server/utils/git.ts +0 -478
  1591. package/server/utils/prd-state.ts +0 -335
  1592. package/server/utils/repos.ts +0 -322
  1593. package/server/utils/watcher.ts +0 -179
  1594. package/tsconfig.json +0 -4
  1595. /package/{public → .output/public}/favicon.ico +0 -0
  1596. /package/{public → .output/public}/robots.txt +0 -0
@@ -0,0 +1,4225 @@
1
+ import { _ as __nuxt_component_0$4 } from './nuxt-link-SvT1nf8Z.mjs';
2
+ import { defineComponent, computed, ref, watch, inject, mergeProps, unref, withCtx, createVNode, createTextVNode, isRef, openBlock, createBlock, toDisplayString, createCommentVNode, renderSlot, useModel, resolveDynamicComponent, Fragment, renderList, mergeModels, readonly, useSSRContext } from 'vue';
3
+ import { ssrRenderAttrs, ssrRenderComponent, ssrInterpolate, ssrRenderAttr, ssrRenderSlot, ssrRenderList, ssrRenderVNode, ssrRenderClass, ssrRenderStyle } from 'vue/server-renderer';
4
+ import { Loader2, AlertCircle, RefreshCw, FileText, LayoutGrid, User, Calendar, CircleDot, ExternalLink, Circle, CheckCircle2, Clock, ArrowLeft, Tag, AlertTriangle, ListOrdered, CheckSquare, Check, Link2, Diff, PlayCircle, X, Keyboard, FileDiff, FileCode, GitCommit, Plus, Minus, FolderGit2, ArrowDown, ArrowUp, ArrowRight, FileWarning, ChevronDown, Link, Link2Off, FileEdit, FileX, FilePlus } from 'lucide-vue-next';
5
+ import { cva } from 'class-variance-authority';
6
+ import { reactiveOmit } from '@vueuse/core';
7
+ import { useForwardPropsEmits, TabsRoot, TabsList as TabsList$1, useForwardProps, TabsTrigger as TabsTrigger$1, TabsContent as TabsContent$1, Primitive, DialogRoot, DialogPortal, DialogContent, DialogClose, DialogTitle, DialogDescription, Separator as Separator$1, DialogOverlay, TooltipProvider as TooltipProvider$1, TooltipRoot, TooltipTrigger as TooltipTrigger$1, TooltipPortal, TooltipContent as TooltipContent$1, TooltipArrow, ScrollAreaRoot, ScrollAreaViewport, ScrollAreaCorner, ScrollAreaScrollbar, ScrollAreaThumb, DialogTrigger } from 'reka-ui';
8
+ import { u as useRepos, a as usePrd, b as useToast, c as cn } from './usePrd-YhvN6Ary.mjs';
9
+ import { marked } from 'marked';
10
+ import { codeToHtml } from 'shiki';
11
+ import DOMPurify from 'dompurify';
12
+ import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
13
+ import { codeToHtml as codeToHtml$1 } from 'shiki/bundle/web';
14
+ import { B as Button } from './index-CTpuP9Mj.mjs';
15
+ import { b as useRoute } from './server.mjs';
16
+ import '../nitro/nitro.mjs';
17
+ import 'node:http';
18
+ import 'node:https';
19
+ import 'node:events';
20
+ import 'node:buffer';
21
+ import 'node:fs';
22
+ import 'node:path';
23
+ import 'node:crypto';
24
+ import 'node:os';
25
+ import 'node:url';
26
+ import 'clsx';
27
+ import 'tailwind-merge';
28
+ import 'vue-sonner';
29
+ import '@vue/shared';
30
+ import 'perfect-debounce';
31
+ import '../routes/renderer.mjs';
32
+ import 'vue-bundle-renderer/runtime';
33
+ import 'unhead/server';
34
+ import 'devalue';
35
+ import 'unhead/utils';
36
+ import 'vue-router';
37
+
38
+ const _sfc_main$C = /* @__PURE__ */ defineComponent({
39
+ __name: "Badge",
40
+ __ssrInlineRender: true,
41
+ props: {
42
+ asChild: { type: Boolean },
43
+ as: {},
44
+ variant: {},
45
+ class: {}
46
+ },
47
+ setup(__props) {
48
+ const props = __props;
49
+ const delegatedProps = reactiveOmit(props, "class");
50
+ return (_ctx, _push, _parent, _attrs) => {
51
+ _push(ssrRenderComponent(unref(Primitive), mergeProps({
52
+ "data-slot": "badge",
53
+ class: unref(cn)(unref(badgeVariants)({ variant: __props.variant }), props.class)
54
+ }, unref(delegatedProps), _attrs), {
55
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
56
+ if (_push2) {
57
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
58
+ } else {
59
+ return [
60
+ renderSlot(_ctx.$slots, "default")
61
+ ];
62
+ }
63
+ }),
64
+ _: 3
65
+ }, _parent));
66
+ };
67
+ }
68
+ });
69
+ const _sfc_setup$C = _sfc_main$C.setup;
70
+ _sfc_main$C.setup = (props, ctx) => {
71
+ const ssrContext = useSSRContext();
72
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/badge/Badge.vue");
73
+ return _sfc_setup$C ? _sfc_setup$C(props, ctx) : void 0;
74
+ };
75
+ const Badge = Object.assign(_sfc_main$C, { __name: "UiBadge" });
76
+ const badgeVariants = cva(
77
+ "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
78
+ {
79
+ variants: {
80
+ variant: {
81
+ default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
82
+ secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
83
+ destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
84
+ outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
85
+ }
86
+ },
87
+ defaultVariants: {
88
+ variant: "default"
89
+ }
90
+ }
91
+ );
92
+ const _sfc_main$B = /* @__PURE__ */ defineComponent({
93
+ __name: "Meta",
94
+ __ssrInlineRender: true,
95
+ props: {
96
+ metadata: {}
97
+ },
98
+ setup(__props) {
99
+ const props = __props;
100
+ const statusVariant = computed(() => {
101
+ const status = props.metadata.status?.toLowerCase();
102
+ if (!status) return "secondary";
103
+ if (status.includes("complete") || status.includes("done")) return "default";
104
+ if (status.includes("progress") || status.includes("active")) return "default";
105
+ if (status.includes("draft")) return "secondary";
106
+ if (status.includes("blocked") || status.includes("paused")) return "destructive";
107
+ return "secondary";
108
+ });
109
+ const hasMetadata = computed(() => {
110
+ return props.metadata.author || props.metadata.date || props.metadata.status || props.metadata.shortcutStory;
111
+ });
112
+ return (_ctx, _push, _parent, _attrs) => {
113
+ if (unref(hasMetadata)) {
114
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "flex flex-wrap items-center gap-3 text-sm" }, _attrs))}>`);
115
+ if (__props.metadata.author) {
116
+ _push(`<div class="flex items-center gap-1.5 text-muted-foreground">`);
117
+ _push(ssrRenderComponent(unref(User), { class: "size-3.5" }, null, _parent));
118
+ _push(`<span>${ssrInterpolate(__props.metadata.author)}</span></div>`);
119
+ } else {
120
+ _push(`<!---->`);
121
+ }
122
+ if (__props.metadata.date) {
123
+ _push(`<div class="flex items-center gap-1.5 text-muted-foreground">`);
124
+ _push(ssrRenderComponent(unref(Calendar), { class: "size-3.5" }, null, _parent));
125
+ _push(`<span>${ssrInterpolate(__props.metadata.date)}</span></div>`);
126
+ } else {
127
+ _push(`<!---->`);
128
+ }
129
+ if (__props.metadata.status) {
130
+ _push(ssrRenderComponent(unref(Badge), {
131
+ variant: unref(statusVariant),
132
+ class: "gap-1"
133
+ }, {
134
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
135
+ if (_push2) {
136
+ _push2(ssrRenderComponent(unref(CircleDot), { class: "size-3" }, null, _parent2, _scopeId));
137
+ _push2(` ${ssrInterpolate(__props.metadata.status)}`);
138
+ } else {
139
+ return [
140
+ createVNode(unref(CircleDot), { class: "size-3" }),
141
+ createTextVNode(" " + toDisplayString(__props.metadata.status), 1)
142
+ ];
143
+ }
144
+ }),
145
+ _: 1
146
+ }, _parent));
147
+ } else {
148
+ _push(`<!---->`);
149
+ }
150
+ if (__props.metadata.shortcutStory && __props.metadata.shortcutUrl) {
151
+ _push(`<a${ssrRenderAttr("href", __props.metadata.shortcutUrl)} target="_blank" rel="noopener noreferrer" class="inline-flex items-center gap-1.5 text-primary hover:underline">`);
152
+ _push(ssrRenderComponent(unref(ExternalLink), { class: "size-3.5" }, null, _parent));
153
+ _push(`<span>${ssrInterpolate(__props.metadata.shortcutStory)}</span></a>`);
154
+ } else if (__props.metadata.shortcutStory) {
155
+ _push(`<span class="flex items-center gap-1.5 text-muted-foreground">`);
156
+ _push(ssrRenderComponent(unref(ExternalLink), { class: "size-3.5" }, null, _parent));
157
+ _push(`<span>${ssrInterpolate(__props.metadata.shortcutStory)}</span></span>`);
158
+ } else {
159
+ _push(`<!---->`);
160
+ }
161
+ _push(`</div>`);
162
+ } else {
163
+ _push(`<!---->`);
164
+ }
165
+ };
166
+ }
167
+ });
168
+ const _sfc_setup$B = _sfc_main$B.setup;
169
+ _sfc_main$B.setup = (props, ctx) => {
170
+ const ssrContext = useSSRContext();
171
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/prd/Meta.vue");
172
+ return _sfc_setup$B ? _sfc_setup$B(props, ctx) : void 0;
173
+ };
174
+ const __nuxt_component_1$2 = Object.assign(_sfc_main$B, { __name: "PrdMeta" });
175
+ const _sfc_main$A = /* @__PURE__ */ defineComponent({
176
+ __name: "Viewer",
177
+ __ssrInlineRender: true,
178
+ props: {
179
+ content: {}
180
+ },
181
+ setup(__props) {
182
+ const props = __props;
183
+ const renderedHtml = ref("");
184
+ const isLoading = ref(true);
185
+ const purifyConfig = {
186
+ ADD_TAGS: ["style"],
187
+ ADD_ATTR: ["style", "class", "target", "rel"]
188
+ };
189
+ const renderer = new marked.Renderer();
190
+ renderer.link = ({ href, title, text }) => {
191
+ const titleAttr = title ? ` title="${title}"` : "";
192
+ return `<a href="${href}"${titleAttr} target="_blank" rel="noopener noreferrer">${text}</a>`;
193
+ };
194
+ async function highlightCode(code, lang) {
195
+ try {
196
+ return await codeToHtml(code, {
197
+ lang: lang || "text",
198
+ themes: {
199
+ light: "github-light",
200
+ dark: "github-dark"
201
+ }
202
+ });
203
+ } catch {
204
+ return `<pre><code class="language-${lang}">${escapeHtml(code)}</code></pre>`;
205
+ }
206
+ }
207
+ function escapeHtml(text) {
208
+ return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
209
+ }
210
+ async function renderMarkdown(content) {
211
+ const codeBlockRegex = /```(\w*)\n([\s\S]*?)```/g;
212
+ const placeholders = [];
213
+ let placeholderIndex = 0;
214
+ const contentWithPlaceholders = content.replace(codeBlockRegex, (_, lang, code) => {
215
+ const placeholder = `CODEBLOCK${placeholderIndex++}PLACEHOLDER`;
216
+ placeholders.push({ placeholder, lang: lang || "text", code: code.trim() });
217
+ return placeholder;
218
+ });
219
+ marked.setOptions({
220
+ renderer,
221
+ gfm: true,
222
+ breaks: false
223
+ });
224
+ let html = await marked.parse(contentWithPlaceholders);
225
+ const highlightPromises = placeholders.map(async ({ placeholder, lang, code }) => {
226
+ const highlighted = await highlightCode(code, lang);
227
+ return { placeholder, highlighted };
228
+ });
229
+ const results = await Promise.all(highlightPromises);
230
+ for (const { placeholder, highlighted } of results) {
231
+ html = html.replace(`<p>${placeholder}</p>`, highlighted);
232
+ html = html.replace(placeholder, highlighted);
233
+ }
234
+ return DOMPurify.sanitize(html, purifyConfig);
235
+ }
236
+ watch(() => props.content, async (newContent) => {
237
+ if (newContent) {
238
+ isLoading.value = true;
239
+ try {
240
+ renderedHtml.value = await renderMarkdown(newContent);
241
+ } finally {
242
+ isLoading.value = false;
243
+ }
244
+ }
245
+ }, { immediate: true });
246
+ return (_ctx, _push, _parent, _attrs) => {
247
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "prd-viewer" }, _attrs))}>`);
248
+ if (unref(isLoading)) {
249
+ _push(`<div class="flex items-center justify-center py-8"><div class="size-6 animate-spin rounded-full border-2 border-primary border-t-transparent"></div></div>`);
250
+ } else {
251
+ _push(`<div class="prose prose-sm dark:prose-invert max-w-none">${unref(renderedHtml) ?? ""}</div>`);
252
+ }
253
+ _push(`</div>`);
254
+ };
255
+ }
256
+ });
257
+ const _sfc_setup$A = _sfc_main$A.setup;
258
+ _sfc_main$A.setup = (props, ctx) => {
259
+ const ssrContext = useSSRContext();
260
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/prd/Viewer.vue");
261
+ return _sfc_setup$A ? _sfc_setup$A(props, ctx) : void 0;
262
+ };
263
+ const __nuxt_component_2 = Object.assign(_sfc_main$A, { __name: "PrdViewer" });
264
+ const _sfc_main$z = /* @__PURE__ */ defineComponent({
265
+ __name: "Card",
266
+ __ssrInlineRender: true,
267
+ props: {
268
+ class: {}
269
+ },
270
+ setup(__props) {
271
+ const props = __props;
272
+ return (_ctx, _push, _parent, _attrs) => {
273
+ _push(`<div${ssrRenderAttrs(mergeProps({
274
+ "data-slot": "card",
275
+ class: unref(cn)(
276
+ "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
277
+ props.class
278
+ )
279
+ }, _attrs))}>`);
280
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
281
+ _push(`</div>`);
282
+ };
283
+ }
284
+ });
285
+ const _sfc_setup$z = _sfc_main$z.setup;
286
+ _sfc_main$z.setup = (props, ctx) => {
287
+ const ssrContext = useSSRContext();
288
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/card/Card.vue");
289
+ return _sfc_setup$z ? _sfc_setup$z(props, ctx) : void 0;
290
+ };
291
+ const Card = Object.assign(_sfc_main$z, { __name: "UiCard" });
292
+ const _sfc_main$y = /* @__PURE__ */ defineComponent({
293
+ __name: "CardAction",
294
+ __ssrInlineRender: true,
295
+ props: {
296
+ class: {}
297
+ },
298
+ setup(__props) {
299
+ const props = __props;
300
+ return (_ctx, _push, _parent, _attrs) => {
301
+ _push(`<div${ssrRenderAttrs(mergeProps({
302
+ "data-slot": "card-action",
303
+ class: unref(cn)("col-start-2 row-span-2 row-start-1 self-start justify-self-end", props.class)
304
+ }, _attrs))}>`);
305
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
306
+ _push(`</div>`);
307
+ };
308
+ }
309
+ });
310
+ const _sfc_setup$y = _sfc_main$y.setup;
311
+ _sfc_main$y.setup = (props, ctx) => {
312
+ const ssrContext = useSSRContext();
313
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/card/CardAction.vue");
314
+ return _sfc_setup$y ? _sfc_setup$y(props, ctx) : void 0;
315
+ };
316
+ Object.assign(_sfc_main$y, { __name: "UiCardAction" });
317
+ const _sfc_main$x = /* @__PURE__ */ defineComponent({
318
+ __name: "CardContent",
319
+ __ssrInlineRender: true,
320
+ props: {
321
+ class: {}
322
+ },
323
+ setup(__props) {
324
+ const props = __props;
325
+ return (_ctx, _push, _parent, _attrs) => {
326
+ _push(`<div${ssrRenderAttrs(mergeProps({
327
+ "data-slot": "card-content",
328
+ class: unref(cn)("px-6", props.class)
329
+ }, _attrs))}>`);
330
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
331
+ _push(`</div>`);
332
+ };
333
+ }
334
+ });
335
+ const _sfc_setup$x = _sfc_main$x.setup;
336
+ _sfc_main$x.setup = (props, ctx) => {
337
+ const ssrContext = useSSRContext();
338
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/card/CardContent.vue");
339
+ return _sfc_setup$x ? _sfc_setup$x(props, ctx) : void 0;
340
+ };
341
+ const CardContent = Object.assign(_sfc_main$x, { __name: "UiCardContent" });
342
+ const _sfc_main$w = /* @__PURE__ */ defineComponent({
343
+ __name: "CardDescription",
344
+ __ssrInlineRender: true,
345
+ props: {
346
+ class: {}
347
+ },
348
+ setup(__props) {
349
+ const props = __props;
350
+ return (_ctx, _push, _parent, _attrs) => {
351
+ _push(`<p${ssrRenderAttrs(mergeProps({
352
+ "data-slot": "card-description",
353
+ class: unref(cn)("text-muted-foreground text-sm", props.class)
354
+ }, _attrs))}>`);
355
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
356
+ _push(`</p>`);
357
+ };
358
+ }
359
+ });
360
+ const _sfc_setup$w = _sfc_main$w.setup;
361
+ _sfc_main$w.setup = (props, ctx) => {
362
+ const ssrContext = useSSRContext();
363
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/card/CardDescription.vue");
364
+ return _sfc_setup$w ? _sfc_setup$w(props, ctx) : void 0;
365
+ };
366
+ Object.assign(_sfc_main$w, { __name: "UiCardDescription" });
367
+ const _sfc_main$v = /* @__PURE__ */ defineComponent({
368
+ __name: "CardFooter",
369
+ __ssrInlineRender: true,
370
+ props: {
371
+ class: {}
372
+ },
373
+ setup(__props) {
374
+ const props = __props;
375
+ return (_ctx, _push, _parent, _attrs) => {
376
+ _push(`<div${ssrRenderAttrs(mergeProps({
377
+ "data-slot": "card-footer",
378
+ class: unref(cn)("flex items-center px-6 [.border-t]:pt-6", props.class)
379
+ }, _attrs))}>`);
380
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
381
+ _push(`</div>`);
382
+ };
383
+ }
384
+ });
385
+ const _sfc_setup$v = _sfc_main$v.setup;
386
+ _sfc_main$v.setup = (props, ctx) => {
387
+ const ssrContext = useSSRContext();
388
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/card/CardFooter.vue");
389
+ return _sfc_setup$v ? _sfc_setup$v(props, ctx) : void 0;
390
+ };
391
+ Object.assign(_sfc_main$v, { __name: "UiCardFooter" });
392
+ const _sfc_main$u = /* @__PURE__ */ defineComponent({
393
+ __name: "CardHeader",
394
+ __ssrInlineRender: true,
395
+ props: {
396
+ class: {}
397
+ },
398
+ setup(__props) {
399
+ const props = __props;
400
+ return (_ctx, _push, _parent, _attrs) => {
401
+ _push(`<div${ssrRenderAttrs(mergeProps({
402
+ "data-slot": "card-header",
403
+ class: unref(cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6", props.class)
404
+ }, _attrs))}>`);
405
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
406
+ _push(`</div>`);
407
+ };
408
+ }
409
+ });
410
+ const _sfc_setup$u = _sfc_main$u.setup;
411
+ _sfc_main$u.setup = (props, ctx) => {
412
+ const ssrContext = useSSRContext();
413
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/card/CardHeader.vue");
414
+ return _sfc_setup$u ? _sfc_setup$u(props, ctx) : void 0;
415
+ };
416
+ Object.assign(_sfc_main$u, { __name: "UiCardHeader" });
417
+ const _sfc_main$t = /* @__PURE__ */ defineComponent({
418
+ __name: "CardTitle",
419
+ __ssrInlineRender: true,
420
+ props: {
421
+ class: {}
422
+ },
423
+ setup(__props) {
424
+ const props = __props;
425
+ return (_ctx, _push, _parent, _attrs) => {
426
+ _push(`<h3${ssrRenderAttrs(mergeProps({
427
+ "data-slot": "card-title",
428
+ class: unref(cn)("leading-none font-semibold", props.class)
429
+ }, _attrs))}>`);
430
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
431
+ _push(`</h3>`);
432
+ };
433
+ }
434
+ });
435
+ const _sfc_setup$t = _sfc_main$t.setup;
436
+ _sfc_main$t.setup = (props, ctx) => {
437
+ const ssrContext = useSSRContext();
438
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/card/CardTitle.vue");
439
+ return _sfc_setup$t ? _sfc_setup$t(props, ctx) : void 0;
440
+ };
441
+ Object.assign(_sfc_main$t, { __name: "UiCardTitle" });
442
+ const _sfc_main$s = /* @__PURE__ */ defineComponent({
443
+ __name: "Card",
444
+ __ssrInlineRender: true,
445
+ props: {
446
+ task: {},
447
+ blockedBy: {}
448
+ },
449
+ emits: ["click"],
450
+ setup(__props, { emit: __emit }) {
451
+ const props = __props;
452
+ const emit = __emit;
453
+ const categoryConfig = computed(() => {
454
+ switch (props.task.category) {
455
+ case "setup":
456
+ return { label: "Setup", variant: "secondary" };
457
+ case "feature":
458
+ return { label: "Feature", variant: "default" };
459
+ case "integration":
460
+ return { label: "Integration", variant: "outline" };
461
+ case "testing":
462
+ return { label: "Testing", variant: "secondary" };
463
+ case "documentation":
464
+ return { label: "Docs", variant: "secondary" };
465
+ default:
466
+ return { label: props.task.category, variant: "secondary" };
467
+ }
468
+ });
469
+ const priorityConfig = computed(() => {
470
+ switch (props.task.priority) {
471
+ case "critical":
472
+ return { icon: ArrowUp, class: "text-destructive", label: "Critical" };
473
+ case "high":
474
+ return { icon: ArrowUp, class: "text-orange-500", label: "High" };
475
+ case "medium":
476
+ return { icon: Minus, class: "text-muted-foreground", label: "Medium" };
477
+ case "low":
478
+ return { icon: ArrowDown, class: "text-muted-foreground", label: "Low" };
479
+ default:
480
+ return { icon: Minus, class: "text-muted-foreground", label: "Unknown" };
481
+ }
482
+ });
483
+ const isBlocked = computed(() => {
484
+ return props.blockedBy && props.blockedBy.length > 0;
485
+ });
486
+ const taskNumber = computed(() => {
487
+ const match = props.task.id.match(/(\d+)$/);
488
+ const value = match?.[1];
489
+ return value ? parseInt(value, 10) : 0;
490
+ });
491
+ const blockedCount = computed(() => {
492
+ return props.blockedBy?.length ?? 0;
493
+ });
494
+ function handleClick() {
495
+ emit("click", props.task);
496
+ }
497
+ return (_ctx, _push, _parent, _attrs) => {
498
+ _push(ssrRenderComponent(unref(Card), mergeProps({
499
+ class: ["cursor-pointer py-0 gap-0 transition-all hover:shadow-md hover:border-primary/50", { "opacity-60": unref(isBlocked) }],
500
+ onClick: handleClick
501
+ }, _attrs), {
502
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
503
+ if (_push2) {
504
+ _push2(ssrRenderComponent(unref(CardContent), { class: "p-2.5" }, {
505
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
506
+ if (_push3) {
507
+ _push3(`<div class="flex items-center justify-between gap-2 mb-1.5"${_scopeId2}>`);
508
+ _push3(ssrRenderComponent(unref(Badge), {
509
+ variant: unref(categoryConfig).variant,
510
+ class: "text-xs"
511
+ }, {
512
+ default: withCtx((_3, _push4, _parent4, _scopeId3) => {
513
+ if (_push4) {
514
+ _push4(`${ssrInterpolate(unref(categoryConfig).label)}`);
515
+ } else {
516
+ return [
517
+ createTextVNode(toDisplayString(unref(categoryConfig).label), 1)
518
+ ];
519
+ }
520
+ }),
521
+ _: 1
522
+ }, _parent3, _scopeId2));
523
+ ssrRenderVNode(_push3, createVNode(resolveDynamicComponent(unref(priorityConfig).icon), {
524
+ class: ["size-4", unref(priorityConfig).class],
525
+ title: unref(priorityConfig).label
526
+ }, null), _parent3, _scopeId2);
527
+ _push3(`</div><h4 class="text-sm font-medium leading-snug"${_scopeId2}><span class="text-muted-foreground"${_scopeId2}>#${ssrInterpolate(unref(taskNumber))}</span> ${ssrInterpolate(__props.task.title)}</h4>`);
528
+ if (unref(isBlocked)) {
529
+ _push3(`<div class="mt-2 flex items-center gap-1.5 text-xs text-destructive"${_scopeId2}>`);
530
+ _push3(ssrRenderComponent(unref(AlertCircle), { class: "size-3.5" }, null, _parent3, _scopeId2));
531
+ _push3(`<span${_scopeId2}>Blocked by ${ssrInterpolate(unref(blockedCount))} task${ssrInterpolate(unref(blockedCount) === 1 ? "" : "s")}</span></div>`);
532
+ } else {
533
+ _push3(`<!---->`);
534
+ }
535
+ } else {
536
+ return [
537
+ createVNode("div", { class: "flex items-center justify-between gap-2 mb-1.5" }, [
538
+ createVNode(unref(Badge), {
539
+ variant: unref(categoryConfig).variant,
540
+ class: "text-xs"
541
+ }, {
542
+ default: withCtx(() => [
543
+ createTextVNode(toDisplayString(unref(categoryConfig).label), 1)
544
+ ]),
545
+ _: 1
546
+ }, 8, ["variant"]),
547
+ (openBlock(), createBlock(resolveDynamicComponent(unref(priorityConfig).icon), {
548
+ class: ["size-4", unref(priorityConfig).class],
549
+ title: unref(priorityConfig).label
550
+ }, null, 8, ["class", "title"]))
551
+ ]),
552
+ createVNode("h4", { class: "text-sm font-medium leading-snug" }, [
553
+ createVNode("span", { class: "text-muted-foreground" }, "#" + toDisplayString(unref(taskNumber)), 1),
554
+ createTextVNode(" " + toDisplayString(__props.task.title), 1)
555
+ ]),
556
+ unref(isBlocked) ? (openBlock(), createBlock("div", {
557
+ key: 0,
558
+ class: "mt-2 flex items-center gap-1.5 text-xs text-destructive"
559
+ }, [
560
+ createVNode(unref(AlertCircle), { class: "size-3.5" }),
561
+ createVNode("span", null, "Blocked by " + toDisplayString(unref(blockedCount)) + " task" + toDisplayString(unref(blockedCount) === 1 ? "" : "s"), 1)
562
+ ])) : createCommentVNode("", true)
563
+ ];
564
+ }
565
+ }),
566
+ _: 1
567
+ }, _parent2, _scopeId));
568
+ } else {
569
+ return [
570
+ createVNode(unref(CardContent), { class: "p-2.5" }, {
571
+ default: withCtx(() => [
572
+ createVNode("div", { class: "flex items-center justify-between gap-2 mb-1.5" }, [
573
+ createVNode(unref(Badge), {
574
+ variant: unref(categoryConfig).variant,
575
+ class: "text-xs"
576
+ }, {
577
+ default: withCtx(() => [
578
+ createTextVNode(toDisplayString(unref(categoryConfig).label), 1)
579
+ ]),
580
+ _: 1
581
+ }, 8, ["variant"]),
582
+ (openBlock(), createBlock(resolveDynamicComponent(unref(priorityConfig).icon), {
583
+ class: ["size-4", unref(priorityConfig).class],
584
+ title: unref(priorityConfig).label
585
+ }, null, 8, ["class", "title"]))
586
+ ]),
587
+ createVNode("h4", { class: "text-sm font-medium leading-snug" }, [
588
+ createVNode("span", { class: "text-muted-foreground" }, "#" + toDisplayString(unref(taskNumber)), 1),
589
+ createTextVNode(" " + toDisplayString(__props.task.title), 1)
590
+ ]),
591
+ unref(isBlocked) ? (openBlock(), createBlock("div", {
592
+ key: 0,
593
+ class: "mt-2 flex items-center gap-1.5 text-xs text-destructive"
594
+ }, [
595
+ createVNode(unref(AlertCircle), { class: "size-3.5" }),
596
+ createVNode("span", null, "Blocked by " + toDisplayString(unref(blockedCount)) + " task" + toDisplayString(unref(blockedCount) === 1 ? "" : "s"), 1)
597
+ ])) : createCommentVNode("", true)
598
+ ]),
599
+ _: 1
600
+ })
601
+ ];
602
+ }
603
+ }),
604
+ _: 1
605
+ }, _parent));
606
+ };
607
+ }
608
+ });
609
+ const _sfc_setup$s = _sfc_main$s.setup;
610
+ _sfc_main$s.setup = (props, ctx) => {
611
+ const ssrContext = useSSRContext();
612
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/tasks/Card.vue");
613
+ return _sfc_setup$s ? _sfc_setup$s(props, ctx) : void 0;
614
+ };
615
+ const __nuxt_component_0$3 = Object.assign(_sfc_main$s, { __name: "TasksCard" });
616
+ const _sfc_main$r = /* @__PURE__ */ defineComponent({
617
+ __name: "Column",
618
+ __ssrInlineRender: true,
619
+ props: {
620
+ status: {},
621
+ tasks: {},
622
+ blockedByMap: {}
623
+ },
624
+ emits: ["taskClick"],
625
+ setup(__props, { emit: __emit }) {
626
+ const props = __props;
627
+ const emit = __emit;
628
+ const statusConfig = computed(() => {
629
+ switch (props.status) {
630
+ case "pending":
631
+ return {
632
+ label: "Pending",
633
+ icon: Circle,
634
+ headerClass: "bg-muted/50",
635
+ iconClass: "text-muted-foreground"
636
+ };
637
+ case "in_progress":
638
+ return {
639
+ label: "In Progress",
640
+ icon: PlayCircle,
641
+ headerClass: "bg-blue-500/10",
642
+ iconClass: "text-blue-500"
643
+ };
644
+ case "completed":
645
+ return {
646
+ label: "Completed",
647
+ icon: CheckCircle2,
648
+ headerClass: "bg-green-500/10",
649
+ iconClass: "text-green-500"
650
+ };
651
+ default:
652
+ return {
653
+ label: props.status,
654
+ icon: Circle,
655
+ headerClass: "bg-muted/50",
656
+ iconClass: "text-muted-foreground"
657
+ };
658
+ }
659
+ });
660
+ function getBlockedBy(taskId) {
661
+ return props.blockedByMap?.get(taskId) ?? [];
662
+ }
663
+ function handleTaskClick(task) {
664
+ emit("taskClick", task);
665
+ }
666
+ return (_ctx, _push, _parent, _attrs) => {
667
+ const _component_TasksCard = __nuxt_component_0$3;
668
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "flex h-full min-w-56 flex-1 flex-col overflow-hidden rounded-lg border border-border bg-card" }, _attrs))} data-v-a1317eba><div class="${ssrRenderClass([unref(statusConfig).headerClass, "flex items-center gap-2 rounded-t-lg border-b border-border px-3 py-2"])}" data-v-a1317eba>`);
669
+ ssrRenderVNode(_push, createVNode(resolveDynamicComponent(unref(statusConfig).icon), {
670
+ class: ["size-4", unref(statusConfig).iconClass]
671
+ }, null), _parent);
672
+ _push(`<h3 class="text-sm font-medium" data-v-a1317eba>${ssrInterpolate(unref(statusConfig).label)}</h3><span class="ml-auto text-xs text-muted-foreground" data-v-a1317eba>${ssrInterpolate(__props.tasks.length)}</span></div><div class="scrollbar-hide min-h-0 flex-1 overflow-y-auto p-1.5" data-v-a1317eba><div class="space-y-1.5" data-v-a1317eba><!--[-->`);
673
+ ssrRenderList(__props.tasks, (task) => {
674
+ _push(ssrRenderComponent(_component_TasksCard, {
675
+ key: task.id,
676
+ task,
677
+ "blocked-by": getBlockedBy(task.id),
678
+ onClick: handleTaskClick
679
+ }, null, _parent));
680
+ });
681
+ _push(`<!--]-->`);
682
+ if (__props.tasks.length === 0) {
683
+ _push(`<div class="py-8 text-center text-sm text-muted-foreground" data-v-a1317eba> No tasks </div>`);
684
+ } else {
685
+ _push(`<!---->`);
686
+ }
687
+ _push(`</div></div></div>`);
688
+ };
689
+ }
690
+ });
691
+ const _sfc_setup$r = _sfc_main$r.setup;
692
+ _sfc_main$r.setup = (props, ctx) => {
693
+ const ssrContext = useSSRContext();
694
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/tasks/Column.vue");
695
+ return _sfc_setup$r ? _sfc_setup$r(props, ctx) : void 0;
696
+ };
697
+ const __nuxt_component_0$2 = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main$r, [["__scopeId", "data-v-a1317eba"]]), { __name: "TasksColumn" });
698
+ const _sfc_main$q = /* @__PURE__ */ defineComponent({
699
+ __name: "Board",
700
+ __ssrInlineRender: true,
701
+ props: {
702
+ tasks: {}
703
+ },
704
+ emits: ["taskClick"],
705
+ setup(__props, { emit: __emit }) {
706
+ const props = __props;
707
+ const emit = __emit;
708
+ function getTaskNumber(task) {
709
+ const match = task.id.match(/(\d+)$/);
710
+ const value = match?.[1];
711
+ return value ? parseInt(value, 10) : 0;
712
+ }
713
+ const pendingTasks = computed(
714
+ () => props.tasks.filter((t) => t.status === "pending").sort((a, b) => getTaskNumber(a) - getTaskNumber(b))
715
+ );
716
+ const inProgressTasks = computed(
717
+ () => props.tasks.filter((t) => t.status === "in_progress").sort((a, b) => getTaskNumber(a) - getTaskNumber(b))
718
+ );
719
+ const completedTasks = computed(
720
+ () => props.tasks.filter((t) => t.status === "completed").sort((a, b) => {
721
+ const aTime = a.completedAt ? new Date(a.completedAt).getTime() : 0;
722
+ const bTime = b.completedAt ? new Date(b.completedAt).getTime() : 0;
723
+ return bTime - aTime;
724
+ })
725
+ );
726
+ const blockedByMap = computed(() => {
727
+ const map = /* @__PURE__ */ new Map();
728
+ const completedIds = new Set(completedTasks.value.map((t) => t.id));
729
+ for (const task of props.tasks) {
730
+ if (task.dependencies.length > 0) {
731
+ const blockers = task.dependencies.filter((depId) => !completedIds.has(depId));
732
+ if (blockers.length > 0) {
733
+ map.set(task.id, blockers);
734
+ }
735
+ }
736
+ }
737
+ return map;
738
+ });
739
+ const columns = [
740
+ { status: "pending", tasks: pendingTasks },
741
+ { status: "in_progress", tasks: inProgressTasks },
742
+ { status: "completed", tasks: completedTasks }
743
+ ];
744
+ function handleTaskClick(task) {
745
+ emit("taskClick", task);
746
+ }
747
+ return (_ctx, _push, _parent, _attrs) => {
748
+ const _component_TasksColumn = __nuxt_component_0$2;
749
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "flex h-full gap-3 overflow-x-auto pb-2" }, _attrs))}><!--[-->`);
750
+ ssrRenderList(columns, (column) => {
751
+ _push(ssrRenderComponent(_component_TasksColumn, {
752
+ key: column.status,
753
+ status: column.status,
754
+ tasks: column.tasks.value,
755
+ "blocked-by-map": unref(blockedByMap),
756
+ onTaskClick: handleTaskClick
757
+ }, null, _parent));
758
+ });
759
+ _push(`<!--]--></div>`);
760
+ };
761
+ }
762
+ });
763
+ const _sfc_setup$q = _sfc_main$q.setup;
764
+ _sfc_main$q.setup = (props, ctx) => {
765
+ const ssrContext = useSSRContext();
766
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/tasks/Board.vue");
767
+ return _sfc_setup$q ? _sfc_setup$q(props, ctx) : void 0;
768
+ };
769
+ const __nuxt_component_3 = Object.assign(_sfc_main$q, { __name: "TasksBoard" });
770
+ const _sfc_main$p = /* @__PURE__ */ defineComponent({
771
+ __name: "ChangesMinimap",
772
+ __ssrInlineRender: true,
773
+ props: {
774
+ files: {},
775
+ selectedFile: {}
776
+ },
777
+ emits: ["select"],
778
+ setup(__props, { emit: __emit }) {
779
+ const props = __props;
780
+ const maxChanges = computed(() => {
781
+ if (props.files.length === 0) return 1;
782
+ return Math.max(...props.files.map((f) => f.additions + f.deletions), 1);
783
+ });
784
+ function getStatusConfig(status) {
785
+ switch (status) {
786
+ case "added":
787
+ return { icon: FilePlus, class: "text-green-600 dark:text-green-400" };
788
+ case "deleted":
789
+ return { icon: FileX, class: "text-red-600 dark:text-red-400" };
790
+ case "renamed":
791
+ return { icon: ArrowRight, class: "text-blue-600 dark:text-blue-400" };
792
+ case "modified":
793
+ default:
794
+ return { icon: FileEdit, class: "text-yellow-600 dark:text-yellow-400" };
795
+ }
796
+ }
797
+ function getBarWidths(file) {
798
+ const total = file.additions + file.deletions;
799
+ if (total === 0) return { additions: 0, deletions: 0, total: 0 };
800
+ const totalWidth = total / maxChanges.value * 100;
801
+ const additionsWidth = file.additions / total * totalWidth;
802
+ const deletionsWidth = file.deletions / total * totalWidth;
803
+ return {
804
+ additions: additionsWidth,
805
+ deletions: deletionsWidth,
806
+ total: totalWidth
807
+ };
808
+ }
809
+ function getDisplayName(file) {
810
+ if (file.status === "renamed" && file.oldPath) {
811
+ return `${file.oldPath} → ${file.path}`;
812
+ }
813
+ return file.path;
814
+ }
815
+ function getShortName(path) {
816
+ return path.split("/").pop() || path;
817
+ }
818
+ return (_ctx, _push, _parent, _attrs) => {
819
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "space-y-0.5 p-2" }, _attrs))}><!--[-->`);
820
+ ssrRenderList(__props.files, (file) => {
821
+ _push(`<button class="${ssrRenderClass([{
822
+ "bg-muted": __props.selectedFile === file.path
823
+ }, "group flex w-full items-center gap-2 rounded px-2 py-1.5 text-left text-sm transition-colors hover:bg-muted/50"])}">`);
824
+ ssrRenderVNode(_push, createVNode(resolveDynamicComponent(getStatusConfig(file.status).icon), {
825
+ class: ["size-4 shrink-0", getStatusConfig(file.status).class]
826
+ }, null), _parent);
827
+ _push(`<div class="min-w-0 flex-1"><div class="${ssrRenderClass([{
828
+ "font-medium": __props.selectedFile === file.path
829
+ }, "truncate text-xs"])}"${ssrRenderAttr("title", getDisplayName(file))}>`);
830
+ if (file.status === "renamed" && file.oldPath) {
831
+ _push(`<!--[--><span class="text-muted-foreground">${ssrInterpolate(getShortName(file.oldPath))}</span>`);
832
+ _push(ssrRenderComponent(unref(ArrowRight), { class: "mx-1 inline size-3 text-muted-foreground" }, null, _parent));
833
+ _push(`<span>${ssrInterpolate(getShortName(file.path))}</span><!--]-->`);
834
+ } else {
835
+ _push(`<!--[-->${ssrInterpolate(file.path)}<!--]-->`);
836
+ }
837
+ _push(`</div><div class="mt-1 flex h-1.5 w-full overflow-hidden rounded-full bg-muted">`);
838
+ if (getBarWidths(file).additions > 0) {
839
+ _push(`<div class="bg-green-500 dark:bg-green-400" style="${ssrRenderStyle({ width: `${getBarWidths(file).additions}%` })}"></div>`);
840
+ } else {
841
+ _push(`<!---->`);
842
+ }
843
+ if (getBarWidths(file).deletions > 0) {
844
+ _push(`<div class="bg-red-500 dark:bg-red-400" style="${ssrRenderStyle({ width: `${getBarWidths(file).deletions}%` })}"></div>`);
845
+ } else {
846
+ _push(`<!---->`);
847
+ }
848
+ _push(`</div></div><div class="flex shrink-0 items-center gap-1 text-xs">`);
849
+ if (file.additions > 0) {
850
+ _push(`<span class="text-green-600 dark:text-green-400"> +${ssrInterpolate(file.additions)}</span>`);
851
+ } else {
852
+ _push(`<!---->`);
853
+ }
854
+ if (file.deletions > 0) {
855
+ _push(`<span class="text-red-600 dark:text-red-400"> -${ssrInterpolate(file.deletions)}</span>`);
856
+ } else {
857
+ _push(`<!---->`);
858
+ }
859
+ _push(`</div></button>`);
860
+ });
861
+ _push(`<!--]-->`);
862
+ if (__props.files.length === 0) {
863
+ _push(`<div class="py-4 text-center text-sm text-muted-foreground"> No files changed </div>`);
864
+ } else {
865
+ _push(`<!---->`);
866
+ }
867
+ _push(`</div>`);
868
+ };
869
+ }
870
+ });
871
+ const _sfc_setup$p = _sfc_main$p.setup;
872
+ _sfc_main$p.setup = (props, ctx) => {
873
+ const ssrContext = useSSRContext();
874
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/git/ChangesMinimap.vue");
875
+ return _sfc_setup$p ? _sfc_setup$p(props, ctx) : void 0;
876
+ };
877
+ const __nuxt_component_0$1 = Object.assign(_sfc_main$p, { __name: "GitChangesMinimap" });
878
+ const LINE_LIMIT = 1e4;
879
+ const _sfc_main$o = /* @__PURE__ */ defineComponent({
880
+ __name: "DiffViewer",
881
+ __ssrInlineRender: true,
882
+ props: {
883
+ hunks: {},
884
+ filePath: {},
885
+ binary: { type: Boolean },
886
+ oldPath: {},
887
+ fileContent: {},
888
+ showFullFile: { type: Boolean },
889
+ isLoadingContent: { type: Boolean }
890
+ },
891
+ setup(__props) {
892
+ const props = __props;
893
+ const showAll = ref(false);
894
+ const syncScrollEnabled = ref(true);
895
+ ref(null);
896
+ ref(null);
897
+ ref(false);
898
+ const totalLines = computed(() => {
899
+ let count = 0;
900
+ for (const hunk of props.hunks) {
901
+ count += hunk.lines.length;
902
+ }
903
+ return count;
904
+ });
905
+ const isLargeFile = computed(() => totalLines.value > LINE_LIMIT);
906
+ const isEmpty = computed(() => props.hunks.length === 0 && !props.binary);
907
+ const changedLines = computed(() => {
908
+ const added = /* @__PURE__ */ new Set();
909
+ const removed = /* @__PURE__ */ new Set();
910
+ for (const hunk of props.hunks) {
911
+ for (const line of hunk.lines) {
912
+ if (line.type === "add" && line.newNumber !== void 0) {
913
+ added.add(line.newNumber);
914
+ }
915
+ if (line.type === "remove" && line.oldNumber !== void 0) {
916
+ removed.add(line.oldNumber);
917
+ }
918
+ }
919
+ }
920
+ return { added, removed };
921
+ });
922
+ const fullFileLines = computed(() => {
923
+ if (!props.fileContent) return [];
924
+ return props.fileContent.split("\n");
925
+ });
926
+ function detectLanguage(path) {
927
+ const ext = path.split(".").pop()?.toLowerCase() || "";
928
+ const langMap = {
929
+ ts: "typescript",
930
+ tsx: "tsx",
931
+ js: "javascript",
932
+ jsx: "jsx",
933
+ vue: "vue",
934
+ svelte: "svelte",
935
+ py: "python",
936
+ rb: "ruby",
937
+ rs: "rust",
938
+ go: "go",
939
+ java: "java",
940
+ kt: "kotlin",
941
+ swift: "swift",
942
+ c: "c",
943
+ cpp: "cpp",
944
+ h: "c",
945
+ hpp: "cpp",
946
+ cs: "csharp",
947
+ php: "php",
948
+ html: "html",
949
+ css: "css",
950
+ scss: "scss",
951
+ sass: "sass",
952
+ less: "less",
953
+ json: "json",
954
+ yaml: "yaml",
955
+ yml: "yaml",
956
+ toml: "toml",
957
+ xml: "xml",
958
+ md: "markdown",
959
+ mdx: "mdx",
960
+ sh: "bash",
961
+ bash: "bash",
962
+ zsh: "bash",
963
+ fish: "fish",
964
+ ps1: "powershell",
965
+ sql: "sql",
966
+ graphql: "graphql",
967
+ gql: "graphql",
968
+ dockerfile: "dockerfile",
969
+ makefile: "makefile"
970
+ };
971
+ return langMap[ext] || "text";
972
+ }
973
+ const language = computed(() => detectLanguage(props.filePath));
974
+ const highlightedLines = ref(/* @__PURE__ */ new Map());
975
+ const isLoading = ref(true);
976
+ const displayItems = computed(() => {
977
+ const items = [];
978
+ for (let hunkIndex = 0; hunkIndex < props.hunks.length; hunkIndex++) {
979
+ const hunk = props.hunks[hunkIndex];
980
+ if (hunkIndex > 0) {
981
+ items.push({ type: "separator", hunkIndex });
982
+ }
983
+ const hunkLines = hunk.lines;
984
+ let i = 0;
985
+ while (i < hunkLines.length) {
986
+ const line = hunkLines[i];
987
+ if (line.type === "context") {
988
+ items.push({
989
+ type: "line",
990
+ pair: {
991
+ id: `${hunkIndex}-${i}`,
992
+ left: {
993
+ lineNum: line.oldNumber,
994
+ content: line.content,
995
+ type: "context"
996
+ },
997
+ right: {
998
+ lineNum: line.newNumber,
999
+ content: line.content,
1000
+ type: "context"
1001
+ }
1002
+ }
1003
+ });
1004
+ i++;
1005
+ } else if (line.type === "remove") {
1006
+ const removeLines = [];
1007
+ const addLines = [];
1008
+ while (i < hunkLines.length && hunkLines[i].type === "remove") {
1009
+ removeLines.push(hunkLines[i]);
1010
+ i++;
1011
+ }
1012
+ while (i < hunkLines.length && hunkLines[i].type === "add") {
1013
+ addLines.push(hunkLines[i]);
1014
+ i++;
1015
+ }
1016
+ const maxLen = Math.max(removeLines.length, addLines.length);
1017
+ for (let j = 0; j < maxLen; j++) {
1018
+ const removeLine = removeLines[j];
1019
+ const addLine = addLines[j];
1020
+ items.push({
1021
+ type: "line",
1022
+ pair: {
1023
+ id: `${hunkIndex}-${i - maxLen + j}`,
1024
+ left: removeLine ? {
1025
+ lineNum: removeLine.oldNumber,
1026
+ content: removeLine.content,
1027
+ type: "remove"
1028
+ } : { content: "", type: "empty" },
1029
+ right: addLine ? {
1030
+ lineNum: addLine.newNumber,
1031
+ content: addLine.content,
1032
+ type: "add"
1033
+ } : { content: "", type: "empty" }
1034
+ }
1035
+ });
1036
+ }
1037
+ } else if (line.type === "add") {
1038
+ items.push({
1039
+ type: "line",
1040
+ pair: {
1041
+ id: `${hunkIndex}-${i}`,
1042
+ left: { content: "", type: "empty" },
1043
+ right: {
1044
+ lineNum: line.newNumber,
1045
+ content: line.content,
1046
+ type: "add"
1047
+ }
1048
+ }
1049
+ });
1050
+ i++;
1051
+ } else {
1052
+ i++;
1053
+ }
1054
+ }
1055
+ }
1056
+ return items;
1057
+ });
1058
+ async function highlightLine(content, lang) {
1059
+ if (!content.trim()) {
1060
+ return "";
1061
+ }
1062
+ try {
1063
+ const html = await codeToHtml$1(content, {
1064
+ lang,
1065
+ themes: {
1066
+ light: "catppuccin-latte",
1067
+ dark: "catppuccin-mocha"
1068
+ }
1069
+ });
1070
+ const codeMatch = html.match(/<code[^>]*>([\s\S]*?)<\/code>/);
1071
+ return codeMatch ? codeMatch[1] || "" : escapeHtml(content);
1072
+ } catch {
1073
+ return escapeHtml(content);
1074
+ }
1075
+ }
1076
+ async function highlightFullContent(content, lang) {
1077
+ if (!content) {
1078
+ return [];
1079
+ }
1080
+ try {
1081
+ const html = await codeToHtml$1(content, {
1082
+ lang,
1083
+ themes: {
1084
+ light: "catppuccin-latte",
1085
+ dark: "catppuccin-mocha"
1086
+ }
1087
+ });
1088
+ const codeMatch = html.match(/<code[^>]*>([\s\S]*?)<\/code>/);
1089
+ if (!codeMatch || !codeMatch[1]) {
1090
+ return content.split("\n").map(escapeHtml);
1091
+ }
1092
+ const highlightedContent = codeMatch[1];
1093
+ return highlightedContent.split("\n");
1094
+ } catch {
1095
+ return content.split("\n").map(escapeHtml);
1096
+ }
1097
+ }
1098
+ function escapeHtml(text) {
1099
+ return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
1100
+ }
1101
+ const highlightedFullFile = ref([]);
1102
+ const isLoadingFullFile = ref(false);
1103
+ watch(
1104
+ () => [props.fileContent, props.filePath],
1105
+ async ([content]) => {
1106
+ if (!content) {
1107
+ highlightedFullFile.value = [];
1108
+ return;
1109
+ }
1110
+ isLoadingFullFile.value = true;
1111
+ const lang = language.value;
1112
+ highlightedFullFile.value = await highlightFullContent(content, lang);
1113
+ isLoadingFullFile.value = false;
1114
+ },
1115
+ { immediate: true }
1116
+ );
1117
+ watch(
1118
+ () => [props.hunks, props.filePath, highlightedFullFile.value],
1119
+ async () => {
1120
+ isLoading.value = true;
1121
+ const lang = language.value;
1122
+ const newHighlighted = /* @__PURE__ */ new Map();
1123
+ const fullFileLines2 = highlightedFullFile.value;
1124
+ const linesToHighlight = [];
1125
+ for (const item of displayItems.value) {
1126
+ if (item.type === "line" && item.pair) {
1127
+ if (item.pair.left.content && item.pair.left.type !== "empty") {
1128
+ const key = `${item.pair.id}-old`;
1129
+ if (item.pair.left.type === "context" && item.pair.left.lineNum && fullFileLines2.length > 0) {
1130
+ const lineIndex = item.pair.right.lineNum ? item.pair.right.lineNum - 1 : -1;
1131
+ if (lineIndex >= 0 && lineIndex < fullFileLines2.length) {
1132
+ newHighlighted.set(key, fullFileLines2[lineIndex] || "");
1133
+ } else {
1134
+ linesToHighlight.push({ key, content: item.pair.left.content });
1135
+ }
1136
+ } else {
1137
+ linesToHighlight.push({ key, content: item.pair.left.content });
1138
+ }
1139
+ }
1140
+ if (item.pair.right.content && item.pair.right.type !== "empty") {
1141
+ const key = `${item.pair.id}-new`;
1142
+ const lineNum = item.pair.right.lineNum;
1143
+ if (lineNum && fullFileLines2.length > 0 && lineNum <= fullFileLines2.length) {
1144
+ newHighlighted.set(key, fullFileLines2[lineNum - 1] || "");
1145
+ } else {
1146
+ linesToHighlight.push({ key, content: item.pair.right.content });
1147
+ }
1148
+ }
1149
+ }
1150
+ }
1151
+ const batchSize = 50;
1152
+ for (let i = 0; i < linesToHighlight.length; i += batchSize) {
1153
+ const batch = linesToHighlight.slice(i, i + batchSize);
1154
+ const results = await Promise.all(
1155
+ batch.map(async ({ key, content }) => {
1156
+ const result = await highlightLine(content, lang);
1157
+ return { key, result };
1158
+ })
1159
+ );
1160
+ for (const { key, result } of results) {
1161
+ newHighlighted.set(key, result);
1162
+ }
1163
+ }
1164
+ highlightedLines.value = newHighlighted;
1165
+ isLoading.value = false;
1166
+ },
1167
+ { immediate: true }
1168
+ );
1169
+ function getHighlightedContent(pairId, side) {
1170
+ return highlightedLines.value.get(`${pairId}-${side}`) || "";
1171
+ }
1172
+ function getFullFileLineType(lineNum) {
1173
+ if (changedLines.value.added.has(lineNum)) return "add";
1174
+ return "context";
1175
+ }
1176
+ return (_ctx, _push, _parent, _attrs) => {
1177
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "diff-viewer" }, _attrs))} data-v-2678ccde>`);
1178
+ if ((unref(isLoading) || __props.isLoadingContent || unref(isLoadingFullFile)) && !__props.binary) {
1179
+ _push(`<div class="flex items-center justify-center py-8" data-v-2678ccde><div class="size-6 animate-spin rounded-full border-2 border-primary border-t-transparent" data-v-2678ccde></div></div>`);
1180
+ } else if (__props.binary) {
1181
+ _push(`<div class="flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground" data-v-2678ccde>`);
1182
+ _push(ssrRenderComponent(unref(FileWarning), { class: "size-10 opacity-50" }, null, _parent));
1183
+ _push(`<div class="text-center" data-v-2678ccde><p class="font-medium" data-v-2678ccde>Binary file</p><p class="text-sm" data-v-2678ccde>This file cannot be displayed as a diff</p></div></div>`);
1184
+ } else if (unref(isEmpty) && !__props.showFullFile) {
1185
+ _push(`<div class="flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground" data-v-2678ccde>`);
1186
+ _push(ssrRenderComponent(unref(AlertTriangle), { class: "size-10 opacity-50" }, null, _parent));
1187
+ _push(`<div class="text-center" data-v-2678ccde><p class="font-medium" data-v-2678ccde>No changes</p><p class="text-sm" data-v-2678ccde>This file was touched but has no content changes</p></div></div>`);
1188
+ } else if (unref(isLargeFile) && !unref(showAll) && !__props.showFullFile) {
1189
+ _push(`<div class="diff-container" data-v-2678ccde><div class="flex flex-col items-center justify-center gap-3 border-b border-border bg-muted/30 py-6" data-v-2678ccde>`);
1190
+ _push(ssrRenderComponent(unref(AlertTriangle), { class: "size-8 text-yellow-500" }, null, _parent));
1191
+ _push(`<div class="text-center" data-v-2678ccde><p class="font-medium" data-v-2678ccde>Large file</p><p class="text-sm text-muted-foreground" data-v-2678ccde> This file has ${ssrInterpolate(unref(totalLines).toLocaleString())} lines (threshold: ${ssrInterpolate(LINE_LIMIT.toLocaleString())}) </p></div>`);
1192
+ _push(ssrRenderComponent(unref(Button), {
1193
+ variant: "outline",
1194
+ size: "sm",
1195
+ onClick: ($event) => showAll.value = true
1196
+ }, {
1197
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1198
+ if (_push2) {
1199
+ _push2(ssrRenderComponent(unref(ChevronDown), { class: "mr-2 size-4" }, null, _parent2, _scopeId));
1200
+ _push2(` Show full diff `);
1201
+ } else {
1202
+ return [
1203
+ createVNode(unref(ChevronDown), { class: "mr-2 size-4" }),
1204
+ createTextVNode(" Show full diff ")
1205
+ ];
1206
+ }
1207
+ }),
1208
+ _: 1
1209
+ }, _parent));
1210
+ _push(`</div></div>`);
1211
+ } else if (__props.showFullFile && __props.fileContent) {
1212
+ _push(`<div class="diff-container" data-v-2678ccde><div class="full-file-view" data-v-2678ccde><!--[-->`);
1213
+ ssrRenderList(unref(fullFileLines), (line, index) => {
1214
+ _push(`<div class="${ssrRenderClass([{
1215
+ "diff-add": getFullFileLineType(index + 1) === "add"
1216
+ }, "full-file-line"])}" data-v-2678ccde><div class="diff-gutter" data-v-2678ccde><span class="line-number" data-v-2678ccde>${ssrInterpolate(index + 1)}</span></div><div class="diff-content" data-v-2678ccde><span class="diff-code" data-v-2678ccde>${(unref(highlightedFullFile)[index] || escapeHtml(line)) ?? ""}</span></div></div>`);
1217
+ });
1218
+ _push(`<!--]--></div></div>`);
1219
+ } else {
1220
+ _push(`<div class="diff-container" data-v-2678ccde><div class="diff-toolbar" data-v-2678ccde>`);
1221
+ _push(ssrRenderComponent(unref(Button), {
1222
+ variant: "ghost",
1223
+ size: "sm",
1224
+ class: ["h-7 gap-1.5 text-xs", { "text-primary": unref(syncScrollEnabled) }],
1225
+ onClick: ($event) => syncScrollEnabled.value = !unref(syncScrollEnabled)
1226
+ }, {
1227
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1228
+ if (_push2) {
1229
+ ssrRenderVNode(_push2, createVNode(resolveDynamicComponent(unref(syncScrollEnabled) ? unref(Link) : unref(Link2Off)), { class: "size-3.5" }, null), _parent2, _scopeId);
1230
+ _push2(` ${ssrInterpolate(unref(syncScrollEnabled) ? "Sync scroll" : "Scroll unlocked")}`);
1231
+ } else {
1232
+ return [
1233
+ (openBlock(), createBlock(resolveDynamicComponent(unref(syncScrollEnabled) ? unref(Link) : unref(Link2Off)), { class: "size-3.5" })),
1234
+ createTextVNode(" " + toDisplayString(unref(syncScrollEnabled) ? "Sync scroll" : "Scroll unlocked"), 1)
1235
+ ];
1236
+ }
1237
+ }),
1238
+ _: 1
1239
+ }, _parent));
1240
+ _push(`</div><div class="diff-split" data-v-2678ccde><div class="diff-column diff-column-left" data-v-2678ccde><div class="diff-column-content" data-v-2678ccde><!--[-->`);
1241
+ ssrRenderList(unref(displayItems), (item) => {
1242
+ _push(`<!--[-->`);
1243
+ if (item.type === "separator") {
1244
+ _push(`<div class="diff-separator-half" data-v-2678ccde><div class="separator-line" data-v-2678ccde></div><span class="separator-text" data-v-2678ccde>···</span></div>`);
1245
+ } else if (item.pair) {
1246
+ _push(`<div class="${ssrRenderClass([{
1247
+ "diff-remove": item.pair.left.type === "remove",
1248
+ "diff-empty": item.pair.left.type === "empty",
1249
+ "diff-context": item.pair.left.type === "context"
1250
+ }, "diff-line"])}" data-v-2678ccde><div class="diff-gutter" data-v-2678ccde>`);
1251
+ if (item.pair.left.lineNum) {
1252
+ _push(`<span class="line-number" data-v-2678ccde>${ssrInterpolate(item.pair.left.lineNum)}</span>`);
1253
+ } else {
1254
+ _push(`<!---->`);
1255
+ }
1256
+ _push(`</div><div class="diff-content" data-v-2678ccde>`);
1257
+ if (item.pair.left.type !== "empty") {
1258
+ _push(`<span class="diff-code" data-v-2678ccde>${(getHighlightedContent(item.pair.id, "old") || escapeHtml(item.pair.left.content)) ?? ""}</span>`);
1259
+ } else {
1260
+ _push(`<!---->`);
1261
+ }
1262
+ _push(`</div></div>`);
1263
+ } else {
1264
+ _push(`<!---->`);
1265
+ }
1266
+ _push(`<!--]-->`);
1267
+ });
1268
+ _push(`<!--]--></div></div><div class="diff-column diff-column-right" data-v-2678ccde><div class="diff-column-content" data-v-2678ccde><!--[-->`);
1269
+ ssrRenderList(unref(displayItems), (item) => {
1270
+ _push(`<!--[-->`);
1271
+ if (item.type === "separator") {
1272
+ _push(`<div class="diff-separator-half" data-v-2678ccde><span class="separator-text" data-v-2678ccde>···</span><div class="separator-line" data-v-2678ccde></div></div>`);
1273
+ } else if (item.pair) {
1274
+ _push(`<div class="${ssrRenderClass([{
1275
+ "diff-add": item.pair.right.type === "add",
1276
+ "diff-empty": item.pair.right.type === "empty",
1277
+ "diff-context": item.pair.right.type === "context"
1278
+ }, "diff-line"])}" data-v-2678ccde><div class="diff-gutter" data-v-2678ccde>`);
1279
+ if (item.pair.right.lineNum) {
1280
+ _push(`<span class="line-number" data-v-2678ccde>${ssrInterpolate(item.pair.right.lineNum)}</span>`);
1281
+ } else {
1282
+ _push(`<!---->`);
1283
+ }
1284
+ _push(`</div><div class="diff-content" data-v-2678ccde>`);
1285
+ if (item.pair.right.type !== "empty") {
1286
+ _push(`<span class="diff-code" data-v-2678ccde>${(getHighlightedContent(item.pair.id, "new") || escapeHtml(item.pair.right.content)) ?? ""}</span>`);
1287
+ } else {
1288
+ _push(`<!---->`);
1289
+ }
1290
+ _push(`</div></div>`);
1291
+ } else {
1292
+ _push(`<!---->`);
1293
+ }
1294
+ _push(`<!--]-->`);
1295
+ });
1296
+ _push(`<!--]--></div></div></div></div>`);
1297
+ }
1298
+ _push(`</div>`);
1299
+ };
1300
+ }
1301
+ });
1302
+ const _sfc_setup$o = _sfc_main$o.setup;
1303
+ _sfc_main$o.setup = (props, ctx) => {
1304
+ const ssrContext = useSSRContext();
1305
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/git/DiffViewer.vue");
1306
+ return _sfc_setup$o ? _sfc_setup$o(props, ctx) : void 0;
1307
+ };
1308
+ const __nuxt_component_1$1 = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main$o, [["__scopeId", "data-v-2678ccde"]]), { __name: "GitDiffViewer" });
1309
+ const _sfc_main$n = /* @__PURE__ */ defineComponent({
1310
+ __name: "ScrollBar",
1311
+ __ssrInlineRender: true,
1312
+ props: {
1313
+ orientation: { default: "vertical" },
1314
+ forceMount: { type: Boolean },
1315
+ asChild: { type: Boolean },
1316
+ as: {},
1317
+ class: {}
1318
+ },
1319
+ setup(__props) {
1320
+ const props = __props;
1321
+ const delegatedProps = reactiveOmit(props, "class");
1322
+ return (_ctx, _push, _parent, _attrs) => {
1323
+ _push(ssrRenderComponent(unref(ScrollAreaScrollbar), mergeProps({ "data-slot": "scroll-area-scrollbar" }, unref(delegatedProps), {
1324
+ class: unref(cn)(
1325
+ "flex touch-none p-px transition-colors select-none",
1326
+ __props.orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent",
1327
+ __props.orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent",
1328
+ props.class
1329
+ )
1330
+ }, _attrs), {
1331
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1332
+ if (_push2) {
1333
+ _push2(ssrRenderComponent(unref(ScrollAreaThumb), {
1334
+ "data-slot": "scroll-area-thumb",
1335
+ class: "bg-border relative flex-1 rounded-full"
1336
+ }, null, _parent2, _scopeId));
1337
+ } else {
1338
+ return [
1339
+ createVNode(unref(ScrollAreaThumb), {
1340
+ "data-slot": "scroll-area-thumb",
1341
+ class: "bg-border relative flex-1 rounded-full"
1342
+ })
1343
+ ];
1344
+ }
1345
+ }),
1346
+ _: 1
1347
+ }, _parent));
1348
+ };
1349
+ }
1350
+ });
1351
+ const _sfc_setup$n = _sfc_main$n.setup;
1352
+ _sfc_main$n.setup = (props, ctx) => {
1353
+ const ssrContext = useSSRContext();
1354
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/scroll-area/ScrollBar.vue");
1355
+ return _sfc_setup$n ? _sfc_setup$n(props, ctx) : void 0;
1356
+ };
1357
+ const ScrollBar = Object.assign(_sfc_main$n, { __name: "UiScrollAreaScrollBar" });
1358
+ const _sfc_main$m = /* @__PURE__ */ defineComponent({
1359
+ __name: "ScrollArea",
1360
+ __ssrInlineRender: true,
1361
+ props: {
1362
+ type: {},
1363
+ dir: {},
1364
+ scrollHideDelay: {},
1365
+ asChild: { type: Boolean },
1366
+ as: {},
1367
+ class: {}
1368
+ },
1369
+ setup(__props) {
1370
+ const props = __props;
1371
+ const delegatedProps = reactiveOmit(props, "class");
1372
+ return (_ctx, _push, _parent, _attrs) => {
1373
+ _push(ssrRenderComponent(unref(ScrollAreaRoot), mergeProps({ "data-slot": "scroll-area" }, unref(delegatedProps), {
1374
+ class: unref(cn)("relative", props.class)
1375
+ }, _attrs), {
1376
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1377
+ if (_push2) {
1378
+ _push2(ssrRenderComponent(unref(ScrollAreaViewport), {
1379
+ "data-slot": "scroll-area-viewport",
1380
+ class: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1"
1381
+ }, {
1382
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
1383
+ if (_push3) {
1384
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push3, _parent3, _scopeId2);
1385
+ } else {
1386
+ return [
1387
+ renderSlot(_ctx.$slots, "default")
1388
+ ];
1389
+ }
1390
+ }),
1391
+ _: 3
1392
+ }, _parent2, _scopeId));
1393
+ _push2(ssrRenderComponent(ScrollBar, null, null, _parent2, _scopeId));
1394
+ _push2(ssrRenderComponent(unref(ScrollAreaCorner), null, null, _parent2, _scopeId));
1395
+ } else {
1396
+ return [
1397
+ createVNode(unref(ScrollAreaViewport), {
1398
+ "data-slot": "scroll-area-viewport",
1399
+ class: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1"
1400
+ }, {
1401
+ default: withCtx(() => [
1402
+ renderSlot(_ctx.$slots, "default")
1403
+ ]),
1404
+ _: 3
1405
+ }),
1406
+ createVNode(ScrollBar),
1407
+ createVNode(unref(ScrollAreaCorner))
1408
+ ];
1409
+ }
1410
+ }),
1411
+ _: 3
1412
+ }, _parent));
1413
+ };
1414
+ }
1415
+ });
1416
+ const _sfc_setup$m = _sfc_main$m.setup;
1417
+ _sfc_main$m.setup = (props, ctx) => {
1418
+ const ssrContext = useSSRContext();
1419
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/scroll-area/ScrollArea.vue");
1420
+ return _sfc_setup$m ? _sfc_setup$m(props, ctx) : void 0;
1421
+ };
1422
+ const ScrollArea = Object.assign(_sfc_main$m, { __name: "UiScrollArea" });
1423
+ const _sfc_main$l = /* @__PURE__ */ defineComponent({
1424
+ __name: "Tooltip",
1425
+ __ssrInlineRender: true,
1426
+ props: {
1427
+ defaultOpen: { type: Boolean },
1428
+ open: { type: Boolean },
1429
+ delayDuration: {},
1430
+ disableHoverableContent: { type: Boolean },
1431
+ disableClosingTrigger: { type: Boolean },
1432
+ disabled: { type: Boolean },
1433
+ ignoreNonKeyboardFocus: { type: Boolean }
1434
+ },
1435
+ emits: ["update:open"],
1436
+ setup(__props, { emit: __emit }) {
1437
+ const props = __props;
1438
+ const emits = __emit;
1439
+ const forwarded = useForwardPropsEmits(props, emits);
1440
+ return (_ctx, _push, _parent, _attrs) => {
1441
+ _push(ssrRenderComponent(unref(TooltipRoot), mergeProps({ "data-slot": "tooltip" }, unref(forwarded), _attrs), {
1442
+ default: withCtx((slotProps, _push2, _parent2, _scopeId) => {
1443
+ if (_push2) {
1444
+ ssrRenderSlot(_ctx.$slots, "default", slotProps, null, _push2, _parent2, _scopeId);
1445
+ } else {
1446
+ return [
1447
+ renderSlot(_ctx.$slots, "default", slotProps)
1448
+ ];
1449
+ }
1450
+ }),
1451
+ _: 3
1452
+ }, _parent));
1453
+ };
1454
+ }
1455
+ });
1456
+ const _sfc_setup$l = _sfc_main$l.setup;
1457
+ _sfc_main$l.setup = (props, ctx) => {
1458
+ const ssrContext = useSSRContext();
1459
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/tooltip/Tooltip.vue");
1460
+ return _sfc_setup$l ? _sfc_setup$l(props, ctx) : void 0;
1461
+ };
1462
+ const Tooltip = Object.assign(_sfc_main$l, { __name: "UiTooltip" });
1463
+ const _sfc_main$k = /* @__PURE__ */ defineComponent({
1464
+ ...{
1465
+ inheritAttrs: false
1466
+ },
1467
+ __name: "TooltipContent",
1468
+ __ssrInlineRender: true,
1469
+ props: {
1470
+ forceMount: { type: Boolean },
1471
+ ariaLabel: {},
1472
+ asChild: { type: Boolean },
1473
+ as: {},
1474
+ side: {},
1475
+ sideOffset: { default: 4 },
1476
+ align: {},
1477
+ alignOffset: {},
1478
+ avoidCollisions: { type: Boolean },
1479
+ collisionBoundary: {},
1480
+ collisionPadding: {},
1481
+ arrowPadding: {},
1482
+ sticky: {},
1483
+ hideWhenDetached: { type: Boolean },
1484
+ positionStrategy: {},
1485
+ updatePositionStrategy: {},
1486
+ class: {}
1487
+ },
1488
+ emits: ["escapeKeyDown", "pointerDownOutside"],
1489
+ setup(__props, { emit: __emit }) {
1490
+ const props = __props;
1491
+ const emits = __emit;
1492
+ const delegatedProps = reactiveOmit(props, "class");
1493
+ const forwarded = useForwardPropsEmits(delegatedProps, emits);
1494
+ return (_ctx, _push, _parent, _attrs) => {
1495
+ _push(ssrRenderComponent(unref(TooltipPortal), _attrs, {
1496
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1497
+ if (_push2) {
1498
+ _push2(ssrRenderComponent(unref(TooltipContent$1), mergeProps({ "data-slot": "tooltip-content" }, { ...unref(forwarded), ..._ctx.$attrs }, {
1499
+ class: unref(cn)("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance", props.class)
1500
+ }), {
1501
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
1502
+ if (_push3) {
1503
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push3, _parent3, _scopeId2);
1504
+ _push3(ssrRenderComponent(unref(TooltipArrow), { class: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" }, null, _parent3, _scopeId2));
1505
+ } else {
1506
+ return [
1507
+ renderSlot(_ctx.$slots, "default"),
1508
+ createVNode(unref(TooltipArrow), { class: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
1509
+ ];
1510
+ }
1511
+ }),
1512
+ _: 3
1513
+ }, _parent2, _scopeId));
1514
+ } else {
1515
+ return [
1516
+ createVNode(unref(TooltipContent$1), mergeProps({ "data-slot": "tooltip-content" }, { ...unref(forwarded), ..._ctx.$attrs }, {
1517
+ class: unref(cn)("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance", props.class)
1518
+ }), {
1519
+ default: withCtx(() => [
1520
+ renderSlot(_ctx.$slots, "default"),
1521
+ createVNode(unref(TooltipArrow), { class: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
1522
+ ]),
1523
+ _: 3
1524
+ }, 16, ["class"])
1525
+ ];
1526
+ }
1527
+ }),
1528
+ _: 3
1529
+ }, _parent));
1530
+ };
1531
+ }
1532
+ });
1533
+ const _sfc_setup$k = _sfc_main$k.setup;
1534
+ _sfc_main$k.setup = (props, ctx) => {
1535
+ const ssrContext = useSSRContext();
1536
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/tooltip/TooltipContent.vue");
1537
+ return _sfc_setup$k ? _sfc_setup$k(props, ctx) : void 0;
1538
+ };
1539
+ const TooltipContent = Object.assign(_sfc_main$k, { __name: "UiTooltipContent" });
1540
+ const _sfc_main$j = /* @__PURE__ */ defineComponent({
1541
+ __name: "TooltipProvider",
1542
+ __ssrInlineRender: true,
1543
+ props: {
1544
+ delayDuration: { default: 0 },
1545
+ skipDelayDuration: {},
1546
+ disableHoverableContent: { type: Boolean },
1547
+ disableClosingTrigger: { type: Boolean },
1548
+ disabled: { type: Boolean },
1549
+ ignoreNonKeyboardFocus: { type: Boolean }
1550
+ },
1551
+ setup(__props) {
1552
+ const props = __props;
1553
+ return (_ctx, _push, _parent, _attrs) => {
1554
+ _push(ssrRenderComponent(unref(TooltipProvider$1), mergeProps(props, _attrs), {
1555
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1556
+ if (_push2) {
1557
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
1558
+ } else {
1559
+ return [
1560
+ renderSlot(_ctx.$slots, "default")
1561
+ ];
1562
+ }
1563
+ }),
1564
+ _: 3
1565
+ }, _parent));
1566
+ };
1567
+ }
1568
+ });
1569
+ const _sfc_setup$j = _sfc_main$j.setup;
1570
+ _sfc_main$j.setup = (props, ctx) => {
1571
+ const ssrContext = useSSRContext();
1572
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/tooltip/TooltipProvider.vue");
1573
+ return _sfc_setup$j ? _sfc_setup$j(props, ctx) : void 0;
1574
+ };
1575
+ const TooltipProvider = Object.assign(_sfc_main$j, { __name: "UiTooltipProvider" });
1576
+ const _sfc_main$i = /* @__PURE__ */ defineComponent({
1577
+ __name: "TooltipTrigger",
1578
+ __ssrInlineRender: true,
1579
+ props: {
1580
+ reference: {},
1581
+ asChild: { type: Boolean },
1582
+ as: {}
1583
+ },
1584
+ setup(__props) {
1585
+ const props = __props;
1586
+ return (_ctx, _push, _parent, _attrs) => {
1587
+ _push(ssrRenderComponent(unref(TooltipTrigger$1), mergeProps({ "data-slot": "tooltip-trigger" }, props, _attrs), {
1588
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1589
+ if (_push2) {
1590
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
1591
+ } else {
1592
+ return [
1593
+ renderSlot(_ctx.$slots, "default")
1594
+ ];
1595
+ }
1596
+ }),
1597
+ _: 3
1598
+ }, _parent));
1599
+ };
1600
+ }
1601
+ });
1602
+ const _sfc_setup$i = _sfc_main$i.setup;
1603
+ _sfc_main$i.setup = (props, ctx) => {
1604
+ const ssrContext = useSSRContext();
1605
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/tooltip/TooltipTrigger.vue");
1606
+ return _sfc_setup$i ? _sfc_setup$i(props, ctx) : void 0;
1607
+ };
1608
+ const TooltipTrigger = Object.assign(_sfc_main$i, { __name: "UiTooltipTrigger" });
1609
+ function useGit() {
1610
+ const { showError } = useToast();
1611
+ function getErrorMessage(error) {
1612
+ if (error && typeof error === "object") {
1613
+ const fetchError = error;
1614
+ return fetchError.data?.message || fetchError.data?.statusMessage || fetchError.message || "Unknown error";
1615
+ }
1616
+ return "Unknown error";
1617
+ }
1618
+ const isLoadingCommits = ref(false);
1619
+ const isLoadingDiff = ref(false);
1620
+ const isLoadingFileDiff = ref(false);
1621
+ const isLoadingFileContent = ref(false);
1622
+ async function fetchCommits(repoId, shas, repoPath) {
1623
+ if (!repoId || shas.length === 0) {
1624
+ return { commits: [], failedShas: [] };
1625
+ }
1626
+ isLoadingCommits.value = true;
1627
+ try {
1628
+ const query = { shas: shas.join(",") };
1629
+ if (repoPath) {
1630
+ query.repo = repoPath;
1631
+ }
1632
+ const commits = await $fetch(
1633
+ `/api/repos/${repoId}/git/commits`,
1634
+ { query }
1635
+ );
1636
+ const returnedShortShas = commits.map((c) => c.shortSha);
1637
+ const failedShas = shas.filter((sha) => {
1638
+ return !returnedShortShas.some((shortSha) => shortSha.startsWith(sha) || sha.startsWith(shortSha));
1639
+ });
1640
+ return { commits, failedShas };
1641
+ } catch (error) {
1642
+ showError("Failed to fetch commits", getErrorMessage(error));
1643
+ return { commits: [], failedShas: shas };
1644
+ } finally {
1645
+ isLoadingCommits.value = false;
1646
+ }
1647
+ }
1648
+ async function fetchDiff(repoId, commitSha, repoPath) {
1649
+ if (!repoId || !commitSha) {
1650
+ return [];
1651
+ }
1652
+ isLoadingDiff.value = true;
1653
+ try {
1654
+ const query = { commit: commitSha };
1655
+ if (repoPath) {
1656
+ query.repo = repoPath;
1657
+ }
1658
+ const files = await $fetch(
1659
+ `/api/repos/${repoId}/git/diff`,
1660
+ { query }
1661
+ );
1662
+ return files;
1663
+ } catch (error) {
1664
+ showError("Failed to fetch diff", getErrorMessage(error));
1665
+ return [];
1666
+ } finally {
1667
+ isLoadingDiff.value = false;
1668
+ }
1669
+ }
1670
+ async function fetchFileDiff(repoId, commitSha, filePath, repoPath) {
1671
+ if (!repoId || !commitSha || !filePath) {
1672
+ return [];
1673
+ }
1674
+ isLoadingFileDiff.value = true;
1675
+ try {
1676
+ const query = { commit: commitSha, file: filePath };
1677
+ if (repoPath) {
1678
+ query.repo = repoPath;
1679
+ }
1680
+ const hunks = await $fetch(
1681
+ `/api/repos/${repoId}/git/file-diff`,
1682
+ { query }
1683
+ );
1684
+ return hunks;
1685
+ } catch (error) {
1686
+ showError("Failed to fetch file diff", getErrorMessage(error));
1687
+ return [];
1688
+ } finally {
1689
+ isLoadingFileDiff.value = false;
1690
+ }
1691
+ }
1692
+ async function fetchFileContent(repoId, commitSha, filePath, repoPath) {
1693
+ if (!repoId || !commitSha || !filePath) {
1694
+ return null;
1695
+ }
1696
+ isLoadingFileContent.value = true;
1697
+ try {
1698
+ const query = { commit: commitSha, file: filePath };
1699
+ if (repoPath) {
1700
+ query.repo = repoPath;
1701
+ }
1702
+ const result = await $fetch(
1703
+ `/api/repos/${repoId}/git/file-content`,
1704
+ { query }
1705
+ );
1706
+ return result.content;
1707
+ } catch (error) {
1708
+ showError("Failed to fetch file content", getErrorMessage(error));
1709
+ return null;
1710
+ } finally {
1711
+ isLoadingFileContent.value = false;
1712
+ }
1713
+ }
1714
+ return {
1715
+ // Functions
1716
+ fetchCommits,
1717
+ fetchDiff,
1718
+ fetchFileDiff,
1719
+ fetchFileContent,
1720
+ // Loading states
1721
+ isLoadingCommits: readonly(isLoadingCommits),
1722
+ isLoadingDiff: readonly(isLoadingDiff),
1723
+ isLoadingFileDiff: readonly(isLoadingFileDiff),
1724
+ isLoadingFileContent: readonly(isLoadingFileContent)
1725
+ };
1726
+ }
1727
+ const _sfc_main$h = /* @__PURE__ */ defineComponent({
1728
+ __name: "DiffPanel",
1729
+ __ssrInlineRender: true,
1730
+ props: {
1731
+ repoId: {},
1732
+ commitSha: {},
1733
+ repoPath: {}
1734
+ },
1735
+ emits: ["close"],
1736
+ setup(__props, { emit: __emit }) {
1737
+ const props = __props;
1738
+ const { fetchDiff, fetchFileDiff, fetchFileContent, isLoadingDiff, isLoadingFileDiff, isLoadingFileContent } = useGit();
1739
+ const files = ref([]);
1740
+ const selectedFile = ref();
1741
+ const hunks = ref([]);
1742
+ const fileContent = ref(null);
1743
+ const error = ref(null);
1744
+ const fileDiffError = ref(null);
1745
+ const viewMode = ref("changes");
1746
+ const selectedFileDiff = computed(() => files.value.find((f) => f.path === selectedFile.value));
1747
+ async function loadDiff() {
1748
+ error.value = null;
1749
+ files.value = [];
1750
+ selectedFile.value = void 0;
1751
+ hunks.value = [];
1752
+ const result = await fetchDiff(props.repoId, props.commitSha, props.repoPath);
1753
+ if (result.length === 0 && !isLoadingDiff.value) {
1754
+ error.value = null;
1755
+ }
1756
+ files.value = result;
1757
+ if (result.length > 0) {
1758
+ selectedFile.value = result[0].path;
1759
+ }
1760
+ }
1761
+ async function loadFileDiff() {
1762
+ if (!selectedFile.value) {
1763
+ hunks.value = [];
1764
+ fileContent.value = null;
1765
+ return;
1766
+ }
1767
+ fileDiffError.value = null;
1768
+ const result = await fetchFileDiff(props.repoId, props.commitSha, selectedFile.value, props.repoPath);
1769
+ hunks.value = result;
1770
+ if (viewMode.value === "full") {
1771
+ const content = await fetchFileContent(props.repoId, props.commitSha, selectedFile.value, props.repoPath);
1772
+ fileContent.value = content;
1773
+ }
1774
+ }
1775
+ function toggleViewMode() {
1776
+ viewMode.value = viewMode.value === "changes" ? "full" : "changes";
1777
+ }
1778
+ watch(viewMode, async (mode) => {
1779
+ if (mode === "full" && selectedFile.value && !fileContent.value) {
1780
+ const content = await fetchFileContent(props.repoId, props.commitSha, selectedFile.value, props.repoPath);
1781
+ fileContent.value = content;
1782
+ }
1783
+ });
1784
+ function handleFileSelect(path) {
1785
+ selectedFile.value = path;
1786
+ }
1787
+ function retry() {
1788
+ loadDiff();
1789
+ }
1790
+ function retryFileDiff() {
1791
+ loadFileDiff();
1792
+ }
1793
+ watch(selectedFile, () => {
1794
+ loadFileDiff();
1795
+ });
1796
+ watch(
1797
+ () => [props.repoId, props.commitSha, props.repoPath],
1798
+ () => {
1799
+ loadDiff();
1800
+ },
1801
+ { immediate: true }
1802
+ );
1803
+ const panelRef = ref(null);
1804
+ const diffViewerRef = ref(null);
1805
+ return (_ctx, _push, _parent, _attrs) => {
1806
+ const _component_GitChangesMinimap = __nuxt_component_0$1;
1807
+ const _component_GitDiffViewer = __nuxt_component_1$1;
1808
+ _push(`<div${ssrRenderAttrs(mergeProps({
1809
+ ref_key: "panelRef",
1810
+ ref: panelRef,
1811
+ class: "flex h-full flex-col overflow-hidden",
1812
+ tabindex: "-1"
1813
+ }, _attrs))}>`);
1814
+ if (unref(error)) {
1815
+ _push(`<div class="flex flex-1 flex-col items-center justify-center gap-4 p-8">`);
1816
+ _push(ssrRenderComponent(unref(AlertCircle), { class: "size-12 text-destructive" }, null, _parent));
1817
+ _push(`<div class="text-center"><p class="font-medium">Failed to load diff</p><p class="text-sm text-muted-foreground">${ssrInterpolate(unref(error))}</p></div>`);
1818
+ _push(ssrRenderComponent(unref(Button), {
1819
+ variant: "outline",
1820
+ size: "sm",
1821
+ onClick: retry
1822
+ }, {
1823
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1824
+ if (_push2) {
1825
+ _push2(ssrRenderComponent(unref(RefreshCw), { class: "mr-2 size-4" }, null, _parent2, _scopeId));
1826
+ _push2(` Retry `);
1827
+ } else {
1828
+ return [
1829
+ createVNode(unref(RefreshCw), { class: "mr-2 size-4" }),
1830
+ createTextVNode(" Retry ")
1831
+ ];
1832
+ }
1833
+ }),
1834
+ _: 1
1835
+ }, _parent));
1836
+ _push(`</div>`);
1837
+ } else if (unref(isLoadingDiff) && unref(files).length === 0) {
1838
+ _push(`<div class="flex flex-1 items-center justify-center">`);
1839
+ _push(ssrRenderComponent(unref(Loader2), { class: "size-8 animate-spin text-muted-foreground" }, null, _parent));
1840
+ _push(`</div>`);
1841
+ } else if (unref(files).length === 0) {
1842
+ _push(`<div class="flex flex-1 flex-col items-center justify-center gap-2 p-8 text-center text-muted-foreground"><p>No files changed in this commit</p></div>`);
1843
+ } else {
1844
+ _push(`<div class="flex min-h-0 flex-1 overflow-hidden"><div class="flex w-56 shrink-0 flex-col border-r border-border"><div class="flex items-center justify-between border-b border-border px-3 py-2"><span class="text-xs font-medium text-muted-foreground">${ssrInterpolate(unref(files).length)} file${ssrInterpolate(unref(files).length !== 1 ? "s" : "")} changed </span>`);
1845
+ _push(ssrRenderComponent(unref(TooltipProvider), null, {
1846
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1847
+ if (_push2) {
1848
+ _push2(ssrRenderComponent(unref(Tooltip), null, {
1849
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
1850
+ if (_push3) {
1851
+ _push3(ssrRenderComponent(unref(TooltipTrigger), { "as-child": "" }, {
1852
+ default: withCtx((_3, _push4, _parent4, _scopeId3) => {
1853
+ if (_push4) {
1854
+ _push4(`<button class="text-muted-foreground/50 transition-colors hover:text-muted-foreground"${_scopeId3}>`);
1855
+ _push4(ssrRenderComponent(unref(Keyboard), { class: "size-3.5" }, null, _parent4, _scopeId3));
1856
+ _push4(`</button>`);
1857
+ } else {
1858
+ return [
1859
+ createVNode("button", { class: "text-muted-foreground/50 transition-colors hover:text-muted-foreground" }, [
1860
+ createVNode(unref(Keyboard), { class: "size-3.5" })
1861
+ ])
1862
+ ];
1863
+ }
1864
+ }),
1865
+ _: 1
1866
+ }, _parent3, _scopeId2));
1867
+ _push3(ssrRenderComponent(unref(TooltipContent), {
1868
+ side: "bottom",
1869
+ align: "end",
1870
+ class: "max-w-xs"
1871
+ }, {
1872
+ default: withCtx((_3, _push4, _parent4, _scopeId3) => {
1873
+ if (_push4) {
1874
+ _push4(`<div class="space-y-1 text-xs"${_scopeId3}><div class="flex justify-between gap-4"${_scopeId3}><span class="text-muted-foreground"${_scopeId3}>Navigate files</span><span class="font-mono"${_scopeId3}>j/k or ↑/↓</span></div><div class="flex justify-between gap-4"${_scopeId3}><span class="text-muted-foreground"${_scopeId3}>Jump to hunk</span><span class="font-mono"${_scopeId3}>[ / ]</span></div><div class="flex justify-between gap-4"${_scopeId3}><span class="text-muted-foreground"${_scopeId3}>Close</span><span class="font-mono"${_scopeId3}>Esc</span></div></div>`);
1875
+ } else {
1876
+ return [
1877
+ createVNode("div", { class: "space-y-1 text-xs" }, [
1878
+ createVNode("div", { class: "flex justify-between gap-4" }, [
1879
+ createVNode("span", { class: "text-muted-foreground" }, "Navigate files"),
1880
+ createVNode("span", { class: "font-mono" }, "j/k or ↑/↓")
1881
+ ]),
1882
+ createVNode("div", { class: "flex justify-between gap-4" }, [
1883
+ createVNode("span", { class: "text-muted-foreground" }, "Jump to hunk"),
1884
+ createVNode("span", { class: "font-mono" }, "[ / ]")
1885
+ ]),
1886
+ createVNode("div", { class: "flex justify-between gap-4" }, [
1887
+ createVNode("span", { class: "text-muted-foreground" }, "Close"),
1888
+ createVNode("span", { class: "font-mono" }, "Esc")
1889
+ ])
1890
+ ])
1891
+ ];
1892
+ }
1893
+ }),
1894
+ _: 1
1895
+ }, _parent3, _scopeId2));
1896
+ } else {
1897
+ return [
1898
+ createVNode(unref(TooltipTrigger), { "as-child": "" }, {
1899
+ default: withCtx(() => [
1900
+ createVNode("button", { class: "text-muted-foreground/50 transition-colors hover:text-muted-foreground" }, [
1901
+ createVNode(unref(Keyboard), { class: "size-3.5" })
1902
+ ])
1903
+ ]),
1904
+ _: 1
1905
+ }),
1906
+ createVNode(unref(TooltipContent), {
1907
+ side: "bottom",
1908
+ align: "end",
1909
+ class: "max-w-xs"
1910
+ }, {
1911
+ default: withCtx(() => [
1912
+ createVNode("div", { class: "space-y-1 text-xs" }, [
1913
+ createVNode("div", { class: "flex justify-between gap-4" }, [
1914
+ createVNode("span", { class: "text-muted-foreground" }, "Navigate files"),
1915
+ createVNode("span", { class: "font-mono" }, "j/k or ↑/↓")
1916
+ ]),
1917
+ createVNode("div", { class: "flex justify-between gap-4" }, [
1918
+ createVNode("span", { class: "text-muted-foreground" }, "Jump to hunk"),
1919
+ createVNode("span", { class: "font-mono" }, "[ / ]")
1920
+ ]),
1921
+ createVNode("div", { class: "flex justify-between gap-4" }, [
1922
+ createVNode("span", { class: "text-muted-foreground" }, "Close"),
1923
+ createVNode("span", { class: "font-mono" }, "Esc")
1924
+ ])
1925
+ ])
1926
+ ]),
1927
+ _: 1
1928
+ })
1929
+ ];
1930
+ }
1931
+ }),
1932
+ _: 1
1933
+ }, _parent2, _scopeId));
1934
+ } else {
1935
+ return [
1936
+ createVNode(unref(Tooltip), null, {
1937
+ default: withCtx(() => [
1938
+ createVNode(unref(TooltipTrigger), { "as-child": "" }, {
1939
+ default: withCtx(() => [
1940
+ createVNode("button", { class: "text-muted-foreground/50 transition-colors hover:text-muted-foreground" }, [
1941
+ createVNode(unref(Keyboard), { class: "size-3.5" })
1942
+ ])
1943
+ ]),
1944
+ _: 1
1945
+ }),
1946
+ createVNode(unref(TooltipContent), {
1947
+ side: "bottom",
1948
+ align: "end",
1949
+ class: "max-w-xs"
1950
+ }, {
1951
+ default: withCtx(() => [
1952
+ createVNode("div", { class: "space-y-1 text-xs" }, [
1953
+ createVNode("div", { class: "flex justify-between gap-4" }, [
1954
+ createVNode("span", { class: "text-muted-foreground" }, "Navigate files"),
1955
+ createVNode("span", { class: "font-mono" }, "j/k or ↑/↓")
1956
+ ]),
1957
+ createVNode("div", { class: "flex justify-between gap-4" }, [
1958
+ createVNode("span", { class: "text-muted-foreground" }, "Jump to hunk"),
1959
+ createVNode("span", { class: "font-mono" }, "[ / ]")
1960
+ ]),
1961
+ createVNode("div", { class: "flex justify-between gap-4" }, [
1962
+ createVNode("span", { class: "text-muted-foreground" }, "Close"),
1963
+ createVNode("span", { class: "font-mono" }, "Esc")
1964
+ ])
1965
+ ])
1966
+ ]),
1967
+ _: 1
1968
+ })
1969
+ ]),
1970
+ _: 1
1971
+ })
1972
+ ];
1973
+ }
1974
+ }),
1975
+ _: 1
1976
+ }, _parent));
1977
+ _push(`</div><div class="min-h-0 flex-1 overflow-y-auto">`);
1978
+ _push(ssrRenderComponent(_component_GitChangesMinimap, {
1979
+ files: unref(files),
1980
+ "selected-file": unref(selectedFile),
1981
+ onSelect: handleFileSelect
1982
+ }, null, _parent));
1983
+ _push(`</div></div><div class="flex min-h-0 flex-1 flex-col overflow-hidden">`);
1984
+ if (unref(selectedFile)) {
1985
+ _push(`<div class="flex items-center gap-2 border-b border-border px-4 py-2">`);
1986
+ if (unref(selectedFileDiff)?.oldPath) {
1987
+ _push(`<span class="min-w-0 flex-1 truncate font-mono text-sm"><span class="text-muted-foreground">${ssrInterpolate(unref(selectedFileDiff).oldPath)}</span><span class="mx-2 text-muted-foreground">→</span><span>${ssrInterpolate(unref(selectedFile))}</span></span>`);
1988
+ } else {
1989
+ _push(`<span class="min-w-0 flex-1 truncate font-mono text-sm">${ssrInterpolate(unref(selectedFile))}</span>`);
1990
+ }
1991
+ if (unref(selectedFileDiff)?.binary) {
1992
+ _push(`<span class="rounded bg-yellow-500/10 px-1.5 py-0.5 text-xs text-yellow-600 dark:text-yellow-400"> binary </span>`);
1993
+ } else {
1994
+ _push(`<!---->`);
1995
+ }
1996
+ if (!unref(selectedFileDiff)?.binary) {
1997
+ _push(ssrRenderComponent(unref(TooltipProvider), null, {
1998
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
1999
+ if (_push2) {
2000
+ _push2(ssrRenderComponent(unref(Tooltip), null, {
2001
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
2002
+ if (_push3) {
2003
+ _push3(ssrRenderComponent(unref(TooltipTrigger), { "as-child": "" }, {
2004
+ default: withCtx((_3, _push4, _parent4, _scopeId3) => {
2005
+ if (_push4) {
2006
+ _push4(ssrRenderComponent(unref(Button), {
2007
+ variant: "ghost",
2008
+ size: "sm",
2009
+ class: "h-7 shrink-0 gap-1.5 text-xs",
2010
+ onClick: toggleViewMode
2011
+ }, {
2012
+ default: withCtx((_4, _push5, _parent5, _scopeId4) => {
2013
+ if (_push5) {
2014
+ ssrRenderVNode(_push5, createVNode(resolveDynamicComponent(unref(viewMode) === "changes" ? unref(FileDiff) : unref(FileCode)), { class: "size-3.5" }, null), _parent5, _scopeId4);
2015
+ _push5(` ${ssrInterpolate(unref(viewMode) === "changes" ? "Changes" : "Full file")}`);
2016
+ } else {
2017
+ return [
2018
+ (openBlock(), createBlock(resolveDynamicComponent(unref(viewMode) === "changes" ? unref(FileDiff) : unref(FileCode)), { class: "size-3.5" })),
2019
+ createTextVNode(" " + toDisplayString(unref(viewMode) === "changes" ? "Changes" : "Full file"), 1)
2020
+ ];
2021
+ }
2022
+ }),
2023
+ _: 1
2024
+ }, _parent4, _scopeId3));
2025
+ } else {
2026
+ return [
2027
+ createVNode(unref(Button), {
2028
+ variant: "ghost",
2029
+ size: "sm",
2030
+ class: "h-7 shrink-0 gap-1.5 text-xs",
2031
+ onClick: toggleViewMode
2032
+ }, {
2033
+ default: withCtx(() => [
2034
+ (openBlock(), createBlock(resolveDynamicComponent(unref(viewMode) === "changes" ? unref(FileDiff) : unref(FileCode)), { class: "size-3.5" })),
2035
+ createTextVNode(" " + toDisplayString(unref(viewMode) === "changes" ? "Changes" : "Full file"), 1)
2036
+ ]),
2037
+ _: 1
2038
+ })
2039
+ ];
2040
+ }
2041
+ }),
2042
+ _: 1
2043
+ }, _parent3, _scopeId2));
2044
+ _push3(ssrRenderComponent(unref(TooltipContent), null, {
2045
+ default: withCtx((_3, _push4, _parent4, _scopeId3) => {
2046
+ if (_push4) {
2047
+ _push4(`${ssrInterpolate(unref(viewMode) === "changes" ? "Show full file with changes" : "Show changes only")}`);
2048
+ } else {
2049
+ return [
2050
+ createTextVNode(toDisplayString(unref(viewMode) === "changes" ? "Show full file with changes" : "Show changes only"), 1)
2051
+ ];
2052
+ }
2053
+ }),
2054
+ _: 1
2055
+ }, _parent3, _scopeId2));
2056
+ } else {
2057
+ return [
2058
+ createVNode(unref(TooltipTrigger), { "as-child": "" }, {
2059
+ default: withCtx(() => [
2060
+ createVNode(unref(Button), {
2061
+ variant: "ghost",
2062
+ size: "sm",
2063
+ class: "h-7 shrink-0 gap-1.5 text-xs",
2064
+ onClick: toggleViewMode
2065
+ }, {
2066
+ default: withCtx(() => [
2067
+ (openBlock(), createBlock(resolveDynamicComponent(unref(viewMode) === "changes" ? unref(FileDiff) : unref(FileCode)), { class: "size-3.5" })),
2068
+ createTextVNode(" " + toDisplayString(unref(viewMode) === "changes" ? "Changes" : "Full file"), 1)
2069
+ ]),
2070
+ _: 1
2071
+ })
2072
+ ]),
2073
+ _: 1
2074
+ }),
2075
+ createVNode(unref(TooltipContent), null, {
2076
+ default: withCtx(() => [
2077
+ createTextVNode(toDisplayString(unref(viewMode) === "changes" ? "Show full file with changes" : "Show changes only"), 1)
2078
+ ]),
2079
+ _: 1
2080
+ })
2081
+ ];
2082
+ }
2083
+ }),
2084
+ _: 1
2085
+ }, _parent2, _scopeId));
2086
+ } else {
2087
+ return [
2088
+ createVNode(unref(Tooltip), null, {
2089
+ default: withCtx(() => [
2090
+ createVNode(unref(TooltipTrigger), { "as-child": "" }, {
2091
+ default: withCtx(() => [
2092
+ createVNode(unref(Button), {
2093
+ variant: "ghost",
2094
+ size: "sm",
2095
+ class: "h-7 shrink-0 gap-1.5 text-xs",
2096
+ onClick: toggleViewMode
2097
+ }, {
2098
+ default: withCtx(() => [
2099
+ (openBlock(), createBlock(resolveDynamicComponent(unref(viewMode) === "changes" ? unref(FileDiff) : unref(FileCode)), { class: "size-3.5" })),
2100
+ createTextVNode(" " + toDisplayString(unref(viewMode) === "changes" ? "Changes" : "Full file"), 1)
2101
+ ]),
2102
+ _: 1
2103
+ })
2104
+ ]),
2105
+ _: 1
2106
+ }),
2107
+ createVNode(unref(TooltipContent), null, {
2108
+ default: withCtx(() => [
2109
+ createTextVNode(toDisplayString(unref(viewMode) === "changes" ? "Show full file with changes" : "Show changes only"), 1)
2110
+ ]),
2111
+ _: 1
2112
+ })
2113
+ ]),
2114
+ _: 1
2115
+ })
2116
+ ];
2117
+ }
2118
+ }),
2119
+ _: 1
2120
+ }, _parent));
2121
+ } else {
2122
+ _push(`<!---->`);
2123
+ }
2124
+ _push(`</div>`);
2125
+ } else {
2126
+ _push(`<!---->`);
2127
+ }
2128
+ if (unref(isLoadingFileDiff)) {
2129
+ _push(`<div class="flex flex-1 items-center justify-center">`);
2130
+ _push(ssrRenderComponent(unref(Loader2), { class: "size-6 animate-spin text-muted-foreground" }, null, _parent));
2131
+ _push(`</div>`);
2132
+ } else if (unref(fileDiffError)) {
2133
+ _push(`<div class="flex flex-1 flex-col items-center justify-center gap-4 p-8">`);
2134
+ _push(ssrRenderComponent(unref(AlertCircle), { class: "size-8 text-destructive" }, null, _parent));
2135
+ _push(`<div class="text-center"><p class="text-sm font-medium">Failed to load file diff</p><p class="text-xs text-muted-foreground">${ssrInterpolate(unref(fileDiffError))}</p></div>`);
2136
+ _push(ssrRenderComponent(unref(Button), {
2137
+ variant: "outline",
2138
+ size: "sm",
2139
+ onClick: retryFileDiff
2140
+ }, {
2141
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
2142
+ if (_push2) {
2143
+ _push2(ssrRenderComponent(unref(RefreshCw), { class: "mr-2 size-4" }, null, _parent2, _scopeId));
2144
+ _push2(` Retry `);
2145
+ } else {
2146
+ return [
2147
+ createVNode(unref(RefreshCw), { class: "mr-2 size-4" }),
2148
+ createTextVNode(" Retry ")
2149
+ ];
2150
+ }
2151
+ }),
2152
+ _: 1
2153
+ }, _parent));
2154
+ _push(`</div>`);
2155
+ } else if (unref(selectedFile)) {
2156
+ _push(ssrRenderComponent(unref(ScrollArea), { class: "h-0 flex-1 overflow-hidden" }, {
2157
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
2158
+ if (_push2) {
2159
+ _push2(`<div${_scopeId}>`);
2160
+ _push2(ssrRenderComponent(_component_GitDiffViewer, {
2161
+ hunks: unref(hunks),
2162
+ "file-path": unref(selectedFile),
2163
+ binary: unref(selectedFileDiff)?.binary,
2164
+ "old-path": unref(selectedFileDiff)?.oldPath,
2165
+ "file-content": unref(fileContent),
2166
+ "show-full-file": unref(viewMode) === "full",
2167
+ "is-loading-content": unref(isLoadingFileContent)
2168
+ }, null, _parent2, _scopeId));
2169
+ _push2(`</div>`);
2170
+ } else {
2171
+ return [
2172
+ createVNode("div", {
2173
+ ref_key: "diffViewerRef",
2174
+ ref: diffViewerRef
2175
+ }, [
2176
+ createVNode(_component_GitDiffViewer, {
2177
+ hunks: unref(hunks),
2178
+ "file-path": unref(selectedFile),
2179
+ binary: unref(selectedFileDiff)?.binary,
2180
+ "old-path": unref(selectedFileDiff)?.oldPath,
2181
+ "file-content": unref(fileContent),
2182
+ "show-full-file": unref(viewMode) === "full",
2183
+ "is-loading-content": unref(isLoadingFileContent)
2184
+ }, null, 8, ["hunks", "file-path", "binary", "old-path", "file-content", "show-full-file", "is-loading-content"])
2185
+ ], 512)
2186
+ ];
2187
+ }
2188
+ }),
2189
+ _: 1
2190
+ }, _parent));
2191
+ } else {
2192
+ _push(`<div class="flex flex-1 items-center justify-center text-sm text-muted-foreground"> Select a file to view changes </div>`);
2193
+ }
2194
+ _push(`</div></div>`);
2195
+ }
2196
+ _push(`</div>`);
2197
+ };
2198
+ }
2199
+ });
2200
+ const _sfc_setup$h = _sfc_main$h.setup;
2201
+ _sfc_main$h.setup = (props, ctx) => {
2202
+ const ssrContext = useSSRContext();
2203
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/git/DiffPanel.vue");
2204
+ return _sfc_setup$h ? _sfc_setup$h(props, ctx) : void 0;
2205
+ };
2206
+ const __nuxt_component_0 = Object.assign(_sfc_main$h, { __name: "GitDiffPanel" });
2207
+ const _sfc_main$g = /* @__PURE__ */ defineComponent({
2208
+ __name: "CommitList",
2209
+ __ssrInlineRender: true,
2210
+ props: {
2211
+ commits: {},
2212
+ repoId: {}
2213
+ },
2214
+ emits: ["select"],
2215
+ setup(__props, { emit: __emit }) {
2216
+ const props = __props;
2217
+ const { fetchCommits, isLoadingCommits } = useGit();
2218
+ const commitDetails = ref(/* @__PURE__ */ new Map());
2219
+ const failedCommits = ref(/* @__PURE__ */ new Set());
2220
+ const hasMultipleRepos = computed(() => {
2221
+ const repos = new Set(props.commits.map((c) => c.repo).filter(Boolean));
2222
+ return repos.size > 1;
2223
+ });
2224
+ watch(
2225
+ () => ({ commits: props.commits, repoId: props.repoId }),
2226
+ async ({ commits, repoId }) => {
2227
+ if (commits.length === 0 || !repoId) {
2228
+ commitDetails.value = /* @__PURE__ */ new Map();
2229
+ failedCommits.value = /* @__PURE__ */ new Set();
2230
+ return;
2231
+ }
2232
+ const commitsByRepo = /* @__PURE__ */ new Map();
2233
+ for (const commit of commits) {
2234
+ const repoPath = commit.repo || "";
2235
+ if (!commitsByRepo.has(repoPath)) {
2236
+ commitsByRepo.set(repoPath, []);
2237
+ }
2238
+ commitsByRepo.get(repoPath).push(commit.sha);
2239
+ }
2240
+ const results = await Promise.all(
2241
+ Array.from(commitsByRepo.entries()).map(async ([repoPath, shas]) => {
2242
+ const result = await fetchCommits(repoId, shas, repoPath || void 0);
2243
+ return {
2244
+ commits: result.commits.map((c) => ({ ...c, repoPath })),
2245
+ failedShas: result.failedShas
2246
+ };
2247
+ })
2248
+ );
2249
+ const detailsMap = /* @__PURE__ */ new Map();
2250
+ const failed = /* @__PURE__ */ new Set();
2251
+ for (const { commits: repoCommits, failedShas } of results) {
2252
+ for (const commit of repoCommits) {
2253
+ detailsMap.set(commit.shortSha, commit);
2254
+ }
2255
+ for (const sha of failedShas) {
2256
+ failed.add(sha);
2257
+ }
2258
+ }
2259
+ commitDetails.value = detailsMap;
2260
+ failedCommits.value = failed;
2261
+ },
2262
+ { immediate: true }
2263
+ );
2264
+ function formatRelativeDate(isoDate) {
2265
+ const date = new Date(isoDate);
2266
+ const now = /* @__PURE__ */ new Date();
2267
+ const diffMs = now.getTime() - date.getTime();
2268
+ const diffSeconds = Math.floor(diffMs / 1e3);
2269
+ const diffMinutes = Math.floor(diffSeconds / 60);
2270
+ const diffHours = Math.floor(diffMinutes / 60);
2271
+ const diffDays = Math.floor(diffHours / 24);
2272
+ if (diffSeconds < 60) {
2273
+ return "just now";
2274
+ } else if (diffMinutes < 60) {
2275
+ return `${diffMinutes} minute${diffMinutes === 1 ? "" : "s"} ago`;
2276
+ } else if (diffHours < 24) {
2277
+ return `${diffHours} hour${diffHours === 1 ? "" : "s"} ago`;
2278
+ } else if (diffDays < 7) {
2279
+ return `${diffDays} day${diffDays === 1 ? "" : "s"} ago`;
2280
+ } else {
2281
+ return date.toLocaleDateString();
2282
+ }
2283
+ }
2284
+ function getDetails(sha) {
2285
+ const direct = commitDetails.value.get(sha);
2286
+ if (direct) return direct;
2287
+ for (const [key, commit] of commitDetails.value) {
2288
+ if (key.startsWith(sha) || sha.startsWith(key)) {
2289
+ return commit;
2290
+ }
2291
+ }
2292
+ return void 0;
2293
+ }
2294
+ function isFailed(sha) {
2295
+ if (failedCommits.value.has(sha)) return true;
2296
+ for (const failedSha of failedCommits.value) {
2297
+ if (failedSha.startsWith(sha) || sha.startsWith(failedSha)) {
2298
+ return true;
2299
+ }
2300
+ }
2301
+ return false;
2302
+ }
2303
+ return (_ctx, _push, _parent, _attrs) => {
2304
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "space-y-2" }, _attrs))}>`);
2305
+ if (unref(isLoadingCommits)) {
2306
+ _push(`<!--[-->`);
2307
+ ssrRenderList(Math.min(__props.commits.length, 3), (i) => {
2308
+ _push(`<div class="animate-pulse rounded-lg border bg-muted/50 p-3"><div class="flex items-start gap-3"><div class="h-5 w-5 rounded bg-muted"></div><div class="flex-1 space-y-2"><div class="h-4 w-20 rounded bg-muted"></div><div class="h-4 w-3/4 rounded bg-muted"></div><div class="h-3 w-1/2 rounded bg-muted"></div></div></div></div>`);
2309
+ });
2310
+ _push(`<!--]-->`);
2311
+ } else if (__props.commits.length === 0) {
2312
+ _push(`<div class="rounded-lg border border-dashed p-4 text-center text-sm text-muted-foreground"> No commits recorded for this task </div>`);
2313
+ } else {
2314
+ _push(`<!--[-->`);
2315
+ ssrRenderList(__props.commits, (commit) => {
2316
+ _push(`<button class="w-full rounded-lg border bg-card p-3 text-left transition-colors hover:bg-muted/50 focus:outline-none focus:ring-2 focus:ring-ring"><div class="flex items-start gap-3">`);
2317
+ _push(ssrRenderComponent(unref(GitCommit), { class: "mt-0.5 size-5 shrink-0 text-muted-foreground" }, null, _parent));
2318
+ _push(`<div class="min-w-0 flex-1"><div class="flex flex-wrap items-center gap-2"><code class="font-mono text-xs font-medium text-primary">${ssrInterpolate(getDetails(commit.sha)?.shortSha || commit.sha.substring(0, 7))}</code>`);
2319
+ if (getDetails(commit.sha)) {
2320
+ _push(`<!--[--><span class="flex items-center gap-1 text-xs text-muted-foreground">`);
2321
+ _push(ssrRenderComponent(unref(FileText), { class: "size-3" }, null, _parent));
2322
+ _push(` ${ssrInterpolate(getDetails(commit.sha).filesChanged)}</span><span class="flex items-center gap-0.5 text-xs text-green-600 dark:text-green-400">`);
2323
+ _push(ssrRenderComponent(unref(Plus), { class: "size-3" }, null, _parent));
2324
+ _push(`${ssrInterpolate(getDetails(commit.sha).additions)}</span><span class="flex items-center gap-0.5 text-xs text-red-600 dark:text-red-400">`);
2325
+ _push(ssrRenderComponent(unref(Minus), { class: "size-3" }, null, _parent));
2326
+ _push(`${ssrInterpolate(getDetails(commit.sha).deletions)}</span><!--]-->`);
2327
+ } else {
2328
+ _push(`<!---->`);
2329
+ }
2330
+ if (commit.repo && unref(hasMultipleRepos)) {
2331
+ _push(ssrRenderComponent(unref(Badge), {
2332
+ variant: "secondary",
2333
+ class: "gap-1 text-xs"
2334
+ }, {
2335
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
2336
+ if (_push2) {
2337
+ _push2(ssrRenderComponent(unref(FolderGit2), { class: "size-3" }, null, _parent2, _scopeId));
2338
+ _push2(` ${ssrInterpolate(commit.repo)}`);
2339
+ } else {
2340
+ return [
2341
+ createVNode(unref(FolderGit2), { class: "size-3" }),
2342
+ createTextVNode(" " + toDisplayString(commit.repo), 1)
2343
+ ];
2344
+ }
2345
+ }),
2346
+ _: 2
2347
+ }, _parent));
2348
+ } else {
2349
+ _push(`<!---->`);
2350
+ }
2351
+ _push(`</div><p class="mt-1 truncate text-sm">`);
2352
+ if (getDetails(commit.sha)) {
2353
+ _push(`<!--[-->${ssrInterpolate(getDetails(commit.sha).message)}<!--]-->`);
2354
+ } else if (isFailed(commit.sha)) {
2355
+ _push(`<span class="flex items-center gap-1 text-muted-foreground">`);
2356
+ _push(ssrRenderComponent(unref(AlertCircle), { class: "size-3" }, null, _parent));
2357
+ _push(` Commit unavailable </span>`);
2358
+ } else {
2359
+ _push(`<span class="text-muted-foreground">Loading...</span>`);
2360
+ }
2361
+ _push(`</p>`);
2362
+ if (getDetails(commit.sha)) {
2363
+ _push(`<p class="mt-1 text-xs text-muted-foreground">${ssrInterpolate(getDetails(commit.sha).author)} · ${ssrInterpolate(formatRelativeDate(getDetails(commit.sha).date))}</p>`);
2364
+ } else {
2365
+ _push(`<!---->`);
2366
+ }
2367
+ _push(`</div></div></button>`);
2368
+ });
2369
+ _push(`<!--]-->`);
2370
+ }
2371
+ _push(`</div>`);
2372
+ };
2373
+ }
2374
+ });
2375
+ const _sfc_setup$g = _sfc_main$g.setup;
2376
+ _sfc_main$g.setup = (props, ctx) => {
2377
+ const ssrContext = useSSRContext();
2378
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/git/CommitList.vue");
2379
+ return _sfc_setup$g ? _sfc_setup$g(props, ctx) : void 0;
2380
+ };
2381
+ const __nuxt_component_1 = Object.assign(_sfc_main$g, { __name: "GitCommitList" });
2382
+ const _sfc_main$f = /* @__PURE__ */ defineComponent({
2383
+ __name: "Sheet",
2384
+ __ssrInlineRender: true,
2385
+ props: {
2386
+ open: { type: Boolean },
2387
+ defaultOpen: { type: Boolean },
2388
+ modal: { type: Boolean }
2389
+ },
2390
+ emits: ["update:open"],
2391
+ setup(__props, { emit: __emit }) {
2392
+ const props = __props;
2393
+ const emits = __emit;
2394
+ const forwarded = useForwardPropsEmits(props, emits);
2395
+ return (_ctx, _push, _parent, _attrs) => {
2396
+ _push(ssrRenderComponent(unref(DialogRoot), mergeProps({ "data-slot": "sheet" }, unref(forwarded), _attrs), {
2397
+ default: withCtx((slotProps, _push2, _parent2, _scopeId) => {
2398
+ if (_push2) {
2399
+ ssrRenderSlot(_ctx.$slots, "default", slotProps, null, _push2, _parent2, _scopeId);
2400
+ } else {
2401
+ return [
2402
+ renderSlot(_ctx.$slots, "default", slotProps)
2403
+ ];
2404
+ }
2405
+ }),
2406
+ _: 3
2407
+ }, _parent));
2408
+ };
2409
+ }
2410
+ });
2411
+ const _sfc_setup$f = _sfc_main$f.setup;
2412
+ _sfc_main$f.setup = (props, ctx) => {
2413
+ const ssrContext = useSSRContext();
2414
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/Sheet.vue");
2415
+ return _sfc_setup$f ? _sfc_setup$f(props, ctx) : void 0;
2416
+ };
2417
+ const Sheet = Object.assign(_sfc_main$f, { __name: "UiSheet" });
2418
+ const _sfc_main$e = /* @__PURE__ */ defineComponent({
2419
+ __name: "SheetClose",
2420
+ __ssrInlineRender: true,
2421
+ props: {
2422
+ asChild: { type: Boolean },
2423
+ as: {}
2424
+ },
2425
+ setup(__props) {
2426
+ const props = __props;
2427
+ return (_ctx, _push, _parent, _attrs) => {
2428
+ _push(ssrRenderComponent(unref(DialogClose), mergeProps({ "data-slot": "sheet-close" }, props, _attrs), {
2429
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
2430
+ if (_push2) {
2431
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
2432
+ } else {
2433
+ return [
2434
+ renderSlot(_ctx.$slots, "default")
2435
+ ];
2436
+ }
2437
+ }),
2438
+ _: 3
2439
+ }, _parent));
2440
+ };
2441
+ }
2442
+ });
2443
+ const _sfc_setup$e = _sfc_main$e.setup;
2444
+ _sfc_main$e.setup = (props, ctx) => {
2445
+ const ssrContext = useSSRContext();
2446
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/SheetClose.vue");
2447
+ return _sfc_setup$e ? _sfc_setup$e(props, ctx) : void 0;
2448
+ };
2449
+ const SheetClose = Object.assign(_sfc_main$e, { __name: "UiSheetClose" });
2450
+ const _sfc_main$d = /* @__PURE__ */ defineComponent({
2451
+ __name: "SheetOverlay",
2452
+ __ssrInlineRender: true,
2453
+ props: {
2454
+ forceMount: { type: Boolean },
2455
+ asChild: { type: Boolean },
2456
+ as: {},
2457
+ class: {}
2458
+ },
2459
+ setup(__props) {
2460
+ const props = __props;
2461
+ const delegatedProps = reactiveOmit(props, "class");
2462
+ return (_ctx, _push, _parent, _attrs) => {
2463
+ _push(ssrRenderComponent(unref(DialogOverlay), mergeProps({
2464
+ "data-slot": "sheet-overlay",
2465
+ class: unref(cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80", props.class)
2466
+ }, unref(delegatedProps), _attrs), {
2467
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
2468
+ if (_push2) {
2469
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
2470
+ } else {
2471
+ return [
2472
+ renderSlot(_ctx.$slots, "default")
2473
+ ];
2474
+ }
2475
+ }),
2476
+ _: 3
2477
+ }, _parent));
2478
+ };
2479
+ }
2480
+ });
2481
+ const _sfc_setup$d = _sfc_main$d.setup;
2482
+ _sfc_main$d.setup = (props, ctx) => {
2483
+ const ssrContext = useSSRContext();
2484
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/SheetOverlay.vue");
2485
+ return _sfc_setup$d ? _sfc_setup$d(props, ctx) : void 0;
2486
+ };
2487
+ const SheetOverlay = Object.assign(_sfc_main$d, { __name: "UiSheetOverlay" });
2488
+ const _sfc_main$c = /* @__PURE__ */ defineComponent({
2489
+ ...{
2490
+ inheritAttrs: false
2491
+ },
2492
+ __name: "SheetContent",
2493
+ __ssrInlineRender: true,
2494
+ props: {
2495
+ class: {},
2496
+ side: { default: "right" },
2497
+ forceMount: { type: Boolean },
2498
+ disableOutsidePointerEvents: { type: Boolean },
2499
+ asChild: { type: Boolean },
2500
+ as: {}
2501
+ },
2502
+ emits: ["escapeKeyDown", "pointerDownOutside", "focusOutside", "interactOutside", "openAutoFocus", "closeAutoFocus"],
2503
+ setup(__props, { emit: __emit }) {
2504
+ const props = __props;
2505
+ const emits = __emit;
2506
+ const delegatedProps = reactiveOmit(props, "class", "side");
2507
+ const forwarded = useForwardPropsEmits(delegatedProps, emits);
2508
+ return (_ctx, _push, _parent, _attrs) => {
2509
+ _push(ssrRenderComponent(unref(DialogPortal), _attrs, {
2510
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
2511
+ if (_push2) {
2512
+ _push2(ssrRenderComponent(SheetOverlay, null, null, _parent2, _scopeId));
2513
+ _push2(ssrRenderComponent(unref(DialogContent), mergeProps({
2514
+ "data-slot": "sheet-content",
2515
+ class: unref(cn)(
2516
+ "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
2517
+ __props.side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
2518
+ __props.side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
2519
+ __props.side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",
2520
+ __props.side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",
2521
+ props.class
2522
+ )
2523
+ }, { ..._ctx.$attrs, ...unref(forwarded) }), {
2524
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
2525
+ if (_push3) {
2526
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push3, _parent3, _scopeId2);
2527
+ _push3(ssrRenderComponent(unref(DialogClose), { class: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none" }, {
2528
+ default: withCtx((_3, _push4, _parent4, _scopeId3) => {
2529
+ if (_push4) {
2530
+ _push4(ssrRenderComponent(unref(X), { class: "size-4" }, null, _parent4, _scopeId3));
2531
+ _push4(`<span class="sr-only"${_scopeId3}>Close</span>`);
2532
+ } else {
2533
+ return [
2534
+ createVNode(unref(X), { class: "size-4" }),
2535
+ createVNode("span", { class: "sr-only" }, "Close")
2536
+ ];
2537
+ }
2538
+ }),
2539
+ _: 1
2540
+ }, _parent3, _scopeId2));
2541
+ } else {
2542
+ return [
2543
+ renderSlot(_ctx.$slots, "default"),
2544
+ createVNode(unref(DialogClose), { class: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none" }, {
2545
+ default: withCtx(() => [
2546
+ createVNode(unref(X), { class: "size-4" }),
2547
+ createVNode("span", { class: "sr-only" }, "Close")
2548
+ ]),
2549
+ _: 1
2550
+ })
2551
+ ];
2552
+ }
2553
+ }),
2554
+ _: 3
2555
+ }, _parent2, _scopeId));
2556
+ } else {
2557
+ return [
2558
+ createVNode(SheetOverlay),
2559
+ createVNode(unref(DialogContent), mergeProps({
2560
+ "data-slot": "sheet-content",
2561
+ class: unref(cn)(
2562
+ "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
2563
+ __props.side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
2564
+ __props.side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
2565
+ __props.side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",
2566
+ __props.side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",
2567
+ props.class
2568
+ )
2569
+ }, { ..._ctx.$attrs, ...unref(forwarded) }), {
2570
+ default: withCtx(() => [
2571
+ renderSlot(_ctx.$slots, "default"),
2572
+ createVNode(unref(DialogClose), { class: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none" }, {
2573
+ default: withCtx(() => [
2574
+ createVNode(unref(X), { class: "size-4" }),
2575
+ createVNode("span", { class: "sr-only" }, "Close")
2576
+ ]),
2577
+ _: 1
2578
+ })
2579
+ ]),
2580
+ _: 3
2581
+ }, 16, ["class"])
2582
+ ];
2583
+ }
2584
+ }),
2585
+ _: 3
2586
+ }, _parent));
2587
+ };
2588
+ }
2589
+ });
2590
+ const _sfc_setup$c = _sfc_main$c.setup;
2591
+ _sfc_main$c.setup = (props, ctx) => {
2592
+ const ssrContext = useSSRContext();
2593
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/SheetContent.vue");
2594
+ return _sfc_setup$c ? _sfc_setup$c(props, ctx) : void 0;
2595
+ };
2596
+ const SheetContent = Object.assign(_sfc_main$c, { __name: "UiSheetContent" });
2597
+ const _sfc_main$b = /* @__PURE__ */ defineComponent({
2598
+ __name: "SheetDescription",
2599
+ __ssrInlineRender: true,
2600
+ props: {
2601
+ asChild: { type: Boolean },
2602
+ as: {},
2603
+ class: {}
2604
+ },
2605
+ setup(__props) {
2606
+ const props = __props;
2607
+ const delegatedProps = reactiveOmit(props, "class");
2608
+ return (_ctx, _push, _parent, _attrs) => {
2609
+ _push(ssrRenderComponent(unref(DialogDescription), mergeProps({
2610
+ "data-slot": "sheet-description",
2611
+ class: unref(cn)("text-muted-foreground text-sm", props.class)
2612
+ }, unref(delegatedProps), _attrs), {
2613
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
2614
+ if (_push2) {
2615
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
2616
+ } else {
2617
+ return [
2618
+ renderSlot(_ctx.$slots, "default")
2619
+ ];
2620
+ }
2621
+ }),
2622
+ _: 3
2623
+ }, _parent));
2624
+ };
2625
+ }
2626
+ });
2627
+ const _sfc_setup$b = _sfc_main$b.setup;
2628
+ _sfc_main$b.setup = (props, ctx) => {
2629
+ const ssrContext = useSSRContext();
2630
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/SheetDescription.vue");
2631
+ return _sfc_setup$b ? _sfc_setup$b(props, ctx) : void 0;
2632
+ };
2633
+ const SheetDescription = Object.assign(_sfc_main$b, { __name: "UiSheetDescription" });
2634
+ const _sfc_main$a = /* @__PURE__ */ defineComponent({
2635
+ __name: "SheetFooter",
2636
+ __ssrInlineRender: true,
2637
+ props: {
2638
+ class: {}
2639
+ },
2640
+ setup(__props) {
2641
+ const props = __props;
2642
+ return (_ctx, _push, _parent, _attrs) => {
2643
+ _push(`<div${ssrRenderAttrs(mergeProps({
2644
+ "data-slot": "sheet-footer",
2645
+ class: unref(cn)("mt-auto flex flex-col gap-2 p-4", props.class)
2646
+ }, _attrs))}>`);
2647
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
2648
+ _push(`</div>`);
2649
+ };
2650
+ }
2651
+ });
2652
+ const _sfc_setup$a = _sfc_main$a.setup;
2653
+ _sfc_main$a.setup = (props, ctx) => {
2654
+ const ssrContext = useSSRContext();
2655
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/SheetFooter.vue");
2656
+ return _sfc_setup$a ? _sfc_setup$a(props, ctx) : void 0;
2657
+ };
2658
+ const SheetFooter = Object.assign(_sfc_main$a, { __name: "UiSheetFooter" });
2659
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
2660
+ __name: "SheetHeader",
2661
+ __ssrInlineRender: true,
2662
+ props: {
2663
+ class: {}
2664
+ },
2665
+ setup(__props) {
2666
+ const props = __props;
2667
+ return (_ctx, _push, _parent, _attrs) => {
2668
+ _push(`<div${ssrRenderAttrs(mergeProps({
2669
+ "data-slot": "sheet-header",
2670
+ class: unref(cn)("flex flex-col gap-1.5 p-4", props.class)
2671
+ }, _attrs))}>`);
2672
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
2673
+ _push(`</div>`);
2674
+ };
2675
+ }
2676
+ });
2677
+ const _sfc_setup$9 = _sfc_main$9.setup;
2678
+ _sfc_main$9.setup = (props, ctx) => {
2679
+ const ssrContext = useSSRContext();
2680
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/SheetHeader.vue");
2681
+ return _sfc_setup$9 ? _sfc_setup$9(props, ctx) : void 0;
2682
+ };
2683
+ const SheetHeader = Object.assign(_sfc_main$9, { __name: "UiSheetHeader" });
2684
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
2685
+ __name: "SheetTitle",
2686
+ __ssrInlineRender: true,
2687
+ props: {
2688
+ asChild: { type: Boolean },
2689
+ as: {},
2690
+ class: {}
2691
+ },
2692
+ setup(__props) {
2693
+ const props = __props;
2694
+ const delegatedProps = reactiveOmit(props, "class");
2695
+ return (_ctx, _push, _parent, _attrs) => {
2696
+ _push(ssrRenderComponent(unref(DialogTitle), mergeProps({
2697
+ "data-slot": "sheet-title",
2698
+ class: unref(cn)("text-foreground font-semibold", props.class)
2699
+ }, unref(delegatedProps), _attrs), {
2700
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
2701
+ if (_push2) {
2702
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
2703
+ } else {
2704
+ return [
2705
+ renderSlot(_ctx.$slots, "default")
2706
+ ];
2707
+ }
2708
+ }),
2709
+ _: 3
2710
+ }, _parent));
2711
+ };
2712
+ }
2713
+ });
2714
+ const _sfc_setup$8 = _sfc_main$8.setup;
2715
+ _sfc_main$8.setup = (props, ctx) => {
2716
+ const ssrContext = useSSRContext();
2717
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/SheetTitle.vue");
2718
+ return _sfc_setup$8 ? _sfc_setup$8(props, ctx) : void 0;
2719
+ };
2720
+ const SheetTitle = Object.assign(_sfc_main$8, { __name: "UiSheetTitle" });
2721
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
2722
+ __name: "SheetTrigger",
2723
+ __ssrInlineRender: true,
2724
+ props: {
2725
+ asChild: { type: Boolean },
2726
+ as: {}
2727
+ },
2728
+ setup(__props) {
2729
+ const props = __props;
2730
+ return (_ctx, _push, _parent, _attrs) => {
2731
+ _push(ssrRenderComponent(unref(DialogTrigger), mergeProps({ "data-slot": "sheet-trigger" }, props, _attrs), {
2732
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
2733
+ if (_push2) {
2734
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
2735
+ } else {
2736
+ return [
2737
+ renderSlot(_ctx.$slots, "default")
2738
+ ];
2739
+ }
2740
+ }),
2741
+ _: 3
2742
+ }, _parent));
2743
+ };
2744
+ }
2745
+ });
2746
+ const _sfc_setup$7 = _sfc_main$7.setup;
2747
+ _sfc_main$7.setup = (props, ctx) => {
2748
+ const ssrContext = useSSRContext();
2749
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/SheetTrigger.vue");
2750
+ return _sfc_setup$7 ? _sfc_setup$7(props, ctx) : void 0;
2751
+ };
2752
+ Object.assign(_sfc_main$7, { __name: "UiSheetTrigger" });
2753
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
2754
+ __name: "Separator",
2755
+ __ssrInlineRender: true,
2756
+ props: {
2757
+ orientation: { default: "horizontal" },
2758
+ decorative: { type: Boolean, default: true },
2759
+ asChild: { type: Boolean },
2760
+ as: {},
2761
+ class: {}
2762
+ },
2763
+ setup(__props) {
2764
+ const props = __props;
2765
+ const delegatedProps = reactiveOmit(props, "class");
2766
+ return (_ctx, _push, _parent, _attrs) => {
2767
+ _push(ssrRenderComponent(unref(Separator$1), mergeProps({ "data-slot": "separator" }, unref(delegatedProps), {
2768
+ class: unref(cn)(
2769
+ "bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
2770
+ props.class
2771
+ )
2772
+ }, _attrs), null, _parent));
2773
+ };
2774
+ }
2775
+ });
2776
+ const _sfc_setup$6 = _sfc_main$6.setup;
2777
+ _sfc_main$6.setup = (props, ctx) => {
2778
+ const ssrContext = useSSRContext();
2779
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/separator/Separator.vue");
2780
+ return _sfc_setup$6 ? _sfc_setup$6(props, ctx) : void 0;
2781
+ };
2782
+ const Separator = Object.assign(_sfc_main$6, { __name: "UiSeparator" });
2783
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
2784
+ __name: "Detail",
2785
+ __ssrInlineRender: true,
2786
+ props: /* @__PURE__ */ mergeModels({
2787
+ task: {},
2788
+ taskTitles: {},
2789
+ commits: {},
2790
+ repoId: {}
2791
+ }, {
2792
+ "open": { type: Boolean, ...{ default: false } },
2793
+ "openModifiers": {}
2794
+ }),
2795
+ emits: ["update:open"],
2796
+ setup(__props) {
2797
+ const props = __props;
2798
+ const open = useModel(__props, "open");
2799
+ const categoryConfig = computed(() => {
2800
+ if (!props.task) return { label: "", variant: "secondary" };
2801
+ switch (props.task.category) {
2802
+ case "setup":
2803
+ return { label: "Setup", variant: "secondary" };
2804
+ case "feature":
2805
+ return { label: "Feature", variant: "default" };
2806
+ case "integration":
2807
+ return { label: "Integration", variant: "outline" };
2808
+ case "testing":
2809
+ return { label: "Testing", variant: "secondary" };
2810
+ case "documentation":
2811
+ return { label: "Docs", variant: "secondary" };
2812
+ default:
2813
+ return { label: props.task.category, variant: "secondary" };
2814
+ }
2815
+ });
2816
+ const priorityConfig = computed(() => {
2817
+ if (!props.task) return { label: "", class: "" };
2818
+ switch (props.task.priority) {
2819
+ case "critical":
2820
+ return { label: "Critical", class: "text-destructive" };
2821
+ case "high":
2822
+ return { label: "High", class: "text-orange-500" };
2823
+ case "medium":
2824
+ return { label: "Medium", class: "text-muted-foreground" };
2825
+ case "low":
2826
+ return { label: "Low", class: "text-muted-foreground" };
2827
+ default:
2828
+ return { label: props.task.priority, class: "text-muted-foreground" };
2829
+ }
2830
+ });
2831
+ const statusConfig = computed(() => {
2832
+ if (!props.task) return { label: "", icon: Circle, class: "" };
2833
+ switch (props.task.status) {
2834
+ case "pending":
2835
+ return { label: "Pending", icon: Circle, class: "text-muted-foreground" };
2836
+ case "in_progress":
2837
+ return { label: "In Progress", icon: Clock, class: "text-blue-500" };
2838
+ case "completed":
2839
+ return { label: "Completed", icon: CheckCircle2, class: "text-green-500" };
2840
+ default:
2841
+ return { label: props.task.status, icon: Circle, class: "text-muted-foreground" };
2842
+ }
2843
+ });
2844
+ function formatDate(isoString) {
2845
+ if (!isoString) return "";
2846
+ try {
2847
+ return new Date(isoString).toLocaleString();
2848
+ } catch {
2849
+ return isoString;
2850
+ }
2851
+ }
2852
+ function getTaskTitle(taskId) {
2853
+ return props.taskTitles?.get(taskId) ?? taskId;
2854
+ }
2855
+ const hasCommits = computed(() => props.commits && props.commits.length > 0 && props.repoId);
2856
+ const viewMode = ref("details");
2857
+ const selectedCommitSha = ref(null);
2858
+ const selectedCommitRepo = ref(null);
2859
+ function handleCommitSelect(sha, repo) {
2860
+ selectedCommitSha.value = sha;
2861
+ selectedCommitRepo.value = repo || null;
2862
+ viewMode.value = "diff";
2863
+ }
2864
+ function handleBackToDetails() {
2865
+ viewMode.value = "details";
2866
+ selectedCommitSha.value = null;
2867
+ selectedCommitRepo.value = null;
2868
+ }
2869
+ watch(() => props.task, () => {
2870
+ viewMode.value = "details";
2871
+ selectedCommitSha.value = null;
2872
+ selectedCommitRepo.value = null;
2873
+ });
2874
+ watch(open, (isOpen) => {
2875
+ if (!isOpen) {
2876
+ viewMode.value = "details";
2877
+ selectedCommitSha.value = null;
2878
+ selectedCommitRepo.value = null;
2879
+ }
2880
+ });
2881
+ return (_ctx, _push, _parent, _attrs) => {
2882
+ const _component_GitDiffPanel = __nuxt_component_0;
2883
+ const _component_GitCommitList = __nuxt_component_1;
2884
+ _push(ssrRenderComponent(unref(Sheet), mergeProps({
2885
+ open: open.value,
2886
+ "onUpdate:open": ($event) => open.value = $event
2887
+ }, _attrs), {
2888
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
2889
+ if (_push2) {
2890
+ _push2(ssrRenderComponent(unref(SheetContent), {
2891
+ class: ["flex h-full w-full flex-col overflow-hidden sm:max-w-lg", { "sm:!max-w-none !max-w-none": unref(viewMode) === "diff" }]
2892
+ }, {
2893
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
2894
+ if (_push3) {
2895
+ if (__props.task) {
2896
+ _push3(ssrRenderComponent(unref(SheetHeader), { class: "px-6 pr-12" }, {
2897
+ default: withCtx((_3, _push4, _parent4, _scopeId3) => {
2898
+ if (_push4) {
2899
+ _push4(`<div class="flex items-center gap-2"${_scopeId3}>`);
2900
+ if (unref(viewMode) === "diff") {
2901
+ _push4(ssrRenderComponent(unref(Button), {
2902
+ variant: "ghost",
2903
+ size: "icon",
2904
+ class: "size-8 shrink-0",
2905
+ onClick: handleBackToDetails
2906
+ }, {
2907
+ default: withCtx((_4, _push5, _parent5, _scopeId4) => {
2908
+ if (_push5) {
2909
+ _push5(ssrRenderComponent(unref(ArrowLeft), { class: "size-4" }, null, _parent5, _scopeId4));
2910
+ } else {
2911
+ return [
2912
+ createVNode(unref(ArrowLeft), { class: "size-4" })
2913
+ ];
2914
+ }
2915
+ }),
2916
+ _: 1
2917
+ }, _parent4, _scopeId3));
2918
+ } else {
2919
+ _push4(`<!---->`);
2920
+ }
2921
+ _push4(ssrRenderComponent(unref(SheetTitle), { class: "text-left text-lg" }, {
2922
+ default: withCtx((_4, _push5, _parent5, _scopeId4) => {
2923
+ if (_push5) {
2924
+ _push5(`${ssrInterpolate(unref(viewMode) === "diff" ? "Commit Changes" : __props.task.title)}`);
2925
+ } else {
2926
+ return [
2927
+ createTextVNode(toDisplayString(unref(viewMode) === "diff" ? "Commit Changes" : __props.task.title), 1)
2928
+ ];
2929
+ }
2930
+ }),
2931
+ _: 1
2932
+ }, _parent4, _scopeId3));
2933
+ _push4(`</div>`);
2934
+ _push4(ssrRenderComponent(unref(SheetDescription), { class: "sr-only" }, {
2935
+ default: withCtx((_4, _push5, _parent5, _scopeId4) => {
2936
+ if (_push5) {
2937
+ _push5(`Task details`);
2938
+ } else {
2939
+ return [
2940
+ createTextVNode("Task details")
2941
+ ];
2942
+ }
2943
+ }),
2944
+ _: 1
2945
+ }, _parent4, _scopeId3));
2946
+ } else {
2947
+ return [
2948
+ createVNode("div", { class: "flex items-center gap-2" }, [
2949
+ unref(viewMode) === "diff" ? (openBlock(), createBlock(unref(Button), {
2950
+ key: 0,
2951
+ variant: "ghost",
2952
+ size: "icon",
2953
+ class: "size-8 shrink-0",
2954
+ onClick: handleBackToDetails
2955
+ }, {
2956
+ default: withCtx(() => [
2957
+ createVNode(unref(ArrowLeft), { class: "size-4" })
2958
+ ]),
2959
+ _: 1
2960
+ })) : createCommentVNode("", true),
2961
+ createVNode(unref(SheetTitle), { class: "text-left text-lg" }, {
2962
+ default: withCtx(() => [
2963
+ createTextVNode(toDisplayString(unref(viewMode) === "diff" ? "Commit Changes" : __props.task.title), 1)
2964
+ ]),
2965
+ _: 1
2966
+ })
2967
+ ]),
2968
+ createVNode(unref(SheetDescription), { class: "sr-only" }, {
2969
+ default: withCtx(() => [
2970
+ createTextVNode("Task details")
2971
+ ]),
2972
+ _: 1
2973
+ })
2974
+ ];
2975
+ }
2976
+ }),
2977
+ _: 1
2978
+ }, _parent3, _scopeId2));
2979
+ } else {
2980
+ _push3(`<!---->`);
2981
+ }
2982
+ if (__props.task && unref(viewMode) === "diff" && unref(selectedCommitSha) && __props.repoId) {
2983
+ _push3(`<div class="min-h-0 flex-1 overflow-hidden"${_scopeId2}>`);
2984
+ _push3(ssrRenderComponent(_component_GitDiffPanel, {
2985
+ "repo-id": __props.repoId,
2986
+ "commit-sha": unref(selectedCommitSha),
2987
+ "repo-path": unref(selectedCommitRepo) || void 0,
2988
+ class: "h-full",
2989
+ onClose: handleBackToDetails
2990
+ }, null, _parent3, _scopeId2));
2991
+ _push3(`</div>`);
2992
+ } else if (__props.task) {
2993
+ _push3(`<div class="min-h-0 flex-1 space-y-4 overflow-y-auto px-6"${_scopeId2}><div class="flex flex-wrap items-center gap-2"${_scopeId2}>`);
2994
+ _push3(ssrRenderComponent(unref(Badge), {
2995
+ variant: unref(categoryConfig).variant
2996
+ }, {
2997
+ default: withCtx((_3, _push4, _parent4, _scopeId3) => {
2998
+ if (_push4) {
2999
+ _push4(ssrRenderComponent(unref(Tag), { class: "mr-1 size-3" }, null, _parent4, _scopeId3));
3000
+ _push4(` ${ssrInterpolate(unref(categoryConfig).label)}`);
3001
+ } else {
3002
+ return [
3003
+ createVNode(unref(Tag), { class: "mr-1 size-3" }),
3004
+ createTextVNode(" " + toDisplayString(unref(categoryConfig).label), 1)
3005
+ ];
3006
+ }
3007
+ }),
3008
+ _: 1
3009
+ }, _parent3, _scopeId2));
3010
+ _push3(ssrRenderComponent(unref(Badge), {
3011
+ variant: "outline",
3012
+ class: unref(priorityConfig).class
3013
+ }, {
3014
+ default: withCtx((_3, _push4, _parent4, _scopeId3) => {
3015
+ if (_push4) {
3016
+ _push4(ssrRenderComponent(unref(AlertTriangle), { class: "mr-1 size-3" }, null, _parent4, _scopeId3));
3017
+ _push4(` ${ssrInterpolate(unref(priorityConfig).label)}`);
3018
+ } else {
3019
+ return [
3020
+ createVNode(unref(AlertTriangle), { class: "mr-1 size-3" }),
3021
+ createTextVNode(" " + toDisplayString(unref(priorityConfig).label), 1)
3022
+ ];
3023
+ }
3024
+ }),
3025
+ _: 1
3026
+ }, _parent3, _scopeId2));
3027
+ _push3(ssrRenderComponent(unref(Badge), {
3028
+ variant: "outline",
3029
+ class: unref(statusConfig).class
3030
+ }, {
3031
+ default: withCtx((_3, _push4, _parent4, _scopeId3) => {
3032
+ if (_push4) {
3033
+ ssrRenderVNode(_push4, createVNode(resolveDynamicComponent(unref(statusConfig).icon), { class: "mr-1 size-3" }, null), _parent4, _scopeId3);
3034
+ _push4(` ${ssrInterpolate(unref(statusConfig).label)}`);
3035
+ } else {
3036
+ return [
3037
+ (openBlock(), createBlock(resolveDynamicComponent(unref(statusConfig).icon), { class: "mr-1 size-3" })),
3038
+ createTextVNode(" " + toDisplayString(unref(statusConfig).label), 1)
3039
+ ];
3040
+ }
3041
+ }),
3042
+ _: 1
3043
+ }, _parent3, _scopeId2));
3044
+ _push3(`</div><div class="space-y-2"${_scopeId2}><h4 class="text-sm font-medium"${_scopeId2}>Description</h4><p class="text-sm text-muted-foreground leading-relaxed"${_scopeId2}>${ssrInterpolate(__props.task.description)}</p></div>`);
3045
+ _push3(ssrRenderComponent(unref(Separator), null, null, _parent3, _scopeId2));
3046
+ if (__props.task.steps.length > 0) {
3047
+ _push3(`<div class="space-y-2"${_scopeId2}><h4 class="flex items-center gap-2 text-sm font-medium"${_scopeId2}>`);
3048
+ _push3(ssrRenderComponent(unref(ListOrdered), { class: "size-4" }, null, _parent3, _scopeId2));
3049
+ _push3(` Steps </h4><ol class="ml-4 list-decimal space-y-1 text-sm text-muted-foreground"${_scopeId2}><!--[-->`);
3050
+ ssrRenderList(__props.task.steps, (step, index) => {
3051
+ _push3(`<li class="pl-1"${_scopeId2}>${ssrInterpolate(step)}</li>`);
3052
+ });
3053
+ _push3(`<!--]--></ol></div>`);
3054
+ } else {
3055
+ _push3(`<!---->`);
3056
+ }
3057
+ if (__props.task.steps.length > 0 && __props.task.passes.length > 0) {
3058
+ _push3(ssrRenderComponent(unref(Separator), null, null, _parent3, _scopeId2));
3059
+ } else {
3060
+ _push3(`<!---->`);
3061
+ }
3062
+ if (__props.task.passes.length > 0) {
3063
+ _push3(`<div class="space-y-2"${_scopeId2}><h4 class="flex items-center gap-2 text-sm font-medium"${_scopeId2}>`);
3064
+ _push3(ssrRenderComponent(unref(CheckSquare), { class: "size-4" }, null, _parent3, _scopeId2));
3065
+ _push3(` Pass Criteria </h4><ul class="space-y-1.5 text-sm text-muted-foreground"${_scopeId2}><!--[-->`);
3066
+ ssrRenderList(__props.task.passes, (pass, index) => {
3067
+ _push3(`<li class="flex items-start gap-2"${_scopeId2}><div class="${ssrRenderClass([__props.task.status === "completed" ? "border-primary bg-primary text-primary-foreground" : "border-muted-foreground/50", "mt-0.5 flex size-4 shrink-0 items-center justify-center rounded border"])}"${_scopeId2}>`);
3068
+ if (__props.task.status === "completed") {
3069
+ _push3(ssrRenderComponent(unref(Check), { class: "size-3" }, null, _parent3, _scopeId2));
3070
+ } else {
3071
+ _push3(`<!---->`);
3072
+ }
3073
+ _push3(`</div><span${_scopeId2}>${ssrInterpolate(pass)}</span></li>`);
3074
+ });
3075
+ _push3(`<!--]--></ul></div>`);
3076
+ } else {
3077
+ _push3(`<!---->`);
3078
+ }
3079
+ if (__props.task.dependencies.length > 0) {
3080
+ _push3(ssrRenderComponent(unref(Separator), null, null, _parent3, _scopeId2));
3081
+ } else {
3082
+ _push3(`<!---->`);
3083
+ }
3084
+ if (__props.task.dependencies.length > 0) {
3085
+ _push3(`<div class="space-y-2"${_scopeId2}><h4 class="flex items-center gap-2 text-sm font-medium"${_scopeId2}>`);
3086
+ _push3(ssrRenderComponent(unref(Link2), { class: "size-4" }, null, _parent3, _scopeId2));
3087
+ _push3(` Dependencies </h4><ul class="space-y-1 text-sm text-muted-foreground"${_scopeId2}><!--[-->`);
3088
+ ssrRenderList(__props.task.dependencies, (depId) => {
3089
+ _push3(`<li class="flex items-center gap-2"${_scopeId2}><span class="font-mono text-xs"${_scopeId2}>${ssrInterpolate(depId)}</span><span${_scopeId2}>${ssrInterpolate(getTaskTitle(depId))}</span></li>`);
3090
+ });
3091
+ _push3(`<!--]--></ul></div>`);
3092
+ } else {
3093
+ _push3(`<!---->`);
3094
+ }
3095
+ if (unref(hasCommits)) {
3096
+ _push3(`<!--[-->`);
3097
+ _push3(ssrRenderComponent(unref(Separator), null, null, _parent3, _scopeId2));
3098
+ _push3(`<div class="space-y-2"${_scopeId2}><h4 class="flex items-center gap-2 text-sm font-medium"${_scopeId2}>`);
3099
+ _push3(ssrRenderComponent(unref(Diff), { class: "size-4" }, null, _parent3, _scopeId2));
3100
+ _push3(` Changes </h4>`);
3101
+ _push3(ssrRenderComponent(_component_GitCommitList, {
3102
+ commits: __props.commits,
3103
+ "repo-id": __props.repoId,
3104
+ onSelect: handleCommitSelect
3105
+ }, null, _parent3, _scopeId2));
3106
+ _push3(`</div><!--]-->`);
3107
+ } else {
3108
+ _push3(`<!---->`);
3109
+ }
3110
+ if (__props.task.startedAt || __props.task.completedAt) {
3111
+ _push3(`<div class="space-y-2"${_scopeId2}>`);
3112
+ _push3(ssrRenderComponent(unref(Separator), null, null, _parent3, _scopeId2));
3113
+ _push3(`<div class="flex flex-col gap-1 text-xs text-muted-foreground"${_scopeId2}>`);
3114
+ if (__props.task.startedAt) {
3115
+ _push3(`<div class="flex items-center gap-2"${_scopeId2}>`);
3116
+ _push3(ssrRenderComponent(unref(Calendar), { class: "size-3" }, null, _parent3, _scopeId2));
3117
+ _push3(`<span${_scopeId2}>Started: ${ssrInterpolate(formatDate(__props.task.startedAt))}</span></div>`);
3118
+ } else {
3119
+ _push3(`<!---->`);
3120
+ }
3121
+ if (__props.task.completedAt) {
3122
+ _push3(`<div class="flex items-center gap-2"${_scopeId2}>`);
3123
+ _push3(ssrRenderComponent(unref(CheckCircle2), { class: "size-3" }, null, _parent3, _scopeId2));
3124
+ _push3(`<span${_scopeId2}>Completed: ${ssrInterpolate(formatDate(__props.task.completedAt))}</span></div>`);
3125
+ } else {
3126
+ _push3(`<!---->`);
3127
+ }
3128
+ _push3(`</div></div>`);
3129
+ } else {
3130
+ _push3(`<!---->`);
3131
+ }
3132
+ _push3(`</div>`);
3133
+ } else {
3134
+ _push3(`<!---->`);
3135
+ }
3136
+ _push3(ssrRenderComponent(unref(SheetFooter), { class: "px-6 pb-6" }, {
3137
+ default: withCtx((_3, _push4, _parent4, _scopeId3) => {
3138
+ if (_push4) {
3139
+ _push4(ssrRenderComponent(unref(SheetClose), { "as-child": "" }, {
3140
+ default: withCtx((_4, _push5, _parent5, _scopeId4) => {
3141
+ if (_push5) {
3142
+ _push5(ssrRenderComponent(unref(Button), {
3143
+ variant: "outline",
3144
+ class: "w-full"
3145
+ }, {
3146
+ default: withCtx((_5, _push6, _parent6, _scopeId5) => {
3147
+ if (_push6) {
3148
+ _push6(`Close`);
3149
+ } else {
3150
+ return [
3151
+ createTextVNode("Close")
3152
+ ];
3153
+ }
3154
+ }),
3155
+ _: 1
3156
+ }, _parent5, _scopeId4));
3157
+ } else {
3158
+ return [
3159
+ createVNode(unref(Button), {
3160
+ variant: "outline",
3161
+ class: "w-full"
3162
+ }, {
3163
+ default: withCtx(() => [
3164
+ createTextVNode("Close")
3165
+ ]),
3166
+ _: 1
3167
+ })
3168
+ ];
3169
+ }
3170
+ }),
3171
+ _: 1
3172
+ }, _parent4, _scopeId3));
3173
+ } else {
3174
+ return [
3175
+ createVNode(unref(SheetClose), { "as-child": "" }, {
3176
+ default: withCtx(() => [
3177
+ createVNode(unref(Button), {
3178
+ variant: "outline",
3179
+ class: "w-full"
3180
+ }, {
3181
+ default: withCtx(() => [
3182
+ createTextVNode("Close")
3183
+ ]),
3184
+ _: 1
3185
+ })
3186
+ ]),
3187
+ _: 1
3188
+ })
3189
+ ];
3190
+ }
3191
+ }),
3192
+ _: 1
3193
+ }, _parent3, _scopeId2));
3194
+ } else {
3195
+ return [
3196
+ __props.task ? (openBlock(), createBlock(unref(SheetHeader), {
3197
+ key: 0,
3198
+ class: "px-6 pr-12"
3199
+ }, {
3200
+ default: withCtx(() => [
3201
+ createVNode("div", { class: "flex items-center gap-2" }, [
3202
+ unref(viewMode) === "diff" ? (openBlock(), createBlock(unref(Button), {
3203
+ key: 0,
3204
+ variant: "ghost",
3205
+ size: "icon",
3206
+ class: "size-8 shrink-0",
3207
+ onClick: handleBackToDetails
3208
+ }, {
3209
+ default: withCtx(() => [
3210
+ createVNode(unref(ArrowLeft), { class: "size-4" })
3211
+ ]),
3212
+ _: 1
3213
+ })) : createCommentVNode("", true),
3214
+ createVNode(unref(SheetTitle), { class: "text-left text-lg" }, {
3215
+ default: withCtx(() => [
3216
+ createTextVNode(toDisplayString(unref(viewMode) === "diff" ? "Commit Changes" : __props.task.title), 1)
3217
+ ]),
3218
+ _: 1
3219
+ })
3220
+ ]),
3221
+ createVNode(unref(SheetDescription), { class: "sr-only" }, {
3222
+ default: withCtx(() => [
3223
+ createTextVNode("Task details")
3224
+ ]),
3225
+ _: 1
3226
+ })
3227
+ ]),
3228
+ _: 1
3229
+ })) : createCommentVNode("", true),
3230
+ __props.task && unref(viewMode) === "diff" && unref(selectedCommitSha) && __props.repoId ? (openBlock(), createBlock("div", {
3231
+ key: 1,
3232
+ class: "min-h-0 flex-1 overflow-hidden"
3233
+ }, [
3234
+ createVNode(_component_GitDiffPanel, {
3235
+ "repo-id": __props.repoId,
3236
+ "commit-sha": unref(selectedCommitSha),
3237
+ "repo-path": unref(selectedCommitRepo) || void 0,
3238
+ class: "h-full",
3239
+ onClose: handleBackToDetails
3240
+ }, null, 8, ["repo-id", "commit-sha", "repo-path"])
3241
+ ])) : __props.task ? (openBlock(), createBlock("div", {
3242
+ key: 2,
3243
+ class: "min-h-0 flex-1 space-y-4 overflow-y-auto px-6"
3244
+ }, [
3245
+ createVNode("div", { class: "flex flex-wrap items-center gap-2" }, [
3246
+ createVNode(unref(Badge), {
3247
+ variant: unref(categoryConfig).variant
3248
+ }, {
3249
+ default: withCtx(() => [
3250
+ createVNode(unref(Tag), { class: "mr-1 size-3" }),
3251
+ createTextVNode(" " + toDisplayString(unref(categoryConfig).label), 1)
3252
+ ]),
3253
+ _: 1
3254
+ }, 8, ["variant"]),
3255
+ createVNode(unref(Badge), {
3256
+ variant: "outline",
3257
+ class: unref(priorityConfig).class
3258
+ }, {
3259
+ default: withCtx(() => [
3260
+ createVNode(unref(AlertTriangle), { class: "mr-1 size-3" }),
3261
+ createTextVNode(" " + toDisplayString(unref(priorityConfig).label), 1)
3262
+ ]),
3263
+ _: 1
3264
+ }, 8, ["class"]),
3265
+ createVNode(unref(Badge), {
3266
+ variant: "outline",
3267
+ class: unref(statusConfig).class
3268
+ }, {
3269
+ default: withCtx(() => [
3270
+ (openBlock(), createBlock(resolveDynamicComponent(unref(statusConfig).icon), { class: "mr-1 size-3" })),
3271
+ createTextVNode(" " + toDisplayString(unref(statusConfig).label), 1)
3272
+ ]),
3273
+ _: 1
3274
+ }, 8, ["class"])
3275
+ ]),
3276
+ createVNode("div", { class: "space-y-2" }, [
3277
+ createVNode("h4", { class: "text-sm font-medium" }, "Description"),
3278
+ createVNode("p", { class: "text-sm text-muted-foreground leading-relaxed" }, toDisplayString(__props.task.description), 1)
3279
+ ]),
3280
+ createVNode(unref(Separator)),
3281
+ __props.task.steps.length > 0 ? (openBlock(), createBlock("div", {
3282
+ key: 0,
3283
+ class: "space-y-2"
3284
+ }, [
3285
+ createVNode("h4", { class: "flex items-center gap-2 text-sm font-medium" }, [
3286
+ createVNode(unref(ListOrdered), { class: "size-4" }),
3287
+ createTextVNode(" Steps ")
3288
+ ]),
3289
+ createVNode("ol", { class: "ml-4 list-decimal space-y-1 text-sm text-muted-foreground" }, [
3290
+ (openBlock(true), createBlock(Fragment, null, renderList(__props.task.steps, (step, index) => {
3291
+ return openBlock(), createBlock("li", {
3292
+ key: index,
3293
+ class: "pl-1"
3294
+ }, toDisplayString(step), 1);
3295
+ }), 128))
3296
+ ])
3297
+ ])) : createCommentVNode("", true),
3298
+ __props.task.steps.length > 0 && __props.task.passes.length > 0 ? (openBlock(), createBlock(unref(Separator), { key: 1 })) : createCommentVNode("", true),
3299
+ __props.task.passes.length > 0 ? (openBlock(), createBlock("div", {
3300
+ key: 2,
3301
+ class: "space-y-2"
3302
+ }, [
3303
+ createVNode("h4", { class: "flex items-center gap-2 text-sm font-medium" }, [
3304
+ createVNode(unref(CheckSquare), { class: "size-4" }),
3305
+ createTextVNode(" Pass Criteria ")
3306
+ ]),
3307
+ createVNode("ul", { class: "space-y-1.5 text-sm text-muted-foreground" }, [
3308
+ (openBlock(true), createBlock(Fragment, null, renderList(__props.task.passes, (pass, index) => {
3309
+ return openBlock(), createBlock("li", {
3310
+ key: index,
3311
+ class: "flex items-start gap-2"
3312
+ }, [
3313
+ createVNode("div", {
3314
+ class: ["mt-0.5 flex size-4 shrink-0 items-center justify-center rounded border", __props.task.status === "completed" ? "border-primary bg-primary text-primary-foreground" : "border-muted-foreground/50"]
3315
+ }, [
3316
+ __props.task.status === "completed" ? (openBlock(), createBlock(unref(Check), {
3317
+ key: 0,
3318
+ class: "size-3"
3319
+ })) : createCommentVNode("", true)
3320
+ ], 2),
3321
+ createVNode("span", null, toDisplayString(pass), 1)
3322
+ ]);
3323
+ }), 128))
3324
+ ])
3325
+ ])) : createCommentVNode("", true),
3326
+ __props.task.dependencies.length > 0 ? (openBlock(), createBlock(unref(Separator), { key: 3 })) : createCommentVNode("", true),
3327
+ __props.task.dependencies.length > 0 ? (openBlock(), createBlock("div", {
3328
+ key: 4,
3329
+ class: "space-y-2"
3330
+ }, [
3331
+ createVNode("h4", { class: "flex items-center gap-2 text-sm font-medium" }, [
3332
+ createVNode(unref(Link2), { class: "size-4" }),
3333
+ createTextVNode(" Dependencies ")
3334
+ ]),
3335
+ createVNode("ul", { class: "space-y-1 text-sm text-muted-foreground" }, [
3336
+ (openBlock(true), createBlock(Fragment, null, renderList(__props.task.dependencies, (depId) => {
3337
+ return openBlock(), createBlock("li", {
3338
+ key: depId,
3339
+ class: "flex items-center gap-2"
3340
+ }, [
3341
+ createVNode("span", { class: "font-mono text-xs" }, toDisplayString(depId), 1),
3342
+ createVNode("span", null, toDisplayString(getTaskTitle(depId)), 1)
3343
+ ]);
3344
+ }), 128))
3345
+ ])
3346
+ ])) : createCommentVNode("", true),
3347
+ unref(hasCommits) ? (openBlock(), createBlock(Fragment, { key: 5 }, [
3348
+ createVNode(unref(Separator)),
3349
+ createVNode("div", { class: "space-y-2" }, [
3350
+ createVNode("h4", { class: "flex items-center gap-2 text-sm font-medium" }, [
3351
+ createVNode(unref(Diff), { class: "size-4" }),
3352
+ createTextVNode(" Changes ")
3353
+ ]),
3354
+ createVNode(_component_GitCommitList, {
3355
+ commits: __props.commits,
3356
+ "repo-id": __props.repoId,
3357
+ onSelect: handleCommitSelect
3358
+ }, null, 8, ["commits", "repo-id"])
3359
+ ])
3360
+ ], 64)) : createCommentVNode("", true),
3361
+ __props.task.startedAt || __props.task.completedAt ? (openBlock(), createBlock("div", {
3362
+ key: 6,
3363
+ class: "space-y-2"
3364
+ }, [
3365
+ createVNode(unref(Separator)),
3366
+ createVNode("div", { class: "flex flex-col gap-1 text-xs text-muted-foreground" }, [
3367
+ __props.task.startedAt ? (openBlock(), createBlock("div", {
3368
+ key: 0,
3369
+ class: "flex items-center gap-2"
3370
+ }, [
3371
+ createVNode(unref(Calendar), { class: "size-3" }),
3372
+ createVNode("span", null, "Started: " + toDisplayString(formatDate(__props.task.startedAt)), 1)
3373
+ ])) : createCommentVNode("", true),
3374
+ __props.task.completedAt ? (openBlock(), createBlock("div", {
3375
+ key: 1,
3376
+ class: "flex items-center gap-2"
3377
+ }, [
3378
+ createVNode(unref(CheckCircle2), { class: "size-3" }),
3379
+ createVNode("span", null, "Completed: " + toDisplayString(formatDate(__props.task.completedAt)), 1)
3380
+ ])) : createCommentVNode("", true)
3381
+ ])
3382
+ ])) : createCommentVNode("", true)
3383
+ ])) : createCommentVNode("", true),
3384
+ createVNode(unref(SheetFooter), { class: "px-6 pb-6" }, {
3385
+ default: withCtx(() => [
3386
+ createVNode(unref(SheetClose), { "as-child": "" }, {
3387
+ default: withCtx(() => [
3388
+ createVNode(unref(Button), {
3389
+ variant: "outline",
3390
+ class: "w-full"
3391
+ }, {
3392
+ default: withCtx(() => [
3393
+ createTextVNode("Close")
3394
+ ]),
3395
+ _: 1
3396
+ })
3397
+ ]),
3398
+ _: 1
3399
+ })
3400
+ ]),
3401
+ _: 1
3402
+ })
3403
+ ];
3404
+ }
3405
+ }),
3406
+ _: 1
3407
+ }, _parent2, _scopeId));
3408
+ } else {
3409
+ return [
3410
+ createVNode(unref(SheetContent), {
3411
+ class: ["flex h-full w-full flex-col overflow-hidden sm:max-w-lg", { "sm:!max-w-none !max-w-none": unref(viewMode) === "diff" }]
3412
+ }, {
3413
+ default: withCtx(() => [
3414
+ __props.task ? (openBlock(), createBlock(unref(SheetHeader), {
3415
+ key: 0,
3416
+ class: "px-6 pr-12"
3417
+ }, {
3418
+ default: withCtx(() => [
3419
+ createVNode("div", { class: "flex items-center gap-2" }, [
3420
+ unref(viewMode) === "diff" ? (openBlock(), createBlock(unref(Button), {
3421
+ key: 0,
3422
+ variant: "ghost",
3423
+ size: "icon",
3424
+ class: "size-8 shrink-0",
3425
+ onClick: handleBackToDetails
3426
+ }, {
3427
+ default: withCtx(() => [
3428
+ createVNode(unref(ArrowLeft), { class: "size-4" })
3429
+ ]),
3430
+ _: 1
3431
+ })) : createCommentVNode("", true),
3432
+ createVNode(unref(SheetTitle), { class: "text-left text-lg" }, {
3433
+ default: withCtx(() => [
3434
+ createTextVNode(toDisplayString(unref(viewMode) === "diff" ? "Commit Changes" : __props.task.title), 1)
3435
+ ]),
3436
+ _: 1
3437
+ })
3438
+ ]),
3439
+ createVNode(unref(SheetDescription), { class: "sr-only" }, {
3440
+ default: withCtx(() => [
3441
+ createTextVNode("Task details")
3442
+ ]),
3443
+ _: 1
3444
+ })
3445
+ ]),
3446
+ _: 1
3447
+ })) : createCommentVNode("", true),
3448
+ __props.task && unref(viewMode) === "diff" && unref(selectedCommitSha) && __props.repoId ? (openBlock(), createBlock("div", {
3449
+ key: 1,
3450
+ class: "min-h-0 flex-1 overflow-hidden"
3451
+ }, [
3452
+ createVNode(_component_GitDiffPanel, {
3453
+ "repo-id": __props.repoId,
3454
+ "commit-sha": unref(selectedCommitSha),
3455
+ "repo-path": unref(selectedCommitRepo) || void 0,
3456
+ class: "h-full",
3457
+ onClose: handleBackToDetails
3458
+ }, null, 8, ["repo-id", "commit-sha", "repo-path"])
3459
+ ])) : __props.task ? (openBlock(), createBlock("div", {
3460
+ key: 2,
3461
+ class: "min-h-0 flex-1 space-y-4 overflow-y-auto px-6"
3462
+ }, [
3463
+ createVNode("div", { class: "flex flex-wrap items-center gap-2" }, [
3464
+ createVNode(unref(Badge), {
3465
+ variant: unref(categoryConfig).variant
3466
+ }, {
3467
+ default: withCtx(() => [
3468
+ createVNode(unref(Tag), { class: "mr-1 size-3" }),
3469
+ createTextVNode(" " + toDisplayString(unref(categoryConfig).label), 1)
3470
+ ]),
3471
+ _: 1
3472
+ }, 8, ["variant"]),
3473
+ createVNode(unref(Badge), {
3474
+ variant: "outline",
3475
+ class: unref(priorityConfig).class
3476
+ }, {
3477
+ default: withCtx(() => [
3478
+ createVNode(unref(AlertTriangle), { class: "mr-1 size-3" }),
3479
+ createTextVNode(" " + toDisplayString(unref(priorityConfig).label), 1)
3480
+ ]),
3481
+ _: 1
3482
+ }, 8, ["class"]),
3483
+ createVNode(unref(Badge), {
3484
+ variant: "outline",
3485
+ class: unref(statusConfig).class
3486
+ }, {
3487
+ default: withCtx(() => [
3488
+ (openBlock(), createBlock(resolveDynamicComponent(unref(statusConfig).icon), { class: "mr-1 size-3" })),
3489
+ createTextVNode(" " + toDisplayString(unref(statusConfig).label), 1)
3490
+ ]),
3491
+ _: 1
3492
+ }, 8, ["class"])
3493
+ ]),
3494
+ createVNode("div", { class: "space-y-2" }, [
3495
+ createVNode("h4", { class: "text-sm font-medium" }, "Description"),
3496
+ createVNode("p", { class: "text-sm text-muted-foreground leading-relaxed" }, toDisplayString(__props.task.description), 1)
3497
+ ]),
3498
+ createVNode(unref(Separator)),
3499
+ __props.task.steps.length > 0 ? (openBlock(), createBlock("div", {
3500
+ key: 0,
3501
+ class: "space-y-2"
3502
+ }, [
3503
+ createVNode("h4", { class: "flex items-center gap-2 text-sm font-medium" }, [
3504
+ createVNode(unref(ListOrdered), { class: "size-4" }),
3505
+ createTextVNode(" Steps ")
3506
+ ]),
3507
+ createVNode("ol", { class: "ml-4 list-decimal space-y-1 text-sm text-muted-foreground" }, [
3508
+ (openBlock(true), createBlock(Fragment, null, renderList(__props.task.steps, (step, index) => {
3509
+ return openBlock(), createBlock("li", {
3510
+ key: index,
3511
+ class: "pl-1"
3512
+ }, toDisplayString(step), 1);
3513
+ }), 128))
3514
+ ])
3515
+ ])) : createCommentVNode("", true),
3516
+ __props.task.steps.length > 0 && __props.task.passes.length > 0 ? (openBlock(), createBlock(unref(Separator), { key: 1 })) : createCommentVNode("", true),
3517
+ __props.task.passes.length > 0 ? (openBlock(), createBlock("div", {
3518
+ key: 2,
3519
+ class: "space-y-2"
3520
+ }, [
3521
+ createVNode("h4", { class: "flex items-center gap-2 text-sm font-medium" }, [
3522
+ createVNode(unref(CheckSquare), { class: "size-4" }),
3523
+ createTextVNode(" Pass Criteria ")
3524
+ ]),
3525
+ createVNode("ul", { class: "space-y-1.5 text-sm text-muted-foreground" }, [
3526
+ (openBlock(true), createBlock(Fragment, null, renderList(__props.task.passes, (pass, index) => {
3527
+ return openBlock(), createBlock("li", {
3528
+ key: index,
3529
+ class: "flex items-start gap-2"
3530
+ }, [
3531
+ createVNode("div", {
3532
+ class: ["mt-0.5 flex size-4 shrink-0 items-center justify-center rounded border", __props.task.status === "completed" ? "border-primary bg-primary text-primary-foreground" : "border-muted-foreground/50"]
3533
+ }, [
3534
+ __props.task.status === "completed" ? (openBlock(), createBlock(unref(Check), {
3535
+ key: 0,
3536
+ class: "size-3"
3537
+ })) : createCommentVNode("", true)
3538
+ ], 2),
3539
+ createVNode("span", null, toDisplayString(pass), 1)
3540
+ ]);
3541
+ }), 128))
3542
+ ])
3543
+ ])) : createCommentVNode("", true),
3544
+ __props.task.dependencies.length > 0 ? (openBlock(), createBlock(unref(Separator), { key: 3 })) : createCommentVNode("", true),
3545
+ __props.task.dependencies.length > 0 ? (openBlock(), createBlock("div", {
3546
+ key: 4,
3547
+ class: "space-y-2"
3548
+ }, [
3549
+ createVNode("h4", { class: "flex items-center gap-2 text-sm font-medium" }, [
3550
+ createVNode(unref(Link2), { class: "size-4" }),
3551
+ createTextVNode(" Dependencies ")
3552
+ ]),
3553
+ createVNode("ul", { class: "space-y-1 text-sm text-muted-foreground" }, [
3554
+ (openBlock(true), createBlock(Fragment, null, renderList(__props.task.dependencies, (depId) => {
3555
+ return openBlock(), createBlock("li", {
3556
+ key: depId,
3557
+ class: "flex items-center gap-2"
3558
+ }, [
3559
+ createVNode("span", { class: "font-mono text-xs" }, toDisplayString(depId), 1),
3560
+ createVNode("span", null, toDisplayString(getTaskTitle(depId)), 1)
3561
+ ]);
3562
+ }), 128))
3563
+ ])
3564
+ ])) : createCommentVNode("", true),
3565
+ unref(hasCommits) ? (openBlock(), createBlock(Fragment, { key: 5 }, [
3566
+ createVNode(unref(Separator)),
3567
+ createVNode("div", { class: "space-y-2" }, [
3568
+ createVNode("h4", { class: "flex items-center gap-2 text-sm font-medium" }, [
3569
+ createVNode(unref(Diff), { class: "size-4" }),
3570
+ createTextVNode(" Changes ")
3571
+ ]),
3572
+ createVNode(_component_GitCommitList, {
3573
+ commits: __props.commits,
3574
+ "repo-id": __props.repoId,
3575
+ onSelect: handleCommitSelect
3576
+ }, null, 8, ["commits", "repo-id"])
3577
+ ])
3578
+ ], 64)) : createCommentVNode("", true),
3579
+ __props.task.startedAt || __props.task.completedAt ? (openBlock(), createBlock("div", {
3580
+ key: 6,
3581
+ class: "space-y-2"
3582
+ }, [
3583
+ createVNode(unref(Separator)),
3584
+ createVNode("div", { class: "flex flex-col gap-1 text-xs text-muted-foreground" }, [
3585
+ __props.task.startedAt ? (openBlock(), createBlock("div", {
3586
+ key: 0,
3587
+ class: "flex items-center gap-2"
3588
+ }, [
3589
+ createVNode(unref(Calendar), { class: "size-3" }),
3590
+ createVNode("span", null, "Started: " + toDisplayString(formatDate(__props.task.startedAt)), 1)
3591
+ ])) : createCommentVNode("", true),
3592
+ __props.task.completedAt ? (openBlock(), createBlock("div", {
3593
+ key: 1,
3594
+ class: "flex items-center gap-2"
3595
+ }, [
3596
+ createVNode(unref(CheckCircle2), { class: "size-3" }),
3597
+ createVNode("span", null, "Completed: " + toDisplayString(formatDate(__props.task.completedAt)), 1)
3598
+ ])) : createCommentVNode("", true)
3599
+ ])
3600
+ ])) : createCommentVNode("", true)
3601
+ ])) : createCommentVNode("", true),
3602
+ createVNode(unref(SheetFooter), { class: "px-6 pb-6" }, {
3603
+ default: withCtx(() => [
3604
+ createVNode(unref(SheetClose), { "as-child": "" }, {
3605
+ default: withCtx(() => [
3606
+ createVNode(unref(Button), {
3607
+ variant: "outline",
3608
+ class: "w-full"
3609
+ }, {
3610
+ default: withCtx(() => [
3611
+ createTextVNode("Close")
3612
+ ]),
3613
+ _: 1
3614
+ })
3615
+ ]),
3616
+ _: 1
3617
+ })
3618
+ ]),
3619
+ _: 1
3620
+ })
3621
+ ]),
3622
+ _: 1
3623
+ }, 8, ["class"])
3624
+ ];
3625
+ }
3626
+ }),
3627
+ _: 1
3628
+ }, _parent));
3629
+ };
3630
+ }
3631
+ });
3632
+ const _sfc_setup$5 = _sfc_main$5.setup;
3633
+ _sfc_main$5.setup = (props, ctx) => {
3634
+ const ssrContext = useSSRContext();
3635
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/tasks/Detail.vue");
3636
+ return _sfc_setup$5 ? _sfc_setup$5(props, ctx) : void 0;
3637
+ };
3638
+ const __nuxt_component_4 = Object.assign(_sfc_main$5, { __name: "TasksDetail" });
3639
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
3640
+ __name: "Tabs",
3641
+ __ssrInlineRender: true,
3642
+ props: {
3643
+ defaultValue: {},
3644
+ orientation: {},
3645
+ dir: {},
3646
+ activationMode: {},
3647
+ modelValue: {},
3648
+ unmountOnHide: { type: Boolean },
3649
+ asChild: { type: Boolean },
3650
+ as: {},
3651
+ class: {}
3652
+ },
3653
+ emits: ["update:modelValue"],
3654
+ setup(__props, { emit: __emit }) {
3655
+ const props = __props;
3656
+ const emits = __emit;
3657
+ const delegatedProps = reactiveOmit(props, "class");
3658
+ const forwarded = useForwardPropsEmits(delegatedProps, emits);
3659
+ return (_ctx, _push, _parent, _attrs) => {
3660
+ _push(ssrRenderComponent(unref(TabsRoot), mergeProps({ "data-slot": "tabs" }, unref(forwarded), {
3661
+ class: unref(cn)("flex flex-col gap-2", props.class)
3662
+ }, _attrs), {
3663
+ default: withCtx((slotProps, _push2, _parent2, _scopeId) => {
3664
+ if (_push2) {
3665
+ ssrRenderSlot(_ctx.$slots, "default", slotProps, null, _push2, _parent2, _scopeId);
3666
+ } else {
3667
+ return [
3668
+ renderSlot(_ctx.$slots, "default", slotProps)
3669
+ ];
3670
+ }
3671
+ }),
3672
+ _: 3
3673
+ }, _parent));
3674
+ };
3675
+ }
3676
+ });
3677
+ const _sfc_setup$4 = _sfc_main$4.setup;
3678
+ _sfc_main$4.setup = (props, ctx) => {
3679
+ const ssrContext = useSSRContext();
3680
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/tabs/Tabs.vue");
3681
+ return _sfc_setup$4 ? _sfc_setup$4(props, ctx) : void 0;
3682
+ };
3683
+ const Tabs = Object.assign(_sfc_main$4, { __name: "UiTabs" });
3684
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
3685
+ __name: "TabsContent",
3686
+ __ssrInlineRender: true,
3687
+ props: {
3688
+ value: {},
3689
+ forceMount: { type: Boolean },
3690
+ asChild: { type: Boolean },
3691
+ as: {},
3692
+ class: {}
3693
+ },
3694
+ setup(__props) {
3695
+ const props = __props;
3696
+ const delegatedProps = reactiveOmit(props, "class");
3697
+ return (_ctx, _push, _parent, _attrs) => {
3698
+ _push(ssrRenderComponent(unref(TabsContent$1), mergeProps({
3699
+ "data-slot": "tabs-content",
3700
+ class: unref(cn)("flex-1 outline-none", props.class)
3701
+ }, unref(delegatedProps), _attrs), {
3702
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
3703
+ if (_push2) {
3704
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
3705
+ } else {
3706
+ return [
3707
+ renderSlot(_ctx.$slots, "default")
3708
+ ];
3709
+ }
3710
+ }),
3711
+ _: 3
3712
+ }, _parent));
3713
+ };
3714
+ }
3715
+ });
3716
+ const _sfc_setup$3 = _sfc_main$3.setup;
3717
+ _sfc_main$3.setup = (props, ctx) => {
3718
+ const ssrContext = useSSRContext();
3719
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/tabs/TabsContent.vue");
3720
+ return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
3721
+ };
3722
+ const TabsContent = Object.assign(_sfc_main$3, { __name: "UiTabsContent" });
3723
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
3724
+ __name: "TabsList",
3725
+ __ssrInlineRender: true,
3726
+ props: {
3727
+ loop: { type: Boolean },
3728
+ asChild: { type: Boolean },
3729
+ as: {},
3730
+ class: {}
3731
+ },
3732
+ setup(__props) {
3733
+ const props = __props;
3734
+ const delegatedProps = reactiveOmit(props, "class");
3735
+ return (_ctx, _push, _parent, _attrs) => {
3736
+ _push(ssrRenderComponent(unref(TabsList$1), mergeProps({ "data-slot": "tabs-list" }, unref(delegatedProps), {
3737
+ class: unref(cn)(
3738
+ "bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",
3739
+ props.class
3740
+ )
3741
+ }, _attrs), {
3742
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
3743
+ if (_push2) {
3744
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
3745
+ } else {
3746
+ return [
3747
+ renderSlot(_ctx.$slots, "default")
3748
+ ];
3749
+ }
3750
+ }),
3751
+ _: 3
3752
+ }, _parent));
3753
+ };
3754
+ }
3755
+ });
3756
+ const _sfc_setup$2 = _sfc_main$2.setup;
3757
+ _sfc_main$2.setup = (props, ctx) => {
3758
+ const ssrContext = useSSRContext();
3759
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/tabs/TabsList.vue");
3760
+ return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
3761
+ };
3762
+ const TabsList = Object.assign(_sfc_main$2, { __name: "UiTabsList" });
3763
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
3764
+ __name: "TabsTrigger",
3765
+ __ssrInlineRender: true,
3766
+ props: {
3767
+ value: {},
3768
+ disabled: { type: Boolean },
3769
+ asChild: { type: Boolean },
3770
+ as: {},
3771
+ class: {}
3772
+ },
3773
+ setup(__props) {
3774
+ const props = __props;
3775
+ const delegatedProps = reactiveOmit(props, "class");
3776
+ const forwardedProps = useForwardProps(delegatedProps);
3777
+ return (_ctx, _push, _parent, _attrs) => {
3778
+ _push(ssrRenderComponent(unref(TabsTrigger$1), mergeProps({
3779
+ "data-slot": "tabs-trigger",
3780
+ class: unref(cn)(
3781
+ "data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3782
+ props.class
3783
+ )
3784
+ }, unref(forwardedProps), _attrs), {
3785
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
3786
+ if (_push2) {
3787
+ ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
3788
+ } else {
3789
+ return [
3790
+ renderSlot(_ctx.$slots, "default")
3791
+ ];
3792
+ }
3793
+ }),
3794
+ _: 3
3795
+ }, _parent));
3796
+ };
3797
+ }
3798
+ });
3799
+ const _sfc_setup$1 = _sfc_main$1.setup;
3800
+ _sfc_main$1.setup = (props, ctx) => {
3801
+ const ssrContext = useSSRContext();
3802
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/tabs/TabsTrigger.vue");
3803
+ return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
3804
+ };
3805
+ const TabsTrigger = Object.assign(_sfc_main$1, { __name: "UiTabsTrigger" });
3806
+ const _sfc_main = /* @__PURE__ */ defineComponent({
3807
+ __name: "[prd]",
3808
+ __ssrInlineRender: true,
3809
+ setup(__props) {
3810
+ const route = useRoute();
3811
+ const { selectRepo } = useRepos();
3812
+ const { fetchDocument, fetchTasks, fetchProgress, fetchTaskCommits } = usePrd();
3813
+ const { showError } = useToast();
3814
+ const repoId = computed(() => route.params.repo);
3815
+ const prdSlug = computed(() => route.params.prd);
3816
+ const document = ref(null);
3817
+ const tasksFile = ref(null);
3818
+ const progressFile = ref(null);
3819
+ const isLoading = ref(true);
3820
+ const error = ref(null);
3821
+ const activeTab = ref("document");
3822
+ watch(activeTab, (tab) => {
3823
+ });
3824
+ const selectedTask = ref(null);
3825
+ const detailOpen = ref(false);
3826
+ const taskTitles = computed(() => {
3827
+ const map = /* @__PURE__ */ new Map();
3828
+ if (tasksFile.value?.tasks) {
3829
+ for (const task of tasksFile.value.tasks) {
3830
+ map.set(task.id, task.title);
3831
+ }
3832
+ }
3833
+ return map;
3834
+ });
3835
+ const fileChangeEvent = inject("fileChangeEvent", ref(null));
3836
+ async function loadDocument() {
3837
+ const doc = await fetchDocument(prdSlug.value);
3838
+ if (doc) {
3839
+ document.value = doc;
3840
+ }
3841
+ }
3842
+ async function loadTasksAndProgress() {
3843
+ const [tasks, progress] = await Promise.all([
3844
+ fetchTasks(prdSlug.value),
3845
+ fetchProgress(prdSlug.value)
3846
+ ]);
3847
+ tasksFile.value = tasks;
3848
+ progressFile.value = progress;
3849
+ }
3850
+ async function loadData() {
3851
+ isLoading.value = true;
3852
+ error.value = null;
3853
+ try {
3854
+ selectRepo(repoId.value);
3855
+ const [doc, tasks, progress] = await Promise.all([
3856
+ fetchDocument(prdSlug.value),
3857
+ fetchTasks(prdSlug.value),
3858
+ fetchProgress(prdSlug.value)
3859
+ ]);
3860
+ if (!doc) {
3861
+ error.value = `PRD "${prdSlug.value}" not found in this repository.`;
3862
+ return;
3863
+ }
3864
+ document.value = doc;
3865
+ tasksFile.value = tasks;
3866
+ progressFile.value = progress;
3867
+ if (!tasks) {
3868
+ activeTab.value = "document";
3869
+ }
3870
+ } catch (err) {
3871
+ const fetchErr = err;
3872
+ if (fetchErr.statusCode === 404) {
3873
+ error.value = `PRD "${prdSlug.value}" not found. Check if the file exists in docs/prd/.`;
3874
+ } else if (fetchErr.statusCode === 500) {
3875
+ error.value = "Server error while loading the PRD. Check the file format.";
3876
+ showError("Server error", fetchErr.data?.message || "Failed to read PRD file");
3877
+ } else {
3878
+ error.value = "Failed to load PRD document. Please try again.";
3879
+ showError("Load failed", "Could not fetch the PRD document");
3880
+ }
3881
+ } finally {
3882
+ isLoading.value = false;
3883
+ }
3884
+ }
3885
+ watch(
3886
+ () => fileChangeEvent.value,
3887
+ (event) => {
3888
+ if (!event) return;
3889
+ if (event.category === "prd") {
3890
+ loadDocument();
3891
+ } else if (event.category === "tasks" || event.category === "progress") {
3892
+ loadTasksAndProgress();
3893
+ }
3894
+ }
3895
+ );
3896
+ watch([repoId, prdSlug], loadData);
3897
+ async function handleTaskClick(task) {
3898
+ selectedTask.value = task;
3899
+ detailOpen.value = true;
3900
+ selectedTaskCommits.value = await fetchTaskCommits(prdSlug.value, task.id);
3901
+ }
3902
+ const selectedTaskCommits = ref([]);
3903
+ return (_ctx, _push, _parent, _attrs) => {
3904
+ const _component_NuxtLink = __nuxt_component_0$4;
3905
+ const _component_PrdMeta = __nuxt_component_1$2;
3906
+ const _component_PrdViewer = __nuxt_component_2;
3907
+ const _component_TasksBoard = __nuxt_component_3;
3908
+ const _component_TasksDetail = __nuxt_component_4;
3909
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "h-full p-4 md:p-6" }, _attrs))}>`);
3910
+ if (unref(isLoading)) {
3911
+ _push(`<div class="flex h-full items-center justify-center"><div class="flex flex-col items-center gap-4">`);
3912
+ _push(ssrRenderComponent(unref(Loader2), { class: "size-8 animate-spin text-primary" }, null, _parent));
3913
+ _push(`<p class="text-sm text-muted-foreground">Loading PRD...</p></div></div>`);
3914
+ } else if (unref(error)) {
3915
+ _push(`<div class="flex h-full items-center justify-center"><div class="flex max-w-md flex-col items-center gap-4 text-center">`);
3916
+ _push(ssrRenderComponent(unref(AlertCircle), { class: "size-12 text-destructive" }, null, _parent));
3917
+ _push(`<h2 class="text-lg font-semibold">Error Loading PRD</h2><p class="text-sm text-muted-foreground">${ssrInterpolate(unref(error))}</p><div class="flex gap-3">`);
3918
+ _push(ssrRenderComponent(unref(Button), {
3919
+ variant: "outline",
3920
+ size: "sm",
3921
+ onClick: loadData
3922
+ }, {
3923
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
3924
+ if (_push2) {
3925
+ _push2(ssrRenderComponent(unref(RefreshCw), { class: "mr-2 size-4" }, null, _parent2, _scopeId));
3926
+ _push2(` Retry `);
3927
+ } else {
3928
+ return [
3929
+ createVNode(unref(RefreshCw), { class: "mr-2 size-4" }),
3930
+ createTextVNode(" Retry ")
3931
+ ];
3932
+ }
3933
+ }),
3934
+ _: 1
3935
+ }, _parent));
3936
+ _push(ssrRenderComponent(_component_NuxtLink, { to: "/" }, {
3937
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
3938
+ if (_push2) {
3939
+ _push2(ssrRenderComponent(unref(Button), {
3940
+ variant: "ghost",
3941
+ size: "sm"
3942
+ }, {
3943
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
3944
+ if (_push3) {
3945
+ _push3(` Go back home `);
3946
+ } else {
3947
+ return [
3948
+ createTextVNode(" Go back home ")
3949
+ ];
3950
+ }
3951
+ }),
3952
+ _: 1
3953
+ }, _parent2, _scopeId));
3954
+ } else {
3955
+ return [
3956
+ createVNode(unref(Button), {
3957
+ variant: "ghost",
3958
+ size: "sm"
3959
+ }, {
3960
+ default: withCtx(() => [
3961
+ createTextVNode(" Go back home ")
3962
+ ]),
3963
+ _: 1
3964
+ })
3965
+ ];
3966
+ }
3967
+ }),
3968
+ _: 1
3969
+ }, _parent));
3970
+ _push(`</div></div></div>`);
3971
+ } else if (unref(document)) {
3972
+ _push(`<div class="mx-auto max-w-6xl space-y-6"><div class="space-y-2"><h1 class="text-2xl font-bold tracking-tight">${ssrInterpolate(unref(document).name)}</h1>`);
3973
+ _push(ssrRenderComponent(_component_PrdMeta, {
3974
+ metadata: unref(document).metadata
3975
+ }, null, _parent));
3976
+ _push(`</div>`);
3977
+ _push(ssrRenderComponent(unref(Tabs), {
3978
+ modelValue: unref(activeTab),
3979
+ "onUpdate:modelValue": ($event) => isRef(activeTab) ? activeTab.value = $event : null,
3980
+ class: "w-full"
3981
+ }, {
3982
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
3983
+ if (_push2) {
3984
+ _push2(ssrRenderComponent(unref(TabsList), null, {
3985
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
3986
+ if (_push3) {
3987
+ _push3(ssrRenderComponent(unref(TabsTrigger), {
3988
+ value: "document",
3989
+ class: "gap-2"
3990
+ }, {
3991
+ default: withCtx((_3, _push4, _parent4, _scopeId3) => {
3992
+ if (_push4) {
3993
+ _push4(ssrRenderComponent(unref(FileText), { class: "size-4" }, null, _parent4, _scopeId3));
3994
+ _push4(` Document `);
3995
+ } else {
3996
+ return [
3997
+ createVNode(unref(FileText), { class: "size-4" }),
3998
+ createTextVNode(" Document ")
3999
+ ];
4000
+ }
4001
+ }),
4002
+ _: 1
4003
+ }, _parent3, _scopeId2));
4004
+ _push3(ssrRenderComponent(unref(TabsTrigger), {
4005
+ value: "board",
4006
+ class: "gap-2",
4007
+ disabled: !unref(tasksFile)
4008
+ }, {
4009
+ default: withCtx((_3, _push4, _parent4, _scopeId3) => {
4010
+ if (_push4) {
4011
+ _push4(ssrRenderComponent(unref(LayoutGrid), { class: "size-4" }, null, _parent4, _scopeId3));
4012
+ _push4(` Task Board `);
4013
+ if (unref(tasksFile)) {
4014
+ _push4(`<span class="text-xs text-muted-foreground"${_scopeId3}> (${ssrInterpolate(unref(tasksFile).tasks.length)}) </span>`);
4015
+ } else {
4016
+ _push4(`<!---->`);
4017
+ }
4018
+ } else {
4019
+ return [
4020
+ createVNode(unref(LayoutGrid), { class: "size-4" }),
4021
+ createTextVNode(" Task Board "),
4022
+ unref(tasksFile) ? (openBlock(), createBlock("span", {
4023
+ key: 0,
4024
+ class: "text-xs text-muted-foreground"
4025
+ }, " (" + toDisplayString(unref(tasksFile).tasks.length) + ") ", 1)) : createCommentVNode("", true)
4026
+ ];
4027
+ }
4028
+ }),
4029
+ _: 1
4030
+ }, _parent3, _scopeId2));
4031
+ } else {
4032
+ return [
4033
+ createVNode(unref(TabsTrigger), {
4034
+ value: "document",
4035
+ class: "gap-2"
4036
+ }, {
4037
+ default: withCtx(() => [
4038
+ createVNode(unref(FileText), { class: "size-4" }),
4039
+ createTextVNode(" Document ")
4040
+ ]),
4041
+ _: 1
4042
+ }),
4043
+ createVNode(unref(TabsTrigger), {
4044
+ value: "board",
4045
+ class: "gap-2",
4046
+ disabled: !unref(tasksFile)
4047
+ }, {
4048
+ default: withCtx(() => [
4049
+ createVNode(unref(LayoutGrid), { class: "size-4" }),
4050
+ createTextVNode(" Task Board "),
4051
+ unref(tasksFile) ? (openBlock(), createBlock("span", {
4052
+ key: 0,
4053
+ class: "text-xs text-muted-foreground"
4054
+ }, " (" + toDisplayString(unref(tasksFile).tasks.length) + ") ", 1)) : createCommentVNode("", true)
4055
+ ]),
4056
+ _: 1
4057
+ }, 8, ["disabled"])
4058
+ ];
4059
+ }
4060
+ }),
4061
+ _: 1
4062
+ }, _parent2, _scopeId));
4063
+ _push2(ssrRenderComponent(unref(TabsContent), {
4064
+ value: "document",
4065
+ class: "mt-4"
4066
+ }, {
4067
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
4068
+ if (_push3) {
4069
+ _push3(`<div class="rounded-lg border border-border bg-card p-4 md:p-6"${_scopeId2}>`);
4070
+ _push3(ssrRenderComponent(_component_PrdViewer, {
4071
+ content: unref(document).content
4072
+ }, null, _parent3, _scopeId2));
4073
+ _push3(`</div>`);
4074
+ } else {
4075
+ return [
4076
+ createVNode("div", { class: "rounded-lg border border-border bg-card p-4 md:p-6" }, [
4077
+ createVNode(_component_PrdViewer, {
4078
+ content: unref(document).content
4079
+ }, null, 8, ["content"])
4080
+ ])
4081
+ ];
4082
+ }
4083
+ }),
4084
+ _: 1
4085
+ }, _parent2, _scopeId));
4086
+ _push2(ssrRenderComponent(unref(TabsContent), {
4087
+ value: "board",
4088
+ class: "mt-4"
4089
+ }, {
4090
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
4091
+ if (_push3) {
4092
+ if (unref(tasksFile)) {
4093
+ _push3(`<div class="h-[calc(100vh-280px)] min-h-[400px]"${_scopeId2}>`);
4094
+ _push3(ssrRenderComponent(_component_TasksBoard, {
4095
+ tasks: unref(tasksFile).tasks,
4096
+ onTaskClick: handleTaskClick
4097
+ }, null, _parent3, _scopeId2));
4098
+ _push3(`</div>`);
4099
+ } else {
4100
+ _push3(`<div class="py-12 text-center"${_scopeId2}>`);
4101
+ _push3(ssrRenderComponent(unref(LayoutGrid), { class: "mx-auto size-12 text-muted-foreground/50" }, null, _parent3, _scopeId2));
4102
+ _push3(`<p class="mt-4 text-muted-foreground"${_scopeId2}> No tasks found for this PRD </p><p class="mt-1 text-sm text-muted-foreground/70"${_scopeId2}> Task state has not been generated for this PRD yet. </p></div>`);
4103
+ }
4104
+ } else {
4105
+ return [
4106
+ unref(tasksFile) ? (openBlock(), createBlock("div", {
4107
+ key: 0,
4108
+ class: "h-[calc(100vh-280px)] min-h-[400px]"
4109
+ }, [
4110
+ createVNode(_component_TasksBoard, {
4111
+ tasks: unref(tasksFile).tasks,
4112
+ onTaskClick: handleTaskClick
4113
+ }, null, 8, ["tasks"])
4114
+ ])) : (openBlock(), createBlock("div", {
4115
+ key: 1,
4116
+ class: "py-12 text-center"
4117
+ }, [
4118
+ createVNode(unref(LayoutGrid), { class: "mx-auto size-12 text-muted-foreground/50" }),
4119
+ createVNode("p", { class: "mt-4 text-muted-foreground" }, " No tasks found for this PRD "),
4120
+ createVNode("p", { class: "mt-1 text-sm text-muted-foreground/70" }, " Task state has not been generated for this PRD yet. ")
4121
+ ]))
4122
+ ];
4123
+ }
4124
+ }),
4125
+ _: 1
4126
+ }, _parent2, _scopeId));
4127
+ } else {
4128
+ return [
4129
+ createVNode(unref(TabsList), null, {
4130
+ default: withCtx(() => [
4131
+ createVNode(unref(TabsTrigger), {
4132
+ value: "document",
4133
+ class: "gap-2"
4134
+ }, {
4135
+ default: withCtx(() => [
4136
+ createVNode(unref(FileText), { class: "size-4" }),
4137
+ createTextVNode(" Document ")
4138
+ ]),
4139
+ _: 1
4140
+ }),
4141
+ createVNode(unref(TabsTrigger), {
4142
+ value: "board",
4143
+ class: "gap-2",
4144
+ disabled: !unref(tasksFile)
4145
+ }, {
4146
+ default: withCtx(() => [
4147
+ createVNode(unref(LayoutGrid), { class: "size-4" }),
4148
+ createTextVNode(" Task Board "),
4149
+ unref(tasksFile) ? (openBlock(), createBlock("span", {
4150
+ key: 0,
4151
+ class: "text-xs text-muted-foreground"
4152
+ }, " (" + toDisplayString(unref(tasksFile).tasks.length) + ") ", 1)) : createCommentVNode("", true)
4153
+ ]),
4154
+ _: 1
4155
+ }, 8, ["disabled"])
4156
+ ]),
4157
+ _: 1
4158
+ }),
4159
+ createVNode(unref(TabsContent), {
4160
+ value: "document",
4161
+ class: "mt-4"
4162
+ }, {
4163
+ default: withCtx(() => [
4164
+ createVNode("div", { class: "rounded-lg border border-border bg-card p-4 md:p-6" }, [
4165
+ createVNode(_component_PrdViewer, {
4166
+ content: unref(document).content
4167
+ }, null, 8, ["content"])
4168
+ ])
4169
+ ]),
4170
+ _: 1
4171
+ }),
4172
+ createVNode(unref(TabsContent), {
4173
+ value: "board",
4174
+ class: "mt-4"
4175
+ }, {
4176
+ default: withCtx(() => [
4177
+ unref(tasksFile) ? (openBlock(), createBlock("div", {
4178
+ key: 0,
4179
+ class: "h-[calc(100vh-280px)] min-h-[400px]"
4180
+ }, [
4181
+ createVNode(_component_TasksBoard, {
4182
+ tasks: unref(tasksFile).tasks,
4183
+ onTaskClick: handleTaskClick
4184
+ }, null, 8, ["tasks"])
4185
+ ])) : (openBlock(), createBlock("div", {
4186
+ key: 1,
4187
+ class: "py-12 text-center"
4188
+ }, [
4189
+ createVNode(unref(LayoutGrid), { class: "mx-auto size-12 text-muted-foreground/50" }),
4190
+ createVNode("p", { class: "mt-4 text-muted-foreground" }, " No tasks found for this PRD "),
4191
+ createVNode("p", { class: "mt-1 text-sm text-muted-foreground/70" }, " Task state has not been generated for this PRD yet. ")
4192
+ ]))
4193
+ ]),
4194
+ _: 1
4195
+ })
4196
+ ];
4197
+ }
4198
+ }),
4199
+ _: 1
4200
+ }, _parent));
4201
+ _push(`</div>`);
4202
+ } else {
4203
+ _push(`<!---->`);
4204
+ }
4205
+ _push(ssrRenderComponent(_component_TasksDetail, {
4206
+ open: unref(detailOpen),
4207
+ "onUpdate:open": ($event) => isRef(detailOpen) ? detailOpen.value = $event : null,
4208
+ task: unref(selectedTask),
4209
+ "task-titles": unref(taskTitles),
4210
+ commits: unref(selectedTaskCommits),
4211
+ "repo-id": unref(repoId)
4212
+ }, null, _parent));
4213
+ _push(`</div>`);
4214
+ };
4215
+ }
4216
+ });
4217
+ const _sfc_setup = _sfc_main.setup;
4218
+ _sfc_main.setup = (props, ctx) => {
4219
+ const ssrContext = useSSRContext();
4220
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/[repo]/[prd].vue");
4221
+ return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
4222
+ };
4223
+
4224
+ export { _sfc_main as default };
4225
+ //# sourceMappingURL=_prd_-CnwhMRyf.mjs.map