@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.
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{DZECGgZm.js → 5nOoVJzL.js} +1 -1
- package/.output/public/_nuxt/6DSY_93j.js +1 -0
- package/.output/public/_nuxt/7vRR5W2L.js +1 -0
- package/.output/public/_nuxt/{CC8wk-N0.js → 9Dtlg-K4.js} +1 -1
- package/.output/public/_nuxt/9Yziijlb.js +1 -0
- package/.output/public/_nuxt/{DAhv9aNg.js → B-onBCAB.js} +1 -1
- package/.output/public/_nuxt/B2bK5uNR.js +1 -0
- package/.output/public/_nuxt/{B2L0-Lzp.js → B63B19Iv.js} +2 -2
- package/.output/public/_nuxt/{oSLbl-p0.js → B77w1Eib.js} +1 -1
- package/.output/public/_nuxt/{pZbe82l5.js → BC5bqlfM.js} +1 -1
- package/.output/public/_nuxt/{jR2xm3_t.js → BF5JDf9_.js} +1 -1
- package/.output/public/_nuxt/BFVrl1ss.js +1 -0
- package/.output/public/_nuxt/{Bj_v57Zu.js → BIHMeNW-.js} +1 -1
- package/.output/public/_nuxt/BKqOGcst.js +1 -0
- package/.output/public/_nuxt/{Bsc11YIJ.js → BLqooxh5.js} +1 -1
- package/.output/public/_nuxt/{Ce_j5NtN.js → BMfTUMYy.js} +1 -1
- package/.output/public/_nuxt/{CmTzxoQt.js → BOrnSpTA.js} +1 -1
- package/.output/public/_nuxt/{Bq4_kqIp.js → BPQNVV4M.js} +1 -1
- package/.output/public/_nuxt/{FJTsZ5Aa.js → BSKLNgre.js} +1 -1
- package/.output/public/_nuxt/BTCWUyBX.js +1 -0
- package/.output/public/_nuxt/BUYmGTVP.js +1 -0
- package/.output/public/_nuxt/{mi22nGUC.js → BWddBCom.js} +1 -1
- package/.output/public/_nuxt/{axj2iIDK.js → BYQ9lXQb.js} +1 -1
- package/.output/public/_nuxt/BYWQ47QQ.js +5 -0
- package/.output/public/_nuxt/{Bag08cIY.js → BYnqoVCE.js} +1 -1
- package/.output/public/_nuxt/{Clg2Qx0r.js → BaU2hm4B.js} +1 -1
- package/.output/public/_nuxt/{roaTZkYi.js → BbXvpkBp.js} +1 -1
- package/.output/public/_nuxt/Bb_925DD.js +1 -0
- package/.output/public/_nuxt/BcHU1KNK.js +1 -0
- package/.output/public/_nuxt/BdUGUwvE.js +1 -0
- package/.output/public/_nuxt/{D1Ucra3E.js → BeQq85yJ.js} +2 -2
- package/.output/public/_nuxt/Bg8yOdSf.js +1 -0
- package/.output/public/_nuxt/BhzfJaPC.js +1 -0
- package/.output/public/_nuxt/{499RbBSX.js → Bkb-0yS0.js} +4 -4
- package/.output/public/_nuxt/BmweLu9g.js +2 -0
- package/.output/public/_nuxt/Boyv6hLW.js +1 -0
- package/.output/public/_nuxt/{DXkFgrsT.js → Bq4xEWLF.js} +4 -4
- package/.output/public/_nuxt/{7_9fts7T.js → BraJd4EA.js} +1 -1
- package/.output/public/_nuxt/BvXrhZ8k.js +1 -0
- package/.output/public/_nuxt/{DNKZmhbX.js → Bw4oIhct.js} +1 -1
- package/.output/public/_nuxt/BxSrScjV.js +1 -0
- package/.output/public/_nuxt/Byqt8JHG.js +1 -0
- package/.output/public/_nuxt/{CNu3kken.js → BzBaMPgu.js} +4 -4
- package/.output/public/_nuxt/{PDSNX4Te.js → C1-8_6cB.js} +1 -1
- package/.output/public/_nuxt/{Ce89VyHE.js → C7SG50jD.js} +1 -1
- package/.output/public/_nuxt/{CBJFORiZ.js → C8WgBDU1.js} +1 -1
- package/.output/public/_nuxt/C8uZoJVq.js +1 -0
- package/.output/public/_nuxt/{D3SJGdl4.js → CBQXv4bU.js} +2 -2
- package/.output/public/_nuxt/CDEmotIt.js +1 -0
- package/.output/public/_nuxt/CIBOv3Ge.js +2 -0
- package/.output/public/_nuxt/CO7j4p5r.js +1 -0
- package/.output/public/_nuxt/COMhp7lz.js +1 -0
- package/.output/public/_nuxt/{jxc14CqP.js → CPiLUjjx.js} +1 -1
- package/.output/public/_nuxt/{DZ-KbUZi.js → CTYlay1H.js} +1 -1
- package/.output/public/_nuxt/{5QBnDbs_.js → CVEk4D8I.js} +1 -1
- package/.output/public/_nuxt/{LTMoFvEY.js → CbuK1HIv.js} +1 -1
- package/.output/public/_nuxt/{2yLW7WU0.js → CdLqOMvN.js} +1 -1
- package/.output/public/_nuxt/CdM2qNYM.js +2 -0
- package/.output/public/_nuxt/Ch8sGLqE.js +1 -0
- package/.output/public/_nuxt/CkdznmkX.js +1 -0
- package/.output/public/_nuxt/{DJzFYrBt.js → Cmuwgbf4.js} +1 -1
- package/.output/public/_nuxt/{C9I1Dp3S.js → CnRNwiuE.js} +1 -1
- package/.output/public/_nuxt/{Bb2mDqKr.js → CnsaoeEq.js} +1 -1
- package/.output/public/_nuxt/{DgEa6_av.js → Cp0V2FeW.js} +1 -1
- package/.output/public/_nuxt/Cvw4EFTy.js +17 -0
- package/.output/public/_nuxt/CwDej2Lz.js +1 -0
- package/.output/public/_nuxt/D-wlhH6J.js +1 -0
- package/.output/public/_nuxt/D5Mhpp98.js +1 -0
- package/.output/public/_nuxt/{CTTmX4gy.js → D8ixf-ZR.js} +5 -5
- package/.output/public/_nuxt/{HbnAkiyK.js → DBvdRbTA.js} +2 -2
- package/.output/public/_nuxt/DDho3MJD.js +1 -0
- package/.output/public/_nuxt/DEGHW4pO.js +1 -0
- package/.output/public/_nuxt/{C77tM5Hz.js → DHSYRMJp.js} +1 -1
- package/.output/public/_nuxt/DH_LEqhd.js +2 -0
- package/.output/public/_nuxt/{CUOS6S13.js → DIqik40e.js} +1 -1
- package/.output/public/_nuxt/DLwuL-qR.js +1 -0
- package/.output/public/_nuxt/{AQ86C4c2.js → DPDFGVb_.js} +2 -2
- package/.output/public/_nuxt/DRNHuVn4.js +2 -0
- package/.output/public/_nuxt/{B_MVJP17.js → DUtYU4Sb.js} +1 -1
- package/.output/public/_nuxt/{CAoQUDI4.js → DWl73MJR.js} +1 -1
- package/.output/public/_nuxt/{BZFiz2UB.js → DWz_bHNP.js} +1 -1
- package/.output/public/_nuxt/{CGDPUNcO.js → D_SCB-z2.js} +1 -1
- package/.output/public/_nuxt/{Ce47NgZw.js → D_j436ND.js} +1 -1
- package/.output/public/_nuxt/DamzjN7l.js +1 -0
- package/.output/public/_nuxt/Db5xe__T.js +1 -0
- package/.output/public/_nuxt/{BuGAn4f7.js → DcUBmKKE.js} +1 -1
- package/.output/public/_nuxt/DiP18sFE.js +1 -0
- package/.output/public/_nuxt/Die1200X.js +1 -0
- package/.output/public/_nuxt/DihSeDlY.js +9 -0
- package/.output/public/_nuxt/{BAbrtVp3.js → DkGXOZRW.js} +1 -1
- package/.output/public/_nuxt/{ZLfZolDM.js → DnOtRv65.js} +1 -1
- package/.output/public/_nuxt/DnV-BkUA.js +1 -0
- package/.output/public/_nuxt/DpeRrg68.js +1 -0
- package/.output/public/_nuxt/Dq6_-84R.js +1 -0
- package/.output/public/_nuxt/DqKFKS1b.js +1 -0
- package/.output/public/_nuxt/DrbO0dl5.js +6 -0
- package/.output/public/_nuxt/{B3G-TIoP.js → Ds8_6Fzl.js} +1 -1
- package/.output/public/_nuxt/{QZYo3ErV.js → DvewDI9t.js} +1 -1
- package/.output/public/_nuxt/E26Y1NWH.js +1 -0
- package/.output/public/_nuxt/Hp-_W7z4.js +1 -0
- package/.output/public/_nuxt/OanUGF_v.js +1 -0
- package/.output/public/_nuxt/{9_aJhhcm.js → RSS6R9Te.js} +12 -12
- package/.output/public/_nuxt/{BfcMJBTf.js → VqLetC2g.js} +1 -1
- package/.output/public/_nuxt/WCZdf9Ln.js +1 -0
- package/.output/public/_nuxt/{DBWM_xs-.js → Yl6iqHwK.js} +4 -4
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/03f2d81b-8c58-4ea8-9a9d-7553c8ca4af6.json +1 -0
- package/.output/public/_nuxt/entry.DVKh2Fd6.css +1 -0
- package/.output/public/_nuxt/iUf7K_JR.js +1 -0
- package/.output/public/_nuxt/{B_JSV0yG.js → kDEwM7SQ.js} +1 -1
- package/.output/public/_nuxt/{BDUfBn3i.js → knaDbxMJ.js} +1 -1
- package/.output/public/_nuxt/lnpLc047.js +1 -0
- package/.output/public/_nuxt/{C2_7XZo0.js → mhvG7mu8.js} +1 -1
- package/.output/public/_nuxt/{Ck_fTH5z.js → qUaN2ZW8.js} +4 -4
- package/.output/public/_nuxt/qeqzb80l.js +1 -0
- package/.output/public/_nuxt/{BwwfasRt.js → uj92NYTx.js} +2 -2
- package/.output/public/_nuxt/vOZZ2cLi.js +1 -0
- package/.output/public/_nuxt/{CLWMETf9.js → zAFiz2Mg.js} +1 -1
- package/.output/public/demo/seed.version.json +2 -2
- package/.output/server/chunks/_/collect.mjs +1 -1
- package/.output/server/chunks/_/markers.mjs +1 -1
- package/.output/server/chunks/_/quarantine.mjs +1 -1
- package/.output/server/chunks/_/users.mjs +1 -1
- package/.output/server/chunks/build/{Alert-He-UxEt6.mjs → Alert-BhTWQzM5.mjs} +2 -2
- package/.output/server/chunks/build/Alert-BhTWQzM5.mjs.map +1 -0
- package/.output/server/chunks/build/{Breadcrumb-DEP2dVCZ.mjs → Breadcrumb-BJnPB2AW.mjs} +3 -3
- package/.output/server/chunks/build/Breadcrumb-BJnPB2AW.mjs.map +1 -0
- package/.output/server/chunks/build/{BreadcrumbNav-y6nMDYcR.mjs → BreadcrumbNav-C6Cun6tF.mjs} +3 -3
- package/.output/server/chunks/build/BreadcrumbNav-C6Cun6tF.mjs.map +1 -0
- package/.output/server/chunks/build/{BrowserBadge-DIASU8Gf.mjs → BrowserBadge-T1KRMIXA.mjs} +4 -4
- package/.output/server/chunks/build/BrowserBadge-T1KRMIXA.mjs.map +1 -0
- package/.output/server/chunks/build/{ChartCard-ZTsCvItQ.mjs → ChartCard-D_asI_WF.mjs} +2 -2
- package/.output/server/chunks/build/ChartCard-D_asI_WF.mjs.map +1 -0
- package/.output/server/chunks/build/{ChartMarkerTooltip-u_1DUHh-.mjs → ChartMarkerTooltip-DscESDg7.mjs} +3 -3
- package/.output/server/chunks/build/ChartMarkerTooltip-DscESDg7.mjs.map +1 -0
- package/.output/server/chunks/build/{Checkbox-BisdHf8n.mjs → Checkbox-Y9ZiIRkJ.mjs} +7 -7
- package/.output/server/chunks/build/Checkbox-Y9ZiIRkJ.mjs.map +1 -0
- package/.output/server/chunks/build/{CodeBlock-B8BNtZAe.mjs → CodeBlock-Bnn_ps9O.mjs} +5 -5
- package/.output/server/chunks/build/CodeBlock-Bnn_ps9O.mjs.map +1 -0
- package/.output/server/chunks/build/{DashboardNavbar-D7-3zBUU.mjs → DashboardNavbar-D37dPEtR.mjs} +3 -3
- package/.output/server/chunks/build/DashboardNavbar-D37dPEtR.mjs.map +1 -0
- package/.output/server/chunks/build/{DashboardSidebarToggle-C3HdHvlE.mjs → DashboardSidebarToggle-DzwsZHVx.mjs} +3 -3
- package/.output/server/chunks/build/DashboardSidebarToggle-DzwsZHVx.mjs.map +1 -0
- package/.output/server/chunks/build/{DataLocationCard-CC2-lHiP.mjs → DataLocationCard-CUXgZQEs.mjs} +4 -4
- package/.output/server/chunks/build/DataLocationCard-CUXgZQEs.mjs.map +1 -0
- package/.output/server/chunks/build/{DesktopRunLocallyButton-iNzrDsEs.mjs → DesktopRunLocallyButton-BCmQklj6.mjs} +15 -76
- package/.output/server/chunks/build/DesktopRunLocallyButton-BCmQklj6.mjs.map +1 -0
- package/.output/server/chunks/build/{DiagnosisPanel-BVb2LgHu.mjs → DiagnosisPanel-haHS2azn.mjs} +8 -8
- package/.output/server/chunks/build/DiagnosisPanel-haHS2azn.mjs.map +1 -0
- package/.output/server/chunks/build/{DiagnosisResult-xVgZlfKK.mjs → DiagnosisResult-DqTIOelM.mjs} +11 -11
- package/.output/server/chunks/build/DiagnosisResult-DqTIOelM.mjs.map +1 -0
- package/.output/server/chunks/build/{DurationValue-UX9uajQJ.mjs → DurationValue-D6fQEi5S.mjs} +2 -2
- package/.output/server/chunks/build/DurationValue-D6fQEi5S.mjs.map +1 -0
- package/.output/server/chunks/build/{EmptyState-DC2q_7TD.mjs → EmptyState-C-mCzGhO.mjs} +2 -2
- package/.output/server/chunks/build/EmptyState-C-mCzGhO.mjs.map +1 -0
- package/.output/server/chunks/build/{EntityLinks-Dzn73fbq.mjs → EntityLinks-CRJQM9Vy.mjs} +4 -4
- package/.output/server/chunks/build/EntityLinks-CRJQM9Vy.mjs.map +1 -0
- package/.output/server/chunks/build/{EnvManagedBadge-C-agmABK.mjs → EnvManagedBadge-hyelwXrw.mjs} +4 -4
- package/.output/server/chunks/build/EnvManagedBadge-hyelwXrw.mjs.map +1 -0
- package/.output/server/chunks/build/{ErrorState-CktYyeEZ.mjs → ErrorState-9UPssp7w.mjs} +2 -2
- package/.output/server/chunks/build/ErrorState-9UPssp7w.mjs.map +1 -0
- package/.output/server/chunks/build/{FeatureUnavailable-DHFkwI7t.mjs → FeatureUnavailable-CDw3__eq.mjs} +3 -3
- package/.output/server/chunks/build/FeatureUnavailable-CDw3__eq.mjs.map +1 -0
- package/.output/server/chunks/build/{FormField-GYHKiSI6.mjs → FormField-8vSc-3mb.mjs} +2 -2
- package/.output/server/chunks/build/FormField-8vSc-3mb.mjs.map +1 -0
- package/.output/server/chunks/build/{GetStartedWizard-BpcGYsm2.mjs → GetStartedWizard-Dp_tjhry.mjs} +4 -4
- package/.output/server/chunks/build/GetStartedWizard-Dp_tjhry.mjs.map +1 -0
- package/.output/server/chunks/build/{HelpHint-plioHKA0.mjs → HelpHint-Bfyo3ar6.mjs} +31 -4
- package/.output/server/chunks/build/HelpHint-Bfyo3ar6.mjs.map +1 -0
- package/.output/server/chunks/build/{LoadingState-CwpfmI0W.mjs → LoadingState-CxfFwac9.mjs} +2 -2
- package/.output/server/chunks/build/LoadingState-CxfFwac9.mjs.map +1 -0
- package/.output/server/chunks/build/{MarkerBadge-Biz5--h2.mjs → MarkerBadge-DmubzeuF.mjs} +2 -2
- package/.output/server/chunks/build/MarkerBadge-DmubzeuF.mjs.map +1 -0
- package/.output/server/chunks/build/{MetaStripGroup-A0a72vt5.mjs → MetaStripGroup-C-cNBfC9.mjs} +6 -6
- package/.output/server/chunks/build/MetaStripGroup-C-cNBfC9.mjs.map +1 -0
- package/.output/server/chunks/build/{Modal-hKLvVFNp.mjs → Modal-DcNzjvnm.mjs} +2 -2
- package/.output/server/chunks/build/Modal-DcNzjvnm.mjs.map +1 -0
- package/.output/server/chunks/build/{NavbarActions-_YjrSUat.mjs → NavbarActions-VCHW0u67.mjs} +2 -2
- package/.output/server/chunks/build/NavbarActions-VCHW0u67.mjs.map +1 -0
- package/.output/server/chunks/build/{NavigationMenu-RfBOyS32.mjs → NavigationMenu-DG6V0R9Y.mjs} +5 -5
- package/.output/server/chunks/build/NavigationMenu-DG6V0R9Y.mjs.map +1 -0
- package/.output/server/chunks/build/{OpenInIdeLink-Jp6SzEtD.mjs → OpenInIdeLink-CLj2cTkc.mjs} +6 -6
- package/.output/server/chunks/build/{OpenInIdeLink-Jp6SzEtD.mjs.map → OpenInIdeLink-CLj2cTkc.mjs.map} +1 -1
- package/.output/server/chunks/build/{ProjectTestCasesTable-DxOTfhi4.mjs → ProjectTestCasesTable-BNd5Fn_G.mjs} +15 -15
- package/.output/server/chunks/build/{ProjectTestCasesTable-DxOTfhi4.mjs.map → ProjectTestCasesTable-BNd5Fn_G.mjs.map} +1 -1
- package/.output/server/chunks/build/{RovingFocusItem-BOSx1Z9Z.mjs → RovingFocusItem-DkZadRuK.mjs} +2 -2
- package/.output/server/chunks/build/RovingFocusItem-DkZadRuK.mjs.map +1 -0
- package/.output/server/chunks/build/{RunReports-nuLb-Nm3.mjs → RunReports-CnyGcU8K.mjs} +4 -4
- package/.output/server/chunks/build/RunReports-CnyGcU8K.mjs.map +1 -0
- package/.output/server/chunks/build/{RunStatusBadge-CvWmcFYM.mjs → RunStatusBadge-DTqX18X-.mjs} +3 -3
- package/.output/server/chunks/build/RunStatusBadge-DTqX18X-.mjs.map +1 -0
- package/.output/server/chunks/build/{SectionCard-DHAFvJxm.mjs → SectionCard-taTpPtua.mjs} +3 -3
- package/.output/server/chunks/build/SectionCard-taTpPtua.mjs.map +1 -0
- package/.output/server/chunks/build/{Select-CEyw7HGK.mjs → Select-BChKOOsc.mjs} +4 -4
- package/.output/server/chunks/build/Select-BChKOOsc.mjs.map +1 -0
- package/.output/server/chunks/build/{SelectMenu-C02Hs2_F.mjs → SelectMenu-DLkMyBsW.mjs} +5 -5
- package/.output/server/chunks/build/{SelectMenu-C02Hs2_F.mjs.map → SelectMenu-DLkMyBsW.mjs.map} +1 -1
- package/.output/server/chunks/build/{Separator-lrN70ODV.mjs → Separator-Dn-4PN3P.mjs} +2 -2
- package/.output/server/chunks/build/Separator-Dn-4PN3P.mjs.map +1 -0
- package/.output/server/chunks/build/{SettingsField-tRmytcEJ.mjs → SettingsField-BLO1C7uY.mjs} +6 -6
- package/.output/server/chunks/build/SettingsField-BLO1C7uY.mjs.map +1 -0
- package/.output/server/chunks/build/{Slideover-D6cRIqch.mjs → Slideover-BiDJaQrt.mjs} +3 -3
- package/.output/server/chunks/build/Slideover-BiDJaQrt.mjs.map +1 -0
- package/.output/server/chunks/build/{Switch-R2n82ncQ.mjs → Switch-Ca3fYrSH.mjs} +4 -4
- package/.output/server/chunks/build/Switch-Ca3fYrSH.mjs.map +1 -0
- package/.output/server/chunks/build/{Table-qZdnm9t2.mjs → Table-DQb34a0A.mjs} +3 -3
- package/.output/server/chunks/build/Table-DQb34a0A.mjs.map +1 -0
- package/.output/server/chunks/build/{Tabs-BDP7MWl4.mjs → Tabs-_ALhm_oG.mjs} +3 -3
- package/.output/server/chunks/build/Tabs-_ALhm_oG.mjs.map +1 -0
- package/.output/server/chunks/build/{TestCaseHistoryChart-CKDXQ2GI.mjs → TestCaseHistoryChart-D-TEUsZ8.mjs} +3 -3
- package/.output/server/chunks/build/TestCaseHistoryChart-D-TEUsZ8.mjs.map +1 -0
- package/.output/server/chunks/build/{TestMetaBadges-BlyKmfeP.mjs → TestMetaBadges-G2dAHnT-.mjs} +2 -2
- package/.output/server/chunks/build/TestMetaBadges-G2dAHnT-.mjs.map +1 -0
- package/.output/server/chunks/build/{TestStatusBar-CvsmKJ4D.mjs → TestStatusBar-CseETAdn.mjs} +2 -2
- package/.output/server/chunks/build/TestStatusBar-CseETAdn.mjs.map +1 -0
- package/.output/server/chunks/build/{Textarea-DpmpM-lN.mjs → Textarea-CXOoRq7y.mjs} +2 -2
- package/.output/server/chunks/build/Textarea-CXOoRq7y.mjs.map +1 -0
- package/.output/server/chunks/build/{Tooltip-BI3WQErw.mjs → Tooltip-trltUr5c.mjs} +3 -3
- package/.output/server/chunks/build/Tooltip-trltUr5c.mjs.map +1 -0
- package/.output/server/chunks/build/{VisuallyHiddenInput-D4E5aJCQ.mjs → VisuallyHiddenInput-CGURvg3N.mjs} +2 -2
- package/.output/server/chunks/build/VisuallyHiddenInput-CGURvg3N.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-CrGTZymJ.mjs → _id_-B-G4eG5U.mjs} +40 -40
- package/.output/server/chunks/build/{_id_-CrGTZymJ.mjs.map → _id_-B-G4eG5U.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-T965GKYC.mjs → _id_-Cnzg8n21.mjs} +41 -38
- package/.output/server/chunks/build/_id_-Cnzg8n21.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-wiULjAVc.mjs → _id_-Dp_d6gT7.mjs} +63 -55
- package/.output/server/chunks/build/{_id_-wiULjAVc.mjs.map → _id_-Dp_d6gT7.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-D7UtAIPR.mjs → _id_-t2AWaYuK.mjs} +59 -52
- package/.output/server/chunks/build/{_id_-D7UtAIPR.mjs.map → _id_-t2AWaYuK.mjs.map} +1 -1
- package/.output/server/chunks/build/{about-B3V_OEiu.mjs → about-BFsHkJwE.mjs} +8 -8
- package/.output/server/chunks/build/about-BFsHkJwE.mjs.map +1 -0
- package/.output/server/chunks/build/{account-DpBdYE46.mjs → account-CZAq8kVg.mjs} +8 -8
- package/.output/server/chunks/build/account-CZAq8kVg.mjs.map +1 -0
- package/.output/server/chunks/build/{ai-DYhpzbqp.mjs → ai-BGP3GcCR.mjs} +21 -21
- package/.output/server/chunks/build/{ai-DYhpzbqp.mjs.map → ai-BGP3GcCR.mjs.map} +1 -1
- package/.output/server/chunks/build/{analytics-CZJEU0an.mjs → analytics-CXl5OWV-.mjs} +25 -25
- package/.output/server/chunks/build/{analytics-CZJEU0an.mjs.map → analytics-CXl5OWV-.mjs.map} +1 -1
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/{db.client-Bdqk_eYQ.mjs → db.client-DijpEH6i.mjs} +3 -1
- package/.output/server/chunks/build/db.client-DijpEH6i.mjs.map +1 -0
- package/.output/server/chunks/build/{default-DO1izI2V.mjs → default-4ixAePum.mjs} +209 -77
- package/.output/server/chunks/build/default-4ixAePum.mjs.map +1 -0
- package/.output/server/chunks/build/{docs-C8bndVXg.mjs → docs-Cgsd01H9.mjs} +16 -16
- package/.output/server/chunks/build/{docs-C8bndVXg.mjs.map → docs-Cgsd01H9.mjs.map} +1 -1
- package/.output/server/chunks/build/{edit-BdfF9er2.mjs → edit-BEQ-ozj9.mjs} +436 -40
- package/.output/server/chunks/build/edit-BEQ-ozj9.mjs.map +1 -0
- package/.output/server/chunks/build/{fetch-tkz5_OA-.mjs → fetch-B5TVXZ1s.mjs} +3 -3
- package/.output/server/chunks/build/fetch-B5TVXZ1s.mjs.map +1 -0
- package/.output/server/chunks/build/{forgot-password-swZRcvXE.mjs → forgot-password-mqE1mpDI.mjs} +4 -4
- package/.output/server/chunks/build/forgot-password-mqE1mpDI.mjs.map +1 -0
- package/.output/server/chunks/build/{help-content-C876a9WD.mjs → help-content-Bc99BajS.mjs} +6 -1
- package/.output/server/chunks/build/help-content-Bc99BajS.mjs.map +1 -0
- package/.output/server/chunks/build/{import-B27Sv7h5.mjs → import-DqDDTcSc.mjs} +15 -15
- package/.output/server/chunks/build/import-DqDDTcSc.mjs.map +1 -0
- package/.output/server/chunks/build/{index-ID913tUa.mjs → index-Bpdj6TXV.mjs} +5 -5
- package/.output/server/chunks/build/index-Bpdj6TXV.mjs.map +1 -0
- package/.output/server/chunks/build/{index-vRwzDXLs.mjs → index-DBFsIsjA.mjs} +534 -262
- package/.output/server/chunks/build/index-DBFsIsjA.mjs.map +1 -0
- package/.output/server/chunks/build/{index-C7m32bRI.mjs → index-DSufXCZq.mjs} +22 -18
- package/.output/server/chunks/build/index-DSufXCZq.mjs.map +1 -0
- package/.output/server/chunks/build/{index-BdZmxLtC.mjs → index-WXE60AXk.mjs} +24 -24
- package/.output/server/chunks/build/{index-BdZmxLtC.mjs.map → index-WXE60AXk.mjs.map} +1 -1
- package/.output/server/chunks/build/{index-ByWTzqF6.mjs → index-okKjrRhL.mjs} +15 -4
- package/.output/server/chunks/build/index-okKjrRhL.mjs.map +1 -0
- package/.output/server/chunks/build/{isValueEqualOrExist-D4lZ8uRY.mjs → isValueEqualOrExist-C-9DzL4K.mjs} +3 -3
- package/.output/server/chunks/build/isValueEqualOrExist-C-9DzL4K.mjs.map +1 -0
- package/.output/server/chunks/build/{login-hxCF06JT.mjs → login-eQ88UoBW.mjs} +7 -7
- package/.output/server/chunks/build/login-eQ88UoBW.mjs.map +1 -0
- package/.output/server/chunks/build/{mcp-BVW1llyW.mjs → mcp-frcSP2Zg.mjs} +14 -14
- package/.output/server/chunks/build/mcp-frcSP2Zg.mjs.map +1 -0
- package/.output/server/chunks/build/{notifications-Dn-evqXM.mjs → notifications-DAtRd5V6.mjs} +14 -14
- package/.output/server/chunks/build/notifications-DAtRd5V6.mjs.map +1 -0
- package/.output/server/chunks/build/{performance-CV8qm94u.mjs → performance-BcQzGXE7.mjs} +13 -13
- package/.output/server/chunks/build/performance-BcQzGXE7.mjs.map +1 -0
- package/.output/server/chunks/build/{pr-feedback-gKDz8LyA.mjs → pr-feedback-BHtgvegy.mjs} +11 -11
- package/.output/server/chunks/build/pr-feedback-BHtgvegy.mjs.map +1 -0
- package/.output/server/chunks/build/{reset-password-DtEISa1I.mjs → reset-password-DMHrp14-.mjs} +4 -4
- package/.output/server/chunks/build/reset-password-DMHrp14-.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +34 -34
- package/.output/server/chunks/build/{settings-BJDnuLpc.mjs → settings-Bo5OETop.mjs} +11 -11
- package/.output/server/chunks/build/settings-Bo5OETop.mjs.map +1 -0
- package/.output/server/chunks/build/{settings-metadata-DnAK4Rzg.mjs → settings-metadata-BHbsWQ2g.mjs} +3 -3
- package/.output/server/chunks/build/settings-metadata-BHbsWQ2g.mjs.map +1 -0
- package/.output/server/chunks/build/{setup-BO9tXa_G.mjs → setup-DAXcxuNY.mjs} +18 -18
- package/.output/server/chunks/build/{setup-BO9tXa_G.mjs.map → setup-DAXcxuNY.mjs.map} +1 -1
- package/.output/server/chunks/build/{storage-zN92cA9q.mjs → storage-BPK0fVwx.mjs} +13 -13
- package/.output/server/chunks/build/storage-BPK0fVwx.mjs.map +1 -0
- package/.output/server/chunks/build/{tags-CJFnoyQc.mjs → tags-CoxErA5m.mjs} +8 -8
- package/.output/server/chunks/build/tags-CoxErA5m.mjs.map +1 -0
- package/.output/server/chunks/build/{test-cases-0Q6rT73d.mjs → test-cases-D8rn-0le.mjs} +27 -27
- package/.output/server/chunks/build/test-cases-D8rn-0le.mjs.map +1 -0
- package/.output/server/chunks/build/{test-functions-DVRJgiWo.mjs → test-functions-pWs9mhbJ.mjs} +13 -13
- package/.output/server/chunks/build/test-functions-pWs9mhbJ.mjs.map +1 -0
- package/.output/server/chunks/build/{useCopyRich-CZxJ7IY_.mjs → useCopyRich-BqVfhnoH.mjs} +90 -33
- package/.output/server/chunks/build/{useCopyRich-CZxJ7IY_.mjs.map → useCopyRich-BqVfhnoH.mjs.map} +1 -1
- package/.output/server/chunks/build/{useDesktopDownload-Dyf0fR47.mjs → useDesktopDownload-l80DQJ9e.mjs} +2 -2
- package/.output/server/chunks/build/useDesktopDownload-l80DQJ9e.mjs.map +1 -0
- package/.output/server/chunks/build/{useDesktopLocalRuns-k7Gw3Fv3.mjs → useDesktopLocalRuns-Dil3YzyU.mjs} +68 -6
- package/.output/server/chunks/build/useDesktopLocalRuns-Dil3YzyU.mjs.map +1 -0
- package/.output/server/chunks/build/{useDesktopProjectLink-WwLte59P.mjs → useDesktopProjectLink-BnIONB--.mjs} +21 -4
- package/.output/server/chunks/build/useDesktopProjectLink-BnIONB--.mjs.map +1 -0
- package/.output/server/chunks/build/{useFormControl-8skMOTIf.mjs → useFormControl-CXKztoWk.mjs} +2 -2
- package/.output/server/chunks/build/useFormControl-CXKztoWk.mjs.map +1 -0
- package/.output/server/chunks/build/{useOpenInIde-D74FmDNg.mjs → useOpenInIde-CbbYW3pd.mjs} +2 -2
- package/.output/server/chunks/build/useOpenInIde-CbbYW3pd.mjs.map +1 -0
- package/.output/server/chunks/build/{useSettingsNav-BLTHducV.mjs → useSettingsNav-C6NpD4Ab.mjs} +2 -2
- package/.output/server/chunks/build/useSettingsNav-C6NpD4Ab.mjs.map +1 -0
- package/.output/server/chunks/build/{users-C9bjOBde.mjs → users-C2MuCf5G.mjs} +9 -9
- package/.output/server/chunks/build/users-C2MuCf5G.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +1032 -721
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/__piwi/session.get.mjs +1 -1
- package/.output/server/chunks/routes/api/ai/step-resolution.post.mjs +88 -0
- package/.output/server/chunks/routes/api/ai/step-resolution.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/change-password.post.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/login.post.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/logout.post.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/me.get.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/reset-password.post.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/setup.get.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/setup.post.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/verify-email.get.mjs +1 -1
- package/.output/server/chunks/routes/api/channels/_id/test.post.mjs +1 -1
- package/.output/server/chunks/routes/api/channels/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs +1 -1
- package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs +1 -1
- package/.output/server/chunks/routes/api/desktop/import-local.post.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/files/_...path_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/health.get.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get2.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get3.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get4.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get5.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post2.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post3.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post4.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post5.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post6.mjs +1 -1
- package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs +1 -1
- package/.output/server/chunks/routes/api/links/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/links/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/markers/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/markers/_id_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/notifications/stream.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/ai-steps.get.mjs +63 -0
- package/.output/server/chunks/routes/api/projects/_id/ai-steps.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/members.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/members.put.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/test-functions/extract.post.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/test-functions/validate-proposal.post.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/test-functions.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/test-functions.post.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/menu.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/overview.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects.get.mjs +1 -1
- package/.output/server/chunks/routes/api/search.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai/test.post.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai.put.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/smtp.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs +1 -1
- package/.output/server/chunks/routes/api/setup-status.get.mjs +1 -1
- package/.output/server/chunks/routes/api/stream.get.mjs +1 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/tags/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/tags/_id_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-functions/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/test-functions/_id_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/import.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/recent.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/setup.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/start.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +3 -1
- package/.output/server/chunks/routes/api/test-runs/submit.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/upload.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/traces/check.post.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/invite.post.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/projects.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/projects.put.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/version.get.mjs +1 -1
- package/.output/server/chunks/routes/mcp.post.mjs +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/database/migrations/0045_productive_stingray.sql +1 -0
- package/.output/server/database/migrations/meta/0045_snapshot.json +3779 -0
- package/.output/server/database/migrations/meta/_journal.json +7 -0
- package/.output/server/database/migrations-pg/0046_gorgeous_hercules.sql +1 -0
- package/.output/server/database/migrations-pg/meta/0046_snapshot.json +4486 -0
- package/.output/server/database/migrations-pg/meta/_journal.json +7 -0
- package/.output/server/index.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/package.json +1 -1
- package/.output/public/_nuxt/5SkLJHl8.js +0 -1
- package/.output/public/_nuxt/6sA-GK37.js +0 -1
- package/.output/public/_nuxt/6vX5JdHr.js +0 -1
- package/.output/public/_nuxt/B070fjS-.js +0 -1
- package/.output/public/_nuxt/B0tmRAhY.js +0 -1
- package/.output/public/_nuxt/B3AG2m76.js +0 -1
- package/.output/public/_nuxt/B4mZElvM.js +0 -1
- package/.output/public/_nuxt/B7tiBVLW.js +0 -1
- package/.output/public/_nuxt/BFYkWpPx.js +0 -1
- package/.output/public/_nuxt/BM5BPKlc.js +0 -1
- package/.output/public/_nuxt/BNyTWIad.js +0 -9
- package/.output/public/_nuxt/BOvtXn3m.js +0 -1
- package/.output/public/_nuxt/BVyjw9Bi.js +0 -1
- package/.output/public/_nuxt/BZOykMLD.js +0 -1
- package/.output/public/_nuxt/BjMo2tKC.js +0 -6
- package/.output/public/_nuxt/BjOFxi54.js +0 -1
- package/.output/public/_nuxt/BjaRappk.js +0 -1
- package/.output/public/_nuxt/BtZNYmZO.js +0 -1
- package/.output/public/_nuxt/C6t4kxaa.js +0 -1
- package/.output/public/_nuxt/CEai-PWF.js +0 -1
- package/.output/public/_nuxt/CF_eDZHu.js +0 -1
- package/.output/public/_nuxt/CIQeRUSy.js +0 -17
- package/.output/public/_nuxt/CPQRQqXU.js +0 -1
- package/.output/public/_nuxt/CYhm2FBS.js +0 -5
- package/.output/public/_nuxt/CdEzDaDI.js +0 -1
- package/.output/public/_nuxt/CfhOanaF.js +0 -1
- package/.output/public/_nuxt/CvVbKrcH.js +0 -1
- package/.output/public/_nuxt/Cz7SCzdW.js +0 -1
- package/.output/public/_nuxt/D7fxV-UA.js +0 -1
- package/.output/public/_nuxt/D7t0Dn3h.js +0 -1
- package/.output/public/_nuxt/DCE2_MKD.js +0 -2
- package/.output/public/_nuxt/DFfqRQxk.js +0 -1
- package/.output/public/_nuxt/DNqm5cWU.js +0 -1
- package/.output/public/_nuxt/DTrPCv7R.js +0 -1
- package/.output/public/_nuxt/DYjxDsYC.js +0 -1
- package/.output/public/_nuxt/Dbf8eT28.js +0 -1
- package/.output/public/_nuxt/DeewM3Wg.js +0 -2
- package/.output/public/_nuxt/DiWxW-w3.js +0 -2
- package/.output/public/_nuxt/DmqCquDx.js +0 -1
- package/.output/public/_nuxt/DnxrNGE_.js +0 -1
- package/.output/public/_nuxt/DprkT7rM.js +0 -1
- package/.output/public/_nuxt/DuBtaw3j.js +0 -1
- package/.output/public/_nuxt/DylyATWU.js +0 -2
- package/.output/public/_nuxt/HIGGZ_c-.js +0 -1
- package/.output/public/_nuxt/RkNtgoTD.js +0 -1
- package/.output/public/_nuxt/Wk7ZKG4B.js +0 -1
- package/.output/public/_nuxt/Ya8ZzWuY.js +0 -1
- package/.output/public/_nuxt/a8Z6VC7V.js +0 -2
- package/.output/public/_nuxt/builds/meta/6d1766a0-0aba-46b8-9d97-7dd174130359.json +0 -1
- package/.output/public/_nuxt/dUPMBJ4f.js +0 -1
- package/.output/public/_nuxt/eT2oObCh.js +0 -1
- package/.output/public/_nuxt/entry.D_eWXrnD.css +0 -1
- package/.output/public/_nuxt/kWnH8yJq.js +0 -1
- package/.output/public/_nuxt/sqqg4oXL.js +0 -1
- package/.output/public/_nuxt/xZQGtnVA.js +0 -1
- package/.output/server/chunks/build/Alert-He-UxEt6.mjs.map +0 -1
- package/.output/server/chunks/build/Breadcrumb-DEP2dVCZ.mjs.map +0 -1
- package/.output/server/chunks/build/BreadcrumbNav-y6nMDYcR.mjs.map +0 -1
- package/.output/server/chunks/build/BrowserBadge-DIASU8Gf.mjs.map +0 -1
- package/.output/server/chunks/build/ChartCard-ZTsCvItQ.mjs.map +0 -1
- package/.output/server/chunks/build/ChartMarkerTooltip-u_1DUHh-.mjs.map +0 -1
- package/.output/server/chunks/build/Checkbox-BisdHf8n.mjs.map +0 -1
- package/.output/server/chunks/build/CodeBlock-B8BNtZAe.mjs.map +0 -1
- package/.output/server/chunks/build/DashboardNavbar-D7-3zBUU.mjs.map +0 -1
- package/.output/server/chunks/build/DashboardSidebarToggle-C3HdHvlE.mjs.map +0 -1
- package/.output/server/chunks/build/DataLocationCard-CC2-lHiP.mjs.map +0 -1
- package/.output/server/chunks/build/DesktopRunLocallyButton-iNzrDsEs.mjs.map +0 -1
- package/.output/server/chunks/build/DiagnosisPanel-BVb2LgHu.mjs.map +0 -1
- package/.output/server/chunks/build/DiagnosisResult-xVgZlfKK.mjs.map +0 -1
- package/.output/server/chunks/build/DurationValue-UX9uajQJ.mjs.map +0 -1
- package/.output/server/chunks/build/EmptyState-DC2q_7TD.mjs.map +0 -1
- package/.output/server/chunks/build/EntityLinks-Dzn73fbq.mjs.map +0 -1
- package/.output/server/chunks/build/EnvManagedBadge-C-agmABK.mjs.map +0 -1
- package/.output/server/chunks/build/ErrorState-CktYyeEZ.mjs.map +0 -1
- package/.output/server/chunks/build/FeatureUnavailable-DHFkwI7t.mjs.map +0 -1
- package/.output/server/chunks/build/FormField-GYHKiSI6.mjs.map +0 -1
- package/.output/server/chunks/build/GetStartedWizard-BpcGYsm2.mjs.map +0 -1
- package/.output/server/chunks/build/HelpHint-plioHKA0.mjs.map +0 -1
- package/.output/server/chunks/build/LoadingState-CwpfmI0W.mjs.map +0 -1
- package/.output/server/chunks/build/MarkerBadge-Biz5--h2.mjs.map +0 -1
- package/.output/server/chunks/build/MetaStripGroup-A0a72vt5.mjs.map +0 -1
- package/.output/server/chunks/build/Modal-hKLvVFNp.mjs.map +0 -1
- package/.output/server/chunks/build/NavbarActions-_YjrSUat.mjs.map +0 -1
- package/.output/server/chunks/build/NavigationMenu-RfBOyS32.mjs.map +0 -1
- package/.output/server/chunks/build/RovingFocusItem-BOSx1Z9Z.mjs.map +0 -1
- package/.output/server/chunks/build/RunReports-nuLb-Nm3.mjs.map +0 -1
- package/.output/server/chunks/build/RunStatusBadge-CvWmcFYM.mjs.map +0 -1
- package/.output/server/chunks/build/SectionCard-DHAFvJxm.mjs.map +0 -1
- package/.output/server/chunks/build/Select-CEyw7HGK.mjs.map +0 -1
- package/.output/server/chunks/build/Separator-lrN70ODV.mjs.map +0 -1
- package/.output/server/chunks/build/SettingsField-tRmytcEJ.mjs.map +0 -1
- package/.output/server/chunks/build/Slideover-D6cRIqch.mjs.map +0 -1
- package/.output/server/chunks/build/Switch-R2n82ncQ.mjs.map +0 -1
- package/.output/server/chunks/build/Table-qZdnm9t2.mjs.map +0 -1
- package/.output/server/chunks/build/Tabs-BDP7MWl4.mjs.map +0 -1
- package/.output/server/chunks/build/TestCaseHistoryChart-CKDXQ2GI.mjs.map +0 -1
- package/.output/server/chunks/build/TestMetaBadges-BlyKmfeP.mjs.map +0 -1
- package/.output/server/chunks/build/TestStatusBar-CvsmKJ4D.mjs.map +0 -1
- package/.output/server/chunks/build/Textarea-DpmpM-lN.mjs.map +0 -1
- package/.output/server/chunks/build/Tooltip-BI3WQErw.mjs.map +0 -1
- package/.output/server/chunks/build/VisuallyHiddenInput-D4E5aJCQ.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-T965GKYC.mjs.map +0 -1
- package/.output/server/chunks/build/about-B3V_OEiu.mjs.map +0 -1
- package/.output/server/chunks/build/account-DpBdYE46.mjs.map +0 -1
- package/.output/server/chunks/build/db.client-Bdqk_eYQ.mjs.map +0 -1
- package/.output/server/chunks/build/default-DO1izI2V.mjs.map +0 -1
- package/.output/server/chunks/build/edit-BdfF9er2.mjs.map +0 -1
- package/.output/server/chunks/build/fetch-tkz5_OA-.mjs.map +0 -1
- package/.output/server/chunks/build/forgot-password-swZRcvXE.mjs.map +0 -1
- package/.output/server/chunks/build/help-content-C876a9WD.mjs.map +0 -1
- package/.output/server/chunks/build/import-B27Sv7h5.mjs.map +0 -1
- package/.output/server/chunks/build/index-ByWTzqF6.mjs.map +0 -1
- package/.output/server/chunks/build/index-C7m32bRI.mjs.map +0 -1
- package/.output/server/chunks/build/index-ID913tUa.mjs.map +0 -1
- package/.output/server/chunks/build/index-vRwzDXLs.mjs.map +0 -1
- package/.output/server/chunks/build/isValueEqualOrExist-D4lZ8uRY.mjs.map +0 -1
- package/.output/server/chunks/build/login-hxCF06JT.mjs.map +0 -1
- package/.output/server/chunks/build/mcp-BVW1llyW.mjs.map +0 -1
- package/.output/server/chunks/build/notifications-Dn-evqXM.mjs.map +0 -1
- package/.output/server/chunks/build/performance-CV8qm94u.mjs.map +0 -1
- package/.output/server/chunks/build/pr-feedback-gKDz8LyA.mjs.map +0 -1
- package/.output/server/chunks/build/reset-password-DtEISa1I.mjs.map +0 -1
- package/.output/server/chunks/build/settings-BJDnuLpc.mjs.map +0 -1
- package/.output/server/chunks/build/settings-metadata-DnAK4Rzg.mjs.map +0 -1
- package/.output/server/chunks/build/storage-zN92cA9q.mjs.map +0 -1
- package/.output/server/chunks/build/tags-CJFnoyQc.mjs.map +0 -1
- package/.output/server/chunks/build/test-cases-0Q6rT73d.mjs.map +0 -1
- package/.output/server/chunks/build/test-functions-DVRJgiWo.mjs.map +0 -1
- package/.output/server/chunks/build/useDesktopDownload-Dyf0fR47.mjs.map +0 -1
- package/.output/server/chunks/build/useDesktopLocalRuns-k7Gw3Fv3.mjs.map +0 -1
- package/.output/server/chunks/build/useDesktopProjectLink-WwLte59P.mjs.map +0 -1
- package/.output/server/chunks/build/useFormControl-8skMOTIf.mjs.map +0 -1
- package/.output/server/chunks/build/useOpenInIde-D74FmDNg.mjs.map +0 -1
- package/.output/server/chunks/build/useSettingsNav-BLTHducV.mjs.map +0 -1
- package/.output/server/chunks/build/users-C9bjOBde.mjs.map +0 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{_ as es}from"./D5Mhpp98.js";import{_ as ts}from"./Ds8_6Fzl.js";import{d as re,o as s,e as v,f as u,g as o,h as r,t as c,c as a,F as U,z as te,b as e,m as pe,k as f,l as i,E as pt,i as Z,_ as ce,v as C,H as Pe,j as Ie,q as ss,C as yt,x as ge,r as A,ab as $e,a as xe,ac as ns,B as Oe,R as Ce,u as as,p as os,w as mt,s as rs,ad as is,N as ls}from"./BzBaMPgu.js";import{d as cs,e as us,h as He,a as ds,b as ms,c as fs,_ as gs,n as ps,o as ys,p as hs,u as xs,f as vs,i as _s,j as ks,k as bs,l as ws,m as $s}from"./BYWQ47QQ.js";import{_ as Cs}from"./DH_LEqhd.js";import{_ as Ts}from"./BC5bqlfM.js";import{_ as Ss,a as Is}from"./CdLqOMvN.js";import{_ as Rs,a as js,b as Ls,c as zs}from"./iUf7K_JR.js";import{_ as Re}from"./Ch8sGLqE.js";import{_ as Ms}from"./OanUGF_v.js";import{_ as Ns}from"./BraJd4EA.js";import{_ as ht}from"./BMfTUMYy.js";import{_ as xt}from"./BF5JDf9_.js";import{_ as vt}from"./B-onBCAB.js";import{_ as _t,a as kt}from"./qeqzb80l.js";import{_ as Ds}from"./DLwuL-qR.js";import{_ as Ps}from"./kDEwM7SQ.js";import{_ as As,d as Us,e as Bs,f as Fs,g as Vs,h as Es,a as bt,i as Te,b as De,c as Os}from"./RSS6R9Te.js";import{f as Se,m as Hs,c as Ks,e as Ws,n as wt,o as Ke,q as We,u as Gs,j as qs,r as ft}from"./CdM2qNYM.js";import{_ as $t}from"./BSKLNgre.js";import{_ as ye}from"./D_j436ND.js";import{_ as Js}from"./Die1200X.js";import{u as Qs}from"./zAFiz2Mg.js";import{_ as Ge}from"./Dq6_-84R.js";import{_ as qe}from"./Hp-_W7z4.js";import{_ as Ct}from"./mhvG7mu8.js";import{f as we}from"./D-c8ZSws.js";import{_ as Zs}from"./Cmuwgbf4.js";import{_ as Xs}from"./CnsaoeEq.js";import{_ as Ys}from"./CBQXv4bU.js";import{_ as en}from"./5nOoVJzL.js";import{_ as tn}from"./B77w1Eib.js";import{_ as sn}from"./9Dtlg-K4.js";import{b as nn}from"./7vRR5W2L.js";import{a as an,u as gt}from"./CDEmotIt.js";import"./DWz_bHNP.js";import"./BTCWUyBX.js";import"./CPiLUjjx.js";import"./E26Y1NWH.js";import"./Db5xe__T.js";import"./BbXvpkBp.js";import"./BFVrl1ss.js";import"./CnRNwiuE.js";import"./DDho3MJD.js";import"./Bg8yOdSf.js";import"./CTYlay1H.js";import"./C8uZoJVq.js";import"./WCZdf9Ln.js";import"./Boyv6hLW.js";import"./vOZZ2cLi.js";import"./BcHU1KNK.js";import"./BPQNVV4M.js";import"./BOrnSpTA.js";import"./D_SCB-z2.js";import"./BYnqoVCE.js";import"./D7W_4Sqc.js";import"./CbuK1HIv.js";const on={class:"text-sm font-semibold truncate min-w-0"},rn={class:"flex items-center gap-3 ml-auto max-sm:hidden"},ln={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},cn={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},un={class:"text-gray-700 dark:text-gray-300"},dn={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},mn={class:"text-gray-700 dark:text-gray-300"},fn={class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},gn={class:"text-gray-700 dark:text-gray-300"},pn={key:0,class:"text-xs text-gray-500 tabular-nums whitespace-nowrap"},yn={class:"text-gray-700 dark:text-gray-300"},hn={class:"@container"},xn={class:"space-y-3"},vn={class:"flex items-start gap-2.5 pr-8"},_n={class:"min-w-0 flex-1"},kn={class:"flex items-center gap-2 flex-wrap"},bn={class:"text-base font-bold truncate max-w-full"},wn={class:"text-xs text-gray-500 mt-0.5 flex items-center gap-x-2 gap-y-0.5 flex-wrap"},$n=["title"],Cn={key:1},Tn={key:0,class:"flex items-center gap-2 text-sm"},Sn={class:"text-gray-700 dark:text-gray-300 truncate"},In={key:0,class:"text-gray-500 shrink-0"},Rn={key:1,class:"flex items-center gap-1.5 text-sm"},jn={key:0,class:"font-medium"},Ln=["title"],zn={key:2,class:"text-muted"},Mn=["title"],Nn={key:0,class:"rounded-full border border-default px-2 py-0.5 text-xs bg-elevated/60"},Dn={key:1},Pn=["href"],An={key:1},Un={class:"text-muted"},Bn={key:0,class:"tabular-nums text-muted"},Fn={key:0,class:"text-dimmed"},Vn=re({__name:"TestCaseSummary",props:{testCase:{},scmInfo:{},ciInfo:{},browser:{},environment:{},stepsCount:{},historicalTiming:{},stableLinks:{},projectKey:{},projectName:{}},emits:["refresh"],setup(t){const _=t,h=C(()=>{const n=_.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(()=>(_.testCase?.testAnnotations??[]).filter(n=>!Hs(n.type))),$=C(()=>_.testCase?.startedAt??null),g=C(()=>!!(_.ciInfo||_.environment));return(n,l)=>{const d=Rs,P=Re,D=Ms,b=pe,x=Ns,V=ht,M=pt,m=xt,j=vt,F=ce,B=_t,S=Ls,G=Ds,J=js,z=Ps,ne=As;return s(),v(ne,{"storage-key":"test-case"},{folded:u(()=>[r(d,{status:t.testCase?.status??"",size:"sm"},null,8,["status"]),o("span",on,c(t.testCase?.title),1),o("div",rn,[o("span",ln,[l[1]||(l[1]=f(" Dur: ",-1)),r(P,{ms:t.testCase?.duration,class:"font-bold text-gray-700 dark:text-gray-300"},null,8,["ms"])]),o("span",cn,[l[2]||(l[2]=f(" Retries: ",-1)),o("strong",un,c(t.testCase?.retries??0),1)]),o("span",dn,[l[3]||(l[3]=f(" Steps: ",-1)),o("strong",mn,c(t.stepsCount),1)]),o("span",fn,[l[4]||(l[4]=f(" Worker: ",-1)),o("strong",gn,c(t.testCase?.workerIndex??"—"),1)]),t.testCase?.shardIndex!=null?(s(),a("span",pn,[l[5]||(l[5]=f(" Shard: ",-1)),o("strong",yn,c(t.testCase.shardIndex),1)])):i("",!0)]),t.browser?(s(),v(D,{key:0,browser:t.browser,size:"sm",class:"shrink-0 max-sm:hidden"},null,8,["browser"])):i("",!0)]),default:u(()=>[o("div",hn,[r(z,{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(),v(S,{key:0,label:"Source",icon:"i-lucide-git-branch"},{default:u(()=>[t.scmInfo.branch?(s(),a("span",jn,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,Ln)):i("",!0),t.scmInfo.author?(s(),a("span",zn,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,Mn)):i("",!0)]),_:1})):i("",!0),e(g)?(s(),v(S,{key:1,label:"CI & environment",icon:"i-lucide-cloud",help:"run.ci-env"},{default:u(()=>[t.environment?(s(),a("span",Nn,c(t.environment),1)):i("",!0),t.ciInfo?.provider?(s(),a("span",Dn,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,Pn)):(s(),a("span",An,"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",Un,[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(),v(S,{key:2,label:"Browser"},{default:u(()=>[r(D,{browser:{...t.browser,viewport:void 0},size:"sm"},null,8,["browser"]),t.browser.viewport?(s(),a("span",Bn,[f(c(t.browser.viewport.width)+"×"+c(t.browser.viewport.height)+" ",1),t.browser.deviceScaleFactor&&t.browser.deviceScaleFactor!==1?(s(),a("span",Fn,"@"+c(t.browser.deviceScaleFactor)+"x",1)):i("",!0)])):i("",!0)]),_:1})):i("",!0),r(S,{label:"Links",icon:"i-lucide-link"},{default:u(()=>[t.testCase?.id?(s(),v(G,{key:0,"entity-type":"test_case","entity-id":t.testCase.id,links:t.stableLinks??null,onUpdated:l[0]||(l[0]=E=>n.$emit("refresh"))},null,8,["entity-id","links"])):i("",!0)]),_:1})]),_:1})]),default:u(()=>[o("div",xn,[o("div",vn,[r(d,{status:t.testCase?.status??"",class:"mt-0.5"},null,8,["status"]),o("div",_n,[o("div",kn,[o("h2",bn,c(t.testCase?.title),1),(s(!0),a(U,null,te(e(h),E=>(s(),v(b,{key:E.label,color:E.color,variant:"subtle",size:"xs",title:E.title},{default:u(()=>[f(c(E.label),1)]),_:2},1032,["color","title"]))),128)),(s(!0),a(U,null,te(e(w),(E,ue)=>(s(),v(b,{key:`ann-${ue}`,color:"neutral",variant:"soft",size:"xs",class:"font-mono",title:E.description||E.type},{default:u(()=>[f(" @"+c(E.type),1)]),_:2},1032,["title"]))),128)),r(x,{tags:t.testCase?.tags,meta:t.testCase?.testMeta},null,8,["tags","meta"])]),o("p",wn,[t.testCase?.location?(s(),v(V,{key:0,location:t.testCase.location,"project-key":t.projectKey,"project-name":t.projectName},null,8,["location","project-key","project-name"])):i("",!0),r(M,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,$n)):i("",!0)]),_:1}),t.historicalTiming?(s(),a("span",Cn,[l[6]||(l[6]=f(" Avg ",-1)),r(P,{ms:t.historicalTiming.avg},null,8,["ms"]),l[7]||(l[7]=f(" · ",-1)),o("span",{class:Z(t.historicalTiming.diff>0?"text-red-600":"text-green-600")},c(t.historicalTiming.diff>0?"+":"")+c(t.historicalTiming.pct)+"% ",3)])):i("",!0)])])]),r(j,null,{default:u(()=>[r(m,{label:"Duration"},{default:u(()=>[r(P,{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",Tn,[r(F,{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",Sn,c(t.testCase.slowestStep),1),t.testCase.slowestStepDuration?(s(),a("span",In,[l[8]||(l[8]=f("(",-1)),r(P,{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",Rn,[r(F,{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(P,{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})}}}),En=Object.assign(Vn,{__name:"TestCaseSummary"}),On={class:"space-y-3"},Hn={key:0,class:"flex flex-wrap gap-1.5"},Kn={key:0,class:"text-sm text-gray-600 dark:text-gray-400"},Wn={class:"text-gray-800 dark:text-gray-200"},Gn={key:1},qn={class:"flex items-center gap-1 flex-wrap"},Jn=re({__name:"TestCaseVerdictCard",props:{testCase:{},history:{},currentId:{}},setup(t){const _=t,h=l=>l==="failed"||l==="timedOut"||l==="timedout",w=C(()=>{const l=_.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(()=>_.history.slice(0,24).slice().reverse()),g=C(()=>{const l=_.history;if(!l.length)return null;const d=Math.max(0,l.findIndex(b=>b.id===_.currentId));let P=0;for(let b=d;b<l.length&&h(l[b].status);b++)P++;let D=null;for(let b=d+1;b<l.length;b++)if(l[b].status==="passed"){D=l[b];break}return{streak:P,lastPass:D,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 P=ce,D=pe,b=Pe,x=$t,V=pt,M=ye;return s(),v(M,{icon:"i-lucide-clipboard-check","icon-class":"text-amber-500",title:"Verdict",help:"case.verdict"},{default:u(()=>[o("div",On,[e(w).length?(s(),a("div",Hn,[(s(!0),a(U,null,te(e(w),m=>(s(),v(D,{key:m.label,color:m.color,variant:"subtle",size:"sm",title:m.title,class:"inline-flex items-center gap-1"},{default:u(()=>[r(P,{name:m.icon,class:"size-3 shrink-0"},null,8,["name"]),f(" "+c(m.label),1)]),_:2},1032,["color","title"]))),128))])):i("",!0),r(V,null,{default:u(()=>[e(g)?(s(),a("p",Kn,[e(g).streak>=1?(s(),a(U,{key:0},[d[1]||(d[1]=f(" Failing for ",-1)),o("strong",Wn,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",Gn,[d[2]||(d[2]=o("p",{class:"text-xs text-gray-400 mb-1"},"Recent runs (oldest → newest)",-1)),o("div",qn,[(s(!0),a(U,null,te(e($),m=>(s(),v(x,{key:m.id,text:`Run #${m.runId}: ${m.status}`},{default:u(()=>[r(b,{to:`/test-run-cases/${m.id}`,class:Z(["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"}),Zn={class:"space-y-3"},Xn={class:"space-y-1.5"},Yn={class:"flex items-center gap-2 flex-wrap"},ea={class:"text-xs text-gray-500"},ta=["title"],sa={class:"text-xs text-gray-500 dark:text-gray-400"},na={key:0,class:"rounded-lg border border-default bg-elevated/40 p-2.5 space-y-1"},aa={class:"flex items-center gap-1.5 flex-wrap"},oa={class:"text-xs text-gray-600 dark:text-gray-400 line-clamp-3"},ra=["title"],ia=re({__name:"FailureClusterCard",props:{cluster:{}},setup(t){const _=t,h=C(()=>Math.max(0,_.cluster.sameRunCaseCount-1)),w=C(()=>{const g=_.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,P=ce,D=Ie,b=ye;return s(),v(b,{icon:"i-lucide-layers","icon-class":"text-primary",title:"Failure cluster",help:"cluster.concept"},{actions:u(()=>[t.cluster.isNew?(s(),v(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(),v(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",Zn,[o("div",Xn,[o("div",Yn,[t.cluster.errorType?(s(),v(l,{key:0,color:e(Ks)(t.cluster.errorType),variant:"soft",size:"sm"},{default:u(()=>[f(c(t.cluster.errorType),1)]),_:1},8,["color"])):i("",!0),o("span",ea,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,ta)]),o("p",sa,[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",na,[o("div",aa,[r(P,{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(),v(l,{key:0,color:"neutral",variant:"soft",size:"xs"},{default:u(()=>[f(c(e(w).category),1)]),_:1})):i("",!0),e(w).confidence?(s(),v(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",oa,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,ra)):i("",!0),r(D,{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})}}}),la=Object.assign(ia,{__name:"FailureClusterCard"}),ca={class:"space-y-3"},ua={class:"text-xs text-gray-400 inline-flex items-center gap-1"},da={key:0,class:"text-primary"},ma={key:0,class:"flex items-center justify-between gap-2 rounded-lg border border-default bg-elevated/40 p-2.5"},fa={class:"inline-flex items-center gap-2 text-sm text-gray-500"},ga={key:1,class:"flex items-center gap-2"},pa={key:2,class:"rounded-lg border border-dashed border-default p-4 text-center text-gray-400"},ya={class:"text-sm inline-flex items-center gap-1 justify-center"},ha={class:"pt-1 text-center"},xa=re({__name:"TestCaseAiCard",props:{testRunsCaseId:{}},setup(t){const _=t,{aiStatus:h}=Qs(),w=ss(),$=A(null),g=A(!1),n=A(null),l=A([]),d=A(0),P=A(0),D=A(null),b=A(!1),x=A(!1),V=A(null),M=A(!1),m=A("");async function j(){b.value=!0;try{const k=await $fetch(`/api/test-run-cases/${_.testRunsCaseId}/diagnosis-context`,{query:{format:"json"}});n.value=k.text,l.value=k.sections,d.value=k.tokenEstimate,P.value=k.imageTokenEstimate??0,D.value=k.coverage}catch{n.value=null,l.value=[],d.value=0,D.value=null}finally{b.value=!1}}async function F(){try{const k=await $fetch(`/api/test-run-cases/${_.testRunsCaseId}/diagnosis`);$.value=k.diagnosis}catch{}}yt(()=>{F(),j()});const B=C(()=>{const k=$.value?.details;if(!k)return[];const L=[];if(Array.isArray(k.evidence)&&L.push(...k.evidence),Array.isArray(k.hypotheses))for(const ae of k.hypotheses)Array.isArray(ae?.evidence)&&L.push(...ae.evidence);return Es(L)});function S(k){V.value=k,x.value=!0}function G(k){m.value=m.value?`${m.value}
|
|
2
|
+
|
|
3
|
+
${k}`:k,M.value=!0}async function J(k=!1){g.value=!0;try{const L=k?`/api/test-run-cases/${_.testRunsCaseId}/diagnose?force=true`:`/api/test-run-cases/${_.testRunsCaseId}/diagnose`,ae=m.value.trim()?{additionalContext:m.value.trim()}:void 0;$.value=await $fetch(L,{method:"POST",body:ae})}catch(L){const ae=L?.statusCode;ae===409?(w.add({title:"Diagnosis already running",color:"warning"}),F()):ae===503?w.add({title:"AI diagnosis is not configured",color:"warning"}):w.add({title:"Diagnosis failed",description:Ws(L),color:"error"})}finally{g.value=!1}}function z(k){return k.status==="running"&&Date.now()-new Date(k.updatedAt).getTime()>300*1e3}const ne=C(()=>$.value&&($.value.status==="completed"||$.value.status==="failed")),E=C(()=>!$.value||$.value.status==="failed"||$.value.status==="running"&&z($.value)),ue=C(()=>$.value?.status==="running"&&!z($.value)&&!g.value);return(k,L)=>{const ae=Vs,y=ce,T=Us,H=Js,q=Ie,X=Bs,Y=_t,K=Fs,Q=Pe,ee=ye;return s(),v(ee,{icon:"i-lucide-sparkles","icon-class":"text-primary",title:"AI diagnosis",help:"case.ai"},{actions:u(()=>[r(ae,{"context-endpoint":`/api/test-run-cases/${t.testRunsCaseId}/diagnosis-context`},null,8,["context-endpoint"])]),default:u(()=>[o("div",ca,[o("p",ua,[r(y,{name:"i-lucide-triangle-alert",class:"size-3 shrink-0"}),L[6]||(L[6]=f(" AI-generated — verify before applying. ",-1))]),e(h)?.configured?(s(),v(T,{key:0,sections:e(l),"not-applicable":e(D)?.notApplicable,"token-estimate":e(d),loading:e(b),onViewSection:S,onOpen:L[0]||(L[0]=se=>x.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:L[1]||(L[1]=se=>M.value=!e(M))},[r(y,{name:e(M)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5"},null,8,["name"]),L[7]||(L[7]=f(" Additional context ",-1)),e(m).trim()?(s(),a("span",da,"(1)")):i("",!0)]),e(M)?(s(),v(H,{key:0,modelValue:e(m),"onUpdate:modelValue":L[2]||(L[2]=se=>ge(m)?m.value=se: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(ue)?(s(),a("div",ma,[o("span",fa,[r(y,{name:"i-lucide-loader-circle",class:"size-4 animate-spin text-primary shrink-0"}),L[8]||(L[8]=f(" Diagnosis in progress… ",-1))]),r(q,{size:"xs",color:"neutral",variant:"outline",icon:"i-lucide-refresh-cw",loading:e(g),onClick:F},{default:u(()=>[...L[9]||(L[9]=[f(" Refresh ",-1)])]),_:1},8,["loading"])])):(s(),a("div",ga,[e(E)?(s(),v(q,{key:0,icon:"i-lucide-sparkles",size:"sm",color:"primary",variant:"solid",loading:e(g),onClick:L[3]||(L[3]=se=>J(e($)?.status==="running"))},{default:u(()=>[f(c(e($)?.status==="running"?"Restart diagnosis":"Diagnose with AI"),1)]),_:1},8,["loading"])):e($)?.status==="completed"?(s(),v(q,{key:1,icon:"i-lucide-refresh-cw",size:"xs",color:"primary",variant:"soft",loading:e(g),onClick:L[4]||(L[4]=se=>J(!0))},{default:u(()=>[...L[10]||(L[10]=[f(" Re-diagnose ",-1)])]),_:1},8,["loading"])):i("",!0)])),e(ne)?(s(),v(X,{key:2,diagnosis:e($),onViewSection:S,onPrefillContext:G},null,8,["diagnosis"])):i("",!0)],64)):(s(),a("div",pa,[o("p",ya,[L[11]||(L[11]=f(" AI diagnosis is not configured ",-1)),r(Y,{topic:"cluster.ai-setup"})]),L[13]||(L[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(()=>[...L[12]||(L[12]=[f(" Configure in Settings ",-1)])]),_:1})])),r(K,{open:e(x),sections:e(l),"token-estimate":e(d),"image-token-estimate":e(P),loading:e(b),"focus-section":e(V),"cited-sections":e(B),"not-applicable-sections":e(D)?.notApplicable,"onUpdate:open":L[5]||(L[5]=se=>{x.value=se,se||(V.value=null)}),onRefresh:j},null,8,["open","sections","token-estimate","image-token-estimate","loading","focus-section","cited-sections","not-applicable-sections"]),o("div",ha,[r(Q,{to:"/mcp",class:"inline-flex items-center gap-1 text-xs text-gray-400 hover:text-primary transition-colors"},{default:u(()=>[r(y,{name:"i-lucide-bot",class:"size-3"}),L[14]||(L[14]=f(" Query this failure from your AI agent via MCP ",-1))]),_:1})])])]),_:1})}}}),va=Object.assign(xa,{__name:"TestCaseAiCard"});function Tt(t,_,h){const w=A(null),$=A(!1),g=A(!1);async function n(){const l=t();if(!(!l||!$e(_)||$.value)){g.value=!0,$.value=!0;try{w.value=await $fetch(l)}catch{w.value=null}finally{$.value=!1}}}return yt(()=>{xe(()=>$e(_),l=>{l&&(h||g.value)&&!w.value&&n()},{immediate:!0})}),{data:w,pending:$,load:n}}function _a(t,_,h,w={}){return Tt(()=>{const $=$e(t),g=$e(_);return $&&g?`/api/test-runs/${$}/cases/${g}/trace-stacks`:null},h,w.auto??!0)}function ka(t,_,h,w={}){return Tt(()=>{const $=$e(t),g=$e(_);return $&&g?`/api/test-runs/${$}/cases/${g}/trace-network`:null},h,w.auto??!1)}const ba={class:"max-h-[32rem] overflow-y-auto"},wa={key:0,class:"mb-2 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},$a={key:0,class:"mt-3 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},Ca=re({__name:"TestSourceCard",props:{frames:{},testSource:{},runId:{},testRunsCaseId:{},hasTrace:{type:Boolean},projectKey:{},projectName:{},storageKey:{}},setup(t,{expose:_}){const h=t,{data:w,pending:$}=_a(()=>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),P=A(null),D=C({get:()=>P.value??(n.value?"trace":"captured"),set:M=>{P.value=M}}),b=C(()=>[{label:`Full stack (${g.value.length})`,value:"trace"},{label:`Captured (${l.value||1})`,value:"captured"}]),x=C(()=>D.value==="trace"&&n.value?g.value.length:l.value||null),V=A(null);return _({reveal:()=>V.value?.reveal()}),(M,m)=>{const j=Ge,F=ce,B=cs,S=us,G=bt,J=qe,z=kt,ne=He;return s(),v(ne,{ref_key:"card",ref:V,"storage-key":t.storageKey,icon:"i-lucide-code",count:e(x),title:"Test source",help:"case.test-source"},ns({folded:u(()=>[e(D)==="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",ba,[e(D)==="trace"&&e(n)?(s(),a(U,{key:0},[e(w)?.hasSources===!1?(s(),a("p",wa,[r(F,{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(),v(S,{key:0,frames:t.frames,"project-key":t.projectKey,"project-name":t.projectName},null,8,["frames","project-key","project-name"])):t.testSource?(s(),v(G,{key:1,text:"```typescript\n"+t.testSource+"\n```"},null,8,["text"])):t.hasTrace&&e($)?(s(),v(J,{key:2,text:"Loading call stack from trace…"})):i("",!0)],64))]),t.hasTrace?i("",!0):(s(),a("p",$a,[r(F,{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(z,{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(j,{modelValue:e(D),"onUpdate:modelValue":m[0]||(m[0]=E=>ge(D)?D.value=E: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"])}}}),Ta=Object.assign(Ca,{__name:"TestSourceCard"}),Sa={class:"space-y-3"},Ia={class:"divide-y divide-default"},Ra={class:"flex items-center gap-2 min-w-0"},ja={class:"text-sm truncate"},La={key:0,class:"text-xs text-gray-400 shrink-0"},za=re({__name:"TestCaseEvidenceCard",props:{attachments:{},traces:{},storageKey:{}},setup(t,{expose:_}){const h=t,w=Oe(),$=C(()=>h.attachments.filter(x=>Te(x.path,x.contentType)).length),g=C(()=>h.attachments.filter(x=>De(x.path,x.contentType)).length),n=C(()=>h.attachments.filter(x=>!Te(x.path,x.contentType)&&!De(x.path,x.contentType))),l=C(()=>$.value+g.value+h.traces.length+n.value.length),d=C(()=>{const x=[];return $.value&&x.push(`${$.value} screenshot${$.value===1?"":"s"}`),g.value&&x.push(`${g.value} video${g.value===1?"":"s"}`),h.traces.length&&x.push(`${h.traces.length} trace${h.traces.length===1?"":"s"}`),n.value.length&&x.push(`${n.value.length} file${n.value.length===1?"":"s"}`),x.join(" · ")||"No evidence captured"});function P(x,V){return wt(x,V,w.app?.baseURL)}function D(x){return x.split("/").pop()||x}const b=A(null);return _({reveal:()=>b.value?.reveal?.()}),(x,V)=>{const M=ds,m=ms,j=fs,F=ce,B=Ie,S=gs,G=Ct,J=He;return s(),v(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",Sa,[r(M,{attachments:t.attachments},null,8,["attachments"]),r(m,{attachments:t.attachments},null,8,["attachments"]),r(j,{traces:t.traces},null,8,["traces"]),e(n).length?(s(),v(S,{key:0,icon:"i-lucide-paperclip",label:"Attachments",count:e(n).length,collapsible:!1},{default:u(()=>[o("div",Ia,[(s(!0),a(U,null,te(e(n),z=>(s(),a("div",{key:z.id,class:"flex items-center justify-between gap-2 px-3 py-2"},[o("div",Ra,[r(F,{name:"i-lucide-file",class:"size-4 text-gray-400 shrink-0"}),o("span",ja,c(D(z.path)),1),z.size?(s(),a("span",La,c(("formatBytes"in x?x.formatBytes:e(we))(z.size)),1)):i("",!0)]),r(B,{to:P(z.path,z.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(),v(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"])}}}),Ma=Object.assign(za,{__name:"TestCaseEvidenceCard"}),Na={class:"space-y-1 max-h-80 overflow-y-auto"},Da={class:"min-w-0 flex-1"},Pa={class:"flex items-center gap-2"},Aa={class:"truncate"},Ua={key:0,class:"text-xs text-gray-400 mt-0.5 ml-0"},Ba=re({__name:"TestCaseConsoleCard",props:{entries:{}},setup(t){function _(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=ce,n=pe,l=ye;return t.entries.length>0?(s(),v(l,{key:0,icon:"i-lucide-terminal",title:"Console output",count:t.entries.length,help:"case.console"},{default:u(()=>[o("div",Na,[(s(!0),a(U,null,te(t.entries,(d,P)=>(s(),a("div",{key:P,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:Z([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",Da,[o("div",Pa,[r(n,{color:_(d.type),variant:"soft",size:"xs",class:"shrink-0"},{default:u(()=>[f(c(d.type),1)]),_:2},1032,["color"]),o("span",Aa,c(d.text),1)]),d.location?(s(),a("div",Ua,c(d.location),1)):i("",!0)])]))),128))])]),_:1},8,["count"])):i("",!0)}}}),Fa=Object.assign(Ba,{__name:"TestCaseConsoleCard"}),Va={key:0,class:"space-y-4 text-sm"},Ea={class:"space-y-1.5"},Oa={class:"flex items-center gap-2"},Ha={key:0,class:"text-xs text-gray-500"},Ka={class:"block text-xs break-all text-gray-700 dark:text-gray-300"},Wa={key:0,class:"text-xs text-red-600 dark:text-red-400 font-mono"},Ga={class:"flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-gray-400"},qa={key:0,class:"font-mono"},Ja={key:1,class:"font-mono"},Qa={key:2},Za={key:3,title:"Bytes on the wire"},Xa={key:0},Ya={class:"flex h-2 rounded overflow-hidden bg-gray-100 dark:bg-gray-800"},eo=["title"],to={class:"flex flex-wrap gap-x-3 gap-y-1 mt-1.5 text-xs text-gray-500"},so={class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5 capitalize"},no={key:0,class:"rounded border border-default divide-y divide-default max-h-48 overflow-y-auto"},ao={class:"text-gray-500 dark:text-gray-400 shrink-0"},oo={class:"break-all text-gray-700 dark:text-gray-300"},ro={key:1,class:"text-xs text-gray-400"},io={key:1},lo={key:0,class:"rounded border border-default p-2"},co=["src","alt"],uo={key:1,class:"max-h-96 overflow-y-auto"},mo={key:0,class:"mt-1 text-xs text-gray-400"},fo={key:2,class:"text-xs text-gray-400"},go={key:2,class:"text-xs text-gray-400"},po=re({__name:"TraceNetworkDrawer",props:{open:{type:Boolean},entry:{},runId:{},testRunsCaseId:{}},emits:["update:open"],setup(t,{emit:_}){const h=t,w=_,$=[{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(x=>({...x,value:b[x.key]??-1})).filter(x=>typeof x.value=="number"&&x.value>=0):[]}),n=C(()=>g.value.reduce((b,x)=>b+x.value,0)),l=C(()=>{const b=h.entry?.requestPostData??"";return b.startsWith("{")||b.startsWith("[")}),d=A(null),P=A(!1),D=new Map;return xe(()=>[h.open,h.entry?.bodySha1],async([b,x])=>{if(d.value=null,!b||!x||!h.runId)return;const V=D.get(x);if(V){d.value=V;return}P.value=!0;try{const M=await $fetch(`/api/test-runs/${h.runId}/cases/${h.testRunsCaseId}/trace-network-body`,{query:{sha1:x}});D.set(x,M),d.value=M}catch{d.value={status:"not-found"}}finally{P.value=!1}},{immediate:!0}),(b,x)=>{const V=pe,M=Re,m=Zs,j=qe,F=Xs;return s(),v(F,{open:t.open,title:"Request detail",ui:{content:"max-w-xl"},"onUpdate:open":x[0]||(x[0]=B=>w("update:open",B))},{body:u(()=>[t.entry?(s(),a("div",Va,[o("div",Ea,[o("div",Oa,[r(V,{color:("httpMethodColor"in b?b.httpMethodColor:e(Ke))(t.entry.method),variant:"soft",size:"sm",class:"font-mono shrink-0"},{default:u(()=>[f(c(t.entry.method),1)]),_:1},8,["color"]),r(V,{color:("httpStatusColor"in b?b.httpStatusColor:e(We))(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",Ha,c(t.entry.statusText),1)):i("",!0)]),o("code",Ka,c(t.entry.url),1),t.entry.failureText?(s(),a("p",Wa,c(t.entry.failureText),1)):i("",!0),o("div",Ga,[t.entry.resourceType?(s(),a("span",qa,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",Za,c(("formatBytes"in b?b.formatBytes:e(we))(t.entry.transferSize))+" transferred",1)):i("",!0),r(M,{ms:t.entry.duration},null,8,["ms"]),t.entry.duringFailure?(s(),v(V,{key:4,color:"error",variant:"subtle",size:"xs"},{default:u(()=>[...x[1]||(x[1]=[f("During failing action",-1)])]),_:1})):i("",!0)])]),e(g).length>0&&e(n)>0?(s(),a("div",Xa,[x[2]||(x[2]=o("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5"},"Timing",-1)),o("div",Ya,[(s(!0),a(U,null,te(e(g),B=>(s(),a("div",{key:B.key,class:Z(B.color),style:Ce({width:`${Math.max(.5,B.value/e(n)*100)}%`}),title:`${B.label}: ${("formatDuration"in b?b.formatDuration:e(Gs))(B.value)}`},null,14,eo))),128))]),o("div",to,[(s(!0),a(U,null,te(e(g),B=>(s(),a("span",{key:B.key,class:"inline-flex items-center gap-1"},[o("span",{class:Z(["size-2 rounded-full",B.color])},null,2),f(" "+c(B.label)+" ",1),r(M,{ms:B.value,"no-title":""},null,8,["ms"])]))),128))])])):i("",!0),(s(),a(U,null,te(["request","response"],B=>o("div",{key:B},[o("p",so,c(B)+" headers",1),(B==="request"?t.entry.requestHeaders:t.entry.responseHeaders).length>0?(s(),a("div",no,[(s(!0),a(U,null,te(B==="request"?t.entry.requestHeaders:t.entry.responseHeaders,S=>(s(),a("div",{key:`${B}-${S.name}`,class:"px-2 py-1 text-xs font-mono flex gap-2"},[o("span",ao,c(S.name)+":",1),o("span",oo,c(S.value),1)]))),128))])):(s(),a("p",ro,"None recorded."))])),64)),t.entry.requestPostData?(s(),a("div",io,[x[3]||(x[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,[x[4]||(x[4]=o("p",{class:"text-xs font-medium text-gray-500 dark:text-gray-400 mb-1.5"},"Response body",-1)),e(P)?(s(),v(j,{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",lo,[o("img",{src:e(d).dataUri,alt:t.entry.url,class:"max-w-full max-h-96"},null,8,co)])):e(d).status==="ok"?(s(),a("div",uo,[r(m,{code:e(d).content??"",lang:e(d).kind==="json"?"json":"text"},null,8,["code","lang"]),e(d).truncated?(s(),a("p",mo,"Preview truncated.")):i("",!0)])):(s(),a("p",fo,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",go,"No body captured for this request."))])])):i("",!0)]),_:1},8,["open"])}}}),yo=Object.assign(po,{__name:"TraceNetworkDrawer"}),ho={class:"flex items-center justify-between gap-2 mb-2"},xo={key:0,class:"hidden sm:flex items-center gap-1.5 text-xs text-gray-400"},vo={class:"space-y-1 max-h-[28rem] overflow-y-auto"},_o=["title","onClick"],ko={class:"flex items-center gap-2 text-sm min-w-0"},bo={class:"truncate text-xs flex-1 min-w-0"},wo={key:0,class:"shrink-0 text-xs text-gray-400 font-mono hidden md:inline"},$o={key:1,class:"shrink-0 text-xs text-gray-400 tabular-nums hidden sm:inline"},Co={class:"relative h-1.5 mt-1 rounded bg-gray-100 dark:bg-gray-800 overflow-hidden"},To={key:0,class:"mt-2 text-xs text-gray-400 dark:text-gray-500"},So=re({__name:"TraceNetworkList",props:{data:{},runId:{},testRunsCaseId:{}},setup(t){const _=t,h=A("all"),w=C(()=>_.data.requests??[]),$=C(()=>({total:w.value.length,failed:w.value.filter(j=>j.failed).length,duringFailure:w.value.filter(j=>j.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(j=>j.failed):h.value==="duringFailure"?w.value.filter(j=>j.duringFailure):w.value);function l(j){try{return new URL(j).pathname||j}catch{return j}}const d=C(()=>Math.max(1,_.data.timelineDuration??1));function P(j){const F=Math.max(0,Math.min(100,j.start/d.value*100)),B=Math.min(100-F,Math.max(1.5,j.duration/d.value*100));return{left:`${F}%`,width:`${B}%`}}const D=C(()=>{const j=_.data.failingWindow;if(!j||j.end<=j.start)return null;const F=Math.max(0,Math.min(100,j.start/d.value*100)),B=Math.max(.5,Math.min(100-F,(j.end-j.start)/d.value*100));return{left:`${F}%`,width:`${B}%`}});function b(j){return j.failed?"bg-red-500":j.duration>1e3?"bg-orange-400":"bg-gray-400 dark:bg-gray-500"}function x(j){return j.failed?"border-l-2 border-l-red-400 dark:border-l-red-600":j.duringFailure?"border-l-2 border-l-amber-400 dark:border-l-amber-600":"border-l-2 border-l-transparent"}const V=A(null),M=A(!1);function m(j){V.value=j,M.value=!0}return(j,F)=>{const B=Ge,S=pe,G=Re,J=yo;return s(),a("div",null,[o("div",ho,[r(B,{modelValue:e(h),"onUpdate:modelValue":F[0]||(F[0]=z=>ge(h)?h.value=z: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",xo,[...F[2]||(F[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",vo,[(s(!0),a(U,null,te(e(n),z=>(s(),a("button",{key:z.index,type:"button",class:Z([x(z),"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:z.url,onClick:ne=>m(z)},[o("div",ko,[r(S,{color:("httpMethodColor"in j?j.httpMethodColor:e(Ke))(z.method),variant:"soft",size:"xs",class:"font-mono shrink-0"},{default:u(()=>[f(c(z.method),1)]),_:2},1032,["color"]),r(S,{color:("httpStatusColor"in j?j.httpStatusColor:e(We))(z.status),variant:"soft",size:"xs",class:"font-mono shrink-0 tabular-nums",title:z.failureText||z.statusText},{default:u(()=>[f(c(z.status>0?z.status:"—"),1)]),_:2},1032,["color","title"]),o("code",bo,c(l(z.url)),1),z.resourceType?(s(),a("span",wo,c(z.resourceType),1)):i("",!0),z.responseBodySize!=null?(s(),a("span",$o,c(("formatBytes"in j?j.formatBytes:e(we))(z.responseBodySize)),1)):i("",!0),o("span",{class:Z(["ml-1 shrink-0 text-xs tabular-nums",z.duration>1e3?"text-red-600 font-medium":z.duration>500?"text-orange-500":"text-gray-500"])},[r(G,{ms:z.duration,"unit-class":"opacity-60"},null,8,["ms"])],2)]),o("div",Co,[e(D)?(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(D))},null,4)):i("",!0),o("div",{class:Z(["absolute inset-y-0 rounded-full",b(z)]),style:Ce(P(z))},null,6)])],10,_o))),128))]),t.data.truncated?(s(),a("p",To," Showing the first "+c(e(w).length)+" of "+c(t.data.totalBeforeCap)+" requests recorded in the trace. ",1)):i("",!0),r(J,{open:e(M),"onUpdate:open":F[1]||(F[1]=z=>ge(M)?M.value=z:null),entry:e(V),"run-id":t.runId,"test-runs-case-id":t.testRunsCaseId},null,8,["open","entry","run-id","test-runs-case-id"])])}}}),Io=Object.assign(So,{__name:"TraceNetworkList"}),Ro={class:"flex flex-wrap items-center gap-x-3 gap-y-1"},jo={key:0,class:"flex items-center gap-2 text-xs"},Lo={key:0,class:"flex items-center gap-1 text-red-600 dark:text-red-400"},zo={key:1,class:"flex items-center gap-1 text-amber-600 dark:text-amber-400"},Mo={key:2,class:"text-xs text-gray-400 py-2"},No={key:1,class:"space-y-1 max-h-[28rem] overflow-y-auto"},Do=["disabled","onClick"],Po={key:1,class:"size-3.5 shrink-0"},Ao=["title"],Uo=["title"],Bo=["title"],Fo=["title"],Vo=["title"],Eo=["title"],Oo={key:0,class:"px-2 pt-1.5 pb-2 pl-7 space-y-1"},Ho={class:"flex items-center gap-1.5 text-[11px] uppercase tracking-wide text-gray-400"},Ko=["title"],Wo={key:0,class:"shrink-0 text-[10px] uppercase text-gray-400 font-mono hidden sm:inline"},Go={class:"relative flex-1 h-3 rounded bg-gray-100 dark:bg-gray-800 min-w-0"},qo={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"},Zo={class:"font-mono break-all text-gray-700 dark:text-gray-300 flex-1 min-w-0"},Xo=["title"],Yo={key:0,class:"mt-1.5"},er=["onClick"],tr={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"},sr={key:2,class:"mt-3 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},nr={key:3,class:"mt-3 flex items-center gap-1.5 text-xs text-gray-400 dark:text-gray-500"},ar=re({__name:"TestCaseNetworkRequests",props:{requests:{},runId:{},testRunsCaseId:{},hasTrace:{type:Boolean}},setup(t,{expose:_}){const h=t,w=A("all"),{data:$,pending:g,load:n}=ka(()=>h.runId,()=>h.testRunsCaseId,()=>!!h.hasTrace),l=A(null),d=C({get:()=>l.value??(h.requests.length===0&&h.hasTrace?"trace":"captured"),set:y=>{l.value=y}});xe(()=>d.value==="trace",y=>{y&&n()},{immediate:!0});const P=C(()=>$.value?.status==="ok"?$.value.requests?.length??0:null),D=C(()=>[{label:`Captured (${h.requests.length})`,value:"captured",disabled:h.requests.length===0},{label:P.value!=null?`Full trace (${P.value})`:"Full trace",value:"trace"}]);function b(){h.hasTrace&&(l.value="trace")}_({showTraceMode:b});const x=A(new Set);function V(y){const T=new Set(x.value);T.has(y)?T.delete(y):T.add(y),x.value=T}const M=A(new Set);function m(y){const T=new Set(M.value);T.has(y)?T.delete(y):T.add(y),M.value=T}function j(y){if(y.length===0)return[];const T=Math.min(...y.map(K=>K.startMs)),H=Math.max(...y.map(K=>K.startMs+K.durMs)),q=Math.max(1,H-T),X=new Map(y.map(K=>[K.id,K])),Y=K=>{let Q=0,ee=K;const se=new Set;for(;ee?.parentId&&X.has(ee.parentId)&&!se.has(ee.id)&&(se.add(ee.id),ee=X.get(ee.parentId),Q++,!(Q>8)););return Q};return[...y].sort((K,Q)=>K.startMs-Q.startMs||Q.durMs-K.durMs).map(K=>({...K,offsetPct:(K.startMs-T)/q*100,widthPct:Math.max(1.5,K.durMs/q*100),depth:Y(K)}))}function F(y){return y.status==="error"?"bg-red-400 dark:bg-red-500":y.kind==="db"?"bg-violet-400 dark:bg-violet-500":y.kind==="client"?"bg-sky-400 dark:bg-sky-500":y.kind==="internal"?"bg-gray-400 dark:bg-gray-500":"bg-emerald-400 dark:bg-emerald-500"}function B(y){const T=y.toLowerCase();return T==="critical"||T==="fatal"?3:T==="error"?2:T==="warning"||T==="warn"?1:0}function S(y){const T=B(y);if(T>=2)return"error";if(T===1)return"warning";const H=y.toLowerCase();return H==="info"||H==="information"?"info":"neutral"}function G(y){try{return new URL(y).pathname||y}catch{return y}}function J(y){return(y.split("/")[1]??y).replace(/^vnd\.[^+]*\+?/,"").replace(/^x-/,"")||y}function z(y){return y?new Date(y).toLocaleString():""}const ne=C(()=>h.requests.map((y,T)=>{const H=Array.isArray(y.serverLogs)?y.serverLogs:[],q=Array.isArray(y.serverTraces)?y.serverTraces:[];let X=0,Y=0;for(const Q of H){const ee=B(Q.level);ee>=2?X++:ee===1&&Y++}const K=q.find(Q=>!Q.parentId)??q[0];return{...y,_index:T,logs:[...H].sort((Q,ee)=>Q.timestamp-ee.timestamp),spans:q,serverMs:K?K.durMs:null,errorLogCount:X,warnLogCount:Y,failed:y.status>=400,hasDetail:H.length>0||q.length>0,path:G(y.url)}})),E=C(()=>{let y=0,T=0,H=0,q=0,X=0;for(const Y of ne.value)Y.failed&&y++,Y.logs.length>0&&T++,Y.spans.length>0&&H++,q+=Y.errorLogCount,X+=Y.warnLogCount;return{total:ne.value.length,failed:y,withLogs:T,withSpans:H,errorLogs:q,warnLogs:X}}),ue=C(()=>{let y=ne.value;return w.value==="failed"?y=y.filter(T=>T.failed):w.value==="logs"&&(y=y.filter(T=>T.logs.length>0)),[...y].sort((T,H)=>{const q=X=>(X.errorLogCount>0?3:0)+(X.failed?2:0)+(X.logs.length>0?1:0);return q(H)-q(T)||T._index-H._index})}),k=C(()=>[{label:`All (${E.value.total})`,value:"all"},{label:`Failed (${E.value.failed})`,value:"failed",disabled:E.value.failed===0},{label:`With logs (${E.value.withLogs})`,value:"logs",disabled:E.value.withLogs===0}]),L=C(()=>E.value.withLogs>0);function ae(y){return y.errorLogCount>0||y.status>=500?"border-l-2 border-l-red-400 dark:border-l-red-600":y.failed||y.warnLogCount>0?"border-l-2 border-l-amber-400 dark:border-l-amber-600":"border-l-2 border-l-transparent"}return(y,T)=>{const H=ce,q=Ge,X=qe,Y=Io,K=pe,Q=Re,ee=kt,se=ye;return s(),v(se,{icon:"i-lucide-network",title:"Network & backend logs",count:e(d)==="trace"?e(P):e(E).total,help:"case.network"},{actions:u(()=>[o("div",Ro,[e(d)==="captured"?(s(),a(U,{key:0},[e(E).errorLogs>0||e(E).warnLogs>0?(s(),a("div",jo,[e(E).errorLogs>0?(s(),a("span",Lo,[r(H,{name:"i-lucide-octagon-alert",class:"size-3.5"}),f(c(e(E).errorLogs),1)])):i("",!0),e(E).warnLogs>0?(s(),a("span",zo,[r(H,{name:"i-lucide-triangle-alert",class:"size-3.5"}),f(c(e(E).warnLogs),1)])):i("",!0)])):i("",!0),r(q,{modelValue:e(w),"onUpdate:modelValue":T[0]||(T[0]=N=>ge(w)?w.value=N:null),items:e(k),size:"xs",variant:"link",ui:{list:"gap-2",trigger:"px-1.5"}},null,8,["modelValue","items"])],64)):i("",!0),t.hasTrace?(s(),v(q,{key:1,modelValue:e(d),"onUpdate:modelValue":T[1]||(T[1]=N=>ge(d)?d.value=N:null),items:e(D),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(),v(X,{key:0,text:"Parsing trace network stream…"})):e($).status==="ok"?(s(),v(Y,{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",Mo,"No network activity recorded in this trace."))],64)):(s(),a("div",No,[(s(!0),a(U,null,te(e(ue),N=>(s(),a("div",{key:N._index,class:Z([ae(N),"rounded bg-gray-50/60 dark:bg-gray-800/40"])},[o("button",{type:"button",class:Z(["w-full flex items-center gap-2 py-1.5 px-2 text-sm text-left",N.hasDetail?"cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800":"cursor-default"]),disabled:!N.hasDetail,onClick:W=>N.hasDetail&&V(N._index)},[N.hasDetail?(s(),v(H,{key:0,name:e(x).has(N._index)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5 shrink-0 text-gray-400"},null,8,["name"])):(s(),a("span",Po)),r(K,{color:("httpMethodColor"in y?y.httpMethodColor:e(Ke))(N.method),variant:"soft",size:"xs",class:"font-mono shrink-0"},{default:u(()=>[f(c(N.method),1)]),_:2},1032,["color"]),r(K,{color:("httpStatusColor"in y?y.httpStatusColor:e(We))(N.status),variant:"soft",size:"xs",class:"font-mono shrink-0 tabular-nums"},{default:u(()=>[f(c(N.status||"—"),1)]),_:2},1032,["color"]),o("code",{class:"truncate text-xs flex-1 min-w-0",title:N.url},c(N.path),9,Ao),N.contentType?(s(),a("span",{key:2,class:"shrink-0 text-xs text-gray-400 font-mono hidden md:inline",title:`Response content type: ${N.contentType}`},c(J(N.contentType)),9,Uo)):i("",!0),N.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:`${N.errorLogCount} backend error log(s)`},[r(H,{name:"i-lucide-octagon-alert",class:"size-3.5"}),f(c(N.errorLogCount),1)],8,Bo)):i("",!0),N.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:`${N.warnLogCount} backend warning log(s)`},[r(H,{name:"i-lucide-triangle-alert",class:"size-3.5"}),f(c(N.warnLogCount),1)],8,Fo)):i("",!0),N.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 (${N.spans.length} span${N.spans.length===1?"":"s"})`},[r(H,{name:"i-lucide-server",class:"size-3.5"}),r(Q,{ms:N.serverMs,"no-title":""},null,8,["ms"])],8,Vo)):i("",!0),N.startTime?(s(),a("span",{key:6,class:"shrink-0 text-xs text-gray-400 hidden sm:inline",title:z(N.startTime)},c(("formatRelativeTime"in y?y.formatRelativeTime:e(Se))(N.startTime)),9,Eo)):i("",!0),o("span",{class:Z(["ml-1 shrink-0 text-xs tabular-nums",(N.duration??0)>1e3?"text-red-600 font-medium":(N.duration??0)>500?"text-orange-500":"text-gray-500"])},[r(Q,{ms:N.duration,"unit-class":"opacity-60"},null,8,["ms"])],2)],10,Do),N.spans.length>0&&e(x).has(N._index)?(s(),a("div",Oo,[o("div",Ho,[r(H,{name:"i-lucide-waypoints",class:"size-3.5"}),T[2]||(T[2]=f("Server trace ",-1))]),(s(!0),a(U,null,te(j(N.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",Wo,c(W.kind),1)):i("",!0),o("span",{class:Z(["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",Go,[o("div",{class:Z(["absolute top-0 h-3 rounded",F(W)]),style:Ce({left:`${W.offsetPct}%`,width:`${W.widthPct}%`})},null,6)]),r(Q,{ms:W.durMs,class:"w-12 shrink-0 text-right text-gray-500"},null,8,["ms"])],8,Ko))),128))])):i("",!0),N.logs.length>0&&e(x).has(N._index)?(s(),a("div",qo,[(s(!0),a(U,null,te(N.logs,(W,ve)=>(s(),a("div",{key:ve,class:"rounded border border-default bg-white dark:bg-gray-900/60 p-2 text-xs"},[o("div",Jo,[r(K,{color:S(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",Zo,c(W.message),1),W.timestamp?(s(),a("span",{key:1,class:"shrink-0 text-gray-400 tabular-nums",title:z(W.timestamp)},c(("formatRelativeTime"in y?y.formatRelativeTime:e(Se))(W.timestamp)),9,Xo)):i("",!0)]),W.stack?(s(),a("div",Yo,[o("button",{type:"button",class:"inline-flex items-center gap-1 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200",onClick:Ae=>m(`${N._index}:${ve}`)},[r(H,{name:e(M).has(`${N._index}:${ve}`)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3"},null,8,["name"]),T[3]||(T[3]=f(" Stack trace ",-1))],8,er),e(M).has(`${N._index}:${ve}`)?(s(),a("pre",tr,c(W.stack),1)):i("",!0)])):i("",!0)]))),128))])):i("",!0)],2))),128))])),e(d)==="captured"&&!e(L)?(s(),a("p",sr,[r(H,{name:"i-lucide-info",class:"size-3.5 shrink-0"}),T[5]||(T[5]=f(" No backend server logs captured — install ",-1)),r(ee,{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",nr,[r(H,{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(ee,{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"])}}}),or=Object.assign(ar,{__name:"TestCaseNetworkRequests"}),rr={class:"space-y-2"},ir=re({__name:"TestCaseTracesCard",props:{traces:{}},setup(t){return(_,h)=>{const w=ps,$=ye;return t.traces.length>0?(s(),v($,{key:0,icon:"i-lucide-bug-play",title:"Traces",count:t.traces.length,help:"case.traces"},{default:u(()=>[o("div",rr,[(s(!0),a(U,null,te(t.traces,g=>(s(),v(w,{key:g.id,trace:g,class:"py-2 px-3 rounded-lg border"},null,8,["trace"]))),128))])]),_:1},8,["count"])):i("",!0)}}}),lr=Object.assign(ir,{__name:"TestCaseTracesCard"}),cr={class:"space-y-3"},ur={class:"flex items-center justify-between px-3 py-2 bg-gray-50 dark:bg-gray-800/50 border-b"},dr={class:"flex items-center gap-2 min-w-0"},mr={class:"text-sm font-medium truncate"},fr={key:0,class:"text-xs text-gray-400 shrink-0"},gr={class:"text-xs text-gray-400"},pr={class:"flex items-center gap-1 shrink-0"},yr=["href"],hr={key:0,class:"bg-gray-100 dark:bg-gray-900"},xr=["src","alt","onClick"],vr={key:1,class:"bg-black"},_r={key:2,class:"bg-gray-50 dark:bg-gray-900"},kr={key:0,class:"flex items-center justify-center py-8"},br={key:1,class:"p-4 text-red-500 text-sm"},wr={key:2,class:"p-4 overflow-auto max-h-96"},$r={class:"text-sm whitespace-pre-wrap font-sans leading-relaxed"},Cr=re({__name:"TestCaseAttachmentsCard",props:{attachments:{}},setup(t){const _=t,h=Oe(),w=A(null),$=C(()=>_.attachments.filter(S=>Te(S.path,S.contentType)).map(S=>({src:D(S.path,S.contentType),name:S.name||b(S.path)})));function g(S){w.value=S}const n=new Set([".md",".mdx",".markdown"]),l=new Set(["text/markdown","text/x-markdown"]);function d(S){return S.toLowerCase().split(".").pop()||""}function P(S,G){return!!(n.has(d(S))||G&&l.has(G.toLowerCase()))}function D(S,G){return wt(S,G,h.app?.baseURL)}function b(S){return S.split("/").pop()||S}function x(S){return S==null?"":we(S)}const V=A({}),M=A({}),m=A({}),j=A(new Set);async function F(S){if(V.value[S.id]===void 0&&!m.value[S.id]){m.value[S.id]=!0,M.value[S.id]=null;try{const G=await $fetch(D(S.path,S.contentType),{responseType:"text"});V.value[S.id]=G}catch{M.value[S.id]="Failed to load preview"}finally{m.value[S.id]=!1}}}function B(S,G){const J=new Set(j.value);J.has(S)?J.delete(S):(J.add(S),F(G)),j.value=J}return(S,G)=>{const J=ce,z=Ie,ne=ys,E=hs,ue=ye;return t.attachments.length>0?(s(),v(ue,{key:0,icon:"i-lucide-paperclip",title:"Attachments",count:t.attachments.length},{default:u(()=>[o("div",cr,[(s(!0),a(U,null,te(t.attachments,k=>(s(),a("div",{key:k.id,class:"rounded-lg border overflow-hidden"},[o("div",ur,[o("div",dr,[r(J,{name:e(Te)(k.path,k.contentType)?"i-lucide-image":e(De)(k.path,k.contentType)?"i-lucide-video":P(k.path,k.contentType)?"i-lucide-file-text":"i-lucide-file",class:"size-4 text-gray-400 shrink-0"},null,8,["name"]),o("span",mr,c(b(k.path)),1),k.name&&k.name!==b(k.path)?(s(),a("span",fr,c(k.name),1)):i("",!0),o("span",gr,c(x(k.size)),1)]),o("div",pr,[P(k.path,k.contentType)?(s(),v(z,{key:0,size:"xs",color:"neutral",variant:"soft",onClick:L=>B(k.id,k)},{default:u(()=>[f(c(e(j).has(k.id)?"Hide preview":"Preview"),1)]),_:2},1032,["onClick"])):i("",!0),o("a",{href:D(k.path,k.contentType),target:"_blank",class:"text-primary hover:underline text-xs shrink-0"},"Open",8,yr)])]),e(Te)(k.path,k.contentType)?(s(),a("div",hr,[o("img",{src:D(k.path,k.contentType),alt:k.name||"Screenshot",class:"max-w-full max-h-96 object-contain mx-auto cursor-pointer hover:opacity-90 transition-opacity",loading:"lazy",onClick:L=>g(e($).findIndex(ae=>ae.src===D(k.path,k.contentType)))},null,8,xr)])):e(De)(k.path,k.contentType)?(s(),a("div",vr,[r(ne,{src:D(k.path,k.contentType)},null,8,["src"])])):P(k.path,k.contentType)&&e(j).has(k.id)?(s(),a("div",_r,[e(m)[k.id]?(s(),a("div",kr,[r(J,{name:"i-lucide-loader-circle",class:"size-5 animate-spin text-gray-400"})])):e(M)[k.id]?(s(),a("div",br,c(e(M)[k.id]),1)):e(V)[k.id]?(s(),a("div",wr,[o("pre",$r,c(e(V)[k.id]),1)])):i("",!0)])):i("",!0)]))),128))]),r(E,{modelValue:e(w),"onUpdate:modelValue":G[0]||(G[0]=k=>ge(w)?w.value=k:null),images:e($)},null,8,["modelValue","images"])]),_:1},8,["count"])):i("",!0)}}}),Tr=Object.assign(Cr,{__name:"TestCaseAttachmentsCard"});function Sr(t){return Array.isArray(t)?t.some(_=>_&&typeof _.type=="string"&&_.type.toLowerCase()==="slow"):!1}function Ir(t){const _=[];if(!t)return _;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];_.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&&_.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&&_.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];_.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 Sr(t.testAnnotations)&&typeof t.duration=="number"&&t.duration<1e4&&_.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&&_.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.`}),_}function Rr(t,_){const h=t.search(/\n at /);if(h===-1)return _!==void 0&&t.length>_?t.slice(0,_)+`
|
|
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 D of g){const b=D.trimStart();b.startsWith("at ")?D.includes("node_modules")||b.startsWith("at node:")?l++:(d(),n.push(D)):(b===""||d(),n.push(D))}d();let P=w+`
|
|
6
|
+
`+n.join(`
|
|
7
|
+
`);return _!==void 0&&P.length>_&&(P=P.slice(0,_)+`
|
|
8
|
+
[truncated]`),P}const jr={class:"space-y-4"},Lr=["innerHTML"],zr={class:"grid grid-cols-1 xl:grid-cols-[3fr_2fr] gap-4"},Mr={class:"space-y-4 xl:order-2"},Nr={class:"space-y-4 xl:order-1 min-w-0"},Dr={class:"max-h-96 overflow-y-auto"},Pr={class:"space-y-3"},Ar={key:0},Ur={class:"flex flex-wrap items-center gap-x-3 gap-y-1.5 text-xs mb-3"},Br={class:"font-medium text-gray-600 dark:text-gray-300"},Fr={class:"tabular-nums text-gray-500 dark:text-gray-400"},Vr={class:"text-xs tabular-nums text-gray-400 dark:text-gray-500"},Er={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"},Or={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"},Hr={class:"flex items-center gap-2"},Kr={key:0,class:"text-xs text-red-500 mt-1 whitespace-pre-wrap break-words font-mono"},Wr={class:"min-w-[6rem]"},Gr={class:"flex items-center justify-between gap-2"},qr={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"},Zr={key:3,class:"flex flex-col items-center justify-center py-12 text-gray-400"},Xr={class:"space-y-4 pt-1"},Yr={key:0,class:"space-y-2"},ei={class:"flex items-start gap-2"},ti={class:"space-y-4"},si={key:3,class:"text-xs text-gray-400 pt-1"},ni={class:"bg-gray-100 dark:bg-gray-800 px-1 rounded"},ai={class:"space-y-4 pt-4"},oi={key:0,class:"space-y-4"},ri={class:"flex items-center justify-end"},ii={class:"text-xs whitespace-nowrap"},li={class:"text-gray-500"},ci={class:"text-gray-400 ml-1"},ui={key:1,class:"text-gray-400"},di=["title"],pl=re({__name:"[id]",async setup(t){let _,h;const w=as(),$=os(),g=w.params.id,{data:n,refresh:l}=([_,h]=mt(()=>gt(`/api/test-run-cases/${g}`,"$rX1OuZQOSq")),_=await _,h(),_),d=A([]);xe(()=>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:P,refresh:D}=([_,h]=mt(()=>gt(`/api/test-run-cases/${g}/traces`,"$bq3dlhiM5e")),_=await _,h(),_),b=C(()=>(P.value?.length??0)>0);rs(C(()=>({title:n.value?.title?`${n.value.title} — execution — Piwi Dashboard`:`Execution #${g} — Piwi Dashboard`})));const x=C(()=>!!n.value?.error),V=C(()=>n.value?Ir(n.value):[]),M=C(()=>n.value?.steps?n.value.steps:[]),m=C(()=>n.value?.webVitals??null),j=C(()=>n.value?.aiUsage?.intents??null),F=C(()=>n.value?.networkRequests??[]),B=C(()=>{if(!d.value||d.value.length<2||!n.value?.duration)return null;const p=d.value.filter(le=>le.duration!==null&&le.id!==n.value?.id);if(p.length===0)return null;const I=p.reduce((le,fe)=>le+(fe.duration||0),0)/p.length,O=n.value.duration,oe=O-I,me=I>0?Math.round(oe/I*100):0;return{avg:Math.round(I),current:O,diff:Math.round(oe),pct:me}}),S=C(()=>n.value?.testRun?.metadata),G=C(()=>{const p=S.value;return p?.scm?p.scm:null}),J=C(()=>{const p=S.value;return p?.ci?p.ci:null}),z=C(()=>n.value?.failureCluster??null),ne=C(()=>{const p=[];return x.value&&p.push({label:"Diagnosis",icon:"i-lucide-stethoscope",value:"diagnosis",slot:"diagnosis"}),p.push({label:`Steps (${M.value.length})`,icon:"i-lucide-list-checks",value:"steps",slot:"steps"}),x.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}),E=C(()=>ne.value.map(p=>p.value));function ue(){return x.value?"diagnosis":"steps"}function k(p){let I=typeof p=="string"?p:"";return I==="error"&&(I="diagnosis"),I==="traces"&&(I=x.value?"diagnosis":"artifacts"),E.value.includes(I)?I:ue()}const L=A(k(w.query.tab));xe(E,p=>{p.includes(L.value)||(L.value=k(w.query.tab))}),xe(L,p=>{w.query.tab!==p&&$.replace({query:{...w.query,tab:p}})},{immediate:!0});const ae=[{accessorKey:"startTime",header:"Date"},{accessorKey:"status",header:"Status"},{accessorKey:"duration",header:"Duration"},{accessorKey:"retries",header:"Retries"},{accessorKey:"runId",header:"Run"},{accessorKey:"error",header:"Error"}],y={navigation:"info",assertion:"success",action:"warning",input:"warning",api:"info",wait:"neutral",hook:"neutral",fixture:"neutral"},T=[{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"}}}],H=C(()=>{const p=new Map;for(const I of M.value){const O=p.get(I.category)??{count:0,duration:0};O.count+=1,O.duration+=I.duration||0,p.set(I.category,O)}return Array.from(p,([I,O])=>({category:I,...O})).sort((I,O)=>O.duration-I.duration)}),q=C(()=>{let p=-1,I=-1;return M.value.forEach((O,oe)=>{(O.duration||0)>I&&(I=O.duration||0,p=oe)}),p}),X=C(()=>M.value.reduce((p,I)=>Math.max(p,I.duration||0),0)),Y=C(()=>M.value.length>0&&M.value.every(p=>typeof p.startTime=="number")),K=C(()=>n.value?.startedAt??(Y.value?Math.min(...M.value.map(p=>p.startTime)):0)),Q=C(()=>{const p=n.value?.duration??0;if(p>0)return p;if(Y.value){const I=Math.max(...M.value.map(O=>O.startTime+(O.duration||0)));return Math.max(1,I-K.value)}return 0});function ee(p){if(Y.value&&Q.value>0){const O=Math.max(0,Math.min(100,(p.startTime-K.value)/Q.value*100)),oe=Math.min(100-O,Math.max(1.5,(p.duration||0)/Q.value*100));return{left:`${O}%`,width:`${oe}%`}}return{left:"0%",width:`${X.value>0?Math.max(2,(p.duration||0)/X.value*100):0}%`}}function se(p){const I=n.value?.duration??0;if(I<=0)return"";const O=p/I*100;return O>0&&O<1?"<1%":`${Math.round(O)}%`}function N(p){return p>2e3?"text-red-600 font-medium":p>500?"text-orange-500":"text-gray-500"}function W(p){return p>2e3?"bg-red-500":p>500?"bg-orange-400":"bg-gray-400 dark:bg-gray-500"}const ve=C(()=>n.value?.testRun?.environment),Ae=C(()=>[{filePath:n.value?.filePath??"",title:n.value?.title??"",line:n.value?.line??null,projectName:n.value?.browser?.projectName??null}]),St=C(()=>nn(Ae.value)),{copy:It,copied:Je}=an(),Rt=C(()=>[{label:Je.value?"Copied":"Retry command",icon:Je.value?"i-lucide-check":"i-lucide-play",onClick:()=>It(St.value,{toast:"Retry command copied"})},{label:"Refresh",icon:"i-lucide-refresh-cw",onClick:()=>l()}]),jt=!!Oe().public.demoMode;let he=null;const Qe=C(()=>{const p=n.value?.testRun?.status;return p==="running"||p==="finalizing"});function Lt(){if(jt||he)return;const p=n.value?.testRun?.id;p&&(he=new EventSource(`/api/test-runs/${p}/stream`),he.onmessage=I=>{try{const O=JSON.parse(I.data);O.type==="case-files"&&O.data?.testRunsCaseId===Number(g)?(l(),D()):O.type==="run-finished"&&(l(),D(),Ue())}catch{}},he.onerror=()=>{})}function Ue(){he&&(he.close(),he=null)}xe(Qe,p=>{p?Lt():Ue()},{immediate:!0}),is(Ue);const{copyRich:zt,copied:Ze}=xs();function Mt(){const p=n.value;if(!p?.error)return;const I=window.location.origin,O=p.title??"Unknown test",oe=p.location??"",me=p.error.replace(/\x1b\[[0-9;]*[a-zA-Z]/g,""),le=be=>be.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),fe=z.value?`${I}/failure-clusters/${z.value.id}`:null,Me=`${I}/test-run-cases/${g}?tab=diagnosis`,ke=n.value?.testCaseId?`${I}/test-cases/${n.value.testCaseId}`:null,Fe=[`❌ Test failed: ${O}`,oe?`Location: ${oe}`:null,"","Error:",me,"",fe?`Failure cluster: ${fe}`:null,`Execution: ${Me}`,ke?`History: ${ke}`:null].filter(be=>be!==null).join(`
|
|
9
|
+
`),Ve=[`<p><strong>❌ Test failed: ${le(O)}</strong>${oe?`<br><code>${le(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("");zt(Fe,Ve,{toast:"Failure copied"})}const Be=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(Be.value),executionError:()=>_e(Be.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:()=>{L.value="steps"},failingSteps:()=>{L.value="steps"}};return ls(Os,{canLocate:p=>p in at,open:p=>at[p]?.()}),(p,I)=>{const O=es,oe=ts,me=ce,le=Pe,fe=$s,Me=Cs,ke=Ts,Fe=Is,Ve=En,be=Ie,Nt=$t,ot=ye,Dt=Qn,Pt=la,At=va,Ut=Ta,Bt=Ma,Ft=_s,Vt=ks,Et=bs,rt=Fa,it=or,lt=vs,Ot=bt,Ht=He,Kt=ws,Ne=pe,ie=Re,Wt=ht,ct=Ys,ut=en,dt=tn,Gt=lr,qt=Tr,de=xt,Ee=vt,Jt=Ct,Qt=sn,Zt=zs,Xt=Ss;return s(),v(Xt,{id:"test-run-case-detail"},{header:u(()=>[r(Fe,null,{leading:u(()=>[r(O),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(),v(le,{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"}),I[2]||(I[2]=o("span",{class:"hidden sm:inline"},"Evolution",-1))]),_:1},8,["to"])):i("",!0),e(n)?(s(),v(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(Ae),class:"mr-2"},null,8,["project-id","project-label","cases"]),r(ke,{actions:e(Rt)},null,8,["actions"])]),_:1})]),body:u(()=>[r(Zt,{modelValue:e(L),"onUpdate:modelValue":I[1]||(I[1]=R=>ge(L)?L.value=R:null),"tab-items":e(ne)},{summary:u(()=>[r(Ve,{"test-case":e(n)??null,"scm-info":e(G),"ci-info":e(J),browser:e(n)?.browser??null,environment:e(ve),"steps-count":e(M).length,"historical-timing":e(B),"stable-links":e(n)?.stableLinks??null,"project-key":e(n)?.testRun?.project?.id,"project-name":e(n)?.testRun?.project?.name,onRefresh:I[0]||(I[0]=R=>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",jr,[o("div",{ref_key:"errorEl",ref:Be,class:"scroll-mt-4"},[e(n)?.error?(s(),v(ot,{key:0,icon:"i-lucide-circle-x","icon-class":"text-red-500",title:"Error"},{actions:u(()=>[r(Nt,{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:Mt},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(Rr)(e(n).error))},null,8,Lr)]),_:1})):i("",!0)],512),o("div",zr,[o("div",Mr,[r(Dt,{"test-case":e(n)??null,history:e(d),"current-id":Number(e(g))},null,8,["test-case","history","current-id"]),e(z)?(s(),v(Pt,{key:0,cluster:e(z)},null,8,["cluster"])):i("",!0),r(At,{"test-runs-case-id":Number(e(g))},null,8,["test-runs-case-id"])]),o("div",Nr,[e(n)?.testSourceFrames?.length||e(n)?.testSource||e(b)?(s(),v(Ut,{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(Bt,{ref_key:"evidenceCard",ref:ze,"storage-key":"case-evidence",attachments:e(n)?.attachments??[],traces:e(P)??[]},null,8,["attachments","traces"]),e(n)?.testRun?.id?(s(),v(Ft,{key:1,"storage-key":"case-locators","run-id":e(n).testRun.id,"test-runs-case-id":Number(e(g)),"ai-intents":e(j)},null,8,["run-id","test-runs-case-id","ai-intents"])):i("",!0),e(n)?.testRun?.id?(s(),v(Vt,{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(),v(Et,{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(F).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(F),"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(),v(lt,{key:6,"storage-key":"case-page-state","page-state":e(n).pageState},null,8,["page-state"])):i("",!0),e(n)?.ariaSnapshot?(s(),v(Ht,{key:7,ref_key:"ariaCard",ref:nt,"storage-key":"case-aria",icon:"i-lucide-scan-text",title:"ARIA snapshot",help:"case.aria"},{folded:u(()=>[...I[3]||(I[3]=[f("Accessibility tree captured at the moment of failure",-1)])]),default:u(()=>[o("div",Dr,[r(Ot,{text:"```yaml\n"+e(n).ariaSnapshot+"\n```"},null,8,["text"])])]),_:1},512)):i("",!0),e(n)?.testRun?.id?(s(),v(Kt,{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",Pr,[e(M).length>0?(s(),a("div",Ar,[o("div",Ur,[o("span",Br,c(e(M).length)+" steps",1),I[4]||(I[4]=o("span",{class:"text-gray-300 dark:text-gray-600"},"·",-1)),(s(!0),a(U,null,te(e(H),R=>(s(),a("span",{key:R.category,class:"inline-flex items-center gap-1"},[r(Ne,{color:y[R.category]||"neutral",variant:"soft",size:"xs"},{default:u(()=>[f(c(R.category),1)]),_:2},1032,["color"]),o("span",Fr,[f("×"+c(R.count)+" · ",1),r(ie,{ms:R.duration},null,8,["ms"])])]))),128))]),r(ut,{"min-width":"40rem",bleed:!1},{default:u(()=>[r(ct,{data:e(M),columns:T,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:R})=>[o("span",Vr,c(R.index+1),1)]),"status-cell":u(({row:R})=>[R.original.failed?(s(),a("span",Er,"✗")):(s(),a("span",Or,"✓"))]),"category-cell":u(({row:R})=>[r(Ne,{color:y[R.original.category]||"neutral",variant:"soft",size:"xs"},{default:u(()=>[f(c(R.original.category),1)]),_:2},1032,["color"])]),"title-cell":u(({row:R})=>[o("div",Hr,[o("span",{class:Z(R.original.failed?"text-red-600 dark:text-red-400 font-medium":"")},c(R.original.title),3),R.index===e(q)?(s(),v(Ne,{key:0,color:"warning",variant:"subtle",size:"xs",class:"shrink-0",title:"Slowest step in this test"},{default:u(()=>[...I[5]||(I[5]=[f(" slowest ",-1)])]),_:1})):i("",!0)]),R.original.failed&&R.original.error?.message?(s(),a("p",Kr,c(R.original.error.message),1)):i("",!0),R.original.location?(s(),v(Wt,{key:1,location:R.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:R})=>[o("div",Wr,[o("div",Gr,[r(ie,{ms:R.original.duration,class:Z(`text-sm ${N(R.original.duration)}`),"unit-class":"opacity-60"},null,8,["ms","class"]),se(R.original.duration)?(s(),a("span",qr,c(se(R.original.duration)),1)):i("",!0)]),o("div",Jr,[o("div",{class:Z(["absolute inset-y-0 rounded-full",W(R.original.duration)]),style:Ce(ee(R.original))},null,6)])])]),_:1},8,["data"])]),_:1})])):(s(),v(dt,{key:1,icon:"i-lucide-list-checks",text:"No steps recorded for this execution"}))])]),"tab-artifacts":u(()=>[o("div",Qr,[r(Gt,{traces:e(P)||[]},null,8,["traces"]),r(qt,{attachments:e(n)?.attachments??[]},null,8,["attachments"]),e(n)?.pageState?(s(),v(lt,{key:0,"storage-key":"case-page-state","page-state":e(n).pageState},null,8,["page-state"])):i("",!0),e(n)?.consoleLogs?.length?(s(),v(rt,{key:1,entries:e(n)?.consoleLogs??[]},null,8,["entries"])):i("",!0),e(F).length>0||e(b)?(s(),v(it,{key:2,requests:e(F),"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(P)?.length&&!e(n)?.attachments?.length&&!e(n)?.consoleLogs?.length&&!e(F).length?(s(),a("div",Zr,[e(Qe)?(s(),a(U,{key:0},[r(me,{name:"i-lucide-loader-circle",class:"size-8 mb-2 animate-spin"}),I[6]||(I[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"}),I[7]||(I[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",Xr,[e(V).length>0?(s(),a("div",Yr,[(s(!0),a(U,null,te(e(V),(R,Yt)=>(s(),a("div",{key:Yt,class:Z(["p-3 rounded-lg border",R.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",ei,[r(me,{name:R.type==="warning"?"i-lucide-alert-triangle":"i-lucide-lightbulb",class:Z([R.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:Z(R.type==="warning"?"text-amber-800 dark:text-amber-200 font-medium":"text-blue-800 dark:text-blue-200 font-medium")},c(R.message),3),o("p",{class:Z([R.type==="warning"?"text-amber-700 dark:text-amber-300":"text-blue-700 dark:text-blue-300","mt-1"])},c(R.details),3)])])],2))),128))])):i("",!0),e(m)?(s(),v(ot,{key:1,icon:"i-lucide-gauge",title:"Browser performance (Web Vitals)",help:"case.web-vitals"},{default:u(()=>[o("div",ti,[e(m).navigation?(s(),v(Ee,{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(),v(Ee,{key:1,"min-tile-width":"10rem",class:"pt-2 border-t"},{default:u(()=>[e(m).paint.firstPaint!==void 0?(s(),v(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(),v(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(),v(Ee,{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",si,[I[8]||(I[8]=f(" Page: ",-1)),o("code",ni,c(e(m).navigation.url),1)])):i("",!0)])]),_:1})):i("",!0),e(V).length===0&&!e(m)?(s(),v(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",ai,[e(d)&&e(d).length>0?(s(),a("div",oi,[o("div",ri,[e(n)?.testCaseId?(s(),v(be,{key:0,to:`/test-cases/${e(n).testCaseId}`,size:"xs",variant:"outline",color:"neutral","trailing-icon":"i-lucide-arrow-right"},{default:u(()=>[...I[9]||(I[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:ae,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:R})=>[o("span",ii,[o("span",li,c(new Date(R.original.startTime).toLocaleDateString("en-US",{month:"short",day:"numeric"})),1),o("span",ci,c(new Date(R.original.startTime).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})),1)])]),"status-cell":u(({row:R})=>[r(Ne,{color:("getStatusColor"in p?p.getStatusColor:e(qs))(R.original.status),variant:"subtle",class:"capitalize"},{default:u(()=>[f(c(R.original.status),1)]),_:2},1032,["color"])]),"duration-cell":u(({row:R})=>[R.original.duration!==null?(s(),v(ie,{key:0,ms:R.original.duration},null,8,["ms"])):(s(),a("span",ui,"—"))]),"runId-cell":u(({row:R})=>[r(le,{to:`/test-runs/${R.original.runId}`,class:"text-primary hover:underline"},{default:u(()=>[f(" #"+c(R.original.runId),1)]),_:2},1032,["to"])]),"error-cell":u(({row:R})=>[R.original.error?(s(),a("span",{key:0,class:"text-red-600 text-xs truncate max-w-xs block",title:R.original.error},c(R.original.error.length>80?`${R.original.error.substring(0,80)}…`:R.original.error),9,di)):i("",!0)]),_:1},8,["data"])]),_:1})])):(s(),v(dt,{key:1,icon:"i-lucide-trending-up",text:"No prior executions of this test yet."},{default:u(()=>[...I[10]||(I[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{pl as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r}from"./
|
|
1
|
+
import{r}from"./BzBaMPgu.js";function n(i){const o=`piwi-tree-view-${i}`,t=r(!1);try{const e=document.cookie.match(new RegExp(`(?:^|;\\s*)${o}=([^;]*)`));e&&(t.value=e[1]==="true")}catch{}function c(e){t.value=e,document.cookie=`${o}=${e}; path=/; max-age=31536000; sameSite=lax`}return{treeView:t,setTreeView:c}}export{n as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as
|
|
1
|
+
import{_ as I}from"./CkdznmkX.js";import{d as L,q as O,w as P,c as u,g as t,b as s,e as j,l as w,h as a,f as r,F as x,E as M,o as c,_ as N,k as p,z as A,t as i,j as q,x as W,r as y}from"./BzBaMPgu.js";import{_ as G}from"./DRNHuVn4.js";import{_ as K}from"./D_j436ND.js";import{_ as Z}from"./CnRNwiuE.js";import{_ as H}from"./Bg8yOdSf.js";import{_ as J}from"./BbXvpkBp.js";import{f as B}from"./D-c8ZSws.js";import{e as Q,g as X}from"./qeqzb80l.js";import{u as Y}from"./CDEmotIt.js";import"./BSKLNgre.js";import"./kDEwM7SQ.js";import"./DDho3MJD.js";import"./CTYlay1H.js";import"./BcHU1KNK.js";const ee={class:"space-y-6"},te={class:"space-y-3"},se={class:"flex items-center gap-2 text-sm text-muted"},oe={class:"grid grid-cols-1 sm:grid-cols-2 gap-2 text-sm"},ae={class:"text-muted"},ne={class:"flex items-center gap-2 font-mono"},le={class:"text-xs"},ie={key:0,class:"flex items-center gap-2 py-4 text-muted"},re={key:1,class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},de={class:"space-y-1"},ce={class:"text-2xl font-semibold"},me={class:"space-y-1"},ue={class:"text-2xl font-semibold"},pe={class:"space-y-1"},_e={class:"text-2xl font-semibold"},fe={class:"space-y-1"},ge={class:"text-2xl font-semibold"},ve={class:"space-y-1"},xe={class:"text-2xl font-semibold"},ye={class:"space-y-1"},be={class:"text-2xl font-semibold"},he={class:"space-y-1"},Ce={class:"text-2xl font-semibold"},ke={class:"flex flex-col sm:flex-row items-start sm:items-center gap-4"},je=L({__name:"storage",async setup(Se){let _,b;const h=O(),{data:n,refresh:C,pending:k}=([_,b]=P(()=>Y("/api/admin/stats","$phmoZI6KTi")),_=await _,b(),_),T=Q("storage").map(o=>({name:o,...X(o)})),$=[{label:"7 days",value:7},{label:"14 days",value:14},{label:"30 days",value:30},{label:"60 days",value:60},{label:"90 days",value:90},{label:"180 days",value:180},{label:"1 year",value:365}],d=y(30),m=y(!1),f=y(!1);async function E(){m.value=!1,f.value=!0;try{const o=await $fetch("/api/admin/cleanup",{method:"DELETE",body:{olderThanDays:d.value}});h.add({title:"Cleanup complete",description:`Deleted ${o.deletedRuns} test run(s) older than ${d.value} days.`,color:"success"}),await C()}catch(o){const e=o&&typeof o=="object"&&"data"in o?o.data?.message:void 0;h.add({title:"Cleanup failed",description:e||"An error occurred",color:"error"})}finally{f.value=!1}}return(o,e)=>{const V=I,S=N,D=G,v=K,g=q,F=Z,R=H,U=J,z=M;return c(),u(x,null,[t("div",ee,[s(n)?(c(),j(V,{key:0,database:s(n).databaseLocation,storage:s(n).storageLocation},null,8,["database","storage"])):w("",!0),a(v,{icon:"i-lucide-server",title:"Storage backend",help:"settings.storage-backend"},{subtitle:r(()=>[...e[5]||(e[5]=[p(" Configured through environment variables. The active backend is shown read-only. ",-1)])]),default:r(()=>[t("div",te,[t("div",se,[a(S,{name:"i-lucide-info",class:"size-4"}),e[6]||(e[6]=p(" Storage backend selection (local disk or S3) and its credentials are set via the environment. Each variable below is shown read-only — hover the lock to see what it controls. ",-1))]),t("div",oe,[(c(!0),u(x,null,A(s(T),l=>(c(),u(x,{key:l.name},[t("div",ae,i(l.name.replace("PIWI_S3_","S3 ").replace("PIWI_STORAGE_","Storage ")),1),t("div",ne,[t("code",le,i(l.name),1),a(D,{"env-vars":[l.name]},null,8,["env-vars"])])],64))),128))])])]),_:1}),a(v,{icon:"i-lucide-database",title:"Storage statistics",help:"settings.storage-stats"},{footer:r(()=>[a(g,{icon:"i-lucide-refresh-cw",variant:"outline",size:"sm",loading:s(k),label:"Refresh",onClick:e[0]||(e[0]=l=>s(C)())},null,8,["loading"])]),default:r(()=>[s(k)?(c(),u("div",ie,[a(S,{name:"i-lucide-loader-2",class:"animate-spin"}),e[7]||(e[7]=p(" Loading… ",-1))])):s(n)?(c(),u("div",re,[t("div",de,[e[8]||(e[8]=t("p",{class:"text-sm text-muted"},"Projects",-1)),t("p",ce,i(s(n).totalProjects),1)]),t("div",me,[e[9]||(e[9]=t("p",{class:"text-sm text-muted"},"Test runs",-1)),t("p",ue,i(s(n).totalRuns),1)]),t("div",pe,[e[10]||(e[10]=t("p",{class:"text-sm text-muted"},"Test cases (unique)",-1)),t("p",_e,i(s(n).totalTestCases),1)]),t("div",fe,[e[11]||(e[11]=t("p",{class:"text-sm text-muted"},"Test results",-1)),t("p",ge,i(s(n).totalRunsCases),1)]),t("div",ve,[e[12]||(e[12]=t("p",{class:"text-sm text-muted"},"Stored files",-1)),t("p",xe,i(s(n).totalFiles),1)]),t("div",ye,[e[13]||(e[13]=t("p",{class:"text-sm text-muted"},"File size (DB)",-1)),t("p",be,i(("formatBytes"in o?o.formatBytes:s(B))(s(n).totalFileSize)),1)]),t("div",he,[e[14]||(e[14]=t("p",{class:"text-sm text-muted"},"Storage on disk",-1)),t("p",Ce,i(("formatBytes"in o?o.formatBytes:s(B))(s(n).storageSizeOnDisk)),1)])])):w("",!0)]),_:1}),a(v,{icon:"i-lucide-trash-2",title:"Cleanup old test runs",help:"settings.cleanup"},{default:r(()=>[t("div",ke,[a(R,{label:"Delete runs older than",name:"period"},{default:r(()=>[a(F,{modelValue:s(d),"onUpdate:modelValue":e[1]||(e[1]=l=>W(d)?d.value=l:null),items:$},null,8,["modelValue"])]),_:1}),a(g,{icon:"i-lucide-trash-2",color:"error",variant:"soft",loading:s(f),label:"Run cleanup",class:"mt-4 sm:mt-5",onClick:e[2]||(e[2]=l=>m.value=!0)},null,8,["loading"])])]),_:1})]),a(z,null,{default:r(()=>[a(U,{open:s(m),title:"Confirm cleanup","onUpdate:open":e[4]||(e[4]=l=>m.value=l)},{body:r(()=>[t("p",null,[e[15]||(e[15]=p(" This will permanently delete all test runs older than ",-1)),t("strong",null,i(s(d))+" days",1),e[16]||(e[16]=p(", along with their associated reports, traces, and test results. This action cannot be undone. ",-1))])]),footer:r(()=>[a(g,{color:"neutral",variant:"ghost",label:"Cancel",onClick:e[3]||(e[3]=l=>m.value=!1)}),a(g,{color:"error",label:"Delete",icon:"i-lucide-trash-2",loading:s(f),onClick:E},null,8,["loading"])]),_:1},8,["open"])]),_:1})],64)}}});export{je as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{v as h}from"./BzBaMPgu.js";function r(s){if(!s.location)return s.title;const o=s.location.match(/^(.*):(\d+):(\d+)$/);return`${o?o[1]:s.location}::${s.title}`}function C(s,o){const c=h(()=>{if(!s.value?.testCases||!o.value?.testCases)return[];const d=new Map;for(const t of s.value.testCases)d.set(r(t),t);const u=[];for(const t of o.value.testCases){const a=d.get(r(t)),l=a?.duration??null,n=t.duration??null;let e=null,f=null;l!==null&&n!==null&&(e=n-l,f=l>0?Math.round((n-l)/l*100):null),u.push({title:t.title,location:t.location??null,statusA:a?.status??null,statusB:t.status,durationA:l,durationB:n,delta:e,percentChange:f})}const i=new Set(o.value.testCases.map(r));for(const t of s.value.testCases)i.has(r(t))||u.push({title:t.title,location:t.location??null,statusA:t.status,statusB:null,durationA:t.duration??null,durationB:null,delta:null,percentChange:null});return u.sort((t,a)=>Math.abs(a.delta??0)-Math.abs(t.delta??0))}),p=h(()=>{let u=0,i=0,t=0,a=0,l=0,n=0;for(const e of c.value)e.statusA==="passed"&&e.statusB==="failed"?a++:e.statusA==="failed"&&e.statusB==="passed"?l++:e.statusA==="failed"&&e.statusB==="failed"&&n++,e.percentChange!==null&&(e.percentChange<-10?u++:e.percentChange>10?i++:t++);return{improved:u,regressed:i,unchanged:t,newFailures:a,recovered:l,stillFailing:n}});return{comparisonData:c,comparisonSummary:p}}export{C as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as A,Z as ke,Y as me,U as P,o as c,e as C,f as h,V as D,b as e,X as K,$ as le,aB as se,r as V,a as he,C as _e,aR as Ve,h as T,W as O,l as N,aD as ue,v as B,L as Be,aS as Te,aA as $e,S as Re,c9 as Le,by as G,b2 as ie,bs as Se,aw as Ce,a9 as je,bJ as Ue,bM as Je,ba as Xe,br as qe,ah as ze,aF as re,c as R,F as j,bX as Qe,bW as Ye,a2 as Ze,a3 as Ge,a5 as et,a6 as Ee,a7 as tt,b7 as Me,aJ as at,bQ as nt,_ as W,i as q,aI as Q,k as ce,t as ee,ag as oe,m as lt,y as fe,bb as pe,K as it,bc as te,g as Y,z as ae,b8 as ve,b9 as Oe,a8 as ot,bU as rt}from"./BzBaMPgu.js";import{i as st}from"./DcUBmKKE.js";import{_ as ut}from"./BSKLNgre.js";const[Ae,dt]=le("CollapsibleRoot");var ct=A({__name:"CollapsibleRoot",props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["update:open"],setup(u,{expose:r,emit:l}){const n=u,t=ke(n,"open",l,{defaultValue:n.defaultOpen,passive:n.open===void 0}),{disabled:s,unmountOnHide:d}=me(n);return dt({contentId:"",disabled:s,open:t,unmountOnHide:d,onOpenToggle:()=>{s.value||(t.value=!t.value)}}),r({open:t}),P(),(f,x)=>(c(),C(e(K),{as:f.as,"as-child":n.asChild,"data-state":e(t)?"open":"closed","data-disabled":e(s)?"":void 0},{default:h(()=>[D(f.$slots,"default",{open:e(t)})]),_:3},8,["as","as-child","data-state","data-disabled"]))}}),ft=ct,pt=A({inheritAttrs:!1,__name:"CollapsibleContent",props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["contentFound"],setup(u,{emit:r}){const l=u,n=r,i=Ae();i.contentId||=se(void 0,"reka-collapsible-content");const t=V(),{forwardRef:s,currentElement:d}=P(),f=V(0),x=V(0),I=B(()=>i.open.value),y=V(I.value),M=V();he(()=>[I.value,t.value?.present],async()=>{await Be();const p=d.value;if(!p)return;M.value=M.value||{transitionDuration:p.style.transitionDuration,animationName:p.style.animationName},p.style.transitionDuration="0s",p.style.animationName="none";const L=p.getBoundingClientRect();x.value=L.height,f.value=L.width,y.value||(p.style.transitionDuration=M.value.transitionDuration,p.style.animationName=M.value.animationName)},{immediate:!0});const _=B(()=>y.value&&i.open.value);return _e(()=>{requestAnimationFrame(()=>{y.value=!1})}),Ve(d,"beforematch",p=>{requestAnimationFrame(()=>{i.onOpenToggle(),n("contentFound")})}),(p,L)=>(c(),C(e(ue),{ref_key:"presentRef",ref:t,present:p.forceMount||e(i).open.value,"force-mount":!0},{default:h(({present:o})=>[T(e(K),O(p.$attrs,{id:e(i).contentId,ref:e(s),"as-child":l.asChild,as:p.as,hidden:o?void 0:e(i).unmountOnHide.value?"":"until-found","data-state":_.value?void 0:e(i).open.value?"open":"closed","data-disabled":e(i).disabled?.value?"":void 0,style:{"--reka-collapsible-content-height":`${x.value}px`,"--reka-collapsible-content-width":`${f.value}px`}}),{default:h(()=>[!e(i).unmountOnHide.value||o?D(p.$slots,"default",{key:0}):N("v-if",!0)]),_:2},1040,["id","as-child","as","hidden","data-state","data-disabled","style"])]),_:3},8,["present"]))}}),vt=pt,gt=A({__name:"CollapsibleTrigger",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const r=u;P();const l=Ae();return(n,i)=>(c(),C(e(K),{type:n.as==="button"?"button":void 0,as:n.as,"as-child":r.asChild,"aria-controls":e(l).contentId,"aria-expanded":e(l).open.value,"data-state":e(l).open.value?"open":"closed","data-disabled":e(l).disabled?.value?"":void 0,disabled:e(l).disabled?.value,onClick:e(l).onOpenToggle},{default:h(()=>[D(n.$slots,"default")]),_:3},8,["type","as","as-child","aria-controls","aria-expanded","data-state","data-disabled","disabled","onClick"]))}}),ht=gt;function bt({type:u,defaultValue:r,modelValue:l}){const n=l||r;return l!==void 0||r!==void 0?Array.isArray(n)?"multiple":"single":u??"single"}function yt({type:u,defaultValue:r,modelValue:l}){return u||bt({type:u,defaultValue:r,modelValue:l})}function kt({type:u,defaultValue:r}){return r!==void 0?r:u==="single"?void 0:[]}function mt(u,r){const l=B(()=>yt(u)),n=ke(u,"modelValue",r,{defaultValue:kt(u),passive:u.modelValue===void 0,deep:!0});function i(s){if(l.value==="single")n.value=Te(s,n.value)?void 0:s;else{const d=Array.isArray(n.value)?[...n.value||[]]:[n.value].filter(Boolean);if(st(d,s)){const f=d.findIndex(x=>Te(x,s));d.splice(f,1)}else d.push(s);n.value=d}}const t=B(()=>l.value==="single");return{modelValue:n,changeModelValue:i,isSingle:t}}const[xe,_t]=le("AccordionRoot");var Lt=A({__name:"AccordionRoot",props:{collapsible:{type:Boolean,required:!1,default:!1},disabled:{type:Boolean,required:!1,default:!1},dir:{type:String,required:!1},orientation:{type:String,required:!1,default:"vertical"},unmountOnHide:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},type:{type:String,required:!1},modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1}},emits:["update:modelValue"],setup(u,{emit:r}){const l=u,n=r,{dir:i,disabled:t,unmountOnHide:s}=me(l),d=$e(i),{modelValue:f,changeModelValue:x,isSingle:I}=mt(l,n),{forwardRef:y,currentElement:M}=P();return _t({disabled:t,direction:d,orientation:l.orientation,parentElement:M,isSingle:I,collapsible:l.collapsible,modelValue:f,changeModelValue:x,unmountOnHide:s}),(_,p)=>(c(),C(e(K),{ref:e(y),"as-child":_.asChild,as:_.as},{default:h(()=>[D(_.$slots,"default",{modelValue:e(f)})]),_:3},8,["as-child","as"]))}}),De=Lt,be=(function(u){return u.Open="open",u.Closed="closed",u})(be||{});const[Pe,Ct]=le("AccordionItem");var xt=A({__name:"AccordionItem",props:{disabled:{type:Boolean,required:!1},value:{type:String,required:!0},unmountOnHide:{type:Boolean,required:!1,default:void 0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u,{expose:r}){const l=u,n=xe(),i=B(()=>n.isSingle.value?l.value===n.modelValue.value:Array.isArray(n.modelValue.value)&&n.modelValue.value.includes(l.value)),t=B(()=>n.disabled.value||l.disabled),s=B(()=>t.value?"":void 0),d=B(()=>i.value?be.Open:be.Closed);r({open:i,dataDisabled:s});const{currentRef:f,currentElement:x}=P();Ct({open:i,dataState:d,disabled:t,dataDisabled:s,triggerId:"",currentRef:f,currentElement:x,value:B(()=>l.value)});function I(y){const M=y.target;if(Array.from(n.parentElement.value?.querySelectorAll("[data-reka-collection-item]")??[]).findIndex(L=>L===M)===-1)return null;Le(y,M,n.parentElement.value,{arrowKeyOptions:n.orientation,dir:n.direction.value,focus:!0})}return(y,M)=>(c(),C(e(ft),{"data-orientation":e(n).orientation,"data-disabled":s.value,"data-state":d.value,disabled:t.value,open:i.value,as:l.as,"as-child":l.asChild,"unmount-on-hide":l.unmountOnHide??e(n).unmountOnHide.value,onKeydown:Re(I,["up","down","left","right","home","end"])},{default:h(()=>[D(y.$slots,"default",{open:i.value})]),_:3},8,["data-orientation","data-disabled","data-state","disabled","open","as","as-child","unmount-on-hide"]))}}),wt=xt,It=A({__name:"AccordionContent",props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const r=u,l=xe(),n=Pe();return P(),(i,t)=>(c(),C(e(vt),{role:"region","as-child":r.asChild,as:i.as,"force-mount":r.forceMount,"aria-labelledby":e(n).triggerId,"data-state":e(n).dataState.value,"data-disabled":e(n).dataDisabled.value,"data-orientation":e(l).orientation,style:{"--reka-accordion-content-width":"var(--reka-collapsible-content-width)","--reka-accordion-content-height":"var(--reka-collapsible-content-height)"},onContentFound:t[0]||(t[0]=s=>e(l).changeModelValue(e(n).value.value))},{default:h(()=>[D(i.$slots,"default")]),_:3},8,["as-child","as","force-mount","aria-labelledby","data-state","data-disabled","data-orientation"]))}}),Tt=It,qt=A({__name:"AccordionTrigger",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const r=u,l=xe(),n=Pe();n.triggerId||=se(void 0,"reka-accordion-trigger");function i(){const t=l.isSingle.value&&n.open.value&&!l.collapsible;n.disabled.value||t||l.changeModelValue(n.value.value)}return(t,s)=>(c(),C(e(ht),{id:e(n).triggerId,ref:e(n).currentRef,"data-reka-collection-item":"",as:r.as,"as-child":r.asChild,"aria-disabled":e(n).disabled.value||void 0,"aria-expanded":e(n).open.value||!1,"data-disabled":e(n).dataDisabled.value,"data-orientation":e(l).orientation,"data-state":e(n).dataState.value,disabled:e(n).disabled.value,onClick:i},{default:h(()=>[D(t.$slots,"default")]),_:3},8,["id","as","as-child","aria-disabled","aria-expanded","data-disabled","data-orientation","data-state","disabled"]))}}),Ne=qt;function de(u){return u?"open":"closed"}function Ke(u,r){return`${u}-trigger-${r}`}function we(u,r){return`${u}-content-${r}`}const Et="navigationMenu.linkSelect",ne="navigationMenu.rootContentDismiss";function ye(u){const r=[],l=document.createTreeWalker(u,NodeFilter.SHOW_ELEMENT,{acceptNode:n=>{const i=n.tagName==="INPUT"&&n.type==="hidden";return n.disabled||n.hidden||i?NodeFilter.FILTER_SKIP:n.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;l.nextNode();)r.push(l.currentNode);return r}function Fe(u){const r=G();return u.some(l=>l===r?!0:(l.focus(),G()!==r))}function Mt(u){return u.forEach(r=>{r.dataset.tabindex=r.getAttribute("tabindex")||"",r.setAttribute("tabindex","-1")}),()=>{u.forEach(r=>{const l=r.dataset.tabindex;r.setAttribute("tabindex",l)})}}function He(u){return r=>r.pointerType==="mouse"?u(r):void 0}const[Z,Ot]=le(["NavigationMenuRoot","NavigationMenuSub"],"NavigationMenuContext");var Dt=A({__name:"NavigationMenuRoot",props:{modelValue:{type:String,required:!1,default:void 0},defaultValue:{type:String,required:!1},dir:{type:String,required:!1},orientation:{type:String,required:!1,default:"horizontal"},delayDuration:{type:Number,required:!1,default:200},skipDelayDuration:{type:Number,required:!1,default:300},disableClickTrigger:{type:Boolean,required:!1,default:!1},disableHoverTrigger:{type:Boolean,required:!1,default:!1},disablePointerLeaveClose:{type:Boolean,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"nav"}},emits:["update:modelValue"],setup(u,{emit:r}){const l=u,i=ke(l,"modelValue",r,{defaultValue:l.defaultValue??"",passive:l.modelValue===void 0}),t=V(""),{forwardRef:s,currentElement:d}=P(),f=V(),x=V(),I=V(),{getItems:y,CollectionSlot:M}=ie({key:"NavigationMenu",isProvider:!0}),{delayDuration:_,skipDelayDuration:p,dir:L,disableClickTrigger:o,disableHoverTrigger:S,unmountOnHide:g}=me(l),b=$e(L),E=Se(!1,p),v=V(!1),w=B(()=>i.value!==""||E.value?150:_.value),a=je(k=>{if(typeof k=="string"){if(k===""&&v.value){v.value=!1;return}t.value=i.value,i.value=k,k===""&&(E.value=!0)}},w);Ce(()=>{if(!i.value)return;const k=y().map($=>$.ref);I.value=k.find($=>$.id.includes(i.value))}),Ve(d,ne,m),Ot({isRootMenu:!0,modelValue:i,previousValue:t,baseId:se(void 0,"reka-navigation-menu"),disableClickTrigger:o,disableHoverTrigger:S,dir:b,unmountOnHide:g,orientation:l.orientation,rootNavigationMenu:d,indicatorTrack:f,activeTrigger:I,onIndicatorTrackChange:k=>{f.value=k},viewport:x,onViewportChange:k=>{x.value=k},onTriggerEnter:k=>{i.value!==""?(v.value=!0,t.value=i.value,i.value=k):a(k)},onTriggerLeave:()=>{v.value=!1,a("")},onContentEnter:()=>{a()},onContentLeave:()=>{l.disablePointerLeaveClose||(v.value=!1,a(""))},onItemSelect:k=>{t.value=i.value,i.value=k},onItemDismiss:m});function m(){t.value=i.value,i.value=""}return(k,$)=>(c(),C(e(M),null,{default:h(()=>[T(e(K),{ref:e(s),as:k.as,"as-child":k.asChild,"data-orientation":k.orientation,dir:e(b),"data-reka-navigation-menu":""},{default:h(()=>[D(k.$slots,"default",{modelValue:e(i)})]),_:3},8,["as","as-child","data-orientation","dir"])]),_:3}))}}),Nt=Dt;const[Ie,Vt]=le("NavigationMenuItem");var Bt=A({__name:"NavigationMenuItem",props:{value:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"li"}},setup(u){const r=u;P();const{getItems:l}=ie({key:"NavigationMenu"}),n=Z(),i=se(r.value),t=V(),s=V(),d=we(n.baseId,i);let f=()=>({});const x=V(!1);async function I(p="start"){const L=document.getElementById(d);if(L){f();const o=ye(L);o.length&&Fe(p==="start"?o:o.reverse())}}function y(){const p=document.getElementById(d);if(p){const L=ye(p);L.length&&(f=Mt(L))}}Vt({value:i,contentId:d,triggerRef:t,focusProxyRef:s,wasEscapeCloseRef:x,onEntryKeyDown:I,onFocusProxyEnter:I,onContentFocusOutside:y,onRootContentClose:y});function M(){n.onItemDismiss(),t.value?.focus()}function _(p){const L=G();if(p.keyCode===32||p.key==="Enter")if(n.modelValue.value===i){M(),p.preventDefault();return}else{p.target.click(),p.preventDefault();return}const o=l().filter(g=>g.ref.parentElement?.hasAttribute("data-menu-item")).map(g=>g.ref);if(!o.includes(L))return;const S=Le(p,L,void 0,{itemsArray:o,loop:!1});S&&S?.focus(),p.preventDefault(),p.stopPropagation()}return(p,L)=>(c(),C(e(K),{"as-child":p.asChild,as:p.as,"data-menu-item":"",onKeydown:Re(_,["up","down","left","right","home","end","space"])},{default:h(()=>[D(p.$slots,"default")]),_:3},8,["as-child","as"]))}}),$t=Bt,Rt=A({__name:"NavigationMenuContentImpl",props:{disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside"],setup(u,{emit:r}){const l=u,n=r,{getItems:i}=ie({key:"NavigationMenu"}),{forwardRef:t,currentElement:s}=P(),d=Z(),f=Ie(),x=Ke(d.baseId,f.value),I=we(d.baseId,f.value),y=V(null),M=B(()=>{const g=i().map(m=>m.ref.id.split("trigger-")[1]);d.dir.value==="rtl"&&g.reverse();const b=g.indexOf(d.modelValue.value),E=g.indexOf(d.previousValue.value),v=f.value===d.modelValue.value,w=E===g.indexOf(f.value);if(!v&&!w)return y.value;const a=(()=>{if(b!==E){if(v&&E!==-1)return b>E?"from-end":"from-start";if(w&&b!==-1)return b>E?"to-start":"to-end"}return null})();return y.value=a,a});function _(g){if(n("focusOutside",g),n("interactOutside",g),g.detail.originalEvent.target.hasAttribute("data-navigation-menu-trigger")&&g.preventDefault(),!g.defaultPrevented){f.onContentFocusOutside();const E=g.target;d.rootNavigationMenu?.value?.contains(E)&&g.preventDefault()}}function p(g){if(n("pointerDownOutside",g),!g.defaultPrevented){const b=g.target,E=i().some(w=>w.ref.contains(b)),v=d.isRootMenu&&d.viewport.value?.contains(b);(E||v||!d.isRootMenu)&&g.preventDefault()}}Ce(g=>{const b=s.value;if(d.isRootMenu&&b){const E=()=>{d.onItemDismiss(),f.onRootContentClose(),b.contains(G())&&f.triggerRef.value?.focus()};b.addEventListener(ne,E),g(()=>b.removeEventListener(ne,E))}});function L(g){n("escapeKeyDown",g),g.defaultPrevented||(d.onItemDismiss(),f.triggerRef?.value?.focus(),f.wasEscapeCloseRef.value=!0)}function o(g){if(g.target.closest("[data-reka-navigation-menu]")!==d.rootNavigationMenu.value)return;const b=g.altKey||g.ctrlKey||g.metaKey,E=g.key==="Tab"&&!b,v=ye(g.currentTarget);if(E){const a=G(),m=v.findIndex(z=>z===a),$=g.shiftKey?v.slice(0,m).reverse():v.slice(m+1,v.length);if(Fe($))g.preventDefault();else{f.focusProxyRef.value?.focus();return}}Le(g,G(),void 0,{itemsArray:v,loop:!1,enableIgnoredElement:!0})?.focus()}function S(){if(d.modelValue.value!==f.value)return;const g=new Event(ne,{bubbles:!0,cancelable:!0});s.value?.dispatchEvent(g)}return(g,b)=>(c(),C(e(Ue),O({id:e(I),ref:e(t),"aria-labelledby":e(x),"data-motion":M.value,"data-state":e(de)(e(d).modelValue.value===e(f).value),"data-orientation":e(d).orientation},l,{onKeydown:o,onEscapeKeyDown:L,onPointerDownOutside:p,onFocusOutside:_,onDismiss:S}),{default:h(()=>[D(g.$slots,"default")]),_:3},16,["id","aria-labelledby","data-motion","data-state","data-orientation"]))}}),St=Rt,zt=A({inheritAttrs:!1,__name:"NavigationMenuContent",props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside"],setup(u,{emit:r}){const l=u,n=r,i=Je(Xe(l,"forceMount"),n),{forwardRef:t}=P(),s=Z(),d=Ie(),f=B(()=>d.value===s.modelValue.value),x=B(()=>s.viewport.value&&!s.modelValue.value&&s.previousValue.value?s.previousValue.value===d.value:!1);return(I,y)=>(c(),C(ze,{to:e(qe)&&e(s).viewport.value?e(s).viewport.value:"body",disabled:e(qe)&&e(s).viewport.value?!e(s).viewport.value:!0},[T(e(ue),{present:I.forceMount||f.value||x.value,"force-mount":!e(s).unmountOnHide.value},{default:h(({present:M})=>[T(St,O({ref:e(t),"data-state":e(de)(f.value),style:{pointerEvents:!f.value&&e(s).isRootMenu?"none":void 0}},{...I.$attrs,...e(i)},{hidden:!M,onPointerenter:y[0]||(y[0]=_=>e(s).onContentEnter(e(d).value)),onPointerleave:y[1]||(y[1]=_=>e(He)(()=>e(s).onContentLeave())(_)),onPointerDownOutside:y[2]||(y[2]=_=>n("pointerDownOutside",_)),onFocusOutside:y[3]||(y[3]=_=>n("focusOutside",_)),onInteractOutside:y[4]||(y[4]=_=>n("interactOutside",_))}),{default:h(()=>[D(I.$slots,"default")]),_:2},1040,["data-state","style","hidden"])]),_:3},8,["present","force-mount"])],8,["to","disabled"]))}}),At=zt,Pt=A({inheritAttrs:!1,__name:"NavigationMenuIndicator",props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const r=u,{forwardRef:l}=P(),n=Z(),i=V(),t=B(()=>n.orientation==="horizontal"),s=B(()=>!!n.modelValue.value),{activeTrigger:d}=n;function f(){d.value&&(i.value={size:t.value?d.value.offsetWidth:d.value.offsetHeight,position:t.value?d.value.offsetLeft:d.value.offsetTop})}return Ce(()=>{n.modelValue.value&&f()}),re(d,f),re(n.indicatorTrack,f),(x,I)=>e(n).indicatorTrack.value?(c(),C(ze,{key:0,to:e(n).indicatorTrack.value},[T(e(ue),{present:x.forceMount||s.value},{default:h(()=>[T(e(K),O({ref:e(l),"aria-hidden":"true","data-state":s.value?"visible":"hidden","data-orientation":e(n).orientation,"as-child":r.asChild,as:x.as,style:{...i.value?{"--reka-navigation-menu-indicator-size":`${i.value.size}px`,"--reka-navigation-menu-indicator-position":`${i.value.position}px`}:{}}},x.$attrs),{default:h(()=>[D(x.$slots,"default")]),_:3},16,["data-state","data-orientation","as-child","as","style"])]),_:3},8,["present"])],8,["to"])):N("v-if",!0)}}),Kt=Pt,Ft=A({__name:"NavigationMenuLink",props:{active:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"a"}},emits:["select"],setup(u,{emit:r}){const l=u,n=r,{CollectionItem:i}=ie({key:"NavigationMenu"});P();async function t(s){const d=new CustomEvent(Et,{bubbles:!0,cancelable:!0,detail:{originalEvent:s}});if(n("select",d),!d.defaultPrevented&&!s.metaKey){const f=new CustomEvent(ne,{bubbles:!0,cancelable:!0});s.target?.dispatchEvent(f)}}return(s,d)=>(c(),C(e(i),null,{default:h(()=>[T(e(K),{as:s.as,"data-active":s.active?"":void 0,"aria-current":s.active?"page":void 0,"as-child":l.asChild,onClick:t},{default:h(()=>[D(s.$slots,"default")]),_:3},8,["as","data-active","aria-current","as-child"])]),_:3}))}}),ge=Ft,Ht=A({inheritAttrs:!1,__name:"NavigationMenuList",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"ul"}},setup(u){const r=u,l=Z(),{forwardRef:n,currentElement:i}=P();return _e(()=>{l.onIndicatorTrackChange(i.value)}),(t,s)=>(c(),C(e(K),{ref:e(n),style:{position:"relative"}},{default:h(()=>[T(e(K),O(t.$attrs,{"as-child":r.asChild,as:t.as,"data-orientation":e(l).orientation}),{default:h(()=>[D(t.$slots,"default")]),_:3},16,["as-child","as","data-orientation"])]),_:3},512))}}),Wt=Ht;const jt=["aria-owns"];var Ut=A({inheritAttrs:!1,__name:"NavigationMenuTrigger",props:{disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(u){const r=u,l=Z(),n=Ie(),{CollectionItem:i}=ie({key:"NavigationMenu"}),{forwardRef:t,currentElement:s}=P(),d=V(""),f=V(""),x=Se(!1,300),I=V(!1),y=B(()=>n.value===l.modelValue.value);_e(()=>{n.triggerRef=s,d.value=Ke(l.baseId,n.value),f.value=we(l.baseId,n.value)});function M(){l.disableHoverTrigger.value||(I.value=!1,n.wasEscapeCloseRef.value=!1)}function _(b){if(!l.disableHoverTrigger.value&&b.pointerType==="mouse"){if(r.disabled||I.value||n.wasEscapeCloseRef.value||x.value)return;l.onTriggerEnter(n.value),x.value=!0}}function p(b){if(!l.disableHoverTrigger.value&&b.pointerType==="mouse"){if(r.disabled)return;l.onTriggerLeave(),x.value=!1}}function L(b){(!("pointerType"in b)||b.pointerType==="mouse")&&l.disableClickTrigger.value||x.value||(y.value?l.onItemSelect(""):l.onItemSelect(n.value),I.value=y.value)}function o(b){const v={horizontal:"ArrowDown",vertical:l.dir.value==="rtl"?"ArrowLeft":"ArrowRight"}[l.orientation];y.value&&b.key===v&&(n.onEntryKeyDown(),b.preventDefault(),b.stopPropagation())}function S(b){b&&(n.focusProxyRef.value=Ye(b))}function g(b){const E=document.getElementById(n.contentId),v=b.relatedTarget,w=v===s.value,a=E?.contains(v);(w||!a)&&n.onFocusProxyEnter(w?"start":"end")}return(b,E)=>(c(),R(j,null,[T(e(i),null,{default:h(()=>[T(e(K),O({id:d.value,ref:e(t),disabled:b.disabled,"data-disabled":b.disabled?"":void 0,"data-state":e(de)(y.value),"data-navigation-menu-trigger":"","aria-expanded":y.value,"aria-controls":f.value,"as-child":r.asChild,as:b.as},b.$attrs,{onPointerenter:M,onPointermove:_,onPointerleave:p,onClick:L,onKeydown:o}),{default:h(()=>[D(b.$slots,"default")]),_:3},16,["id","disabled","data-disabled","data-state","aria-expanded","aria-controls","as-child","as"])]),_:3}),y.value?(c(),R(j,{key:0},[T(e(Qe),{ref:S,"aria-hidden":"true",tabindex:0,onFocus:g}),e(l).viewport?(c(),R("span",{key:0,"aria-owns":f.value},null,8,jt)):N("v-if",!0)],64)):N("v-if",!0)],64))}}),Jt=Ut,Xt=A({inheritAttrs:!1,__name:"NavigationMenuViewport",props:{forceMount:{type:Boolean,required:!1},align:{type:String,required:!1,default:"center"},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(u){const r=u,{forwardRef:l,currentElement:n}=P(),i=Z(),{activeTrigger:t,rootNavigationMenu:s,modelValue:d}=i,f=V(),x=V(),I=B(()=>!!i.modelValue.value);he(n,()=>{i.onViewportChange(n.value)});const y=V();he([d,I],()=>{Be(()=>{n.value&&requestAnimationFrame(()=>{const _=n.value?.querySelector("[data-state=open]");y.value=_})})},{immediate:!0});function M(){if(y.value&&t.value&&s.value){const _=document.documentElement.offsetWidth,p=document.documentElement.offsetHeight,L=s.value.getBoundingClientRect(),o=t.value.getBoundingClientRect(),{offsetWidth:S,offsetHeight:g}=y.value,b=o.left-L.left,E=o.top-L.top;let v=null,w=null;switch(r.align){case"start":v=b,w=E;break;case"end":v=b-S+o.width,w=E-g+o.height;break;default:v=b-S/2+o.width/2,w=E-g/2+o.height/2}const a=10;v+L.left<a&&(v=a-L.left);const m=v+L.left+S;m>_-a&&(v-=m-_+a,v<a-L.left&&(v=a-L.left)),w+L.top<a&&(w=a-L.top);const k=w+L.top+g;k>p-a&&(w-=k-p+a,w<a-L.top&&(w=a-L.top)),v=Math.round(v),w=Math.round(w),x.value={left:v,top:w}}}return re(y,()=>{y.value&&(f.value={width:y.value.offsetWidth,height:y.value.offsetHeight},M())}),re([globalThis.document?.body,s],()=>{M()}),(_,p)=>(c(),C(e(ue),{present:_.forceMount||I.value,"force-mount":!e(i).unmountOnHide.value,onAfterLeave:p[2]||(p[2]=()=>{f.value=void 0,x.value=void 0})},{default:h(({present:L})=>[T(e(K),O(_.$attrs,{ref:e(l),as:_.as,"as-child":_.asChild,"data-state":e(de)(I.value),"data-orientation":e(i).orientation,style:{pointerEvents:!I.value&&e(i).isRootMenu?"none":void 0,"--reka-navigation-menu-viewport-width":f.value?`${f.value?.width}px`:void 0,"--reka-navigation-menu-viewport-height":f.value?`${f.value?.height}px`:void 0,"--reka-navigation-menu-viewport-left":x.value?`${x.value?.left}px`:void 0,"--reka-navigation-menu-viewport-top":x.value?`${x.value?.top}px`:void 0},hidden:!L,onPointerenter:p[0]||(p[0]=o=>e(i).onContentEnter(e(i).modelValue.value)),onPointerleave:p[1]||(p[1]=o=>e(He)(()=>e(i).onContentLeave())(o))}),{default:h(()=>[D(_.$slots,"default")]),_:2},1040,["as","as-child","data-state","data-orientation","style","hidden"])]),_:3},8,["present","force-mount"]))}}),Qt=Xt;const Yt={slots:{root:"relative flex gap-1.5 [&>div]:min-w-0",list:"isolate min-w-0",label:"w-full flex items-center gap-1.5 font-semibold text-xs/5 text-highlighted px-2.5 py-1.5",item:"min-w-0",link:"group relative w-full flex items-center gap-1.5 font-medium text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:outline-3",linkLeadingIcon:"shrink-0 size-5",linkLeadingAvatar:"shrink-0",linkLeadingAvatarSize:"2xs",linkLeadingChipSize:"sm",linkTrailing:"group ms-auto inline-flex gap-1.5 items-center",linkTrailingBadge:"shrink-0",linkTrailingBadgeSize:"sm",linkTrailingIcon:"size-5 transform shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200",linkLabel:"truncate",linkLabelExternalIcon:"inline-block size-3 align-top text-dimmed",childList:"isolate",childLabel:"text-xs text-highlighted",childItem:"",childLink:"group relative size-full flex items-start text-start text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:outline-3",childLinkWrapper:"min-w-0",childLinkIcon:"size-5 shrink-0",childLinkLabel:"truncate",childLinkLabelExternalIcon:"inline-block size-3 align-top text-dimmed",childLinkDescription:"text-muted",separator:"px-2 h-px bg-border",viewportWrapper:"absolute top-full start-0 flex w-full",viewport:"relative overflow-hidden bg-default shadow-lg rounded-md ring ring-default h-(--reka-navigation-menu-viewport-height) w-full transition-[width,height,left,right] duration-200 origin-[top_center] data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] z-1",content:"",indicator:"absolute left-0 data-[state=visible]:animate-[fade-in_100ms_ease-out] data-[state=hidden]:animate-[fade-out_100ms_ease-in] data-[state=hidden]:opacity-0 bottom-0 z-2 w-(--reka-navigation-menu-indicator-size) translate-x-(--reka-navigation-menu-indicator-position) flex h-2.5 items-end justify-center overflow-hidden transition-[translate,width] duration-200",arrow:"relative top-[50%] size-2.5 rotate-45 border border-default bg-default z-1 rounded-xs"},variants:{color:{primary:{link:"before:outline-primary/25",childLink:"before:outline-primary/25"},secondary:{link:"before:outline-secondary/25",childLink:"before:outline-secondary/25"},success:{link:"before:outline-success/25",childLink:"before:outline-success/25"},info:{link:"before:outline-info/25",childLink:"before:outline-info/25"},warning:{link:"before:outline-warning/25",childLink:"before:outline-warning/25"},error:{link:"before:outline-error/25",childLink:"before:outline-error/25"},neutral:{link:"before:outline-inverted/25",childLink:"before:outline-inverted/25"}},highlightColor:{primary:"",secondary:"",success:"",info:"",warning:"",error:"",neutral:""},variant:{pill:"",link:""},orientation:{horizontal:{root:"items-center justify-between",list:"flex items-center",item:"py-2",link:"px-2.5 py-1.5 before:inset-x-px before:inset-y-0",childList:"grid p-2",childLink:"px-3 py-2 gap-2 before:inset-x-px before:inset-y-0",childLinkLabel:"font-medium",content:"absolute top-0 start-0 w-full max-h-[70vh] overflow-y-auto"},vertical:{root:"flex-col",link:"flex-row px-2.5 py-1.5 before:inset-y-px before:inset-x-0",childLabel:"px-1.5 py-0.5",childLink:"p-1.5 gap-1.5 before:inset-y-px before:inset-x-0"}},contentOrientation:{horizontal:{viewportWrapper:"justify-center",content:"data-[motion=from-start]:animate-[enter-from-left_200ms_ease] data-[motion=from-end]:animate-[enter-from-right_200ms_ease] data-[motion=to-start]:animate-[exit-to-left_200ms_ease] data-[motion=to-end]:animate-[exit-to-right_200ms_ease]"},vertical:{viewport:"sm:w-(--reka-navigation-menu-viewport-width) left-(--reka-navigation-menu-viewport-left) rtl:left-auto rtl:right-[calc(100%-var(--reka-navigation-menu-viewport-left)-var(--reka-navigation-menu-viewport-width))]"}},active:{true:{childLink:"before:bg-elevated text-highlighted",childLinkIcon:"text-default"},false:{link:"text-muted",linkLeadingIcon:"text-dimmed",childLink:["hover:before:bg-elevated/50 text-default hover:text-highlighted","transition-colors before:transition-colors"],childLinkIcon:["text-dimmed group-hover:text-default","transition-colors"]}},disabled:{true:{link:"cursor-not-allowed opacity-75"}},highlight:{true:""},level:{true:""},collapsed:{true:""}},compoundVariants:[{orientation:"horizontal",contentOrientation:"horizontal",class:{childList:"grid-cols-2 gap-2"}},{orientation:"horizontal",contentOrientation:"vertical",class:{childList:"gap-1",content:"w-60"}},{orientation:"vertical",collapsed:!1,class:{childList:"ms-5 border-s border-default",childItem:"ps-1.5 -ms-px",content:"data-[state=open]:animate-[collapsible-down_200ms_ease-out] data-[state=closed]:animate-[collapsible-up_200ms_ease-out] data-[state=closed]:overflow-hidden"}},{orientation:"vertical",collapsed:!0,class:{link:"px-1.5",linkLabel:"hidden",linkTrailing:"hidden",content:"shadow-sm rounded-sm min-h-6 p-1"}},{orientation:"horizontal",highlight:!0,class:{link:["after:absolute after:-bottom-2 after:inset-x-2.5 after:block after:h-px after:rounded-full","after:transition-colors"]}},{orientation:"vertical",highlight:!0,level:!0,class:{link:["after:absolute after:-start-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full","after:transition-colors"]}},{disabled:!1,active:!1,variant:"pill",class:{link:["hover:text-highlighted hover:before:bg-elevated/50","transition-colors before:transition-colors"],linkLeadingIcon:["group-hover:text-default","transition-colors"]}},{disabled:!1,active:!1,variant:"pill",orientation:"horizontal",class:{link:"data-[state=open]:text-highlighted",linkLeadingIcon:"group-data-[state=open]:text-default"}},{disabled:!1,variant:"pill",highlight:!0,orientation:"horizontal",class:{link:"data-[state=open]:before:bg-elevated/50"}},{disabled:!1,variant:"pill",highlight:!1,active:!1,orientation:"horizontal",class:{link:"data-[state=open]:before:bg-elevated/50"}},{color:"primary",variant:"pill",active:!0,class:{link:"text-primary",linkLeadingIcon:"text-primary group-data-[state=open]:text-primary"}},{color:"secondary",variant:"pill",active:!0,class:{link:"text-secondary",linkLeadingIcon:"text-secondary group-data-[state=open]:text-secondary"}},{color:"success",variant:"pill",active:!0,class:{link:"text-success",linkLeadingIcon:"text-success group-data-[state=open]:text-success"}},{color:"info",variant:"pill",active:!0,class:{link:"text-info",linkLeadingIcon:"text-info group-data-[state=open]:text-info"}},{color:"warning",variant:"pill",active:!0,class:{link:"text-warning",linkLeadingIcon:"text-warning group-data-[state=open]:text-warning"}},{color:"error",variant:"pill",active:!0,class:{link:"text-error",linkLeadingIcon:"text-error group-data-[state=open]:text-error"}},{color:"neutral",variant:"pill",active:!0,class:{link:"text-highlighted",linkLeadingIcon:"text-highlighted group-data-[state=open]:text-highlighted"}},{variant:"pill",active:!0,highlight:!1,class:{link:"before:bg-elevated"}},{variant:"pill",active:!0,highlight:!0,disabled:!1,class:{link:["hover:before:bg-elevated/50","before:transition-colors"]}},{disabled:!1,active:!1,variant:"link",class:{link:["hover:text-highlighted","transition-colors"],linkLeadingIcon:["group-hover:text-default","transition-colors"]}},{disabled:!1,active:!1,variant:"link",orientation:"horizontal",class:{link:"data-[state=open]:text-highlighted",linkLeadingIcon:"group-data-[state=open]:text-default"}},{color:"primary",variant:"link",active:!0,class:{link:"text-primary",linkLeadingIcon:"text-primary group-data-[state=open]:text-primary"}},{color:"secondary",variant:"link",active:!0,class:{link:"text-secondary",linkLeadingIcon:"text-secondary group-data-[state=open]:text-secondary"}},{color:"success",variant:"link",active:!0,class:{link:"text-success",linkLeadingIcon:"text-success group-data-[state=open]:text-success"}},{color:"info",variant:"link",active:!0,class:{link:"text-info",linkLeadingIcon:"text-info group-data-[state=open]:text-info"}},{color:"warning",variant:"link",active:!0,class:{link:"text-warning",linkLeadingIcon:"text-warning group-data-[state=open]:text-warning"}},{color:"error",variant:"link",active:!0,class:{link:"text-error",linkLeadingIcon:"text-error group-data-[state=open]:text-error"}},{color:"neutral",variant:"link",active:!0,class:{link:"text-highlighted",linkLeadingIcon:"text-highlighted group-data-[state=open]:text-highlighted"}},{highlightColor:"primary",highlight:!0,level:!0,active:!0,class:{link:"after:bg-primary"}},{highlightColor:"secondary",highlight:!0,level:!0,active:!0,class:{link:"after:bg-secondary"}},{highlightColor:"success",highlight:!0,level:!0,active:!0,class:{link:"after:bg-success"}},{highlightColor:"info",highlight:!0,level:!0,active:!0,class:{link:"after:bg-info"}},{highlightColor:"warning",highlight:!0,level:!0,active:!0,class:{link:"after:bg-warning"}},{highlightColor:"error",highlight:!0,level:!0,active:!0,class:{link:"after:bg-error"}},{highlightColor:"neutral",highlight:!0,level:!0,active:!0,class:{link:"after:bg-inverted"}}],defaultVariants:{color:"primary",highlightColor:"primary",variant:"pill"}},ta=Object.assign({inheritAttrs:!1},{__name:"UNavigationMenu",props:{as:{type:null,required:!1},type:{type:null,required:!1,default:"multiple"},modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},trailingIcon:{type:null,required:!1},externalIcon:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},items:{type:null,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},orientation:{type:null,required:!1,default:"horizontal"},collapsed:{type:Boolean,required:!1},tooltip:{type:[Boolean,Object],required:!1},popover:{type:[Boolean,Object],required:!1},highlight:{type:Boolean,required:!1},highlightColor:{type:null,required:!1},content:{type:Object,required:!1},contentOrientation:{type:null,required:!1,default:"horizontal"},arrow:{type:Boolean,required:!1},valueKey:{type:null,required:!1,default:"value"},labelKey:{type:null,required:!1,default:"label"},class:{type:null,required:!1},ui:{type:Object,required:!1},delayDuration:{type:Number,required:!1,default:0},disableClickTrigger:{type:Boolean,required:!1},disableHoverTrigger:{type:Boolean,required:!1},skipDelayDuration:{type:Number,required:!1},disablePointerLeaveClose:{type:Boolean,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0},disabled:{type:Boolean,required:!1},collapsible:{type:Boolean,required:!1,default:!0}},emits:["update:modelValue"],setup(u,{emit:r}){const l=u,n=r,i=Ze(),t=Ge("navigationMenu",l),s=et(),d=Ee(B(()=>({as:t.as,delayDuration:t.delayDuration,skipDelayDuration:t.skipDelayDuration,orientation:t.orientation,disableClickTrigger:t.disableClickTrigger,disableHoverTrigger:t.disableHoverTrigger,disablePointerLeaveClose:t.disablePointerLeaveClose,unmountOnHide:t.unmountOnHide})),n),f=Ee(tt(t,"collapsible","disabled","type","unmountOnHide"),n),x=ve(()=>t.content),I=ve(()=>Oe(typeof t.tooltip=="boolean"?{}:t.tooltip,{...t.orientation==="vertical"&&{delayDuration:0,content:{side:"right"}}})),y=ve(()=>Oe(typeof t.popover=="boolean"?{}:t.popover,{mode:"hover",content:{side:"right",align:"start",alignOffset:2}})),[M,_]=Me(),[p,L]=Me({props:{item:Object,index:Number,level:Number,listIndex:Number}}),o=B(()=>ot({extend:Yt,...s.ui?.navigationMenu||{}})({orientation:t.orientation,contentOrientation:t.orientation==="vertical"?void 0:t.contentOrientation,collapsed:t.collapsed,color:t.color,variant:t.variant,highlight:t.highlight,highlightColor:t.highlightColor||t.color})),S=B(()=>t.items?.length?rt(t.items)?t.items:[t.items]:[]);function g(v,w,a,m){const k=S.value.length>1?`group-${m}-`:"";return Q(v,t.valueKey)??(a>0?`${k}item-${a}-${w}`:`${k}item-${w}`)}function b(v,w=0,a=0){const m=v.reduce((k,$,z)=>(($.defaultOpen||$.open)&&k.push(g($,z,w,a)),k),[]);return t.type==="single"?m[0]:m}function E(v,w){w.children?.length&&(t.orientation==="horizontal"?v.preventDefault():t.orientation==="vertical"&&!t.collapsed&&(v.preventDefault(),v.stopPropagation()))}return(v,w)=>(c(),R(j,null,[T(e(M),null,{default:h(({item:a,active:m,index:k})=>[D(v.$slots,a.slot||"item",{item:a,index:k,active:m,ui:o.value},()=>[D(v.$slots,a.slot?`${a.slot}-leading`:"item-leading",{item:a,active:m,index:k,ui:o.value},()=>[a.avatar?(c(),C(at,O({key:0,size:a.ui?.linkLeadingAvatarSize||e(t).ui?.linkLeadingAvatarSize||o.value.linkLeadingAvatarSize()},a.avatar,{"data-slot":"linkLeadingAvatar",class:o.value.linkLeadingAvatar({class:[e(t).ui?.linkLeadingAvatar,a.ui?.linkLeadingAvatar],active:m,disabled:!!a.disabled})}),null,16,["size","class"])):a.icon&&a.chip?(c(),C(nt,O({key:1,size:a.ui?.linkLeadingChipSize||e(t).ui?.linkLeadingChipSize||o.value.linkLeadingChipSize(),inset:""},typeof a.chip=="object"?a.chip:{},{"data-slot":"linkLeadingChip"}),{default:h(()=>[T(W,{name:a.icon,"data-slot":"linkLeadingIcon",class:q(o.value.linkLeadingIcon({class:[e(t).ui?.linkLeadingIcon,a.ui?.linkLeadingIcon],active:m,disabled:!!a.disabled}))},null,8,["name","class"])]),_:2},1040,["size"])):a.icon?(c(),C(W,{key:2,name:a.icon,"data-slot":"linkLeadingIcon",class:q(o.value.linkLeadingIcon({class:[e(t).ui?.linkLeadingIcon,a.ui?.linkLeadingIcon],active:m,disabled:!!a.disabled}))},null,8,["name","class"])):N("",!0)]),e(Q)(a,e(t).labelKey)||i[a.slot?`${a.slot}-label`:"item-label"]?(c(),R("span",{key:0,"data-slot":"linkLabel",class:q(o.value.linkLabel({class:[e(t).ui?.linkLabel,a.ui?.linkLabel]}))},[D(v.$slots,a.slot?`${a.slot}-label`:"item-label",{item:a,active:m,index:k},()=>[ce(ee(e(Q)(a,e(t).labelKey)),1)]),a.target==="_blank"&&e(t).externalIcon!==!1?(c(),C(W,{key:0,name:typeof e(t).externalIcon=="string"?e(t).externalIcon:e(s).ui.icons.external,"data-slot":"linkLabelExternalIcon",class:q(o.value.linkLabelExternalIcon({class:[e(t).ui?.linkLabelExternalIcon,a.ui?.linkLabelExternalIcon],active:m}))},null,8,["name","class"])):N("",!0)],2)):N("",!0),a.badge||a.badge===0||e(t).orientation==="horizontal"&&(a.children?.length||i[a.slot?`${a.slot}-content`:"item-content"])||e(t).orientation==="vertical"&&a.children?.length||a.trailingIcon||i[a.slot?`${a.slot}-trailing`:"item-trailing"]?(c(),C(oe(e(t).orientation==="vertical"&&a.children?.length&&!e(t).collapsed?e(Ne):"span"),{key:1,as:e(t).orientation==="vertical"&&a.children?.length&&!e(t).collapsed?"span":void 0,"data-slot":"linkTrailing",class:q(o.value.linkTrailing({class:[e(t).ui?.linkTrailing,a.ui?.linkTrailing]})),onClick:$=>E($,a)},{default:h(()=>[D(v.$slots,a.slot?`${a.slot}-trailing`:"item-trailing",{item:a,active:m,index:k,ui:o.value},()=>[a.badge||a.badge===0?(c(),C(lt,O({key:0,color:"neutral",variant:"outline",size:a.ui?.linkTrailingBadgeSize||e(t).ui?.linkTrailingBadgeSize||o.value.linkTrailingBadgeSize()},typeof a.badge=="string"||typeof a.badge=="number"?{label:a.badge}:a.badge,{"data-slot":"linkTrailingBadge",class:o.value.linkTrailingBadge({class:[e(t).ui?.linkTrailingBadge,a.ui?.linkTrailingBadge]})}),null,16,["size","class"])):N("",!0),e(t).orientation==="horizontal"&&(a.children?.length||i[a.slot?`${a.slot}-content`:"item-content"])||e(t).orientation==="vertical"&&a.children?.length?(c(),C(W,{key:1,name:a.trailingIcon||e(t).trailingIcon||e(s).ui.icons.chevronDown,"data-slot":"linkTrailingIcon",class:q(o.value.linkTrailingIcon({class:[e(t).ui?.linkTrailingIcon,a.ui?.linkTrailingIcon],active:m}))},null,8,["name","class"])):a.trailingIcon?(c(),C(W,{key:2,name:a.trailingIcon,"data-slot":"linkTrailingIcon",class:q(o.value.linkTrailingIcon({class:[e(t).ui?.linkTrailingIcon,a.ui?.linkTrailingIcon],active:m}))},null,8,["name","class"])):N("",!0)])]),_:2},1032,["as","class","onClick"])):N("",!0)])]),_:3}),T(e(p),null,{default:h(({item:a,index:m,level:k=0,listIndex:$=0})=>[(c(),C(oe(e(t).orientation==="vertical"&&!e(t).collapsed?e(wt):e($t)),O({as:"li"},e(t).orientation==="vertical"&&!e(t).collapsed?{disabled:!!a.disabled}:{},{value:g(a,m,k,$)}),{default:h(()=>[e(t).orientation==="vertical"&&a.type==="label"&&!e(t).collapsed?(c(),R("div",{key:0,"data-slot":"label",class:q(o.value.label({class:[e(t).ui?.label,a.ui?.label,a.class]}))},[T(e(_),{item:a,index:m},null,8,["item","index"])],2)):a.type!=="label"?(c(),C(fe,O({key:1},e(t).orientation==="vertical"&&a.children?.length&&!e(t).collapsed&&a.type==="trigger"?{}:e(pe)(a),{custom:""}),{default:h(({active:z,...J})=>[(c(),C(oe(e(t).orientation==="horizontal"&&(a.children?.length||i[a.slot?`${a.slot}-content`:"item-content"])?e(Jt):e(t).orientation==="vertical"&&a.children?.length&&!e(t).collapsed&&!J.href?e(Ne):e(ge)),{"as-child":"",active:z||a.active,disabled:a.disabled,onSelect:a.onSelect},{default:h(()=>[e(t).orientation==="vertical"&&e(t).collapsed&&a.children?.length&&(e(t).popover||a.popover)?(c(),C(it,O({key:0},{...y.value,...typeof a.popover=="boolean"?{}:a.popover||{}},{ui:{content:o.value.content({class:[e(t).ui?.content,a.ui?.content]})}}),{content:h(({close:F})=>[D(v.$slots,a.slot?`${a.slot}-content`:"item-content",{item:a,active:z||a.active,index:m,ui:o.value,close:F},()=>[Y("ul",{"data-slot":"childList",class:q(o.value.childList({class:[e(t).ui?.childList,a.ui?.childList]}))},[Y("li",{"data-slot":"childLabel",class:q(o.value.childLabel({class:[e(t).ui?.childLabel,a.ui?.childLabel]}))},ee(e(Q)(a,e(t).labelKey)),3),(c(!0),R(j,null,ae(a.children,(H,U)=>(c(),R("li",{key:U,"data-slot":"childItem",class:q(o.value.childItem({class:[e(t).ui?.childItem,a.ui?.childItem]}))},[T(fe,O({ref_for:!0},e(pe)(H),{custom:""}),{default:h(({active:X,...We})=>[T(e(ge),{"as-child":"",active:X,onSelect:H.onSelect},{default:h(()=>[T(te,O({ref_for:!0},We,{"data-slot":"childLink",class:o.value.childLink({class:[e(t).ui?.childLink,a.ui?.childLink,H.class],active:X})}),{default:h(()=>[H.icon?(c(),C(W,{key:0,name:H.icon,"data-slot":"childLinkIcon",class:q(o.value.childLinkIcon({class:[e(t).ui?.childLinkIcon,a.ui?.childLinkIcon],active:X}))},null,8,["name","class"])):N("",!0),Y("span",{"data-slot":"childLinkLabel",class:q(o.value.childLinkLabel({class:[e(t).ui?.childLinkLabel,a.ui?.childLinkLabel],active:X}))},[ce(ee(e(Q)(H,e(t).labelKey))+" ",1),H.target==="_blank"&&e(t).externalIcon!==!1?(c(),C(W,{key:0,name:typeof e(t).externalIcon=="string"?e(t).externalIcon:e(s).ui.icons.external,"data-slot":"childLinkLabelExternalIcon",class:q(o.value.childLinkLabelExternalIcon({class:[e(t).ui?.childLinkLabelExternalIcon,a.ui?.childLinkLabelExternalIcon],active:X}))},null,8,["name","class"])):N("",!0)],2)]),_:2},1040,["class"])]),_:2},1032,["active","onSelect"])]),_:2},1040)],2))),128))],2)])]),default:h(()=>[T(te,O(J,{"data-slot":"link",class:o.value.link({class:[e(t).ui?.link,a.ui?.link,a.class],active:z||a.active,disabled:!!a.disabled,level:k>0})}),{default:h(()=>[T(e(_),{item:a,active:z||a.active,index:m},null,8,["item","active","index"])]),_:2},1040,["class"])]),_:2},1040,["ui"])):e(t).orientation==="vertical"&&e(t).collapsed&&(e(t).tooltip||a.tooltip)||e(t).orientation==="horizontal"&&a.tooltip?(c(),C(ut,O({key:1,text:e(Q)(a,e(t).labelKey)},{...I.value,...typeof a.tooltip=="boolean"?{}:a.tooltip||{}}),{default:h(()=>[T(te,O(J,{"data-slot":"link",class:o.value.link({class:[e(t).ui?.link,a.ui?.link,a.class],active:z||a.active,disabled:!!a.disabled,level:k>0})}),{default:h(()=>[T(e(_),{item:a,active:z||a.active,index:m},null,8,["item","active","index"])]),_:2},1040,["class"])]),_:2},1040,["text"])):(c(),C(te,O({key:2},J,{"data-slot":"link",class:o.value.link({class:[e(t).ui?.link,a.ui?.link,a.class],active:z||a.active,disabled:!!a.disabled,level:e(t).orientation==="horizontal"||k>0})}),{default:h(()=>[T(e(_),{item:a,active:z||a.active,index:m},null,8,["item","active","index"])]),_:2},1040,["class"]))]),_:2},1064,["active","disabled","onSelect"])),e(t).orientation==="horizontal"&&(a.children?.length||i[a.slot?`${a.slot}-content`:"item-content"])?(c(),C(e(At),O({key:0},x.value,{"data-slot":"content",class:o.value.content({class:[e(t).ui?.content,a.ui?.content]})}),{default:h(()=>[D(v.$slots,a.slot?`${a.slot}-content`:"item-content",{item:a,active:z||a.active,index:m,ui:o.value},()=>[Y("ul",{"data-slot":"childList",class:q(o.value.childList({class:[e(t).ui?.childList,a.ui?.childList]}))},[(c(!0),R(j,null,ae(a.children,(F,H)=>(c(),R("li",{key:H,"data-slot":"childItem",class:q(o.value.childItem({class:[e(t).ui?.childItem,a.ui?.childItem]}))},[T(fe,O({ref_for:!0},e(pe)(F),{custom:""}),{default:h(({active:U,...X})=>[T(e(ge),{"as-child":"",active:U,onSelect:F.onSelect},{default:h(()=>[T(te,O({ref_for:!0},X,{"data-slot":"childLink",class:o.value.childLink({class:[e(t).ui?.childLink,a.ui?.childLink,F.class],active:U})}),{default:h(()=>[F.icon?(c(),C(W,{key:0,name:F.icon,"data-slot":"childLinkIcon",class:q(o.value.childLinkIcon({class:[e(t).ui?.childLinkIcon,a.ui?.childLinkIcon],active:U}))},null,8,["name","class"])):N("",!0),Y("div",{"data-slot":"childLinkWrapper",class:q(o.value.childLinkWrapper({class:[e(t).ui?.childLinkWrapper,a.ui?.childLinkWrapper]}))},[Y("p",{"data-slot":"childLinkLabel",class:q(o.value.childLinkLabel({class:[e(t).ui?.childLinkLabel,a.ui?.childLinkLabel],active:U}))},[ce(ee(e(Q)(F,e(t).labelKey))+" ",1),F.target==="_blank"&&e(t).externalIcon!==!1?(c(),C(W,{key:0,name:typeof e(t).externalIcon=="string"?e(t).externalIcon:e(s).ui.icons.external,"data-slot":"childLinkLabelExternalIcon",class:q(o.value.childLinkLabelExternalIcon({class:[e(t).ui?.childLinkLabelExternalIcon,a.ui?.childLinkLabelExternalIcon],active:U}))},null,8,["name","class"])):N("",!0)],2),F.description?(c(),R("p",{key:0,"data-slot":"childLinkDescription",class:q(o.value.childLinkDescription({class:[e(t).ui?.childLinkDescription,a.ui?.childLinkDescription],active:U}))},ee(F.description),3)):N("",!0)],2)]),_:2},1040,["class"])]),_:2},1032,["active","onSelect"])]),_:2},1040)],2))),128))],2)])]),_:2},1040,["class"])):N("",!0)]),_:2},1040)):N("",!0),e(t).orientation==="vertical"&&a.children?.length&&!e(t).collapsed?(c(),C(e(Tt),{key:2,"data-slot":"content",class:q(o.value.content({class:[e(t).ui?.content,a.ui?.content]}))},{default:h(()=>[T(e(De),O({...e(f),defaultValue:b(a.children,k+1,$)},{as:"ul","data-slot":"childList",class:o.value.childList({class:[e(t).ui?.childList,a.ui?.childList]})}),{default:h(()=>[(c(!0),R(j,null,ae(a.children,(z,J)=>(c(),C(e(L),{key:J,item:z,index:J,level:k+1,"list-index":$,"data-slot":"childItem",class:q(o.value.childItem({class:[e(t).ui?.childItem,z.ui?.childItem]}))},null,8,["item","index","level","list-index","class"]))),128))]),_:2},1040,["class"])]),_:2},1032,["class"])):N("",!0)]),_:2},1040,["value"]))]),_:3}),T(e(Nt),O({"data-slot":"root"},{...e(d),...e(t).orientation==="horizontal"?{modelValue:e(t).modelValue,defaultValue:e(t).defaultValue}:{},...v.$attrs},{"data-collapsed":e(t).collapsed,class:o.value.root({class:[e(t).ui?.root,e(t).class]})}),{default:h(()=>[D(v.$slots,"list-leading"),(c(!0),R(j,null,ae(S.value,(a,m)=>(c(),R(j,{key:`list-${m}`},[(c(),C(oe(e(t).orientation==="vertical"?e(De):e(Wt)),O({ref_for:!0},e(t).orientation==="vertical"&&!e(t).collapsed?{...e(f),modelValue:e(t).modelValue,defaultValue:e(t).defaultValue??b(a,0,m)}:{},{as:"ul","data-slot":"list",class:o.value.list({class:e(t).ui?.list})}),{default:h(()=>[(c(!0),R(j,null,ae(a,(k,$)=>(c(),C(e(L),{key:`list-${m}-${$}`,item:k,index:$,"list-index":m,"data-slot":"item",class:q(o.value.item({class:[e(t).ui?.item,k.ui?.item]}))},null,8,["item","index","list-index","class"]))),128))]),_:2},1040,["class"])),e(t).orientation==="vertical"&&m<S.value.length-1?(c(),R("div",{key:0,"data-slot":"separator",class:q(o.value.separator({class:e(t).ui?.separator}))},null,2)):N("",!0)],64))),128)),D(v.$slots,"list-trailing"),e(t).orientation==="horizontal"?(c(),R("div",{key:0,"data-slot":"viewportWrapper",class:q(o.value.viewportWrapper({class:e(t).ui?.viewportWrapper}))},[e(t).arrow?(c(),C(e(Kt),{key:0,"data-slot":"indicator",class:q(o.value.indicator({class:e(t).ui?.indicator}))},{default:h(()=>[Y("div",{"data-slot":"arrow",class:q(o.value.arrow({class:e(t).ui?.arrow}))},null,2)]),_:1},8,["class"])):N("",!0),T(e(Qt),{"data-slot":"viewport",class:q(o.value.viewport({class:e(t).ui?.viewport}))},null,8,["class"])],2)):N("",!0)]),_:3},16,["data-collapsed","class"])],64))}});export{ta as _};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as S,Y as L,aA as D,U as C,Z as N,aB as O,o as c,e as y,f as g,V as h,b as a,X as I,r as w,aC as E,$ as j,C as U,af as W,h as q,R as G,l as k,aD as J,v as _,a as X,aE as Y,aF as Z,W as V,aG as Q,aH as aa,S as ta,D as ea,a2 as ia,a3 as sa,a5 as oa,a6 as la,a7 as ra,i as x,c as B,F as $,z as M,aI as z,_ as na,aJ as da,k as R,t as K,m as ua,a8 as ca}from"./BzBaMPgu.js";import{R as va}from"./BPQNVV4M.js";const[T,fa]=j("TabsRoot");var ga=S({__name:"TabsRoot",props:{defaultValue:{type:null,required:!1},orientation:{type:String,required:!1,default:"horizontal"},dir:{type:String,required:!1},activationMode:{type:String,required:!1,default:"automatic"},modelValue:{type:null,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["update:modelValue"],setup(d,{emit:r}){const u=d,i=r,{orientation:v,unmountOnHide:n,dir:t}=L(u),o=D(t);C();const s=N(u,"modelValue",i,{defaultValue:u.defaultValue,passive:u.modelValue===void 0}),l=w(),p=E(new Set);return fa({modelValue:s,changeModelValue:b=>{s.value=b},orientation:v,dir:o,unmountOnHide:n,activationMode:u.activationMode,baseId:O(void 0,"reka-tabs"),tabsList:l,contentIds:p,registerContent:b=>{p.value=new Set([...p.value,b])},unregisterContent:b=>{const f=new Set(p.value);f.delete(b),p.value=f}}),(b,f)=>(c(),y(a(I),{dir:a(o),"data-orientation":a(v),"as-child":b.asChild,as:b.as},{default:g(()=>[h(b.$slots,"default",{modelValue:a(s)})]),_:3},8,["dir","data-orientation","as-child","as"]))}}),pa=ga;function F(d,r){return`${d}-trigger-${r}`}function P(d,r){return`${d}-content-${r}`}var ba=S({__name:"TabsContent",props:{value:{type:[String,Number],required:!0},forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(d){const r=d,{forwardRef:u}=C(),i=T(),v=_(()=>F(i.baseId,r.value)),n=_(()=>P(i.baseId,r.value)),t=_(()=>r.value===i.modelValue.value),o=w(t.value);return U(()=>{i.registerContent(r.value),requestAnimationFrame(()=>{o.value=!1})}),W(()=>{i.unregisterContent(r.value)}),(s,l)=>(c(),y(a(J),{present:s.forceMount||t.value,"force-mount":""},{default:g(({present:p})=>[q(a(I),{id:n.value,ref:a(u),"as-child":s.asChild,as:s.as,role:"tabpanel","data-state":t.value?"active":"inactive","data-orientation":a(i).orientation.value,"aria-labelledby":v.value,hidden:!p,tabindex:"0",style:G({animationDuration:o.value?"0s":void 0})},{default:g(()=>[!a(i).unmountOnHide.value||p?h(s.$slots,"default",{key:0}):k("v-if",!0)]),_:2},1032,["id","as-child","as","data-state","data-orientation","aria-labelledby","hidden","style"])]),_:3},8,["present"]))}}),ya=ba,ha=S({__name:"TabsIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(d,{expose:r}){const u=d,i=T();r({updateIndicatorStyle:o}),C();const v=Q(),n=w({size:null,thickness:null,position:null}),t=w([]);X(()=>[i.modelValue.value,i?.dir.value],()=>{o()},{immediate:!0,flush:"post"}),Y(()=>{t.value=Array.from(i.tabsList.value?.querySelectorAll('[role="tab"]')||[])}),Z(_(()=>[i.tabsList.value,...t.value]),o);function o(){const s=i.tabsList.value?.querySelector('[role="tab"][data-state="active"]');s&&(i.orientation.value==="horizontal"?n.value={size:s.offsetWidth,thickness:s.offsetHeight,position:s.offsetLeft}:n.value={size:s.offsetHeight,thickness:s.offsetWidth,position:s.offsetTop})}return(s,l)=>a(v)&&typeof n.value.size=="number"?(c(),y(a(I),V({key:0},u,{style:{"--reka-tabs-indicator-size":`${n.value.size}px`,"--reka-tabs-indicator-thickness":`${n.value.thickness}px`,"--reka-tabs-indicator-position":`${n.value.position}px`}}),{default:g(()=>[h(s.$slots,"default")]),_:3},16,["style"])):k("v-if",!0)}}),ma=ha,_a=S({__name:"TabsList",props:{loop:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(d){const r=d,{loop:u}=L(r),{forwardRef:i,currentElement:v}=C(),n=T();return n.tabsList=v,(t,o)=>(c(),y(a(aa),{"as-child":"",orientation:a(n).orientation.value,dir:a(n).dir.value,loop:a(u)},{default:g(()=>[q(a(I),{ref:a(i),role:"tablist","as-child":t.asChild,as:t.as,"aria-orientation":a(n).orientation.value},{default:g(()=>[h(t.$slots,"default")]),_:3},8,["as-child","as","aria-orientation"])]),_:3},8,["orientation","dir","loop"]))}}),xa=_a,za=S({__name:"TabsTrigger",props:{value:{type:[String,Number],required:!0},disabled:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(d){const r=d,{forwardRef:u}=C(),i=T(),v=_(()=>F(i.baseId,r.value)),n=_(()=>i.contentIds.value.has(r.value)?P(i.baseId,r.value):void 0),t=_(()=>r.value===i.modelValue.value);return(o,s)=>(c(),y(a(va),{"as-child":"",focusable:!o.disabled,active:t.value},{default:g(()=>[q(a(I),{id:v.value,ref:a(u),role:"tab",type:o.as==="button"?"button":void 0,as:o.as,"as-child":o.asChild,"aria-selected":t.value?"true":"false","aria-controls":n.value,"data-state":t.value?"active":"inactive",disabled:o.disabled,"data-disabled":o.disabled?"":void 0,"data-orientation":a(i).orientation.value,onMousedown:s[0]||(s[0]=ea(l=>{!o.disabled&&l.ctrlKey===!1?a(i).changeModelValue(o.value):l.preventDefault()},["left"])),onKeydown:s[1]||(s[1]=ta(l=>a(i).changeModelValue(o.value),["enter","space"])),onFocus:s[2]||(s[2]=()=>{const l=a(i).activationMode!=="manual";!t.value&&!o.disabled&&l&&a(i).changeModelValue(o.value)})},{default:g(()=>[h(o.$slots,"default")]),_:3},8,["id","type","as","as-child","aria-selected","aria-controls","data-state","disabled","data-disabled","data-orientation"])]),_:3},8,["focusable","active"]))}}),ka=za;const wa={slots:{root:"flex items-center gap-2",list:"relative flex p-1 group",indicator:"absolute transition-[translate,width] duration-200",trigger:["group relative inline-flex items-center min-w-0 data-[state=inactive]:text-muted hover:data-[state=inactive]:not-disabled:text-default font-medium rounded-md disabled:cursor-not-allowed disabled:opacity-75","transition-colors"],leadingIcon:"shrink-0",leadingAvatar:"shrink-0",leadingAvatarSize:"",label:"truncate",trailingBadge:"shrink-0",trailingBadgeSize:"sm",content:"w-full rounded-md focus-visible:outline-3"},variants:{color:{primary:{content:"outline-primary/25"},secondary:{content:"outline-secondary/25"},success:{content:"outline-success/25"},info:{content:"outline-info/25"},warning:{content:"outline-warning/25"},error:{content:"outline-error/25"},neutral:{content:"outline-inverted/25"}},variant:{pill:{list:"bg-elevated rounded-lg",trigger:["grow","in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:content-[''] in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:absolute in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:inset-0 in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:rounded-md in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:shadow-xs in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:-z-10 in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:isolate"],indicator:"rounded-md shadow-xs"},link:{list:"border-default",indicator:"rounded-full",trigger:"in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:content-[''] in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:absolute in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:rounded-full"}},orientation:{horizontal:{root:"flex-col",list:"w-full",indicator:"left-0 w-(--reka-tabs-indicator-size) translate-x-(--reka-tabs-indicator-position)",trigger:"justify-center"},vertical:{list:"flex-col",indicator:"top-0 h-(--reka-tabs-indicator-size) translate-y-(--reka-tabs-indicator-position)"}},size:{xs:{trigger:"px-2 py-1 text-xs gap-1",leadingIcon:"size-4",leadingAvatarSize:"3xs"},sm:{trigger:"px-2.5 py-1.5 text-xs gap-1.5",leadingIcon:"size-4",leadingAvatarSize:"3xs"},md:{trigger:"px-3 py-1.5 text-sm gap-1.5",leadingIcon:"size-5",leadingAvatarSize:"2xs"},lg:{trigger:"px-3 py-2 text-sm gap-2",leadingIcon:"size-5",leadingAvatarSize:"2xs"},xl:{trigger:"px-3 py-2 text-base gap-2",leadingIcon:"size-6",leadingAvatarSize:"xs"}}},compoundVariants:[{orientation:"horizontal",variant:"pill",class:{indicator:"inset-y-1"}},{orientation:"horizontal",variant:"link",class:{list:"border-b -mb-px",indicator:"-bottom-px h-px",trigger:"in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:inset-x-0 in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:-bottom-[calc(var(--spacing)+1px)] in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:h-px"}},{orientation:"vertical",variant:"pill",class:{indicator:"inset-x-1",list:"items-center",trigger:"w-full justify-center"}},{orientation:"vertical",variant:"link",class:{list:"border-s -ms-px",indicator:"-start-px w-px",trigger:"in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:inset-y-0 in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:-start-[calc(var(--spacing)+1px)] in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:w-px"}},{color:"primary",variant:"pill",class:{indicator:"bg-primary",trigger:["data-[state=active]:text-inverted outline-primary/25 focus-visible:outline-3","in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-primary"]}},{color:"secondary",variant:"pill",class:{indicator:"bg-secondary",trigger:["data-[state=active]:text-inverted outline-secondary/25 focus-visible:outline-3","in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-secondary"]}},{color:"success",variant:"pill",class:{indicator:"bg-success",trigger:["data-[state=active]:text-inverted outline-success/25 focus-visible:outline-3","in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-success"]}},{color:"info",variant:"pill",class:{indicator:"bg-info",trigger:["data-[state=active]:text-inverted outline-info/25 focus-visible:outline-3","in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-info"]}},{color:"warning",variant:"pill",class:{indicator:"bg-warning",trigger:["data-[state=active]:text-inverted outline-warning/25 focus-visible:outline-3","in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-warning"]}},{color:"error",variant:"pill",class:{indicator:"bg-error",trigger:["data-[state=active]:text-inverted outline-error/25 focus-visible:outline-3","in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-error"]}},{color:"neutral",variant:"pill",class:{indicator:"bg-inverted",trigger:["data-[state=active]:text-inverted outline-inverted/25 focus-visible:outline-3","in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-inverted"]}},{color:"primary",variant:"link",class:{indicator:"bg-primary",trigger:["data-[state=active]:text-primary outline-primary/25 focus-visible:outline-3","in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-primary"]}},{color:"secondary",variant:"link",class:{indicator:"bg-secondary",trigger:["data-[state=active]:text-secondary outline-secondary/25 focus-visible:outline-3","in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-secondary"]}},{color:"success",variant:"link",class:{indicator:"bg-success",trigger:["data-[state=active]:text-success outline-success/25 focus-visible:outline-3","in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-success"]}},{color:"info",variant:"link",class:{indicator:"bg-info",trigger:["data-[state=active]:text-info outline-info/25 focus-visible:outline-3","in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-info"]}},{color:"warning",variant:"link",class:{indicator:"bg-warning",trigger:["data-[state=active]:text-warning outline-warning/25 focus-visible:outline-3","in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-warning"]}},{color:"error",variant:"link",class:{indicator:"bg-error",trigger:["data-[state=active]:text-error outline-error/25 focus-visible:outline-3","in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-error"]}},{color:"neutral",variant:"link",class:{indicator:"bg-inverted",trigger:["data-[state=active]:text-highlighted outline-inverted/25 focus-visible:outline-3","in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-inverted"]}}],defaultVariants:{color:"primary",variant:"pill",size:"md"}},Ca={__name:"UTabs",props:{as:{type:null,required:!1},items:{type:Array,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},orientation:{type:null,required:!1,default:"horizontal"},content:{type:Boolean,required:!1,default:!0},valueKey:{type:null,required:!1,default:"value"},labelKey:{type:null,required:!1,default:"label"},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultValue:{type:[String,Number],required:!1,default:"0"},modelValue:{type:[String,Number],required:!1},activationMode:{type:String,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0}},emits:["update:modelValue"],setup(d,{expose:r,emit:u}){const i=d,v=u,n=ia(),t=sa("tabs",i),o=oa(),s=la(ra(t,"as","unmountOnHide"),v),l=_(()=>ca({extend:wa,...o.ui?.tabs||{}})({color:t.color,variant:t.variant,size:t.size,orientation:t.orientation})),p=w([]);function b(f,A){p.value[f]=A}return r({triggersRef:p}),(f,A)=>(c(),y(a(pa),V(a(s),{"model-value":a(t).modelValue,"default-value":a(t).defaultValue,orientation:a(t).orientation,"activation-mode":a(t).activationMode,"data-slot":"root",class:l.value.root({class:[a(t).ui?.root,a(t).class]})}),{default:g(()=>[q(a(xa),{"data-slot":"list",class:x(l.value.list({class:a(t).ui?.list}))},{default:g(()=>[q(a(ma),{"data-slot":"indicator",class:x(l.value.indicator({class:a(t).ui?.indicator}))},null,8,["class"]),h(f.$slots,"list-leading"),(c(!0),B($,null,M(a(t).items,(e,m)=>(c(),y(a(ka),{key:a(z)(e,a(t).valueKey)??m,ref_for:!0,ref:H=>b(m,H),value:a(z)(e,a(t).valueKey)??String(m),disabled:e.disabled,"data-slot":"trigger",class:x(l.value.trigger({class:[a(t).ui?.trigger,e.ui?.trigger]}))},{default:g(()=>[h(f.$slots,"leading",{item:e,index:m,ui:l.value},()=>[e.icon?(c(),y(na,{key:0,name:e.icon,"data-slot":"leadingIcon",class:x(l.value.leadingIcon({class:[a(t).ui?.leadingIcon,e.ui?.leadingIcon]}))},null,8,["name","class"])):e.avatar?(c(),y(da,V({key:1,size:e.ui?.leadingAvatarSize||a(t).ui?.leadingAvatarSize||l.value.leadingAvatarSize()},{ref_for:!0},e.avatar,{"data-slot":"leadingAvatar",class:l.value.leadingAvatar({class:[a(t).ui?.leadingAvatar,e.ui?.leadingAvatar]})}),null,16,["size","class"])):k("",!0)]),a(z)(e,a(t).labelKey)||n.default?(c(),B("span",{key:0,"data-slot":"label",class:x(l.value.label({class:[a(t).ui?.label,e.ui?.label]}))},[h(f.$slots,"default",{item:e,index:m},()=>[R(K(a(z)(e,a(t).labelKey)),1)])],2)):k("",!0),h(f.$slots,"trailing",{item:e,index:m,ui:l.value},()=>[e.badge||e.badge===0?(c(),y(ua,V({key:0,color:"neutral",variant:"outline",size:e.ui?.trailingBadgeSize||a(t).ui?.trailingBadgeSize||l.value.trailingBadgeSize()},{ref_for:!0},typeof e.badge=="string"||typeof e.badge=="number"?{label:e.badge}:e.badge,{"data-slot":"trailingBadge",class:l.value.trailingBadge({class:[a(t).ui?.trailingBadge,e.ui?.trailingBadge]})}),null,16,["size","class"])):k("",!0)])]),_:2},1032,["value","disabled","class"]))),128)),h(f.$slots,"list-trailing")]),_:3},8,["class"]),a(t).content?(c(!0),B($,{key:0},M(a(t).items,(e,m)=>(c(),y(a(ya),{key:a(z)(e,a(t).valueKey)??m,value:a(z)(e,a(t).valueKey)??String(m),"data-slot":"content",class:x(l.value.content({class:[a(t).ui?.content,e.ui?.content,e.class]}))},{default:g(()=>[h(f.$slots,e.slot||"content",{item:e,index:m,ui:l.value},()=>[R(K(e.content),1)])]),_:2},1032,["value","class"]))),128)):k("",!0)]),_:3},16,["model-value","default-value","orientation","activation-mode","class"]))}};export{Ca as _};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as j}from"./Hp-_W7z4.js";import{_ as F}from"./kDEwM7SQ.js";import{_ as G}from"./Db5xe__T.js";import{az as T,d as D,O as H,p as Y,u as J,q as K,C as q,c as M,g as r,b as t,e as m,f as s,h as a,k as f,B as Q,r as _,H as W,o as i,l as v,D as z,G as X,j as Z,_ as ee,M as B,v as te}from"./BzBaMPgu.js";import{_ as ae}from"./Bg8yOdSf.js";import{_ as se}from"./BTCWUyBX.js";import"./CTYlay1H.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=D({__name:"login",setup(ue){const{login:A}=H(),C=Y(),N=J(),y=K(),P=Q(),d=B({username:"",password:""}),w=_(!1),c=_(""),h=_(null),o=B({username:"",password:"",confirmPassword:"",name:""}),u=_(!1),p=_("");q(async()=>{if(P.public.demoMode){h.value=!1;return}try{const n=await $fetch("/api/auth/setup");h.value=n.needsSetup}catch{h.value=!1}});async function E(){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 A(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(()=>P.public.demoMode?[]:P.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 A(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,U=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(U,{key:0,class:"w-full max-w-md"},{default:s(()=>[a(O,{text:"Loading…"})]),_:1})):t(h)?(i(),m(U,{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:z(E,["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(U,{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:z(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};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{_ as ie}from"./DRNHuVn4.js";import{d as re,q as de,w as D,c as r,h as a,ac as ce,b as s,f as d,F as y,e as v,v as R,r as k,o as l,g as i,G as ue,x as me,j as pe,k as c,_ as fe,t as p,l as _,z as A,m as _e,i as ge,M as ye,B as ve}from"./BzBaMPgu.js";import{_ as he}from"./Cmuwgbf4.js";import{_ as ke}from"./qeqzb80l.js";import{_ as xe}from"./D_j436ND.js";import{_ as be}from"./Bg8yOdSf.js";import{_ as Se}from"./CnRNwiuE.js";import{_ as we}from"./BSKLNgre.js";import{_ as Te}from"./Db5xe__T.js";import{u as F}from"./CDEmotIt.js";import"./CdM2qNYM.js";import"./BcHU1KNK.js";import"./kDEwM7SQ.js";import"./CTYlay1H.js";import"./DDho3MJD.js";const Pe={class:"space-y-6"},Ue={class:"space-y-3"},Ce={key:0,class:"flex items-center gap-2 text-sm text-success-600 dark:text-success-400"},Ie={key:1,class:"flex items-center gap-2 text-sm text-warning-600 dark:text-warning-400"},Me={key:2,class:"grid grid-cols-2 gap-2 text-sm"},$e={class:"font-mono"},Ve={class:"font-mono"},Ee={key:3,class:"text-sm text-muted space-y-1"},ze={class:"flex items-center gap-2 w-full"},Ne={key:0,class:"mb-4 p-4 rounded-lg border border-primary/30 bg-primary/5 space-y-3"},De={class:"grid grid-cols-2 gap-3"},Re={class:"flex justify-end gap-2"},Ae={key:1,class:"text-sm text-muted py-4 text-center"},Fe={class:"space-y-2"},We={class:"flex-1 min-w-0"},Le={class:"font-medium text-sm flex items-center gap-1.5"},Oe={class:"text-xs text-muted"},Be={key:3,class:"ml-1 text-primary text-xs"},je={class:"flex items-center gap-1"},He={key:0,class:"text-sm text-muted py-4 text-center"},qe={class:"space-y-2"},Ye={class:"flex-1 min-w-0 space-y-0.5"},Ge={class:"font-medium text-sm"},Je={class:"text-xs text-muted flex flex-wrap gap-x-3"},Qe={key:0},Xe={key:1},Ke={key:2,class:"text-warning-500"},Ze={class:"flex flex-wrap gap-1 mt-1"},et={class:"flex items-center gap-1"},yt=re({__name:"notifications",async setup(tt){let f,x;const u=de(),j=ve(),I=R(()=>j.public.authEnabled),H=["PIWI_SMTP_HOST","PIWI_SMTP_PORT","PIWI_SMTP_USER","PIWI_SMTP_PASS","PIWI_SMTP_FROM","PIWI_SMTP_FROM_NAME","PIWI_SMTP_SECURE"],{data:m}=([f,x]=D(()=>F("/api/settings/smtp","$v5NL0FLSog")),f=await f,x(),f),h=k(""),M=k(!1);async function q(){if(h.value){M.value=!0;try{const o=await $fetch("/api/settings/smtp/test",{method:"POST",body:{to:h.value}});o.success?u.add({title:"Test email sent",description:`Check ${h.value}`,color:"success"}):u.add({title:"Send failed",description:o.error||"Unknown error",color:"error"})}catch(o){u.add({title:"Send failed",description:String(o?.message??o),color:"error"})}finally{M.value=!1}}}const{data:Y,refresh:W}=I.value?([f,x]=D(()=>F("/api/channels","$rT8YNpmgfl")),f=await f,x(),f):{data:k(null),refresh:()=>{}},$=R(()=>Y.value?.channels??[]),b=k(!1),n=ye({name:"",type:"email",address:"",webhookUrl:"",url:"",secret:"",global:!1}),V=k(!1),E=k(null),G=[{label:"Email",value:"email"},{label:"Slack webhook",value:"slack"},{label:"Webhook",value:"webhook"}];async function J(){V.value=!0;try{const o={};n.type==="email"?o.address=n.address:n.type==="slack"?o.webhookUrl=n.webhookUrl:n.type==="webhook"&&(o.url=n.url,n.secret&&(o.secret=n.secret)),await $fetch("/api/channels",{method:"POST",body:{name:n.name,type:n.type,config:o,global:n.global}}),b.value=!1,Object.assign(n,{name:"",type:"email",address:"",webhookUrl:"",url:"",secret:"",global:!1}),await W(),u.add({title:"Channel created",color:"success"})}catch(o){u.add({title:"Failed to create channel",description:String(o?.message??o),color:"error"})}finally{V.value=!1}}async function Q(o){try{await $fetch(`/api/channels/${o}`,{method:"DELETE"}),await W(),u.add({title:"Channel deleted",color:"success"})}catch(e){u.add({title:"Failed to delete channel",description:String(e?.message??e),color:"error"})}}async function X(o){E.value=o;try{const e=await $fetch(`/api/channels/${o}/test`,{method:"POST"});e.success?u.add({title:"Test notification sent",color:"success"}):u.add({title:"Test failed",description:e.error,color:"error"})}catch(e){u.add({title:"Test failed",description:String(e?.message??e),color:"error"})}finally{E.value=null}}const{data:K,refresh:L}=I.value?([f,x]=D(()=>F("/api/subscriptions","$J_5QzL_eLh")),f=await f,x(),f):{data:k(null),refresh:()=>{}},z=R(()=>K.value?.subscriptions??[]);async function Z(o){try{await $fetch(`/api/subscriptions/${o}`,{method:"DELETE"}),await L(),u.add({title:"Subscription removed",color:"success"})}catch(e){u.add({title:"Failed to remove subscription",description:String(e?.message??e),color:"error"})}}async function ee(o){const e=o.mutedUntil&&new Date(o.mutedUntil)>new Date;try{await $fetch(`/api/subscriptions/${o.id}`,{method:"PATCH",body:{mutedUntil:e?null:new Date(Date.now()+10080*60*1e3).toISOString()}}),await L(),u.add({title:e?"Unmuted":"Muted for 7 days",color:"success"})}catch(U){u.add({title:"Failed to update subscription",description:String(U?.message??U),color:"error"})}}function P(o){return o.mutedUntil&&new Date(o.mutedUntil)>new Date}function O(o){return o==="personal_email"?"i-lucide-user-round":o==="email"?"i-lucide-mail":o==="slack"?"i-lucide-slack":"i-lucide-webhook"}function te(o){return o.replace(/\./g," › ")}return(o,e)=>{const U=ie,C=fe,se=he,oe=ke,S=ue,g=pe,N=xe,w=be,le=Se,B=_e,ne=we,ae=Te;return l(),r("div",Pe,[a(N,{icon:"i-lucide-mail",title:"SMTP email delivery",help:"settings.smtp"},ce({subtitle:d(()=>[e[9]||(e[9]=c(" Configure SMTP via environment variables. The connection cannot be changed here. ",-1))]),actions:d(()=>[s(m)?.configured?(l(),v(U,{key:0,"env-vars":H,size:"md"})):_("",!0)]),default:d(()=>[i("div",Ue,[s(m)?.configured?(l(),r("div",Ce,[a(C,{name:"i-lucide-circle-check-big",class:"size-4"}),e[10]||(e[10]=c(" Configured ",-1))])):(l(),r("div",Ie,[a(C,{name:"i-lucide-circle-alert",class:"size-4"}),e[11]||(e[11]=c(" Not configured ",-1))])),s(m)?.configured?(l(),r("div",Me,[e[12]||(e[12]=i("div",{class:"text-muted"},"Host",-1)),i("div",$e,p(s(m)?.host)+":"+p(s(m)?.port),1),e[13]||(e[13]=i("div",{class:"text-muted"},"From",-1)),i("div",null,p(s(m)?.fromName?`${s(m).fromName} <${s(m).from}>`:s(m)?.from),1),e[14]||(e[14]=i("div",{class:"text-muted"},"User",-1)),i("div",Ve,p(s(m)?.user),1),e[15]||(e[15]=i("div",{class:"text-muted"},"TLS",-1)),i("div",null,p(s(m)?.secure?"Yes (port 465)":"STARTTLS / plain"),1)])):_("",!0),s(m)?.configured?_("",!0):(l(),r("div",Ee,[e[16]||(e[16]=i("p",null,"Set these environment variables to enable email notifications:",-1)),a(se,{code:`PIWI_SMTP_HOST=smtp.example.com
|
|
2
|
+
PIWI_SMTP_PORT=465
|
|
3
|
+
PIWI_SMTP_USER=user@example.com
|
|
4
|
+
PIWI_SMTP_PASS=secret
|
|
5
|
+
PIWI_SMTP_FROM=noreply@example.com
|
|
6
|
+
PIWI_SMTP_FROM_NAME=Piwi Dashboard`,lang:"bash"})]))])]),_:2},[s(m)?.configured?{name:"footer",fn:d(()=>[i("div",ze,[a(oe,{topic:"notifications.test-email"}),a(S,{modelValue:s(h),"onUpdate:modelValue":e[0]||(e[0]=t=>me(h)?h.value=t:null),type:"email",placeholder:"Send test to email address…",class:"flex-1"},null,8,["modelValue"]),a(g,{color:"neutral",variant:"soft",icon:"i-lucide-send",loading:s(M),disabled:!s(h),onClick:q},{default:d(()=>[...e[17]||(e[17]=[c(" Send test ",-1)])]),_:1},8,["loading","disabled"])])]),key:"0"}:void 0]),1024),s(I)?(l(),r(y,{key:0},[a(N,{icon:"i-lucide-radio",title:"Notification channels",count:s($).length,help:"notifications.channels"},{actions:d(()=>[a(g,{size:"sm",icon:"i-lucide-plus",onClick:e[1]||(e[1]=t=>b.value=!s(b))},{default:d(()=>[...e[18]||(e[18]=[c(" Add channel ",-1)])]),_:1})]),default:d(()=>[s(b)?(l(),r("div",Ne,[e[21]||(e[21]=i("h4",{class:"font-medium text-sm"},"New channel",-1)),i("div",De,[a(w,{label:"Name"},{default:d(()=>[a(S,{modelValue:s(n).name,"onUpdate:modelValue":e[2]||(e[2]=t=>s(n).name=t),placeholder:"e.g. My email",class:"w-full"},null,8,["modelValue"])]),_:1}),a(w,{label:"Type"},{default:d(()=>[a(le,{modelValue:s(n).type,"onUpdate:modelValue":e[3]||(e[3]=t=>s(n).type=t),items:G,class:"w-full"},null,8,["modelValue"])]),_:1})]),s(n).type==="email"?(l(),v(w,{key:0,label:"Email address"},{default:d(()=>[a(S,{modelValue:s(n).address,"onUpdate:modelValue":e[4]||(e[4]=t=>s(n).address=t),type:"email",placeholder:"you@example.com",class:"w-full"},null,8,["modelValue"])]),_:1})):s(n).type==="slack"?(l(),v(w,{key:1,label:"Slack webhook URL"},{default:d(()=>[a(S,{modelValue:s(n).webhookUrl,"onUpdate:modelValue":e[5]||(e[5]=t=>s(n).webhookUrl=t),placeholder:"https://hooks.slack.com/…",class:"w-full"},null,8,["modelValue"])]),_:1})):s(n).type==="webhook"?(l(),r(y,{key:2},[a(w,{label:"Endpoint URL"},{default:d(()=>[a(S,{modelValue:s(n).url,"onUpdate:modelValue":e[6]||(e[6]=t=>s(n).url=t),placeholder:"https://your-server.com/webhook",class:"w-full"},null,8,["modelValue"])]),_:1}),a(w,{label:"Secret (optional)",description:"Used to sign requests with X-Piwi-Signature header"},{default:d(()=>[a(S,{modelValue:s(n).secret,"onUpdate:modelValue":e[7]||(e[7]=t=>s(n).secret=t),type:"password",placeholder:"Shared secret",class:"w-full"},null,8,["modelValue"])]),_:1})],64)):_("",!0),i("div",Re,[a(g,{color:"neutral",variant:"ghost",size:"sm",onClick:e[8]||(e[8]=t=>b.value=!1)},{default:d(()=>[...e[19]||(e[19]=[c("Cancel",-1)])]),_:1}),a(g,{color:"primary",size:"sm",loading:s(V),disabled:!s(n).name,onClick:J},{default:d(()=>[...e[20]||(e[20]=[c(" Save channel ",-1)])]),_:1},8,["loading","disabled"])])])):_("",!0),s($).length===0&&!s(b)?(l(),r("div",Ae," No channels yet. Add one to start receiving notifications. ")):_("",!0),i("div",Fe,[(l(!0),r(y,null,A(s($),t=>(l(),r("div",{key:t.id,class:"flex items-center gap-3 rounded-lg border border-default px-4 py-3"},[a(C,{name:O(t.type),class:"size-5 text-muted shrink-0"},null,8,["name"]),i("div",We,[i("div",Le,[c(p(t.name)+" ",1),t.type==="personal_email"?(l(),v(B,{key:0,size:"xs",variant:"soft",color:"neutral"},{default:d(()=>[...e[22]||(e[22]=[c("auto",-1)])]),_:1})):_("",!0)]),i("div",Oe,[t.type==="personal_email"||t.type==="email"?(l(),r(y,{key:0},[c(p(t.config.address),1)],64)):t.type==="slack"?(l(),r(y,{key:1},[c("Slack webhook")],64)):(l(),r(y,{key:2},[c(p(t.config.url),1)],64)),t.userId===null?(l(),r("span",Be,"(global)")):_("",!0)])]),i("div",je,[a(g,{icon:"i-lucide-send",color:"neutral",variant:"ghost",size:"sm",title:"Send test notification",loading:s(E)===t.id,onClick:T=>X(t.id)},null,8,["loading","onClick"]),t.type==="personal_email"?(l(),v(ne,{key:0,text:"Remove your email in Account settings to disconnect"},{default:d(()=>[a(g,{icon:"i-lucide-trash-2",color:"neutral",variant:"ghost",size:"sm",disabled:""})]),_:1})):(l(),v(g,{key:1,icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"sm",title:"Delete channel",onClick:T=>Q(t.id)},null,8,["onClick"]))])]))),128))])]),_:1},8,["count"]),a(N,{icon:"i-lucide-bell",title:"My subscriptions",count:s(z).length,help:"notifications.subscriptions"},{default:d(()=>[s(z).length===0?(l(),r("div",He,[...e[23]||(e[23]=[c(" No subscriptions yet. Use the ",-1),i("strong",null,"Subscribe",-1),c(" bell on a project page to get started. ",-1)])])):_("",!0),i("div",qe,[(l(!0),r(y,null,A(s(z),t=>(l(),r("div",{key:t.id,class:ge(["flex items-center gap-3 rounded-lg border border-default px-4 py-3",P(t)?"opacity-60":""])},[a(C,{name:O(t.channel.type),class:"size-5 text-muted shrink-0"},null,8,["name"]),i("div",Ye,[i("div",Ge,p(t.channel.name),1),i("div",Je,[t.projectId?(l(),r("span",Qe,"Project #"+p(t.projectId),1)):(l(),r("span",Xe,"All projects")),i("span",null,p(t.mode),1),P(t)?(l(),r("span",Ke,"Muted until "+p(new Date(t.mutedUntil).toLocaleDateString()),1)):_("",!0)]),i("div",Ze,[(l(!0),r(y,null,A(t.events??[],T=>(l(),v(B,{key:T,size:"xs",variant:"soft",color:"neutral"},{default:d(()=>[c(p(te(T)),1)]),_:2},1024))),128))])]),i("div",et,[a(g,{icon:P(t)?"i-lucide-bell":"i-lucide-bell-off",color:"neutral",variant:"ghost",size:"sm",title:P(t)?"Unmute":"Mute for 7 days",onClick:T=>ee(t)},null,8,["icon","title","onClick"]),a(g,{icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"sm",title:"Remove subscription",onClick:T=>Z(t.id)},null,8,["onClick"])])],2))),128))])]),_:1},8,["count"])],64)):(l(),v(ae,{key:1,color:"info",icon:"i-lucide-info",title:"Authentication required",description:"Channels and subscriptions require authentication (PIWI_AUTH_ENABLED=true)."}))])}}});export{yt as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as B}from"./
|
|
1
|
+
import{a as B}from"./D5Mhpp98.js";import{d as $,o,c as w,h as m,ac as x,z as N,f as d,V as _,a0 as S,a1 as V,g as u,b as s,e as p,j as y,l as h,k as z,t as U,F as C,v as c,ar as P,_ as j}from"./BzBaMPgu.js";const D={class:"flex min-w-0 items-center gap-1 sm:hidden"},F={class:"truncate text-sm font-medium"},I=$({__name:"BreadcrumbNav",props:{items:{}},setup(t){const n=t,a=c(()=>n.items[n.items.length-1]),i=c(()=>n.items.slice(0,-1).map(e=>({label:typeof e.label=="string"?e.label:String(e.label??""),icon:e.icon,to:e.to}))),r=c(()=>i.value.length>0);return(e,q)=>{const f=B,g=y,b=P,v=j;return o(),w(C,null,[m(f,{items:t.items,class:"hidden min-w-0 sm:flex"},x({_:2},[N(e.$slots,(A,l)=>({name:l,fn:d(k=>[_(e.$slots,l,S(V(k??{})))])}))]),1032,["items"]),u("div",D,[s(r)?(o(),p(b,{key:0,items:s(i),content:{align:"start",collisionPadding:12}},{default:d(()=>[m(g,{icon:t.items[0]?.icon||"i-lucide-ellipsis","trailing-icon":"i-lucide-chevron-down",color:"neutral",variant:"ghost",size:"sm",square:"","aria-label":"Show navigation path",class:"shrink-0"},null,8,["icon"])]),_:1},8,["items"])):h("",!0),s(r)?(o(),p(v,{key:1,name:"i-lucide-chevron-right",class:"size-4 shrink-0 text-muted"})):h("",!0),u("span",F,[_(e.$slots,s(a)?.slot||"current",{item:s(a)},()=>[z(U(s(a)?.label),1)])])])],64)}}}),M=Object.assign(I,{__name:"BreadcrumbNav"});export{M as _};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as k}from"./
|
|
1
|
+
import{_ as k}from"./Db5xe__T.js";import{d as _,e as r,f as l,b,o as n,c as a,t as u,k as v,F as g,z as V,v as f,g as y,l as h,ac as x,V as p}from"./BzBaMPgu.js";import{_ as B}from"./qeqzb80l.js";import{_ as $}from"./DRNHuVn4.js";import{_ as E}from"./Bg8yOdSf.js";import{h as M}from"./BcHU1KNK.js";const F={key:0},S={key:1},q={class:"font-mono text-xs"},A={key:0},C={key:2},N=_({__name:"EnvManagedAlert",props:{envVars:{},title:{},description:{}},setup(e){const t=e,c=f(()=>t.title??"Managed by environment variables");return(o,s)=>{const d=k;return n(),r(d,{icon:"i-lucide-lock",color:"neutral",variant:"subtle",title:b(c)},{description:l(()=>[e.description?(n(),a("span",F,u(e.description),1)):e.envVars?.length?(n(),a("span",S,[s[0]||(s[0]=v(" These settings are pinned by ",-1)),(n(!0),a(g,null,V(e.envVars,(i,m)=>(n(),a(g,{key:i},[y("code",q,u(i),1),m<e.envVars.length-1?(n(),a("span",A,", ")):h("",!0)],64))),128)),s[1]||(s[1]=v(" and cannot be changed here. Edit the environment and restart to change them. ",-1))])):(n(),a("span",C," These settings are pinned by environment variables and cannot be changed here. "))]),_:1},8,["title"])}}}),L=Object.assign(N,{__name:"EnvManagedAlert"}),T={class:"inline-flex items-center gap-1"},j=_({__name:"SettingsField",props:{label:{},help:{},envVars:{},envManaged:{type:Boolean},description:{},hint:{},required:{type:Boolean},name:{},disabled:{type:Boolean}},setup(e){const t=e,c=f(()=>{if(t.envVars)return t.envVars;if(t.help)return M(t.help)});return(o,s)=>{const d=B,i=$,m=E;return n(),r(m,{label:e.label,description:e.description,hint:e.hint,required:e.required,name:e.name,disabled:e.disabled||e.envManaged},x({label:l(()=>[y("span",T,[v(u(e.label)+" ",1),e.help?(n(),r(d,{key:0,topic:e.help},null,8,["topic"])):h("",!0),e.envManaged?(n(),r(i,{key:1,"env-vars":b(c)},null,8,["env-vars"])):h("",!0)])]),default:l(()=>[p(o.$slots,"default")]),_:2},[o.$slots.trailing?{name:"trailing",fn:l(()=>[p(o.$slots,"trailing")]),key:"0"}:void 0]),1032,["label","description","hint","required","name","disabled"])}}}),G=Object.assign(j,{__name:"SettingsField"});export{L as _,G as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{B as o}from"./BzBaMPgu.js";function n(){const t=o();return String(t.public.desktop)==="true"}export{n as u};
|