plum-e2e 2.10.0 → 2.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (661) hide show
  1. package/.env +1 -1
  2. package/CLAUDE.md +1 -1
  3. package/README.md +28 -27
  4. package/backend/app.js +1 -1
  5. package/backend/lib/csv.js +21 -0
  6. package/backend/lib/exportResponse.js +37 -0
  7. package/backend/lib/serverBootstrap.js +2 -2
  8. package/backend/lib/serverConfig.js +5 -3
  9. package/backend/mcp/server.js +44 -0
  10. package/backend/middleware/runnerOrAdmin.js +1 -1
  11. package/backend/package.json +1 -1
  12. package/backend/routes/reports.routes.js +19 -0
  13. package/backend/routes/runners.routes.js +1 -1
  14. package/backend/routes/test-cases.routes.js +12 -0
  15. package/backend/routes/test-runs.routes.js +17 -0
  16. package/backend/routes/test-suites.routes.js +34 -0
  17. package/backend/scripts/{manage-runners.mjs → manage-nodes.mjs} +67 -52
  18. package/backend/services/exportService.js +339 -0
  19. package/backend/services/testImportService.js +87 -0
  20. package/bin/plum.js +201 -75
  21. package/docker-compose.yml +1 -1
  22. package/frontend/.svelte-kit/adapter-node/.vite/manifest.json +49 -41
  23. package/frontend/.svelte-kit/{output/server/_app/immutable/assets/Toast.DENwYn3g.css → adapter-node/_app/immutable/assets/Button.C1zsJAUG.css} +1 -1
  24. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/ExportMenu.DsJQ1Qua.css +6 -0
  25. package/frontend/.svelte-kit/{output/client/_app/immutable/assets/_layout.HkPnpRl9.css → adapter-node/_app/immutable/assets/_layout.DWCC-fI9.css} +1 -1
  26. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.B3djLY18.css +6 -0
  27. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BNh9zY8Y.css +6 -0
  28. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.D1jbMcpb.css +6 -0
  29. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.DOC8fPSI.css +6 -0
  30. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Dm1nSEgE.css +6 -0
  31. package/frontend/.svelte-kit/adapter-node/chunks/{Toast.js → Button.js} +2 -17
  32. package/frontend/.svelte-kit/adapter-node/chunks/ConfirmModal.js +1 -1
  33. package/frontend/.svelte-kit/adapter-node/chunks/EmptyState.js +1 -1
  34. package/frontend/.svelte-kit/adapter-node/chunks/common.js +11 -4
  35. package/frontend/.svelte-kit/adapter-node/chunks/constants.js +1 -1
  36. package/frontend/.svelte-kit/adapter-node/chunks/internal.js +1 -1
  37. package/frontend/.svelte-kit/adapter-node/chunks/repository.js +21 -17
  38. package/frontend/.svelte-kit/adapter-node/entries/pages/live/_id_/_page.svelte.js +1 -1
  39. package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_id_/_page.svelte.js +9 -2
  40. package/frontend/.svelte-kit/adapter-node/entries/pages/scheduled-tests/_page.svelte.js +2 -5
  41. package/frontend/.svelte-kit/adapter-node/entries/pages/settings/_page.svelte.js +300 -253
  42. package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/_page.svelte.js +63 -36
  43. package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/runs/_id_/_page.svelte.js +3 -6
  44. package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/suites/_id_/_page.svelte.js +15 -17
  45. package/frontend/.svelte-kit/adapter-node/manifest-full.js +1 -1
  46. package/frontend/.svelte-kit/adapter-node/manifest.js +1 -1
  47. package/frontend/.svelte-kit/adapter-node/nodes/0.js +2 -2
  48. package/frontend/.svelte-kit/adapter-node/nodes/1.js +1 -1
  49. package/frontend/.svelte-kit/adapter-node/nodes/10.js +2 -2
  50. package/frontend/.svelte-kit/adapter-node/nodes/11.js +2 -2
  51. package/frontend/.svelte-kit/adapter-node/nodes/12.js +2 -2
  52. package/frontend/.svelte-kit/adapter-node/nodes/2.js +1 -1
  53. package/frontend/.svelte-kit/adapter-node/nodes/3.js +2 -2
  54. package/frontend/.svelte-kit/adapter-node/nodes/4.js +1 -1
  55. package/frontend/.svelte-kit/adapter-node/nodes/5.js +1 -1
  56. package/frontend/.svelte-kit/adapter-node/nodes/6.js +2 -2
  57. package/frontend/.svelte-kit/adapter-node/nodes/7.js +2 -2
  58. package/frontend/.svelte-kit/adapter-node/nodes/8.js +2 -2
  59. package/frontend/.svelte-kit/adapter-node/nodes/9.js +1 -1
  60. package/frontend/.svelte-kit/generated/server/internal.js +1 -1
  61. package/frontend/.svelte-kit/output/client/.vite/manifest.json +451 -414
  62. package/frontend/.svelte-kit/output/client/_app/immutable/assets/{0.CmJTG5mP.css → 0.DbhNvxzA.css} +1 -1
  63. package/frontend/.svelte-kit/output/client/_app/immutable/assets/10.D2ehp3UL.css +6 -0
  64. package/frontend/.svelte-kit/output/client/_app/immutable/assets/12.Dm1nSEgE.css +6 -0
  65. package/frontend/.svelte-kit/output/client/_app/immutable/assets/3.B3djLY18.css +6 -0
  66. package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.BofiCOMr.css +6 -0
  67. package/frontend/.svelte-kit/output/client/_app/immutable/assets/8.DOC8fPSI.css +6 -0
  68. package/frontend/.svelte-kit/{adapter-node/_app/immutable/assets/Toast.DENwYn3g.css → output/client/_app/immutable/assets/Button.C1zsJAUG.css} +1 -1
  69. package/frontend/.svelte-kit/output/client/_app/immutable/assets/ExportMenu.DsJQ1Qua.css +6 -0
  70. package/frontend/{build/client/_app/immutable/assets/_layout.HkPnpRl9.css → .svelte-kit/output/client/_app/immutable/assets/_layout.DWCC-fI9.css} +1 -1
  71. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.B3djLY18.css +6 -0
  72. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BNh9zY8Y.css +6 -0
  73. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.D1jbMcpb.css +6 -0
  74. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.DOC8fPSI.css +6 -0
  75. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Dm1nSEgE.css +6 -0
  76. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{C2_rQ4aY.js → 3MBVX4Yb.js} +1 -1
  77. package/frontend/{build/client/_app/immutable/chunks/CfkUW1vA.js → .svelte-kit/output/client/_app/immutable/chunks/6VDMVB5U.js} +1 -1
  78. package/frontend/{build/client/_app/immutable/chunks/B0_HKFXV.js → .svelte-kit/output/client/_app/immutable/chunks/B2lVGNml.js} +1 -1
  79. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/B74j8LrV.js +6 -0
  80. package/frontend/{build/client/_app/immutable/chunks/CboYYxrf.js → .svelte-kit/output/client/_app/immutable/chunks/BCh31ecr.js} +1 -1
  81. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BDb8hZHu.js +6 -0
  82. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BIDsfWFz.js +6 -0
  83. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{CeH-RgMb.js → BIf7lHIm.js} +1 -1
  84. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BTV7EXZb.js +11 -0
  85. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DAmOMhaf.js → BWGoOYU0.js} +1 -1
  86. package/frontend/{build/client/_app/immutable/chunks/DiVmSEJa.js → .svelte-kit/output/client/_app/immutable/chunks/BX-5iVGy.js} +2 -2
  87. package/frontend/{build/client/_app/immutable/chunks/BAvTKHxT.js → .svelte-kit/output/client/_app/immutable/chunks/BnXsGCy3.js} +1 -1
  88. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/C4Z3p6jE.js +6 -0
  89. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CNpD-yNH.js +6 -0
  90. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CUPWZLIN.js +6 -0
  91. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{Ck6C3Fl0.js → CXQhSK1T.js} +1 -1
  92. package/frontend/{build/client/_app/immutable/chunks/C00jnSU2.js → .svelte-kit/output/client/_app/immutable/chunks/CtgCYzu5.js} +1 -1
  93. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/D72giPTu.js +6 -0
  94. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{GDjpV3r7.js → DDx3no2z.js} +1 -1
  95. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DFZtPGTY.js +6 -0
  96. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/D_thT6pZ.js +6 -0
  97. package/frontend/{build/client/_app/immutable/chunks/C8S7qQjQ.js → .svelte-kit/output/client/_app/immutable/chunks/DeiVAbyn.js} +1 -1
  98. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Dn1b1Jgc.js +6 -0
  99. package/frontend/{build/client/_app/immutable/chunks/d2K3c8Kx.js → .svelte-kit/output/client/_app/immutable/chunks/QwDXcLXz.js} +1 -1
  100. package/frontend/{build/client/_app/immutable/chunks/Cgw8TOOy.js → .svelte-kit/output/client/_app/immutable/chunks/gCgJ3Cwu.js} +1 -1
  101. package/frontend/{build/client/_app/immutable/chunks/BJ_ypKl3.js → .svelte-kit/output/client/_app/immutable/chunks/htkwR9b-.js} +1 -1
  102. package/frontend/{build/client/_app/immutable/chunks/C7uEQ-LH.js → .svelte-kit/output/client/_app/immutable/chunks/iL4SCrvY.js} +1 -1
  103. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{CoTEzvLa.js → kFFd6Oo5.js} +1 -1
  104. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DWzEJYIF.js → prk8PJfA.js} +1 -1
  105. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/qvxlSGpD.js +6 -0
  106. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{B00vxw57.js → tsOANt55.js} +1 -1
  107. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/zXSLr47H.js +6 -0
  108. package/frontend/.svelte-kit/output/client/_app/immutable/entry/app.oEEXlUWx.js +7 -0
  109. package/frontend/{build/client/_app/immutable/entry/start.BXOLyf9R.js → .svelte-kit/output/client/_app/immutable/entry/start.BtJ124rC.js} +1 -1
  110. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.coxCxRRE.js +6 -0
  111. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{1.BI97il3r.js → 1.C-Zryp-y.js} +1 -1
  112. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/10.CXqf0Rbs.js +6 -0
  113. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/11.PLIMGzrY.js +6 -0
  114. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/12.BGCTaTPG.js +6 -0
  115. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{2.Dr6yugXz.js → 2.Bno00fr8.js} +1 -1
  116. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.HmZmGlze.js +6 -0
  117. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{4.DDADylfF.js → 4.ahxFrDUH.js} +1 -1
  118. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.BXasF8ka.js +6 -0
  119. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.DYiAtU_m.js +10 -0
  120. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/7.B_XntBZ1.js +6 -0
  121. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/8.iy5VcxjU.js +9 -0
  122. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{9.BOK0GNF_.js → 9.Bcqk4p04.js} +1 -1
  123. package/frontend/.svelte-kit/output/client/_app/version.json +1 -1
  124. package/frontend/.svelte-kit/output/server/.vite/manifest.json +49 -41
  125. package/frontend/{build/client/_app/immutable/assets/Toast.DENwYn3g.css → .svelte-kit/output/server/_app/immutable/assets/Button.C1zsJAUG.css} +1 -1
  126. package/frontend/.svelte-kit/output/server/_app/immutable/assets/ExportMenu.DsJQ1Qua.css +6 -0
  127. package/frontend/.svelte-kit/{adapter-node/_app/immutable/assets/_layout.HkPnpRl9.css → output/server/_app/immutable/assets/_layout.DWCC-fI9.css} +1 -1
  128. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.B3djLY18.css +6 -0
  129. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BNh9zY8Y.css +6 -0
  130. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.D1jbMcpb.css +6 -0
  131. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.DOC8fPSI.css +6 -0
  132. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Dm1nSEgE.css +6 -0
  133. package/frontend/.svelte-kit/output/server/chunks/{Toast.js → Button.js} +2 -17
  134. package/frontend/.svelte-kit/output/server/chunks/ConfirmModal.js +1 -1
  135. package/frontend/.svelte-kit/output/server/chunks/EmptyState.js +1 -1
  136. package/frontend/.svelte-kit/output/server/chunks/common.js +11 -4
  137. package/frontend/.svelte-kit/output/server/chunks/constants.js +1 -1
  138. package/frontend/.svelte-kit/output/server/chunks/internal.js +1 -1
  139. package/frontend/.svelte-kit/output/server/chunks/repository.js +21 -17
  140. package/frontend/.svelte-kit/output/server/entries/pages/live/_id_/_page.svelte.js +1 -1
  141. package/frontend/.svelte-kit/output/server/entries/pages/reports/_id_/_page.svelte.js +9 -2
  142. package/frontend/.svelte-kit/output/server/entries/pages/scheduled-tests/_page.svelte.js +2 -5
  143. package/frontend/.svelte-kit/output/server/entries/pages/settings/_page.svelte.js +300 -253
  144. package/frontend/.svelte-kit/output/server/entries/pages/test-repository/_page.svelte.js +63 -36
  145. package/frontend/.svelte-kit/output/server/entries/pages/test-repository/runs/_id_/_page.svelte.js +3 -6
  146. package/frontend/.svelte-kit/output/server/entries/pages/test-repository/suites/_id_/_page.svelte.js +15 -17
  147. package/frontend/.svelte-kit/output/server/manifest-full.js +1 -1
  148. package/frontend/.svelte-kit/output/server/manifest.js +1 -1
  149. package/frontend/.svelte-kit/output/server/nodes/0.js +2 -2
  150. package/frontend/.svelte-kit/output/server/nodes/1.js +1 -1
  151. package/frontend/.svelte-kit/output/server/nodes/10.js +2 -2
  152. package/frontend/.svelte-kit/output/server/nodes/11.js +2 -2
  153. package/frontend/.svelte-kit/output/server/nodes/12.js +2 -2
  154. package/frontend/.svelte-kit/output/server/nodes/2.js +1 -1
  155. package/frontend/.svelte-kit/output/server/nodes/3.js +2 -2
  156. package/frontend/.svelte-kit/output/server/nodes/4.js +1 -1
  157. package/frontend/.svelte-kit/output/server/nodes/5.js +1 -1
  158. package/frontend/.svelte-kit/output/server/nodes/6.js +2 -2
  159. package/frontend/.svelte-kit/output/server/nodes/7.js +2 -2
  160. package/frontend/.svelte-kit/output/server/nodes/8.js +2 -2
  161. package/frontend/.svelte-kit/output/server/nodes/9.js +1 -1
  162. package/frontend/build/client/_app/immutable/assets/{0.CmJTG5mP.css → 0.DbhNvxzA.css} +1 -1
  163. package/frontend/build/client/_app/immutable/assets/0.DbhNvxzA.css.br +0 -0
  164. package/frontend/build/client/_app/immutable/assets/0.DbhNvxzA.css.gz +0 -0
  165. package/frontend/build/client/_app/immutable/assets/10.D2ehp3UL.css +6 -0
  166. package/frontend/build/client/_app/immutable/assets/10.D2ehp3UL.css.br +0 -0
  167. package/frontend/build/client/_app/immutable/assets/10.D2ehp3UL.css.gz +0 -0
  168. package/frontend/build/client/_app/immutable/assets/12.Dm1nSEgE.css +6 -0
  169. package/frontend/build/client/_app/immutable/assets/12.Dm1nSEgE.css.br +0 -0
  170. package/frontend/build/client/_app/immutable/assets/12.Dm1nSEgE.css.gz +0 -0
  171. package/frontend/build/client/_app/immutable/assets/3.B3djLY18.css +6 -0
  172. package/frontend/build/client/_app/immutable/assets/3.B3djLY18.css.br +0 -0
  173. package/frontend/build/client/_app/immutable/assets/3.B3djLY18.css.gz +0 -0
  174. package/frontend/build/client/_app/immutable/assets/6.BofiCOMr.css +6 -0
  175. package/frontend/build/client/_app/immutable/assets/6.BofiCOMr.css.br +0 -0
  176. package/frontend/build/client/_app/immutable/assets/6.BofiCOMr.css.gz +0 -0
  177. package/frontend/build/client/_app/immutable/assets/8.DOC8fPSI.css +6 -0
  178. package/frontend/build/client/_app/immutable/assets/8.DOC8fPSI.css.br +0 -0
  179. package/frontend/build/client/_app/immutable/assets/8.DOC8fPSI.css.gz +0 -0
  180. package/frontend/{.svelte-kit/output/client/_app/immutable/assets/Toast.DENwYn3g.css → build/client/_app/immutable/assets/Button.C1zsJAUG.css} +1 -1
  181. package/frontend/build/client/_app/immutable/assets/Button.C1zsJAUG.css.br +0 -0
  182. package/frontend/build/client/_app/immutable/assets/Button.C1zsJAUG.css.gz +0 -0
  183. package/frontend/build/client/_app/immutable/assets/ExportMenu.DsJQ1Qua.css +6 -0
  184. package/frontend/build/client/_app/immutable/assets/ExportMenu.DsJQ1Qua.css.br +0 -0
  185. package/frontend/build/client/_app/immutable/assets/ExportMenu.DsJQ1Qua.css.gz +0 -0
  186. package/frontend/{.svelte-kit/output/server/_app/immutable/assets/_layout.HkPnpRl9.css → build/client/_app/immutable/assets/_layout.DWCC-fI9.css} +1 -1
  187. package/frontend/build/client/_app/immutable/assets/_layout.DWCC-fI9.css.br +0 -0
  188. package/frontend/build/client/_app/immutable/assets/_layout.DWCC-fI9.css.gz +0 -0
  189. package/frontend/build/client/_app/immutable/assets/_page.B3djLY18.css +6 -0
  190. package/frontend/build/client/_app/immutable/assets/_page.B3djLY18.css.br +0 -0
  191. package/frontend/build/client/_app/immutable/assets/_page.B3djLY18.css.gz +0 -0
  192. package/frontend/build/client/_app/immutable/assets/_page.BNh9zY8Y.css +6 -0
  193. package/frontend/build/client/_app/immutable/assets/_page.BNh9zY8Y.css.br +0 -0
  194. package/frontend/build/client/_app/immutable/assets/_page.BNh9zY8Y.css.gz +0 -0
  195. package/frontend/build/client/_app/immutable/assets/_page.D1jbMcpb.css +6 -0
  196. package/frontend/build/client/_app/immutable/assets/_page.D1jbMcpb.css.br +0 -0
  197. package/frontend/build/client/_app/immutable/assets/_page.D1jbMcpb.css.gz +0 -0
  198. package/frontend/build/client/_app/immutable/assets/_page.DOC8fPSI.css +6 -0
  199. package/frontend/build/client/_app/immutable/assets/_page.DOC8fPSI.css.br +0 -0
  200. package/frontend/build/client/_app/immutable/assets/_page.DOC8fPSI.css.gz +0 -0
  201. package/frontend/build/client/_app/immutable/assets/_page.Dm1nSEgE.css +6 -0
  202. package/frontend/build/client/_app/immutable/assets/_page.Dm1nSEgE.css.br +0 -0
  203. package/frontend/build/client/_app/immutable/assets/_page.Dm1nSEgE.css.gz +0 -0
  204. package/frontend/build/client/_app/immutable/chunks/{C2_rQ4aY.js → 3MBVX4Yb.js} +1 -1
  205. package/frontend/build/client/_app/immutable/chunks/3MBVX4Yb.js.br +0 -0
  206. package/frontend/build/client/_app/immutable/chunks/3MBVX4Yb.js.gz +0 -0
  207. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/CfkUW1vA.js → build/client/_app/immutable/chunks/6VDMVB5U.js} +1 -1
  208. package/frontend/build/client/_app/immutable/chunks/6VDMVB5U.js.br +0 -0
  209. package/frontend/build/client/_app/immutable/chunks/6VDMVB5U.js.gz +0 -0
  210. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/B0_HKFXV.js → build/client/_app/immutable/chunks/B2lVGNml.js} +1 -1
  211. package/frontend/build/client/_app/immutable/chunks/B2lVGNml.js.br +0 -0
  212. package/frontend/build/client/_app/immutable/chunks/B2lVGNml.js.gz +0 -0
  213. package/frontend/build/client/_app/immutable/chunks/B74j8LrV.js +6 -0
  214. package/frontend/build/client/_app/immutable/chunks/B74j8LrV.js.br +0 -0
  215. package/frontend/build/client/_app/immutable/chunks/B74j8LrV.js.gz +0 -0
  216. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/CboYYxrf.js → build/client/_app/immutable/chunks/BCh31ecr.js} +1 -1
  217. package/frontend/build/client/_app/immutable/chunks/BCh31ecr.js.br +6 -0
  218. package/frontend/build/client/_app/immutable/chunks/BCh31ecr.js.gz +0 -0
  219. package/frontend/build/client/_app/immutable/chunks/BDb8hZHu.js +6 -0
  220. package/frontend/build/client/_app/immutable/chunks/BDb8hZHu.js.br +0 -0
  221. package/frontend/build/client/_app/immutable/chunks/BDb8hZHu.js.gz +0 -0
  222. package/frontend/build/client/_app/immutable/chunks/BIDsfWFz.js +6 -0
  223. package/frontend/build/client/_app/immutable/chunks/BIDsfWFz.js.br +0 -0
  224. package/frontend/build/client/_app/immutable/chunks/BIDsfWFz.js.gz +0 -0
  225. package/frontend/build/client/_app/immutable/chunks/{CeH-RgMb.js → BIf7lHIm.js} +1 -1
  226. package/frontend/build/client/_app/immutable/chunks/BIf7lHIm.js.br +0 -0
  227. package/frontend/build/client/_app/immutable/chunks/{CeH-RgMb.js.gz → BIf7lHIm.js.gz} +0 -0
  228. package/frontend/build/client/_app/immutable/chunks/BTV7EXZb.js +11 -0
  229. package/frontend/build/client/_app/immutable/chunks/BTV7EXZb.js.br +0 -0
  230. package/frontend/build/client/_app/immutable/chunks/BTV7EXZb.js.gz +0 -0
  231. package/frontend/build/client/_app/immutable/chunks/{DAmOMhaf.js → BWGoOYU0.js} +1 -1
  232. package/frontend/build/client/_app/immutable/chunks/BWGoOYU0.js.br +0 -0
  233. package/frontend/build/client/_app/immutable/chunks/BWGoOYU0.js.gz +0 -0
  234. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/DiVmSEJa.js → build/client/_app/immutable/chunks/BX-5iVGy.js} +2 -2
  235. package/frontend/build/client/_app/immutable/chunks/BX-5iVGy.js.br +0 -0
  236. package/frontend/build/client/_app/immutable/chunks/BX-5iVGy.js.gz +0 -0
  237. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/BAvTKHxT.js → build/client/_app/immutable/chunks/BnXsGCy3.js} +1 -1
  238. package/frontend/build/client/_app/immutable/chunks/BnXsGCy3.js.br +0 -0
  239. package/frontend/build/client/_app/immutable/chunks/BnXsGCy3.js.gz +0 -0
  240. package/frontend/build/client/_app/immutable/chunks/C4Z3p6jE.js +6 -0
  241. package/frontend/build/client/_app/immutable/chunks/C4Z3p6jE.js.br +0 -0
  242. package/frontend/build/client/_app/immutable/chunks/C4Z3p6jE.js.gz +0 -0
  243. package/frontend/build/client/_app/immutable/chunks/CNpD-yNH.js +6 -0
  244. package/frontend/build/client/_app/immutable/chunks/CNpD-yNH.js.br +0 -0
  245. package/frontend/build/client/_app/immutable/chunks/CNpD-yNH.js.gz +0 -0
  246. package/frontend/build/client/_app/immutable/chunks/CUPWZLIN.js +6 -0
  247. package/frontend/build/client/_app/immutable/chunks/CUPWZLIN.js.br +0 -0
  248. package/frontend/build/client/_app/immutable/chunks/CUPWZLIN.js.gz +0 -0
  249. package/frontend/build/client/_app/immutable/chunks/{Ck6C3Fl0.js → CXQhSK1T.js} +1 -1
  250. package/frontend/build/client/_app/immutable/chunks/CXQhSK1T.js.br +0 -0
  251. package/frontend/build/client/_app/immutable/chunks/CXQhSK1T.js.gz +0 -0
  252. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/C00jnSU2.js → build/client/_app/immutable/chunks/CtgCYzu5.js} +1 -1
  253. package/frontend/build/client/_app/immutable/chunks/CtgCYzu5.js.br +0 -0
  254. package/frontend/build/client/_app/immutable/chunks/CtgCYzu5.js.gz +0 -0
  255. package/frontend/build/client/_app/immutable/chunks/D72giPTu.js +6 -0
  256. package/frontend/build/client/_app/immutable/chunks/D72giPTu.js.br +0 -0
  257. package/frontend/build/client/_app/immutable/chunks/D72giPTu.js.gz +0 -0
  258. package/frontend/build/client/_app/immutable/chunks/{GDjpV3r7.js → DDx3no2z.js} +1 -1
  259. package/frontend/build/client/_app/immutable/chunks/DDx3no2z.js.br +0 -0
  260. package/frontend/build/client/_app/immutable/chunks/DDx3no2z.js.gz +0 -0
  261. package/frontend/build/client/_app/immutable/chunks/DFZtPGTY.js +6 -0
  262. package/frontend/build/client/_app/immutable/chunks/DFZtPGTY.js.br +0 -0
  263. package/frontend/build/client/_app/immutable/chunks/DFZtPGTY.js.gz +0 -0
  264. package/frontend/build/client/_app/immutable/chunks/D_thT6pZ.js +6 -0
  265. package/frontend/build/client/_app/immutable/chunks/D_thT6pZ.js.br +0 -0
  266. package/frontend/build/client/_app/immutable/chunks/D_thT6pZ.js.gz +0 -0
  267. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/C8S7qQjQ.js → build/client/_app/immutable/chunks/DeiVAbyn.js} +1 -1
  268. package/frontend/build/client/_app/immutable/chunks/DeiVAbyn.js.br +6 -0
  269. package/frontend/build/client/_app/immutable/chunks/DeiVAbyn.js.gz +0 -0
  270. package/frontend/build/client/_app/immutable/chunks/Dn1b1Jgc.js +6 -0
  271. package/frontend/build/client/_app/immutable/chunks/Dn1b1Jgc.js.br +0 -0
  272. package/frontend/build/client/_app/immutable/chunks/Dn1b1Jgc.js.gz +0 -0
  273. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/d2K3c8Kx.js → build/client/_app/immutable/chunks/QwDXcLXz.js} +1 -1
  274. package/frontend/build/client/_app/immutable/chunks/QwDXcLXz.js.br +0 -0
  275. package/frontend/build/client/_app/immutable/chunks/QwDXcLXz.js.gz +0 -0
  276. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/Cgw8TOOy.js → build/client/_app/immutable/chunks/gCgJ3Cwu.js} +1 -1
  277. package/frontend/build/client/_app/immutable/chunks/gCgJ3Cwu.js.br +0 -0
  278. package/frontend/build/client/_app/immutable/chunks/gCgJ3Cwu.js.gz +0 -0
  279. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/BJ_ypKl3.js → build/client/_app/immutable/chunks/htkwR9b-.js} +1 -1
  280. package/frontend/build/client/_app/immutable/chunks/htkwR9b-.js.br +0 -0
  281. package/frontend/build/client/_app/immutable/chunks/htkwR9b-.js.gz +0 -0
  282. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/C7uEQ-LH.js → build/client/_app/immutable/chunks/iL4SCrvY.js} +1 -1
  283. package/frontend/build/client/_app/immutable/chunks/iL4SCrvY.js.br +0 -0
  284. package/frontend/build/client/_app/immutable/chunks/iL4SCrvY.js.gz +0 -0
  285. package/frontend/build/client/_app/immutable/chunks/{CoTEzvLa.js → kFFd6Oo5.js} +1 -1
  286. package/frontend/build/client/_app/immutable/chunks/kFFd6Oo5.js.br +0 -0
  287. package/frontend/build/client/_app/immutable/chunks/kFFd6Oo5.js.gz +0 -0
  288. package/frontend/build/client/_app/immutable/chunks/{DWzEJYIF.js → prk8PJfA.js} +1 -1
  289. package/frontend/build/client/_app/immutable/chunks/prk8PJfA.js.br +0 -0
  290. package/frontend/build/client/_app/immutable/chunks/prk8PJfA.js.gz +0 -0
  291. package/frontend/build/client/_app/immutable/chunks/qvxlSGpD.js +6 -0
  292. package/frontend/build/client/_app/immutable/chunks/qvxlSGpD.js.br +0 -0
  293. package/frontend/build/client/_app/immutable/chunks/qvxlSGpD.js.gz +0 -0
  294. package/frontend/build/client/_app/immutable/chunks/{B00vxw57.js → tsOANt55.js} +1 -1
  295. package/frontend/build/client/_app/immutable/chunks/tsOANt55.js.br +0 -0
  296. package/frontend/build/client/_app/immutable/chunks/tsOANt55.js.gz +0 -0
  297. package/frontend/build/client/_app/immutable/chunks/zXSLr47H.js +6 -0
  298. package/frontend/build/client/_app/immutable/chunks/zXSLr47H.js.br +0 -0
  299. package/frontend/build/client/_app/immutable/chunks/zXSLr47H.js.gz +0 -0
  300. package/frontend/build/client/_app/immutable/entry/app.oEEXlUWx.js +7 -0
  301. package/frontend/build/client/_app/immutable/entry/app.oEEXlUWx.js.br +0 -0
  302. package/frontend/build/client/_app/immutable/entry/app.oEEXlUWx.js.gz +0 -0
  303. package/frontend/{.svelte-kit/output/client/_app/immutable/entry/start.BXOLyf9R.js → build/client/_app/immutable/entry/start.BtJ124rC.js} +1 -1
  304. package/frontend/build/client/_app/immutable/entry/{start.BXOLyf9R.js.br → start.BtJ124rC.js.br} +1 -1
  305. package/frontend/build/client/_app/immutable/entry/{start.BXOLyf9R.js.gz → start.BtJ124rC.js.gz} +0 -0
  306. package/frontend/build/client/_app/immutable/nodes/0.coxCxRRE.js +6 -0
  307. package/frontend/build/client/_app/immutable/nodes/0.coxCxRRE.js.br +0 -0
  308. package/frontend/build/client/_app/immutable/nodes/0.coxCxRRE.js.gz +0 -0
  309. package/frontend/build/client/_app/immutable/nodes/{1.BI97il3r.js → 1.C-Zryp-y.js} +1 -1
  310. package/frontend/build/client/_app/immutable/nodes/1.C-Zryp-y.js.br +0 -0
  311. package/frontend/build/client/_app/immutable/nodes/1.C-Zryp-y.js.gz +0 -0
  312. package/frontend/build/client/_app/immutable/nodes/10.CXqf0Rbs.js +6 -0
  313. package/frontend/build/client/_app/immutable/nodes/10.CXqf0Rbs.js.br +0 -0
  314. package/frontend/build/client/_app/immutable/nodes/10.CXqf0Rbs.js.gz +0 -0
  315. package/frontend/build/client/_app/immutable/nodes/11.PLIMGzrY.js +6 -0
  316. package/frontend/build/client/_app/immutable/nodes/11.PLIMGzrY.js.br +0 -0
  317. package/frontend/build/client/_app/immutable/nodes/11.PLIMGzrY.js.gz +0 -0
  318. package/frontend/build/client/_app/immutable/nodes/12.BGCTaTPG.js +6 -0
  319. package/frontend/build/client/_app/immutable/nodes/12.BGCTaTPG.js.br +0 -0
  320. package/frontend/build/client/_app/immutable/nodes/12.BGCTaTPG.js.gz +0 -0
  321. package/frontend/build/client/_app/immutable/nodes/{2.Dr6yugXz.js → 2.Bno00fr8.js} +1 -1
  322. package/frontend/build/client/_app/immutable/nodes/2.Bno00fr8.js.br +0 -0
  323. package/frontend/build/client/_app/immutable/nodes/2.Bno00fr8.js.gz +0 -0
  324. package/frontend/build/client/_app/immutable/nodes/3.HmZmGlze.js +6 -0
  325. package/frontend/build/client/_app/immutable/nodes/3.HmZmGlze.js.br +0 -0
  326. package/frontend/build/client/_app/immutable/nodes/3.HmZmGlze.js.gz +0 -0
  327. package/frontend/build/client/_app/immutable/nodes/{4.DDADylfF.js → 4.ahxFrDUH.js} +1 -1
  328. package/frontend/build/client/_app/immutable/nodes/4.ahxFrDUH.js.br +0 -0
  329. package/frontend/build/client/_app/immutable/nodes/4.ahxFrDUH.js.gz +0 -0
  330. package/frontend/build/client/_app/immutable/nodes/5.BXasF8ka.js +6 -0
  331. package/frontend/build/client/_app/immutable/nodes/5.BXasF8ka.js.br +0 -0
  332. package/frontend/build/client/_app/immutable/nodes/5.BXasF8ka.js.gz +0 -0
  333. package/frontend/build/client/_app/immutable/nodes/6.DYiAtU_m.js +10 -0
  334. package/frontend/build/client/_app/immutable/nodes/6.DYiAtU_m.js.br +0 -0
  335. package/frontend/build/client/_app/immutable/nodes/6.DYiAtU_m.js.gz +0 -0
  336. package/frontend/build/client/_app/immutable/nodes/7.B_XntBZ1.js +6 -0
  337. package/frontend/build/client/_app/immutable/nodes/7.B_XntBZ1.js.br +0 -0
  338. package/frontend/build/client/_app/immutable/nodes/7.B_XntBZ1.js.gz +0 -0
  339. package/frontend/build/client/_app/immutable/nodes/8.iy5VcxjU.js +9 -0
  340. package/frontend/build/client/_app/immutable/nodes/8.iy5VcxjU.js.br +0 -0
  341. package/frontend/build/client/_app/immutable/nodes/8.iy5VcxjU.js.gz +0 -0
  342. package/frontend/build/client/_app/immutable/nodes/{9.BOK0GNF_.js → 9.Bcqk4p04.js} +1 -1
  343. package/frontend/build/client/_app/immutable/nodes/9.Bcqk4p04.js.br +0 -0
  344. package/frontend/build/client/_app/immutable/nodes/9.Bcqk4p04.js.gz +0 -0
  345. package/frontend/build/client/_app/version.json +1 -1
  346. package/frontend/build/client/_app/version.json.br +0 -0
  347. package/frontend/build/client/_app/version.json.gz +0 -0
  348. package/frontend/build/server/chunks/0-C9vi7MPa.js +22 -0
  349. package/frontend/build/server/chunks/0-C9vi7MPa.js.map +5 -0
  350. package/frontend/build/server/chunks/{1-B3HpigzL.js → 1-DzLSP_fj.js} +2 -2
  351. package/frontend/build/server/chunks/{1-B3HpigzL.js.map → 1-DzLSP_fj.js.map} +1 -1
  352. package/frontend/build/server/chunks/10-C2C3V4ib.js +14 -0
  353. package/frontend/build/server/chunks/10-C2C3V4ib.js.map +5 -0
  354. package/frontend/build/server/chunks/11-TJq4Q43D.js +14 -0
  355. package/frontend/build/server/chunks/11-TJq4Q43D.js.map +5 -0
  356. package/frontend/build/server/chunks/12-B1JDiNwh.js +14 -0
  357. package/frontend/build/server/chunks/12-B1JDiNwh.js.map +5 -0
  358. package/frontend/build/server/chunks/2-Dalgd2D4.js +14 -0
  359. package/frontend/build/server/chunks/{2-DioMbKbC.js.map → 2-Dalgd2D4.js.map} +1 -1
  360. package/frontend/build/server/chunks/3-DZ2GSPqb.js +14 -0
  361. package/frontend/build/server/chunks/3-DZ2GSPqb.js.map +5 -0
  362. package/frontend/build/server/chunks/4-C-1FSKpN.js +14 -0
  363. package/frontend/build/server/chunks/{4-BM-49dbE.js.map → 4-C-1FSKpN.js.map} +1 -1
  364. package/frontend/build/server/chunks/5-ZN8cEN5r.js +14 -0
  365. package/frontend/build/server/chunks/{5-Brx_KOzy.js.map → 5-ZN8cEN5r.js.map} +1 -1
  366. package/frontend/build/server/chunks/6-CInDe8Ui.js +14 -0
  367. package/frontend/build/server/chunks/6-CInDe8Ui.js.map +5 -0
  368. package/frontend/build/server/chunks/7-DTNbErSe.js +14 -0
  369. package/frontend/build/server/chunks/7-DTNbErSe.js.map +5 -0
  370. package/frontend/build/server/chunks/8-DTzm-G0z.js +14 -0
  371. package/frontend/build/server/chunks/8-DTzm-G0z.js.map +5 -0
  372. package/frontend/build/server/chunks/9-CjMorbDi.js +14 -0
  373. package/frontend/build/server/chunks/{9-BMAKiAem.js.map → 9-CjMorbDi.js.map} +1 -1
  374. package/frontend/build/server/chunks/{Toast-CHB87F8k.js → Button-B9h9viZX.js} +3 -17
  375. package/frontend/build/server/chunks/Button-B9h9viZX.js.map +5 -0
  376. package/frontend/build/server/chunks/{ConfirmModal-CtGWHl0v.js → ConfirmModal-C6Cz898n.js} +2 -2
  377. package/frontend/build/server/chunks/{ConfirmModal-CtGWHl0v.js.map → ConfirmModal-C6Cz898n.js.map} +1 -1
  378. package/frontend/build/server/chunks/{EmptyState-Zpm9tJe1.js → EmptyState-CRtsJIv6.js} +2 -2
  379. package/frontend/build/server/chunks/{EmptyState-Zpm9tJe1.js.map → EmptyState-CRtsJIv6.js.map} +1 -1
  380. package/frontend/build/server/chunks/{_layout.svelte-C_6nsIpT.js → _layout.svelte-CiX-oQp_.js} +4 -4
  381. package/frontend/build/server/chunks/{_layout.svelte-C_6nsIpT.js.map → _layout.svelte-CiX-oQp_.js.map} +1 -1
  382. package/frontend/build/server/chunks/{_page.svelte-CTebwzwy.js → _page.svelte-BYYUOBOB.js} +12 -7
  383. package/frontend/build/server/chunks/_page.svelte-BYYUOBOB.js.map +5 -0
  384. package/frontend/build/server/chunks/{_page.svelte-DHZhNTPg.js → _page.svelte-BaxqeEYc.js} +68 -42
  385. package/frontend/build/server/chunks/_page.svelte-BaxqeEYc.js.map +5 -0
  386. package/frontend/build/server/chunks/_page.svelte-C2WqvInJ.js +898 -0
  387. package/frontend/build/server/chunks/_page.svelte-C2WqvInJ.js.map +5 -0
  388. package/frontend/build/server/chunks/{_page.svelte-Bamoq11m.js → _page.svelte-CP6jA1ex.js} +6 -6
  389. package/frontend/build/server/chunks/{_page.svelte-Bamoq11m.js.map → _page.svelte-CP6jA1ex.js.map} +1 -1
  390. package/frontend/build/server/chunks/{_page.svelte-CbTrCeeX.js → _page.svelte-D6b-klLK.js} +9 -9
  391. package/frontend/build/server/chunks/{_page.svelte-CbTrCeeX.js.map → _page.svelte-D6b-klLK.js.map} +1 -1
  392. package/frontend/build/server/chunks/{_page.svelte-DObTHQe2.js → _page.svelte-DAIQT067.js} +8 -8
  393. package/frontend/build/server/chunks/_page.svelte-DAIQT067.js.map +5 -0
  394. package/frontend/build/server/chunks/{_page.svelte-CmJKt3-H.js → _page.svelte-DBjTpquQ.js} +18 -21
  395. package/frontend/build/server/chunks/_page.svelte-DBjTpquQ.js.map +5 -0
  396. package/frontend/build/server/chunks/{_page.svelte-CAlhaCzS.js → _page.svelte-mZF4NrfU.js} +9 -12
  397. package/frontend/build/server/chunks/_page.svelte-mZF4NrfU.js.map +5 -0
  398. package/frontend/build/server/chunks/{_page.svelte-BNwU9zza.js → _page.svelte-nrlgIFaU.js} +8 -11
  399. package/frontend/build/server/chunks/_page.svelte-nrlgIFaU.js.map +5 -0
  400. package/frontend/build/server/chunks/{common-DYYTVHPw.js → common-DS-Z0UFe.js} +7 -2
  401. package/frontend/build/server/chunks/common-DS-Z0UFe.js.map +5 -0
  402. package/frontend/build/server/chunks/{constants-BYVkTZ-O.js → constants-OmHysD51.js} +2 -2
  403. package/frontend/build/server/chunks/{constants-BYVkTZ-O.js.map → constants-OmHysD51.js.map} +1 -1
  404. package/frontend/build/server/chunks/{format-2pqy61MU.js → format-Bqb0as15.js} +2 -2
  405. package/frontend/build/server/chunks/{format-2pqy61MU.js.map → format-Bqb0as15.js.map} +1 -1
  406. package/frontend/build/server/chunks/{reports-WuXG6tj3.js → reports-chCHCDzB.js} +2 -2
  407. package/frontend/build/server/chunks/{reports-WuXG6tj3.js.map → reports-chCHCDzB.js.map} +1 -1
  408. package/frontend/build/server/chunks/{reports2-CCpI0xkQ.js → reports2-Dr3zu9CD.js} +2 -2
  409. package/frontend/build/server/chunks/{reports2-CCpI0xkQ.js.map → reports2-Dr3zu9CD.js.map} +1 -1
  410. package/frontend/build/server/chunks/{repository-TYWcFuWP.js → repository-DSsWVKEb.js} +5 -3
  411. package/frontend/build/server/chunks/repository-DSsWVKEb.js.map +5 -0
  412. package/frontend/build/server/chunks/{runner-D5yCWOsy.js → runner-aaUtOqck.js} +3 -3
  413. package/frontend/build/server/chunks/{runner-D5yCWOsy.js.map → runner-aaUtOqck.js.map} +1 -1
  414. package/frontend/build/server/index.js +1 -1
  415. package/frontend/build/server/index.js.map +1 -1
  416. package/frontend/build/server/manifest.js +14 -14
  417. package/frontend/build/server/manifest.js.map +1 -1
  418. package/frontend/src/lib/api/reports.js +7 -0
  419. package/frontend/src/lib/api/repository.js +28 -0
  420. package/frontend/src/lib/components/layout/RunnerPanel.svelte +2 -1
  421. package/frontend/src/lib/components/reports/LiveReplayer.svelte +0 -6
  422. package/frontend/src/lib/components/reports/RecordingPlayer.svelte +29 -6
  423. package/frontend/src/lib/components/ui/ExportMenu.svelte +154 -0
  424. package/frontend/src/lib/components/ui/NotificationStack.svelte +99 -0
  425. package/frontend/src/lib/constants.js +1 -1
  426. package/frontend/src/lib/copy/common.js +9 -0
  427. package/frontend/src/lib/copy/reports.js +7 -0
  428. package/frontend/src/lib/copy/repository.js +4 -0
  429. package/frontend/src/lib/copy/settings.js +15 -0
  430. package/frontend/src/lib/stores/notifications.js +23 -0
  431. package/frontend/src/lib/utils/download.js +28 -0
  432. package/frontend/src/routes/+layout.svelte +2 -0
  433. package/frontend/src/routes/reports/[id]/+page.svelte +37 -3
  434. package/frontend/src/routes/scheduled-tests/+page.svelte +9 -17
  435. package/frontend/src/routes/settings/+page.svelte +140 -56
  436. package/frontend/src/routes/test-repository/+page.svelte +47 -16
  437. package/frontend/src/routes/test-repository/runs/[id]/+page.svelte +14 -23
  438. package/frontend/src/routes/test-repository/suites/[id]/+page.svelte +38 -22
  439. package/package.json +1 -1
  440. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.5IJAEAjc.css +0 -6
  441. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.B9H_IpSU.css +0 -6
  442. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Be5c3USL.css +0 -6
  443. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.COwSGmmy.css +0 -6
  444. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Dp6vaGRc.css +0 -6
  445. package/frontend/.svelte-kit/generated/client/nodes/13.js +0 -6
  446. package/frontend/.svelte-kit/output/client/_app/immutable/assets/10.CdaQUS6U.css +0 -6
  447. package/frontend/.svelte-kit/output/client/_app/immutable/assets/12.B9H_IpSU.css +0 -6
  448. package/frontend/.svelte-kit/output/client/_app/immutable/assets/3.Be5c3USL.css +0 -6
  449. package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.BN5XbLUX.css +0 -6
  450. package/frontend/.svelte-kit/output/client/_app/immutable/assets/8.COwSGmmy.css +0 -6
  451. package/frontend/.svelte-kit/output/client/_app/immutable/assets/Button.FOWXxvc7.css +0 -6
  452. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.5IJAEAjc.css +0 -6
  453. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.B9H_IpSU.css +0 -6
  454. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Be5c3USL.css +0 -6
  455. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.COwSGmmy.css +0 -6
  456. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Dp6vaGRc.css +0 -6
  457. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/2-KCkWZO.js +0 -6
  458. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BbYY_TzB.js +0 -6
  459. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Beula-TH.js +0 -11
  460. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CZWchtW8.js +0 -6
  461. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CegSvdD-.js +0 -6
  462. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Cfmt4_tJ.js +0 -6
  463. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DB3YXVFP.js +0 -6
  464. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DgQy0SB2.js +0 -6
  465. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Dl-F6VCo.js +0 -6
  466. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DuAVKaL3.js +0 -6
  467. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/K1h4wprj.js +0 -6
  468. package/frontend/.svelte-kit/output/client/_app/immutable/entry/app.DRjRA71t.js +0 -7
  469. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.CRb8Nyce.js +0 -6
  470. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/10.kyazROhw.js +0 -6
  471. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/11.B3vMgT2v.js +0 -6
  472. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/12.DkPcIrgW.js +0 -6
  473. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.DUiL7fb5.js +0 -6
  474. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.N4CeDeoD.js +0 -6
  475. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.DWd93Bv5.js +0 -10
  476. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/7.c8d1cQQM.js +0 -6
  477. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/8.Cvd3MauU.js +0 -9
  478. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.5IJAEAjc.css +0 -6
  479. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.B9H_IpSU.css +0 -6
  480. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Be5c3USL.css +0 -6
  481. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.COwSGmmy.css +0 -6
  482. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Dp6vaGRc.css +0 -6
  483. package/frontend/build/client/_app/immutable/assets/0.CmJTG5mP.css.br +0 -0
  484. package/frontend/build/client/_app/immutable/assets/0.CmJTG5mP.css.gz +0 -0
  485. package/frontend/build/client/_app/immutable/assets/10.CdaQUS6U.css +0 -6
  486. package/frontend/build/client/_app/immutable/assets/10.CdaQUS6U.css.br +0 -0
  487. package/frontend/build/client/_app/immutable/assets/10.CdaQUS6U.css.gz +0 -0
  488. package/frontend/build/client/_app/immutable/assets/12.B9H_IpSU.css +0 -6
  489. package/frontend/build/client/_app/immutable/assets/12.B9H_IpSU.css.br +0 -0
  490. package/frontend/build/client/_app/immutable/assets/12.B9H_IpSU.css.gz +0 -0
  491. package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css +0 -6
  492. package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css.br +0 -0
  493. package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css.gz +0 -0
  494. package/frontend/build/client/_app/immutable/assets/6.BN5XbLUX.css +0 -6
  495. package/frontend/build/client/_app/immutable/assets/6.BN5XbLUX.css.br +0 -0
  496. package/frontend/build/client/_app/immutable/assets/6.BN5XbLUX.css.gz +0 -0
  497. package/frontend/build/client/_app/immutable/assets/8.COwSGmmy.css +0 -6
  498. package/frontend/build/client/_app/immutable/assets/8.COwSGmmy.css.br +0 -0
  499. package/frontend/build/client/_app/immutable/assets/8.COwSGmmy.css.gz +0 -0
  500. package/frontend/build/client/_app/immutable/assets/Button.FOWXxvc7.css +0 -6
  501. package/frontend/build/client/_app/immutable/assets/Button.FOWXxvc7.css.br +0 -0
  502. package/frontend/build/client/_app/immutable/assets/Button.FOWXxvc7.css.gz +0 -0
  503. package/frontend/build/client/_app/immutable/assets/Toast.DENwYn3g.css.br +0 -0
  504. package/frontend/build/client/_app/immutable/assets/Toast.DENwYn3g.css.gz +0 -0
  505. package/frontend/build/client/_app/immutable/assets/_layout.HkPnpRl9.css.br +0 -0
  506. package/frontend/build/client/_app/immutable/assets/_layout.HkPnpRl9.css.gz +0 -0
  507. package/frontend/build/client/_app/immutable/assets/_page.5IJAEAjc.css +0 -6
  508. package/frontend/build/client/_app/immutable/assets/_page.5IJAEAjc.css.br +0 -0
  509. package/frontend/build/client/_app/immutable/assets/_page.5IJAEAjc.css.gz +0 -0
  510. package/frontend/build/client/_app/immutable/assets/_page.B9H_IpSU.css +0 -6
  511. package/frontend/build/client/_app/immutable/assets/_page.B9H_IpSU.css.br +0 -0
  512. package/frontend/build/client/_app/immutable/assets/_page.B9H_IpSU.css.gz +0 -0
  513. package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css +0 -6
  514. package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css.br +0 -0
  515. package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css.gz +0 -0
  516. package/frontend/build/client/_app/immutable/assets/_page.COwSGmmy.css +0 -6
  517. package/frontend/build/client/_app/immutable/assets/_page.COwSGmmy.css.br +0 -0
  518. package/frontend/build/client/_app/immutable/assets/_page.COwSGmmy.css.gz +0 -0
  519. package/frontend/build/client/_app/immutable/assets/_page.Dp6vaGRc.css +0 -6
  520. package/frontend/build/client/_app/immutable/assets/_page.Dp6vaGRc.css.br +0 -0
  521. package/frontend/build/client/_app/immutable/assets/_page.Dp6vaGRc.css.gz +0 -0
  522. package/frontend/build/client/_app/immutable/chunks/2-KCkWZO.js +0 -6
  523. package/frontend/build/client/_app/immutable/chunks/2-KCkWZO.js.br +0 -0
  524. package/frontend/build/client/_app/immutable/chunks/2-KCkWZO.js.gz +0 -0
  525. package/frontend/build/client/_app/immutable/chunks/B00vxw57.js.br +0 -0
  526. package/frontend/build/client/_app/immutable/chunks/B00vxw57.js.gz +0 -0
  527. package/frontend/build/client/_app/immutable/chunks/B0_HKFXV.js.br +0 -0
  528. package/frontend/build/client/_app/immutable/chunks/B0_HKFXV.js.gz +0 -0
  529. package/frontend/build/client/_app/immutable/chunks/BAvTKHxT.js.br +0 -0
  530. package/frontend/build/client/_app/immutable/chunks/BAvTKHxT.js.gz +0 -0
  531. package/frontend/build/client/_app/immutable/chunks/BJ_ypKl3.js.br +0 -0
  532. package/frontend/build/client/_app/immutable/chunks/BJ_ypKl3.js.gz +0 -0
  533. package/frontend/build/client/_app/immutable/chunks/BbYY_TzB.js +0 -6
  534. package/frontend/build/client/_app/immutable/chunks/BbYY_TzB.js.br +0 -0
  535. package/frontend/build/client/_app/immutable/chunks/BbYY_TzB.js.gz +0 -0
  536. package/frontend/build/client/_app/immutable/chunks/Beula-TH.js +0 -11
  537. package/frontend/build/client/_app/immutable/chunks/Beula-TH.js.br +0 -0
  538. package/frontend/build/client/_app/immutable/chunks/Beula-TH.js.gz +0 -0
  539. package/frontend/build/client/_app/immutable/chunks/C00jnSU2.js.br +0 -0
  540. package/frontend/build/client/_app/immutable/chunks/C00jnSU2.js.gz +0 -0
  541. package/frontend/build/client/_app/immutable/chunks/C2_rQ4aY.js.br +0 -0
  542. package/frontend/build/client/_app/immutable/chunks/C2_rQ4aY.js.gz +0 -0
  543. package/frontend/build/client/_app/immutable/chunks/C7uEQ-LH.js.br +0 -0
  544. package/frontend/build/client/_app/immutable/chunks/C7uEQ-LH.js.gz +0 -0
  545. package/frontend/build/client/_app/immutable/chunks/C8S7qQjQ.js.br +0 -0
  546. package/frontend/build/client/_app/immutable/chunks/C8S7qQjQ.js.gz +0 -0
  547. package/frontend/build/client/_app/immutable/chunks/CZWchtW8.js +0 -6
  548. package/frontend/build/client/_app/immutable/chunks/CZWchtW8.js.br +0 -0
  549. package/frontend/build/client/_app/immutable/chunks/CZWchtW8.js.gz +0 -0
  550. package/frontend/build/client/_app/immutable/chunks/CboYYxrf.js.br +0 -6
  551. package/frontend/build/client/_app/immutable/chunks/CboYYxrf.js.gz +0 -0
  552. package/frontend/build/client/_app/immutable/chunks/CeH-RgMb.js.br +0 -0
  553. package/frontend/build/client/_app/immutable/chunks/CegSvdD-.js +0 -6
  554. package/frontend/build/client/_app/immutable/chunks/CegSvdD-.js.br +0 -0
  555. package/frontend/build/client/_app/immutable/chunks/CegSvdD-.js.gz +0 -0
  556. package/frontend/build/client/_app/immutable/chunks/CfkUW1vA.js.br +0 -0
  557. package/frontend/build/client/_app/immutable/chunks/CfkUW1vA.js.gz +0 -0
  558. package/frontend/build/client/_app/immutable/chunks/Cfmt4_tJ.js +0 -6
  559. package/frontend/build/client/_app/immutable/chunks/Cfmt4_tJ.js.br +0 -0
  560. package/frontend/build/client/_app/immutable/chunks/Cfmt4_tJ.js.gz +0 -0
  561. package/frontend/build/client/_app/immutable/chunks/Cgw8TOOy.js.br +0 -0
  562. package/frontend/build/client/_app/immutable/chunks/Cgw8TOOy.js.gz +0 -0
  563. package/frontend/build/client/_app/immutable/chunks/Ck6C3Fl0.js.br +0 -0
  564. package/frontend/build/client/_app/immutable/chunks/Ck6C3Fl0.js.gz +0 -0
  565. package/frontend/build/client/_app/immutable/chunks/CoTEzvLa.js.br +0 -0
  566. package/frontend/build/client/_app/immutable/chunks/CoTEzvLa.js.gz +0 -0
  567. package/frontend/build/client/_app/immutable/chunks/DAmOMhaf.js.br +0 -0
  568. package/frontend/build/client/_app/immutable/chunks/DAmOMhaf.js.gz +0 -0
  569. package/frontend/build/client/_app/immutable/chunks/DB3YXVFP.js +0 -6
  570. package/frontend/build/client/_app/immutable/chunks/DB3YXVFP.js.br +0 -0
  571. package/frontend/build/client/_app/immutable/chunks/DB3YXVFP.js.gz +0 -0
  572. package/frontend/build/client/_app/immutable/chunks/DWzEJYIF.js.br +0 -7
  573. package/frontend/build/client/_app/immutable/chunks/DWzEJYIF.js.gz +0 -0
  574. package/frontend/build/client/_app/immutable/chunks/DgQy0SB2.js +0 -6
  575. package/frontend/build/client/_app/immutable/chunks/DgQy0SB2.js.br +0 -0
  576. package/frontend/build/client/_app/immutable/chunks/DgQy0SB2.js.gz +0 -0
  577. package/frontend/build/client/_app/immutable/chunks/DiVmSEJa.js.br +0 -0
  578. package/frontend/build/client/_app/immutable/chunks/DiVmSEJa.js.gz +0 -0
  579. package/frontend/build/client/_app/immutable/chunks/Dl-F6VCo.js +0 -6
  580. package/frontend/build/client/_app/immutable/chunks/Dl-F6VCo.js.br +0 -0
  581. package/frontend/build/client/_app/immutable/chunks/Dl-F6VCo.js.gz +0 -0
  582. package/frontend/build/client/_app/immutable/chunks/DuAVKaL3.js +0 -6
  583. package/frontend/build/client/_app/immutable/chunks/DuAVKaL3.js.br +0 -0
  584. package/frontend/build/client/_app/immutable/chunks/DuAVKaL3.js.gz +0 -0
  585. package/frontend/build/client/_app/immutable/chunks/GDjpV3r7.js.br +0 -0
  586. package/frontend/build/client/_app/immutable/chunks/GDjpV3r7.js.gz +0 -0
  587. package/frontend/build/client/_app/immutable/chunks/K1h4wprj.js +0 -6
  588. package/frontend/build/client/_app/immutable/chunks/K1h4wprj.js.br +0 -0
  589. package/frontend/build/client/_app/immutable/chunks/K1h4wprj.js.gz +0 -0
  590. package/frontend/build/client/_app/immutable/chunks/d2K3c8Kx.js.br +0 -0
  591. package/frontend/build/client/_app/immutable/chunks/d2K3c8Kx.js.gz +0 -0
  592. package/frontend/build/client/_app/immutable/entry/app.DRjRA71t.js +0 -7
  593. package/frontend/build/client/_app/immutable/entry/app.DRjRA71t.js.br +0 -0
  594. package/frontend/build/client/_app/immutable/entry/app.DRjRA71t.js.gz +0 -0
  595. package/frontend/build/client/_app/immutable/nodes/0.CRb8Nyce.js +0 -6
  596. package/frontend/build/client/_app/immutable/nodes/0.CRb8Nyce.js.br +0 -0
  597. package/frontend/build/client/_app/immutable/nodes/0.CRb8Nyce.js.gz +0 -0
  598. package/frontend/build/client/_app/immutable/nodes/1.BI97il3r.js.br +0 -0
  599. package/frontend/build/client/_app/immutable/nodes/1.BI97il3r.js.gz +0 -0
  600. package/frontend/build/client/_app/immutable/nodes/10.kyazROhw.js +0 -6
  601. package/frontend/build/client/_app/immutable/nodes/10.kyazROhw.js.br +0 -0
  602. package/frontend/build/client/_app/immutable/nodes/10.kyazROhw.js.gz +0 -0
  603. package/frontend/build/client/_app/immutable/nodes/11.B3vMgT2v.js +0 -6
  604. package/frontend/build/client/_app/immutable/nodes/11.B3vMgT2v.js.br +0 -0
  605. package/frontend/build/client/_app/immutable/nodes/11.B3vMgT2v.js.gz +0 -0
  606. package/frontend/build/client/_app/immutable/nodes/12.DkPcIrgW.js +0 -6
  607. package/frontend/build/client/_app/immutable/nodes/12.DkPcIrgW.js.br +0 -0
  608. package/frontend/build/client/_app/immutable/nodes/12.DkPcIrgW.js.gz +0 -0
  609. package/frontend/build/client/_app/immutable/nodes/2.Dr6yugXz.js.br +0 -0
  610. package/frontend/build/client/_app/immutable/nodes/2.Dr6yugXz.js.gz +0 -0
  611. package/frontend/build/client/_app/immutable/nodes/3.DUiL7fb5.js +0 -6
  612. package/frontend/build/client/_app/immutable/nodes/3.DUiL7fb5.js.br +0 -0
  613. package/frontend/build/client/_app/immutable/nodes/3.DUiL7fb5.js.gz +0 -0
  614. package/frontend/build/client/_app/immutable/nodes/4.DDADylfF.js.br +0 -0
  615. package/frontend/build/client/_app/immutable/nodes/4.DDADylfF.js.gz +0 -0
  616. package/frontend/build/client/_app/immutable/nodes/5.N4CeDeoD.js +0 -6
  617. package/frontend/build/client/_app/immutable/nodes/5.N4CeDeoD.js.br +0 -0
  618. package/frontend/build/client/_app/immutable/nodes/5.N4CeDeoD.js.gz +0 -0
  619. package/frontend/build/client/_app/immutable/nodes/6.DWd93Bv5.js +0 -10
  620. package/frontend/build/client/_app/immutable/nodes/6.DWd93Bv5.js.br +0 -0
  621. package/frontend/build/client/_app/immutable/nodes/6.DWd93Bv5.js.gz +0 -0
  622. package/frontend/build/client/_app/immutable/nodes/7.c8d1cQQM.js +0 -6
  623. package/frontend/build/client/_app/immutable/nodes/7.c8d1cQQM.js.br +0 -0
  624. package/frontend/build/client/_app/immutable/nodes/7.c8d1cQQM.js.gz +0 -0
  625. package/frontend/build/client/_app/immutable/nodes/8.Cvd3MauU.js +0 -9
  626. package/frontend/build/client/_app/immutable/nodes/8.Cvd3MauU.js.br +0 -0
  627. package/frontend/build/client/_app/immutable/nodes/8.Cvd3MauU.js.gz +0 -0
  628. package/frontend/build/client/_app/immutable/nodes/9.BOK0GNF_.js.br +0 -0
  629. package/frontend/build/client/_app/immutable/nodes/9.BOK0GNF_.js.gz +0 -0
  630. package/frontend/build/server/chunks/0-_rljpEay.js +0 -22
  631. package/frontend/build/server/chunks/0-_rljpEay.js.map +0 -5
  632. package/frontend/build/server/chunks/10-BQBBYpxV.js +0 -14
  633. package/frontend/build/server/chunks/10-BQBBYpxV.js.map +0 -5
  634. package/frontend/build/server/chunks/11-10xw0TIP.js +0 -14
  635. package/frontend/build/server/chunks/11-10xw0TIP.js.map +0 -5
  636. package/frontend/build/server/chunks/12-CZ3_Uw3c.js +0 -14
  637. package/frontend/build/server/chunks/12-CZ3_Uw3c.js.map +0 -5
  638. package/frontend/build/server/chunks/2-DioMbKbC.js +0 -14
  639. package/frontend/build/server/chunks/3-CgiZg_9v.js +0 -14
  640. package/frontend/build/server/chunks/3-CgiZg_9v.js.map +0 -5
  641. package/frontend/build/server/chunks/4-BM-49dbE.js +0 -14
  642. package/frontend/build/server/chunks/5-Brx_KOzy.js +0 -14
  643. package/frontend/build/server/chunks/6-C5swINND.js +0 -14
  644. package/frontend/build/server/chunks/6-C5swINND.js.map +0 -5
  645. package/frontend/build/server/chunks/7-B8e4y3CB.js +0 -14
  646. package/frontend/build/server/chunks/7-B8e4y3CB.js.map +0 -5
  647. package/frontend/build/server/chunks/8-BZtkZMIZ.js +0 -14
  648. package/frontend/build/server/chunks/8-BZtkZMIZ.js.map +0 -5
  649. package/frontend/build/server/chunks/9-BMAKiAem.js +0 -14
  650. package/frontend/build/server/chunks/Toast-CHB87F8k.js.map +0 -5
  651. package/frontend/build/server/chunks/_page.svelte-BNwU9zza.js.map +0 -5
  652. package/frontend/build/server/chunks/_page.svelte-CAlhaCzS.js.map +0 -5
  653. package/frontend/build/server/chunks/_page.svelte-CTebwzwy.js.map +0 -5
  654. package/frontend/build/server/chunks/_page.svelte-CmJKt3-H.js.map +0 -5
  655. package/frontend/build/server/chunks/_page.svelte-DHZhNTPg.js.map +0 -5
  656. package/frontend/build/server/chunks/_page.svelte-DObTHQe2.js.map +0 -5
  657. package/frontend/build/server/chunks/_page.svelte-ywHy9KCh.js +0 -852
  658. package/frontend/build/server/chunks/_page.svelte-ywHy9KCh.js.map +0 -5
  659. package/frontend/build/server/chunks/common-DYYTVHPw.js.map +0 -5
  660. package/frontend/build/server/chunks/repository-TYWcFuWP.js.map +0 -5
  661. package/frontend/src/lib/components/ui/Toast.svelte +0 -24
