@piwitests/server 0.23.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (619) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{DZECGgZm.js → 5nOoVJzL.js} +1 -1
  3. package/.output/public/_nuxt/6DSY_93j.js +1 -0
  4. package/.output/public/_nuxt/7vRR5W2L.js +1 -0
  5. package/.output/public/_nuxt/{CC8wk-N0.js → 9Dtlg-K4.js} +1 -1
  6. package/.output/public/_nuxt/9Yziijlb.js +1 -0
  7. package/.output/public/_nuxt/{DAhv9aNg.js → B-onBCAB.js} +1 -1
  8. package/.output/public/_nuxt/B2bK5uNR.js +1 -0
  9. package/.output/public/_nuxt/{B2L0-Lzp.js → B63B19Iv.js} +2 -2
  10. package/.output/public/_nuxt/{oSLbl-p0.js → B77w1Eib.js} +1 -1
  11. package/.output/public/_nuxt/{pZbe82l5.js → BC5bqlfM.js} +1 -1
  12. package/.output/public/_nuxt/{jR2xm3_t.js → BF5JDf9_.js} +1 -1
  13. package/.output/public/_nuxt/BFVrl1ss.js +1 -0
  14. package/.output/public/_nuxt/{Bj_v57Zu.js → BIHMeNW-.js} +1 -1
  15. package/.output/public/_nuxt/BKqOGcst.js +1 -0
  16. package/.output/public/_nuxt/{Bsc11YIJ.js → BLqooxh5.js} +1 -1
  17. package/.output/public/_nuxt/{Ce_j5NtN.js → BMfTUMYy.js} +1 -1
  18. package/.output/public/_nuxt/{CmTzxoQt.js → BOrnSpTA.js} +1 -1
  19. package/.output/public/_nuxt/{Bq4_kqIp.js → BPQNVV4M.js} +1 -1
  20. package/.output/public/_nuxt/{FJTsZ5Aa.js → BSKLNgre.js} +1 -1
  21. package/.output/public/_nuxt/BTCWUyBX.js +1 -0
  22. package/.output/public/_nuxt/BUYmGTVP.js +1 -0
  23. package/.output/public/_nuxt/{mi22nGUC.js → BWddBCom.js} +1 -1
  24. package/.output/public/_nuxt/{axj2iIDK.js → BYQ9lXQb.js} +1 -1
  25. package/.output/public/_nuxt/BYWQ47QQ.js +5 -0
  26. package/.output/public/_nuxt/{Bag08cIY.js → BYnqoVCE.js} +1 -1
  27. package/.output/public/_nuxt/{Clg2Qx0r.js → BaU2hm4B.js} +1 -1
  28. package/.output/public/_nuxt/{roaTZkYi.js → BbXvpkBp.js} +1 -1
  29. package/.output/public/_nuxt/Bb_925DD.js +1 -0
  30. package/.output/public/_nuxt/BcHU1KNK.js +1 -0
  31. package/.output/public/_nuxt/BdUGUwvE.js +1 -0
  32. package/.output/public/_nuxt/{D1Ucra3E.js → BeQq85yJ.js} +2 -2
  33. package/.output/public/_nuxt/Bg8yOdSf.js +1 -0
  34. package/.output/public/_nuxt/BhzfJaPC.js +1 -0
  35. package/.output/public/_nuxt/{499RbBSX.js → Bkb-0yS0.js} +4 -4
  36. package/.output/public/_nuxt/BmweLu9g.js +2 -0
  37. package/.output/public/_nuxt/Boyv6hLW.js +1 -0
  38. package/.output/public/_nuxt/{DXkFgrsT.js → Bq4xEWLF.js} +4 -4
  39. package/.output/public/_nuxt/{7_9fts7T.js → BraJd4EA.js} +1 -1
  40. package/.output/public/_nuxt/BvXrhZ8k.js +1 -0
  41. package/.output/public/_nuxt/{DNKZmhbX.js → Bw4oIhct.js} +1 -1
  42. package/.output/public/_nuxt/BxSrScjV.js +1 -0
  43. package/.output/public/_nuxt/Byqt8JHG.js +1 -0
  44. package/.output/public/_nuxt/{CNu3kken.js → BzBaMPgu.js} +4 -4
  45. package/.output/public/_nuxt/{PDSNX4Te.js → C1-8_6cB.js} +1 -1
  46. package/.output/public/_nuxt/{Ce89VyHE.js → C7SG50jD.js} +1 -1
  47. package/.output/public/_nuxt/{CBJFORiZ.js → C8WgBDU1.js} +1 -1
  48. package/.output/public/_nuxt/C8uZoJVq.js +1 -0
  49. package/.output/public/_nuxt/{D3SJGdl4.js → CBQXv4bU.js} +2 -2
  50. package/.output/public/_nuxt/CDEmotIt.js +1 -0
  51. package/.output/public/_nuxt/CIBOv3Ge.js +2 -0
  52. package/.output/public/_nuxt/CO7j4p5r.js +1 -0
  53. package/.output/public/_nuxt/COMhp7lz.js +1 -0
  54. package/.output/public/_nuxt/{jxc14CqP.js → CPiLUjjx.js} +1 -1
  55. package/.output/public/_nuxt/{DZ-KbUZi.js → CTYlay1H.js} +1 -1
  56. package/.output/public/_nuxt/{5QBnDbs_.js → CVEk4D8I.js} +1 -1
  57. package/.output/public/_nuxt/{LTMoFvEY.js → CbuK1HIv.js} +1 -1
  58. package/.output/public/_nuxt/{2yLW7WU0.js → CdLqOMvN.js} +1 -1
  59. package/.output/public/_nuxt/CdM2qNYM.js +2 -0
  60. package/.output/public/_nuxt/Ch8sGLqE.js +1 -0
  61. package/.output/public/_nuxt/CkdznmkX.js +1 -0
  62. package/.output/public/_nuxt/{DJzFYrBt.js → Cmuwgbf4.js} +1 -1
  63. package/.output/public/_nuxt/{C9I1Dp3S.js → CnRNwiuE.js} +1 -1
  64. package/.output/public/_nuxt/{Bb2mDqKr.js → CnsaoeEq.js} +1 -1
  65. package/.output/public/_nuxt/{DgEa6_av.js → Cp0V2FeW.js} +1 -1
  66. package/.output/public/_nuxt/Cvw4EFTy.js +17 -0
  67. package/.output/public/_nuxt/CwDej2Lz.js +1 -0
  68. package/.output/public/_nuxt/D-wlhH6J.js +1 -0
  69. package/.output/public/_nuxt/D5Mhpp98.js +1 -0
  70. package/.output/public/_nuxt/{CTTmX4gy.js → D8ixf-ZR.js} +5 -5
  71. package/.output/public/_nuxt/{HbnAkiyK.js → DBvdRbTA.js} +2 -2
  72. package/.output/public/_nuxt/DDho3MJD.js +1 -0
  73. package/.output/public/_nuxt/DEGHW4pO.js +1 -0
  74. package/.output/public/_nuxt/{C77tM5Hz.js → DHSYRMJp.js} +1 -1
  75. package/.output/public/_nuxt/DH_LEqhd.js +2 -0
  76. package/.output/public/_nuxt/{CUOS6S13.js → DIqik40e.js} +1 -1
  77. package/.output/public/_nuxt/DLwuL-qR.js +1 -0
  78. package/.output/public/_nuxt/{AQ86C4c2.js → DPDFGVb_.js} +2 -2
  79. package/.output/public/_nuxt/DRNHuVn4.js +2 -0
  80. package/.output/public/_nuxt/{B_MVJP17.js → DUtYU4Sb.js} +1 -1
  81. package/.output/public/_nuxt/{CAoQUDI4.js → DWl73MJR.js} +1 -1
  82. package/.output/public/_nuxt/{BZFiz2UB.js → DWz_bHNP.js} +1 -1
  83. package/.output/public/_nuxt/{CGDPUNcO.js → D_SCB-z2.js} +1 -1
  84. package/.output/public/_nuxt/{Ce47NgZw.js → D_j436ND.js} +1 -1
  85. package/.output/public/_nuxt/DamzjN7l.js +1 -0
  86. package/.output/public/_nuxt/Db5xe__T.js +1 -0
  87. package/.output/public/_nuxt/{BuGAn4f7.js → DcUBmKKE.js} +1 -1
  88. package/.output/public/_nuxt/DiP18sFE.js +1 -0
  89. package/.output/public/_nuxt/Die1200X.js +1 -0
  90. package/.output/public/_nuxt/DihSeDlY.js +9 -0
  91. package/.output/public/_nuxt/{BAbrtVp3.js → DkGXOZRW.js} +1 -1
  92. package/.output/public/_nuxt/{ZLfZolDM.js → DnOtRv65.js} +1 -1
  93. package/.output/public/_nuxt/DnV-BkUA.js +1 -0
  94. package/.output/public/_nuxt/DpeRrg68.js +1 -0
  95. package/.output/public/_nuxt/Dq6_-84R.js +1 -0
  96. package/.output/public/_nuxt/DqKFKS1b.js +1 -0
  97. package/.output/public/_nuxt/DrbO0dl5.js +6 -0
  98. package/.output/public/_nuxt/{B3G-TIoP.js → Ds8_6Fzl.js} +1 -1
  99. package/.output/public/_nuxt/{QZYo3ErV.js → DvewDI9t.js} +1 -1
  100. package/.output/public/_nuxt/E26Y1NWH.js +1 -0
  101. package/.output/public/_nuxt/Hp-_W7z4.js +1 -0
  102. package/.output/public/_nuxt/OanUGF_v.js +1 -0
  103. package/.output/public/_nuxt/{9_aJhhcm.js → RSS6R9Te.js} +12 -12
  104. package/.output/public/_nuxt/{BfcMJBTf.js → VqLetC2g.js} +1 -1
  105. package/.output/public/_nuxt/WCZdf9Ln.js +1 -0
  106. package/.output/public/_nuxt/{DBWM_xs-.js → Yl6iqHwK.js} +4 -4
  107. package/.output/public/_nuxt/builds/latest.json +1 -1
  108. package/.output/public/_nuxt/builds/meta/03f2d81b-8c58-4ea8-9a9d-7553c8ca4af6.json +1 -0
  109. package/.output/public/_nuxt/entry.DVKh2Fd6.css +1 -0
  110. package/.output/public/_nuxt/iUf7K_JR.js +1 -0
  111. package/.output/public/_nuxt/{B_JSV0yG.js → kDEwM7SQ.js} +1 -1
  112. package/.output/public/_nuxt/{BDUfBn3i.js → knaDbxMJ.js} +1 -1
  113. package/.output/public/_nuxt/lnpLc047.js +1 -0
  114. package/.output/public/_nuxt/{C2_7XZo0.js → mhvG7mu8.js} +1 -1
  115. package/.output/public/_nuxt/{Ck_fTH5z.js → qUaN2ZW8.js} +4 -4
  116. package/.output/public/_nuxt/qeqzb80l.js +1 -0
  117. package/.output/public/_nuxt/{BwwfasRt.js → uj92NYTx.js} +2 -2
  118. package/.output/public/_nuxt/vOZZ2cLi.js +1 -0
  119. package/.output/public/_nuxt/{CLWMETf9.js → zAFiz2Mg.js} +1 -1
  120. package/.output/public/demo/seed.version.json +2 -2
  121. package/.output/server/chunks/_/collect.mjs +1 -1
  122. package/.output/server/chunks/_/markers.mjs +1 -1
  123. package/.output/server/chunks/_/quarantine.mjs +1 -1
  124. package/.output/server/chunks/_/users.mjs +1 -1
  125. package/.output/server/chunks/build/{Alert-He-UxEt6.mjs → Alert-BhTWQzM5.mjs} +2 -2
  126. package/.output/server/chunks/build/Alert-BhTWQzM5.mjs.map +1 -0
  127. package/.output/server/chunks/build/{Breadcrumb-DEP2dVCZ.mjs → Breadcrumb-BJnPB2AW.mjs} +3 -3
  128. package/.output/server/chunks/build/Breadcrumb-BJnPB2AW.mjs.map +1 -0
  129. package/.output/server/chunks/build/{BreadcrumbNav-y6nMDYcR.mjs → BreadcrumbNav-C6Cun6tF.mjs} +3 -3
  130. package/.output/server/chunks/build/BreadcrumbNav-C6Cun6tF.mjs.map +1 -0
  131. package/.output/server/chunks/build/{BrowserBadge-DIASU8Gf.mjs → BrowserBadge-T1KRMIXA.mjs} +4 -4
  132. package/.output/server/chunks/build/BrowserBadge-T1KRMIXA.mjs.map +1 -0
  133. package/.output/server/chunks/build/{ChartCard-ZTsCvItQ.mjs → ChartCard-D_asI_WF.mjs} +2 -2
  134. package/.output/server/chunks/build/ChartCard-D_asI_WF.mjs.map +1 -0
  135. package/.output/server/chunks/build/{ChartMarkerTooltip-u_1DUHh-.mjs → ChartMarkerTooltip-DscESDg7.mjs} +3 -3
  136. package/.output/server/chunks/build/ChartMarkerTooltip-DscESDg7.mjs.map +1 -0
  137. package/.output/server/chunks/build/{Checkbox-BisdHf8n.mjs → Checkbox-Y9ZiIRkJ.mjs} +7 -7
  138. package/.output/server/chunks/build/Checkbox-Y9ZiIRkJ.mjs.map +1 -0
  139. package/.output/server/chunks/build/{CodeBlock-B8BNtZAe.mjs → CodeBlock-Bnn_ps9O.mjs} +5 -5
  140. package/.output/server/chunks/build/CodeBlock-Bnn_ps9O.mjs.map +1 -0
  141. package/.output/server/chunks/build/{DashboardNavbar-D7-3zBUU.mjs → DashboardNavbar-D37dPEtR.mjs} +3 -3
  142. package/.output/server/chunks/build/DashboardNavbar-D37dPEtR.mjs.map +1 -0
  143. package/.output/server/chunks/build/{DashboardSidebarToggle-C3HdHvlE.mjs → DashboardSidebarToggle-DzwsZHVx.mjs} +3 -3
  144. package/.output/server/chunks/build/DashboardSidebarToggle-DzwsZHVx.mjs.map +1 -0
  145. package/.output/server/chunks/build/{DataLocationCard-CC2-lHiP.mjs → DataLocationCard-CUXgZQEs.mjs} +4 -4
  146. package/.output/server/chunks/build/DataLocationCard-CUXgZQEs.mjs.map +1 -0
  147. package/.output/server/chunks/build/{DesktopRunLocallyButton-iNzrDsEs.mjs → DesktopRunLocallyButton-BCmQklj6.mjs} +15 -76
  148. package/.output/server/chunks/build/DesktopRunLocallyButton-BCmQklj6.mjs.map +1 -0
  149. package/.output/server/chunks/build/{DiagnosisPanel-BVb2LgHu.mjs → DiagnosisPanel-haHS2azn.mjs} +8 -8
  150. package/.output/server/chunks/build/DiagnosisPanel-haHS2azn.mjs.map +1 -0
  151. package/.output/server/chunks/build/{DiagnosisResult-xVgZlfKK.mjs → DiagnosisResult-DqTIOelM.mjs} +11 -11
  152. package/.output/server/chunks/build/DiagnosisResult-DqTIOelM.mjs.map +1 -0
  153. package/.output/server/chunks/build/{DurationValue-UX9uajQJ.mjs → DurationValue-D6fQEi5S.mjs} +2 -2
  154. package/.output/server/chunks/build/DurationValue-D6fQEi5S.mjs.map +1 -0
  155. package/.output/server/chunks/build/{EmptyState-DC2q_7TD.mjs → EmptyState-C-mCzGhO.mjs} +2 -2
  156. package/.output/server/chunks/build/EmptyState-C-mCzGhO.mjs.map +1 -0
  157. package/.output/server/chunks/build/{EntityLinks-Dzn73fbq.mjs → EntityLinks-CRJQM9Vy.mjs} +4 -4
  158. package/.output/server/chunks/build/EntityLinks-CRJQM9Vy.mjs.map +1 -0
  159. package/.output/server/chunks/build/{EnvManagedBadge-C-agmABK.mjs → EnvManagedBadge-hyelwXrw.mjs} +4 -4
  160. package/.output/server/chunks/build/EnvManagedBadge-hyelwXrw.mjs.map +1 -0
  161. package/.output/server/chunks/build/{ErrorState-CktYyeEZ.mjs → ErrorState-9UPssp7w.mjs} +2 -2
  162. package/.output/server/chunks/build/ErrorState-9UPssp7w.mjs.map +1 -0
  163. package/.output/server/chunks/build/{FeatureUnavailable-DHFkwI7t.mjs → FeatureUnavailable-CDw3__eq.mjs} +3 -3
  164. package/.output/server/chunks/build/FeatureUnavailable-CDw3__eq.mjs.map +1 -0
  165. package/.output/server/chunks/build/{FormField-GYHKiSI6.mjs → FormField-8vSc-3mb.mjs} +2 -2
  166. package/.output/server/chunks/build/FormField-8vSc-3mb.mjs.map +1 -0
  167. package/.output/server/chunks/build/{GetStartedWizard-BpcGYsm2.mjs → GetStartedWizard-Dp_tjhry.mjs} +4 -4
  168. package/.output/server/chunks/build/GetStartedWizard-Dp_tjhry.mjs.map +1 -0
  169. package/.output/server/chunks/build/{HelpHint-plioHKA0.mjs → HelpHint-Bfyo3ar6.mjs} +31 -4
  170. package/.output/server/chunks/build/HelpHint-Bfyo3ar6.mjs.map +1 -0
  171. package/.output/server/chunks/build/{LoadingState-CwpfmI0W.mjs → LoadingState-CxfFwac9.mjs} +2 -2
  172. package/.output/server/chunks/build/LoadingState-CxfFwac9.mjs.map +1 -0
  173. package/.output/server/chunks/build/{MarkerBadge-Biz5--h2.mjs → MarkerBadge-DmubzeuF.mjs} +2 -2
  174. package/.output/server/chunks/build/MarkerBadge-DmubzeuF.mjs.map +1 -0
  175. package/.output/server/chunks/build/{MetaStripGroup-A0a72vt5.mjs → MetaStripGroup-C-cNBfC9.mjs} +6 -6
  176. package/.output/server/chunks/build/MetaStripGroup-C-cNBfC9.mjs.map +1 -0
  177. package/.output/server/chunks/build/{Modal-hKLvVFNp.mjs → Modal-DcNzjvnm.mjs} +2 -2
  178. package/.output/server/chunks/build/Modal-DcNzjvnm.mjs.map +1 -0
  179. package/.output/server/chunks/build/{NavbarActions-_YjrSUat.mjs → NavbarActions-VCHW0u67.mjs} +2 -2
  180. package/.output/server/chunks/build/NavbarActions-VCHW0u67.mjs.map +1 -0
  181. package/.output/server/chunks/build/{NavigationMenu-RfBOyS32.mjs → NavigationMenu-DG6V0R9Y.mjs} +5 -5
  182. package/.output/server/chunks/build/NavigationMenu-DG6V0R9Y.mjs.map +1 -0
  183. package/.output/server/chunks/build/{OpenInIdeLink-Jp6SzEtD.mjs → OpenInIdeLink-CLj2cTkc.mjs} +6 -6
  184. package/.output/server/chunks/build/{OpenInIdeLink-Jp6SzEtD.mjs.map → OpenInIdeLink-CLj2cTkc.mjs.map} +1 -1
  185. package/.output/server/chunks/build/{ProjectTestCasesTable-DxOTfhi4.mjs → ProjectTestCasesTable-BNd5Fn_G.mjs} +15 -15
  186. package/.output/server/chunks/build/{ProjectTestCasesTable-DxOTfhi4.mjs.map → ProjectTestCasesTable-BNd5Fn_G.mjs.map} +1 -1
  187. package/.output/server/chunks/build/{RovingFocusItem-BOSx1Z9Z.mjs → RovingFocusItem-DkZadRuK.mjs} +2 -2
  188. package/.output/server/chunks/build/RovingFocusItem-DkZadRuK.mjs.map +1 -0
  189. package/.output/server/chunks/build/{RunReports-nuLb-Nm3.mjs → RunReports-CnyGcU8K.mjs} +4 -4
  190. package/.output/server/chunks/build/RunReports-CnyGcU8K.mjs.map +1 -0
  191. package/.output/server/chunks/build/{RunStatusBadge-CvWmcFYM.mjs → RunStatusBadge-DTqX18X-.mjs} +3 -3
  192. package/.output/server/chunks/build/RunStatusBadge-DTqX18X-.mjs.map +1 -0
  193. package/.output/server/chunks/build/{SectionCard-DHAFvJxm.mjs → SectionCard-taTpPtua.mjs} +3 -3
  194. package/.output/server/chunks/build/SectionCard-taTpPtua.mjs.map +1 -0
  195. package/.output/server/chunks/build/{Select-CEyw7HGK.mjs → Select-BChKOOsc.mjs} +4 -4
  196. package/.output/server/chunks/build/Select-BChKOOsc.mjs.map +1 -0
  197. package/.output/server/chunks/build/{SelectMenu-C02Hs2_F.mjs → SelectMenu-DLkMyBsW.mjs} +5 -5
  198. package/.output/server/chunks/build/{SelectMenu-C02Hs2_F.mjs.map → SelectMenu-DLkMyBsW.mjs.map} +1 -1
  199. package/.output/server/chunks/build/{Separator-lrN70ODV.mjs → Separator-Dn-4PN3P.mjs} +2 -2
  200. package/.output/server/chunks/build/Separator-Dn-4PN3P.mjs.map +1 -0
  201. package/.output/server/chunks/build/{SettingsField-tRmytcEJ.mjs → SettingsField-BLO1C7uY.mjs} +6 -6
  202. package/.output/server/chunks/build/SettingsField-BLO1C7uY.mjs.map +1 -0
  203. package/.output/server/chunks/build/{Slideover-D6cRIqch.mjs → Slideover-BiDJaQrt.mjs} +3 -3
  204. package/.output/server/chunks/build/Slideover-BiDJaQrt.mjs.map +1 -0
  205. package/.output/server/chunks/build/{Switch-R2n82ncQ.mjs → Switch-Ca3fYrSH.mjs} +4 -4
  206. package/.output/server/chunks/build/Switch-Ca3fYrSH.mjs.map +1 -0
  207. package/.output/server/chunks/build/{Table-qZdnm9t2.mjs → Table-DQb34a0A.mjs} +3 -3
  208. package/.output/server/chunks/build/Table-DQb34a0A.mjs.map +1 -0
  209. package/.output/server/chunks/build/{Tabs-BDP7MWl4.mjs → Tabs-_ALhm_oG.mjs} +3 -3
  210. package/.output/server/chunks/build/Tabs-_ALhm_oG.mjs.map +1 -0
  211. package/.output/server/chunks/build/{TestCaseHistoryChart-CKDXQ2GI.mjs → TestCaseHistoryChart-D-TEUsZ8.mjs} +3 -3
  212. package/.output/server/chunks/build/TestCaseHistoryChart-D-TEUsZ8.mjs.map +1 -0
  213. package/.output/server/chunks/build/{TestMetaBadges-BlyKmfeP.mjs → TestMetaBadges-G2dAHnT-.mjs} +2 -2
  214. package/.output/server/chunks/build/TestMetaBadges-G2dAHnT-.mjs.map +1 -0
  215. package/.output/server/chunks/build/{TestStatusBar-CvsmKJ4D.mjs → TestStatusBar-CseETAdn.mjs} +2 -2
  216. package/.output/server/chunks/build/TestStatusBar-CseETAdn.mjs.map +1 -0
  217. package/.output/server/chunks/build/{Textarea-DpmpM-lN.mjs → Textarea-CXOoRq7y.mjs} +2 -2
  218. package/.output/server/chunks/build/Textarea-CXOoRq7y.mjs.map +1 -0
  219. package/.output/server/chunks/build/{Tooltip-BI3WQErw.mjs → Tooltip-trltUr5c.mjs} +3 -3
  220. package/.output/server/chunks/build/Tooltip-trltUr5c.mjs.map +1 -0
  221. package/.output/server/chunks/build/{VisuallyHiddenInput-D4E5aJCQ.mjs → VisuallyHiddenInput-CGURvg3N.mjs} +2 -2
  222. package/.output/server/chunks/build/VisuallyHiddenInput-CGURvg3N.mjs.map +1 -0
  223. package/.output/server/chunks/build/{_id_-CrGTZymJ.mjs → _id_-B-G4eG5U.mjs} +40 -40
  224. package/.output/server/chunks/build/{_id_-CrGTZymJ.mjs.map → _id_-B-G4eG5U.mjs.map} +1 -1
  225. package/.output/server/chunks/build/{_id_-T965GKYC.mjs → _id_-Cnzg8n21.mjs} +41 -38
  226. package/.output/server/chunks/build/_id_-Cnzg8n21.mjs.map +1 -0
  227. package/.output/server/chunks/build/{_id_-wiULjAVc.mjs → _id_-Dp_d6gT7.mjs} +63 -55
  228. package/.output/server/chunks/build/{_id_-wiULjAVc.mjs.map → _id_-Dp_d6gT7.mjs.map} +1 -1
  229. package/.output/server/chunks/build/{_id_-D7UtAIPR.mjs → _id_-t2AWaYuK.mjs} +59 -52
  230. package/.output/server/chunks/build/{_id_-D7UtAIPR.mjs.map → _id_-t2AWaYuK.mjs.map} +1 -1
  231. package/.output/server/chunks/build/{about-B3V_OEiu.mjs → about-BFsHkJwE.mjs} +8 -8
  232. package/.output/server/chunks/build/about-BFsHkJwE.mjs.map +1 -0
  233. package/.output/server/chunks/build/{account-DpBdYE46.mjs → account-CZAq8kVg.mjs} +8 -8
  234. package/.output/server/chunks/build/account-CZAq8kVg.mjs.map +1 -0
  235. package/.output/server/chunks/build/{ai-DYhpzbqp.mjs → ai-BGP3GcCR.mjs} +21 -21
  236. package/.output/server/chunks/build/{ai-DYhpzbqp.mjs.map → ai-BGP3GcCR.mjs.map} +1 -1
  237. package/.output/server/chunks/build/{analytics-CZJEU0an.mjs → analytics-CXl5OWV-.mjs} +25 -25
  238. package/.output/server/chunks/build/{analytics-CZJEU0an.mjs.map → analytics-CXl5OWV-.mjs.map} +1 -1
  239. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  240. package/.output/server/chunks/build/{db.client-Bdqk_eYQ.mjs → db.client-DijpEH6i.mjs} +3 -1
  241. package/.output/server/chunks/build/db.client-DijpEH6i.mjs.map +1 -0
  242. package/.output/server/chunks/build/{default-DO1izI2V.mjs → default-4ixAePum.mjs} +209 -77
  243. package/.output/server/chunks/build/default-4ixAePum.mjs.map +1 -0
  244. package/.output/server/chunks/build/{docs-C8bndVXg.mjs → docs-Cgsd01H9.mjs} +16 -16
  245. package/.output/server/chunks/build/{docs-C8bndVXg.mjs.map → docs-Cgsd01H9.mjs.map} +1 -1
  246. package/.output/server/chunks/build/{edit-BdfF9er2.mjs → edit-BEQ-ozj9.mjs} +436 -40
  247. package/.output/server/chunks/build/edit-BEQ-ozj9.mjs.map +1 -0
  248. package/.output/server/chunks/build/{fetch-tkz5_OA-.mjs → fetch-B5TVXZ1s.mjs} +3 -3
  249. package/.output/server/chunks/build/fetch-B5TVXZ1s.mjs.map +1 -0
  250. package/.output/server/chunks/build/{forgot-password-swZRcvXE.mjs → forgot-password-mqE1mpDI.mjs} +4 -4
  251. package/.output/server/chunks/build/forgot-password-mqE1mpDI.mjs.map +1 -0
  252. package/.output/server/chunks/build/{help-content-C876a9WD.mjs → help-content-Bc99BajS.mjs} +6 -1
  253. package/.output/server/chunks/build/help-content-Bc99BajS.mjs.map +1 -0
  254. package/.output/server/chunks/build/{import-B27Sv7h5.mjs → import-DqDDTcSc.mjs} +15 -15
  255. package/.output/server/chunks/build/import-DqDDTcSc.mjs.map +1 -0
  256. package/.output/server/chunks/build/{index-ID913tUa.mjs → index-Bpdj6TXV.mjs} +5 -5
  257. package/.output/server/chunks/build/index-Bpdj6TXV.mjs.map +1 -0
  258. package/.output/server/chunks/build/{index-vRwzDXLs.mjs → index-DBFsIsjA.mjs} +534 -262
  259. package/.output/server/chunks/build/index-DBFsIsjA.mjs.map +1 -0
  260. package/.output/server/chunks/build/{index-C7m32bRI.mjs → index-DSufXCZq.mjs} +22 -18
  261. package/.output/server/chunks/build/index-DSufXCZq.mjs.map +1 -0
  262. package/.output/server/chunks/build/{index-BdZmxLtC.mjs → index-WXE60AXk.mjs} +24 -24
  263. package/.output/server/chunks/build/{index-BdZmxLtC.mjs.map → index-WXE60AXk.mjs.map} +1 -1
  264. package/.output/server/chunks/build/{index-ByWTzqF6.mjs → index-okKjrRhL.mjs} +15 -4
  265. package/.output/server/chunks/build/index-okKjrRhL.mjs.map +1 -0
  266. package/.output/server/chunks/build/{isValueEqualOrExist-D4lZ8uRY.mjs → isValueEqualOrExist-C-9DzL4K.mjs} +3 -3
  267. package/.output/server/chunks/build/isValueEqualOrExist-C-9DzL4K.mjs.map +1 -0
  268. package/.output/server/chunks/build/{login-hxCF06JT.mjs → login-eQ88UoBW.mjs} +7 -7
  269. package/.output/server/chunks/build/login-eQ88UoBW.mjs.map +1 -0
  270. package/.output/server/chunks/build/{mcp-BVW1llyW.mjs → mcp-frcSP2Zg.mjs} +14 -14
  271. package/.output/server/chunks/build/mcp-frcSP2Zg.mjs.map +1 -0
  272. package/.output/server/chunks/build/{notifications-Dn-evqXM.mjs → notifications-DAtRd5V6.mjs} +14 -14
  273. package/.output/server/chunks/build/notifications-DAtRd5V6.mjs.map +1 -0
  274. package/.output/server/chunks/build/{performance-CV8qm94u.mjs → performance-BcQzGXE7.mjs} +13 -13
  275. package/.output/server/chunks/build/performance-BcQzGXE7.mjs.map +1 -0
  276. package/.output/server/chunks/build/{pr-feedback-gKDz8LyA.mjs → pr-feedback-BHtgvegy.mjs} +11 -11
  277. package/.output/server/chunks/build/pr-feedback-BHtgvegy.mjs.map +1 -0
  278. package/.output/server/chunks/build/{reset-password-DtEISa1I.mjs → reset-password-DMHrp14-.mjs} +4 -4
  279. package/.output/server/chunks/build/reset-password-DMHrp14-.mjs.map +1 -0
  280. package/.output/server/chunks/build/server.mjs +34 -34
  281. package/.output/server/chunks/build/{settings-BJDnuLpc.mjs → settings-Bo5OETop.mjs} +11 -11
  282. package/.output/server/chunks/build/settings-Bo5OETop.mjs.map +1 -0
  283. package/.output/server/chunks/build/{settings-metadata-DnAK4Rzg.mjs → settings-metadata-BHbsWQ2g.mjs} +3 -3
  284. package/.output/server/chunks/build/settings-metadata-BHbsWQ2g.mjs.map +1 -0
  285. package/.output/server/chunks/build/{setup-BO9tXa_G.mjs → setup-DAXcxuNY.mjs} +18 -18
  286. package/.output/server/chunks/build/{setup-BO9tXa_G.mjs.map → setup-DAXcxuNY.mjs.map} +1 -1
  287. package/.output/server/chunks/build/{storage-zN92cA9q.mjs → storage-BPK0fVwx.mjs} +13 -13
  288. package/.output/server/chunks/build/storage-BPK0fVwx.mjs.map +1 -0
  289. package/.output/server/chunks/build/{tags-CJFnoyQc.mjs → tags-CoxErA5m.mjs} +8 -8
  290. package/.output/server/chunks/build/tags-CoxErA5m.mjs.map +1 -0
  291. package/.output/server/chunks/build/{test-cases-0Q6rT73d.mjs → test-cases-D8rn-0le.mjs} +27 -27
  292. package/.output/server/chunks/build/test-cases-D8rn-0le.mjs.map +1 -0
  293. package/.output/server/chunks/build/{test-functions-DVRJgiWo.mjs → test-functions-pWs9mhbJ.mjs} +13 -13
  294. package/.output/server/chunks/build/test-functions-pWs9mhbJ.mjs.map +1 -0
  295. package/.output/server/chunks/build/{useCopyRich-CZxJ7IY_.mjs → useCopyRich-BqVfhnoH.mjs} +90 -33
  296. package/.output/server/chunks/build/{useCopyRich-CZxJ7IY_.mjs.map → useCopyRich-BqVfhnoH.mjs.map} +1 -1
  297. package/.output/server/chunks/build/{useDesktopDownload-Dyf0fR47.mjs → useDesktopDownload-l80DQJ9e.mjs} +2 -2
  298. package/.output/server/chunks/build/useDesktopDownload-l80DQJ9e.mjs.map +1 -0
  299. package/.output/server/chunks/build/{useDesktopLocalRuns-k7Gw3Fv3.mjs → useDesktopLocalRuns-Dil3YzyU.mjs} +68 -6
  300. package/.output/server/chunks/build/useDesktopLocalRuns-Dil3YzyU.mjs.map +1 -0
  301. package/.output/server/chunks/build/{useDesktopProjectLink-WwLte59P.mjs → useDesktopProjectLink-BnIONB--.mjs} +21 -4
  302. package/.output/server/chunks/build/useDesktopProjectLink-BnIONB--.mjs.map +1 -0
  303. package/.output/server/chunks/build/{useFormControl-8skMOTIf.mjs → useFormControl-CXKztoWk.mjs} +2 -2
  304. package/.output/server/chunks/build/useFormControl-CXKztoWk.mjs.map +1 -0
  305. package/.output/server/chunks/build/{useOpenInIde-D74FmDNg.mjs → useOpenInIde-CbbYW3pd.mjs} +2 -2
  306. package/.output/server/chunks/build/useOpenInIde-CbbYW3pd.mjs.map +1 -0
  307. package/.output/server/chunks/build/{useSettingsNav-BLTHducV.mjs → useSettingsNav-C6NpD4Ab.mjs} +2 -2
  308. package/.output/server/chunks/build/useSettingsNav-C6NpD4Ab.mjs.map +1 -0
  309. package/.output/server/chunks/build/{users-C9bjOBde.mjs → users-C2MuCf5G.mjs} +9 -9
  310. package/.output/server/chunks/build/users-C2MuCf5G.mjs.map +1 -0
  311. package/.output/server/chunks/nitro/nitro.mjs +1032 -721
  312. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  313. package/.output/server/chunks/routes/__piwi/session.get.mjs +1 -1
  314. package/.output/server/chunks/routes/api/ai/step-resolution.post.mjs +88 -0
  315. package/.output/server/chunks/routes/api/ai/step-resolution.post.mjs.map +1 -0
  316. package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs +1 -1
  317. package/.output/server/chunks/routes/api/auth/change-password.post.mjs +1 -1
  318. package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs +1 -1
  319. package/.output/server/chunks/routes/api/auth/login.post.mjs +1 -1
  320. package/.output/server/chunks/routes/api/auth/logout.post.mjs +1 -1
  321. package/.output/server/chunks/routes/api/auth/me.get.mjs +1 -1
  322. package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs +1 -1
  323. package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs +1 -1
  324. package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs +1 -1
  325. package/.output/server/chunks/routes/api/auth/reset-password.post.mjs +1 -1
  326. package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs +1 -1
  327. package/.output/server/chunks/routes/api/auth/setup.get.mjs +1 -1
  328. package/.output/server/chunks/routes/api/auth/setup.post.mjs +1 -1
  329. package/.output/server/chunks/routes/api/auth/verify-email.get.mjs +1 -1
  330. package/.output/server/chunks/routes/api/channels/_id/test.post.mjs +1 -1
  331. package/.output/server/chunks/routes/api/channels/_id_.delete.mjs +1 -1
  332. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs +1 -1
  333. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs +1 -1
  334. package/.output/server/chunks/routes/api/desktop/import-local.post.mjs +1 -1
  335. package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs +1 -1
  336. package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs +1 -1
  337. package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs +1 -1
  338. package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs +1 -1
  339. package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs +1 -1
  340. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs +1 -1
  341. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs +1 -1
  342. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs +1 -1
  343. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs +1 -1
  344. package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs +1 -1
  345. package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs +1 -1
  346. package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs +1 -1
  347. package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs +1 -1
  348. package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs +1 -1
  349. package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs +1 -1
  350. package/.output/server/chunks/routes/api/files/_...path_.get.mjs +1 -1
  351. package/.output/server/chunks/routes/api/health.get.mjs +1 -1
  352. package/.output/server/chunks/routes/api/index.get.mjs +1 -1
  353. package/.output/server/chunks/routes/api/index.get2.mjs +1 -1
  354. package/.output/server/chunks/routes/api/index.get3.mjs +1 -1
  355. package/.output/server/chunks/routes/api/index.get4.mjs +1 -1
  356. package/.output/server/chunks/routes/api/index.get5.mjs +1 -1
  357. package/.output/server/chunks/routes/api/index.post.mjs +1 -1
  358. package/.output/server/chunks/routes/api/index.post2.mjs +1 -1
  359. package/.output/server/chunks/routes/api/index.post3.mjs +1 -1
  360. package/.output/server/chunks/routes/api/index.post4.mjs +1 -1
  361. package/.output/server/chunks/routes/api/index.post5.mjs +1 -1
  362. package/.output/server/chunks/routes/api/index.post6.mjs +1 -1
  363. package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs +1 -1
  364. package/.output/server/chunks/routes/api/links/_id_.delete.mjs +1 -1
  365. package/.output/server/chunks/routes/api/links/_id_.patch.mjs +1 -1
  366. package/.output/server/chunks/routes/api/markers/_id_.delete.mjs +1 -1
  367. package/.output/server/chunks/routes/api/markers/_id_.put.mjs +1 -1
  368. package/.output/server/chunks/routes/api/notifications/stream.get.mjs +1 -1
  369. package/.output/server/chunks/routes/api/projects/_id/ai-steps.get.mjs +63 -0
  370. package/.output/server/chunks/routes/api/projects/_id/ai-steps.get.mjs.map +1 -0
  371. package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs +1 -1
  372. package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs +1 -1
  373. package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs +1 -1
  374. package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs +1 -1
  375. package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs +1 -1
  376. package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs +1 -1
  377. package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs +1 -1
  378. package/.output/server/chunks/routes/api/projects/_id/members.get.mjs +1 -1
  379. package/.output/server/chunks/routes/api/projects/_id/members.put.mjs +1 -1
  380. package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs +1 -1
  381. package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs +1 -1
  382. package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs +1 -1
  383. package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs +1 -1
  384. package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs +1 -1
  385. package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs +1 -1
  386. package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs +1 -1
  387. package/.output/server/chunks/routes/api/projects/_id/test-functions/extract.post.mjs +1 -1
  388. package/.output/server/chunks/routes/api/projects/_id/test-functions/validate-proposal.post.mjs +1 -1
  389. package/.output/server/chunks/routes/api/projects/_id/test-functions.get.mjs +1 -1
  390. package/.output/server/chunks/routes/api/projects/_id/test-functions.post.mjs +1 -1
  391. package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs +1 -1
  392. package/.output/server/chunks/routes/api/projects/_id_.delete.mjs +1 -1
  393. package/.output/server/chunks/routes/api/projects/_id_.get.mjs +1 -1
  394. package/.output/server/chunks/routes/api/projects/_id_.put.mjs +1 -1
  395. package/.output/server/chunks/routes/api/projects/menu.get.mjs +1 -1
  396. package/.output/server/chunks/routes/api/projects/overview.get.mjs +1 -1
  397. package/.output/server/chunks/routes/api/projects.get.mjs +1 -1
  398. package/.output/server/chunks/routes/api/search.get.mjs +1 -1
  399. package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs +1 -1
  400. package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs +1 -1
  401. package/.output/server/chunks/routes/api/settings/ai/test.post.mjs +1 -1
  402. package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs +1 -1
  403. package/.output/server/chunks/routes/api/settings/ai.get.mjs +1 -1
  404. package/.output/server/chunks/routes/api/settings/ai.put.mjs +1 -1
  405. package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs +1 -1
  406. package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs +1 -1
  407. package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs +1 -1
  408. package/.output/server/chunks/routes/api/settings/smtp.get.mjs +1 -1
  409. package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs +1 -1
  410. package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs +1 -1
  411. package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs +1 -1
  412. package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs +1 -1
  413. package/.output/server/chunks/routes/api/setup-status.get.mjs +1 -1
  414. package/.output/server/chunks/routes/api/stream.get.mjs +1 -1
  415. package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs +1 -1
  416. package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs +1 -1
  417. package/.output/server/chunks/routes/api/tags/_id_.delete.mjs +1 -1
  418. package/.output/server/chunks/routes/api/tags/_id_.put.mjs +1 -1
  419. package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs +1 -1
  420. package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs +1 -1
  421. package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs +1 -1
  422. package/.output/server/chunks/routes/api/test-functions/_id_.delete.mjs +1 -1
  423. package/.output/server/chunks/routes/api/test-functions/_id_.put.mjs +1 -1
  424. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs +1 -1
  425. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs +1 -1
  426. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs +1 -1
  427. package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs +1 -1
  428. package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs +1 -1
  429. package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs +1 -1
  430. package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs +1 -1
  431. package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +1 -1
  432. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs +1 -1
  433. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs +1 -1
  434. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs +1 -1
  435. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs +1 -1
  436. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs +1 -1
  437. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs +1 -1
  438. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs +1 -1
  439. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs +1 -1
  440. package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs +1 -1
  441. package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs +1 -1
  442. package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs +1 -1
  443. package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs +1 -1
  444. package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +1 -1
  445. package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs +1 -1
  446. package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs +1 -1
  447. package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs +1 -1
  448. package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs +1 -1
  449. package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs +1 -1
  450. package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs +1 -1
  451. package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs +1 -1
  452. package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs +1 -1
  453. package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs +1 -1
  454. package/.output/server/chunks/routes/api/test-runs/import.post.mjs +1 -1
  455. package/.output/server/chunks/routes/api/test-runs/recent.get.mjs +1 -1
  456. package/.output/server/chunks/routes/api/test-runs/setup.post.mjs +1 -1
  457. package/.output/server/chunks/routes/api/test-runs/start.post.mjs +1 -1
  458. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +3 -1
  459. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs.map +1 -1
  460. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +2 -1
  461. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs.map +1 -1
  462. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs +2 -1
  463. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs.map +1 -1
  464. package/.output/server/chunks/routes/api/traces/check.post.mjs +1 -1
  465. package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs +1 -1
  466. package/.output/server/chunks/routes/api/users/_id/index.get.mjs +1 -1
  467. package/.output/server/chunks/routes/api/users/_id/index.post.mjs +1 -1
  468. package/.output/server/chunks/routes/api/users/_id/invite.post.mjs +1 -1
  469. package/.output/server/chunks/routes/api/users/_id/projects.get.mjs +1 -1
  470. package/.output/server/chunks/routes/api/users/_id/projects.put.mjs +1 -1
  471. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +1 -1
  472. package/.output/server/chunks/routes/api/users/_id_.patch.mjs +1 -1
  473. package/.output/server/chunks/routes/api/version.get.mjs +1 -1
  474. package/.output/server/chunks/routes/mcp.post.mjs +1 -1
  475. package/.output/server/chunks/routes/renderer.mjs +1 -1
  476. package/.output/server/database/migrations/0045_productive_stingray.sql +1 -0
  477. package/.output/server/database/migrations/meta/0045_snapshot.json +3779 -0
  478. package/.output/server/database/migrations/meta/_journal.json +7 -0
  479. package/.output/server/database/migrations-pg/0046_gorgeous_hercules.sql +1 -0
  480. package/.output/server/database/migrations-pg/meta/0046_snapshot.json +4486 -0
  481. package/.output/server/database/migrations-pg/meta/_journal.json +7 -0
  482. package/.output/server/index.mjs +1 -1
  483. package/.output/server/package.json +1 -1
  484. package/package.json +1 -1
  485. package/.output/public/_nuxt/5SkLJHl8.js +0 -1
  486. package/.output/public/_nuxt/6sA-GK37.js +0 -1
  487. package/.output/public/_nuxt/6vX5JdHr.js +0 -1
  488. package/.output/public/_nuxt/B070fjS-.js +0 -1
  489. package/.output/public/_nuxt/B0tmRAhY.js +0 -1
  490. package/.output/public/_nuxt/B3AG2m76.js +0 -1
  491. package/.output/public/_nuxt/B4mZElvM.js +0 -1
  492. package/.output/public/_nuxt/B7tiBVLW.js +0 -1
  493. package/.output/public/_nuxt/BFYkWpPx.js +0 -1
  494. package/.output/public/_nuxt/BM5BPKlc.js +0 -1
  495. package/.output/public/_nuxt/BNyTWIad.js +0 -9
  496. package/.output/public/_nuxt/BOvtXn3m.js +0 -1
  497. package/.output/public/_nuxt/BVyjw9Bi.js +0 -1
  498. package/.output/public/_nuxt/BZOykMLD.js +0 -1
  499. package/.output/public/_nuxt/BjMo2tKC.js +0 -6
  500. package/.output/public/_nuxt/BjOFxi54.js +0 -1
  501. package/.output/public/_nuxt/BjaRappk.js +0 -1
  502. package/.output/public/_nuxt/BtZNYmZO.js +0 -1
  503. package/.output/public/_nuxt/C6t4kxaa.js +0 -1
  504. package/.output/public/_nuxt/CEai-PWF.js +0 -1
  505. package/.output/public/_nuxt/CF_eDZHu.js +0 -1
  506. package/.output/public/_nuxt/CIQeRUSy.js +0 -17
  507. package/.output/public/_nuxt/CPQRQqXU.js +0 -1
  508. package/.output/public/_nuxt/CYhm2FBS.js +0 -5
  509. package/.output/public/_nuxt/CdEzDaDI.js +0 -1
  510. package/.output/public/_nuxt/CfhOanaF.js +0 -1
  511. package/.output/public/_nuxt/CvVbKrcH.js +0 -1
  512. package/.output/public/_nuxt/Cz7SCzdW.js +0 -1
  513. package/.output/public/_nuxt/D7fxV-UA.js +0 -1
  514. package/.output/public/_nuxt/D7t0Dn3h.js +0 -1
  515. package/.output/public/_nuxt/DCE2_MKD.js +0 -2
  516. package/.output/public/_nuxt/DFfqRQxk.js +0 -1
  517. package/.output/public/_nuxt/DNqm5cWU.js +0 -1
  518. package/.output/public/_nuxt/DTrPCv7R.js +0 -1
  519. package/.output/public/_nuxt/DYjxDsYC.js +0 -1
  520. package/.output/public/_nuxt/Dbf8eT28.js +0 -1
  521. package/.output/public/_nuxt/DeewM3Wg.js +0 -2
  522. package/.output/public/_nuxt/DiWxW-w3.js +0 -2
  523. package/.output/public/_nuxt/DmqCquDx.js +0 -1
  524. package/.output/public/_nuxt/DnxrNGE_.js +0 -1
  525. package/.output/public/_nuxt/DprkT7rM.js +0 -1
  526. package/.output/public/_nuxt/DuBtaw3j.js +0 -1
  527. package/.output/public/_nuxt/DylyATWU.js +0 -2
  528. package/.output/public/_nuxt/HIGGZ_c-.js +0 -1
  529. package/.output/public/_nuxt/RkNtgoTD.js +0 -1
  530. package/.output/public/_nuxt/Wk7ZKG4B.js +0 -1
  531. package/.output/public/_nuxt/Ya8ZzWuY.js +0 -1
  532. package/.output/public/_nuxt/a8Z6VC7V.js +0 -2
  533. package/.output/public/_nuxt/builds/meta/6d1766a0-0aba-46b8-9d97-7dd174130359.json +0 -1
  534. package/.output/public/_nuxt/dUPMBJ4f.js +0 -1
  535. package/.output/public/_nuxt/eT2oObCh.js +0 -1
  536. package/.output/public/_nuxt/entry.D_eWXrnD.css +0 -1
  537. package/.output/public/_nuxt/kWnH8yJq.js +0 -1
  538. package/.output/public/_nuxt/sqqg4oXL.js +0 -1
  539. package/.output/public/_nuxt/xZQGtnVA.js +0 -1
  540. package/.output/server/chunks/build/Alert-He-UxEt6.mjs.map +0 -1
  541. package/.output/server/chunks/build/Breadcrumb-DEP2dVCZ.mjs.map +0 -1
  542. package/.output/server/chunks/build/BreadcrumbNav-y6nMDYcR.mjs.map +0 -1
  543. package/.output/server/chunks/build/BrowserBadge-DIASU8Gf.mjs.map +0 -1
  544. package/.output/server/chunks/build/ChartCard-ZTsCvItQ.mjs.map +0 -1
  545. package/.output/server/chunks/build/ChartMarkerTooltip-u_1DUHh-.mjs.map +0 -1
  546. package/.output/server/chunks/build/Checkbox-BisdHf8n.mjs.map +0 -1
  547. package/.output/server/chunks/build/CodeBlock-B8BNtZAe.mjs.map +0 -1
  548. package/.output/server/chunks/build/DashboardNavbar-D7-3zBUU.mjs.map +0 -1
  549. package/.output/server/chunks/build/DashboardSidebarToggle-C3HdHvlE.mjs.map +0 -1
  550. package/.output/server/chunks/build/DataLocationCard-CC2-lHiP.mjs.map +0 -1
  551. package/.output/server/chunks/build/DesktopRunLocallyButton-iNzrDsEs.mjs.map +0 -1
  552. package/.output/server/chunks/build/DiagnosisPanel-BVb2LgHu.mjs.map +0 -1
  553. package/.output/server/chunks/build/DiagnosisResult-xVgZlfKK.mjs.map +0 -1
  554. package/.output/server/chunks/build/DurationValue-UX9uajQJ.mjs.map +0 -1
  555. package/.output/server/chunks/build/EmptyState-DC2q_7TD.mjs.map +0 -1
  556. package/.output/server/chunks/build/EntityLinks-Dzn73fbq.mjs.map +0 -1
  557. package/.output/server/chunks/build/EnvManagedBadge-C-agmABK.mjs.map +0 -1
  558. package/.output/server/chunks/build/ErrorState-CktYyeEZ.mjs.map +0 -1
  559. package/.output/server/chunks/build/FeatureUnavailable-DHFkwI7t.mjs.map +0 -1
  560. package/.output/server/chunks/build/FormField-GYHKiSI6.mjs.map +0 -1
  561. package/.output/server/chunks/build/GetStartedWizard-BpcGYsm2.mjs.map +0 -1
  562. package/.output/server/chunks/build/HelpHint-plioHKA0.mjs.map +0 -1
  563. package/.output/server/chunks/build/LoadingState-CwpfmI0W.mjs.map +0 -1
  564. package/.output/server/chunks/build/MarkerBadge-Biz5--h2.mjs.map +0 -1
  565. package/.output/server/chunks/build/MetaStripGroup-A0a72vt5.mjs.map +0 -1
  566. package/.output/server/chunks/build/Modal-hKLvVFNp.mjs.map +0 -1
  567. package/.output/server/chunks/build/NavbarActions-_YjrSUat.mjs.map +0 -1
  568. package/.output/server/chunks/build/NavigationMenu-RfBOyS32.mjs.map +0 -1
  569. package/.output/server/chunks/build/RovingFocusItem-BOSx1Z9Z.mjs.map +0 -1
  570. package/.output/server/chunks/build/RunReports-nuLb-Nm3.mjs.map +0 -1
  571. package/.output/server/chunks/build/RunStatusBadge-CvWmcFYM.mjs.map +0 -1
  572. package/.output/server/chunks/build/SectionCard-DHAFvJxm.mjs.map +0 -1
  573. package/.output/server/chunks/build/Select-CEyw7HGK.mjs.map +0 -1
  574. package/.output/server/chunks/build/Separator-lrN70ODV.mjs.map +0 -1
  575. package/.output/server/chunks/build/SettingsField-tRmytcEJ.mjs.map +0 -1
  576. package/.output/server/chunks/build/Slideover-D6cRIqch.mjs.map +0 -1
  577. package/.output/server/chunks/build/Switch-R2n82ncQ.mjs.map +0 -1
  578. package/.output/server/chunks/build/Table-qZdnm9t2.mjs.map +0 -1
  579. package/.output/server/chunks/build/Tabs-BDP7MWl4.mjs.map +0 -1
  580. package/.output/server/chunks/build/TestCaseHistoryChart-CKDXQ2GI.mjs.map +0 -1
  581. package/.output/server/chunks/build/TestMetaBadges-BlyKmfeP.mjs.map +0 -1
  582. package/.output/server/chunks/build/TestStatusBar-CvsmKJ4D.mjs.map +0 -1
  583. package/.output/server/chunks/build/Textarea-DpmpM-lN.mjs.map +0 -1
  584. package/.output/server/chunks/build/Tooltip-BI3WQErw.mjs.map +0 -1
  585. package/.output/server/chunks/build/VisuallyHiddenInput-D4E5aJCQ.mjs.map +0 -1
  586. package/.output/server/chunks/build/_id_-T965GKYC.mjs.map +0 -1
  587. package/.output/server/chunks/build/about-B3V_OEiu.mjs.map +0 -1
  588. package/.output/server/chunks/build/account-DpBdYE46.mjs.map +0 -1
  589. package/.output/server/chunks/build/db.client-Bdqk_eYQ.mjs.map +0 -1
  590. package/.output/server/chunks/build/default-DO1izI2V.mjs.map +0 -1
  591. package/.output/server/chunks/build/edit-BdfF9er2.mjs.map +0 -1
  592. package/.output/server/chunks/build/fetch-tkz5_OA-.mjs.map +0 -1
  593. package/.output/server/chunks/build/forgot-password-swZRcvXE.mjs.map +0 -1
  594. package/.output/server/chunks/build/help-content-C876a9WD.mjs.map +0 -1
  595. package/.output/server/chunks/build/import-B27Sv7h5.mjs.map +0 -1
  596. package/.output/server/chunks/build/index-ByWTzqF6.mjs.map +0 -1
  597. package/.output/server/chunks/build/index-C7m32bRI.mjs.map +0 -1
  598. package/.output/server/chunks/build/index-ID913tUa.mjs.map +0 -1
  599. package/.output/server/chunks/build/index-vRwzDXLs.mjs.map +0 -1
  600. package/.output/server/chunks/build/isValueEqualOrExist-D4lZ8uRY.mjs.map +0 -1
  601. package/.output/server/chunks/build/login-hxCF06JT.mjs.map +0 -1
  602. package/.output/server/chunks/build/mcp-BVW1llyW.mjs.map +0 -1
  603. package/.output/server/chunks/build/notifications-Dn-evqXM.mjs.map +0 -1
  604. package/.output/server/chunks/build/performance-CV8qm94u.mjs.map +0 -1
  605. package/.output/server/chunks/build/pr-feedback-gKDz8LyA.mjs.map +0 -1
  606. package/.output/server/chunks/build/reset-password-DtEISa1I.mjs.map +0 -1
  607. package/.output/server/chunks/build/settings-BJDnuLpc.mjs.map +0 -1
  608. package/.output/server/chunks/build/settings-metadata-DnAK4Rzg.mjs.map +0 -1
  609. package/.output/server/chunks/build/storage-zN92cA9q.mjs.map +0 -1
  610. package/.output/server/chunks/build/tags-CJFnoyQc.mjs.map +0 -1
  611. package/.output/server/chunks/build/test-cases-0Q6rT73d.mjs.map +0 -1
  612. package/.output/server/chunks/build/test-functions-DVRJgiWo.mjs.map +0 -1
  613. package/.output/server/chunks/build/useDesktopDownload-Dyf0fR47.mjs.map +0 -1
  614. package/.output/server/chunks/build/useDesktopLocalRuns-k7Gw3Fv3.mjs.map +0 -1
  615. package/.output/server/chunks/build/useDesktopProjectLink-WwLte59P.mjs.map +0 -1
  616. package/.output/server/chunks/build/useFormControl-8skMOTIf.mjs.map +0 -1
  617. package/.output/server/chunks/build/useOpenInIde-D74FmDNg.mjs.map +0 -1
  618. package/.output/server/chunks/build/useSettingsNav-BLTHducV.mjs.map +0 -1
  619. package/.output/server/chunks/build/users-C9bjOBde.mjs.map +0 -1
