@piwitests/server 0.26.0 → 0.26.1
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/{BdQ7kfxJ.js → 1QWBzxLM.js} +4 -4
- package/.output/public/_nuxt/{CY1UsEbI.js → 4hW9LHwA.js} +1 -1
- package/.output/public/_nuxt/96uxfdYT.js +1 -0
- package/.output/public/_nuxt/{HGYIpJtg.js → AbnDY6Zr.js} +1 -1
- package/.output/public/_nuxt/{CZ6WR7uw.js → B-1zt4pp.js} +1 -1
- package/.output/public/_nuxt/{Sx5-c-bZ.js → B1iYmAt_.js} +1 -1
- package/.output/public/_nuxt/{CbzgEkmW.js → B2bxEmbR.js} +1 -1
- package/.output/public/_nuxt/B3hAvaCe.js +4 -0
- package/.output/public/_nuxt/{CyWOerIG.js → B4lvHjBe.js} +1 -1
- package/.output/public/_nuxt/B5S7BkC3.js +1 -0
- package/.output/public/_nuxt/{Bb_1uAHn.js → B6j5Ornu.js} +1 -1
- package/.output/public/_nuxt/{CrsaY0R_.js → B82vqOZe.js} +1 -1
- package/.output/public/_nuxt/{CTFUlsXp.js → B9oXlGro.js} +1 -1
- package/.output/public/_nuxt/{CsJ9Ce4U.js → BABCH5kE.js} +1 -1
- package/.output/public/_nuxt/{Gn1Ns00e.js → BF5qB58w.js} +1 -1
- package/.output/public/_nuxt/{CsGsLxHg.js → BFLa9ZEP.js} +1 -1
- package/.output/public/_nuxt/BIlohx1E.js +1 -0
- package/.output/public/_nuxt/{B6djubIK.js → BM5C-Oec.js} +1 -1
- package/.output/public/_nuxt/{CrZhoZuI.js → BOA-I6S9.js} +1 -1
- package/.output/public/_nuxt/{Bp2zrrkV.js → BQUhoGCh.js} +1 -1
- package/.output/public/_nuxt/{DUC3QnqW.js → BQYLGX9o.js} +1 -1
- package/.output/public/_nuxt/{CUjzhXN1.js → BRMeEHXd.js} +1 -1
- package/.output/public/_nuxt/{Cf_a8ynB.js → BRtaKOKv.js} +2 -2
- package/.output/public/_nuxt/{B7uPoZ7T.js → BS91Og__.js} +1 -1
- package/.output/public/_nuxt/{DKgbchez.js → BTGAvMoT.js} +1 -1
- package/.output/public/_nuxt/{BIamiwb7.js → BaLX92Wz.js} +1 -1
- package/.output/public/_nuxt/{LWIyaZKe.js → Bc6Zr-Xn.js} +1 -1
- package/.output/public/_nuxt/{R7AVOWi_.js → BceMEnJt.js} +1 -1
- package/.output/public/_nuxt/{Q2oJNyXL.js → BeCAVtCK.js} +1 -1
- package/.output/public/_nuxt/{D_SD71Qf.js → Bf119e7x.js} +1 -1
- package/.output/public/_nuxt/BfRcdz11.js +9 -0
- package/.output/public/_nuxt/{CxwnFFD0.js → Bl0xzETD.js} +1 -1
- package/.output/public/_nuxt/{C_eXufkv.js → BnUQ3i5l.js} +1 -1
- package/.output/public/_nuxt/{rPG7kzfL.js → Bp1WeQ0_.js} +1 -1
- package/.output/public/_nuxt/{BL8cYWsR.js → Bp31ZRcA.js} +1 -1
- package/.output/public/_nuxt/{Drh1_ASq.js → BrxUH8qL.js} +1 -1
- package/.output/public/_nuxt/{D72Ce8Ff.js → BsdfEbVC.js} +1 -1
- package/.output/public/_nuxt/BtGI4ZbP.js +1 -0
- package/.output/public/_nuxt/{BV8EzO8q.js → BuMX-4RF.js} +1 -1
- package/.output/public/_nuxt/{DPPhFZOr.js → BuXJR5tn.js} +1 -1
- package/.output/public/_nuxt/{Bh2WA4IJ.js → Bx_lfKHl.js} +1 -1
- package/.output/public/_nuxt/{vcSKeWsW.js → C4UKyPQn.js} +1 -1
- package/.output/public/_nuxt/{IoE3eJ9F.js → C9XCTbtQ.js} +1 -1
- package/.output/public/_nuxt/{BilJoEne.js → CEPU6VkU.js} +1 -1
- package/.output/public/_nuxt/CHz7LJIX.js +1 -0
- package/.output/public/_nuxt/{BPhGDGAR.js → CMhd8IBr.js} +1 -1
- package/.output/public/_nuxt/{C5X_N4R7.js → CN1M6i4K.js} +33 -33
- package/.output/public/_nuxt/CQLkowA3.js +1 -0
- package/.output/public/_nuxt/{DTtizz85.js → CU_2YLhT.js} +1 -1
- package/.output/public/_nuxt/{CMVTTE_g.js → CXkXHtcx.js} +1 -1
- package/.output/public/_nuxt/{igDJCTgt.js → CZeKW-zP.js} +1 -1
- package/.output/public/_nuxt/{9oKY4Zb7.js → CapSEET7.js} +1 -1
- package/.output/public/_nuxt/{j2eGYaRa.js → CeExxGSu.js} +1 -1
- package/.output/public/_nuxt/{CEgRB8H9.js → CfwpqSe7.js} +1 -1
- package/.output/public/_nuxt/{CFKbXp6V.js → ChOtLYkd.js} +1 -1
- package/.output/public/_nuxt/ChuJzPWz.js +1 -0
- package/.output/public/_nuxt/{Bo73sAu8.js → CiCUZGFZ.js} +1 -1
- package/.output/public/_nuxt/{C6R4tyud.js → CkL_oDa8.js} +1 -1
- package/.output/public/_nuxt/{DtGJeysS.js → CkhOMiiO.js} +1 -1
- package/.output/public/_nuxt/ClmHMP65.js +2 -0
- package/.output/public/_nuxt/{BtcDY0Du.js → Cnm0d_7S.js} +1 -1
- package/.output/public/_nuxt/{CK2AMqz_.js → CtQMagSz.js} +1 -1
- package/.output/public/_nuxt/{B1KjIR-q.js → Ctnn3S3-.js} +1 -1
- package/.output/public/_nuxt/{DCeZxpxe.js → CywiLuOD.js} +4 -4
- package/.output/public/_nuxt/{oA84LLqO.js → CzRkZLB4.js} +1 -1
- package/.output/public/_nuxt/CzyCEdYP.js +1 -0
- package/.output/public/_nuxt/{D56yp7m9.js → D-F0Rhjj.js} +1 -1
- package/.output/public/_nuxt/D4mPjHHR.js +2 -0
- package/.output/public/_nuxt/{BsGvSoPC.js → D4v7lLm3.js} +1 -1
- package/.output/public/_nuxt/{CxRTKV-K.js → D6B0WKO0.js} +1 -1
- package/.output/public/_nuxt/{jv8U_Tup.js → DAg6jtav.js} +1 -1
- package/.output/public/_nuxt/DBXXb0w8.js +1 -0
- package/.output/public/_nuxt/{ChlP20A5.js → DHN2t5Vt.js} +1 -1
- package/.output/public/_nuxt/{B8tezsWe.js → DJKHXfNS.js} +1 -1
- package/.output/public/_nuxt/{CFg5qdS0.js → DMqAUHFN.js} +1 -1
- package/.output/public/_nuxt/{C9A3sPDo.js → DURme_kn.js} +1 -1
- package/.output/public/_nuxt/{C2hIM5f9.js → DVo_e_uj.js} +1 -1
- package/.output/public/_nuxt/{DKhqIou2.js → DXh8q5KY.js} +1 -1
- package/.output/public/_nuxt/{CZXeJs2k.js → DXz1Kb4-.js} +1 -1
- package/.output/public/_nuxt/{CPrVhXJk.js → DYdwHaco.js} +1 -1
- package/.output/public/_nuxt/{WZXZeGYt.js → D_ZAGxCQ.js} +1 -1
- package/.output/public/_nuxt/{D5SN7rPK.js → D_dhjJvR.js} +1 -1
- package/.output/public/_nuxt/{DR1jFptD.js → DamZHy5M.js} +1 -1
- package/.output/public/_nuxt/{xKX9IHe3.js → DbtjJCra.js} +1 -1
- package/.output/public/_nuxt/{r6zkA1SE.js → DcOlL-oi.js} +1 -1
- package/.output/public/_nuxt/{CxspCKpR.js → DeQ9sIia.js} +1 -1
- package/.output/public/_nuxt/{BkHJoHpc.js → DjX1bLZD.js} +1 -1
- package/.output/public/_nuxt/{Be0bwdsi.js → Dly7wCCl.js} +1 -1
- package/.output/public/_nuxt/DmeogbGY.js +1 -0
- package/.output/public/_nuxt/{CfV2N201.js → Dn_-RkxP.js} +1 -1
- package/.output/public/_nuxt/{dg6uXTyR.js → DoDo3VF2.js} +1 -1
- package/.output/public/_nuxt/{BMlKQMjM.js → DoVHTl-K.js} +1 -1
- package/.output/public/_nuxt/DpM8IgHL.js +1 -0
- package/.output/public/_nuxt/{B4NjylBn.js → Dpwj_1H5.js} +1 -1
- package/.output/public/_nuxt/{DzJa19LG.js → DvSHenmZ.js} +1 -1
- package/.output/public/_nuxt/DvYU87_a.js +1 -0
- package/.output/public/_nuxt/{G2J1dVVb.js → Dx41arC8.js} +1 -1
- package/.output/public/_nuxt/DxBrlj7b.js +1 -0
- package/.output/public/_nuxt/{r-HZNbp3.js → JNpNdV-o.js} +1 -1
- package/.output/public/_nuxt/Lz9MmwKY.js +1 -0
- package/.output/public/_nuxt/OMI0cmZ0.js +1 -0
- package/.output/public/_nuxt/{CUWrUpTl.js → UAmyrRCI.js} +1 -1
- package/.output/public/_nuxt/{EJllK0wm.js → VBTxfbqU.js} +1 -1
- package/.output/public/_nuxt/VbedPPFH.js +1 -0
- package/.output/public/_nuxt/{BY9A1aOT.js → _okd7MfH.js} +1 -1
- package/.output/public/_nuxt/{BOn5q0rT.js → bmAf49LT.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/0174ebd8-8fa5-4698-aa79-7a8dd2f6527f.json +1 -0
- package/.output/public/_nuxt/{D0XWJGhG.js → e-GZmCeP.js} +1 -1
- package/.output/public/_nuxt/entry.Dv52uAyn.css +1 -0
- package/.output/public/_nuxt/{DVIIj6Vv.js → f9TbT3AM.js} +1 -1
- package/.output/public/_nuxt/gdlHFfN6.js +1 -0
- package/.output/public/_nuxt/{BTG_PmM5.js → huBoAZeM.js} +1 -1
- package/.output/public/_nuxt/{DadksxQ9.js → mYw4b7uY.js} +1 -1
- package/.output/public/_nuxt/{B0eHOux4.js → mi7tdFxN.js} +1 -1
- package/.output/public/_nuxt/sFe4Zr5j.js +1 -0
- package/.output/public/_nuxt/{CLrLFf3s.js → uspGXbik.js} +1 -1
- package/.output/public/_nuxt/{DLN-CQXF.js → w7KxwWEv.js} +1 -1
- package/.output/public/_nuxt/{Bp55g9gr.js → wa4k1aDz.js} +1 -1
- package/.output/public/_nuxt/{C2yZcDch.js → xuB8n0QL.js} +1 -1
- package/.output/public/favicon.ico +0 -0
- package/.output/public/trace-viewer/assets/codeMirrorModule-LEHpjmcn.js +32 -0
- package/.output/public/trace-viewer/assets/defaultSettingsView-BNmKHKpQ.js +264 -0
- package/.output/public/trace-viewer/assets/urlMatch-BYQrIQwR.js +1 -0
- package/.output/public/trace-viewer/assets/xtermModule-CsJ4vdCR.js +9 -0
- package/.output/public/trace-viewer/codeMirrorModule.DYBRYzYX.css +1 -0
- package/.output/public/trace-viewer/codicon.DCmgc-ay.ttf +0 -0
- package/.output/public/trace-viewer/defaultSettingsView.CjdS-WJx.css +1 -0
- package/.output/public/trace-viewer/index.CzXZzn5A.css +1 -0
- package/.output/public/trace-viewer/index.DMMX1gXU.js +2 -0
- package/.output/public/trace-viewer/index.html +44 -0
- package/.output/public/trace-viewer/manifest.webmanifest +16 -0
- package/.output/public/trace-viewer/playwright-logo.svg +9 -0
- package/.output/public/trace-viewer/snapshot.html +10 -0
- package/.output/public/trace-viewer/snapshot.v8KI4P3m.js +2 -0
- package/.output/public/trace-viewer/sw.bundle.js +5 -0
- package/.output/public/trace-viewer/uiMode.BZQ54Kgt.css +1 -0
- package/.output/public/trace-viewer/uiMode.Ut8wwJNp.js +6 -0
- package/.output/public/trace-viewer/uiMode.html +18 -0
- package/.output/public/trace-viewer/xtermModule.DYP7pi_n.css +32 -0
- package/.output/server/chunks/_/users.mjs +1 -1
- package/.output/server/chunks/build/{BreadcrumbNav-DBnGj5Jq.mjs → BreadcrumbNav-Bg4QGX0k.mjs} +11 -4
- package/.output/server/chunks/build/BreadcrumbNav-Bg4QGX0k.mjs.map +1 -0
- package/.output/server/chunks/build/{BrowserBadge-vFb1ERG_.mjs → BrowserBadge-yMgLTBUu.mjs} +17 -9
- package/.output/server/chunks/build/BrowserBadge-yMgLTBUu.mjs.map +1 -0
- package/.output/server/chunks/build/{ChartMarkerLines-BXqUpUcs.mjs → ChartMarkerLines-D0cTRlxF.mjs} +3 -3
- package/.output/server/chunks/build/ChartMarkerLines-D0cTRlxF.mjs.map +1 -0
- package/.output/server/chunks/build/{ChartTooltip-DoF6Smyc.mjs → ChartTooltip-B2t6VYYH.mjs} +3 -3
- package/.output/server/chunks/build/ChartTooltip-B2t6VYYH.mjs.map +1 -0
- package/.output/server/chunks/build/Checkbox-ChSYhiUz.mjs +1 -1
- package/.output/server/chunks/build/ClientDate-U97Z1p6-.mjs +32 -0
- package/.output/server/chunks/build/ClientDate-U97Z1p6-.mjs.map +1 -0
- package/.output/server/chunks/build/{CodeBlock-CmvKHaq8.mjs → CodeBlock-DuWhmcI2.mjs} +3 -3
- package/.output/server/chunks/build/CodeBlock-DuWhmcI2.mjs.map +1 -0
- package/.output/server/chunks/build/DashboardSidebarToggle-a5KYecZ0.mjs +1 -1
- package/.output/server/chunks/build/DashboardToolbar-BZoGc0ri.mjs +72 -0
- package/.output/server/chunks/build/DashboardToolbar-BZoGc0ri.mjs.map +1 -0
- package/.output/server/chunks/build/{DataLocationCard-ChV02QJj.mjs → DataLocationCard-DCdhQBIY.mjs} +2 -2
- package/.output/server/chunks/build/DataLocationCard-DCdhQBIY.mjs.map +1 -0
- package/.output/server/chunks/build/{DesktopRunLocallyButton-BfmbZpiL.mjs → DesktopRunLocallyButton-ChHg3GqK.mjs} +5 -5
- package/.output/server/chunks/build/{DesktopRunLocallyButton-BfmbZpiL.mjs.map → DesktopRunLocallyButton-ChHg3GqK.mjs.map} +1 -1
- package/.output/server/chunks/build/{DiagnosisPanel-C_ndadzP.mjs → DiagnosisPanel-DE-r2UV8.mjs} +5 -5
- package/.output/server/chunks/build/DiagnosisPanel-DE-r2UV8.mjs.map +1 -0
- package/.output/server/chunks/build/{DiagnosisResult-GAjo6Lt3.mjs → DiagnosisResult-CrGK--xh.mjs} +16 -10
- package/.output/server/chunks/build/DiagnosisResult-CrGK--xh.mjs.map +1 -0
- package/.output/server/chunks/build/{DurationValue-CObiBDnH.mjs → DurationValue-Dn06XQk3.mjs} +2 -2
- package/.output/server/chunks/build/DurationValue-Dn06XQk3.mjs.map +1 -0
- package/.output/server/chunks/build/EntityLinks-BcpvMt_V.mjs +1 -1
- package/.output/server/chunks/build/EnvManagedBadge-_8GfjWjE.mjs +1 -1
- package/.output/server/chunks/build/{FeatureUnavailable-Buoyoqx1.mjs → FeatureUnavailable-IaBjVCqQ.mjs} +2 -2
- package/.output/server/chunks/build/FeatureUnavailable-IaBjVCqQ.mjs.map +1 -0
- package/.output/server/chunks/build/{GetStartedWizard-tL3U_qM1.mjs → GetStartedWizard-BiyxEXWP.mjs} +3 -3
- package/.output/server/chunks/build/GetStartedWizard-BiyxEXWP.mjs.map +1 -0
- package/.output/server/chunks/build/{HelpHint-C96TlqxY.mjs → HelpHint-CdBz6deq.mjs} +2 -2
- package/.output/server/chunks/build/HelpHint-CdBz6deq.mjs.map +1 -0
- package/.output/server/chunks/build/{MetaStripGroup-Cp2WCQf7.mjs → MetaStripGroup-CDyGlsNt.mjs} +94 -21
- package/.output/server/chunks/build/MetaStripGroup-CDyGlsNt.mjs.map +1 -0
- package/.output/server/chunks/build/{NavbarActions-VCHW0u67.mjs → NavbarActions-BTWxKCVI.mjs} +2 -2
- package/.output/server/chunks/build/NavbarActions-BTWxKCVI.mjs.map +1 -0
- package/.output/server/chunks/build/NavigationMenu-D4ZpdCm_.mjs +1 -1
- package/.output/server/chunks/build/OpenInIdeLink-Bnl-_som.mjs +1 -1
- package/.output/server/chunks/build/{ProjectTestCasesTable-saHYJoyQ.mjs → ProjectTestCasesTable-DJDAZ9NQ.mjs} +9 -9
- package/.output/server/chunks/build/ProjectTestCasesTable-DJDAZ9NQ.mjs.map +1 -0
- package/.output/server/chunks/build/{RunReports-CKYYRC59.mjs → RunReports-BSo2cCNx.mjs} +4 -4
- package/.output/server/chunks/build/RunReports-BSo2cCNx.mjs.map +1 -0
- package/.output/server/chunks/build/{RunStatusBadge-CWhmAmKb.mjs → RunStatusBadge-zfeSwcTx.mjs} +2 -2
- package/.output/server/chunks/build/RunStatusBadge-zfeSwcTx.mjs.map +1 -0
- package/.output/server/chunks/build/{SectionCard-BB1O3uXd.mjs → SectionCard-CKD1s0eF.mjs} +2 -2
- package/.output/server/chunks/build/SectionCard-CKD1s0eF.mjs.map +1 -0
- package/.output/server/chunks/build/Select-COU8NARj.mjs +1 -1
- package/.output/server/chunks/build/SelectMenu-BUwwc3Qt.mjs +1 -1
- package/.output/server/chunks/build/{SettingsField-CEasBHu3.mjs → SettingsField-CDnUtiCM.mjs} +3 -3
- package/.output/server/chunks/build/SettingsField-CDnUtiCM.mjs.map +1 -0
- package/.output/server/chunks/build/Table-BET-DOtX.mjs +1 -1
- package/.output/server/chunks/build/{TestCaseHistoryChart-BgI6P_zS.mjs → TestCaseHistoryChart-Do7WK-ZY.mjs} +16 -17
- package/.output/server/chunks/build/TestCaseHistoryChart-Do7WK-ZY.mjs.map +1 -0
- package/.output/server/chunks/build/{TestStatusBar-DR8jM5th.mjs → TestStatusBar-BipoEOzd.mjs} +15 -6
- package/.output/server/chunks/build/TestStatusBar-BipoEOzd.mjs.map +1 -0
- package/.output/server/chunks/build/Tooltip-CK0ucuXC.mjs +1 -1
- package/.output/server/chunks/build/{_id_-rQhFY0fN.mjs → _id_-BLPB189b.mjs} +16 -16
- package/.output/server/chunks/build/{_id_-rQhFY0fN.mjs.map → _id_-BLPB189b.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-kkexEH_q.mjs → _id_-BeGJOSxY.mjs} +16 -16
- package/.output/server/chunks/build/_id_-BeGJOSxY.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-B7Dw490u.mjs → _id_-CfLEW45H.mjs} +472 -304
- package/.output/server/chunks/build/_id_-CfLEW45H.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-DVPb1S93.mjs → _id_-DxHe32cW.mjs} +654 -453
- package/.output/server/chunks/build/_id_-DxHe32cW.mjs.map +1 -0
- package/.output/server/chunks/build/{about-C4AbyQ4q.mjs → about-FLAssVsA.mjs} +5 -5
- package/.output/server/chunks/build/about-FLAssVsA.mjs.map +1 -0
- package/.output/server/chunks/build/{account-B45bYZd1.mjs → account-Cvz6KkYu.mjs} +4 -4
- package/.output/server/chunks/build/account-Cvz6KkYu.mjs.map +1 -0
- package/.output/server/chunks/build/{ai-CgN9xXFf.mjs → ai-DR9Zry7B.mjs} +8 -8
- package/.output/server/chunks/build/{ai-CgN9xXFf.mjs.map → ai-DR9Zry7B.mjs.map} +1 -1
- package/.output/server/chunks/build/{analytics-BRkiUpwa.mjs → analytics-CCAQayhv.mjs} +9 -9
- package/.output/server/chunks/build/{analytics-BRkiUpwa.mjs.map → analytics-CCAQayhv.mjs.map} +1 -1
- package/.output/server/chunks/build/{auto-heal-BnTdKHQq.mjs → auto-heal-ngiiiVmq.mjs} +4 -4
- package/.output/server/chunks/build/auto-heal-ngiiiVmq.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/{default-BGOdM_zA.mjs → default-wYpdMMvh.mjs} +15 -13
- package/.output/server/chunks/build/{default-BGOdM_zA.mjs.map → default-wYpdMMvh.mjs.map} +1 -1
- package/.output/server/chunks/build/{docs-D7R5eJ1Z.mjs → docs-BX9DoKOI.mjs} +4 -4
- package/.output/server/chunks/build/{docs-D7R5eJ1Z.mjs.map → docs-BX9DoKOI.mjs.map} +1 -1
- package/.output/server/chunks/build/{edit-BbL3k6c3.mjs → edit-DnyBC4uC.mjs} +7 -7
- package/.output/server/chunks/build/{edit-BbL3k6c3.mjs.map → edit-DnyBC4uC.mjs.map} +1 -1
- package/.output/server/chunks/build/fetch-DOcN2mHf.mjs +1 -1
- package/.output/server/chunks/build/{help-content-BK3jcgLw.mjs → help-content-3QLSe6Vd.mjs} +3 -3
- package/.output/server/chunks/build/help-content-3QLSe6Vd.mjs.map +1 -0
- package/.output/server/chunks/build/{import-ibAn_HB9.mjs → import-S-w3MXez.mjs} +8 -8
- package/.output/server/chunks/build/import-S-w3MXez.mjs.map +1 -0
- package/.output/server/chunks/build/{index-D5A0DW7Y.mjs → index-BFr7JW_2.mjs} +4 -4
- package/.output/server/chunks/build/index-BFr7JW_2.mjs.map +1 -0
- package/.output/server/chunks/build/{index-CqinXTVs.mjs → index-CdzYiYiu.mjs} +9 -9
- package/.output/server/chunks/build/{index-CqinXTVs.mjs.map → index-CdzYiYiu.mjs.map} +1 -1
- package/.output/server/chunks/build/{index-DreB_S-d.mjs → index-CgYJur1z.mjs} +31 -23
- package/.output/server/chunks/build/index-CgYJur1z.mjs.map +1 -0
- package/.output/server/chunks/build/{index-2GmuPNF-.mjs → index-CjnZ521K.mjs} +22 -4
- package/.output/server/chunks/build/index-CjnZ521K.mjs.map +1 -0
- package/.output/server/chunks/build/{index-KsRegEjT.mjs → index-xgA4P1ht.mjs} +3218 -4087
- package/.output/server/chunks/build/index-xgA4P1ht.mjs.map +1 -0
- package/.output/server/chunks/build/isValueEqualOrExist-D4lZ8uRY.mjs +1 -1
- package/.output/server/chunks/build/login-DueFS2RU.mjs +1 -1
- package/.output/server/chunks/build/{mcp-Dwj29-uG.mjs → mcp-DlZzubUF.mjs} +7 -7
- package/.output/server/chunks/build/mcp-DlZzubUF.mjs.map +1 -0
- package/.output/server/chunks/build/{notifications-CjAn5FJj.mjs → notifications-ByPVhyPX.mjs} +6 -6
- package/.output/server/chunks/build/notifications-ByPVhyPX.mjs.map +1 -0
- package/.output/server/chunks/build/{performance-DRzcu_c7.mjs → performance-Dc9FhaJr.mjs} +6 -6
- package/.output/server/chunks/build/performance-Dc9FhaJr.mjs.map +1 -0
- package/.output/server/chunks/build/{pr-feedback-DR60oGBf.mjs → pr-feedback-5kC_UmKG.mjs} +4 -4
- package/.output/server/chunks/build/pr-feedback-5kC_UmKG.mjs.map +1 -0
- package/.output/server/chunks/build/{selections-BjjolRZ9.mjs → selections-C6J9mI0s.mjs} +9 -9
- package/.output/server/chunks/build/selections-C6J9mI0s.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +33 -33
- package/.output/server/chunks/build/{settings-B3NWV9tu.mjs → settings-DcCAv0U4.mjs} +17 -81
- package/.output/server/chunks/build/settings-DcCAv0U4.mjs.map +1 -0
- package/.output/server/chunks/build/{settings-metadata-DwJk8uSt.mjs → settings-metadata-B684YiW4.mjs} +2 -2
- package/.output/server/chunks/build/settings-metadata-B684YiW4.mjs.map +1 -0
- package/.output/server/chunks/build/{setup-BlgFTixN.mjs → setup-Cf3Mzf-W.mjs} +8 -8
- package/.output/server/chunks/build/{setup-BlgFTixN.mjs.map → setup-Cf3Mzf-W.mjs.map} +1 -1
- package/.output/server/chunks/build/{storage-C1O-FC0U.mjs → storage-B4VySiv3.mjs} +7 -7
- package/.output/server/chunks/build/storage-B4VySiv3.mjs.map +1 -0
- package/.output/server/chunks/build/{tags-dsvYrnii.mjs → tags-BvWdsd1F.mjs} +25 -11
- package/.output/server/chunks/build/tags-BvWdsd1F.mjs.map +1 -0
- package/.output/server/chunks/build/{test-cases-CFiOuyK6.mjs → test-cases-LIIu7dMu.mjs} +11 -11
- package/.output/server/chunks/build/test-cases-LIIu7dMu.mjs.map +1 -0
- package/.output/server/chunks/build/{test-functions-CbmBi6az.mjs → test-functions-Dv8nezrM.mjs} +8 -8
- package/.output/server/chunks/build/test-functions-Dv8nezrM.mjs.map +1 -0
- package/.output/server/chunks/build/{useCopyRich-DPKZKHvZ.mjs → useCopyRich-DRRKIts2.mjs} +17 -14
- package/.output/server/chunks/build/{useCopyRich-DPKZKHvZ.mjs.map → useCopyRich-DRRKIts2.mjs.map} +1 -1
- package/.output/server/chunks/build/{useDesktopDownload-R_RWSgUV.mjs → useDesktopDownload-CK-5nATq.mjs} +2 -2
- package/.output/server/chunks/build/useDesktopDownload-CK-5nATq.mjs.map +1 -0
- package/.output/server/chunks/build/{useDesktopLocalRuns-BdELBy0Y.mjs → useDesktopLocalRuns-BHZic4MJ.mjs} +3 -3
- package/.output/server/chunks/build/useDesktopLocalRuns-BHZic4MJ.mjs.map +1 -0
- package/.output/server/chunks/build/{useDesktopProjectLink-IUN7SIP2.mjs → useDesktopProjectLink-CqBvnXwG.mjs} +2 -2
- package/.output/server/chunks/build/useDesktopProjectLink-CqBvnXwG.mjs.map +1 -0
- package/.output/server/chunks/build/useOpenInIde-DS4YXevu.mjs +1 -1
- package/.output/server/chunks/build/{useSettingsNav-Dg87E7kY.mjs → useSettingsNav-dyHz-2Bz.mjs} +2 -2
- package/.output/server/chunks/build/useSettingsNav-dyHz-2Bz.mjs.map +1 -0
- package/.output/server/chunks/build/{users-DgsoiXxQ.mjs → users-CluLB8DL.mjs} +31 -13
- package/.output/server/chunks/build/users-CluLB8DL.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +839 -680
- package/.output/server/chunks/routes/__piwi/session.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +5 -2
- package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs.map +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 +42 -26
- package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs.map +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/summary.get.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/recent.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +1 -1
- package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs +1 -0
- 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/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/mcp.post.mjs +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/chunks/routes/share/_token_.get.mjs +1 -1
- package/.output/server/index.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/package.json +1 -1
- package/.output/public/_nuxt/3HmftUHT.js +0 -1
- package/.output/public/_nuxt/B7zo6PK8.js +0 -1
- package/.output/public/_nuxt/BO4sfkbw.js +0 -1
- package/.output/public/_nuxt/BdyXNI2_.js +0 -1
- package/.output/public/_nuxt/Bg63qh8W.js +0 -1
- package/.output/public/_nuxt/BnhWd06P.js +0 -1
- package/.output/public/_nuxt/CHWW6xiX.js +0 -1
- package/.output/public/_nuxt/CIPvUOic.js +0 -2
- package/.output/public/_nuxt/CVcFbORW.js +0 -9
- package/.output/public/_nuxt/CZlz5y13.js +0 -1
- package/.output/public/_nuxt/CkV_UG8j.js +0 -1
- package/.output/public/_nuxt/D0TpBpCc.js +0 -1
- package/.output/public/_nuxt/D3LyIeiJ.js +0 -1
- package/.output/public/_nuxt/DcccidY5.js +0 -4
- package/.output/public/_nuxt/DqkCbAzo.js +0 -1
- package/.output/public/_nuxt/DwH4SIZE.js +0 -1
- package/.output/public/_nuxt/DwZS0oRm.js +0 -2
- package/.output/public/_nuxt/DxPZIuWy.js +0 -1
- package/.output/public/_nuxt/Dyb1FouX.js +0 -1
- package/.output/public/_nuxt/builds/meta/a5fb24cc-65e3-4e55-aa12-038fe2de4754.json +0 -1
- package/.output/public/_nuxt/entry.BFe0Ua9k.css +0 -1
- package/.output/public/_nuxt/i7znB42v.js +0 -1
- package/.output/server/chunks/build/BreadcrumbNav-DBnGj5Jq.mjs.map +0 -1
- package/.output/server/chunks/build/BrowserBadge-vFb1ERG_.mjs.map +0 -1
- package/.output/server/chunks/build/ChartMarkerLines-BXqUpUcs.mjs.map +0 -1
- package/.output/server/chunks/build/ChartTooltip-DoF6Smyc.mjs.map +0 -1
- package/.output/server/chunks/build/CodeBlock-CmvKHaq8.mjs.map +0 -1
- package/.output/server/chunks/build/DataLocationCard-ChV02QJj.mjs.map +0 -1
- package/.output/server/chunks/build/DiagnosisPanel-C_ndadzP.mjs.map +0 -1
- package/.output/server/chunks/build/DiagnosisResult-GAjo6Lt3.mjs.map +0 -1
- package/.output/server/chunks/build/DurationValue-CObiBDnH.mjs.map +0 -1
- package/.output/server/chunks/build/FeatureUnavailable-Buoyoqx1.mjs.map +0 -1
- package/.output/server/chunks/build/GetStartedWizard-tL3U_qM1.mjs.map +0 -1
- package/.output/server/chunks/build/HelpHint-C96TlqxY.mjs.map +0 -1
- package/.output/server/chunks/build/MetaStripGroup-Cp2WCQf7.mjs.map +0 -1
- package/.output/server/chunks/build/NavbarActions-VCHW0u67.mjs.map +0 -1
- package/.output/server/chunks/build/ProjectTestCasesTable-saHYJoyQ.mjs.map +0 -1
- package/.output/server/chunks/build/RunReports-CKYYRC59.mjs.map +0 -1
- package/.output/server/chunks/build/RunStatusBadge-CWhmAmKb.mjs.map +0 -1
- package/.output/server/chunks/build/SectionCard-BB1O3uXd.mjs.map +0 -1
- package/.output/server/chunks/build/SettingsField-CEasBHu3.mjs.map +0 -1
- package/.output/server/chunks/build/TestCaseHistoryChart-BgI6P_zS.mjs.map +0 -1
- package/.output/server/chunks/build/TestStatusBar-DR8jM5th.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-B7Dw490u.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-DVPb1S93.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-kkexEH_q.mjs.map +0 -1
- package/.output/server/chunks/build/about-C4AbyQ4q.mjs.map +0 -1
- package/.output/server/chunks/build/account-B45bYZd1.mjs.map +0 -1
- package/.output/server/chunks/build/auto-heal-BnTdKHQq.mjs.map +0 -1
- package/.output/server/chunks/build/help-content-BK3jcgLw.mjs.map +0 -1
- package/.output/server/chunks/build/import-ibAn_HB9.mjs.map +0 -1
- package/.output/server/chunks/build/index-2GmuPNF-.mjs.map +0 -1
- package/.output/server/chunks/build/index-D5A0DW7Y.mjs.map +0 -1
- package/.output/server/chunks/build/index-DreB_S-d.mjs.map +0 -1
- package/.output/server/chunks/build/index-KsRegEjT.mjs.map +0 -1
- package/.output/server/chunks/build/mcp-Dwj29-uG.mjs.map +0 -1
- package/.output/server/chunks/build/notifications-CjAn5FJj.mjs.map +0 -1
- package/.output/server/chunks/build/performance-DRzcu_c7.mjs.map +0 -1
- package/.output/server/chunks/build/pr-feedback-DR60oGBf.mjs.map +0 -1
- package/.output/server/chunks/build/selections-BjjolRZ9.mjs.map +0 -1
- package/.output/server/chunks/build/settings-B3NWV9tu.mjs.map +0 -1
- package/.output/server/chunks/build/settings-metadata-DwJk8uSt.mjs.map +0 -1
- package/.output/server/chunks/build/storage-C1O-FC0U.mjs.map +0 -1
- package/.output/server/chunks/build/tags-dsvYrnii.mjs.map +0 -1
- package/.output/server/chunks/build/test-cases-CFiOuyK6.mjs.map +0 -1
- package/.output/server/chunks/build/test-functions-CbmBi6az.mjs.map +0 -1
- package/.output/server/chunks/build/useDesktopDownload-R_RWSgUV.mjs.map +0 -1
- package/.output/server/chunks/build/useDesktopLocalRuns-BdELBy0Y.mjs.map +0 -1
- package/.output/server/chunks/build/useDesktopProjectLink-IUN7SIP2.mjs.map +0 -1
- package/.output/server/chunks/build/useSettingsNav-Dg87E7kY.mjs.map +0 -1
- package/.output/server/chunks/build/users-DgsoiXxQ.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as ee,w as te,q as oe,O as ae,c as U,g as n,b as t,e as u,f as s,h as a,F as le,E as se,o as d,j as ne,l as m,t as O,a1 as re,_ as ie,I as ce,P as S,an as q,k as B,v as M,r as v,J as P,B as de}from"./BdQ7kfxJ.js";import{_ as ue}from"./B0eHOux4.js";import{_ as me}from"./CLrLFf3s.js";import{_ as pe}from"./BOn5q0rT.js";import{_ as ge}from"./CyWOerIG.js";import{_ as fe}from"./BtcDY0Du.js";import{_ as xe}from"./CK2AMqz_.js";import{p as _e}from"./DwZS0oRm.js";import{u as ve}from"./DTtizz85.js";import{o as be,s as z}from"./DGnQ69wW.js";import"./EJllK0wm.js";import"./CrsaY0R_.js";import"./Bg63qh8W.js";import"./HGYIpJtg.js";import"./CxwnFFD0.js";const ye={class:"space-y-6"},Te={class:"flex items-center gap-2"},Ce={class:"text-sm font-mono text-muted"},ke={class:"text-sm text-muted"},he={class:"flex gap-1 justify-end"},$e={class:"text-center py-12"},Ve={class:"flex justify-center mb-4"},Ae={class:"flex items-center gap-3"},we={key:0,class:"mt-2"},Ue={class:"flex items-center gap-3"},De={key:0,class:"mt-2"},b="#6366f1",He=ee({__name:"tags",async setup(Fe){let y,D;const{data:N,refresh:V}=([y,D]=te(()=>ve("/api/tags","$F3fVqC3Sbv")),y=await y,D(),y),p=oe(),{authState:I}=ae(),K=de(),A=M(()=>N.value?.items||[]),T=M(()=>K.public.authEnabled?I.value.user?.role==="administrator":!0),L=[{accessorKey:"text",header:"Tag"},{accessorKey:"color",header:"Color"},{accessorKey:"createdAt",header:"Created"},{accessorKey:"actions",header:""}],g=v(!1),F=be({text:z().min(1,"Tag text is required").max(50,"Tag text must be at most 50 characters"),color:z().min(1,"Color is required")}),r=P({text:"",color:b}),x=v(!1),C=v(null),i=P({text:"",color:b});function R(l){C.value=l,i.text=l.text,i.color=l.color,x.value=!0}async function G(){try{await $fetch("/api/tags",{method:"POST",body:r}),p.add({title:"Tag created",description:`Tag "${r.text}" has been created successfully`,color:"success"}),g.value=!1,r.text="",r.color=b,await V()}catch(l){const e=l&&typeof l=="object"&&"data"in l?l.data?.message:void 0;p.add({title:"Failed to create tag",description:e||"An error occurred",color:"error"})}}async function H(){if(C.value)try{await $fetch(`/api/tags/${C.value.id}`,{method:"PATCH",body:{text:i.text,color:i.color}}),p.add({title:"Tag updated",description:"Tag has been updated successfully",color:"success"}),x.value=!1,C.value=null,await V()}catch(l){const e=l&&typeof l=="object"&&"data"in l?l.data?.message:void 0;p.add({title:"Failed to update tag",description:e||"An error occurred",color:"error"})}}const _=v(!1),f=v(null);function J(l){f.value=l,_.value=!0}async function Q(){const l=f.value;if(l){_.value=!1,f.value=null;try{await $fetch(`/api/tags/${l.id}`,{method:"DELETE"}),p.add({title:"Tag deleted",description:`Tag "${l.text}" has been deleted`,color:"success"}),await V()}catch(e){const c=e&&typeof e=="object"&&"data"in e?e.data?.message:void 0;p.add({title:"Failed to delete tag",description:c||"An error occurred",color:"error"})}}}return(l,e)=>{const c=ne,k=ue,W=me,E=pe,X=ie,h=ce,$=ge,j=fe,w=xe,Y=se;return d(),U(le,null,[n("div",ye,[t(A).length>0?(d(),u(E,{key:0,title:"Tags",count:t(A).length,help:"settings.tags"},{actions:s(()=>[t(T)?(d(),u(c,{key:0,label:"Add tag",icon:"i-lucide-tag",size:"sm",onClick:e[0]||(e[0]=o=>g.value=!0)})):m("",!0)]),default:s(()=>[a(W,{data:t(A),columns:L},{"text-cell":s(({row:o})=>[a(k,{text:o.original.text,color:o.original.color},null,8,["text","color"])]),"color-cell":s(({row:o})=>[n("div",Te,[n("span",{class:"inline-block w-4 h-4 rounded-full border border-black/10",style:re({backgroundColor:o.original.color})},null,4),n("span",Ce,O(o.original.color),1)])]),"createdAt-cell":s(({row:o})=>[n("span",ke,O(("prettyDateFormat"in l?l.prettyDateFormat:t(_e))(o.original.createdAt,{dateOnly:!0})),1)]),"actions-cell":s(({row:o})=>[n("div",he,[t(T)?(d(),u(c,{key:0,icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"sm",onClick:Z=>R(o.original)},null,8,["onClick"])):m("",!0),t(T)?(d(),u(c,{key:1,icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"sm",onClick:Z=>J(o.original)},null,8,["onClick"])):m("",!0)])]),_:1},8,["data"])]),_:1},8,["count"])):(d(),u(E,{key:1,title:"Tags",count:0,help:"settings.tags"},{default:s(()=>[n("div",$e,[n("div",Ve,[a(X,{name:"i-lucide-tags",class:"text-4xl text-muted"})]),e[14]||(e[14]=n("h3",{class:"text-lg font-semibold mb-2"},"No tags yet",-1)),e[15]||(e[15]=n("p",{class:"text-muted mb-4"},"Create tags to categorize and filter your projects",-1)),t(T)?(d(),u(c,{key:0,label:"Add tag",icon:"i-lucide-tag",onClick:e[1]||(e[1]=o=>g.value=!0)})):m("",!0)])]),_:1}))]),a(Y,null,{default:s(()=>[a(w,{open:t(g),title:"Add new tag","onUpdate:open":e[6]||(e[6]=o=>g.value=o)},{body:s(()=>[a(j,{schema:t(F),state:t(r)},{default:s(()=>[a($,{label:"Tag text",name:"text",required:"",class:"mb-4"},{default:s(()=>[a(h,{modelValue:t(r).text,"onUpdate:modelValue":e[2]||(e[2]=o=>t(r).text=o),placeholder:"Enter tag name"},null,8,["modelValue"])]),_:1}),a($,{label:"Color",name:"color",required:"",class:"mb-4"},{default:s(()=>[n("div",Ae,[S(n("input",{"onUpdate:modelValue":e[3]||(e[3]=o=>t(r).color=o),type:"color",class:"w-10 h-10 rounded cursor-pointer border border-default","aria-label":"Pick tag color"},null,512),[[q,t(r).color]]),a(h,{modelValue:t(r).color,"onUpdate:modelValue":e[4]||(e[4]=o=>t(r).color=o),class:"flex-1 font-mono",placeholder:"#6366f1"},null,8,["modelValue"])])]),_:1}),t(r).text?(d(),U("div",we,[e[16]||(e[16]=n("span",{class:"text-sm text-muted mr-2"},"Preview:",-1)),a(k,{text:t(r).text,color:t(r).color||b},null,8,["text","color"])])):m("",!0)]),_:1},8,["schema","state"])]),footer:s(()=>[a(c,{type:"button",color:"neutral",variant:"ghost",label:"Cancel",onClick:e[5]||(e[5]=o=>g.value=!1)}),a(c,{type:"submit",label:"Create tag",icon:"i-lucide-tag",onClick:G})]),_:1},8,["open"]),a(w,{open:t(x),title:"Edit tag","onUpdate:open":e[11]||(e[11]=o=>x.value=o)},{body:s(()=>[a(j,{schema:t(F),state:t(i)},{default:s(()=>[a($,{label:"Tag text",name:"text",required:"",class:"mb-4"},{default:s(()=>[a(h,{modelValue:t(i).text,"onUpdate:modelValue":e[7]||(e[7]=o=>t(i).text=o),placeholder:"Enter tag name"},null,8,["modelValue"])]),_:1}),a($,{label:"Color",name:"color",required:"",class:"mb-4"},{default:s(()=>[n("div",Ue,[S(n("input",{"onUpdate:modelValue":e[8]||(e[8]=o=>t(i).color=o),type:"color",class:"w-10 h-10 rounded cursor-pointer border border-default","aria-label":"Pick tag color"},null,512),[[q,t(i).color]]),a(h,{modelValue:t(i).color,"onUpdate:modelValue":e[9]||(e[9]=o=>t(i).color=o),class:"flex-1 font-mono",placeholder:"#6366f1"},null,8,["modelValue"])])]),_:1}),t(i).text?(d(),U("div",De,[e[17]||(e[17]=n("span",{class:"text-sm text-muted mr-2"},"Preview:",-1)),a(k,{text:t(i).text,color:t(i).color||b},null,8,["text","color"])])):m("",!0)]),_:1},8,["schema","state"])]),footer:s(()=>[a(c,{type:"button",color:"neutral",variant:"ghost",label:"Cancel",onClick:e[10]||(e[10]=o=>x.value=!1)}),a(c,{type:"submit",label:"Save changes",icon:"i-lucide-check",onClick:H})]),_:1},8,["open"]),a(w,{open:t(_),title:"Delete tag","onUpdate:open":e[13]||(e[13]=o=>_.value=o)},{body:s(()=>[n("p",null,[e[18]||(e[18]=B(" Are you sure you want to delete tag ",-1)),t(f)?(d(),u(k,{key:0,text:t(f).text,color:t(f).color,class:"inline-flex"},null,8,["text","color"])):m("",!0),e[19]||(e[19]=B("? It will be removed from all projects. ",-1))])]),footer:s(()=>[a(c,{color:"neutral",variant:"ghost",label:"Cancel",onClick:e[12]||(e[12]=o=>_.value=!1)}),a(c,{color:"error",label:"Delete",icon:"i-lucide-trash-2",onClick:Q})]),_:1},8,["open"])]),_:1})],64)}}});export{He as default};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{_ as ra}from"./CZ6WR7uw.js";import{aO as oa,d as oe,Y as Ve,X as Re,T as pe,o as i,c as y,h as s,f as o,U as O,b as e,V as X,D as Pe,W as ge,e as w,l as k,F as re,v as K,ax as ia,aE as na,Z as ze,aP as qe,R as da,r as b,aQ as ua,aA as ca,a2 as pa,a3 as ma,a5 as fa,a6 as va,a7 as ya,aK as ba,aR as ha,g as d,i as D,k as V,t as _,z as je,ai as $e,a8 as ga,aF as be,w as _a,q as ka,O as wa,C as Ca,E as xa,ao as Aa,j as qa,m as $a,_ as Ua,I as Ia,x as he,J as Va,B as Ra}from"./BdQ7kfxJ.js";import{_ as Pa}from"./CLrLFf3s.js";import{_ as za}from"./DPPhFZOr.js";import{_ as ja}from"./BOn5q0rT.js";import{_ as Sa}from"./CyWOerIG.js";import{_ as Ka}from"./D0XWJGhG.js";import{_ as Da}from"./BtcDY0Du.js";import{_ as Ea}from"./CK2AMqz_.js";import{_ as Fa}from"./CrsaY0R_.js";import{_ as Ba}from"./Gn1Ns00e.js";import{L as Ue}from"./CxwnFFD0.js";import{u as Se}from"./i7znB42v.js";import{V as Ke}from"./rPG7kzfL.js";import{u as De}from"./BO4sfkbw.js";import{R as Ga}from"./WZXZeGYt.js";import{_ as Oa}from"./CUWrUpTl.js";import{p as ue,j as le}from"./DwZS0oRm.js";import{a as Ma,u as Ta}from"./DTtizz85.js";import{o as La,s as ce,l as Ie,_ as Na,u as Ha}from"./DGnQ69wW.js";import"./EJllK0wm.js";import"./HGYIpJtg.js";import"./Bg63qh8W.js";const Wa="radio.select";function Ya(S,A,u){oa(Wa,u,{originalEvent:S,value:A})}var Ja=oe({inheritAttrs:!1,__name:"Radio",props:{id:{type:String,required:!1},value:{type:null,required:!1},disabled:{type:Boolean,required:!1,default:!1},checked:{type:Boolean,required:!1,default:void 0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:checked","select"],setup(S,{emit:A}){const u=S,h=A,g=Ve(u,"checked",h,{passive:u.checked===void 0}),{value:l}=Re(u),{forwardRef:I,currentElement:x}=pe(),R=Se(x),C=De(),P=K(()=>u.id&&x.value?document.querySelector(`[for="${u.id}"]`)?.innerText??u.value:void 0);function q(p){u.disabled||Ya(p,u.value,z=>{h("select",z),!z?.defaultPrevented&&(g.value=!0,R.value&&z.stopPropagation())})}return(p,z)=>(i(),y(re,null,[s(e(ge),X({id:p.id,ref:e(I),role:"radio",type:p.as==="button"?"button":void 0,as:p.as,"aria-checked":e(g)??!1,"aria-label":P.value,"as-child":p.asChild,disabled:p.disabled?"":void 0,"data-state":e(g)?"checked":"unchecked","data-disabled":p.disabled?"":void 0,value:e(l),required:p.required,name:p.name},{...e(C),...p.$attrs},{onClick:Pe(q,["stop"])}),{default:o(()=>[O(p.$slots,"default",{checked:e(g)})]),_:3},16,["id","type","as","aria-checked","aria-label","as-child","disabled","data-state","data-disabled","value","required","name"]),e(R)&&p.name?(i(),w(e(Ke),X({key:0,type:"radio",tabindex:"-1",value:e(l),checked:!!e(g),name:p.name,disabled:p.disabled,required:p.required},e(C)),null,16,["value","checked","name","disabled","required"])):k("v-if",!0)],64))}}),Qa=Ja;const[Xa,Za]=ze("RadioGroupRoot");var et=oe({__name:"RadioGroupRoot",props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},disabled:{type:Boolean,required:!1,default:!1},orientation:{type:String,required:!1,default:void 0},dir:{type:String,required:!1},loop:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1,default:!1}},emits:["update:modelValue"],setup(S,{emit:A}){const u=S,h=A,{forwardRef:g,currentElement:l}=pe(),I=Ve(u,"modelValue",h,{defaultValue:u.defaultValue,passive:u.modelValue===void 0}),{disabled:x,loop:R,orientation:C,name:P,required:q,dir:p}=Re(u),z=ia(p),$=Se(l);return Za({modelValue:I,changeModelValue:m=>{I.value=m},disabled:x,loop:R,orientation:C,name:P?.value,required:q}),(m,c)=>(i(),w(e(na),{"as-child":"",orientation:e(C),dir:e(z),loop:e(R)},{default:o(()=>[s(e(ge),{ref:e(g),role:"radiogroup","data-disabled":e(x)?"":void 0,"as-child":m.asChild,as:m.as,"aria-orientation":e(C),"aria-required":e(q),dir:e(z)},{default:o(()=>[O(m.$slots,"default",{modelValue:e(I)}),e($)&&e(P)?(i(),w(e(Ke),{key:0,required:e(q),disabled:e(x),value:e(I),name:e(P)},null,8,["required","disabled","value","name"])):k("v-if",!0)]),_:3},8,["data-disabled","as-child","as","aria-orientation","aria-required","dir"])]),_:3},8,["orientation","dir","loop"]))}}),at=et;const[tt,st]=ze("RadioGroupItem");var lt=oe({inheritAttrs:!1,__name:"RadioGroupItem",props:{id:{type:String,required:!1},value:{type:null,required:!1},disabled:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["select"],setup(S,{emit:A}){const u=S,h=A,{forwardRef:g,currentElement:l}=pe(),I=Xa(),x=K(()=>I.disabled.value||u.disabled),R=K(()=>I.required.value||u.required),C=K(()=>ua(I.modelValue?.value,u.value));st({disabled:x,checked:C});const P=b(!1),q=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"];qe("keydown",$=>{q.includes($.key)&&(P.value=!0)}),qe("keyup",()=>{P.value=!1});function p(){setTimeout(()=>{P.value&&l.value?.click()},0)}const z=De();return($,m)=>(i(),w(e(Ga),{checked:C.value,disabled:x.value,"as-child":"",focusable:!x.value,active:C.value},{default:o(()=>[s(Qa,X({...e(z),...$.$attrs,...u},{ref:e(g),checked:C.value,required:R.value,disabled:x.value,"onUpdate:checked":m[0]||(m[0]=c=>e(I).changeModelValue($.value)),onSelect:m[1]||(m[1]=c=>h("select",c)),onKeydown:m[2]||(m[2]=da(Pe(()=>{},["prevent"]),["enter"])),onFocus:p}),{default:o(()=>[O($.$slots,"default",{checked:C.value,required:R.value,disabled:x.value})]),_:3},16,["checked","required","disabled"])]),_:3},8,["checked","disabled","focusable","active"]))}}),rt=lt,ot=oe({__name:"RadioGroupIndicator",props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(S){const{forwardRef:A}=pe(),u=tt();return(h,g)=>(i(),w(e(ca),{present:h.forceMount||e(u).checked.value},{default:o(()=>[s(e(ge),X({ref:e(A),"data-state":e(u).checked.value?"checked":"unchecked","data-disabled":e(u).disabled.value?"":void 0,"as-child":h.asChild,as:h.as},h.$attrs),{default:o(()=>[O(h.$slots,"default")]),_:3},16,["data-state","data-disabled","as-child","as"])]),_:3},8,["present"]))}}),it=ot;const nt={slots:{root:"relative",fieldset:"flex gap-x-2",legend:"mb-1 block font-medium text-default",item:"flex items-start",container:"flex items-center",base:"rounded-full ring ring-inset ring-accented overflow-hidden focus-visible:outline-3",indicator:"flex items-center justify-center size-full after:bg-default after:rounded-full",wrapper:"w-full",label:"block font-medium text-default",description:"text-muted"},variants:{color:{primary:{base:"outline-primary/25 focus-visible:ring-primary",indicator:"bg-primary"},secondary:{base:"outline-secondary/25 focus-visible:ring-secondary",indicator:"bg-secondary"},success:{base:"outline-success/25 focus-visible:ring-success",indicator:"bg-success"},info:{base:"outline-info/25 focus-visible:ring-info",indicator:"bg-info"},warning:{base:"outline-warning/25 focus-visible:ring-warning",indicator:"bg-warning"},error:{base:"outline-error/25 focus-visible:ring-error",indicator:"bg-error"},neutral:{base:"outline-inverted/25 focus-visible:ring-inverted",indicator:"bg-inverted"}},variant:{list:{item:""},card:{item:"border border-muted rounded-lg"},table:{item:"border border-muted"}},orientation:{horizontal:{fieldset:"flex-row"},vertical:{fieldset:"flex-col"}},indicator:{start:{item:"flex-row",wrapper:"ms-2"},end:{item:"flex-row-reverse",wrapper:"me-2"},hidden:{base:"sr-only",wrapper:"text-center"}},size:{xs:{fieldset:"gap-y-0.5",legend:"text-xs",base:"size-3",item:"text-xs",container:"h-4",indicator:"after:size-1"},sm:{fieldset:"gap-y-0.5",legend:"text-xs",base:"size-3.5",item:"text-xs",container:"h-4",indicator:"after:size-1"},md:{fieldset:"gap-y-1",legend:"text-sm",base:"size-4",item:"text-sm",container:"h-5",indicator:"after:size-1.5"},lg:{fieldset:"gap-y-1",legend:"text-sm",base:"size-4.5",item:"text-sm",container:"h-5",indicator:"after:size-1.5"},xl:{fieldset:"gap-y-1.5",legend:"text-base",base:"size-5",item:"text-base",container:"h-6",indicator:"after:size-2"}},highlight:{true:""},disabled:{true:{item:"opacity-75",base:"cursor-not-allowed",label:"cursor-not-allowed",description:"cursor-not-allowed"}},required:{true:{legend:"after:content-['*'] after:ms-0.5 after:text-error"}}},compoundVariants:[{size:"xs",variant:["card","table"],class:{item:"p-2.5"}},{size:"sm",variant:["card","table"],class:{item:"p-3"}},{size:"md",variant:["card","table"],class:{item:"p-3.5"}},{size:"lg",variant:["card","table"],class:{item:"p-4"}},{size:"xl",variant:["card","table"],class:{item:"p-4.5"}},{orientation:"horizontal",variant:"table",class:{item:"first-of-type:rounded-s-lg last-of-type:rounded-e-lg",fieldset:"gap-0 -space-x-px"}},{orientation:"vertical",variant:"table",class:{item:"first-of-type:rounded-t-lg last-of-type:rounded-b-lg",fieldset:"gap-0 -space-y-px"}},{color:"primary",variant:"card",class:{item:"has-data-[state=checked]:border-primary"}},{color:"secondary",variant:"card",class:{item:"has-data-[state=checked]:border-secondary"}},{color:"success",variant:"card",class:{item:"has-data-[state=checked]:border-success"}},{color:"info",variant:"card",class:{item:"has-data-[state=checked]:border-info"}},{color:"warning",variant:"card",class:{item:"has-data-[state=checked]:border-warning"}},{color:"error",variant:"card",class:{item:"has-data-[state=checked]:border-error"}},{color:"neutral",variant:"card",class:{item:"has-data-[state=checked]:border-inverted"}},{color:"primary",variant:"table",class:{item:"has-data-[state=checked]:bg-primary/10 has-data-[state=checked]:border-primary/50 has-data-[state=checked]:z-[1]"}},{color:"secondary",variant:"table",class:{item:"has-data-[state=checked]:bg-secondary/10 has-data-[state=checked]:border-secondary/50 has-data-[state=checked]:z-[1]"}},{color:"success",variant:"table",class:{item:"has-data-[state=checked]:bg-success/10 has-data-[state=checked]:border-success/50 has-data-[state=checked]:z-[1]"}},{color:"info",variant:"table",class:{item:"has-data-[state=checked]:bg-info/10 has-data-[state=checked]:border-info/50 has-data-[state=checked]:z-[1]"}},{color:"warning",variant:"table",class:{item:"has-data-[state=checked]:bg-warning/10 has-data-[state=checked]:border-warning/50 has-data-[state=checked]:z-[1]"}},{color:"error",variant:"table",class:{item:"has-data-[state=checked]:bg-error/10 has-data-[state=checked]:border-error/50 has-data-[state=checked]:z-[1]"}},{color:"neutral",variant:"table",class:{item:"has-data-[state=checked]:bg-elevated has-data-[state=checked]:border-inverted/50 has-data-[state=checked]:z-[1]"}},{variant:["card","table"],disabled:!0,class:{item:"cursor-not-allowed"}},{color:"primary",highlight:!0,class:{base:"ring-primary"}},{color:"secondary",highlight:!0,class:{base:"ring-secondary"}},{color:"success",highlight:!0,class:{base:"ring-success"}},{color:"info",highlight:!0,class:{base:"ring-info"}},{color:"warning",highlight:!0,class:{base:"ring-warning"}},{color:"error",highlight:!0,class:{base:"ring-error"}},{color:"neutral",highlight:!0,class:{base:"ring-inverted"}}],defaultVariants:{size:"md",color:"primary",variant:"list",indicator:"start"}},dt={__name:"URadioGroup",props:{as:{type:null,required:!1},legend:{type:String,required:!1},valueKey:{type:null,required:!1,default:"value"},labelKey:{type:null,required:!1,default:"label"},descriptionKey:{type:null,required:!1,default:"description"},items:{type:null,required:!1},modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},size:{type:null,required:!1},variant:{type:null,required:!1},color:{type:null,required:!1},highlight:{type:Boolean,required:!1},orientation:{type:null,required:!1,default:"vertical"},indicator:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},disabled:{type:Boolean,required:!1},loop:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["change","update:modelValue"],setup(S,{emit:A}){const u=S,h=A,g=pa(),l=ma("radioGroup",u),I=fa(),x=va(ya(l,"as","loop","required"),h),{emitFormChange:R,emitFormInput:C,color:P,name:q,size:p,highlight:z,id:$,disabled:m,ariaAttrs:c}=ba(u,{bind:!1}),M=$.value??ha(),j=K(()=>ga({extend:nt,...I.ui?.radioGroup||{}})({size:p.value??l.size,color:P.value??l.color,highlight:z.value??l.highlight,disabled:m.value,required:l.required,orientation:l.orientation,variant:l.variant,indicator:l.indicator}));function me(f){if(f===null)return{id:`${M}:null`,value:void 0,label:void 0};if(typeof f=="string"||typeof f=="number"||typeof f=="bigint")return{id:`${M}:${f}`,value:String(f),label:String(f)};const G=be(f,l.valueKey),n=be(f,l.labelKey),T=be(f,l.descriptionKey);return{...f,value:G,label:n,description:T,id:`${M}:${G}`}}const fe=K(()=>l.items?l.items.map(me):[]);function B(f){const G=new Event("change",{target:{value:f}});h("change",G),R(),C()}return(f,G)=>(i(),w(e(at),X({id:e(M)},e(x),{"model-value":e(l).modelValue,"default-value":e(l).defaultValue,orientation:e(l).orientation,name:e(q),disabled:e(m),"data-slot":"root",class:j.value.root({class:[e(l).ui?.root,e(l).class]}),"onUpdate:modelValue":B}),{default:o(()=>[d("fieldset",X({"data-slot":"fieldset",class:j.value.fieldset({class:e(l).ui?.fieldset})},e(c)),[e(l).legend||g.legend?(i(),y("legend",{key:0,"data-slot":"legend",class:D(j.value.legend({class:e(l).ui?.legend}))},[O(f.$slots,"legend",{},()=>[V(_(e(l).legend),1)])],2)):k("",!0),(i(!0),y(re,null,je(fe.value,n=>(i(),w($e(!e(l).variant||e(l).variant==="list"?"div":e(Ue)),{key:n.value,"data-slot":"item",class:D(j.value.item({class:[e(l).ui?.item,n.ui?.item,n.class],disabled:n.disabled||e(m)}))},{default:o(()=>[d("div",{"data-slot":"container",class:D(j.value.container({class:[e(l).ui?.container,n.ui?.container]}))},[s(e(rt),{id:n.id,value:n.value,disabled:n.disabled||e(m),"data-slot":"base",class:D(j.value.base({class:[e(l).ui?.base,n.ui?.base],disabled:n.disabled||e(m)}))},{default:o(()=>[s(e(it),{"data-slot":"indicator",class:D(j.value.indicator({class:[e(l).ui?.indicator,n.ui?.indicator]}))},null,8,["class"])]),_:2},1032,["id","value","disabled","class"])],2),n.label||g.label||n.description||g.description?(i(),y("div",{key:0,"data-slot":"wrapper",class:D(j.value.wrapper({class:[e(l).ui?.wrapper,n.ui?.wrapper]}))},[n.label||g.label?(i(),w($e(!e(l).variant||e(l).variant==="list"?e(Ue):"p"),{key:0,for:n.id,"data-slot":"label",class:D(j.value.label({class:[e(l).ui?.label,n.ui?.label],disabled:n.disabled||e(m)}))},{default:o(()=>[O(f.$slots,"label",{item:n,modelValue:e(l).modelValue},()=>[V(_(n.label),1)])]),_:2},1032,["for","class"])):k("",!0),n.description||g.description?(i(),y("p",{key:1,"data-slot":"description",class:D(j.value.description({class:[e(l).ui?.description,n.ui?.description],disabled:n.disabled||e(m)}))},[O(f.$slots,"description",{item:n,modelValue:e(l).modelValue},()=>[V(_(n.description),1)])],2)):k("",!0)],2)):k("",!0)]),_:2},1032,["class"]))),128))],16)]),_:3},16,["id","model-value","default-value","orientation","name","disabled","class"]))}},ut={class:"space-y-6"},ct={class:"text-muted"},pt={key:0,class:"flex items-center gap-1 text-sm"},mt={key:1,class:"text-muted"},ft={class:"text-sm text-muted"},vt={class:"flex items-center gap-1 justify-end"},yt={class:"text-center py-12"},bt={class:"flex justify-center mb-4"},ht={class:"flex w-full justify-end gap-2"},gt={class:"inline-flex items-center gap-1"},_t={class:"space-y-4"},kt={key:0,class:"rounded-lg border border-primary/30 bg-primary/5 p-4 space-y-4"},wt={key:0,class:"space-y-4"},Ct={class:"rounded-lg bg-elevated p-3 font-mono text-sm break-all select-all"},xt={class:"flex gap-2"},At={key:1,class:"space-y-3"},qt={class:"flex gap-2"},$t={key:1,class:"space-y-2"},Ut={class:"flex-1 min-w-0"},It={class:"flex items-center gap-2"},Vt={class:"font-medium truncate"},Rt={class:"text-xs text-muted mt-1 flex flex-wrap gap-x-4"},Pt={class:"font-mono"},zt={key:0},jt={key:1,class:"italic"},St={key:2,class:"text-center text-muted py-6 text-sm"},Kt={class:"inline-flex items-center gap-1"},Dt={class:"space-y-6"},Et={key:0,class:"text-[var(--ui-text-muted)]"},Ft={key:1},ds=oe({__name:"users",async setup(S){let A,u;const{data:h,refresh:g}=([A,u]=_a(()=>Ta("/api/users","$JTvQRs7G1d")),A=await A,u(),A),l=ka(),{copy:I}=Ma(),{authState:x}=wa(),R=Ra(),C=K(()=>h.value?.items||[]),P=K(()=>h.value?.authEnabled||!1),q=K(()=>R.public.authEnabled?x.value.user?.role==="administrator":!0),p=K(()=>x.value.user?.id??null),z=[{accessorKey:"username",header:le("Username")},{accessorKey:"name",header:le("Name")},{accessorKey:"email",header:le("Email")},{accessorKey:"role",header:le("Role")},{accessorKey:"createdAt",header:le("Created")},{accessorKey:"actions",header:""}],$=b(!1),m=La({username:ce().min(3,"Username must be at least 3 characters"),password:Ha([ce().min(8,"Password must be at least 8 characters"),Ie("").transform(()=>{})]).optional(),role:Na(["administrator","reporter","user"]),name:ce().optional(),email:ce().email().optional().or(Ie(""))}),c=Va({username:"",password:"",role:"user",name:"",email:""}),M=[{label:"Administrator",value:"administrator"},{label:"Reporter",value:"reporter"},{label:"User",value:"user"}];async function j(){try{const r={...c,password:c.password||void 0};await $fetch("/api/users",{method:"POST",body:r}),l.add({title:"User created",description:`User ${c.username} has been created successfully`,color:"success"}),$.value=!1,c.username="",c.password="",c.role="user",c.name="",c.email="",await g()}catch(r){const a=r&&typeof r=="object"&&"data"in r?r.data?.message:void 0;l.add({title:"Failed to create user",description:a||"An error occurred",color:"error"})}}async function me(r){f.value=r,B.value=!0}async function fe(){const r=f.value;if(r){B.value=!1,f.value=null;try{await $fetch(`/api/users/${r.id}`,{method:"DELETE"}),l.add({title:"User deleted",description:`User ${r.username} has been deleted`,color:"success"}),await g()}catch(a){const U=a&&typeof a=="object"&&"data"in a?a.data?.message:void 0;l.add({title:"Failed to delete user",description:U||"An error occurred",color:"error"})}}}const B=b(!1),f=b(null);function G(r){switch(r){case"administrator":return"primary";case"reporter":return"info";case"user":return"neutral";default:return"neutral"}}const n=b(null),T=b(!1),ie=b([]);async function Ee(r){n.value=r,T.value=!0,await _e(r.id)}async function _e(r){try{const a=await $fetch(`/api/users/${r}/api-keys`);ie.value=a.items}catch{ie.value=[]}}async function ke(){n.value&&await _e(n.value.id)}const L=b(!1),N=b(""),H=b(""),E=b(null),we=b("http://localhost:3000");Ca(()=>{we.value=window.location.origin});const Fe=K(()=>`['@piwitests/reporter', {
|
|
2
|
-
serverUrl: '${we.value}',
|
|
3
|
-
apiKey: '${E.value??""}', // or set PIWI_API_KEY and use apiKey: process.env.PIWI_API_KEY
|
|
4
|
-
}]`);function Be(){N.value="",H.value="",E.value=null,L.value=!0}function Ce(){L.value=!1,E.value=null}async function Ge(){if(n.value)try{const r={name:N.value};H.value&&(r.expiresAt=new Date(H.value).toISOString());const a=await $fetch(`/api/users/${n.value.id}/api-keys`,{method:"POST",body:r});E.value=a.key,await ke()}catch(r){const a=r&&typeof r=="object"&&"data"in r?r.data?.message:void 0;l.add({title:"Failed to create API key",description:a||"An error occurred",color:"error"})}}function Oe(){I(E.value,{toast:"API key copied to clipboard"})}function Me(){E.value=null,L.value=!1}const Z=b(!1),ee=b(null);function Te(r){ee.value=r,Z.value=!0}async function Le(){if(!n.value||!ee.value)return;const r=ee.value;Z.value=!1,ee.value=null;try{await $fetch(`/api/users/${n.value.id}/api-keys/${r.id}`,{method:"DELETE"}),l.add({title:"API key revoked",description:`Key "${r.name}" has been revoked`,color:"success"}),await ke()}catch(a){const U=a&&typeof a=="object"&&"data"in a?a.data?.message:void 0;l.add({title:"Failed to revoke API key",description:U||"An error occurred",color:"error"})}}function Ne(r){return R.public.authEnabled?q.value||p.value===r.id:!0}const ne=b(null),ae=b(!1),W=b(!1),Y=b([]),J=b([]);async function He(r){ne.value=r,ae.value=!0;try{const a=(await $fetch("/api/projects/menu")).items;J.value=a.map(U=>({...U,label:U.label||U.name}))}catch{J.value=[]}try{const a=await $fetch(`/api/users/${r.id}/projects`);W.value=a.global,Y.value=J.value.filter(U=>a.projectIds.includes(U.id))}catch{W.value=!1,Y.value=[]}}async function We(){const r=ne.value;if(r)try{await $fetch(`/api/users/${r.id}/projects`,{method:"PUT",body:{global:W.value,projectIds:Y.value.map(a=>a.id)}}),l.add({title:"Project access updated",description:`Access for ${r.username} has been updated`,color:"success"}),ae.value=!1}catch(a){const U=a&&typeof a=="object"&&"data"in a?a.data?.message:void 0;l.add({title:"Failed to update project access",description:U||"An error occurred",color:"error"})}}const ve=b(null);async function Ye(r){if(!r.email){l.add({title:"No email address",description:"Set an email address for this user first.",color:"error"});return}ve.value=r.id;try{await $fetch(`/api/users/${r.id}/invite`,{method:"POST"}),l.add({title:"Invite sent",description:`Invitation sent to ${r.email}`,color:"success"})}catch(a){const U=a&&typeof a=="object"&&"data"in a?a.data?.message:void 0;l.add({title:"Failed to send invite",description:U||"An error occurred",color:"error"})}finally{ve.value=null}}return(r,a)=>{const U=ra,v=qa,ye=Ua,Je=$a,Qe=Pa,Xe=za,xe=ja,Q=Ia,F=Sa,Ze=Ka,ea=Da,te=Ea,se=xa,Ae=Fa,aa=Ba,ta=dt,sa=Aa("UDivider"),la=Oa;return i(),y(re,null,[d("div",ut,[e(P)?k("",!0):(i(),w(U,{key:0,icon:"i-lucide-info",color:"primary",variant:"subtle",title:"Authentication is disabled",description:"Authentication is currently disabled. You can manage users here, but they will only be used when authentication is enabled via the PIWI_AUTH_ENABLED environment variable."})),e(C).length>0?(i(),w(xe,{key:1,title:"Users",count:e(C).length,help:"settings.users"},{actions:o(()=>[e(q)?(i(),w(v,{key:0,label:"Add user",icon:"i-lucide-user-plus",size:"sm",onClick:a[0]||(a[0]=t=>$.value=!0)})):k("",!0)]),default:o(()=>[s(Xe,{"min-width":"44rem",bleed:!1},{default:o(()=>[s(Qe,{data:e(C),columns:z,sticky:"",class:"max-h-[32rem]"},{"username-cell":o(({row:t})=>[V(_(t.original.username),1)]),"name-cell":o(({row:t})=>[d("span",ct,_(t.original.name||"-"),1)]),"email-cell":o(({row:t})=>[t.original.email?(i(),y("span",pt,[V(_(t.original.email)+" ",1),t.original.emailVerified?(i(),w(ye,{key:0,name:"i-lucide-circle-check-big",class:"size-3.5 text-success-500",title:"Email verified"})):k("",!0)])):(i(),y("span",mt,"—"))]),"role-cell":o(({row:t})=>[s(Je,{color:G(t.original.role),variant:"subtle"},{default:o(()=>[V(_(t.original.role),1)]),_:2},1032,["color"])]),"createdAt-cell":o(({row:t})=>[d("span",ft,_(("prettyDateFormat"in r?r.prettyDateFormat:e(ue))(t.original.createdAt,{dateOnly:!0})),1)]),"actions-cell":o(({row:t})=>[d("div",vt,[e(q)&&t.original.email&&!t.original.oauthProvider?(i(),w(v,{key:0,icon:"i-lucide-send",color:"neutral",variant:"ghost",size:"sm",title:"Send invite email","aria-label":"Send invite email",loading:e(ve)===t.original.id,onClick:de=>Ye(t.original)},null,8,["loading","onClick"])):k("",!0),e(q)&&t.original.role!=="administrator"?(i(),w(v,{key:1,icon:"i-lucide-folder-lock",color:"neutral",variant:"ghost",size:"sm",title:"Project access","aria-label":"Project access",onClick:de=>He(t.original)},null,8,["onClick"])):k("",!0),Ne(t.original)?(i(),w(v,{key:2,icon:"i-lucide-key",color:"neutral",variant:"ghost",size:"sm",title:"Manage API keys","aria-label":"Manage API keys",onClick:de=>Ee(t.original)},null,8,["onClick"])):k("",!0),e(q)?(i(),w(v,{key:3,icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"sm",title:"Delete user","aria-label":"Delete user",onClick:de=>me(t.original)},null,8,["onClick"])):k("",!0)])]),_:1},8,["data"])]),_:1})]),_:1},8,["count"])):(i(),w(xe,{key:2,title:"Users",count:0,help:"settings.users"},{default:o(()=>[d("div",yt,[d("div",bt,[s(ye,{name:"i-lucide-users",class:"text-4xl text-muted"})]),a[21]||(a[21]=d("h3",{class:"text-lg font-semibold mb-2"},"No users yet",-1)),a[22]||(a[22]=d("p",{class:"text-muted mb-4"},"Create your first user to get started with authentication",-1)),e(q)?(i(),w(v,{key:0,label:"Add user",icon:"i-lucide-user-plus",onClick:a[1]||(a[1]=t=>$.value=!0)})):k("",!0)])]),_:1}))]),s(se,null,{default:o(()=>[s(te,{open:e($),title:"Add new user","onUpdate:open":a[8]||(a[8]=t=>$.value=t)},{body:o(()=>[s(ea,{schema:e(m),state:e(c),class:"space-y-5"},{default:o(()=>[s(F,{label:"Username",name:"username",required:""},{default:o(()=>[s(Q,{modelValue:e(c).username,"onUpdate:modelValue":a[2]||(a[2]=t=>e(c).username=t),placeholder:"Enter username",class:"w-full"},null,8,["modelValue"])]),_:1}),s(F,{label:"Password",name:"password",description:"Leave blank to let the user set their own password via invite email"},{default:o(()=>[s(Q,{modelValue:e(c).password,"onUpdate:modelValue":a[3]||(a[3]=t=>e(c).password=t),type:"password",placeholder:"Leave blank to send invite",class:"w-full"},null,8,["modelValue"])]),_:1}),s(F,{label:"Display name",name:"name"},{default:o(()=>[s(Q,{modelValue:e(c).name,"onUpdate:modelValue":a[4]||(a[4]=t=>e(c).name=t),placeholder:"Enter display name (optional)",class:"w-full"},null,8,["modelValue"])]),_:1}),s(F,{label:"Email",name:"email",description:"Optional — needed for invites and notifications"},{default:o(()=>[s(Q,{modelValue:e(c).email,"onUpdate:modelValue":a[5]||(a[5]=t=>e(c).email=t),type:"email",placeholder:"user@example.com (optional)",class:"w-full"},null,8,["modelValue"])]),_:1}),s(F,{label:"Role",name:"role",required:""},{default:o(()=>[s(Ze,{modelValue:e(c).role,"onUpdate:modelValue":a[6]||(a[6]=t=>e(c).role=t),items:M,class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1},8,["schema","state"])]),footer:o(()=>[d("div",ht,[s(v,{type:"button",color:"neutral",variant:"ghost",label:"Cancel",onClick:a[7]||(a[7]=t=>$.value=!1)}),s(v,{type:"submit",label:"Create user",icon:"i-lucide-user-plus",onClick:j})])]),_:1},8,["open"])]),_:1}),s(se,null,{default:o(()=>[s(te,{open:e(T),title:`API keys – ${e(n)?.username}`,size:"xl","onUpdate:open":a[12]||(a[12]=t=>{T.value=t,t||Ce()})},{title:o(()=>[d("span",gt,[V(" API keys – "+_(e(n)?.username)+" ",1),s(Ae,{topic:"settings.api-keys"})])]),body:o(()=>[d("div",_t,[a[26]||(a[26]=d("p",{class:"text-sm text-muted"},[V(" API keys allow the Playwright reporter (and other CI tools) to submit test results without a username/password login. Each key is shown "),d("strong",null,"only once"),V(" at creation time — store it in a CI secret immediately. ")],-1)),e(L)?(i(),y("div",kt,[e(E)?(i(),y("div",wt,[s(U,{icon:"i-lucide-triangle-alert",color:"warning",variant:"subtle",title:"Save your API key now",description:"This key will never be shown again. Copy it and store it in your CI secret manager immediately."}),d("div",Ct,_(e(E)),1),d("div",xt,[s(v,{label:"Copy to clipboard",icon:"i-lucide-clipboard",color:"primary",size:"sm",onClick:Oe}),s(v,{label:"Done",variant:"ghost",size:"sm",onClick:Me})]),d("div",null,[a[23]||(a[23]=d("p",{class:"text-xs font-semibold uppercase tracking-wide text-muted mb-2"}," Use it in your reporter config ",-1)),s(aa,{code:e(Fe),lang:"typescript"},null,8,["code"])])])):(i(),y("div",At,[a[24]||(a[24]=d("h4",{class:"font-medium text-sm"},"Create new API key",-1)),s(F,{label:"Key name",name:"name",required:""},{default:o(()=>[s(Q,{modelValue:e(N),"onUpdate:modelValue":a[9]||(a[9]=t=>he(N)?N.value=t:null),placeholder:"e.g. GitHub Actions CI",size:"sm"},null,8,["modelValue"])]),_:1}),s(F,{label:"Expires at (optional)",name:"expiresAt"},{default:o(()=>[s(Q,{modelValue:e(H),"onUpdate:modelValue":a[10]||(a[10]=t=>he(H)?H.value=t:null),type:"date",size:"sm",min:new Date().toISOString().split("T")[0]},null,8,["modelValue","min"])]),_:1}),d("div",qt,[s(v,{label:"Generate key",icon:"i-lucide-key",size:"sm",disabled:!e(N).trim(),onClick:Ge},null,8,["disabled"]),s(v,{color:"neutral",variant:"ghost",label:"Cancel",size:"sm",onClick:Ce})])]))])):k("",!0),e(ie).length>0?(i(),y("div",$t,[(i(!0),y(re,null,je(e(ie),t=>(i(),y("div",{key:t.id,class:"flex items-center justify-between rounded-lg border border-default px-4 py-3"},[d("div",Ut,[d("div",It,[s(ye,{name:"i-lucide-key",class:"text-muted shrink-0"}),d("span",Vt,_(t.name),1)]),d("div",Rt,[d("span",null,[a[25]||(a[25]=V("Prefix: ",-1)),d("code",Pt,"pd_"+_(t.keyPrefix)+"…",1)]),d("span",null,"Created: "+_(("prettyDateFormat"in r?r.prettyDateFormat:e(ue))(t.createdAt,{dateOnly:!0})),1),t.lastUsedAt?(i(),y("span",zt,"Last used: "+_(("prettyDateFormat"in r?r.prettyDateFormat:e(ue))(t.lastUsedAt,{dateOnly:!0})),1)):(i(),y("span",jt,"Never used")),t.expiresAt?(i(),y("span",{key:2,class:D(new Date(t.expiresAt)<new Date?"text-error":"")}," Expires: "+_(("prettyDateFormat"in r?r.prettyDateFormat:e(ue))(t.expiresAt,{dateOnly:!0})),3)):k("",!0)])]),s(v,{icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"sm",title:"Revoke key",onClick:de=>Te(t)},null,8,["onClick"])]))),128))])):e(L)?k("",!0):(i(),y("div",St," No API keys yet. Create one to allow CI access. "))])]),footer:o(()=>[s(v,{color:"neutral",variant:"ghost",label:"Close",onClick:a[11]||(a[11]=t=>T.value=!1)}),e(L)?k("",!0):(i(),w(v,{key:0,label:"Create API key",icon:"i-lucide-plus",onClick:Be}))]),_:1},8,["open","title"])]),_:1}),s(se,null,{default:o(()=>[s(te,{open:e(B),title:"Delete user","onUpdate:open":a[14]||(a[14]=t=>B.value=t)},{body:o(()=>[d("p",null,[a[27]||(a[27]=V(" Are you sure you want to delete user ",-1)),d("strong",null,_(e(f)?.username),1),a[28]||(a[28]=V("? This action cannot be undone. ",-1))])]),footer:o(()=>[s(v,{color:"neutral",variant:"ghost",label:"Cancel",onClick:a[13]||(a[13]=t=>B.value=!1)}),s(v,{color:"error",label:"Delete user",icon:"i-lucide-trash-2",onClick:fe})]),_:1},8,["open"])]),_:1}),s(se,null,{default:o(()=>[s(te,{open:e(Z),title:"Revoke API key","onUpdate:open":a[16]||(a[16]=t=>Z.value=t)},{body:o(()=>[d("p",null,[a[29]||(a[29]=V(" Revoke API key ",-1)),d("strong",null,'"'+_(e(ee)?.name)+'"',1),a[30]||(a[30]=V("? Any CI pipeline using it will stop working immediately. ",-1))])]),footer:o(()=>[s(v,{color:"neutral",variant:"ghost",label:"Cancel",onClick:a[15]||(a[15]=t=>Z.value=!1)}),s(v,{color:"error",label:"Revoke",icon:"i-lucide-trash-2",onClick:Le})]),_:1},8,["open"])]),_:1}),s(se,null,{default:o(()=>[s(te,{open:e(ae),title:`Project access – ${e(ne)?.username}`,size:"xl","onUpdate:open":a[20]||(a[20]=t=>ae.value=t)},{title:o(()=>[d("span",Kt,[V(" Project access – "+_(e(ne)?.username)+" ",1),s(Ae,{topic:"project.members"})])]),body:o(()=>[d("div",Dt,[a[31]||(a[31]=d("p",{class:"text-sm text-muted"}," Control which projects this user can access. Users without any project access will see no projects. ",-1)),s(ta,{"model-value":e(W)?"global":"specific",items:[{value:"global",label:"Global access",description:"Access to all projects (current and future)"},{value:"specific",label:"Specific projects",description:"Access only to selected projects"}],"onUpdate:modelValue":a[17]||(a[17]=t=>W.value=t==="global")},null,8,["model-value"]),e(W)?k("",!0):(i(),y(re,{key:0},[s(sa),s(F,{label:"Specific projects",description:`Select from ${e(J).length>0?e(J).length:"0"} available projects`},{default:o(()=>[s(la,{modelValue:e(Y),"onUpdate:modelValue":a[18]||(a[18]=t=>he(Y)?Y.value=t:null),items:e(J),by:"id",multiple:"",searchable:"",class:"w-full",placeholder:"Search and select projects…"},{default:o(({modelValue:t})=>[t.length===0?(i(),y("span",Et,"Select projects…")):(i(),y("span",Ft,_(t.length)+" project(s) selected",1))]),_:1},8,["modelValue","items"])]),_:1},8,["description"])],64))])]),footer:o(()=>[s(v,{color:"neutral",variant:"ghost",label:"Cancel",onClick:a[19]||(a[19]=t=>ae.value=!1)}),s(v,{label:"Save",icon:"i-lucide-check",onClick:We})]),_:1},8,["open","title"])]),_:1})],64)}}});export{ds as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{B as o}from"./BdQ7kfxJ.js";function n(){const t=o();return String(t.public.desktop)==="true"}export{n as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as o}from"./CMVTTE_g.js";import{O as a,v as i,ab as n}from"./BdQ7kfxJ.js";import{u}from"./DqkCbAzo.js";function p(s){const{canSeeAdmin:t}=a(),e=u();return i(()=>o({canSeeAdmin:t.value,isDesktop:e,envManaged:s?n(s):void 0}))}export{p as u};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{aa as C,_ as X}from"./BdQ7kfxJ.js";const H=864e5,U=6e4,V=36e5,x=43200,F=1440,W=Symbol.for("constructDateFrom");function y(e,t){return typeof e=="function"?e(t):e&&typeof e=="object"&&W in e?e[W](t):e instanceof Date?new e.constructor(t):new Date(t)}function g(e,t){return y(e,e)}function q(e,t,n){const r=g(e);return isNaN(t)?y(e,NaN):(t&&r.setDate(r.getDate()+t),r)}function B(e,t,n){const r=g(e);if(isNaN(t))return y(e,NaN);if(!t)return r;const a=r.getDate(),i=y(e,r.getTime());i.setMonth(r.getMonth()+t+1,0);const s=i.getDate();return a>=s?i:(r.setFullYear(i.getFullYear(),i.getMonth(),a),r)}function M(e,t,n){const{years:r=0,months:a=0,weeks:i=0,days:s=0,hours:o=0,minutes:c=0,seconds:d=0}=t,h=g(e),f=a||r?B(h,a+r*12):h,l=s||i?q(f,s+i*7):f,u=c+o*60,p=(d+u*60)*1e3;return y(e,+l+p)}let J={};function O(){return J}function S(e){const t=g(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),+e-+n}function b(e,...t){const n=y.bind(null,e||t.find(r=>typeof r=="object"));return t.map(n)}function N(e,t){const n=g(e);return n.setHours(0,0,0,0),n}function G(e,t,n){const[r,a]=b(n?.in,e,t),i=N(r),s=N(a),o=+i-S(i),c=+s-S(s);return Math.round((o-c)/H)}function w(e,t){const n=+g(e)-+g(t);return n<0?-1:n>0?1:n}function Q(e){return y(e,Date.now())}function K(e,t,n){const[r,a]=b(n?.in,e,t),i=r.getFullYear()-a.getFullYear(),s=r.getMonth()-a.getMonth();return i*12+s}function Z(e,t,n){const[r,a]=b(n?.in,e,t);return r.getFullYear()-a.getFullYear()}function ee(e,t,n){const[r,a]=b(n?.in,e,t),i=A(r,a),s=Math.abs(G(r,a));r.setDate(r.getDate()-i*s);const o=+(A(r,a)===-i),c=i*(s-o);return c===0?0:c}function A(e,t){const n=e.getFullYear()-t.getFullYear()||e.getMonth()-t.getMonth()||e.getDate()-t.getDate()||e.getHours()-t.getHours()||e.getMinutes()-t.getMinutes()||e.getSeconds()-t.getSeconds()||e.getMilliseconds()-t.getMilliseconds();return n<0?-1:n>0?1:n}function k(e){return t=>{const r=(e?Math[e]:Math.trunc)(t);return r===0?0:r}}function te(e,t,n){const[r,a]=b(n?.in,e,t),i=(+r-+a)/V;return k(n?.roundingMethod)(i)}function z(e,t){return+g(e)-+g(t)}function ne(e,t,n){const r=z(e,t)/U;return k(n?.roundingMethod)(r)}function re(e,t){const n=g(e);return n.setHours(23,59,59,999),n}function ae(e,t){const n=g(e),r=n.getMonth();return n.setFullYear(n.getFullYear(),r+1,0),n.setHours(23,59,59,999),n}function ie(e,t){const n=g(e);return+re(n)==+ae(n)}function L(e,t,n){const[r,a,i]=b(n?.in,e,e,t),s=w(a,i),o=Math.abs(K(a,i));if(o<1)return 0;a.getMonth()===1&&a.getDate()>27&&a.setDate(30),a.setMonth(a.getMonth()-s*o);let c=w(a,i)===-s;ie(r)&&o===1&&w(r,i)===1&&(c=!1);const d=s*(o-+c);return d===0?0:d}function Y(e,t,n){const r=z(e,t)/1e3;return k(n?.roundingMethod)(r)}function oe(e,t,n){const[r,a]=b(n?.in,e,t),i=w(r,a),s=Math.abs(Z(r,a));r.setFullYear(1584),a.setFullYear(1584);const o=w(r,a)===-i,c=i*(s-+o);return c===0?0:c}function se(e,t){const[n,r]=b(e,t.start,t.end);return{start:n,end:r}}const ue={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},ce=(e,t,n)=>{let r;const a=ue[e];return typeof a=="string"?r=a:t===1?r=a.one:r=a.other.replace("{{count}}",t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+r:r+" ago":r};function P(e){return(t={})=>{const n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}const le={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},de={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},fe={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},he={date:P({formats:le,defaultWidth:"full"}),time:P({formats:de,defaultWidth:"full"}),dateTime:P({formats:fe,defaultWidth:"full"})},me={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},ge=(e,t,n,r)=>me[e];function D(e){return(t,n)=>{const r=n?.context?String(n.context):"standalone";let a;if(r==="formatting"&&e.formattingValues){const s=e.defaultFormattingWidth||e.defaultWidth,o=n?.width?String(n.width):s;a=e.formattingValues[o]||e.formattingValues[s]}else{const s=e.defaultWidth,o=n?.width?String(n.width):e.defaultWidth;a=e.values[o]||e.values[s]}const i=e.argumentCallback?e.argumentCallback(t):t;return a[i]}}const be={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},pe={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},ye={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},we={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},Me={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},De={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},ve=(e,t)=>{const n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},xe={ordinalNumber:ve,era:D({values:be,defaultWidth:"wide"}),quarter:D({values:pe,defaultWidth:"wide",argumentCallback:e=>e-1}),month:D({values:ye,defaultWidth:"wide"}),day:D({values:we,defaultWidth:"wide"}),dayPeriod:D({values:Me,defaultWidth:"wide",formattingValues:De,defaultFormattingWidth:"wide"})};function v(e){return(t,n={})=>{const r=n.width,a=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],i=t.match(a);if(!i)return null;const s=i[0],o=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(o)?Pe(o,f=>f.test(s)):Se(o,f=>f.test(s));let d;d=e.valueCallback?e.valueCallback(c):c,d=n.valueCallback?n.valueCallback(d):d;const h=t.slice(s.length);return{value:d,rest:h}}}function Se(e,t){for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}function Pe(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return n}function ke(e){return(t,n={})=>{const r=t.match(e.matchPattern);if(!r)return null;const a=r[0],i=t.match(e.parsePattern);if(!i)return null;let s=e.valueCallback?e.valueCallback(i[0]):i[0];s=n.valueCallback?n.valueCallback(s):s;const o=t.slice(a.length);return{value:s,rest:o}}}const Te=/^(\d+)(th|st|nd|rd)?/i,Ce=/\d+/i,Fe={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},We={any:[/^b/i,/^(a|c)/i]},Ne={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},Ae={any:[/1/i,/2/i,/3/i,/4/i]},Ie={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},_e={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Oe={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},ze={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},Le={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},Ye={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},Re={ordinalNumber:ke({matchPattern:Te,parsePattern:Ce,valueCallback:e=>parseInt(e,10)}),era:v({matchPatterns:Fe,defaultMatchWidth:"wide",parsePatterns:We,defaultParseWidth:"any"}),quarter:v({matchPatterns:Ne,defaultMatchWidth:"wide",parsePatterns:Ae,defaultParseWidth:"any",valueCallback:e=>e+1}),month:v({matchPatterns:Ie,defaultMatchWidth:"wide",parsePatterns:_e,defaultParseWidth:"any"}),day:v({matchPatterns:Oe,defaultMatchWidth:"wide",parsePatterns:ze,defaultParseWidth:"any"}),dayPeriod:v({matchPatterns:Le,defaultMatchWidth:"any",parsePatterns:Ye,defaultParseWidth:"any"})},R={code:"en-US",formatDistance:ce,formatLong:he,formatRelative:ge,localize:xe,match:Re,options:{weekStartsOn:0,firstWeekContainsDate:1}};function Ee(e,t,n){const r=O(),a=n?.locale??r.locale??R,i=2520,s=w(e,t);if(isNaN(s))throw new RangeError("Invalid time value");const o=Object.assign({},n,{addSuffix:n?.addSuffix,comparison:s}),[c,d]=b(n?.in,...s>0?[t,e]:[e,t]),h=Y(d,c),f=(S(d)-S(c))/1e3,l=Math.round((h-f)/60);let u;if(l<2)return n?.includeSeconds?h<5?a.formatDistance("lessThanXSeconds",5,o):h<10?a.formatDistance("lessThanXSeconds",10,o):h<20?a.formatDistance("lessThanXSeconds",20,o):h<40?a.formatDistance("halfAMinute",0,o):h<60?a.formatDistance("lessThanXMinutes",1,o):a.formatDistance("xMinutes",1,o):l===0?a.formatDistance("lessThanXMinutes",1,o):a.formatDistance("xMinutes",l,o);if(l<45)return a.formatDistance("xMinutes",l,o);if(l<90)return a.formatDistance("aboutXHours",1,o);if(l<F){const m=Math.round(l/60);return a.formatDistance("aboutXHours",m,o)}else{if(l<i)return a.formatDistance("xDays",1,o);if(l<x){const m=Math.round(l/F);return a.formatDistance("xDays",m,o)}else if(l<x*2)return u=Math.round(l/x),a.formatDistance("aboutXMonths",u,o)}if(u=L(d,c),u<12){const m=Math.round(l/x);return a.formatDistance("xMonths",m,o)}else{const m=u%12,p=Math.trunc(u/12);return m<3?a.formatDistance("aboutXYears",p,o):m<9?a.formatDistance("overXYears",p,o):a.formatDistance("almostXYears",p+1,o)}}function $e(e,t){return Ee(e,Q(e),t)}const je=["years","months","weeks","days","hours","minutes","seconds"];function E(e,t){const n=O(),r=t?.locale??n.locale??R,a=t?.format??je,i=t?.zero??!1,s=t?.delimiter??" ";return r.formatDistance?a.reduce((c,d)=>{const h=`x${d.replace(/(^.)/,l=>l.toUpperCase())}`,f=e[d];return f!==void 0&&(i||e[d])?c.concat(r.formatDistance(h,f)):c},[]).join(s):""}function Xe(e,t){const{start:n,end:r}=se(t?.in,e),a={},i=oe(r,n);i&&(a.years=i);const s=M(n,{years:a.years}),o=L(r,s);o&&(a.months=o);const c=M(s,{months:a.months}),d=ee(r,c);d&&(a.days=d);const h=M(c,{days:a.days}),f=te(r,h);f&&(a.hours=f);const l=M(h,{hours:a.hours}),u=ne(r,l);u&&(a.minutes=u);const m=M(l,{minutes:a.minutes}),p=Y(r,m);return p&&(a.seconds=p),a}const He="piwi:",$=["critical","high","medium","low"];new Set($);function Qe(e){return typeof e=="string"&&e.trim().toLowerCase().startsWith(He)}function Ke(e){return $.includes(e)?e:void 0}function Ze(e){return({column:t})=>{const n=t.getIsSorted();return C("button",{class:"flex items-center gap-1 font-semibold select-none cursor-pointer hover:text-highlighted transition-colors",onClick:()=>t.toggleSorting()},[e,C(X,{name:n==="asc"?"i-lucide-chevron-up":n==="desc"?"i-lucide-chevron-down":"i-lucide-chevrons-up-down",class:["shrink-0 size-3.5",!n&&"opacity-40"]})])}}function et(e,t={}){if(e==null||e==="")return"N/A";let n;if(e instanceof Date)n=e;else{const r=typeof e=="number"?e:Number(e);!Number.isNaN(r)&&String(e).trim()!==""?n=new Date(r<1e12?r*1e3:r):n=new Date(e)}return Number.isNaN(n.getTime())?"N/A":t.dateOnly?n.toLocaleDateString():n.toLocaleString()}function tt(e){return e?$e(new Date(e),{addSuffix:!0}):"N/A"}function nt(e){if(e==null)return"N/A";const t=Math.round(Math.abs(e));return t===0?"0 seconds":(e<0?"−":"")+E({seconds:t/1e3})}function rt(e){if(e==null)return"N/A";const t=Math.round(Math.abs(e));if(t<1e3)return"less than a second";const n=Xe({start:0,end:t}),r=["years","months","days","hours","minutes","seconds"].filter(i=>(n[i]??0)>0);return(e<0?"−":"")+E(n,{format:r.slice(0,2),delimiter:" "})}function at(e){if(e==null)return null;const t=Math.round(Math.abs(e)),n=e<0?"−":"";if(t<1e3)return{value:n+t,unit:"ms"};const r=t/1e3;return r<60?{value:n+Math.round(r*10)/10,unit:"s"}:{value:n+Math.round(r/60*10)/10,unit:"m"}}function it(e){switch(e){case"html":return"i-lucide-layout-dashboard";case"monocart":return"i-lucide-bar-chart-2";case"blob":return"i-lucide-download";default:return"i-lucide-file-text"}}function ot(e){if(!e)return"i-lucide-globe";const t=e.toLowerCase();return t.includes("chrome")||t.includes("chromium")?"i-simple-icons-googlechrome":t.includes("firefox")?"i-simple-icons-firefoxbrowser":t.includes("safari")||t.includes("webkit")?"i-simple-icons-safari":t.includes("edge")?"i-simple-icons-microsoftedge":"i-lucide-globe"}function st(e){if(!e)return"#6b7280";const t=e.toLowerCase();return t.includes("chrome")||t.includes("chromium")?"#4285F4":t.includes("firefox")?"#FF7139":t.includes("safari")||t.includes("webkit")?"#007AFF":t.includes("edge")?"#0078D7":"#6b7280"}function Ue(e){switch(e){case"passed":return"success";case"failed":return"error";case"timedout":return"warning";case"timedOut":return"warning";case"interrupted":return"warning";case"cancelled":return"neutral";case"initializing":return"info";case"running":return"info";case"finalizing":return"info";default:return"neutral"}}function T(e){return e==="timedOut"?"timedout":e}function ut(e){switch(T(e)){case"passed":return"i-lucide-check-circle-2";case"failed":case"timedout":return"i-lucide-x-circle";case"didnotrun":return"i-lucide-circle-slash";case"running":case"initializing":case"finalizing":return"i-lucide-loader-circle";default:return"i-lucide-minus-circle"}}function ct(e){switch(T(e)){case"passed":return"text-emerald-600 dark:text-emerald-400";case"failed":case"timedout":return"text-rose-600 dark:text-rose-400";case"didnotrun":return"text-amber-600 dark:text-amber-400";case"running":case"initializing":case"finalizing":return"text-blue-600 dark:text-blue-400";default:return"text-zinc-400 dark:text-zinc-500"}}function lt(e){const t=T(e);return t==="running"||t==="initializing"||t==="finalizing"}function dt(e){return e==="timedOut"||e==="timedout"?"failed":e==="didnotrun"?"didn't run":e==="never-run"?"never run":e}function ft(e){switch(e){case"previous-failure":return"Blocked by an earlier failure";case"global-timeout":return"Global timeout reached";case"max-failures":return"Max failures reached";case"interrupted":return"Run interrupted";default:return"Didn't run"}}function ht(e){return e&&{open:"warning",resolved:"success",ignored:"neutral"}[e]||"neutral"}function mt(e){switch(e){case"diagnosis-verified":return{label:"Fix verified",color:"success",icon:"i-lucide-badge-check",hint:"The tests went green and the change touched the files the diagnosis named."};case"stopped-failing":return{label:"Stopped failing",color:"info",icon:"i-lucide-check",hint:"The tests went green. Nothing corroborates which change did it."};case"regressed":return{label:"Regressed",color:"error",icon:"i-lucide-undo-2",hint:"A fix was recorded for this cluster and it did not hold — the failure came back."};default:return null}}function gt(e){return e&&{timeout:"warning",assertion:"error","strict-mode":"info",navigation:"secondary",crash:"error",unknown:"neutral"}[e]||"neutral"}const I=["#ef4444","#f97316","#f59e0b","#84cc16","#10b981","#14b8a6","#06b6d4","#3b82f6","#6366f1","#8b5cf6","#d946ef","#ec4899"];function bt(){return I[Math.floor(Math.random()*I.length)]}function j(e){return!e.startsWith(".")&&!e.startsWith("/")?e:e.replace(".data/storage/","")}function pt(e,t,n="/",r=!1){const a=(n||"/").replace(/\/$/,""),i=new URLSearchParams,s=/\.[a-z0-9]+$/i.test(e);t&&!s&&i.set("contentType",t),r&&i.set("compress","1");const o=i.toString();return`${a}/api/files/${j(e)}${o?`?${o}`:""}`}function yt(e,t="/",n=!1){const r=(t||"/").replace(/\/$/,""),s=`${typeof location>"u"?"":location.origin}${r}/${n?"":"api/files/"}${j(e)}`;return`${r}/trace-viewer/?trace=${encodeURIComponent(s)}`}function wt(e,t="Unknown error"){if(e&&typeof e=="object"){const n=e;return n.data?.message??n.message??t}return t}function Mt(e,t){const n=t.trim().toLowerCase();return n?e.filter(r=>r.message.toLowerCase().includes(n)||r.author.toLowerCase().includes(n)||r.sha.includes(n)||r.shortSha.includes(n)):e}function Dt(e){switch(e){case"added":return{icon:"i-lucide-file-plus",color:"text-green-500",badgeColor:"success"};case"removed":return{icon:"i-lucide-file-minus",color:"text-red-500",badgeColor:"error"};case"renamed":return{icon:"i-lucide-file-symlink",color:"text-blue-500",badgeColor:"info"};default:return{icon:"i-lucide-file-pen-line",color:"text-gray-400",badgeColor:"neutral"}}}const vt={add:"bg-green-50 dark:bg-green-950/30 text-green-800 dark:text-green-300",remove:"bg-red-50 dark:bg-red-950/30 text-red-800 dark:text-red-300",hunk:"bg-blue-50 dark:bg-blue-950/20 text-blue-500 dark:text-blue-400",context:"text-gray-600 dark:text-gray-400"};function xt(e){return e.split(`
|
|
2
|
-
`).map(t=>t.startsWith("+")&&!t.startsWith("+++")?{type:"add",text:t}:t.startsWith("-")&&!t.startsWith("---")?{type:"remove",text:t}:t.startsWith("@@")?{type:"hunk",text:t}:{type:"context",text:t})}const Ve="\x1B",qe={30:"#000000",31:"#dc2626",32:"#16a34a",33:"#d97706",34:"#2563eb",35:"#9333ea",36:"#0891b2",37:"#9ca3af"},Be={40:"#000000",41:"#dc2626",42:"#16a34a",43:"#d97706",44:"#2563eb",45:"#9333ea",46:"#0891b2",47:"#9ca3af"},_=new RegExp(`${Ve}\\[([0-9;]*)m`,"g");function Je(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function St(e){const t=[];let n=0,r,a,i=!1,s=!1,o=!1,c=!1;const d=l=>{if(!l)return;const u=[];i&&u.push("font-weight:600"),s&&u.push("opacity:.7"),o&&u.push("font-style:italic"),c&&u.push("text-decoration:underline"),r&&u.push(`color:${r}`),a&&u.push(`background:${a}`);const m=Je(l);t.push(u.length?`<span style="${u.join(";")}">${m}</span>`:m)},h=l=>{for(const u of l)u===0?(r=void 0,a=void 0,i=!1,s=!1,o=!1,c=!1):u===1?i=!0:u===2?s=!0:u===3?o=!0:u===4?c=!0:u===22?(i=!1,s=!1):u===23?o=!1:u===24?c=!1:u>=30&&u<=37?r=qe[u]:u===39?r=void 0:u>=40&&u<=47?a=Be[u]:u===49&&(a=void 0)};let f;for(;(f=_.exec(e))!==null;){d(e.slice(n,f.index)),n=_.lastIndex;const l=f[1]?f[1].split(";").map(Number):[0];h(l)}return d(e.slice(n)),t.join("")}function Pt(e,t=120){if(!e)return"";const n=e.replace(/\n/g," · ");return n.length<=t?n:n.slice(0,t)+"…"}function kt(e){return e.totalTests>0?Math.round(e.passedTests/e.totalTests*100):0}function Tt(e){return e==="flaky"?"warning":e==="never-run"?"neutral":e==="didnotrun"?"warning":Ue(e)}function Ct(e){switch(e.toUpperCase()){case"GET":return"info";case"POST":return"success";case"DELETE":return"error";case"PUT":case"PATCH":return"warning";default:return"neutral"}}function Ft(e){return!e||e<=0?"neutral":e>=500?"error":e>=400?"warning":"success"}export{it as A,ct as B,ut as C,lt as D,ot as E,st as F,bt as G,at as H,kt as I,tt as a,rt as b,gt as c,ht as d,wt as e,nt as f,mt as g,Mt as h,Pt as i,Ze as j,Ue as k,dt as l,Tt as m,Qe as n,ft as o,et as p,pt as q,St as r,Dt as s,Ke as t,Ct as u,Ft as v,vt as w,xt as x,yt as y,j as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as i,o as a,c as t,U as n,F as r,z as c,e as d,f as _,g as m,t as b,j as u}from"./BdQ7kfxJ.js";const p={class:"flex items-center gap-1.5"},f={class:"hidden sm:inline"},g=i({__name:"NavbarActions",props:{actions:{},size:{default:"md"}},setup(s){return(l,k)=>{const o=u;return a(),t("div",p,[n(l.$slots,"leading"),(a(!0),t(r,null,c(s.actions,e=>(a(),d(o,{key:e.label,icon:e.icon,size:s.size,color:e.color,variant:e.variant,to:e.to,loading:e.loading,disabled:e.disabled,"aria-label":e.label,title:e.label,onClick:v=>e.onClick?.()},{default:_(()=>[m("span",f,b(e.label),1)]),_:2},1032,["icon","size","color","variant","to","loading","disabled","aria-label","title","onClick"]))),128)),n(l.$slots,"default")])}}}),z=Object.assign(g,{__name:"NavbarActions"});export{z as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as be,a as he}from"./BV8EzO8q.js";import{_ as ke,a as je}from"./CrsaY0R_.js";import{_ as $e}from"./DxPZIuWy.js";import{_ as Re,a as Ce}from"./B7uPoZ7T.js";import{d as J,K as Pe,q as Q,C as De,am as Ne,a as Z,b as i,o,c as l,h as a,_ as we,g as r,f as n,k as p,j as G,t as R,e as x,l as y,L as Te,r as v,s as Fe,F as L,E as Ue,I as Le,z as K,H as Se,v as V,J as ze,n as Be}from"./BdQ7kfxJ.js";import{_ as Ke}from"./B0eHOux4.js";import{_ as Ve}from"./LWIyaZKe.js";import{_ as Ie}from"./DzJa19LG.js";import{_ as Me}from"./BnhWd06P.js";import{_ as Ee}from"./D5SN7rPK.js";import{_ as He}from"./CLrLFf3s.js";import{_ as Oe}from"./DPPhFZOr.js";import{_ as qe}from"./Be0bwdsi.js";import{_ as Ae}from"./CfV2N201.js";import{_ as Je,a as Qe}from"./CZlz5y13.js";import{p as Ze,a as Ge,s as We}from"./BL8cYWsR.js";import{e as W,p as Xe,j as D}from"./DwZS0oRm.js";import{_ as Ye}from"./BtcDY0Du.js";import{_ as et}from"./CK2AMqz_.js";import{u as A}from"./DTtizz85.js";import{o as tt,s as I}from"./DGnQ69wW.js";import"./Bo73sAu8.js";import"./Bg63qh8W.js";import"./C_eXufkv.js";import"./D-c8ZSws.js";import"./EJllK0wm.js";import"./CyWOerIG.js";import"./CxwnFFD0.js";import"./dg6uXTyR.js";import"./CUWrUpTl.js";import"./i7znB42v.js";import"./rPG7kzfL.js";const ot={key:0},st={key:0,class:"rounded-lg border border-dashed border-default p-3 flex flex-wrap items-center gap-3"},at={key:1,class:"rounded-lg border border-default p-3 space-y-3"},nt={class:"flex items-center justify-between gap-3"},lt={class:"flex items-center gap-2 min-w-0 text-sm"},rt={class:"text-xs break-all"},it={class:"flex items-center gap-1.5 shrink-0"},ct=J({__name:"DesktopNewProjectFolder",props:{folder:{default:null},folderModifiers:{}},emits:Te(["detected"],["update:folder"]),setup(M,{emit:k}){const b=Pe(M,"folder"),S=k,z=Q(),N=v(!1);De(()=>{N.value=!!Ne()});const _=v(null),f=v(!1);async function w(){f.value=!0;try{const c=await Ze();c&&(b.value=c)}catch(c){z.add({title:"Could not open the folder picker",description:W(c),color:"error"})}finally{f.value=!1}}function j(){b.value=null}return Z(b,async c=>{_.value=c?await Ge(c):null,_.value&&S("detected",_.value)},{immediate:!0}),(c,u)=>{const T=we,C=G,g=Je;return i(N)?(o(),l("div",ot,[b.value?(o(),l("div",at,[r("div",nt,[r("div",lt,[a(T,{name:"i-lucide-folder-check",class:"size-4 shrink-0 text-primary"}),r("code",rt,R(b.value),1)]),r("div",it,[a(C,{size:"xs",color:"neutral",variant:"soft",icon:"i-lucide-folder-search",loading:i(f),onClick:w},{default:n(()=>[...u[2]||(u[2]=[p(" Change ",-1)])]),_:1},8,["loading"]),a(C,{size:"xs",color:"neutral",variant:"ghost",icon:"i-lucide-x",disabled:i(f),onClick:j},{default:n(()=>[...u[3]||(u[3]=[p(" Clear ",-1)])]),_:1},8,["disabled"])])]),i(_)?(o(),x(g,{key:0,inspection:i(_)},null,8,["inspection"])):y("",!0),u[4]||(u[4]=r("p",{class:"text-xs text-muted"},"The folder is linked to the new project for local runs and IDE links.",-1))])):(o(),l("div",st,[a(T,{name:"i-lucide-folder-search",class:"size-5 shrink-0 text-muted"}),u[1]||(u[1]=r("div",{class:"min-w-0 flex-1 text-sm"},[r("p",{class:"font-medium"},"Start from a folder on this machine"),r("p",{class:"text-xs text-muted"},"Detects the project name and checks the Playwright + Piwi reporter setup.")],-1)),a(C,{color:"neutral",variant:"soft",size:"sm",icon:"i-lucide-folder-open",loading:i(f),onClick:w},{default:n(()=>[...u[0]||(u[0]=[p(" Choose folder… ",-1)])]),_:1},8,["loading"])]))])):y("",!0)}}}),dt=Object.assign(ct,{__name:"DesktopNewProjectFolder"}),ut={class:"flex flex-wrap items-center gap-3 mb-4"},mt={key:0,class:"flex flex-wrap items-center gap-2"},pt={class:"text-sm text-muted shrink-0 inline-flex items-center gap-1"},_t=["onClick"],ft={class:"flex flex-col gap-1"},gt={class:"flex items-center gap-2"},xt={key:0,class:"flex flex-wrap gap-1"},yt={key:0,class:"text-xs text-gray-600 italic"},vt={key:1},bt={key:0,class:"text-xs text-gray-600"},ht={key:1,class:"text-xs text-gray-600 italic"},kt={key:0,class:"flex items-center gap-1 flex-wrap"},jt={key:0,class:"text-xs font-medium bg-gray-100 dark:bg-gray-800 px-1.5 py-0.5 rounded"},$t={key:1,class:"text-xs text-gray-500"},Rt={key:1,class:"text-xs text-gray-600 italic"},Ct={key:1,class:"text-xs text-gray-600 italic"},Pt={key:1,class:"text-xs text-gray-600 italic"},Dt={class:"flex justify-end gap-2"},Nt={key:1,class:"space-y-2","aria-busy":"true"},wt={key:2,class:"text-center py-12 text-gray-500"},Tt={class:"text-xs text-gray-400 max-w-sm"},Ft={class:"space-y-5"},Ut={class:"flex w-full justify-end gap-2"},po=J({__name:"index",setup(M){Fe({title:"Projects — Piwi Dashboard"});const{data:k,refresh:b,status:S}=A("/api/projects",{key:"projects",lazy:!0,default:()=>[],transform:s=>s.items},"$6DHNZL9pIE"),{data:z,refresh:N}=A("/api/tags",{lazy:!0},"$FLI1EBmEg_"),_=Q(),f=V(()=>z.value?.items||[]),w=V(()=>S.value==="pending"&&!k.value?.length),j=v(""),c=v([]),u=V(()=>{let s=k.value||[];if(j.value.trim()){const t=j.value.trim().toLowerCase();s=s.filter(m=>(m.label||m.name).toLowerCase().includes(t)||m.name.toLowerCase().includes(t))}return c.value.length>0&&(s=s.filter(t=>c.value.some(m=>(t.tags||[]).some(h=>h.id===m)))),s});function T(s){const t=c.value.indexOf(s);t===-1?c.value.push(s):c.value.splice(t,1)}function C(s){return c.value.includes(s)}const g=v(!1),X=tt({name:I().min(1,"Project name is required").max(100),label:I().optional(),description:I().optional()}),d=ze({name:"",label:"",description:""}),F=v([]),B=v(!1),P=v(null);function Y(s){s.suggestedName&&(d.name=s.suggestedName)}Z(g,s=>{s||(P.value=null)});function ee(){d.name="",d.label="",d.description="",F.value=[],P.value=null}async function te(){if(d.name?.trim())try{B.value=!0;const s=await $fetch("/api/projects",{method:"POST",body:{name:d.name.trim(),label:d.label?.trim()||null,description:d.description?.trim()||null,tagIds:F.value.map(h=>h.id)}}),t=P.value;let m=!1;if(t&&s?.project?.id!=null)try{await We(s.project.id,t),m=!0}catch(h){_.add({title:"Project created, but the folder could not be linked",description:W(h),color:"warning"})}if(_.add({title:"Project created",description:m?`Project "${d.name}" has been created and linked to its folder`:`Project "${d.name}" has been created`,color:"success"}),g.value=!1,ee(),m&&s?.project?.id!=null){await Be(`/projects/${s.project.id}`);return}await b()}catch(s){const t=s&&typeof s=="object"&&"data"in s?s.data?.message:void 0;_.add({title:"Failed to create project",description:t||"An error occurred",color:"error"})}finally{B.value=!1}}const oe=[{header:"Project",columns:[{accessorKey:"name",header:D("Name")},{accessorKey:"totalRuns",header:D("Runs")}]},{accessorKey:"latestRunData",header:"Latest run",columns:[{accessorKey:"latestRun",header:D("Date")},{accessorKey:"branch",header:"Branch"},{accessorKey:"duration",header:D("Duration")},{accessorKey:"status",header:D("Status")},{accessorKey:"testRatio",header:"Test status"},{accessorKey:"report",header:"Reports"}]},{accessorKey:"actions",header:"Project actions"}];return(s,t)=>{const m=be,h=he,E=ke,se=$e,ae=Ce,ne=Le,H=Ke,$=G,O=Se,le=Ve,re=Ie,ie=Me,ce=Ee,de=He,ue=Oe,q=qe,me=je,pe=Ae,_e=Re,fe=dt,ge=Qe,xe=Ye,ye=et,ve=Ue;return o(),l(L,null,[a(_e,{id:"projects"},{header:n(()=>[a(ae,null,{leading:n(()=>[a(m),a(h,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects"}]})]),right:n(()=>[a(se,{actions:[{label:"New project",icon:"i-lucide-plus",onClick:()=>g.value=!0},{label:"Refresh",icon:"i-lucide-refresh-cw",variant:"outline",onClick:()=>i(b)()}]},{leading:n(()=>[a(E,{topic:"projects.table",size:"sm"})]),_:1},8,["actions"])]),_:1})]),body:n(()=>[r("div",ut,[a(ne,{modelValue:j.value,"onUpdate:modelValue":t[0]||(t[0]=e=>j.value=e),icon:"i-lucide-search",placeholder:"Search projects by name...",class:"min-w-48 flex-1",ui:{base:"w-full"}},null,8,["modelValue"]),f.value.length>0?(o(),l("div",mt,[r("span",pt,[t[11]||(t[11]=p(" Filter by tag (any match): ",-1)),a(E,{topic:"projects.tag-filter"})]),(o(!0),l(L,null,K(f.value,e=>(o(),l("button",{key:e.id,type:"button",class:"cursor-pointer focus:outline-none",onClick:U=>T(e.id)},[a(H,{text:e.text,color:e.color,variant:C(e.id)?"solid":"outline"},null,8,["text","color","variant"])],8,_t))),128)),c.value.length>0?(o(),x($,{key:0,size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-x",label:"Clear filters",onClick:t[1]||(t[1]=e=>c.value=[])})):y("",!0)])):y("",!0)]),u.value.length>0?(o(),x(ue,{key:0,"min-width":"60rem",bleed:!1},{default:n(()=>[a(de,{data:u.value,columns:oe,ui:{base:"table-fixed border-separate border-spacing-0",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"}},{"name-cell":n(({row:e})=>[r("div",ft,[r("div",gt,[a(O,{to:`/projects/${e.original.id}`,class:"text-primary hover:underline font-medium"},{default:n(()=>[p(R(e.original.label||e.original.name),1)]),_:2},1032,["to"])]),e.original.tags?.length?(o(),l("div",xt,[(o(!0),l(L,null,K(e.original.tags,U=>(o(),x(H,{key:U.id,text:U.text,color:U.color},null,8,["text","color"]))),128))])):y("",!0)])]),"totalRuns-cell":n(({row:e})=>[e.original.totalRuns===0?(o(),l("span",yt,"No data")):(o(),l("span",vt,R(e.original.totalRuns)+" runs",1))]),"latestRun-cell":n(({row:e})=>[e.original.latestRun?(o(),l("span",bt,R(("prettyDateFormat"in s?s.prettyDateFormat:i(Xe))(e.original.latestRun.startTime)),1)):(o(),l("span",ht,"No data"))]),"branch-cell":n(({row:e})=>[e.original.latestRun?.metadata?.scm?(o(),l("div",kt,[e.original.latestRun.metadata.scm.branch?(o(),l("span",jt,R(e.original.latestRun.metadata.scm.branch),1)):y("",!0),e.original.latestRun.metadata.scm.commit?(o(),l("code",$t,R(e.original.latestRun.metadata.scm.commit.substring(0,7)),1)):y("",!0)])):y("",!0)]),"duration-cell":n(({row:e})=>[e.original.latestRun?.duration!=null?(o(),x(le,{key:0,ms:e.original.latestRun.duration,class:"text-sm text-gray-600"},null,8,["ms"])):(o(),l("span",Rt,"No data"))]),"status-cell":n(({row:e})=>[e.original.latestRun?(o(),x(re,{key:0,status:e.original.latestRun.status},null,8,["status"])):(o(),l("span",Ct,"No data"))]),"testRatio-cell":n(({row:e})=>[e.original.latestRun?(o(),x(ie,{key:0,passed:e.original.latestRun.passedTests,failed:e.original.latestRun.failedTests,skipped:e.original.latestRun.skippedTests,flaky:e.original.latestRun.flakyTests,"did-not-run":e.original.latestRun.didNotRunTests??0,total:e.original.latestRun.totalTests},null,8,["passed","failed","skipped","flaky","did-not-run","total"])):(o(),l("span",Pt,"No data"))]),"report-cell":n(({row:e})=>[e.original.latestRun?(o(),x(ce,{key:0,reports:e.original.latestRun.reports},null,8,["reports"])):y("",!0)]),"actions-header":n(()=>[...t[12]||(t[12]=[r("div",{class:"text-right"},"Project actions",-1)])]),"actions-cell":n(({row:e})=>[r("div",Dt,[a($,{to:`/projects/${e.original.id}`,size:"sm",variant:"outline"},{default:n(()=>[...t[13]||(t[13]=[p("View details",-1)])]),_:1},8,["to"]),a($,{to:`/projects/${e.original.id}/edit`,size:"sm",variant:"ghost",icon:"i-lucide-pencil"},null,8,["to"])])]),_:1},8,["data"])]),_:1})):w.value?(o(),l("div",Nt,[t[14]||(t[14]=r("span",{class:"sr-only",role:"status"},"Loading projects…",-1)),a(q,{class:"h-10 w-full rounded-lg"}),(o(),l(L,null,K(6,e=>a(q,{key:e,class:"h-14 w-full rounded-lg"})),64))])):i(k)&&i(k).length>0?(o(),l("div",wt,[...t[15]||(t[15]=[r("p",{class:"text-lg mb-2"},"No projects match your search",-1),r("p",{class:"text-sm"},"Try adjusting your search or filters",-1)])])):(o(),x(pe,{key:3,icon:"i-lucide-rocket",text:"No projects yet"},{default:n(()=>[r("p",Tt,[t[18]||(t[18]=p(" Projects are created automatically once the reporter submits its first run — see the ",-1)),a(O,{to:"/",class:"text-primary hover:underline"},{default:n(()=>[...t[16]||(t[16]=[p("home page",-1)])]),_:1}),t[19]||(t[19]=p(" for a copy-paste setup snippet, or the ",-1)),a(me,{to:"reporter","no-icon":"",class:"text-primary hover:underline"},{default:n(()=>[...t[17]||(t[17]=[p("reporter docs",-1)])]),_:1}),t[20]||(t[20]=p(". ",-1))]),a($,{icon:"i-lucide-plus",label:"New project",variant:"ghost",size:"sm",class:"mt-2",onClick:t[2]||(t[2]=e=>g.value=!0)})]),_:1}))]),_:1}),a(ve,null,{default:n(()=>[a(ye,{open:g.value,title:"Create new project","onUpdate:open":t[10]||(t[10]=e=>g.value=e)},{body:n(()=>[r("div",Ft,[a(fe,{folder:P.value,"onUpdate:folder":t[3]||(t[3]=e=>P.value=e),onDetected:Y},null,8,["folder"]),a(xe,{schema:i(X),state:i(d)},{default:n(()=>[a(ge,{mode:"create",name:i(d).name,"onUpdate:name":t[4]||(t[4]=e=>i(d).name=e),label:i(d).label,"onUpdate:label":t[5]||(t[5]=e=>i(d).label=e),description:i(d).description,"onUpdate:description":t[6]||(t[6]=e=>i(d).description=e),tags:F.value,"onUpdate:tags":t[7]||(t[7]=e=>F.value=e),"all-tags":f.value,onTagCreated:t[8]||(t[8]=e=>i(N)())},null,8,["name","label","description","tags","all-tags"])]),_:1},8,["schema","state"])])]),footer:n(()=>[r("div",Ut,[a($,{color:"neutral",variant:"ghost",label:"Cancel",onClick:t[9]||(t[9]=e=>g.value=!1)}),a($,{label:"Create project",icon:"i-lucide-plus",loading:B.value,onClick:te},null,8,["loading"])])]),_:1},8,["open"])]),_:1})],64)}}});export{po as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"id":"a5fb24cc-65e3-4e55-aa12-038fe2de4754","timestamp":1787178972675,"prerendered":[]}
|