@@ -1,10 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- import{i as ms,j as da,a as n,t as o,s as h,b as Kt,c as ft,n as Ct,e as _e,h as pa}from"../chunks/CfkUW1vA.js";import{i as rt}from"../chunks/C00jnSU2.js";import{Y as ga,h as xs,Z as ks,a5 as ua,a7 as bs,aI as fa,aX as ha,aW as _a,a2 as ya,av as wa,aG as ma,t as k,d as a,k as s,p as nt,l as ne,s as i,ai as Ut,b as Tt,g as e,c as lt,m as R,f as ye,A as Ss,j as r,x as ee,o as Ps,ao as xa,ak as js,z as ka,$ as ba,n as Ea}from"../chunks/CeH-RgMb.js";import{i as E,s as Ra,a as La}from"../chunks/CegSvdD-.js";import{t as D,e as fe,i as he,a as Ia,b as Ca}from"../chunks/Beula-TH.js";import{s as J,p as Es,B as Rs}from"../chunks/DuAVKaL3.js";import{s as Ls}from"../chunks/Bfc47y5P.js";import{b as Ta}from"../chunks/B00vxw57.js";import{p as Aa}from"../chunks/d2K3c8Kx.js";import{b as Ba,c as Ma,e as $a}from"../chunks/K1h4wprj.js";import{k as Sa,c as Pa,p as ja,g as Is,f as Cs,s as Ts,b as Yt,d as qa,t as Da,i as Oa}from"../chunks/B0_HKFXV.js";import{J as Na,K as Fa,M as za,O as Ha,U as Wa,X as As,Y as Ga,Z as Va,_ as Ya,$ as Ka,a0 as Ua,i as Za,a1 as Xa,a2 as Ja,a3 as Qa,u as er,a4 as tr,a5 as sr,a6 as ar,a7 as rr,a8 as Bs,z as nr,B as lr,a9 as ir,aa as or,ab as vr,ac as cr,E as dr}from"../chunks/BbYY_TzB.js";import{B as pr}from"../chunks/C8S7qQjQ.js";import{P as gr,B as ur}from"../chunks/C2_rQ4aY.js";import{p as Q}from"../chunks/DB3YXVFP.js";import{b as Ms}from"../chunks/CboYYxrf.js";function fr(T,g,v,c,m){var A=T,_="",L;ga(()=>{if(_===(_=g()??"")){xs&&ks();return}L!==void 0&&(ma(L),L=void 0),_!==""&&(L=ua(()=>{if(xs){bs.data;for(var u=ks(),B=u;u!==null&&(u.nodeType!==8||u.data!=="");)B=u,u=fa(u);if(u===null)throw ha(),_a;ms(bs,B),A=ya(u);return}var q=_+"",H=da(q);ms(wa(H),H.lastChild),A.before(H)}))})}var hr=o('<span class="status-dot svelte-eg9xrn"></span>');function $s(T,g){let v=Q(g,"status",8,"passed");var c=hr();k(()=>{D(c,"pass",v()==="passed"),D(c,"fail",v()==="failed"),D(c,"skip",v()!=="passed"&&v()!=="failed")}),n(T,c)}var _r=o('<span class="tag-chip svelte-foe7v9"> </span>');function yr(T,g){let v=Q(g,"tag",8,"");var c=_r(),m=a(c,!0);s(c),k(()=>h(m,v())),n(T,c)}var wr=o('<span class="kw svelte-3mvi7i"> </span>');function qs(T,g){nt(g,!1);const v=R();let c=Q(g,"keyword",8,"");ne(()=>Ut(c()),()=>{i(v,Sa(c()))}),Tt(),rt();var m=wr(),A=a(m,!0);s(m),k(()=>{D(m,"kw-given",e(v)==="kw-given"),D(m,"kw-when",e(v)==="kw-when"),D(m,"kw-then",e(v)==="kw-then"),D(m,"kw-and",e(v)==="kw-and"),h(A,c())}),n(T,m),lt()}var mr=o('<span class="step-status-icon svelte-9zpq1y"><!></span>');function Ds(T,g){let v=Q(g,"status",8,"passed");var c=mr(),m=a(c);{var A=L=>{var u=Kt("✓");n(L,u)},_=L=>{var u=ft(),B=ye(u);{var q=$=>{var M=Kt("✗");n($,M)},H=$=>{var M=Kt("−");n($,M)};E(B,$=>{v()==="failed"?$(q):$(H,!1)},!0)}n(L,u)};E(m,L=>{v()==="passed"?L(A):L(_,!1)})}s(c),k(()=>{D(c,"icon-pass",v()==="passed"),D(c,"icon-fail",v()==="failed"),D(c,"icon-skip",v()!=="passed"&&v()!=="failed")}),n(T,c)}var xr=Ct('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2c0 4.5-5 7-5 12a5 5 0 0 0 10 0c0-5-5-7.5-5-12z"></path><path d="M12 9c0 2.5-2.5 4-2.5 7a2.5 2.5 0 0 0 5 0c0-3-2.5-4.5-2.5-7z"></path></svg>'),kr=Ct('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polygon points="12,5.5 14.5,12 12,10.5 9.5,12" fill="currentColor" stroke="none"></polygon><polygon points="12,18.5 9.5,12 12,13.5 14.5,12" fill="currentColor" stroke="none" opacity="0.35"></polygon></svg>'),br=Ct('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="4"></circle><line x1="21.17" y1="8" x2="12" y2="8"></line><line x1="3.95" y1="6.06" x2="8.54" y2="14"></line><line x1="10.88" y1="21.94" x2="15.46" y2="14"></line></svg>');function Er(T,g){let v=Q(g,"browser",8,"chromium"),c=Q(g,"size",8,11);var m=ft(),A=ye(m);{var _=u=>{var B=xr();k(()=>{J(B,"width",c()),J(B,"height",c())}),n(u,B)},L=u=>{var B=ft(),q=ye(B);{var H=M=>{var d=kr();k(()=>{J(d,"width",c()),J(d,"height",c())}),n(M,d)},$=M=>{var d=br();k(()=>{J(d,"width",c()),J(d,"height",c())}),n(M,d)};E(q,M=>{v()==="webkit"?M(H):M($,!1)},!0)}n(u,B)};E(A,u=>{v()==="firefox"?u(_):u(L,!1)})}n(T,m)}function Rr(T){return T.replace(/"/g,"&quot;")}function Lr(T){const g=T.tagName.toLowerCase(),v=Array.from(T.attributes??[]).map(_=>` ${_.name}="${Rr(_.value)}"`).join(""),c=T.children.length,m=c===0?(T.textContent??"").trim():"",A=c>0?`
7
- <!-- ${c} child element${c===1?"":"s"} -->
8
- `:m?`
9
- ${m.slice(0,200)}
10
- `:"";return`<${g}${v}>${A}</${g}>`}function Ir(T){const g=T.getBoundingClientRect();return{markup:Lr(T),attributes:Array.from(T.attributes??[]).map(v=>({name:v.name,value:v.value})),box:{width:Math.round(g.width),height:Math.round(g.height)}}}var Cr=o('<li><button class="rail-step svelte-q7af2t"><!> <span class="rail-step-text svelte-q7af2t"><!> <span> </span></span></button></li>'),Tr=o('<aside class="steps-rail svelte-q7af2t"><div class="steps-rail-header svelte-q7af2t"></div> <ol class="steps-list svelte-q7af2t"></ol></aside>');function Ar(T,g){nt(g,!1);let v=Q(g,"steps",24,()=>[]),c=Q(g,"stepTimestamps",24,()=>[]),m=Q(g,"currentStepIndex",24,()=>-1);const A=Ss();rt();var _=Tr(),L=a(_);L.textContent=Na;var u=r(L,2);fe(u,5,v,he,(B,q,H)=>{var $=Cr(),M=a($),d=a(M);Ds(d,{get status(){return e(q).status}});var W=r(d,2),y=a(W);qs(y,{get keyword(){return e(q).keyword}});var Y=r(y,2),te=a(Y,!0);s(Y),s(W),s(M),s($),k(()=>{M.disabled=c()[H]===void 0,D(M,"rail-step-active",H===m()),h(te,e(q).name)}),_e("click",M,()=>A("jump",H)),n(B,$)}),s(u),s(_),n(T,_),lt()}var Br=o('<div class="combined-timeline-tick svelte-5daecg"></div>'),Mr=o('<div class="combined-timeline svelte-5daecg"><span class="combined-timeline-time svelte-5daecg"> </span> <div class="combined-timeline-track svelte-5daecg"><div class="combined-timeline-fill svelte-5daecg"></div> <!> <div class="combined-timeline-handle svelte-5daecg"></div></div> <span class="combined-timeline-time svelte-5daecg"> </span></div>');function $r(T,g){nt(g,!1);const v=R(),c=R();let m=Q(g,"from",8,0),A=Q(g,"to",8,0),_=Q(g,"position",8,0),L=Q(g,"stepTimestamps",24,()=>[]);const u=Ss();function B(N){return A()>m()?Math.min(100,Math.max(0,(N-m())/(A()-m())*100)):0}function q(N){if(N<=0)return"00:00";const K=Math.floor(N/1e3),U=Math.floor(K/60),se=K%60;return`${String(U).padStart(2,"0")}:${String(se).padStart(2,"0")}`}function H(N){const K=N.currentTarget.getBoundingClientRect(),U=Math.min(1,Math.max(0,(N.clientX-K.left)/K.width));u("seek",m()+U*(A()-m()))}ne(()=>Ut(_()),()=>{i(v,B(_()))}),ne(()=>Ut(L()),()=>{i(c,L().map(B))}),Tt(),rt();var $=Mr(),M=a($),d=a(M,!0);s(M);var W=r(M,2),y=a(W),Y=r(y,2);fe(Y,1,()=>e(c),he,(N,K)=>{var U=Br();k(()=>J(U,"style",`left: ${e(K)??""}%`)),n(N,U)});var te=r(Y,2);s(W);var ie=r(W,2),G=a(ie,!0);s(ie),s($),k((N,K)=>{h(d,N),J(y,"style",`width: ${e(v)??""}%`),J(te,"style",`left: ${e(v)??""}%`),h(G,K)},[()=>q(_()-m()),()=>q(A()-m())],ee),_e("click",W,H),n(T,$),lt()}var Sr=o('<pre class="code-viewer svelte-mer6ic"><code><!></code></pre>');function Pr(T,g){nt(g,!1);const v=R();let c=Q(g,"code",8,"");function m(B){return B.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function A(B){return m(B).replace(/(&lt;!--[\s\S]*?--&gt;)/g,'<span class="tok-comment">$1</span>').replace(/(&lt;\/?)([a-zA-Z][a-zA-Z0-9-]*)/g,'$1<span class="tok-tag">$2</span>').replace(/([a-zA-Z_:][a-zA-Z0-9_:.-]*)(=)(&quot;[^&]*&quot;)/g,'<span class="tok-attr">$1</span>$2<span class="tok-value">$3</span>')}ne(()=>Ut(c()),()=>{i(v,A(c()))}),Tt(),rt();var _=Sr(),L=a(_),u=a(L);fr(u,()=>e(v)),s(L),s(_),n(T,_),lt()}var jr=o('<div class="inspector-attr-row svelte-mmh4st"><dt class="svelte-mmh4st"> </dt> <dd class="svelte-mmh4st"> </dd></div>'),qr=o('<div class="inspector-section svelte-mmh4st"><span class="inspector-section-label svelte-mmh4st"></span></div> <dl class="inspector-attrs svelte-mmh4st"></dl>',1),Dr=o('<!> <div class="inspector-section svelte-mmh4st"><span class="inspector-section-label svelte-mmh4st"></span> <span class="inspector-size svelte-mmh4st"> </span></div> <!>',1),Or=o('<div class="inspector-empty svelte-mmh4st"></div>'),Nr=o('<aside class="inspector-panel svelte-mmh4st"><div class="inspector-header svelte-mmh4st"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z"></path></svg> </div> <!></aside>');function Fr(T,g){nt(g,!1);let v=Q(g,"selectedElement",8,null);rt();var c=Nr(),m=a(c),A=r(a(m));A.nodeValue=` ${Fa}`,s(m);var _=r(m,2);{var L=B=>{var q=Dr(),H=ye(q);Pr(H,{get code(){return v().markup}});var $=r(H,2),M=a($);M.textContent=za;var d=r(M,2),W=a(d);s(d),s($);var y=r($,2);{var Y=te=>{var ie=qr(),G=ye(ie),N=a(G);N.textContent=Wa,s(G);var K=r(G,2);fe(K,5,()=>v().attributes,he,(U,se)=>{var ce=jr(),Ie=a(ce),we=a(Ie,!0);s(Ie);var S=r(Ie,2),ae=a(S,!0);s(S),s(ce),k(()=>{h(we,e(se).name),h(ae,e(se).value)}),n(U,ce)}),s(K),n(te,ie)};E(y,te=>{v().attributes.length>0&&te(Y)})}k(()=>h(W,`${v().box.width??""} × ${v().box.height??""}`)),n(B,q)},u=B=>{var q=Or();q.textContent=Ha,n(B,q)};E(_,B=>{v()?B(L):B(u,!1)})}s(c),n(T,c),lt()}var zr=o('<div class="active-tab-badge svelte-jcqbbs"> </div>'),Hr=o('<div class="player-status svelte-jcqbbs"><div class="loading-dots svelte-jcqbbs"><span class="svelte-jcqbbs"></span><span class="svelte-jcqbbs"></span><span class="svelte-jcqbbs"></span></div></div>'),Wr=o('<div class="player-status svelte-jcqbbs"></div>'),Gr=o('<div class="inspect-highlight svelte-jcqbbs"></div>'),Vr=o('<button class="restart-overlay-btn svelte-jcqbbs"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="1 4 1 10 7 10"></polyline><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"></path></svg></button>'),Yr=o('<div class="recording-player svelte-jcqbbs"><!> <div class="player-stage svelte-jcqbbs"><div class="player-column svelte-jcqbbs"><div class="player-mount svelte-jcqbbs"></div> <!></div> <!> <!> <!> <!> <button class="inspect-fab svelte-jcqbbs"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z"></path></svg></button></div> <!></div>');function Kr(T,g){nt(g,!1);const v=R(),c=R(),m=R();let A=Q(g,"reportId",8),_=Q(g,"recordings",24,()=>[]),L=Q(g,"steps",24,()=>[]),u=Q(g,"inspecting",12,!1);const B=480,q=320,H=80,$=150,M=24;let d=R(),W=R(),y=null,Y=R(!0),te=R(!1),ie=R(null),G=R(null),N=null,K=null,U=null,se=R(-1),ce=R([]),Ie=R(new Map),we=new Map,S=R([]),ae=R(0),je=0,it=R(0),ot=null;function At(){const t=be();t&&!e(Ee)&&i(it,je+t.getCurrentTime()),ot=requestAnimationFrame(At)}function be(){var t;return(t=y==null?void 0:y.getReplayer)==null?void 0:t.call(y)}function p(t){const l=we.get(t==null?void 0:t.recordingId)??[];if(l.length===0)return{first:0,span:0};const f=l[0].timestamp,w=(t==null?void 0:t.to)??1/0;let C=f;for(const Z of l){if(Z.timestamp>w)break;C=Z.timestamp}return{first:f,span:Math.max(0,C-f)}}function O(t){let l=-1;for(let f=0;f<e(ce).length&&!(e(ce)[f]>t);f++)l=f;return l}function oe(t,l,f){var ke;let w=e(S).findIndex(pe=>t>=pe.from&&t<=pe.to);if(w===-1&&(w=e(S).length-1),w<0)return;const{first:C,span:Z}=p(e(S)[w]),me=Math.min(Math.max(0,t-C),Z),re=((ke=be())==null?void 0:ke.config.speed)??1;w===e(ae)&&t>=je?(qe=Date.now()+$,y==null||y.goto(t-je,l),f!==void 0&&i(se,f),u()&&(ve(),Ce(),He())):(i(ae,w),Ve({finished:!1,timeOffset:me,paused:!l,speed:re,stepIndexOverride:f}))}function ze(t){if(e(ce)[t]===void 0||!y)return;i(se,t);let l=e(ce)[t+1];if(l===void 0){const{first:f,span:w}=p(e(S)[e(S).length-1]);l=f+Math.max(0,w-1)}l!==void 0&&oe(l,!1,t)}function Ce(){const t=be(),l=t==null?void 0:t.iframe,f=l==null?void 0:l.contentDocument;if(!l||!f)return;K=f;const w=re=>{const ke=re.target;if(!ke||ke===f.documentElement){i(G,null);return}const pe=ke.getBoundingClientRect(),Re=l.getBoundingClientRect(),Ue=e(d).getBoundingClientRect(),Ze=Re.width/(l.clientWidth||1),x=Re.height/(l.clientHeight||1);i(G,{top:Re.top+pe.top*x-Ue.top,left:Re.left+pe.left*Ze-Ue.left,width:pe.width*Ze,height:pe.height*x})},C=re=>{re.preventDefault(),re.stopPropagation(),i(ie,Ir(re.target))},Z=()=>{i(G,null)},me=re=>{re.key==="Escape"&&Ae()};f.addEventListener("mousemove",w),f.addEventListener("click",C,!0),f.addEventListener("mouseleave",Z),f.addEventListener("keydown",me);try{f.documentElement.dataset.plumInspectWired="1"}catch{}N=()=>{f.removeEventListener("mousemove",w),f.removeEventListener("click",C,!0),f.removeEventListener("mouseleave",Z),f.removeEventListener("keydown",me),i(G,null)}}function ve(){K=null,N&&(N(),N=null)}function Te(){U!==null&&(cancelAnimationFrame(U),U=null)}function xe(){var f,w,C;if(!u()){U=null;return}const t=(w=(f=be())==null?void 0:f.iframe)==null?void 0:w.contentDocument,l=((C=t==null?void 0:t.documentElement)==null?void 0:C.dataset.plumInspectWired)==="1";t&&(t!==K||!l)&&(ve(),Ce()),U=requestAnimationFrame(xe)}function He(){U===null&&(U=requestAnimationFrame(xe))}async function Ae(){u(!u());const t=St();t&&u()&&(t.paused=!0),t&&(t.stepIndexOverride=e(se)),u()||(ve(),Te()),await ka(),Ve(t)}function de(){const t=be();t&&(t.service.state.matches("paused")?y.play():y.pause())}function ht(t){if(t.key==="Escape"&&u()){Ae();return}t.key===" "&&!u()&&(t.preventDefault(),de())}let Ee=R(!1),Bt=R(""),We=!1,qe=0,Ge=0;function Mt(){var t;return(t=e(W))==null?void 0:t.querySelector(".rr-controller__btns button")}function $t(t){if(!t)return;const l=t.getBoundingClientRect(),f=e(d).getBoundingClientRect();i(Bt,`top: ${l.top-f.top}px; left: ${l.left-f.left}px; width: ${l.width}px; height: ${l.height}px;`)}function Zt(){const t=be(),l=Mt();if(!t||!l)return;const f=Ge;t.on("finish",()=>{if(Ge===f&&!(Date.now()<qe)&&We){if(e(ae)<e(S).length-1){const w=t.config.speed;i(ae,e(ae)+1);const C=e(S)[e(ae)],{first:Z}=p(C),me=Math.max(0,C.from-Z);Ve({finished:!1,timeOffset:me,paused:!1,speed:w});return}$t(l),i(Ee,!0),i(it,e(m))}}),t.on("start",()=>{i(Ee,!1),We=!0}),t.on("resume",()=>{i(Ee,!1),We=!0}),t.on("pause",()=>{We=!1})}function Xt(){var t;if(i(Ee,!1),e(ae)!==0){const l=((t=be())==null?void 0:t.config.speed)??1;i(ae,0),Ve({finished:!1,timeOffset:0,paused:!1,speed:l})}else y==null||y.goto(0,!0)}function St(){const t=be();if(!t)return null;if(e(Ee))return{finished:!0,speed:t.config.speed};const{first:l}=p(e(S)[e(ae)]);return{finished:!1,timeOffset:je+t.getCurrentTime()-l,paused:t.service.state.matches("paused"),speed:t.config.speed}}function _t(){if(ve(),y){try{y.$destroy()}catch{}y=null}}function Ve(t=null){var b,P;Ge+=1;const l=e(d).getBoundingClientRect(),f=Math.max(B,Math.floor(l.width)),w=Math.max(q,Math.floor(l.height)-H-M);if(y){try{y.$destroy()}catch{}y=null}e(W).replaceChildren();const C=e(S)[e(ae)],Z=we.get(C==null?void 0:C.recordingId)??[],me=(C==null?void 0:C.to)??1/0,re=Z.filter(I=>I.timestamp<=me),ke=((b=Z[0])==null?void 0:b.timestamp)??0,pe=t!=null&&t.finished?me:ke+((t==null?void 0:t.timeOffset)??0);let Re=0;for(let I=0;I<re.length&&!(re[I].timestamp>pe);I++)re[I].type===2&&(Re=I>0&&re[I-1].type===4?I-1:I);const Ue=re.slice(Re).filter(I=>I.type!==5||I.timestamp>=C.from),Ze=((P=Ue[0])==null?void 0:P.timestamp)??ke;je=Ze;const x=Math.max(0,pe-Ze);y=new gr({target:e(W),props:{events:Ue,autoPlay:!1,showController:!0,speedOption:[.5,1,2],speed:1,width:f,height:w}}),(t==null?void 0:t.stepIndexOverride)!==void 0?i(se,t.stepIndexOverride):i(se,O(pe)),y.addEventListener("custom-event",I=>{var F;((F=I==null?void 0:I.data)==null?void 0:F.tag)==="step"&&i(se,e(se)+1)}),Zt(),t?t.finished?(y.setSpeed(t.speed),qe=Date.now()+$,y.goto(x,!1),i(Ee,!0),i(it,e(m)),requestAnimationFrame(()=>$t(Mt()))):(y.setSpeed(t.speed),t.paused&&(qe=Date.now()+$),y.goto(x,!t.paused)):(requestAnimationFrame(()=>{if(!e(W))return;const I=Array.from(e(W).querySelectorAll(".rr-controller__btns button")).find(F=>F.textContent.trim()==="1x");I==null||I.click()}),y.play()),u()&&(ve(),Ce(),He())}Ps(async()=>{i(Ie,new Map(_().map(w=>[w.id,w])));try{const w=await Promise.all(_().map(C=>Ba(A(),C.id)));_().forEach((C,Z)=>we.set(C.id,w[Z]??[]))}catch{i(te,!0),i(Y,!1);return}if([...we.values()].every(w=>w.length===0)){i(te,!0),i(Y,!1);return}const t=Pa(_());i(S,t.length>0?t:_()[0]?[{recordingId:_()[0].id,from:0,to:0}]:[]);const l=_().find(w=>w.tabIndex===0)??_()[0],f=we.get(l==null?void 0:l.id)??[];i(ce,f.filter(w=>{var C;return w.type===5&&((C=w.data)==null?void 0:C.tag)==="step"}).map(w=>w.timestamp)),Ve(),i(Y,!1),ot=requestAnimationFrame(At)}),xa(()=>{ot!==null&&cancelAnimationFrame(ot),Te(),_t()}),ne(()=>(e(Ie),e(S),e(ae)),()=>{var t;i(v,e(Ie).get((t=e(S)[e(ae)])==null?void 0:t.recordingId))}),ne(()=>e(S),()=>{var t;i(c,((t=e(S)[0])==null?void 0:t.from)??0)}),ne(()=>e(S),()=>{var t;i(m,((t=e(S)[e(S).length-1])==null?void 0:t.to)??0)}),Tt(),rt();var Ye=Yr();_e("keydown",js,ht);var Pt=a(Ye);{var yt=t=>{Ar(t,{get steps(){return L()},get stepTimestamps(){return e(ce)},get currentStepIndex(){return e(se)},$$events:{jump:l=>ze(l.detail)}})};E(Pt,t=>{L().length>0&&t(yt)})}var vt=r(Pt,2),ct=a(vt),dt=a(ct);Ms(dt,t=>i(W,t),()=>e(W));var Jt=r(dt,2);{var Qt=t=>{$r(t,{get from(){return e(c)},get to(){return e(m)},get position(){return e(it)},get stepTimestamps(){return e(ce)},$$events:{seek:l=>oe(l.detail,!1)}})};E(Jt,t=>{e(S).length>1&&t(Qt)})}s(ct);var wt=r(ct,2);{var mt=t=>{var l=zr(),f=a(l,!0);s(l),k(w=>h(f,w),[()=>Ga(e(v).tabIndex)],ee),n(t,l)};E(wt,t=>{e(S).length>1&&e(v)&&t(mt)})}var pt=r(wt,2);{var es=t=>{var l=Hr();n(t,l)},jt=t=>{var l=ft(),f=ye(l);{var w=C=>{var Z=Wr();Z.textContent=Ya,n(C,Z)};E(f,C=>{e(te)&&C(w)},!0)}n(t,l)};E(pt,t=>{e(Y)?t(es):t(jt,!1)})}var qt=r(pt,2);{var Dt=t=>{var l=Gr();k(()=>J(l,"style",`top: ${e(G).top??""}px; left: ${e(G).left??""}px; width: ${e(G).width??""}px; height: ${e(G).height??""}px;`)),n(t,l)};E(qt,t=>{e(G)&&t(Dt)})}var Ot=r(qt,2);{var Nt=t=>{var l=Vr();J(l,"aria-label",Va),k(()=>J(l,"style",e(Bt))),_e("click",l,Xt),n(t,l)};E(Ot,t=>{e(Ee)&&t(Nt)})}var Ke=r(Ot,2);J(Ke,"title",As),J(Ke,"aria-label",As),s(vt),Ms(vt,t=>i(d,t),()=>e(d));var xt=r(vt,2);{var kt=t=>{Fr(t,{get selectedElement(){return e(ie)}})};E(xt,t=>{u()&&t(kt)})}s(Ye),k(()=>{D(dt,"player-mount-multi",e(S).length>1),Ke.disabled=e(Y)||e(te),D(Ke,"inspect-fab-active",u())}),_e("click",Ke,Ae),n(T,Ye),lt()}var Ur=o('<div class="error-state svelte-ggy6pw"> </div>'),Zr=o('<div class="loading-state svelte-ggy6pw"><div class="loading-dots svelte-ggy6pw"><span class="svelte-ggy6pw"></span><span class="svelte-ggy6pw"></span><span class="svelte-ggy6pw"></span></div></div>'),Xr=Ct('<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="svelte-ggy6pw"><polyline points="20 6 9 17 4 12" class="svelte-ggy6pw"></polyline></svg>'),Jr=Ct('<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="svelte-ggy6pw"><line x1="18" y1="6" x2="6" y2="18" class="svelte-ggy6pw"></line><line x1="6" y1="6" x2="18" y2="18" class="svelte-ggy6pw"></line></svg>'),Qr=o('<span class="run-name-badge svelte-ggy6pw"> </span>'),en=o('<span class="run-name-badge svelte-ggy6pw"> </span>'),tn=o('<div class="stat svelte-ggy6pw"><span class="stat-num fail-color svelte-ggy6pw"> </span> <span class="stat-label svelte-ggy6pw"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="svelte-ggy6pw"><line x1="18" y1="6" x2="6" y2="18" class="svelte-ggy6pw"></line><line x1="6" y1="6" x2="18" y2="18" class="svelte-ggy6pw"></line></svg> </span></div>'),sn=o('<div class="stat svelte-ggy6pw"><span class="stat-num muted-color svelte-ggy6pw"> </span> <span class="stat-label svelte-ggy6pw"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" class="svelte-ggy6pw"><line x1="5" y1="12" x2="19" y2="12" class="svelte-ggy6pw"></line></svg> </span></div>'),an=o('<div class="stat svelte-ggy6pw"><span class="stat-num svelte-ggy6pw"> </span> <span class="stat-label svelte-ggy6pw"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-ggy6pw"><rect x="3" y="3" width="7" height="7" rx="1" class="svelte-ggy6pw"></rect><rect x="14" y="3" width="7" height="7" rx="1" class="svelte-ggy6pw"></rect><rect x="3" y="14" width="7" height="7" rx="1" class="svelte-ggy6pw"></rect><rect x="14" y="14" width="7" height="7" rx="1" class="svelte-ggy6pw"></rect></svg> </span></div>'),rn=o('<span class="log-runner-count svelte-ggy6pw"> </span>'),nn=o('<button class="log-tab svelte-ggy6pw"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" class="svelte-ggy6pw"><rect x="2" y="3" width="20" height="14" rx="2" class="svelte-ggy6pw"></rect><path d="M8 21h8M12 17v4" class="svelte-ggy6pw"></path></svg> </button>'),ln=o('<div class="log-tabs svelte-ggy6pw"></div>'),on=o('<details class="logs-section svelte-ggy6pw"><summary class="logs-summary svelte-ggy6pw"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-ggy6pw"><polyline points="4 17 10 11 4 5" class="svelte-ggy6pw"></polyline><line x1="12" y1="19" x2="20" y2="19" class="svelte-ggy6pw"></line></svg> <!></summary> <!> <pre class="logs-body svelte-ggy6pw"> </pre></details>'),vn=o('<div class="group-header runner-group-header svelte-ggy6pw"><svg class="group-icon svelte-ggy6pw" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><rect x="2" y="3" width="20" height="14" rx="2" class="svelte-ggy6pw"></rect><path d="M8 21h8M12 17v4" class="svelte-ggy6pw"></path></svg> </div>'),cn=o('<div class="group-header worker-group-header svelte-ggy6pw"><svg class="group-icon svelte-ggy6pw" width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7" rx="1" class="svelte-ggy6pw"></rect><rect x="14" y="3" width="7" height="7" rx="1" class="svelte-ggy6pw"></rect><rect x="3" y="14" width="7" height="7" rx="1" class="svelte-ggy6pw"></rect><rect x="14" y="14" width="7" height="7" rx="1" class="svelte-ggy6pw"></rect></svg> </div>'),dn=o('<span class="suite-tag svelte-ggy6pw"> </span>'),pn=o('<span class="scenario-count svelte-ggy6pw"> </span>'),gn=o('<span class="scenario-count svelte-ggy6pw"> </span>'),un=o('<button class="replay-btn svelte-ggy6pw"><svg width="11" height="11" viewBox="0 0 24 24" fill="currentColor" stroke="none" class="svelte-ggy6pw"><polygon points="5,3 19,12 5,21" class="svelte-ggy6pw"></polygon></svg> </button>'),fn=o('<button class="replay-btn replay-btn-sm svelte-ggy6pw"><svg width="9" height="9" viewBox="0 0 24 24" fill="currentColor" stroke="none" class="svelte-ggy6pw"><polygon points="5,3 19,12 5,21" class="svelte-ggy6pw"></polygon></svg> </button>'),hn=o('<div class="example-header svelte-ggy6pw"><!> <span class="svelte-ggy6pw"> </span> <span class="scenario-duration svelte-ggy6pw"> </span> <!></div>'),_n=o('<pre class="step-error svelte-ggy6pw"> </pre>'),yn=o('<td class="svelte-ggy6pw"> </td>'),wn=o('<tr class="svelte-ggy6pw"></tr>'),mn=o('<table class="step-datatable svelte-ggy6pw"><tbody class="svelte-ggy6pw"></tbody></table>'),xn=o('<div class="step svelte-ggy6pw"><div class="step-row svelte-ggy6pw"><!> <!> <span class="step-name svelte-ggy6pw"> </span> <span class="step-duration svelte-ggy6pw"> </span></div> <!> <!></div>'),kn=o("<!> <!>",1),bn=o('<div class="steps svelte-ggy6pw"></div>'),En=o('<div class="scenario svelte-ggy6pw"><div class="scenario-row svelte-ggy6pw"><button class="scenario-header svelte-ggy6pw"><!> <span class="scenario-name svelte-ggy6pw"> <!> <!></span> <div class="scenario-tags svelte-ggy6pw"></div> <span class="scenario-duration svelte-ggy6pw"> </span> <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" class="chevron svelte-ggy6pw"><polyline points="9 18 15 12 9 6" class="svelte-ggy6pw"></polyline></svg></button> <!></div> <!></div>'),Rn=o('<div class="feature svelte-ggy6pw"><div class="feature-header svelte-ggy6pw"><h2 class="feature-name svelte-ggy6pw"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feature-icon svelte-ggy6pw"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z" class="svelte-ggy6pw"></path><polyline points="14 2 14 8 20 8" class="svelte-ggy6pw"></polyline></svg> <!></h2> <div class="feature-right svelte-ggy6pw"><span class="feature-file svelte-ggy6pw"> </span> <!></div></div> <div class="scenarios svelte-ggy6pw"></div></div>'),Ln=o("<!> <!>",1),In=o("<!> <!>",1),Cn=o('<div class="report-header svelte-ggy6pw"><div class="header-main svelte-ggy6pw"><div class="header-status svelte-ggy6pw"><div class="status-icon-wrap svelte-ggy6pw"><!></div> <div class="svelte-ggy6pw"><div class="h1-row svelte-ggy6pw"><h1 class="svelte-ggy6pw"> </h1> <!></div> <div class="header-meta svelte-ggy6pw"><span class="mono svelte-ggy6pw"> </span> <span class="meta-sep svelte-ggy6pw">·</span> <span class="svelte-ggy6pw"> </span> <span class="meta-sep svelte-ggy6pw">·</span> <span class="svelte-ggy6pw"> </span> <span class="meta-sep svelte-ggy6pw">·</span> <span class="browser-pill svelte-ggy6pw"><!> </span></div></div></div> <div class="header-stats svelte-ggy6pw"><div class="stat svelte-ggy6pw"><span class="stat-num pass-color svelte-ggy6pw"> </span> <span class="stat-label svelte-ggy6pw"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="svelte-ggy6pw"><polyline points="20 6 9 17 4 12" class="svelte-ggy6pw"></polyline></svg> </span></div> <!> <!> <div class="stat svelte-ggy6pw"><span class="stat-num svelte-ggy6pw"> </span> <span class="stat-label svelte-ggy6pw"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-ggy6pw"><circle cx="12" cy="12" r="10" class="svelte-ggy6pw"></circle><polyline points="12 6 12 12 16 14" class="svelte-ggy6pw"></polyline></svg> </span></div> <div class="stat svelte-ggy6pw"><span class="stat-num svelte-ggy6pw"> </span> <span class="stat-label svelte-ggy6pw"><svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" class="svelte-ggy6pw"><rect x="2" y="3" width="20" height="14" rx="2" class="svelte-ggy6pw"></rect><path d="M8 21h8M12 17v4" class="svelte-ggy6pw"></path></svg> </span></div> <!></div></div></div> <!> <!>',1),Tn=o('<div class="replay-overlay svelte-ggy6pw"><div class="replay-modal svelte-ggy6pw"><div class="replay-modal-header svelte-ggy6pw"><span class="replay-modal-title svelte-ggy6pw"> </span> <button class="replay-close svelte-ggy6pw"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" class="svelte-ggy6pw"><line x1="18" y1="6" x2="6" y2="18" class="svelte-ggy6pw"></line><line x1="6" y1="6" x2="18" y2="18" class="svelte-ggy6pw"></line></svg></button></div> <div class="replay-body svelte-ggy6pw"><!></div></div></div>'),An=o("<!> <!> <!>",1);function Kn(T,g){nt(g,!1);const[v,c]=Ra(),m=()=>La(Aa,"$page",v),A=R(),_=R(),L=R(),u=R(),B=R(),q=R(),H=R(),$=R(),M=parseInt(m().params.id,10);let d=R(null),W=R(null),y=R(new Set),Y=R([]),te=R(!1),ie=R(null),G=R([]),N=R(!1);function K(p){return e(Y).some(O=>O.scenarioId===p.id)}function U(p){i(ie,p),i(G,e(Y).filter(O=>O.scenarioId===p.id).sort((O,oe)=>O.tabIndex-oe.tabIndex)),i(te,!0)}function se(){i(te,!1),i(ie,null),i(G,[])}function ce(p){e(te)&&p.key==="Escape"&&!e(N)&&se()}Ps(async()=>{try{i(d,await Ma(M)),i(Y,await $a(M))}catch{i(W,Ua)}});function Ie(p){e(y).has(p)?e(y).delete(p):e(y).add(p),i(y,e(y))}let we=R(0);ne(()=>e(d),()=>{var p;i(A,ja(((p=e(d))==null?void 0:p.logs)??null))}),ne(()=>e(A),()=>{e(A)&&i(we,0)}),ne(()=>e(d),()=>{var p;i(_,((p=e(d))==null?void 0:p.status)==="PASS")}),ne(()=>e(d),()=>{var p;i(L,((p=e(d))==null?void 0:p.features.flatMap(O=>O.scenarios))??[])}),ne(()=>e(L),()=>{i(u,e(L).filter(p=>p.status==="passed").length)}),ne(()=>e(L),()=>{i(B,e(L).filter(p=>p.status==="failed").length)}),ne(()=>e(L),()=>{i(q,e(L).filter(p=>p.status==="skipped"||p.status==="pending").length)}),ne(()=>(e(d),e(L)),()=>{var p;i(H,((p=e(d))==null?void 0:p.duration)??e(L).reduce((O,oe)=>O+oe.duration,0))}),ne(()=>(e(d),e(Y),Is),()=>{i($,e(d)&&e(Y)?Is(e(d).features):[])}),Tt(),rt();var S=An();_e("keydown",js,ce),pa(p=>{ba.title=Ka});var ae=ye(S);ur(ae,{href:"/reports",label:Za});var je=r(ae,2);{var it=p=>{var O=Ur(),oe=a(O,!0);s(O),k(()=>h(oe,e(W))),n(p,O)},ot=p=>{var O=ft(),oe=ye(O);{var ze=ve=>{var Te=Zr();n(ve,Te)},Ce=ve=>{var Te=Cn(),xe=ye(Te),He=a(xe),Ae=a(He),de=a(Ae),ht=a(de);{var Ee=x=>{var b=Xr();n(x,b)},Bt=x=>{var b=Jr();n(x,b)};E(ht,x=>{e(_)?x(Ee):x(Bt,!1)})}s(de);var We=r(de,2),qe=a(We),Ge=a(qe),Mt=a(Ge,!0);s(Ge);var $t=r(Ge,2);{var Zt=x=>{var b=Qr(),P=a(b,!0);s(b),k(()=>h(P,e(d).testRun.title)),n(x,b)},Xt=x=>{var b=ft(),P=ye(b);{var I=F=>{var ge=en(),De=a(ge,!0);s(ge),k(()=>h(De,e(d).triggerType)),n(F,ge)};E(P,F=>{Oa(e(d).triggerType)&&F(I)},!0)}n(x,b)};E($t,x=>{var b;(b=e(d).testRun)!=null&&b.title?x(Zt):x(Xt,!1)})}s(qe);var St=r(qe,2),_t=a(St),Ve=a(_t,!0);s(_t);var Ye=r(_t,4),Pt=a(Ye,!0);s(Ye);var yt=r(Ye,4),vt=a(yt,!0);s(yt);var ct=r(yt,4),dt=a(ct);const Jt=ee(()=>e(d).browser??Rs[0].id);Er(dt,{get browser(){return e(Jt)}});var Qt=r(dt);s(ct),s(St),s(We),s(Ae);var wt=r(Ae,2),mt=a(wt),pt=a(mt),es=a(pt,!0);s(pt);var jt=r(pt,2),qt=r(a(jt));qt.nodeValue=` ${Xa}`,s(jt),s(mt);var Dt=r(mt,2);{var Ot=x=>{var b=tn(),P=a(b),I=a(P,!0);s(P);var F=r(P,2),ge=r(a(F));ge.nodeValue=` ${ir}`,s(F),s(b),k(()=>h(I,e(B))),n(x,b)};E(Dt,x=>{e(B)>0&&x(Ot)})}var Nt=r(Dt,2);{var Ke=x=>{var b=sn(),P=a(b),I=a(P,!0);s(P);var F=r(P,2),ge=r(a(F));ge.nodeValue=` ${or}`,s(F),s(b),k(()=>h(I,e(q))),n(x,b)};E(Nt,x=>{e(q)>0&&x(Ke)})}var xt=r(Nt,2),kt=a(xt),t=a(kt,!0);s(kt);var l=r(kt,2),f=r(a(l));f.nodeValue=` ${Ja}`,s(l),s(xt);var w=r(xt,2),C=a(w),Z=a(C,!0);s(C);var me=r(C,2),re=r(a(me));s(me),s(w);var ke=r(w,2);{var pe=x=>{var b=an(),P=a(b),I=a(P,!0);s(P);var F=r(P,2),ge=r(a(F));s(F),s(b),k(De=>{h(I,e(d).workerCount),h(ge,` ${De??""}`)},[()=>Es(e(d).workerCount,"worker")],ee),n(x,b)};E(ke,x=>{e(d).workerCount>1&&x(pe)})}s(wt),s(He),s(xe);var Re=r(xe,2);{var Ue=x=>{var b=on(),P=a(b),I=r(a(P));I.nodeValue=` ${vr} `;var F=r(I);{var ge=ue=>{var Le=rn(),Et=a(Le,!0);s(Le),k(Rt=>h(Et,Rt),[()=>dr(e(A).length)],ee),n(ue,Le)};E(F,ue=>{e(A).length>1&&ue(ge)})}s(P);var De=r(P,2);{var Xe=ue=>{var Le=ln();fe(Le,5,()=>e(A),he,(Et,Rt,Oe)=>{var V=nn(),Je=r(a(V));s(V),k(()=>{D(V,"log-tab-active",e(we)===Oe),h(Je,` ${e(Rt).name??""}`)}),_e("click",V,Ls(()=>i(we,Oe))),n(Et,V)}),s(Le),n(ue,Le)};E(De,ue=>{e(A).length>1&&ue(Xe)})}var Be=r(De,2),bt=a(Be,!0);s(Be),s(b),k(()=>{var ue;return h(bt,((ue=e(A)[e(we)])==null?void 0:ue.content)??"")}),n(x,b)};E(Re,x=>{e(A).length>0&&x(Ue)})}var Ze=r(Re,2);fe(Ze,1,()=>e($),he,(x,b,P)=>{var I=In(),F=ye(I);{var ge=Xe=>{var Be=vn(),bt=r(a(Be));s(Be),k(()=>h(bt,` ${e(b).runnerName??Qa??""}`)),n(Xe,Be)};E(F,Xe=>{e($).length>1&&Xe(ge)})}var De=r(F,2);fe(De,1,()=>e(b).workers,he,(Xe,Be,bt)=>{var ue=Ln(),Le=ye(ue);{var Et=Oe=>{var V=cn(),Je=r(a(V));s(V),k(Ne=>h(Je,` ${Ne??""}`),[()=>er(e(Be).workerId)],ee),n(Oe,V)};E(Le,Oe=>{e(b).workers.length>1&&Oe(Et)})}var Rt=r(Le,2);fe(Rt,1,()=>e(Be).features,he,(Oe,V,Je)=>{var Ne=Rn(),ts=a(Ne),ss=a(ts),cs=r(a(ss)),Os=r(cs);{var Ns=Me=>{var z=dn(),gt=a(z,!0);s(z),k(Qe=>h(gt,Qe),[()=>Cs(e(V))],ee),n(Me,z)};E(Os,Me=>{Cs(e(V))&&Me(Ns)})}s(ss);var ds=r(ss,2),Ft=a(ds),Fs=a(Ft,!0);s(Ft);var zs=r(Ft,2);const Hs=ee(()=>e(V).status==="passed"?"pass":"fail");pr(zs,{get variant(){return e(Hs)},children:(Me,z)=>{Ea();var gt=Kt();k(()=>h(gt,e(V).status)),n(Me,gt)},$$slots:{default:!0}}),s(ds),s(ts);var ps=r(ts,2);fe(ps,5,()=>e(V).scenarioGroups,he,(Me,z,gt)=>{var Qe=En();const gs=ee(()=>`${P}-${bt}-${Je}-${e(z).key}`),us=ee(()=>e(y).has(e(gs))),Ws=ee(()=>e(z).scenarios.some(K));var as=a(Qe),zt=a(as),fs=a(zt);$s(fs,{get status(){return e(z).status}});var rs=r(fs,2),hs=a(rs),_s=r(hs);{var Gs=X=>{var j=pn(),et=a(j,!0);s(j),k($e=>h(et,$e),[()=>tr(e(z).scenarios.length)],ee),n(X,j)};E(_s,X=>{e(z).scenarios.length>1&&X(Gs)})}var Vs=r(_s,2);{var Ys=X=>{var j=gn();J(j,"title",sr);var et=a(j,!0);s(j),k($e=>h(et,$e),[()=>ar(e(z).scenarios[0].attempts)],ee),n(X,j)};E(Vs,X=>{var j;((j=e(z).scenarios[0])==null?void 0:j.attempts)>1&&X(Ys)})}s(rs);var ns=r(rs,2);fe(ns,5,()=>e(z).tags,he,(X,j)=>{yr(X,{get tag(){return e(j)}})}),s(ns);var ls=r(ns,2),Ks=a(ls,!0);s(ls);var Us=r(ls,2);s(zt);var Zs=r(zt,2);{var Xs=X=>{var j=un();J(j,"title",rr);var et=r(a(j));et.nodeValue=` ${Bs}`,s(j),_e("click",j,()=>U(e(z).scenarios[0])),n(X,j)};E(Zs,X=>{e(Ws)&&e(z).scenarios.length===1&&X(Xs)})}s(as);var Js=r(as,2);{var Qs=X=>{var j=bn();fe(j,5,()=>e(z).scenarios,he,(et,$e,ea)=>{var ys=kn(),ws=ye(ys);{var ta=Lt=>{var le=hn(),Fe=a(le);$s(Fe,{get status(){return e($e).status}});var tt=r(Fe,2),Ht=a(tt,!0);s(tt);var ut=r(tt,2),It=a(ut,!0);s(ut);var is=r(ut,2);{var Wt=st=>{var Se=fn(),os=r(a(Se));os.nodeValue=` ${Bs}`,s(Se),_e("click",Se,()=>U(e($e))),n(st,Se)};E(is,st=>{K(e($e))&&st(Wt)})}s(le),k((st,Se)=>{h(Ht,st),h(It,Se)},[()=>cr(ea+1),()=>Yt(e($e).duration)],ee),n(Lt,le)};E(ws,Lt=>{e(z).scenarios.length>1&&Lt(ta)})}var sa=r(ws,2);fe(sa,1,()=>e($e).steps,he,(Lt,le)=>{var Fe=xn(),tt=a(Fe),Ht=a(tt);Ds(Ht,{get status(){return e(le).status}});var ut=r(Ht,2);qs(ut,{get keyword(){return e(le).keyword}});var It=r(ut,2),is=a(It,!0);s(It);var Wt=r(It,2),st=a(Wt,!0);s(Wt),s(tt);var Se=r(tt,2);{var os=Pe=>{var at=_n(),Gt=a(at,!0);s(at),k(()=>h(Gt,e(le).error)),n(Pe,at)};E(Se,Pe=>{e(le).error&&Pe(os)})}var aa=r(Se,2);{var ra=Pe=>{var at=mn(),Gt=a(at);fe(Gt,5,()=>e(le).dataTable,he,(na,la,ia,Bn)=>{var Vt=wn();D(Vt,"step-datatable-header",ia===0),fe(Vt,5,()=>e(la),he,(oa,va)=>{var vs=yn(),ca=a(vs,!0);s(vs),k(()=>h(ca,e(va))),n(oa,vs)}),s(Vt),n(na,Vt)}),s(Gt),s(at),n(Pe,at)};E(aa,Pe=>{e(le).dataTable&&Pe(ra)})}s(Fe),k(Pe=>{D(Fe,"step-fail",e(le).status==="failed"),D(Fe,"step-skip",e(le).status==="skipped"||e(le).status==="pending"),h(is,e(le).name),h(st,Pe)},[()=>Yt(e(le).duration)],ee),n(Lt,Fe)}),n(et,ys)}),s(j),Ia(3,j,()=>Ca,()=>({duration:200})),n(X,j)};E(Js,X=>{e(us)&&X(Qs)})}s(Qe),k((X,j)=>{J(Qe,"style",X),D(Qe,"scenario-fail",e(z).status==="failed"),h(hs,`${e(z).name??""} `),h(Ks,j),D(Us,"rotated",e(us))},[()=>Ts(Je*5+gt,40),()=>Yt(e(z).duration)],ee),_e("click",zt,()=>Ie(e(gs))),n(Me,Qe)}),s(ps),s(Ne),k((Me,z)=>{J(Ne,"style",Me),D(Ne,"feature-pass",e(V).status==="passed"),D(Ne,"feature-fail",e(V).status!=="passed"),h(cs,` ${e(V).name??""} `),J(Ft,"title",e(V).uri),h(Fs,z)},[()=>Ts(Je,60),()=>qa(e(V).uri)],ee),n(Oe,Ne)}),n(Xe,ue)}),n(x,I)}),k((x,b,P,I)=>{D(xe,"pass",e(_)),D(xe,"fail",!e(_)),D(de,"pass-bg",e(_)),D(de,"fail-bg",!e(_)),h(Mt,e(_)?nr:lr),h(Ve,e(d).tags),h(Pt,x),h(vt,b),h(Qt,` ${e(d).browser??Rs[0].id??""}`),h(es,e(u)),h(t,P),h(Z,e(d).runnerCount),h(re,` ${I??""}`)},[()=>Da(e(d).triggerType),()=>new Date(e(d).createdAt).toLocaleString(),()=>Yt(e(H)),()=>Es(e(d).runnerCount,"runner")],ee),n(ve,Te)};E(oe,ve=>{e(d)?ve(Ce,!1):ve(ze)},!0)}n(p,O)};E(je,p=>{e(W)?p(it):p(ot,!1)})}var At=r(je,2);{var be=p=>{var O=Tn(),oe=a(O),ze=a(oe),Ce=a(ze),ve=a(Ce,!0);s(Ce);var Te=r(Ce,2);s(ze);var xe=r(ze,2),He=a(xe);{var Ae=de=>{Kr(de,{reportId:M,get recordings(){return e(G)},get steps(){return e(ie).steps},get inspecting(){return e(N)},set inspecting(ht){i(N,ht)},$$legacy:!0})};E(He,de=>{e(G).length>0&&de(Ae)})}s(xe),s(oe),s(O),k(()=>h(ve,e(ie).name)),_e("click",Te,se),_e("click",oe,Ls(function(de){Ta.call(this,g,de)})),_e("click",O,se),n(p,O)};E(At,p=>{e(te)&&e(ie)&&p(be)})}n(T,S),lt(),c()}export{Kn as component};
@@ -1,6 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- import{h as Dt,a as u,s as g,e as K,t as x,b as j,c as Ut}from"../chunks/CfkUW1vA.js";import{i as Bt}from"../chunks/C00jnSU2.js";import{p as Pt,o as Mt,s as o,f as qe,c as Ht,m as w,$ as Wt,t as $,x as H,g as e,y as W,d as n,j as s,k as a,v as Jt,n as Ne}from"../chunks/CeH-RgMb.js";import{i as J,s as Gt,a as Ft}from"../chunks/CegSvdD-.js";import{e as ze,i as Xe,t as xe}from"../chunks/Beula-TH.js";import{A as Ce,s as q,v as bt,u as z,n as ht,f as Vt,B as Me,b as Kt,r as de,z as qt,F as zt,G as Xt,D as Qt}from"../chunks/DuAVKaL3.js";import{b as lt,a as Et}from"../chunks/BAvTKHxT.js";import{T as Yt,B as Qe,b as Zt}from"../chunks/CZWchtW8.js";import{p as jt}from"../chunks/Bfc47y5P.js";import{f as es,a as ts}from"../chunks/CoTEzvLa.js";import{f as ss,c as as}from"../chunks/BJ_ypKl3.js";import{s as ns}from"../chunks/B0_HKFXV.js";import{B as rs}from"../chunks/C8S7qQjQ.js";import{M as ls}from"../chunks/DgQy0SB2.js";import{C as os}from"../chunks/DAmOMhaf.js";import{E as vs}from"../chunks/Cfmt4_tJ.js";async function ot(){const c=await fetch(`${Ce}/cron-jobs`),{cronJobs:C}=await c.json();return C??[]}async function cs({taskName:c,cronExpression:C,tags:X,workers:Q,browser:O,runnerIds:R,notifyDiscord:T,notifySlack:B,isEditing:h,editTaskName:k}){const p=X.replace(/\sOR\s/gi,P=>P.toLowerCase()),Y=h?`${Ce}/cron-jobs/${encodeURIComponent(k)}`:`${Ce}/cron-jobs`;return(await fetch(Y,{method:h?"PUT":"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cronExpression:C,taskName:c,tags:p,workers:Q,browser:O,runnerIds:R,notifyDiscord:T??!1,notifySlack:B??!1})})).json()}async function is(c,C){return(await fetch(`${Ce}/cron-jobs/${encodeURIComponent(c)}/toggle`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:C})})).json()}async function ds(c){return(await fetch(`${Ce}/cron-jobs/${encodeURIComponent(c)}/run`,{method:"POST"})).json()}async function us(c){return(await fetch(`${Ce}/cron-jobs/${encodeURIComponent(c)}`,{method:"DELETE"})).json()}const fs="Scheduled Tests — Plum",_s="Scheduled Tests",ms="Manage recurring test runs via cron jobs",ps="+ New Job",bs="No scheduled tests yet. Create one to get started.",hs="Task Name",Es="Use a unique, meaningful name",gs="nightly-login-suite",ks="Schedule",ys="Select a schedule",Ns="Custom…",xs="0 9 * * 1-5",Cs="Invalid cron expression",Ts="Tags",Ss="Multiple: @test-1 or @test-2. Leave blank to run all tests",Ls="@suite-login (optional)",$s="Workers",Rs="Parallel workers for this job",As="Browser",Is="Runners",ws="Select one or more nodes",Os="this server",Ds="Notifications",Us="All fields are required.",Bs="Invalid cron expression.",Ps="Failed to save. Please try again.",gt="Network error.",Ms="Could not update schedule.",Hs="Could not trigger run.",Ws="Could not delete cron job.",Js="Delete Cron Job",Gs="Are you sure you want to delete",Fs="Disable schedule",Vs="Enable schedule",Ks="Running now",qs="Name",zs="Schedule",Xs="Tags",Qs="Workers",Ys="Browser",Zs="Runner",js="Actions",ea=c=>c?"Edit Cron Job":"New Cron Job",ta=c=>c?"Save Changes":"Add Cron Job",sa=c=>c?Fs:Vs,aa=c=>`Run ${c} now`,na=c=>`${c} nodes`,ra=(c,C)=>`${c?"Updated":"Added"}: ${C}`,la=c=>`Started: ${c}`,oa=c=>`Deleted: ${c}`,va=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function ca(c){if(!c)return"";const C=c.trim().split(/\s+/);if(C.length!==5)return"";const[X,Q,O,R,T]=C,B=(D,P)=>{const Te=D>=12?"PM":"AM";return`${D%12||12}:${String(P).padStart(2,"0")} ${Te}`},h=D=>/^\d+$/.test(D),k=h(Q)?+Q:null,p=h(X)?+X:null;if(c==="* * * * *")return"Every minute";const Y=X.match(/^\*\/(\d+)$/);if(Y&&Q==="*"&&O==="*"&&R==="*"&&T==="*")return`Every ${Y[1]} minutes`;if(p!==null&&Q==="*"&&O==="*"&&R==="*"&&T==="*")return`Every hour at :${String(p).padStart(2,"0")}`;if(p!==null&&k!==null&&O==="*"&&R==="*"&&T==="1-5")return`Weekdays at ${B(k,p)}`;if(p!==null&&k!==null&&O==="*"&&R==="*"&&T==="*")return`Daily at ${B(k,p)}`;if(p!==null&&k!==null&&O==="*"&&R==="*"&&/^\d$/.test(T))return`Every ${va[+T]} at ${B(k,p)}`;const A=h(O)?+O:null;return p!==null&&k!==null&&A!==null&&R==="*"&&T==="*"?`Monthly on the ${A}${A===1?"st":A===2?"nd":A===3?"rd":"th"} at ${B(k,p)}`:""}var ia=x('<option class="svelte-13v7bmf"> </option>'),da=x('<p class="cron-desc svelte-13v7bmf"> </p>'),ua=x('<input type="text" class="field-input cron-input svelte-13v7bmf" spellcheck="false"> <!>',1),fa=x('<button type="button" class="seg-btn svelte-13v7bmf"><span class="seg-num svelte-13v7bmf"> </span></button>'),_a=x('<label class="runner-check-option svelte-13v7bmf"><input type="checkbox" class="svelte-13v7bmf"> <span class="runner-check-dot remote svelte-13v7bmf"></span> <span class="svelte-13v7bmf"> </span> <span class="runner-check-hint svelte-13v7bmf"> </span></label>'),ma=x('<label class="notify-check-option svelte-13v7bmf"><input type="checkbox" class="svelte-13v7bmf"> <span class="svelte-13v7bmf"></span></label>'),pa=x('<label class="notify-check-option svelte-13v7bmf"><input type="checkbox" class="svelte-13v7bmf"> <span class="svelte-13v7bmf"></span></label>'),ba=x('<div class="field svelte-13v7bmf"><div class="field-label svelte-13v7bmf"><span class="svelte-13v7bmf"></span></div> <div class="notify-checks svelte-13v7bmf"><!> <!></div></div>'),ha=x('<p class="form-error svelte-13v7bmf"> </p>'),Ea=x('<form class="modal-form svelte-13v7bmf"><div class="field svelte-13v7bmf"><div class="field-label svelte-13v7bmf"><span class="svelte-13v7bmf"></span> <span class="field-hint svelte-13v7bmf"></span></div> <input type="text" class="field-input svelte-13v7bmf" required></div> <div class="field svelte-13v7bmf"><div class="field-label svelte-13v7bmf"><span class="svelte-13v7bmf"></span></div> <select class="field-input svelte-13v7bmf" required><option disabled class="svelte-13v7bmf"></option><!><option class="svelte-13v7bmf"></option></select> <!></div> <div class="field svelte-13v7bmf"><div class="field-label svelte-13v7bmf"><span class="svelte-13v7bmf"></span> <span class="field-hint svelte-13v7bmf"></span></div> <input type="text" class="field-input svelte-13v7bmf"></div> <div class="field svelte-13v7bmf"><div class="field-label svelte-13v7bmf"><span class="svelte-13v7bmf"></span> <span class="field-hint svelte-13v7bmf"></span></div> <div class="stepper svelte-13v7bmf"><button type="button" class="step-btn svelte-13v7bmf">−</button> <span class="step-val svelte-13v7bmf"> </span> <button type="button" class="step-btn svelte-13v7bmf">+</button></div></div> <div class="field svelte-13v7bmf"><div class="field-label svelte-13v7bmf"><span class="svelte-13v7bmf"></span></div> <div class="seg-control svelte-13v7bmf"></div></div> <div class="field svelte-13v7bmf"><div class="field-label svelte-13v7bmf"><span class="svelte-13v7bmf"></span> <span class="field-hint svelte-13v7bmf"></span></div> <div class="runner-checks svelte-13v7bmf"><label class="runner-check-option svelte-13v7bmf"><input type="checkbox" class="svelte-13v7bmf"> <span class="runner-check-dot built-in svelte-13v7bmf"></span> <span class="svelte-13v7bmf"></span> <span class="runner-check-hint svelte-13v7bmf"></span></label> <!></div></div> <!> <!> <!></form>'),ga=x(' <strong class="svelte-13v7bmf"> </strong> ',1),ka=x('<span class="running-dot svelte-13v7bmf"></span>'),ya=x('<tr class="job-row svelte-13v7bmf"><td class="td-toggle svelte-13v7bmf"><button class="toggle-btn svelte-13v7bmf"><span class="toggle-knob svelte-13v7bmf"></span></button></td><td class="td-run svelte-13v7bmf"><button class="run-icon-btn svelte-13v7bmf"><svg width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="none" class="svelte-13v7bmf"><polygon points="5,3 19,12 5,21" class="svelte-13v7bmf"></polygon></svg></button></td><td class="job-name svelte-13v7bmf"><!> </td><td class="svelte-13v7bmf"><!></td><td class="svelte-13v7bmf"><span class="tag-text svelte-13v7bmf"> </span></td><td class="svelte-13v7bmf"><span class="workers-badge svelte-13v7bmf"> </span></td><td class="svelte-13v7bmf"><span class="browser-badge svelte-13v7bmf"> </span></td><td class="svelte-13v7bmf"><span class="runner-badge svelte-13v7bmf"><!></span></td><td class="actions-cell svelte-13v7bmf"><!> <!></td></tr>'),Na=x('<div class="table-wrap svelte-13v7bmf"><table class="data-table svelte-13v7bmf"><thead class="svelte-13v7bmf"><tr class="svelte-13v7bmf"><th class="th-toggle svelte-13v7bmf"></th><th class="th-run svelte-13v7bmf"></th><th class="svelte-13v7bmf"></th><th class="svelte-13v7bmf"></th><th class="svelte-13v7bmf"></th><th class="svelte-13v7bmf"></th><th class="svelte-13v7bmf"></th><th class="svelte-13v7bmf"></th><th class="svelte-13v7bmf"></th></tr></thead><tbody class="svelte-13v7bmf"></tbody></table></div>'),xa=x('<!> <!> <!> <div class="page-header svelte-13v7bmf"><div class="header-row svelte-13v7bmf"><div class="svelte-13v7bmf"><h1 class="svelte-13v7bmf"></h1> <p class="subtitle svelte-13v7bmf"></p></div> <!></div></div> <div class="card svelte-13v7bmf" style="padding: 0; overflow: hidden;"><!></div>',1);function Wa(c,C){Pt(C,!1);const[X,Q]=Gt(),O=()=>Ft(as,"$backgroundRuns",X),R=/^(\*|([0-5]?[0-9])|\*\/[0-9]+) (\*|([01]?[0-9]|2[0-3])) (\*|([01]?[0-9]|3[01])) (\*|([1-9]|1[0-2])) (\*|[0-6](-[0-6])?)$/,T="__custom__",B=[{label:"Every minute",value:"* * * * *"},{label:"Every hour",value:"0 * * * *"},{label:"Every midnight",value:"0 0 * * *"},{label:"Every Sunday",value:"0 0 * * 0"}];let h=w([]),k=w([]),p=w({discordWebhookUrl:"",slackWebhookUrl:"",notifyPublicUrl:""}),Y=w(null),A=w(!1),D=w(!1),P=w(!1),Te="",Se=w(""),r=w({taskName:"",cronExpression:"",tags:"",workers:1,browser:Me[0].id,runnerIds:[z],notifyDiscord:!1,notifySlack:!1}),Le=w(""),$e=w(!1),G=w("");function ee(t,f){o(Y,{type:t,message:f}),setTimeout(()=>o(Y,null),Kt)}function kt(t){t.target.value===T?(o($e,!0),W(r,e(r).cronExpression="")):(o($e,!1),W(r,e(r).cronExpression=t.target.value))}function vt(t){const f=e(r).runnerIds;f.includes(t)&&f.length===1||W(r,e(r).runnerIds=f.includes(t)?f.filter(d=>d!==t):[...f,t])}function ct(t){W(r,e(r).workers=Math.max(1,Math.min(10,(e(r).workers||1)+t)))}function yt(){o(P,!1),Te="",o(r,{taskName:"",cronExpression:"",tags:"",workers:1,browser:Me[0].id,runnerIds:[z],notifyDiscord:!1,notifySlack:!1}),o(Le,""),o($e,!1),o(G,""),o(A,!0)}function Nt(t){o(P,!0),Te=t.taskName;const f=new Set([z,...e(k).map(y=>y.id)]),S=(t.runnerIds?t.runnerIds.split(",").map(y=>y.trim()):[z]).filter(y=>f.has(y));o(r,{taskName:t.taskName,cronExpression:t.cronExpression,tags:t.tags,workers:t.workers??1,browser:t.browser??Me[0].id,runnerIds:S.length>0?S:[z],notifyDiscord:t.notifyDiscord??!1,notifySlack:t.notifySlack??!1});const L=B.some(y=>y.value===t.cronExpression);o($e,!L),o(Le,L?t.cronExpression:T),o(G,""),o(A,!0)}async function xt(){if(!e(r).taskName||!e(r).cronExpression){o(G,Us);return}if(!R.test(e(r).cronExpression)){o(G,Bs);return}o(G,"");try{(await cs({...e(r),isEditing:e(P),editTaskName:Te})).message?(ee("success",ra(e(P),e(r).taskName)),o(A,!1),o(h,await ot())):o(G,Ps)}catch{o(G,gt)}}async function Ct(t){const f=!t.enabled;o(h,e(h).map(d=>d.taskName===t.taskName?{...d,enabled:f}:d));try{await is(t.taskName,f)}catch{o(h,e(h).map(d=>d.taskName===t.taskName?{...d,enabled:!f}:d)),ee("error",Ms)}}async function Tt(t){try{await ds(t),ee("success",la(t))}catch{ee("error",Hs)}}async function St(){try{(await us(e(Se))).message?(ee("success",oa(e(Se))),o(h,await ot())):ee("error",Ws)}catch{ee("error",gt)}o(D,!1),o(Se,"")}function Lt(t){var f;return((f=B.find(d=>d.value===t))==null?void 0:f.label)??t}Mt(async()=>{await(async t=>(o(h,t[0]),o(k,t[1]),o(p,t[2])))(await Promise.all([ot(),es().catch(()=>[]),ts().catch(()=>({discordWebhookUrl:"",slackWebhookUrl:"",notifyPublicUrl:""}))]))}),Bt();var it=xa();Dt(t=>{Wt.title=fs});var dt=qe(it);const $t=H(()=>ea(e(P)));ls(dt,{get title(){return e($t)},get open(){return e(A)},set open(t){o(A,t)},children:(t,f)=>{var d=Ea(),S=n(d),L=n(S),y=n(L);y.textContent=hs;var ue=s(y,2);ue.textContent=Es,a(L);var fe=s(L,2);de(fe),q(fe,"placeholder",gs),a(S);var _e=s(S,2),me=n(_e),He=n(me);He.textContent=ks,a(me);var te=s(me,2);$(()=>{e(Le),Jt(()=>{})});var se=n(te);se.value=((se.__value="")==null,""),se.textContent=ys;var We=s(se);ze(We,1,()=>B,Xe,(v,i)=>{var l=ia(),b={},I=n(l,!0);a(l),$(()=>{b!==(b=e(i).value)&&(l.value=(l.__value=e(i).value)==null?"":e(i).value),g(I,e(i).label)}),u(v,l)});var m=s(We);m.value=(m.__value=T)==null?"":T,m.textContent=Ns,a(te);var je=s(te,2);{var ae=v=>{var i=ua(),l=qe(i);de(l),q(l,"placeholder",xs);var b=s(l,2);{var I=M=>{var F=da(),Be=n(F,!0);a(F),$((Pe,V)=>{xe(F,"cron-invalid",Pe),g(Be,V)},[()=>!R.test(e(r).cronExpression),()=>R.test(e(r).cronExpression)?ca(e(r).cronExpression)||e(r).cronExpression:Cs],H),u(M,F)};J(b,M=>{e(r).cronExpression&&M(I)})}lt(l,()=>e(r).cronExpression,M=>W(r,e(r).cronExpression=M)),u(v,i)};J(je,v=>{e($e)&&v(ae)})}a(_e);var U=s(_e,2),ne=n(U),Z=n(ne);Z.textContent=Ts;var Re=s(Z,2);Re.textContent=Ss,a(ne);var pe=s(ne,2);de(pe),q(pe,"placeholder",Ls),a(U);var re=s(U,2),be=n(re),Je=n(be);Je.textContent=$s;var et=s(Je,2);et.textContent=Rs,a(be);var he=s(be,2),Ae=n(he),le=s(Ae,2),Ge=n(le,!0);a(le);var Fe=s(le,2);a(he),a(re);var oe=s(re,2),ve=n(oe),tt=n(ve);tt.textContent=As,a(ve);var Ee=s(ve,2);ze(Ee,5,()=>Me,Xe,(v,i)=>{var l=fa(),b=n(l),I=n(b,!0);a(b),a(l),$(()=>{xe(l,"active",e(r).browser===e(i).id),g(I,e(i).label)}),K("click",l,()=>W(r,e(r).browser=e(i).id)),u(v,l)}),a(Ee),a(oe);var ge=s(oe,2),Ie=n(ge),ke=n(Ie);ke.textContent=Is;var we=s(ke,2);we.textContent=ws,a(Ie);var Ve=s(Ie,2),Oe=n(Ve),ye=n(Oe);de(ye);var De=s(ye,4);De.textContent=bt;var Ke=s(De,2);Ke.textContent=Os,a(Oe);var st=s(Oe,2);ze(st,1,()=>e(k),Xe,(v,i)=>{var l=_a(),b=n(l);de(b);var I=s(b,4),M=n(I,!0);a(I);var F=s(I,2),Be=n(F,!0);a(F),a(l),$(Pe=>{ht(b,Pe),g(M,e(i).name),g(Be,e(i).url)},[()=>e(r).runnerIds.includes(e(i).id)],H),K("change",b,()=>vt(e(i).id)),u(v,l)}),a(Ve),a(ge);var _=s(ge,2);{var E=v=>{var i=ba(),l=n(i),b=n(l);b.textContent=Ds,a(l);var I=s(l,2),M=n(I);{var F=V=>{var ce=ma(),ie=n(ce);de(ie);var nt=s(ie,2);nt.textContent=qt,a(ce),Et(ie,()=>e(r).notifyDiscord,rt=>W(r,e(r).notifyDiscord=rt)),u(V,ce)};J(M,V=>{e(p).discordWebhookUrl&&V(F)})}var Be=s(M,2);{var Pe=V=>{var ce=pa(),ie=n(ce);de(ie);var nt=s(ie,2);nt.textContent=zt,a(ce),Et(ie,()=>e(r).notifySlack,rt=>W(r,e(r).notifySlack=rt)),u(V,ce)};J(Be,V=>{e(p).slackWebhookUrl&&V(Pe)})}a(I),a(i),u(v,i)};J(_,v=>{(e(p).discordWebhookUrl||e(p).slackWebhookUrl)&&v(E)})}var N=s(_,2);{var Ue=v=>{var i=ha(),l=n(i,!0);a(i),$(()=>g(l,e(G))),u(v,i)};J(N,v=>{e(G)&&v(Ue)})}var at=s(N,2);Qe(at,{type:"submit",size:"md",children:(v,i)=>{Ne();var l=j();$(b=>g(l,b),[()=>ta(e(P))],H),u(v,l)},$$slots:{default:!0}}),a(d),$(v=>{Ae.disabled=e(r).workers<=1,g(Ge,e(r).workers),Fe.disabled=e(r).workers>=10,ht(ye,v)},[()=>e(r).runnerIds.includes(z)],H),lt(fe,()=>e(r).taskName,v=>W(r,e(r).taskName=v)),Zt(te,()=>e(Le),v=>o(Le,v)),K("change",te,kt),lt(pe,()=>e(r).tags,v=>W(r,e(r).tags=v)),K("click",Ae,()=>ct(-1)),K("click",Fe,()=>ct(1)),K("change",ye,()=>vt(z)),K("submit",d,jt(xt)),u(t,d)},$$slots:{default:!0},$$legacy:!0});var ut=s(dt,2);os(ut,{title:Js,get open(){return e(D)},set open(t){o(D,t)},$$events:{confirm:St},children:(t,f)=>{Ne();var d=ga(),S=qe(d);S.nodeValue=`${Gs} `;var L=s(S),y=n(L,!0);a(L);var ue=s(L,1,!0);ue.nodeValue=Vt,$(()=>g(y,e(Se))),u(t,d)},$$slots:{default:!0},$$legacy:!0});var ft=s(ut,2);Yt(ft,{get toast(){return e(Y)}});var Ye=s(ft,2),_t=n(Ye),Ze=n(_t),mt=n(Ze);mt.textContent=_s;var Rt=s(mt,2);Rt.textContent=ms,a(Ze);var At=s(Ze,2);Qe(At,{$$events:{click:yt},children:(t,f)=>{Ne();var d=j();d.nodeValue=ps,u(t,d)},$$slots:{default:!0}}),a(_t),a(Ye);var pt=s(Ye,2),It=n(pt);{var wt=t=>{vs(t,{message:bs,size:"sm"})},Ot=t=>{var f=Na(),d=n(f),S=n(d),L=n(S),y=s(n(L),2);y.textContent=qs;var ue=s(y);ue.textContent=zs;var fe=s(ue);fe.textContent=Xs;var _e=s(fe);_e.textContent=Qs;var me=s(_e);me.textContent=Ys;var He=s(me);He.textContent=Zs;var te=s(He);te.textContent=js,a(L),a(S);var se=s(S);ze(se,5,()=>e(h),Xe,(We,m,je)=>{var ae=ya();const U=H(()=>e(m).runnerIds?e(m).runnerIds.split(",").map(_=>_.trim()):[z]);var ne=n(ae),Z=n(ne);a(ne);var Re=s(ne),pe=n(Re);a(Re);var re=s(Re),be=n(re);{var Je=_=>{var E=ka();q(E,"title",Ks),u(_,E)};J(be,_=>{ss(O(),e(m).taskName)&&_(Je)})}var et=s(be);a(re);var he=s(re),Ae=n(he);rs(Ae,{variant:"schedule",children:(_,E)=>{Ne();var N=j();$(Ue=>g(N,Ue),[()=>Lt(e(m).cronExpression)],H),u(_,N)},$$slots:{default:!0}}),a(he);var le=s(he),Ge=n(le),Fe=n(Ge,!0);a(Ge),a(le);var oe=s(le),ve=n(oe),tt=n(ve);a(ve),a(oe);var Ee=s(oe),ge=n(Ee),Ie=n(ge,!0);a(ge),a(Ee);var ke=s(Ee),we=n(ke),Ve=n(we);{var Oe=_=>{var E=j();E.nodeValue=bt,u(_,E)},ye=_=>{var E=Ut(),N=qe(E);{var Ue=v=>{var i=j();$(l=>g(i,l),[()=>{var l;return((l=e(k).find(b=>b.id===e(U)[0]))==null?void 0:l.name)??e(U)[0]}],H),u(v,i)},at=v=>{var i=j();$(l=>g(i,l),[()=>na(e(U).length)],H),u(v,i)};J(N,v=>{e(U).length===1?v(Ue):v(at,!1)},!0)}u(_,E)};J(Ve,_=>{e(U).length===1&&e(U)[0]===z?_(Oe):_(ye,!1)})}a(we),a(ke);var De=s(ke),Ke=n(De);Qe(Ke,{variant:"ghost",size:"sm",$$events:{click:()=>Nt(e(m))},children:(_,E)=>{Ne();var N=j();N.nodeValue=Xt,u(_,N)},$$slots:{default:!0}});var st=s(Ke,2);Qe(st,{variant:"danger",size:"sm",$$events:{click:()=>{o(Se,e(m).taskName),o(D,!0)}},children:(_,E)=>{Ne();var N=j();N.nodeValue=Qt,u(_,N)},$$slots:{default:!0}}),a(De),a(ae),$((_,E,N)=>{q(ae,"style",_),xe(ae,"disabled",!e(m).enabled),q(Z,"title",E),q(Z,"aria-label",E),q(Z,"aria-pressed",e(m).enabled),xe(Z,"on",e(m).enabled),q(pe,"title",N),g(et,` ${e(m).taskName??""}`),g(Fe,e(m).tags),xe(ve,"multi",e(m).workers>1),g(tt,`×${e(m).workers??""}`),g(Ie,e(m).browser??Me[0].id),xe(we,"multi-node",e(U).length>1)},[()=>ns(je),()=>sa(e(m).enabled),()=>aa(e(m).taskName)],H),K("click",Z,()=>Ct(e(m))),K("click",pe,()=>Tt(e(m).taskName)),u(We,ae)}),a(se),a(d),a(f),u(t,f)};J(It,t=>{e(h).length===0?t(wt):t(Ot,!1)})}a(pt),u(c,it),Ht(),Q()}export{Wa as component};
@@ -1,9 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- import{h as Or,a as n,t as E,s as v,e as Ye,b as F,c as Ne,n as Ds}from"../chunks/CfkUW1vA.js";import{i as Nr}from"../chunks/C00jnSU2.js";import{p as Dr,m as c,o as Br,s as l,g as e,l as $t,b as Ur,f as he,c as Fr,$ as Kr,d as a,j as t,k as s,t as d,v as Is,n as K,x,y as P}from"../chunks/CeH-RgMb.js";import{i as O,s as Mr,a as ha}from"../chunks/CegSvdD-.js";import{e as Ot,i as ws,t as ct,a as ze,f as Je,s as Gr}from"../chunks/Beula-TH.js";import{A as Nt,h as Ct,i as Al,b as Hr,r as M,s as C,M as Vr,B as qa,C as Qa,G as jr,w as ma,H as Wr,E as Za}from"../chunks/DuAVKaL3.js";import{b as X}from"../chunks/BAvTKHxT.js";import{T as Xr,B as q,b as $s}from"../chunks/CZWchtW8.js";import{b as Yr}from"../chunks/CboYYxrf.js";import{g as zr}from"../chunks/DiVmSEJa.js";import{b as Sa,f as Jr,a as qr,c as Qr,d as el,p as tl,e as Zr,s as en,g as sl,u as tn,r as sn,h as an,i as ln,j as rn,k as nn,l as on,m as cn,n as dn,o as al,t as vn,q as pn,v as un}from"../chunks/CoTEzvLa.js";import{o as _n,p as bn,q as fn}from"../chunks/Dl-F6VCo.js";import{u as En,a as gn}from"../chunks/GDjpV3r7.js";import{a as Ns}from"../chunks/Ck6C3Fl0.js";import{e as Ra}from"../chunks/BJ_ypKl3.js";import{t as ll}from"../chunks/C7uEQ-LH.js";import{C as rl}from"../chunks/DAmOMhaf.js";import{B as hn}from"../chunks/C8S7qQjQ.js";function ka(){return{"Content-Type":"application/json",Authorization:`Bearer ${Ns.getToken()}`}}async function mn(){const o=await fetch(`${Nt}/users`,{headers:ka()});if(!o.ok)throw new Error("Failed to fetch users");return(await o.json()).users}async function Sn({name:o,email:Me,password:Lt,role:Bs="user"}){const Re=await fetch(`${Nt}/users`,{method:"POST",headers:ka(),body:JSON.stringify({name:o,email:Me,password:Lt,role:Bs})}),jt=await Re.json();if(!Re.ok)throw new Error(jt.error??"Failed to create user");return jt.user}async function Rn(o){const Me=await fetch(`${Nt}/users/${o}`,{method:"DELETE",headers:ka()});if(!Me.ok){const Lt=await Me.json();throw new Error(Lt.error??"Failed to delete user")}}const Cn="Settings — Plum",Ln="Settings",Os="Name",nl="Network error",yl="Checking…",Pl="Copied!",ol="Project",il="Runners",kn="Repository",xn="Test Repository",cl="Integrations",An="MCP",yn="MCP Integration",Ca="Account",dl="Users",La="Backup",Pn="Identity information shown across the UI",Tn="Register self-hosted runner nodes to distribute tests across machines.",In="Configure ID prefixes for test suites and cases.",wn="Connect Discord and Slack to receive run notifications with pass/fail results and report links.",$n="Generate an API key for any MCP-compatible AI client — Claude, Cursor, Windsurf, and others.",On="Manage your profile, credentials and session.",Nn="Add and manage who can access Plum.",Dn="Export your test cases, schedules, users, and project settings. Automate uploads to any S3-compatible storage — Cloudflare R2, Backblaze B2, AWS S3, or MinIO.",vl="Name, URL and token are required.",Bn="Failed to add runner.",Un="Failed to remove runner.",Fn="Failed to update runner.",pl=o=>`Cannot reach this runner — ${o??"check the URL and token"}.`,Kn=o=>`Runner "${o}" added.`,Mn=o=>`Runner "${o}" removed.`,Gn=o=>`Runner "${o}" stopped.`,Hn=(o,Me)=>`Could not stop "${o}": ${Me??"unknown error"}`,Vn=o=>`Could not stop "${o}".`,jn=o=>`Runner "${o}" restarting…`,Wn=(o,Me)=>`Could not restart "${o}": ${Me??"unknown error"}`,Xn=o=>`Could not restart "${o}".`,Yn=o=>`Runner "${o}" updated.`,zn="Project Name",Jn="My Test Suite",qn="Logo URL",Qn="Direct link to an image (PNG, SVG, JPG)",Zn="https://example.com/logo.png",eo="Preview",to="Project logo preview",so="Timezone",ao="Used to schedule cron jobs and backups",lo="Retry failed tests",ro="Automatically re-run failed scenarios up to this many times before finalizing the report. 0 disables retries.",no="Dark mode",oo="Switch between light and dark appearance",io="Project settings saved.",co="Failed to save project settings.",vo=o=>o?Ct:"Save Project",po="Built-in runner",uo="Use this server to run tests locally. Disable to route all runs to external nodes.",ul="URL",_l="Use",bl="for local nodes",fl="http://host.docker.internal:3002",El="Token",_o="secret-token",bo="Leave blank to keep current token",gl="Browser",hl="staging-node",fo="unreachable",Eo="pinging…",go="Remove",ho="Add runner",mo="+ Add Runner",So="Restart",Ro="Restarting…",Co="Stop",Lo="Stopping…",ko="Add Runner",xo=o=>o?yl:Al,Ao=o=>o?yl:ko,yo=o=>o?Ro:So,Po=o=>o?Lo:Co,To="Test Case prefix",ml="TC",Io="Test Suite prefix",Sl="TS",wo="Examples:",$o="Prefixes saved.",Oo="Failed to save prefixes.",No="Migrate IDs",Do="Rename all existing test IDs to use a new prefix. Cucumber tags in code are",Bo="not",Uo="affected — you manage those separately.",Fo="New case prefix",Ko="New suite prefix",Mo="Prefix migration complete. All IDs updated.",Go="Migration failed.",Ho=o=>o?Ct:"Save Prefixes",Vo=o=>o?"Migrating…":"Run Migration",jo="Webhooks",Wo="Discord Webhook URL",Xo="Leave blank to disable Discord notifications",Yo="https://discord.com/api/webhooks/…",zo="Slack Webhook URL",Jo="Leave blank to disable Slack notifications",qo="https://hooks.slack.com/services/…",Qo="Public URL",Zo="Base URL of this Plum instance — used to link reports in notifications, and by remote runner nodes to stream live test output back here",ei="https://plum.yourcompany.com",ti="Integration settings saved.",si="Failed to save integration settings.",ai="CI / External Triggers",li="Trigger a Plum run from GitHub Actions (e.g. on a pull request, against its preview deployment) or any other external script by calling",ri="with an",ni="header. Generate a key on the",oi="MCP tab",ii="and store it as a repo secret — never commit it directly. Runs triggered this way show up in Reports tagged",ci="External",di="Copy Workflow Step",vi=o=>o?Ct:"Save Integrations",pi=o=>o?Pl:di,ui="API Key",_i="No key generated yet.",bi="Hide key",fi="Show key",Ei="Copy key",gi="Regenerating invalidates the existing key immediately.",hi="Config Snippet",mi="Add this to your MCP client's config file (e.g.",Si=", Cursor MCP settings, etc.).",Ri="MCP key generated.",Ci="Failed to generate MCP key.",Li="Copy Config",ki=o=>o?"Generating…":"Generate Key",xi=o=>o?"Generating…":"Regenerate Key",Ai=o=>o?Pl:Li,yi="Profile",Pi="Change password",Ti="Current password",Ii="New password",wi="Confirm new password",$i="Sign out",Oi="Profile updated.",Ni="Passwords do not match.",Di="Password must be at least 8 characters.",Bi="Password changed.",Ui=o=>o?Ct:"Save Profile",Fi=o=>o?Ct:"Change Password",Ki="Remove User",Mi="Remove",Gi="Remove",Hi="? They will lose access immediately.",Vi="Add User",ji="Jane Smith",Wi="jane@example.com",Xi="Password",Yi="Role",zi="User",Ji="Admin",qi="Remove user",Qi="you",Zi="Name, email and password are required.",ec=o=>o?"Adding…":"Add User",tc=o=>`User "${o}" added.`,sc=o=>`User "${o}" removed.`,ac="Manual Backup",lc="Export",rc="Downloads a",nc="file with all cron jobs, test cases, test runs, users, runners, and project settings.",oc="Import",ic="Restores all data from a previously exported backup. Existing records are overwritten. Cron jobs are re-scheduled after import.",cc="Choose file…",dc="Include reports & recordings",vc="Applies to both manual export and scheduled S3 backups. Can make backups significantly larger — recordings are session replays, not just screenshots.",pc=o=>o?"Reports and recordings are included in backups.":'Reports are not included in backups — enable "Include reports & recordings" above, or run pg_dump directly on the PostgreSQL volume, to back up report history.',uc=o=>o?Ct:Al,_c="S3 Storage",bc="Works with any S3-compatible provider — Cloudflare R2, Backblaze B2, AWS S3, or MinIO. Leave",Rl="Endpoint URL",fc="empty for AWS S3.",Ec="Leave blank for AWS S3",gc="https://account.r2.cloudflarestorage.com",hc="Region",mc="Use",Sc="for Cloudflare R2",Rc="us-east-1",Cc="Bucket",Lc="my-plum-backups",kc="Path Prefix",xc="Optional folder inside the bucket",Ac="plum/",yc="Access Key ID",Pc="AKIAIOSFODNN7EXAMPLE",Tc="Secret Access Key",Ic="Test Connection",wc="Save S3 Config",$c="Connection successful.",Oc="Connection failed.",Cl="Backup configuration saved.",Ll="Failed to save backup configuration.",Nc="Required",Dc="A key is already saved — leave blank to keep it",Bc="••••••••",Uc="Enter secret key",Fc="Testing…",Kc="Restore from S3",Mc="Restores directly from a backup already uploaded to S3 — no need to download it yourself first. Existing records are overwritten. Cron jobs are re-scheduled after restore.",Gc="Configure S3 storage above to restore from it.",Hc="No backups found at this bucket/prefix.",Vc="Refresh",jc="Restore this backup?",Wc=o=>`This will overwrite current cron jobs, test cases, test runs, users, runners, and project settings with the contents of "${o}". This cannot be undone.`,Xc="Restored from S3 successfully.",Yc="Restore failed.",zc="Failed to list S3 backups.",Jc="Scheduled Backup",qc="Configure S3 storage above to enable scheduled backups.",Qc="Enable scheduled backup",Zc="Cron Expression",ed="5-field cron — e.g.",td="= daily at 2 AM.",sd="Test at crontab.guru ↗",ad="0 2 * * *",ld="Last backup:",rd="Backup downloaded.",nd="Export failed.",od="Import successful. Cron jobs have been re-scheduled.",id="Import failed. Check the file format.",cd="Backup uploaded to S3 successfully.",dd="Backup failed. Check your S3 configuration.",vd="Upload to S3 Now",pd="Uploading…",ud="Save Schedule",_d=o=>`plum-backup-${o}.json`,bd=o=>o?"Exporting…":"Export JSON",fd=o=>o?"Importing…":"Import",Ed=o=>o?Dc:Nc,gd=o=>o?Bc:Uc,hd=o=>o?Fc:Ic,md=o=>o?Ct:wc,Sd=o=>`uploaded to ${o}`,Rd=o=>o?pd:vd,Cd=o=>o?Ct:ud,kl=o=>o?"Restoring…":"Restore",xl=o=>o?"Loading…":Vc,Ld=o=>`${(o/1024).toFixed(1)} KB`;var kd=E('<button class="sidebar-item svelte-1b139ls"> </button>'),xd=E('<div class="logo-preview svelte-1b139ls"><span class="preview-label svelte-1b139ls"></span> <img class="logo-img svelte-1b139ls"></div>'),Ad=E("<option> </option>"),yd=E('<div class="content-section svelte-1b139ls"><div class="content-header svelte-1b139ls"><h2 class="svelte-1b139ls"></h2> <p class="content-desc svelte-1b139ls"></p></div> <div class="card settings-card svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls" for="project-name"></label> <input id="project-name" type="text" class="field-input"></div> <div class="field"><label class="field-label svelte-1b139ls" for="project-logo"><span></span> <span class="field-hint svelte-1b139ls"></span></label> <input id="project-logo" type="url" class="field-input"></div> <!> <div class="field"><label class="field-label svelte-1b139ls" for="project-timezone"><span></span> <span class="field-hint svelte-1b139ls"></span></label> <select id="project-timezone" class="field-input"></select></div> <div class="field"><label class="field-label svelte-1b139ls" for="project-max-retries"><span></span> <span class="field-hint svelte-1b139ls"></span></label> <input id="project-max-retries" type="number" class="field-input" min="0"></div> <div class="toggle-row svelte-1b139ls"><div class="toggle-info svelte-1b139ls"><span class="toggle-label svelte-1b139ls"></span> <span class="toggle-desc svelte-1b139ls"></span></div> <button class="toggle-switch svelte-1b139ls" role="switch"><span class="toggle-thumb svelte-1b139ls"></span></button></div> <div class="card-footer svelte-1b139ls"><!></div></div></div>'),Pd=E("<option> </option>"),Td=E('<p class="form-error svelte-1b139ls"> </p>'),Id=E('<div class="runner-card editing svelte-1b139ls"><div class="runner-form-fields svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls"></label> <input type="text" class="field-input"></div> <div class="field"><label class="field-label svelte-1b139ls"> <span class="field-hint svelte-1b139ls"> <code>host.docker.internal</code> </span></label> <input type="url" class="field-input"></div> <div class="field"><label class="field-label svelte-1b139ls"></label> <input type="text" class="field-input" spellcheck="false" autocomplete="off"></div> <div class="field"><label class="field-label svelte-1b139ls"></label> <select class="field-input"></select></div></div> <!> <div class="runner-form-actions svelte-1b139ls"><!> <!></div></div>'),wd=E('<span class="ping-badge ok svelte-1b139ls"> </span>'),$d=E('<span class="ping-badge fail svelte-1b139ls"></span>'),Od=E('<span class="ping-badge pinging svelte-1b139ls"></span>'),Nd=E('<div class="runner-card svelte-1b139ls"><div class="runner-card-header svelte-1b139ls"><svg class="runner-card-icon svelte-1b139ls" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><rect x="2" y="3" width="20" height="14" rx="2"></rect><path d="M8 21h8M12 17v4"></path></svg> <span class="runner-card-name svelte-1b139ls"> </span> <span class="runner-browser-pill svelte-1b139ls"> </span> <!></div> <p class="runner-card-url svelte-1b139ls"> </p> <div class="runner-card-actions svelte-1b139ls"><!> <!> <!> <!></div></div>'),Dd=E('<div class="runner-cards svelte-1b139ls"></div>'),Bd=E("<option> </option>"),Ud=E('<p class="form-error svelte-1b139ls"> </p>'),Fd=E('<div class="runner-form svelte-1b139ls"><p class="runner-form-title svelte-1b139ls"></p> <div class="runner-form-fields svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls" for="rn-name"></label> <input id="rn-name" type="text" class="field-input"></div> <div class="field"><label class="field-label svelte-1b139ls" for="rn-url"> <span class="field-hint svelte-1b139ls"> <code>host.docker.internal</code> </span></label> <input id="rn-url" type="url" class="field-input"></div> <div class="field"><label class="field-label svelte-1b139ls" for="rn-token"></label> <input id="rn-token" type="text" class="field-input" spellcheck="false" autocomplete="off"></div> <div class="field"><label class="field-label svelte-1b139ls" for="rn-browser"></label> <select id="rn-browser" class="field-input"></select></div></div> <!> <div class="runner-form-actions svelte-1b139ls"><!> <!></div></div>'),Kd=E('<div class="card-footer svelte-1b139ls"><!></div>'),Md=E('<div class="content-section svelte-1b139ls"><div class="content-header svelte-1b139ls"><h2 class="svelte-1b139ls"></h2> <p class="content-desc svelte-1b139ls"></p></div> <div class="card settings-card svelte-1b139ls"><div class="toggle-row svelte-1b139ls"><div class="toggle-info svelte-1b139ls"><span class="toggle-label svelte-1b139ls"></span> <span class="toggle-desc svelte-1b139ls"></span></div> <button class="toggle-switch svelte-1b139ls" role="switch"><span class="toggle-thumb svelte-1b139ls"></span></button></div> <!> <!></div></div>'),Gd=E('<div class="content-section svelte-1b139ls"><div class="content-header svelte-1b139ls"><h2 class="svelte-1b139ls"></h2> <p class="content-desc svelte-1b139ls"></p></div> <div class="card settings-card svelte-1b139ls"><div class="field-row svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls" for="tc-prefix"></label> <input id="tc-prefix" type="text" class="field-input mono svelte-1b139ls" maxlength="10"></div> <div class="field"><label class="field-label svelte-1b139ls" for="ts-prefix"></label> <input id="ts-prefix" type="text" class="field-input mono svelte-1b139ls" maxlength="10"></div></div> <p class="content-desc svelte-1b139ls"> <code class="code-sample svelte-1b139ls"> </code>, <code class="code-sample svelte-1b139ls"> </code></p> <div class="card-footer svelte-1b139ls"><!></div></div> <div class="content-header svelte-1b139ls" style="margin-top: 1rem"><h2 class="svelte-1b139ls"></h2> <p class="content-desc svelte-1b139ls"> <strong></strong> </p></div> <div class="card settings-card svelte-1b139ls"><div class="field-row svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls" for="mig-tc"></label> <input id="mig-tc" type="text" class="field-input mono svelte-1b139ls" maxlength="10"></div> <div class="field"><label class="field-label svelte-1b139ls" for="mig-ts"></label> <input id="mig-ts" type="text" class="field-input mono svelte-1b139ls" maxlength="10"></div></div> <div class="card-footer svelte-1b139ls"><!></div></div></div>'),Hd=E('<div class="content-section svelte-1b139ls"><div class="content-header svelte-1b139ls"><h2 class="svelte-1b139ls"></h2> <p class="content-desc svelte-1b139ls"></p></div> <div class="card settings-card svelte-1b139ls"><p class="card-title"></p> <div class="field"><label class="field-label svelte-1b139ls" for="discord-url"><span></span> <span class="field-hint svelte-1b139ls"></span></label> <input id="discord-url" type="url" class="field-input"></div> <div class="field"><label class="field-label svelte-1b139ls" for="slack-url"><span></span> <span class="field-hint svelte-1b139ls"></span></label> <input id="slack-url" type="url" class="field-input"></div> <div class="field"><label class="field-label svelte-1b139ls" for="public-url"><span></span> <span class="field-hint svelte-1b139ls"></span></label> <input id="public-url" type="url" class="field-input"></div> <!></div> <div class="card settings-card svelte-1b139ls"><p class="card-title"></p> <p class="content-desc svelte-1b139ls"> <code class="code-sample svelte-1b139ls"></code> <code class="code-sample svelte-1b139ls">Authorization: ApiKey …</code> <button class="link-btn svelte-1b139ls"></button> <!>.</p> <pre class="mcp-snippet svelte-1b139ls"> </pre> <div class="card-footer svelte-1b139ls"><!></div></div></div>'),Vd=E('<p class="content-desc svelte-1b139ls"></p> <div class="card-footer svelte-1b139ls"><!></div>',1),jd=Ds('<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94"></path><path d="M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19"></path><line x1="1" y1="1" x2="23" y2="23"></line></svg>'),Wd=Ds('<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle></svg>'),Xd=Ds('<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>'),Yd=Ds('<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>'),zd=E('<div class="mcp-key-row svelte-1b139ls"><input class="field-input mcp-key-input svelte-1b139ls" readonly="" spellcheck="false" autocomplete="off"> <button class="icon-btn svelte-1b139ls"><!></button> <button class="icon-btn svelte-1b139ls"><!></button></div> <p class="mcp-regen-note svelte-1b139ls"></p> <div class="card-footer svelte-1b139ls"><!></div>',1),Jd=E('<div class="card settings-card svelte-1b139ls"><p class="card-title"></p> <p class="content-desc svelte-1b139ls"> <code class="code-sample svelte-1b139ls">claude_desktop_config.json</code> </p> <pre class="mcp-snippet svelte-1b139ls"> </pre> <div class="card-footer svelte-1b139ls"><!></div></div>'),qd=E('<div class="content-section svelte-1b139ls"><div class="content-header svelte-1b139ls"><h2 class="svelte-1b139ls"></h2> <p class="content-desc svelte-1b139ls"></p></div> <div class="card settings-card svelte-1b139ls"><p class="card-title"></p> <!></div> <!></div>'),Qd=E('<p class="form-error svelte-1b139ls"> </p>'),Zd=E('<p class="form-error svelte-1b139ls"> </p>'),ev=E('<div class="content-section svelte-1b139ls"><div class="content-header svelte-1b139ls"><h2 class="svelte-1b139ls"></h2> <p class="content-desc svelte-1b139ls"></p></div> <div class="card settings-card svelte-1b139ls"><p class="card-title"></p> <div class="field"><label class="field-label svelte-1b139ls" for="profile-name"></label> <input id="profile-name" type="text" class="field-input"></div> <div class="field"><label class="field-label svelte-1b139ls" for="profile-email"></label> <input id="profile-email" type="email" class="field-input"></div> <!> <div class="card-footer svelte-1b139ls"><!></div></div> <div class="card settings-card svelte-1b139ls"><p class="card-title"></p> <div class="field"><label class="field-label svelte-1b139ls" for="pw-current"></label> <input id="pw-current" type="password" class="field-input" autocomplete="current-password"></div> <div class="field"><label class="field-label svelte-1b139ls" for="pw-new"></label> <input id="pw-new" type="password" class="field-input" autocomplete="new-password"></div> <div class="field"><label class="field-label svelte-1b139ls" for="pw-confirm"></label> <input id="pw-confirm" type="password" class="field-input" autocomplete="new-password"></div> <!> <div class="card-footer svelte-1b139ls"><!></div></div> <div class="card settings-card svelte-1b139ls"><div class="card-footer svelte-1b139ls"><!></div></div></div>'),tv=E(" <strong> </strong> ",1),sv=E('<p class="form-error svelte-1b139ls"> </p>'),av=E('<button class="icon-btn danger svelte-1b139ls"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="3 6 5 6 21 6"></polyline><path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"></path><path d="M10 11v6M14 11v6"></path><path d="M9 6V4h6v2"></path></svg></button>'),lv=E('<span class="you-chip svelte-1b139ls"></span>'),rv=E('<div class="user-row svelte-1b139ls"><div class="user-info svelte-1b139ls"><span class="user-name svelte-1b139ls"> </span> <span class="user-email svelte-1b139ls"> </span></div> <span> </span> <!></div>'),nv=E('<div class="users-table svelte-1b139ls"></div>'),ov=E('<div class="content-section svelte-1b139ls"><div class="content-header svelte-1b139ls"><h2 class="svelte-1b139ls"></h2> <p class="content-desc svelte-1b139ls"></p></div> <!> <div class="card settings-card svelte-1b139ls"><p class="card-title"></p> <div class="field-row svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls" for="u-name"></label> <input id="u-name" type="text" class="field-input"></div> <div class="field"><label class="field-label svelte-1b139ls" for="u-email"></label> <input id="u-email" type="email" class="field-input"></div></div> <div class="field-row svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls" for="u-pw"></label> <input id="u-pw" type="password" class="field-input" autocomplete="new-password"></div> <div class="field"><label class="field-label svelte-1b139ls" for="u-role"></label> <select id="u-role" class="field-input"><option></option><option></option></select></div></div> <!> <div class="card-footer svelte-1b139ls"><!></div></div> <!></div>'),iv=E('<p class="s3-test-result svelte-1b139ls"> </p>'),cv=E('<p class="backup-block-desc svelte-1b139ls"></p>'),dv=E('<p class="backup-block-desc svelte-1b139ls"> </p>'),vv=E('<li class="s3-backup-row svelte-1b139ls"><div class="s3-backup-info svelte-1b139ls"><span class="s3-backup-key svelte-1b139ls"> </span> <span class="s3-backup-meta svelte-1b139ls"> </span></div> <!></li>'),pv=E('<ul class="s3-backup-list svelte-1b139ls"></ul>'),uv=E('<p class="backup-block-desc svelte-1b139ls" style="margin-bottom: 1rem;"></p> <!>',1),_v=E('<p class="backup-block-desc svelte-1b139ls"></p>'),bv=E('<span class="status-success svelte-1b139ls"> </span>'),fv=E('<span class="status-error svelte-1b139ls"> </span>'),Ev=E("<span> </span>"),gv=E('<p class="backup-last-run svelte-1b139ls"> <!></p>'),hv=E('<div class="field"><label class="field-label backup-toggle-label svelte-1b139ls" for="backup-enabled"><span></span> <button id="backup-enabled" class="toggle-btn svelte-1b139ls" role="switch"><span class="toggle-thumb svelte-1b139ls"></span></button></label></div> <div class="field"><label class="field-label svelte-1b139ls" for="backup-cron"><span></span> <span class="field-hint svelte-1b139ls"> <code>0 2 * * *</code> <a href="https://crontab.guru" target="_blank" rel="noopener noreferrer"></a></span></label> <input id="backup-cron" type="text" class="field-input field-input-mono svelte-1b139ls"></div> <!> <div class="backup-actions svelte-1b139ls"><!> <!></div>',1),mv=E('<div class="content-section svelte-1b139ls"><div class="content-header svelte-1b139ls"><h2 class="svelte-1b139ls"></h2> <p class="content-desc svelte-1b139ls"></p></div> <div class="card settings-card svelte-1b139ls"><p class="card-title"></p> <div class="backup-row svelte-1b139ls"><div class="backup-block svelte-1b139ls"><p class="backup-block-title svelte-1b139ls"></p> <p class="backup-block-desc svelte-1b139ls"> <code class="svelte-1b139ls">.json</code> </p> <!></div> <div class="backup-divider svelte-1b139ls"></div> <div class="backup-block svelte-1b139ls"><p class="backup-block-title svelte-1b139ls"></p> <p class="backup-block-desc svelte-1b139ls"></p> <div class="import-row svelte-1b139ls"><label class="file-label svelte-1b139ls"><input type="file" accept=".json" class="file-input-hidden svelte-1b139ls"> <span class="file-btn svelte-1b139ls"> </span></label> <!></div></div></div> <div class="include-reports-row svelte-1b139ls"><label class="field-label backup-toggle-label svelte-1b139ls" for="include-reports"><span class="svelte-1b139ls"> <span class="field-hint svelte-1b139ls"></span></span> <button id="include-reports" class="toggle-btn svelte-1b139ls" role="switch"><span class="toggle-thumb svelte-1b139ls"></span></button></label> <!></div> <p class="backup-disclaimer svelte-1b139ls"> </p></div> <div class="card settings-card svelte-1b139ls"><p class="card-title"></p> <p class="backup-block-desc svelte-1b139ls" style="margin-bottom: 1.25rem;"> <strong></strong> </p> <div class="field-row svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls" for="s3-endpoint"><span></span> <span class="field-hint svelte-1b139ls"></span></label> <input id="s3-endpoint" type="url" class="field-input"></div> <div class="field"><label class="field-label svelte-1b139ls" for="s3-region"><span></span> <span class="field-hint svelte-1b139ls"> <code>auto</code> </span></label> <input id="s3-region" type="text" class="field-input"></div></div> <div class="field-row svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls" for="s3-bucket"><span></span></label> <input id="s3-bucket" type="text" class="field-input"></div> <div class="field"><label class="field-label svelte-1b139ls" for="s3-prefix"><span></span> <span class="field-hint svelte-1b139ls"></span></label> <input id="s3-prefix" type="text" class="field-input"></div></div> <div class="field-row svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls" for="s3-access-key"><span></span></label> <input id="s3-access-key" type="text" class="field-input" autocomplete="off"></div> <div class="field"><label class="field-label svelte-1b139ls" for="s3-secret-key"><span></span> <span class="field-hint svelte-1b139ls"> </span></label> <input id="s3-secret-key" type="password" class="field-input" autocomplete="new-password"></div></div> <div class="backup-actions svelte-1b139ls"><!> <!></div> <!></div> <!> <div class="card settings-card svelte-1b139ls"><div class="card-title-row svelte-1b139ls"><p class="card-title svelte-1b139ls"></p> <!></div> <!></div> <div class="card settings-card svelte-1b139ls"><p class="card-title"></p> <!></div></div>'),Sv=E('<!> <div class="page-header svelte-1b139ls"><h1 class="svelte-1b139ls"></h1></div> <div class="settings-layout svelte-1b139ls"><aside class="settings-sidebar svelte-1b139ls"><nav class="svelte-1b139ls"></nav></aside> <div class="settings-content svelte-1b139ls"><!></div></div>',1);function Kv(o,Me){Dr(Me,!1);const[Lt,Bs]=Mr(),Re=()=>ha(Ns,"$auth",Lt),jt=()=>ha(ll,"$theme",Lt),xa=()=>ha(Ra,"$builtInEnabled",Lt),dt=c(),Us=c(),Fs=c(),Aa=c();let ye=c(typeof sessionStorage<"u"&&sessionStorage.getItem("plum:settings:section")||"project");function ya(r){l(ye,r);try{sessionStorage.setItem("plum:settings:section",r)}catch{}}let be=c({name:"",logoUrl:"",timezone:"UTC",maxRetries:0}),ns=c(!1),Ks=c(null);const Tl=(()=>{try{return Intl.supportedValuesOf("timeZone")}catch{return["UTC"]}})();let Ce=c({testCasePrefix:"TC",testSuitePrefix:"TS"}),os=c(!1),st=c({testCasePrefix:"",testSuitePrefix:""}),is=c(!1),Ge=c({name:"",email:""}),cs=c(!1),ds=c(""),kt=c([]),me=c({name:"",email:"",password:"",role:"user"}),vs=c(!1),Wt=c(""),Dt=c(null),ps=c(!1),Le=c({currentPassword:"",newPassword:"",confirmPassword:""}),us=c(!1),Bt=c(""),xt=c(null),_s=c(!1),bs=c(!1),Xt=c(),De=c({discordWebhookUrl:"",slackWebhookUrl:"",notifyPublicUrl:""}),fs=c(!1),Ut=c(""),Es=c(!1),Ft=c(!1),Kt=c(!1),Ms=c(!1),Gs=c(!1),Hs=c(!1),g=c({backupEnabled:!1,backupCron:"0 2 * * *",backupS3Endpoint:"",backupS3Region:"",backupS3Bucket:"",backupS3AccessKey:"",backupS3SecretKey:"",backupS3Prefix:"",backupIncludeReports:!1}),Mt=c(!1),gs=c(!1),At=c(!1),hs=c(!1),ms=c(!1),yt=c(null),Ss=c(""),Yt=c(null),vt=c(""),Vs=c([]),js=c(!1),zt=c(!1),Jt=c(null),Rs=c(!1),Pt=c(null),Be=c([]),pe=c({name:"",url:"",token:"",browser:"chromium"}),Tt=c(""),qt=c(!1),Cs=c(!1),xe=c({}),Ls=c(null),ks=c(null),xs=c(null),ue=c({name:"",url:"",token:"",browser:"chromium"}),pt=c(""),Qt=c(!1);function y(r,i){l(Ks,{type:r,message:i}),setTimeout(()=>l(Ks,null),Hr)}let Ws=c(!1);Br(async()=>{var r;try{const i=localStorage.getItem("plum:builtInEnabled");i!==null&&Ra.set(i!=="false")}catch{}try{l(be,await Sa())}catch{}try{l(Be,await Jr()),l(Ws,!0)}catch{}try{l(Ce,await _n()),l(st,{testCasePrefix:e(Ce).testCasePrefix,testSuitePrefix:e(Ce).testSuitePrefix})}catch{}try{l(De,await qr())}catch{}try{const i=await Qr();l(Es,i.mcpKeySet),l(Ut,i.mcpKey)}catch{}try{const i=await el();l(At,i.backupS3SecretKeySet),l(Yt,i.backupLastRunAt),l(vt,i.backupLastStatus),l(g,{backupEnabled:i.backupEnabled,backupCron:i.backupCron,backupS3Endpoint:i.backupS3Endpoint,backupS3Region:i.backupS3Region,backupS3Bucket:i.backupS3Bucket,backupS3AccessKey:i.backupS3AccessKey,backupS3SecretKey:"",backupS3Prefix:i.backupS3Prefix,backupIncludeReports:i.backupIncludeReports})}catch{}if(Re().user&&l(Ge,{name:Re().user.name,email:Re().user.email}),((r=Re().user)==null?void 0:r.role)==="admin")try{l(kt,await mn())}catch{}});async function Il(){e(Be).length!==0&&(l(xe,Object.fromEntries(e(Be).map(r=>[r.id,{loading:!0}]))),await Promise.all(e(Be).map(async r=>{try{const i=await tl(r.id);l(xe,{...e(xe),[r.id]:{...i,loading:!1}})}catch{l(xe,{...e(xe),[r.id]:{ok:!1,error:nl,loading:!1}})}})))}function wl(){Ra.update(r=>{const i=!r;try{localStorage.setItem("plum:builtInEnabled",String(i))}catch{}return i})}function $l(){ll.update(r=>r==="light"?"dark":"light")}async function Ol(){if(!e(pe).name||!e(pe).url||!e(pe).token){l(Tt,vl);return}l(Tt,""),l(qt,!0);try{const r=await sl(e(pe).url,e(pe).token);if(!r.ok){l(Tt,pl(r.error));return}const{runner:i}=await rn(e(pe));l(Be,[...e(Be),i]),l(xe,{...e(xe),[i.id]:{ok:!0,latency:r.latency,loading:!1}}),l(pe,{name:"",url:"",token:"",browser:"chromium"}),l(Cs,!1),y("success",Kn(i.name))}catch{l(Tt,Bn)}finally{l(qt,!1)}}async function Nl(r,i){try{await ln(r),l(Be,e(Be).filter(I=>I.id!==r)),y("success",Mn(i))}catch{y("error",Un)}}async function Pa(r){l(xe,{...e(xe),[r]:{loading:!0}});try{const i=await tl(r);l(xe,{...e(xe),[r]:{...i,loading:!1}})}catch{l(xe,{...e(xe),[r]:{ok:!1,error:nl,loading:!1}})}}async function Dl(r,i){l(Ls,r);try{const I=await an(r);I.ok?y("success",Gn(i)):y("error",Hn(i,I.error))}catch{y("error",Vn(i))}finally{l(Ls,null),Pa(r)}}async function Bl(r,i){l(ks,r);try{const I=await sn(r);I.ok?y("success",jn(i)):y("error",Wn(i,I.error))}catch{y("error",Xn(i))}finally{l(ks,null),setTimeout(()=>Pa(r),2e3)}}function Ul(r){l(xs,r.id),l(ue,{name:r.name,url:r.url,token:"",browser:r.browser}),l(pt,"")}async function Fl(r){if(!e(ue).name||!e(ue).url){l(pt,vl);return}l(pt,""),l(Qt,!0);try{if(e(ue).token){const I=await sl(e(ue).url,e(ue).token);if(!I.ok){l(pt,pl(I.error));return}l(xe,{...e(xe),[r]:{ok:!0,latency:I.latency,loading:!1}})}const{runner:i}=await tn(r,e(ue));l(Be,e(Be).map(I=>I.id===r?i:I)),l(xs,null),y("success",Yn(i.name))}catch{l(pt,Fn)}finally{l(Qt,!1)}}async function Kl(){l(ns,!0);try{await en(e(be)),y("success",io)}catch{y("error",co)}finally{l(ns,!1)}}async function Ml(){l(bs,!0);try{const r=await cn(),i=new Blob([JSON.stringify(r,null,2)],{type:"application/json"}),I=URL.createObjectURL(i),qe=document.createElement("a");qe.href=I,qe.download=_d(new Date().toISOString().slice(0,10)),qe.click(),URL.revokeObjectURL(I),y("success",rd)}catch{y("error",nd)}finally{l(bs,!1)}}async function Gl(){if(e(xt)){l(_s,!0);try{const r=await e(xt).text(),i=JSON.parse(r),I=await dn(i);if(I.error)throw new Error(I.error);y("success",od),l(be,await Sa()),l(xt,null),e(Xt)&&P(Xt,e(Xt).value="")}catch(r){y("error",r.message||id)}finally{l(_s,!1)}}}function Hl(r){l(xt,r.target.files[0]??null)}async function Vl(){l(os,!0);try{l(Ce,await bn(e(Ce))),y("success",$o)}catch{y("error",Oo)}finally{l(os,!1)}}async function jl(){l(is,!0);try{await fn(e(st)),l(Ce,{...e(Ce),...e(st)}),y("success",Mo)}catch{y("error",Go)}finally{l(is,!1)}}async function Wl(){l(ds,""),l(cs,!0);try{const{user:r}=await En({token:Re().token,name:e(Ge).name,email:e(Ge).email});Ns.login(Re().token,{...Re().user,...r}),y("success",Oi)}catch(r){l(ds,r.message)}finally{l(cs,!1)}}async function Xl(){if(l(Wt,""),!e(me).name||!e(me).email||!e(me).password){l(Wt,Zi);return}l(vs,!0);try{const r=await Sn(e(me));l(kt,[...e(kt),r]),l(me,{name:"",email:"",password:"",role:"user"}),y("success",tc(r.name))}catch(r){l(Wt,r.message)}finally{l(vs,!1)}}async function Yl(r,i){try{await Rn(r),l(kt,e(kt).filter(I=>I.id!==r)),y("success",sc(i))}catch(I){y("error",I.message)}l(Dt,null),l(ps,!1)}async function zl(){if(l(Bt,""),e(Le).newPassword!==e(Le).confirmPassword){l(Bt,Ni);return}if(e(Le).newPassword.length<8){l(Bt,Di);return}l(us,!0);try{await gn({token:Re().token,currentPassword:e(Le).currentPassword,newPassword:e(Le).newPassword}),l(Le,{currentPassword:"",newPassword:"",confirmPassword:""}),y("success",Bi)}catch(r){l(Bt,r.message)}finally{l(us,!1)}}function Jl(){Ns.logout(),zr("/login")}async function Ta(){l(Kt,!0);try{const r=await on();l(Ut,r.mcpKey),l(Es,!0),l(Ft,!0),y("success",Ri)}catch{y("error",Ci)}finally{l(Kt,!1)}}function ql(){navigator.clipboard.writeText(e(Ut)).then(()=>{l(Ms,!0),setTimeout(()=>l(Ms,!1),ma)})}function Ql(){navigator.clipboard.writeText(e(Us)).then(()=>{l(Gs,!0),setTimeout(()=>l(Gs,!1),ma)})}function Zl(){navigator.clipboard.writeText(e(Fs)).then(()=>{l(Hs,!0),setTimeout(()=>l(Hs,!1),ma)})}async function er(){l(fs,!0);try{l(De,await nn(e(De))),y("success",ti)}catch{y("error",si)}finally{l(fs,!1)}}async function Ia(){l(Mt,!0);try{const r={...e(g)};r.backupS3SecretKey||delete r.backupS3SecretKey;const i=await al(r);if(i.error)throw new Error(i.error);e(g).backupS3SecretKey&&l(At,!0),l(g,{...e(g),backupS3SecretKey:""}),y("success",Cl)}catch(r){y("error",r.message||Ll)}finally{l(Mt,!1)}}async function tr(){l(gs,!0);try{const r={...e(g)};r.backupS3SecretKey||delete r.backupS3SecretKey;const i=await al(r);if(i.error)throw new Error(i.error);e(g).backupS3SecretKey&&l(At,!0),l(g,{...e(g),backupS3SecretKey:""}),y("success",Cl)}catch(r){y("error",r.message||Ll)}finally{l(gs,!1)}}async function sr(){l(hs,!0),l(yt,null),l(Ss,"");try{const r=await vn(e(g));if(r.error)throw new Error(r.error);l(yt,"success"),l(Ss,$c)}catch(r){l(yt,"error"),l(Ss,r.message||Oc)}finally{l(hs,!1)}}async function ar(){l(ms,!0);try{const r=await un();if(r.error)throw new Error(r.error);l(Yt,r.lastRunAt),l(vt,r.lastStatus??""),y("success",cd)}catch(r){y("error",r.message||dd);const i=await el().catch(()=>null);i&&(l(Yt,i.backupLastRunAt),l(vt,i.backupLastStatus))}finally{l(ms,!1)}}async function wa(){l(zt,!0);try{const r=await Zr();if(r.error)throw new Error(r.error);l(Vs,r.backups??[])}catch(r){y("error",r.message||zc)}finally{l(zt,!1)}}function lr(r){l(Pt,r),l(Rs,!0)}async function rr(){if(e(Pt)){l(Jt,e(Pt).key);try{const r=await pn(e(Pt).key);if(r.error)throw new Error(r.error);y("success",Xc),l(be,await Sa()),l(Rs,!1),l(Pt,null)}catch(r){y("error",r.message||Yc)}finally{l(Jt,null)}}}const nr=new Set(["project","runners","repository","integrations","mcp","users","backup"]);$t(()=>(Re(),e(ye)),()=>{Re().user&&Re().user.role!=="admin"&&nr.has(e(ye))&&l(ye,"account")}),$t(()=>(e(ye),e(Ws)),()=>{e(ye)==="runners"&&e(Ws)&&Il()}),$t(()=>(e(g),e(At)),()=>{l(dt,!!(e(g).backupS3Bucket&&e(g).backupS3AccessKey&&e(At)))}),$t(()=>(e(dt),e(js)),()=>{e(dt)&&!e(js)&&(l(js,!0),wa())}),$t(()=>e(Ut),()=>{l(Us,JSON.stringify({mcpServers:{plum:{type:"http",url:`${Nt}/mcp`,headers:{Authorization:`ApiKey ${e(Ut)}`}}}},null,2))}),$t(()=>Nt,()=>{l(Fs,["- name: Run Plum tests"," run: |",` curl -X POST ${Nt}/trigger \\`,' -H "Authorization: ApiKey ${{ secrets.PLUM_API_KEY }}" \\',' -H "Content-Type: application/json" \\',` -d '{"tag": "@smoke", "baseUrl": "https://your-pr-preview-url"}'`].join(`
7
- `))}),$t(()=>(Re(),La),()=>{var r;l(Aa,((r=Re().user)==null?void 0:r.role)==="admin"?[{id:"project",label:ol},{id:"runners",label:il},{id:"repository",label:kn},{id:"integrations",label:cl},{id:"mcp",label:An},{id:"account",label:Ca},{id:"users",label:dl},{id:"backup",label:La}]:[{id:"account",label:Ca}])}),Ur(),Nr();var $a=Sv();Or(r=>{Kr.title=Cn});var Oa=he($a);Xr(Oa,{get toast(){return e(Ks)}});var Xs=t(Oa,2),or=a(Xs);or.textContent=Ln,s(Xs);var Na=t(Xs,2),Ys=a(Na),Da=a(Ys);Ot(Da,5,()=>e(Aa),ws,(r,i)=>{var I=kd(),qe=a(I,!0);s(I),d(()=>{ct(I,"active",e(ye)===e(i).id),v(qe,e(i).label)}),Ye("click",I,()=>ya(e(i).id)),n(r,I)}),s(Da),s(Ys);var Ba=t(Ys,2),ir=a(Ba);{var cr=r=>{var i=yd(),I=a(i),qe=a(I);qe.textContent=ol;var zs=t(qe,2);zs.textContent=Pn,s(I);var at=t(I,2),He=a(at),ut=a(He);ut.textContent=zn;var _t=t(ut,2);M(_t),C(_t,"placeholder",Jn),s(He);var It=t(He,2),we=a(It),Te=a(we);Te.textContent=qn;var Ve=t(Te,2);Ve.textContent=Qn,s(we);var je=t(we,2);M(je),C(je,"placeholder",Zn),s(It);var bt=t(It,2);{var Ae=b=>{var R=xd(),u=a(R);u.textContent=eo;var h=t(u,2);C(h,"alt",to),s(R),d(()=>C(h,"src",e(be).logoUrl)),Ye("error",h,N=>N.target.style.display="none"),n(b,R)};O(bt,b=>{e(be).logoUrl&&b(Ae)})}var Se=t(bt,2),Pe=a(Se),Ue=a(Pe);Ue.textContent=so;var We=t(Ue,2);We.textContent=ao,s(Pe);var fe=t(Pe,2);d(()=>{e(be),Is(()=>{})}),Ot(fe,5,()=>Tl,ws,(b,R)=>{var u=Ad(),h={},N=a(u,!0);s(u),d(()=>{h!==(h=e(R))&&(u.value=(u.__value=e(R))==null?"":e(R)),v(N,e(R))}),n(b,u)}),s(fe),s(Se);var Z=t(Se,2),Y=a(Z),oe=a(Y);oe.textContent=lo;var S=t(oe,2);S.textContent=ro,s(Y);var ee=t(Y,2);M(ee),C(ee,"max",Vr),s(Z);var B=t(Z,2),ie=a(B),de=a(ie);de.textContent=no;var Ee=t(de,2);Ee.textContent=oo,s(ie);var z=t(ie,2);s(B);var w=t(B,2),k=a(w);q(k,{get disabled(){return e(ns)},$$events:{click:Kl},children:(b,R)=>{K();var u=F();d(h=>v(u,h),[()=>vo(e(ns))],x),n(b,u)},$$slots:{default:!0}}),s(w),s(at),s(i),d(()=>{C(z,"aria-checked",jt()==="dark"),ct(z,"on",jt()==="dark")}),X(_t,()=>e(be).name,b=>P(be,e(be).name=b)),X(je,()=>e(be).logoUrl,b=>P(be,e(be).logoUrl=b)),$s(fe,()=>e(be).timezone,b=>P(be,e(be).timezone=b)),X(ee,()=>e(be).maxRetries,b=>P(be,e(be).maxRetries=b)),Ye("click",z,$l),ze(3,i,()=>Je,()=>({y:6,duration:180})),n(r,i)},dr=r=>{var i=Ne(),I=he(i);{var qe=at=>{var He=Md(),ut=a(He),_t=a(ut);_t.textContent=il;var It=t(_t,2);It.textContent=Tn,s(ut);var we=t(ut,2),Te=a(we),Ve=a(Te),je=a(Ve);je.textContent=po;var bt=t(je,2);bt.textContent=uo,s(Ve);var Ae=t(Ve,2);s(Te);var Se=t(Te,2);{var Pe=Z=>{var Y=Dd();Ot(Y,5,()=>e(Be),oe=>oe.id,(oe,S)=>{var ee=Ne();const B=x(()=>e(xe)[e(S).id]);var ie=he(ee);{var de=z=>{var w=Id(),k=a(w),b=a(k),R=a(b);R.textContent=Os;var u=t(R,2);M(u),C(u,"placeholder",hl),s(b);var h=t(b,2),N=a(h),J=a(N);J.nodeValue=`${ul} `;var G=t(J),$=a(G);$.nodeValue=`${_l} `;var le=t($,2);le.nodeValue=` ${bl}`,s(G),s(N);var te=t(N,2);M(te),C(te,"placeholder",fl),s(h);var se=t(h,2),U=a(se);U.textContent=El;var H=t(U,2);M(H),C(H,"placeholder",bo),s(se);var A=t(se,2),p=a(A);p.textContent=gl;var m=t(p,2);d(()=>{e(ue),Is(()=>{e(S)})}),Ot(m,5,()=>qa,ws,(f,ae)=>{var ce=Pd(),Qe={},lt=a(ce,!0);s(ce),d(()=>{Qe!==(Qe=e(ae).id)&&(ce.value=(ce.__value=e(ae).id)==null?"":e(ae).id),v(lt,e(ae).label)}),n(f,ce)}),s(m),s(A),s(k);var L=t(k,2);{var V=f=>{var ae=Td(),ce=a(ae,!0);s(ae),d(()=>v(ce,e(pt))),n(f,ae)};O(L,f=>{e(pt)&&f(V)})}var j=t(L,2),D=a(j);q(D,{get disabled(){return e(Qt)},$$events:{click:()=>Fl(e(S).id)},children:(f,ae)=>{K();var ce=F();d(Qe=>v(ce,Qe),[()=>xo(e(Qt))],x),n(f,ce)},$$slots:{default:!0}});var ve=t(D,2);q(ve,{variant:"ghost",get disabled(){return e(Qt)},$$events:{click:()=>{l(xs,null),l(pt,"")}},children:(f,ae)=>{K();var ce=F();ce.nodeValue=Qa,n(f,ce)},$$slots:{default:!0}}),s(j),s(w),d(()=>{C(R,"for",`edit-name-${e(S).id??""}`),C(u,"id",`edit-name-${e(S).id??""}`),C(N,"for",`edit-url-${e(S).id??""}`),C(te,"id",`edit-url-${e(S).id??""}`),C(U,"for",`edit-token-${e(S).id??""}`),C(H,"id",`edit-token-${e(S).id??""}`),C(p,"for",`edit-browser-${e(S).id??""}`),C(m,"id",`edit-browser-${e(S).id??""}`)}),X(u,()=>e(ue).name,f=>P(ue,e(ue).name=f)),X(te,()=>e(ue).url,f=>P(ue,e(ue).url=f)),X(H,()=>e(ue).token,f=>P(ue,e(ue).token=f)),$s(m,()=>e(ue).browser,f=>P(ue,e(ue).browser=f)),ze(3,w,()=>Je,()=>({y:-4,duration:180})),n(z,w)},Ee=z=>{var w=Nd(),k=a(w),b=t(a(k),2),R=a(b,!0);s(b);var u=t(b,2),h=a(u,!0);s(u);var N=t(u,2);{var J=L=>{var V=Ne(),j=he(V);{var D=f=>{var ae=wd(),ce=a(ae);s(ae),d(()=>v(ce,`${e(B).latency??""}ms`)),n(f,ae)},ve=f=>{var ae=$d();ae.textContent=fo,d(()=>C(ae,"title",e(B).error)),n(f,ae)};O(j,f=>{e(B).ok?f(D):f(ve,!1)})}n(L,V)},G=L=>{var V=Ne(),j=he(V);{var D=ve=>{var f=Od();f.textContent=Eo,n(ve,f)};O(j,ve=>{var f;(f=e(B))!=null&&f.loading&&ve(D)},!0)}n(L,V)};O(N,L=>{e(B)&&!e(B).loading?L(J):L(G,!1)})}s(k);var $=t(k,2),le=a($,!0);s($);var te=t($,2),se=a(te);q(se,{variant:"ghost",size:"sm",$$events:{click:()=>Ul(e(S))},children:(L,V)=>{K();var j=F();j.nodeValue=jr,n(L,j)},$$slots:{default:!0}});var U=t(se,2);const H=x(()=>e(ks)===e(S).id);q(U,{variant:"ghost",size:"sm",get disabled(){return e(H)},$$events:{click:()=>Bl(e(S).id,e(S).name)},children:(L,V)=>{K();var j=F();d(D=>v(j,D),[()=>yo(e(ks)===e(S).id)],x),n(L,j)},$$slots:{default:!0}});var A=t(U,2);const p=x(()=>e(Ls)===e(S).id);q(A,{variant:"ghost",size:"sm",get disabled(){return e(p)},$$events:{click:()=>Dl(e(S).id,e(S).name)},children:(L,V)=>{K();var j=F();d(D=>v(j,D),[()=>Po(e(Ls)===e(S).id)],x),n(L,j)},$$slots:{default:!0}});var m=t(A,2);q(m,{variant:"danger",size:"sm",$$events:{click:()=>Nl(e(S).id,e(S).name)},children:(L,V)=>{K();var j=F();j.nodeValue=go,n(L,j)},$$slots:{default:!0}}),s(te),s(w),d(()=>{v(R,e(S).name),v(h,e(S).browser),v(le,e(S).url)}),ze(3,w,()=>Je,()=>({y:-4,duration:180})),n(z,w)};O(ie,z=>{e(xs)===e(S).id?z(de):z(Ee,!1)})}n(oe,ee)}),s(Y),n(Z,Y)};O(Se,Z=>{e(Be).length>0&&Z(Pe)})}var Ue=t(Se,2);{var We=Z=>{var Y=Fd(),oe=a(Y);oe.textContent=ho;var S=t(oe,2),ee=a(S),B=a(ee);B.textContent=Os;var ie=t(B,2);M(ie),C(ie,"placeholder",hl),s(ee);var de=t(ee,2),Ee=a(de),z=a(Ee);z.nodeValue=`${ul} `;var w=t(z),k=a(w);k.nodeValue=`${_l} `;var b=t(k,2);b.nodeValue=` ${bl}`,s(w),s(Ee);var R=t(Ee,2);M(R),C(R,"placeholder",fl),s(de);var u=t(de,2),h=a(u);h.textContent=El;var N=t(h,2);M(N),C(N,"placeholder",_o),s(u);var J=t(u,2),G=a(J);G.textContent=gl;var $=t(G,2);d(()=>{e(pe),Is(()=>{})}),Ot($,5,()=>qa,ws,(A,p)=>{var m=Bd(),L={},V=a(m,!0);s(m),d(()=>{L!==(L=e(p).id)&&(m.value=(m.__value=e(p).id)==null?"":e(p).id),v(V,e(p).label)}),n(A,m)}),s($),s(J),s(S);var le=t(S,2);{var te=A=>{var p=Ud(),m=a(p,!0);s(p),d(()=>v(m,e(Tt))),n(A,p)};O(le,A=>{e(Tt)&&A(te)})}var se=t(le,2),U=a(se);q(U,{get disabled(){return e(qt)},$$events:{click:Ol},children:(A,p)=>{K();var m=F();d(L=>v(m,L),[()=>Ao(e(qt))],x),n(A,m)},$$slots:{default:!0}});var H=t(U,2);q(H,{variant:"ghost",get disabled(){return e(qt)},$$events:{click:()=>{l(Cs,!1),l(Tt,"")}},children:(A,p)=>{K();var m=F();m.nodeValue=Qa,n(A,m)},$$slots:{default:!0}}),s(se),s(Y),X(ie,()=>e(pe).name,A=>P(pe,e(pe).name=A)),X(R,()=>e(pe).url,A=>P(pe,e(pe).url=A)),X(N,()=>e(pe).token,A=>P(pe,e(pe).token=A)),$s($,()=>e(pe).browser,A=>P(pe,e(pe).browser=A)),ze(3,Y,()=>Je,()=>({y:-6,duration:200})),n(Z,Y)},fe=Z=>{var Y=Kd(),oe=a(Y);q(oe,{variant:"ghost",$$events:{click:()=>l(Cs,!0)},children:(S,ee)=>{K();var B=F();B.nodeValue=mo,n(S,B)},$$slots:{default:!0}}),s(Y),n(Z,Y)};O(Ue,Z=>{e(Cs)?Z(We):Z(fe,!1)})}s(we),s(He),d(()=>{C(Ae,"aria-checked",xa()),ct(Ae,"on",xa())}),Ye("click",Ae,wl),ze(3,He,()=>Je,()=>({y:6,duration:180})),n(at,He)},zs=at=>{var He=Ne(),ut=he(He);{var _t=we=>{var Te=Gd(),Ve=a(Te),je=a(Ve);je.textContent=xn;var bt=t(je,2);bt.textContent=In,s(Ve);var Ae=t(Ve,2),Se=a(Ae),Pe=a(Se),Ue=a(Pe);Ue.textContent=To;var We=t(Ue,2);M(We),C(We,"placeholder",ml),s(Pe);var fe=t(Pe,2),Z=a(fe);Z.textContent=Io;var Y=t(Z,2);M(Y),C(Y,"placeholder",Sl),s(fe),s(Se);var oe=t(Se,2),S=a(oe);S.nodeValue=`${wo} `;var ee=t(S),B=a(ee);s(ee);var ie=t(ee,2),de=a(ie);s(ie),s(oe);var Ee=t(oe,2),z=a(Ee);q(z,{get disabled(){return e(os)},$$events:{click:Vl},children:(p,m)=>{K();var L=F();d(V=>v(L,V),[()=>Ho(e(os))],x),n(p,L)},$$slots:{default:!0}}),s(Ee),s(Ae);var w=t(Ae,2),k=a(w);k.textContent=No;var b=t(k,2),R=a(b);R.nodeValue=`${Do} `;var u=t(R);u.textContent=Bo;var h=t(u);h.nodeValue=` ${Uo}`,s(b),s(w);var N=t(w,2),J=a(N),G=a(J),$=a(G);$.textContent=Fo;var le=t($,2);M(le),s(G);var te=t(G,2),se=a(te);se.textContent=Ko;var U=t(se,2);M(U),s(te),s(J);var H=t(J,2),A=a(H);q(A,{variant:"ghost",get disabled(){return e(is)},$$events:{click:jl},children:(p,m)=>{K();var L=F();d(V=>v(L,V),[()=>Vo(e(is))],x),n(p,L)},$$slots:{default:!0}}),s(H),s(N),s(Te),d(()=>{v(B,`${(e(Ce).testCasePrefix||ml)??""}-001`),v(de,`${(e(Ce).testSuitePrefix||Sl)??""}-001`),C(le,"placeholder",e(Ce).testCasePrefix),C(U,"placeholder",e(Ce).testSuitePrefix)}),X(We,()=>e(Ce).testCasePrefix,p=>P(Ce,e(Ce).testCasePrefix=p)),X(Y,()=>e(Ce).testSuitePrefix,p=>P(Ce,e(Ce).testSuitePrefix=p)),X(le,()=>e(st).testCasePrefix,p=>P(st,e(st).testCasePrefix=p)),X(U,()=>e(st).testSuitePrefix,p=>P(st,e(st).testSuitePrefix=p)),ze(3,Te,()=>Je,()=>({y:6,duration:180})),n(we,Te)},It=we=>{var Te=Ne(),Ve=he(Te);{var je=Ae=>{var Se=Hd(),Pe=a(Se),Ue=a(Pe);Ue.textContent=cl;var We=t(Ue,2);We.textContent=wn,s(Pe);var fe=t(Pe,2),Z=a(fe);Z.textContent=jo;var Y=t(Z,2),oe=a(Y),S=a(oe);S.textContent=Wo;var ee=t(S,2);ee.textContent=Xo,s(oe);var B=t(oe,2);M(B),C(B,"placeholder",Yo),s(Y);var ie=t(Y,2),de=a(ie),Ee=a(de);Ee.textContent=zo;var z=t(Ee,2);z.textContent=Jo,s(de);var w=t(de,2);M(w),C(w,"placeholder",qo),s(ie);var k=t(ie,2),b=a(k),R=a(b);R.textContent=Qo;var u=t(R,2);u.textContent=Zo,s(b);var h=t(b,2);M(h),C(h,"placeholder",ei),s(k);var N=t(k,2);q(N,{get disabled(){return e(fs)},$$events:{click:er},children:(D,ve)=>{K();var f=F();d(ae=>v(f,ae),[()=>vi(e(fs))],x),n(D,f)},$$slots:{default:!0}}),s(fe);var J=t(fe,2),G=a(J);G.textContent=ai;var $=t(G,2),le=a($);le.nodeValue=`${li} `;var te=t(le);te.textContent=`POST ${Nt}/trigger`;var se=t(te);se.nodeValue=` ${ri} `;var U=t(se,2);U.nodeValue=` ${ni} `;var H=t(U);H.textContent=oi;var A=t(H);A.nodeValue=` ${ii} `;var p=t(A);hn(p,{variant:"external",children:(D,ve)=>{K();var f=F();f.nodeValue=ci,n(D,f)},$$slots:{default:!0}}),K(),s($);var m=t($,2),L=a(m,!0);s(m);var V=t(m,2),j=a(V);q(j,{variant:"ghost",$$events:{click:Zl},children:(D,ve)=>{K();var f=F();d(ae=>v(f,ae),[()=>pi(e(Hs))],x),n(D,f)},$$slots:{default:!0}}),s(V),s(J),s(Se),d(()=>v(L,e(Fs))),X(B,()=>e(De).discordWebhookUrl,D=>P(De,e(De).discordWebhookUrl=D)),X(w,()=>e(De).slackWebhookUrl,D=>P(De,e(De).slackWebhookUrl=D)),X(h,()=>e(De).notifyPublicUrl,D=>P(De,e(De).notifyPublicUrl=D)),Ye("click",H,()=>ya("mcp")),ze(3,Se,()=>Je,()=>({y:6,duration:180})),n(Ae,Se)},bt=Ae=>{var Se=Ne(),Pe=he(Se);{var Ue=fe=>{var Z=qd(),Y=a(Z),oe=a(Y);oe.textContent=yn;var S=t(oe,2);S.textContent=$n,s(Y);var ee=t(Y,2),B=a(ee);B.textContent=ui;var ie=t(B,2);{var de=k=>{var b=Vd(),R=he(b);R.textContent=_i;var u=t(R,2),h=a(u);q(h,{get disabled(){return e(Kt)},$$events:{click:Ta},children:(N,J)=>{K();var G=F();d($=>v(G,$),[()=>ki(e(Kt))],x),n(N,G)},$$slots:{default:!0}}),s(u),n(k,b)},Ee=k=>{var b=zd(),R=he(b),u=a(R);M(u);var h=t(u,2),N=a(h);{var J=p=>{var m=jd();n(p,m)},G=p=>{var m=Wd();n(p,m)};O(N,p=>{e(Ft)?p(J):p(G,!1)})}s(h);var $=t(h,2);C($,"title",Ei);var le=a($);{var te=p=>{var m=Xd();n(p,m)},se=p=>{var m=Yd();n(p,m)};O(le,p=>{e(Ms)?p(te):p(se,!1)})}s($),s(R);var U=t(R,2);U.textContent=gi;var H=t(U,2),A=a(H);q(A,{variant:"ghost",get disabled(){return e(Kt)},$$events:{click:Ta},children:(p,m)=>{K();var L=F();d(V=>v(L,V),[()=>xi(e(Kt))],x),n(p,L)},$$slots:{default:!0}}),s(H),d(()=>{C(u,"type",e(Ft)?"text":"password"),Wr(u,e(Ut)),C(h,"title",e(Ft)?bi:fi)}),Ye("click",h,()=>l(Ft,!e(Ft))),Ye("click",$,ql),n(k,b)};O(ie,k=>{e(Es)?k(Ee,!1):k(de)})}s(ee);var z=t(ee,2);{var w=k=>{var b=Jd(),R=a(b);R.textContent=hi;var u=t(R,2),h=a(u);h.nodeValue=`${mi} `;var N=t(h,2,!0);N.nodeValue=Si,s(u);var J=t(u,2),G=a(J,!0);s(J);var $=t(J,2),le=a($);q(le,{variant:"ghost",$$events:{click:Ql},children:(te,se)=>{K();var U=F();d(H=>v(U,H),[()=>Ai(e(Gs))],x),n(te,U)},$$slots:{default:!0}}),s($),s(b),d(()=>v(G,e(Us))),n(k,b)};O(z,k=>{e(Es)&&k(w)})}s(Z),ze(3,Z,()=>Je,()=>({y:6,duration:180})),n(fe,Z)},We=fe=>{var Z=Ne(),Y=he(Z);{var oe=ee=>{var B=ev(),ie=a(B),de=a(ie);de.textContent=Ca;var Ee=t(de,2);Ee.textContent=On,s(ie);var z=t(ie,2),w=a(z);w.textContent=yi;var k=t(w,2),b=a(k);b.textContent=Os;var R=t(b,2);M(R),s(k);var u=t(k,2),h=a(u);h.textContent=Za;var N=t(h,2);M(N),s(u);var J=t(u,2);{var G=T=>{var ne=Qd(),_e=a(ne,!0);s(ne),d(()=>v(_e,e(ds))),n(T,ne)};O(J,T=>{e(ds)&&T(G)})}var $=t(J,2),le=a($);const te=x(()=>e(cs)||!e(Ge).name||!e(Ge).email);q(le,{get disabled(){return e(te)},$$events:{click:Wl},children:(T,ne)=>{K();var _e=F();d(Ie=>v(_e,Ie),[()=>Ui(e(cs))],x),n(T,_e)},$$slots:{default:!0}}),s($),s(z);var se=t(z,2),U=a(se);U.textContent=Pi;var H=t(U,2),A=a(H);A.textContent=Ti;var p=t(A,2);M(p),s(H);var m=t(H,2),L=a(m);L.textContent=Ii;var V=t(L,2);M(V),s(m);var j=t(m,2),D=a(j);D.textContent=wi;var ve=t(D,2);M(ve),s(j);var f=t(j,2);{var ae=T=>{var ne=Zd(),_e=a(ne,!0);s(ne),d(()=>v(_e,e(Bt))),n(T,ne)};O(f,T=>{e(Bt)&&T(ae)})}var ce=t(f,2),Qe=a(ce);const lt=x(()=>e(us)||!e(Le).currentPassword||!e(Le).newPassword);q(Qe,{get disabled(){return e(lt)},$$events:{click:zl},children:(T,ne)=>{K();var _e=F();d(Ie=>v(_e,Ie),[()=>Fi(e(us))],x),n(T,_e)},$$slots:{default:!0}}),s(ce),s(se);var ft=t(se,2),W=a(ft),ke=a(W);q(ke,{variant:"danger",size:"sm",$$events:{click:Jl},children:(T,ne)=>{K();var _e=F();_e.nodeValue=$i,n(T,_e)},$$slots:{default:!0}}),s(W),s(ft),s(B),X(R,()=>e(Ge).name,T=>P(Ge,e(Ge).name=T)),X(N,()=>e(Ge).email,T=>P(Ge,e(Ge).email=T)),X(p,()=>e(Le).currentPassword,T=>P(Le,e(Le).currentPassword=T)),X(V,()=>e(Le).newPassword,T=>P(Le,e(Le).newPassword=T)),X(ve,()=>e(Le).confirmPassword,T=>P(Le,e(Le).confirmPassword=T)),ze(3,B,()=>Je,()=>({y:6,duration:180})),n(ee,B)},S=ee=>{var B=Ne(),ie=he(B);{var de=z=>{var w=ov(),k=a(w),b=a(k);b.textContent=dl;var R=t(b,2);R.textContent=Nn,s(k);var u=t(k,2);rl(u,{title:Ki,confirmLabel:Mi,get open(){return e(ps)},set open(W){l(ps,W)},$$events:{confirm:()=>{var W,ke;return Yl((W=e(Dt))==null?void 0:W.id,(ke=e(Dt))==null?void 0:ke.name)}},children:(W,ke)=>{var T=Ne(),ne=he(T);{var _e=Ie=>{var Et=tv(),gt=he(Et);gt.nodeValue=`${Gi} `;var rt=t(gt),wt=a(rt,!0);s(rt);var nt=t(rt,1,!0);nt.nodeValue=Hi,d(()=>v(wt,e(Dt).name)),n(Ie,Et)};O(ne,Ie=>{e(Dt)&&Ie(_e)})}n(W,T)},$$slots:{default:!0},$$legacy:!0});var h=t(u,2),N=a(h);N.textContent=Vi;var J=t(N,2),G=a(J),$=a(G);$.textContent=Os;var le=t($,2);M(le),C(le,"placeholder",ji),s(G);var te=t(G,2),se=a(te);se.textContent=Za;var U=t(se,2);M(U),C(U,"placeholder",Wi),s(te),s(J);var H=t(J,2),A=a(H),p=a(A);p.textContent=Xi;var m=t(p,2);M(m),s(A);var L=t(A,2),V=a(L);V.textContent=Yi;var j=t(V,2);d(()=>{e(me),Is(()=>{})});var D=a(j);D.value=(D.__value="user")==null?"":"user",D.textContent=zi;var ve=t(D);ve.value=(ve.__value="admin")==null?"":"admin",ve.textContent=Ji,s(j),s(L),s(H);var f=t(H,2);{var ae=W=>{var ke=sv(),T=a(ke,!0);s(ke),d(()=>v(T,e(Wt))),n(W,ke)};O(f,W=>{e(Wt)&&W(ae)})}var ce=t(f,2),Qe=a(ce);q(Qe,{get disabled(){return e(vs)},$$events:{click:Xl},children:(W,ke)=>{K();var T=F();d(ne=>v(T,ne),[()=>ec(e(vs))],x),n(W,T)},$$slots:{default:!0}}),s(ce),s(h);var lt=t(h,2);{var ft=W=>{var ke=nv();Ot(ke,5,()=>e(kt),T=>T.id,(T,ne)=>{var _e=rv(),Ie=a(_e),Et=a(Ie),gt=a(Et,!0);s(Et);var rt=t(Et,2),wt=a(rt,!0);s(rt),s(Ie);var nt=t(Ie,2),As=a(nt,!0);s(nt);var Js=t(nt,2);{var Zt=Ze=>{var Fe=av();C(Fe,"title",qi),Ye("click",Fe,()=>{l(Dt,{id:e(ne).id,name:e(ne).name}),l(ps,!0)}),n(Ze,Fe)},es=Ze=>{var Fe=lv();Fe.textContent=Qi,n(Ze,Fe)};O(Js,Ze=>{var Fe;e(ne).id!==((Fe=Re().user)==null?void 0:Fe.id)?Ze(Zt):Ze(es,!1)})}s(_e),d(()=>{v(gt,e(ne).name),v(wt,e(ne).email),Gr(nt,`role-chip ${e(ne).role??""} svelte-1b139ls`),v(As,e(ne).role)}),n(T,_e)}),s(ke),n(W,ke)};O(lt,W=>{e(kt).length>0&&W(ft)})}s(w),X(le,()=>e(me).name,W=>P(me,e(me).name=W)),X(U,()=>e(me).email,W=>P(me,e(me).email=W)),X(m,()=>e(me).password,W=>P(me,e(me).password=W)),$s(j,()=>e(me).role,W=>P(me,e(me).role=W)),ze(3,w,()=>Je,()=>({y:6,duration:180})),n(z,w)},Ee=z=>{var w=Ne(),k=he(w);{var b=R=>{var u=mv(),h=a(u),N=a(h);N.textContent=La;var J=t(N,2);J.textContent=Dn,s(h);var G=t(h,2),$=a(G);$.textContent=ac;var le=t($,2),te=a(le),se=a(te);se.textContent=lc;var U=t(se,2),H=a(U);H.nodeValue=`${rc} `;var A=t(H,2);A.nodeValue=` ${nc}`,s(U);var p=t(U,2);q(p,{get disabled(){return e(bs)},$$events:{click:Ml},children:(_,re)=>{K();var Q=F();d(ge=>v(Q,ge),[()=>bd(e(bs))],x),n(_,Q)},$$slots:{default:!0}}),s(te);var m=t(te,4),L=a(m);L.textContent=oc;var V=t(L,2);V.textContent=ic;var j=t(V,2),D=a(j),ve=a(D);Yr(ve,_=>l(Xt,_),()=>e(Xt));var f=t(ve,2),ae=a(f,!0);s(f),s(D);var ce=t(D,2);const Qe=x(()=>!e(xt)||e(_s));q(ce,{get disabled(){return e(Qe)},$$events:{click:Gl},children:(_,re)=>{K();var Q=F();d(ge=>v(Q,ge),[()=>fd(e(_s))],x),n(_,Q)},$$slots:{default:!0}}),s(j),s(m),s(le);var lt=t(le,2),ft=a(lt),W=a(ft),ke=a(W);ke.nodeValue=`${dc} `;var T=t(ke);T.textContent=vc,s(W);var ne=t(W,2);s(ft);var _e=t(ft,2);q(_e,{variant:"ghost",get disabled(){return e(gs)},$$events:{click:tr},children:(_,re)=>{K();var Q=F();d(ge=>v(Q,ge),[()=>uc(e(gs))],x),n(_,Q)},$$slots:{default:!0}}),s(lt);var Ie=t(lt,2),Et=a(Ie,!0);s(Ie),s(G);var gt=t(G,2),rt=a(gt);rt.textContent=_c;var wt=t(rt,2),nt=a(wt);nt.nodeValue=`${bc} `;var As=t(nt);As.textContent=Rl;var Js=t(As);Js.nodeValue=` ${fc}`,s(wt);var Zt=t(wt,2),es=a(Zt),Ze=a(es),Fe=a(Ze);Fe.textContent=Rl;var vr=t(Fe,2);vr.textContent=Ec,s(Ze);var qs=t(Ze,2);M(qs),C(qs,"placeholder",gc),s(es);var Ua=t(es,2),Qs=a(Ua),Fa=a(Qs);Fa.textContent=hc;var Ka=t(Fa,2),Ma=a(Ka);Ma.nodeValue=`${mc} `;var pr=t(Ma,2);pr.nodeValue=` ${Sc}`,s(Ka),s(Qs);var Zs=t(Qs,2);M(Zs),C(Zs,"placeholder",Rc),s(Ua),s(Zt);var ea=t(Zt,2),ta=a(ea),sa=a(ta),ur=a(sa);ur.textContent=Cc,s(sa);var aa=t(sa,2);M(aa),C(aa,"placeholder",Lc),s(ta);var Ga=t(ta,2),la=a(Ga),Ha=a(la);Ha.textContent=kc;var _r=t(Ha,2);_r.textContent=xc,s(la);var ra=t(la,2);M(ra),C(ra,"placeholder",Ac),s(Ga),s(ea);var na=t(ea,2),oa=a(na),ia=a(oa),br=a(ia);br.textContent=yc,s(ia);var ca=t(ia,2);M(ca),C(ca,"placeholder",Pc),s(oa);var Va=t(oa,2),da=a(Va),ja=a(da);ja.textContent=Tc;var Wa=t(ja,2),fr=a(Wa,!0);s(Wa),s(da);var va=t(da,2);M(va),s(Va),s(na);var pa=t(na,2),Xa=a(pa);q(Xa,{variant:"ghost",get disabled(){return e(hs)},$$events:{click:sr},children:(_,re)=>{K();var Q=F();d(ge=>v(Q,ge),[()=>hd(e(hs))],x),n(_,Q)},$$slots:{default:!0}});var Er=t(Xa,2);q(Er,{get disabled(){return e(Mt)},$$events:{click:Ia},children:(_,re)=>{K();var Q=F();d(ge=>v(Q,ge),[()=>md(e(Mt))],x),n(_,Q)},$$slots:{default:!0}}),s(pa);var gr=t(pa,2);{var hr=_=>{var re=iv(),Q=a(re);s(re),d(()=>{ct(re,"s3-test-success",e(yt)==="success"),ct(re,"s3-test-error",e(yt)==="error"),v(Q,`${(e(yt)==="success"?"✓":"✗")??""}
8
- ${e(Ss)??""}`)}),n(_,re)};O(gr,_=>{e(yt)&&_(hr)})}s(gt);var Ya=t(gt,2);const mr=x(()=>kl(!1)),Sr=x(()=>!!e(Jt));rl(Ya,{title:jc,get confirmLabel(){return e(mr)},get loading(){return e(Sr)},get open(){return e(Rs)},set open(_){l(Rs,_)},$$events:{confirm:rr},children:(_,re)=>{var Q=Ne(),ge=he(Q);{var ht=ot=>{var $e=F();d(Oe=>v($e,Oe),[()=>Wc(e(Pt).key)],x),n(ot,$e)};O(ge,ot=>{e(Pt)&&ot(ht)})}n(_,Q)},$$slots:{default:!0},$$legacy:!0});var ys=t(Ya,2),ua=a(ys),za=a(ua);za.textContent=Kc;var Rr=t(za,2);{var Cr=_=>{q(_,{variant:"ghost",get disabled(){return e(zt)},$$events:{click:wa},children:(re,Q)=>{K();var ge=F();d(ht=>v(ge,ht),[()=>xl(e(zt))],x),n(re,ge)},$$slots:{default:!0}})};O(Rr,_=>{e(dt)&&_(Cr)})}s(ua);var Lr=t(ua,2);{var kr=_=>{var re=cv();re.textContent=Gc,n(_,re)},xr=_=>{var re=uv(),Q=he(re);Q.textContent=Mc;var ge=t(Q,2);{var ht=$e=>{var Oe=dv(),mt=a(Oe,!0);s(Oe),d(Xe=>v(mt,Xe),[()=>e(zt)?xl(!0):Hc],x),n($e,Oe)},ot=$e=>{var Oe=pv();Ot(Oe,5,()=>e(Vs),mt=>mt.key,(mt,Xe)=>{var Gt=vv(),Ht=a(Gt),ts=a(Ht),ss=a(ts,!0);s(ts);var as=t(ts,2),ba=a(as);s(as),s(Ht);var Ps=t(Ht,2);const Ts=x(()=>e(Jt)===e(Xe).key);q(Ps,{variant:"ghost",get disabled(){return e(Ts)},$$events:{click:()=>lr(e(Xe))},children:(ls,Ke)=>{K();var St=F();d(et=>v(St,et),[()=>kl(e(Jt)===e(Xe).key)],x),n(ls,St)},$$slots:{default:!0}}),s(Gt),d((ls,Ke)=>{v(ss,e(Xe).key),v(ba,`${ls??""} · ${Ke??""}`)},[()=>new Date(e(Xe).lastModified).toLocaleString(),()=>Ld(e(Xe).size)],x),n(mt,Gt)}),s(Oe),n($e,Oe)};O(ge,$e=>{e(Vs).length===0?$e(ht):$e(ot,!1)})}n(_,re)};O(Lr,_=>{e(dt)?_(xr,!1):_(kr)})}s(ys);var _a=t(ys,2),Ja=a(_a);Ja.textContent=Jc;var Ar=t(Ja,2);{var yr=_=>{var re=_v();re.textContent=qc,n(_,re)},Pr=_=>{var re=hv(),Q=he(re),ge=a(Q),ht=a(ge);ht.textContent=Qc;var ot=t(ht,2);s(ge),s(Q);var $e=t(Q,2),Oe=a($e),mt=a(Oe);mt.textContent=Zc;var Xe=t(mt,2),Gt=a(Xe);Gt.nodeValue=`${ed} `;var Ht=t(Gt,2);Ht.nodeValue=` ${td} `;var ts=t(Ht);ts.textContent=sd,s(Xe),s(Oe);var ss=t(Oe,2);M(ss),C(ss,"placeholder",ad),s($e);var as=t($e,2);{var ba=Ke=>{var St=gv(),et=a(St),rs=t(et);{var Tr=Rt=>{var it=bv(),fa=a(it,!0);s(it),d(Ea=>v(fa,Ea),[()=>Sd(e(vt).replace("success:",""))],x),n(Rt,it)},Ir=Rt=>{var it=Ne(),fa=he(it);{var Ea=Vt=>{var tt=fv(),ga=a(tt,!0);s(tt),d($r=>v(ga,$r),[()=>e(vt).replace("error:","")],x),n(Vt,tt)},wr=Vt=>{var tt=Ev(),ga=a(tt,!0);s(tt),d(()=>v(ga,e(vt))),n(Vt,tt)};O(fa,Vt=>{var tt;(tt=e(vt))!=null&&tt.startsWith("error:")?Vt(Ea):Vt(wr,!1)},!0)}n(Rt,it)};O(rs,Rt=>{var it;(it=e(vt))!=null&&it.startsWith("success:")?Rt(Tr):Rt(Ir,!1)})}s(St),d(Rt=>v(et,`${ld}
9
- ${Rt??""} — `),[()=>new Date(e(Yt)).toLocaleString()],x),n(Ke,St)};O(as,Ke=>{e(Yt)&&Ke(ba)})}var Ps=t(as,2),Ts=a(Ps);q(Ts,{variant:"ghost",get disabled(){return e(ms)},$$events:{click:ar},children:(Ke,St)=>{K();var et=F();d(rs=>v(et,rs),[()=>Rd(e(ms))],x),n(Ke,et)},$$slots:{default:!0}});var ls=t(Ts,2);q(ls,{get disabled(){return e(Mt)},$$events:{click:Ia},children:(Ke,St)=>{K();var et=F();d(rs=>v(et,rs),[()=>Cd(e(Mt))],x),n(Ke,et)},$$slots:{default:!0}}),s(Ps),d(()=>{C(ot,"aria-checked",e(g).backupEnabled),ct(ot,"active",e(g).backupEnabled)}),Ye("click",ot,()=>P(g,e(g).backupEnabled=!e(g).backupEnabled)),X(ss,()=>e(g).backupCron,Ke=>P(g,e(g).backupCron=Ke)),n(_,re)};O(Ar,_=>{e(dt)?_(Pr,!1):_(yr)})}s(_a),s(u),d((_,re,Q)=>{v(ae,e(xt)?e(xt).name:cc),C(ne,"aria-checked",e(g).backupIncludeReports),ct(ne,"active",e(g).backupIncludeReports),v(Et,_),v(fr,re),C(va,"placeholder",Q),ct(ys,"card-disabled",!e(dt)),ct(_a,"card-disabled",!e(dt))},[()=>pc(e(g).backupIncludeReports),()=>Ed(e(At)),()=>gd(e(At))],x),Ye("change",ve,Hl),Ye("click",ne,()=>P(g,e(g).backupIncludeReports=!e(g).backupIncludeReports)),X(qs,()=>e(g).backupS3Endpoint,_=>P(g,e(g).backupS3Endpoint=_)),X(Zs,()=>e(g).backupS3Region,_=>P(g,e(g).backupS3Region=_)),X(aa,()=>e(g).backupS3Bucket,_=>P(g,e(g).backupS3Bucket=_)),X(ra,()=>e(g).backupS3Prefix,_=>P(g,e(g).backupS3Prefix=_)),X(ca,()=>e(g).backupS3AccessKey,_=>P(g,e(g).backupS3AccessKey=_)),X(va,()=>e(g).backupS3SecretKey,_=>P(g,e(g).backupS3SecretKey=_)),ze(3,u,()=>Je,()=>({y:6,duration:180})),n(R,u)};O(k,R=>{e(ye)==="backup"&&R(b)},!0)}n(z,w)};O(ie,z=>{e(ye)==="users"?z(de):z(Ee,!1)},!0)}n(ee,B)};O(Y,ee=>{e(ye)==="account"?ee(oe):ee(S,!1)},!0)}n(fe,Z)};O(Pe,fe=>{e(ye)==="mcp"?fe(Ue):fe(We,!1)},!0)}n(Ae,Se)};O(Ve,Ae=>{e(ye)==="integrations"?Ae(je):Ae(bt,!1)},!0)}n(we,Te)};O(ut,we=>{e(ye)==="repository"?we(_t):we(It,!1)},!0)}n(at,He)};O(I,at=>{e(ye)==="runners"?at(qe):at(zs,!1)},!0)}n(r,i)};O(ir,r=>{e(ye)==="project"?r(cr):r(dr,!1)})}s(Ba),s(Na),n(o,$a),Fr(),Bs()}export{Kv as component};
@@ -1,6 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- .page-header.svelte-9ix8dg{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-text.svelte-9ix8dg h1:where(.svelte-9ix8dg){font-size:2.5rem;margin-bottom:.25rem}.header-desc.svelte-9ix8dg{font-size:.875rem;color:var(--text-muted)}.header-actions.svelte-9ix8dg{flex-shrink:0;padding-top:.25rem}.tabs.svelte-9ix8dg{display:flex;gap:.125rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border)}.tab.svelte-9ix8dg{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem .625rem;font-family:var(--font-body);font-size:.875rem;font-weight:400;color:var(--text-muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast);margin-bottom:-1px}.tab.svelte-9ix8dg:hover{color:var(--text)}.tab.active.svelte-9ix8dg{color:var(--accent);border-bottom-color:var(--accent);font-weight:500}.tab-count.svelte-9ix8dg{font-size:.7rem;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.05rem .4rem;color:var(--text-muted)}.loading-row.svelte-9ix8dg{font-size:.875rem;color:var(--text-muted);padding:2rem 0}.pagination-row.svelte-9ix8dg{margin-top:1.5rem}.search-bar.svelte-9ix8dg{position:relative;display:flex;align-items:center;margin-bottom:1.25rem}.search-icon.svelte-9ix8dg{position:absolute;left:.75rem;color:var(--text-muted);pointer-events:none;flex-shrink:0}.search-input.svelte-9ix8dg{width:100%;max-width:360px;height:34px;padding:0 2rem 0 2.25rem;font-family:var(--font-body);font-size:.875rem;color:var(--text);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;transition:border-color var(--duration-fast)}.search-input.svelte-9ix8dg::placeholder{color:var(--text-muted)}.search-input.svelte-9ix8dg:focus{border-color:var(--accent)}.search-input.svelte-9ix8dg::-webkit-search-cancel-button{display:none}.search-clear.svelte-9ix8dg{position:absolute;left:calc(360px - 1.75rem);display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:none;border:none;cursor:pointer;color:var(--text-muted);padding:0}.search-clear.svelte-9ix8dg:hover{color:var(--text)}.sort-bar.svelte-9ix8dg{display:flex;align-items:center;gap:.375rem;margin-bottom:1.25rem;flex-wrap:wrap}.sort-label.svelte-9ix8dg{font-size:.75rem;color:var(--text-muted);margin-right:.25rem}.sort-chip.svelte-9ix8dg{display:flex;align-items:center;gap:.25rem;height:28px;padding:0 .625rem;font-family:var(--font-body);font-size:.8125rem;color:var(--text-muted);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast),background var(--duration-fast)}.sort-chip.svelte-9ix8dg:hover{color:var(--text);border-color:var(--accent)}.sort-chip.active.svelte-9ix8dg{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.sort-dir.svelte-9ix8dg{font-size:.7rem;opacity:.8}.search-section.svelte-9ix8dg{margin-bottom:2rem}.search-section-title.svelte-9ix8dg{display:flex;align-items:center;gap:.5rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:.75rem}.case-results.svelte-9ix8dg{display:flex;flex-direction:column;gap:.25rem}.case-result-row.svelte-9ix8dg{display:flex;align-items:center;gap:.625rem;padding:.6rem .875rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);text-decoration:none;color:inherit;transition:border-color var(--duration-fast)}.case-result-row.svelte-9ix8dg:hover{border-color:var(--accent)}.case-result-title.svelte-9ix8dg{font-size:.875rem;font-weight:500;color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.case-result-suite.svelte-9ix8dg{font-size:.75rem;color:var(--text-muted);flex-shrink:0;white-space:nowrap}.suite-grid.svelte-9ix8dg{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.875rem}.card-link.svelte-9ix8dg{position:absolute;inset:0;border-radius:inherit;z-index:0}.suite-card.svelte-9ix8dg{position:relative;display:flex;flex-direction:column;gap:.5rem;background:var(--bg-elevated);border:1px solid var(--border);border-top:3px solid var(--accent);border-radius:var(--radius-md);padding:1rem;color:inherit;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.suite-card.svelte-9ix8dg:hover{border-color:var(--accent);box-shadow:0 2px 8px #0000000f}.suite-card-header.svelte-9ix8dg{display:flex;align-items:center;gap:.5rem}.suite-card-actions.svelte-9ix8dg{position:relative;z-index:1;margin-left:auto;opacity:0;transition:opacity var(--duration-fast)}.suite-card.svelte-9ix8dg:hover .suite-card-actions:where(.svelte-9ix8dg){opacity:1}.suite-name.svelte-9ix8dg{font-size:.9375rem;font-weight:500;color:var(--text)}.suite-desc.svelte-9ix8dg{font-size:.8125rem;color:var(--text-muted);line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.suite-meta.svelte-9ix8dg{display:flex;align-items:center;gap:.75rem;margin-top:.25rem}.meta-item.svelte-9ix8dg{display:flex;align-items:center;gap:.3rem;font-size:.75rem;color:var(--text-muted)}.id-chip.svelte-9ix8dg{font-family:JetBrains Mono,monospace;font-size:.7rem;font-weight:600;color:var(--accent);background:var(--accent-soft);border-radius:4px;padding:.1rem .4rem;letter-spacing:.02em;flex-shrink:0}.id-chip.small.svelte-9ix8dg{font-size:.65rem}.auto-badge.svelte-9ix8dg{font-size:.62rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--pass);background:var(--pass-soft);border-radius:var(--radius-pill);padding:.1rem .4rem;flex-shrink:0}.priority-badge.svelte-9ix8dg{font-size:.68rem;font-weight:500;border-radius:var(--radius-pill);padding:.15rem .5rem;flex-shrink:0}.priority-badge.small.svelte-9ix8dg{font-size:.62rem;padding:.1rem .4rem}.priority-badge.critical.svelte-9ix8dg{background:var(--fail-soft);color:var(--fail)}.priority-badge.high.svelte-9ix8dg{background:var(--warn-soft);color:var(--warn)}.priority-badge.medium.svelte-9ix8dg{background:var(--node-soft);color:var(--node)}.priority-badge.low.svelte-9ix8dg{background:var(--bg-subtle);color:var(--text-muted)}.icon-btn.svelte-9ix8dg{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border:none;border-radius:var(--radius-sm);background:transparent;cursor:pointer;color:var(--text-muted);transition:background var(--duration-fast),color var(--duration-fast)}.icon-btn.danger.svelte-9ix8dg:hover{background:var(--fail-soft);color:var(--fail)}.runs-list.svelte-9ix8dg{display:flex;flex-direction:column;gap:.5rem}.run-row.svelte-9ix8dg{position:relative;display:flex;align-items:center;gap:1rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:.875rem 1rem;color:inherit;transition:border-color var(--duration-fast)}.run-row.svelte-9ix8dg:hover{border-color:var(--accent)}.run-row-main.svelte-9ix8dg{display:flex;align-items:center;gap:.625rem;flex:1;min-width:0}.run-status-dot.svelte-9ix8dg{width:8px;height:8px;border-radius:50%;flex-shrink:0}.run-status-dot.pass.svelte-9ix8dg{background:var(--pass)}.run-status-dot.warn.svelte-9ix8dg{background:var(--warn)}.run-status-dot.muted.svelte-9ix8dg{background:var(--border)}.run-title.svelte-9ix8dg{font-size:.9375rem;font-weight:500;color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.run-count.svelte-9ix8dg{font-size:.75rem;color:var(--text-muted);flex-shrink:0}.run-meta.svelte-9ix8dg{display:flex;align-items:center;gap:.375rem;font-size:.75rem;color:var(--text-muted);flex-shrink:0}.run-status-label.svelte-9ix8dg{font-size:.7rem;font-weight:500;text-transform:capitalize;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.1rem .4rem}.meta-sep.svelte-9ix8dg{color:var(--border)}.run-row-actions.svelte-9ix8dg{position:relative;z-index:1;opacity:0;transition:opacity var(--duration-fast)}.run-row.svelte-9ix8dg:hover .run-row-actions:where(.svelte-9ix8dg){opacity:1}.form-fields.svelte-9ix8dg{display:flex;flex-direction:column;gap:1rem}.field-textarea.svelte-9ix8dg{height:auto;resize:vertical}.form-error.svelte-9ix8dg{font-size:.8125rem;color:var(--fail)}.modal-actions.svelte-9ix8dg{display:flex;gap:.5rem;padding-top:.25rem}@media (max-width: 640px){.page-header.svelte-9ix8dg{flex-direction:column;gap:.75rem}.suite-grid.svelte-9ix8dg{grid-template-columns:1fr}.run-meta.svelte-9ix8dg{display:none}}
@@ -1,6 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- .loading-state.svelte-1x8emxr{font-size:.875rem;color:var(--text-muted);padding:3rem 0}.breadcrumb.svelte-1x8emxr{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:var(--text-muted);margin-bottom:1.5rem}.bc-link.svelte-1x8emxr{color:var(--accent);text-decoration:none}.bc-link.svelte-1x8emxr:hover{text-decoration:underline}.bc-sep.svelte-1x8emxr{color:var(--border)}.bc-current.svelte-1x8emxr{color:var(--text-muted)}.suite-header.svelte-1x8emxr{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.suite-title-row.svelte-1x8emxr{display:flex;align-items:center;gap:.625rem;margin-bottom:.5rem;flex-wrap:wrap}.suite-title.svelte-1x8emxr{font-size:1.75rem;font-weight:600;color:var(--text)}.suite-desc.svelte-1x8emxr{font-size:.875rem;color:var(--text-muted);margin-bottom:.5rem;line-height:1.5}.suite-meta.svelte-1x8emxr{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:var(--text-muted)}.meta-sep.svelte-1x8emxr{color:var(--border)}.workspace.svelte-1x8emxr{display:grid;grid-template-columns:1fr;gap:1.5rem;align-items:start}.workspace.split.svelte-1x8emxr{grid-template-columns:320px 1fr}.panel-toolbar.svelte-1x8emxr{display:flex;align-items:center;justify-content:space-between;margin-bottom:.875rem}.panel-title.svelte-1x8emxr{font-size:.9375rem;font-weight:500;color:var(--text)}.case-search.svelte-1x8emxr{position:relative;display:flex;align-items:center;margin-bottom:.625rem}.case-search-icon.svelte-1x8emxr{position:absolute;left:.6rem;color:var(--text-muted);pointer-events:none}.case-search-input.svelte-1x8emxr{width:100%;height:30px;padding:0 1.75rem 0 2rem;font-family:var(--font-body);font-size:.8125rem;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;transition:border-color var(--duration-fast)}.case-search-input.svelte-1x8emxr::placeholder{color:var(--text-muted)}.case-search-input.svelte-1x8emxr:focus{border-color:var(--accent)}.case-search-input.svelte-1x8emxr::-webkit-search-cancel-button{display:none}.case-search-clear.svelte-1x8emxr{position:absolute;right:.5rem;display:flex;align-items:center;justify-content:center;width:18px;height:18px;background:none;border:none;cursor:pointer;color:var(--text-muted);padding:0}.case-search-clear.svelte-1x8emxr:hover{color:var(--text)}.case-no-results.svelte-1x8emxr{font-size:.8125rem;color:var(--text-muted);padding:1rem .25rem}.case-list.svelte-1x8emxr{display:flex;flex-direction:column;gap:.375rem}.cases-pagination.svelte-1x8emxr{margin-top:.875rem}.case-sort-bar.svelte-1x8emxr{display:flex;align-items:center;gap:.3rem;margin-bottom:.625rem;flex-wrap:wrap}.case-sort-chip.svelte-1x8emxr{display:flex;align-items:center;gap:.2rem;height:24px;padding:0 .5rem;font-family:var(--font-body);font-size:.75rem;color:var(--text-muted);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast),background var(--duration-fast)}.case-sort-chip.svelte-1x8emxr:hover{color:var(--text);border-color:var(--accent)}.case-sort-chip.active.svelte-1x8emxr{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.case-sort-dir.svelte-1x8emxr{font-size:.65rem}.case-row.svelte-1x8emxr{display:flex;flex-direction:column;gap:.25rem;width:100%;text-align:left;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:.75rem;cursor:pointer;transition:border-color var(--duration-fast),background var(--duration-fast)}.case-row.svelte-1x8emxr:hover{border-color:var(--accent)}.case-row.selected.svelte-1x8emxr{border-color:var(--accent);background:var(--accent-soft)}.case-row-top.svelte-1x8emxr{display:flex;align-items:center;gap:.375rem}.case-row-actions.svelte-1x8emxr{margin-left:auto;opacity:0;transition:opacity var(--duration-fast)}.case-row.svelte-1x8emxr:hover .case-row-actions:where(.svelte-1x8emxr){opacity:1}.case-title.svelte-1x8emxr{font-size:.875rem;color:var(--text);line-height:1.4}.case-steps.svelte-1x8emxr{font-size:.7rem;color:var(--text-muted)}.detail-panel.svelte-1x8emxr{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);overflow-y:auto;position:sticky;top:calc(56px + 1.5rem);max-height:calc(100vh - 56px - 3rem);padding-bottom:1.5rem}.detail-loading.svelte-1x8emxr{padding:2rem;font-size:.875rem;color:var(--text-muted)}.detail-header.svelte-1x8emxr{padding:1.25rem;border-bottom:1px solid var(--border)}.detail-title-row.svelte-1x8emxr{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.75rem}.detail-header-actions.svelte-1x8emxr{margin-left:auto;display:flex;align-items:center;gap:.25rem}.detail-case-title.svelte-1x8emxr{font-size:1rem;font-weight:500;color:var(--text);margin-bottom:.375rem}.detail-case-desc.svelte-1x8emxr{font-size:.8125rem;color:var(--text-muted);line-height:1.5;margin-bottom:.375rem}.detail-meta.svelte-1x8emxr{font-size:.75rem;color:var(--text-muted)}.case-history-bars.svelte-1x8emxr{display:flex;align-items:flex-end;gap:2px;height:16px;margin-top:.5rem}.history-bar.svelte-1x8emxr{width:4px;height:100%;border-radius:1px;background:var(--border)}.history-bar.pass.svelte-1x8emxr{background:var(--pass)}.history-bar.fail.svelte-1x8emxr{background:var(--fail)}.history-bar.warn.svelte-1x8emxr{background:var(--warn)}.history-bar.muted.svelte-1x8emxr{background:var(--text-muted)}.detail-tabs.svelte-1x8emxr{display:flex;border-bottom:1px solid var(--border)}.detail-tab.svelte-1x8emxr{padding:.625rem 1rem;font-family:var(--font-body);font-size:.8125rem;font-weight:400;color:var(--text-muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast);margin-bottom:-1px}.detail-tab.svelte-1x8emxr:hover{color:var(--text)}.detail-tab.active.svelte-1x8emxr{color:var(--accent);border-bottom-color:var(--accent)}.steps-section.svelte-1x8emxr,.history-section.svelte-1x8emxr{padding:1rem 1.25rem}.steps-toolbar.svelte-1x8emxr{display:flex;align-items:center;gap:.5rem;margin-bottom:.875rem}.add-step-btn.svelte-1x8emxr{margin-left:auto;font-size:.8125rem;color:var(--accent);background:none;border:none;cursor:pointer;padding:.25rem .5rem;border-radius:var(--radius-sm);transition:background var(--duration-fast)}.add-step-btn.svelte-1x8emxr:hover{background:var(--accent-soft)}.no-steps.svelte-1x8emxr{font-size:.8125rem;color:var(--text-muted);padding:1rem 0}.steps-table.svelte-1x8emxr{font-size:.8125rem;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.steps-table-head.svelte-1x8emxr,.steps-table-row.svelte-1x8emxr{display:grid;grid-template-columns:28px 1fr 1fr 1fr;gap:.5rem;padding:.5rem .75rem;align-items:start}.steps-table-head.svelte-1x8emxr{background:var(--bg-subtle);font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.steps-table-row.svelte-1x8emxr{border-top:1px solid var(--border);color:var(--text);line-height:1.5}.col-num.svelte-1x8emxr{color:var(--text-muted)}.steps-editor.svelte-1x8emxr{display:flex;flex-direction:column;gap:.5rem}.step-editor-row.svelte-1x8emxr{display:flex;align-items:flex-end;gap:.5rem}.step-num.svelte-1x8emxr{font-size:.75rem;color:var(--text-muted);min-width:20px;padding-bottom:.5rem}.step-editor-fields.svelte-1x8emxr{flex:1;display:grid;grid-template-columns:1fr 1fr 1fr;gap:.5rem}.step-field.svelte-1x8emxr{display:flex;flex-direction:column;gap:.25rem}.step-field-label.svelte-1x8emxr{font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.edit-case-form.svelte-1x8emxr{display:flex;flex-direction:column;gap:.75rem;margin-top:.5rem}.history-list.svelte-1x8emxr{display:flex;flex-direction:column;gap:.5rem}.history-row.svelte-1x8emxr{display:flex;flex-direction:column;gap:.25rem;padding:.75rem;background:var(--bg-subtle);border-radius:var(--radius-sm);border:1px solid var(--border)}.history-info.svelte-1x8emxr{display:flex;align-items:center;gap:.625rem;flex-wrap:wrap}.history-source.svelte-1x8emxr{font-size:.8125rem;font-weight:500;color:var(--text)}.history-link.svelte-1x8emxr{color:var(--accent);text-decoration:none}.history-link.svelte-1x8emxr:hover{text-decoration:underline}.history-missing.svelte-1x8emxr{font-style:italic;color:var(--text-muted)}.history-by.svelte-1x8emxr,.history-date.svelte-1x8emxr{font-size:.75rem;color:var(--text-muted)}.history-notes.svelte-1x8emxr{font-size:.75rem;color:var(--text-muted);font-style:italic}.result-badge.svelte-1x8emxr{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:.15rem .5rem;border-radius:var(--radius-pill);align-self:flex-start}.result-badge.pass.svelte-1x8emxr{background:var(--pass-soft);color:var(--pass)}.result-badge.fail.svelte-1x8emxr{background:var(--fail-soft);color:var(--fail)}.result-badge.warn.svelte-1x8emxr{background:var(--warn-soft);color:var(--warn)}.result-badge.muted.svelte-1x8emxr{background:var(--bg-subtle);color:var(--text-muted)}.id-chip.svelte-1x8emxr{font-family:JetBrains Mono,monospace;font-weight:600;color:var(--accent);background:var(--accent-soft);border-radius:4px;letter-spacing:.02em}.id-chip.large.svelte-1x8emxr{font-size:.75rem;padding:.1rem .45rem}.id-chip.small.svelte-1x8emxr{font-size:.65rem;padding:.08rem .35rem}.priority-badge.svelte-1x8emxr{font-size:.68rem;font-weight:500;border-radius:var(--radius-pill);padding:.15rem .5rem}.priority-badge.small.svelte-1x8emxr{font-size:.62rem}.priority-badge.critical.svelte-1x8emxr{background:var(--fail-soft);color:var(--fail)}.priority-badge.high.svelte-1x8emxr{background:var(--warn-soft);color:var(--warn)}.priority-badge.medium.svelte-1x8emxr{background:var(--node-soft);color:var(--node)}.priority-badge.low.svelte-1x8emxr{background:var(--bg-subtle);color:var(--text-muted)}.auto-badge.svelte-1x8emxr{font-size:.62rem;font-weight:500;background:var(--pass-soft);color:var(--pass);border-radius:var(--radius-pill);padding:.15rem .5rem}.tag-chip.svelte-1x8emxr{font-family:JetBrains Mono,monospace;font-size:.68rem;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:4px;padding:.08rem .4rem}.icon-btn.svelte-1x8emxr{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--radius-sm);background:transparent;cursor:pointer;color:var(--text-muted);transition:background var(--duration-fast),color var(--duration-fast)}.icon-btn.small.svelte-1x8emxr{width:24px;height:24px}.icon-btn.svelte-1x8emxr:hover{background:var(--bg-subtle);color:var(--text)}.icon-btn.danger.svelte-1x8emxr:hover{background:var(--fail-soft);color:var(--fail)}.form-fields.svelte-1x8emxr{display:flex;flex-direction:column;gap:.875rem}.field.svelte-1x8emxr{display:flex;flex-direction:column;gap:.375rem}.field-row.svelte-1x8emxr{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.field-label.svelte-1x8emxr{font-size:.8125rem;font-weight:500;color:var(--text);display:flex;align-items:baseline;gap:.5rem}.field-hint.svelte-1x8emxr{font-size:.75rem;font-weight:400;color:var(--text-muted)}.field-textarea.svelte-1x8emxr{height:auto;resize:vertical}.mono.svelte-1x8emxr{font-family:JetBrains Mono,monospace;font-size:.8125rem!important}.form-error.svelte-1x8emxr{font-size:.8125rem;color:var(--fail)}.move-case-subtitle.svelte-1x8emxr{font-size:.8125rem;color:var(--text-muted)}.modal-actions.svelte-1x8emxr{display:flex;gap:.5rem;padding-top:.25rem}@media (max-width: 768px){.workspace.split.svelte-1x8emxr{grid-template-columns:1fr}}
@@ -1,6 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- .live-viewport.svelte-1wgcx8r{flex:1;width:100%;height:100%;min-width:0;min-height:0;display:flex;align-items:flex-start;justify-content:center;overflow:hidden}.live-stage.svelte-1wgcx8r{position:relative;overflow:hidden}.live-mount.svelte-1wgcx8r{position:absolute;top:0;left:0}.live-mount.svelte-1wgcx8r .rr-player{border-radius:0!important;box-shadow:none!important}.live-mount.svelte-1wgcx8r iframe{pointer-events:auto!important}.notice-state.svelte-13l3gen{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:5rem 1rem;text-align:center;gap:.75rem}.notice-state.svelte-13l3gen h2:where(.svelte-13l3gen){font-size:1.5rem;font-weight:400}.notice-state.svelte-13l3gen p:where(.svelte-13l3gen){font-size:.9375rem;color:var(--text-muted);max-width:360px}.queue-pos.svelte-13l3gen{font-family:JetBrains Mono,monospace;font-size:.85rem;color:var(--text)}.notice-link.svelte-13l3gen{font-size:.875rem;color:var(--accent);text-decoration:none;margin-top:.5rem}.notice-link.svelte-13l3gen:hover{text-decoration:underline}.pulse-dot.svelte-13l3gen{width:18px;height:18px;border-radius:50%;background:var(--accent);animation:svelte-13l3gen-pulse-dot 1.4s ease-in-out infinite}.pulse-dot.warn.svelte-13l3gen{background:var(--warn)}@keyframes svelte-13l3gen-pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.live-fullscreen.svelte-13l3gen{width:100vw;position:relative;left:50%;margin-left:-50vw;margin-top:-2.5rem;margin-bottom:-5rem;padding-bottom:5rem;height:calc(100vh - 56px);box-sizing:border-box;display:flex;flex-direction:column}.run-header.svelte-13l3gen{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem clamp(1rem,3vw,2rem);background:var(--bg-elevated);border-bottom:1px solid var(--border);animation:fadeUp .3s var(--ease-out) both;flex-shrink:0}.run-header.header-pass.svelte-13l3gen{border-top:3px solid var(--pass)}.run-header.header-fail.svelte-13l3gen{border-top:3px solid var(--fail)}.header-left.svelte-13l3gen{display:flex;align-items:center;gap:.875rem;flex-wrap:wrap}.header-back.svelte-13l3gen{display:flex;align-items:center;padding-right:.875rem;border-right:1px solid var(--border)}.header-back.svelte-13l3gen .back-row{margin-bottom:0}.live-badge.svelte-13l3gen{display:inline-flex;align-items:center;gap:.4rem;font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--white);background:var(--accent);padding:.2rem .6rem;border-radius:var(--radius-pill)}.live-dot.svelte-13l3gen{width:6px;height:6px;border-radius:50%;background:#fffc;animation:dotPulse 1.2s ease-in-out infinite}.run-info.svelte-13l3gen{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}.run-title-label.svelte-13l3gen{font-size:.875rem;font-weight:500;color:var(--accent);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);border-radius:var(--radius-pill);padding:.15rem .6rem;white-space:nowrap}.run-tag-label.svelte-13l3gen{font-family:JetBrains Mono,monospace;font-size:.8125rem;font-weight:500;color:var(--text)}.run-sep.svelte-13l3gen{color:var(--text-muted);opacity:.4;font-size:.75rem}.run-detail.svelte-13l3gen{font-size:.8rem;color:var(--text-muted);font-family:JetBrains Mono,monospace}.cancel-btn.svelte-13l3gen{display:inline-flex;align-items:center;gap:.4rem;font-family:var(--font-body);font-size:.8rem;font-weight:500;color:var(--fail);background:var(--fail-soft);border:1px solid var(--fail);border-radius:var(--radius-sm);padding:.35rem .75rem;cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast);flex-shrink:0}.cancel-btn.svelte-13l3gen:hover{background:var(--fail);color:var(--white)}.completion-bar.svelte-13l3gen{display:flex;align-items:center;justify-content:space-between;padding:.75rem clamp(1rem,3vw,2rem);gap:1rem;border-bottom:1px solid var(--border);flex-shrink:0}.completion-bar.pass-bar.svelte-13l3gen{background:var(--pass-soft);border-bottom-color:color-mix(in srgb,var(--pass) 30%,var(--border));color:var(--pass)}.completion-bar.fail-bar.svelte-13l3gen{background:var(--fail-soft);border-bottom-color:color-mix(in srgb,var(--fail) 30%,var(--border));color:var(--fail)}.completion-left.svelte-13l3gen{display:flex;align-items:center;gap:.5rem;font-size:.9rem;font-weight:500}.completion-right.svelte-13l3gen{display:flex;align-items:center;gap:.875rem}.redirect-hint.svelte-13l3gen{font-size:.8rem;opacity:.7;font-family:JetBrains Mono,monospace;color:inherit}.view-now-btn.svelte-13l3gen{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--font-body);font-size:.8125rem;font-weight:600;color:inherit;background:transparent;border:1.5px solid currentColor;border-radius:var(--radius-sm);padding:.3rem .75rem;cursor:pointer;transition:background var(--duration-fast)}.view-now-btn.svelte-13l3gen:hover{background:#0000000f}.lane-tabs.svelte-13l3gen{display:flex;gap:2px;padding:.5rem clamp(1rem,3vw,2rem) 0;background:var(--bg-elevated);border-bottom:1px solid var(--border);flex-shrink:0}.lane-tab.svelte-13l3gen{display:inline-flex;align-items:center;gap:.4rem;padding:.375rem .875rem;border:1px solid transparent;border-bottom:none;border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:transparent;font-family:var(--font-body);font-size:.8rem;color:var(--text-muted);cursor:pointer;transition:color var(--duration-fast),background var(--duration-fast),border-color var(--duration-fast);white-space:nowrap}.lane-tab.svelte-13l3gen:hover{color:var(--text);background:var(--bg-subtle)}.lane-tab.active.svelte-13l3gen{color:var(--text);background:var(--bg-elevated);border-color:var(--border);border-bottom-color:var(--bg-elevated)}.tab-dot.svelte-13l3gen{width:6px;height:6px;border-radius:50%;flex-shrink:0;background:var(--accent)}.tab-dot-running.svelte-13l3gen{background:var(--accent);animation:dotPulse 1.6s ease-in-out infinite}.tab-dot-done.svelte-13l3gen{background:var(--pass)}.tab-dot-error.svelte-13l3gen{background:var(--fail)}.tab-count.svelte-13l3gen{font-size:.65rem;font-weight:600;font-family:JetBrains Mono,monospace;opacity:.55}.run-view.svelte-13l3gen{display:grid;grid-template-columns:1fr 340px;flex:1;min-height:0;overflow:hidden;animation:fadeUp .35s var(--ease-out) .05s both}.stream-panel.svelte-13l3gen{position:relative;background:var(--terminal-bg);display:flex;align-items:center;justify-content:center;overflow:hidden;border-right:1px solid var(--border)}.awaiting-state.svelte-13l3gen{display:flex;flex-direction:column;align-items:center;gap:.625rem;color:#fff3;font-size:.8rem;font-family:JetBrains Mono,monospace}.terminal-panel.svelte-13l3gen{display:flex;flex-direction:column;overflow:hidden}.terminal-bar.svelte-13l3gen{display:flex;align-items:center;gap:6px;padding:.6rem .875rem;background:#00000059;flex-shrink:0}.dot.svelte-13l3gen{display:block;width:10px;height:10px;border-radius:50%}.dot.red.svelte-13l3gen{background:#ff5f57}.dot.yellow.svelte-13l3gen{background:#febc2e}.dot.green.svelte-13l3gen{background:#28c840}.terminal-label.svelte-13l3gen{margin-left:auto;font-size:.68rem;font-family:JetBrains Mono,monospace;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:#ffffff4d}.terminal.svelte-13l3gen{font-family:JetBrains Mono,Fira Code,Cascadia Code,Courier New,monospace;font-size:.8rem;line-height:1.75;background:var(--terminal-bg);color:var(--terminal-text);padding:1rem 1.25rem;flex:1;overflow-y:auto;white-space:pre-wrap;word-break:break-word;margin:0}.terminal.svelte-13l3gen::-webkit-scrollbar{width:4px}.terminal.svelte-13l3gen::-webkit-scrollbar-track{background:transparent}.terminal.svelte-13l3gen::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}
@@ -1,6 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- .page-header.svelte-1b139ls{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.page-header.svelte-1b139ls h1:where(.svelte-1b139ls){font-size:2.5rem}.settings-layout.svelte-1b139ls{display:grid;grid-template-columns:200px 1fr;gap:3rem;align-items:start}.settings-sidebar.svelte-1b139ls{position:sticky;top:72px}.settings-sidebar.svelte-1b139ls nav:where(.svelte-1b139ls){display:flex;flex-direction:column;gap:.125rem}.sidebar-item.svelte-1b139ls{display:block;width:100%;text-align:left;padding:.45rem .75rem;font-family:var(--font-body);font-size:.875rem;font-weight:400;color:var(--text-muted);background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast)}.sidebar-item.svelte-1b139ls:hover{background:var(--bg-subtle);color:var(--text)}.sidebar-item.active.svelte-1b139ls{background:var(--accent-soft);color:var(--accent);font-weight:500}.settings-content.svelte-1b139ls{min-width:0}.content-section.svelte-1b139ls{display:flex;flex-direction:column;gap:1.25rem}.content-header.svelte-1b139ls{margin-bottom:.25rem}.content-header.svelte-1b139ls h2:where(.svelte-1b139ls){font-size:1.1rem;font-weight:500;font-family:var(--font-body);color:var(--text);margin-bottom:.25rem}.content-desc.svelte-1b139ls{font-size:.875rem;color:var(--text-muted);line-height:1.5}.settings-card.svelte-1b139ls{display:flex;flex-direction:column;gap:1.25rem}.field-label.svelte-1b139ls{display:flex;align-items:baseline;gap:.5rem;font-size:.8125rem;font-weight:500;color:var(--text)}.field-hint.svelte-1b139ls{font-size:.75rem;font-weight:400;color:var(--text-muted)}.logo-preview.svelte-1b139ls{display:flex;flex-direction:column;gap:.5rem}.preview-label.svelte-1b139ls{font-size:.75rem;color:var(--text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.06em}.logo-img.svelte-1b139ls{max-height:56px;max-width:200px;object-fit:contain;border-radius:var(--radius-sm)}.card-footer.svelte-1b139ls{padding-top:.125rem}.toggle-row.svelte-1b139ls{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:.875rem 1rem;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm)}.toggle-info.svelte-1b139ls{display:flex;flex-direction:column;gap:.2rem}.toggle-label.svelte-1b139ls{font-size:.875rem;font-weight:500;color:var(--text)}.toggle-desc.svelte-1b139ls{font-size:.78rem;color:var(--text-muted);line-height:1.4}.toggle-switch.svelte-1b139ls{flex-shrink:0;width:40px;height:22px;border-radius:var(--radius-pill);border:none;background:var(--border);cursor:pointer;position:relative;transition:background .2s var(--ease-out)}.toggle-switch.on.svelte-1b139ls{background:var(--accent)}.toggle-thumb.svelte-1b139ls{position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s var(--ease-out);box-shadow:0 1px 3px #0003}.toggle-switch.on.svelte-1b139ls .toggle-thumb:where(.svelte-1b139ls){transform:translate(18px)}.runner-cards.svelte-1b139ls{display:flex;flex-direction:column;gap:.625rem}.runner-card.svelte-1b139ls{border:1px solid var(--border);border-radius:var(--radius-sm);padding:.75rem 1rem;display:flex;flex-direction:column;gap:.375rem;transition:border-color var(--duration-fast)}.runner-card.svelte-1b139ls:hover{border-color:color-mix(in srgb,var(--text-muted) 40%,var(--border))}.runner-card.editing.svelte-1b139ls{border-color:var(--accent);background:var(--accent-soft);gap:.875rem;padding:1rem}.runner-card-header.svelte-1b139ls{display:flex;align-items:center;gap:.5rem}.runner-card-icon.svelte-1b139ls{color:var(--node);flex-shrink:0}.runner-card-name.svelte-1b139ls{font-size:.875rem;font-weight:500;color:var(--text);flex:1}.runner-browser-pill.svelte-1b139ls{font-size:.65rem;font-family:JetBrains Mono,monospace;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.1rem .45rem;flex-shrink:0}.runner-card-url.svelte-1b139ls{font-size:.75rem;font-family:JetBrains Mono,monospace;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:calc(13px + .5rem)}.runner-card-actions.svelte-1b139ls{display:flex;align-items:center;flex-wrap:wrap;gap:.375rem;padding-left:calc(13px + .5rem);margin-top:.125rem}.ping-badge.svelte-1b139ls{font-size:.7rem;font-weight:500;padding:.15rem .5rem;border-radius:var(--radius-pill);flex-shrink:0}.ping-badge.ok.svelte-1b139ls{background:var(--pass-soft);color:var(--pass)}.ping-badge.fail.svelte-1b139ls{background:var(--fail-soft);color:var(--fail)}.ping-badge.pinging.svelte-1b139ls{color:var(--text-muted)}.runner-form.svelte-1b139ls{border:1px solid var(--border);border-radius:var(--radius-sm);padding:1rem;display:flex;flex-direction:column;gap:.875rem;background:var(--bg-subtle)}.runner-form-title.svelte-1b139ls{font-size:.8125rem;font-weight:500;color:var(--text)}.runner-form-fields.svelte-1b139ls{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.runner-form-actions.svelte-1b139ls{display:flex;gap:.5rem}.card-disabled.svelte-1b139ls{opacity:.5;pointer-events:none}.backup-row.svelte-1b139ls{display:flex;gap:2rem}.backup-block.svelte-1b139ls{flex:1;display:flex;flex-direction:column;gap:.875rem}.backup-divider.svelte-1b139ls{width:1px;background:var(--border);flex-shrink:0}.backup-block-title.svelte-1b139ls{font-size:.875rem;font-weight:500;color:var(--text)}.backup-block-desc.svelte-1b139ls{font-size:.8125rem;color:var(--text-muted);line-height:1.6}.backup-block-desc.svelte-1b139ls code:where(.svelte-1b139ls){font-family:JetBrains Mono,monospace;font-size:.78rem;background:var(--bg-subtle);padding:.1em .3em;border-radius:3px}.include-reports-row.svelte-1b139ls{display:flex;align-items:center;gap:1.25rem;margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid var(--border)}.include-reports-row.svelte-1b139ls .backup-toggle-label:where(.svelte-1b139ls){flex:1}.include-reports-row.svelte-1b139ls .field-label:where(.svelte-1b139ls)>span:where(.svelte-1b139ls){display:flex;flex-direction:column;gap:.15rem}.backup-disclaimer.svelte-1b139ls{margin-top:1rem;padding:.625rem .875rem;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.8125rem;color:var(--text-muted);line-height:1.5}.backup-actions.svelte-1b139ls{display:flex;gap:.625rem;margin-top:.25rem;flex-wrap:wrap}.s3-test-result.svelte-1b139ls{margin-top:.625rem;font-size:.8125rem;font-weight:500}.s3-test-success.svelte-1b139ls{color:var(--pass)}.s3-test-error.svelte-1b139ls{color:var(--fail)}.card-title-row.svelte-1b139ls{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.75rem}.card-title-row.svelte-1b139ls .card-title:where(.svelte-1b139ls){margin-bottom:0}.s3-backup-list.svelte-1b139ls{display:flex;flex-direction:column;gap:.5rem;list-style:none;margin:0;padding:0}.s3-backup-row.svelte-1b139ls{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.625rem .875rem;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm)}.s3-backup-info.svelte-1b139ls{display:flex;flex-direction:column;gap:.2rem;min-width:0}.s3-backup-key.svelte-1b139ls{font-family:JetBrains Mono,monospace;font-size:.8125rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s3-backup-meta.svelte-1b139ls{font-size:.75rem;color:var(--text-muted)}.backup-last-run.svelte-1b139ls{font-size:.8125rem;color:var(--text-muted);margin-top:.25rem}.status-success.svelte-1b139ls{color:var(--pass)}.status-error.svelte-1b139ls{color:var(--fail)}.backup-toggle-label.svelte-1b139ls{display:flex;align-items:center;justify-content:space-between;cursor:default}.toggle-btn.svelte-1b139ls{flex-shrink:0;width:40px;height:22px;border-radius:var(--radius-pill);border:none;background:var(--border);cursor:pointer;position:relative;transition:background .2s var(--ease-out)}.toggle-btn.active.svelte-1b139ls{background:var(--accent)}.toggle-btn.svelte-1b139ls .toggle-thumb:where(.svelte-1b139ls){position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s var(--ease-out);box-shadow:0 1px 3px #0003}.toggle-btn.active.svelte-1b139ls .toggle-thumb:where(.svelte-1b139ls){transform:translate(18px)}.field-input-mono.svelte-1b139ls{font-family:JetBrains Mono,monospace;font-size:.8125rem}.import-row.svelte-1b139ls{display:flex;align-items:center;gap:.625rem}.file-label.svelte-1b139ls{cursor:pointer}.file-input-hidden.svelte-1b139ls{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.file-btn.svelte-1b139ls{display:inline-flex;align-items:center;height:34px;padding:0 .875rem;font-size:.8125rem;font-family:inherit;color:var(--text-muted);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis;transition:background var(--duration-fast),border-color var(--duration-fast)}.file-label.svelte-1b139ls:hover .file-btn:where(.svelte-1b139ls){border-color:var(--text-muted);background:var(--bg-subtle)}.field-row.svelte-1b139ls{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.mono.svelte-1b139ls{font-family:JetBrains Mono,monospace!important;font-size:.8125rem!important}.code-sample.svelte-1b139ls{font-family:JetBrains Mono,monospace;font-size:.78rem;background:var(--bg-subtle);padding:.1em .3em;border-radius:3px}.link-btn.svelte-1b139ls{font:inherit;color:var(--accent);background:none;border:none;padding:0;cursor:pointer;text-decoration:underline}.account-info.svelte-1b139ls{display:flex;flex-direction:column;gap:.2rem}.account-name.svelte-1b139ls{font-size:.9375rem;font-weight:500;color:var(--text)}.account-email.svelte-1b139ls{font-size:.8125rem;color:var(--text-muted)}.form-error.svelte-1b139ls{font-size:.8125rem;color:var(--fail)}@media (max-width: 640px){.settings-layout.svelte-1b139ls{grid-template-columns:1fr;gap:1.5rem}.settings-sidebar.svelte-1b139ls{position:static}.settings-sidebar.svelte-1b139ls nav:where(.svelte-1b139ls){flex-direction:row;flex-wrap:wrap}.backup-row.svelte-1b139ls{flex-direction:column}.backup-divider.svelte-1b139ls{width:100%;height:1px}.runner-form-fields.svelte-1b139ls,.field-row.svelte-1b139ls{grid-template-columns:1fr}}.users-table.svelte-1b139ls{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem}.user-row.svelte-1b139ls{display:flex;align-items:center;gap:.75rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:.75rem 1rem}.user-info.svelte-1b139ls{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem}.user-name.svelte-1b139ls{font-size:.9rem;font-weight:500;color:var(--text)}.user-email.svelte-1b139ls{font-size:.8rem;color:var(--text-muted)}.role-chip.svelte-1b139ls{font-size:.7rem;font-weight:500;border-radius:var(--radius-pill);padding:.15rem .55rem;flex-shrink:0}.role-chip.admin.svelte-1b139ls{background:var(--accent-soft);color:var(--accent)}.role-chip.user.svelte-1b139ls{background:var(--bg-subtle);color:var(--text-muted);border:1px solid var(--border)}.you-chip.svelte-1b139ls{font-size:.7rem;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.15rem .55rem;flex-shrink:0}.mcp-key-row.svelte-1b139ls{display:flex;align-items:center;gap:.375rem}.mcp-key-input.svelte-1b139ls{flex:1;font-family:JetBrains Mono,monospace;font-size:.8125rem;min-width:0}.mcp-regen-note.svelte-1b139ls{font-size:.78rem;color:var(--text-muted)}.mcp-snippet.svelte-1b139ls{font-family:JetBrains Mono,monospace;font-size:.78rem;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.875rem 1rem;white-space:pre;overflow-x:auto;color:var(--text);line-height:1.6;margin:0}.icon-btn.svelte-1b139ls{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--radius-sm);background:transparent;cursor:pointer;color:var(--text-muted);transition:background var(--duration-fast),color var(--duration-fast);flex-shrink:0}.icon-btn.danger.svelte-1b139ls:hover{background:var(--fail-soft);color:var(--fail)}
@@ -1,6 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- .status-dot.svelte-eg9xrn{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.pass.svelte-eg9xrn{background:var(--pass)}.fail.svelte-eg9xrn{background:var(--fail)}.skip.svelte-eg9xrn{background:var(--text-muted)}.tag-chip.svelte-foe7v9{font-size:.65rem;font-family:JetBrains Mono,monospace;background:var(--accent-soft);color:var(--accent);padding:.1rem .4rem;border-radius:var(--radius-pill);white-space:nowrap}.kw.svelte-3mvi7i{font-size:.72rem;font-weight:500;letter-spacing:.04em;flex-shrink:0;padding:.05rem .4rem;border-radius:3px;font-family:JetBrains Mono,monospace}.kw-given.svelte-3mvi7i{background:var(--accent-soft);color:var(--accent)}.kw-when.svelte-3mvi7i{background:var(--warn-soft);color:var(--warn)}.kw-then.svelte-3mvi7i{background:var(--pass-soft);color:var(--pass)}.kw-and.svelte-3mvi7i{background:var(--bg-elevated);color:var(--text-muted);border:1px solid var(--border)}.step-status-icon.svelte-9zpq1y{font-size:.75rem;font-weight:600;width:14px;flex-shrink:0;text-align:center}.icon-pass.svelte-9zpq1y{color:var(--pass)}.icon-fail.svelte-9zpq1y{color:var(--fail)}.icon-skip.svelte-9zpq1y{color:var(--text-muted)}.steps-rail.svelte-q7af2t{flex-shrink:0;width:240px;display:flex;flex-direction:column;background:var(--bg-elevated);overflow-y:auto}.steps-rail-header.svelte-q7af2t{flex-shrink:0;padding:.7rem .9rem .5rem;font-family:JetBrains Mono,monospace;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.steps-list.svelte-q7af2t{list-style:none;margin:0;padding:0 .5rem .5rem;display:flex;flex-direction:column;gap:.1rem}.rail-step.svelte-q7af2t{width:100%;display:flex;align-items:flex-start;gap:.5rem;padding:.4rem .5rem;background:none;border:none;border-radius:var(--radius-sm);font:inherit;font-size:.78rem;line-height:1.35;text-align:left;color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast) var(--ease-out)}.rail-step.svelte-q7af2t:hover:not(:disabled){background:var(--bg-subtle)}.rail-step.svelte-q7af2t:disabled{cursor:default}.rail-step-text.svelte-q7af2t{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:.35rem;min-width:0;word-break:break-word}.rail-step-active.svelte-q7af2t{background:var(--accent-soft);color:var(--text);font-weight:500}.combined-timeline.svelte-5daecg{position:absolute;left:0;right:0;bottom:38px;width:80%;margin:0 auto;display:flex;align-items:center}.combined-timeline-time.svelte-5daecg{flex-shrink:0;display:inline-block;width:100px;text-align:center;color:#11103e}.combined-timeline-track.svelte-5daecg{position:relative;flex:1;height:12px;background:#eee;border-radius:3px;cursor:pointer;box-sizing:border-box;border-top:solid 4px #fff;border-bottom:solid 4px #fff}.combined-timeline-fill.svelte-5daecg{position:absolute;left:0;top:0;height:100%;background:#e0e1fe}.combined-timeline-tick.svelte-5daecg{position:absolute;top:2px;width:10px;height:5px;transform:translate(-50%,-50%);background:#4950f6;pointer-events:none}.combined-timeline-handle.svelte-5daecg{position:absolute;top:2px;width:20px;height:20px;border-radius:10px;transform:translate(-50%,-50%);background:#4950f6;pointer-events:none}.code-viewer.svelte-mer6ic{margin:0;padding:.75rem 1rem;background:var(--terminal-bg);color:var(--terminal-text);font-family:JetBrains Mono,monospace;font-size:.78rem;line-height:1.5;border-radius:var(--radius-md);overflow-x:auto;white-space:pre-wrap;word-break:break-word}.code-viewer .tok-tag{color:var(--code-tag)}.code-viewer .tok-attr{color:var(--code-attr)}.code-viewer .tok-value{color:var(--code-string)}.code-viewer .tok-comment{color:var(--code-comment);font-style:italic}.inspector-panel.svelte-mmh4st{flex-shrink:0;width:280px;display:flex;flex-direction:column;gap:.65rem;padding:.75rem .9rem .9rem;background:var(--bg-elevated);overflow-y:auto}.inspector-panel.svelte-mmh4st>:where(.svelte-mmh4st){flex-shrink:0}.inspector-panel.svelte-mmh4st .code-viewer{flex-shrink:0}.inspector-header.svelte-mmh4st{display:flex;align-items:center;gap:.4rem;padding-bottom:.5rem;margin-bottom:.1rem;border-bottom:1px solid var(--border);font-family:JetBrains Mono,monospace;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.inspector-empty.svelte-mmh4st{color:var(--text-muted);font-size:.8rem;padding:1rem .1rem;line-height:1.5}.inspector-section.svelte-mmh4st{display:flex;align-items:baseline;gap:.5rem}.inspector-section-label.svelte-mmh4st{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.inspector-size.svelte-mmh4st{font-family:JetBrains Mono,monospace;font-size:.75rem;color:var(--text)}.inspector-attrs.svelte-mmh4st{margin:0;display:flex;flex-direction:column}.inspector-attr-row.svelte-mmh4st{display:flex;flex-direction:column;gap:.1rem;padding:.35rem 0;border-top:1px solid var(--border)}.inspector-attr-row.svelte-mmh4st dt:where(.svelte-mmh4st){font-family:JetBrains Mono,monospace;font-size:.7rem;color:var(--accent)}.inspector-attr-row.svelte-mmh4st dd:where(.svelte-mmh4st){margin:0;font-family:JetBrains Mono,monospace;font-size:.72rem;color:var(--text-muted);word-break:break-all}.recording-player.svelte-jcqbbs{flex:1;min-height:0;display:flex;gap:1px;background:var(--border);overflow:hidden}.player-stage.svelte-jcqbbs{position:relative;flex:1;min-width:0;min-height:0;display:flex;align-items:center;justify-content:center;background:var(--bg-elevated)}.player-column.svelte-jcqbbs{position:relative;display:inline-flex}.player-mount.svelte-jcqbbs{display:flex}.player-mount.svelte-jcqbbs .rr-player{border-radius:0!important;box-shadow:none!important}.player-mount.svelte-jcqbbs .rr-controller{border-radius:0!important}.player-mount.svelte-jcqbbs iframe{pointer-events:auto!important}.player-mount.svelte-jcqbbs .switch{display:none!important}.player-mount.svelte-jcqbbs .rr-controller__btns{gap:.5rem}.player-mount-multi.svelte-jcqbbs .rr-timeline{visibility:hidden!important;pointer-events:none!important}.player-status.svelte-jcqbbs{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:.85rem}.loading-dots.svelte-jcqbbs{display:flex;gap:.3rem}.loading-dots.svelte-jcqbbs span:where(.svelte-jcqbbs){width:6px;height:6px;border-radius:50%;background:var(--text-muted);animation:dotPulse 1.1s ease-in-out infinite}.loading-dots.svelte-jcqbbs span:where(.svelte-jcqbbs):nth-child(2){animation-delay:.15s}.loading-dots.svelte-jcqbbs span:where(.svelte-jcqbbs):nth-child(3){animation-delay:.3s}.active-tab-badge.svelte-jcqbbs{position:absolute;top:.75rem;left:.75rem;padding:.3rem .6rem;background:#0000008c;backdrop-filter:blur(6px);border-radius:var(--radius-pill);color:#fff;font-family:JetBrains Mono,monospace;font-size:.7rem}.inspect-highlight.svelte-jcqbbs{position:absolute;pointer-events:none;background:color-mix(in srgb,var(--accent) 18%,transparent);border:1.5px solid var(--accent);border-radius:2px;z-index:10000}.restart-overlay-btn.svelte-jcqbbs{position:absolute;display:flex;align-items:center;justify-content:center;background:#fff;border:none;border-radius:50%;color:#11103e;cursor:pointer;z-index:10001}.restart-overlay-btn.svelte-jcqbbs:hover{background:#f0f0f5}.inspect-fab.svelte-jcqbbs{position:absolute;top:.75rem;right:.75rem;display:flex;align-items:center;justify-content:center;width:30px;height:30px;background:#0000008c;backdrop-filter:blur(6px);border:none;border-radius:50%;color:#fff;cursor:pointer;opacity:.7;transition:opacity var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out)}.inspect-fab.svelte-jcqbbs:hover:not(:disabled){opacity:1}.inspect-fab.svelte-jcqbbs:disabled{opacity:.3;cursor:default}.inspect-fab-active.svelte-jcqbbs{background:var(--accent);opacity:1}.report-header.svelte-ggy6pw{border-radius:var(--radius-lg);border:1px solid var(--border);border-top-width:3px;padding:1.5rem;margin-bottom:2rem;background:var(--bg-elevated);animation:fadeUp .35s var(--ease-out) both}.report-header.pass.svelte-ggy6pw{border-top-color:var(--pass)}.report-header.fail.svelte-ggy6pw{border-top-color:var(--fail)}.header-main.svelte-ggy6pw{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}.header-status.svelte-ggy6pw{display:flex;align-items:center;gap:1rem}.status-icon-wrap.svelte-ggy6pw{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.status-icon-wrap.pass-bg.svelte-ggy6pw{background:var(--pass-soft);color:var(--pass)}.status-icon-wrap.fail-bg.svelte-ggy6pw{background:var(--fail-soft);color:var(--fail)}.h1-row.svelte-ggy6pw{display:flex;align-items:center;gap:.75rem;margin-bottom:.2rem}.run-name-badge.svelte-ggy6pw{display:inline-flex;align-items:center;font-size:.75rem;font-weight:500;color:var(--accent);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);border-radius:var(--radius-pill);padding:.25rem .7rem;white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis;margin-top:3px}h1.svelte-ggy6pw{font-size:2rem;margin-bottom:0}.header-meta.svelte-ggy6pw{font-size:.8125rem;color:var(--text-muted);display:flex;align-items:center;flex-wrap:wrap;gap:.35rem}.meta-sep.svelte-ggy6pw{opacity:.4}.mono.svelte-ggy6pw{font-family:JetBrains Mono,monospace;font-size:.78rem}.browser-pill.svelte-ggy6pw{display:inline-flex;align-items:center;gap:.3rem;font-family:JetBrains Mono,monospace;font-size:.68rem;font-weight:500;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.1rem .45rem}.header-stats.svelte-ggy6pw{display:flex;gap:1.5rem;align-items:flex-start;flex-shrink:0}.stat.svelte-ggy6pw{display:flex;flex-direction:column;align-items:center;gap:.15rem}.stat-num.svelte-ggy6pw{font-family:var(--font-display);font-size:1.75rem;line-height:1;font-weight:400;color:var(--text)}.stat-label.svelte-ggy6pw{display:inline-flex;align-items:center;gap:.25rem;font-size:.68rem;color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase}.pass-color.svelte-ggy6pw{color:var(--pass)}.fail-color.svelte-ggy6pw{color:var(--fail)}.muted-color.svelte-ggy6pw{color:var(--text-muted)}.group-header.svelte-ggy6pw{display:flex;align-items:center;gap:.4rem;padding-bottom:.4rem;margin-top:1.75rem;margin-bottom:.75rem;font-family:JetBrains Mono,monospace;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border)}.group-header.svelte-ggy6pw:first-child{margin-top:0}.group-icon.svelte-ggy6pw{flex-shrink:0;opacity:.7}.runner-group-header.svelte-ggy6pw{font-size:.78rem;font-weight:600;color:var(--text)}.worker-group-header.svelte-ggy6pw{font-size:.7rem;font-weight:500;color:var(--text-muted)}.feature.svelte-ggy6pw{margin-bottom:1.25rem;background:var(--bg-elevated);border:1px solid var(--border);border-top-width:3px;border-radius:var(--radius-lg);overflow:hidden;animation:fadeUp .35s var(--ease-out) both}.feature-pass.svelte-ggy6pw{border-top-color:var(--pass)}.feature-fail.svelte-ggy6pw{border-top-color:var(--fail)}.feature-header.svelte-ggy6pw{display:flex;align-items:center;gap:.75rem;padding:.875rem 1.25rem;border-bottom:1px solid var(--border);background:var(--bg-subtle)}.feature-icon.svelte-ggy6pw{flex-shrink:0;color:var(--text-muted);opacity:.7}.feature-name.svelte-ggy6pw{display:flex;align-items:center;gap:.5rem;font-size:.9375rem;font-family:var(--font-display);font-weight:400;flex:1;min-width:0}.feature-right.svelte-ggy6pw{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.feature-file.svelte-ggy6pw{font-family:JetBrains Mono,monospace;font-size:.72rem;color:var(--text-muted)}.suite-tag.svelte-ggy6pw{font-size:.65rem;font-family:JetBrains Mono,monospace;background:var(--accent-soft);color:var(--accent);padding:.1rem .4rem;border-radius:var(--radius-pill);font-weight:500}.scenarios.svelte-ggy6pw{display:flex;flex-direction:column;padding:.5rem;gap:.25rem}.scenario.svelte-ggy6pw{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-elevated);overflow:hidden;animation:fadeUp .3s var(--ease-out) both}.scenario.scenario-fail.svelte-ggy6pw{border-left-width:3px;border-left-color:var(--fail)}.scenario-row.svelte-ggy6pw{display:flex;align-items:stretch}.scenario-header.svelte-ggy6pw{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;flex:1;min-width:0;background:transparent;border:none;cursor:pointer;text-align:left;font-family:var(--font-body);transition:background var(--duration-fast)}.scenario-header.svelte-ggy6pw:hover{background:var(--bg-subtle)}.replay-btn.svelte-ggy6pw{display:inline-flex;align-items:center;gap:.3rem;padding:0 .875rem;font-family:var(--font-body);font-size:.72rem;font-weight:500;color:var(--accent);background:transparent;border:none;border-left:1px solid var(--border);cursor:pointer;flex-shrink:0;transition:background var(--duration-fast);white-space:nowrap}.replay-btn.svelte-ggy6pw:hover{background:var(--accent-soft)}.replay-btn-sm.svelte-ggy6pw{margin-left:auto;padding:.15rem .5rem;border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);border-radius:var(--radius-sm);font-size:.68rem}.scenario-name.svelte-ggy6pw{flex:1;font-size:.875rem;color:var(--text);font-weight:400;text-align:left;display:inline-flex;align-items:center;gap:.4rem;min-width:0}.scenario-count.svelte-ggy6pw{font-size:.65rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.05rem .4rem;white-space:nowrap}.scenario-tags.svelte-ggy6pw{display:flex;gap:.25rem;flex-shrink:0}.scenario-duration.svelte-ggy6pw{font-size:.75rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;flex-shrink:0}.chevron.svelte-ggy6pw{color:var(--text-muted);flex-shrink:0;transition:transform var(--duration-fast) var(--ease-out)}.chevron.rotated.svelte-ggy6pw{transform:rotate(90deg)}.steps.svelte-ggy6pw{border-top:1px solid var(--border);background:var(--bg-subtle);padding:.5rem 0}.example-header.svelte-ggy6pw{display:flex;align-items:center;gap:.5rem;padding:.625rem 1rem .25rem 1.25rem;color:var(--text-muted);font-size:.72rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase}.example-header.svelte-ggy6pw:not(:first-child){margin-top:.375rem;border-top:1px dashed var(--border)}.example-header.svelte-ggy6pw .scenario-duration:where(.svelte-ggy6pw){margin-left:auto}.step.svelte-ggy6pw{padding:.375rem 1rem .375rem 1.25rem}.step-fail.svelte-ggy6pw{background:color-mix(in srgb,var(--fail-soft) 40%,transparent)}.step-skip.svelte-ggy6pw{opacity:.5}.step-row.svelte-ggy6pw{display:flex;align-items:baseline;gap:.5rem}.step-name.svelte-ggy6pw{flex:1;font-size:.8125rem;color:var(--text);font-family:JetBrains Mono,monospace}.step-duration.svelte-ggy6pw{font-size:.7rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;flex-shrink:0}.step-error.svelte-ggy6pw{margin:.375rem 0 .25rem 1.75rem;padding:.625rem .875rem;background:var(--fail-soft);color:var(--fail);border-radius:var(--radius-sm);font-family:JetBrains Mono,monospace;font-size:.75rem;line-height:1.6;white-space:pre-wrap;word-break:break-word;border-left:2px solid var(--fail)}.step-datatable.svelte-ggy6pw{margin:.375rem 0 .25rem 1.75rem;border-collapse:collapse;font-family:JetBrains Mono,monospace;font-size:.75rem}.step-datatable.svelte-ggy6pw td:where(.svelte-ggy6pw){padding:.35rem .7rem;border:1px solid var(--border);color:var(--text)}.step-datatable-header.svelte-ggy6pw td:where(.svelte-ggy6pw){background:var(--bg-subtle);color:var(--text-muted);font-weight:600}.loading-state.svelte-ggy6pw{display:flex;justify-content:center;padding:4rem 0}.loading-dots.svelte-ggy6pw{display:flex;gap:6px;align-items:center}.loading-dots.svelte-ggy6pw span:where(.svelte-ggy6pw){width:8px;height:8px;border-radius:50%;background:var(--accent);animation:svelte-ggy6pw-dotBeat 1.2s ease-in-out infinite}.loading-dots.svelte-ggy6pw span:where(.svelte-ggy6pw):nth-child(2){animation-delay:.2s}.loading-dots.svelte-ggy6pw span:where(.svelte-ggy6pw):nth-child(3){animation-delay:.4s}@keyframes svelte-ggy6pw-dotBeat{0%,to{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.6)}}.error-state.svelte-ggy6pw{padding:3rem 0;color:var(--fail);text-align:center;font-size:.9375rem}.logs-section.svelte-ggy6pw{margin-bottom:1.25rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;animation:fadeUp .35s var(--ease-out) both}.logs-summary.svelte-ggy6pw{display:flex;align-items:center;gap:.5rem;padding:.875rem 1.25rem;font-size:.875rem;font-weight:500;color:var(--text);cursor:pointer;user-select:none;list-style:none}.logs-summary.svelte-ggy6pw::-webkit-details-marker{display:none}.logs-summary.svelte-ggy6pw:hover{background:var(--bg-subtle)}.log-runner-count.svelte-ggy6pw{margin-left:auto;font-size:.7rem;font-weight:500;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.1rem .5rem}.log-tabs.svelte-ggy6pw{display:flex;gap:0;border-bottom:1px solid var(--border);background:var(--bg-subtle);overflow-x:auto}.log-tab.svelte-ggy6pw{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1rem;font-size:.78rem;font-weight:500;font-family:var(--font-body);color:var(--text-muted);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;transition:color var(--duration-fast)}.log-tab.svelte-ggy6pw:hover{color:var(--text)}.log-tab-active.svelte-ggy6pw{color:var(--text);border-bottom-color:var(--accent)}.logs-body.svelte-ggy6pw{font-family:JetBrains Mono,Fira Code,Cascadia Code,Courier New,monospace;font-size:.775rem;line-height:1.7;background:var(--terminal-bg);color:var(--terminal-text);padding:1rem 1.25rem;max-height:480px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;margin:0;border-top:1px solid var(--border)}.logs-body.svelte-ggy6pw::-webkit-scrollbar{width:4px}.logs-body.svelte-ggy6pw::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.replay-overlay.svelte-ggy6pw{position:fixed;inset:0;background:var(--bg-elevated);display:flex;z-index:500}.replay-modal.svelte-ggy6pw{background:var(--bg-elevated);width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden auto;box-shadow:0 24px 64px #00000080}.replay-modal-header.svelte-ggy6pw{display:flex;align-items:center;justify-content:space-between;padding:.875rem 1.25rem;border-bottom:1px solid var(--border);gap:1rem;flex-shrink:0}.replay-modal-title.svelte-ggy6pw{font-size:.875rem;font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.replay-close.svelte-ggy6pw{background:transparent;border:none;color:var(--text-muted);cursor:pointer;padding:.25rem;display:flex;align-items:center;border-radius:var(--radius-sm);flex-shrink:0;transition:color var(--duration-fast)}.replay-close.svelte-ggy6pw:hover{color:var(--text)}.replay-body.svelte-ggy6pw{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}
@@ -1,6 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- .page-header.svelte-9ix8dg{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-text.svelte-9ix8dg h1:where(.svelte-9ix8dg){font-size:2.5rem;margin-bottom:.25rem}.header-desc.svelte-9ix8dg{font-size:.875rem;color:var(--text-muted)}.header-actions.svelte-9ix8dg{flex-shrink:0;padding-top:.25rem}.tabs.svelte-9ix8dg{display:flex;gap:.125rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border)}.tab.svelte-9ix8dg{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem .625rem;font-family:var(--font-body);font-size:.875rem;font-weight:400;color:var(--text-muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast);margin-bottom:-1px}.tab.svelte-9ix8dg:hover{color:var(--text)}.tab.active.svelte-9ix8dg{color:var(--accent);border-bottom-color:var(--accent);font-weight:500}.tab-count.svelte-9ix8dg{font-size:.7rem;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.05rem .4rem;color:var(--text-muted)}.loading-row.svelte-9ix8dg{font-size:.875rem;color:var(--text-muted);padding:2rem 0}.pagination-row.svelte-9ix8dg{margin-top:1.5rem}.search-bar.svelte-9ix8dg{position:relative;display:flex;align-items:center;margin-bottom:1.25rem}.search-icon.svelte-9ix8dg{position:absolute;left:.75rem;color:var(--text-muted);pointer-events:none;flex-shrink:0}.search-input.svelte-9ix8dg{width:100%;max-width:360px;height:34px;padding:0 2rem 0 2.25rem;font-family:var(--font-body);font-size:.875rem;color:var(--text);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;transition:border-color var(--duration-fast)}.search-input.svelte-9ix8dg::placeholder{color:var(--text-muted)}.search-input.svelte-9ix8dg:focus{border-color:var(--accent)}.search-input.svelte-9ix8dg::-webkit-search-cancel-button{display:none}.search-clear.svelte-9ix8dg{position:absolute;left:calc(360px - 1.75rem);display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:none;border:none;cursor:pointer;color:var(--text-muted);padding:0}.search-clear.svelte-9ix8dg:hover{color:var(--text)}.sort-bar.svelte-9ix8dg{display:flex;align-items:center;gap:.375rem;margin-bottom:1.25rem;flex-wrap:wrap}.sort-label.svelte-9ix8dg{font-size:.75rem;color:var(--text-muted);margin-right:.25rem}.sort-chip.svelte-9ix8dg{display:flex;align-items:center;gap:.25rem;height:28px;padding:0 .625rem;font-family:var(--font-body);font-size:.8125rem;color:var(--text-muted);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast),background var(--duration-fast)}.sort-chip.svelte-9ix8dg:hover{color:var(--text);border-color:var(--accent)}.sort-chip.active.svelte-9ix8dg{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.sort-dir.svelte-9ix8dg{font-size:.7rem;opacity:.8}.search-section.svelte-9ix8dg{margin-bottom:2rem}.search-section-title.svelte-9ix8dg{display:flex;align-items:center;gap:.5rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:.75rem}.case-results.svelte-9ix8dg{display:flex;flex-direction:column;gap:.25rem}.case-result-row.svelte-9ix8dg{display:flex;align-items:center;gap:.625rem;padding:.6rem .875rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);text-decoration:none;color:inherit;transition:border-color var(--duration-fast)}.case-result-row.svelte-9ix8dg:hover{border-color:var(--accent)}.case-result-title.svelte-9ix8dg{font-size:.875rem;font-weight:500;color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.case-result-suite.svelte-9ix8dg{font-size:.75rem;color:var(--text-muted);flex-shrink:0;white-space:nowrap}.suite-grid.svelte-9ix8dg{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.875rem}.card-link.svelte-9ix8dg{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;z-index:0}.suite-card.svelte-9ix8dg{position:relative;display:flex;flex-direction:column;gap:.5rem;background:var(--bg-elevated);border:1px solid var(--border);border-top:3px solid var(--accent);border-radius:var(--radius-md);padding:1rem;color:inherit;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.suite-card.svelte-9ix8dg:hover{border-color:var(--accent);box-shadow:0 2px 8px #0000000f}.suite-card-header.svelte-9ix8dg{display:flex;align-items:center;gap:.5rem}.suite-card-actions.svelte-9ix8dg{position:relative;z-index:1;margin-left:auto;opacity:0;transition:opacity var(--duration-fast)}.suite-card.svelte-9ix8dg:hover .suite-card-actions:where(.svelte-9ix8dg){opacity:1}.suite-name.svelte-9ix8dg{font-size:.9375rem;font-weight:500;color:var(--text)}.suite-desc.svelte-9ix8dg{font-size:.8125rem;color:var(--text-muted);line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.suite-meta.svelte-9ix8dg{display:flex;align-items:center;gap:.75rem;margin-top:.25rem}.meta-item.svelte-9ix8dg{display:flex;align-items:center;gap:.3rem;font-size:.75rem;color:var(--text-muted)}.id-chip.svelte-9ix8dg{font-family:JetBrains Mono,monospace;font-size:.7rem;font-weight:600;color:var(--accent);background:var(--accent-soft);border-radius:4px;padding:.1rem .4rem;letter-spacing:.02em;flex-shrink:0}.id-chip.small.svelte-9ix8dg{font-size:.65rem}.auto-badge.svelte-9ix8dg{font-size:.62rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--pass);background:var(--pass-soft);border-radius:var(--radius-pill);padding:.1rem .4rem;flex-shrink:0}.priority-badge.svelte-9ix8dg{font-size:.68rem;font-weight:500;border-radius:var(--radius-pill);padding:.15rem .5rem;flex-shrink:0}.priority-badge.small.svelte-9ix8dg{font-size:.62rem;padding:.1rem .4rem}.priority-badge.critical.svelte-9ix8dg{background:var(--fail-soft);color:var(--fail)}.priority-badge.high.svelte-9ix8dg{background:var(--warn-soft);color:var(--warn)}.priority-badge.medium.svelte-9ix8dg{background:var(--node-soft);color:var(--node)}.priority-badge.low.svelte-9ix8dg{background:var(--bg-subtle);color:var(--text-muted)}.icon-btn.svelte-9ix8dg{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border:none;border-radius:var(--radius-sm);background:transparent;cursor:pointer;color:var(--text-muted);transition:background var(--duration-fast),color var(--duration-fast)}.icon-btn.danger.svelte-9ix8dg:hover{background:var(--fail-soft);color:var(--fail)}.runs-list.svelte-9ix8dg{display:flex;flex-direction:column;gap:.5rem}.run-row.svelte-9ix8dg{position:relative;display:flex;align-items:center;gap:1rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:.875rem 1rem;color:inherit;transition:border-color var(--duration-fast)}.run-row.svelte-9ix8dg:hover{border-color:var(--accent)}.run-row-main.svelte-9ix8dg{display:flex;align-items:center;gap:.625rem;flex:1;min-width:0}.run-status-dot.svelte-9ix8dg{width:8px;height:8px;border-radius:50%;flex-shrink:0}.run-status-dot.pass.svelte-9ix8dg{background:var(--pass)}.run-status-dot.warn.svelte-9ix8dg{background:var(--warn)}.run-status-dot.muted.svelte-9ix8dg{background:var(--border)}.run-title.svelte-9ix8dg{font-size:.9375rem;font-weight:500;color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.run-count.svelte-9ix8dg{font-size:.75rem;color:var(--text-muted);flex-shrink:0}.run-meta.svelte-9ix8dg{display:flex;align-items:center;gap:.375rem;font-size:.75rem;color:var(--text-muted);flex-shrink:0}.run-status-label.svelte-9ix8dg{font-size:.7rem;font-weight:500;text-transform:capitalize;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.1rem .4rem}.meta-sep.svelte-9ix8dg{color:var(--border)}.run-row-actions.svelte-9ix8dg{position:relative;z-index:1;opacity:0;transition:opacity var(--duration-fast)}.run-row.svelte-9ix8dg:hover .run-row-actions:where(.svelte-9ix8dg){opacity:1}.form-fields.svelte-9ix8dg{display:flex;flex-direction:column;gap:1rem}.field-textarea.svelte-9ix8dg{height:auto;resize:vertical}.form-error.svelte-9ix8dg{font-size:.8125rem;color:var(--fail)}.modal-actions.svelte-9ix8dg{display:flex;gap:.5rem;padding-top:.25rem}@media (max-width: 640px){.page-header.svelte-9ix8dg{flex-direction:column;gap:.75rem}.suite-grid.svelte-9ix8dg{grid-template-columns:1fr}.run-meta.svelte-9ix8dg{display:none}}