@@ -323,6 +323,13 @@
323
323
  "when": 1785430068658,
324
324
  "tag": "0045_loose_runaways",
325
325
  "breakpoints": true
326
+ },
327
+ {
328
+ "idx": 46,
329
+ "version": "7",
330
+ "when": 1785584930327,
331
+ "tag": "0046_gorgeous_hercules",
332
+ "breakpoints": true
326
333
  }
327
334
  ]
328
335
  }
@@ -1,6 +1,6 @@
1
1
  import process from 'node:process';globalThis._importMeta_={url:import.meta.url,env:process.env};import 'node:http';
2
2
  import 'node:https';
3
- export { e8 as default } from './chunks/nitro/nitro.mjs';
3
+ export { ea as default } from './chunks/nitro/nitro.mjs';
4
4
  import 'node:crypto';
5
5
  import 'drizzle-orm';
6
6
  import 'path';
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@piwitests/dashboard-prod",
3
- "version": "0.23.0",
3
+ "version": "0.25.0",
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@piwitests/server",
3
- "version": "0.23.0",
3
+ "version": "0.25.0",
4
4
  "description": "Self-hosted dashboard that keeps and explains your Playwright test results — run with npx @piwitests/server",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1 +0,0 @@
1
- import{d as m,k as r,o as c,f as _,g,j as b,p as w,R as v,q as x,c as $,h as t}from"./CNu3kken.js";import{_ as C}from"./FJTsZ5Aa.js";import{C as S,D as k}from"./DeewM3Wg.js";const z={key:1,class:"text-xs text-gray-400 dark:text-gray-500 italic"},B=m({__name:"BrowserBadge",props:{browser:{},size:{}},setup(a){const n=a,s=t(()=>n.browser?.projectName??null),l=t(()=>S(s.value)),p=t(()=>k(s.value)),u=t(()=>n.size==="sm"?"size-3.5":n.size==="lg"?"size-5":"size-4"),i=t(()=>{const e=n.browser;if(!e)return[];const o=[];return e.browserName&&e.browserName!==s.value&&o.push(`Browser: ${e.browserName}`),e.channel&&o.push(`Channel: ${e.channel}`),e.viewport&&o.push(`Viewport: ${e.viewport.width}×${e.viewport.height}`),e.deviceScaleFactor&&e.deviceScaleFactor!==1&&o.push(`Scale: ${e.deviceScaleFactor}x`),e.isMobile&&o.push("Mobile"),e.hasTouch&&!e.isMobile&&o.push("Touch"),e.locale&&o.push(`Locale: ${e.locale}`),e.timezoneId&&o.push(`TZ: ${e.timezoneId}`),e.colorScheme&&e.colorScheme!=="light"&&o.push(`Color: ${e.colorScheme}`),e.reducedMotion&&e.reducedMotion!=="no-preference"&&o.push(`Motion: ${e.reducedMotion}`),e.forcedColors&&e.forcedColors!=="none"&&o.push("Colors: forced"),e.offline&&o.push("Offline"),e.bypassCSP&&o.push("CSP bypassed"),e.javaScriptEnabled===!1&&o.push("JS disabled"),e.serviceWorkers==="block"&&o.push("SW blocked"),e.geolocation&&o.push(`Geo: ${e.geolocation.latitude.toFixed(2)},${e.geolocation.longitude.toFixed(2)}`),e.userAgent&&o.push(`UA: ${e.userAgent.length>60?e.userAgent.slice(0,60)+"…":e.userAgent}`),o}),h=t(()=>s.value?i.value.length?`${s.value} · ${i.value.join(" · ")}`:s.value:"");return(e,o)=>{const f=w,d=C;return r(s)?(c(),_(d,{key:0,text:r(h),popper:{placement:"top"}},{default:g(()=>[b(f,{name:r(l),class:x(["shrink-0 cursor-help",r(u)]),style:v({color:r(p)})},null,8,["name","class","style"])]),_:1},8,["text"])):(c(),$("span",z,"—"))}}}),A=Object.assign(B,{__name:"BrowserBadge"});export{A as _};
@@ -1 +0,0 @@
1
- import{_ as j}from"./HIGGZ_c-.js";import{_ as F}from"./B_JSV0yG.js";import{_ as G}from"./Ya8ZzWuY.js";import{aA as T,d as Y,O as D,a as H,u as J,b as K,B as q,c as M,i as r,k as t,f as m,g as s,j as a,m as f,A as Q,r as _,G as W,o as i,v,C as B,E as X,_ as Z,p as ee,M as E,h as te}from"./CNu3kken.js";import{_ as ae}from"./CF_eDZHu.js";import{_ as se}from"./BjOFxi54.js";import"./DZ-KbUZi.js";const oe=T("/logo-wide.svg"),ne={class:"min-h-screen flex flex-col items-center justify-center bg-elevated/50 gap-6 px-4"},le={key:1,class:"space-y-2 mb-4"},re={class:"mt-4 text-center"},ie={class:"flex items-center gap-4 text-sm text-muted"},de={href:"https://github.com/piwitests/platform",target:"_blank",rel:"noopener",class:"flex items-center gap-1.5 hover:text-default transition-colors"},ve=Y({__name:"login",setup(ue){const{login:U}=D(),C=H(),N=J(),y=K(),A=Q(),d=E({username:"",password:""}),w=_(!1),c=_(""),h=_(null),o=E({username:"",password:"",confirmPassword:"",name:""}),u=_(!1),p=_("");q(async()=>{if(A.public.demoMode){h.value=!1;return}try{const n=await $fetch("/api/auth/setup");h.value=n.needsSetup}catch{h.value=!1}});async function z(){if(!o.username||!o.password){p.value="Please choose a username and password";return}if(o.password!==o.confirmPassword){p.value="Passwords do not match";return}u.value=!0,p.value="";try{await $fetch("/api/auth/setup",{method:"POST",body:{username:o.username,password:o.password,name:o.name||void 0}}),await U(o.username,o.password),y.add({title:"Admin account created",description:"You're signed in.",color:"success"}),C.push("/")}catch(n){const e=n&&typeof n=="object"&&"data"in n?n.data?.message:void 0;p.value=e||"Failed to create the admin account",y.add({title:"Setup failed",description:p.value,color:"error"})}finally{u.value=!1}}const x=te(()=>A.public.demoMode?[]:A.public.oauthProviders||[]);q(()=>{const n=N.query.error;if(n){const e={"access-denied":"Access was denied","invalid-state":"Authentication failed (invalid state)","missing-code":"Authentication failed (missing code)","oauth-failed":"OAuth authentication failed","account-exists":"This email is already linked to a different sign-in method. Sign in with that method instead.","domain-not-allowed":"Your email domain is not allowed to sign in here.","org-not-allowed":"You are not a member of an allowed organization.","link-requires-login":"Please sign in before connecting a provider.","auth-disabled":"Authentication is not enabled","invalid-provider":"Invalid OAuth provider"};c.value=e[n]||"Authentication failed"}});async function I(){if(!d.username||!d.password){c.value="Please enter username and password";return}w.value=!0,c.value="";try{await U(d.username,d.password),y.add({title:"Login successful",color:"success"}),C.push("/")}catch(n){const e=n&&typeof n=="object"&&"data"in n?n.data?.message:void 0;c.value=e||"Invalid username or password",y.add({title:"Login failed",description:c.value,color:"error"})}finally{w.value=!1}}function S(n){window.location.href=`/api/auth/oauth/${n}/login`}return(n,e)=>{const O=j,P=F,$=G,g=X,b=ae,k=Z,V=ee,R=se,L=W;return i(),M("div",ne,[e[18]||(e[18]=r("img",{src:oe,alt:"Piwi Dashboard",class:"h-16 rounded-xl"},null,-1)),t(h)===null?(i(),m(P,{key:0,class:"w-full max-w-md"},{default:s(()=>[a(O,{text:"Loading…"})]),_:1})):t(h)?(i(),m(P,{key:1,class:"w-full max-w-md"},{header:s(()=>[...e[8]||(e[8]=[r("h1",{class:"text-xl font-semibold"},"Create the first admin account",-1),r("p",{class:"text-sm text-muted mt-1"}," Authentication is enabled and no accounts exist yet. Create the administrator account to sign in. ",-1)])]),default:s(()=>[t(p)?(i(),m($,{key:0,color:"error",title:t(p),variant:"subtle",class:"mb-4"},null,8,["title"])):v("",!0),r("form",{class:"space-y-4",onSubmit:B(z,["prevent"])},[a(b,{label:"Username",name:"username",required:""},{default:s(()=>[a(g,{modelValue:t(o).username,"onUpdate:modelValue":e[0]||(e[0]=l=>t(o).username=l),type:"text",placeholder:"Choose a username",autocomplete:"username",disabled:t(u),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),a(b,{label:"Name",name:"name"},{default:s(()=>[a(g,{modelValue:t(o).name,"onUpdate:modelValue":e[1]||(e[1]=l=>t(o).name=l),type:"text",placeholder:"Administrator (optional)",autocomplete:"name",disabled:t(u),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),a(b,{label:"Password",name:"password",required:""},{default:s(()=>[a(g,{modelValue:t(o).password,"onUpdate:modelValue":e[2]||(e[2]=l=>t(o).password=l),type:"password",placeholder:"Choose a password",autocomplete:"new-password",disabled:t(u),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),a(b,{label:"Confirm password",name:"confirmPassword",required:""},{default:s(()=>[a(g,{modelValue:t(o).confirmPassword,"onUpdate:modelValue":e[3]||(e[3]=l=>t(o).confirmPassword=l),type:"password",placeholder:"Re-enter the password",autocomplete:"new-password",disabled:t(u),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),a(k,{type:"submit",block:"",loading:t(u),disabled:t(u)},{default:s(()=>[...e[9]||(e[9]=[f(" Create admin account ",-1)])]),_:1},8,["loading","disabled"])],32)]),_:1})):(i(),m(P,{key:2,class:"w-full max-w-md"},{header:s(()=>[...e[10]||(e[10]=[r("h1",{class:"text-xl font-semibold"},"Sign in to your account",-1)])]),default:s(()=>[t(c)?(i(),m($,{key:0,color:"error",title:t(c),variant:"subtle",class:"mb-4"},null,8,["title"])):v("",!0),t(x).length>0?(i(),M("div",le,[t(x).includes("google")?(i(),m(k,{key:0,block:"",color:"neutral",variant:"outline",onClick:e[4]||(e[4]=l=>S("google"))},{leading:s(()=>[a(V,{name:"i-lucide-chrome",class:"size-5"})]),default:s(()=>[e[11]||(e[11]=f(" Sign in with Google ",-1))]),_:1})):v("",!0),t(x).includes("github")?(i(),m(k,{key:1,block:"",color:"neutral",variant:"outline",onClick:e[5]||(e[5]=l=>S("github"))},{leading:s(()=>[a(V,{name:"i-lucide-github",class:"size-5"})]),default:s(()=>[e[12]||(e[12]=f(" Sign in with GitHub ",-1))]),_:1})):v("",!0),t(x).length>0?(i(),m(R,{key:2,label:"or continue with password",class:"my-4"})):v("",!0)])):v("",!0),r("form",{class:"space-y-4",onSubmit:B(I,["prevent"])},[a(b,{label:"Username",name:"username",required:""},{default:s(()=>[a(g,{modelValue:t(d).username,"onUpdate:modelValue":e[6]||(e[6]=l=>t(d).username=l),type:"text",placeholder:"Enter your username",autocomplete:"username",disabled:t(w),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),a(b,{label:"Password",name:"password",required:""},{default:s(()=>[a(g,{modelValue:t(d).password,"onUpdate:modelValue":e[7]||(e[7]=l=>t(d).password=l),type:"password",placeholder:"Enter your password",autocomplete:"current-password",disabled:t(w),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),a(k,{type:"submit",block:"",loading:t(w),disabled:t(w)},{default:s(()=>[...e[13]||(e[13]=[f(" Login ",-1)])]),_:1},8,["loading","disabled"])],32),r("div",re,[a(L,{to:"/forgot-password",class:"text-sm text-muted hover:text-default"},{default:s(()=>[...e[14]||(e[14]=[f(" Forgot password? ",-1)])]),_:1})])]),_:1})),r("div",ie,[r("a",de,[a(V,{name:"i-lucide-github",class:"size-4"}),e[15]||(e[15]=f(" GitHub ",-1))]),e[17]||(e[17]=r("span",null,"·",-1)),a(L,{to:"/docs",class:"flex items-center gap-1.5 hover:text-default transition-colors"},{default:s(()=>[a(V,{name:"i-lucide-book-open",class:"size-4"}),e[16]||(e[16]=f(" API Docs ",-1))]),_:1})])])}}});export{ve as default};
@@ -1 +0,0 @@
1
- import{d as o,o as s,f as e,g as c,p as u,v as r,m,t as l,k as g,s as d}from"./CNu3kken.js";import{j as f}from"./DeewM3Wg.js";const _=o({__name:"RunStatusBadge",props:{status:{},size:{}},setup(t){return(a,z)=>{const n=u,i=d;return s(),e(i,{color:("getStatusColor"in a?a.getStatusColor:g(f))(t.status),size:t.size,variant:"subtle",class:"capitalize gap-1 items-center"},{default:c(()=>[t.status==="running"||t.status==="initialising"||t.status==="finalizing"?(s(),e(n,{key:0,name:"i-lucide-loader-circle",class:"size-3 animate-spin shrink-0"})):r("",!0),m(" "+l(t.status),1)]),_:1},8,["color","size"])}}}),S=Object.assign(_,{__name:"RunStatusBadge"});export{S as _};
@@ -1 +0,0 @@
1
- import{d as C,b as S,o as r,f as k,g as s,i as y,R as I,c as g,F as j,y as U,H as p,j as o,E as F,v,m as h,I as w}from"./CNu3kken.js";import{_ as $}from"./CF_eDZHu.js";import{_ as A}from"./B0tmRAhY.js";import{_ as B}from"./CfhOanaF.js";import{_ as E}from"./Ce89VyHE.js";import{_ as H}from"./BM5BPKlc.js";import{E as L}from"./DeewM3Wg.js";const P={key:0,class:"flex flex-wrap gap-1 py-0.5"},N={key:1,class:"text-[var(--ui-text-muted)]"},O=C({__name:"TagsSelect",props:{modelValue:{},allTags:{}},emits:["update:modelValue","tagCreated"],setup(t,{emit:V}){const u=t,d=V,b=S();async function _(f){const n=f.trim();if(!n)return;const i=u.allTags.find(a=>a.text.toLowerCase()===n.toLowerCase());if(i){u.modelValue.some(a=>a.id===i.id)||d("update:modelValue",[...u.modelValue,i]);return}try{const a=await $fetch("/api/tags",{method:"POST",body:{text:n,color:L()}});d("tagCreated",a.tag),d("update:modelValue",[...u.modelValue,a.tag])}catch(a){const e=a&&typeof a=="object"&&"data"in a?a.data?.message:void 0;b.add({title:"Failed to create tag",description:e||"An error occurred",color:"error"})}}return(f,n)=>{const i=E,a=H;return r(),k(a,{"model-value":t.modelValue,items:t.allTags,multiple:"","create-item":"always","label-key":"text",by:"id",placeholder:"Select or create tags…",class:"w-full","onUpdate:modelValue":n[0]||(n[0]=e=>d("update:modelValue",e)),onCreate:_},{default:s(({modelValue:e})=>[e.length?(r(),g("div",P,[(r(!0),g(j,null,U(e,m=>(r(),k(i,{key:m.id,text:m.text,color:m.color},null,8,["text","color"]))),128))])):(r(),g("span",N,"Select or create tags…"))]),"item-leading":s(({item:e})=>[y("span",{class:"inline-block size-2 rounded-full shrink-0",style:I({backgroundColor:e.color})},null,4)]),_:1},8,["model-value","items"])}}}),D=Object.assign(O,{__name:"TagsSelect"}),q={class:"space-y-5"},z={class:"inline-flex items-center gap-1"},G={class:"inline-flex items-center gap-1"},R=C({__name:"ProjectFormFields",props:w({mode:{},allTags:{},hasToken:{type:Boolean,default:!1}},{name:{default:""},nameModifiers:{},label:{default:""},labelModifiers:{},description:{default:""},descriptionModifiers:{},diagnosisInstructions:{default:""},diagnosisInstructionsModifiers:{},scmToken:{default:""},scmTokenModifiers:{},tags:{default:()=>[]},tagsModifiers:{}}),emits:w(["tag-created"],["update:name","update:label","update:description","update:diagnosisInstructions","update:scmToken","update:tags"]),setup(t,{emit:V}){const u=V,d=p(t,"name"),b=p(t,"label"),_=p(t,"description"),f=p(t,"diagnosisInstructions"),n=p(t,"scmToken"),i=p(t,"tags");return(a,e)=>{const m=F,c=$,x=A,T=B,M=D;return r(),g("div",q,[t.mode==="create"?(r(),k(c,{key:0,label:"Project name",name:"name",required:"",description:"A unique identifier used to match test results from the reporter."},{default:s(()=>[o(m,{modelValue:d.value,"onUpdate:modelValue":e[0]||(e[0]=l=>d.value=l),placeholder:"e.g. my-app",class:"w-full"},null,8,["modelValue"])]),_:1})):v("",!0),o(c,{label:"Display label",name:"label",description:"A friendly name shown in the UI (defaults to project name if not set)."},{default:s(()=>[o(m,{modelValue:b.value,"onUpdate:modelValue":e[1]||(e[1]=l=>b.value=l),placeholder:"e.g. My Application",class:"w-full"},null,8,["modelValue"])]),_:1}),o(c,{label:"Description",name:"description",description:"Optional description of this project."},{default:s(()=>[o(x,{modelValue:_.value,"onUpdate:modelValue":e[2]||(e[2]=l=>_.value=l),placeholder:"Enter project description",rows:3,class:"w-full"},null,8,["modelValue"])]),_:1}),t.mode==="edit"?(r(),g(j,{key:1},[o(c,{name:"diagnosisInstructions",description:"Combined with the global instructions from Settings → AI."},{label:s(()=>[y("span",z,[e[7]||(e[7]=h(" AI diagnosis instructions ",-1)),o(T,{topic:"project.ai-instructions"})])]),default:s(()=>[o(x,{modelValue:f.value,"onUpdate:modelValue":e[3]||(e[3]=l=>f.value=l),placeholder:"e.g. This project tests the payment checkout flow. The backend uses Stripe for payments and the payment API is at /api/v2/payments. Database errors are usually caused by connection pool exhaustion under load.",rows:5,class:"w-full font-mono text-sm"},null,8,["modelValue"])]),_:1}),o(c,{name:"scmToken",description:t.hasToken?"Leave empty to keep the stored token, enter a new value to replace it, or save empty to remove it":"For GitHub, GitLab, or Bitbucket. Falls back to the global SCM token if not set."},{label:s(()=>[y("span",G,[e[8]||(e[8]=h("SCM token ",-1)),o(T,{topic:"project.scm-token"})])]),default:s(()=>[o(m,{modelValue:n.value,"onUpdate:modelValue":e[4]||(e[4]=l=>n.value=l),type:"password",placeholder:t.hasToken?"•••••••• (unchanged)":"ghp_..., glpat-..., or bitbucket token",class:"w-full font-mono"},null,8,["modelValue","placeholder"])]),_:1},8,["description"])],64)):v("",!0),o(c,{label:"Tags",name:"tags",description:"Select existing tags or type a new name and press Enter to create one."},{default:s(()=>[o(M,{modelValue:i.value,"onUpdate:modelValue":e[5]||(e[5]=l=>i.value=l),"all-tags":t.allTags,class:"w-full",onTagCreated:e[6]||(e[6]=l=>u("tag-created"))},null,8,["modelValue","all-tags"])]),_:1})])}}}),ee=Object.assign(R,{__name:"ProjectFormFields"});export{ee as _};
@@ -1 +0,0 @@
1
- import{a2 as W,a3 as X,Z,a5 as Y,aN as ee,aO as ie,aP as ae,J as se,B as le,L as w,o as n,f as d,g as te,i as ne,W as B,k as i,V as b,c as k,q as r,p as A,aK as re,v as g,X as oe,h as ue,aQ as de,a8 as ge}from"./CNu3kken.js";const ce={slots:{root:"relative inline-flex items-center",base:["w-full rounded-md border-0 appearance-none placeholder:text-dimmed disabled:cursor-not-allowed disabled:opacity-75","transition-colors"],leading:"absolute start-0 flex items-start",leadingIcon:"shrink-0 text-dimmed",leadingAvatar:"shrink-0",leadingAvatarSize:"",trailing:"absolute end-0 flex items-start",trailingIcon:"shrink-0 text-dimmed"},variants:{fieldGroup:{horizontal:{root:"group has-focus-visible:z-[1]",base:"group-not-only:group-first:rounded-e-none group-not-only:group-last:rounded-s-none group-not-last:group-not-first:rounded-none"},vertical:{root:"group has-focus-visible:z-[1]",base:"group-not-only:group-first:rounded-b-none group-not-only:group-last:rounded-t-none group-not-last:group-not-first:rounded-none"}},size:{xs:{base:"px-2 py-1 text-sm/4 gap-1",leading:"ps-2 inset-y-1",trailing:"pe-2 inset-y-1",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4"},sm:{base:"px-2.5 py-1.5 text-sm/4 gap-1.5",leading:"ps-2.5 inset-y-1.5",trailing:"pe-2.5 inset-y-1.5",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4"},md:{base:"px-2.5 py-1.5 text-base/5 gap-1.5",leading:"ps-2.5 inset-y-1.5",trailing:"pe-2.5 inset-y-1.5",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5"},lg:{base:"px-3 py-2 text-base/5 gap-2",leading:"ps-3 inset-y-2",trailing:"pe-3 inset-y-2",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5"},xl:{base:"px-3 py-2 text-base gap-2",leading:"ps-3 inset-y-2",trailing:"pe-3 inset-y-2",leadingIcon:"size-6",leadingAvatarSize:"xs",trailingIcon:"size-6"}},variant:{outline:"text-highlighted bg-default ring ring-inset ring-accented",soft:"text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50",subtle:"text-highlighted bg-elevated ring ring-inset ring-accented",ghost:"text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent",none:"text-highlighted bg-transparent focus:outline-none"},color:{primary:"",secondary:"",success:"",info:"",warning:"",error:"",neutral:""},leading:{true:""},trailing:{true:""},loading:{true:""},highlight:{true:""},fixed:{false:""},type:{file:"file:me-1.5 file:font-medium file:text-muted file:outline-none"},autoresize:{true:{base:"resize-none"}}},compoundVariants:[{color:"primary",variant:["outline","subtle"],class:"outline-primary/25 focus-visible:outline-3 focus-visible:ring-primary"},{color:"secondary",variant:["outline","subtle"],class:"outline-secondary/25 focus-visible:outline-3 focus-visible:ring-secondary"},{color:"success",variant:["outline","subtle"],class:"outline-success/25 focus-visible:outline-3 focus-visible:ring-success"},{color:"info",variant:["outline","subtle"],class:"outline-info/25 focus-visible:outline-3 focus-visible:ring-info"},{color:"warning",variant:["outline","subtle"],class:"outline-warning/25 focus-visible:outline-3 focus-visible:ring-warning"},{color:"error",variant:["outline","subtle"],class:"outline-error/25 focus-visible:outline-3 focus-visible:ring-error"},{color:"primary",variant:["soft","ghost"],class:"outline-primary/25 focus-visible:outline-3"},{color:"secondary",variant:["soft","ghost"],class:"outline-secondary/25 focus-visible:outline-3"},{color:"success",variant:["soft","ghost"],class:"outline-success/25 focus-visible:outline-3"},{color:"info",variant:["soft","ghost"],class:"outline-info/25 focus-visible:outline-3"},{color:"warning",variant:["soft","ghost"],class:"outline-warning/25 focus-visible:outline-3"},{color:"error",variant:["soft","ghost"],class:"outline-error/25 focus-visible:outline-3"},{color:"primary",highlight:!0,class:"ring ring-inset ring-primary"},{color:"secondary",highlight:!0,class:"ring ring-inset ring-secondary"},{color:"success",highlight:!0,class:"ring ring-inset ring-success"},{color:"info",highlight:!0,class:"ring ring-inset ring-info"},{color:"warning",highlight:!0,class:"ring ring-inset ring-warning"},{color:"error",highlight:!0,class:"ring ring-inset ring-error"},{color:"neutral",variant:["outline","subtle"],class:"outline-inverted/25 focus-visible:outline-3 focus-visible:ring-inverted"},{color:"neutral",variant:["soft","ghost"],class:"outline-inverted/25 focus-visible:outline-3"},{color:"neutral",highlight:!0,class:"ring ring-inset ring-inverted"},{leading:!0,size:"xs",class:"ps-7"},{leading:!0,size:"sm",class:"ps-8"},{leading:!0,size:"md",class:"ps-9"},{leading:!0,size:"lg",class:"ps-10"},{leading:!0,size:"xl",class:"ps-11"},{trailing:!0,size:"xs",class:"pe-7"},{trailing:!0,size:"sm",class:"pe-8"},{trailing:!0,size:"md",class:"pe-9"},{trailing:!0,size:"lg",class:"pe-10"},{trailing:!0,size:"xl",class:"pe-11"},{loading:!0,leading:!0,class:{leadingIcon:"animate-spin"}},{loading:!0,leading:!1,trailing:!0,class:{trailingIcon:"animate-spin"}},{fixed:!1,size:"xs",class:"md:text-xs"},{fixed:!1,size:"sm",class:"md:text-xs"},{fixed:!1,size:"md",class:"md:text-sm"},{fixed:!1,size:"lg",class:"md:text-sm"}],defaultVariants:{size:"md",color:"primary",variant:"outline"}},fe=["id","value","name","rows","placeholder","disabled","required"],me=Object.assign({inheritAttrs:!1},{__name:"UTextarea",props:{as:{type:null,required:!1},id:{type:String,required:!1},name:{type:String,required:!1},placeholder:{type:String,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},required:{type:Boolean,required:!1},autofocus:{type:Boolean,required:!1},autofocusDelay:{type:Number,required:!1,default:0},autoresize:{type:Boolean,required:!1},autoresizeDelay:{type:Number,required:!1,default:0},disabled:{type:Boolean,required:!1},rows:{type:Number,required:!1,default:3},maxrows:{type:Number,required:!1,default:0},highlight:{type:Boolean,required:!1},fixed:{type:Boolean,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1},modelModifiers:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},trailingIcon:{type:null,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1}},emits:["update:modelValue","blur","change"],setup(S,{expose:V,emit:N}){const h=S,c=N,o=W(),e=X("textarea",h),f=Z(e,"modelValue",c,{defaultValue:e.defaultValue}),M=Y(),{emitFormFocus:y,emitFormBlur:C,emitFormInput:F,emitFormChange:T,size:_,color:$,id:R,name:D,highlight:O,disabled:P,ariaAttrs:j}=ee(h,{deferInputValidation:!0}),{isLeading:p,isTrailing:x,leadingIconName:z,trailingIconName:q}=ie(e),s=ue(()=>ge({extend:ce,...M.ui?.textarea||{}})({color:$.value??e.color,variant:e.variant,size:_?.value??e.size,loading:e.loading,highlight:O.value??e.highlight,fixed:e.fixed,autoresize:e.autoresize,leading:p.value||!!e.avatar||!!o.leading,trailing:x.value||!!o.trailing})),l=ae("textareaRef");function I(a){e.modelModifiers?.trim&&(typeof a=="string"||a===null||a===void 0)&&(a=a?.trim()??null),e.modelModifiers?.number&&(a=de(a)),e.modelModifiers?.nullable&&(a||=null),e.modelModifiers?.optional&&!e.modelModifiers?.nullable&&a!==null&&(a||=void 0),f.value=a,F()}function H(a){u(),e.modelModifiers?.lazy||I(a.target.value)}function L(a){const t=a.target.value;e.modelModifiers?.lazy&&I(t),e.modelModifiers?.trim&&(a.target.value=t.trim()),T(),c("change",a)}function E(a){C(),c("blur",a)}function G(){e.autofocus&&l.value?.focus()}function u(){if(e.autoresize&&l.value){l.value.rows=e.rows;const a=l.value.style.overflow;l.value.style.overflow="hidden";const t=window.getComputedStyle(l.value),m=Number.parseInt(t.paddingTop),J=Number.parseInt(t.paddingBottom),K=m+J,Q=Number.parseInt(t.lineHeight),{scrollHeight:U}=l.value,v=(U-K)/Q;v>e.rows&&(l.value.rows=e.maxrows?Math.min(v,e.maxrows):v),l.value.style.overflow=a}}return se(f,()=>{w(u)}),le(()=>{setTimeout(()=>{G()},e.autofocusDelay),setTimeout(async()=>{await w(),u()},e.autoresizeDelay)}),V({textareaRef:l,autoResize:u}),(a,t)=>(n(),d(i(oe),{as:i(e).as,"data-slot":a.$attrs["data-slot"]??"root",class:r(s.value.root({class:[i(e).ui?.root,i(e).class]}))},{default:te(()=>[ne("textarea",B({id:i(R),ref_key:"textareaRef",ref:l,value:i(f),name:i(D),rows:i(e).rows,placeholder:i(e).placeholder,class:s.value.base({class:i(e).ui?.base}),disabled:i(P),required:i(e).required},{...a.$attrs,...i(j)},{"data-slot":"base",onInput:H,onBlur:E,onChange:L,onFocus:t[0]||(t[0]=(...m)=>i(y)&&i(y)(...m))}),null,16,fe),b(a.$slots,"default",{ui:s.value}),i(p)||i(e).avatar||o.leading?(n(),k("span",{key:0,"data-slot":"leading",class:r(s.value.leading({class:i(e).ui?.leading}))},[b(a.$slots,"leading",{ui:s.value},()=>[i(p)&&i(z)?(n(),d(A,{key:0,name:i(z),"data-slot":"leadingIcon",class:r(s.value.leadingIcon({class:i(e).ui?.leadingIcon}))},null,8,["name","class"])):i(e).avatar?(n(),d(re,B({key:1,size:i(e).ui?.leadingAvatarSize||s.value.leadingAvatarSize()},i(e).avatar,{"data-slot":"leadingAvatar",class:s.value.leadingAvatar({class:i(e).ui?.leadingAvatar})}),null,16,["size","class"])):g("",!0)])],2)):g("",!0),i(x)||o.trailing?(n(),k("span",{key:1,"data-slot":"trailing",class:r(s.value.trailing({class:i(e).ui?.trailing}))},[b(a.$slots,"trailing",{ui:s.value},()=>[i(q)?(n(),d(A,{key:0,name:i(q),"data-slot":"trailingIcon",class:r(s.value.trailingIcon({class:i(e).ui?.trailingIcon}))},null,8,["name","class"])):g("",!0)])],2)):g("",!0)]),_:3},8,["as","data-slot","class"]))}});export{me as _};
@@ -1 +0,0 @@
1
- import{d as m,J as h,o as n,f as o,W as p,bY as g,bq as E,h as d,c as f,v as B,F as y,y as V}from"./CNu3kken.js";var k=m({inheritAttrs:!1,__name:"VisuallyHiddenInputBubble",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(i){const e=i,{primitiveElement:s,currentElement:l}=E(),t=d(()=>e.checked??e.value);return h(t,(r,a)=>{if(!l.value)return;const u=l.value,b=window.HTMLInputElement.prototype,v=Object.getOwnPropertyDescriptor(b,"value").set;if(v&&r!==a){const _=new Event("input",{bubbles:!0}),q=new Event("change",{bubbles:!0});v.call(u,r),u.dispatchEvent(_),u.dispatchEvent(q)}}),(r,a)=>(n(),o(g,p({ref_key:"primitiveElement",ref:s},{...e,...r.$attrs},{as:"input"}),null,16))}}),c=k,A=m({inheritAttrs:!1,__name:"VisuallyHiddenInput",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(i){const e=i,s=d(()=>typeof e.value=="object"&&Array.isArray(e.value)&&e.value.length===0&&e.required),l=d(()=>typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"||e.value===null||e.value===void 0?[{name:e.name,value:e.value}]:typeof e.value=="object"&&Array.isArray(e.value)?e.value.flatMap((t,r)=>typeof t=="object"?Object.entries(t).map(([a,u])=>({name:`${e.name}[${r}][${a}]`,value:u})):{name:`${e.name}[${r}]`,value:t}):e.value!==null&&typeof e.value=="object"&&!Array.isArray(e.value)?Object.entries(e.value).map(([t,r])=>({name:`${e.name}[${t}]`,value:r})):[]);return(t,r)=>(n(),f(y,null,[B(" We render single input if it's required "),s.value?(n(),o(c,p({key:t.name},{...e,...t.$attrs},{name:t.name,value:t.value}),null,16,["name","value"])):(n(!0),f(y,{key:1},V(l.value,a=>(n(),o(c,p({key:a.name},{ref_for:!0},{...e,...t.$attrs},{name:a.name,value:a.value}),null,16,["name","value"]))),128))],2112))}}),I=A;export{I as V};
@@ -1 +0,0 @@
1
- import{d as _,f as m,g as i,o as p,i as s,t as n,j as c,k as l,m as u,_ as x}from"./CNu3kken.js";import{_ as f}from"./Ce47NgZw.js";import{a as b}from"./DprkT7rM.js";const g={class:"space-y-4 text-sm"},v={class:"space-y-1"},y={class:"flex items-start gap-2"},C={class:"text-xs break-all flex-1"},k={class:"space-y-1"},D={class:"flex items-start gap-2"},B={class:"text-xs break-all flex-1"},h=_({__name:"DataLocationCard",props:{database:{},storage:{}},setup(a){const{copy:e}=b();return(N,t)=>{const o=x,r=f;return p(),m(r,{icon:"i-lucide-folder-open",title:"Data location"},{subtitle:i(()=>[...t[2]||(t[2]=[u(" Where this instance keeps its database and files on disk. ",-1)])]),default:i(()=>[s("div",g,[s("div",v,[t[3]||(t[3]=s("div",{class:"text-muted"},"Database",-1)),s("div",y,[s("code",C,n(a.database),1),c(o,{icon:"i-lucide-copy",color:"neutral",variant:"ghost",size:"xs","aria-label":"Copy database location",onClick:t[0]||(t[0]=d=>l(e)(a.database,{toast:!0}))})])]),s("div",k,[t[4]||(t[4]=s("div",{class:"text-muted"},"File storage",-1)),s("div",D,[s("code",B,n(a.storage),1),c(o,{icon:"i-lucide-copy",color:"neutral",variant:"ghost",size:"xs","aria-label":"Copy storage location",onClick:t[1]||(t[1]=d=>l(e)(a.storage,{toast:!0}))})])])])]),_:1})}}}),z=Object.assign(h,{__name:"DataLocationCard"});export{z as _};
@@ -1 +0,0 @@
1
- import{_ as N}from"./jR2xm3_t.js";import{_ as P}from"./DAhv9aNg.js";import{_ as L}from"./Ce47NgZw.js";import{d as R,b as F,B as H,ak as U,k as e,f as v,g as i,v as k,r as h,o as a,i as _,c as f,j as s,m as l,t as S,_ as q,z as O,F as Q,aM as Y,h as z,x as j,an as J,p as E,w as K,A as W}from"./CNu3kken.js";import{e as A,f as X}from"./DeewM3Wg.js";import{_ as Z}from"./Ya8ZzWuY.js";import{a as ee}from"./CfhOanaF.js";import{u as te}from"./DFfqRQxk.js";import{u as ne}from"./DprkT7rM.js";import"./B_JSV0yG.js";import"./BjaRappk.js";const se={class:"space-y-3"},oe={key:0,class:"flex items-center justify-between gap-3"},ae={key:1,class:"text-sm text-muted"},ie={key:2,class:"flex items-center justify-between gap-3"},le={class:"text-sm flex items-center gap-2"},re={class:"flex items-start justify-between gap-3"},ce={class:"space-y-1 min-w-0"},ue={class:"text-sm font-medium"},de={key:0,class:"text-xs text-muted whitespace-pre-wrap line-clamp-6"},pe={key:1,class:"text-xs text-muted"},me=R({__name:"DesktopUpdateCard",props:{currentVersion:{}},setup(T){const p=F(),b=h(!1),r=h(!1),u=h(!1),x=h(!1),c=h(null),d=h(null);let m=null;H(()=>{b.value=!!U()}),J(()=>{m?.()});async function g(){const n=U();if(!(!n||r.value)){r.value=!0;try{c.value=await n.invoke("desktop_check_update")}catch(t){p.add({title:"Update check failed",description:A(t),color:"error"})}finally{r.value=!1}}}async function V(){const n=U(),t=Y();if(!(!n||u.value)){u.value=!0,d.value={downloaded:0,total:null};try{t&&!m&&(m=await t.listen("piwi:update-progress",({payload:o})=>{d.value=o})),await n.invoke("desktop_install_update"),x.value=!0}catch(o){p.add({title:"Update failed",description:A(o),color:"error"}),d.value=null}finally{u.value=!1}}}async function y(){const n=U();if(n)try{await n.invoke("desktop_restart_app")}catch{}}const w=z(()=>{const n=d.value;return n?.total?Math.min(100,Math.round(n.downloaded/n.total*100)):null});return(n,t)=>{const o=q,D=j,C=E,$=O,B=L;return e(b)?(a(),v(B,{key:0,icon:"i-lucide-arrow-up-circle",title:"Updates"},{subtitle:i(()=>[l(" Updates install from GitHub releases and apply on restart"+S(T.currentVersion?` — you are on v${T.currentVersion}`:"")+". ",1)]),default:i(()=>[_("div",se,[e(c)?e(c).state==="unsupported"?(a(),f("p",ae,[t[3]||(t[3]=l(" This build has no update channel — dev builds and releases made without the update signing key cannot self-update. Grab new versions from the ",-1)),s(D,{to:"https://github.com/piwitests/platform/releases/latest",target:"_blank",rel:"noopener noreferrer",class:"text-primary hover:underline"},{default:i(()=>[...t[2]||(t[2]=[l("latest release",-1)])]),_:1}),t[4]||(t[4]=l(". ",-1))])):e(c).state==="uptodate"?(a(),f("div",ie,[_("p",le,[s(C,{name:"i-lucide-check-circle",class:"size-4 text-success"}),t[5]||(t[5]=l(" You're on the latest version. ",-1))]),s(o,{size:"xs",color:"neutral",variant:"soft",icon:"i-lucide-refresh-cw",loading:e(r),onClick:g},{default:i(()=>[...t[6]||(t[6]=[l(" Check again ",-1)])]),_:1},8,["loading"])])):(a(),f(Q,{key:3},[_("div",re,[_("div",ce,[_("p",ue,"Version "+S(e(c).version)+" is available",1),e(c).notes?(a(),f("p",de,S(e(c).notes),1)):k("",!0)]),e(x)?(a(),v(o,{key:1,size:"xs",color:"success",icon:"i-lucide-rotate-cw",class:"shrink-0",onClick:y},{default:i(()=>[...t[7]||(t[7]=[l(" Restart now ",-1)])]),_:1})):(a(),v(o,{key:0,size:"xs",icon:"i-lucide-download",loading:e(u),class:"shrink-0",onClick:V},{default:i(()=>[l(S(e(u)?"Installing…":"Install update"),1)]),_:1},8,["loading"]))]),e(u)&&e(w)!==null?(a(),v($,{key:0,"model-value":e(w),size:"sm"},null,8,["model-value"])):k("",!0),e(x)?(a(),f("p",pe," The update is installed — it applies the next time the app starts. ")):k("",!0)],64)):(a(),f("div",oe,[t[1]||(t[1]=_("p",{class:"text-sm text-muted"},"Check GitHub for a newer version of the desktop app.",-1)),s(o,{size:"xs",icon:"i-lucide-refresh-cw",loading:e(r),onClick:g},{default:i(()=>[...t[0]||(t[0]=[l("Check for updates",-1)])]),_:1},8,["loading"])]))])]),_:1})):k("",!0)}}}),_e=Object.assign(me,{__name:"DesktopUpdateCard"}),fe={class:"space-y-6"},ve={class:"flex flex-wrap items-center gap-x-6 gap-y-3 text-sm"},Ve=R({__name:"about",async setup(T){let p,b;const r=W(),u=te(),{data:x}=([p,b]=K(()=>ne("/api/version","$PC3uzh76dT")),p=await p,b(),p),c=r.public.appVersion,d=r.public.buildSha,m=r.public.buildTime,g=r.public.nodeVersion,V=r.public.authEnabled,y=z(()=>d?d.slice(0,7):null),w=z(()=>{const n=x.value?.dbBackend;return n==="postgresql"?"PostgreSQL":n==="sqlite"?"SQLite":n??null});return(n,t)=>{const o=N,D=P,C=L,$=_e,B=Z,G=ee,I=j,M=E;return a(),f("div",fe,[s(C,{icon:"i-lucide-info",title:"Application"},{default:i(()=>[s(D,null,{default:i(()=>[s(o,{label:"Version",value:`v${e(c)}`},null,8,["value"]),e(y)?(a(),v(o,{key:0,label:"Build",value:e(y),hint:e(d)},null,8,["value","hint"])):k("",!0),e(m)?(a(),v(o,{key:1,label:"Built",value:("formatRelativeTime"in n?n.formatRelativeTime:e(X))(e(m)),hint:e(m)},null,8,["value","hint"])):k("",!0),s(o,{label:"Node.js",value:e(g)},null,8,["value"]),s(o,{label:"Database",value:e(w)},null,8,["value"]),s(o,{label:"Authentication",value:e(V)?"Enabled":"Disabled"},null,8,["value"])]),_:1})]),_:1}),s($,{"current-version":e(c)},null,8,["current-version"]),e(u)?(a(),v(B,{key:0,icon:"i-lucide-rocket",color:"neutral",variant:"subtle",title:"Connecting the reporter and AI clients",description:"The URL and access token for this local instance, the data location, and background-service control are on the Setup page.",actions:[{label:"Open Setup",to:"/setup",color:"neutral",variant:"solid",size:"xs"}]})):k("",!0),s(C,{icon:"i-lucide-book-open",title:"Resources"},{default:i(()=>[_("div",ve,[s(G,{to:""},{default:i(()=>[...t[0]||(t[0]=[l("Documentation",-1)])]),_:1}),s(I,{to:"/docs",class:"inline-flex items-center gap-1 text-primary hover:underline"},{default:i(()=>[...t[1]||(t[1]=[l(" API reference ",-1)])]),_:1}),s(I,{to:"https://github.com/piwitests/platform",target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1 text-primary hover:underline"},{default:i(()=>[t[2]||(t[2]=l(" GitHub ",-1)),s(M,{name:"i-lucide-external-link",class:"w-3.5 h-3.5 shrink-0"})]),_:1})])]),_:1})])}}});export{Ve as default};
@@ -1 +0,0 @@
1
- import{d as h,b as U,c as r,j as t,g as s,o as i,k as l,F as _,i as o,G as $,m,C as B,E as V,l as C,_ as F,p as E,r as c}from"./CNu3kken.js";import{_ as N}from"./Ya8ZzWuY.js";import{_ as S}from"./CF_eDZHu.js";import{_ as I}from"./B_JSV0yG.js";import"./DZ-KbUZi.js";const T={class:"min-h-screen flex items-center justify-center bg-elevated/50"},j={class:"flex items-center gap-2"},P={class:"mt-4 text-center"},q={class:"mt-4 text-center"},D=h({__name:"forgot-password",setup(z){const f=U(),a=c(""),n=c(!1),d=c(!1);async function p(){if(a.value){n.value=!0;try{await $fetch("/api/auth/forgot-password",{method:"POST",body:{email:a.value}}),d.value=!0}catch{f.add({title:"Something went wrong",description:"Please try again.",color:"error"})}finally{n.value=!1}}}return(A,e)=>{const x=E,g=N,u=$,y=V,k=S,v=F,w=I;return i(),r("div",T,[t(w,{class:"w-full max-w-md"},{header:s(()=>[o("div",j,[t(x,{name:"i-lucide-key-round",class:"size-6"}),e[1]||(e[1]=o("h1",{class:"text-2xl font-bold"},"Forgot password",-1))])]),default:s(()=>[l(d)?(i(),r(_,{key:0},[t(g,{color:"success",icon:"i-lucide-mail-check",title:"Check your email",description:"If an account with that email exists, a reset link has been sent."}),o("div",P,[t(u,{to:"/login",class:"text-sm text-gray-500 hover:text-gray-700 dark:hover:text-gray-300"},{default:s(()=>[...e[2]||(e[2]=[m(" Back to login ",-1)])]),_:1})])],64)):(i(),r(_,{key:1},[e[5]||(e[5]=o("p",{class:"text-sm text-gray-500 mb-4"}," Enter your email address and we'll send you a link to reset your password. ",-1)),o("form",{class:"space-y-4",onSubmit:B(p,["prevent"])},[t(k,{label:"Email",name:"email",required:""},{default:s(()=>[t(y,{modelValue:l(a),"onUpdate:modelValue":e[0]||(e[0]=b=>C(a)?a.value=b:null),type:"email",placeholder:"you@example.com",autocomplete:"email",disabled:l(n),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),t(v,{type:"submit",block:"",loading:l(n)},{default:s(()=>[...e[3]||(e[3]=[m("Send reset link",-1)])]),_:1},8,["loading"])],32),o("div",q,[t(u,{to:"/login",class:"text-sm text-gray-500 hover:text-gray-700 dark:hover:text-gray-300"},{default:s(()=>[...e[4]||(e[4]=[m(" Back to login ",-1)])]),_:1})])],64))]),_:1})])}}});export{D as default};
@@ -1 +0,0 @@
1
- import{aT as We,$ as ke,d as R,Y as Ye,b3 as Ne,bp as qt,aB as nt,Z as Ae,J as Me,o as c,f as _,g,V as w,k as e,v as H,L as ue,X as Y,bq as Te,r as G,br as Pe,b4 as It,bs as St,bt as st,j as F,S as Se,C as we,bu as wt,B as ge,ad as He,h as V,bv as ut,aC as Ee,W as A,U as ae,bw as dt,aR as kt,a2 as pt,bx as Et,by as zt,bz as ct,bA as Bt,c as W,F as se,y as De,ag as ft,R as Ft,bB as At,l as vt,bC as Lt,aw as Tt,bD as Ot,bE as Vt,bF as Kt,bG as Rt,bH as Pt,bI as Dt,bJ as mt,bK as $t,bL as Mt,a0 as qe,bM as Nt,bN as Ht,aE as Gt,m as Ce,t as ve,a1 as Le,bO as jt,aJ as xe,a3 as Ut,H as Wt,a4 as Yt,a5 as Jt,a6 as Qt,a7 as Xt,bP as Zt,aN as ea,bQ as ta,aO as aa,b8 as et,aP as je,b9 as fe,q as K,i as Be,p as Re,aK as tt,bR as la,_ as ia,bS as oa,E as ra,I as at,bT as lt,ba as Fe,ay as na,aQ as sa,a8 as ua,bU as da,bV as pa,bW as ca}from"./CNu3kken.js";import{u as fa}from"./BVyjw9Bi.js";import{V as va}from"./B3AG2m76.js";import{u as ma}from"./CmTzxoQt.js";function $e(n,r,a){const l=n.findIndex(d=>We(d,r)),i=n.findIndex(d=>We(d,a));if(l===-1||i===-1)return[];const[o,t]=[l,i].sort((d,b)=>d-b);return n.slice(o,t+1)}function ga(){return{ALT:"Alt",ARROW_DOWN:"ArrowDown",ARROW_LEFT:"ArrowLeft",ARROW_RIGHT:"ArrowRight",ARROW_UP:"ArrowUp",BACKSPACE:"Backspace",CAPS_LOCK:"CapsLock",CONTROL:"Control",DELETE:"Delete",END:"End",ENTER:"Enter",ESCAPE:"Escape",F1:"F1",F10:"F10",F11:"F11",F12:"F12",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",HOME:"Home",META:"Meta",PAGE_DOWN:"PageDown",PAGE_UP:"PageUp",SHIFT:"Shift",SPACE:" ",TAB:"Tab",CTRL:"Control",ASTERISK:"*",SPACE_CODE:"Space"}}function it(n){return n?.querySelector("[data-state=checked]")}function ba(n,r,a){return n===void 0?!1:Array.isArray(n)?n.some(l=>me(l,r,a)):me(n,r,a)}function me(n,r,a){return n===void 0||r===void 0?!1:typeof n=="string"?n===r:typeof a=="function"?a(n,r):typeof a=="string"?n?.[a]===r?.[a]:We(n,r)}const[Oe,ya]=ke("ListboxRoot");var ha=R({__name:"ListboxRoot",props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},orientation:{type:String,required:!1,default:"vertical"},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},selectionBehavior:{type:String,required:!1,default:"toggle"},highlightOnHover:{type:Boolean,required:!1},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","highlight","entryFocus","leave"],setup(n,{expose:r,emit:a}){const l=n,i=a,{multiple:o,highlightOnHover:t,orientation:d,disabled:b,selectionBehavior:B,dir:I}=Ye(l),{getItems:z}=Ne({isProvider:!0}),{handleTypeaheadSearch:v}=qt(),{primitiveElement:y,currentElement:m}=Te(),p=ga(),C=nt(I),k=fa(m),$=G(),S=G(!1),L=G(!0),E=Ae(l,"modelValue",i,{defaultValue:l.defaultValue??(o.value?[]:void 0),passive:l.modelValue===void 0,deep:!0});function de(u){if(S.value=!0,l.multiple){const x=Array.isArray(E.value)?[...E.value]:[],q=x.findIndex(O=>me(O,u,l.by));l.selectionBehavior==="toggle"?(q===-1?x.push(u):x.splice(q,1),E.value=x):(E.value=[u],$.value=u)}else l.selectionBehavior==="toggle"&&me(E.value,u,l.by)?E.value=void 0:E.value=u;setTimeout(()=>{S.value=!1},1)}const T=G(null),ie=G(null),X=G(!1),oe=G(!1),pe=Pe(),be=Pe(),re=Pe();function ce(){return z().map(u=>u.ref).filter(u=>u.dataset.disabled!=="")}function N(u,x=!0,q){if(!u)return;T.value=u,(q??L.value)&&T.value.focus(),x&&T.value.scrollIntoView({block:"nearest"});const O=z().find(j=>j.ref===u);i("highlight",O)}function P(u){if(X.value)re.trigger(u);else{const x=z().find(q=>me(q.value,u,l.by));x&&(T.value=x.ref,N(x.ref))}}function J(u){if(T.value&&T.value.isConnected){if(u.ctrlKey||u.metaKey||u.altKey)return;u.preventDefault(),u.stopPropagation(),oe.value||T.value.click()}}function Q(u){if(L.value){if(S.value=!0,X.value)be.trigger(u);else{const x=u.altKey||u.ctrlKey||u.metaKey;if(x&&u.key==="a"&&o.value){const q=z(),O=q.map(he=>he.value);E.value=[...O],u.preventDefault();const j=q.at(-1);j&&N(j.ref)}else if(!x){const q=v(u.key,z());q&&N(q)}}setTimeout(()=>{S.value=!1},1)}}function ne(){oe.value=!0}function ye(){ue(()=>{oe.value=!1})}function Z(){ue(()=>{const u=new KeyboardEvent("keydown",{key:"PageUp"});h(u)})}function ee(u){const x=T.value;x?.isConnected&&(ie.value=x),T.value=null,i("leave",u)}function Ve(u){const x=new CustomEvent("listbox.entryFocus",{bubbles:!1,cancelable:!0});if(u.currentTarget?.dispatchEvent(x),i("entryFocus",x),!x.defaultPrevented)if(ie.value)N(ie.value);else{const q=ce()?.[0];N(q)}}function h(u){const x=It(u,d.value,C.value);if(!x)return;let q=ce();if(T.value){if(x==="last")q.reverse();else if(x==="prev"||x==="next"){x==="prev"&&q.reverse();const O=q.indexOf(T.value);q=q.slice(O+1)}Ge(u,q[0])}if(q.length){const O=!T.value&&x==="prev"?q.length-1:0;N(q[O])}if(X.value)return be.trigger(u)}function Ge(u,x){if(!(X.value||l.selectionBehavior!=="replace"||!o.value||!Array.isArray(E.value)||(u.altKey||u.ctrlKey||u.metaKey)&&!u.shiftKey)&&u.shiftKey){const O=z().filter(_e=>_e.ref.dataset.disabled!=="");let j=O.find(_e=>_e.ref===x)?.value;if(u.key===p.END?j=O.at(-1)?.value:u.key===p.HOME&&(j=O[0]?.value),!j||!$.value)return;const he=$e(O.map(_e=>_e.value),$.value,j);E.value=he}}async function Ie(u,x=!0){if(St)if(await ue(),X.value)pe.trigger({event:u,scroll:x});else{const q=ce(),O=q.find(he=>he.dataset.state==="checked"),j=x?void 0:!1;O?N(O,x,j):q.length&&N(q[0],x,j)}}let ze=!1;return Me(E,()=>{if(!S.value){const u=ze;ze=!0,ue(()=>{Ie(void 0,u)})}},{immediate:!0,deep:!0}),r({highlightedElement:T,highlightItem:P,highlightFirstItem:Z,highlightSelected:Ie,getItems:z}),ya({modelValue:E,onValueChange:de,multiple:o,orientation:d,dir:C,disabled:b,highlightOnHover:t,highlightedElement:T,isVirtual:X,virtualFocusHook:pe,virtualKeydownHook:be,virtualHighlightHook:re,by:l.by,firstValue:$,selectionBehavior:B,focusable:L,onLeave:ee,onEnter:Ve,changeHighlight:N,onKeydownEnter:J,onKeydownNavigation:h,onKeydownTypeAhead:Q,onCompositionStart:ne,onCompositionEnd:ye,highlightFirstItem:Z}),(u,x)=>(c(),_(e(Y),{ref_key:"primitiveElement",ref:y,as:u.as,"as-child":u.asChild,dir:e(C),"data-disabled":e(b)?"":void 0,onPointerleave:ee,onFocusout:x[0]||(x[0]=async q=>{const O=q.relatedTarget||q.target;await ue(),T.value&&e(m)&&!e(m).contains(O)&&ee(q)})},{default:g(()=>[w(u.$slots,"default",{modelValue:e(E)}),e(k)&&u.name?(c(),_(e(va),{key:0,name:u.name,value:e(E),disabled:e(b),required:u.required},null,8,["name","value","disabled","required"])):H("v-if",!0)]),_:3},8,["as","as-child","dir","data-disabled"]))}}),_a=ha,xa=R({__name:"ListboxContent",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(n){const{CollectionSlot:r}=Ne(),a=Oe(),l=st(!1,10);return(i,o)=>(c(),_(e(r),null,{default:g(()=>[F(e(Y),{role:"listbox",as:i.as,"as-child":i.asChild,tabindex:e(a).focusable.value?e(a).highlightedElement.value?"-1":"0":"-1","aria-orientation":e(a).orientation.value,"aria-multiselectable":!!e(a).multiple.value,"data-orientation":e(a).orientation.value,onMousedown:o[0]||(o[0]=we(t=>l.value=!0,["left"])),onFocus:o[1]||(o[1]=t=>{e(l)||e(a).onEnter(t)}),onKeydown:[o[2]||(o[2]=Se(t=>{e(a).orientation.value==="vertical"&&(t.key==="ArrowLeft"||t.key==="ArrowRight")||e(a).orientation.value==="horizontal"&&(t.key==="ArrowUp"||t.key==="ArrowDown")||(t.preventDefault(),e(a).focusable.value&&e(a).onKeydownNavigation(t))},["down","up","left","right","home","end"])),Se(e(a).onKeydownEnter,["enter"]),e(a).onKeydownTypeAhead]},{default:g(()=>[w(i.$slots,"default")]),_:3},8,["as","as-child","tabindex","aria-orientation","aria-multiselectable","data-orientation","onKeydown"])]),_:3}))}}),Ca=xa,qa=R({__name:"ListboxFilter",props:{modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},emits:["update:modelValue"],setup(n,{emit:r}){const a=n,i=Ae(a,"modelValue",r,{defaultValue:"",passive:a.modelValue===void 0}),o=Oe(),{primitiveElement:t,currentElement:d}=Te(),b=V(()=>a.disabled||o.disabled.value||!1),B=G();wt(()=>B.value=o.highlightedElement.value?.id),ge(()=>{o.focusable.value=!1,setTimeout(()=>{a.autoFocus&&d.value?.focus()},1)}),He(()=>{o.focusable.value=!0});const{isComposing:I,handleCompositionStart:z,handleCompositionEnd:v}=ut(k=>{i.value=k.target.value,o.onCompositionEnd(),o.highlightFirstItem()});function y(){o.onCompositionStart(),z()}function m(k){I.value||(i.value=k.target.value,o.highlightFirstItem())}function p(k){I.value||(k.preventDefault(),o.onKeydownNavigation(k))}function C(k){I.value||o.onKeydownEnter(k)}return(k,$)=>(c(),_(e(Y),{ref_key:"primitiveElement",ref:t,as:k.as,"as-child":k.asChild,value:e(i),disabled:b.value?"":void 0,"data-disabled":b.value?"":void 0,"aria-disabled":b.value??void 0,"aria-activedescendant":B.value,type:"text",onKeydown:[Se(p,["down","up","home","end"]),Se(C,["enter"])],onInput:m,onCompositionstart:y,onCompositionend:e(v)},{default:g(()=>[w(k.$slots,"default",{modelValue:e(i)})]),_:3},8,["as","as-child","value","disabled","data-disabled","aria-disabled","aria-activedescendant","onCompositionend"]))}}),Ia=qa;const[Il,Sa]=ke("ListboxGroup");var wa=R({__name:"ListboxGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(n){const r=n,a=Ee(void 0,"reka-listbox-group");return Sa({id:a}),(l,i)=>(c(),_(e(Y),A({role:"group"},r,{"aria-labelledby":e(a)}),{default:g(()=>[w(l.$slots,"default")]),_:3},16,["aria-labelledby"]))}}),ka=wa;const Ea="listbox.select",[za,Ba]=ke("ListboxItem");var Fa=R({__name:"ListboxItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},emits:["select"],setup(n,{emit:r}){const a=n,l=r,i=Ee(void 0,"reka-listbox-item"),{CollectionItem:o}=Ne(),{forwardRef:t,currentElement:d}=ae(),b=Oe(),B=V(()=>d.value!=null&&d.value===b.highlightedElement.value),I=V(()=>ba(b.modelValue.value,a.value,b.by)),z=V(()=>b.disabled.value||a.disabled);async function v(m){l("select",m),!m?.defaultPrevented&&!z.value&&m&&(b.onValueChange(a.value),b.changeHighlight(d.value))}function y(m){const p={originalEvent:m,value:a.value};kt(Ea,v,p)}return Ba({isSelected:I}),(m,p)=>(c(),_(e(o),{value:m.value},{default:g(()=>[dt([B.value,I.value,z.value,e(b).focusable.value],()=>F(e(Y),A({id:e(i)},m.$attrs,{ref:e(t),role:"option",tabindex:e(b).focusable.value?B.value?"0":"-1":-1,"aria-selected":I.value,as:m.as,"as-child":m.asChild,disabled:z.value?"":void 0,"data-disabled":z.value?"":void 0,"data-highlighted":B.value?"":void 0,"data-state":I.value?"checked":"unchecked",onClick:y,onKeydown:Se(we(y,["prevent"]),["space"]),onPointermove:p[0]||(p[0]=()=>{e(b).highlightedElement.value!==e(d)&&e(b).highlightOnHover.value&&e(b).changeHighlight(e(d),!1,!1)})}),{default:g(()=>[w(m.$slots,"default")]),_:3},16,["id","tabindex","aria-selected","as","as-child","disabled","data-disabled","data-highlighted","data-state","onKeydown"]),p,1)]),_:3},8,["value"]))}}),Aa=Fa,La=R({__name:"ListboxItemIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(n){const r=n;ae();const a=za();return(l,i)=>e(a).isSelected.value?(c(),_(e(Y),A({key:0,"aria-hidden":"true"},r),{default:g(()=>[w(l.$slots,"default")]),_:3},16)):H("v-if",!0)}}),Ta=La,Oa=R({__name:"ListboxVirtualizer",props:{options:{type:Array,required:!0},overscan:{type:Number,required:!1},estimateSize:{type:[Number,Function],required:!1},textContent:{type:Function,required:!1}},setup(n){const r=n,a=pt(),l=Oe(),i=Et(),{getItems:o}=Ne();l.isVirtual.value=!0;const t=V(()=>{const v=i.value;if(v){const y=window.getComputedStyle(v);return{start:Number.parseFloat(y.paddingBlockStart||y.paddingTop),end:Number.parseFloat(y.paddingBlockEnd||y.paddingBottom)}}else return{start:0,end:0}}),d=ma({get scrollPaddingStart(){return t.value.start},get scrollPaddingEnd(){return t.value.end},get count(){return r.options.length},get horizontal(){return l.orientation.value==="horizontal"},estimateSize(v){return typeof r.estimateSize=="function"?r.estimateSize(v):r.estimateSize??28},getScrollElement(){return i.value},overscan:r.overscan??12}),b=V(()=>d.value.getVirtualItems().map(v=>{const y=a.default({option:r.options[v.index],virtualizer:d.value,virtualItem:v})[0],m=y.type===se&&Array.isArray(y.children)?y.children.find(p=>typeof p.type!="symbol"):y;return{item:v,is:At(m,{key:`${v.key}`,"data-index":v.index,"aria-setsize":r.options.length,"aria-posinset":v.index+1,style:{position:"absolute",top:0,left:0,transform:`translateY(${v.start}px)`,overflowAnchor:"none"}})}}));l.virtualFocusHook.on(({event:v,scroll:y})=>{const m=r.options.findIndex(p=>Array.isArray(l.modelValue.value)?me(p,l.modelValue.value[0],l.by):me(p,l.modelValue.value,l.by));m!==-1?(v?.preventDefault(),d.value.scrollToIndex(m,{align:"start"}),requestAnimationFrame(()=>{const p=it(i.value);p&&(l.changeHighlight(p,y,y?void 0:!1),v&&p?.focus())})):y?l.highlightFirstItem():requestAnimationFrame(()=>{const p=o().find(C=>C.ref.dataset.disabled!=="")?.ref;p&&l.changeHighlight(p,!1,!1)})}),l.virtualHighlightHook.on(v=>{const y=r.options.findIndex(m=>me(m,v,l.by));d.value.scrollToIndex(y,{align:"start"}),requestAnimationFrame(()=>{const m=it(i.value);m&&l.changeHighlight(m)})});const B=st("",1e3),I=V(()=>{const v=y=>r.textContent?r.textContent(y):y?.toString().toLowerCase();return r.options.map((y,m)=>({index:m,textContent:v(y)}))});function z(v,y){if(!l.firstValue?.value||!l.multiple.value||!Array.isArray(l.modelValue.value))return;const p=o().filter(k=>k.ref.dataset.disabled!=="").find(k=>k.ref===l.highlightedElement.value)?.value;if(!p)return;let C=null;switch(y){case"prev":case"next":{C=$e(r.options,l.firstValue.value,p);break}case"first":{C=$e(r.options,l.firstValue.value,r.options?.[0]);break}case"last":{C=$e(r.options,l.firstValue.value,r.options.at(-1));break}}l.modelValue.value=C}return l.virtualKeydownHook.on(v=>{const y=v.altKey||v.ctrlKey||v.metaKey;if(v.key==="Tab"&&!y)return;let p=zt[v.key];if(y&&v.key==="a"&&l.multiple.value?(v.preventDefault(),l.modelValue.value=[...r.options],p="last"):v.shiftKey&&p&&z(v,p),["first","last"].includes(p)){v.preventDefault();const C=p==="first"?0:r.options.length-1;d.value.scrollToIndex(C),requestAnimationFrame(()=>{const k=o(),$=p==="first"?k[0]:k.at(-1);$&&l.changeHighlight($.ref)})}else if(!p&&!y){B.value+=v.key;const C=Number(ct()?.getAttribute("data-index")),k=I.value[C].textContent,$=I.value.map(E=>E.textContent??""),S=Bt($,B.value,k),L=I.value.find(E=>E.textContent===S);L&&(d.value.scrollToIndex(L.index,{align:"start"}),requestAnimationFrame(()=>{const E=i.value.querySelector(`[data-index="${L.index}"]`);E instanceof HTMLElement&&l.changeHighlight(E)}))}}),(v,y)=>(c(),W("div",{"data-reka-virtualizer":"",style:Ft({position:"relative",width:"100%",height:`${e(d).getTotalSize()}px`})},[(c(!0),W(se,null,De(b.value,({is:m,item:p})=>(c(),_(ft(m),{key:p.index}))),128))],4))}}),Va=Oa;const[le,Ka]=ke("ComboboxRoot");var Ra=R({__name:"ComboboxRoot",props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},resetSearchTermOnBlur:{type:Boolean,required:!1,default:!0},resetSearchTermOnSelect:{type:Boolean,required:!1,default:!0},openOnFocus:{type:Boolean,required:!1,default:!1},openOnClick:{type:Boolean,required:!1,default:!1},ignoreFilter:{type:Boolean,required:!1},resetModelValueOnClear:{type:Boolean,required:!1,default:!1},modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},highlightOnHover:{type:Boolean,required:!1,default:!0},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","highlight","update:open"],setup(n,{expose:r,emit:a}){const l=n,i=a,{primitiveElement:o,currentElement:t}=Te(),{multiple:d,disabled:b,ignoreFilter:B,resetSearchTermOnSelect:I,openOnFocus:z,openOnClick:v,dir:y,resetModelValueOnClear:m,highlightOnHover:p}=Ye(l),C=nt(y),k=Ae(l,"modelValue",i,{defaultValue:l.defaultValue??(d.value?[]:void 0),passive:l.modelValue===void 0,deep:!0}),$=Ae(l,"open",i,{defaultValue:l.defaultOpen,passive:l.open===void 0});async function S(P){$.value=P,re.value="",P?(await ue(),o.value?.highlightSelected(),E.value=!0,T.value?.focus()):(E.value=!1,setTimeout(()=>{!P&&l.resetSearchTermOnBlur&&L.trigger()},1))}const L=Pe(),E=G(!1),de=G(!1),T=G(),ie=G(),X=V(()=>o.value?.highlightedElement??void 0),oe=G(new Map),pe=G(new Map),{contains:be}=Ot({sensitivity:"base"}),re=G(""),ce=V(P=>{if(!re.value||l.ignoreFilter||de.value)return{count:oe.value.size,items:P?.items??new Map,groups:P?.groups??new Set(pe.value.keys())};let J=0;const Q=new Map,ne=new Set;for(const[ye,Z]of oe.value){const ee=be(Z,re.value);Q.set(ye,ee?1:0),ee&&J++}for(const[ye,Z]of pe.value)for(const ee of Z)if(Q.get(ee)>0){ne.add(ye);break}return{count:J,items:Q,groups:ne}}),N=Tt();return ge(()=>{N?.exposed&&(N.exposed.highlightItem=o.value?.highlightItem,N.exposed.highlightFirstItem=o.value?.highlightFirstItem,N.exposed.highlightSelected=o.value?.highlightSelected)}),r({filtered:ce,highlightedElement:X,highlightItem:o.value?.highlightItem,highlightFirstItem:o.value?.highlightFirstItem,highlightSelected:o.value?.highlightSelected}),Ka({modelValue:k,multiple:d,disabled:b,open:$,onOpenChange:S,contentId:"",isUserInputted:E,isVirtual:de,inputElement:T,highlightedElement:X,onInputElementChange:P=>T.value=P,triggerElement:ie,onTriggerElementChange:P=>ie.value=P,parentElement:t,resetSearchTermOnSelect:I,onResetSearchTerm:L.on,allItems:oe,allGroups:pe,filterSearch:re,filterState:ce,ignoreFilter:B,openOnFocus:z,openOnClick:v,resetModelValueOnClear:m}),(P,J)=>(c(),_(e(Lt),null,{default:g(()=>[F(e(_a),A({ref_key:"primitiveElement",ref:o},P.$attrs,{modelValue:e(k),"onUpdate:modelValue":J[0]||(J[0]=Q=>vt(k)?k.value=Q:null),style:{pointerEvents:e($)?"auto":void 0},as:P.as,"as-child":P.asChild,dir:e(C),multiple:e(d),name:P.name,required:P.required,disabled:e(b),"highlight-on-hover":e(p),by:l.by,onHighlight:J[1]||(J[1]=Q=>i("highlight",Q))}),{default:g(()=>[w(P.$slots,"default",{open:e($),modelValue:e(k)})]),_:3},16,["modelValue","style","as","as-child","dir","multiple","name","required","disabled","highlight-on-hover","by"])]),_:3}))}}),Pa=Ra,Da=R({__name:"ComboboxAnchor",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(n){const{forwardRef:r}=ae();return(a,l)=>(c(),_(e(Vt),{"as-child":"",reference:a.reference},{default:g(()=>[F(e(Y),A({ref:e(r),"as-child":a.asChild,as:a.as},a.$attrs),{default:g(()=>[w(a.$slots,"default")]),_:3},16,["as-child","as"])]),_:3},8,["reference"]))}}),$a=Da;const[Ma,Na]=ke("ComboboxContent");var Ha=R({__name:"ComboboxContentImpl",props:{position:{type:String,required:!1,default:"inline"},bodyLock:{type:Boolean,required:!1},hideWhenEmpty:{type:Boolean,required:!1},memoDependencies:{type:Array,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},dir:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside"],setup(n,{emit:r}){const a=n,l=r,{position:i}=Ye(a),o=le(),t=V(()=>o.ignoreFilter.value?o.allItems.value.size===0:o.filterState.value.count===0),{forwardRef:d,currentElement:b}=ae();Kt(a.bodyLock),Rt(),Pt(o.parentElement);const B=V(()=>a.position==="popper"?a:{}),I=Dt(B.value),z={boxSizing:"border-box","--reka-combobox-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-combobox-content-available-width":"var(--reka-popper-available-width)","--reka-combobox-content-available-height":"var(--reka-popper-available-height)","--reka-combobox-trigger-width":"var(--reka-popper-anchor-width)","--reka-combobox-trigger-height":"var(--reka-popper-anchor-height)"};Na({position:i});const v=G(!1);ge(()=>{o.inputElement.value&&(v.value=b.value.contains(o.inputElement.value),v.value&&o.inputElement.value.focus())}),He(()=>{const m=ct();v.value&&(!m||m===document.body)&&o.triggerElement.value?.focus()});function y(m){if(o.parentElement.value?.contains(m))return!0;const C=(m instanceof Element?m.closest("label"):null)?.control;return!!C&&!!o.parentElement.value?.contains(C)}return(m,p)=>(c(),_(e(Ca),{"as-child":""},{default:g(()=>[F(e(mt),{"as-child":"",onMountAutoFocus:p[5]||(p[5]=we(()=>{},["prevent"])),onUnmountAutoFocus:p[6]||(p[6]=we(()=>{},["prevent"]))},{default:g(()=>[F(e($t),{"as-child":"","disable-outside-pointer-events":m.disableOutsidePointerEvents,onDismiss:p[0]||(p[0]=C=>e(o).onOpenChange(!1)),onFocusOutside:p[1]||(p[1]=C=>{y(C.target)&&C.preventDefault(),l("focusOutside",C)}),onInteractOutside:p[2]||(p[2]=C=>l("interactOutside",C)),onEscapeKeyDown:p[3]||(p[3]=C=>l("escapeKeyDown",C)),onPointerDownOutside:p[4]||(p[4]=C=>{y(C.target)&&C.preventDefault(),l("pointerDownOutside",C)})},{default:g(()=>[(c(),_(ft(e(i)==="popper"?e(Mt):e(Y)),A({...m.$attrs,...e(I)},{id:e(o).contentId,ref:e(d),"memo-dependencies":e(i)==="popper"?[e(o).filterSearch.value,e(o).filterState.value]:void 0,"data-state":e(o).open.value?"open":"closed","data-empty":t.value?"":void 0,style:{display:a.hideWhenEmpty&&t.value?"none":"flex",flexDirection:"column",outline:"none",...e(i)==="popper"?z:{}}}),{default:g(()=>[w(m.$slots,"default")]),_:3},16,["id","memo-dependencies","data-state","data-empty","style"]))]),_:3},8,["disable-outside-pointer-events"])]),_:3})]),_:3}))}}),Ga=Ha,ja=R({__name:"ComboboxArrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(n){const r=n,a=le(),l=Ma();return ae(),(i,o)=>e(a).open.value&&e(l).position.value==="popper"?(c(),_(e(Nt),qe(A({key:0},r)),{default:g(()=>[w(i.$slots,"default")]),_:3},16)):H("v-if",!0)}}),Ua=ja,Wa=R({__name:"ComboboxCancel",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(n){const r=n;ae();const a=le();function l(){a.filterSearch.value="",a.inputElement.value&&(a.inputElement.value.value="",a.inputElement.value.focus()),a.resetModelValueOnClear?.value&&(a.modelValue.value=a.multiple.value?[]:null)}return(i,o)=>(c(),_(e(Y),A({type:i.as==="button"?"button":void 0},r,{tabindex:"-1",onClick:l}),{default:g(()=>[w(i.$slots,"default")]),_:3},16,["type"]))}}),Ya=Wa,Ja=R({__name:"ComboboxContent",props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},hideWhenEmpty:{type:Boolean,required:!1},memoDependencies:{type:Array,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},dir:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside"],setup(n,{emit:r}){const i=Ht(n,r),{forwardRef:o}=ae(),t=le();return t.contentId||=Ee(void 0,"reka-combobox-content"),(d,b)=>(c(),_(e(Gt),{present:d.forceMount||e(t).open.value},{default:g(()=>[F(Ga,A({...e(i),...d.$attrs},{ref:e(o)}),{default:g(()=>[w(d.$slots,"default")]),_:3},16)]),_:3},8,["present"]))}}),Qa=Ja,Xa=R({__name:"ComboboxEmpty",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(n){const r=n,a=le(),l=V(()=>a.ignoreFilter.value?a.allItems.value.size===0:a.filterState.value.count===0);return(i,o)=>l.value?(c(),_(e(Y),qe(A({key:0},r)),{default:g(()=>[w(i.$slots,"default",{},()=>[o[0]||(o[0]=Ce("No options"))])]),_:3},16)):H("v-if",!0)}}),Za=Xa;const[gt,el]=ke("ComboboxGroup");var tl=R({__name:"ComboboxGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(n){const r=n,a=Ee(void 0,"reka-combobox-group"),l=le(),i=V(()=>l.ignoreFilter.value?!0:l.filterSearch.value?l.filterState.value.groups.has(a):!0),o=el({id:a,labelId:""});return ge(()=>{l.allGroups.value.has(a)||l.allGroups.value.set(a,new Set)}),He(()=>{l.allGroups.value.delete(a)}),(t,d)=>(c(),_(e(ka),A({id:e(a),"aria-labelledby":e(o).labelId},r,{hidden:i.value?void 0:!0}),{default:g(()=>[w(t.$slots,"default")]),_:3},16,["id","aria-labelledby","hidden"]))}}),Ue=tl,al=R({__name:"ComboboxInput",props:{displayValue:{type:Function,required:!1},modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},emits:["update:modelValue"],setup(n,{emit:r}){const a=n,l=r,i=le(),o=Oe(),{primitiveElement:t,currentElement:d}=Te(),b=Ae(a,"modelValue",l,{passive:a.modelValue===void 0});ge(()=>{d.value&&i.onInputElementChange(d.value)});const{isComposing:B,handleCompositionStart:I,handleCompositionEnd:z}=ut(S=>{const L=S.target;L&&y(L.value)});function v(S){B.value||(S.preventDefault(),i.open.value||i.onOpenChange(!0))}function y(S){i.open.value?i.filterSearch.value=S:(i.onOpenChange(!0),ue(()=>{S&&(i.filterSearch.value=S,o.highlightFirstItem())}))}function m(S){B.value||y(S.target.value)}function p(){i.openOnFocus.value&&!i.open.value&&i.onOpenChange(!0)}function C(S){if(!i.open.value)return;const L=S.relatedTarget;if(!L)return;const E=i.parentElement.value?.contains(L),de=document.getElementById(i.contentId)?.contains(L);!E&&!de&&requestAnimationFrame(()=>{if(!i.open.value)return;const T=document.activeElement;!i.parentElement.value?.contains(T)&&!document.getElementById(i.contentId)?.contains(T)&&i.onOpenChange(!1)})}function k(){i.openOnClick.value&&!i.open.value&&i.onOpenChange(!0)}function $(){const S=i.modelValue.value;a.displayValue?b.value=a.displayValue(S):!i.multiple.value&&S&&!Array.isArray(S)&&typeof S!="object"?b.value=S.toString():b.value="",ue(()=>{b.value=b.value})}return i.onResetSearchTerm(()=>{$()}),Me(i.modelValue,async()=>{!i.isUserInputted.value&&i.resetSearchTermOnSelect.value&&$()},{immediate:!0,deep:!0}),Me(i.filterState,(S,L)=>{!i.isVirtual.value&&L.count===0&&o.highlightFirstItem()}),(S,L)=>(c(),_(e(Ia),{ref_key:"primitiveElement",ref:t,modelValue:e(b),"onUpdate:modelValue":L[0]||(L[0]=E=>vt(b)?b.value=E:null),as:S.as,"as-child":S.asChild,"auto-focus":S.autoFocus,disabled:S.disabled,"aria-expanded":e(i).open.value,"aria-controls":e(i).contentId,"aria-autocomplete":"list",role:"combobox",autocomplete:"off",onClick:k,onInput:m,onKeydown:Se(v,["down","up"]),onFocus:p,onBlur:C,onCompositionstart:e(I),onCompositionend:e(z)},{default:g(()=>[w(S.$slots,"default")]),_:3},8,["modelValue","as","as-child","auto-focus","disabled","aria-expanded","aria-controls","onCompositionstart","onCompositionend"]))}}),ll=al,il=R({__name:"ComboboxItem",props:{textValue:{type:String,required:!1},value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select"],setup(n,{emit:r}){const a=n,l=r,i=Ee(void 0,"reka-combobox-item"),o=le(),t=gt(null),{primitiveElement:d,currentElement:b}=Te();if(a.value==="")throw new Error("A <ComboboxItem /> must have a value prop that is not an empty string. This is because the Combobox value can be set to an empty string to clear the selection and show the placeholder.");const B=V(()=>{if(o.isVirtual.value||o.ignoreFilter.value||!o.filterSearch.value)return!0;{const I=o.filterState.value.items.get(i);return I===void 0?!0:I>0}});return ge(()=>{o.allItems.value.set(i,a.textValue||b.value.textContent||b.value.innerText);const I=t?.id;I&&(o.allGroups.value.has(I)?o.allGroups.value.get(I)?.add(i):o.allGroups.value.set(I,new Set([i])))}),He(()=>{o.allItems.value.delete(i)}),(I,z)=>B.value?dt([B.value,e(o).filterSearch.value,e(o).disabled.value,I.disabled,a.value,a.as,a.asChild,...Object.values(I.$attrs)],()=>(c(),_(e(Aa),A({key:0},a,{id:e(i),ref_key:"primitiveElement",ref:d,disabled:e(o).disabled.value||I.disabled,onSelect:z[0]||(z[0]=v=>{l("select",v),!v.defaultPrevented&&(!e(o).multiple.value&&!I.disabled&&!e(o).disabled.value?(v.preventDefault(),e(o).onOpenChange(!1),e(o).modelValue.value=a.value):e(o).multiple.value&&e(o).inputElement.value?.focus())})}),{default:g(()=>[w(I.$slots,"default",{},()=>[Ce(ve(I.value),1)])]),_:3},16,["id","disabled"])),z,1):H("v-if",!0)}}),ot=il,ol=R({__name:"ComboboxItemIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(n){const r=n;return(a,l)=>(c(),_(e(Ta),qe(Le(r)),{default:g(()=>[w(a.$slots,"default")]),_:3},16))}}),rl=ol,nl=R({__name:"ComboboxLabel",props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(n){const r=n;ae();const a=gt({id:"",labelId:""});return a.labelId||=Ee(void 0,"reka-combobox-group-label"),(l,i)=>(c(),_(e(Y),A(r,{id:e(a).labelId}),{default:g(()=>[w(l.$slots,"default")]),_:3},16,["id"]))}}),sl=nl,ul=R({__name:"ComboboxPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(n){const r=n;return(a,l)=>(c(),_(e(jt),qe(Le(r)),{default:g(()=>[w(a.$slots,"default")]),_:3},16))}}),dl=ul,pl=R({__name:"ComboboxSeparator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(n){const r=n;return ae(),(a,l)=>(c(),_(e(Y),A(r,{"aria-hidden":"true"}),{default:g(()=>[w(a.$slots,"default")]),_:3},16))}}),cl=pl,fl=R({__name:"ComboboxTrigger",props:{disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(n){const r=n,{forwardRef:a,currentElement:l}=ae(),i=le(),o=V(()=>r.disabled||i.disabled.value||!1);return ge(()=>{l.value&&i.onTriggerElementChange(l.value)}),(t,d)=>(c(),_(e(Y),A(r,{ref:e(a),type:t.as==="button"?"button":void 0,tabindex:"-1","aria-label":"Show popup","aria-haspopup":"listbox","aria-expanded":e(i).open.value,"aria-controls":e(i).contentId,"data-state":e(i).open.value?"open":"closed",disabled:o.value,"data-disabled":o.value?"":void 0,"aria-disabled":o.value??void 0,onClick:d[0]||(d[0]=b=>e(i).onOpenChange(!e(i).open.value))}),{default:g(()=>[w(t.$slots,"default")]),_:3},16,["type","aria-expanded","aria-controls","data-state","disabled","data-disabled","aria-disabled"]))}}),vl=fl,ml=R({__name:"ComboboxVirtualizer",props:{options:{type:Array,required:!0},overscan:{type:Number,required:!1},estimateSize:{type:[Number,Function],required:!1},textContent:{type:Function,required:!1}},setup(n){const r=n,a=le();return a.isVirtual.value=!0,(l,i)=>(c(),_(Va,qe(Le(r)),{default:g(o=>[w(l.$slots,"default",qe(Le(o)))]),_:3},16))}}),gl=ml;function bl(n,r){if(typeof n!="object"||n===null)return!1;const a=xe(n,r);return a!=null&&a!==""}function rt(n,r){return r?{xs:44,sm:48,md:52,lg:56,xl:60}[n]:{xs:24,sm:28,md:32,lg:36,xl:40}[n]}function yl(n,r,a,l){const i=rt(r,!0),o=rt(r,!1);return l?()=>i:a?t=>bl(n[t],a)?i:o:()=>o}const hl={slots:{base:["relative group rounded-md inline-flex items-center disabled:cursor-not-allowed disabled:opacity-75","transition-colors"],leading:"absolute inset-y-0 start-0 flex items-center",leadingIcon:"shrink-0 text-dimmed",leadingAvatar:"shrink-0",leadingAvatarSize:"",trailing:"absolute inset-y-0 end-0 flex items-center",trailingIcon:"shrink-0 text-dimmed",value:"truncate pointer-events-none",placeholder:"truncate text-dimmed",arrow:"fill-bg stroke-default",content:["max-h-[min(15rem,var(--reka-select-content-available-height,15rem))] w-(--reka-select-trigger-width) bg-default shadow-lg rounded-md ring ring-default overflow-hidden origin-(--reka-select-content-transform-origin) pointer-events-auto flex flex-col","max-h-[min(15rem,var(--reka-combobox-content-available-height,15rem))] origin-(--reka-combobox-content-transform-origin) w-(--reka-combobox-trigger-width)"],viewport:"relative scroll-py-1 overflow-y-auto flex-1",group:"p-1 isolate",empty:"text-center text-muted",label:"font-semibold text-highlighted",separator:"-mx-1 my-1 h-px bg-border",item:["group relative w-full flex items-start select-none outline-none before:absolute before:z-[-1] before:inset-px before:rounded-md data-disabled:cursor-not-allowed data-disabled:opacity-75 text-default data-highlighted:not-data-disabled:text-highlighted data-highlighted:not-data-disabled:before:bg-elevated/50","transition-colors before:transition-colors"],itemLeadingIcon:["shrink-0 text-dimmed group-data-highlighted:not-group-data-disabled:text-default","transition-colors"],itemLeadingAvatar:"shrink-0",itemLeadingAvatarSize:"",itemLeadingChip:"shrink-0",itemLeadingChipSize:"",itemTrailing:"ms-auto inline-flex gap-1.5 items-center",itemTrailingIcon:"shrink-0",itemWrapper:"flex-1 flex flex-col min-w-0",itemLabel:"truncate",itemDescription:"truncate text-muted",input:"border-b border-default",focusScope:"flex flex-col min-h-0",trailingClear:"p-0"},variants:{fieldGroup:{horizontal:"not-only:first:rounded-e-none not-only:last:rounded-s-none not-last:not-first:rounded-none focus-visible:z-[1]",vertical:"not-only:first:rounded-b-none not-only:last:rounded-t-none not-last:not-first:rounded-none focus-visible:z-[1]"},size:{xs:{base:"px-2 py-1 text-xs gap-1",leading:"ps-2",trailing:"pe-2",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",label:"p-1 text-[10px]/3 gap-1",item:"p-1 text-xs gap-1",itemLeadingIcon:"size-4",itemLeadingAvatarSize:"3xs",itemLeadingChip:"size-4",itemLeadingChipSize:"sm",itemTrailingIcon:"size-4",empty:"p-2 text-xs"},sm:{base:"px-2.5 py-1.5 text-xs gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4",label:"p-1.5 text-[10px]/3 gap-1.5",item:"p-1.5 text-xs gap-1.5",itemLeadingIcon:"size-4",itemLeadingAvatarSize:"3xs",itemLeadingChip:"size-4",itemLeadingChipSize:"sm",itemTrailingIcon:"size-4",empty:"p-2.5 text-xs"},md:{base:"px-2.5 py-1.5 text-sm gap-1.5",leading:"ps-2.5",trailing:"pe-2.5",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",label:"p-1.5 text-xs gap-1.5",item:"p-1.5 text-sm gap-1.5",itemLeadingIcon:"size-5",itemLeadingAvatarSize:"2xs",itemLeadingChip:"size-5",itemLeadingChipSize:"md",itemTrailingIcon:"size-5",empty:"p-2.5 text-sm"},lg:{base:"px-3 py-2 text-sm gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5",label:"p-2 text-xs gap-2",item:"p-2 text-sm gap-2",itemLeadingIcon:"size-5",itemLeadingAvatarSize:"2xs",itemLeadingChip:"size-5",itemLeadingChipSize:"md",itemTrailingIcon:"size-5",empty:"p-3 text-sm"},xl:{base:"px-3 py-2 text-base gap-2",leading:"ps-3",trailing:"pe-3",leadingIcon:"size-6",leadingAvatarSize:"xs",trailingIcon:"size-6",label:"p-2 text-sm gap-2",item:"p-2 text-base gap-2",itemLeadingIcon:"size-6",itemLeadingAvatarSize:"xs",itemLeadingChip:"size-6",itemLeadingChipSize:"lg",itemTrailingIcon:"size-6",empty:"p-3 text-base"}},variant:{outline:"text-highlighted bg-default ring ring-inset ring-accented hover:bg-elevated disabled:bg-default",soft:"text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50",subtle:"text-highlighted bg-elevated ring ring-inset ring-accented hover:bg-accented/75 disabled:bg-elevated",ghost:"text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent",none:"text-highlighted bg-transparent focus:outline-none"},color:{primary:"",secondary:"",success:"",info:"",warning:"",error:"",neutral:""},leading:{true:""},trailing:{true:""},loading:{true:""},highlight:{true:""},fixed:{false:""},type:{file:"file:me-1.5 file:font-medium file:text-muted file:outline-none"},position:{popper:{content:"data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]"},"item-aligned":{content:""}},multiple:{true:""},virtualize:{true:{viewport:"p-1 isolate"},false:{viewport:"divide-y divide-default"}}},compoundVariants:[{color:"primary",variant:["outline","subtle"],class:"outline-primary/25 focus-visible:outline-3 focus-visible:ring-primary"},{color:"secondary",variant:["outline","subtle"],class:"outline-secondary/25 focus-visible:outline-3 focus-visible:ring-secondary"},{color:"success",variant:["outline","subtle"],class:"outline-success/25 focus-visible:outline-3 focus-visible:ring-success"},{color:"info",variant:["outline","subtle"],class:"outline-info/25 focus-visible:outline-3 focus-visible:ring-info"},{color:"warning",variant:["outline","subtle"],class:"outline-warning/25 focus-visible:outline-3 focus-visible:ring-warning"},{color:"error",variant:["outline","subtle"],class:"outline-error/25 focus-visible:outline-3 focus-visible:ring-error"},{color:"primary",variant:["soft","ghost"],class:"outline-primary/25 focus-visible:outline-3"},{color:"secondary",variant:["soft","ghost"],class:"outline-secondary/25 focus-visible:outline-3"},{color:"success",variant:["soft","ghost"],class:"outline-success/25 focus-visible:outline-3"},{color:"info",variant:["soft","ghost"],class:"outline-info/25 focus-visible:outline-3"},{color:"warning",variant:["soft","ghost"],class:"outline-warning/25 focus-visible:outline-3"},{color:"error",variant:["soft","ghost"],class:"outline-error/25 focus-visible:outline-3"},{color:"primary",highlight:!0,class:"ring ring-inset ring-primary"},{color:"secondary",highlight:!0,class:"ring ring-inset ring-secondary"},{color:"success",highlight:!0,class:"ring ring-inset ring-success"},{color:"info",highlight:!0,class:"ring ring-inset ring-info"},{color:"warning",highlight:!0,class:"ring ring-inset ring-warning"},{color:"error",highlight:!0,class:"ring ring-inset ring-error"},{color:"neutral",variant:["outline","subtle"],class:"outline-inverted/25 focus-visible:outline-3 focus-visible:ring-inverted"},{color:"neutral",variant:["soft","ghost"],class:"outline-inverted/25 focus-visible:outline-3"},{color:"neutral",highlight:!0,class:"ring ring-inset ring-inverted"},{leading:!0,size:"xs",class:"ps-7"},{leading:!0,size:"sm",class:"ps-8"},{leading:!0,size:"md",class:"ps-9"},{leading:!0,size:"lg",class:"ps-10"},{leading:!0,size:"xl",class:"ps-11"},{trailing:!0,size:"xs",class:"pe-7"},{trailing:!0,size:"sm",class:"pe-8"},{trailing:!0,size:"md",class:"pe-9"},{trailing:!0,size:"lg",class:"pe-10"},{trailing:!0,size:"xl",class:"pe-11"},{loading:!0,leading:!0,class:{leadingIcon:"animate-spin"}},{loading:!0,leading:!1,trailing:!0,class:{trailingIcon:"animate-spin"}},{fixed:!1,size:"xs",class:"md:text-xs"},{fixed:!1,size:"sm",class:"md:text-xs"},{fixed:!1,size:"md",class:"md:text-sm"},{fixed:!1,size:"lg",class:"md:text-sm"}],defaultVariants:{size:"md",color:"primary",variant:"outline",position:"popper"}},Sl=Object.assign({inheritAttrs:!1},{__name:"USelectMenu",props:at({id:{type:String,required:!1},placeholder:{type:String,required:!1},searchInput:{type:[Boolean,Object],required:!1,default:!0},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},required:{type:Boolean,required:!1},trailingIcon:{type:null,required:!1},selectedIcon:{type:null,required:!1},clear:{type:[Boolean,Object],required:!1},clearIcon:{type:null,required:!1},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},virtualize:{type:[Boolean,Object],required:!1,default:!1},valueKey:{type:null,required:!1},labelKey:{type:null,required:!1,default:"label"},descriptionKey:{type:null,required:!1,default:"description"},items:{type:null,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1},modelModifiers:{type:null,required:!1},multiple:{type:Boolean,required:!1},highlight:{type:Boolean,required:!1},createItem:{type:[Boolean,String,Object],required:!1},filterFields:{type:Array,required:!1},ignoreFilter:{type:Boolean,required:!1},autofocus:{type:Boolean,required:!1},autofocusDelay:{type:Number,required:!1,default:0},class:{type:null,required:!1},ui:{type:Object,required:!1},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},resetSearchTermOnBlur:{type:Boolean,required:!1,default:!0},resetSearchTermOnSelect:{type:Boolean,required:!1,default:!0},resetModelValueOnClear:{type:Boolean,required:!1,default:!0},highlightOnHover:{type:Boolean,required:!1},by:{type:[String,Function],required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1}},{searchTerm:{type:String,default:""},searchTermModifiers:{}}),emits:at(["change","blur","focus","create","clear","highlight","update:modelValue","update:open"],["update:searchTerm"]),setup(n,{expose:r,emit:a}){const l=n,i=a,o=pt(),t=Ut("selectMenu",l),d=Wt(n,"searchTerm",{type:String,default:""}),{t:b}=Yt(),B=Jt(),{filterGroups:I}=ca(),z=Qt(Xt(t,"modelValue","defaultValue","open","defaultOpen","required","multiple","resetSearchTermOnBlur","resetSearchTermOnSelect","resetModelValueOnClear","highlightOnHover","by"),i),v=Zt(fe(()=>t.portal)),y=fe(()=>Fe(t.content,{side:"bottom",sideOffset:8,collisionPadding:8,position:"popper"})),m=fe(()=>Fe(t.arrow,{rounded:!0})),p=V(()=>typeof t.clear=="object"?t.clear:{}),C=fe(()=>t.virtualize?Fe(typeof t.virtualize=="boolean"?{}:t.virtualize,{estimateSize:yl(x.value,ne.value||"md",t.descriptionKey,!!o["item-description"])}):!1),k=fe(()=>Fe(t.searchInput,{placeholder:b("selectMenu.search"),variant:"none"})),{emitFormBlur:$,emitFormFocus:S,emitFormInput:L,emitFormChange:E,size:de,color:T,id:ie,name:X,highlight:oe,disabled:pe,ariaAttrs:be}=ea(l),{orientation:re,size:ce}=ta(l),{isLeading:N,isTrailing:P,leadingIconName:J,trailingIconName:Q}=aa(fe(()=>Fe(t,{trailingIcon:B.ui.icons.chevronDown}))),ne=V(()=>ce.value||de.value),[ye,Z]=et(),[ee,Ve]=et({props:{item:{type:[Object,String,Number,Boolean],required:!0},index:{type:Number,required:!1}}}),h=V(()=>ua({extend:hl,...B.ui?.selectMenu||{}})({color:T.value??t.color,variant:t.variant,size:ne?.value??t.size,loading:t.loading,highlight:oe.value??t.highlight,leading:N.value||!!t.avatar||!!o.leading,trailing:P.value||!!o.trailing,fieldGroup:re.value,virtualize:!!t.virtualize,multiple:t.multiple}));function Ge(f){if(t.multiple&&Array.isArray(f)){const D=f.map(s=>lt(ze.value,s,{labelKey:t.labelKey,valueKey:t.valueKey,by:t.by})).filter(s=>s!=null&&s!=="");return D.length>0?D.join(", "):void 0}return lt(ze.value,f,{labelKey:t.labelKey,valueKey:t.valueKey,by:t.by})}const Ie=V(()=>t.items?.length?pa(t.items)?t.items:[t.items]:[]),ze=V(()=>Ie.value.flatMap(f=>f)),u=V(()=>{if(t.ignoreFilter||!d.value)return Ie.value;const f=Array.isArray(t.filterFields)?t.filterFields:[t.labelKey];return I(Ie.value,d.value,{fields:f,isStructural:D=>M(D)&&!!D.type&&["label","separator"].includes(D.type)})}),x=V(()=>u.value.flatMap(f=>f)),q=V(()=>{if(!t.createItem||!d.value)return!1;const f=t.valueKey?{[t.valueKey]:d.value}:d.value;return typeof t.createItem=="object"&&t.createItem.when==="always"||t.createItem==="always"?!x.value.find(D=>da(D,f,t.by??t.valueKey)):!x.value.length}),O=V(()=>typeof t.createItem=="object"?t.createItem.position:"bottom"),j=je("triggerRef");function he(){t.autofocus&&j.value?.$el?.focus({focusVisible:!0})}ge(()=>{setTimeout(()=>{he()},t.autofocusDelay)});function _e(f){if(na(t.modelValue)===f)return;t.modelModifiers?.trim&&(typeof f=="string"||f===null||f===void 0)&&(f=f?.trim()??null),t.modelModifiers?.number&&(f=sa(f)),t.modelModifiers?.nullable&&(f??=null),t.modelModifiers?.optional&&!t.modelModifiers?.nullable&&f!==null&&(f??=void 0);const D=new Event("change",{target:{value:f}});i("change",D),E(),L(),t.resetSearchTermOnSelect&&(d.value="")}const Je=G(!1);function bt(f){Je.value=f;let D;if(f){const s=new FocusEvent("focus");i("focus",s),S(),clearTimeout(D)}else{const s=new FocusEvent("blur");i("blur",s),$(),t.resetSearchTermOnBlur&&(D=setTimeout(()=>{d.value=""},100))}}function yt(f){f.preventDefault(),f.stopPropagation(),i("create",d.value)}function ht(f,D){if(M(D)){if(D.disabled){f.preventDefault();return}D.onSelect?.(f)}}function M(f){return typeof f=="object"&&f!==null}function _t(f){return t.multiple&&Array.isArray(f)?f.length===0:f==null||f===""}function xt(){i("clear")}const Qe=je("viewportRef"),Xe=je("comboboxRootRef");return Me(()=>t.items,async()=>{!Je.value||!t.createItem||(await ue(),Xe.value?.highlightFirstItem?.())},{flush:"post"}),r({triggerRef:fe(()=>j.value?.$el),viewportRef:fe(()=>Qe.value)}),(f,D)=>(c(),W(se,null,[F(e(ye),null,{default:g(()=>[F(e(ot),{"data-slot":"item",class:K(h.value.item({class:e(t).ui?.item})),value:d.value,onSelect:yt},{default:g(()=>[Be("span",{"data-slot":"itemLabel",class:K(h.value.itemLabel({class:e(t).ui?.itemLabel}))},[w(f.$slots,"create-item-label",{item:d.value},()=>[Ce(ve(e(b)("selectMenu.create",{label:d.value})),1)])],2)]),_:3},8,["class","value"])]),_:3}),F(e(ee),null,{default:g(({item:s,index:te})=>[M(s)&&s.type==="label"?(c(),_(e(sl),{key:0,"data-slot":"label",class:K(h.value.label({class:[e(t).ui?.label,s.ui?.label,s.class]}))},{default:g(()=>[Ce(ve(e(xe)(s,e(t).labelKey)),1)]),_:2},1032,["class"])):M(s)&&s.type==="separator"?(c(),_(e(cl),{key:1,"data-slot":"separator",class:K(h.value.separator({class:[e(t).ui?.separator,s.ui?.separator,s.class]}))},null,8,["class"])):(c(),_(e(ot),{key:2,"data-slot":"item",class:K(h.value.item({class:[e(t).ui?.item,M(s)&&s.ui?.item,M(s)&&s.class]})),disabled:M(s)&&s.disabled,value:e(t).valueKey&&M(s)?e(xe)(s,e(t).valueKey):s,onSelect:U=>ht(U,s)},{default:g(()=>[w(f.$slots,"item",{item:s,index:te,ui:h.value},()=>[w(f.$slots,"item-leading",{item:s,index:te,ui:h.value},()=>[M(s)&&s.icon?(c(),_(Re,{key:0,name:s.icon,"data-slot":"itemLeadingIcon",class:K(h.value.itemLeadingIcon({class:[e(t).ui?.itemLeadingIcon,s.ui?.itemLeadingIcon]}))},null,8,["name","class"])):M(s)&&s.avatar?(c(),_(tt,A({key:1,size:s.ui?.itemLeadingAvatarSize||e(t).ui?.itemLeadingAvatarSize||h.value.itemLeadingAvatarSize()},s.avatar,{"data-slot":"itemLeadingAvatar",class:h.value.itemLeadingAvatar({class:[e(t).ui?.itemLeadingAvatar,s.ui?.itemLeadingAvatar]})}),null,16,["size","class"])):M(s)&&s.chip?(c(),_(la,A({key:2,size:s.ui?.itemLeadingChipSize||e(t).ui?.itemLeadingChipSize||h.value.itemLeadingChipSize(),inset:"",standalone:""},s.chip,{"data-slot":"itemLeadingChip",class:h.value.itemLeadingChip({class:[e(t).ui?.itemLeadingChip,s.ui?.itemLeadingChip]})}),null,16,["size","class"])):H("",!0)]),Be("span",{"data-slot":"itemWrapper",class:K(h.value.itemWrapper({class:[e(t).ui?.itemWrapper,M(s)&&s.ui?.itemWrapper]}))},[Be("span",{"data-slot":"itemLabel",class:K(h.value.itemLabel({class:[e(t).ui?.itemLabel,M(s)&&s.ui?.itemLabel]}))},[w(f.$slots,"item-label",{item:s,index:te},()=>[Ce(ve(M(s)?e(xe)(s,e(t).labelKey):s),1)])],2),M(s)&&(e(xe)(s,e(t).descriptionKey)||o["item-description"])?(c(),W("span",{key:0,"data-slot":"itemDescription",class:K(h.value.itemDescription({class:[e(t).ui?.itemDescription,M(s)&&s.ui?.itemDescription]}))},[w(f.$slots,"item-description",{item:s,index:te},()=>[Ce(ve(e(xe)(s,e(t).descriptionKey)),1)])],2)):H("",!0)],2),Be("span",{"data-slot":"itemTrailing",class:K(h.value.itemTrailing({class:[e(t).ui?.itemTrailing,M(s)&&s.ui?.itemTrailing]}))},[w(f.$slots,"item-trailing",{item:s,index:te,ui:h.value}),F(e(rl),{"as-child":""},{default:g(()=>[F(Re,{name:e(t).selectedIcon||e(B).ui.icons.check,"data-slot":"itemTrailingIcon",class:K(h.value.itemTrailingIcon({class:[e(t).ui?.itemTrailingIcon,M(s)&&s.ui?.itemTrailingIcon]}))},null,8,["name","class"])]),_:2},1024)],2)])]),_:2},1032,["class","disabled","value","onSelect"]))]),_:3}),F(e(Pa),A({ref_key:"comboboxRootRef",ref:Xe},e(z),{"ignore-filter":"","as-child":"",name:e(X),disabled:e(pe),"onUpdate:modelValue":_e,"onUpdate:open":bt}),{default:g(({modelValue:s,open:te})=>[F(e($a),{"as-child":""},{default:g(()=>[F(e(vl),A({id:e(ie),ref_key:"triggerRef",ref:j,"data-slot":"base",class:h.value.base({class:[e(t).ui?.base,e(t).class]}),tabindex:"0"},{...f.$attrs,...e(be)}),{default:g(()=>[e(N)||e(t).avatar||o.leading?(c(),W("span",{key:0,"data-slot":"leading",class:K(h.value.leading({class:e(t).ui?.leading}))},[w(f.$slots,"leading",{modelValue:s,open:te,ui:h.value},()=>[e(N)&&e(J)?(c(),_(Re,{key:0,name:e(J),"data-slot":"leadingIcon",class:K(h.value.leadingIcon({class:e(t).ui?.leadingIcon}))},null,8,["name","class"])):e(t).avatar?(c(),_(tt,A({key:1,size:e(t).ui?.itemLeadingAvatarSize||h.value.itemLeadingAvatarSize()},e(t).avatar,{"data-slot":"itemLeadingAvatar",class:h.value.itemLeadingAvatar({class:e(t).ui?.itemLeadingAvatar})}),null,16,["size","class"])):H("",!0)])],2)):H("",!0),w(f.$slots,"default",{modelValue:s,open:te,ui:h.value},()=>[(c(!0),W(se,null,De([Ge(s)],U=>(c(),W(se,{key:U},[U!=null?(c(),W("span",{key:0,"data-slot":"value",class:K(h.value.value({class:e(t).ui?.value}))},ve(U),3)):(c(),W("span",{key:1,"data-slot":"placeholder",class:K(h.value.placeholder({class:e(t).ui?.placeholder}))},ve(e(t).placeholder??" "),3))],64))),128))]),e(P)||o.trailing||e(t).clear?(c(),W("span",{key:1,"data-slot":"trailing",class:K(h.value.trailing({class:e(t).ui?.trailing}))},[w(f.$slots,"trailing",{modelValue:s,open:te,ui:h.value},()=>[e(t).clear&&!_t(s)?(c(),_(e(Ya),{key:0,"as-child":""},{default:g(()=>[F(ia,A({as:"span",icon:e(t).clearIcon||e(B).ui.icons.close,size:ne.value,variant:"link",color:"neutral",tabindex:"-1"},p.value,{"data-slot":"trailingClear",class:h.value.trailingClear({class:e(t).ui?.trailingClear}),onClick:we(xt,["stop"])}),null,16,["icon","size","class"])]),_:1})):e(Q)?(c(),_(Re,{key:1,name:e(Q),"data-slot":"trailingIcon",class:K(h.value.trailingIcon({class:e(t).ui?.trailingIcon}))},null,8,["name","class"])):H("",!0)])],2)):H("",!0)]),_:2},1040,["id","class"])]),_:2},1024),F(e(dl),qe(Le(e(v))),{default:g(()=>[F(e(oa),null,{default:g(()=>[F(e(Qa),A({"data-slot":"content",class:h.value.content({class:e(t).ui?.content})},y.value),{default:g(()=>[F(e(mt),{trapped:"","data-slot":"focusScope",class:K(h.value.focusScope({class:e(t).ui?.focusScope}))},{default:g(()=>[w(f.$slots,"content-top"),e(t).searchInput?(c(),_(e(ll),{key:0,modelValue:d.value,"onUpdate:modelValue":D[1]||(D[1]=U=>d.value=U),"display-value":()=>d.value,"as-child":""},{default:g(()=>[F(ra,A({autofocus:"",autocomplete:"off",size:ne.value},k.value,{"model-modifiers":{trim:e(t).modelModifiers?.trim},"data-slot":"input",class:h.value.input({class:e(t).ui?.input}),onChange:D[0]||(D[0]=we(()=>{},["stop"]))}),null,16,["size","model-modifiers","class"])]),_:1},8,["modelValue","display-value"])):H("",!0),F(e(Za),{"data-slot":"empty",class:K(h.value.empty({class:e(t).ui?.empty}))},{default:g(()=>[w(f.$slots,"empty",{searchTerm:d.value},()=>[Ce(ve(d.value?e(b)("selectMenu.noMatch",{searchTerm:d.value}):e(b)("selectMenu.noData")),1)])]),_:3},8,["class"]),Be("div",{ref_key:"viewportRef",ref:Qe,role:"presentation","data-slot":"viewport",class:K(h.value.viewport({class:e(t).ui?.viewport}))},[e(t).virtualize?(c(),W(se,{key:0},[q.value&&O.value==="top"?(c(),_(e(Z),{key:0})):H("",!0),F(e(gl),A({options:x.value,"text-content":U=>M(U)?e(xe)(U,e(t).labelKey):String(U)},C.value),{default:g(({option:U,virtualItem:Ke})=>[F(e(Ve),{item:U,index:Ke.index},null,8,["item","index"])]),_:1},16,["options","text-content"]),q.value&&O.value==="bottom"?(c(),_(e(Z),{key:1})):H("",!0)],64)):(c(),W(se,{key:1},[q.value&&O.value==="top"?(c(),_(e(Ue),{key:0,"data-slot":"group",class:K(h.value.group({class:e(t).ui?.group}))},{default:g(()=>[F(e(Z))]),_:1},8,["class"])):H("",!0),(c(!0),W(se,null,De(u.value,(U,Ke)=>(c(),_(e(Ue),{key:`group-${Ke}`,"data-slot":"group",class:K(h.value.group({class:e(t).ui?.group}))},{default:g(()=>[(c(!0),W(se,null,De(U,(Ct,Ze)=>(c(),_(e(Ve),{key:`group-${Ke}-${Ze}`,item:Ct,index:Ze},null,8,["item","index"]))),128))]),_:2},1032,["class"]))),128)),q.value&&O.value==="bottom"?(c(),_(e(Ue),{key:1,"data-slot":"group",class:K(h.value.group({class:e(t).ui?.group}))},{default:g(()=>[F(e(Z))]),_:1},8,["class"])):H("",!0)],64))],2),w(f.$slots,"content-bottom")]),_:3},8,["class"]),e(t).arrow?(c(),_(e(Ua),A({key:0},m.value,{"data-slot":"arrow",class:h.value.arrow({class:e(t).ui?.arrow})}),null,16,["class"])):H("",!0)]),_:3},16,["class"])]),_:3})]),_:3},16)]),_:3},16,["name","disabled"])],64))}});export{Aa as L,Sl as _,Ta as a,Ia as b,Ca as c,Va as d,ka as e,_a as f,yl as g,Il as i};
@@ -1,9 +0,0 @@
1
- import{_ as Yt}from"./DTrPCv7R.js";import{_ as es}from"./B3G-TIoP.js";import{d as re,o as s,f as _,g as u,i as o,j as r,t as c,c as a,F as U,y as ee,k as e,s as pe,m as f,v as i,D as pt,q as X,p as ue,h as C,G as Pe,_ as Ie,b as ts,B as yt,l as ge,r as A,ab as $e,J as ve,ac as ss,A as Ee,R as Ce,u as ns,a as as,w as mt,e as os,ad as rs,N as is}from"./CNu3kken.js";import{d as ls,e as cs,h as Oe,a as us,b as ds,c as ms,_ as fs,n as gs,o as ps,p as ys,u as hs,f as xs,i as vs,j as _s,k as ks,l as bs,m as ws}from"./CYhm2FBS.js";import{_ as $s}from"./DylyATWU.js";import{_ as Cs}from"./pZbe82l5.js";import{_ as Ts,a as Ss}from"./2yLW7WU0.js";import{_ as Is,a as Rs,b as js,c as Ls}from"./dUPMBJ4f.js";import{_ as Re}from"./CdEzDaDI.js";import{_ as zs}from"./5SkLJHl8.js";import{_ as Ms}from"./7_9fts7T.js";import{_ as ht}from"./Ce_j5NtN.js";import{_ as xt}from"./jR2xm3_t.js";import{_ as vt}from"./DAhv9aNg.js";import{_ as _t,a as kt}from"./CfhOanaF.js";import{_ as Ns}from"./CvVbKrcH.js";import{_ as Ds}from"./B_JSV0yG.js";import{_ as Ps,d as As,e as Us,f as Bs,g as Fs,h as Vs,a as bt,i as Te,b as De,c as Es}from"./9_aJhhcm.js";import{f as Se,m as Os,c as Hs,e as Ks,n as wt,o as He,q as Ke,a as Ws,j as Gs,r as ft}from"./DeewM3Wg.js";import{_ as $t}from"./FJTsZ5Aa.js";import{_ as ye}from"./Ce47NgZw.js";import{_ as Js}from"./B0tmRAhY.js";import{u as qs}from"./CLWMETf9.js";import{_ as We}from"./DNqm5cWU.js";import{_ as Ge}from"./HIGGZ_c-.js";import{_ as Ct}from"./C2_7XZo0.js";import{f as we}from"./D-c8ZSws.js";import{_ as Qs}from"./DJzFYrBt.js";import{_ as Zs}from"./Bb2mDqKr.js";import{_ as Xs}from"./D3SJGdl4.js";import{_ as Ys}from"./DZECGgZm.js";import{_ as en}from"./oSLbl-p0.js";import{_ as tn}from"./CC8wk-N0.js";import{b as sn}from"./D7t0Dn3h.js";import{a as nn,u as gt}from"./DprkT7rM.js";import"./BZFiz2UB.js";import"./BjOFxi54.js";import"./jxc14CqP.js";import"./DFfqRQxk.js";import"./Ya8ZzWuY.js";import"./roaTZkYi.js";import"./C9I1Dp3S.js";import"./BVyjw9Bi.js";import"./CF_eDZHu.js";import"./DZ-KbUZi.js";import"./DYjxDsYC.js";import"./BZOykMLD.js";import"./B3AG2m76.js";import"./D7fxV-UA.js";import"./BjaRappk.js";import"./Bq4_kqIp.js";import"./CmTzxoQt.js";import"./CGDPUNcO.js";import"./Bag08cIY.js";import"./D7W_4Sqc.js";import"./LTMoFvEY.js";const an={class:"text-sm font-semibold truncate min-w-0"},on={class:"flex items-center gap-3 ml-auto max-sm:hidden"},rn={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},ln={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},cn={class:"text-gray-700 dark:text-gray-300"},un={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},dn={class:"text-gray-700 dark:text-gray-300"},mn={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},fn={class:"text-gray-700 dark:text-gray-300"},gn={key:0,class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},pn={class:"text-gray-700 dark:text-gray-300"},yn={class:"@container"},hn={class:"space-y-3"},xn={class:"flex items-start gap-2.5 pr-8"},vn={class:"min-w-0 flex-1"},_n={class:"flex items-center gap-2 flex-wrap"},kn={class:"text-base font-bold truncate max-w-full"},bn={class:"text-xs text-gray-500 mt-0.5 flex items-center gap-x-2 gap-y-0.5 flex-wrap"},wn=["title"],$n={key:1},Cn={key:0,class:"flex items-center gap-2 text-sm"},Tn={class:"text-gray-700 dark:text-gray-300 truncate"},Sn={key:0,class:"text-gray-500 shrink-0"},In={key:1,class:"flex items-center gap-1.5 text-sm"},Rn={key:0,class:"font-medium"},jn=["title"],Ln={key:2,class:"text-muted"},zn=["title"],Mn={key:0,class:"rounded-full border border-default px-2 py-0.5 text-xs bg-elevated/60"},Nn={key:1},Dn=["href"],Pn={key:1},An={class:"text-muted"},Un={key:0,class:"tabular-nums text-muted"},Bn={key:0,class:"text-dimmed"},Fn=re({__name:"TestCaseSummary",props:{testCase:{},scmInfo:{},ciInfo:{},browser:{},environment:{},stepsCount:{},historicalTiming:{},stableLinks:{},projectKey:{},projectName:{}},emits:["refresh"],setup(t){const k=t,h=C(()=>{const n=k.testCase;if(!n)return[];const l=[];return n.isNewRegression&&l.push({label:"New regression",color:"error",title:"Passed in the baseline run, failing here"}),n.isNewFlaky&&l.push({label:"New flaky",color:"warning",title:"Newly started passing only on retry"}),n.status==="passed"&&(n.retries??0)>0&&l.push({label:"Passed on retry",color:"warning",title:"This test failed then passed on a retry"}),l}),w=C(()=>(k.testCase?.testAnnotations??[]).filter(n=>!Os(n.type))),$=C(()=>k.testCase?.startedAt??null),g=C(()=>!!(k.ciInfo||k.environment));return(n,l)=>{const d=Is,D=Re,M=zs,b=pe,v=Ms,F=ht,L=pt,m=xt,S=vt,V=ue,B=_t,I=js,G=Ns,J=Rs,N=Ds,ne=Ps;return s(),_(ne,{"storage-key":"test-case"},{folded:u(()=>[r(d,{status:t.testCase?.status??"",size:"sm"},null,8,["status"]),o("span",an,c(t.testCase?.title),1),o("div",on,[o("span",rn,[l[1]||(l[1]=f(" Dur: ",-1)),r(D,{ms:t.testCase?.duration,class:"font-bold text-gray-700 dark:text-gray-300"},null,8,["ms"])]),o("span",ln,[l[2]||(l[2]=f(" Retries: ",-1)),o("strong",cn,c(t.testCase?.retries??0),1)]),o("span",un,[l[3]||(l[3]=f(" Steps: ",-1)),o("strong",dn,c(t.stepsCount),1)]),o("span",mn,[l[4]||(l[4]=f(" Worker: ",-1)),o("strong",fn,c(t.testCase?.workerIndex??"—"),1)]),t.testCase?.shardIndex!=null?(s(),a("span",gn,[l[5]||(l[5]=f(" Shard: ",-1)),o("strong",pn,c(t.testCase.shardIndex),1)])):i("",!0)]),t.browser?(s(),_(M,{key:0,browser:t.browser,size:"sm",class:"shrink-0 max-sm:hidden"},null,8,["browser"])):i("",!0)]),default:u(()=>[o("div",yn,[r(N,{class:"shadow-xs",ui:{footer:"px-4 py-2.5 sm:px-4 bg-muted/30"}},{footer:u(()=>[r(J,null,{default:u(()=>[t.scmInfo?(s(),_(I,{key:0,label:"Source",icon:"i-lucide-git-branch"},{default:u(()=>[t.scmInfo.branch?(s(),a("span",Rn,c(t.scmInfo.branch),1)):i("",!0),t.scmInfo.commit?(s(),a("code",{key:1,class:"text-xs font-mono bg-zinc-100 dark:bg-zinc-800 px-1 py-0.5 rounded",title:t.scmInfo.commit},c(t.scmInfo.commit.length>=8?t.scmInfo.commit.substring(0,8):t.scmInfo.commit),9,jn)):i("",!0),t.scmInfo.author?(s(),a("span",Ln,c(t.scmInfo.author),1)):i("",!0),t.scmInfo.commitMessage?(s(),a("span",{key:3,class:"text-xs text-dimmed truncate max-w-[40ch]",title:t.scmInfo.commitMessage},c(t.scmInfo.commitMessage),9,zn)):i("",!0)]),_:1})):i("",!0),e(g)?(s(),_(I,{key:1,label:"CI & environment",icon:"i-lucide-cloud",help:"run.ci-env"},{default:u(()=>[t.environment?(s(),a("span",Mn,c(t.environment),1)):i("",!0),t.ciInfo?.provider?(s(),a("span",Nn,c(t.ciInfo.provider),1)):i("",!0),t.ciInfo?.buildNumber||t.ciInfo?.buildUrl?(s(),a(U,{key:2},[l[12]||(l[12]=o("span",{class:"text-dimmed"},"·",-1)),t.ciInfo?.buildUrl?(s(),a("a",{key:0,href:t.ciInfo.buildUrl,target:"_blank",class:"text-primary hover:underline"},c(t.ciInfo?.buildNumber?`Build #${t.ciInfo.buildNumber}`:"View build"),9,Dn)):(s(),a("span",Pn,"Build #"+c(t.ciInfo.buildNumber),1))],64)):i("",!0),t.ciInfo?.workflow||t.ciInfo?.jobName?(s(),a(U,{key:3},[l[13]||(l[13]=o("span",{class:"text-dimmed"},"·",-1)),o("span",An,[t.ciInfo?.workflow?(s(),a(U,{key:0},[f(c(t.ciInfo.workflow),1)],64)):i("",!0),t.ciInfo?.workflow&&t.ciInfo?.jobName?(s(),a(U,{key:1},[f(" · ")],64)):i("",!0),t.ciInfo?.jobName?(s(),a(U,{key:2},[f(c(t.ciInfo.jobName),1)],64)):i("",!0)])],64)):i("",!0)]),_:1})):i("",!0),t.browser?(s(),_(I,{key:2,label:"Browser"},{default:u(()=>[r(M,{browser:{...t.browser,viewport:void 0},size:"sm"},null,8,["browser"]),t.browser.viewport?(s(),a("span",Un,[f(c(t.browser.viewport.width)+"×"+c(t.browser.viewport.height)+" ",1),t.browser.deviceScaleFactor&&t.browser.deviceScaleFactor!==1?(s(),a("span",Bn,"@"+c(t.browser.deviceScaleFactor)+"x",1)):i("",!0)])):i("",!0)]),_:1})):i("",!0),r(I,{label:"Links",icon:"i-lucide-link"},{default:u(()=>[t.testCase?.id?(s(),_(G,{key:0,"entity-type":"test_case","entity-id":t.testCase.id,links:t.stableLinks??null,onUpdated:l[0]||(l[0]=O=>n.$emit("refresh"))},null,8,["entity-id","links"])):i("",!0)]),_:1})]),_:1})]),default:u(()=>[o("div",hn,[o("div",xn,[r(d,{status:t.testCase?.status??"",class:"mt-0.5"},null,8,["status"]),o("div",vn,[o("div",_n,[o("h2",kn,c(t.testCase?.title),1),(s(!0),a(U,null,ee(e(h),O=>(s(),_(b,{key:O.label,color:O.color,variant:"subtle",size:"xs",title:O.title},{default:u(()=>[f(c(O.label),1)]),_:2},1032,["color","title"]))),128)),(s(!0),a(U,null,ee(e(w),(O,le)=>(s(),_(b,{key:`ann-${le}`,color:"neutral",variant:"soft",size:"xs",class:"font-mono",title:O.description||O.type},{default:u(()=>[f(" @"+c(O.type),1)]),_:2},1032,["title"]))),128)),r(v,{tags:t.testCase?.tags,meta:t.testCase?.testMeta},null,8,["tags","meta"])]),o("p",bn,[t.testCase?.location?(s(),_(F,{key:0,location:t.testCase.location,"project-key":t.projectKey,"project-name":t.projectName},null,8,["location","project-key","project-name"])):i("",!0),r(L,null,{default:u(()=>[e($)?(s(),a("span",{key:0,class:"text-gray-400",title:new Date(e($)).toLocaleString()}," started "+c(("formatRelativeTime"in n?n.formatRelativeTime:e(Se))(e($))),9,wn)):i("",!0)]),_:1}),t.historicalTiming?(s(),a("span",$n,[l[6]||(l[6]=f(" Avg ",-1)),r(D,{ms:t.historicalTiming.avg},null,8,["ms"]),l[7]||(l[7]=f(" · ",-1)),o("span",{class:X(t.historicalTiming.diff>0?"text-red-600":"text-green-600")},c(t.historicalTiming.diff>0?"+":"")+c(t.historicalTiming.pct)+"% ",3)])):i("",!0)])])]),r(S,null,{default:u(()=>[r(m,{label:"Duration"},{default:u(()=>[r(D,{ms:t.testCase?.duration},null,8,["ms"])]),_:1}),r(m,{label:"Retries",value:t.testCase?.retries??0},null,8,["value"]),r(m,{label:"Steps",value:t.stepsCount},null,8,["value"]),r(m,{label:"Worker",value:t.testCase?.workerIndex??"—"},null,8,["value"])]),_:1}),t.testCase?.slowestStep?(s(),a("div",Cn,[r(V,{name:"i-lucide-zap",class:"size-4 text-amber-500 shrink-0"}),l[10]||(l[10]=o("span",{class:"font-medium text-amber-700 dark:text-amber-300"},"Slowest step:",-1)),o("span",Tn,c(t.testCase.slowestStep),1),t.testCase.slowestStepDuration?(s(),a("span",Sn,[l[8]||(l[8]=f("(",-1)),r(D,{ms:t.testCase.slowestStepDuration},null,8,["ms"]),l[9]||(l[9]=f(")",-1))])):i("",!0)])):i("",!0),(t.testCase?.wastedTimeMs??0)>0?(s(),a("div",In,[r(V,{name:"i-lucide-hourglass",class:"size-4 text-amber-500 shrink-0"}),l[11]||(l[11]=o("span",{class:"font-medium text-amber-700 dark:text-amber-300"},"Wasted in fixed waits:",-1)),r(D,{ms:t.testCase?.wastedTimeMs,class:"text-gray-700 dark:text-gray-300"},null,8,["ms"]),r(B,{topic:"case.wasted-time"})])):i("",!0)])]),_:1})])]),_:1})}}}),Vn=Object.assign(Fn,{__name:"TestCaseSummary"}),En={class:"space-y-3"},On={key:0,class:"flex flex-wrap gap-1.5"},Hn={key:0,class:"text-sm text-gray-600 dark:text-gray-400"},Kn={class:"text-gray-800 dark:text-gray-200"},Wn={key:1},Gn={class:"flex items-center gap-1 flex-wrap"},Jn=re({__name:"TestCaseVerdictCard",props:{testCase:{},history:{},currentId:{}},setup(t){const k=t,h=l=>l==="failed"||l==="timedOut"||l==="timedout",w=C(()=>{const l=k.testCase;if(!l)return[];const d=[];return l.isNewRegression&&d.push({label:"New regression",color:"error",icon:"i-lucide-git-pull-request-arrow",title:"Passed in the baseline run, failing here — likely fallout from the latest change"}),l.isNewFlaky&&d.push({label:"New flaky",color:"warning",icon:"i-lucide-shuffle",title:"Newly started passing only on retry — intermittent failure"}),l.status==="timedOut"&&d.push({label:"Timed out",color:"warning",icon:"i-lucide-timer-off",title:"The test exceeded its timeout"}),(l.retries??0)>0&&d.push({label:l.status==="passed"?`Passed on retry ${l.retries}`:`Retried ${l.retries}×`,color:l.status==="passed"?"warning":"neutral",icon:"i-lucide-refresh-cw",title:`This execution retried ${l.retries} time${l.retries===1?"":"s"}`}),d}),$=C(()=>k.history.slice(0,24).slice().reverse()),g=C(()=>{const l=k.history;if(!l.length)return null;const d=Math.max(0,l.findIndex(b=>b.id===k.currentId));let D=0;for(let b=d;b<l.length&&h(l[b].status);b++)D++;let M=null;for(let b=d+1;b<l.length;b++)if(l[b].status==="passed"){M=l[b];break}return{streak:D,lastPass:M,total:l.length,anchorFailing:h(l[d]?.status)}}),n=l=>({"bg-red-500 hover:bg-red-600":h(l),"bg-green-500 hover:bg-green-600":l==="passed","bg-yellow-500 hover:bg-yellow-600":l==="skipped","bg-gray-400 hover:bg-gray-500":!h(l)&&!["passed","skipped"].includes(l)});return(l,d)=>{const D=ue,M=pe,b=Pe,v=$t,F=pt,L=ye;return s(),_(L,{icon:"i-lucide-clipboard-check","icon-class":"text-amber-500",title:"Verdict",help:"case.verdict"},{default:u(()=>[o("div",En,[e(w).length?(s(),a("div",On,[(s(!0),a(U,null,ee(e(w),m=>(s(),_(M,{key:m.label,color:m.color,variant:"subtle",size:"sm",title:m.title,class:"inline-flex items-center gap-1"},{default:u(()=>[r(D,{name:m.icon,class:"size-3 shrink-0"},null,8,["name"]),f(" "+c(m.label),1)]),_:2},1032,["color","title"]))),128))])):i("",!0),r(F,null,{default:u(()=>[e(g)?(s(),a("p",Hn,[e(g).streak>=1?(s(),a(U,{key:0},[d[1]||(d[1]=f(" Failing for ",-1)),o("strong",Kn,c(e(g).streak),1),f(" consecutive run"+c(e(g).streak===1?"":"s")+". ",1),e(g).lastPass?(s(),a(U,{key:0},[d[0]||(d[0]=f(" Last passed in ",-1)),r(b,{to:`/test-run-cases/${e(g).lastPass.id}`,class:"text-primary hover:underline"},{default:u(()=>[f(" run #"+c(e(g).lastPass.runId),1)]),_:1},8,["to"]),f(" ("+c(("formatRelativeTime"in l?l.formatRelativeTime:e(Se))(e(g).lastPass.startTime))+"). ",1)],64)):e(g).total>1?(s(),a(U,{key:1},[f(" No passing run in the last "+c(e(g).total)+" recorded. ",1)],64)):(s(),a(U,{key:2},[f(" First recorded run of this test. ")],64))],64)):t.testCase?.status==="passed"?(s(),a(U,{key:1},[f(" This execution passed. ")],64)):i("",!0)])):i("",!0),e($).length>1?(s(),a("div",Wn,[d[2]||(d[2]=o("p",{class:"text-xs text-gray-400 mb-1"},"Recent runs (oldest → newest)",-1)),o("div",Gn,[(s(!0),a(U,null,ee(e($),m=>(s(),_(v,{key:m.id,text:`Run #${m.runId}: ${m.status}`},{default:u(()=>[r(b,{to:`/test-run-cases/${m.id}`,class:X(["size-3.5 rounded-sm inline-block transition-colors",[n(m.status),m.id===t.currentId?"ring-2 ring-offset-1 ring-primary":""]])},null,8,["to","class"])]),_:2},1032,["text"]))),128))])])):i("",!0)]),_:1})])]),_:1})}}}),qn=Object.assign(Jn,{__name:"TestCaseVerdictCard"}),Qn={class:"space-y-3"},Zn={class:"space-y-1.5"},Xn={class:"flex items-center gap-2 flex-wrap"},Yn={class:"text-xs text-gray-500"},ea=["title"],ta={class:"text-xs text-gray-500 dark:text-gray-400"},sa={key:0,class:"rounded-lg border border-default bg-elevated/40 p-2.5 space-y-1"},na={class:"flex items-center gap-1.5 flex-wrap"},aa={class:"text-xs text-gray-600 dark:text-gray-400 line-clamp-3"},oa=["title"],ra=re({__name:"FailureClusterCard",props:{cluster:{}},setup(t){const k=t,h=C(()=>Math.max(0,k.cluster.sameRunCaseCount-1)),w=C(()=>{const g=k.cluster.diagnosis;return g&&g.status==="completed"&&g.summary?g:null}),$=g=>g==="high"?"success":g==="medium"?"warning":"neutral";return(g,n)=>{const l=pe,d=Pe,D=ue,M=Ie,b=ye;return s(),_(b,{icon:"i-lucide-layers","icon-class":"text-primary",title:"Failure cluster",help:"cluster.concept"},{actions:u(()=>[t.cluster.isNew?(s(),_(l,{key:0,color:"warning",variant:"subtle",size:"sm"},{default:u(()=>[...n[0]||(n[0]=[f("New",-1)])]),_:1})):i("",!0),t.cluster.status&&t.cluster.status!=="open"?(s(),_(l,{key:1,color:t.cluster.status==="resolved"?"success":"neutral",variant:"subtle",size:"sm",class:"capitalize"},{default:u(()=>[f(c(t.cluster.status),1)]),_:1},8,["color"])):i("",!0)]),default:u(()=>[o("div",Qn,[o("div",Zn,[o("div",Xn,[t.cluster.errorType?(s(),_(l,{key:0,color:e(Hs)(t.cluster.errorType),variant:"soft",size:"sm"},{default:u(()=>[f(c(t.cluster.errorType),1)]),_:1},8,["color"])):i("",!0),o("span",Yn,c(t.cluster.occurrences??0)+" occurrence"+c((t.cluster.occurrences??0)===1?"":"s"),1)]),o("p",{class:"font-mono text-xs text-gray-600 dark:text-gray-400 break-all line-clamp-2",title:t.cluster.signature},c(t.cluster.signature),9,ea)]),o("p",ta,[e(h)>0?(s(),a(U,{key:0},[f(" Matches "+c(e(h))+" other failing "+c(e(h)===1?"test":"tests")+" in this run. ",1)],64)):i("",!0),t.cluster.isNew?(s(),a(U,{key:2},[f("Opened a new cluster in this run.")],64)):(s(),a(U,{key:1},[n[1]||(n[1]=f(" Known failure — first seen in ",-1)),r(d,{to:`/test-runs/${t.cluster.firstSeenRunId}`,class:"text-primary hover:underline"},{default:u(()=>[f(" run #"+c(t.cluster.firstSeenRunId),1)]),_:1},8,["to"]),t.cluster.firstSeenAt?(s(),a(U,{key:0},[f(" ("+c(("formatRelativeTime"in g?g.formatRelativeTime:e(Se))(t.cluster.firstSeenAt))+")",1)],64)):i("",!0),n[2]||(n[2]=f(". ",-1))],64))]),e(w)?(s(),a("div",sa,[o("div",na,[r(D,{name:"i-lucide-sparkles",class:"size-3.5 text-primary shrink-0"}),n[3]||(n[3]=o("span",{class:"text-xs font-medium"},"AI verdict",-1)),e(w).category?(s(),_(l,{key:0,color:"neutral",variant:"soft",size:"xs"},{default:u(()=>[f(c(e(w).category),1)]),_:1})):i("",!0),e(w).confidence?(s(),_(l,{key:1,color:$(e(w).confidence),variant:"soft",size:"xs"},{default:u(()=>[f(c(e(w).confidence)+" confidence ",1)]),_:1},8,["color"])):i("",!0)]),o("p",aa,c(e(w).summary),1)])):i("",!0),t.cluster.triageNote?(s(),a("p",{key:1,class:"text-xs italic text-gray-500 dark:text-gray-400",title:t.cluster.triageNote}," “"+c(t.cluster.triageNote)+"” ",9,oa)):i("",!0),r(M,{to:`/failure-clusters/${t.cluster.id}`,size:"sm",color:"primary",variant:"solid",block:"","trailing-icon":"i-lucide-arrow-right"},{default:u(()=>[...n[4]||(n[4]=[f(" Open cluster investigation ",-1)])]),_:1},8,["to"])])]),_:1})}}}),ia=Object.assign(ra,{__name:"FailureClusterCard"}),la={class:"space-y-3"},ca={class:"text-xs text-gray-400 inline-flex items-center gap-1"},ua={key:0,class:"text-primary"},da={key:0,class:"flex items-center justify-between gap-2 rounded-lg border border-default bg-elevated/40 p-2.5"},ma={class:"inline-flex items-center gap-2 text-sm text-gray-500"},fa={key:1,class:"flex items-center gap-2"},ga={key:2,class:"rounded-lg border border-dashed border-default p-4 text-center text-gray-400"},pa={class:"text-sm inline-flex items-center gap-1 justify-center"},ya={class:"pt-1 text-center"},ha=re({__name:"TestCaseAiCard",props:{testRunsCaseId:{}},setup(t){const k=t,{aiStatus:h}=qs(),w=ts(),$=A(null),g=A(!1),n=A(null),l=A([]),d=A(0),D=A(0),M=A(null),b=A(!1),v=A(!1),F=A(null),L=A(!1),m=A("");async function S(){b.value=!0;try{const y=await $fetch(`/api/test-run-cases/${k.testRunsCaseId}/diagnosis-context`,{query:{format:"json"}});n.value=y.text,l.value=y.sections,d.value=y.tokenEstimate,D.value=y.imageTokenEstimate??0,M.value=y.coverage}catch{n.value=null,l.value=[],d.value=0,M.value=null}finally{b.value=!1}}async function V(){try{const y=await $fetch(`/api/test-run-cases/${k.testRunsCaseId}/diagnosis`);$.value=y.diagnosis}catch{}}yt(()=>{V(),S()});const B=C(()=>{const y=$.value?.details;if(!y)return[];const P=[];if(Array.isArray(y.evidence)&&P.push(...y.evidence),Array.isArray(y.hypotheses))for(const se of y.hypotheses)Array.isArray(se?.evidence)&&P.push(...se.evidence);return Vs(P)});function I(y){F.value=y,v.value=!0}function G(y){m.value=m.value?`${m.value}
2
-
3
- ${y}`:y,L.value=!0}async function J(y=!1){g.value=!0;try{const P=y?`/api/test-run-cases/${k.testRunsCaseId}/diagnose?force=true`:`/api/test-run-cases/${k.testRunsCaseId}/diagnose`,se=m.value.trim()?{additionalContext:m.value.trim()}:void 0;$.value=await $fetch(P,{method:"POST",body:se})}catch(P){const se=P?.statusCode;se===409?(w.add({title:"Diagnosis already running",color:"warning"}),V()):se===503?w.add({title:"AI diagnosis is not configured",color:"warning"}):w.add({title:"Diagnosis failed",description:Ks(P),color:"error"})}finally{g.value=!1}}function N(y){return y.status==="running"&&Date.now()-new Date(y.updatedAt).getTime()>300*1e3}const ne=C(()=>$.value&&($.value.status==="completed"||$.value.status==="failed")),O=C(()=>!$.value||$.value.status==="failed"||$.value.status==="running"&&N($.value)),le=C(()=>$.value?.status==="running"&&!N($.value)&&!g.value);return(y,P)=>{const se=Fs,x=ue,T=As,K=Js,q=Ie,Q=Us,te=_t,H=Bs,Z=Pe,Y=ye;return s(),_(Y,{icon:"i-lucide-sparkles","icon-class":"text-primary",title:"AI diagnosis",help:"case.ai"},{actions:u(()=>[r(se,{"context-endpoint":`/api/test-run-cases/${t.testRunsCaseId}/diagnosis-context`},null,8,["context-endpoint"])]),default:u(()=>[o("div",la,[o("p",ca,[r(x,{name:"i-lucide-triangle-alert",class:"size-3 shrink-0"}),P[6]||(P[6]=f(" AI-generated — verify before applying. ",-1))]),e(h)?.configured?(s(),_(T,{key:0,sections:e(l),"not-applicable":e(M)?.notApplicable,"token-estimate":e(d),loading:e(b),onViewSection:I,onOpen:P[0]||(P[0]=ae=>v.value=!0)},null,8,["sections","not-applicable","token-estimate","loading"])):i("",!0),e(h)?.configured?(s(),a(U,{key:1},[o("div",null,[o("button",{class:"flex items-center gap-1.5 text-xs font-medium text-gray-500 hover:text-gray-700 dark:hover:text-gray-300",onClick:P[1]||(P[1]=ae=>L.value=!e(L))},[r(x,{name:e(L)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5"},null,8,["name"]),P[7]||(P[7]=f(" Additional context ",-1)),e(m).trim()?(s(),a("span",ua,"(1)")):i("",!0)]),e(L)?(s(),_(K,{key:0,modelValue:e(m),"onUpdate:modelValue":P[2]||(P[2]=ae=>ge(m)?m.value=ae:null),placeholder:"e.g. We deployed a new auth middleware yesterday…",rows:3,class:"w-full text-sm mt-1"},null,8,["modelValue"])):i("",!0)]),e(le)?(s(),a("div",da,[o("span",ma,[r(x,{name:"i-lucide-loader-circle",class:"size-4 animate-spin text-primary shrink-0"}),P[8]||(P[8]=f(" Diagnosis in progress… ",-1))]),r(q,{size:"xs",color:"neutral",variant:"outline",icon:"i-lucide-refresh-cw",loading:e(g),onClick:V},{default:u(()=>[...P[9]||(P[9]=[f(" Refresh ",-1)])]),_:1},8,["loading"])])):(s(),a("div",fa,[e(O)?(s(),_(q,{key:0,icon:"i-lucide-sparkles",size:"sm",color:"primary",variant:"solid",loading:e(g),onClick:P[3]||(P[3]=ae=>J(e($)?.status==="running"))},{default:u(()=>[f(c(e($)?.status==="running"?"Restart diagnosis":"Diagnose with AI"),1)]),_:1},8,["loading"])):e($)?.status==="completed"?(s(),_(q,{key:1,icon:"i-lucide-refresh-cw",size:"xs",color:"primary",variant:"soft",loading:e(g),onClick:P[4]||(P[4]=ae=>J(!0))},{default:u(()=>[...P[10]||(P[10]=[f(" Re-diagnose ",-1)])]),_:1},8,["loading"])):i("",!0)])),e(ne)?(s(),_(Q,{key:2,diagnosis:e($),onViewSection:I,onPrefillContext:G},null,8,["diagnosis"])):i("",!0)],64)):(s(),a("div",ga,[o("p",pa,[P[11]||(P[11]=f(" AI diagnosis is not configured ",-1)),r(te,{topic:"cluster.ai-setup"})]),P[13]||(P[13]=o("p",{class:"text-xs mt-2 max-w-xs mx-auto"},[f(" Use "),o("strong",null,"Export → AI context"),f(" in the header to grab the full evidence bundle for your own AI tool, or configure a provider. ")],-1)),r(q,{to:"/settings/ai",size:"xs",color:"neutral",variant:"outline",class:"mt-3"},{default:u(()=>[...P[12]||(P[12]=[f(" Configure in Settings ",-1)])]),_:1})])),r(H,{open:e(v),sections:e(l),"token-estimate":e(d),"image-token-estimate":e(D),loading:e(b),"focus-section":e(F),"cited-sections":e(B),"not-applicable-sections":e(M)?.notApplicable,"onUpdate:open":P[5]||(P[5]=ae=>{v.value=ae,ae||(F.value=null)}),onRefresh:S},null,8,["open","sections","token-estimate","image-token-estimate","loading","focus-section","cited-sections","not-applicable-sections"]),o("div",ya,[r(Z,{to:"/mcp",class:"inline-flex items-center gap-1 text-xs text-gray-400 hover:text-primary transition-colors"},{default:u(()=>[r(x,{name:"i-lucide-bot",class:"size-3"}),P[14]||(P[14]=f(" Query this failure from your AI agent via MCP ",-1))]),_:1})])])]),_:1})}}}),xa=Object.assign(ha,{__name:"TestCaseAiCard"});function Tt(t,k,h){const w=A(null),$=A(!1),g=A(!1);async function n(){const l=t();if(!(!l||!$e(k)||$.value)){g.value=!0,$.value=!0;try{w.value=await $fetch(l)}catch{w.value=null}finally{$.value=!1}}}return yt(()=>{ve(()=>$e(k),l=>{l&&(h||g.value)&&!w.value&&n()},{immediate:!0})}),{data:w,pending:$,load:n}}function va(t,k,h,w={}){return Tt(()=>{const $=$e(t),g=$e(k);return $&&g?`/api/test-runs/${$}/cases/${g}/trace-stacks`:null},h,w.auto??!0)}function _a(t,k,h,w={}){return Tt(()=>{const $=$e(t),g=$e(k);return $&&g?`/api/test-runs/${$}/cases/${g}/trace-network`:null},h,w.auto??!1)}const ka={class:"max-h-[32rem] overflow-y-auto"},ba={key:0,class:"mb-2 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},wa={key:0,class:"mt-3 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},$a=re({__name:"TestSourceCard",props:{frames:{},testSource:{},runId:{},testRunsCaseId:{},hasTrace:{type:Boolean},projectKey:{},projectName:{},storageKey:{}},setup(t,{expose:k}){const h=t,{data:w,pending:$}=va(()=>h.runId,()=>h.testRunsCaseId,()=>h.hasTrace,{auto:!0}),g=C(()=>w.value?.status==="ok"?w.value.frames??[]:[]),n=C(()=>g.value.length>0),l=C(()=>h.frames?.length??0),d=C(()=>l.value>0||!!h.testSource),D=A(null),M=C({get:()=>D.value??(n.value?"trace":"captured"),set:L=>{D.value=L}}),b=C(()=>[{label:`Full stack (${g.value.length})`,value:"trace"},{label:`Captured (${l.value||1})`,value:"captured"}]),v=C(()=>M.value==="trace"&&n.value?g.value.length:l.value||null),F=A(null);return k({reveal:()=>F.value?.reveal()}),(L,m)=>{const S=We,V=ue,B=ls,I=cs,G=bt,J=Ge,N=kt,ne=Oe;return s(),_(ne,{ref_key:"card",ref:F,"storage-key":t.storageKey,icon:"i-lucide-code",count:e(v),title:"Test source",help:"case.test-source"},ss({folded:u(()=>[e(M)==="trace"&&e(n)?(s(),a(U,{key:0},[f(" Full call stack from the trace"+c(e(w)?.hasSources===!1?" (recorded without sources)":""),1)],64)):e(l)>1?(s(),a(U,{key:1},[f(" The failing line and "+c(e(l)-1)+" caller"+c(e(l)-1===1?"":"s"),1)],64)):(s(),a(U,{key:2},[f("Source around the failing assertion")],64))]),default:u(()=>[o("div",ka,[e(M)==="trace"&&e(n)?(s(),a(U,{key:0},[e(w)?.hasSources===!1?(s(),a("p",ba,[r(V,{name:"i-lucide-info",class:"size-3.5 shrink-0"}),m[1]||(m[1]=f(" Trace recorded without sources — frame list only. ",-1))])):i("",!0),r(B,{frames:e(g),"project-key":t.projectKey,"project-name":t.projectName},null,8,["frames","project-key","project-name"])],64)):(s(),a(U,{key:1},[t.frames?.length?(s(),_(I,{key:0,frames:t.frames,"project-key":t.projectKey,"project-name":t.projectName},null,8,["frames","project-key","project-name"])):t.testSource?(s(),_(G,{key:1,text:"```typescript\n"+t.testSource+"\n```"},null,8,["text"])):t.hasTrace&&e($)?(s(),_(J,{key:2,text:"Loading call stack from trace…"})):i("",!0)],64))]),t.hasTrace?i("",!0):(s(),a("p",wa,[r(V,{name:"i-lucide-info",class:"size-3.5 shrink-0"}),o("span",null,[m[3]||(m[3]=f(" Want to go deeper? Record traces (",-1)),m[4]||(m[4]=o("code",null,"trace: 'retain-on-failure'",-1)),m[5]||(m[5]=f(") to see the full call stack with source here. ",-1)),r(N,{to:"ui-overview#trace-powered-deep-views","no-icon":"",class:"underline"},{default:u(()=>[...m[2]||(m[2]=[f("Learn more",-1)])]),_:1})])]))]),_:2},[e(n)&&e(d)?{name:"actions",fn:u(()=>[r(S,{modelValue:e(M),"onUpdate:modelValue":m[0]||(m[0]=O=>ge(M)?M.value=O:null),items:e(b),size:"xs",variant:"link",ui:{list:"gap-2",trigger:"px-1.5"}},null,8,["modelValue","items"])]),key:"0"}:void 0]),1032,["storage-key","count"])}}}),Ca=Object.assign($a,{__name:"TestSourceCard"}),Ta={class:"space-y-3"},Sa={class:"divide-y divide-default"},Ia={class:"flex items-center gap-2 min-w-0"},Ra={class:"text-sm truncate"},ja={key:0,class:"text-xs text-gray-400 shrink-0"},La=re({__name:"TestCaseEvidenceCard",props:{attachments:{},traces:{},storageKey:{}},setup(t,{expose:k}){const h=t,w=Ee(),$=C(()=>h.attachments.filter(v=>Te(v.path,v.contentType)).length),g=C(()=>h.attachments.filter(v=>De(v.path,v.contentType)).length),n=C(()=>h.attachments.filter(v=>!Te(v.path,v.contentType)&&!De(v.path,v.contentType))),l=C(()=>$.value+g.value+h.traces.length+n.value.length),d=C(()=>{const v=[];return $.value&&v.push(`${$.value} screenshot${$.value===1?"":"s"}`),g.value&&v.push(`${g.value} video${g.value===1?"":"s"}`),h.traces.length&&v.push(`${h.traces.length} trace${h.traces.length===1?"":"s"}`),n.value.length&&v.push(`${n.value.length} file${n.value.length===1?"":"s"}`),v.join(" · ")||"No evidence captured"});function D(v,F){return wt(v,F,w.app?.baseURL)}function M(v){return v.split("/").pop()||v}const b=A(null);return k({reveal:()=>b.value?.reveal?.()}),(v,F)=>{const L=us,m=ds,S=ms,V=ue,B=Ie,I=fs,G=Ct,J=Oe;return s(),_(J,{ref_key:"card",ref:b,"storage-key":t.storageKey,icon:"i-lucide-camera",title:"Failure evidence",count:e(l),help:"case.evidence"},{folded:u(()=>[f(c(e(d)),1)]),default:u(()=>[o("div",Ta,[r(L,{attachments:t.attachments},null,8,["attachments"]),r(m,{attachments:t.attachments},null,8,["attachments"]),r(S,{traces:t.traces},null,8,["traces"]),e(n).length?(s(),_(I,{key:0,icon:"i-lucide-paperclip",label:"Attachments",count:e(n).length,collapsible:!1},{default:u(()=>[o("div",Sa,[(s(!0),a(U,null,ee(e(n),N=>(s(),a("div",{key:N.id,class:"flex items-center justify-between gap-2 px-3 py-2"},[o("div",Ia,[r(V,{name:"i-lucide-file",class:"size-4 text-gray-400 shrink-0"}),o("span",Ra,c(M(N.path)),1),N.size?(s(),a("span",ja,c(("formatBytes"in v?v.formatBytes:e(we))(N.size)),1)):i("",!0)]),r(B,{to:D(N.path,N.contentType),target:"_blank",icon:"i-lucide-external-link",size:"xs",color:"neutral",variant:"soft",label:"Open"},null,8,["to"])]))),128))])]),_:1},8,["count"])):i("",!0),e(l)===0?(s(),_(G,{key:1,icon:"i-lucide-camera-off",title:"No screenshots, video or traces captured",text:"Evidence comes from Playwright's own capture settings — set trace, screenshot and video in your config (trace: 'retain-on-failure' is the usual starting point).",doc:"reporter"})):i("",!0)])]),_:1},8,["storage-key","count"])}}}),za=Object.assign(La,{__name:"TestCaseEvidenceCard"}),Ma={class:"space-y-1 max-h-80 overflow-y-auto"},Na={class:"min-w-0 flex-1"},Da={class:"flex items-center gap-2"},Pa={class:"truncate"},Aa={key:0,class:"text-xs text-gray-400 mt-0.5 ml-0"},Ua=re({__name:"TestCaseConsoleCard",props:{entries:{}},setup(t){function k(w){switch(w){case"error":return"error";case"warning":return"warning";case"assert":return"error";default:return"neutral"}}function h(w){switch(w){case"error":return"i-lucide-octagon-x";case"warning":return"i-lucide-alert-triangle";case"assert":return"i-lucide-octagon-x";default:return"i-lucide-message-square"}}return(w,$)=>{const g=ue,n=pe,l=ye;return t.entries.length>0?(s(),_(l,{key:0,icon:"i-lucide-terminal",title:"Console output",count:t.entries.length,help:"case.console"},{default:u(()=>[o("div",Ma,[(s(!0),a(U,null,ee(t.entries,(d,D)=>(s(),a("div",{key:D,class:"flex items-start gap-2 py-1.5 px-2 rounded hover:bg-gray-50 dark:hover:bg-gray-800 text-sm"},[r(g,{name:h(d.type),class:X([d.type==="error"||d.type==="assert"?"text-red-500":d.type==="warning"?"text-amber-500":"text-gray-400","size-4 mt-0.5 shrink-0"])},null,8,["name","class"]),o("div",Na,[o("div",Da,[r(n,{color:k(d.type),variant:"soft",size:"xs",class:"shrink-0"},{default:u(()=>[f(c(d.type),1)]),_:2},1032,["color"]),o("span",Pa,c(d.text),1)]),d.location?(s(),a("div",Aa,c(d.location),1)):i("",!0)])]))),128))])]),_:1},8,["count"])):i("",!0)}}}),Ba=Object.assign(Ua,{__name:"TestCaseConsoleCard"}),Fa={key:0,class:"space-y-4 text-sm"},Va={class:"space-y-1.5"},Ea={class:"flex items-center gap-2"},Oa={key:0,class:"text-xs text-gray-500"},Ha={class:"block text-xs break-all text-gray-700 dark:text-gray-300"},Ka={key:0,class:"text-xs text-red-600 dark:text-red-400 font-mono"},Wa={class:"flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-gray-400"},Ga={key:0,class:"font-mono"},Ja={key:1,class:"font-mono"},qa={key:2},Qa={key:3,title:"Bytes on the wire"},Za={key:0},Xa={class:"flex h-2 rounded overflow-hidden bg-gray-100 dark:bg-gray-800"},Ya=["title"],eo={class:"flex flex-wrap gap-x-3 gap-y-1 mt-1.5 text-xs text-gray-500"},to={class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5 capitalize"},so={key:0,class:"rounded border border-default divide-y divide-default max-h-48 overflow-y-auto"},no={class:"text-gray-500 dark:text-gray-400 shrink-0"},ao={class:"break-all text-gray-700 dark:text-gray-300"},oo={key:1,class:"text-xs text-gray-400"},ro={key:1},io={key:0,class:"rounded border border-default p-2"},lo=["src","alt"],co={key:1,class:"max-h-96 overflow-y-auto"},uo={key:0,class:"mt-1 text-xs text-gray-400"},mo={key:2,class:"text-xs text-gray-400"},fo={key:2,class:"text-xs text-gray-400"},go=re({__name:"TraceNetworkDrawer",props:{open:{type:Boolean},entry:{},runId:{},testRunsCaseId:{}},emits:["update:open"],setup(t,{emit:k}){const h=t,w=k,$=[{key:"dns",label:"DNS",color:"bg-sky-400"},{key:"connect",label:"Connect",color:"bg-violet-400"},{key:"ssl",label:"TLS",color:"bg-rose-400"},{key:"send",label:"Send",color:"bg-amber-400"},{key:"wait",label:"Wait",color:"bg-blue-400"},{key:"receive",label:"Receive",color:"bg-emerald-400"}],g=C(()=>{const b=h.entry?.timings;return b?$.map(v=>({...v,value:b[v.key]??-1})).filter(v=>typeof v.value=="number"&&v.value>=0):[]}),n=C(()=>g.value.reduce((b,v)=>b+v.value,0)),l=C(()=>{const b=h.entry?.requestPostData??"";return b.startsWith("{")||b.startsWith("[")}),d=A(null),D=A(!1),M=new Map;return ve(()=>[h.open,h.entry?.bodySha1],async([b,v])=>{if(d.value=null,!b||!v||!h.runId)return;const F=M.get(v);if(F){d.value=F;return}D.value=!0;try{const L=await $fetch(`/api/test-runs/${h.runId}/cases/${h.testRunsCaseId}/trace-network-body`,{query:{sha1:v}});M.set(v,L),d.value=L}catch{d.value={status:"not-found"}}finally{D.value=!1}},{immediate:!0}),(b,v)=>{const F=pe,L=Re,m=Qs,S=Ge,V=Zs;return s(),_(V,{open:t.open,title:"Request detail",ui:{content:"max-w-xl"},"onUpdate:open":v[0]||(v[0]=B=>w("update:open",B))},{body:u(()=>[t.entry?(s(),a("div",Fa,[o("div",Va,[o("div",Ea,[r(F,{color:("httpMethodColor"in b?b.httpMethodColor:e(He))(t.entry.method),variant:"soft",size:"sm",class:"font-mono shrink-0"},{default:u(()=>[f(c(t.entry.method),1)]),_:1},8,["color"]),r(F,{color:("httpStatusColor"in b?b.httpStatusColor:e(Ke))(t.entry.status),variant:"soft",size:"sm",class:"font-mono shrink-0 tabular-nums"},{default:u(()=>[f(c(t.entry.status>0?t.entry.status:"—"),1)]),_:1},8,["color"]),t.entry.statusText?(s(),a("span",Oa,c(t.entry.statusText),1)):i("",!0)]),o("code",Ha,c(t.entry.url),1),t.entry.failureText?(s(),a("p",Ka,c(t.entry.failureText),1)):i("",!0),o("div",Wa,[t.entry.resourceType?(s(),a("span",Ga,c(t.entry.resourceType),1)):i("",!0),t.entry.mimeType?(s(),a("span",Ja,c(t.entry.mimeType),1)):i("",!0),t.entry.responseBodySize!=null?(s(),a("span",qa,c(("formatBytes"in b?b.formatBytes:e(we))(t.entry.responseBodySize)),1)):i("",!0),t.entry.transferSize!=null?(s(),a("span",Qa,c(("formatBytes"in b?b.formatBytes:e(we))(t.entry.transferSize))+" transferred",1)):i("",!0),r(L,{ms:t.entry.duration},null,8,["ms"]),t.entry.duringFailure?(s(),_(F,{key:4,color:"error",variant:"subtle",size:"xs"},{default:u(()=>[...v[1]||(v[1]=[f("During failing action",-1)])]),_:1})):i("",!0)])]),e(g).length>0&&e(n)>0?(s(),a("div",Za,[v[2]||(v[2]=o("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5"},"Timing",-1)),o("div",Xa,[(s(!0),a(U,null,ee(e(g),B=>(s(),a("div",{key:B.key,class:X(B.color),style:Ce({width:`${Math.max(.5,B.value/e(n)*100)}%`}),title:`${B.label}: ${("formatDuration"in b?b.formatDuration:e(Ws))(B.value)}`},null,14,Ya))),128))]),o("div",eo,[(s(!0),a(U,null,ee(e(g),B=>(s(),a("span",{key:B.key,class:"inline-flex items-center gap-1"},[o("span",{class:X(["size-2 rounded-full",B.color])},null,2),f(" "+c(B.label)+" ",1),r(L,{ms:B.value,"no-title":""},null,8,["ms"])]))),128))])])):i("",!0),(s(),a(U,null,ee(["request","response"],B=>o("div",{key:B},[o("p",to,c(B)+" headers",1),(B==="request"?t.entry.requestHeaders:t.entry.responseHeaders).length>0?(s(),a("div",so,[(s(!0),a(U,null,ee(B==="request"?t.entry.requestHeaders:t.entry.responseHeaders,I=>(s(),a("div",{key:`${B}-${I.name}`,class:"px-2 py-1 text-xs font-mono flex gap-2"},[o("span",no,c(I.name)+":",1),o("span",ao,c(I.value),1)]))),128))])):(s(),a("p",oo,"None recorded."))])),64)),t.entry.requestPostData?(s(),a("div",ro,[v[3]||(v[3]=o("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5"},"Request body",-1)),r(m,{code:t.entry.requestPostData,lang:e(l)?"json":"text"},null,8,["code","lang"])])):i("",!0),o("div",null,[v[4]||(v[4]=o("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5"},"Response body",-1)),e(D)?(s(),_(S,{key:0,text:"Loading body…",padded:!1})):e(d)?(s(),a(U,{key:1},[e(d).status==="ok"&&e(d).kind==="image"?(s(),a("div",io,[o("img",{src:e(d).dataUri,alt:t.entry.url,class:"max-w-full max-h-96"},null,8,lo)])):e(d).status==="ok"?(s(),a("div",co,[r(m,{code:e(d).content??"",lang:e(d).kind==="json"?"json":"text"},null,8,["code","lang"]),e(d).truncated?(s(),a("p",uo,"Preview truncated.")):i("",!0)])):(s(),a("p",mo,c(e(d).status==="too-large"?`Body too large to preview (${("formatBytes"in b?b.formatBytes:e(we))(e(d).size??0)}) — open the trace viewer to inspect it.`:e(d).status==="unsupported"?`No preview for ${e(d).mimeType||"this content type"} — open the trace viewer to inspect it.`:"Body not stored in the trace."),1))],64)):t.entry.bodySha1?i("",!0):(s(),a("p",fo,"No body captured for this request."))])])):i("",!0)]),_:1},8,["open"])}}}),po=Object.assign(go,{__name:"TraceNetworkDrawer"}),yo={class:"flex items-center justify-between gap-2 mb-2"},ho={key:0,class:"hidden sm:flex items-center gap-1.5 text-xs text-gray-400"},xo={class:"space-y-1 max-h-[28rem] overflow-y-auto"},vo=["title","onClick"],_o={class:"flex items-center gap-2 text-sm min-w-0"},ko={class:"truncate text-xs flex-1 min-w-0"},bo={key:0,class:"shrink-0 text-xs text-gray-400 font-mono hidden md:inline"},wo={key:1,class:"shrink-0 text-xs text-gray-400 tabular-nums hidden sm:inline"},$o={class:"relative h-1.5 mt-1 rounded bg-gray-100 dark:bg-gray-800 overflow-hidden"},Co={key:0,class:"mt-2 text-xs text-gray-400 dark:text-gray-500"},To=re({__name:"TraceNetworkList",props:{data:{},runId:{},testRunsCaseId:{}},setup(t){const k=t,h=A("all"),w=C(()=>k.data.requests??[]),$=C(()=>({total:w.value.length,failed:w.value.filter(S=>S.failed).length,duringFailure:w.value.filter(S=>S.duringFailure).length})),g=C(()=>[{label:`All (${$.value.total})`,value:"all"},{label:`Failed (${$.value.failed})`,value:"failed",disabled:$.value.failed===0},{label:`During failure (${$.value.duringFailure})`,value:"duringFailure",disabled:$.value.duringFailure===0}]),n=C(()=>h.value==="failed"?w.value.filter(S=>S.failed):h.value==="duringFailure"?w.value.filter(S=>S.duringFailure):w.value);function l(S){try{return new URL(S).pathname||S}catch{return S}}const d=C(()=>Math.max(1,k.data.timelineDuration??1));function D(S){const V=Math.max(0,Math.min(100,S.start/d.value*100)),B=Math.min(100-V,Math.max(1.5,S.duration/d.value*100));return{left:`${V}%`,width:`${B}%`}}const M=C(()=>{const S=k.data.failingWindow;if(!S||S.end<=S.start)return null;const V=Math.max(0,Math.min(100,S.start/d.value*100)),B=Math.max(.5,Math.min(100-V,(S.end-S.start)/d.value*100));return{left:`${V}%`,width:`${B}%`}});function b(S){return S.failed?"bg-red-500":S.duration>1e3?"bg-orange-400":"bg-gray-400 dark:bg-gray-500"}function v(S){return S.failed?"border-l-2 border-l-red-400 dark:border-l-red-600":S.duringFailure?"border-l-2 border-l-amber-400 dark:border-l-amber-600":"border-l-2 border-l-transparent"}const F=A(null),L=A(!1);function m(S){F.value=S,L.value=!0}return(S,V)=>{const B=We,I=pe,G=Re,J=po;return s(),a("div",null,[o("div",yo,[r(B,{modelValue:e(h),"onUpdate:modelValue":V[0]||(V[0]=N=>ge(h)?h.value=N:null),items:e(g),size:"xs",variant:"link",ui:{list:"gap-2",trigger:"px-1.5"}},null,8,["modelValue","items"]),t.data.failingWindow?(s(),a("span",ho,[...V[2]||(V[2]=[o("span",{class:"inline-block w-3 h-2 rounded-sm bg-red-500/10 border border-red-300 dark:border-red-800"},null,-1),f(" failing action ",-1)])])):i("",!0)]),o("div",xo,[(s(!0),a(U,null,ee(e(n),N=>(s(),a("button",{key:N.index,type:"button",class:X([v(N),"w-full rounded bg-gray-50/60 dark:bg-gray-800/40 py-1.5 px-2 text-left cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800"]),title:N.url,onClick:ne=>m(N)},[o("div",_o,[r(I,{color:("httpMethodColor"in S?S.httpMethodColor:e(He))(N.method),variant:"soft",size:"xs",class:"font-mono shrink-0"},{default:u(()=>[f(c(N.method),1)]),_:2},1032,["color"]),r(I,{color:("httpStatusColor"in S?S.httpStatusColor:e(Ke))(N.status),variant:"soft",size:"xs",class:"font-mono shrink-0 tabular-nums",title:N.failureText||N.statusText},{default:u(()=>[f(c(N.status>0?N.status:"—"),1)]),_:2},1032,["color","title"]),o("code",ko,c(l(N.url)),1),N.resourceType?(s(),a("span",bo,c(N.resourceType),1)):i("",!0),N.responseBodySize!=null?(s(),a("span",wo,c(("formatBytes"in S?S.formatBytes:e(we))(N.responseBodySize)),1)):i("",!0),o("span",{class:X(["ml-1 shrink-0 text-xs tabular-nums",N.duration>1e3?"text-red-600 font-medium":N.duration>500?"text-orange-500":"text-gray-500"])},[r(G,{ms:N.duration,"unit-class":"opacity-60"},null,8,["ms"])],2)]),o("div",$o,[e(M)?(s(),a("div",{key:0,class:"absolute inset-y-0 bg-red-500/10 border-x border-red-300/60 dark:border-red-800/60",style:Ce(e(M))},null,4)):i("",!0),o("div",{class:X(["absolute inset-y-0 rounded-full",b(N)]),style:Ce(D(N))},null,6)])],10,vo))),128))]),t.data.truncated?(s(),a("p",Co," Showing the first "+c(e(w).length)+" of "+c(t.data.totalBeforeCap)+" requests recorded in the trace. ",1)):i("",!0),r(J,{open:e(L),"onUpdate:open":V[1]||(V[1]=N=>ge(L)?L.value=N:null),entry:e(F),"run-id":t.runId,"test-runs-case-id":t.testRunsCaseId},null,8,["open","entry","run-id","test-runs-case-id"])])}}}),So=Object.assign(To,{__name:"TraceNetworkList"}),Io={class:"flex flex-wrap items-center gap-x-3 gap-y-1"},Ro={key:0,class:"flex items-center gap-2 text-xs"},jo={key:0,class:"flex items-center gap-1 text-red-600 dark:text-red-400"},Lo={key:1,class:"flex items-center gap-1 text-amber-600 dark:text-amber-400"},zo={key:2,class:"text-xs text-gray-400 py-2"},Mo={key:1,class:"space-y-1 max-h-[28rem] overflow-y-auto"},No=["disabled","onClick"],Do={key:1,class:"size-3.5 shrink-0"},Po=["title"],Ao=["title"],Uo=["title"],Bo=["title"],Fo=["title"],Vo=["title"],Eo={key:0,class:"px-2 pt-1.5 pb-2 pl-7 space-y-1"},Oo={class:"flex items-center gap-1.5 text-[11px] uppercase tracking-wide text-gray-400"},Ho=["title"],Ko={key:0,class:"shrink-0 text-[10px] uppercase text-gray-400 font-mono hidden sm:inline"},Wo={class:"relative flex-1 h-3 rounded bg-gray-100 dark:bg-gray-800 min-w-0"},Go={key:1,class:"px-2 pb-2 pl-7 space-y-1.5"},Jo={class:"flex items-start gap-2"},qo={key:0,class:"text-gray-400 shrink-0 font-mono"},Qo={class:"font-mono break-all text-gray-700 dark:text-gray-300 flex-1 min-w-0"},Zo=["title"],Xo={key:0,class:"mt-1.5"},Yo=["onClick"],er={key:0,class:"mt-1 whitespace-pre-wrap break-all font-mono text-[11px] leading-relaxed text-gray-500 dark:text-gray-400 max-h-48 overflow-y-auto"},tr={key:2,class:"mt-3 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},sr={key:3,class:"mt-3 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},nr=re({__name:"TestCaseNetworkRequests",props:{requests:{},runId:{},testRunsCaseId:{},hasTrace:{type:Boolean}},setup(t,{expose:k}){const h=t,w=A("all"),{data:$,pending:g,load:n}=_a(()=>h.runId,()=>h.testRunsCaseId,()=>!!h.hasTrace),l=A(null),d=C({get:()=>l.value??(h.requests.length===0&&h.hasTrace?"trace":"captured"),set:x=>{l.value=x}});ve(()=>d.value==="trace",x=>{x&&n()},{immediate:!0});const D=C(()=>$.value?.status==="ok"?$.value.requests?.length??0:null),M=C(()=>[{label:`Captured (${h.requests.length})`,value:"captured",disabled:h.requests.length===0},{label:D.value!=null?`Full trace (${D.value})`:"Full trace",value:"trace"}]);function b(){h.hasTrace&&(l.value="trace")}k({showTraceMode:b});const v=A(new Set);function F(x){const T=new Set(v.value);T.has(x)?T.delete(x):T.add(x),v.value=T}const L=A(new Set);function m(x){const T=new Set(L.value);T.has(x)?T.delete(x):T.add(x),L.value=T}function S(x){if(x.length===0)return[];const T=Math.min(...x.map(H=>H.startMs)),K=Math.max(...x.map(H=>H.startMs+H.durMs)),q=Math.max(1,K-T),Q=new Map(x.map(H=>[H.id,H])),te=H=>{let Z=0,Y=H;const ae=new Set;for(;Y?.parentId&&Q.has(Y.parentId)&&!ae.has(Y.id)&&(ae.add(Y.id),Y=Q.get(Y.parentId),Z++,!(Z>8)););return Z};return[...x].sort((H,Z)=>H.startMs-Z.startMs||Z.durMs-H.durMs).map(H=>({...H,offsetPct:(H.startMs-T)/q*100,widthPct:Math.max(1.5,H.durMs/q*100),depth:te(H)}))}function V(x){return x.status==="error"?"bg-red-400 dark:bg-red-500":x.kind==="db"?"bg-violet-400 dark:bg-violet-500":x.kind==="client"?"bg-sky-400 dark:bg-sky-500":x.kind==="internal"?"bg-gray-400 dark:bg-gray-500":"bg-emerald-400 dark:bg-emerald-500"}function B(x){const T=x.toLowerCase();return T==="critical"||T==="fatal"?3:T==="error"?2:T==="warning"||T==="warn"?1:0}function I(x){const T=B(x);if(T>=2)return"error";if(T===1)return"warning";const K=x.toLowerCase();return K==="info"||K==="information"?"info":"neutral"}function G(x){try{return new URL(x).pathname||x}catch{return x}}function J(x){return(x.split("/")[1]??x).replace(/^vnd\.[^+]*\+?/,"").replace(/^x-/,"")||x}function N(x){return x?new Date(x).toLocaleString():""}const ne=C(()=>h.requests.map((x,T)=>{const K=Array.isArray(x.serverLogs)?x.serverLogs:[],q=Array.isArray(x.serverTraces)?x.serverTraces:[];let Q=0,te=0;for(const Z of K){const Y=B(Z.level);Y>=2?Q++:Y===1&&te++}const H=q.find(Z=>!Z.parentId)??q[0];return{...x,_index:T,logs:[...K].sort((Z,Y)=>Z.timestamp-Y.timestamp),spans:q,serverMs:H?H.durMs:null,errorLogCount:Q,warnLogCount:te,failed:x.status>=400,hasDetail:K.length>0||q.length>0,path:G(x.url)}})),O=C(()=>{let x=0,T=0,K=0,q=0,Q=0;for(const te of ne.value)te.failed&&x++,te.logs.length>0&&T++,te.spans.length>0&&K++,q+=te.errorLogCount,Q+=te.warnLogCount;return{total:ne.value.length,failed:x,withLogs:T,withSpans:K,errorLogs:q,warnLogs:Q}}),le=C(()=>{let x=ne.value;return w.value==="failed"?x=x.filter(T=>T.failed):w.value==="logs"&&(x=x.filter(T=>T.logs.length>0)),[...x].sort((T,K)=>{const q=Q=>(Q.errorLogCount>0?3:0)+(Q.failed?2:0)+(Q.logs.length>0?1:0);return q(K)-q(T)||T._index-K._index})}),y=C(()=>[{label:`All (${O.value.total})`,value:"all"},{label:`Failed (${O.value.failed})`,value:"failed",disabled:O.value.failed===0},{label:`With logs (${O.value.withLogs})`,value:"logs",disabled:O.value.withLogs===0}]),P=C(()=>O.value.withLogs>0);function se(x){return x.errorLogCount>0||x.status>=500?"border-l-2 border-l-red-400 dark:border-l-red-600":x.failed||x.warnLogCount>0?"border-l-2 border-l-amber-400 dark:border-l-amber-600":"border-l-2 border-l-transparent"}return(x,T)=>{const K=ue,q=We,Q=Ge,te=So,H=pe,Z=Re,Y=kt,ae=ye;return s(),_(ae,{icon:"i-lucide-network",title:"Network & backend logs",count:e(d)==="trace"?e(D):e(O).total,help:"case.network"},{actions:u(()=>[o("div",Io,[e(d)==="captured"?(s(),a(U,{key:0},[e(O).errorLogs>0||e(O).warnLogs>0?(s(),a("div",Ro,[e(O).errorLogs>0?(s(),a("span",jo,[r(K,{name:"i-lucide-octagon-alert",class:"size-3.5"}),f(c(e(O).errorLogs),1)])):i("",!0),e(O).warnLogs>0?(s(),a("span",Lo,[r(K,{name:"i-lucide-triangle-alert",class:"size-3.5"}),f(c(e(O).warnLogs),1)])):i("",!0)])):i("",!0),r(q,{modelValue:e(w),"onUpdate:modelValue":T[0]||(T[0]=z=>ge(w)?w.value=z:null),items:e(y),size:"xs",variant:"link",ui:{list:"gap-2",trigger:"px-1.5"}},null,8,["modelValue","items"])],64)):i("",!0),t.hasTrace?(s(),_(q,{key:1,modelValue:e(d),"onUpdate:modelValue":T[1]||(T[1]=z=>ge(d)?d.value=z:null),items:e(M),size:"xs",variant:"pill",ui:{list:"gap-1 p-0.5",trigger:"px-2"}},null,8,["modelValue","items"])):i("",!0)])]),default:u(()=>[e(d)==="trace"?(s(),a(U,{key:0},[e(g)||!e($)?(s(),_(Q,{key:0,text:"Parsing trace network stream…"})):e($).status==="ok"?(s(),_(te,{key:1,data:e($),"run-id":t.runId??null,"test-runs-case-id":t.testRunsCaseId??0},null,8,["data","run-id","test-runs-case-id"])):(s(),a("p",zo,"No network activity recorded in this trace."))],64)):(s(),a("div",Mo,[(s(!0),a(U,null,ee(e(le),z=>(s(),a("div",{key:z._index,class:X([se(z),"rounded bg-gray-50/60 dark:bg-gray-800/40"])},[o("button",{type:"button",class:X(["w-full flex items-center gap-2 py-1.5 px-2 text-sm text-left",z.hasDetail?"cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800":"cursor-default"]),disabled:!z.hasDetail,onClick:W=>z.hasDetail&&F(z._index)},[z.hasDetail?(s(),_(K,{key:0,name:e(v).has(z._index)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5 shrink-0 text-gray-400"},null,8,["name"])):(s(),a("span",Do)),r(H,{color:("httpMethodColor"in x?x.httpMethodColor:e(He))(z.method),variant:"soft",size:"xs",class:"font-mono shrink-0"},{default:u(()=>[f(c(z.method),1)]),_:2},1032,["color"]),r(H,{color:("httpStatusColor"in x?x.httpStatusColor:e(Ke))(z.status),variant:"soft",size:"xs",class:"font-mono shrink-0 tabular-nums"},{default:u(()=>[f(c(z.status||"—"),1)]),_:2},1032,["color"]),o("code",{class:"truncate text-xs flex-1 min-w-0",title:z.url},c(z.path),9,Po),z.contentType?(s(),a("span",{key:2,class:"shrink-0 text-xs text-gray-400 font-mono hidden md:inline",title:`Response content type: ${z.contentType}`},c(J(z.contentType)),9,Ao)):i("",!0),z.errorLogCount>0?(s(),a("span",{key:3,class:"shrink-0 inline-flex items-center gap-1 text-xs text-red-600 dark:text-red-400",title:`${z.errorLogCount} backend error log(s)`},[r(K,{name:"i-lucide-octagon-alert",class:"size-3.5"}),f(c(z.errorLogCount),1)],8,Uo)):i("",!0),z.warnLogCount>0?(s(),a("span",{key:4,class:"shrink-0 inline-flex items-center gap-1 text-xs text-amber-600 dark:text-amber-400",title:`${z.warnLogCount} backend warning log(s)`},[r(K,{name:"i-lucide-triangle-alert",class:"size-3.5"}),f(c(z.warnLogCount),1)],8,Bo)):i("",!0),z.serverMs!=null?(s(),a("span",{key:5,class:"shrink-0 inline-flex items-center gap-1 text-xs text-emerald-600 dark:text-emerald-400 tabular-nums",title:`Server-side processing time (${z.spans.length} span${z.spans.length===1?"":"s"})`},[r(K,{name:"i-lucide-server",class:"size-3.5"}),r(Z,{ms:z.serverMs,"no-title":""},null,8,["ms"])],8,Fo)):i("",!0),z.startTime?(s(),a("span",{key:6,class:"shrink-0 text-xs text-gray-400 hidden sm:inline",title:N(z.startTime)},c(("formatRelativeTime"in x?x.formatRelativeTime:e(Se))(z.startTime)),9,Vo)):i("",!0),o("span",{class:X(["ml-1 shrink-0 text-xs tabular-nums",(z.duration??0)>1e3?"text-red-600 font-medium":(z.duration??0)>500?"text-orange-500":"text-gray-500"])},[r(Z,{ms:z.duration,"unit-class":"opacity-60"},null,8,["ms"])],2)],10,No),z.spans.length>0&&e(v).has(z._index)?(s(),a("div",Eo,[o("div",Oo,[r(K,{name:"i-lucide-waypoints",class:"size-3.5"}),T[2]||(T[2]=f("Server trace ",-1))]),(s(!0),a(U,null,ee(S(z.spans),W=>(s(),a("div",{key:W.id,class:"flex items-center gap-2 text-xs",title:W.status==="error"?`${W.name} (error)`:W.name},[o("div",{class:"w-40 sm:w-56 shrink-0 flex items-center gap-1 min-w-0",style:Ce({paddingLeft:`${W.depth*12}px`})},[W.kind?(s(),a("span",Ko,c(W.kind),1)):i("",!0),o("span",{class:X(["truncate font-mono",W.status==="error"?"text-red-600 dark:text-red-400":"text-gray-600 dark:text-gray-300"])},c(W.name),3)],4),o("div",Wo,[o("div",{class:X(["absolute top-0 h-3 rounded",V(W)]),style:Ce({left:`${W.offsetPct}%`,width:`${W.widthPct}%`})},null,6)]),r(Z,{ms:W.durMs,class:"w-12 shrink-0 text-right text-gray-500"},null,8,["ms"])],8,Ho))),128))])):i("",!0),z.logs.length>0&&e(v).has(z._index)?(s(),a("div",Go,[(s(!0),a(U,null,ee(z.logs,(W,he)=>(s(),a("div",{key:he,class:"rounded border border-default bg-white dark:bg-gray-900/60 p-2 text-xs"},[o("div",Jo,[r(H,{color:I(W.level),variant:"soft",size:"xs",class:"shrink-0 capitalize"},{default:u(()=>[f(c(W.level),1)]),_:2},1032,["color"]),W.category?(s(),a("span",qo,"["+c(W.category)+"]",1)):i("",!0),o("span",Qo,c(W.message),1),W.timestamp?(s(),a("span",{key:1,class:"shrink-0 text-gray-400 tabular-nums",title:N(W.timestamp)},c(("formatRelativeTime"in x?x.formatRelativeTime:e(Se))(W.timestamp)),9,Zo)):i("",!0)]),W.stack?(s(),a("div",Xo,[o("button",{type:"button",class:"inline-flex items-center gap-1 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200",onClick:Je=>m(`${z._index}:${he}`)},[r(K,{name:e(L).has(`${z._index}:${he}`)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3"},null,8,["name"]),T[3]||(T[3]=f(" Stack trace ",-1))],8,Yo),e(L).has(`${z._index}:${he}`)?(s(),a("pre",er,c(W.stack),1)):i("",!0)])):i("",!0)]))),128))])):i("",!0)],2))),128))])),e(d)==="captured"&&!e(P)?(s(),a("p",tr,[r(K,{name:"i-lucide-info",class:"size-3.5 shrink-0"}),T[5]||(T[5]=f(" No backend server logs captured — install ",-1)),r(Y,{to:"backend-logs","no-icon":"",class:"underline"},{default:u(()=>[...T[4]||(T[4]=[f("a Piwi backend integration",-1)])]),_:1}),T[6]||(T[6]=f(" to see server-side warnings and errors under each request. ",-1))])):i("",!0),t.hasTrace?i("",!0):(s(),a("p",sr,[r(K,{name:"i-lucide-info",class:"size-3.5 shrink-0"}),o("span",null,[T[8]||(T[8]=f(" Want to go deeper? Record traces (",-1)),T[9]||(T[9]=o("code",null,"trace: 'retain-on-failure'",-1)),T[10]||(T[10]=f(") to see every request with headers, timing and bodies here. ",-1)),r(Y,{to:"ui-overview#trace-powered-deep-views","no-icon":"",class:"underline"},{default:u(()=>[...T[7]||(T[7]=[f("Learn more",-1)])]),_:1})])]))]),_:1},8,["count"])}}}),ar=Object.assign(nr,{__name:"TestCaseNetworkRequests"}),or={class:"space-y-2"},rr=re({__name:"TestCaseTracesCard",props:{traces:{}},setup(t){return(k,h)=>{const w=gs,$=ye;return t.traces.length>0?(s(),_($,{key:0,icon:"i-lucide-bug-play",title:"Traces",count:t.traces.length,help:"case.traces"},{default:u(()=>[o("div",or,[(s(!0),a(U,null,ee(t.traces,g=>(s(),_(w,{key:g.id,trace:g,class:"py-2 px-3 rounded-lg border"},null,8,["trace"]))),128))])]),_:1},8,["count"])):i("",!0)}}}),ir=Object.assign(rr,{__name:"TestCaseTracesCard"}),lr={class:"space-y-3"},cr={class:"flex items-center justify-between px-3 py-2 bg-gray-50 dark:bg-gray-800/50 border-b"},ur={class:"flex items-center gap-2 min-w-0"},dr={class:"text-sm font-medium truncate"},mr={key:0,class:"text-xs text-gray-400 shrink-0"},fr={class:"text-xs text-gray-400"},gr={class:"flex items-center gap-1 shrink-0"},pr=["href"],yr={key:0,class:"bg-gray-100 dark:bg-gray-900"},hr=["src","alt","onClick"],xr={key:1,class:"bg-black"},vr={key:2,class:"bg-gray-50 dark:bg-gray-900"},_r={key:0,class:"flex items-center justify-center py-8"},kr={key:1,class:"p-4 text-red-500 text-sm"},br={key:2,class:"p-4 overflow-auto max-h-96"},wr={class:"text-sm whitespace-pre-wrap font-sans leading-relaxed"},$r=re({__name:"TestCaseAttachmentsCard",props:{attachments:{}},setup(t){const k=t,h=Ee(),w=A(null),$=C(()=>k.attachments.filter(I=>Te(I.path,I.contentType)).map(I=>({src:M(I.path,I.contentType),name:I.name||b(I.path)})));function g(I){w.value=I}const n=new Set([".md",".mdx",".markdown"]),l=new Set(["text/markdown","text/x-markdown"]);function d(I){return I.toLowerCase().split(".").pop()||""}function D(I,G){return!!(n.has(d(I))||G&&l.has(G.toLowerCase()))}function M(I,G){return wt(I,G,h.app?.baseURL)}function b(I){return I.split("/").pop()||I}function v(I){return I==null?"":we(I)}const F=A({}),L=A({}),m=A({}),S=A(new Set);async function V(I){if(F.value[I.id]===void 0&&!m.value[I.id]){m.value[I.id]=!0,L.value[I.id]=null;try{const G=await $fetch(M(I.path,I.contentType),{responseType:"text"});F.value[I.id]=G}catch{L.value[I.id]="Failed to load preview"}finally{m.value[I.id]=!1}}}function B(I,G){const J=new Set(S.value);J.has(I)?J.delete(I):(J.add(I),V(G)),S.value=J}return(I,G)=>{const J=ue,N=Ie,ne=ps,O=ys,le=ye;return t.attachments.length>0?(s(),_(le,{key:0,icon:"i-lucide-paperclip",title:"Attachments",count:t.attachments.length},{default:u(()=>[o("div",lr,[(s(!0),a(U,null,ee(t.attachments,y=>(s(),a("div",{key:y.id,class:"rounded-lg border overflow-hidden"},[o("div",cr,[o("div",ur,[r(J,{name:e(Te)(y.path,y.contentType)?"i-lucide-image":e(De)(y.path,y.contentType)?"i-lucide-video":D(y.path,y.contentType)?"i-lucide-file-text":"i-lucide-file",class:"size-4 text-gray-400 shrink-0"},null,8,["name"]),o("span",dr,c(b(y.path)),1),y.name&&y.name!==b(y.path)?(s(),a("span",mr,c(y.name),1)):i("",!0),o("span",fr,c(v(y.size)),1)]),o("div",gr,[D(y.path,y.contentType)?(s(),_(N,{key:0,size:"xs",color:"neutral",variant:"soft",onClick:P=>B(y.id,y)},{default:u(()=>[f(c(e(S).has(y.id)?"Hide preview":"Preview"),1)]),_:2},1032,["onClick"])):i("",!0),o("a",{href:M(y.path,y.contentType),target:"_blank",class:"text-primary hover:underline text-xs shrink-0"},"Open",8,pr)])]),e(Te)(y.path,y.contentType)?(s(),a("div",yr,[o("img",{src:M(y.path,y.contentType),alt:y.name||"Screenshot",class:"max-w-full max-h-96 object-contain mx-auto cursor-pointer hover:opacity-90 transition-opacity",loading:"lazy",onClick:P=>g(e($).findIndex(se=>se.src===M(y.path,y.contentType)))},null,8,hr)])):e(De)(y.path,y.contentType)?(s(),a("div",xr,[r(ne,{src:M(y.path,y.contentType)},null,8,["src"])])):D(y.path,y.contentType)&&e(S).has(y.id)?(s(),a("div",vr,[e(m)[y.id]?(s(),a("div",_r,[r(J,{name:"i-lucide-loader-circle",class:"size-5 animate-spin text-gray-400"})])):e(L)[y.id]?(s(),a("div",kr,c(e(L)[y.id]),1)):e(F)[y.id]?(s(),a("div",br,[o("pre",wr,c(e(F)[y.id]),1)])):i("",!0)])):i("",!0)]))),128))]),r(O,{modelValue:e(w),"onUpdate:modelValue":G[0]||(G[0]=y=>ge(w)?w.value=y:null),images:e($)},null,8,["modelValue","images"])]),_:1},8,["count"])):i("",!0)}}}),Cr=Object.assign($r,{__name:"TestCaseAttachmentsCard"});function Tr(t){return Array.isArray(t)?t.some(k=>k&&typeof k.type=="string"&&k.type.toLowerCase()==="slow"):!1}function Sr(t){const k=[];if(!t)return k;const h=t.steps||[],$=h.filter(n=>n.category==="navigation").filter(n=>n.duration>3e3);if($.length>0){const n=$.sort((l,d)=>d.duration-l.duration)[0];k.push({type:"warning",message:"Slow navigation detected",details:`"${n.title}" took ${(n.duration/1e3).toFixed(1)}s. The tested page may have performance issues (slow server response, heavy JS bundles, etc.).`})}h.length>20&&k.push({type:"info",message:"Many sequential actions",details:`This test has ${h.length} steps. Consider splitting it into smaller, focused tests for better isolation and faster feedback.`}),t.status==="passed"&&(t.retries||0)>0&&k.push({type:"warning",message:"Flaky test — passed after retries",details:`This test needed ${t.retries} ${t.retries===1?"retry":"retries"} to pass. Consider reviewing locator strategies, adding explicit waits, or checking for race conditions.`});const g=h.filter(n=>n.category==="assertion"&&n.duration>2e3);if(g.length>0){const n=g.sort((l,d)=>d.duration-l.duration)[0];k.push({type:"info",message:"Slow assertions detected",details:`"${n.title}" took ${(n.duration/1e3).toFixed(1)}s. The UI may be slow to render or the assertion timeout may need tuning.`})}return Tr(t.testAnnotations)&&typeof t.duration=="number"&&t.duration<1e4&&k.push({type:"info",message:"test.slow() may be unnecessary",details:`This run finished in ${(t.duration/1e3).toFixed(1)}s, yet the test is marked test.slow(), which triples its timeout budget. If it is consistently this fast, removing test.slow() lets a failure surface sooner.`}),typeof t.timeout=="number"&&t.timeout>0&&typeof t.duration=="number"&&t.duration>0&&t.timeout>=4*t.duration&&t.timeout-t.duration>=3e4&&k.push({type:"info",message:"Oversized timeout",details:`The timeout is ${(t.timeout/1e3).toFixed(0)}s but this run took ${(t.duration/1e3).toFixed(1)}s. A large timeout means a hang or failure waits far longer than necessary — consider lowering it toward the test's real duration.`}),k}function Ir(t,k){const h=t.search(/\n at /);if(h===-1)return k!==void 0&&t.length>k?t.slice(0,k)+`
4
- [truncated]`:t;const w=t.slice(0,h),g=t.slice(h).split(`
5
- `),n=[];let l=0;const d=()=>{l>0&&(n.push(`… (${l} internal frame${l>1?"s":""})`),l=0)};for(const M of g){const b=M.trimStart();b.startsWith("at ")?M.includes("node_modules")||b.startsWith("at node:")?l++:(d(),n.push(M)):(b===""||d(),n.push(M))}d();let D=w+`
6
- `+n.join(`
7
- `);return k!==void 0&&D.length>k&&(D=D.slice(0,k)+`
8
- [truncated]`),D}const Rr={class:"space-y-4"},jr=["innerHTML"],Lr={class:"grid grid-cols-1 xl:grid-cols-[3fr_2fr] gap-4"},zr={class:"space-y-4 xl:order-2"},Mr={class:"space-y-4 xl:order-1 min-w-0"},Nr={class:"max-h-96 overflow-y-auto"},Dr={class:"space-y-3"},Pr={key:0},Ar={class:"flex flex-wrap items-center gap-x-3 gap-y-1.5 text-xs mb-3"},Ur={class:"font-medium text-gray-600 dark:text-gray-300"},Br={class:"tabular-nums text-gray-500 dark:text-gray-400"},Fr={class:"text-xs tabular-nums text-gray-400 dark:text-gray-500"},Vr={key:0,class:"inline-flex items-center justify-center size-5 rounded-full bg-red-100 dark:bg-red-900/30 text-red-600 dark:text-red-400 text-xs leading-none",title:"Step failed"},Er={key:1,class:"inline-flex items-center justify-center size-5 rounded-full bg-green-100 dark:bg-green-900/30 text-green-600 dark:text-green-400 text-xs leading-none",title:"Step passed"},Or={class:"flex items-center gap-2"},Hr={key:0,class:"text-xs text-red-500 mt-1 whitespace-pre-wrap break-words font-mono"},Kr={class:"min-w-[6rem]"},Wr={class:"flex items-center justify-between gap-2"},Gr={key:0,class:"text-xs tabular-nums text-gray-400 dark:text-gray-500"},Jr={class:"relative mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},qr={class:"space-y-4 pt-4"},Qr={key:3,class:"flex flex-col items-center justify-center py-12 text-gray-400"},Zr={class:"space-y-4 pt-1"},Xr={key:0,class:"space-y-2"},Yr={class:"flex items-start gap-2"},ei={class:"space-y-4"},ti={key:3,class:"text-xs text-gray-400 pt-1"},si={class:"bg-gray-100 dark:bg-gray-800 px-1 rounded"},ni={class:"space-y-4 pt-4"},ai={key:0,class:"space-y-4"},oi={class:"flex items-center justify-end"},ri={class:"text-xs whitespace-nowrap"},ii={class:"text-gray-500"},li={class:"text-gray-400 ml-1"},ci={key:1,class:"text-gray-400"},ui=["title"],fl=re({__name:"[id]",async setup(t){let k,h;const w=ns(),$=as(),g=w.params.id,{data:n,refresh:l}=([k,h]=mt(()=>gt(`/api/test-run-cases/${g}`,"$rX1OuZQOSq")),k=await k,h(),k),d=A([]);ve(()=>n.value?.testCaseId,async p=>{if(p)try{d.value=await $fetch(`/api/test-cases/${p}/history`)}catch{d.value=[]}else d.value=[]},{immediate:!0});const{data:D,refresh:M}=([k,h]=mt(()=>gt(`/api/test-run-cases/${g}/traces`,"$bq3dlhiM5e")),k=await k,h(),k),b=C(()=>(D.value?.length??0)>0);os(C(()=>({title:n.value?.title?`${n.value.title} — execution — Piwi Dashboard`:`Execution #${g} — Piwi Dashboard`})));const v=C(()=>!!n.value?.error),F=C(()=>n.value?Sr(n.value):[]),L=C(()=>n.value?.steps?n.value.steps:[]),m=C(()=>n.value?.webVitals??null),S=C(()=>n.value?.networkRequests??[]),V=C(()=>{if(!d.value||d.value.length<2||!n.value?.duration)return null;const p=d.value.filter(ce=>ce.duration!==null&&ce.id!==n.value?.id);if(p.length===0)return null;const R=p.reduce((ce,fe)=>ce+(fe.duration||0),0)/p.length,E=n.value.duration,oe=E-R,me=R>0?Math.round(oe/R*100):0;return{avg:Math.round(R),current:E,diff:Math.round(oe),pct:me}}),B=C(()=>n.value?.testRun?.metadata),I=C(()=>{const p=B.value;return p?.scm?p.scm:null}),G=C(()=>{const p=B.value;return p?.ci?p.ci:null}),J=C(()=>n.value?.failureCluster??null),N=C(()=>{const p=[];return v.value&&p.push({label:"Diagnosis",icon:"i-lucide-stethoscope",value:"diagnosis",slot:"diagnosis"}),p.push({label:`Steps (${L.value.length})`,icon:"i-lucide-list-checks",value:"steps",slot:"steps"}),v.value||p.push({label:"Artifacts",icon:"i-lucide-paperclip",value:"artifacts",slot:"artifacts"}),p.push({label:"Performance",icon:"i-lucide-gauge",value:"performance",slot:"performance"}),p.push({label:`History${d.value?.length?` (${d.value.length})`:""}`,icon:"i-lucide-trending-up",value:"history",slot:"history"}),p}),ne=C(()=>N.value.map(p=>p.value));function O(){return v.value?"diagnosis":"steps"}function le(p){let R=typeof p=="string"?p:"";return R==="error"&&(R="diagnosis"),R==="traces"&&(R=v.value?"diagnosis":"artifacts"),ne.value.includes(R)?R:O()}const y=A(le(w.query.tab));ve(ne,p=>{p.includes(y.value)||(y.value=le(w.query.tab))}),ve(y,p=>{w.query.tab!==p&&$.replace({query:{...w.query,tab:p}})},{immediate:!0});const P=[{accessorKey:"startTime",header:"Date"},{accessorKey:"status",header:"Status"},{accessorKey:"duration",header:"Duration"},{accessorKey:"retries",header:"Retries"},{accessorKey:"runId",header:"Run"},{accessorKey:"error",header:"Error"}],se={navigation:"info",assertion:"success",action:"warning",input:"warning",api:"info",wait:"neutral",hook:"neutral",fixture:"neutral"},x=[{id:"index",header:"#",meta:{class:{th:"w-12",td:"w-12"}}},{id:"status",header:"",meta:{class:{th:"w-10",td:"w-10"}}},{accessorKey:"category",header:"Category",meta:{class:{th:"w-28",td:"w-28"}}},{accessorKey:"title",header:"Step"},{accessorKey:"duration",header:"Duration",meta:{class:{th:"w-44",td:"w-44"}}}],T=C(()=>{const p=new Map;for(const R of L.value){const E=p.get(R.category)??{count:0,duration:0};E.count+=1,E.duration+=R.duration||0,p.set(R.category,E)}return Array.from(p,([R,E])=>({category:R,...E})).sort((R,E)=>E.duration-R.duration)}),K=C(()=>{let p=-1,R=-1;return L.value.forEach((E,oe)=>{(E.duration||0)>R&&(R=E.duration||0,p=oe)}),p}),q=C(()=>L.value.reduce((p,R)=>Math.max(p,R.duration||0),0)),Q=C(()=>L.value.length>0&&L.value.every(p=>typeof p.startTime=="number")),te=C(()=>n.value?.startedAt??(Q.value?Math.min(...L.value.map(p=>p.startTime)):0)),H=C(()=>{const p=n.value?.duration??0;if(p>0)return p;if(Q.value){const R=Math.max(...L.value.map(E=>E.startTime+(E.duration||0)));return Math.max(1,R-te.value)}return 0});function Z(p){if(Q.value&&H.value>0){const E=Math.max(0,Math.min(100,(p.startTime-te.value)/H.value*100)),oe=Math.min(100-E,Math.max(1.5,(p.duration||0)/H.value*100));return{left:`${E}%`,width:`${oe}%`}}return{left:"0%",width:`${q.value>0?Math.max(2,(p.duration||0)/q.value*100):0}%`}}function Y(p){const R=n.value?.duration??0;if(R<=0)return"";const E=p/R*100;return E>0&&E<1?"<1%":`${Math.round(E)}%`}function ae(p){return p>2e3?"text-red-600 font-medium":p>500?"text-orange-500":"text-gray-500"}function z(p){return p>2e3?"bg-red-500":p>500?"bg-orange-400":"bg-gray-400 dark:bg-gray-500"}const W=C(()=>n.value?.testRun?.environment),he=C(()=>[{filePath:n.value?.filePath??"",title:n.value?.title??"",line:n.value?.line??null,projectName:n.value?.browser?.projectName??null}]),Je=C(()=>sn(he.value)),{copy:St,copied:qe}=nn(),It=C(()=>[{label:qe.value?"Copied":"Retry command",icon:qe.value?"i-lucide-check":"i-lucide-play",onClick:()=>St(Je.value,{toast:"Retry command copied"})},{label:"Refresh",icon:"i-lucide-refresh-cw",onClick:()=>l()}]),Rt=!!Ee().public.demoMode;let xe=null;const Qe=C(()=>{const p=n.value?.testRun?.status;return p==="running"||p==="finalizing"});function jt(){if(Rt||xe)return;const p=n.value?.testRun?.id;p&&(xe=new EventSource(`/api/test-runs/${p}/stream`),xe.onmessage=R=>{try{const E=JSON.parse(R.data);E.type==="case-files"&&E.data?.testRunsCaseId===Number(g)?(l(),M()):E.type==="run-finished"&&(l(),M(),Ae())}catch{}},xe.onerror=()=>{})}function Ae(){xe&&(xe.close(),xe=null)}ve(Qe,p=>{p?jt():Ae()},{immediate:!0}),rs(Ae);const{copyRich:Lt,copied:Ze}=hs();function zt(){const p=n.value;if(!p?.error)return;const R=window.location.origin,E=p.title??"Unknown test",oe=p.location??"",me=p.error.replace(/\x1b\[[0-9;]*[a-zA-Z]/g,""),ce=be=>be.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),fe=J.value?`${R}/failure-clusters/${J.value.id}`:null,Me=`${R}/test-run-cases/${g}?tab=diagnosis`,ke=n.value?.testCaseId?`${R}/test-cases/${n.value.testCaseId}`:null,Be=[`❌ Test failed: ${E}`,oe?`Location: ${oe}`:null,"","Error:",me,"",fe?`Failure cluster: ${fe}`:null,`Execution: ${Me}`,ke?`History: ${ke}`:null].filter(be=>be!==null).join(`
9
- `),Fe=[`<p><strong>❌ Test failed: ${ce(E)}</strong>${oe?`<br><code>${ce(oe)}</code>`:""}</p>`,`<p><strong>Error:</strong></p><pre>${ft(p.error)}</pre>`,`<p>🔗 ${fe?`<a href="${fe}">View failure cluster</a> · `:""}<a href="${Me}">Execution details</a>${ke?` · <a href="${ke}">Test history</a>`:""}</p>`].join("");Lt(Be,Fe,{toast:"Failure copied"})}const Ue=A(null),Xe=A(null),je=A(null),Le=A(null),Ye=A(null),ze=A(null),et=A(null),tt=A(null),st=A(null),nt=A(null);function _e(p){p?.scrollIntoView({behavior:"smooth",block:"start"})}const at={sampleError:()=>_e(Ue.value),executionError:()=>_e(Ue.value),testSource:()=>Le.value?.reveal(),sourceFiles:()=>Le.value?.reveal(),environmentDiff:()=>et.value?.reveal(),visualDiff:()=>tt.value?.reveal(),domSnapshot:()=>st.value?.reveal(),ariaSnapshot:()=>nt.value?.reveal(),screenshots:()=>ze.value?.reveal(),tracePointers:()=>ze.value?.reveal(),artifacts:()=>ze.value?.reveal(),console:()=>_e(Xe.value),networkRequests:()=>_e(je.value),serverTraces:()=>_e(je.value),traceCallStack:()=>Le.value?.reveal(),traceNetwork:()=>{Ye.value?.showTraceMode(),_e(je.value)},steps:()=>{y.value="steps"},failingSteps:()=>{y.value="steps"}};return is(Es,{canLocate:p=>p in at,open:p=>at[p]?.()}),(p,R)=>{const E=Yt,oe=es,me=ue,ce=Pe,fe=ws,Me=$s,ke=Cs,Be=Ss,Fe=Vn,be=Ie,Mt=$t,ot=ye,Nt=qn,Dt=ia,Pt=xa,At=Ca,Ut=za,Bt=vs,Ft=_s,Vt=ks,rt=Ba,it=ar,lt=xs,Et=bt,Ot=Oe,Ht=bs,Ne=pe,ie=Re,Kt=ht,ct=Xs,ut=Ys,dt=en,Wt=ir,Gt=Cr,de=xt,Ve=vt,Jt=Ct,qt=tn,Qt=Ls,Zt=Ts;return s(),_(Zt,{id:"test-run-case-detail"},{header:u(()=>[r(Be,null,{leading:u(()=>[r(E),r(oe,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},...e(n)?.testRun?.project?.id?[{label:e(n).testRun.project.name||"Project",to:`/projects/${e(n).testRun.project.id}`}]:[{label:"Project"}],...e(n)?.testRun?.id?[{label:`Run #${e(n).testRun.id}`+(e(n).testRun.label?` — ${e(n).testRun.label}`:""),to:`/test-runs/${e(n).testRun.id}`}]:[{label:"Test run"}],{label:e(n)?.title||`Execution #${e(g)}`}]},null,8,["items"])]),right:u(()=>[e(n)?.testCaseId?(s(),_(ce,{key:0,to:`/test-cases/${e(n).testCaseId}`,class:"text-xs text-gray-500 hover:text-primary mr-2 flex items-center gap-1",title:"View test case evolution and history"},{default:u(()=>[r(me,{name:"i-lucide-trending-up",class:"size-3.5"}),R[2]||(R[2]=o("span",{class:"hidden sm:inline"},"Evolution",-1))]),_:1},8,["to"])):i("",!0),e(n)?(s(),_(fe,{key:1,endpoint:`/api/test-run-cases/${e(n).id}/export`,"base-name":`piwi-execution-${e(n).id}`,class:"mr-2"},null,8,["endpoint","base-name"])):i("",!0),r(Me,{"project-id":e(n)?.testRun?.project?.id,"project-label":e(n)?.testRun?.project?.label??e(n)?.testRun?.project?.name,cases:e(he),class:"mr-2"},null,8,["project-id","project-label","cases"]),r(ke,{actions:e(It)},null,8,["actions"])]),_:1})]),body:u(()=>[r(Qt,{modelValue:e(y),"onUpdate:modelValue":R[1]||(R[1]=j=>ge(y)?y.value=j:null),"tab-items":e(N)},{summary:u(()=>[r(Fe,{"test-case":e(n)??null,"scm-info":e(I),"ci-info":e(G),browser:e(n)?.browser??null,environment:e(W),"steps-count":e(L).length,"historical-timing":e(V),"stable-links":e(n)?.stableLinks??null,"project-key":e(n)?.testRun?.project?.id,"project-name":e(n)?.testRun?.project?.name,onRefresh:R[0]||(R[0]=j=>e(l)())},null,8,["test-case","scm-info","ci-info","browser","environment","steps-count","historical-timing","stable-links","project-key","project-name"])]),"tab-diagnosis":u(()=>[o("div",Rr,[o("div",{ref_key:"errorEl",ref:Ue,class:"scroll-mt-4"},[e(n)?.error?(s(),_(ot,{key:0,icon:"i-lucide-circle-x","icon-class":"text-red-500",title:"Error"},{actions:u(()=>[r(Mt,{text:e(Ze)?"Copied!":"Copy failure"},{default:u(()=>[r(be,{size:"xs",variant:"ghost",color:"neutral",icon:e(Ze)?"i-lucide-check":"i-lucide-clipboard",onClick:zt},null,8,["icon"])]),_:1},8,["text"])]),default:u(()=>[o("div",{class:"text-xs font-mono whitespace-pre-wrap break-words max-h-96 overflow-y-auto rounded bg-red-50 dark:bg-red-950/20 p-3",innerHTML:e(ft)(e(Ir)(e(n).error))},null,8,jr)]),_:1})):i("",!0)],512),o("div",Lr,[o("div",zr,[r(Nt,{"test-case":e(n)??null,history:e(d),"current-id":Number(e(g))},null,8,["test-case","history","current-id"]),e(J)?(s(),_(Dt,{key:0,cluster:e(J)},null,8,["cluster"])):i("",!0),r(Pt,{"test-runs-case-id":Number(e(g))},null,8,["test-runs-case-id"])]),o("div",Mr,[e(n)?.testSourceFrames?.length||e(n)?.testSource||e(b)?(s(),_(At,{key:0,ref_key:"testSourceCard",ref:Le,"storage-key":"case-test-source",frames:e(n)?.testSourceFrames??null,"test-source":e(n)?.testSource??null,"run-id":e(n)?.testRun?.id??null,"test-runs-case-id":Number(e(g)),"has-trace":e(b),"project-key":e(n)?.testRun?.project?.id,"project-name":e(n)?.testRun?.project?.name},null,8,["frames","test-source","run-id","test-runs-case-id","has-trace","project-key","project-name"])):i("",!0),r(Ut,{ref_key:"evidenceCard",ref:ze,"storage-key":"case-evidence",attachments:e(n)?.attachments??[],traces:e(D)??[]},null,8,["attachments","traces"]),e(n)?.testRun?.id?(s(),_(Bt,{key:1,"storage-key":"case-locators","run-id":e(n).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):i("",!0),e(n)?.testRun?.id?(s(),_(Ft,{key:2,ref_key:"envDiffCard",ref:et,"storage-key":"case-env-diff","run-id":e(n).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):i("",!0),e(n)?.testRun?.id?(s(),_(Vt,{key:3,ref_key:"visualDiffCard",ref:tt,"storage-key":"case-visual-diff","run-id":e(n).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):i("",!0),e(n)?.consoleLogs?.length?(s(),a("div",{key:4,ref_key:"consoleEl",ref:Xe,class:"scroll-mt-4"},[r(rt,{entries:e(n)?.consoleLogs??[]},null,8,["entries"])],512)):i("",!0),e(S).length>0||e(b)?(s(),a("div",{key:5,ref_key:"networkEl",ref:je,class:"scroll-mt-4"},[r(it,{ref_key:"networkCard",ref:Ye,requests:e(S),"run-id":e(n)?.testRun?.id??null,"test-runs-case-id":Number(e(g)),"has-trace":e(b)},null,8,["requests","run-id","test-runs-case-id","has-trace"])],512)):i("",!0),e(n)?.pageState?(s(),_(lt,{key:6,"storage-key":"case-page-state","page-state":e(n).pageState},null,8,["page-state"])):i("",!0),e(n)?.ariaSnapshot?(s(),_(Ot,{key:7,ref_key:"ariaCard",ref:nt,"storage-key":"case-aria",icon:"i-lucide-scan-text",title:"ARIA snapshot",help:"case.aria"},{folded:u(()=>[...R[3]||(R[3]=[f("Accessibility tree captured at the moment of failure",-1)])]),default:u(()=>[o("div",Nr,[r(Et,{text:"```yaml\n"+e(n).ariaSnapshot+"\n```"},null,8,["text"])])]),_:1},512)):i("",!0),e(n)?.testRun?.id?(s(),_(Ht,{key:8,ref_key:"domSnapshotCard",ref:st,"storage-key":"case-dom-snapshot","run-id":e(n).testRun.id,"test-runs-case-id":Number(e(g))},null,8,["run-id","test-runs-case-id"])):i("",!0)])])])]),"tab-steps":u(()=>[o("div",Dr,[e(L).length>0?(s(),a("div",Pr,[o("div",Ar,[o("span",Ur,c(e(L).length)+" steps",1),R[4]||(R[4]=o("span",{class:"text-gray-300 dark:text-gray-600"},"·",-1)),(s(!0),a(U,null,ee(e(T),j=>(s(),a("span",{key:j.category,class:"inline-flex items-center gap-1"},[r(Ne,{color:se[j.category]||"neutral",variant:"soft",size:"xs"},{default:u(()=>[f(c(j.category),1)]),_:2},1032,["color"]),o("span",Br,[f("×"+c(j.count)+" · ",1),r(ie,{ms:j.duration},null,8,["ms"])])]))),128))]),r(ut,{"min-width":"40rem",bleed:!1},{default:u(()=>[r(ct,{data:e(L),columns:x,ui:{base:"table-fixed w-full border-separate border-spacing-0 min-w-[40rem]",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default align-top"}},{"index-cell":u(({row:j})=>[o("span",Fr,c(j.index+1),1)]),"status-cell":u(({row:j})=>[j.original.failed?(s(),a("span",Vr,"✗")):(s(),a("span",Er,"✓"))]),"category-cell":u(({row:j})=>[r(Ne,{color:se[j.original.category]||"neutral",variant:"soft",size:"xs"},{default:u(()=>[f(c(j.original.category),1)]),_:2},1032,["color"])]),"title-cell":u(({row:j})=>[o("div",Or,[o("span",{class:X(j.original.failed?"text-red-600 dark:text-red-400 font-medium":"")},c(j.original.title),3),j.index===e(K)?(s(),_(Ne,{key:0,color:"warning",variant:"subtle",size:"xs",class:"shrink-0",title:"Slowest step in this test"},{default:u(()=>[...R[5]||(R[5]=[f(" slowest ",-1)])]),_:1})):i("",!0)]),j.original.failed&&j.original.error?.message?(s(),a("p",Hr,c(j.original.error.message),1)):i("",!0),j.original.location?(s(),_(Kt,{key:1,location:j.original.location,"project-key":e(n)?.testRun?.project?.id,"project-name":e(n)?.testRun?.project?.name,class:"text-xs text-gray-400 dark:text-gray-500 mt-0.5"},null,8,["location","project-key","project-name"])):i("",!0)]),"duration-cell":u(({row:j})=>[o("div",Kr,[o("div",Wr,[r(ie,{ms:j.original.duration,class:X(`text-sm ${ae(j.original.duration)}`),"unit-class":"opacity-60"},null,8,["ms","class"]),Y(j.original.duration)?(s(),a("span",Gr,c(Y(j.original.duration)),1)):i("",!0)]),o("div",Jr,[o("div",{class:X(["absolute inset-y-0 rounded-full",z(j.original.duration)]),style:Ce(Z(j.original))},null,6)])])]),_:1},8,["data"])]),_:1})])):(s(),_(dt,{key:1,icon:"i-lucide-list-checks",text:"No steps recorded for this execution"}))])]),"tab-artifacts":u(()=>[o("div",qr,[r(Wt,{traces:e(D)||[]},null,8,["traces"]),r(Gt,{attachments:e(n)?.attachments??[]},null,8,["attachments"]),e(n)?.pageState?(s(),_(lt,{key:0,"storage-key":"case-page-state","page-state":e(n).pageState},null,8,["page-state"])):i("",!0),e(n)?.consoleLogs?.length?(s(),_(rt,{key:1,entries:e(n)?.consoleLogs??[]},null,8,["entries"])):i("",!0),e(S).length>0||e(b)?(s(),_(it,{key:2,requests:e(S),"run-id":e(n)?.testRun?.id??null,"test-runs-case-id":Number(e(g)),"has-trace":e(b)},null,8,["requests","run-id","test-runs-case-id","has-trace"])):i("",!0),!e(D)?.length&&!e(n)?.attachments?.length&&!e(n)?.consoleLogs?.length&&!e(S).length?(s(),a("div",Qr,[e(Qe)?(s(),a(U,{key:0},[r(me,{name:"i-lucide-loader-circle",class:"size-8 mb-2 animate-spin"}),R[6]||(R[6]=o("p",{class:"text-sm"}," Run in progress — traces and attachments appear here as soon as they are uploaded. ",-1))],64)):(s(),a(U,{key:1},[r(me,{name:"i-lucide-inbox",class:"size-8 mb-2"}),R[7]||(R[7]=o("p",{class:"text-sm"},"No traces, console logs, or network requests captured for this test case.",-1))],64))])):i("",!0)])]),"tab-performance":u(()=>[o("div",Zr,[e(F).length>0?(s(),a("div",Xr,[(s(!0),a(U,null,ee(e(F),(j,Xt)=>(s(),a("div",{key:Xt,class:X(["p-3 rounded-lg border",j.type==="warning"?"bg-amber-50 dark:bg-amber-900/20 border-amber-200 dark:border-amber-800":"bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800"])},[o("div",Yr,[r(me,{name:j.type==="warning"?"i-lucide-alert-triangle":"i-lucide-lightbulb",class:X([j.type==="warning"?"text-amber-600":"text-blue-600","size-4 mt-0.5 shrink-0"])},null,8,["name","class"]),o("div",null,[o("p",{class:X(j.type==="warning"?"text-amber-800 dark:text-amber-200 font-medium":"text-blue-800 dark:text-blue-200 font-medium")},c(j.message),3),o("p",{class:X([j.type==="warning"?"text-amber-700 dark:text-amber-300":"text-blue-700 dark:text-blue-300","mt-1"])},c(j.details),3)])])],2))),128))])):i("",!0),e(m)?(s(),_(ot,{key:1,icon:"i-lucide-gauge",title:"Browser performance (Web Vitals)",help:"case.web-vitals"},{default:u(()=>[o("div",ei,[e(m).navigation?(s(),_(Ve,{key:0,"min-tile-width":"10rem"},{default:u(()=>[r(de,{label:"TTFB",hint:"Time to first byte","value-class":e(m).navigation.ttfb>600?"text-red-600":e(m).navigation.ttfb>200?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).navigation.ttfb},null,8,["ms"])]),_:1},8,["value-class"]),r(de,{label:"DOM Interactive",hint:"DOM interactive","value-class":e(m).navigation.domInteractive>3e3?"text-red-600":e(m).navigation.domInteractive>1500?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).navigation.domInteractive},null,8,["ms"])]),_:1},8,["value-class"]),r(de,{label:"DOMContentLoaded",hint:"DOMContentLoaded","value-class":e(m).navigation.domContentLoaded>3e3?"text-red-600":e(m).navigation.domContentLoaded>1500?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).navigation.domContentLoaded},null,8,["ms"])]),_:1},8,["value-class"]),r(de,{label:"Load Complete",hint:"Page fully loaded","value-class":e(m).navigation.loadComplete>5e3?"text-red-600":e(m).navigation.loadComplete>3e3?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).navigation.loadComplete},null,8,["ms"])]),_:1},8,["value-class"])]),_:1})):i("",!0),e(m).paint&&(e(m).paint.firstPaint||e(m).paint.firstContentfulPaint)?(s(),_(Ve,{key:1,"min-tile-width":"10rem",class:"pt-2 border-t"},{default:u(()=>[e(m).paint.firstPaint!==void 0?(s(),_(de,{key:0,label:"First Paint (FP)"},{default:u(()=>[r(ie,{ms:e(m).paint.firstPaint},null,8,["ms"])]),_:1})):i("",!0),e(m).paint.firstContentfulPaint!==void 0?(s(),_(de,{key:1,label:"First Contentful Paint (FCP)","value-class":e(m).paint.firstContentfulPaint>3e3?"text-red-600":e(m).paint.firstContentfulPaint>1800?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).paint.firstContentfulPaint},null,8,["ms"])]),_:1},8,["value-class"])):i("",!0)]),_:1})):i("",!0),e(m).vitals?(s(),_(Ve,{key:2,"min-tile-width":"10rem",class:"pt-2 border-t"},{default:u(()=>[r(de,{label:"Largest Contentful Paint (LCP)","value-class":e(m).vitals.lcp==null?"text-gray-400":e(m).vitals.lcp>4e3?"text-red-600":e(m).vitals.lcp>2500?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).vitals.lcp,fallback:"n/a"},null,8,["ms"])]),_:1},8,["value-class"]),r(de,{label:"Cumulative Layout Shift (CLS)",value:e(m).vitals.cls!=null?String(e(m).vitals.cls):"n/a","value-class":e(m).vitals.cls==null?"text-gray-400":e(m).vitals.cls>.25?"text-red-600":e(m).vitals.cls>.1?"text-orange-500":"text-green-600"},null,8,["value","value-class"]),r(de,{label:"Interaction to Next Paint (INP)","value-class":e(m).vitals.inp==null?"text-gray-400":e(m).vitals.inp>500?"text-red-600":e(m).vitals.inp>200?"text-orange-500":"text-green-600"},{default:u(()=>[r(ie,{ms:e(m).vitals.inp,fallback:"n/a"},null,8,["ms"])]),_:1},8,["value-class"])]),_:1})):i("",!0),e(m).navigation?.url?(s(),a("div",ti,[R[8]||(R[8]=f(" Page: ",-1)),o("code",si,c(e(m).navigation.url),1)])):i("",!0)])]),_:1})):i("",!0),e(F).length===0&&!e(m)?(s(),_(Jt,{key:2,icon:"i-lucide-gauge",title:"No performance hints or Web Vitals for this execution",text:"Web Vitals and step timing come from the Piwi capture fixtures — extend your Playwright test with piwiFixtures to collect them.",doc:"capture-fixtures"})):i("",!0)])]),"tab-history":u(()=>[o("div",ni,[e(d)&&e(d).length>0?(s(),a("div",ai,[o("div",oi,[e(n)?.testCaseId?(s(),_(be,{key:0,to:`/test-cases/${e(n).testCaseId}`,size:"xs",variant:"outline",color:"neutral","trailing-icon":"i-lucide-arrow-right"},{default:u(()=>[...R[9]||(R[9]=[f(" View full test history ",-1)])]),_:1},8,["to"])):i("",!0)]),r(qt,{data:e(d),height:200},null,8,["data"]),r(ut,{"min-width":"44rem",bleed:!1},{default:u(()=>[r(ct,{data:e(d),columns:P,ui:{base:"table-fixed border-separate border-spacing-0 min-w-[44rem]",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"startTime-cell":u(({row:j})=>[o("span",ri,[o("span",ii,c(new Date(j.original.startTime).toLocaleDateString("en-US",{month:"short",day:"numeric"})),1),o("span",li,c(new Date(j.original.startTime).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})),1)])]),"status-cell":u(({row:j})=>[r(Ne,{color:("getStatusColor"in p?p.getStatusColor:e(Gs))(j.original.status),variant:"subtle",class:"capitalize"},{default:u(()=>[f(c(j.original.status),1)]),_:2},1032,["color"])]),"duration-cell":u(({row:j})=>[j.original.duration!==null?(s(),_(ie,{key:0,ms:j.original.duration},null,8,["ms"])):(s(),a("span",ci,"—"))]),"runId-cell":u(({row:j})=>[r(ce,{to:`/test-runs/${j.original.runId}`,class:"text-primary hover:underline"},{default:u(()=>[f(" #"+c(j.original.runId),1)]),_:2},1032,["to"])]),"error-cell":u(({row:j})=>[j.original.error?(s(),a("span",{key:0,class:"text-red-600 text-xs truncate max-w-xs block",title:j.original.error},c(j.original.error.length>80?`${j.original.error.substring(0,80)}…`:j.original.error),9,ui)):i("",!0)]),_:1},8,["data"])]),_:1})])):(s(),_(dt,{key:1,icon:"i-lucide-trending-up",text:"No prior executions of this test yet."},{default:u(()=>[...R[10]||(R[10]=[o("p",{class:"text-xs text-gray-400"}," This is the first recorded run. Once it runs again, its status and duration trend appear here. ",-1)])]),_:1}))])]),_:1},8,["modelValue","tab-items"])]),_:1})}}});export{fl as default};