@thxgg/steward 0.1.5 → 0.1.6

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