@piwitests/server 0.15.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{DCCMLWel.js → -9tk1FrT.js} +1 -1
- package/.output/public/_nuxt/26ll_vBr.js +1 -0
- package/.output/public/_nuxt/{BpepjHwc.js → 3QTorEhJ.js} +1 -1
- package/.output/public/_nuxt/{DKTDub7I.js → 3QTvYrZp.js} +1 -1
- package/.output/public/_nuxt/{CHSkT2s0.js → 73aPL7Ir.js} +1 -1
- package/.output/public/_nuxt/8jZmK2De.js +4 -0
- package/.output/public/_nuxt/8xyZSRSO.js +1 -0
- package/.output/public/_nuxt/{V1BQiRoh.js → 99tAfVF5.js} +1 -1
- package/.output/public/_nuxt/{BY0AkhJh.js → B1CUXGbl.js} +1 -1
- package/.output/public/_nuxt/B6hPf4UR.js +1 -0
- package/.output/public/_nuxt/{F07TcX0U.js → B6w76fJT.js} +1 -1
- package/.output/public/_nuxt/{B32-7cBF.js → BDcIWTTq.js} +1 -1
- package/.output/public/_nuxt/{OG2n3p77.js → BE8ykmwr.js} +1 -1
- package/.output/public/_nuxt/{rvaZFYoE.js → BEsJE07U.js} +1 -1
- package/.output/public/_nuxt/{DQpa8F03.js → BGZQONfm.js} +1 -1
- package/.output/public/_nuxt/{DZoSxwj6.js → BRdhP5lm.js} +1 -1
- package/.output/public/_nuxt/{n7Htv9PJ.js → BU6xjw05.js} +1 -1
- package/.output/public/_nuxt/{DvdOsTLb.js → BWFY2RuU.js} +1 -1
- package/.output/public/_nuxt/{60-Zii7v.js → B_QIrc7l.js} +1 -1
- package/.output/public/_nuxt/{CrFCPOnY.js → Ba4_ydKG.js} +1 -1
- package/.output/public/_nuxt/{BfshMo9k.js → BcLXUmKT.js} +2 -2
- package/.output/public/_nuxt/{CD-xwM9N.js → BciovqwK.js} +1 -1
- package/.output/public/_nuxt/{i38YGG9S.js → BgDEjrcz.js} +1 -1
- package/.output/public/_nuxt/{rWwWS3Kj.js → BoRJdCd4.js} +1 -1
- package/.output/public/_nuxt/{O1A-LRgV.js → Bpha13F_.js} +1 -1
- package/.output/public/_nuxt/{2PU-adwy.js → Bq0PQfQY.js} +1 -1
- package/.output/public/_nuxt/{B8fs6GU9.js → BrT_Sys2.js} +31 -31
- package/.output/public/_nuxt/{ETOCcsVw.js → Bua_L6p4.js} +1 -1
- package/.output/public/_nuxt/{nUsJV5qo.js → BwKwWgQe.js} +1 -1
- package/.output/public/_nuxt/{4fB15L_7.js → BxRsAYRS.js} +1 -1
- package/.output/public/_nuxt/{DVdOm5Bg.js → ByoIgYX_.js} +1 -1
- package/.output/public/_nuxt/{Bq2ZPvIH.js → C7nwFokE.js} +1 -1
- package/.output/public/_nuxt/CEuVRSr0.js +3 -0
- package/.output/public/_nuxt/{CokbKVE6.js → CHHqhAsw.js} +1 -1
- package/.output/public/_nuxt/{BBJ9Pu3M.js → CHIbdzqp.js} +1 -1
- package/.output/public/_nuxt/{C9jjVEQU.js → CMB-NkFa.js} +1 -1
- package/.output/public/_nuxt/{CU-OXXdh.js → CNULGfLp.js} +1 -1
- package/.output/public/_nuxt/{Surk4Lw-.js → COVRAesU.js} +1 -1
- package/.output/public/_nuxt/{h-e-Ca3f.js → CSAmL8XJ.js} +1 -1
- package/.output/public/_nuxt/{CHgsEM4U.js → CWmQcueG.js} +1 -1
- package/.output/public/_nuxt/{BgR7oL4p.js → CYuWAvXE.js} +1 -1
- package/.output/public/_nuxt/CbuWynGG.js +1 -0
- package/.output/public/_nuxt/{CIOQo6gB.js → Ce3tBrN7.js} +1 -1
- package/.output/public/_nuxt/{DNP5tTJo.js → Cf4h8qty.js} +1 -1
- package/.output/public/_nuxt/{B9Q_4Mjt.js → Cl96oI21.js} +1 -1
- package/.output/public/_nuxt/{PPFO8UVt.js → ClJkng9p.js} +1 -1
- package/.output/public/_nuxt/{B32ySRXg.js → CoKEjZX7.js} +1 -1
- package/.output/public/_nuxt/CvtYJHkY.js +1 -0
- package/.output/public/_nuxt/{BCK4f6Y3.js → CxLN5Tmq.js} +1 -1
- package/.output/public/_nuxt/{ChWPXucC.js → Cz2HhsB6.js} +1 -1
- package/.output/public/_nuxt/{B_80i5Ge.js → D0-HTQTD.js} +1 -1
- package/.output/public/_nuxt/{CHMpVLqo.js → D13ybpY3.js} +1 -1
- package/.output/public/_nuxt/{CvCF77E-.js → D7P0ML0H.js} +2 -2
- package/.output/public/_nuxt/{BW1UOxWn.js → D811X8KM.js} +1 -1
- package/.output/public/_nuxt/DATh_1DQ.js +1 -0
- package/.output/public/_nuxt/{BEKwVcvQ.js → DAeYmPfX.js} +1 -1
- package/.output/public/_nuxt/DCffDvxl.js +1 -0
- package/.output/public/_nuxt/DDPptydi.js +2 -0
- package/.output/public/_nuxt/{DkFbpSsi.js → DFM2jv9I.js} +1 -1
- package/.output/public/_nuxt/{D4nLD93c.js → DJHNEqb7.js} +1 -1
- package/.output/public/_nuxt/{DaKVSp-6.js → DPSOtRoz.js} +1 -1
- package/.output/public/_nuxt/{DYDGGqZ3.js → DRTxhZBV.js} +1 -1
- package/.output/public/_nuxt/{Cgr8IKY4.js → DS9yGVFL.js} +1 -1
- package/.output/public/_nuxt/{Cfk2_UCm.js → DT5rhzhJ.js} +1 -1
- package/.output/public/_nuxt/{DFw8I2FL.js → DTH2lteW.js} +1 -1
- package/.output/public/_nuxt/DUe6xuKQ.js +1 -0
- package/.output/public/_nuxt/D_A6axXa.js +1 -0
- package/.output/public/_nuxt/D_TbJDHY.js +1 -0
- package/.output/public/_nuxt/{B59-l1Cv.js → Df3QtbpW.js} +1 -1
- package/.output/public/_nuxt/{BkhdAGx0.js → DjRhouSr.js} +1 -1
- package/.output/public/_nuxt/Dn6cGVYB.js +1 -0
- package/.output/public/_nuxt/{0KrkW531.js → DpJrGwCr.js} +2 -2
- package/.output/public/_nuxt/DqsMiUoW.js +2 -0
- package/.output/public/_nuxt/{C7RarFGi.js → Ds2Y3oms.js} +1 -1
- package/.output/public/_nuxt/Ds4Lb1vi.js +7 -0
- package/.output/public/_nuxt/{DWzdeQ3Z.js → DtXREpk_.js} +1 -1
- package/.output/public/_nuxt/{Dejf0f7D.js → DvC5Adg1.js} +3 -3
- package/.output/public/_nuxt/{o5WQ5Z7k.js → DvXvJzFP.js} +1 -1
- package/.output/public/_nuxt/{DAeYEeCC.js → Dvc1aWpA.js} +1 -1
- package/.output/public/_nuxt/{DzbOHjZH.js → DwZiG9xH.js} +1 -1
- package/.output/public/_nuxt/Dx1oCMgy.js +47 -0
- package/.output/public/_nuxt/{BGsuOpiq.js → DxQq_L07.js} +1 -1
- package/.output/public/_nuxt/{CqA3gM8h.js → Dym66h3p.js} +1 -1
- package/.output/public/_nuxt/{CNzoIhwN.js → Dz3Wbekz.js} +1 -1
- package/.output/public/_nuxt/HCK35QD8.js +1 -0
- package/.output/public/_nuxt/{Cpquifvd.js → L6HlmmEa.js} +1 -1
- package/.output/public/_nuxt/{BMQIO38j.js → PxPbRVF-.js} +1 -1
- package/.output/public/_nuxt/{DiUGa0CT.js → QFMx1VKs.js} +1 -1
- package/.output/public/_nuxt/{DHVmXA9K.js → Sgf5OLhm.js} +1 -1
- package/.output/public/_nuxt/US3YSX4T.js +1 -0
- package/.output/public/_nuxt/{DZLrAp2i.js → Wfk1m0ni.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/05a2dd95-d1c1-4e3a-8625-ac6bfea83837.json +1 -0
- package/.output/public/_nuxt/{too3WhRB.js → cBj9fai9.js} +1 -1
- package/.output/public/_nuxt/{DxXZN6ed.js → csqspBeX.js} +1 -1
- package/.output/public/_nuxt/entry.BaIGwMjT.css +1 -0
- package/.output/public/_nuxt/{__m3KqHO.js → jlBi8Byu.js} +1 -1
- package/.output/public/_nuxt/{Dv2B_nw_.js → lCkcEykv.js} +1 -1
- package/.output/public/_nuxt/qYFZH4Z8.js +34 -0
- package/.output/public/_nuxt/{3SnTawZW.js → r3SBLxtE.js} +1 -1
- package/.output/public/_nuxt/{DI_-kFec.js → r9WApUfF.js} +1 -1
- package/.output/public/_nuxt/{BC_Wu-fv.js → rw7Hdll3.js} +1 -1
- package/.output/public/_nuxt/{IdQR_Djw.js → sMFaPAAR.js} +1 -1
- package/.output/public/_nuxt/{CKZn0TUX.js → vzXhOO8R.js} +1 -1
- package/.output/public/_nuxt/{CFn3w5jn.js → yZ4LuI9d.js} +1 -1
- package/.output/public/_nuxt/{BtJkQ3to.js → z7PmsnBG.js} +1 -1
- package/.output/public/_nuxt/{lRMjXqiA.js → za5M7BGh.js} +1 -1
- package/.output/public/demo/seed.version.json +2 -2
- package/.output/public/sw.js +1 -1
- package/.output/server/chunks/_/markers.mjs +1 -1
- package/.output/server/chunks/_/users.mjs +1 -1
- package/.output/server/chunks/build/{BrowserBadge-BTA4QU_J.mjs → BrowserBadge-DNCp9pF-.mjs} +3 -3
- package/.output/server/chunks/build/BrowserBadge-DNCp9pF-.mjs.map +1 -0
- package/.output/server/chunks/build/{ChartCard-BqAhMip2.mjs → ChartCard-Fr557IbV.mjs} +2 -2
- package/.output/server/chunks/build/ChartCard-Fr557IbV.mjs.map +1 -0
- package/.output/server/chunks/build/{Checkbox-_1nGm_DR.mjs → Checkbox-cVOSIY93.mjs} +6 -6
- package/.output/server/chunks/build/Checkbox-cVOSIY93.mjs.map +1 -0
- package/.output/server/chunks/build/{CiEnvCard-DAufYuJw.mjs → CiEnvCard-DXPOhdSG.mjs} +5 -5
- package/.output/server/chunks/build/CiEnvCard-DXPOhdSG.mjs.map +1 -0
- package/.output/server/chunks/build/{CodeBlock-BVKHuYjU.mjs → CodeBlock-BGwNmJ8J.mjs} +2 -2
- package/.output/server/chunks/build/CodeBlock-BGwNmJ8J.mjs.map +1 -0
- package/.output/server/chunks/build/{DashboardNavbar-BR6j4VLd.mjs → DashboardNavbar-Bdp-OwTN.mjs} +2 -2
- package/.output/server/chunks/build/DashboardNavbar-Bdp-OwTN.mjs.map +1 -0
- package/.output/server/chunks/build/DashboardSidebarToggle-Ji6ADuqF.mjs +1 -1
- package/.output/server/chunks/build/DataLocationCard-D6xSOrme.mjs +102 -0
- package/.output/server/chunks/build/DataLocationCard-D6xSOrme.mjs.map +1 -0
- package/.output/server/chunks/build/DesktopMcpCard-B4JuUTKj.mjs +122 -0
- package/.output/server/chunks/build/DesktopMcpCard-B4JuUTKj.mjs.map +1 -0
- package/.output/server/chunks/build/{DiagnosisPanel-BnrdXDvd.mjs → DiagnosisPanel-DV1xwGu4.mjs} +6 -6
- package/.output/server/chunks/build/DiagnosisPanel-DV1xwGu4.mjs.map +1 -0
- package/.output/server/chunks/build/EntityLinks-DeOP13Kr.mjs +1 -1
- package/.output/server/chunks/build/{EnvManagedBadge-DdnEtjIl.mjs → EnvManagedBadge-Qpn58Nmr.mjs} +5 -5
- package/.output/server/chunks/build/EnvManagedBadge-Qpn58Nmr.mjs.map +1 -0
- package/.output/server/chunks/build/{HelpHint-D_GJzMpW.mjs → HelpHint-YEMWtKu1.mjs} +18 -2
- package/.output/server/chunks/build/HelpHint-YEMWtKu1.mjs.map +1 -0
- package/.output/server/chunks/build/{Modal-COIjm3js.mjs → Modal-CfA78Hm1.mjs} +2 -2
- package/.output/server/chunks/build/Modal-CfA78Hm1.mjs.map +1 -0
- package/.output/server/chunks/build/{OpenInIdeLink-D97W6On1.mjs → OpenInIdeLink-B92wosXu.mjs} +3 -3
- package/.output/server/chunks/build/{OpenInIdeLink-D97W6On1.mjs.map → OpenInIdeLink-B92wosXu.mjs.map} +1 -1
- package/.output/server/chunks/build/{PageStateCard-C1HFN4Nv.mjs → PageStateCard-Bwee6JTk.mjs} +10 -10
- package/.output/server/chunks/build/{PageStateCard-C1HFN4Nv.mjs.map → PageStateCard-Bwee6JTk.mjs.map} +1 -1
- package/.output/server/chunks/build/{ProjectTestCasesTable-XFBPQGIX.mjs → ProjectTestCasesTable-9Ia825h8.mjs} +9 -9
- package/.output/server/chunks/build/ProjectTestCasesTable-9Ia825h8.mjs.map +1 -0
- package/.output/server/chunks/build/{RunReports-ChNkmuWa.mjs → RunReports-BpJqLHY9.mjs} +2 -2
- package/.output/server/chunks/build/RunReports-BpJqLHY9.mjs.map +1 -0
- package/.output/server/chunks/build/{RunStatusBadge-CXpuCUGQ.mjs → RunStatusBadge-BhmJ_RKM.mjs} +2 -2
- package/.output/server/chunks/build/RunStatusBadge-BhmJ_RKM.mjs.map +1 -0
- package/.output/server/chunks/build/{SectionCard-zs9FDzps.mjs → SectionCard-COd9TuDq.mjs} +2 -2
- package/.output/server/chunks/build/SectionCard-COd9TuDq.mjs.map +1 -0
- package/.output/server/chunks/build/{Select-r3S5nkSY.mjs → Select-ppPz926C.mjs} +5 -4
- package/.output/server/chunks/build/Select-ppPz926C.mjs.map +1 -0
- package/.output/server/chunks/build/{SelectMenu-Dk6f8i9o.mjs → SelectMenu-799c_Ils.mjs} +4 -4
- package/.output/server/chunks/build/{SelectMenu-Dk6f8i9o.mjs.map → SelectMenu-799c_Ils.mjs.map} +1 -1
- package/.output/server/chunks/build/{Separator-pqpPG0up.mjs → Separator-CxZdx8kw.mjs} +2 -2
- package/.output/server/chunks/build/Separator-CxZdx8kw.mjs.map +1 -0
- package/.output/server/chunks/build/{SettingsField-Wdpzlt13.mjs → SettingsField-DDD4oqys.mjs} +5 -5
- package/.output/server/chunks/build/SettingsField-DDD4oqys.mjs.map +1 -0
- package/.output/server/chunks/build/{Slideover-02XjJjn0.mjs → Slideover-B95Rj237.mjs} +3 -3
- package/.output/server/chunks/build/Slideover-B95Rj237.mjs.map +1 -0
- package/.output/server/chunks/build/{Switch-gx_JXgCo.mjs → Switch-xQQ3_ME1.mjs} +3 -3
- package/.output/server/chunks/build/Switch-xQQ3_ME1.mjs.map +1 -0
- package/.output/server/chunks/build/{Table-C64RrBp3.mjs → Table-CPhhVzDv.mjs} +3 -3
- package/.output/server/chunks/build/Table-CPhhVzDv.mjs.map +1 -0
- package/.output/server/chunks/build/{TestStatusBar--u4VX_Xf.mjs → TestStatusBar-CEzt76wk.mjs} +2 -2
- package/.output/server/chunks/build/TestStatusBar-CEzt76wk.mjs.map +1 -0
- package/.output/server/chunks/build/{Tooltip-ui_BVvqr.mjs → Tooltip-7vwuDPrZ.mjs} +3 -3
- package/.output/server/chunks/build/Tooltip-7vwuDPrZ.mjs.map +1 -0
- package/.output/server/chunks/build/{VisuallyHiddenInput-mMsqmkjz.mjs → VisuallyHiddenInput-C9eJVpPW.mjs} +2 -2
- package/.output/server/chunks/build/VisuallyHiddenInput-C9eJVpPW.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-R6KGfZOC.mjs → _id_-B2yirIuA.mjs} +259 -85
- package/.output/server/chunks/build/_id_-B2yirIuA.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-CFVnSs8B.mjs → _id_-B4V5fop6.mjs} +21 -19
- package/.output/server/chunks/build/{_id_-CFVnSs8B.mjs.map → _id_-B4V5fop6.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-pkxJKe17.mjs → _id_-CE0Gso6i.mjs} +11 -11
- package/.output/server/chunks/build/_id_-CE0Gso6i.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-DXJQABO8.mjs → _id_-bWcP2xFl.mjs} +27 -26
- package/.output/server/chunks/build/{_id_-DXJQABO8.mjs.map → _id_-bWcP2xFl.mjs.map} +1 -1
- package/.output/server/chunks/build/about-TuEZ9n1Q.mjs +625 -0
- package/.output/server/chunks/build/about-TuEZ9n1Q.mjs.map +1 -0
- package/.output/server/chunks/build/{account-AbLuwiZP.mjs → account-Cn-eZqXM.mjs} +4 -4
- package/.output/server/chunks/build/account-Cn-eZqXM.mjs.map +1 -0
- package/.output/server/chunks/build/{ai-DR_slopS.mjs → ai-7jdaPOmj.mjs} +19 -18
- package/.output/server/chunks/build/ai-7jdaPOmj.mjs.map +1 -0
- package/.output/server/chunks/build/{analytics-BbT2-Tr-.mjs → analytics-B276WPeU.mjs} +237 -65
- package/.output/server/chunks/build/analytics-B276WPeU.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/{db.client-DlA_u5y9.mjs → db.client-aHcD0wyX.mjs} +47 -22
- package/.output/server/chunks/build/db.client-aHcD0wyX.mjs.map +1 -0
- package/.output/server/chunks/build/{default-D6diRCW0.mjs → default-BSzdkM_L.mjs} +20 -17
- package/.output/server/chunks/build/default-BSzdkM_L.mjs.map +1 -0
- package/.output/server/chunks/build/{docs-DbYoZafk.mjs → docs-EXhN3sqC.mjs} +7 -6
- package/.output/server/chunks/build/{docs-DbYoZafk.mjs.map → docs-EXhN3sqC.mjs.map} +1 -1
- package/.output/server/chunks/build/{edit-CNV4xdYj.mjs → edit-C9Z7oZeu.mjs} +10 -9
- package/.output/server/chunks/build/edit-C9Z7oZeu.mjs.map +1 -0
- package/.output/server/chunks/build/fetch-8kznMtBM.mjs +1 -1
- package/.output/server/chunks/build/handleAndDispatchCustomEvent-Bk_AVSSo.mjs +13 -0
- package/.output/server/chunks/build/handleAndDispatchCustomEvent-Bk_AVSSo.mjs.map +1 -0
- package/.output/server/chunks/build/{help-content-BMumoQQF.mjs → help-content-DmFnuhNu.mjs} +6 -1
- package/.output/server/chunks/build/help-content-DmFnuhNu.mjs.map +1 -0
- package/.output/server/chunks/build/{index-C3Ou18qD.mjs → index-BK9PTRpd.mjs} +34 -18
- package/.output/server/chunks/build/{index-C3Ou18qD.mjs.map → index-BK9PTRpd.mjs.map} +1 -1
- package/.output/server/chunks/build/{index-Dw526KXV.mjs → index-BR9hw6qk.mjs} +10 -10
- package/.output/server/chunks/build/index-BR9hw6qk.mjs.map +1 -0
- package/.output/server/chunks/build/{index-dwYB76GO.mjs → index-Ba-Fifra.mjs} +4 -4
- package/.output/server/chunks/build/index-Ba-Fifra.mjs.map +1 -0
- package/.output/server/chunks/build/{index-DmHBPf7T.mjs → index-CULN3-en.mjs} +11 -2
- package/.output/server/chunks/build/index-CULN3-en.mjs.map +1 -0
- package/.output/server/chunks/build/{index-rSHkKNna.mjs → index-DVUtBexc.mjs} +507 -85
- package/.output/server/chunks/build/index-DVUtBexc.mjs.map +1 -0
- package/.output/server/chunks/build/{isValueEqualOrExist-DTJ5ejZs.mjs → isValueEqualOrExist-DBZjbD_3.mjs} +3 -3
- package/.output/server/chunks/build/isValueEqualOrExist-DBZjbD_3.mjs.map +1 -0
- package/.output/server/chunks/build/{login-Da5C8jP2.mjs → login-D2XZDuek.mjs} +3 -3
- package/.output/server/chunks/build/login-D2XZDuek.mjs.map +1 -0
- package/.output/server/chunks/build/{mcp-DM1t-9L_.mjs → mcp-CQ-21rwc.mjs} +138 -31
- package/.output/server/chunks/build/mcp-CQ-21rwc.mjs.map +1 -0
- package/.output/server/chunks/build/{notifications-BTPF0xA7.mjs → notifications-Dzm9c0u_.mjs} +13 -12
- package/.output/server/chunks/build/notifications-Dzm9c0u_.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +37 -28
- package/.output/server/chunks/build/{settings-metadata-CksLgMun.mjs → settings-metadata-B0wo5R-W.mjs} +14 -3
- package/.output/server/chunks/build/settings-metadata-B0wo5R-W.mjs.map +1 -0
- package/.output/server/chunks/build/{settings-Bmw_JdBS.mjs → settings-pNyPBXVa.mjs} +9 -7
- package/.output/server/chunks/build/settings-pNyPBXVa.mjs.map +1 -0
- package/.output/server/chunks/build/{storage-BqR4acgi.mjs → storage-XelzuyPy.mjs} +23 -12
- package/.output/server/chunks/build/storage-XelzuyPy.mjs.map +1 -0
- package/.output/server/chunks/build/{tags-miPAzIr3.mjs → tags-DrCQ7QSw.mjs} +6 -6
- package/.output/server/chunks/build/tags-DrCQ7QSw.mjs.map +1 -0
- package/.output/server/chunks/build/{test-cases-D-LqhLpk.mjs → test-cases-pmOxi-AN.mjs} +16 -15
- package/.output/server/chunks/build/test-cases-pmOxi-AN.mjs.map +1 -0
- package/.output/server/chunks/build/timeout-hygiene-CNs71Iah.mjs +318 -0
- package/.output/server/chunks/build/timeout-hygiene-CNs71Iah.mjs.map +1 -0
- package/.output/server/chunks/build/{useAiStatus-FwqbA4gz.mjs → useAiStatus-ZO987RY7.mjs} +8 -7
- package/.output/server/chunks/build/useAiStatus-ZO987RY7.mjs.map +1 -0
- package/.output/server/chunks/build/useFormControl-BLpq1s4O.mjs +9 -0
- package/.output/server/chunks/build/useFormControl-BLpq1s4O.mjs.map +1 -0
- package/.output/server/chunks/build/useIsDesktop-BS13spVj.mjs +9 -0
- package/.output/server/chunks/build/useIsDesktop-BS13spVj.mjs.map +1 -0
- package/.output/server/chunks/build/{useSettingsNav-v_dFuTw9.mjs → useSettingsNav-NjI2seBy.mjs} +9 -7
- package/.output/server/chunks/build/useSettingsNav-NjI2seBy.mjs.map +1 -0
- package/.output/server/chunks/build/{users-D-GDKZmZ.mjs → users-NmAUZs3i.mjs} +6 -6
- package/.output/server/chunks/build/users-NmAUZs3i.mjs.map +1 -0
- package/.output/server/chunks/build/{virtualizer-BcC1XuFf.mjs → virtualizer-ZaqK4guJ.mjs} +6 -5
- package/.output/server/chunks/build/virtualizer-ZaqK4guJ.mjs.map +1 -0
- package/.output/server/chunks/build/{wasted-time-CFmeT_e2.mjs → wasted-time-CguAF9zc.mjs} +8 -8
- package/.output/server/chunks/build/wasted-time-CguAF9zc.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +1009 -722
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/__piwi/session.get.mjs +51 -0
- package/.output/server/chunks/routes/__piwi/session.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/admin/stats.get.mjs +5 -1
- package/.output/server/chunks/routes/api/admin/stats.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs +75 -6
- package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/auth/change-password.post.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/login.post.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/logout.post.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/me.get.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/reset-password.post.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/setup.get.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/setup.post.mjs +1 -1
- package/.output/server/chunks/routes/api/auth/verify-email.get.mjs +1 -1
- package/.output/server/chunks/routes/api/channels/_id/test.post.mjs +1 -1
- package/.output/server/chunks/routes/api/channels/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs +1 -1
- package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs +1 -1
- package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs +45 -0
- package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/files/_...path_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/health.get.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get2.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get3.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get4.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get5.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post2.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post3.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post4.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post5.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post6.mjs +1 -1
- package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs +1 -1
- package/.output/server/chunks/routes/api/links/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/links/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/markers/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/markers/_id_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/notifications/stream.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/members.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/members.put.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs +50 -0
- package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/projects/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/_id_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/menu.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects/overview.get.mjs +1 -1
- package/.output/server/chunks/routes/api/projects.get.mjs +1 -1
- package/.output/server/chunks/routes/api/search.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai/test.post.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/ai.put.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/smtp.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs +40 -0
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs +46 -0
- package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs.map +1 -0
- package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs +1 -1
- package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs +1 -1
- package/.output/server/chunks/routes/api/stream.get.mjs +1 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/tags/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/tags/_id_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/recent.get.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/setup.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/start.post.mjs +1 -1
- package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +3 -1
- package/.output/server/chunks/routes/api/test-runs/submit.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +2 -1
- package/.output/server/chunks/routes/api/test-runs/upload.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/traces/check.post.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/invite.post.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/projects.get.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id/projects.put.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/users/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/version.get.mjs +1 -1
- package/.output/server/chunks/routes/mcp.post.mjs +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/database/migrations/0037_tired_hellion.sql +1 -0
- package/.output/server/database/migrations/0038_glamorous_ulik.sql +1 -0
- package/.output/server/database/migrations/meta/0037_snapshot.json +3384 -0
- package/.output/server/database/migrations/meta/0038_snapshot.json +3391 -0
- package/.output/server/database/migrations/meta/_journal.json +14 -0
- package/.output/server/database/migrations-pg/0038_tranquil_moira_mactaggert.sql +1 -0
- package/.output/server/database/migrations-pg/0039_fat_starjammers.sql +1 -0
- package/.output/server/database/migrations-pg/meta/0038_snapshot.json +4027 -0
- package/.output/server/database/migrations-pg/meta/0039_snapshot.json +4033 -0
- package/.output/server/database/migrations-pg/meta/_journal.json +14 -0
- package/.output/server/index.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/package.json +1 -1
- package/.output/public/_nuxt/2kfkdDTz.js +0 -1
- package/.output/public/_nuxt/BXEDsEwG.js +0 -1
- package/.output/public/_nuxt/BbgBGuMG.js +0 -1
- package/.output/public/_nuxt/CBrCcDzR.js +0 -1
- package/.output/public/_nuxt/CFXonrwQ.js +0 -3
- package/.output/public/_nuxt/CJGJI2Of.js +0 -34
- package/.output/public/_nuxt/Ce4EdfL_.js +0 -4
- package/.output/public/_nuxt/Cf3RuiXF.js +0 -46
- package/.output/public/_nuxt/CkpB9oBr.js +0 -1
- package/.output/public/_nuxt/D1tZEdSi.js +0 -1
- package/.output/public/_nuxt/DK9uMTYX.js +0 -1
- package/.output/public/_nuxt/DgZlpN9l.js +0 -1
- package/.output/public/_nuxt/DjCfCT_5.js +0 -1
- package/.output/public/_nuxt/YDWXnWou.js +0 -1
- package/.output/public/_nuxt/builds/meta/f549de31-8db6-4504-b526-482778a55eba.json +0 -1
- package/.output/public/_nuxt/entry.BxXHl1Vy.css +0 -1
- package/.output/public/_nuxt/evCxpgbd.js +0 -2
- package/.output/public/_nuxt/wCQds5_f.js +0 -1
- package/.output/server/chunks/build/BrowserBadge-BTA4QU_J.mjs.map +0 -1
- package/.output/server/chunks/build/ChartCard-BqAhMip2.mjs.map +0 -1
- package/.output/server/chunks/build/Checkbox-_1nGm_DR.mjs.map +0 -1
- package/.output/server/chunks/build/CiEnvCard-DAufYuJw.mjs.map +0 -1
- package/.output/server/chunks/build/CodeBlock-BVKHuYjU.mjs.map +0 -1
- package/.output/server/chunks/build/DashboardNavbar-BR6j4VLd.mjs.map +0 -1
- package/.output/server/chunks/build/DiagnosisPanel-BnrdXDvd.mjs.map +0 -1
- package/.output/server/chunks/build/EnvManagedBadge-DdnEtjIl.mjs.map +0 -1
- package/.output/server/chunks/build/HelpHint-D_GJzMpW.mjs.map +0 -1
- package/.output/server/chunks/build/Modal-COIjm3js.mjs.map +0 -1
- package/.output/server/chunks/build/ProjectTestCasesTable-XFBPQGIX.mjs.map +0 -1
- package/.output/server/chunks/build/RunReports-ChNkmuWa.mjs.map +0 -1
- package/.output/server/chunks/build/RunStatusBadge-CXpuCUGQ.mjs.map +0 -1
- package/.output/server/chunks/build/SectionCard-zs9FDzps.mjs.map +0 -1
- package/.output/server/chunks/build/Select-r3S5nkSY.mjs.map +0 -1
- package/.output/server/chunks/build/Separator-pqpPG0up.mjs.map +0 -1
- package/.output/server/chunks/build/SettingsField-Wdpzlt13.mjs.map +0 -1
- package/.output/server/chunks/build/Slideover-02XjJjn0.mjs.map +0 -1
- package/.output/server/chunks/build/Switch-gx_JXgCo.mjs.map +0 -1
- package/.output/server/chunks/build/Table-C64RrBp3.mjs.map +0 -1
- package/.output/server/chunks/build/TestStatusBar--u4VX_Xf.mjs.map +0 -1
- package/.output/server/chunks/build/Tooltip-ui_BVvqr.mjs.map +0 -1
- package/.output/server/chunks/build/VisuallyHiddenInput-mMsqmkjz.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-R6KGfZOC.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-pkxJKe17.mjs.map +0 -1
- package/.output/server/chunks/build/about-CmtGYbC6.mjs +0 -313
- package/.output/server/chunks/build/about-CmtGYbC6.mjs.map +0 -1
- package/.output/server/chunks/build/account-AbLuwiZP.mjs.map +0 -1
- package/.output/server/chunks/build/ai-DR_slopS.mjs.map +0 -1
- package/.output/server/chunks/build/analytics-BbT2-Tr-.mjs.map +0 -1
- package/.output/server/chunks/build/db.client-DlA_u5y9.mjs.map +0 -1
- package/.output/server/chunks/build/default-D6diRCW0.mjs.map +0 -1
- package/.output/server/chunks/build/edit-CNV4xdYj.mjs.map +0 -1
- package/.output/server/chunks/build/help-content-BMumoQQF.mjs.map +0 -1
- package/.output/server/chunks/build/index-DmHBPf7T.mjs.map +0 -1
- package/.output/server/chunks/build/index-Dw526KXV.mjs.map +0 -1
- package/.output/server/chunks/build/index-dwYB76GO.mjs.map +0 -1
- package/.output/server/chunks/build/index-rSHkKNna.mjs.map +0 -1
- package/.output/server/chunks/build/isValueEqualOrExist-DTJ5ejZs.mjs.map +0 -1
- package/.output/server/chunks/build/login-Da5C8jP2.mjs.map +0 -1
- package/.output/server/chunks/build/mcp-DM1t-9L_.mjs.map +0 -1
- package/.output/server/chunks/build/notifications-BTPF0xA7.mjs.map +0 -1
- package/.output/server/chunks/build/settings-Bmw_JdBS.mjs.map +0 -1
- package/.output/server/chunks/build/settings-metadata-CksLgMun.mjs.map +0 -1
- package/.output/server/chunks/build/storage-BqR4acgi.mjs.map +0 -1
- package/.output/server/chunks/build/tags-miPAzIr3.mjs.map +0 -1
- package/.output/server/chunks/build/test-cases-D-LqhLpk.mjs.map +0 -1
- package/.output/server/chunks/build/useAiStatus-FwqbA4gz.mjs.map +0 -1
- package/.output/server/chunks/build/useFormControl-DFTjniPG.mjs +0 -19
- package/.output/server/chunks/build/useFormControl-DFTjniPG.mjs.map +0 -1
- package/.output/server/chunks/build/useSettingsNav-v_dFuTw9.mjs.map +0 -1
- package/.output/server/chunks/build/users-D-GDKZmZ.mjs.map +0 -1
- package/.output/server/chunks/build/virtualizer-BcC1XuFf.mjs.map +0 -1
- package/.output/server/chunks/build/wasted-time-CFmeT_e2.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as r,o as s,c as l,i,T as n,m as o,t as a,p as c,q as d,O as u}from"./
|
|
1
|
+
import{d as r,o as s,c as l,i,T as n,m as o,t as a,p as c,q as d,O as u}from"./BrT_Sys2.js";const _={class:"rounded-lg bg-gray-50 dark:bg-gray-900 p-3 min-w-0"},g={class:"text-xs font-medium text-gray-500 uppercase tracking-wider inline-flex items-center gap-1 max-w-full"},f={key:0,class:"text-xs text-gray-400 mt-1"},x=r({__name:"StatTile",props:{label:{},value:{},hint:{},size:{default:"lg"},valueClass:{default:""}},setup(e){return(t,m)=>(s(),l("div",_,[i("p",g,[n(t.$slots,"label",{},()=>[o(a(e.label),1)])]),i("p",{class:c(["mt-0.5 break-words",[e.size==="lg"?"text-xl font-bold":"text-sm font-semibold",e.valueClass]])},[n(t.$slots,"default",{},()=>[o(a(e.value??"—"),1)])],2),e.hint?(s(),l("p",f,a(e.hint),1)):d("",!0)]))}}),h=Object.assign(x,{__name:"StatTile"}),p=r({__name:"StatTileGrid",props:{minTileWidth:{default:"8.5rem"}},setup(e){return(t,m)=>(s(),l("div",{class:"grid gap-3",style:u({gridTemplateColumns:`repeat(auto-fit, minmax(min(${e.minTileWidth}, 100%), 1fr))`})},[n(t.$slots,"default")],4))}}),T=Object.assign(p,{__name:"StatTileGrid"});export{T as _,h as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as F,S as Z,o as i,f as P,g as u,T,m as I,U as Q,k as e,V as H,W as Oe,X as Ke,h as k,Y as Ge,Z as Qe,$ as Ze,t as x,c as $,i as f,O as de,p as N,j as d,v as Y,F as A,y as le,s as Re,x as $e,q as w,_ as G,r as M,a0 as He,a1 as We,a2 as Xe,a3 as Ye,a4 as Je,a5 as et,a6 as tt,u as at,a as st,K as lt,B as te,D as nt,l as ae,a7 as ot,a8 as ue}from"./B8fs6GU9.js";import{_ as it}from"./IdQR_Djw.js";import{_ as rt}from"./DiUGa0CT.js";import{_ as ut}from"./DKTDub7I.js";import{_ as dt}from"./Surk4Lw-.js";import{_ as ct}from"./DZLrAp2i.js";import{_ as pt}from"./n7Htv9PJ.js";import{_ as qe}from"./BkhdAGx0.js";import{j as ce,t as pe,h as fe,p as me,f as ge,e as ft}from"./CvCF77E-.js";import{_ as mt}from"./2PU-adwy.js";import{_ as gt}from"./D4nLD93c.js";import{_ as vt}from"./BBJ9Pu3M.js";import{u as _t}from"./CFn3w5jn.js";import{u as yt}from"./DAeYEeCC.js";var bt=F({__name:"PaginationEllipsis",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(r){const c=r;return Z(),(s,v)=>(i(),P(e(H),Q(c,{"data-type":"ellipsis"}),{default:u(()=>[T(s.$slots,"default",{},()=>[v[0]||(v[0]=I("…"))])]),_:3},16))}}),ht=bt;const[J,xt]=Ge("PaginationRoot");var kt=F({__name:"PaginationRoot",props:{page:{type:Number,required:!1},defaultPage:{type:Number,required:!1,default:1},itemsPerPage:{type:Number,required:!0},total:{type:Number,required:!1,default:0},siblingCount:{type:Number,required:!1,default:2},disabled:{type:Boolean,required:!1},showEdges:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"nav"}},emits:["update:page"],setup(r,{emit:c}){const s=r,v=c,{siblingCount:m,disabled:t,showEdges:C}=Oe(s);Z();const b=Ke(s,"page",v,{defaultValue:s.defaultPage,passive:s.page===void 0}),j=k(()=>Math.max(1,Math.ceil(s.total/(s.itemsPerPage||1))));return xt({page:b,onPageChange(L){b.value=L},pageCount:j,siblingCount:m,disabled:t,showEdges:C}),(L,D)=>(i(),P(e(H),{as:L.as,"as-child":L.asChild},{default:u(()=>[T(L.$slots,"default",{page:e(b),pageCount:j.value})]),_:3},8,["as","as-child"]))}}),Ct=kt,Pt=F({__name:"PaginationFirst",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(r){const c=r,s=J();Z();const v=k(()=>s.page.value===1||s.disabled.value);return(m,t)=>(i(),P(e(H),Q(c,{"aria-label":"First Page",type:m.as==="button"?"button":void 0,disabled:v.value,onClick:t[0]||(t[0]=C=>!v.value&&e(s).onPageChange(1))}),{default:u(()=>[T(m.$slots,"default",{},()=>[t[1]||(t[1]=I("First page"))])]),_:3},16,["type","disabled"]))}}),Rt=Pt,$t=F({__name:"PaginationLast",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(r){const c=r,s=J();Z();const v=k(()=>s.page.value===s.pageCount.value||s.disabled.value);return(m,t)=>(i(),P(e(H),Q(c,{"aria-label":"Last Page",type:m.as==="button"?"button":void 0,disabled:v.value,onClick:t[0]||(t[0]=C=>!v.value&&e(s).onPageChange(e(s).pageCount.value))}),{default:u(()=>[T(m.$slots,"default",{},()=>[t[1]||(t[1]=I("Last page"))])]),_:3},16,["type","disabled"]))}}),qt=$t;function K(r,c){const s=c-r+1;return Array.from({length:s},(v,m)=>m+r)}function St(r){return r.map(c=>typeof c=="number"?{type:"page",value:c}:{type:"ellipsis"})}const se="ellipsis";function zt(r,c,s,v){const t=c,C=Math.max(r-s,1),b=Math.min(r+s,t);if(v){const L=Math.min(2*s+5,c)-2,D=C>3&&Math.abs(t-L-1+1)>2&&Math.abs(C-1)>2,B=b<t-2&&Math.abs(t-L)>2&&Math.abs(t-b)>2;if(!D&&B)return[...K(1,L),se,t];if(D&&!B){const l=K(t-L+1,t);return[1,se,...l]}if(D&&B){const l=K(C,b);return[1,se,...l,se,t]}return K(1,t)}else{const j=s*2+1;return c<j?K(1,t):r<=s+1?K(1,j):c-r<=s?K(c-j+1,t):K(C,b)}}var It=F({__name:"PaginationList",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(r){const c=r;Z();const s=J(),v=k(()=>St(zt(s.page.value,s.pageCount.value,s.siblingCount.value,s.showEdges.value)));return(m,t)=>(i(),P(e(H),Qe(Ze(c)),{default:u(()=>[T(m.$slots,"default",{items:v.value})]),_:3},16))}}),Lt=It,Nt=F({__name:"PaginationListItem",props:{value:{type:Number,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(r){const c=r;Z();const s=J(),v=k(()=>s.page.value===c.value),m=k(()=>s.disabled.value);return(t,C)=>(i(),P(e(H),Q(c,{"data-type":"page","aria-label":`Page ${t.value}`,"aria-current":v.value?"page":void 0,"data-selected":v.value?"true":void 0,disabled:m.value,type:t.as==="button"?"button":void 0,onClick:C[0]||(C[0]=b=>!m.value&&e(s).onPageChange(t.value))}),{default:u(()=>[T(t.$slots,"default",{},()=>[I(x(t.value),1)])]),_:3},16,["aria-label","aria-current","data-selected","disabled","type"]))}}),jt=Nt,Tt=F({__name:"PaginationNext",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(r){const c=r;Z();const s=J(),v=k(()=>s.page.value===s.pageCount.value||s.disabled.value);return(m,t)=>(i(),P(e(H),Q(c,{"aria-label":"Next Page",type:m.as==="button"?"button":void 0,disabled:v.value,onClick:t[0]||(t[0]=C=>!v.value&&e(s).onPageChange(e(s).page.value+1))}),{default:u(()=>[T(m.$slots,"default",{},()=>[t[1]||(t[1]=I("Next page"))])]),_:3},16,["type","disabled"]))}}),wt=Tt,Ft=F({__name:"PaginationPrev",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(r){const c=r;Z();const s=J(),v=k(()=>s.page.value===1||s.disabled.value);return(m,t)=>(i(),P(e(H),Q(c,{"aria-label":"Previous Page",type:m.as==="button"?"button":void 0,disabled:v.value,onClick:t[0]||(t[0]=C=>!v.value&&e(s).onPageChange(e(s).page.value-1))}),{default:u(()=>[T(m.$slots,"default",{},()=>[t[1]||(t[1]=I("Prev page"))])]),_:3},16,["type","disabled"]))}}),Dt=Ft;const Bt=["title"],Et={class:"h-1.5 w-14 shrink-0 overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},Vt={class:"text-sm font-medium tabular-nums"},Mt={key:1,class:"text-sm text-muted",title:"No executed runs yet"},At=F({__name:"PassRateIndicator",props:{rate:{}},setup(r){const c=r,s=k(()=>c.rate==null?null:Math.round(c.rate*100)),v=k(()=>s.value==null?"":s.value>=80?"bg-green-500":s.value>=50?"bg-amber-500":"bg-red-500");return(m,t)=>e(s)!=null?(i(),$("div",{key:0,class:"flex items-center gap-2",title:`${e(s)}% of executed runs passed`},[f("div",Et,[f("div",{class:N([e(v),"h-full rounded-full transition-all"]),style:de({width:`${e(s)}%`})},null,6)]),f("span",Vt,x(e(s))+"%",1)],8,Bt)):(i(),$("span",Mt,"—"))}}),Se=Object.assign(At,{__name:"PassRateIndicator"}),Ut={class:"rounded-lg border border-default text-sm"},Ot={class:"flex items-center justify-end px-3 py-1.5 border-b border-default bg-elevated"},Kt=["disabled","title"],Gt=["onClick"],Qt={class:"text-xs text-muted tabular-nums shrink-0"},Zt={class:"w-24 sm:w-32 shrink-0 max-sm:hidden"},Ht={class:"flex items-center gap-3 shrink-0"},Wt=["title"],Xt={key:0,class:"text-xs text-muted tabular-nums max-sm:hidden"},Yt=["title"],Jt={key:0,class:"text-center py-8 text-muted"},ea=F({__name:"ProjectTestCasesTree",props:{items:{},hasFilter:{type:Boolean}},setup(r){const c=r;function s(l){return(l.suitePath||"").split("").filter(Boolean)}function v(l){const n={passed:0,failed:0,skipped:0,flaky:0,didNotRun:0,total:0,cases:l.length};for(const g of l)n.passed+=g.passedRuns,n.failed+=g.failedRuns,n.skipped+=g.skippedRuns,n.flaky+=g.flakyRuns,n.didNotRun+=g.didNotRunRuns,n.total+=g.totalRuns;return n}const m=M(new Set),t=k(()=>m.value.size===0);function C(l){return c.hasFilter?!0:!m.value.has(l)}function b(l){if(c.hasFilter)return;const n=new Set(m.value);n.has(l)?n.delete(l):n.add(l),m.value=n}function j(){const l=new Set;for(const n of c.items){l.add(`file:${n.filePath}`);const g=s(n);for(let y=1;y<=g.length;y++)l.add(`group:${n.filePath}${g.slice(0,y).join("")}`)}return[...l]}function L(){m.value=new Set(j())}function D(){m.value=new Set}function B(l,n,g,y,h){const S=n.filter(o=>s(o).length===y.length),q=n.filter(o=>s(o).length>y.length),z=new Map;for(const o of q){const R=s(o)[y.length];z.has(R)||z.set(R,[]),z.get(R).push(o)}for(const[o,R]of z){const ee=[...y,o],V=`group:${g}${ee.join("")}`;l.push({kind:"group",depth:h,key:V,label:o,agg:v(R)}),C(V)&&B(l,R,g,ee,h+1)}for(const o of S)l.push({kind:"case",depth:h,key:`case:${o.id}`,testCase:o})}const U=k(()=>{const l=[],n=new Map;for(const g of c.items){const y=g.filePath||"unknown";n.has(y)||n.set(y,[]),n.get(y).push(g)}for(const[g,y]of[...n.entries()].sort(([h],[S])=>h.localeCompare(S))){const h=`file:${g}`;l.push({kind:"group",depth:0,key:h,label:g,agg:v(y)}),C(h)&&B(l,y,g,[],1)}return l});return(l,n)=>{const g=Y,y=qe,h=Re,S=$e,q=Se,z=G;return i(),$("div",Ut,[f("div",Ot,[f("button",{class:N(["flex items-center gap-1 text-xs transition-colors",r.hasFilter?"text-muted cursor-not-allowed opacity-50":"text-muted hover:text-default"]),disabled:r.hasFilter,title:r.hasFilter?"Clear filters to collapse/expand":e(t)?"Collapse all":"Expand all",onClick:n[0]||(n[0]=o=>e(t)?L():D())},[d(g,{name:e(t)?"i-lucide-fold-vertical":"i-lucide-unfold-vertical",class:"size-3.5"},null,8,["name"]),I(" "+x(e(t)?"Collapse all":"Expand all"),1)],10,Kt)]),(i(!0),$(A,null,le(e(U),o=>(i(),$(A,{key:o.key},[o.kind==="group"?(i(),$("div",{key:0,class:N(["flex items-center gap-2 py-2 pr-3 border-b border-default last:border-b-0 select-none",[o.depth===0?"bg-elevated":"bg-default",!r.hasFilter&&"cursor-pointer"]]),style:de({paddingLeft:`${o.depth*20+12}px`}),onClick:R=>b(o.key)},[d(g,{name:C(o.key)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5 text-muted shrink-0"},null,8,["name"]),d(g,{name:o.depth===0?"i-lucide-file-code-2":"i-lucide-folder-open",class:N(["size-4 shrink-0",o.depth===0?"text-blue-500":"text-amber-500"])},null,8,["name","class"]),f("span",{class:N(["font-medium truncate min-w-0",[o.depth===0?"text-default font-mono text-xs sm:text-sm":"text-muted"]])},x(o.label),3),f("span",Qt,x(o.agg.cases)+" "+x(o.agg.cases===1?"case":"cases"),1),n[1]||(n[1]=f("div",{class:"flex-1"},null,-1)),f("div",Zt,[d(y,{passed:o.agg.passed,failed:o.agg.failed,skipped:o.agg.skipped,flaky:o.agg.flaky,"did-not-run":o.agg.didNotRun,total:o.agg.total},null,8,["passed","failed","skipped","flaky","did-not-run","total"])])],14,Gt)):(i(),$("div",{key:1,class:"flex flex-wrap items-center gap-x-2 gap-y-1 pr-3 py-1.5 border-b border-default last:border-b-0 hover:bg-gray-50 dark:hover:bg-gray-900/40 transition-colors",style:de({paddingLeft:`${o.depth*20+12}px`})},[d(g,{name:"i-lucide-flask-conical",class:"size-3.5 text-muted shrink-0"}),d(h,{color:("testCaseCategoryColor"in l?l.testCaseCategoryColor:e(pe))(o.testCase.status),size:"xs",variant:"subtle",class:"capitalize shrink-0"},{default:u(()=>[I(x(("formatStatusLabel"in l?l.formatStatusLabel:e(ce))(o.testCase.status)),1)]),_:2},1032,["color"]),d(S,{to:`/test-cases/${o.testCase.id}`,class:"text-sm text-primary hover:underline truncate flex-1 min-w-32",title:o.testCase.title},{default:u(()=>[I(x(o.testCase.title),1)]),_:2},1032,["to","title"]),f("div",Ht,[d(q,{rate:o.testCase.passRate},null,8,["rate"]),f("span",{class:"text-xs text-muted tabular-nums max-sm:hidden",title:`${o.testCase.totalRuns} runs`},x(o.testCase.totalRuns)+"× ",9,Wt),o.testCase.avgDuration!=null?(i(),$("span",Xt,x(("formatDuration"in l?l.formatDuration:e(fe))(o.testCase.avgDuration)),1)):w("",!0),f("span",{class:"text-xs text-muted max-sm:hidden",title:("prettyDateFormat"in l?l.prettyDateFormat:e(me))(o.testCase.lastRun)},x(("formatRelativeTime"in l?l.formatRelativeTime:e(ge))(o.testCase.lastRun)),9,Yt),d(z,{to:`/test-cases/${o.testCase.id}`,size:"xs",variant:"outline"},{default:u(()=>[...n[2]||(n[2]=[I("View",-1)])]),_:1},8,["to"])])],4))],64))),128)),e(U).length===0?(i(),$("div",Jt,[d(g,{name:"i-lucide-search-x",class:"size-6 mx-auto mb-2 text-gray-300 dark:text-gray-600"}),n[3]||(n[3]=f("p",{class:"text-sm"},"No test cases match your filters.",-1))])):w("",!0)])}}}),ta=Object.assign(ea,{__name:"ProjectTestCasesTree"}),aa={slots:{root:"",list:"flex items-center gap-1",ellipsis:"pointer-events-none",label:"min-w-5 text-center",first:"",prev:"",item:"",next:"",last:""}},sa={__name:"UPagination",props:{as:{type:null,required:!1},firstIcon:{type:null,required:!1},prevIcon:{type:null,required:!1},nextIcon:{type:null,required:!1},lastIcon:{type:null,required:!1},ellipsisIcon:{type:null,required:!1},color:{type:null,required:!1,default:"neutral"},variant:{type:null,required:!1,default:"outline"},activeColor:{type:null,required:!1,default:"primary"},activeVariant:{type:null,required:!1,default:"solid"},showControls:{type:Boolean,required:!1,default:!0},size:{type:null,required:!1},to:{type:Function,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultPage:{type:Number,required:!1},disabled:{type:Boolean,required:!1},itemsPerPage:{type:Number,required:!1,default:10},page:{type:Number,required:!1},showEdges:{type:Boolean,required:!1,default:!1},siblingCount:{type:Number,required:!1,default:2},total:{type:Number,required:!1,default:0}},emits:["update:page"],setup(r,{emit:c}){const s=r,v=c,m=He(),t=We("pagination",s),{dir:C}=Xe(),b=Ye(),j=Je(et(t,"as","defaultPage","disabled","itemsPerPage","page","showEdges","siblingCount","total"),v),L=k(()=>t.firstIcon||(C.value==="rtl"?b.ui.icons.chevronDoubleRight:b.ui.icons.chevronDoubleLeft)),D=k(()=>t.prevIcon||(C.value==="rtl"?b.ui.icons.chevronRight:b.ui.icons.chevronLeft)),B=k(()=>t.nextIcon||(C.value==="rtl"?b.ui.icons.chevronLeft:b.ui.icons.chevronRight)),U=k(()=>t.lastIcon||(C.value==="rtl"?b.ui.icons.chevronDoubleLeft:b.ui.icons.chevronDoubleRight)),l=k(()=>tt({extend:aa,...b.ui?.pagination||{}})());return(n,g)=>(i(),P(e(Ct),Q(e(j),{"data-slot":"root",class:l.value.root({class:[e(t).ui?.root,e(t).class]})}),{default:u(({page:y,pageCount:h})=>[d(e(Lt),{"data-slot":"list",class:N(l.value.list({class:e(t).ui?.list}))},{default:u(({items:S})=>[e(t).showControls||m.first?(i(),P(e(Rt),{key:0,"as-child":"","data-slot":"first",class:N(l.value.first({class:e(t).ui?.first}))},{default:u(()=>[T(n.$slots,"first",{},()=>[d(G,{color:e(t).color,variant:e(t).variant,size:e(t).size,icon:L.value,to:e(t).to?.(1)},null,8,["color","variant","size","icon","to"])])]),_:3},8,["class"])):w("",!0),e(t).showControls||m.prev?(i(),P(e(Dt),{key:1,"as-child":"","data-slot":"prev",class:N(l.value.prev({class:e(t).ui?.prev}))},{default:u(()=>[T(n.$slots,"prev",{},()=>[d(G,{color:e(t).color,variant:e(t).variant,size:e(t).size,icon:D.value,to:y>1?e(t).to?.(y-1):void 0},null,8,["color","variant","size","icon","to"])])]),_:2},1032,["class"])):w("",!0),(i(!0),$(A,null,le(S,(q,z)=>(i(),$(A,{key:z},[q.type==="page"?(i(),P(e(jt),{key:0,"as-child":"",value:q.value,"data-slot":"item",class:N(l.value.item({class:e(t).ui?.item}))},{default:u(()=>[T(n.$slots,"item",Q({ref_for:!0},{item:q,index:z,page:y,pageCount:h}),()=>[d(G,{color:y===q.value?e(t).activeColor:e(t).color,variant:y===q.value?e(t).activeVariant:e(t).variant,size:e(t).size,label:String(q.value),ui:{label:l.value.label()},to:e(t).to?.(q.value),square:""},null,8,["color","variant","size","label","ui","to"])])]),_:2},1032,["value","class"])):(i(),P(e(ht),{key:1,"as-child":"","data-slot":"ellipsis",class:N(l.value.ellipsis({class:e(t).ui?.ellipsis}))},{default:u(()=>[T(n.$slots,"ellipsis",{ui:l.value},()=>[d(G,{as:"div",color:e(t).color,variant:e(t).variant,size:e(t).size,icon:e(t).ellipsisIcon||e(b).ui.icons.ellipsis},null,8,["color","variant","size","icon"])])]),_:3},8,["class"]))],64))),128)),e(t).showControls||m.next?(i(),P(e(wt),{key:2,"as-child":"","data-slot":"next",class:N(l.value.next({class:e(t).ui?.next}))},{default:u(()=>[T(n.$slots,"next",{},()=>[d(G,{color:e(t).color,variant:e(t).variant,size:e(t).size,icon:B.value,to:y<h?e(t).to?.(y+1):void 0},null,8,["color","variant","size","icon","to"])])]),_:2},1032,["class"])):w("",!0),e(t).showControls||m.last?(i(),P(e(qt),{key:3,"as-child":"","data-slot":"last",class:N(l.value.last({class:e(t).ui?.last}))},{default:u(()=>[T(n.$slots,"last",{},()=>[d(G,{color:e(t).color,variant:e(t).variant,size:e(t).size,icon:U.value,to:e(t).to?.(h)},null,8,["color","variant","size","icon","to"])])]),_:2},1032,["class"])):w("",!0)]),_:2},1032,["class"])]),_:3},16,["class"]))}},la={class:"flex items-center rounded-md border border-default overflow-hidden"},na={class:"text-sm text-muted tabular-nums"},oa={class:"flex flex-wrap items-center gap-1"},ia=["aria-pressed","onClick"],ra={class:"mt-3 flex items-center justify-center gap-2"},ua={class:"hidden md:block overflow-x-auto"},da={class:"min-w-0 space-y-0.5"},ca={class:"flex items-center gap-1 text-xs text-muted"},pa={class:"text-sm tabular-nums"},fa={key:0,class:"text-sm text-muted tabular-nums"},ma={key:1,class:"text-sm text-muted"},ga=["title"],va={class:"flex justify-end"},_a={class:"space-y-2 md:hidden"},ya={class:"flex items-start justify-between gap-2"},ba={class:"flex items-center gap-1 text-xs text-muted min-w-0"},ha={class:"flex flex-wrap items-center justify-between gap-x-3 gap-y-1"},xa={class:"text-xs text-muted tabular-nums"},ka={key:0,class:"text-xs text-muted tabular-nums"},Ca=["title"],Pa={class:"mt-4 flex flex-wrap items-center justify-between gap-3"},Ra={class:"flex flex-wrap items-center gap-3"},$a={class:"text-sm text-muted tabular-nums"},qa={class:"flex items-center gap-1.5"},Sa=1e3,Pe=25,za=F({__name:"ProjectTestCasesTable",props:{projectId:{},projectName:{},syncQuery:{type:Boolean}},emits:["total"],setup(r,{expose:c,emit:s}){const v=r,m=s,t=at(),C=st(),{treeView:b,setTreeView:j}=_t("project-test-cases"),L=[{label:"10 / page",value:10},{label:"25 / page",value:25},{label:"50 / page",value:50},{label:"100 / page",value:100}],D=[{label:"Last 7 days",value:7},{label:"Last 30 days",value:30},{label:"Last 90 days",value:90},{label:"Last year",value:365},{label:"All time",value:0}],B=[{label:"Passed",value:"passed",color:"green"},{label:"Failed",value:"failed",color:"red"},{label:"Flaky",value:"flaky",color:"orange"},{label:"Skipped",value:"skipped",color:"gray"},{label:"Didn't run",value:"didnotrun",color:"amber"}],U=lt().public.demoMode?0:30,l=v.syncQuery?t.query:{},n=M(Math.max(1,Number(l.page)||1)),g=M(typeof l.q=="string"?l.q:""),y=M(g.value),h=M(typeof l.status=="string"?l.status.split(",").filter(Boolean):[]),S=M(typeof l.age=="string"&&l.age!==""?Math.max(0,Number(l.age)||0):U),q=M(typeof l.sort=="string"?l.sort:"lastRun"),z=M(l.dir==="asc"?"asc":"desc"),o=Number(l.pageSize),R=M(L.some(p=>p.value===o)?o:Pe);te(y,ot(p=>{g.value=p.trim()},300)),te([g,h,S,q,z,R,b],()=>{n.value=1});const ee=k(()=>({limit:b.value?Sa:R.value,offset:b.value?0:(n.value-1)*R.value,...g.value?{q:g.value}:{},...h.value.length>0?{status:h.value.join(",")}:{},maxAgeDays:S.value,sort:q.value,dir:z.value})),{data:V,status:ne,error:ve,refresh:oe}=yt(`/api/projects/${v.projectId}/test-cases`,{query:ee},"$6hxagaRDEc");te(()=>V.value?.total,p=>{p!=null&&m("total",p)},{immediate:!0}),v.syncQuery&&te([g,h,S,q,z,n,R],()=>{C.replace({query:{...t.query,q:g.value||void 0,status:h.value.length>0?h.value.join(","):void 0,age:S.value!==U?String(S.value):void 0,sort:q.value!=="lastRun"?q.value:void 0,dir:z.value!=="desc"?z.value:void 0,page:n.value>1?String(n.value):void 0,pageSize:R.value!==Pe?String(R.value):void 0}})});function ze(p){h.value=h.value.includes(p)?h.value.filter(_=>_!==p):[...h.value,p]}function Ie(p){q.value===p?z.value=z.value==="asc"?"desc":"asc":(q.value=p,z.value=p==="title"?"asc":"desc")}function W(p,_){return()=>{const O=q.value===_,re=O?z.value==="asc"?"i-lucide-chevron-up":"i-lucide-chevron-down":"i-lucide-chevrons-up-down";return ue("button",{type:"button",class:"flex items-center gap-1 font-semibold select-none cursor-pointer hover:text-highlighted transition-colors",onClick:()=>Ie(_)},[p,ue(Y,{name:re,class:["shrink-0 size-3.5",!O&&"opacity-40"]})])}}const Le=k(()=>[{accessorKey:"title",header:W("Test case","title")},{accessorKey:"status",header:W("Status","status")},{accessorKey:"totalRuns",header:W("Runs","totalRuns")},{accessorKey:"passRate",header:W("Pass rate","passRate")},{id:"results",header:"Results"},{accessorKey:"avgDuration",header:W("Avg duration","avgDuration")},{accessorKey:"lastRun",header:W("Last run","lastRun")},{id:"actions",header:()=>ue("div",{class:"text-right"},"Actions")}]),X=k(()=>V.value?.items??[]),E=k(()=>V.value?.total??0),Ne=k(()=>E.value===0?0:(n.value-1)*R.value+1),je=k(()=>b.value?X.value.length:Math.min(n.value*R.value,E.value)),ie=k(()=>g.value!==""||h.value.length>0),Te=k(()=>ie.value||S.value!==0),we=k(()=>ne.value==="pending"&&!V.value);return c({refresh:oe}),(p,_)=>{const O=G,re=nt,_e=it,Fe=rt,De=ut,Be=dt,ye=ct,Ee=pt,Ve=ta,be=$e,he=mt,xe=Re,ke=Se,Ce=qe,Me=gt,Ae=sa,Ue=vt;return i(),P(Ue,{title:"Test cases",icon:"i-lucide-flask-conical",count:e(V)?.total,help:"project.test-cases"},{actions:u(()=>[d(O,{icon:"i-lucide-refresh-cw",size:"sm",color:"neutral",variant:"ghost","aria-label":"Refresh test cases",loading:e(ne)==="pending"&&!!e(V),onClick:_[0]||(_[0]=()=>e(oe)())},null,8,["loading"])]),default:u(()=>[d(Fe,{class:"mb-4"},{start:u(()=>[f("div",la,[f("button",{type:"button",class:N(["px-2 py-1 text-xs transition-colors",e(b)?"text-muted hover:bg-elevated/60":"bg-primary text-white dark:text-white"]),title:"Flat list",onClick:_[1]||(_[1]=a=>e(j)(!1))},[d(e(Y),{name:"i-lucide-list",class:"size-3.5"})],2),f("button",{type:"button",class:N(["px-2 py-1 text-xs transition-colors",e(b)?"bg-primary text-white dark:text-white":"text-muted hover:bg-elevated/60"]),title:"Tree view",onClick:_[2]||(_[2]=a=>e(j)(!0))},[d(e(Y),{name:"i-lucide-folder-tree",class:"size-3.5"})],2)]),f("span",na,x(e(E))+" "+x(e(E)===1?"case":"cases"),1)]),default:u(()=>[d(re,{modelValue:e(y),"onUpdate:modelValue":_[3]||(_[3]=a=>ae(y)?y.value=a:null),placeholder:"Search title or file...",icon:"i-lucide-search",size:"sm",class:"min-w-48 max-sm:flex-1","aria-label":"Search test cases"},null,8,["modelValue"]),f("div",oa,[(i(),$(A,null,le(B,a=>f("button",{key:a.value,type:"button",class:N(["inline-flex items-center gap-1.5 px-2 py-1 rounded-md text-xs font-medium transition-colors whitespace-nowrap",e(h).includes(a.value)?a.color==="green"?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":a.color==="red"?"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400":a.color==="orange"?"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400":a.color==="amber"?"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400":"bg-gray-200 text-gray-700 dark:bg-gray-700 dark:text-gray-300":"bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-700"]),"aria-pressed":e(h).includes(a.value),onClick:Ia=>ze(a.value)},[f("span",{class:N(["size-2 rounded-full shrink-0",a.color==="green"?"bg-green-500":a.color==="red"?"bg-red-500":a.color==="orange"?"bg-orange-500":a.color==="amber"?"bg-amber-500":"bg-gray-400"])},null,2),I(" "+x(a.label),1)],10,ia)),64))]),d(_e,{modelValue:e(S),"onUpdate:modelValue":_[4]||(_[4]=a=>ae(S)?S.value=a:null),items:D,size:"sm",class:"w-36","aria-label":"Last run age filter"},null,8,["modelValue"])]),_:1}),e(we)?(i(),P(De,{key:0,text:"Loading test cases..."})):e(ve)?(i(),P(Be,{key:1,text:("errorMessage"in p?p.errorMessage:e(ft))(e(ve),"Failed to load test cases")},{action:u(()=>[d(O,{size:"sm",variant:"outline",onClick:_[5]||(_[5]=()=>e(oe)())},{default:u(()=>[..._[10]||(_[10]=[I("Retry",-1)])]),_:1})]),_:1},8,["text"])):e(E)===0?(i(),$(A,{key:2},[e(Te)?(i(),P(ye,{key:1,icon:"i-lucide-search-x",text:"No test cases match your filters."},{default:u(()=>[f("div",ra,[e(S)!==0?(i(),P(O,{key:0,size:"sm",variant:"outline",onClick:_[6]||(_[6]=a=>S.value=0)},{default:u(()=>[..._[11]||(_[11]=[I("Show all time",-1)])]),_:1})):w("",!0),e(ie)?(i(),P(O,{key:1,size:"sm",variant:"ghost",onClick:_[7]||(_[7]=()=>{y.value="",g.value="",h.value=[]})},{default:u(()=>[..._[12]||(_[12]=[I(" Clear filters ",-1)])]),_:1})):w("",!0)])]),_:1})):(i(),P(ye,{key:0,icon:"i-lucide-flask-conical",text:"No test cases yet for this project."}))],64)):(i(),$("div",{key:3,class:N([{"opacity-60 pointer-events-none":e(ne)==="pending"},"transition-opacity"])},[e(b)?(i(),$(A,{key:0},[e(X).length<e(E)?(i(),P(Ee,{key:0,color:"warning",variant:"subtle",icon:"i-lucide-triangle-alert",class:"mb-3",title:`Showing the first ${e(X).length} of ${e(E)} cases — narrow the search or filters to see the rest.`},null,8,["title"])):w("",!0),d(Ve,{items:e(X),"has-filter":e(ie)},null,8,["items","has-filter"])],64)):(i(),$(A,{key:1},[f("div",ua,[d(Me,{data:e(X),columns:e(Le),ui:{base:"w-full table-fixed border-separate border-spacing-0 min-w-[56rem]",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0 [&>tr]:hover:bg-gray-50 dark:[&>tr]:hover:bg-gray-900/50",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"title-cell":u(({row:a})=>[f("div",da,[d(be,{to:`/test-cases/${a.original.id}`,class:"text-sm font-medium text-primary hover:underline truncate block",title:a.original.title},{default:u(()=>[I(x(a.original.title),1)]),_:2},1032,["to","title"]),f("div",ca,[d(e(Y),{name:"i-lucide-file-code",class:"size-3 shrink-0"}),d(he,{"file-path":a.original.filePath,"project-key":r.projectId,"project-name":r.projectName,class:"min-w-0"},null,8,["file-path","project-key","project-name"])])])]),"status-cell":u(({row:a})=>[d(xe,{color:("testCaseCategoryColor"in p?p.testCaseCategoryColor:e(pe))(a.original.status),variant:"subtle",size:"sm",class:"capitalize"},{default:u(()=>[I(x(("formatStatusLabel"in p?p.formatStatusLabel:e(ce))(a.original.status)),1)]),_:2},1032,["color"])]),"totalRuns-cell":u(({row:a})=>[f("span",pa,x(a.original.totalRuns),1)]),"passRate-cell":u(({row:a})=>[d(ke,{rate:a.original.passRate},null,8,["rate"])]),"results-cell":u(({row:a})=>[d(Ce,{passed:a.original.passedRuns,failed:a.original.failedRuns,skipped:a.original.skippedRuns,flaky:a.original.flakyRuns,"did-not-run":a.original.didNotRunRuns,total:a.original.totalRuns},null,8,["passed","failed","skipped","flaky","did-not-run","total"])]),"avgDuration-cell":u(({row:a})=>[a.original.avgDuration!=null?(i(),$("span",fa,x(("formatDuration"in p?p.formatDuration:e(fe))(a.original.avgDuration)),1)):(i(),$("span",ma,"—"))]),"lastRun-cell":u(({row:a})=>[f("span",{class:"text-sm text-muted",title:("prettyDateFormat"in p?p.prettyDateFormat:e(me))(a.original.lastRun)},x(a.original.lastRun!=null?("formatRelativeTime"in p?p.formatRelativeTime:e(ge))(a.original.lastRun):"—"),9,ga)]),"actions-cell":u(({row:a})=>[f("div",va,[d(O,{to:`/test-cases/${a.original.id}`,size:"sm",variant:"outline","trailing-icon":"i-lucide-arrow-right"},{default:u(()=>[..._[13]||(_[13]=[I(" View ",-1)])]),_:1},8,["to"])])]),_:1},8,["data","columns"])]),f("div",_a,[(i(!0),$(A,null,le(e(X),a=>(i(),$("div",{key:a.id,class:"rounded-lg border border-default p-3 space-y-2"},[f("div",ya,[d(be,{to:`/test-cases/${a.id}`,class:"text-sm font-medium text-primary hover:underline min-w-0 truncate",title:a.title},{default:u(()=>[I(x(a.title),1)]),_:2},1032,["to","title"]),d(xe,{color:("testCaseCategoryColor"in p?p.testCaseCategoryColor:e(pe))(a.status),variant:"subtle",size:"sm",class:"capitalize shrink-0"},{default:u(()=>[I(x(("formatStatusLabel"in p?p.formatStatusLabel:e(ce))(a.status)),1)]),_:2},1032,["color"])]),f("div",ba,[d(e(Y),{name:"i-lucide-file-code",class:"size-3 shrink-0"}),d(he,{"file-path":a.filePath,"project-key":r.projectId,"project-name":r.projectName,class:"min-w-0"},null,8,["file-path","project-key","project-name"])]),d(Ce,{passed:a.passedRuns,failed:a.failedRuns,skipped:a.skippedRuns,flaky:a.flakyRuns,"did-not-run":a.didNotRunRuns,total:a.totalRuns},null,8,["passed","failed","skipped","flaky","did-not-run","total"]),f("div",ha,[d(ke,{rate:a.passRate},null,8,["rate"]),f("span",xa,x(a.totalRuns)+" runs",1),a.avgDuration!=null?(i(),$("span",ka,x(("formatDuration"in p?p.formatDuration:e(fe))(a.avgDuration)),1)):w("",!0),f("span",{class:"text-xs text-muted",title:("prettyDateFormat"in p?p.prettyDateFormat:e(me))(a.lastRun)},x(a.lastRun!=null?("formatRelativeTime"in p?p.formatRelativeTime:e(ge))(a.lastRun):"—"),9,Ca)])]))),128))]),f("div",Pa,[f("div",Ra,[f("span",$a,"Showing "+x(e(Ne))+"–"+x(e(je))+" of "+x(e(E)),1),f("div",qa,[_[14]||(_[14]=f("span",{class:"text-sm text-muted"},"Rows per page",-1)),d(_e,{modelValue:e(R),"onUpdate:modelValue":_[8]||(_[8]=a=>ae(R)?R.value=a:null),items:L,size:"sm",class:"w-28","aria-label":"Rows per page"},null,8,["modelValue"])])]),e(E)>e(R)?(i(),P(Ae,{key:0,page:e(n),"onUpdate:page":_[9]||(_[9]=a=>ae(n)?n.value=a:null),total:e(E),"items-per-page":e(R),size:"sm"},null,8,["page","total","items-per-page"])):w("",!0)])],64))],2))]),_:1},8,["count"])}}}),Ka=Object.assign(za,{__name:"ProjectTestCasesTable"});export{Ka as _};
|
|
1
|
+
import{d as F,S as Z,o as i,f as P,g as u,T,m as I,U as Q,k as e,V as H,W as Oe,X as Ke,h as k,Y as Ge,Z as Qe,$ as Ze,t as x,c as $,i as f,O as de,p as N,j as d,v as Y,F as A,y as le,s as Re,x as $e,q as w,_ as G,r as M,a0 as He,a1 as We,a2 as Xe,a3 as Ye,a4 as Je,a5 as et,a6 as tt,u as at,a as st,K as lt,B as te,D as nt,l as ae,a7 as ot,a8 as ue}from"./BrT_Sys2.js";import{_ as it}from"./sMFaPAAR.js";import{_ as rt}from"./QFMx1VKs.js";import{_ as ut}from"./3QTvYrZp.js";import{_ as dt}from"./COVRAesU.js";import{_ as ct}from"./Wfk1m0ni.js";import{_ as pt}from"./BU6xjw05.js";import{_ as qe}from"./DjRhouSr.js";import{j as ce,t as pe,h as fe,p as me,f as ge,e as ft}from"./D7P0ML0H.js";import{_ as mt}from"./Bq0PQfQY.js";import{_ as gt}from"./DJHNEqb7.js";import{_ as vt}from"./CHIbdzqp.js";import{u as _t}from"./yZ4LuI9d.js";import{u as yt}from"./Dvc1aWpA.js";var bt=F({__name:"PaginationEllipsis",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(r){const c=r;return Z(),(s,v)=>(i(),P(e(H),Q(c,{"data-type":"ellipsis"}),{default:u(()=>[T(s.$slots,"default",{},()=>[v[0]||(v[0]=I("…"))])]),_:3},16))}}),ht=bt;const[J,xt]=Ge("PaginationRoot");var kt=F({__name:"PaginationRoot",props:{page:{type:Number,required:!1},defaultPage:{type:Number,required:!1,default:1},itemsPerPage:{type:Number,required:!0},total:{type:Number,required:!1,default:0},siblingCount:{type:Number,required:!1,default:2},disabled:{type:Boolean,required:!1},showEdges:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"nav"}},emits:["update:page"],setup(r,{emit:c}){const s=r,v=c,{siblingCount:m,disabled:t,showEdges:C}=Oe(s);Z();const b=Ke(s,"page",v,{defaultValue:s.defaultPage,passive:s.page===void 0}),j=k(()=>Math.max(1,Math.ceil(s.total/(s.itemsPerPage||1))));return xt({page:b,onPageChange(L){b.value=L},pageCount:j,siblingCount:m,disabled:t,showEdges:C}),(L,D)=>(i(),P(e(H),{as:L.as,"as-child":L.asChild},{default:u(()=>[T(L.$slots,"default",{page:e(b),pageCount:j.value})]),_:3},8,["as","as-child"]))}}),Ct=kt,Pt=F({__name:"PaginationFirst",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(r){const c=r,s=J();Z();const v=k(()=>s.page.value===1||s.disabled.value);return(m,t)=>(i(),P(e(H),Q(c,{"aria-label":"First Page",type:m.as==="button"?"button":void 0,disabled:v.value,onClick:t[0]||(t[0]=C=>!v.value&&e(s).onPageChange(1))}),{default:u(()=>[T(m.$slots,"default",{},()=>[t[1]||(t[1]=I("First page"))])]),_:3},16,["type","disabled"]))}}),Rt=Pt,$t=F({__name:"PaginationLast",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(r){const c=r,s=J();Z();const v=k(()=>s.page.value===s.pageCount.value||s.disabled.value);return(m,t)=>(i(),P(e(H),Q(c,{"aria-label":"Last Page",type:m.as==="button"?"button":void 0,disabled:v.value,onClick:t[0]||(t[0]=C=>!v.value&&e(s).onPageChange(e(s).pageCount.value))}),{default:u(()=>[T(m.$slots,"default",{},()=>[t[1]||(t[1]=I("Last page"))])]),_:3},16,["type","disabled"]))}}),qt=$t;function K(r,c){const s=c-r+1;return Array.from({length:s},(v,m)=>m+r)}function St(r){return r.map(c=>typeof c=="number"?{type:"page",value:c}:{type:"ellipsis"})}const se="ellipsis";function zt(r,c,s,v){const t=c,C=Math.max(r-s,1),b=Math.min(r+s,t);if(v){const L=Math.min(2*s+5,c)-2,D=C>3&&Math.abs(t-L-1+1)>2&&Math.abs(C-1)>2,B=b<t-2&&Math.abs(t-L)>2&&Math.abs(t-b)>2;if(!D&&B)return[...K(1,L),se,t];if(D&&!B){const l=K(t-L+1,t);return[1,se,...l]}if(D&&B){const l=K(C,b);return[1,se,...l,se,t]}return K(1,t)}else{const j=s*2+1;return c<j?K(1,t):r<=s+1?K(1,j):c-r<=s?K(c-j+1,t):K(C,b)}}var It=F({__name:"PaginationList",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(r){const c=r;Z();const s=J(),v=k(()=>St(zt(s.page.value,s.pageCount.value,s.siblingCount.value,s.showEdges.value)));return(m,t)=>(i(),P(e(H),Qe(Ze(c)),{default:u(()=>[T(m.$slots,"default",{items:v.value})]),_:3},16))}}),Lt=It,Nt=F({__name:"PaginationListItem",props:{value:{type:Number,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(r){const c=r;Z();const s=J(),v=k(()=>s.page.value===c.value),m=k(()=>s.disabled.value);return(t,C)=>(i(),P(e(H),Q(c,{"data-type":"page","aria-label":`Page ${t.value}`,"aria-current":v.value?"page":void 0,"data-selected":v.value?"true":void 0,disabled:m.value,type:t.as==="button"?"button":void 0,onClick:C[0]||(C[0]=b=>!m.value&&e(s).onPageChange(t.value))}),{default:u(()=>[T(t.$slots,"default",{},()=>[I(x(t.value),1)])]),_:3},16,["aria-label","aria-current","data-selected","disabled","type"]))}}),jt=Nt,Tt=F({__name:"PaginationNext",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(r){const c=r;Z();const s=J(),v=k(()=>s.page.value===s.pageCount.value||s.disabled.value);return(m,t)=>(i(),P(e(H),Q(c,{"aria-label":"Next Page",type:m.as==="button"?"button":void 0,disabled:v.value,onClick:t[0]||(t[0]=C=>!v.value&&e(s).onPageChange(e(s).page.value+1))}),{default:u(()=>[T(m.$slots,"default",{},()=>[t[1]||(t[1]=I("Next page"))])]),_:3},16,["type","disabled"]))}}),wt=Tt,Ft=F({__name:"PaginationPrev",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(r){const c=r;Z();const s=J(),v=k(()=>s.page.value===1||s.disabled.value);return(m,t)=>(i(),P(e(H),Q(c,{"aria-label":"Previous Page",type:m.as==="button"?"button":void 0,disabled:v.value,onClick:t[0]||(t[0]=C=>!v.value&&e(s).onPageChange(e(s).page.value-1))}),{default:u(()=>[T(m.$slots,"default",{},()=>[t[1]||(t[1]=I("Prev page"))])]),_:3},16,["type","disabled"]))}}),Dt=Ft;const Bt=["title"],Et={class:"h-1.5 w-14 shrink-0 overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},Vt={class:"text-sm font-medium tabular-nums"},Mt={key:1,class:"text-sm text-muted",title:"No executed runs yet"},At=F({__name:"PassRateIndicator",props:{rate:{}},setup(r){const c=r,s=k(()=>c.rate==null?null:Math.round(c.rate*100)),v=k(()=>s.value==null?"":s.value>=80?"bg-green-500":s.value>=50?"bg-amber-500":"bg-red-500");return(m,t)=>e(s)!=null?(i(),$("div",{key:0,class:"flex items-center gap-2",title:`${e(s)}% of executed runs passed`},[f("div",Et,[f("div",{class:N([e(v),"h-full rounded-full transition-all"]),style:de({width:`${e(s)}%`})},null,6)]),f("span",Vt,x(e(s))+"%",1)],8,Bt)):(i(),$("span",Mt,"—"))}}),Se=Object.assign(At,{__name:"PassRateIndicator"}),Ut={class:"rounded-lg border border-default text-sm"},Ot={class:"flex items-center justify-end px-3 py-1.5 border-b border-default bg-elevated"},Kt=["disabled","title"],Gt=["onClick"],Qt={class:"text-xs text-muted tabular-nums shrink-0"},Zt={class:"w-24 sm:w-32 shrink-0 max-sm:hidden"},Ht={class:"flex items-center gap-3 shrink-0"},Wt=["title"],Xt={key:0,class:"text-xs text-muted tabular-nums max-sm:hidden"},Yt=["title"],Jt={key:0,class:"text-center py-8 text-muted"},ea=F({__name:"ProjectTestCasesTree",props:{items:{},hasFilter:{type:Boolean}},setup(r){const c=r;function s(l){return(l.suitePath||"").split("").filter(Boolean)}function v(l){const n={passed:0,failed:0,skipped:0,flaky:0,didNotRun:0,total:0,cases:l.length};for(const g of l)n.passed+=g.passedRuns,n.failed+=g.failedRuns,n.skipped+=g.skippedRuns,n.flaky+=g.flakyRuns,n.didNotRun+=g.didNotRunRuns,n.total+=g.totalRuns;return n}const m=M(new Set),t=k(()=>m.value.size===0);function C(l){return c.hasFilter?!0:!m.value.has(l)}function b(l){if(c.hasFilter)return;const n=new Set(m.value);n.has(l)?n.delete(l):n.add(l),m.value=n}function j(){const l=new Set;for(const n of c.items){l.add(`file:${n.filePath}`);const g=s(n);for(let y=1;y<=g.length;y++)l.add(`group:${n.filePath}${g.slice(0,y).join("")}`)}return[...l]}function L(){m.value=new Set(j())}function D(){m.value=new Set}function B(l,n,g,y,h){const S=n.filter(o=>s(o).length===y.length),q=n.filter(o=>s(o).length>y.length),z=new Map;for(const o of q){const R=s(o)[y.length];z.has(R)||z.set(R,[]),z.get(R).push(o)}for(const[o,R]of z){const ee=[...y,o],V=`group:${g}${ee.join("")}`;l.push({kind:"group",depth:h,key:V,label:o,agg:v(R)}),C(V)&&B(l,R,g,ee,h+1)}for(const o of S)l.push({kind:"case",depth:h,key:`case:${o.id}`,testCase:o})}const U=k(()=>{const l=[],n=new Map;for(const g of c.items){const y=g.filePath||"unknown";n.has(y)||n.set(y,[]),n.get(y).push(g)}for(const[g,y]of[...n.entries()].sort(([h],[S])=>h.localeCompare(S))){const h=`file:${g}`;l.push({kind:"group",depth:0,key:h,label:g,agg:v(y)}),C(h)&&B(l,y,g,[],1)}return l});return(l,n)=>{const g=Y,y=qe,h=Re,S=$e,q=Se,z=G;return i(),$("div",Ut,[f("div",Ot,[f("button",{class:N(["flex items-center gap-1 text-xs transition-colors",r.hasFilter?"text-muted cursor-not-allowed opacity-50":"text-muted hover:text-default"]),disabled:r.hasFilter,title:r.hasFilter?"Clear filters to collapse/expand":e(t)?"Collapse all":"Expand all",onClick:n[0]||(n[0]=o=>e(t)?L():D())},[d(g,{name:e(t)?"i-lucide-fold-vertical":"i-lucide-unfold-vertical",class:"size-3.5"},null,8,["name"]),I(" "+x(e(t)?"Collapse all":"Expand all"),1)],10,Kt)]),(i(!0),$(A,null,le(e(U),o=>(i(),$(A,{key:o.key},[o.kind==="group"?(i(),$("div",{key:0,class:N(["flex items-center gap-2 py-2 pr-3 border-b border-default last:border-b-0 select-none",[o.depth===0?"bg-elevated":"bg-default",!r.hasFilter&&"cursor-pointer"]]),style:de({paddingLeft:`${o.depth*20+12}px`}),onClick:R=>b(o.key)},[d(g,{name:C(o.key)?"i-lucide-chevron-down":"i-lucide-chevron-right",class:"size-3.5 text-muted shrink-0"},null,8,["name"]),d(g,{name:o.depth===0?"i-lucide-file-code-2":"i-lucide-folder-open",class:N(["size-4 shrink-0",o.depth===0?"text-blue-500":"text-amber-500"])},null,8,["name","class"]),f("span",{class:N(["font-medium truncate min-w-0",[o.depth===0?"text-default font-mono text-xs sm:text-sm":"text-muted"]])},x(o.label),3),f("span",Qt,x(o.agg.cases)+" "+x(o.agg.cases===1?"case":"cases"),1),n[1]||(n[1]=f("div",{class:"flex-1"},null,-1)),f("div",Zt,[d(y,{passed:o.agg.passed,failed:o.agg.failed,skipped:o.agg.skipped,flaky:o.agg.flaky,"did-not-run":o.agg.didNotRun,total:o.agg.total},null,8,["passed","failed","skipped","flaky","did-not-run","total"])])],14,Gt)):(i(),$("div",{key:1,class:"flex flex-wrap items-center gap-x-2 gap-y-1 pr-3 py-1.5 border-b border-default last:border-b-0 hover:bg-gray-50 dark:hover:bg-gray-900/40 transition-colors",style:de({paddingLeft:`${o.depth*20+12}px`})},[d(g,{name:"i-lucide-flask-conical",class:"size-3.5 text-muted shrink-0"}),d(h,{color:("testCaseCategoryColor"in l?l.testCaseCategoryColor:e(pe))(o.testCase.status),size:"xs",variant:"subtle",class:"capitalize shrink-0"},{default:u(()=>[I(x(("formatStatusLabel"in l?l.formatStatusLabel:e(ce))(o.testCase.status)),1)]),_:2},1032,["color"]),d(S,{to:`/test-cases/${o.testCase.id}`,class:"text-sm text-primary hover:underline truncate flex-1 min-w-32",title:o.testCase.title},{default:u(()=>[I(x(o.testCase.title),1)]),_:2},1032,["to","title"]),f("div",Ht,[d(q,{rate:o.testCase.passRate},null,8,["rate"]),f("span",{class:"text-xs text-muted tabular-nums max-sm:hidden",title:`${o.testCase.totalRuns} runs`},x(o.testCase.totalRuns)+"× ",9,Wt),o.testCase.avgDuration!=null?(i(),$("span",Xt,x(("formatDuration"in l?l.formatDuration:e(fe))(o.testCase.avgDuration)),1)):w("",!0),f("span",{class:"text-xs text-muted max-sm:hidden",title:("prettyDateFormat"in l?l.prettyDateFormat:e(me))(o.testCase.lastRun)},x(("formatRelativeTime"in l?l.formatRelativeTime:e(ge))(o.testCase.lastRun)),9,Yt),d(z,{to:`/test-cases/${o.testCase.id}`,size:"xs",variant:"outline"},{default:u(()=>[...n[2]||(n[2]=[I("View",-1)])]),_:1},8,["to"])])],4))],64))),128)),e(U).length===0?(i(),$("div",Jt,[d(g,{name:"i-lucide-search-x",class:"size-6 mx-auto mb-2 text-gray-300 dark:text-gray-600"}),n[3]||(n[3]=f("p",{class:"text-sm"},"No test cases match your filters.",-1))])):w("",!0)])}}}),ta=Object.assign(ea,{__name:"ProjectTestCasesTree"}),aa={slots:{root:"",list:"flex items-center gap-1",ellipsis:"pointer-events-none",label:"min-w-5 text-center",first:"",prev:"",item:"",next:"",last:""}},sa={__name:"UPagination",props:{as:{type:null,required:!1},firstIcon:{type:null,required:!1},prevIcon:{type:null,required:!1},nextIcon:{type:null,required:!1},lastIcon:{type:null,required:!1},ellipsisIcon:{type:null,required:!1},color:{type:null,required:!1,default:"neutral"},variant:{type:null,required:!1,default:"outline"},activeColor:{type:null,required:!1,default:"primary"},activeVariant:{type:null,required:!1,default:"solid"},showControls:{type:Boolean,required:!1,default:!0},size:{type:null,required:!1},to:{type:Function,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultPage:{type:Number,required:!1},disabled:{type:Boolean,required:!1},itemsPerPage:{type:Number,required:!1,default:10},page:{type:Number,required:!1},showEdges:{type:Boolean,required:!1,default:!1},siblingCount:{type:Number,required:!1,default:2},total:{type:Number,required:!1,default:0}},emits:["update:page"],setup(r,{emit:c}){const s=r,v=c,m=He(),t=We("pagination",s),{dir:C}=Xe(),b=Ye(),j=Je(et(t,"as","defaultPage","disabled","itemsPerPage","page","showEdges","siblingCount","total"),v),L=k(()=>t.firstIcon||(C.value==="rtl"?b.ui.icons.chevronDoubleRight:b.ui.icons.chevronDoubleLeft)),D=k(()=>t.prevIcon||(C.value==="rtl"?b.ui.icons.chevronRight:b.ui.icons.chevronLeft)),B=k(()=>t.nextIcon||(C.value==="rtl"?b.ui.icons.chevronLeft:b.ui.icons.chevronRight)),U=k(()=>t.lastIcon||(C.value==="rtl"?b.ui.icons.chevronDoubleLeft:b.ui.icons.chevronDoubleRight)),l=k(()=>tt({extend:aa,...b.ui?.pagination||{}})());return(n,g)=>(i(),P(e(Ct),Q(e(j),{"data-slot":"root",class:l.value.root({class:[e(t).ui?.root,e(t).class]})}),{default:u(({page:y,pageCount:h})=>[d(e(Lt),{"data-slot":"list",class:N(l.value.list({class:e(t).ui?.list}))},{default:u(({items:S})=>[e(t).showControls||m.first?(i(),P(e(Rt),{key:0,"as-child":"","data-slot":"first",class:N(l.value.first({class:e(t).ui?.first}))},{default:u(()=>[T(n.$slots,"first",{},()=>[d(G,{color:e(t).color,variant:e(t).variant,size:e(t).size,icon:L.value,to:e(t).to?.(1)},null,8,["color","variant","size","icon","to"])])]),_:3},8,["class"])):w("",!0),e(t).showControls||m.prev?(i(),P(e(Dt),{key:1,"as-child":"","data-slot":"prev",class:N(l.value.prev({class:e(t).ui?.prev}))},{default:u(()=>[T(n.$slots,"prev",{},()=>[d(G,{color:e(t).color,variant:e(t).variant,size:e(t).size,icon:D.value,to:y>1?e(t).to?.(y-1):void 0},null,8,["color","variant","size","icon","to"])])]),_:2},1032,["class"])):w("",!0),(i(!0),$(A,null,le(S,(q,z)=>(i(),$(A,{key:z},[q.type==="page"?(i(),P(e(jt),{key:0,"as-child":"",value:q.value,"data-slot":"item",class:N(l.value.item({class:e(t).ui?.item}))},{default:u(()=>[T(n.$slots,"item",Q({ref_for:!0},{item:q,index:z,page:y,pageCount:h}),()=>[d(G,{color:y===q.value?e(t).activeColor:e(t).color,variant:y===q.value?e(t).activeVariant:e(t).variant,size:e(t).size,label:String(q.value),ui:{label:l.value.label()},to:e(t).to?.(q.value),square:""},null,8,["color","variant","size","label","ui","to"])])]),_:2},1032,["value","class"])):(i(),P(e(ht),{key:1,"as-child":"","data-slot":"ellipsis",class:N(l.value.ellipsis({class:e(t).ui?.ellipsis}))},{default:u(()=>[T(n.$slots,"ellipsis",{ui:l.value},()=>[d(G,{as:"div",color:e(t).color,variant:e(t).variant,size:e(t).size,icon:e(t).ellipsisIcon||e(b).ui.icons.ellipsis},null,8,["color","variant","size","icon"])])]),_:3},8,["class"]))],64))),128)),e(t).showControls||m.next?(i(),P(e(wt),{key:2,"as-child":"","data-slot":"next",class:N(l.value.next({class:e(t).ui?.next}))},{default:u(()=>[T(n.$slots,"next",{},()=>[d(G,{color:e(t).color,variant:e(t).variant,size:e(t).size,icon:B.value,to:y<h?e(t).to?.(y+1):void 0},null,8,["color","variant","size","icon","to"])])]),_:2},1032,["class"])):w("",!0),e(t).showControls||m.last?(i(),P(e(qt),{key:3,"as-child":"","data-slot":"last",class:N(l.value.last({class:e(t).ui?.last}))},{default:u(()=>[T(n.$slots,"last",{},()=>[d(G,{color:e(t).color,variant:e(t).variant,size:e(t).size,icon:U.value,to:e(t).to?.(h)},null,8,["color","variant","size","icon","to"])])]),_:2},1032,["class"])):w("",!0)]),_:2},1032,["class"])]),_:3},16,["class"]))}},la={class:"flex items-center rounded-md border border-default overflow-hidden"},na={class:"text-sm text-muted tabular-nums"},oa={class:"flex flex-wrap items-center gap-1"},ia=["aria-pressed","onClick"],ra={class:"mt-3 flex items-center justify-center gap-2"},ua={class:"hidden md:block overflow-x-auto"},da={class:"min-w-0 space-y-0.5"},ca={class:"flex items-center gap-1 text-xs text-muted"},pa={class:"text-sm tabular-nums"},fa={key:0,class:"text-sm text-muted tabular-nums"},ma={key:1,class:"text-sm text-muted"},ga=["title"],va={class:"flex justify-end"},_a={class:"space-y-2 md:hidden"},ya={class:"flex items-start justify-between gap-2"},ba={class:"flex items-center gap-1 text-xs text-muted min-w-0"},ha={class:"flex flex-wrap items-center justify-between gap-x-3 gap-y-1"},xa={class:"text-xs text-muted tabular-nums"},ka={key:0,class:"text-xs text-muted tabular-nums"},Ca=["title"],Pa={class:"mt-4 flex flex-wrap items-center justify-between gap-3"},Ra={class:"flex flex-wrap items-center gap-3"},$a={class:"text-sm text-muted tabular-nums"},qa={class:"flex items-center gap-1.5"},Sa=1e3,Pe=25,za=F({__name:"ProjectTestCasesTable",props:{projectId:{},projectName:{},syncQuery:{type:Boolean}},emits:["total"],setup(r,{expose:c,emit:s}){const v=r,m=s,t=at(),C=st(),{treeView:b,setTreeView:j}=_t("project-test-cases"),L=[{label:"10 / page",value:10},{label:"25 / page",value:25},{label:"50 / page",value:50},{label:"100 / page",value:100}],D=[{label:"Last 7 days",value:7},{label:"Last 30 days",value:30},{label:"Last 90 days",value:90},{label:"Last year",value:365},{label:"All time",value:0}],B=[{label:"Passed",value:"passed",color:"green"},{label:"Failed",value:"failed",color:"red"},{label:"Flaky",value:"flaky",color:"orange"},{label:"Skipped",value:"skipped",color:"gray"},{label:"Didn't run",value:"didnotrun",color:"amber"}],U=lt().public.demoMode?0:30,l=v.syncQuery?t.query:{},n=M(Math.max(1,Number(l.page)||1)),g=M(typeof l.q=="string"?l.q:""),y=M(g.value),h=M(typeof l.status=="string"?l.status.split(",").filter(Boolean):[]),S=M(typeof l.age=="string"&&l.age!==""?Math.max(0,Number(l.age)||0):U),q=M(typeof l.sort=="string"?l.sort:"lastRun"),z=M(l.dir==="asc"?"asc":"desc"),o=Number(l.pageSize),R=M(L.some(p=>p.value===o)?o:Pe);te(y,ot(p=>{g.value=p.trim()},300)),te([g,h,S,q,z,R,b],()=>{n.value=1});const ee=k(()=>({limit:b.value?Sa:R.value,offset:b.value?0:(n.value-1)*R.value,...g.value?{q:g.value}:{},...h.value.length>0?{status:h.value.join(",")}:{},maxAgeDays:S.value,sort:q.value,dir:z.value})),{data:V,status:ne,error:ve,refresh:oe}=yt(`/api/projects/${v.projectId}/test-cases`,{query:ee},"$6hxagaRDEc");te(()=>V.value?.total,p=>{p!=null&&m("total",p)},{immediate:!0}),v.syncQuery&&te([g,h,S,q,z,n,R],()=>{C.replace({query:{...t.query,q:g.value||void 0,status:h.value.length>0?h.value.join(","):void 0,age:S.value!==U?String(S.value):void 0,sort:q.value!=="lastRun"?q.value:void 0,dir:z.value!=="desc"?z.value:void 0,page:n.value>1?String(n.value):void 0,pageSize:R.value!==Pe?String(R.value):void 0}})});function ze(p){h.value=h.value.includes(p)?h.value.filter(_=>_!==p):[...h.value,p]}function Ie(p){q.value===p?z.value=z.value==="asc"?"desc":"asc":(q.value=p,z.value=p==="title"?"asc":"desc")}function W(p,_){return()=>{const O=q.value===_,re=O?z.value==="asc"?"i-lucide-chevron-up":"i-lucide-chevron-down":"i-lucide-chevrons-up-down";return ue("button",{type:"button",class:"flex items-center gap-1 font-semibold select-none cursor-pointer hover:text-highlighted transition-colors",onClick:()=>Ie(_)},[p,ue(Y,{name:re,class:["shrink-0 size-3.5",!O&&"opacity-40"]})])}}const Le=k(()=>[{accessorKey:"title",header:W("Test case","title")},{accessorKey:"status",header:W("Status","status")},{accessorKey:"totalRuns",header:W("Runs","totalRuns")},{accessorKey:"passRate",header:W("Pass rate","passRate")},{id:"results",header:"Results"},{accessorKey:"avgDuration",header:W("Avg duration","avgDuration")},{accessorKey:"lastRun",header:W("Last run","lastRun")},{id:"actions",header:()=>ue("div",{class:"text-right"},"Actions")}]),X=k(()=>V.value?.items??[]),E=k(()=>V.value?.total??0),Ne=k(()=>E.value===0?0:(n.value-1)*R.value+1),je=k(()=>b.value?X.value.length:Math.min(n.value*R.value,E.value)),ie=k(()=>g.value!==""||h.value.length>0),Te=k(()=>ie.value||S.value!==0),we=k(()=>ne.value==="pending"&&!V.value);return c({refresh:oe}),(p,_)=>{const O=G,re=nt,_e=it,Fe=rt,De=ut,Be=dt,ye=ct,Ee=pt,Ve=ta,be=$e,he=mt,xe=Re,ke=Se,Ce=qe,Me=gt,Ae=sa,Ue=vt;return i(),P(Ue,{title:"Test cases",icon:"i-lucide-flask-conical",count:e(V)?.total,help:"project.test-cases"},{actions:u(()=>[d(O,{icon:"i-lucide-refresh-cw",size:"sm",color:"neutral",variant:"ghost","aria-label":"Refresh test cases",loading:e(ne)==="pending"&&!!e(V),onClick:_[0]||(_[0]=()=>e(oe)())},null,8,["loading"])]),default:u(()=>[d(Fe,{class:"mb-4"},{start:u(()=>[f("div",la,[f("button",{type:"button",class:N(["px-2 py-1 text-xs transition-colors",e(b)?"text-muted hover:bg-elevated/60":"bg-primary text-white dark:text-white"]),title:"Flat list",onClick:_[1]||(_[1]=a=>e(j)(!1))},[d(e(Y),{name:"i-lucide-list",class:"size-3.5"})],2),f("button",{type:"button",class:N(["px-2 py-1 text-xs transition-colors",e(b)?"bg-primary text-white dark:text-white":"text-muted hover:bg-elevated/60"]),title:"Tree view",onClick:_[2]||(_[2]=a=>e(j)(!0))},[d(e(Y),{name:"i-lucide-folder-tree",class:"size-3.5"})],2)]),f("span",na,x(e(E))+" "+x(e(E)===1?"case":"cases"),1)]),default:u(()=>[d(re,{modelValue:e(y),"onUpdate:modelValue":_[3]||(_[3]=a=>ae(y)?y.value=a:null),placeholder:"Search title or file...",icon:"i-lucide-search",size:"sm",class:"min-w-48 max-sm:flex-1","aria-label":"Search test cases"},null,8,["modelValue"]),f("div",oa,[(i(),$(A,null,le(B,a=>f("button",{key:a.value,type:"button",class:N(["inline-flex items-center gap-1.5 px-2 py-1 rounded-md text-xs font-medium transition-colors whitespace-nowrap",e(h).includes(a.value)?a.color==="green"?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":a.color==="red"?"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400":a.color==="orange"?"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400":a.color==="amber"?"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400":"bg-gray-200 text-gray-700 dark:bg-gray-700 dark:text-gray-300":"bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-700"]),"aria-pressed":e(h).includes(a.value),onClick:Ia=>ze(a.value)},[f("span",{class:N(["size-2 rounded-full shrink-0",a.color==="green"?"bg-green-500":a.color==="red"?"bg-red-500":a.color==="orange"?"bg-orange-500":a.color==="amber"?"bg-amber-500":"bg-gray-400"])},null,2),I(" "+x(a.label),1)],10,ia)),64))]),d(_e,{modelValue:e(S),"onUpdate:modelValue":_[4]||(_[4]=a=>ae(S)?S.value=a:null),items:D,size:"sm",class:"w-36","aria-label":"Last run age filter"},null,8,["modelValue"])]),_:1}),e(we)?(i(),P(De,{key:0,text:"Loading test cases..."})):e(ve)?(i(),P(Be,{key:1,text:("errorMessage"in p?p.errorMessage:e(ft))(e(ve),"Failed to load test cases")},{action:u(()=>[d(O,{size:"sm",variant:"outline",onClick:_[5]||(_[5]=()=>e(oe)())},{default:u(()=>[..._[10]||(_[10]=[I("Retry",-1)])]),_:1})]),_:1},8,["text"])):e(E)===0?(i(),$(A,{key:2},[e(Te)?(i(),P(ye,{key:1,icon:"i-lucide-search-x",text:"No test cases match your filters."},{default:u(()=>[f("div",ra,[e(S)!==0?(i(),P(O,{key:0,size:"sm",variant:"outline",onClick:_[6]||(_[6]=a=>S.value=0)},{default:u(()=>[..._[11]||(_[11]=[I("Show all time",-1)])]),_:1})):w("",!0),e(ie)?(i(),P(O,{key:1,size:"sm",variant:"ghost",onClick:_[7]||(_[7]=()=>{y.value="",g.value="",h.value=[]})},{default:u(()=>[..._[12]||(_[12]=[I(" Clear filters ",-1)])]),_:1})):w("",!0)])]),_:1})):(i(),P(ye,{key:0,icon:"i-lucide-flask-conical",text:"No test cases yet for this project."}))],64)):(i(),$("div",{key:3,class:N([{"opacity-60 pointer-events-none":e(ne)==="pending"},"transition-opacity"])},[e(b)?(i(),$(A,{key:0},[e(X).length<e(E)?(i(),P(Ee,{key:0,color:"warning",variant:"subtle",icon:"i-lucide-triangle-alert",class:"mb-3",title:`Showing the first ${e(X).length} of ${e(E)} cases — narrow the search or filters to see the rest.`},null,8,["title"])):w("",!0),d(Ve,{items:e(X),"has-filter":e(ie)},null,8,["items","has-filter"])],64)):(i(),$(A,{key:1},[f("div",ua,[d(Me,{data:e(X),columns:e(Le),ui:{base:"w-full table-fixed border-separate border-spacing-0 min-w-[56rem]",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0 [&>tr]:hover:bg-gray-50 dark:[&>tr]:hover:bg-gray-900/50",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"title-cell":u(({row:a})=>[f("div",da,[d(be,{to:`/test-cases/${a.original.id}`,class:"text-sm font-medium text-primary hover:underline truncate block",title:a.original.title},{default:u(()=>[I(x(a.original.title),1)]),_:2},1032,["to","title"]),f("div",ca,[d(e(Y),{name:"i-lucide-file-code",class:"size-3 shrink-0"}),d(he,{"file-path":a.original.filePath,"project-key":r.projectId,"project-name":r.projectName,class:"min-w-0"},null,8,["file-path","project-key","project-name"])])])]),"status-cell":u(({row:a})=>[d(xe,{color:("testCaseCategoryColor"in p?p.testCaseCategoryColor:e(pe))(a.original.status),variant:"subtle",size:"sm",class:"capitalize"},{default:u(()=>[I(x(("formatStatusLabel"in p?p.formatStatusLabel:e(ce))(a.original.status)),1)]),_:2},1032,["color"])]),"totalRuns-cell":u(({row:a})=>[f("span",pa,x(a.original.totalRuns),1)]),"passRate-cell":u(({row:a})=>[d(ke,{rate:a.original.passRate},null,8,["rate"])]),"results-cell":u(({row:a})=>[d(Ce,{passed:a.original.passedRuns,failed:a.original.failedRuns,skipped:a.original.skippedRuns,flaky:a.original.flakyRuns,"did-not-run":a.original.didNotRunRuns,total:a.original.totalRuns},null,8,["passed","failed","skipped","flaky","did-not-run","total"])]),"avgDuration-cell":u(({row:a})=>[a.original.avgDuration!=null?(i(),$("span",fa,x(("formatDuration"in p?p.formatDuration:e(fe))(a.original.avgDuration)),1)):(i(),$("span",ma,"—"))]),"lastRun-cell":u(({row:a})=>[f("span",{class:"text-sm text-muted",title:("prettyDateFormat"in p?p.prettyDateFormat:e(me))(a.original.lastRun)},x(a.original.lastRun!=null?("formatRelativeTime"in p?p.formatRelativeTime:e(ge))(a.original.lastRun):"—"),9,ga)]),"actions-cell":u(({row:a})=>[f("div",va,[d(O,{to:`/test-cases/${a.original.id}`,size:"sm",variant:"outline","trailing-icon":"i-lucide-arrow-right"},{default:u(()=>[..._[13]||(_[13]=[I(" View ",-1)])]),_:1},8,["to"])])]),_:1},8,["data","columns"])]),f("div",_a,[(i(!0),$(A,null,le(e(X),a=>(i(),$("div",{key:a.id,class:"rounded-lg border border-default p-3 space-y-2"},[f("div",ya,[d(be,{to:`/test-cases/${a.id}`,class:"text-sm font-medium text-primary hover:underline min-w-0 truncate",title:a.title},{default:u(()=>[I(x(a.title),1)]),_:2},1032,["to","title"]),d(xe,{color:("testCaseCategoryColor"in p?p.testCaseCategoryColor:e(pe))(a.status),variant:"subtle",size:"sm",class:"capitalize shrink-0"},{default:u(()=>[I(x(("formatStatusLabel"in p?p.formatStatusLabel:e(ce))(a.status)),1)]),_:2},1032,["color"])]),f("div",ba,[d(e(Y),{name:"i-lucide-file-code",class:"size-3 shrink-0"}),d(he,{"file-path":a.filePath,"project-key":r.projectId,"project-name":r.projectName,class:"min-w-0"},null,8,["file-path","project-key","project-name"])]),d(Ce,{passed:a.passedRuns,failed:a.failedRuns,skipped:a.skippedRuns,flaky:a.flakyRuns,"did-not-run":a.didNotRunRuns,total:a.totalRuns},null,8,["passed","failed","skipped","flaky","did-not-run","total"]),f("div",ha,[d(ke,{rate:a.passRate},null,8,["rate"]),f("span",xa,x(a.totalRuns)+" runs",1),a.avgDuration!=null?(i(),$("span",ka,x(("formatDuration"in p?p.formatDuration:e(fe))(a.avgDuration)),1)):w("",!0),f("span",{class:"text-xs text-muted",title:("prettyDateFormat"in p?p.prettyDateFormat:e(me))(a.lastRun)},x(a.lastRun!=null?("formatRelativeTime"in p?p.formatRelativeTime:e(ge))(a.lastRun):"—"),9,Ca)])]))),128))]),f("div",Pa,[f("div",Ra,[f("span",$a,"Showing "+x(e(Ne))+"–"+x(e(je))+" of "+x(e(E)),1),f("div",qa,[_[14]||(_[14]=f("span",{class:"text-sm text-muted"},"Rows per page",-1)),d(_e,{modelValue:e(R),"onUpdate:modelValue":_[8]||(_[8]=a=>ae(R)?R.value=a:null),items:L,size:"sm",class:"w-28","aria-label":"Rows per page"},null,8,["modelValue"])])]),e(E)>e(R)?(i(),P(Ae,{key:0,page:e(n),"onUpdate:page":_[9]||(_[9]=a=>ae(n)?n.value=a:null),total:e(E),"items-per-page":e(R),size:"sm"},null,8,["page","total","items-per-page"])):w("",!0)])],64))],2))]),_:1},8,["count"])}}}),Ka=Object.assign(za,{__name:"ProjectTestCasesTable"});export{Ka as _};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as T,S as P,o as u,f as v,g as n,T as q,Z as L,$,k as e,bm as V,c0 as O,X as W,B as G,bL as U,b9 as X,h as b,r as N,Y,C as I,aK as H,j as w,bl as Z,U as m,bG as J,m as Q,t as K,H as ee,bk as te,bw as E,bh as ae,c1 as re,bn as oe,ae as se,aA as le,bq as ne,ay as ie,V as ue,bF as de,bd as pe,a0 as fe,a1 as ce,a3 as ge,a4 as ve,a5 as ye,br as be,q as x,bu as _e,c as F,p as A,F as me,y as qe,bC as Ce,b3 as R,a6 as he}from"./B8fs6GU9.js";var Te=T({__name:"TooltipArrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(i){const d=i;return P(),(t,p)=>(u(),v(e(V),L($(d)),{default:n(()=>[q(t.$slots,"default")]),_:3},16))}}),we=Te;const j="tooltip.open",[S,Pe]=Y("TooltipRoot");var ke=T({__name:"TooltipRoot",props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},delayDuration:{type:Number,required:!1,default:void 0},disableHoverableContent:{type:Boolean,required:!1,default:void 0},disableClosingTrigger:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1,default:void 0},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:void 0}},emits:["update:open"],setup(i,{emit:d}){const t=i,p=d;P();const r=O(),a=b(()=>t.disableHoverableContent??r.disableHoverableContent.value),g=b(()=>t.disableClosingTrigger??r.disableClosingTrigger.value),f=b(()=>t.disabled??r.disabled.value),y=b(()=>t.delayDuration??r.delayDuration.value),_=b(()=>t.ignoreNonKeyboardFocus??r.ignoreNonKeyboardFocus.value),o=W(t,"open",p,{defaultValue:t.defaultOpen,passive:t.open===void 0});G(o,B=>{r.onClose&&(B?(r.onOpen(),document.dispatchEvent(new CustomEvent(j))):r.onClose())});const s=N(!1),l=N(),C=b(()=>o.value?s.value?"delayed-open":"instant-open":"closed"),{start:D,stop:h}=U(()=>{s.value=!0,o.value=!0},y,{immediate:!1});function c(){h(),s.value=!1,o.value=!0}function k(){h(),o.value=!1}function z(){D()}return Pe({contentId:"",open:o,stateAttribute:C,trigger:l,onTriggerChange(B){l.value=B},onTriggerEnter(){r.isOpenDelayed.value?z():c()},onTriggerLeave(){a.value?k():h()},onOpen:c,onClose:k,disableHoverableContent:a,disableClosingTrigger:g,disabled:f,ignoreNonKeyboardFocus:_}),(B,He)=>(u(),v(e(X),null,{default:n(()=>[q(B.$slots,"default",{open:e(o)})]),_:3}))}}),Be=ke,Oe=T({__name:"TooltipContentImpl",props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1,default:void 0},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1,default:void 0},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1,default:void 0},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:["escapeKeyDown","pointerDownOutside"],setup(i,{emit:d}){const t=i,p=d,r=S(),a=O(),{forwardRef:g,currentElement:f}=P(),y=b(()=>t.ariaLabel||f.value?.textContent),_=b(()=>{const{ariaLabel:o,...s}=t;return E(s,a.content.value??{},{side:"top",sideOffset:0,align:"center",avoidCollisions:!0,collisionBoundary:[],collisionPadding:0,arrowPadding:0,sticky:"partial",hideWhenDetached:!1})});return I(()=>{H(window,"scroll",o=>{o.target?.contains(r.trigger.value)&&r.onClose()},{capture:!0}),H(window,j,r.onClose)}),(o,s)=>(u(),v(e(te),{"as-child":"","disable-outside-pointer-events":!1,onEscapeKeyDown:s[0]||(s[0]=l=>p("escapeKeyDown",l)),onPointerDownOutside:s[1]||(s[1]=l=>{e(r).disableClosingTrigger.value&&e(r).trigger.value?.contains(l.target)&&l.preventDefault(),p("pointerDownOutside",l)}),onFocusOutside:s[2]||(s[2]=ee(()=>{},["prevent"])),onDismiss:s[3]||(s[3]=l=>e(r).onClose())},{default:n(()=>[w(e(Z),m({ref:e(g),"data-state":e(r).stateAttribute.value},{...o.$attrs,..._.value},{style:{"--reka-tooltip-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-tooltip-content-available-width":"var(--reka-popper-available-width)","--reka-tooltip-content-available-height":"var(--reka-popper-available-height)","--reka-tooltip-trigger-width":"var(--reka-popper-anchor-width)","--reka-tooltip-trigger-height":"var(--reka-popper-anchor-height)"}}),{default:n(()=>[q(o.$slots,"default"),w(e(J),{id:e(r).contentId,role:"tooltip"},{default:n(()=>[Q(K(y.value),1)]),_:1},8,["id"])]),_:3},16,["data-state"])]),_:3}))}}),M=Oe,De=T({__name:"TooltipContentHoverable",props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},setup(i){const t=ae(i),{forwardRef:p,currentElement:r}=P(),{trigger:a,onClose:g}=S(),f=O(),{isPointerInTransit:y,onPointerExit:_}=re(a,r);return f.isPointerInTransitRef=y,_(()=>{g()}),(o,s)=>(u(),v(M,m({ref:e(p)},e(t)),{default:n(()=>[q(o.$slots,"default")]),_:3},16))}}),xe=De,Ne=T({__name:"TooltipContent",props:{forceMount:{type:Boolean,required:!1},ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:["escapeKeyDown","pointerDownOutside"],setup(i,{emit:d}){const t=i,p=d,r=S(),a=oe(t,p),{forwardRef:g}=P();return(f,y)=>(u(),v(e(le),{present:f.forceMount||e(r).open.value},{default:n(()=>[(u(),v(se(e(r).disableHoverableContent.value?M:xe),m({ref:e(g)},e(a)),{default:n(()=>[q(f.$slots,"default")]),_:3},16))]),_:3},8,["present"]))}}),Se=Ne,Fe=T({__name:"TooltipPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(i){const d=i;return(t,p)=>(u(),v(e(ne),L($(d)),{default:n(()=>[q(t.$slots,"default")]),_:3},16))}}),Re=Fe,Ee=T({__name:"TooltipTrigger",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(i){const d=i,t=S(),p=O();t.contentId||=ie(void 0,"reka-tooltip-content");const{forwardRef:r,currentElement:a}=P(),g=N(!1),f=N(!1),y=b(()=>t.disabled.value?{}:{click:h,focus:C,pointermove:s,pointerleave:l,pointerdown:o,blur:D});I(()=>{t.onTriggerChange(a.value)});function _(){setTimeout(()=>{g.value=!1},1)}function o(){t.open&&!t.disableClosingTrigger.value&&t.onClose(),g.value=!0,document.addEventListener("pointerup",_,{once:!0})}function s(c){c.pointerType!=="touch"&&!f.value&&!p.isPointerInTransitRef.value&&(t.onTriggerEnter(),f.value=!0)}function l(){t.onTriggerLeave(),f.value=!1}function C(c){g.value||t.ignoreNonKeyboardFocus.value&&!c.target.matches?.(":focus-visible")||t.onOpen()}function D(){t.onClose()}function h(){t.disableClosingTrigger.value||t.onClose()}return(c,k)=>(u(),v(e(pe),{"as-child":"",reference:c.reference},{default:n(()=>[w(e(ue),m({ref:e(r),"aria-describedby":e(t).open.value?e(t).contentId:void 0,"data-state":e(t).stateAttribute.value,as:c.as,"as-child":d.asChild,"data-grace-area-trigger":""},de(y.value)),{default:n(()=>[q(c.$slots,"default")]),_:3},16,["aria-describedby","data-state","as","as-child"])]),_:3},8,["reference"]))}}),Le=Ee;const $e={slots:{content:"flex items-center gap-1 bg-default text-highlighted shadow-sm rounded-sm ring ring-default h-6 px-2.5 py-1 text-xs select-none data-[state=delayed-open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-tooltip-content-transform-origin) pointer-events-auto",arrow:"fill-bg stroke-default",text:"truncate",kbds:"hidden lg:inline-flex items-center shrink-0 gap-0.5 not-first-of-type:before:content-['·'] not-first-of-type:before:me-0.5",kbdsSize:"sm"}},Ie={__name:"UTooltip",props:{text:{type:String,required:!1},kbds:{type:Array,required:!1},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},reference:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1},delayDuration:{type:Number,required:!1},disableHoverableContent:{type:Boolean,required:!1},disableClosingTrigger:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},ignoreNonKeyboardFocus:{type:Boolean,required:!1}},emits:["update:open"],setup(i,{emit:d}){const t=i,p=d,r=fe(),a=ce("tooltip",t),g=ge(),f=O(),y=ve(ye(a,"defaultOpen","open","delayDuration","disableHoverableContent","disableClosingTrigger","ignoreNonKeyboardFocus"),p),_=be(R(()=>a.portal)),o=R(()=>E(a.content,f.content.value,{side:"bottom",sideOffset:8,collisionPadding:8})),s=R(()=>E(a.arrow,{rounded:!0})),l=b(()=>he({extend:$e,...g.ui?.tooltip||{}})({side:o.value.side}));return(C,D)=>(u(),v(e(Be),m(e(y),{disabled:!(e(a).text||e(a).kbds?.length||r.content)||e(a).disabled}),{default:n(({open:h})=>[r.default||e(a).reference?(u(),v(e(Le),m({key:0},C.$attrs,{"as-child":"",reference:e(a).reference,class:e(a).class}),{default:n(()=>[q(C.$slots,"default",{open:h})]),_:2},1040,["reference","class"])):x("",!0),w(e(Re),L($(e(_))),{default:n(()=>[w(e(_e),null,{default:n(()=>[w(e(Se),m(o.value,{"data-slot":"content",class:l.value.content({class:[!r.default&&e(a).class,e(a).ui?.content]})}),{default:n(()=>[q(C.$slots,"content",{ui:l.value},()=>[e(a).text?(u(),F("span",{key:0,"data-slot":"text",class:A(l.value.text({class:e(a).ui?.text}))},K(e(a).text),3)):x("",!0),e(a).kbds?.length?(u(),F("span",{key:1,"data-slot":"kbds",class:A(l.value.kbds({class:e(a).ui?.kbds}))},[(u(!0),F(me,null,qe(e(a).kbds,(c,k)=>(u(),v(Ce,m({key:k,size:e(a).ui?.kbdsSize||l.value.kbdsSize()},{ref_for:!0},typeof c=="string"?{value:c}:c),null,16,["size"]))),128))],2)):x("",!0)]),e(a).arrow?(u(),v(e(we),m({key:0},s.value,{"data-slot":"arrow",class:l.value.arrow({class:e(a).ui?.arrow})}),null,16,["class"])):x("",!0)]),_:3},16,["class"])]),_:3})]),_:3},16)]),_:3},16,["disabled"]))}};export{Ie as _};
|
|
1
|
+
import{d as T,S as P,o as u,f as v,g as n,T as q,Z as L,$,k as e,bm as V,b$ as O,X as W,B as G,bL as U,b9 as X,h as b,r as N,Y,C as I,aK as H,j as w,bl as Z,U as m,bG as J,m as Q,t as K,H as ee,bk as te,bw as E,bh as ae,c0 as re,bn as oe,ae as se,aA as le,bq as ne,ay as ie,V as ue,bF as de,bd as pe,a0 as fe,a1 as ce,a3 as ge,a4 as ve,a5 as ye,br as be,q as x,bu as _e,c as F,p as A,F as me,y as qe,bC as Ce,b3 as R,a6 as he}from"./BrT_Sys2.js";var Te=T({__name:"TooltipArrow",props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"svg"}},setup(i){const d=i;return P(),(t,p)=>(u(),v(e(V),L($(d)),{default:n(()=>[q(t.$slots,"default")]),_:3},16))}}),we=Te;const j="tooltip.open",[S,Pe]=Y("TooltipRoot");var ke=T({__name:"TooltipRoot",props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},delayDuration:{type:Number,required:!1,default:void 0},disableHoverableContent:{type:Boolean,required:!1,default:void 0},disableClosingTrigger:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1,default:void 0},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:void 0}},emits:["update:open"],setup(i,{emit:d}){const t=i,p=d;P();const r=O(),a=b(()=>t.disableHoverableContent??r.disableHoverableContent.value),g=b(()=>t.disableClosingTrigger??r.disableClosingTrigger.value),f=b(()=>t.disabled??r.disabled.value),y=b(()=>t.delayDuration??r.delayDuration.value),_=b(()=>t.ignoreNonKeyboardFocus??r.ignoreNonKeyboardFocus.value),o=W(t,"open",p,{defaultValue:t.defaultOpen,passive:t.open===void 0});G(o,B=>{r.onClose&&(B?(r.onOpen(),document.dispatchEvent(new CustomEvent(j))):r.onClose())});const s=N(!1),l=N(),C=b(()=>o.value?s.value?"delayed-open":"instant-open":"closed"),{start:D,stop:h}=U(()=>{s.value=!0,o.value=!0},y,{immediate:!1});function c(){h(),s.value=!1,o.value=!0}function k(){h(),o.value=!1}function z(){D()}return Pe({contentId:"",open:o,stateAttribute:C,trigger:l,onTriggerChange(B){l.value=B},onTriggerEnter(){r.isOpenDelayed.value?z():c()},onTriggerLeave(){a.value?k():h()},onOpen:c,onClose:k,disableHoverableContent:a,disableClosingTrigger:g,disabled:f,ignoreNonKeyboardFocus:_}),(B,He)=>(u(),v(e(X),null,{default:n(()=>[q(B.$slots,"default",{open:e(o)})]),_:3}))}}),Be=ke,Oe=T({__name:"TooltipContentImpl",props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1,default:void 0},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1,default:void 0},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1,default:void 0},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:["escapeKeyDown","pointerDownOutside"],setup(i,{emit:d}){const t=i,p=d,r=S(),a=O(),{forwardRef:g,currentElement:f}=P(),y=b(()=>t.ariaLabel||f.value?.textContent),_=b(()=>{const{ariaLabel:o,...s}=t;return E(s,a.content.value??{},{side:"top",sideOffset:0,align:"center",avoidCollisions:!0,collisionBoundary:[],collisionPadding:0,arrowPadding:0,sticky:"partial",hideWhenDetached:!1})});return I(()=>{H(window,"scroll",o=>{o.target?.contains(r.trigger.value)&&r.onClose()},{capture:!0}),H(window,j,r.onClose)}),(o,s)=>(u(),v(e(te),{"as-child":"","disable-outside-pointer-events":!1,onEscapeKeyDown:s[0]||(s[0]=l=>p("escapeKeyDown",l)),onPointerDownOutside:s[1]||(s[1]=l=>{e(r).disableClosingTrigger.value&&e(r).trigger.value?.contains(l.target)&&l.preventDefault(),p("pointerDownOutside",l)}),onFocusOutside:s[2]||(s[2]=ee(()=>{},["prevent"])),onDismiss:s[3]||(s[3]=l=>e(r).onClose())},{default:n(()=>[w(e(Z),m({ref:e(g),"data-state":e(r).stateAttribute.value},{...o.$attrs,..._.value},{style:{"--reka-tooltip-content-transform-origin":"var(--reka-popper-transform-origin)","--reka-tooltip-content-available-width":"var(--reka-popper-available-width)","--reka-tooltip-content-available-height":"var(--reka-popper-available-height)","--reka-tooltip-trigger-width":"var(--reka-popper-anchor-width)","--reka-tooltip-trigger-height":"var(--reka-popper-anchor-height)"}}),{default:n(()=>[q(o.$slots,"default"),w(e(J),{id:e(r).contentId,role:"tooltip"},{default:n(()=>[Q(K(y.value),1)]),_:1},8,["id"])]),_:3},16,["data-state"])]),_:3}))}}),M=Oe,De=T({__name:"TooltipContentHoverable",props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},setup(i){const t=ae(i),{forwardRef:p,currentElement:r}=P(),{trigger:a,onClose:g}=S(),f=O(),{isPointerInTransit:y,onPointerExit:_}=re(a,r);return f.isPointerInTransitRef=y,_(()=>{g()}),(o,s)=>(u(),v(M,m({ref:e(p)},e(t)),{default:n(()=>[q(o.$slots,"default")]),_:3},16))}}),xe=De,Ne=T({__name:"TooltipContent",props:{forceMount:{type:Boolean,required:!1},ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:["escapeKeyDown","pointerDownOutside"],setup(i,{emit:d}){const t=i,p=d,r=S(),a=oe(t,p),{forwardRef:g}=P();return(f,y)=>(u(),v(e(le),{present:f.forceMount||e(r).open.value},{default:n(()=>[(u(),v(se(e(r).disableHoverableContent.value?M:xe),m({ref:e(g)},e(a)),{default:n(()=>[q(f.$slots,"default")]),_:3},16))]),_:3},8,["present"]))}}),Se=Ne,Fe=T({__name:"TooltipPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(i){const d=i;return(t,p)=>(u(),v(e(ne),L($(d)),{default:n(()=>[q(t.$slots,"default")]),_:3},16))}}),Re=Fe,Ee=T({__name:"TooltipTrigger",props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(i){const d=i,t=S(),p=O();t.contentId||=ie(void 0,"reka-tooltip-content");const{forwardRef:r,currentElement:a}=P(),g=N(!1),f=N(!1),y=b(()=>t.disabled.value?{}:{click:h,focus:C,pointermove:s,pointerleave:l,pointerdown:o,blur:D});I(()=>{t.onTriggerChange(a.value)});function _(){setTimeout(()=>{g.value=!1},1)}function o(){t.open&&!t.disableClosingTrigger.value&&t.onClose(),g.value=!0,document.addEventListener("pointerup",_,{once:!0})}function s(c){c.pointerType!=="touch"&&!f.value&&!p.isPointerInTransitRef.value&&(t.onTriggerEnter(),f.value=!0)}function l(){t.onTriggerLeave(),f.value=!1}function C(c){g.value||t.ignoreNonKeyboardFocus.value&&!c.target.matches?.(":focus-visible")||t.onOpen()}function D(){t.onClose()}function h(){t.disableClosingTrigger.value||t.onClose()}return(c,k)=>(u(),v(e(pe),{"as-child":"",reference:c.reference},{default:n(()=>[w(e(ue),m({ref:e(r),"aria-describedby":e(t).open.value?e(t).contentId:void 0,"data-state":e(t).stateAttribute.value,as:c.as,"as-child":d.asChild,"data-grace-area-trigger":""},de(y.value)),{default:n(()=>[q(c.$slots,"default")]),_:3},16,["aria-describedby","data-state","as","as-child"])]),_:3},8,["reference"]))}}),Le=Ee;const $e={slots:{content:"flex items-center gap-1 bg-default text-highlighted shadow-sm rounded-sm ring ring-default h-6 px-2.5 py-1 text-xs select-none data-[state=delayed-open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in] origin-(--reka-tooltip-content-transform-origin) pointer-events-auto",arrow:"fill-bg stroke-default",text:"truncate",kbds:"hidden lg:inline-flex items-center shrink-0 gap-0.5 not-first-of-type:before:content-['·'] not-first-of-type:before:me-0.5",kbdsSize:"sm"}},Ie={__name:"UTooltip",props:{text:{type:String,required:!1},kbds:{type:Array,required:!1},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},reference:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1},delayDuration:{type:Number,required:!1},disableHoverableContent:{type:Boolean,required:!1},disableClosingTrigger:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},ignoreNonKeyboardFocus:{type:Boolean,required:!1}},emits:["update:open"],setup(i,{emit:d}){const t=i,p=d,r=fe(),a=ce("tooltip",t),g=ge(),f=O(),y=ve(ye(a,"defaultOpen","open","delayDuration","disableHoverableContent","disableClosingTrigger","ignoreNonKeyboardFocus"),p),_=be(R(()=>a.portal)),o=R(()=>E(a.content,f.content.value,{side:"bottom",sideOffset:8,collisionPadding:8})),s=R(()=>E(a.arrow,{rounded:!0})),l=b(()=>he({extend:$e,...g.ui?.tooltip||{}})({side:o.value.side}));return(C,D)=>(u(),v(e(Be),m(e(y),{disabled:!(e(a).text||e(a).kbds?.length||r.content)||e(a).disabled}),{default:n(({open:h})=>[r.default||e(a).reference?(u(),v(e(Le),m({key:0},C.$attrs,{"as-child":"",reference:e(a).reference,class:e(a).class}),{default:n(()=>[q(C.$slots,"default",{open:h})]),_:2},1040,["reference","class"])):x("",!0),w(e(Re),L($(e(_))),{default:n(()=>[w(e(_e),null,{default:n(()=>[w(e(Se),m(o.value,{"data-slot":"content",class:l.value.content({class:[!r.default&&e(a).class,e(a).ui?.content]})}),{default:n(()=>[q(C.$slots,"content",{ui:l.value},()=>[e(a).text?(u(),F("span",{key:0,"data-slot":"text",class:A(l.value.text({class:e(a).ui?.text}))},K(e(a).text),3)):x("",!0),e(a).kbds?.length?(u(),F("span",{key:1,"data-slot":"kbds",class:A(l.value.kbds({class:e(a).ui?.kbds}))},[(u(!0),F(me,null,qe(e(a).kbds,(c,k)=>(u(),v(Ce,m({key:k,size:e(a).ui?.kbdsSize||l.value.kbdsSize()},{ref_for:!0},typeof c=="string"?{value:c}:c),null,16,["size"]))),128))],2)):x("",!0)]),e(a).arrow?(u(),v(e(we),m({key:0},s.value,{"data-slot":"arrow",class:l.value.arrow({class:e(a).ui?.arrow})}),null,16,["class"])):x("",!0)]),_:3},16,["class"])]),_:3})]),_:3},16)]),_:3},16,["disabled"]))}};export{Ie as _};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{K as o}from"./BrT_Sys2.js";function n(){const t=o();return String(t.public.desktop)==="true"}export{n as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as m,k as r,o as c,f as _,g,j as b,v,O as w,p as x,c as $,h as t}from"./BrT_Sys2.js";import{_ as S}from"./DTH2lteW.js";import{y as C,z}from"./D7P0ML0H.js";const k={key:1,class:"text-xs text-gray-400 dark:text-gray-500 italic"},y=m({__name:"BrowserBadge",props:{browser:{},size:{}},setup(a){const n=a,s=t(()=>n.browser?.projectName??null),l=t(()=>C(s.value)),p=t(()=>z(s.value)),u=t(()=>n.size==="sm"?"size-3.5":n.size==="lg"?"size-5":"size-4"),i=t(()=>{const e=n.browser;if(!e)return[];const o=[];return e.browserName&&e.browserName!==s.value&&o.push(`Browser: ${e.browserName}`),e.channel&&o.push(`Channel: ${e.channel}`),e.viewport&&o.push(`Viewport: ${e.viewport.width}×${e.viewport.height}`),e.deviceScaleFactor&&e.deviceScaleFactor!==1&&o.push(`Scale: ${e.deviceScaleFactor}x`),e.isMobile&&o.push("Mobile"),e.hasTouch&&!e.isMobile&&o.push("Touch"),e.locale&&o.push(`Locale: ${e.locale}`),e.timezoneId&&o.push(`TZ: ${e.timezoneId}`),e.colorScheme&&e.colorScheme!=="light"&&o.push(`Color: ${e.colorScheme}`),e.reducedMotion&&e.reducedMotion!=="no-preference"&&o.push(`Motion: ${e.reducedMotion}`),e.forcedColors&&e.forcedColors!=="none"&&o.push("Colors: forced"),e.offline&&o.push("Offline"),e.bypassCSP&&o.push("CSP bypassed"),e.javaScriptEnabled===!1&&o.push("JS disabled"),e.serviceWorkers==="block"&&o.push("SW blocked"),e.geolocation&&o.push(`Geo: ${e.geolocation.latitude.toFixed(2)},${e.geolocation.longitude.toFixed(2)}`),e.userAgent&&o.push(`UA: ${e.userAgent.length>60?e.userAgent.slice(0,60)+"…":e.userAgent}`),o}),h=t(()=>s.value?i.value.length?`${s.value} · ${i.value.join(" · ")}`:s.value:"");return(e,o)=>{const f=v,d=S;return r(s)?(c(),_(d,{key:0,text:r(h),popper:{placement:"top"}},{default:g(()=>[b(f,{name:r(l),class:x(["shrink-0 cursor-help",r(u)]),style:w({color:r(p)})},null,8,["name","class","style"])]),_:1},8,["text"])):(c(),$("span",k,"—"))}}}),A=Object.assign(y,{__name:"BrowserBadge"});export{A as _};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b_ as t}from"./BrT_Sys2.js";import{h as a}from"./r3SBLxtE.js";const l=[{id:"account",label:"Account",icon:"i-lucide-user-round",to:"/settings/account",authOnly:!0,fields:[{id:"account.display-name",label:"Display name",help:"account.display-name"},{id:"account.email",label:"Email address",help:"account.email"},{id:"account.connected-accounts",label:"Connected accounts",help:"account.connected-accounts"},{id:"account.password",label:"Password",help:"account.password"},{id:"account.auth-toggle",label:"Authentication",help:"settings.auth-toggle",envOnly:!0}]},{id:"users",label:"Users",icon:"i-lucide-users",to:"/settings/users",roles:[t.ADMINISTRATOR],authOnly:!0,introHelp:"settings.users",fields:[{id:"users.list",label:"Users & roles",help:"settings.users"},{id:"users.api-keys",label:"API keys",help:"settings.api-keys"}]},{id:"notifications",label:"Notifications",icon:"i-lucide-bell",to:"/settings/notifications",fields:[{id:"notifications.smtp",label:"SMTP email delivery",help:"settings.smtp",envOnly:!0},{id:"notifications.test-email",label:"Send test email",help:"notifications.test-email"},{id:"notifications.channels",label:"Notification channels",help:"notifications.channels"},{id:"notifications.subscriptions",label:"My subscriptions",help:"notifications.subscriptions"}]},{id:"tags",label:"Tags",icon:"i-lucide-tags",to:"/settings/tags",roles:[t.ADMINISTRATOR],introHelp:"settings.tags",fields:[{id:"tags.list",label:"Tags",help:"settings.tags"}]},{id:"storage",label:"Storage",icon:"i-lucide-hard-drive",to:"/settings/storage",roles:[t.ADMINISTRATOR],fields:[{id:"storage.backend",label:"Storage backend",help:"settings.storage-backend",envOnly:!0},{id:"storage.stats",label:"Storage statistics",help:"settings.storage-stats"},{id:"storage.cleanup",label:"Cleanup old test runs",help:"settings.cleanup"}]},{id:"wasted-time",label:"Wasted time",icon:"i-lucide-hourglass",to:"/settings/wasted-time",roles:[t.ADMINISTRATOR],introHelp:"settings.wasted-time",fields:[{id:"wasted-time.patterns",label:"Wasted-time patterns",help:"settings.wasted-time"}]},{id:"timeout-hygiene",label:"Timeout hygiene",icon:"i-lucide-scissors",to:"/settings/timeout-hygiene",roles:[t.ADMINISTRATOR],introHelp:"settings.timeout-hygiene",fields:[{id:"timeout-hygiene.thresholds",label:"Detection thresholds",help:"settings.timeout-hygiene"}]},{id:"ai",label:"AI diagnosis",icon:"i-lucide-sparkles",to:"/settings/ai",roles:[t.ADMINISTRATOR],fields:[{id:"ai.diagnosis",label:"Diagnosis model",help:"settings.ai-provider"},{id:"ai.research",label:"Research model",help:"settings.ai-research"},{id:"ai.embedding",label:"Embedding model",help:"settings.embedding-model"},{id:"ai.auto-diagnose",label:"Auto-diagnose",help:"settings.auto-diagnose"},{id:"ai.context-limits",label:"Diagnosis context limits",help:"settings.ai-limits"},{id:"ai.instructions",label:"Global analysis instructions",help:"settings.ai-instructions"},{id:"ai.scm-token",label:"Repository access token",help:"project.scm-token"},{id:"ai.privacy",label:"Privacy notice",help:"settings.privacy"}]},{id:"about",label:"About",icon:"i-lucide-info",to:"/settings/about",fields:[]}];function o(e){return a(e.help)}function r(e){const i=new Set;for(const s of e.fields)for(const n of o(s))i.add(n);return[...i]}function g(e){const i=l.find(s=>s.id===e);if(!i)throw new Error(`Unknown settings page: ${e}`);return i}export{l as S,g,r as p};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{_ as ra}from"./n7Htv9PJ.js";import{aJ as oa,d as oe,X as Ve,W as Re,S as pe,o as i,c as y,j as s,g as o,T as M,k as e,U as X,H as Pe,V as ge,f as w,q as k,F as re,h as K,ax as ia,aE as na,Y as ze,aK as qe,Q as da,r as b,aL as ua,aA as ca,a0 as pa,a1 as ma,a3 as fa,a4 as va,a5 as ya,aM as ba,aN as ha,i as d,p as D,m as V,t as _,y as je,ae as $e,a6 as ga,aF as be,w as _a,b as ka,L as wa,C as Ca,P as xa,ak as Aa,_ as qa,s as $a,v as Ua,D as Ia,l as he,I as Va,K as Ra}from"./B8fs6GU9.js";import{_ as Pa}from"./D4nLD93c.js";import{_ as za}from"./BgR7oL4p.js";import{_ as ja}from"./BBJ9Pu3M.js";import{_ as Sa}from"./PPFO8UVt.js";import{_ as Ka}from"./IdQR_Djw.js";import{o as Da,s as ue,l as Ue,a as Ea,u as Fa,_ as Ba}from"./DzbOHjZH.js";import{_ as Ga}from"./CD-xwM9N.js";import{_ as Ma}from"./wCQds5_f.js";import{_ as Oa}from"./0KrkW531.js";import{L as Ie}from"./BC_Wu-fv.js";import{u as Se}from"./D1tZEdSi.js";import{V as Ke}from"./DVdOm5Bg.js";import{u as De}from"./YDWXnWou.js";import{R as Ta}from"./B_80i5Ge.js";import{_ as La}from"./DHVmXA9K.js";import{p as ce,g as le}from"./CvCF77E-.js";import{u as Na}from"./DAeYEeCC.js";import{u as Ha}from"./DWzdeQ3Z.js";import"./4fB15L_7.js";import"./B32ySRXg.js";import"./3SnTawZW.js";import"./BGsuOpiq.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(()=>[M(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(()=>[M(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(Ta),{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(()=>[M($.$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(()=>[M(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}),O=$.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:`${O}:null`,value:void 0,label:void 0};if(typeof f=="string"||typeof f=="number"||typeof f=="bigint")return{id:`${O}:${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:`${O}:${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(O)},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}))},[M(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(Ie)),{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(Ie):"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(()=>[M(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)}))},[M(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},us=oe({__name:"users",async setup(S){let A,u;const{data:h,refresh:g}=([A,u]=_a(()=>Na("/api/users","$0NE568_-ln")),A=await A,u(),A),l=ka(),{copy:I}=Ha(),{authState:x}=wa(),R=Ra(),C=K(()=>h.value?.users||[]),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=Da({username:ue().min(3,"Username must be at least 3 characters"),password:Fa([ue().min(6,"Password must be at least 6 characters"),Ue("").transform(()=>{})]).optional(),role:Ea(["administrator","reporter","user"]),name:ue().optional(),email:ue().email().optional().or(Ue(""))}),c=Va({username:"",password:"",role:"user",name:"",email:""}),O=[{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.apiKeys}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', {
|
|
1
|
+
import{_ as ra}from"./BU6xjw05.js";import{aJ as oa,d as oe,X as Ve,W as Re,S as pe,o as i,c as y,j as s,g as o,T as M,k as e,U as X,H as Pe,V as ge,f as w,q as k,F as re,h as K,ax as ia,aE as na,Y as ze,aK as qe,Q as da,r as b,aL as ua,aA as ca,a0 as pa,a1 as ma,a3 as fa,a4 as va,a5 as ya,aM as ba,aN as ha,i as d,p as D,m as V,t as _,y as je,ae as $e,a6 as ga,aF as be,w as _a,b as ka,L as wa,C as Ca,P as xa,ak as Aa,_ as qa,s as $a,v as Ua,D as Ia,l as he,I as Va,K as Ra}from"./BrT_Sys2.js";import{_ as Pa}from"./DJHNEqb7.js";import{_ as za}from"./CYuWAvXE.js";import{_ as ja}from"./CHIbdzqp.js";import{_ as Sa}from"./ClJkng9p.js";import{_ as Ka}from"./sMFaPAAR.js";import{o as Da,s as ue,l as Ue,a as Ea,u as Fa,_ as Ba}from"./DwZiG9xH.js";import{_ as Ga}from"./BciovqwK.js";import{_ as Ma}from"./B6hPf4UR.js";import{_ as Oa}from"./DpJrGwCr.js";import{L as Ie}from"./rw7Hdll3.js";import{u as Se}from"./26ll_vBr.js";import{V as Ke}from"./ByoIgYX_.js";import{u as De}from"./DATh_1DQ.js";import{R as Ta}from"./D0-HTQTD.js";import{_ as La}from"./Sgf5OLhm.js";import{p as ce,g as le}from"./D7P0ML0H.js";import{u as Na}from"./Dvc1aWpA.js";import{u as Ha}from"./DtXREpk_.js";import"./BxRsAYRS.js";import"./CoKEjZX7.js";import"./r3SBLxtE.js";import"./DxQq_L07.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(()=>[M(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(()=>[M(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(Ta),{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(()=>[M($.$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(()=>[M(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}),O=$.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:`${O}:null`,value:void 0,label:void 0};if(typeof f=="string"||typeof f=="number"||typeof f=="bigint")return{id:`${O}:${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:`${O}:${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(O)},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}))},[M(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(Ie)),{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(Ie):"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(()=>[M(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)}))},[M(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},us=oe({__name:"users",async setup(S){let A,u;const{data:h,refresh:g}=([A,u]=_a(()=>Na("/api/users","$0NE568_-ln")),A=await A,u(),A),l=ka(),{copy:I}=Ha(),{authState:x}=wa(),R=Ra(),C=K(()=>h.value?.users||[]),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=Da({username:ue().min(3,"Username must be at least 3 characters"),password:Fa([ue().min(6,"Password must be at least 6 characters"),Ue("").transform(()=>{})]).optional(),role:Ea(["administrator","reporter","user"]),name:ue().optional(),email:ue().email().optional().or(Ue(""))}),c=Va({username:"",password:"",role:"user",name:"",email:""}),O=[{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.apiKeys}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
2
|
serverUrl: '${we.value}',
|
|
3
3
|
apiKey: '${E.value??""}', // or set PIWI_API_KEY and use apiKey: process.env.PIWI_API_KEY
|
|
4
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 Me(){I(E.value,{toast:"API key copied to clipboard"})}function Oe(){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");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=Ba,te=Ga,se=xa,Ae=Ma,aa=Oa,ta=dt,sa=Aa("UDivider"),la=La;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(ce))(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:O,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:Me}),s(v,{label:"Done",variant:"ghost",size:"sm",onClick:Oe})]),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(ce))(t.createdAt,{dateOnly:!0})),1),t.lastUsedAt?(i(),y("span",zt,"Last used: "+_(("prettyDateFormat"in r?r.prettyDateFormat:e(ce))(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(ce))(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{us as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_}from"./
|
|
1
|
+
import{_}from"./DTH2lteW.js";import{d as f,o as a,f as b,g as r,c as o,F as d,y as u,k as p,O as h,p as m,i as l,t as n,h as x}from"./BrT_Sys2.js";const g={key:0,class:"flex h-2.5 w-full min-w-30 overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},w={key:1,class:"text-xs text-gray-400 dark:text-gray-500 italic"},v={class:"min-w-52 space-y-1.5 rounded-md bg-gray-900 px-3 py-2 text-sm shadow-lg"},B={class:"font-semibold text-white"},C={class:"text-white"},F={class:"ml-4 tabular-nums font-medium text-white"},N={class:"ml-auto tabular-nums text-gray-300 text-xs"},P=f({__name:"TestStatusBar",props:{passed:{},failed:{},skipped:{},flaky:{},total:{},didNotRun:{}},setup(i){const t=i,c=x(()=>t.total?[{key:"passed",label:"Passed",count:t.passed-t.flaky,color:"bg-green-500"},{key:"failed",label:"Failed",count:t.failed,color:"bg-red-500"},{key:"flaky",label:"Flaky",count:t.flaky,color:"bg-purple-500"},{key:"skipped",label:"Skipped",count:t.skipped,color:"bg-gray-400"},{key:"didNotRun",label:"Didn't run",count:t.didNotRun??0,color:"bg-amber-300 dark:bg-amber-700"}].filter(s=>s.count>0).map(s=>({...s,widthPct:s.count/t.total*100,displayPct:(s.count/t.total*100).toFixed(1)})):[]);return(y,s)=>{const k=_;return a(),b(k,{ui:{content:"overflow-visible !p-0"}},{content:r(()=>[l("div",v,[l("div",B,n(i.total)+" tests total",1),(a(!0),o(d,null,u(p(c),e=>(a(),o("div",{key:e.key,class:"flex items-center gap-2 whitespace-nowrap"},[l("span",{class:m([e.color,"inline-block h-2.5 w-2.5 shrink-0 rounded-sm"])},null,2),l("span",C,n(e.label),1),l("span",F,n(e.count),1),l("span",N,n(e.displayPct)+"%",1)]))),128))])]),default:r(()=>[i.total>0?(a(),o("div",g,[(a(!0),o(d,null,u(p(c),e=>(a(),o("div",{key:e.key,class:m([e.color,"h-full transition-all"]),style:h({width:e.widthPct+"%"})},null,6))),128))])):(a(),o("div",w,"No tests"))]),_:1})}}}),T=Object.assign(P,{__name:"TestStatusBar"});export{T as _};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as j,b as F,w as R,at as T,c as y,j as l,g as r,o as _,i as m,F as $,y as S,k as i,D as U,_ as V,m as u,r as C,I as O}from"./BrT_Sys2.js";import{_ as P}from"./ClJkng9p.js";import{_ as A}from"./CHIbdzqp.js";import{u as B}from"./Dvc1aWpA.js";import"./rw7Hdll3.js";import"./B6hPf4UR.js";import"./r3SBLxtE.js";import"./DtXREpk_.js";import"./CoKEjZX7.js";const N={class:"space-y-6"},E={class:"grid grid-cols-1 gap-x-4 gap-y-3 sm:grid-cols-2"},z={class:"flex items-center justify-end gap-2"},X=j({__name:"timeout-hygiene",async setup(D){let d,p;const c=F(),{data:s,refresh:f}=([d,p]=R(()=>B("/api/settings/timeout-hygiene","$8Luq-s6QSj")),d=await d,p(),d),o=C(!1),n=O({minRuns:0,factor:0,floorMs:0,safety:0,recommendedFloorMs:0,slowStaleP95Ms:0});T(()=>{s.value&&Object.assign(n,s.value.thresholds)});const g=[{key:"minRuns",label:"Minimum runs",description:"Executions with a duration needed before a test is judged.",min:1,step:1},{key:"factor",label:"Oversize factor (×)",description:"Flag a timeout when it is at least this many times the test’s p95 duration.",min:1,step:.5},{key:"floorMs",label:"Minimum headroom (ms)",description:"Only flag when the timeout − p95 gap is at least this many ms.",min:0,step:1e3},{key:"safety",label:"Recommendation safety (×)",description:"Recommended timeout = p95 × this.",min:1,step:.5},{key:"recommendedFloorMs",label:"Recommendation floor (ms)",description:"Never recommend a timeout below this many ms.",min:0,step:1e3},{key:"slowStaleP95Ms",label:"Stale slow() p95 (ms)",description:"A test.slow() test is stale when its p95 duration stays under this.",min:0,step:1e3}];async function v(){o.value=!0;try{const e=await $fetch("/api/settings/timeout-hygiene",{method:"PUT",body:{thresholds:{...n}}});s.value=e,c.add({title:"Timeout-hygiene thresholds saved",color:"success"}),await f()}catch(e){const a=e&&typeof e=="object"&&"data"in e?e.data?.message:void 0;c.add({title:"Save failed",description:a||"An error occurred",color:"error"})}finally{o.value=!1}}async function b(){o.value=!0;try{const e=await $fetch("/api/settings/timeout-hygiene",{method:"PUT",body:{thresholds:null}});s.value=e,Object.assign(n,e.thresholds),c.add({title:"Reset to defaults",color:"success"}),await f()}catch{c.add({title:"Reset failed",color:"error"})}finally{o.value=!1}}return(e,a)=>{const w=U,k=P,h=V,x=A;return _(),y("div",N,[l(x,{icon:"i-lucide-scissors",title:"Timeout hygiene",help:"settings.timeout-hygiene"},{subtitle:r(()=>[...a[0]||(a[0]=[u(" Tune how timeout opportunities are detected — oversized per-test timeouts and stale ",-1),m("code",null,"test.slow()",-1),u(" marks — surfaced per project (Performance tab) and in Analytics. Opportunities are recomputed when viewed, so changes apply to existing runs immediately. ",-1)])]),footer:r(()=>[m("div",z,[l(h,{variant:"ghost",color:"neutral",disabled:i(o),label:"Reset to defaults",onClick:b},null,8,["disabled"]),l(h,{color:"primary",loading:i(o),icon:"i-lucide-save",onClick:v},{default:r(()=>[...a[1]||(a[1]=[u("Save",-1)])]),_:1},8,["loading"])])]),default:r(()=>[m("div",E,[(_(),y($,null,S(g,t=>l(k,{key:t.key,label:t.label,description:t.description,hint:`default ${i(s)?.defaults[t.key]??""}`},{default:r(()=>[l(w,{modelValue:i(n)[t.key],"onUpdate:modelValue":M=>i(n)[t.key]=M,modelModifiers:{number:!0},type:"number",min:t.min,step:t.step,placeholder:`default ${i(s)?.defaults[t.key]??""}`,class:"w-full"},null,8,["modelValue","onUpdate:modelValue","min","step","placeholder"])]),_:2},1032,["label","description","hint"])),64))])]),_:1})])}}});export{X as default};
|