@piwitests/server 0.15.0 → 0.16.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/{DzbOHjZH.js → -KQO1A4C.js} +1 -1
- package/.output/public/_nuxt/{BEKwVcvQ.js → 1AB111xL.js} +1 -1
- package/.output/public/_nuxt/{CokbKVE6.js → 2xvsvjLO.js} +1 -1
- package/.output/public/_nuxt/{CNzoIhwN.js → ABGJk0pu.js} +1 -1
- package/.output/public/_nuxt/{Cgr8IKY4.js → B2lYFco4.js} +1 -1
- package/.output/public/_nuxt/B33X4zrC.js +1 -0
- package/.output/public/_nuxt/{V1BQiRoh.js → B3NbDoBP.js} +1 -1
- package/.output/public/_nuxt/{ChWPXucC.js → B3sNtVnf.js} +1 -1
- package/.output/public/_nuxt/{too3WhRB.js → B43OGXzV.js} +1 -1
- package/.output/public/_nuxt/{Cf3RuiXF.js → B6Jp7fpa.js} +4 -4
- package/.output/public/_nuxt/{B32ySRXg.js → B7yG1G_l.js} +1 -1
- package/.output/public/_nuxt/{BgR7oL4p.js → BBdfPriC.js} +1 -1
- package/.output/public/_nuxt/{DNP5tTJo.js → BGYbnqA7.js} +1 -1
- package/.output/public/_nuxt/{DAeYEeCC.js → BIf1R_fu.js} +1 -1
- package/.output/public/_nuxt/{nUsJV5qo.js → BIksQZfR.js} +1 -1
- package/.output/public/_nuxt/{B8fs6GU9.js → BPKwYP2Q.js} +31 -31
- package/.output/public/_nuxt/{DjCfCT_5.js → BP_SWi7S.js} +1 -1
- package/.output/public/_nuxt/{CrFCPOnY.js → BQrSEuzu.js} +1 -1
- package/.output/public/_nuxt/{BpepjHwc.js → BR9H8k-L.js} +1 -1
- package/.output/public/_nuxt/{Dejf0f7D.js → BRKa6EQR.js} +3 -3
- package/.output/public/_nuxt/{BMQIO38j.js → BS0gKVuF.js} +1 -1
- package/.output/public/_nuxt/{BW1UOxWn.js → BV83yObd.js} +1 -1
- package/.output/public/_nuxt/{o5WQ5Z7k.js → BVW5qIDP.js} +1 -1
- package/.output/public/_nuxt/{rvaZFYoE.js → BY4oA2IH.js} +1 -1
- package/.output/public/_nuxt/{DZoSxwj6.js → BZekCf_x.js} +1 -1
- package/.output/public/_nuxt/{lRMjXqiA.js → Bb64FEFL.js} +1 -1
- package/.output/public/_nuxt/{2PU-adwy.js → BdFEUAlx.js} +1 -1
- package/.output/public/_nuxt/{CBrCcDzR.js → Bf62wdzp.js} +1 -1
- package/.output/public/_nuxt/{DYDGGqZ3.js → BkDfdHFm.js} +1 -1
- package/.output/public/_nuxt/{CqA3gM8h.js → BoRFLTAO.js} +1 -1
- package/.output/public/_nuxt/{DxXZN6ed.js → BpIsBP5g.js} +1 -1
- package/.output/public/_nuxt/{DkFbpSsi.js → BpNqHxg2.js} +1 -1
- package/.output/public/_nuxt/{DFw8I2FL.js → BpceIssd.js} +1 -1
- package/.output/public/_nuxt/{n7Htv9PJ.js → Br2K9yi_.js} +1 -1
- package/.output/public/_nuxt/{D4nLD93c.js → BuZOa2M3.js} +1 -1
- package/.output/public/_nuxt/{B32-7cBF.js → Bvfmwzgw.js} +1 -1
- package/.output/public/_nuxt/{h-e-Ca3f.js → Bzl2H_vl.js} +1 -1
- package/.output/public/_nuxt/{IdQR_Djw.js → C1K3r_fc.js} +1 -1
- package/.output/public/_nuxt/C219JuBV.js +1 -0
- package/.output/public/_nuxt/{B_80i5Ge.js → C38aZbFJ.js} +1 -1
- package/.output/public/_nuxt/{DHVmXA9K.js → C3r_Sv1p.js} +1 -1
- package/.output/public/_nuxt/{O1A-LRgV.js → C8RBRg7I.js} +1 -1
- package/.output/public/_nuxt/{60-Zii7v.js → CCRRqXez.js} +1 -1
- package/.output/public/_nuxt/{__m3KqHO.js → CJFqA_QW.js} +1 -1
- package/.output/public/_nuxt/{Surk4Lw-.js → CKB_doYB.js} +1 -1
- package/.output/public/_nuxt/{DaKVSp-6.js → CMYQpoOI.js} +1 -1
- package/.output/public/_nuxt/CQeMb57w.js +1 -0
- package/.output/public/_nuxt/{Bq2ZPvIH.js → CSYJwpXG.js} +1 -1
- package/.output/public/_nuxt/{ETOCcsVw.js → CTdvGdc2.js} +1 -1
- package/.output/public/_nuxt/CX1dcT4v.js +1 -0
- package/.output/public/_nuxt/{evCxpgbd.js → CdME81ij.js} +2 -2
- package/.output/public/_nuxt/{DKTDub7I.js → CgoAUz76.js} +1 -1
- package/.output/public/_nuxt/{0KrkW531.js → CoHGrO41.js} +1 -1
- package/.output/public/_nuxt/{BGsuOpiq.js → CpO-ABDW.js} +1 -1
- package/.output/public/_nuxt/CuYYdFBL.js +1 -0
- package/.output/public/_nuxt/{CHMpVLqo.js → D2jhe9JK.js} +1 -1
- package/.output/public/_nuxt/{C7RarFGi.js → D33On6AX.js} +1 -1
- package/.output/public/_nuxt/{Dv2B_nw_.js → D4VpoHDP.js} +1 -1
- package/.output/public/_nuxt/{CKZn0TUX.js → DAWn6Z7h.js} +1 -1
- package/.output/public/_nuxt/{rWwWS3Kj.js → DCpmQ47_.js} +1 -1
- package/.output/public/_nuxt/{B59-l1Cv.js → DIkLLyR6.js} +1 -1
- package/.output/public/_nuxt/{CFn3w5jn.js → DJS3Bf50.js} +1 -1
- package/.output/public/_nuxt/{F07TcX0U.js → DL20rwkA.js} +1 -1
- package/.output/public/_nuxt/DOuoR2Pk.js +34 -0
- package/.output/public/_nuxt/{BC_Wu-fv.js → DRtTLQri.js} +1 -1
- package/.output/public/_nuxt/{DiUGa0CT.js → DbeHHTk-.js} +1 -1
- package/.output/public/_nuxt/DcCNnjKl.js +1 -0
- package/.output/public/_nuxt/{PPFO8UVt.js → DdbrJwT-.js} +1 -1
- package/.output/public/_nuxt/{Cfk2_UCm.js → DfcAIbcX.js} +1 -1
- package/.output/public/_nuxt/{OG2n3p77.js → DgYM3eyi.js} +1 -1
- package/.output/public/_nuxt/{BBJ9Pu3M.js → DhA17dqR.js} +1 -1
- package/.output/public/_nuxt/{DvdOsTLb.js → DjZKuUMz.js} +1 -1
- package/.output/public/_nuxt/{DCCMLWel.js → DqnyWaSQ.js} +1 -1
- package/.output/public/_nuxt/Dsk4Ic18.js +7 -0
- package/.output/public/_nuxt/{BCK4f6Y3.js → DszOHBMG.js} +1 -1
- package/.output/public/_nuxt/{Cpquifvd.js → DuBBqqbF.js} +1 -1
- package/.output/public/_nuxt/{DWzdeQ3Z.js → DuMv-ugy.js} +1 -1
- package/.output/public/_nuxt/{BfshMo9k.js → Dz55UR7w.js} +2 -2
- package/.output/public/_nuxt/{BkhdAGx0.js → Dzz9_Z0u.js} +1 -1
- package/.output/public/_nuxt/{DgZlpN9l.js → HoKG9cc2.js} +1 -1
- package/.output/public/_nuxt/{C9jjVEQU.js → IFqRT_xJ.js} +1 -1
- package/.output/public/_nuxt/{i38YGG9S.js → JCFZINev.js} +1 -1
- package/.output/public/_nuxt/{B9Q_4Mjt.js → Kc7La4sL.js} +1 -1
- package/.output/public/_nuxt/N3pCB6-m.js +4 -0
- package/.output/public/_nuxt/{CFXonrwQ.js → WctJXszi.js} +1 -1
- package/.output/public/_nuxt/{CHgsEM4U.js → bAfTAihV.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/5182c9fb-56a6-4df2-9685-4020a08ce7a5.json +1 -0
- package/.output/public/_nuxt/{4fB15L_7.js → d5ZB3uxF.js} +1 -1
- package/.output/public/_nuxt/{CIOQo6gB.js → e1zUTrBb.js} +1 -1
- package/.output/public/_nuxt/entry.BsmKRJzR.css +1 -0
- package/.output/public/_nuxt/{BtJkQ3to.js → iwD5atI2.js} +1 -1
- package/.output/public/_nuxt/jIF87ALb.js +1 -0
- package/.output/public/_nuxt/{CvCF77E-.js → k-z_VVTK.js} +2 -2
- package/.output/public/_nuxt/{CHSkT2s0.js → l0gdGdar.js} +1 -1
- package/.output/public/_nuxt/{DVdOm5Bg.js → mGJLLqyN.js} +1 -1
- package/.output/public/_nuxt/{CU-OXXdh.js → mfzslNx_.js} +1 -1
- package/.output/public/_nuxt/{CD-xwM9N.js → nCjfWTGm.js} +1 -1
- package/.output/public/_nuxt/{DQpa8F03.js → oNq5pd3r.js} +1 -1
- package/.output/public/_nuxt/qzAP_nm7.js +1 -0
- package/.output/public/_nuxt/{3SnTawZW.js → r3SBLxtE.js} +1 -1
- package/.output/public/_nuxt/{DI_-kFec.js → uKeO2H7F.js} +1 -1
- package/.output/public/_nuxt/{DZLrAp2i.js → xUrLy-Zn.js} +1 -1
- package/.output/public/_nuxt/{BY0AkhJh.js → ze9-Ill2.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-7ZiMz60w.mjs} +5 -5
- package/.output/server/chunks/build/Checkbox-7ZiMz60w.mjs.map +1 -0
- package/.output/server/chunks/build/{CiEnvCard-DAufYuJw.mjs → CiEnvCard-DNxBVvx4.mjs} +5 -5
- package/.output/server/chunks/build/CiEnvCard-DNxBVvx4.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/{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-9418EI8J.mjs} +9 -9
- package/.output/server/chunks/build/ProjectTestCasesTable-9418EI8J.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-COwTIQlV.mjs} +3 -3
- package/.output/server/chunks/build/Select-COwTIQlV.mjs.map +1 -0
- package/.output/server/chunks/build/{SelectMenu-Dk6f8i9o.mjs → SelectMenu-BkyAHFCM.mjs} +4 -4
- package/.output/server/chunks/build/{SelectMenu-Dk6f8i9o.mjs.map → SelectMenu-BkyAHFCM.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-htSKgC38.mjs} +2 -2
- package/.output/server/chunks/build/Switch-htSKgC38.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_-CFVnSs8B.mjs → _id_-BDqvTM9D.mjs} +19 -18
- package/.output/server/chunks/build/{_id_-CFVnSs8B.mjs.map → _id_-BDqvTM9D.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_-R6KGfZOC.mjs → _id_-CnwAyvvS.mjs} +257 -84
- package/.output/server/chunks/build/_id_-CnwAyvvS.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-DXJQABO8.mjs → _id_-Dy67M9Dj.mjs} +25 -25
- package/.output/server/chunks/build/{_id_-DXJQABO8.mjs.map → _id_-Dy67M9Dj.mjs.map} +1 -1
- package/.output/server/chunks/build/{about-CmtGYbC6.mjs → about-FB9PYAHK.mjs} +5 -5
- package/.output/server/chunks/build/about-FB9PYAHK.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-V3YOh3yx.mjs} +17 -17
- package/.output/server/chunks/build/ai-V3YOh3yx.mjs.map +1 -0
- package/.output/server/chunks/build/{analytics-BbT2-Tr-.mjs → analytics-BBlAEmj5.mjs} +235 -64
- package/.output/server/chunks/build/analytics-BBlAEmj5.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-BfMirIgG.mjs} +17 -16
- package/.output/server/chunks/build/default-BfMirIgG.mjs.map +1 -0
- package/.output/server/chunks/build/{docs-DbYoZafk.mjs → docs-DtNcJCyb.mjs} +5 -5
- package/.output/server/chunks/build/{docs-DbYoZafk.mjs.map → docs-DtNcJCyb.mjs.map} +1 -1
- package/.output/server/chunks/build/{edit-CNV4xdYj.mjs → edit-Dsf11mL5.mjs} +8 -8
- package/.output/server/chunks/build/edit-Dsf11mL5.mjs.map +1 -0
- package/.output/server/chunks/build/fetch-8kznMtBM.mjs +1 -1
- 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-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-rSHkKNna.mjs → index-BgpEKTSq.mjs} +505 -84
- package/.output/server/chunks/build/index-BgpEKTSq.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-C3Ou18qD.mjs → index-DzEgjHlB.mjs} +14 -14
- package/.output/server/chunks/build/{index-C3Ou18qD.mjs.map → index-DzEgjHlB.mjs.map} +1 -1
- 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-CXwa3xU3.mjs} +8 -8
- package/.output/server/chunks/build/mcp-CXwa3xU3.mjs.map +1 -0
- package/.output/server/chunks/build/{notifications-BTPF0xA7.mjs → notifications-hJj8tbAT.mjs} +11 -11
- package/.output/server/chunks/build/notifications-hJj8tbAT.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +37 -28
- package/.output/server/chunks/build/{settings-Bmw_JdBS.mjs → settings-Ci_7EXYQ.mjs} +8 -7
- package/.output/server/chunks/build/settings-Ci_7EXYQ.mjs.map +1 -0
- package/.output/server/chunks/build/{settings-metadata-CksLgMun.mjs → settings-metadata-Cp0dx0vm.mjs} +12 -3
- package/.output/server/chunks/build/settings-metadata-Cp0dx0vm.mjs.map +1 -0
- package/.output/server/chunks/build/{storage-BqR4acgi.mjs → storage-CM-Pd-9E.mjs} +191 -14
- package/.output/server/chunks/build/storage-CM-Pd-9E.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-DkGQB027.mjs} +14 -14
- package/.output/server/chunks/build/test-cases-DkGQB027.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/{useSettingsNav-v_dFuTw9.mjs → useSettingsNav-D2knPCqF.mjs} +6 -6
- package/.output/server/chunks/build/useSettingsNav-D2knPCqF.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-0-UBy7xl.mjs} +4 -4
- package/.output/server/chunks/build/virtualizer-0-UBy7xl.mjs.map +1 -0
- package/.output/server/chunks/build/{wasted-time-CFmeT_e2.mjs → wasted-time-L4kBV5Nh.mjs} +8 -8
- package/.output/server/chunks/build/wasted-time-L4kBV5Nh.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +949 -684
- 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/CJGJI2Of.js +0 -34
- package/.output/public/_nuxt/Ce4EdfL_.js +0 -4
- 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/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/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.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/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
package/.output/nitro.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a1 as Jt,a3 as Lt,aN as xt,aO as Mt,am as Ue,aP as Fe,aQ as Je,C as Le,G as Wt,ab as Vt,r as ee,I as we,h as te,aR as ce,o as Bt,f as Kt,g as qt,T as Gt,H as Ht,p as Xt,k as q,ae as Yt,aS as Qt,a6 as en,J as G,aT as tn,aU as nn,aV as rn,aW as on}from"./B8fs6GU9.js";function sn(e){return"schema"in e&&typeof e.coercer=="function"&&typeof e.validator=="function"&&typeof e.refiner=="function"}function an(e){return"~standard"in e}async function cn(e,t){const n=await t["~standard"].validate(e);return n.issues?{errors:n.issues?.map(r=>({name:r.path?.map(o=>typeof o=="object"?o.key:o).join(".")||"",message:r.message}))||[],result:null}:{errors:null,result:n.value}}async function un(e,t){const[n,r]=t.validate(e);return n?{errors:n.failures().map(i=>({message:i.message,name:i.path.join(".")})),result:null}:{errors:null,result:r}}function fn(e,t){if(an(t))return cn(e,t);if(sn(t))return un(e,t);throw new Error("Form validation failed: Unsupported form schema")}function ln(e,t){return t?t.split(".").reduce((r,o)=>r?.[o],e):e}function dn(e,t,n){if(!t)return Object.assign(e,n);if(!e)return e;const r=t.split(".");let o=e;for(let s=0;s<r.length-1;s++){const a=r[s];(o[a]===void 0||o[a]===null)&&(s+1<r.length&&!Number.isNaN(Number(r[s+1]))?o[a]=[]:o[a]={}),o=o[a]}const i=r[r.length-1];return o[i]=n,e}class re extends Error{formId;errors;constructor(t,n){super("Form validation exception"),this.formId=t,this.errors=n,Object.setPrototypeOf(this,re.prototype)}}const pn={base:""},Ui={__name:"UForm",props:{id:{type:[String,Number],required:!1},schema:{type:null,required:!1},state:{type:null,required:!1},validate:{type:Function,required:!1},validateOn:{type:Array,required:!1,default(){return["input","blur","change"]}},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},validateOnInputDelay:{type:Number,required:!1,default:300},transform:{type:null,required:!1,default:()=>!0},nested:{type:Boolean,required:!1},loadingAuto:{type:Boolean,required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1},onSubmit:{type:Function,required:!1}},emits:["submit","error"],setup(e,{expose:t,emit:n}){const r=e,o=n,i=Jt("form",r),s=Lt(),a=te(()=>en({extend:pn,...s.ui?.form||{}})),c=i.id??xt(),f=Mt("formRef"),d=Qt(`form-${c}`),g=i.nested===!0&&Ue(Fe,void 0),_=i.nested===!0?Ue(Je,void 0):void 0,h=te(()=>_?.value?i.name?ln(_.value,i.name):_.value:i.state);G(Fe,d),G(Je,h);const v=ee(new Map);Le(async()=>{g&&(await Wt(),g.emit({type:"attach",validate:J,formId:c,name:i.name,api:De}))}),Vt(()=>{d.reset(),g&&g.emit({type:"detach",formId:c})}),Le(async()=>{d.on(async l=>{l.type==="attach"?v.value.set(l.formId,{validate:l.validate,name:l.name,api:l.api}):l.type==="detach"?v.value.delete(l.formId):i.validateOn?.includes(l.type)&&!U.value&&(l.type!=="input"?await J({name:l.name,silent:!0,nested:!1}):(l.eager||j.has(l.name))&&await J({name:l.name,silent:!0,nested:!1})),l.type==="blur"&&j.add(l.name),(l.type==="change"||l.type==="input"||l.type==="blur"||l.type==="focus")&&ie.add(l.name),(l.type==="change"||l.type==="input")&&F.add(l.name)})});const S=ee([]);G(tn,S);const k=ee({});G(nn,k);const F=we(new Set),ie=we(new Set),j=we(new Set);function z(l){return l.map(p=>({...p,id:p?.name?k.value[p.name]?.id:void 0}))}const Z=ee(null);async function ae(){let l=i.validate?await i.validate(h.value)??[]:[];if(i.schema){const{errors:p,result:y}=await fn(h.value,i.schema);p?l=l.concat(p):Z.value=y}return z(l)}async function J(l={silent:!1,nested:!1,transform:!1}){const p=l.name&&!Array.isArray(l.name)?[l.name]:l.name;let y=[],O=[];if(!p&&l.nested){const L=Array.from(v.value.values()).map(N=>jt(N,l)),C=await Promise.all(L);O=C.filter(N=>N.error).flatMap(N=>N.error.errors.map(Ft=>At(Ft,N.name))),y=C.filter(N=>N.output!==void 0)}const K=[...await ae(),...O];if(p?S.value=Dt(K,p):S.value=K,S.value?.length){if(l.silent)return!1;throw new re(c,S.value)}return l.transform?(y.forEach(L=>{L.name?dn(Z.value,L.name,L.output):Object.assign(Z.value,L.output)}),Z.value??h.value):h.value}const U=ee(!1);G(rn,ce(U));async function je(l){U.value=!!i.loadingAuto;const p=l;try{p.data=await J({nested:!0,transform:i.transform}),await i.onSubmit?.(p),F.clear()}catch(y){if(!(y instanceof re))throw y;const O={...p,errors:y.errors};o("error",O)}finally{U.value=!1}}const Ae=te(()=>i.disabled||U.value);G(on,te(()=>({disabled:Ae.value,validateOnInputDelay:i.validateOnInputDelay})));async function jt(l,p){try{const y=await l.validate({...p,silent:!1});return{name:l.name,output:y}}catch(y){if(!(y instanceof re))throw y;return{name:l.name,error:y}}}function At(l,p){return!p||!l.name?l:{...l,name:p+"."+l.name}}function Rt(l,p){const y=p+".",O=l?.name?.startsWith(y)?l.name.substring(y.length):l.name;return{...l,name:O}}function Ct(l,p){return p?l.filter(y=>y?.name?.startsWith(p+".")).map(y=>Rt(y,p)):l}function Re(l){return l.api.getErrors().map(p=>l.name?{...p,name:l.name+"."+p.name}:p)}function Ce(l,p){return!l||!p?!0:l instanceof RegExp?l.test(p):p===l||typeof l=="string"&&l.startsWith(p+".")}function Nt(l,p){if(!l||l instanceof RegExp)return l;if(p!==l)return typeof l=="string"&&l.startsWith(p+".")?l.substring(p.length+1):l}function Dt(l,p){const y=new Set(p),O=p.map(C=>k.value?.[C]?.pattern).filter(Boolean),R=C=>C.name?y.has(C.name)?!0:O.some(N=>N.test(C.name)):!1,K=S.value.filter(C=>!R(C)),L=l.filter(R);return[...K,...L]}function Ut(l,p){return l.filter(y=>p instanceof RegExp?!(y.name&&p.test(y.name)):!y.name||y.name!==p)}function Ne(l){return!l.name||!!k.value[l.name]}const De={validate:J,errors:S,setErrors(l,p){const y=z(l.filter(Ne)),O=[];for(const R of v.value.values())if(Ce(p,R.name)){const K=Ct(l,R.name);R.api.setErrors(K,Nt(p,R.name||"")),O.push(...Re(R))}if(p){const R=Ut(S.value,p);S.value=[...R,...y,...O]}else S.value=[...y,...O]},async submit(){f.value instanceof HTMLFormElement&&f.value.reportValidity()===!1||await je(new Event("submit"))},getErrors(l){return l?S.value.filter(p=>l instanceof RegExp?p.name&&l.test(p.name):p.name===l):S.value},clear(l){const p=l?S.value.filter(O=>Ne(O)&&(l instanceof RegExp?!(O.name&&l.test(O.name)):O.name!==l)):[],y=[];for(const O of v.value.values())Ce(l,O.name)&&O.api.clear(),y.push(...Re(O));S.value=[...p,...y]},disabled:Ae,loading:U,dirty:te(()=>!!F.size),dirtyFields:ce(F),blurredFields:ce(j),touchedFields:ce(ie)};return t(De),(l,p)=>(Bt(),Kt(Yt(q(g)?"div":"form"),{id:q(c),ref_key:"formRef",ref:f,name:q(g)?void 0:q(i).name,method:"post",class:Xt(a.value({class:[q(i).ui?.base,q(i).class]})),onSubmit:Ht(je,["prevent"])},{default:qt(()=>[Gt(l.$slots,"default",{errors:S.value,loading:U.value})]),_:3},40,["id","name","class"]))}};var xe;function u(e,t,n){function r(a,c){if(a._zod||Object.defineProperty(a,"_zod",{value:{def:c,constr:s,traits:new Set},enumerable:!1}),a._zod.traits.has(e))return;a._zod.traits.add(e),t(a,c);const f=s.prototype,d=Object.keys(f);for(let g=0;g<d.length;g++){const _=d[g];_ in a||(a[_]=f[_].bind(a))}}const o=n?.Parent??Object;class i extends o{}Object.defineProperty(i,"name",{value:e});function s(a){var c;const f=n?.Parent?new i:this;r(f,a),(c=f._zod).deferred??(c.deferred=[]);for(const d of f._zod.deferred)d();return f}return Object.defineProperty(s,"init",{value:r}),Object.defineProperty(s,Symbol.hasInstance,{value:a=>n?.Parent&&a instanceof n.Parent?!0:a?._zod?.traits?.has(e)}),Object.defineProperty(s,"name",{value:e}),s}class X extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class ct extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}}(xe=globalThis).__zod_globalConfig??(xe.__zod_globalConfig={});const $e=globalThis.__zod_globalConfig;function W(e){return $e}function ut(e){const t=Object.values(e).filter(r=>typeof r=="number");return Object.entries(e).filter(([r,o])=>t.indexOf(+r)===-1).map(([r,o])=>o)}function ze(e,t){return typeof t=="bigint"?t.toString():t}function Ze(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function Se(e){return e==null}function Oe(e){const t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}const Me=Symbol("evaluating");function w(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==Me)return r===void 0&&(r=Me,r=n()),r},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function B(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function x(...e){const t={};for(const n of e){const r=Object.getOwnPropertyDescriptors(n);Object.assign(t,r)}return Object.defineProperties({},t)}function We(e){return JSON.stringify(e)}function hn(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}const ft="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function de(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}const mn=Ze(()=>{if($e.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{const e=Function;return new e(""),!0}catch{return!1}});function oe(e){if(de(e)===!1)return!1;const t=e.constructor;if(t===void 0||typeof t!="function")return!0;const n=t.prototype;return!(de(n)===!1||Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")===!1)}function lt(e){return oe(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}const _n=new Set(["string","number","symbol"]);function Y(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function M(e,t,n){const r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function m(e){const t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function gn(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}function vn(e,t){const n=e._zod.def,r=n.checks;if(r&&r.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");const i=x(e._zod.def,{get shape(){const s={};for(const a in t){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&(s[a]=n.shape[a])}return B(this,"shape",s),s},checks:[]});return M(e,i)}function yn(e,t){const n=e._zod.def,r=n.checks;if(r&&r.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const i=x(e._zod.def,{get shape(){const s={...e._zod.def.shape};for(const a in t){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&delete s[a]}return B(this,"shape",s),s},checks:[]});return M(e,i)}function wn(e,t){if(!oe(t))throw new Error("Invalid input to extend: expected a plain object");const n=e._zod.def.checks;if(n&&n.length>0){const i=e._zod.def.shape;for(const s in t)if(Object.getOwnPropertyDescriptor(i,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}const o=x(e._zod.def,{get shape(){const i={...e._zod.def.shape,...t};return B(this,"shape",i),i}});return M(e,o)}function zn(e,t){if(!oe(t))throw new Error("Invalid input to safeExtend: expected a plain object");const n=x(e._zod.def,{get shape(){const r={...e._zod.def.shape,...t};return B(this,"shape",r),r}});return M(e,n)}function bn(e,t){if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");const n=x(e._zod.def,{get shape(){const r={...e._zod.def.shape,...t._zod.def.shape};return B(this,"shape",r),r},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]});return M(e,n)}function kn(e,t,n){const o=t._zod.def.checks;if(o&&o.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");const s=x(t._zod.def,{get shape(){const a=t._zod.def.shape,c={...a};if(n)for(const f in n){if(!(f in a))throw new Error(`Unrecognized key: "${f}"`);n[f]&&(c[f]=e?new e({type:"optional",innerType:a[f]}):a[f])}else for(const f in a)c[f]=e?new e({type:"optional",innerType:a[f]}):a[f];return B(this,"shape",c),c},checks:[]});return M(t,s)}function $n(e,t,n){const r=x(t._zod.def,{get shape(){const o=t._zod.def.shape,i={...o};if(n)for(const s in n){if(!(s in i))throw new Error(`Unrecognized key: "${s}"`);n[s]&&(i[s]=new e({type:"nonoptional",innerType:o[s]}))}else for(const s in o)i[s]=new e({type:"nonoptional",innerType:o[s]});return B(this,"shape",i),i}});return M(t,r)}function H(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function Zn(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function dt(e,t){return t.map(n=>{var r;return(r=n).path??(r.path=[]),n.path.unshift(e),n})}function ue(e){return typeof e=="string"?e:e?.message}function V(e,t,n){const r=e.message?e.message:ue(e.inst?._zod.def?.error?.(e))??ue(t?.error?.(e))??ue(n.customError?.(e))??ue(n.localeError?.(e))??"Invalid input",{inst:o,continue:i,input:s,...a}=e;return a.path??(a.path=[]),a.message=r,t?.reportInput&&(a.input=s),a}function Ee(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function se(...e){const[t,n,r]=e;return typeof t=="string"?{message:t,code:"custom",input:n,inst:r}:{...t}}const pt=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,ze,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},ht=u("$ZodError",pt),mt=u("$ZodError",pt,{Parent:Error});function Sn(e,t=n=>n.message){const n={},r=[];for(const o of e.issues)o.path.length>0?(n[o.path[0]]=n[o.path[0]]||[],n[o.path[0]].push(t(o))):r.push(t(o));return{formErrors:r,fieldErrors:n}}function On(e,t=n=>n.message){const n={_errors:[]},r=(o,i=[])=>{for(const s of o.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(a=>r({issues:a},[...i,...s.path]));else if(s.code==="invalid_key")r({issues:s.issues},[...i,...s.path]);else if(s.code==="invalid_element")r({issues:s.issues},[...i,...s.path]);else{const a=[...i,...s.path];if(a.length===0)n._errors.push(t(s));else{let c=n,f=0;for(;f<a.length;){const d=a[f];f===a.length-1?(c[d]=c[d]||{_errors:[]},c[d]._errors.push(t(s))):c[d]=c[d]||{_errors:[]},c=c[d],f++}}}};return r(e),n}const Pe=e=>(t,n,r,o)=>{const i=r?{...r,async:!1}:{async:!1},s=t._zod.run({value:n,issues:[]},i);if(s instanceof Promise)throw new X;if(s.issues.length){const a=new(o?.Err??e)(s.issues.map(c=>V(c,i,W())));throw ft(a,o?.callee),a}return s.value},Ie=e=>async(t,n,r,o)=>{const i=r?{...r,async:!0}:{async:!0};let s=t._zod.run({value:n,issues:[]},i);if(s instanceof Promise&&(s=await s),s.issues.length){const a=new(o?.Err??e)(s.issues.map(c=>V(c,i,W())));throw ft(a,o?.callee),a}return s.value},_e=e=>(t,n,r)=>{const o=r?{...r,async:!1}:{async:!1},i=t._zod.run({value:n,issues:[]},o);if(i instanceof Promise)throw new X;return i.issues.length?{success:!1,error:new(e??ht)(i.issues.map(s=>V(s,o,W())))}:{success:!0,data:i.value}},En=_e(mt),ge=e=>async(t,n,r)=>{const o=r?{...r,async:!0}:{async:!0};let i=t._zod.run({value:n,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?{success:!1,error:new e(i.issues.map(s=>V(s,o,W())))}:{success:!0,data:i.value}},Pn=ge(mt),In=e=>(t,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return Pe(e)(t,n,o)},Tn=e=>(t,n,r)=>Pe(e)(t,n,r),jn=e=>async(t,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return Ie(e)(t,n,o)},An=e=>async(t,n,r)=>Ie(e)(t,n,r),Rn=e=>(t,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return _e(e)(t,n,o)},Cn=e=>(t,n,r)=>_e(e)(t,n,r),Nn=e=>async(t,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return ge(e)(t,n,o)},Dn=e=>async(t,n,r)=>ge(e)(t,n,r),Un=/^[cC][0-9a-z]{6,}$/,Fn=/^[0-9a-z]+$/,Jn=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Ln=/^[0-9a-vA-V]{20}$/,xn=/^[A-Za-z0-9]{27}$/,Mn=/^[a-zA-Z0-9_-]{21}$/,Wn=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Vn=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Ve=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Bn=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Kn="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function qn(){return new RegExp(Kn,"u")}const Gn=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Hn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Xn=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Yn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Qn=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,_t=/^[A-Za-z0-9_-]*$/,er=/^https?$/,tr=/^\+[1-9]\d{6,14}$/,gt="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",nr=new RegExp(`^${gt}$`);function vt(e){const t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function rr(e){return new RegExp(`^${vt(e)}$`)}function or(e){const t=vt({precision:e.precision}),n=["Z"];e.local&&n.push(""),e.offset&&n.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const r=`${t}(?:${n.join("|")})`;return new RegExp(`^${gt}T(?:${r})$`)}const sr=e=>{const t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},ir=/^[^A-Z]*$/,ar=/^[^a-z]*$/,D=u("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),cr=u("$ZodCheckMaxLength",(e,t)=>{var n;D.init(e,t),(n=e._zod.def).when??(n.when=r=>{const o=r.value;return!Se(o)&&o.length!==void 0}),e._zod.onattach.push(r=>{const o=r._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<o&&(r._zod.bag.maximum=t.maximum)}),e._zod.check=r=>{const o=r.value;if(o.length<=t.maximum)return;const s=Ee(o);r.issues.push({origin:s,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),ur=u("$ZodCheckMinLength",(e,t)=>{var n;D.init(e,t),(n=e._zod.def).when??(n.when=r=>{const o=r.value;return!Se(o)&&o.length!==void 0}),e._zod.onattach.push(r=>{const o=r._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>o&&(r._zod.bag.minimum=t.minimum)}),e._zod.check=r=>{const o=r.value;if(o.length>=t.minimum)return;const s=Ee(o);r.issues.push({origin:s,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),fr=u("$ZodCheckLengthEquals",(e,t)=>{var n;D.init(e,t),(n=e._zod.def).when??(n.when=r=>{const o=r.value;return!Se(o)&&o.length!==void 0}),e._zod.onattach.push(r=>{const o=r._zod.bag;o.minimum=t.length,o.maximum=t.length,o.length=t.length}),e._zod.check=r=>{const o=r.value,i=o.length;if(i===t.length)return;const s=Ee(o),a=i>t.length;r.issues.push({origin:s,...a?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:r.value,inst:e,continue:!t.abort})}}),ve=u("$ZodCheckStringFormat",(e,t)=>{var n,r;D.init(e,t),e._zod.onattach.push(o=>{const i=o._zod.bag;i.format=t.format,t.pattern&&(i.patterns??(i.patterns=new Set),i.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),lr=u("$ZodCheckRegex",(e,t)=>{ve.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),dr=u("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=ir),ve.init(e,t)}),pr=u("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=ar),ve.init(e,t)}),hr=u("$ZodCheckIncludes",(e,t)=>{D.init(e,t);const n=Y(t.includes),r=new RegExp(typeof t.position=="number"?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(o=>{const i=o._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(r)}),e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),mr=u("$ZodCheckStartsWith",(e,t)=>{D.init(e,t);const n=new RegExp(`^${Y(t.prefix)}.*`);t.pattern??(t.pattern=n),e._zod.onattach.push(r=>{const o=r._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(n)}),e._zod.check=r=>{r.value.startsWith(t.prefix)||r.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:r.value,inst:e,continue:!t.abort})}}),_r=u("$ZodCheckEndsWith",(e,t)=>{D.init(e,t);const n=new RegExp(`.*${Y(t.suffix)}$`);t.pattern??(t.pattern=n),e._zod.onattach.push(r=>{const o=r._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(n)}),e._zod.check=r=>{r.value.endsWith(t.suffix)||r.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:r.value,inst:e,continue:!t.abort})}}),gr=u("$ZodCheckOverwrite",(e,t)=>{D.init(e,t),e._zod.check=n=>{n.value=t.tx(n.value)}});class vr{constructor(t=[]){this.content=[],this.indent=0,this&&(this.args=t)}indented(t){this.indent+=1,t(this),this.indent-=1}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}const r=t.split(`
|
|
1
|
+
import{a1 as Jt,a3 as Lt,aN as xt,aO as Mt,am as Ue,aP as Fe,aQ as Je,C as Le,G as Wt,ab as Vt,r as ee,I as we,h as te,aR as ce,o as Bt,f as Kt,g as qt,T as Gt,H as Ht,p as Xt,k as q,ae as Yt,aS as Qt,a6 as en,J as G,aT as tn,aU as nn,aV as rn,aW as on}from"./BPKwYP2Q.js";function sn(e){return"schema"in e&&typeof e.coercer=="function"&&typeof e.validator=="function"&&typeof e.refiner=="function"}function an(e){return"~standard"in e}async function cn(e,t){const n=await t["~standard"].validate(e);return n.issues?{errors:n.issues?.map(r=>({name:r.path?.map(o=>typeof o=="object"?o.key:o).join(".")||"",message:r.message}))||[],result:null}:{errors:null,result:n.value}}async function un(e,t){const[n,r]=t.validate(e);return n?{errors:n.failures().map(i=>({message:i.message,name:i.path.join(".")})),result:null}:{errors:null,result:r}}function fn(e,t){if(an(t))return cn(e,t);if(sn(t))return un(e,t);throw new Error("Form validation failed: Unsupported form schema")}function ln(e,t){return t?t.split(".").reduce((r,o)=>r?.[o],e):e}function dn(e,t,n){if(!t)return Object.assign(e,n);if(!e)return e;const r=t.split(".");let o=e;for(let s=0;s<r.length-1;s++){const a=r[s];(o[a]===void 0||o[a]===null)&&(s+1<r.length&&!Number.isNaN(Number(r[s+1]))?o[a]=[]:o[a]={}),o=o[a]}const i=r[r.length-1];return o[i]=n,e}class re extends Error{formId;errors;constructor(t,n){super("Form validation exception"),this.formId=t,this.errors=n,Object.setPrototypeOf(this,re.prototype)}}const pn={base:""},Ui={__name:"UForm",props:{id:{type:[String,Number],required:!1},schema:{type:null,required:!1},state:{type:null,required:!1},validate:{type:Function,required:!1},validateOn:{type:Array,required:!1,default(){return["input","blur","change"]}},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},validateOnInputDelay:{type:Number,required:!1,default:300},transform:{type:null,required:!1,default:()=>!0},nested:{type:Boolean,required:!1},loadingAuto:{type:Boolean,required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1},onSubmit:{type:Function,required:!1}},emits:["submit","error"],setup(e,{expose:t,emit:n}){const r=e,o=n,i=Jt("form",r),s=Lt(),a=te(()=>en({extend:pn,...s.ui?.form||{}})),c=i.id??xt(),f=Mt("formRef"),d=Qt(`form-${c}`),g=i.nested===!0&&Ue(Fe,void 0),_=i.nested===!0?Ue(Je,void 0):void 0,h=te(()=>_?.value?i.name?ln(_.value,i.name):_.value:i.state);G(Fe,d),G(Je,h);const v=ee(new Map);Le(async()=>{g&&(await Wt(),g.emit({type:"attach",validate:J,formId:c,name:i.name,api:De}))}),Vt(()=>{d.reset(),g&&g.emit({type:"detach",formId:c})}),Le(async()=>{d.on(async l=>{l.type==="attach"?v.value.set(l.formId,{validate:l.validate,name:l.name,api:l.api}):l.type==="detach"?v.value.delete(l.formId):i.validateOn?.includes(l.type)&&!U.value&&(l.type!=="input"?await J({name:l.name,silent:!0,nested:!1}):(l.eager||j.has(l.name))&&await J({name:l.name,silent:!0,nested:!1})),l.type==="blur"&&j.add(l.name),(l.type==="change"||l.type==="input"||l.type==="blur"||l.type==="focus")&&ie.add(l.name),(l.type==="change"||l.type==="input")&&F.add(l.name)})});const S=ee([]);G(tn,S);const k=ee({});G(nn,k);const F=we(new Set),ie=we(new Set),j=we(new Set);function z(l){return l.map(p=>({...p,id:p?.name?k.value[p.name]?.id:void 0}))}const Z=ee(null);async function ae(){let l=i.validate?await i.validate(h.value)??[]:[];if(i.schema){const{errors:p,result:y}=await fn(h.value,i.schema);p?l=l.concat(p):Z.value=y}return z(l)}async function J(l={silent:!1,nested:!1,transform:!1}){const p=l.name&&!Array.isArray(l.name)?[l.name]:l.name;let y=[],O=[];if(!p&&l.nested){const L=Array.from(v.value.values()).map(N=>jt(N,l)),C=await Promise.all(L);O=C.filter(N=>N.error).flatMap(N=>N.error.errors.map(Ft=>At(Ft,N.name))),y=C.filter(N=>N.output!==void 0)}const K=[...await ae(),...O];if(p?S.value=Dt(K,p):S.value=K,S.value?.length){if(l.silent)return!1;throw new re(c,S.value)}return l.transform?(y.forEach(L=>{L.name?dn(Z.value,L.name,L.output):Object.assign(Z.value,L.output)}),Z.value??h.value):h.value}const U=ee(!1);G(rn,ce(U));async function je(l){U.value=!!i.loadingAuto;const p=l;try{p.data=await J({nested:!0,transform:i.transform}),await i.onSubmit?.(p),F.clear()}catch(y){if(!(y instanceof re))throw y;const O={...p,errors:y.errors};o("error",O)}finally{U.value=!1}}const Ae=te(()=>i.disabled||U.value);G(on,te(()=>({disabled:Ae.value,validateOnInputDelay:i.validateOnInputDelay})));async function jt(l,p){try{const y=await l.validate({...p,silent:!1});return{name:l.name,output:y}}catch(y){if(!(y instanceof re))throw y;return{name:l.name,error:y}}}function At(l,p){return!p||!l.name?l:{...l,name:p+"."+l.name}}function Rt(l,p){const y=p+".",O=l?.name?.startsWith(y)?l.name.substring(y.length):l.name;return{...l,name:O}}function Ct(l,p){return p?l.filter(y=>y?.name?.startsWith(p+".")).map(y=>Rt(y,p)):l}function Re(l){return l.api.getErrors().map(p=>l.name?{...p,name:l.name+"."+p.name}:p)}function Ce(l,p){return!l||!p?!0:l instanceof RegExp?l.test(p):p===l||typeof l=="string"&&l.startsWith(p+".")}function Nt(l,p){if(!l||l instanceof RegExp)return l;if(p!==l)return typeof l=="string"&&l.startsWith(p+".")?l.substring(p.length+1):l}function Dt(l,p){const y=new Set(p),O=p.map(C=>k.value?.[C]?.pattern).filter(Boolean),R=C=>C.name?y.has(C.name)?!0:O.some(N=>N.test(C.name)):!1,K=S.value.filter(C=>!R(C)),L=l.filter(R);return[...K,...L]}function Ut(l,p){return l.filter(y=>p instanceof RegExp?!(y.name&&p.test(y.name)):!y.name||y.name!==p)}function Ne(l){return!l.name||!!k.value[l.name]}const De={validate:J,errors:S,setErrors(l,p){const y=z(l.filter(Ne)),O=[];for(const R of v.value.values())if(Ce(p,R.name)){const K=Ct(l,R.name);R.api.setErrors(K,Nt(p,R.name||"")),O.push(...Re(R))}if(p){const R=Ut(S.value,p);S.value=[...R,...y,...O]}else S.value=[...y,...O]},async submit(){f.value instanceof HTMLFormElement&&f.value.reportValidity()===!1||await je(new Event("submit"))},getErrors(l){return l?S.value.filter(p=>l instanceof RegExp?p.name&&l.test(p.name):p.name===l):S.value},clear(l){const p=l?S.value.filter(O=>Ne(O)&&(l instanceof RegExp?!(O.name&&l.test(O.name)):O.name!==l)):[],y=[];for(const O of v.value.values())Ce(l,O.name)&&O.api.clear(),y.push(...Re(O));S.value=[...p,...y]},disabled:Ae,loading:U,dirty:te(()=>!!F.size),dirtyFields:ce(F),blurredFields:ce(j),touchedFields:ce(ie)};return t(De),(l,p)=>(Bt(),Kt(Yt(q(g)?"div":"form"),{id:q(c),ref_key:"formRef",ref:f,name:q(g)?void 0:q(i).name,method:"post",class:Xt(a.value({class:[q(i).ui?.base,q(i).class]})),onSubmit:Ht(je,["prevent"])},{default:qt(()=>[Gt(l.$slots,"default",{errors:S.value,loading:U.value})]),_:3},40,["id","name","class"]))}};var xe;function u(e,t,n){function r(a,c){if(a._zod||Object.defineProperty(a,"_zod",{value:{def:c,constr:s,traits:new Set},enumerable:!1}),a._zod.traits.has(e))return;a._zod.traits.add(e),t(a,c);const f=s.prototype,d=Object.keys(f);for(let g=0;g<d.length;g++){const _=d[g];_ in a||(a[_]=f[_].bind(a))}}const o=n?.Parent??Object;class i extends o{}Object.defineProperty(i,"name",{value:e});function s(a){var c;const f=n?.Parent?new i:this;r(f,a),(c=f._zod).deferred??(c.deferred=[]);for(const d of f._zod.deferred)d();return f}return Object.defineProperty(s,"init",{value:r}),Object.defineProperty(s,Symbol.hasInstance,{value:a=>n?.Parent&&a instanceof n.Parent?!0:a?._zod?.traits?.has(e)}),Object.defineProperty(s,"name",{value:e}),s}class X extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class ct extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}}(xe=globalThis).__zod_globalConfig??(xe.__zod_globalConfig={});const $e=globalThis.__zod_globalConfig;function W(e){return $e}function ut(e){const t=Object.values(e).filter(r=>typeof r=="number");return Object.entries(e).filter(([r,o])=>t.indexOf(+r)===-1).map(([r,o])=>o)}function ze(e,t){return typeof t=="bigint"?t.toString():t}function Ze(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function Se(e){return e==null}function Oe(e){const t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}const Me=Symbol("evaluating");function w(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==Me)return r===void 0&&(r=Me,r=n()),r},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function B(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function x(...e){const t={};for(const n of e){const r=Object.getOwnPropertyDescriptors(n);Object.assign(t,r)}return Object.defineProperties({},t)}function We(e){return JSON.stringify(e)}function hn(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}const ft="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function de(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}const mn=Ze(()=>{if($e.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{const e=Function;return new e(""),!0}catch{return!1}});function oe(e){if(de(e)===!1)return!1;const t=e.constructor;if(t===void 0||typeof t!="function")return!0;const n=t.prototype;return!(de(n)===!1||Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")===!1)}function lt(e){return oe(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}const _n=new Set(["string","number","symbol"]);function Y(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function M(e,t,n){const r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function m(e){const t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function gn(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}function vn(e,t){const n=e._zod.def,r=n.checks;if(r&&r.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");const i=x(e._zod.def,{get shape(){const s={};for(const a in t){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&(s[a]=n.shape[a])}return B(this,"shape",s),s},checks:[]});return M(e,i)}function yn(e,t){const n=e._zod.def,r=n.checks;if(r&&r.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const i=x(e._zod.def,{get shape(){const s={...e._zod.def.shape};for(const a in t){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&delete s[a]}return B(this,"shape",s),s},checks:[]});return M(e,i)}function wn(e,t){if(!oe(t))throw new Error("Invalid input to extend: expected a plain object");const n=e._zod.def.checks;if(n&&n.length>0){const i=e._zod.def.shape;for(const s in t)if(Object.getOwnPropertyDescriptor(i,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}const o=x(e._zod.def,{get shape(){const i={...e._zod.def.shape,...t};return B(this,"shape",i),i}});return M(e,o)}function zn(e,t){if(!oe(t))throw new Error("Invalid input to safeExtend: expected a plain object");const n=x(e._zod.def,{get shape(){const r={...e._zod.def.shape,...t};return B(this,"shape",r),r}});return M(e,n)}function bn(e,t){if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");const n=x(e._zod.def,{get shape(){const r={...e._zod.def.shape,...t._zod.def.shape};return B(this,"shape",r),r},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]});return M(e,n)}function kn(e,t,n){const o=t._zod.def.checks;if(o&&o.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");const s=x(t._zod.def,{get shape(){const a=t._zod.def.shape,c={...a};if(n)for(const f in n){if(!(f in a))throw new Error(`Unrecognized key: "${f}"`);n[f]&&(c[f]=e?new e({type:"optional",innerType:a[f]}):a[f])}else for(const f in a)c[f]=e?new e({type:"optional",innerType:a[f]}):a[f];return B(this,"shape",c),c},checks:[]});return M(t,s)}function $n(e,t,n){const r=x(t._zod.def,{get shape(){const o=t._zod.def.shape,i={...o};if(n)for(const s in n){if(!(s in i))throw new Error(`Unrecognized key: "${s}"`);n[s]&&(i[s]=new e({type:"nonoptional",innerType:o[s]}))}else for(const s in o)i[s]=new e({type:"nonoptional",innerType:o[s]});return B(this,"shape",i),i}});return M(t,r)}function H(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function Zn(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function dt(e,t){return t.map(n=>{var r;return(r=n).path??(r.path=[]),n.path.unshift(e),n})}function ue(e){return typeof e=="string"?e:e?.message}function V(e,t,n){const r=e.message?e.message:ue(e.inst?._zod.def?.error?.(e))??ue(t?.error?.(e))??ue(n.customError?.(e))??ue(n.localeError?.(e))??"Invalid input",{inst:o,continue:i,input:s,...a}=e;return a.path??(a.path=[]),a.message=r,t?.reportInput&&(a.input=s),a}function Ee(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function se(...e){const[t,n,r]=e;return typeof t=="string"?{message:t,code:"custom",input:n,inst:r}:{...t}}const pt=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,ze,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},ht=u("$ZodError",pt),mt=u("$ZodError",pt,{Parent:Error});function Sn(e,t=n=>n.message){const n={},r=[];for(const o of e.issues)o.path.length>0?(n[o.path[0]]=n[o.path[0]]||[],n[o.path[0]].push(t(o))):r.push(t(o));return{formErrors:r,fieldErrors:n}}function On(e,t=n=>n.message){const n={_errors:[]},r=(o,i=[])=>{for(const s of o.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(a=>r({issues:a},[...i,...s.path]));else if(s.code==="invalid_key")r({issues:s.issues},[...i,...s.path]);else if(s.code==="invalid_element")r({issues:s.issues},[...i,...s.path]);else{const a=[...i,...s.path];if(a.length===0)n._errors.push(t(s));else{let c=n,f=0;for(;f<a.length;){const d=a[f];f===a.length-1?(c[d]=c[d]||{_errors:[]},c[d]._errors.push(t(s))):c[d]=c[d]||{_errors:[]},c=c[d],f++}}}};return r(e),n}const Pe=e=>(t,n,r,o)=>{const i=r?{...r,async:!1}:{async:!1},s=t._zod.run({value:n,issues:[]},i);if(s instanceof Promise)throw new X;if(s.issues.length){const a=new(o?.Err??e)(s.issues.map(c=>V(c,i,W())));throw ft(a,o?.callee),a}return s.value},Ie=e=>async(t,n,r,o)=>{const i=r?{...r,async:!0}:{async:!0};let s=t._zod.run({value:n,issues:[]},i);if(s instanceof Promise&&(s=await s),s.issues.length){const a=new(o?.Err??e)(s.issues.map(c=>V(c,i,W())));throw ft(a,o?.callee),a}return s.value},_e=e=>(t,n,r)=>{const o=r?{...r,async:!1}:{async:!1},i=t._zod.run({value:n,issues:[]},o);if(i instanceof Promise)throw new X;return i.issues.length?{success:!1,error:new(e??ht)(i.issues.map(s=>V(s,o,W())))}:{success:!0,data:i.value}},En=_e(mt),ge=e=>async(t,n,r)=>{const o=r?{...r,async:!0}:{async:!0};let i=t._zod.run({value:n,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?{success:!1,error:new e(i.issues.map(s=>V(s,o,W())))}:{success:!0,data:i.value}},Pn=ge(mt),In=e=>(t,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return Pe(e)(t,n,o)},Tn=e=>(t,n,r)=>Pe(e)(t,n,r),jn=e=>async(t,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return Ie(e)(t,n,o)},An=e=>async(t,n,r)=>Ie(e)(t,n,r),Rn=e=>(t,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return _e(e)(t,n,o)},Cn=e=>(t,n,r)=>_e(e)(t,n,r),Nn=e=>async(t,n,r)=>{const o=r?{...r,direction:"backward"}:{direction:"backward"};return ge(e)(t,n,o)},Dn=e=>async(t,n,r)=>ge(e)(t,n,r),Un=/^[cC][0-9a-z]{6,}$/,Fn=/^[0-9a-z]+$/,Jn=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Ln=/^[0-9a-vA-V]{20}$/,xn=/^[A-Za-z0-9]{27}$/,Mn=/^[a-zA-Z0-9_-]{21}$/,Wn=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Vn=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Ve=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Bn=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Kn="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function qn(){return new RegExp(Kn,"u")}const Gn=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Hn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Xn=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Yn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Qn=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,_t=/^[A-Za-z0-9_-]*$/,er=/^https?$/,tr=/^\+[1-9]\d{6,14}$/,gt="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",nr=new RegExp(`^${gt}$`);function vt(e){const t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function rr(e){return new RegExp(`^${vt(e)}$`)}function or(e){const t=vt({precision:e.precision}),n=["Z"];e.local&&n.push(""),e.offset&&n.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const r=`${t}(?:${n.join("|")})`;return new RegExp(`^${gt}T(?:${r})$`)}const sr=e=>{const t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},ir=/^[^A-Z]*$/,ar=/^[^a-z]*$/,D=u("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),cr=u("$ZodCheckMaxLength",(e,t)=>{var n;D.init(e,t),(n=e._zod.def).when??(n.when=r=>{const o=r.value;return!Se(o)&&o.length!==void 0}),e._zod.onattach.push(r=>{const o=r._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<o&&(r._zod.bag.maximum=t.maximum)}),e._zod.check=r=>{const o=r.value;if(o.length<=t.maximum)return;const s=Ee(o);r.issues.push({origin:s,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),ur=u("$ZodCheckMinLength",(e,t)=>{var n;D.init(e,t),(n=e._zod.def).when??(n.when=r=>{const o=r.value;return!Se(o)&&o.length!==void 0}),e._zod.onattach.push(r=>{const o=r._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>o&&(r._zod.bag.minimum=t.minimum)}),e._zod.check=r=>{const o=r.value;if(o.length>=t.minimum)return;const s=Ee(o);r.issues.push({origin:s,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),fr=u("$ZodCheckLengthEquals",(e,t)=>{var n;D.init(e,t),(n=e._zod.def).when??(n.when=r=>{const o=r.value;return!Se(o)&&o.length!==void 0}),e._zod.onattach.push(r=>{const o=r._zod.bag;o.minimum=t.length,o.maximum=t.length,o.length=t.length}),e._zod.check=r=>{const o=r.value,i=o.length;if(i===t.length)return;const s=Ee(o),a=i>t.length;r.issues.push({origin:s,...a?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:r.value,inst:e,continue:!t.abort})}}),ve=u("$ZodCheckStringFormat",(e,t)=>{var n,r;D.init(e,t),e._zod.onattach.push(o=>{const i=o._zod.bag;i.format=t.format,t.pattern&&(i.patterns??(i.patterns=new Set),i.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),lr=u("$ZodCheckRegex",(e,t)=>{ve.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),dr=u("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=ir),ve.init(e,t)}),pr=u("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=ar),ve.init(e,t)}),hr=u("$ZodCheckIncludes",(e,t)=>{D.init(e,t);const n=Y(t.includes),r=new RegExp(typeof t.position=="number"?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(o=>{const i=o._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(r)}),e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),mr=u("$ZodCheckStartsWith",(e,t)=>{D.init(e,t);const n=new RegExp(`^${Y(t.prefix)}.*`);t.pattern??(t.pattern=n),e._zod.onattach.push(r=>{const o=r._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(n)}),e._zod.check=r=>{r.value.startsWith(t.prefix)||r.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:r.value,inst:e,continue:!t.abort})}}),_r=u("$ZodCheckEndsWith",(e,t)=>{D.init(e,t);const n=new RegExp(`.*${Y(t.suffix)}$`);t.pattern??(t.pattern=n),e._zod.onattach.push(r=>{const o=r._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(n)}),e._zod.check=r=>{r.value.endsWith(t.suffix)||r.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:r.value,inst:e,continue:!t.abort})}}),gr=u("$ZodCheckOverwrite",(e,t)=>{D.init(e,t),e._zod.check=n=>{n.value=t.tx(n.value)}});class vr{constructor(t=[]){this.content=[],this.indent=0,this&&(this.args=t)}indented(t){this.indent+=1,t(this),this.indent-=1}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}const r=t.split(`
|
|
2
2
|
`).filter(s=>s),o=Math.min(...r.map(s=>s.length-s.trimStart().length)),i=r.map(s=>s.slice(o)).map(s=>" ".repeat(this.indent*2)+s);for(const s of i)this.content.push(s)}compile(){const t=Function,n=this?.args,o=[...(this?.content??[""]).map(i=>` ${i}`)];return new t(...n,o.join(`
|
|
3
3
|
`))}}const yr={major:4,minor:4,patch:3},E=u("$ZodType",(e,t)=>{var n;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=yr;const r=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&r.unshift(e);for(const o of r)for(const i of o._zod.onattach)i(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{const o=(s,a,c)=>{let f=H(s),d;for(const g of a){if(g._zod.def.when){if(Zn(s)||!g._zod.def.when(s))continue}else if(f)continue;const _=s.issues.length,h=g._zod.check(s);if(h instanceof Promise&&c?.async===!1)throw new X;if(d||h instanceof Promise)d=(d??Promise.resolve()).then(async()=>{await h,s.issues.length!==_&&(f||(f=H(s,_)))});else{if(s.issues.length===_)continue;f||(f=H(s,_))}}return d?d.then(()=>s):s},i=(s,a,c)=>{if(H(s))return s.aborted=!0,s;const f=o(a,r,c);if(f instanceof Promise){if(c.async===!1)throw new X;return f.then(d=>e._zod.parse(d,c))}return e._zod.parse(f,c)};e._zod.run=(s,a)=>{if(a.skipChecks)return e._zod.parse(s,a);if(a.direction==="backward"){const f=e._zod.parse({value:s.value,issues:[]},{...a,skipChecks:!0});return f instanceof Promise?f.then(d=>i(d,s,a)):i(f,s,a)}const c=e._zod.parse(s,a);if(c instanceof Promise){if(a.async===!1)throw new X;return c.then(f=>o(f,r,a))}return o(c,r,a)}}w(e,"~standard",()=>({validate:o=>{try{const i=En(e,o);return i.success?{value:i.data}:{issues:i.error?.issues}}catch{return Pn(e,o).then(s=>s.success?{value:s.data}:{issues:s.error?.issues})}},vendor:"zod",version:1}))}),Te=u("$ZodString",(e,t)=>{E.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??sr(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value=="string"||n.issues.push({expected:"string",code:"invalid_type",input:n.value,inst:e}),n}}),b=u("$ZodStringFormat",(e,t)=>{ve.init(e,t),Te.init(e,t)}),wr=u("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Vn),b.init(e,t)}),zr=u("$ZodUUID",(e,t)=>{if(t.version){const r={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(r===void 0)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=Ve(r))}else t.pattern??(t.pattern=Ve());b.init(e,t)}),br=u("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Bn),b.init(e,t)}),kr=u("$ZodURL",(e,t)=>{b.init(e,t),e._zod.check=n=>{try{const r=n.value.trim();if(!t.normalize&&t.protocol?.source===er.source&&!/^https?:\/\//i.test(r)){n.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:n.value,inst:e,continue:!t.abort});return}const o=new URL(r);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(o.hostname)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),t.normalize?n.value=o.href:n.value=r;return}catch{n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:e,continue:!t.abort})}}}),$r=u("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=qn()),b.init(e,t)}),Zr=u("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=Mn),b.init(e,t)}),Sr=u("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=Un),b.init(e,t)}),Or=u("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Fn),b.init(e,t)}),Er=u("$ZodULID",(e,t)=>{t.pattern??(t.pattern=Jn),b.init(e,t)}),Pr=u("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Ln),b.init(e,t)}),Ir=u("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=xn),b.init(e,t)}),Tr=u("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=or(t)),b.init(e,t)}),jr=u("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=nr),b.init(e,t)}),Ar=u("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=rr(t)),b.init(e,t)}),Rr=u("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Wn),b.init(e,t)}),Cr=u("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=Gn),b.init(e,t),e._zod.bag.format="ipv4"}),Nr=u("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=Hn),b.init(e,t),e._zod.bag.format="ipv6",e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:"invalid_format",format:"ipv6",input:n.value,inst:e,continue:!t.abort})}}}),Dr=u("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=Xn),b.init(e,t)}),Ur=u("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=Yn),b.init(e,t),e._zod.check=n=>{const r=n.value.split("/");try{if(r.length!==2)throw new Error;const[o,i]=r;if(!i)throw new Error;const s=Number(i);if(`${s}`!==i)throw new Error;if(s<0||s>128)throw new Error;new URL(`http://[${o}]`)}catch{n.issues.push({code:"invalid_format",format:"cidrv6",input:n.value,inst:e,continue:!t.abort})}}});function yt(e){if(e==="")return!0;if(/\s/.test(e)||e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}const Fr=u("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=Qn),b.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=n=>{yt(n.value)||n.issues.push({code:"invalid_format",format:"base64",input:n.value,inst:e,continue:!t.abort})}});function Jr(e){if(!_t.test(e))return!1;const t=e.replace(/[-_]/g,r=>r==="-"?"+":"/"),n=t.padEnd(Math.ceil(t.length/4)*4,"=");return yt(n)}const Lr=u("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=_t),b.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=n=>{Jr(n.value)||n.issues.push({code:"invalid_format",format:"base64url",input:n.value,inst:e,continue:!t.abort})}}),xr=u("$ZodE164",(e,t)=>{t.pattern??(t.pattern=tr),b.init(e,t)});function Mr(e,t=null){try{const n=e.split(".");if(n.length!==3)return!1;const[r]=n;if(!r)return!1;const o=JSON.parse(atob(r));return!("typ"in o&&o?.typ!=="JWT"||!o.alg||t&&(!("alg"in o)||o.alg!==t))}catch{return!1}}const Wr=u("$ZodJWT",(e,t)=>{b.init(e,t),e._zod.check=n=>{Mr(n.value,t.alg)||n.issues.push({code:"invalid_format",format:"jwt",input:n.value,inst:e,continue:!t.abort})}}),Vr=u("$ZodUnknown",(e,t)=>{E.init(e,t),e._zod.parse=n=>n}),Br=u("$ZodNever",(e,t)=>{E.init(e,t),e._zod.parse=(n,r)=>(n.issues.push({expected:"never",code:"invalid_type",input:n.value,inst:e}),n)});function Be(e,t,n){e.issues.length&&t.issues.push(...dt(n,e.issues)),t.value[n]=e.value}const Kr=u("$ZodArray",(e,t)=>{E.init(e,t),e._zod.parse=(n,r)=>{const o=n.value;if(!Array.isArray(o))return n.issues.push({expected:"array",code:"invalid_type",input:o,inst:e}),n;n.value=Array(o.length);const i=[];for(let s=0;s<o.length;s++){const a=o[s],c=t.element._zod.run({value:a,issues:[]},r);c instanceof Promise?i.push(c.then(f=>Be(f,n,s))):Be(c,n,s)}return i.length?Promise.all(i).then(()=>n):n}});function pe(e,t,n,r,o,i){const s=n in r;if(e.issues.length){if(o&&i&&!s)return;t.issues.push(...dt(n,e.issues))}if(!s&&!o){e.issues.length||t.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[n]});return}e.value===void 0?s&&(t.value[n]=void 0):t.value[n]=e.value}function wt(e){const t=Object.keys(e.shape);for(const r of t)if(!e.shape?.[r]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${r}": expected a Zod schema`);const n=gn(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function zt(e,t,n,r,o,i){const s=[],a=o.keySet,c=o.catchall._zod,f=c.def.type,d=c.optin==="optional",g=c.optout==="optional";for(const _ in t){if(_==="__proto__"||a.has(_))continue;if(f==="never"){s.push(_);continue}const h=c.run({value:t[_],issues:[]},r);h instanceof Promise?e.push(h.then(v=>pe(v,n,_,t,d,g))):pe(h,n,_,t,d,g)}return s.length&&n.issues.push({code:"unrecognized_keys",keys:s,input:t,inst:i}),e.length?Promise.all(e).then(()=>n):n}const qr=u("$ZodObject",(e,t)=>{if(E.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){const a=t.shape;Object.defineProperty(t,"shape",{get:()=>{const c={...a};return Object.defineProperty(t,"shape",{value:c}),c}})}const r=Ze(()=>wt(t));w(e._zod,"propValues",()=>{const a=t.shape,c={};for(const f in a){const d=a[f]._zod;if(d.values){c[f]??(c[f]=new Set);for(const g of d.values)c[f].add(g)}}return c});const o=de,i=t.catchall;let s;e._zod.parse=(a,c)=>{s??(s=r.value);const f=a.value;if(!o(f))return a.issues.push({expected:"object",code:"invalid_type",input:f,inst:e}),a;a.value={};const d=[],g=s.shape;for(const _ of s.keys){const h=g[_],v=h._zod.optin==="optional",S=h._zod.optout==="optional",k=h._zod.run({value:f[_],issues:[]},c);k instanceof Promise?d.push(k.then(F=>pe(F,a,_,f,v,S))):pe(k,a,_,f,v,S)}return i?zt(d,f,a,c,r.value,e):d.length?Promise.all(d).then(()=>a):a}}),Gr=u("$ZodObjectJIT",(e,t)=>{qr.init(e,t);const n=e._zod.parse,r=Ze(()=>wt(t)),o=_=>{const h=new vr(["shape","payload","ctx"]),v=r.value,S=j=>{const z=We(j);return`shape[${z}]._zod.run({ value: input[${z}], issues: [] }, ctx)`};h.write("const input = payload.value;");const k=Object.create(null);let F=0;for(const j of v.keys)k[j]=`key_${F++}`;h.write("const newResult = {};");for(const j of v.keys){const z=k[j],Z=We(j),ae=_[j],J=ae?._zod?.optin==="optional",U=ae?._zod?.optout==="optional";h.write(`const ${z} = ${S(j)};`),J&&U?h.write(`
|
|
4
4
|
if (${z}.issues.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as R}from"./
|
|
1
|
+
import{_ as R}from"./Bvfmwzgw.js";import{_ as V}from"./ze9-Ill2.js";import{_ as O,a as q}from"./IFqRT_xJ.js";import{_ as z}from"./Bzl2H_vl.js";import{d as A,u as L,a as G,b as J,w as T,e as K,r as g,f as M,g as i,h as f,o as Q,i as l,j as r,k as o,l as W,_ as X,m as b,t as Y}from"./BPKwYP2Q.js";import{o as Z,s as u,_ as tt}from"./-KQO1A4C.js";import{_ as ot}from"./B7yG1G_l.js";import{u as h}from"./BIf1R_fu.js";import"./iwD5atI2.js";import"./DdbrJwT-.js";import"./DRtTLQri.js";import"./ABGJk0pu.js";import"./CQeMb57w.js";import"./r3SBLxtE.js";import"./DuMv-ugy.js";import"./BVW5qIDP.js";import"./C3r_Sv1p.js";import"./CpO-ABDW.js";import"./jIF87ALb.js";import"./mGJLLqyN.js";import"./d5ZB3uxF.js";import"./k-z_VVTK.js";const st={class:"p-4 space-y-4"},et={class:"text-sm text-gray-600 mt-1"},at={class:"font-medium"},nt={class:"flex justify-end gap-2 pt-2"},Ct=A({__name:"edit",async setup(it){let n,d;const $=L(),v=G(),j=J(),c=$.params.id,{data:e}=([n,d]=T(()=>h(`/api/projects/${c}`,"$HHkdnHL3hB")),n=await n,d(),n),{data:y,refresh:x}=([n,d]=T(()=>h("/api/tags","$DPtjOd0zOq")),n=await n,d(),n);K(f(()=>({title:`Edit ${e.value?.label||e.value?.name||"Project"} — Piwi Dashboard`})));const I=f(()=>y.value?.tags||[]),U=f(()=>!!e.value?.hasScmToken),s=g({label:e.value?.label||"",description:e.value?.description||"",diagnosisInstructions:e.value?.diagnosisInstructions||"",scmToken:""}),p=g(e.value?.tags||[]),P=Z({label:u().optional(),description:u().optional(),diagnosisInstructions:u().optional(),scmToken:u().optional()}),_=g(!1);async function C(){try{_.value=!0,await $fetch(`/api/projects/${c}`,{method:"PUT",body:{label:s.value.label||null,description:s.value.description||null,diagnosisInstructions:s.value.diagnosisInstructions||null,scmToken:s.value.scmToken||null,tagIds:p.value.map(m=>m.id)}}),j.add({title:"Project updated",description:"Project settings have been saved successfully",color:"success"}),await v.push(`/projects/${c}`)}catch(m){console.error("Error updating project:",m),j.add({title:"Error",description:"Failed to update project",color:"error"})}finally{_.value=!1}}function w(){v.push(`/projects/${c}`)}return(m,t)=>{const B=R,D=V,N=q,E=z,k=X,F=tt,H=ot,S=O;return Q(),M(S,{id:"project-edit"},{header:i(()=>[r(N,null,{leading:i(()=>[r(B),r(D,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},{label:o(e)?.label||o(e)?.name||"Project",to:`/projects/${o(c)}`},{label:"Edit"}]},null,8,["items"])]),_:1})]),body:i(()=>[l("div",st,[r(H,null,{header:i(()=>[t[7]||(t[7]=l("h2",null,"Edit project settings",-1)),l("p",et,[t[6]||(t[6]=b(" Project Name: ",-1)),l("span",at,Y(o(e)?.name),1)]),t[8]||(t[8]=l("p",{class:"text-xs text-gray-500 mt-1"}," Note: The project name is used to match test results from the reporter and cannot be changed. ",-1))]),default:i(()=>[r(F,{schema:o(P),state:o(s),class:"space-y-5",onSubmit:C},{default:i(()=>[r(E,{mode:"edit","has-token":o(U),label:o(s).label,"onUpdate:label":t[0]||(t[0]=a=>o(s).label=a),description:o(s).description,"onUpdate:description":t[1]||(t[1]=a=>o(s).description=a),diagnosisInstructions:o(s).diagnosisInstructions,"onUpdate:diagnosisInstructions":t[2]||(t[2]=a=>o(s).diagnosisInstructions=a),scmToken:o(s).scmToken,"onUpdate:scmToken":t[3]||(t[3]=a=>o(s).scmToken=a),tags:o(p),"onUpdate:tags":t[4]||(t[4]=a=>W(p)?p.value=a:null),"all-tags":o(I),onTagCreated:t[5]||(t[5]=a=>o(x)())},null,8,["has-token","label","description","diagnosisInstructions","scmToken","tags","all-tags"]),l("div",nt,[r(k,{variant:"ghost",color:"neutral",onClick:w},{default:i(()=>[...t[9]||(t[9]=[b(" Cancel ",-1)])]),_:1}),r(k,{type:"submit",icon:"i-lucide-check",loading:o(_)},{default:i(()=>[...t[10]||(t[10]=[b(" Save changes ",-1)])]),_:1},8,["loading"])])]),_:1},8,["schema","state"])]),_:1})])]),_:1})}}});export{Ct as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as l}from"./
|
|
1
|
+
import{_ as l}from"./DhA17dqR.js";import{d as a,o as i,f as c,aa as r,g as n,T as s}from"./BPKwYP2Q.js";const u=a({__name:"ChartCard",props:{title:{},subtitle:{},icon:{},iconClass:{},help:{}},setup(e){return(t,m)=>{const o=l;return i(),c(o,{title:e.title,subtitle:e.subtitle,icon:e.icon,"icon-class":e.iconClass,help:e.help},r({default:n(()=>[s(t.$slots,"default")]),_:2},[t.$slots.subtitle?{name:"subtitle",fn:n(()=>[s(t.$slots,"subtitle")]),key:"0"}:void 0,t.$slots.legend||t.$slots.actions?{name:"actions",fn:n(()=>[s(t.$slots,"legend"),s(t.$slots,"actions")]),key:"1"}:void 0]),1032,["title","subtitle","icon","icon-class","help"])}}}),C=Object.assign(u,{__name:"ChartCard"});export{C as _};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a0 as K,a1 as Q,X as W,a3 as Z,aM as ee,aX as ie,aO as ae,B as se,C as le,G as w,o as n,f as d,g as te,i as ne,U as B,k as i,T as b,c as k,p as r,v as A,aG as re,q as g,V as oe,h as ue,aY as de,a6 as ge}from"./
|
|
1
|
+
import{a0 as K,a1 as Q,X as W,a3 as Z,aM as ee,aX as ie,aO as ae,B as se,C as le,G as w,o as n,f as d,g as te,i as ne,U as B,k as i,T as b,c as k,p as r,v as A,aG as re,q as g,V as oe,h as ue,aY as de,a6 as ge}from"./BPKwYP2Q.js";const ce={slots:{root:"relative inline-flex items-center",base:["w-full rounded-md border-0 appearance-none placeholder:text-dimmed disabled:cursor-not-allowed disabled:opacity-75","transition-colors"],leading:"absolute start-0 flex items-start",leadingIcon:"shrink-0 text-dimmed",leadingAvatar:"shrink-0",leadingAvatarSize:"",trailing:"absolute end-0 flex items-start",trailingIcon:"shrink-0 text-dimmed"},variants:{fieldGroup:{horizontal:{root:"group has-focus-visible:z-[1]",base:"group-not-only:group-first:rounded-e-none group-not-only:group-last:rounded-s-none group-not-last:group-not-first:rounded-none"},vertical:{root:"group has-focus-visible:z-[1]",base:"group-not-only:group-first:rounded-b-none group-not-only:group-last:rounded-t-none group-not-last:group-not-first:rounded-none"}},size:{xs:{base:"px-2 py-1 text-sm/4 gap-1",leading:"ps-2 inset-y-1",trailing:"pe-2 inset-y-1",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4"},sm:{base:"px-2.5 py-1.5 text-sm/4 gap-1.5",leading:"ps-2.5 inset-y-1.5",trailing:"pe-2.5 inset-y-1.5",leadingIcon:"size-4",leadingAvatarSize:"3xs",trailingIcon:"size-4"},md:{base:"px-2.5 py-1.5 text-base/5 gap-1.5",leading:"ps-2.5 inset-y-1.5",trailing:"pe-2.5 inset-y-1.5",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5"},lg:{base:"px-3 py-2 text-base/5 gap-2",leading:"ps-3 inset-y-2",trailing:"pe-3 inset-y-2",leadingIcon:"size-5",leadingAvatarSize:"2xs",trailingIcon:"size-5"},xl:{base:"px-3 py-2 text-base gap-2",leading:"ps-3 inset-y-2",trailing:"pe-3 inset-y-2",leadingIcon:"size-6",leadingAvatarSize:"xs",trailingIcon:"size-6"}},variant:{outline:"text-highlighted bg-default ring ring-inset ring-accented",soft:"text-highlighted bg-elevated/50 hover:bg-elevated focus:bg-elevated disabled:bg-elevated/50",subtle:"text-highlighted bg-elevated ring ring-inset ring-accented",ghost:"text-highlighted bg-transparent hover:bg-elevated focus:bg-elevated disabled:bg-transparent dark:disabled:bg-transparent",none:"text-highlighted bg-transparent focus:outline-none"},color:{primary:"",secondary:"",success:"",info:"",warning:"",error:"",neutral:""},leading:{true:""},trailing:{true:""},loading:{true:""},highlight:{true:""},fixed:{false:""},type:{file:"file:me-1.5 file:font-medium file:text-muted file:outline-none"},autoresize:{true:{base:"resize-none"}}},compoundVariants:[{color:"primary",variant:["outline","subtle"],class:"outline-primary/25 focus-visible:outline-3 focus-visible:ring-primary"},{color:"secondary",variant:["outline","subtle"],class:"outline-secondary/25 focus-visible:outline-3 focus-visible:ring-secondary"},{color:"success",variant:["outline","subtle"],class:"outline-success/25 focus-visible:outline-3 focus-visible:ring-success"},{color:"info",variant:["outline","subtle"],class:"outline-info/25 focus-visible:outline-3 focus-visible:ring-info"},{color:"warning",variant:["outline","subtle"],class:"outline-warning/25 focus-visible:outline-3 focus-visible:ring-warning"},{color:"error",variant:["outline","subtle"],class:"outline-error/25 focus-visible:outline-3 focus-visible:ring-error"},{color:"primary",variant:["soft","ghost"],class:"outline-primary/25 focus-visible:outline-3"},{color:"secondary",variant:["soft","ghost"],class:"outline-secondary/25 focus-visible:outline-3"},{color:"success",variant:["soft","ghost"],class:"outline-success/25 focus-visible:outline-3"},{color:"info",variant:["soft","ghost"],class:"outline-info/25 focus-visible:outline-3"},{color:"warning",variant:["soft","ghost"],class:"outline-warning/25 focus-visible:outline-3"},{color:"error",variant:["soft","ghost"],class:"outline-error/25 focus-visible:outline-3"},{color:"primary",highlight:!0,class:"ring ring-inset ring-primary"},{color:"secondary",highlight:!0,class:"ring ring-inset ring-secondary"},{color:"success",highlight:!0,class:"ring ring-inset ring-success"},{color:"info",highlight:!0,class:"ring ring-inset ring-info"},{color:"warning",highlight:!0,class:"ring ring-inset ring-warning"},{color:"error",highlight:!0,class:"ring ring-inset ring-error"},{color:"neutral",variant:["outline","subtle"],class:"outline-inverted/25 focus-visible:outline-3 focus-visible:ring-inverted"},{color:"neutral",variant:["soft","ghost"],class:"outline-inverted/25 focus-visible:outline-3"},{color:"neutral",highlight:!0,class:"ring ring-inset ring-inverted"},{leading:!0,size:"xs",class:"ps-7"},{leading:!0,size:"sm",class:"ps-8"},{leading:!0,size:"md",class:"ps-9"},{leading:!0,size:"lg",class:"ps-10"},{leading:!0,size:"xl",class:"ps-11"},{trailing:!0,size:"xs",class:"pe-7"},{trailing:!0,size:"sm",class:"pe-8"},{trailing:!0,size:"md",class:"pe-9"},{trailing:!0,size:"lg",class:"pe-10"},{trailing:!0,size:"xl",class:"pe-11"},{loading:!0,leading:!0,class:{leadingIcon:"animate-spin"}},{loading:!0,leading:!1,trailing:!0,class:{trailingIcon:"animate-spin"}},{fixed:!1,size:"xs",class:"md:text-xs"},{fixed:!1,size:"sm",class:"md:text-xs"},{fixed:!1,size:"md",class:"md:text-sm"},{fixed:!1,size:"lg",class:"md:text-sm"}],defaultVariants:{size:"md",color:"primary",variant:"outline"}},fe=["id","value","name","rows","placeholder","disabled","required"],me=Object.assign({inheritAttrs:!1},{__name:"UTextarea",props:{as:{type:null,required:!1},id:{type:String,required:!1},name:{type:String,required:!1},placeholder:{type:String,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},required:{type:Boolean,required:!1},autofocus:{type:Boolean,required:!1},autofocusDelay:{type:Number,required:!1,default:0},autoresize:{type:Boolean,required:!1},autoresizeDelay:{type:Number,required:!1,default:0},disabled:{type:Boolean,required:!1},rows:{type:Number,required:!1,default:3},maxrows:{type:Number,required:!1,default:0},highlight:{type:Boolean,required:!1},fixed:{type:Boolean,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1},modelModifiers:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},leading:{type:Boolean,required:!1},leadingIcon:{type:null,required:!1},trailing:{type:Boolean,required:!1},trailingIcon:{type:null,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1}},emits:["update:modelValue","blur","change"],setup(S,{expose:V,emit:M}){const h=S,c=M,o=K(),e=Q("textarea",h),f=W(e,"modelValue",c,{defaultValue:e.defaultValue}),C=Z(),{emitFormFocus:y,emitFormBlur:N,emitFormInput:T,emitFormChange:F,size:_,color:$,id:R,name:D,highlight:O,disabled:j,ariaAttrs:G}=ee(h,{deferInputValidation:!0}),{isLeading:p,isTrailing:x,leadingIconName:z,trailingIconName:q}=ie(e),s=ue(()=>ge({extend:ce,...C.ui?.textarea||{}})({color:$.value??e.color,variant:e.variant,size:_?.value??e.size,loading:e.loading,highlight:O.value??e.highlight,fixed:e.fixed,autoresize:e.autoresize,leading:p.value||!!e.avatar||!!o.leading,trailing:x.value||!!o.trailing})),l=ae("textareaRef");function I(a){e.modelModifiers?.trim&&(typeof a=="string"||a===null||a===void 0)&&(a=a?.trim()??null),e.modelModifiers?.number&&(a=de(a)),e.modelModifiers?.nullable&&(a||=null),e.modelModifiers?.optional&&!e.modelModifiers?.nullable&&a!==null&&(a||=void 0),f.value=a,T()}function H(a){u(),e.modelModifiers?.lazy||I(a.target.value)}function P(a){const t=a.target.value;e.modelModifiers?.lazy&&I(t),e.modelModifiers?.trim&&(a.target.value=t.trim()),F(),c("change",a)}function U(a){N(),c("blur",a)}function X(){e.autofocus&&l.value?.focus()}function u(){if(e.autoresize&&l.value){l.value.rows=e.rows;const a=l.value.style.overflow;l.value.style.overflow="hidden";const t=window.getComputedStyle(l.value),m=Number.parseInt(t.paddingTop),E=Number.parseInt(t.paddingBottom),L=m+E,Y=Number.parseInt(t.lineHeight),{scrollHeight:J}=l.value,v=(J-L)/Y;v>e.rows&&(l.value.rows=e.maxrows?Math.min(v,e.maxrows):v),l.value.style.overflow=a}}return se(f,()=>{w(u)}),le(()=>{setTimeout(()=>{X()},e.autofocusDelay),setTimeout(async()=>{await w(),u()},e.autoresizeDelay)}),V({textareaRef:l,autoResize:u}),(a,t)=>(n(),d(i(oe),{as:i(e).as,"data-slot":a.$attrs["data-slot"]??"root",class:r(s.value.root({class:[i(e).ui?.root,i(e).class]}))},{default:te(()=>[ne("textarea",B({id:i(R),ref_key:"textareaRef",ref:l,value:i(f),name:i(D),rows:i(e).rows,placeholder:i(e).placeholder,class:s.value.base({class:i(e).ui?.base}),disabled:i(j),required:i(e).required},{...a.$attrs,...i(G)},{"data-slot":"base",onInput:H,onBlur:U,onChange:P,onFocus:t[0]||(t[0]=(...m)=>i(y)&&i(y)(...m))}),null,16,fe),b(a.$slots,"default",{ui:s.value}),i(p)||i(e).avatar||o.leading?(n(),k("span",{key:0,"data-slot":"leading",class:r(s.value.leading({class:i(e).ui?.leading}))},[b(a.$slots,"leading",{ui:s.value},()=>[i(p)&&i(z)?(n(),d(A,{key:0,name:i(z),"data-slot":"leadingIcon",class:r(s.value.leadingIcon({class:i(e).ui?.leadingIcon}))},null,8,["name","class"])):i(e).avatar?(n(),d(re,B({key:1,size:i(e).ui?.leadingAvatarSize||s.value.leadingAvatarSize()},i(e).avatar,{"data-slot":"leadingAvatar",class:s.value.leadingAvatar({class:i(e).ui?.leadingAvatar})}),null,16,["size","class"])):g("",!0)])],2)):g("",!0),i(x)||o.trailing?(n(),k("span",{key:1,"data-slot":"trailing",class:r(s.value.trailing({class:i(e).ui?.trailing}))},[b(a.$slots,"trailing",{ui:s.value},()=>[i(q)?(n(),d(A,{key:0,name:i(q),"data-slot":"trailingIcon",class:r(s.value.trailingIcon({class:i(e).ui?.trailingIcon}))},null,8,["name","class"])):g("",!0)])],2)):g("",!0)]),_:3},8,["as","data-slot","class"]))}});export{me as _};
|
|
@@ -1 +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"./BPKwYP2Q.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as js}from"./Bvfmwzgw.js";import{_ as ws}from"./ze9-Ill2.js";import{b as Re,K as $t,d as ue,L as Nt,w as ye,B as ge,k as e,o as s,f as k,g as t,j as l,_ as Te,c as i,i as a,m as d,t as c,q as S,F as Q,y as ie,v as Le,x as Oe,l as G,M as Vt,N as Bt,p as re,h as B,r as w,E as Ds,O as Kt,n as Ct,s as Ae,P as Tt,D as Lt,I as Rs,u as As,a as Us,e as zs,H as Pt,Q as Ms,R as Fs}from"./BPKwYP2Q.js";import{_ as Is}from"./DgYM3eyi.js";import{_ as qe,a as Es}from"./CQeMb57w.js";import{_ as Ue}from"./C1K3r_fc.js";import{_ as Ot}from"./DdbrJwT-.js";import{u as Vs}from"./CSYJwpXG.js";import{u as he}from"./BIf1R_fu.js";import{_ as Bs}from"./BIksQZfR.js";import{_ as Ps,a as Ns}from"./IFqRT_xJ.js";import{_ as qt}from"./BVW5qIDP.js";import{_ as Ht}from"./CTdvGdc2.js";import{_ as Se}from"./xUrLy-Zn.js";import{C as kt,w as Xt,O as at,a as Gt,_ as Jt,u as Qt}from"./BV83yObd.js";import{N as Ks}from"./mfzslNx_.js";import{_ as Ls}from"./2xvsvjLO.js";import{_ as Os}from"./D33On6AX.js";import{_ as qs}from"./D2jhe9JK.js";import{_ as Hs}from"./BpceIssd.js";import{_ as Xs}from"./DcCNnjKl.js";import{_ as Gs}from"./Dzz9_Z0u.js";import{_ as Js}from"./BoRFLTAO.js";import{_ as ze}from"./BuZOa2M3.js";import{_ as He}from"./B7yG1G_l.js";import{_ as Yt}from"./DhA17dqR.js";import{_ as lt}from"./BBdfPriC.js";import{f as St,a as Qs,c as Ys,g as I,e as Wt,p as ot,h as Ce,i as tt}from"./k-z_VVTK.js";import{_ as jt}from"./BdFEUAlx.js";import{_ as wt}from"./CgoAUz76.js";import{_ as Ws}from"./C3r_Sv1p.js";import{_ as Zs}from"./DfcAIbcX.js";import{_ as en}from"./BGYbnqA7.js";import{_ as tn}from"./oNq5pd3r.js";import{_ as sn}from"./ABGJk0pu.js";import{_ as Dt}from"./nCjfWTGm.js";import{M as nn,D as bt,g as xt}from"./D7W_4Sqc.js";import{_ as an}from"./DszOHBMG.js";import{u as on}from"./uKeO2H7F.js";import{u as ln}from"./C8RBRg7I.js";import"./iwD5atI2.js";import"./r3SBLxtE.js";import"./DuMv-ugy.js";import"./jIF87ALb.js";import"./DRtTLQri.js";import"./C219JuBV.js";import"./mGJLLqyN.js";import"./d5ZB3uxF.js";import"./Bb64FEFL.js";import"./CpO-ABDW.js";import"./DbeHHTk-.js";import"./CKB_doYB.js";import"./Br2K9yi_.js";import"./DJS3Bf50.js";import"./DAWn6Z7h.js";import"./C38aZbFJ.js";const rn=["run.finished","run.failed","run.failed.default_branch","cluster.new","flakiness.spike","perf.regression","diagnosis.completed"],st=new Map,nt=new Map;function cn(A,T){const x=[{event:"run.failed",scenario:{title:`Test run failed — ${A}`,description:"3 of 12 tests failed on main — checkout › applies discount code +2 more",icon:"i-lucide-circle-x",color:"error"}},{event:"run.failed.default_branch",scenario:{title:`Test run failed on main — ${A}`,description:"2 of 12 tests failed · main — auth › logs in with valid credentials +1 more",icon:"i-lucide-circle-x",color:"error"}},{event:"cluster.new",scenario:{title:`New failure cluster — ${A}`,description:"TimeoutError: locator.click: Timeout 30000ms exceeded",icon:"i-lucide-layers",color:"warning"}},{event:"flakiness.spike",scenario:{title:`Flakiness spike — ${A}`,description:"3 tests became flaky (8.3% rate)",icon:"i-lucide-shuffle",color:"warning"}},{event:"perf.regression",scenario:{title:`Performance regression — ${A}`,description:"p90 duration increased by 42% vs last week",icon:"i-lucide-trending-down",color:"warning"}},{event:"run.finished",scenario:{title:`Test run recovered — ${A}`,description:"All 12 tests passed on main",icon:"i-lucide-circle-check",color:"success"}},{event:"diagnosis.completed",scenario:{title:`Diagnosis complete — ${A}`,description:"Root cause: test bug — confidence: high",icon:"i-lucide-sparkles",color:"info"}}],D=x.filter(b=>T.length===0||T.includes(b.event)).map(b=>b.scenario);return D.length===0?[x[0].scenario,x[x.length-1].scenario]:D}function un(){if(!$t().public.demoMode)return null;const T=Re();function x(b,f,u){D(b);const E=cn(f,u);nt.set(b,0);function U(){const R=(nt.get(b)??0)%E.length;nt.set(b,R+1);const C=E[R];T.add({title:C.title,description:C.description,icon:C.icon,color:C.color,duration:7e3});const _=25e3+Math.random()*1e4;st.set(b,setTimeout(U,_))}st.set(b,setTimeout(U,8e3))}function D(b){const f=st.get(b);f!==void 0&&(clearTimeout(f),st.delete(b)),nt.delete(b)}return{scheduleFor:x,cancelFor:D}}const dn={key:0,class:"p-3 space-y-3"},mn={key:0,class:"text-xs text-gray-500"},pn={key:1,class:"text-xs text-gray-500"},gn={key:2,class:"text-xs text-gray-500"},fn={class:"space-y-1"},vn=["checked","onChange"],_n={key:1,class:"p-3 space-y-3"},yn={class:"flex items-center justify-between"},hn={class:"font-medium text-sm inline-flex items-center gap-1"},bn={key:0,class:"text-xs text-muted bg-primary/5 rounded px-2 py-1.5"},xn={key:1,class:"text-xs text-muted text-center py-2"},kn={key:2,class:"space-y-1.5"},$n={key:0,class:"space-y-2 rounded border border-primary/30 bg-primary/5 px-2 py-2"},Cn={class:"space-y-1"},Tn=["value"],Sn={class:"flex gap-1.5 justify-end"},jn={class:"flex-1 font-medium truncate"},wn={key:3,class:"text-xs text-muted text-center py-1"},Dn={key:4,class:"space-y-2 border-t border-default pt-2"},Rn={class:"space-y-1"},An=["value"],Un={class:"flex gap-1.5 justify-end"},zn=ue({__name:"SubscribeBell",props:{projectId:{},projectLabel:{}},async setup(A){let T,x;const D=A,b=$t(),f=b.public.demoMode,u=B(()=>b.public.authEnabled),{authState:E}=Nt(),U=B(()=>E.value.authenticated),R=Re(),C=w(!1),_=f?un():null,y=!u.value&&!f?Vs():null,z=w("default"),h=B(()=>"Notification"in window);"Notification"in window&&(z.value=Notification.permission);const v=B(()=>y?.getProject(D.projectId).events??[]),M=B(()=>y?.isSubscribed(D.projectId)??!1);async function K(){!h.value||z.value!=="default"||(z.value=await Notification.requestPermission())}function $(V){return v.value.includes(V)}function g(V){y?.toggleEvent(D.projectId,V)}const m=f||u.value&&U.value,q=f?{server:!1}:{},{data:Z,refresh:O}=([T,x]=ye(()=>he(`/api/subscriptions?projectId=${D.projectId}`,{immediate:m,...q},"$5zp4moJ-7_")),T=await T,x(),T),P=B(()=>Z.value?.subscriptions??[]),be=B(()=>P.value.length>0),{data:xe}=([T,x]=ye(()=>he("/api/channels",{immediate:m,...q},"$vFApQ6eA2X")),T=await T,x(),T),p=B(()=>xe.value?.channels??[]),L=w(!1),oe=w(void 0),de=w(["run.failed"]),ke=w(!1),fe=w(null),ce=w(void 0),ve=w([]),Y=w(!1);function rt(V){fe.value=V,ce.value=V.channel.id,ve.value=[...V.events]}function it(){fe.value=null}async function Me(){if(!(!fe.value||!ce.value||ve.value.length===0)){Y.value=!0;try{await $fetch(`/api/subscriptions/${fe.value.id}`,{method:"PATCH",body:{channelId:ce.value,events:ve.value}}),await O(),fe.value=null}catch(V){R.add({title:"Update failed",description:String(V?.message??V),color:"error"})}finally{Y.value=!1}}}const Xe=B(()=>p.value.map(V=>({label:V.type==="personal_email"?`${V.name} (${V.config.address})`:V.name,value:V.id}))),W=rn.map(V=>({label:V.replace(/\./g," › "),value:V}));ge(C,V=>{V?(m&&O(),p.value.length>0&&!oe.value&&(oe.value=p.value[0].id)):(L.value=!1,fe.value=null)});async function _e(){if(!(!oe.value||de.value.length===0)){ke.value=!0;try{await $fetch("/api/subscriptions",{method:"POST",body:{channelId:oe.value,projectId:D.projectId,events:de.value,mode:"realtime"}}),await O(),L.value=!1,R.add({title:"Subscribed",color:"success"}),f&&_?.scheduleFor(D.projectId,D.projectLabel||"this project",de.value)}catch(V){R.add({title:"Subscribe failed",description:String(V?.message??V),color:"error"})}finally{ke.value=!1}}}async function Fe(V){try{await $fetch(`/api/subscriptions/${V}`,{method:"DELETE"}),await O(),R.add({title:"Unsubscribed",color:"success"}),f&&P.value.length===0&&_?.cancelFor(D.projectId)}catch(j){R.add({title:"Failed",description:String(j?.message??j),color:"error"})}}async function ct(V){const j=V.mutedUntil&&new Date(V.mutedUntil)>new Date;try{await $fetch(`/api/subscriptions/${V.id}`,{method:"PATCH",body:{mutedUntil:j?null:new Date(Date.now()+10080*60*1e3).toISOString()}}),await O()}catch(ee){R.add({title:"Failed",description:String(ee?.message??ee),color:"error"})}}function Ie(V){return V.mutedUntil&&new Date(V.mutedUntil)>new Date}function Ee(V){return V==="personal_email"?"i-lucide-user-round":V==="email"?"i-lucide-mail":V==="slack"?"i-lucide-slack":"i-lucide-webhook"}const ut=B(()=>f||u.value&&U.value||y!=null),Ve=B(()=>f||u.value?be.value:M.value);return(V,j)=>{const ee=Te,Ge=Is,Be=qe,Pe=Le,dt=Oe,Je=Ue,je=Ot,Ne=Ds;return e(ut)?(s(),k(Ne,{key:0,open:e(C),"onUpdate:open":j[6]||(j[6]=N=>G(C)?C.value=N:null),ui:{content:"w-72"}},{content:t(()=>[e(y)?(s(),i("div",dn,[j[9]||(j[9]=a("div",{class:"flex items-center justify-between"},[a("span",{class:"font-medium text-sm"},"Browser notifications")],-1)),e(h)&&e(z)==="default"?(s(),i("p",mn,[l(ee,{variant:"link",size:"xs",class:"p-0",onClick:K},{default:t(()=>[...j[7]||(j[7]=[d(" Allow notifications ",-1)])]),_:1}),j[8]||(j[8]=d(" "+c(" ")+"in your browser to get alerts for this project. ",-1))])):e(h)&&e(z)==="denied"?(s(),i("p",pn," Notifications are blocked. Check your browser settings to allow them. ")):e(h)?S("",!0):(s(),i("p",gn,"Notifications are not supported in this browser.")),e(h)&&e(z)==="granted"?(s(),i(Q,{key:3},[l(Ge),a("div",fn,[(s(!0),i(Q,null,ie(e(W),N=>(s(),i("label",{key:N.value,class:"flex items-center gap-1.5 text-xs cursor-pointer"},[a("input",{type:"checkbox",checked:$(N.value),class:"accent-primary size-3",onChange:X=>g(N.value)},null,40,vn),d(" "+c(N.label),1)]))),128))])],64)):S("",!0)])):(s(),i("div",_n,[a("div",yn,[a("span",hn,[j[10]||(j[10]=d(" Notifications ",-1)),l(Be,{topic:"notifications.subscribe"})]),e(L)?S("",!0):(s(),k(ee,{key:0,size:"xs",icon:"i-lucide-plus",variant:"ghost",color:"neutral",disabled:e(p).length===0,onClick:j[0]||(j[0]=N=>L.value=!0)},{default:t(()=>[...j[11]||(j[11]=[d(" Add ",-1)])]),_:1},8,["disabled"]))]),e(f)?(s(),i("div",bn,[l(Pe,{name:"i-lucide-sparkles",class:"size-3 inline-block mr-1 text-primary"}),j[12]||(j[12]=d(" Demo — notifications will appear as toasts in ~8 s. ",-1))])):e(p).length===0?(s(),i("div",xn,[j[14]||(j[14]=d(" No channels configured.",-1)),j[15]||(j[15]=a("br",null,null,-1)),l(dt,{to:"/settings/notifications",class:"text-primary underline"},{default:t(()=>[...j[13]||(j[13]=[d("Add one in Settings",-1)])]),_:1})])):S("",!0),e(P).length>0?(s(),i("div",kn,[(s(!0),i(Q,null,ie(e(P),N=>(s(),i(Q,{key:N.id},[e(fe)?.id===N.id?(s(),i("div",$n,[l(je,{label:"Channel",size:"xs"},{default:t(()=>[l(Je,{modelValue:e(ce),"onUpdate:modelValue":j[1]||(j[1]=X=>G(ce)?ce.value=X:null),items:e(Xe),"value-key":"value",class:"w-full text-xs",size:"xs"},null,8,["modelValue","items"])]),_:1}),l(je,{label:"Events",size:"xs"},{default:t(()=>[a("div",Cn,[(s(!0),i(Q,null,ie(e(W),X=>(s(),i("label",{key:X.value,class:"flex items-center gap-1.5 text-xs cursor-pointer"},[Vt(a("input",{type:"checkbox",value:X.value,"onUpdate:modelValue":j[2]||(j[2]=mt=>G(ve)?ve.value=mt:null),class:"accent-primary size-3"},null,8,Tn),[[Bt,e(ve)]]),d(" "+c(X.label),1)]))),128))])]),_:1}),a("div",Sn,[l(ee,{size:"xs",color:"neutral",variant:"ghost",onClick:it},{default:t(()=>[...j[16]||(j[16]=[d("Cancel",-1)])]),_:1}),l(ee,{size:"xs",color:"primary",loading:e(Y),disabled:!e(ce)||e(ve).length===0,onClick:Me},{default:t(()=>[...j[17]||(j[17]=[d(" Save ",-1)])]),_:1},8,["loading","disabled"])])])):(s(),i("div",{key:1,class:re(["flex items-center gap-2 rounded px-2 py-1.5 text-xs",Ie(N)?"opacity-60":""])},[l(Pe,{name:Ee(N.channel.type),class:"size-3.5 text-muted shrink-0"},null,8,["name"]),a("span",jn,c(N.channel.name),1),l(ee,{icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"xs",title:"Edit subscription",onClick:X=>rt(N)},null,8,["onClick"]),l(ee,{icon:Ie(N)?"i-lucide-bell":"i-lucide-bell-off",color:"neutral",variant:"ghost",size:"xs",title:Ie(N)?"Unmute":"Mute 7 days",onClick:X=>ct(N)},null,8,["icon","title","onClick"]),l(ee,{icon:"i-lucide-x",color:"error",variant:"ghost",size:"xs",title:"Unsubscribe",onClick:X=>Fe(N.id)},null,8,["onClick"])],2))],64))),128))])):!e(L)&&e(p).length>0?(s(),i("div",wn," Not subscribed to this project. ")):S("",!0),e(L)?(s(),i("div",Dn,[l(je,{label:"Channel",size:"xs"},{default:t(()=>[l(Je,{modelValue:e(oe),"onUpdate:modelValue":j[3]||(j[3]=N=>G(oe)?oe.value=N:null),items:e(Xe),"value-key":"value",class:"w-full text-xs",size:"xs"},null,8,["modelValue","items"])]),_:1}),l(je,{label:"Events",size:"xs"},{default:t(()=>[a("div",Rn,[(s(!0),i(Q,null,ie(e(W),N=>(s(),i("label",{key:N.value,class:"flex items-center gap-1.5 text-xs cursor-pointer"},[Vt(a("input",{type:"checkbox",value:N.value,"onUpdate:modelValue":j[4]||(j[4]=X=>G(de)?de.value=X:null),class:"accent-primary size-3"},null,8,An),[[Bt,e(de)]]),d(" "+c(N.label),1)]))),128))])]),_:1}),a("div",Un,[l(ee,{size:"xs",color:"neutral",variant:"ghost",onClick:j[5]||(j[5]=N=>L.value=!1)},{default:t(()=>[...j[18]||(j[18]=[d("Cancel",-1)])]),_:1}),l(ee,{size:"xs",color:"primary",loading:e(ke),disabled:!e(oe)||e(de).length===0,onClick:_e},{default:t(()=>[...j[19]||(j[19]=[d(" Subscribe ",-1)])]),_:1},8,["loading","disabled"])])])):S("",!0)]))]),default:t(()=>[l(ee,{icon:e(Ve)?"i-lucide-bell-ring":"i-lucide-bell",size:"sm",color:e(Ve)?"primary":"neutral",variant:e(Ve)?"soft":"outline",title:"Notification subscriptions for this project"},null,8,["icon","color","variant"])]),_:1},8,["open"])):S("",!0)}}}),Mn=Object.assign(zn,{__name:"SubscribeBell"}),Fn={class:"w-full relative"},In={key:0},En={class:"p-2 text-sm text-gray-900 dark:text-gray-100"},Vn={class:"font-semibold mb-1"},Bn={class:"capitalize mb-1"},Pn={class:"space-y-0.5"},Nn={class:"font-medium mt-1"},Kn=ue({__name:"TestRunsChart",props:{testRuns:{},height:{default:300},markers:{default:()=>[]}},emits:["marker-click"],setup(A,{emit:T}){const x=A,D=T,b=B(()=>x.markers),f=B(()=>!x.testRuns||x.testRuns.length===0?[]:[...x.testRuns].sort((m,q)=>new Date(m.startTime).getTime()-new Date(q.startTime).getTime()).slice(-30).map(m=>({id:m.id,date:new Date(m.startTime),passed:m.passedTests||0,failed:m.failedTests||0,skipped:m.skippedTests||0,flaky:m.flakyTests||0,total:m.totalTests||0,status:m.status}))),u=g=>g.date,E=g=>g.passed,U=g=>g.failed,R=g=>g.skipped,C=g=>g.flaky,_=["rgb(34, 197, 94)","rgb(239, 68, 68)","rgb(245, 158, 11)","rgb(147, 51, 234)"],y=w(null),{tooltipData:z,tooltipPos:h,markerTooltip:v,markerTooltipPos:M,onRenderComplete:K}=Qt(y,f,{x:g=>g.date,series:[{y:g=>g.passed,color:_[0]},{y:g=>g.failed,color:_[1]},{y:g=>g.skipped,color:_[2]},{y:g=>g.flaky,color:_[3]}],onClick:g=>Ct(`/test-runs/${g.id}`),markers:b,onMarkerClick:g=>D("marker-click",g.id)}),$=[{color:_[0],label:"Passed"},{color:_[1],label:"Failed"},{color:_[2],label:"Skipped"},{color:_[3],label:"Flaky"}];return(g,m)=>{const q=Ht,Z=Se,O=Jt;return s(),i("div",Fn,[e(f).length>0?(s(),i("div",In,[l(e(Gt),{ref_key:"xyContainerRef",ref:y,data:e(f),height:A.height,padding:{top:10,right:10,bottom:0,left:0},"on-render-complete":e(K)},{default:t(()=>[l(e(Ks),{x:u,y:[E,U,R,C],color:_,"curve-type":e(kt).MonotoneX},null,8,["y","curve-type"]),l(e(Xt),{x:u,y:[E,U,R,C],color:_,"curve-type":e(kt).MonotoneX,"line-width":2},null,8,["y","curve-type"]),l(e(at),{type:"x","tick-format":P=>new Date(P).toLocaleDateString("en-US",{month:"short",day:"numeric"})},null,8,["tick-format"]),l(e(at),{type:"y",label:"Tests","tick-format":P=>P.toString()},null,8,["tick-format"])]),_:1},8,["data","height","on-render-complete"]),e(z)?(s(),i("div",{key:0,class:"fixed z-50 pointer-events-none bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 max-w-[260px]",style:Kt({left:`${e(h).x}px`,top:`${e(h).y}px`})},[a("div",En,[a("div",Vn,c(new Date(e(z).date).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})),1),a("div",Bn,"Status: "+c(e(z).status),1),a("div",Pn,[a("div",null,[m[0]||(m[0]=a("span",{class:"text-green-500 dark:text-green-400"},"●",-1)),d(" Passed: "+c(e(z).passed),1)]),a("div",null,[m[1]||(m[1]=a("span",{class:"text-red-500 dark:text-red-400"},"●",-1)),d(" Failed: "+c(e(z).failed),1)]),a("div",null,[m[2]||(m[2]=a("span",{class:"text-orange-500 dark:text-orange-400"},"●",-1)),d(" Skipped: "+c(e(z).skipped),1)]),a("div",null,[m[3]||(m[3]=a("span",{class:"text-purple-500 dark:text-purple-400"},"●",-1)),d(" Flaky: "+c(e(z).flaky),1)]),a("div",Nn,"Total: "+c(e(z).total),1)]),m[4]||(m[4]=a("div",{class:"text-gray-400 dark:text-gray-500 text-xs mt-1"},"Click to view run details",-1))])],4)):S("",!0),l(q,{marker:e(v),pos:e(M)},null,8,["marker","pos"])])):(s(),k(Z,{key:1,text:"No test run data available to display chart"})),l(O,{items:$})])}}}),Ln=Object.assign(Kn,{__name:"TestRunsChart"}),On={class:"space-y-3"},qn={class:"min-w-0 space-y-1"},Hn={class:"flex items-center gap-2 flex-wrap text-sm"},Xn={key:0,class:"text-gray-500"},Gn=["title"],Jn=["title"],Qn={key:0,class:"text-xs text-gray-500 italic"},Yn={class:"flex items-center gap-2 shrink-0"},Wn=ue({__name:"ClusterMergeSuggestions",props:{projectId:{}},emits:["merged"],setup(A,{emit:T}){const x=A,D=T,b=Re(),f=w([]),u=w(null);async function E(){try{f.value=await $fetch(`/api/projects/${x.projectId}/cluster-merge-suggestions`)}catch{f.value=[]}}ge(()=>x.projectId,E,{immediate:!0});async function U(C,_){u.value=C;try{await $fetch(`/api/cluster-merge-suggestions/${C}/${_}`,{method:"POST"}),b.add({title:_==="approve"?"Clusters merged":"Suggestion dismissed",color:"success"}),await E(),_==="approve"&&D("merged")}catch(y){b.add({title:"Action failed",description:String(y?.message??y),color:"error"})}finally{u.value=null}}const R=C=>C==null?"":`${Math.round(C*100)}% similar`;return(C,_)=>{const y=Ae,z=Te,h=Yt;return e(f).length?(s(),k(h,{key:0,icon:"i-lucide-git-merge",title:"Suggested merges",count:e(f).length,class:"mb-4"},{subtitle:t(()=>[..._[0]||(_[0]=[d(" Likely-duplicate clusters found by semantic analysis. Approving merges them into the older cluster. ",-1)])]),default:t(()=>[a("div",On,[(s(!0),i(Q,null,ie(e(f),v=>(s(),i("div",{key:v.id,class:"rounded-lg border border-default p-3 flex items-start justify-between gap-4"},[a("div",qn,[a("div",Hn,[l(y,{color:v.method==="llm"?"primary":"neutral",variant:"subtle",size:"sm"},{default:t(()=>[d(c(v.method==="llm"?`AI · ${v.llmConfidence??""}`:"similarity"),1)]),_:2},1032,["color"]),R(v.score)?(s(),i("span",Xn,c(R(v.score)),1)):S("",!0)]),a("p",{class:"text-sm truncate",title:v.clusterA?.signature||""},[_[1]||(_[1]=a("span",{class:"text-gray-400"},"A:",-1)),d(" "+c(v.clusterA?.signature||`#${v.id}`),1)],8,Gn),a("p",{class:"text-sm truncate",title:v.clusterB?.signature||""},[_[2]||(_[2]=a("span",{class:"text-gray-400"},"B:",-1)),d(" "+c(v.clusterB?.signature||""),1)],8,Jn),v.llmReason?(s(),i("p",Qn,c(v.llmReason),1)):S("",!0)]),a("div",Yn,[l(z,{size:"sm",color:"primary",icon:"i-lucide-git-merge",loading:e(u)===v.id,onClick:M=>U(v.id,"approve")},{default:t(()=>[..._[3]||(_[3]=[d(" Merge ",-1)])]),_:1},8,["loading","onClick"]),l(z,{size:"sm",color:"neutral",variant:"ghost",icon:"i-lucide-x",disabled:e(u)===v.id,onClick:M=>U(v.id,"reject")},{default:t(()=>[..._[4]||(_[4]=[d(" Dismiss ",-1)])]),_:1},8,["disabled","onClick"])])]))),128))])]),_:1},8,["count"])):S("",!0)}}}),Zn=Object.assign(Wn,{__name:"ClusterMergeSuggestions"}),ea={class:"flex items-center justify-between"},ta={class:"text-sm text-gray-500 inline-flex items-center gap-1"},sa={class:"min-w-0 space-y-0.5"},na={key:0,class:"text-xs text-gray-500 italic truncate"},aa={key:1,class:"text-gray-400 text-xs"},oa={class:"text-sm tabular-nums"},la={class:"text-sm tabular-nums"},ra={key:1,class:"text-gray-400 text-xs"},ia={class:"text-sm text-gray-500 whitespace-nowrap"},ca={key:0,class:"ml-1 text-xs text-gray-400"},ua={class:"flex justify-end"},da=ue({__name:"FailureClustersList",props:{projectId:{}},async setup(A){let T,x;const D=A,b=w(void 0),{data:f,pending:u}=([T,x]=ye(()=>he(()=>{const U=new URLSearchParams;b.value&&U.set("status",b.value);const R=U.toString();return`/api/projects/${D.projectId}/failure-clusters${R?`?${R}`:""}`},{lazy:!0,server:!1,watch:[b]},"$f7pDU1t-lL")),T=await T,x(),T),E=[{accessorKey:"signature",header:I("Signature")},{accessorKey:"errorType",header:I("Type")},{accessorKey:"status",header:I("Status")},{accessorKey:"affectedTests",header:I("Tests")},{accessorKey:"occurrences",header:I("Occurrences")},{accessorKey:"diagnosis",header:"AI"},{accessorKey:"lastSeenAt",header:I("Last seen")},{id:"actions",header:"Actions"}];return(U,R)=>{const C=qe,_=Ue,y=Oe,z=Ae,h=Le,v=Te,M=ze,K=lt,$=Se,g=He;return s(),k(g,null,{header:t(()=>[a("div",ea,[a("p",ta,[R[1]||(R[1]=d(" Ongoing failure signatures grouped by normalized error. ",-1)),l(C,{topic:"cluster.concept"})]),l(_,{modelValue:e(b),"onUpdate:modelValue":R[0]||(R[0]=m=>G(b)?b.value=m:null),items:[{label:"All",value:void 0},{label:"Open",value:"open"},{label:"Resolved",value:"resolved"},{label:"Ignored",value:"ignored"}],size:"xs",class:"w-32"},null,8,["modelValue"])])]),default:t(()=>[l(K,{"min-width":"48rem",bleed:!1},{default:t(()=>[l(M,{data:e(f)??[],columns:E,loading:e(u)},{"actions-header":t(()=>[...R[2]||(R[2]=[a("div",{class:"text-right"},"Actions",-1)])]),"signature-cell":t(({row:m})=>[a("div",sa,[l(y,{to:`/failure-clusters/${m.original.id}`,class:re(["text-sm text-primary hover:underline truncate block",m.original.title?"":"font-mono"]),title:m.original.signature},{default:t(()=>[d(c(m.original.title||m.original.signature),1)]),_:2},1032,["to","class","title"]),m.original.triageNote?(s(),i("p",na,c(m.original.triageNote),1)):S("",!0)])]),"errorType-cell":t(({row:m})=>[m.original.errorType?(s(),k(z,{key:0,color:("clusterErrorTypeColor"in U?U.clusterErrorTypeColor:e(Ys))(m.original.errorType),variant:"subtle",size:"sm"},{default:t(()=>[d(c(m.original.errorType),1)]),_:2},1032,["color"])):(s(),i("span",aa,"—"))]),"status-cell":t(({row:m})=>[l(z,{color:("clusterStatusColor"in U?U.clusterStatusColor:e(Qs))(m.original.status),variant:"subtle",size:"sm"},{default:t(()=>[d(c(m.original.status),1)]),_:2},1032,["color"])]),"affectedTests-cell":t(({row:m})=>[a("span",oa,c(m.original.affectedTests),1)]),"occurrences-cell":t(({row:m})=>[a("span",la,c(m.original.occurrences),1)]),"diagnosis-cell":t(({row:m})=>[m.original.diagnosis?.status==="completed"&&m.original.diagnosis.category?(s(),k(z,{key:0,color:"neutral",variant:"subtle",size:"sm",class:"gap-1"},{default:t(()=>[l(h,{name:"i-lucide-sparkles",class:"size-3"}),d(" "+c(m.original.diagnosis.category),1)]),_:2},1024)):(s(),i("span",ra,"—"))]),"lastSeenAt-cell":t(({row:m})=>[a("div",ia,[l(y,{to:`/test-runs/${m.original.lastSeenRunId}`,class:"text-primary hover:underline"},{default:t(()=>[d(" run #"+c(m.original.lastSeenRunId),1)]),_:2},1032,["to"]),m.original.lastSeenAt?(s(),i("span",ca," ("+c(("formatRelativeTime"in U?U.formatRelativeTime:e(St))(m.original.lastSeenAt))+") ",1)):S("",!0)])]),"actions-cell":t(({row:m})=>[a("div",ua,[l(v,{to:`/failure-clusters/${m.original.id}`,size:"sm",variant:"outline","trailing-icon":"i-lucide-arrow-right"},{default:t(()=>[...R[3]||(R[3]=[d(" View ",-1)])]),_:1},8,["to"])])]),_:1},8,["data","loading"])]),_:1}),!e(u)&&e(f)&&e(f).length===0?(s(),k($,{key:0,text:"No failure clusters recorded for this project.",padded:!1,class:"py-4"})):S("",!0)]),_:1})}}}),ma=Object.assign(da,{__name:"FailureClustersList"}),pa={class:"flex items-center justify-between"},ga={class:"flex items-center gap-3"},fa={class:"text-sm text-gray-500 inline-flex items-center gap-1"},va={class:"flex items-center gap-1.5"},_a={class:"min-w-0 space-y-0.5"},ya={class:"flex items-center gap-2"},ha={class:"text-sm tabular-nums"},ba={class:"text-sm tabular-nums"},xa={key:1,class:"text-gray-400 text-xs"},ka={key:1,class:"text-gray-400 text-xs"},$a={key:1,class:"text-gray-400 text-xs"},Ca={key:0,class:"text-sm text-gray-500"},Ta={key:1,class:"text-gray-400 text-xs"},Sa={class:"flex justify-end"},ja={key:0,class:"text-sm text-gray-500 py-4 text-center"},wa=ue({__name:"FlakyTestsList",props:{projectId:{},environment:{},projectName:{}},async setup(A){let T,x;const D=A,b=w(50),f=w([]),{data:u,pending:E}=([T,x]=ye(()=>he(()=>{const h=new URLSearchParams({runs:String(b.value)});return D.environment&&h.set("environment",D.environment),`/api/projects/${D.projectId}/flaky-tests?${h.toString()}`},{lazy:!0,server:!1,watch:[b,()=>D.environment]},"$qKoEnbecbI")),T=await T,x(),T),U=B(()=>f.value.length===0?u.value??[]:(u.value??[]).filter(h=>f.value.includes(h.rootCause??"")));function R(h){return h>=60?"error":h>=30?"warning":"neutral"}function C(h){switch(h){case"timing":return"amber";case"network":return"red";case"assertion":return"blue";case"environment":return"purple";default:return"gray"}}function _(h){f.value.indexOf(h)>=0?f.value=f.value.filter(M=>M!==h):f.value=[...f.value,h]}const y=[{label:"Timing",value:"timing"},{label:"Network",value:"network"},{label:"Assertion",value:"assertion"},{label:"Environment",value:"environment"},{label:"Other",value:"other"}],z=[{accessorKey:"title",header:I("Test")},{accessorKey:"impact",header:I("Impact")},{accessorKey:"score",header:I("Score")},{accessorKey:"failureRate",header:I("Failure rate")},{accessorKey:"retryPassRuns",header:I("Retry passes")},{accessorKey:"alternations",header:I("Flips")},{accessorKey:"rootCause",header:"Root cause"},{accessorKey:"lastFlakeAt",header:I("Last flake")},{id:"actions",header:"Actions"}];return(h,v)=>{const M=qe,K=Le,$=Ae,g=Te,m=Ue,q=Oe,Z=jt,O=qt,P=ze,be=lt,xe=He;return s(),k(xe,null,{header:t(()=>[a("div",pa,[a("div",ga,[a("p",fa,[v[1]||(v[1]=d(" Tests that fail intermittently — detected by retry passes and status alternations ",-1)),l(M,{topic:"project.flaky-tests"})]),A.environment?(s(),k($,{key:0,color:"neutral",variant:"subtle",size:"sm",class:"gap-1"},{default:t(()=>[l(K,{name:"i-lucide-layers",class:"size-3"}),d(" "+c(A.environment),1)]),_:1})):S("",!0),a("div",va,[(s(),i(Q,null,ie(y,p=>l(g,{key:p.value,size:"xs",variant:e(f).includes(p.value)?"solid":"outline",color:(e(f).includes(p.value),"neutral"),onClick:L=>_(p.value)},{default:t(()=>[d(c(p.label),1)]),_:2},1032,["variant","color","onClick"])),64))])]),l(m,{modelValue:e(b),"onUpdate:modelValue":v[0]||(v[0]=p=>G(b)?b.value=p:null),items:[{label:"Last 20 runs",value:20},{label:"Last 50 runs",value:50},{label:"Last 100 runs",value:100}],size:"xs",class:"w-36"},null,8,["modelValue"])])]),default:t(()=>[l(be,{"min-width":"52rem",bleed:!1},{default:t(()=>[l(P,{data:e(U),columns:z,loading:e(E),sticky:"",class:"max-h-[32rem]"},{"actions-header":t(()=>[...v[2]||(v[2]=[a("div",{class:"text-right"},"Actions",-1)])]),"title-cell":t(({row:p})=>[a("div",_a,[l(q,{to:`/test-run-cases/${p.original.latestRunsCaseId}`,class:"text-sm font-medium text-primary hover:underline truncate block",title:p.original.title},{default:t(()=>[d(c(p.original.title),1)]),_:2},1032,["to","title"]),l(Z,{"file-path":p.original.filePath,"project-key":A.projectId,"project-name":A.projectName,class:"text-xs text-gray-400"},null,8,["file-path","project-key","project-name"])])]),"impact-cell":t(({row:p})=>[a("div",ya,[a("span",{class:re(["inline-block w-2 h-2 rounded-full shrink-0",{"bg-red-500":p.original.wastedCiMinutes>=30,"bg-amber-500":p.original.wastedCiMinutes>=5&&p.original.wastedCiMinutes<30,"bg-green-500":p.original.wastedCiMinutes>=0&&p.original.wastedCiMinutes<5}])},null,2),a("span",ha,c(Math.round(p.original.wastedCiMinutes))+" min wasted",1)])]),"score-cell":t(({row:p})=>[l($,{color:R(p.original.score),variant:"subtle",size:"sm"},{default:t(()=>[d(c(p.original.score),1)]),_:2},1032,["color"])]),"failureRate-cell":t(({row:p})=>[a("span",ba,c(Math.round(p.original.failureRate*100))+"%",1)]),"retryPassRuns-cell":t(({row:p})=>[p.original.retryPassRuns?(s(),k($,{key:0,color:"warning",variant:"outline",size:"sm"},{default:t(()=>[d(c(p.original.retryPassRuns)+" run"+c(p.original.retryPassRuns===1?"":"s"),1)]),_:2},1024)):(s(),i("span",xa,"—"))]),"alternations-cell":t(({row:p})=>[p.original.alternations>=2?(s(),k($,{key:0,color:"neutral",variant:"outline",size:"sm"},{default:t(()=>[d(c(p.original.alternations),1)]),_:2},1024)):(s(),i("span",ka,"—"))]),"rootCause-cell":t(({row:p})=>[p.original.rootCause?(s(),k(O,{key:0,text:p.original.rootCause,color:C(p.original.rootCause)},null,8,["text","color"])):(s(),i("span",$a,"—"))]),"lastFlakeAt-cell":t(({row:p})=>[p.original.lastFlakeAt?(s(),i("span",Ca,c(("formatRelativeTime"in h?h.formatRelativeTime:e(St))(p.original.lastFlakeAt)),1)):(s(),i("span",Ta,"—"))]),"actions-cell":t(({row:p})=>[a("div",Sa,[l(g,{to:`/test-run-cases/${p.original.latestRunsCaseId}`,size:"sm",variant:"outline","trailing-icon":"i-lucide-arrow-right"},{default:t(()=>[...v[3]||(v[3]=[d(" View ",-1)])]),_:1},8,["to"])])]),_:1},8,["data","loading"])]),_:1}),!e(E)&&e(U).length===0?(s(),i("p",ja," No flaky tests detected in the last "+c(e(b))+" runs. ",1)):S("",!0)]),_:1})}}}),Da=Object.assign(wa,{__name:"FlakyTestsList"}),Ra={class:"w-full relative"},Aa={key:0},Ua={class:"p-2 text-sm text-gray-900 dark:text-gray-100"},za={class:"font-semibold mb-1"},Ma={class:"capitalize mb-1"},Fa={class:"space-y-0.5"},Ia={class:"mt-1"},Ea={key:0,class:"text-gray-400 dark:text-gray-500 text-xs"},Va=ue({__name:"PerformanceTrendChart",props:{data:{},height:{default:300},markers:{default:()=>[]}},emits:["marker-click"],setup(A,{emit:T}){const x=A,D=T,b=B(()=>x.markers),f=B(()=>!x.data||x.data.length===0?[]:x.data.map($=>({id:$.id,date:new Date($.startTime),duration:$.duration?Math.round($.duration/1e3):null,avgTestDuration:$.avgTestDuration?Math.round($.avgTestDuration/1e3):null,p90TestDuration:$.p90TestDuration?Math.round($.p90TestDuration/1e3):null,commit:$.commit?$.commit.substring(0,7):null,status:$.status,totalTests:$.totalTests}))),u=$=>$.date,E=$=>$.duration??void 0,U=$=>$.avgTestDuration??void 0,R=$=>$.p90TestDuration??void 0,C=["rgb(59, 130, 246)","rgb(34, 197, 94)","rgb(249, 115, 22)"],_=w(null),{tooltipData:y,tooltipPos:z,markerTooltip:h,markerTooltipPos:v,onRenderComplete:M}=Qt(_,f,{x:$=>$.date,series:[{y:$=>$.duration,color:C[0]},{y:$=>$.avgTestDuration,color:C[1]},{y:$=>$.p90TestDuration,color:C[2]}],onClick:$=>Ct(`/test-runs/${$.id}`),markers:b,onMarkerClick:$=>D("marker-click",$.id)}),K=[{color:C[0],label:"Total Duration"},{color:C[1],label:"Avg Test Duration"},{color:C[2],label:"P90 Test Duration"}];return($,g)=>{const m=Ht,q=Se,Z=Jt;return s(),i("div",Ra,[e(f).length>0?(s(),i("div",Aa,[l(e(Gt),{ref_key:"xyContainerRef",ref:_,data:e(f),height:A.height,padding:{top:10,right:10,bottom:0,left:0},"on-render-complete":e(M)},{default:t(()=>[l(e(Xt),{x:u,y:[E,U,R],color:C,"curve-type":e(kt).MonotoneX,"line-width":2},null,8,["y","curve-type"]),l(e(at),{type:"x","tick-format":O=>new Date(O).toLocaleDateString("en-US",{month:"short",day:"numeric"}),label:"Date"},null,8,["tick-format"]),l(e(at),{type:"y",label:"Duration (s)","tick-format":O=>`${O}s`},null,8,["tick-format"])]),_:1},8,["data","height","on-render-complete"]),e(y)?(s(),i("div",{key:0,class:"fixed z-50 pointer-events-none bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 max-w-[260px]",style:Kt({left:`${e(z).x}px`,top:`${e(z).y}px`})},[a("div",Ua,[a("div",za,c(new Date(e(y).date).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})),1),a("div",Ma,"Status: "+c(e(y).status),1),a("div",Fa,[a("div",null,[g[0]||(g[0]=a("span",{class:"text-blue-500 dark:text-blue-400"},"●",-1)),d(" Total: "+c(e(y).duration??"-")+"s ",1)]),a("div",null,[g[1]||(g[1]=a("span",{class:"text-green-500 dark:text-green-400"},"●",-1)),d(" Avg: "+c(e(y).avgTestDuration??"-")+"s ",1)]),a("div",null,[g[2]||(g[2]=a("span",{class:"text-orange-500 dark:text-orange-400"},"●",-1)),d(" P90: "+c(e(y).p90TestDuration??"-")+"s ",1)]),a("div",Ia,"Tests: "+c(e(y).totalTests),1),e(y).commit?(s(),i("div",Ea," Commit: "+c(e(y).commit),1)):S("",!0)]),g[3]||(g[3]=a("div",{class:"text-gray-400 dark:text-gray-500 text-xs mt-1"},"Click to view run details",-1))])],4)):S("",!0),l(m,{marker:e(h),pos:e(v)},null,8,["marker","pos"])])):(s(),k(q,{key:1,text:"No performance data available to display chart"})),l(Z,{items:K})])}}}),Ba=Object.assign(Va,{__name:"PerformanceTrendChart"}),Pa={class:"min-w-0"},Na={class:"mt-1"},Ka={class:"tabular-nums"},La={key:0,class:"ml-1 text-xs text-gray-500",title:"timeout ÷ p95"},Oa={class:"tabular-nums text-gray-500"},qa={key:0,class:"text-sm"},Ha={key:1,class:"tabular-nums"},Xa={class:"tabular-nums font-medium text-green-600 dark:text-green-400"},Ga={class:"tabular-nums text-gray-500"},Ja=ue({__name:"TimeoutOpportunitiesTable",props:{projectId:{},projectName:{}},async setup(A){let T,x;const D=A,{data:b,pending:f}=([T,x]=ye(()=>he(()=>`/api/projects/${D.projectId}/timeout-opportunities`,{lazy:!0,server:!1},"$tMBJjTyDol")),T=await T,x(),T),u=B(()=>b.value??[]);function E(R){return R==null?"—":R<1e3?`${R}ms`:`${(R/1e3).toFixed(1)}s`}const U=[{accessorKey:"title",header:I("Test case")},{accessorKey:"kind",header:"Type"},{accessorKey:"timeout",header:I("Timeout")},{accessorKey:"p95",header:I("p95")},{accessorKey:"recommendedTimeout",header:"Recommendation"},{accessorKey:"estimatedSavingMs",header:I("Est. saving / failure")},{accessorKey:"runCount",header:I("Runs")}];return(R,C)=>{const _=wt,y=Se,z=Oe,h=jt,v=Ae,M=ze,K=lt,$=He;return s(),k($,null,{header:t(()=>[...C[0]||(C[0]=[a("h2",{class:"text-xl font-semibold"},"Timeout opportunities",-1),a("p",{class:"text-sm text-gray-600 mt-1"},[d(" Tests whose configured timeout far exceeds their real duration, or that still carry a stale "),a("code",{class:"text-xs"},"test.slow()"),d(" mark — tightening these makes failures surface sooner. ")],-1)])]),default:t(()=>[e(f)?(s(),k(_,{key:0})):e(u).length===0?(s(),k(y,{key:1,text:"No timeout opportunities",description:"No oversized timeouts or stale test.slow() marks were found for this project."})):(s(),k(K,{key:2,"min-width":"52rem",bleed:!1},{default:t(()=>[l(M,{data:e(u),columns:U,sticky:"",class:"max-h-[32rem]"},{"title-cell":t(({row:g})=>[a("div",Pa,[l(z,{to:`/test-cases/${g.original.testCaseId}`,class:"font-medium truncate block hover:text-primary hover:underline"},{default:t(()=>[d(c(g.original.title),1)]),_:2},1032,["to"]),a("div",Na,[l(h,{"file-path":g.original.filePath,"project-key":A.projectId,"project-name":A.projectName,class:"text-xs"},null,8,["file-path","project-key","project-name"])])])]),"kind-cell":t(({row:g})=>[l(v,{color:g.original.kind==="oversized-timeout"?"warning":"info",variant:"subtle",size:"sm"},{default:t(()=>[d(c(g.original.kind==="oversized-timeout"?"Oversized timeout":"Stale test.slow()"),1)]),_:2},1032,["color"])]),"timeout-cell":t(({row:g})=>[a("span",Ka,c(E(g.original.timeout)),1),g.original.headroomRatio!=null?(s(),i("span",La," ("+c(g.original.headroomRatio)+"×) ",1)):S("",!0)]),"p95-cell":t(({row:g})=>[a("span",Oa,c(E(g.original.p95)),1)]),"recommendedTimeout-cell":t(({row:g})=>[g.original.kind==="stale-slow"?(s(),i("span",qa,[...C[1]||(C[1]=[d("Remove ",-1),a("code",{class:"text-xs"},"test.slow()",-1)])])):(s(),i("span",Ha,"Lower to ~"+c(E(g.original.recommendedTimeout)),1))]),"estimatedSavingMs-cell":t(({row:g})=>[a("span",Xa,c(E(g.original.estimatedSavingMs)),1)]),"runCount-cell":t(({row:g})=>[a("span",Ga,c(g.original.runCount),1)]),_:1},8,["data"])]),_:1}))]),_:1})}}}),Qa=Object.assign(Ja,{__name:"TimeoutOpportunitiesTable"}),Ya={class:"flex items-center justify-between"},Wa={class:"text-sm text-gray-500 inline-flex items-center gap-1"},Za={class:"truncate font-mono text-xs"},eo={class:"tabular-nums"},to={class:"tabular-nums text-gray-500"},so={class:"tabular-nums text-gray-500"},no=ue({__name:"SpecHealthTable",props:{projectId:{}},async setup(A){let T,x;const D=A,b=w(30),{data:f,pending:u}=([T,x]=ye(()=>he(()=>`/api/projects/${D.projectId}/spec-health?days=${b.value}`,{lazy:!0,server:!1,watch:[b]},"$QL0nEFEG1b")),T=await T,x(),T),E=B(()=>f.value?.specs??[]);function U(h){return h>=.9?"bg-green-500":h>=.7?"bg-amber-500":h>0?"bg-red-500":"bg-gray-300 dark:bg-gray-600"}function R(h){return h>=.9?"text-green-600 dark:text-green-400":h>=.7?"text-amber-600 dark:text-amber-400":h>0?"text-red-600 dark:text-red-400":"text-gray-500"}function C(h){return`${Math.round(h*100)}%`}function _(h){return h<1e3?`${h}ms`:`${(h/1e3).toFixed(1)}s`}const y=[{label:"Last 7 days",value:7},{label:"Last 30 days",value:30},{label:"Last 90 days",value:90}],z=[{accessorKey:"prefix",header:I("Spec prefix")},{accessorKey:"passRate",header:I("Pass rate")},{accessorKey:"flakyRate",header:I("Flaky")},{accessorKey:"failureCount",header:I("Failures")},{accessorKey:"testCount",header:I("Tests")},{accessorKey:"avgDuration",header:I("Avg time")}];return(h,v)=>{const M=qe,K=Ue,$=wt,g=Se,m=Oe,q=ze,Z=lt,O=He;return s(),k(O,null,{header:t(()=>[a("div",Ya,[a("p",Wa,[v[1]||(v[1]=d(" Spec-file health overview — pass rate, flaky rate, and failure count per spec prefix ",-1)),l(M,{topic:"project.spec-health"})]),l(K,{modelValue:e(b),"onUpdate:modelValue":v[0]||(v[0]=P=>G(b)?b.value=P:null),items:y,size:"xs",class:"w-32"},null,8,["modelValue"])])]),default:t(()=>[e(u)?(s(),k($,{key:0})):e(E).length===0?(s(),k(g,{key:1,text:"No data",description:"No spec health data available for the selected period."})):(s(),k(Z,{key:2,"min-width":"46rem",bleed:!1},{default:t(()=>[l(q,{data:e(E),columns:z,sticky:"",class:"max-h-[32rem]"},{"prefix-cell":t(({row:P})=>[l(m,{to:`/projects/${A.projectId}/test-cases?file=${encodeURIComponent(P.original.prefix)}`,class:"flex items-center gap-2 min-w-0 text-primary hover:underline",title:P.original.prefix},{default:t(()=>[a("span",{class:re(["inline-block size-3 rounded shrink-0",U(P.original.passRate)])},null,2),a("span",Za,c(P.original.prefix),1)]),_:2},1032,["to","title"])]),"passRate-cell":t(({row:P})=>[a("span",{class:re(["font-medium tabular-nums",R(P.original.passRate)])},c(C(P.original.passRate)),3)]),"flakyRate-cell":t(({row:P})=>[a("span",eo,c(Math.round(P.original.flakyRate*100))+"%",1)]),"failureCount-cell":t(({row:P})=>[a("span",{class:re(["tabular-nums",P.original.failureCount>0?"text-red-600 dark:text-red-400":""])},c(P.original.failureCount),3)]),"testCount-cell":t(({row:P})=>[a("span",to,c(P.original.testCount),1)]),"avgDuration-cell":t(({row:P})=>[a("span",so,c(_(P.original.avgDuration)),1)]),_:1},8,["data"])]),_:1}))]),_:1})}}}),ao=Object.assign(no,{__name:"SpecHealthTable"}),oo={class:"space-y-4"},lo={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},ro={id:"marker-environments"},io=["value"],co=ue({__name:"MarkerFormModal",props:{open:{type:Boolean},projectId:{},marker:{},environments:{}},emits:["update:open","saved"],setup(A,{emit:T}){const x=A,D=T,b=Re(),f=nn.map(_=>({label:_.label,value:_.id,icon:_.icon})),u=Rs({label:"",occurredAt:"",category:bt,environment:"",description:""}),E=B(()=>!!x.marker),U=w(!1);function R(_){const y=new Date(_),z=h=>String(h).padStart(2,"0");return`${y.getFullYear()}-${z(y.getMonth()+1)}-${z(y.getDate())}T${z(y.getHours())}:${z(y.getMinutes())}`}ge(()=>x.open,_=>{_&&(x.marker?(u.label=x.marker.label,u.occurredAt=R(x.marker.occurredAt),u.category=x.marker.category||bt,u.environment=x.marker.environment??"",u.description=x.marker.description??""):(u.label="",u.occurredAt=R(new Date),u.category=bt,u.environment="",u.description=""))});async function C(){if(!u.label.trim()){b.add({title:"Label is required",color:"error"});return}if(!u.occurredAt){b.add({title:"Date is required",color:"error"});return}U.value=!0;const _={label:u.label.trim(),occurredAt:new Date(u.occurredAt).toISOString(),category:u.category,environment:u.environment.trim()||null,description:u.description.trim()||null};try{x.marker?(await $fetch(`/api/markers/${x.marker.id}`,{method:"PUT",body:_}),b.add({title:"Marker updated",color:"success"})):(await $fetch(`/api/projects/${x.projectId}/markers`,{method:"POST",body:_}),b.add({title:"Marker created",color:"success"})),D("update:open",!1),D("saved")}catch(y){b.add({title:E.value?"Failed to update marker":"Failed to create marker",description:Wt(y),color:"error"})}finally{U.value=!1}}return(_,y)=>{const z=Lt,h=Ot,v=Ue,M=sn,K=Te,$=Dt,g=Tt;return s(),k(g,null,{default:t(()=>[l($,{open:A.open,title:e(E)?"Edit marker":"Add marker","onUpdate:open":y[6]||(y[6]=m=>D("update:open",m))},{body:t(()=>[a("div",oo,[l(h,{label:"Label",name:"label",required:""},{default:t(()=>[l(z,{modelValue:e(u).label,"onUpdate:modelValue":y[0]||(y[0]=m=>e(u).label=m),placeholder:"e.g. Migrated CI to new runners",class:"w-full"},null,8,["modelValue"])]),_:1}),a("div",lo,[l(h,{label:"Date & time",name:"occurredAt",required:""},{default:t(()=>[l(z,{modelValue:e(u).occurredAt,"onUpdate:modelValue":y[1]||(y[1]=m=>e(u).occurredAt=m),type:"datetime-local",class:"w-full"},null,8,["modelValue"])]),_:1}),l(h,{label:"Category",name:"category"},{default:t(()=>[l(v,{modelValue:e(u).category,"onUpdate:modelValue":y[2]||(y[2]=m=>e(u).category=m),items:e(f),class:"w-full"},null,8,["modelValue","items"])]),_:1})]),l(h,{label:"Environment",name:"environment",help:"Optional. Leave empty to apply to all environments."},{default:t(()=>[l(z,{modelValue:e(u).environment,"onUpdate:modelValue":y[3]||(y[3]=m=>e(u).environment=m),list:"marker-environments",placeholder:"e.g. production",class:"w-full"},null,8,["modelValue"]),a("datalist",ro,[(s(!0),i(Q,null,ie(A.environments||[],m=>(s(),i("option",{key:m,value:m},null,8,io))),128))])]),_:1}),l(h,{label:"Description",name:"description"},{default:t(()=>[l(M,{modelValue:e(u).description,"onUpdate:modelValue":y[4]||(y[4]=m=>e(u).description=m),rows:3,placeholder:"Optional details",class:"w-full"},null,8,["modelValue"])]),_:1})])]),footer:t(()=>[l(K,{color:"neutral",variant:"ghost",label:"Cancel",onClick:y[5]||(y[5]=m=>D("update:open",!1))}),l(K,{label:e(E)?"Save changes":"Add marker",icon:e(E)?"i-lucide-check":"i-lucide-plus",loading:e(U),onClick:C},null,8,["label","icon","loading"])]),_:1},8,["open","title"])]),_:1})}}}),uo=Object.assign(co,{__name:"MarkerFormModal"}),mo={class:"md:hidden space-y-3"},po={class:"flex items-start justify-between gap-2"},go={key:0,class:"flex gap-1 shrink-0"},fo={class:"text-sm text-muted"},vo={key:0,class:"text-xs"},_o={key:1,class:"text-sm text-muted"},yo={class:"whitespace-nowrap"},ho={class:"text-sm"},bo={class:"text-xs text-muted"},xo={class:"font-medium flex items-center gap-1"},ko={key:0,class:"text-xs text-muted line-clamp-1"},$o={key:1,class:"text-xs text-muted"},Co={key:0,class:"flex gap-1 justify-end"},To=ue({__name:"ProjectTimeline",props:{projectId:{},markers:{},environments:{},canEdit:{type:Boolean},focusMarkerId:{}},emits:["changed","clear-focus"],setup(A,{emit:T}){const x=A,D=T,b=Re(),f=B(()=>[...x.markers].sort((v,M)=>+new Date(M.occurredAt)-+new Date(v.occurredAt))),u=[{accessorKey:"occurredAt",header:"When"},{accessorKey:"category",header:"Category"},{accessorKey:"label",header:"Label"},{accessorKey:"environment",header:"Environment"},{accessorKey:"actions",header:""}],E=w(!1),U=w(null);function R(){U.value=null,E.value=!0}function C(v){U.value=v,E.value=!0}ge(()=>x.focusMarkerId,v=>{if(v==null)return;const M=x.markers.find(K=>K.id===v);M&&C(M),D("clear-focus")},{immediate:!0});const _=w(!1),y=w(null);function z(v){y.value=v,_.value=!0}async function h(){const v=y.value;if(_.value=!1,y.value=null,!!v)try{await $fetch(`/api/markers/${v.id}`,{method:"DELETE"}),b.add({title:"Marker deleted",color:"success"}),D("changed")}catch(M){b.add({title:"Failed to delete marker",description:Wt(M),color:"error"})}}return(v,M)=>{const K=Te,$=Se,g=tn,m=Ae,q=Le,Z=ze,O=uo,P=Dt,be=Tt,xe=Yt;return s(),k(xe,{title:"Timeline markers",count:A.markers.length,icon:"i-lucide-milestone",help:"project.timeline",subtitle:"Dated events overlaid on the analytics charts"},{actions:t(()=>[A.canEdit?(s(),k(K,{key:0,label:"Add marker",icon:"i-lucide-plus",size:"sm",onClick:R})):S("",!0)]),default:t(()=>[A.markers.length===0?(s(),k($,{key:0,icon:"i-lucide-milestone",text:"No markers yet. Add a deploy, config change, or incident to see it on the charts."})):(s(),i(Q,{key:1},[a("div",mo,[(s(!0),i(Q,null,ie(e(f),p=>(s(),i("div",{key:p.id,class:"rounded-lg border border-default p-3 space-y-2"},[a("div",po,[l(g,{marker:p},null,8,["marker"]),A.canEdit?(s(),i("div",go,[l(K,{icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"xs",onClick:L=>C(p)},null,8,["onClick"]),l(K,{icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"xs",onClick:L=>z(p)},null,8,["onClick"])])):S("",!0)]),a("div",fo,c(("prettyDateFormat"in v?v.prettyDateFormat:e(ot))(p.occurredAt)),1),p.environment?(s(),i("div",vo,[l(m,{color:"neutral",variant:"subtle",size:"xs"},{default:t(()=>[d(c(p.environment),1)]),_:2},1024)])):S("",!0),p.description?(s(),i("p",_o,c(p.description),1)):S("",!0)]))),128))]),l(Z,{data:e(f),columns:u,class:"hidden md:block"},{"occurredAt-cell":t(({row:p})=>[a("div",yo,[a("div",ho,c(("prettyDateFormat"in v?v.prettyDateFormat:e(ot))(p.original.occurredAt)),1),a("div",bo,c(("formatRelativeTime"in v?v.formatRelativeTime:e(St))(p.original.occurredAt)),1)])]),"category-cell":t(({row:p})=>[l(m,{color:e(xt)(p.original.category).color,variant:"subtle",size:"sm",class:"gap-1"},{default:t(()=>[l(q,{name:e(xt)(p.original.category).icon,class:"size-3"},null,8,["name"]),d(" "+c(e(xt)(p.original.category).label),1)]),_:2},1032,["color"])]),"label-cell":t(({row:p})=>[a("div",null,[a("div",xo,[d(c(p.original.label)+" ",1),p.original.source==="auto"?(s(),k(q,{key:0,name:"i-lucide-sparkles",class:"size-3 text-muted",title:"Automatically detected"})):S("",!0)]),p.original.description?(s(),i("div",ko,c(p.original.description),1)):S("",!0)])]),"environment-cell":t(({row:p})=>[p.original.environment?(s(),k(m,{key:0,color:"neutral",variant:"subtle",size:"xs"},{default:t(()=>[d(c(p.original.environment),1)]),_:2},1024)):(s(),i("span",$o,"All"))]),"actions-cell":t(({row:p})=>[A.canEdit?(s(),i("div",Co,[l(K,{icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"sm",onClick:L=>C(p.original)},null,8,["onClick"]),l(K,{icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"sm",onClick:L=>z(p.original)},null,8,["onClick"])])):S("",!0)]),_:1},8,["data"])],64)),l(O,{open:e(E),"onUpdate:open":M[0]||(M[0]=p=>G(E)?E.value=p:null),"project-id":A.projectId,marker:e(U),environments:A.environments,onSaved:M[1]||(M[1]=p=>D("changed"))},null,8,["open","project-id","marker","environments"]),l(be,null,{default:t(()=>[l(P,{open:e(_),title:"Delete marker","onUpdate:open":M[3]||(M[3]=p=>_.value=p)},{body:t(()=>[a("p",null,[M[4]||(M[4]=d(" Delete marker ",-1)),e(y)?(s(),k(g,{key:0,marker:e(y),class:"inline-flex align-middle"},null,8,["marker"])):S("",!0),M[5]||(M[5]=d("? This can't be undone. ",-1))])]),footer:t(()=>[l(K,{color:"neutral",variant:"ghost",label:"Cancel",onClick:M[2]||(M[2]=p=>_.value=!1)}),l(K,{color:"error",label:"Delete",icon:"i-lucide-trash-2",onClick:h})]),_:1},8,["open"])]),_:1})]),_:1},8,["count"])}}}),So=Object.assign(To,{__name:"ProjectTimeline"}),jo={class:"flex flex-col h-full overflow-y-auto gap-4"},wo={key:0,class:"pb-0 space-y-4"},Do={key:0,class:"text-gray-600"},Ro={key:1,class:"flex flex-wrap gap-1 mt-2"},Ao={class:"flex flex-wrap items-center gap-3 mb-4"},Uo={class:"inline-flex items-center gap-1"},zo=["onClick"],Mo={key:0,class:"flex items-center gap-3 px-3 py-2 mb-3 rounded-lg bg-primary-50 dark:bg-primary-900/20 border border-primary-200 dark:border-primary-800"},Fo={class:"text-sm text-primary-700 dark:text-primary-300"},Io={key:1,class:"text-xs text-primary-500"},Eo=["checked","onClick"],Vo={class:"flex items-center gap-2"},Bo=["href","onClick"],Po={key:0,class:"text-xs text-gray-500 dark:text-gray-400 truncate max-w-32"},No={class:"inline-flex items-center gap-1"},Ko={key:0,class:"flex items-center gap-1"},Lo={class:"text-xs text-gray-600"},Oo={key:0,class:"text-xs font-medium bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200 px-1.5 py-0.5 rounded"},qo={key:0,class:"flex items-center gap-1 flex-wrap"},Ho={key:0,class:"text-xs font-medium bg-gray-100 dark:bg-gray-800 px-1.5 py-0.5 rounded"},Xo={key:1,class:"text-xs text-gray-500"},Go={class:"space-y-1"},Jo={class:"text-xs text-gray-500"},Qo={class:"flex justify-end gap-2"},Yo={key:2,class:"text-center py-8 text-gray-500"},Wo={class:"text-xs text-gray-400 max-w-sm"},Zo={class:"bg-gray-100 dark:bg-gray-800 px-1 rounded"},el={class:"flex flex-wrap items-center gap-3"},tl={class:"text-xl font-semibold inline-flex items-center gap-1"},sl={class:"font-medium"},nl={class:"mt-1"},al={key:0,class:"text-red-600 font-medium"},ol={key:1,class:"text-green-600 font-medium"},ll={key:2,class:"text-gray-500"},rl={key:2,class:"text-center py-8 text-red-500"},il={key:3,class:"text-center py-8 text-gray-500"},cl={class:"flex items-center justify-between"},ul={class:"text-xl font-semibold inline-flex items-center gap-1"},dl={class:"space-y-4"},ml={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},pl={key:0,class:"text-center py-4 text-gray-500"},gl={key:1,class:"space-y-4"},fl={class:"flex gap-4 text-sm"},vl={key:0,class:"text-gray-400"},_l={key:0,class:"text-gray-400"},yl={key:0},hl={key:1,class:"text-gray-400"},bl={key:0},xl={key:1,class:"text-gray-400"},kl={key:0,class:"text-gray-400"},$l={key:0,class:"text-gray-400"},Cl={key:2,class:"text-center py-8 text-gray-500"},Tl={key:3,class:"text-center py-8 text-gray-500"},Sl={class:"flex items-center justify-between"},jl={class:"text-sm text-gray-600 inline-flex items-center gap-1"},wl={class:"space-y-4"},Dl={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Rl={key:0,class:"text-center py-8 text-gray-500"},Al={key:1,class:"space-y-4"},Ul={class:"space-y-2"},zl={class:"flex flex-wrap gap-4 text-sm"},Ml={key:3,class:"text-sm text-gray-500"},Fl={class:"flex flex-wrap gap-4 text-sm"},Il={key:0,class:"text-gray-400"},El={key:0,class:"text-gray-400"},Vl={key:0},Bl={key:1,class:"text-gray-400"},Pl={key:0},Nl={key:1,class:"text-gray-400"},Kl={key:0,class:"text-gray-400"},Ll={key:0,class:"text-gray-400"},Ol={key:2,class:"text-center py-8 text-gray-500"},ql={key:3,class:"text-center py-8 text-gray-500"},Hl={class:"flex items-center justify-between"},Xl={class:"text-sm text-gray-600 inline-flex items-center gap-1"},Gl={key:0,class:"space-y-2"},Jl={class:"font-medium text-sm"},Ql={class:"text-xs text-muted flex items-center gap-2"},Yl={key:0,class:"italic"},Wl={key:1,class:"text-xs text-muted italic"},Zl={key:1,class:"text-center py-8 text-muted text-sm"},er={class:"space-y-4"},tr={class:"text-sm text-gray-600 dark:text-gray-400"},sr={class:"block text-sm font-medium mb-1"},nr={class:"bg-gray-100 dark:bg-gray-800 px-1 rounded"},li=ue({__name:"index",async setup(A){let T,x;const D=As(),b=Us(),f=D.params.id,{data:u,refresh:E}=([T,x]=ye(()=>he(`/api/projects/${f}`,"$NX9Zy2qnH1")),T=await T,x(),T);zs(B(()=>({title:`${u.value?.label||u.value?.name||"Project"} — Piwi Dashboard`})));const U=Re(),R=w(null),C=w(null),{isAdmin:_,isReporter:y}=Nt(),z=$t(),h=B(()=>!z.public.authEnabled||_.value),v=w(!1),M=w(""),K=w(!1),$=B(()=>M.value===u.value?.name);async function g(){if($.value){K.value=!0;try{await $fetch(`/api/projects/${f}`,{method:"DELETE"}),U.add({title:"Project deleted",color:"success"}),await Fs(),await b.push("/")}catch(r){const n=r&&typeof r=="object"&&"data"in r?r.data?.message:void 0;U.add({title:"Delete failed",description:n||"An error occurred",color:"error"}),K.value=!1}}}ln(E);async function m(r){C.value=null,R.value=r;try{await $fetch(`/api/test-runs/${r}`,{method:"DELETE"}),U.add({title:"Test run deleted",color:"success"}),await E()}catch(n){const F=n&&typeof n=="object"&&"data"in n?n.data?.message:void 0;U.add({title:"Delete failed",description:F||"An error occurred",color:"error"})}finally{R.value=null}}const q=w([]),Z=w([]),O=w([]),P=B(()=>{const r=new Map(q.value.map(F=>[F.id,F])),n=[];for(const F of Z.value){if(F.role==="administrator")continue;const H=r.get(F.id);n.push({id:F.id,username:F.username,name:F.name??null,role:F.role,global:H?.global??!1,hasAccess:!!H})}for(const F of q.value)F.role==="administrator"&&n.push({...F,hasAccess:!0});return n}),be=B(()=>{const r=q.value.filter(F=>F.role!=="administrator"&&!F.global).map(F=>F.id).sort(),n=[...O.value].sort();return JSON.stringify(r)!==JSON.stringify(n)});ge(()=>u.value?.id,async r=>{if(!(!r||!_.value))try{const[n,F]=await Promise.all([$fetch(`/api/projects/${f}/members`),$fetch("/api/users")]);q.value=n.users,Z.value=F.users,O.value=n.users.filter(H=>H.role!=="administrator"&&!H.global).map(H=>H.id)}catch{q.value=[],Z.value=[],O.value=[]}},{immediate:!0});function xe(r){const n=O.value.indexOf(r);n>=0?O.value.splice(n,1):O.value.push(r)}async function p(){try{await $fetch(`/api/projects/${f}/members`,{method:"PUT",body:{userIds:O.value}}),U.add({title:"Members updated",color:"success"});const r=await $fetch(`/api/projects/${f}/members`);q.value=r.users}catch(r){const n=r&&typeof r=="object"&&"data"in r?r.data?.message:void 0;U.add({title:"Update failed",description:n||"An error occurred",color:"error"})}}const L=w("test-runs"),oe=w(0),de=["test-runs","failure-clusters","flaky-tests","performance","test-cases","compare","spec-health","timeline","members"],ke=D.query.tab;typeof ke=="string"&&de.includes(ke)&&(L.value=ke),ge(L,r=>{D.query.tab!==r&&de.includes(r)&&b.replace({query:{...D.query,tab:r}})});const fe=B(()=>u.value?.testRuns?.some(r=>r.failedTests>0)??!1),ce=B(()=>[{label:`Test runs (${Ee.value.length})`,icon:"i-lucide-play-circle",value:"test-runs",slot:"test-runs"},...fe.value?[{label:"Failure clusters",icon:"i-lucide-layers",value:"failure-clusters",slot:"failure-clusters"}]:[],{label:"Flaky tests",icon:"i-lucide-shuffle",value:"flaky-tests",slot:"flaky-tests"},{label:"Performance",icon:"i-lucide-trending-up",value:"performance",slot:"performance"},{label:`Test cases${Ne.value!=null?` (${Ne.value})`:""}`,icon:"i-lucide-list-checks",value:"test-cases",slot:"test-cases"},{label:"Compare",icon:"i-lucide-git-compare-arrows",value:"compare",slot:"compare"},{label:"Spec health",icon:"i-lucide-table-2",value:"spec-health",slot:"spec-health"},{label:`Timeline${j.value.length?` (${j.value.length})`:""}`,icon:"i-lucide-milestone",value:"timeline",slot:"timeline"},..._.value?[{label:"Members",icon:"i-lucide-users",value:"members",slot:"members"}]:[]]),ve=B(()=>ce.value.find(r=>r.value===L.value)?.icon),Y=w([]),rt=r=>Y.value.includes(r);function it(r){const n=Y.value.indexOf(r);if(n>=0)Y.value.splice(n,1);else{if(Y.value.length>=2){U.add({title:"Maximum 2 runs",description:"Select at most 2 runs to compare. Deselect one first.",color:"warning"});return}Y.value.push(r)}}const Me=w(null);function Xe(){Y.value.length===2&&(Me.value=[Y.value[0],Y.value[1]],L.value="compare")}const W=w([]),_e=w(!0),Fe=B(()=>{const r=new Set;for(const n of u.value?.testRuns||[])n.environment&&r.add(n.environment);return[...r].sort()});function ct(r){const n=W.value.indexOf(r);n===-1?W.value.push(r):W.value.splice(n,1)}function Ie(r){return W.value.includes(r)}const Ee=B(()=>{let r=u.value?.testRuns||[];return _e.value&&(r=r.filter(n=>n.isFullRun!==!1)),W.value.length===0?r:r.filter(n=>n.environment&&W.value.includes(n.environment))}),ut=B(()=>W.value.length===1?W.value[0]:void 0),{data:Ve,refresh:V}=([T,x]=ye(()=>he(`/api/projects/${f}/markers`,{default:()=>({markers:[]})},"$3gm0grYTFL")),T=await T,x(),T),j=B(()=>Ve.value?.markers??[]),ee=B(()=>!z.public.authEnabled||_.value||y.value),Ge=B(()=>W.value.length===0?j.value:j.value.filter(r=>r.environment==null||W.value.includes(r.environment))),Be=w(null);function Pe(r){Be.value=r,L.value="timeline"}const dt=B(()=>{const r=u.value?.testRuns||[];return _e.value?r.filter(n=>n.isFullRun!==!1):r});function Je(r){if(r.isFullRun!==!1)return"Full run — the complete test suite ran";const n=[],F=r.filterDetails?.grep?.trim(),H=r.filterDetails?.grepInvert?.trim(),me=r.filterDetails?.files;return F&&F!==".*"&&n.push(`grep: ${F}`),H&&n.push(`grep-invert: ${H}`),me?.length&&n.push(`files: ${me.join(", ")}`),n.length?`Partial run — ${n.join(" · ")}`:"Partial run — only a filtered subset of tests ran (grep, file, or line filter)"}const je=[{accessorKey:"select",header:""},{accessorKey:"id",header:I("Run")},{accessorKey:"status",header:I("Status")},{accessorKey:"isFullRun",header:"Scope"},{id:"browsers",accessorFn:r=>r.browsers,header:""},{accessorKey:"startTime",header:I("Started")},{accessorKey:"environment",header:I("Environment")},{accessorKey:"metadata",header:"Branch / Commit"},{accessorKey:"duration",header:I("Test status / Dur.")},{accessorKey:"reports",header:"Reports"},{id:"actions",header:"Actions"}],Ne=w(null),N=w(""),X=w(""),mt=B(()=>{const r={};return N.value&&(r.from=N.value),X.value&&(r.to=X.value),r}),pt=w(null),gt=w(!1),we=w(null),ft=w(!1),Qe=w(!1),Zt=B(()=>gt.value&&pt.value===null);ge([L,mt,_e],async([r,n])=>{if(r!=="performance")return;gt.value=!0,we.value||(Qe.value=!0);const F=new URLSearchParams(n).toString(),H=_e.value?`${F?"&":""}fullRunsOnly=true`:"",me=F||H?`?${F}${H}`:"";pt.value=await $fetch(`/api/projects/${f}/performance${me}`).catch(pe=>(console.warn("[PerformanceTab] Failed to fetch performance trend:",pe),null)),gt.value=!1,Qe.value&&(ft.value=!1,we.value=await $fetch(`/api/projects/${f}/slow-tests`).catch(pe=>(ft.value=!0,console.warn("[PerformanceTab] Failed to fetch slow tests:",pe),null)),Qe.value=!1)},{immediate:!0});const es=[{accessorKey:"title",header:I("Test case")},{accessorKey:"avgDuration",header:I("Avg duration")},{accessorKey:"maxDuration",header:I("Max")},{accessorKey:"minDuration",header:I("Min")},{accessorKey:"latestDuration",header:I("Latest")},{accessorKey:"trend",header:I("Trend")},{accessorKey:"runCount",header:I("Runs")}];function ts(r){const n=ot(r.startTime,{dateOnly:!0}),F=r.metadata?.scm?.commit?` (${r.metadata.scm.commit.substring(0,7)})`:"";return`Run #${r.id} — ${n}${F}`}const le=B(()=>u.value?.testRuns?[...u.value.testRuns].reverse().map(r=>({label:ts(r),value:r.id})):[]),te=w(void 0),se=w(void 0),Rt=B(()=>D.query.runA?Number(D.query.runA):null),At=B(()=>D.query.runB?Number(D.query.runB):null);ge(le,r=>{if(Rt.value){const n=r.find(F=>F.value===Rt.value);n&&(te.value=n)}if(At.value){const n=r.find(F=>F.value===At.value);n&&(se.value=n)}},{immediate:!0}),ge(Me,r=>{if(r){const n=le.value.find(H=>H.value===r[0]),F=le.value.find(H=>H.value===r[1]);n&&(te.value=n),F&&(se.value=F),Me.value=null}});function Ut(){le.value.length>=2&&(te.value=le.value[1],se.value=le.value[0])}const vt=w(null),_t=w(null),Ye=w(!1);async function ss(){const r=te.value,n=se.value;if(!(!r?.value&&!n?.value)){Ye.value=!0;try{const F=[];r?.value&&F.push(r.value),n?.value&&F.push(n.value);const H=await Promise.all(F.map(pe=>$fetch(`/api/test-runs/${pe}/summary`))),me=new Map;for(const pe of H)me.set(pe.id,pe);vt.value=r?.value?me.get(r.value)??null:null,_t.value=n?.value?me.get(n.value)??null:null}catch{vt.value=null,_t.value=null}finally{Ye.value=!1}}}ge([te,se],()=>{ss()});const{comparisonData:We,comparisonSummary:J}=on(vt,_t),zt=[{accessorKey:"title",header:I("Test case")},{accessorKey:"statusA",header:I("Status A")},{accessorKey:"statusB",header:I("Status B")},{accessorKey:"durationA",header:I("Duration A")},{accessorKey:"durationB",header:I("Duration B")},{accessorKey:"delta",header:I("Delta")},{accessorKey:"percentChange",header:I("Change")}];return(r,n)=>{const F=js,H=ws,me=Mn,pe=Bs,ns=Ns,as=qt,os=Ue,ls=Ln,Mt=Ls,rs=Os,De=qe,ae=Te,is=qs,yt=Le,cs=Hs,us=Xs,ds=Gs,ms=Js,Ze=ze,ps=Es,gs=Se,Ke=He,fs=Zn,vs=ma,_s=Da,ht=Lt,Ft=wt,ys=Ba,hs=jt,bs=Qa,et=Ws,ne=Ae,xs=Zs,ks=ao,$s=en,Cs=So,Ts=an,Ss=Ps,It=Dt,Et=Tt;return s(),i(Q,null,[l(Ss,{id:"project-detail"},{header:t(()=>[l(ns,null,{leading:t(()=>[l(F),l(H,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},{label:e(u)?.label||e(u)?.name||"Project"}]},null,8,["items"])]),right:t(()=>[l(pe,{size:"sm",actions:[...e(h)?[{label:"Delete",icon:"i-lucide-trash-2",color:"error",variant:"ghost",onClick:()=>{M.value="",v.value=!0}}]:[],{label:"Edit",icon:"i-lucide-pencil",variant:"outline",to:`/projects/${e(f)}/edit`},{label:"Refresh",icon:"i-lucide-refresh-cw",variant:"outline",onClick:()=>e(E)()}]},{leading:t(()=>[l(me,{"project-id":parseInt(e(f)),"project-label":e(u)?.label||e(u)?.name},null,8,["project-id","project-label"])]),_:1},8,["actions"])]),_:1})]),body:t(()=>[a("div",jo,[e(u)?.description||e(u)?.tags&&e(u).tags.length>0?(s(),i("div",wo,[e(u)?.description?(s(),i("p",Do,c(e(u).description),1)):S("",!0),e(u)?.tags&&e(u).tags.length>0?(s(),i("div",Ro,[(s(!0),i(Q,null,ie(e(u).tags,o=>(s(),k(as,{key:o.id,text:o.text,color:o.color},null,8,["text","color"]))),128))])):S("",!0)])):S("",!0),l(os,{modelValue:e(L),"onUpdate:modelValue":n[0]||(n[0]=o=>G(L)?L.value=o:null),items:e(ce),icon:e(ve),size:"md",class:"w-full mx-1 mb-1 sm:hidden"},null,8,["modelValue","items","icon"]),l(Ts,{modelValue:e(L),"onUpdate:modelValue":n[14]||(n[14]=o=>G(L)?L.value=o:null),items:e(ce),size:"sm",class:"p-1",ui:{list:"max-sm:hidden overflow-x-auto",trigger:"shrink-0"}},{"test-runs":t(()=>[e(u)?.testRuns&&e(u).testRuns.length>0?(s(),k(Mt,{key:0,title:"Run trend",subtitle:`Test run statistics over time for ${e(u)?.label||e(u)?.name}`,help:"project.runs-trend"},{default:t(()=>[l(ls,{"test-runs":e(dt),height:200,markers:e(Ge),onMarkerClick:Pe},null,8,["test-runs","markers"])]),_:1},8,["subtitle"])):S("",!0),l(Ke,{class:"mt-4"},{default:t(()=>[a("div",Ao,[a("div",Uo,[l(rs,{modelValue:e(_e),"onUpdate:modelValue":n[1]||(n[1]=o=>G(_e)?_e.value=o:null),label:"Full runs only",ui:{label:"text-sm"}},null,8,["modelValue"]),l(De,{topic:"project.run-scope"})]),e(Fe).length>0?(s(),i(Q,{key:0},[n[21]||(n[21]=a("span",{class:"text-sm text-muted shrink-0"},"Environment:",-1)),(s(!0),i(Q,null,ie(e(Fe),o=>(s(),i("button",{key:o,type:"button",class:re(["text-xs font-medium px-2 py-1 rounded border cursor-pointer focus:outline-none transition-colors",Ie(o)?"bg-blue-600 text-white border-blue-600":"bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200 border-blue-300 dark:border-blue-700 hover:bg-blue-200 dark:hover:bg-blue-800"]),onClick:$e=>ct(o)},c(o),11,zo))),128)),e(W).length>0?(s(),k(ae,{key:0,size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-x",label:"Clear filter",onClick:n[2]||(n[2]=o=>W.value=[])})):S("",!0)],64)):S("",!0)]),e(Y).length>0?(s(),i("div",Mo,[a("span",Fo,c(e(Y).length)+" run"+c(e(Y).length>1?"s":"")+" selected ",1),e(Y).length===2?(s(),k(ae,{key:0,icon:"i-lucide-git-compare-arrows",size:"sm",color:"primary",label:"Compare selected runs",onClick:Xe})):(s(),i("span",Io," Select another run to compare ")),l(ae,{size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-x",label:"Clear",onClick:n[3]||(n[3]=o=>Y.value=[])})])):S("",!0),e(Ee).length>0?(s(),k(Ze,{key:1,data:e(Ee),columns:je,ui:{base:"table-fixed border-separate border-spacing-0",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"select-cell":t(({row:o})=>[a("input",{type:"checkbox",checked:rt(o.original.id),class:"cursor-pointer size-4 accent-primary",onClick:Pt($e=>it(o.original.id),["stop"])},null,8,Eo)]),"id-cell":t(({row:o})=>[a("div",Vo,[a("a",{href:`/test-runs/${o.original.id}`,class:"text-primary hover:underline font-medium",onClick:Pt($e=>("navigateTo"in r?r.navigateTo:e(Ct))(`/test-runs/${o.original.id}`),["prevent"])}," Run #"+c(o.original.id),9,Bo),o.original.label?(s(),i("span",Po,c(o.original.label),1)):S("",!0)])]),"status-cell":t(({row:o})=>[l(is,{status:o.original.status},null,8,["status"])]),"isFullRun-header":t(()=>[a("span",No,[n[22]||(n[22]=d("Scope ",-1)),l(De,{topic:"run.partial"})])]),"isFullRun-cell":t(({row:o})=>[l(cs,{text:Je(o.original)},{default:t(()=>[l(yt,{name:o.original.isFullRun===!1?"i-lucide-list-filter":"i-lucide-list-checks",class:re(["size-4 shrink-0 cursor-help",o.original.isFullRun===!1?"text-amber-500":"text-green-500"])},null,8,["name","class"])]),_:2},1032,["text"])]),"browsers-cell":t(({row:o})=>[o.original.browsers?.length?(s(),i("div",Ko,[(s(!0),i(Q,null,ie(o.original.browsers,$e=>(s(),k(us,{key:$e,browser:{projectName:$e},size:"sm"},null,8,["browser"]))),128))])):S("",!0)]),"startTime-cell":t(({row:o})=>[a("span",Lo,c(("prettyDateFormat"in r?r.prettyDateFormat:e(ot))(o.original.startTime)),1)]),"environment-cell":t(({row:o})=>[o.original.environment?(s(),i("span",Oo,c(o.original.environment),1)):S("",!0)]),"metadata-cell":t(({row:o})=>[o.original.metadata?.scm?(s(),i("div",qo,[o.original.metadata.scm.branch?(s(),i("span",Ho,c(o.original.metadata.scm.branch),1)):S("",!0),o.original.metadata.scm.commit?(s(),i("code",Xo,c(o.original.metadata.scm.commit.substring(0,7)),1)):S("",!0)])):S("",!0)]),"duration-cell":t(({row:o})=>[a("div",Go,[l(ds,{passed:o.original.passedTests,failed:o.original.failedTests,skipped:o.original.skippedTests,flaky:o.original.flakyTests,"did-not-run":o.original.didNotRunTests??0,total:o.original.totalTests},null,8,["passed","failed","skipped","flaky","did-not-run","total"]),a("span",Jo,c(("formatDuration"in r?r.formatDuration:e(Ce))(o.original.duration)),1)])]),"reports-cell":t(({row:o})=>[l(ms,{reports:o.original.reports},null,8,["reports"])]),"actions-header":t(()=>[...n[23]||(n[23]=[a("div",{class:"text-right"},"Actions",-1)])]),"actions-cell":t(({row:o})=>[a("div",Qo,[l(ae,{to:`/test-runs/${o.original.id}`,size:"sm",variant:"outline"},{default:t(()=>[...n[24]||(n[24]=[d(" View ",-1)])]),_:1},8,["to"]),l(ae,{size:"sm",color:"error",variant:"soft",icon:"i-lucide-trash-2",loading:e(R)===o.original.id,onClick:$e=>C.value=o.original.id},{default:t(()=>[...n[25]||(n[25]=[d(" Delete ",-1)])]),_:1},8,["loading","onClick"])])]),_:1},8,["data"])):e(u)?.testRuns&&e(u).testRuns.length>0?(s(),i("div",Yo," No test runs match the selected environment filter. ")):(s(),k(gs,{key:3,icon:"i-lucide-rocket",text:"No test runs yet for this project."},{default:t(()=>[a("p",Wo,[n[27]||(n[27]=d(" Point the reporter's ",-1)),n[28]||(n[28]=a("code",{class:"bg-gray-100 dark:bg-gray-800 px-1 rounded"},"projectName",-1)),n[29]||(n[29]=d(" at ",-1)),a("code",Zo,c(e(u)?.name),1),n[30]||(n[30]=d(" to send results here — see the ",-1)),l(ps,{to:"reporter","no-icon":"",class:"text-primary hover:underline"},{default:t(()=>[...n[26]||(n[26]=[d("reporter docs",-1)])]),_:1}),n[31]||(n[31]=d(" for setup instructions. ",-1))])]),_:1}))]),_:1})]),"failure-clusters":t(()=>[e(L)==="failure-clusters"?(s(),i(Q,{key:0},[(s(),k(fs,{key:`sug-${e(oe)}`,"project-id":String(e(f)),onMerged:n[4]||(n[4]=o=>oe.value++)},null,8,["project-id"])),(s(),k(vs,{key:e(oe),"project-id":String(e(f))},null,8,["project-id"]))],64)):S("",!0)]),"flaky-tests":t(()=>[e(L)==="flaky-tests"?(s(),k(_s,{key:0,"project-id":String(e(f)),environment:e(ut),"project-name":e(u)?.name},null,8,["project-id","environment","project-name"])):S("",!0)]),performance:t(()=>[a("div",el,[n[32]||(n[32]=a("span",{class:"text-sm text-muted shrink-0"},"Date range:",-1)),l(ht,{modelValue:e(N),"onUpdate:modelValue":n[5]||(n[5]=o=>G(N)?N.value=o:null),type:"date",size:"sm",placeholder:"From",class:"w-40"},null,8,["modelValue"]),n[33]||(n[33]=a("span",{class:"text-sm text-muted"},"to",-1)),l(ht,{modelValue:e(X),"onUpdate:modelValue":n[6]||(n[6]=o=>G(X)?X.value=o:null),type:"date",size:"sm",placeholder:"To",class:"w-40"},null,8,["modelValue"]),e(N)||e(X)?(s(),k(ae,{key:0,size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-x",label:"Clear",onClick:n[7]||(n[7]=o=>{N.value="",X.value=""})})):S("",!0)]),l(Mt,{title:"Performance trend",subtitle:"Duration metrics over time",help:"project.performance"},{default:t(()=>[e(Zt)?(s(),k(Ft,{key:0,text:"Loading chart…"})):(s(),k(ys,{key:1,data:e(pt)||[],height:350,markers:e(Ge),onMarkerClick:Pe},null,8,["data","markers"]))]),_:1}),l(Ke,null,{header:t(()=>[a("h2",tl,[n[34]||(n[34]=d(" Slowest tests ",-1)),l(De,{topic:"project.slowest-tests"})]),n[35]||(n[35]=a("p",{class:"text-sm text-gray-600 mt-1"},"Top 20 slowest test cases across recent runs",-1))]),default:t(()=>[e(Qe)&&e(we)===null?(s(),k(Ft,{key:0,text:"Loading…"})):e(we)&&e(we).length>0?(s(),k(Ze,{key:1,data:e(we),columns:es,ui:{base:"table-fixed border-separate border-spacing-0",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"title-cell":t(({row:o})=>[a("div",null,[a("div",sl,c(o.original.title),1),a("div",nl,[l(hs,{"file-path":o.original.filePath,"project-key":e(f),"project-name":e(u)?.name,class:"text-xs"},null,8,["file-path","project-key","project-name"])])])]),"trend-cell":t(({row:o})=>[o.original.trend==="slower"?(s(),i("span",al,"▲ Slower")):o.original.trend==="faster"?(s(),i("span",ol,"▼ Faster")):(s(),i("span",ll,"— Stable"))]),_:1},8,["data"])):e(ft)?(s(),i("div",rl," Couldn't load the slowest tests — try refreshing. ")):(s(),i("div",il,"No slow test data available yet."))]),_:1}),l(bs,{"project-id":String(e(f)),"project-name":e(u)?.name},null,8,["project-id","project-name"]),l(Ke,null,{header:t(()=>[a("div",cl,[a("div",null,[a("h2",ul,[n[36]||(n[36]=d(" Run comparison ",-1)),l(De,{topic:"project.run-compare"})]),n[37]||(n[37]=a("p",{class:"text-sm text-gray-600 mt-1"},"Compare duration changes between two runs",-1))]),e(le).length>=2?(s(),k(ae,{key:0,icon:"i-lucide-git-compare-arrows",size:"sm",variant:"outline",label:"Compare latest vs previous",onClick:Ut})):S("",!0)])]),default:t(()=>[a("div",dl,[a("div",ml,[a("div",null,[n[38]||(n[38]=a("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Run A (baseline)",-1)),l(et,{modelValue:e(te),"onUpdate:modelValue":n[8]||(n[8]=o=>G(te)?te.value=o:null),items:e(le),placeholder:"Select run A..."},null,8,["modelValue","items"])]),a("div",null,[n[39]||(n[39]=a("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Run B (comparison)",-1)),l(et,{modelValue:e(se),"onUpdate:modelValue":n[9]||(n[9]=o=>G(se)?se.value=o:null),items:e(le),placeholder:"Select run B..."},null,8,["modelValue","items"])])]),e(Ye)?(s(),i("div",pl,[l(yt,{name:"i-lucide-loader-2",class:"animate-spin mr-2"}),n[40]||(n[40]=d(" Loading run data… ",-1))])):e(te)&&e(se)&&e(We).length>0?(s(),i("div",gl,[a("div",fl,[l(ne,{color:"success",variant:"soft",size:"lg"},{default:t(()=>[d(c(e(J).improved)+" improved",1)]),_:1}),l(ne,{color:"error",variant:"soft",size:"lg"},{default:t(()=>[d(c(e(J).regressed)+" regressed",1)]),_:1}),l(ne,{color:"neutral",variant:"soft",size:"lg"},{default:t(()=>[d(c(e(J).unchanged)+" unchanged",1)]),_:1})]),l(Ze,{data:e(We),columns:zt,ui:{base:"table-fixed border-separate border-spacing-0",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"statusA-cell":t(({row:o})=>[o.original.statusA?(s(),k(ne,{key:1,color:("getStatusColor"in r?r.getStatusColor:e(tt))(o.original.statusA),class:"capitalize"},{default:t(()=>[d(c(o.original.statusA),1)]),_:2},1032,["color"])):(s(),i("span",vl,"—"))]),"statusB-cell":t(({row:o})=>[o.original.statusB?(s(),k(ne,{key:1,color:("getStatusColor"in r?r.getStatusColor:e(tt))(o.original.statusB),class:"capitalize"},{default:t(()=>[d(c(o.original.statusB),1)]),_:2},1032,["color"])):(s(),i("span",_l,"—"))]),"durationA-cell":t(({row:o})=>[o.original.durationA!==null?(s(),i("span",yl,c(("formatDuration"in r?r.formatDuration:e(Ce))(o.original.durationA)),1)):(s(),i("span",hl,"—"))]),"durationB-cell":t(({row:o})=>[o.original.durationB!==null?(s(),i("span",bl,c(("formatDuration"in r?r.formatDuration:e(Ce))(o.original.durationB)),1)):(s(),i("span",xl,"—"))]),"delta-cell":t(({row:o})=>[o.original.delta===null?(s(),i("span",kl,"—")):(s(),i("span",{key:1,class:re(o.original.delta>0?"text-red-600":o.original.delta<0?"text-green-600":"text-gray-500")},c(o.original.delta>0?"+":"")+c(("formatDuration"in r?r.formatDuration:e(Ce))(o.original.delta)),3))]),"percentChange-cell":t(({row:o})=>[o.original.percentChange===null?(s(),i("span",$l,"—")):(s(),i("span",{key:1,class:re(o.original.percentChange>10?"text-red-600 font-medium":o.original.percentChange<-10?"text-green-600 font-medium":"text-gray-500")},c(o.original.percentChange>0?"+":"")+c(o.original.percentChange)+"% ",3))]),_:1},8,["data"])])):!e(te)||!e(se)?(s(),i("div",Cl," Select two runs to compare their performance. ")):(s(),i("div",Tl," No overlapping test cases found between the selected runs. "))])]),_:1})]),"test-cases":t(()=>[l(xs,{"project-id":e(f),"project-name":e(u)?.name,"sync-query":"",onTotal:n[10]||(n[10]=o=>Ne.value=o)},null,8,["project-id","project-name"])]),compare:t(()=>[l(Ke,null,{header:t(()=>[a("div",Sl,[a("p",jl,[n[41]||(n[41]=d(" Compare two test runs side-by-side — status changes and duration deltas ",-1)),l(De,{topic:"project.compare"})]),e(le).length>=2?(s(),k(ae,{key:0,icon:"i-lucide-git-compare-arrows",size:"sm",variant:"outline",label:"Latest vs previous",onClick:Ut})):S("",!0)])]),default:t(()=>[a("div",wl,[a("div",Dl,[a("div",null,[n[42]||(n[42]=a("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Run A (baseline)",-1)),l(et,{modelValue:e(te),"onUpdate:modelValue":n[11]||(n[11]=o=>G(te)?te.value=o:null),items:e(le),placeholder:"Select run A..."},null,8,["modelValue","items"])]),a("div",null,[n[43]||(n[43]=a("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},"Run B (comparison)",-1)),l(et,{modelValue:e(se),"onUpdate:modelValue":n[12]||(n[12]=o=>G(se)?se.value=o:null),items:e(le),placeholder:"Select run B..."},null,8,["modelValue","items"])])]),e(Ye)?(s(),i("div",Rl,[l(yt,{name:"i-lucide-loader-2",class:"animate-spin mr-2"}),n[44]||(n[44]=d(" Loading run data… ",-1))])):e(te)&&e(se)&&e(We).length>0?(s(),i("div",Al,[a("div",Ul,[a("div",zl,[n[45]||(n[45]=a("span",{class:"text-xs font-semibold text-gray-500 uppercase tracking-wider mr-1"},"Status changes",-1)),e(J).newFailures>0?(s(),k(ne,{key:0,color:"error",variant:"soft",size:"lg"},{default:t(()=>[d(c(e(J).newFailures)+" new failure"+c(e(J).newFailures>1?"s":""),1)]),_:1})):S("",!0),e(J).recovered>0?(s(),k(ne,{key:1,color:"success",variant:"soft",size:"lg"},{default:t(()=>[d(c(e(J).recovered)+" recovered ",1)]),_:1})):S("",!0),e(J).stillFailing>0?(s(),k(ne,{key:2,color:"warning",variant:"soft",size:"lg"},{default:t(()=>[d(c(e(J).stillFailing)+" still failing ",1)]),_:1})):S("",!0),e(J).newFailures===0&&e(J).recovered===0&&e(J).stillFailing===0?(s(),i("span",Ml,"No status changes")):S("",!0)]),a("div",Fl,[n[46]||(n[46]=a("span",{class:"text-xs font-semibold text-gray-500 uppercase tracking-wider mr-1"},"Duration changes",-1)),e(J).regressed>0?(s(),k(ne,{key:0,color:"error",variant:"soft",size:"lg"},{default:t(()=>[d(c(e(J).regressed)+" regressed ",1)]),_:1})):S("",!0),e(J).improved>0?(s(),k(ne,{key:1,color:"success",variant:"soft",size:"lg"},{default:t(()=>[d(c(e(J).improved)+" improved ",1)]),_:1})):S("",!0),l(ne,{color:"neutral",variant:"soft",size:"lg"},{default:t(()=>[d(c(e(J).unchanged)+" unchanged ",1)]),_:1})])]),l(Ze,{data:e(We),columns:zt,ui:{base:"table-fixed border-separate border-spacing-0",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default"}},{"statusA-cell":t(({row:o})=>[o.original.statusA?(s(),k(ne,{key:1,color:("getStatusColor"in r?r.getStatusColor:e(tt))(o.original.statusA),class:"capitalize"},{default:t(()=>[d(c(o.original.statusA),1)]),_:2},1032,["color"])):(s(),i("span",Il,"—"))]),"statusB-cell":t(({row:o})=>[o.original.statusB?(s(),k(ne,{key:1,color:("getStatusColor"in r?r.getStatusColor:e(tt))(o.original.statusB),class:"capitalize"},{default:t(()=>[d(c(o.original.statusB),1)]),_:2},1032,["color"])):(s(),i("span",El,"—"))]),"durationA-cell":t(({row:o})=>[o.original.durationA!==null?(s(),i("span",Vl,c(("formatDuration"in r?r.formatDuration:e(Ce))(o.original.durationA)),1)):(s(),i("span",Bl,"—"))]),"durationB-cell":t(({row:o})=>[o.original.durationB!==null?(s(),i("span",Pl,c(("formatDuration"in r?r.formatDuration:e(Ce))(o.original.durationB)),1)):(s(),i("span",Nl,"—"))]),"delta-cell":t(({row:o})=>[o.original.delta===null?(s(),i("span",Kl,"—")):(s(),i("span",{key:1,class:re(o.original.delta>0?"text-red-600":o.original.delta<0?"text-green-600":"text-gray-500")},c(o.original.delta>0?"+":"")+c(("formatDuration"in r?r.formatDuration:e(Ce))(o.original.delta)),3))]),"percentChange-cell":t(({row:o})=>[o.original.percentChange===null?(s(),i("span",Ll,"—")):(s(),i("span",{key:1,class:re(o.original.percentChange>10?"text-red-600 font-medium":o.original.percentChange<-10?"text-green-600 font-medium":"text-gray-500")},c(o.original.percentChange>0?"+":"")+c(o.original.percentChange)+"% ",3))]),_:1},8,["data"])])):!e(te)||!e(se)?(s(),i("div",Ol," Select two runs to compare test results. ")):(s(),i("div",ql," No overlapping test cases found between the selected runs. "))])]),_:1})]),"spec-health":t(()=>[l(ks,{"project-id":String(e(f))},null,8,["project-id"])]),members:t(()=>[l(Ke,null,{header:t(()=>[a("div",Hl,[a("p",Xl,[n[47]||(n[47]=d(" Users with access to this project ",-1)),l(De,{topic:"project.members"})]),l(ae,{label:"Save changes",icon:"i-lucide-check",size:"sm",disabled:!e(be),onClick:p},null,8,["disabled"])])]),default:t(()=>[e(P).length>0?(s(),i("div",Gl,[(s(!0),i(Q,null,ie(e(P),o=>(s(),i("div",{key:o.id,class:"flex items-center justify-between rounded-lg border border-default px-4 py-3"},[a("div",null,[a("div",Jl,c(o.name||o.username),1),a("div",Ql,[a("span",null,"@"+c(o.username),1),l(ne,{color:o.role==="administrator"?"primary":o.role==="reporter"?"info":"neutral",variant:"subtle",size:"xs"},{default:t(()=>[d(c(o.role),1)]),_:2},1032,["color"]),o.global?(s(),i("span",Yl,"Global access")):S("",!0)])]),o.role!=="administrator"?(s(),k($s,{key:0,"model-value":e(O).includes(o.id),disabled:o.global,title:o.global?"Has global access — remove global assignment first":"",onChange:$e=>xe(o.id)},null,8,["model-value","disabled","title","onChange"])):(s(),i("span",Wl,"Admin"))]))),128))])):(s(),i("div",Zl,"Loading members…"))]),_:1})]),timeline:t(()=>[l(Cs,{"project-id":Number(e(f)),markers:e(j),environments:e(Fe),"can-edit":e(ee),"focus-marker-id":e(Be),onChanged:e(V),onClearFocus:n[13]||(n[13]=o=>Be.value=null)},null,8,["project-id","markers","environments","can-edit","focus-marker-id","onChanged"])]),_:1},8,["modelValue","items"])])]),_:1}),l(Et,null,{default:t(()=>[l(It,{open:e(v),title:"Delete project","onUpdate:open":n[17]||(n[17]=o=>{o||(v.value=!1)})},{body:t(()=>[a("div",er,[a("p",tr,[n[48]||(n[48]=d(" This will permanently delete ",-1)),a("strong",null,c(e(u)?.label||e(u)?.name),1),n[49]||(n[49]=d(" and all its test runs, reports, traces, and failure clusters. This action cannot be undone. ",-1))]),a("div",null,[a("label",sr,[n[50]||(n[50]=d(" Type the project key ",-1)),a("code",nr,c(e(u)?.name),1),n[51]||(n[51]=d(" to confirm: ",-1))]),l(ht,{modelValue:e(M),"onUpdate:modelValue":n[15]||(n[15]=o=>G(M)?M.value=o:null),placeholder:e(u)?.name,autofocus:"",onKeydown:Ms(g,["enter"])},null,8,["modelValue","placeholder"])])])]),footer:t(()=>[l(ae,{color:"neutral",variant:"ghost",label:"Cancel",onClick:n[16]||(n[16]=o=>v.value=!1)}),l(ae,{color:"error",label:"Delete project",icon:"i-lucide-trash-2",disabled:!e($),loading:e(K),onClick:g},null,8,["disabled","loading"])]),_:1},8,["open"])]),_:1}),l(Et,null,{default:t(()=>[l(It,{open:e(C)!==null,title:"Delete test run","onUpdate:open":n[20]||(n[20]=o=>{o||(C.value=null)})},{body:t(()=>[a("p",null,[n[52]||(n[52]=d(" Are you sure you want to delete ",-1)),a("strong",null,"Run #"+c(e(C)),1),n[53]||(n[53]=d("? This will also remove all associated test results, reports, and traces. This action cannot be undone. ",-1))])]),footer:t(()=>[l(ae,{color:"neutral",variant:"ghost",label:"Cancel",onClick:n[18]||(n[18]=o=>C.value=null)}),l(ae,{color:"error",label:"Delete",icon:"i-lucide-trash-2",loading:e(R)===e(C),onClick:n[19]||(n[19]=o=>m(e(C)))},null,8,["loading"])]),_:1},8,["open"])]),_:1})],64)}}});export{li as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as j,d as E,D as N,a as R,e as b,f as _,g as T,b as A}from"./
|
|
1
|
+
import{c as j,d as E,D as N,a as R,e as b,f as _,g as T,b as A}from"./nCjfWTGm.js";import{a0 as F,a1 as L,a2 as z,a3 as G,a4 as I,a5 as U,br as K,o as a,f as l,g as r,k as e,p as c,T as d,q as i,j as h,U as k,bu as Z,bF as J,bG as M,m,t as v,c as q,_ as Q,i as W,Z as X,$ as Y,h as x,b3 as B,bH as ee,a6 as te}from"./BPKwYP2Q.js";const se={slots:{overlay:"fixed inset-0 bg-elevated/75",content:"fixed bg-default divide-y divide-default sm:ring ring-default sm:shadow-lg flex flex-col focus:outline-none",header:"flex items-center gap-1.5 p-4 sm:px-6 min-h-(--ui-header-height)",wrapper:"",body:"flex-1 overflow-y-auto p-4 sm:p-6",footer:"flex items-center gap-1.5 p-4 sm:px-6",title:"text-highlighted font-semibold",description:"mt-1 text-muted text-sm",close:"absolute top-4 end-4"},variants:{side:{top:{content:""},right:{content:"max-w-md"},bottom:{content:""},left:{content:"max-w-md"}},inset:{true:{content:"rounded-lg"}},transition:{true:{overlay:"data-[state=open]:animate-[fade-in_200ms_ease-out] data-[state=closed]:animate-[fade-out_200ms_ease-in]"}}},compoundVariants:[{side:"top",inset:!0,class:{content:"max-h-[calc(100%-2rem)] inset-x-4 top-4"}},{side:"top",inset:!1,class:{content:"max-h-full inset-x-0 top-0"}},{side:"right",inset:!0,class:{content:"w-[calc(100%-2rem)] inset-y-4 right-4"}},{side:"right",inset:!1,class:{content:"w-full inset-y-0 right-0"}},{side:"bottom",inset:!0,class:{content:"max-h-[calc(100%-2rem)] inset-x-4 bottom-4"}},{side:"bottom",inset:!1,class:{content:"max-h-full inset-x-0 bottom-0"}},{side:"left",inset:!0,class:{content:"w-[calc(100%-2rem)] inset-y-4 left-4"}},{side:"left",inset:!1,class:{content:"w-full inset-y-0 left-0"}},{transition:!0,side:"top",class:{content:"data-[state=open]:animate-[slide-in-from-top_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-top_200ms_ease-in-out]"}},{transition:!0,side:"right",class:{content:"data-[state=open]:animate-[slide-in-from-right_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-right_200ms_ease-in-out]"}},{transition:!0,side:"bottom",class:{content:"data-[state=open]:animate-[slide-in-from-bottom_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-bottom_200ms_ease-in-out]"}},{transition:!0,side:"left",class:{content:"data-[state=open]:animate-[slide-in-from-left_200ms_ease-in-out] data-[state=closed]:animate-[slide-out-to-left_200ms_ease-in-out]"}}]},le={__name:"USlideover",props:{title:{type:String,required:!1},description:{type:String,required:!1},content:{type:Object,required:!1},overlay:{type:Boolean,required:!1,default:!0},transition:{type:Boolean,required:!1,default:!0},side:{type:null,required:!1,default:"right"},inset:{type:Boolean,required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},close:{type:[Boolean,Object],required:!1,default:!0},closeIcon:{type:null,required:!1},dismissible:{type:Boolean,required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},modal:{type:Boolean,required:!1,default:!0},unmountOnHide:{type:Boolean,required:!1}},emits:["leave","after:leave","enter","after:enter","close:prevent","update:open"],setup(D,{emit:O}){const P=D,p=O,s=F(),t=L("slideover",P),{t:C}=z(),$=G(),S=I(U(t,"open","defaultOpen","modal","unmountOnHide"),p),w=K(B(()=>t.portal)),H=B(()=>t.content),V=x(()=>t.dismissible?{pointerDownOutside:ee}:["interactOutside","escapeKeyDown"].reduce((n,y)=>(n[y]=f=>{f.preventDefault(),p("close:prevent")},n),{})),u=x(()=>te({extend:se,...$.ui?.slideover||{}})({transition:t.transition,side:t.side,inset:t.inset}));return(o,n)=>(a(),l(e(A),X(Y(e(S))),{default:r(({open:y,close:f})=>[s.default?(a(),l(e(j),{key:0,"as-child":"",class:c(e(t).class)},{default:r(()=>[d(o.$slots,"default",{open:y})]),_:2},1032,["class"])):i("",!0),h(e(E),k(e(w),{"force-mount":e(w).disabled&&e(t).unmountOnHide===!1||void 0}),{default:r(()=>[h(e(Z),null,{default:r(()=>[e(t).overlay?(a(),l(e(N),{key:0,"data-slot":"overlay",class:c(u.value.overlay({class:e(t).ui?.overlay}))},null,8,["class"])):i("",!0),h(e(R),k({"data-side":e(t).side,"data-slot":"content",class:u.value.content({class:[!s.default&&e(t).class,e(t).ui?.content]})},H.value,{onEnter:n[0]||(n[0]=g=>p("enter")),onAfterEnter:n[1]||(n[1]=g=>p("after:enter")),onLeave:n[2]||(n[2]=g=>p("leave")),onAfterLeave:n[3]||(n[3]=g=>p("after:leave"))},J(V.value)),{default:r(()=>[!e(t).title&&!s.title||!e(t).description&&!s.description||s.content?(a(),l(e(M),{key:0},{default:r(()=>[!e(t).title&&!s.title?(a(),l(e(b),{key:0})):s.content?(a(),l(e(b),{key:1},{default:r(()=>[d(o.$slots,"title",{},()=>[m(v(e(t).title),1)])]),_:3})):i("",!0),!e(t).description&&!s.description?(a(),l(e(_),{key:2})):s.content?(a(),l(e(_),{key:3},{default:r(()=>[d(o.$slots,"description",{},()=>[m(v(e(t).description),1)])]),_:3})):i("",!0)]),_:3})):i("",!0),d(o.$slots,"content",{close:f},()=>[s.header||e(t).title||s.title||e(t).description||s.description||e(t).close||s.close?(a(),q("div",{key:0,"data-slot":"header",class:c(u.value.header({class:e(t).ui?.header}))},[d(o.$slots,"header",{close:f},()=>[e(t).title||s.title||e(t).description||s.description?(a(),q("div",{key:0,"data-slot":"wrapper",class:c(u.value.wrapper({class:e(t).ui?.wrapper}))},[e(t).title||s.title?(a(),l(e(b),{key:0,"data-slot":"title",class:c(u.value.title({class:e(t).ui?.title}))},{default:r(()=>[d(o.$slots,"title",{},()=>[m(v(e(t).title),1)])]),_:3},8,["class"])):i("",!0),e(t).description||s.description?(a(),l(e(_),{key:1,"data-slot":"description",class:c(u.value.description({class:e(t).ui?.description}))},{default:r(()=>[d(o.$slots,"description",{},()=>[m(v(e(t).description),1)])]),_:3},8,["class"])):i("",!0)],2)):i("",!0),d(o.$slots,"actions"),e(t).close||s.close?(a(),l(e(T),{key:1,"as-child":""},{default:r(()=>[d(o.$slots,"close",{ui:u.value},()=>[e(t).close?(a(),l(Q,k({key:0,icon:e(t).closeIcon||e($).ui.icons.close,color:"neutral",variant:"ghost","aria-label":e(C)("slideover.close")},typeof e(t).close=="object"?e(t).close:{},{"data-slot":"close",class:u.value.close({class:e(t).ui?.close})}),null,16,["icon","aria-label","class"])):i("",!0)])]),_:2},1024)):i("",!0)])],2)):i("",!0),W("div",{"data-slot":"body",class:c(u.value.body({class:e(t).ui?.body}))},[d(o.$slots,"body",{close:f})],2),s.footer?(a(),q("div",{key:1,"data-slot":"footer",class:c(u.value.footer({class:e(t).ui?.footer}))},[d(o.$slots,"footer",{close:f})],2)):i("",!0)])]),_:2},1040,["data-side","class"])]),_:2},1024)]),_:2},1040,["force-mount"])]),_:3},16))}};export{le as _};
|