@devqubit/ui 0.1.10 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,106 +1,106 @@
1
- import yr, { useState as U, useEffect as We, useContext as Rr, useCallback as me, createContext as wr, useRef as vr, forwardRef as Ve } from "react";
2
- import { useLocation as is, Link as M, useSearchParams as Ce, useParams as Ye, useNavigate as cs, Navigate as ls, createBrowserRouter as os, RouterProvider as ds } from "react-router-dom";
3
- var Se = { exports: {} }, ue = {};
4
- var br;
5
- function us() {
6
- if (br) return ue;
7
- br = 1;
8
- var s = yr, n = /* @__PURE__ */ Symbol.for("react.element"), t = /* @__PURE__ */ Symbol.for("react.fragment"), a = Object.prototype.hasOwnProperty, d = s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, h = { key: !0, ref: !0, __self: !0, __source: !0 };
9
- function f(i, x, o) {
10
- var p, $ = {}, _ = null, G = null;
11
- o !== void 0 && (_ = "" + o), x.key !== void 0 && (_ = "" + x.key), x.ref !== void 0 && (G = x.ref);
12
- for (p in x) a.call(x, p) && !h.hasOwnProperty(p) && ($[p] = x[p]);
13
- if (i && i.defaultProps) for (p in x = i.defaultProps, x) $[p] === void 0 && ($[p] = x[p]);
14
- return { $$typeof: n, type: i, key: _, ref: G, props: $, _owner: d.current };
1
+ import ks, { useState as T, useEffect as je, useContext as Ss, useCallback as _e, createContext as Ps, useRef as _s, forwardRef as Xe } from "react";
2
+ import { useLocation as ur, Link as z, useSearchParams as $e, useParams as Qe, useNavigate as hr, Navigate as xr, createBrowserRouter as mr, RouterProvider as fr } from "react-router-dom";
3
+ var Fe = { exports: {} }, be = {};
4
+ var ws;
5
+ function jr() {
6
+ if (ws) return be;
7
+ ws = 1;
8
+ var r = ks, t = /* @__PURE__ */ Symbol.for("react.element"), n = /* @__PURE__ */ Symbol.for("react.fragment"), a = Object.prototype.hasOwnProperty, u = r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, o = { key: !0, ref: !0, __self: !0, __source: !0 };
9
+ function d(i, f, h) {
10
+ var m, p = {}, _ = null, U = null;
11
+ h !== void 0 && (_ = "" + h), f.key !== void 0 && (_ = "" + f.key), f.ref !== void 0 && (U = f.ref);
12
+ for (m in f) a.call(f, m) && !o.hasOwnProperty(m) && (p[m] = f[m]);
13
+ if (i && i.defaultProps) for (m in f = i.defaultProps, f) p[m] === void 0 && (p[m] = f[m]);
14
+ return { $$typeof: t, type: i, key: _, ref: U, props: p, _owner: u.current };
15
15
  }
16
- return ue.Fragment = t, ue.jsx = f, ue.jsxs = f, ue;
17
- }
18
- var he = {};
19
- var Nr;
20
- function hs() {
21
- return Nr || (Nr = 1, process.env.NODE_ENV !== "production" && (function() {
22
- var s = yr, n = /* @__PURE__ */ Symbol.for("react.element"), t = /* @__PURE__ */ Symbol.for("react.portal"), a = /* @__PURE__ */ Symbol.for("react.fragment"), d = /* @__PURE__ */ Symbol.for("react.strict_mode"), h = /* @__PURE__ */ Symbol.for("react.profiler"), f = /* @__PURE__ */ Symbol.for("react.provider"), i = /* @__PURE__ */ Symbol.for("react.context"), x = /* @__PURE__ */ Symbol.for("react.forward_ref"), o = /* @__PURE__ */ Symbol.for("react.suspense"), p = /* @__PURE__ */ Symbol.for("react.suspense_list"), $ = /* @__PURE__ */ Symbol.for("react.memo"), _ = /* @__PURE__ */ Symbol.for("react.lazy"), G = /* @__PURE__ */ Symbol.for("react.offscreen"), J = Symbol.iterator, ce = "@@iterator";
23
- function ge(r) {
24
- if (r === null || typeof r != "object")
16
+ return be.Fragment = n, be.jsx = d, be.jsxs = d, be;
17
+ }
18
+ var ye = {};
19
+ var Rs;
20
+ function pr() {
21
+ return Rs || (Rs = 1, process.env.NODE_ENV !== "production" && (function() {
22
+ var r = ks, t = /* @__PURE__ */ Symbol.for("react.element"), n = /* @__PURE__ */ Symbol.for("react.portal"), a = /* @__PURE__ */ Symbol.for("react.fragment"), u = /* @__PURE__ */ Symbol.for("react.strict_mode"), o = /* @__PURE__ */ Symbol.for("react.profiler"), d = /* @__PURE__ */ Symbol.for("react.provider"), i = /* @__PURE__ */ Symbol.for("react.context"), f = /* @__PURE__ */ Symbol.for("react.forward_ref"), h = /* @__PURE__ */ Symbol.for("react.suspense"), m = /* @__PURE__ */ Symbol.for("react.suspense_list"), p = /* @__PURE__ */ Symbol.for("react.memo"), _ = /* @__PURE__ */ Symbol.for("react.lazy"), U = /* @__PURE__ */ Symbol.for("react.offscreen"), w = Symbol.iterator, H = "@@iterator";
23
+ function k(s) {
24
+ if (s === null || typeof s != "object")
25
25
  return null;
26
- var l = J && r[J] || r[ce];
26
+ var l = w && s[w] || s[H];
27
27
  return typeof l == "function" ? l : null;
28
28
  }
29
- var X = s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
30
- function C(r) {
29
+ var O = r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
30
+ function S(s) {
31
31
  {
32
- for (var l = arguments.length, u = new Array(l > 1 ? l - 1 : 0), j = 1; j < l; j++)
33
- u[j - 1] = arguments[j];
34
- ve("error", r, u);
32
+ for (var l = arguments.length, x = new Array(l > 1 ? l - 1 : 0), g = 1; g < l; g++)
33
+ x[g - 1] = arguments[g];
34
+ se("error", s, x);
35
35
  }
36
36
  }
37
- function ve(r, l, u) {
37
+ function se(s, l, x) {
38
38
  {
39
- var j = X.ReactDebugCurrentFrame, y = j.getStackAddendum();
40
- y !== "" && (l += "%s", u = u.concat([y]));
41
- var R = u.map(function(N) {
42
- return String(N);
39
+ var g = O.ReactDebugCurrentFrame, E = g.getStackAddendum();
40
+ E !== "" && (l += "%s", x = x.concat([E]));
41
+ var C = x.map(function(R) {
42
+ return String(R);
43
43
  });
44
- R.unshift("Warning: " + l), Function.prototype.apply.call(console[r], console, R);
44
+ C.unshift("Warning: " + l), Function.prototype.apply.call(console[s], console, C);
45
45
  }
46
46
  }
47
- var le = !1, be = !1, De = !1, ke = !1, Ae = !1, w;
48
- w = /* @__PURE__ */ Symbol.for("react.module.reference");
49
- function D(r) {
50
- return !!(typeof r == "string" || typeof r == "function" || r === a || r === h || Ae || r === d || r === o || r === p || ke || r === G || le || be || De || typeof r == "object" && r !== null && (r.$$typeof === _ || r.$$typeof === $ || r.$$typeof === f || r.$$typeof === i || r.$$typeof === x || // This needs to include all possible module reference object
47
+ var te = !1, J = !1, Z = !1, ne = !1, xe = !1, pe;
48
+ pe = /* @__PURE__ */ Symbol.for("react.module.reference");
49
+ function Be(s) {
50
+ return !!(typeof s == "string" || typeof s == "function" || s === a || s === o || xe || s === u || s === h || s === m || ne || s === U || te || J || Z || typeof s == "object" && s !== null && (s.$$typeof === _ || s.$$typeof === p || s.$$typeof === d || s.$$typeof === i || s.$$typeof === f || // This needs to include all possible module reference object
51
51
  // types supported by any Flight configuration anywhere since
52
52
  // we don't know which Flight build this will end up being used
53
53
  // with.
54
- r.$$typeof === w || r.getModuleId !== void 0));
54
+ s.$$typeof === pe || s.getModuleId !== void 0));
55
55
  }
56
- function Ne(r, l, u) {
57
- var j = r.displayName;
58
- if (j)
59
- return j;
60
- var y = l.displayName || l.name || "";
61
- return y !== "" ? u + "(" + y + ")" : u;
56
+ function Ie(s, l, x) {
57
+ var g = s.displayName;
58
+ if (g)
59
+ return g;
60
+ var E = l.displayName || l.name || "";
61
+ return E !== "" ? x + "(" + E + ")" : x;
62
62
  }
63
- function _e(r) {
64
- return r.displayName || "Context";
63
+ function ke(s) {
64
+ return s.displayName || "Context";
65
65
  }
66
- function W(r) {
67
- if (r == null)
66
+ function y(s) {
67
+ if (s == null)
68
68
  return null;
69
- if (typeof r.tag == "number" && C("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), typeof r == "function")
70
- return r.displayName || r.name || null;
71
- if (typeof r == "string")
72
- return r;
73
- switch (r) {
69
+ if (typeof s.tag == "number" && S("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), typeof s == "function")
70
+ return s.displayName || s.name || null;
71
+ if (typeof s == "string")
72
+ return s;
73
+ switch (s) {
74
74
  case a:
75
75
  return "Fragment";
76
- case t:
76
+ case n:
77
77
  return "Portal";
78
- case h:
78
+ case o:
79
79
  return "Profiler";
80
- case d:
80
+ case u:
81
81
  return "StrictMode";
82
- case o:
82
+ case h:
83
83
  return "Suspense";
84
- case p:
84
+ case m:
85
85
  return "SuspenseList";
86
86
  }
87
- if (typeof r == "object")
88
- switch (r.$$typeof) {
87
+ if (typeof s == "object")
88
+ switch (s.$$typeof) {
89
89
  case i:
90
- var l = r;
91
- return _e(l) + ".Consumer";
90
+ var l = s;
91
+ return ke(l) + ".Consumer";
92
+ case d:
93
+ var x = s;
94
+ return ke(x._context) + ".Provider";
92
95
  case f:
93
- var u = r;
94
- return _e(u._context) + ".Provider";
95
- case x:
96
- return Ne(r, r.render, "ForwardRef");
97
- case $:
98
- var j = r.displayName || null;
99
- return j !== null ? j : W(r.type) || "Memo";
96
+ return Ie(s, s.render, "ForwardRef");
97
+ case p:
98
+ var g = s.displayName || null;
99
+ return g !== null ? g : y(s.type) || "Memo";
100
100
  case _: {
101
- var y = r, R = y._payload, N = y._init;
101
+ var E = s, C = E._payload, R = E._init;
102
102
  try {
103
- return W(N(R));
103
+ return y(R(C));
104
104
  } catch {
105
105
  return null;
106
106
  }
@@ -108,999 +108,1052 @@ function hs() {
108
108
  }
109
109
  return null;
110
110
  }
111
- var ee = Object.assign, oe = 0, He, Xe, Qe, Ze, er, rr, sr;
112
- function nr() {
111
+ var P = Object.assign, ce = 0, ge, Se, le, ts, ns, as, is;
112
+ function cs() {
113
113
  }
114
- nr.__reactDisabledLog = !0;
115
- function Ar() {
114
+ cs.__reactDisabledLog = !0;
115
+ function Bs() {
116
116
  {
117
- if (oe === 0) {
118
- He = console.log, Xe = console.info, Qe = console.warn, Ze = console.error, er = console.group, rr = console.groupCollapsed, sr = console.groupEnd;
119
- var r = {
117
+ if (ce === 0) {
118
+ ge = console.log, Se = console.info, le = console.warn, ts = console.error, ns = console.group, as = console.groupCollapsed, is = console.groupEnd;
119
+ var s = {
120
120
  configurable: !0,
121
121
  enumerable: !0,
122
- value: nr,
122
+ value: cs,
123
123
  writable: !0
124
124
  };
125
125
  Object.defineProperties(console, {
126
- info: r,
127
- log: r,
128
- warn: r,
129
- error: r,
130
- group: r,
131
- groupCollapsed: r,
132
- groupEnd: r
126
+ info: s,
127
+ log: s,
128
+ warn: s,
129
+ error: s,
130
+ group: s,
131
+ groupCollapsed: s,
132
+ groupEnd: s
133
133
  });
134
134
  }
135
- oe++;
135
+ ce++;
136
136
  }
137
137
  }
138
- function Or() {
138
+ function Is() {
139
139
  {
140
- if (oe--, oe === 0) {
141
- var r = {
140
+ if (ce--, ce === 0) {
141
+ var s = {
142
142
  configurable: !0,
143
143
  enumerable: !0,
144
144
  writable: !0
145
145
  };
146
146
  Object.defineProperties(console, {
147
- log: ee({}, r, {
148
- value: He
147
+ log: P({}, s, {
148
+ value: ge
149
149
  }),
150
- info: ee({}, r, {
151
- value: Xe
150
+ info: P({}, s, {
151
+ value: Se
152
152
  }),
153
- warn: ee({}, r, {
154
- value: Qe
153
+ warn: P({}, s, {
154
+ value: le
155
155
  }),
156
- error: ee({}, r, {
157
- value: Ze
156
+ error: P({}, s, {
157
+ value: ts
158
158
  }),
159
- group: ee({}, r, {
160
- value: er
159
+ group: P({}, s, {
160
+ value: ns
161
161
  }),
162
- groupCollapsed: ee({}, r, {
163
- value: rr
162
+ groupCollapsed: P({}, s, {
163
+ value: as
164
164
  }),
165
- groupEnd: ee({}, r, {
166
- value: sr
165
+ groupEnd: P({}, s, {
166
+ value: is
167
167
  })
168
168
  });
169
169
  }
170
- oe < 0 && C("disabledDepth fell below zero. This is a bug in React. Please file an issue.");
170
+ ce < 0 && S("disabledDepth fell below zero. This is a bug in React. Please file an issue.");
171
171
  }
172
172
  }
173
- var Oe = X.ReactCurrentDispatcher, Fe;
174
- function ye(r, l, u) {
173
+ var qe = O.ReactCurrentDispatcher, Ue;
174
+ function Pe(s, l, x) {
175
175
  {
176
- if (Fe === void 0)
176
+ if (Ue === void 0)
177
177
  try {
178
178
  throw Error();
179
- } catch (y) {
180
- var j = y.stack.trim().match(/\n( *(at )?)/);
181
- Fe = j && j[1] || "";
179
+ } catch (E) {
180
+ var g = E.stack.trim().match(/\n( *(at )?)/);
181
+ Ue = g && g[1] || "";
182
182
  }
183
183
  return `
184
- ` + Fe + r;
184
+ ` + Ue + s;
185
185
  }
186
186
  }
187
- var $e = !1, Re;
187
+ var Me = !1, Te;
188
188
  {
189
- var Fr = typeof WeakMap == "function" ? WeakMap : Map;
190
- Re = new Fr();
189
+ var qs = typeof WeakMap == "function" ? WeakMap : Map;
190
+ Te = new qs();
191
191
  }
192
- function tr(r, l) {
193
- if (!r || $e)
192
+ function ls(s, l) {
193
+ if (!s || Me)
194
194
  return "";
195
195
  {
196
- var u = Re.get(r);
197
- if (u !== void 0)
198
- return u;
196
+ var x = Te.get(s);
197
+ if (x !== void 0)
198
+ return x;
199
199
  }
200
- var j;
201
- $e = !0;
202
- var y = Error.prepareStackTrace;
200
+ var g;
201
+ Me = !0;
202
+ var E = Error.prepareStackTrace;
203
203
  Error.prepareStackTrace = void 0;
204
- var R;
205
- R = Oe.current, Oe.current = null, Ar();
204
+ var C;
205
+ C = qe.current, qe.current = null, Bs();
206
206
  try {
207
207
  if (l) {
208
- var N = function() {
208
+ var R = function() {
209
209
  throw Error();
210
210
  };
211
- if (Object.defineProperty(N.prototype, "props", {
211
+ if (Object.defineProperty(R.prototype, "props", {
212
212
  set: function() {
213
213
  throw Error();
214
214
  }
215
215
  }), typeof Reflect == "object" && Reflect.construct) {
216
216
  try {
217
- Reflect.construct(N, []);
218
- } catch (L) {
219
- j = L;
217
+ Reflect.construct(R, []);
218
+ } catch (M) {
219
+ g = M;
220
220
  }
221
- Reflect.construct(r, [], N);
221
+ Reflect.construct(s, [], R);
222
222
  } else {
223
223
  try {
224
- N.call();
225
- } catch (L) {
226
- j = L;
224
+ R.call();
225
+ } catch (M) {
226
+ g = M;
227
227
  }
228
- r.call(N.prototype);
228
+ s.call(R.prototype);
229
229
  }
230
230
  } else {
231
231
  try {
232
232
  throw Error();
233
- } catch (L) {
234
- j = L;
233
+ } catch (M) {
234
+ g = M;
235
235
  }
236
- r();
236
+ s();
237
237
  }
238
- } catch (L) {
239
- if (L && j && typeof L.stack == "string") {
240
- for (var g = L.stack.split(`
241
- `), I = j.stack.split(`
242
- `), E = g.length - 1, T = I.length - 1; E >= 1 && T >= 0 && g[E] !== I[T]; )
243
- T--;
244
- for (; E >= 1 && T >= 0; E--, T--)
245
- if (g[E] !== I[T]) {
246
- if (E !== 1 || T !== 1)
238
+ } catch (M) {
239
+ if (M && g && typeof M.stack == "string") {
240
+ for (var v = M.stack.split(`
241
+ `), q = g.stack.split(`
242
+ `), A = v.length - 1, F = q.length - 1; A >= 1 && F >= 0 && v[A] !== q[F]; )
243
+ F--;
244
+ for (; A >= 1 && F >= 0; A--, F--)
245
+ if (v[A] !== q[F]) {
246
+ if (A !== 1 || F !== 1)
247
247
  do
248
- if (E--, T--, T < 0 || g[E] !== I[T]) {
249
- var z = `
250
- ` + g[E].replace(" at new ", " at ");
251
- return r.displayName && z.includes("<anonymous>") && (z = z.replace("<anonymous>", r.displayName)), typeof r == "function" && Re.set(r, z), z;
248
+ if (A--, F--, F < 0 || v[A] !== q[F]) {
249
+ var X = `
250
+ ` + v[A].replace(" at new ", " at ");
251
+ return s.displayName && X.includes("<anonymous>") && (X = X.replace("<anonymous>", s.displayName)), typeof s == "function" && Te.set(s, X), X;
252
252
  }
253
- while (E >= 1 && T >= 0);
253
+ while (A >= 1 && F >= 0);
254
254
  break;
255
255
  }
256
256
  }
257
257
  } finally {
258
- $e = !1, Oe.current = R, Or(), Error.prepareStackTrace = y;
258
+ Me = !1, qe.current = C, Is(), Error.prepareStackTrace = E;
259
259
  }
260
- var ie = r ? r.displayName || r.name : "", re = ie ? ye(ie) : "";
261
- return typeof r == "function" && Re.set(r, re), re;
260
+ var fe = s ? s.displayName || s.name : "", oe = fe ? Pe(fe) : "";
261
+ return typeof s == "function" && Te.set(s, oe), oe;
262
262
  }
263
- function $r(r, l, u) {
264
- return tr(r, !1);
263
+ function Us(s, l, x) {
264
+ return ls(s, !1);
265
265
  }
266
- function Br(r) {
267
- var l = r.prototype;
266
+ function Ms(s) {
267
+ var l = s.prototype;
268
268
  return !!(l && l.isReactComponent);
269
269
  }
270
- function we(r, l, u) {
271
- if (r == null)
270
+ function De(s, l, x) {
271
+ if (s == null)
272
272
  return "";
273
- if (typeof r == "function")
274
- return tr(r, Br(r));
275
- if (typeof r == "string")
276
- return ye(r);
277
- switch (r) {
278
- case o:
279
- return ye("Suspense");
280
- case p:
281
- return ye("SuspenseList");
273
+ if (typeof s == "function")
274
+ return ls(s, Ms(s));
275
+ if (typeof s == "string")
276
+ return Pe(s);
277
+ switch (s) {
278
+ case h:
279
+ return Pe("Suspense");
280
+ case m:
281
+ return Pe("SuspenseList");
282
282
  }
283
- if (typeof r == "object")
284
- switch (r.$$typeof) {
285
- case x:
286
- return $r(r.render);
287
- case $:
288
- return we(r.type, l, u);
283
+ if (typeof s == "object")
284
+ switch (s.$$typeof) {
285
+ case f:
286
+ return Us(s.render);
287
+ case p:
288
+ return De(s.type, l, x);
289
289
  case _: {
290
- var j = r, y = j._payload, R = j._init;
290
+ var g = s, E = g._payload, C = g._init;
291
291
  try {
292
- return we(R(y), l, u);
292
+ return De(C(E), l, x);
293
293
  } catch {
294
294
  }
295
295
  }
296
296
  }
297
297
  return "";
298
298
  }
299
- var de = Object.prototype.hasOwnProperty, ar = {}, ir = X.ReactDebugCurrentFrame;
300
- function Ee(r) {
301
- if (r) {
302
- var l = r._owner, u = we(r.type, r._source, l ? l.type : null);
303
- ir.setExtraStackFrame(u);
299
+ var ve = Object.prototype.hasOwnProperty, os = {}, ds = O.ReactDebugCurrentFrame;
300
+ function Ae(s) {
301
+ if (s) {
302
+ var l = s._owner, x = De(s.type, s._source, l ? l.type : null);
303
+ ds.setExtraStackFrame(x);
304
304
  } else
305
- ir.setExtraStackFrame(null);
305
+ ds.setExtraStackFrame(null);
306
306
  }
307
- function Ir(r, l, u, j, y) {
307
+ function Ws(s, l, x, g, E) {
308
308
  {
309
- var R = Function.call.bind(de);
310
- for (var N in r)
311
- if (R(r, N)) {
312
- var g = void 0;
309
+ var C = Function.call.bind(ve);
310
+ for (var R in s)
311
+ if (C(s, R)) {
312
+ var v = void 0;
313
313
  try {
314
- if (typeof r[N] != "function") {
315
- var I = Error((j || "React class") + ": " + u + " type `" + N + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof r[N] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");
316
- throw I.name = "Invariant Violation", I;
314
+ if (typeof s[R] != "function") {
315
+ var q = Error((g || "React class") + ": " + x + " type `" + R + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof s[R] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");
316
+ throw q.name = "Invariant Violation", q;
317
317
  }
318
- g = r[N](l, N, j, u, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED");
319
- } catch (E) {
320
- g = E;
318
+ v = s[R](l, R, g, x, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED");
319
+ } catch (A) {
320
+ v = A;
321
321
  }
322
- g && !(g instanceof Error) && (Ee(y), C("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", j || "React class", u, N, typeof g), Ee(null)), g instanceof Error && !(g.message in ar) && (ar[g.message] = !0, Ee(y), C("Failed %s type: %s", u, g.message), Ee(null));
322
+ v && !(v instanceof Error) && (Ae(E), S("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", g || "React class", x, R, typeof v), Ae(null)), v instanceof Error && !(v.message in os) && (os[v.message] = !0, Ae(E), S("Failed %s type: %s", x, v.message), Ae(null));
323
323
  }
324
324
  }
325
325
  }
326
- var Lr = Array.isArray;
327
- function Be(r) {
328
- return Lr(r);
326
+ var Gs = Array.isArray;
327
+ function We(s) {
328
+ return Gs(s);
329
329
  }
330
- function Ur(r) {
330
+ function Vs(s) {
331
331
  {
332
- var l = typeof Symbol == "function" && Symbol.toStringTag, u = l && r[Symbol.toStringTag] || r.constructor.name || "Object";
333
- return u;
332
+ var l = typeof Symbol == "function" && Symbol.toStringTag, x = l && s[Symbol.toStringTag] || s.constructor.name || "Object";
333
+ return x;
334
334
  }
335
335
  }
336
- function Mr(r) {
336
+ function zs(s) {
337
337
  try {
338
- return cr(r), !1;
338
+ return us(s), !1;
339
339
  } catch {
340
340
  return !0;
341
341
  }
342
342
  }
343
- function cr(r) {
344
- return "" + r;
343
+ function us(s) {
344
+ return "" + s;
345
345
  }
346
- function lr(r) {
347
- if (Mr(r))
348
- return C("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", Ur(r)), cr(r);
346
+ function hs(s) {
347
+ if (zs(s))
348
+ return S("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", Vs(s)), us(s);
349
349
  }
350
- var or = X.ReactCurrentOwner, qr = {
350
+ var xs = O.ReactCurrentOwner, Ys = {
351
351
  key: !0,
352
352
  ref: !0,
353
353
  __self: !0,
354
354
  __source: !0
355
- }, dr, ur;
356
- function Gr(r) {
357
- if (de.call(r, "ref")) {
358
- var l = Object.getOwnPropertyDescriptor(r, "ref").get;
355
+ }, ms, fs;
356
+ function Ks(s) {
357
+ if (ve.call(s, "ref")) {
358
+ var l = Object.getOwnPropertyDescriptor(s, "ref").get;
359
359
  if (l && l.isReactWarning)
360
360
  return !1;
361
361
  }
362
- return r.ref !== void 0;
362
+ return s.ref !== void 0;
363
363
  }
364
- function Wr(r) {
365
- if (de.call(r, "key")) {
366
- var l = Object.getOwnPropertyDescriptor(r, "key").get;
364
+ function Hs(s) {
365
+ if (ve.call(s, "key")) {
366
+ var l = Object.getOwnPropertyDescriptor(s, "key").get;
367
367
  if (l && l.isReactWarning)
368
368
  return !1;
369
369
  }
370
- return r.key !== void 0;
370
+ return s.key !== void 0;
371
371
  }
372
- function Vr(r, l) {
373
- typeof r.ref == "string" && or.current;
372
+ function Js(s, l) {
373
+ typeof s.ref == "string" && xs.current;
374
374
  }
375
- function Yr(r, l) {
375
+ function Xs(s, l) {
376
376
  {
377
- var u = function() {
378
- dr || (dr = !0, C("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", l));
377
+ var x = function() {
378
+ ms || (ms = !0, S("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", l));
379
379
  };
380
- u.isReactWarning = !0, Object.defineProperty(r, "key", {
381
- get: u,
380
+ x.isReactWarning = !0, Object.defineProperty(s, "key", {
381
+ get: x,
382
382
  configurable: !0
383
383
  });
384
384
  }
385
385
  }
386
- function zr(r, l) {
386
+ function Qs(s, l) {
387
387
  {
388
- var u = function() {
389
- ur || (ur = !0, C("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", l));
388
+ var x = function() {
389
+ fs || (fs = !0, S("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", l));
390
390
  };
391
- u.isReactWarning = !0, Object.defineProperty(r, "ref", {
392
- get: u,
391
+ x.isReactWarning = !0, Object.defineProperty(s, "ref", {
392
+ get: x,
393
393
  configurable: !0
394
394
  });
395
395
  }
396
396
  }
397
- var Kr = function(r, l, u, j, y, R, N) {
398
- var g = {
397
+ var Zs = function(s, l, x, g, E, C, R) {
398
+ var v = {
399
399
  // This tag allows us to uniquely identify this as a React Element
400
- $$typeof: n,
400
+ $$typeof: t,
401
401
  // Built-in properties that belong on the element
402
- type: r,
402
+ type: s,
403
403
  key: l,
404
- ref: u,
405
- props: N,
404
+ ref: x,
405
+ props: R,
406
406
  // Record the component responsible for creating this element.
407
- _owner: R
407
+ _owner: C
408
408
  };
409
- return g._store = {}, Object.defineProperty(g._store, "validated", {
409
+ return v._store = {}, Object.defineProperty(v._store, "validated", {
410
410
  configurable: !1,
411
411
  enumerable: !1,
412
412
  writable: !0,
413
413
  value: !1
414
- }), Object.defineProperty(g, "_self", {
414
+ }), Object.defineProperty(v, "_self", {
415
415
  configurable: !1,
416
416
  enumerable: !1,
417
417
  writable: !1,
418
- value: j
419
- }), Object.defineProperty(g, "_source", {
418
+ value: g
419
+ }), Object.defineProperty(v, "_source", {
420
420
  configurable: !1,
421
421
  enumerable: !1,
422
422
  writable: !1,
423
- value: y
424
- }), Object.freeze && (Object.freeze(g.props), Object.freeze(g)), g;
423
+ value: E
424
+ }), Object.freeze && (Object.freeze(v.props), Object.freeze(v)), v;
425
425
  };
426
- function Jr(r, l, u, j, y) {
426
+ function er(s, l, x, g, E) {
427
427
  {
428
- var R, N = {}, g = null, I = null;
429
- u !== void 0 && (lr(u), g = "" + u), Wr(l) && (lr(l.key), g = "" + l.key), Gr(l) && (I = l.ref, Vr(l, y));
430
- for (R in l)
431
- de.call(l, R) && !qr.hasOwnProperty(R) && (N[R] = l[R]);
432
- if (r && r.defaultProps) {
433
- var E = r.defaultProps;
434
- for (R in E)
435
- N[R] === void 0 && (N[R] = E[R]);
428
+ var C, R = {}, v = null, q = null;
429
+ x !== void 0 && (hs(x), v = "" + x), Hs(l) && (hs(l.key), v = "" + l.key), Ks(l) && (q = l.ref, Js(l, E));
430
+ for (C in l)
431
+ ve.call(l, C) && !Ys.hasOwnProperty(C) && (R[C] = l[C]);
432
+ if (s && s.defaultProps) {
433
+ var A = s.defaultProps;
434
+ for (C in A)
435
+ R[C] === void 0 && (R[C] = A[C]);
436
436
  }
437
- if (g || I) {
438
- var T = typeof r == "function" ? r.displayName || r.name || "Unknown" : r;
439
- g && Yr(N, T), I && zr(N, T);
437
+ if (v || q) {
438
+ var F = typeof s == "function" ? s.displayName || s.name || "Unknown" : s;
439
+ v && Xs(R, F), q && Qs(R, F);
440
440
  }
441
- return Kr(r, g, I, y, j, or.current, N);
441
+ return Zs(s, v, q, E, g, xs.current, R);
442
442
  }
443
443
  }
444
- var Ie = X.ReactCurrentOwner, hr = X.ReactDebugCurrentFrame;
445
- function ae(r) {
446
- if (r) {
447
- var l = r._owner, u = we(r.type, r._source, l ? l.type : null);
448
- hr.setExtraStackFrame(u);
444
+ var Ge = O.ReactCurrentOwner, js = O.ReactDebugCurrentFrame;
445
+ function me(s) {
446
+ if (s) {
447
+ var l = s._owner, x = De(s.type, s._source, l ? l.type : null);
448
+ js.setExtraStackFrame(x);
449
449
  } else
450
- hr.setExtraStackFrame(null);
450
+ js.setExtraStackFrame(null);
451
451
  }
452
- var Le;
453
- Le = !1;
454
- function Ue(r) {
455
- return typeof r == "object" && r !== null && r.$$typeof === n;
452
+ var Ve;
453
+ Ve = !1;
454
+ function ze(s) {
455
+ return typeof s == "object" && s !== null && s.$$typeof === t;
456
456
  }
457
- function xr() {
457
+ function ps() {
458
458
  {
459
- if (Ie.current) {
460
- var r = W(Ie.current.type);
461
- if (r)
459
+ if (Ge.current) {
460
+ var s = y(Ge.current.type);
461
+ if (s)
462
462
  return `
463
463
 
464
- Check the render method of \`` + r + "`.";
464
+ Check the render method of \`` + s + "`.";
465
465
  }
466
466
  return "";
467
467
  }
468
468
  }
469
- function Hr(r) {
469
+ function sr(s) {
470
470
  return "";
471
471
  }
472
- var mr = {};
473
- function Xr(r) {
472
+ var gs = {};
473
+ function rr(s) {
474
474
  {
475
- var l = xr();
475
+ var l = ps();
476
476
  if (!l) {
477
- var u = typeof r == "string" ? r : r.displayName || r.name;
478
- u && (l = `
477
+ var x = typeof s == "string" ? s : s.displayName || s.name;
478
+ x && (l = `
479
479
 
480
- Check the top-level render call using <` + u + ">.");
480
+ Check the top-level render call using <` + x + ">.");
481
481
  }
482
482
  return l;
483
483
  }
484
484
  }
485
- function fr(r, l) {
485
+ function vs(s, l) {
486
486
  {
487
- if (!r._store || r._store.validated || r.key != null)
487
+ if (!s._store || s._store.validated || s.key != null)
488
488
  return;
489
- r._store.validated = !0;
490
- var u = Xr(l);
491
- if (mr[u])
489
+ s._store.validated = !0;
490
+ var x = rr(l);
491
+ if (gs[x])
492
492
  return;
493
- mr[u] = !0;
494
- var j = "";
495
- r && r._owner && r._owner !== Ie.current && (j = " It was passed a child from " + W(r._owner.type) + "."), ae(r), C('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', u, j), ae(null);
493
+ gs[x] = !0;
494
+ var g = "";
495
+ s && s._owner && s._owner !== Ge.current && (g = " It was passed a child from " + y(s._owner.type) + "."), me(s), S('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', x, g), me(null);
496
496
  }
497
497
  }
498
- function jr(r, l) {
498
+ function bs(s, l) {
499
499
  {
500
- if (typeof r != "object")
500
+ if (typeof s != "object")
501
501
  return;
502
- if (Be(r))
503
- for (var u = 0; u < r.length; u++) {
504
- var j = r[u];
505
- Ue(j) && fr(j, l);
502
+ if (We(s))
503
+ for (var x = 0; x < s.length; x++) {
504
+ var g = s[x];
505
+ ze(g) && vs(g, l);
506
506
  }
507
- else if (Ue(r))
508
- r._store && (r._store.validated = !0);
509
- else if (r) {
510
- var y = ge(r);
511
- if (typeof y == "function" && y !== r.entries)
512
- for (var R = y.call(r), N; !(N = R.next()).done; )
513
- Ue(N.value) && fr(N.value, l);
507
+ else if (ze(s))
508
+ s._store && (s._store.validated = !0);
509
+ else if (s) {
510
+ var E = k(s);
511
+ if (typeof E == "function" && E !== s.entries)
512
+ for (var C = E.call(s), R; !(R = C.next()).done; )
513
+ ze(R.value) && vs(R.value, l);
514
514
  }
515
515
  }
516
516
  }
517
- function Qr(r) {
517
+ function tr(s) {
518
518
  {
519
- var l = r.type;
519
+ var l = s.type;
520
520
  if (l == null || typeof l == "string")
521
521
  return;
522
- var u;
522
+ var x;
523
523
  if (typeof l == "function")
524
- u = l.propTypes;
525
- else if (typeof l == "object" && (l.$$typeof === x || // Note: Memo only checks outer props here.
524
+ x = l.propTypes;
525
+ else if (typeof l == "object" && (l.$$typeof === f || // Note: Memo only checks outer props here.
526
526
  // Inner props are checked in the reconciler.
527
- l.$$typeof === $))
528
- u = l.propTypes;
527
+ l.$$typeof === p))
528
+ x = l.propTypes;
529
529
  else
530
530
  return;
531
- if (u) {
532
- var j = W(l);
533
- Ir(u, r.props, "prop", j, r);
534
- } else if (l.PropTypes !== void 0 && !Le) {
535
- Le = !0;
536
- var y = W(l);
537
- C("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", y || "Unknown");
531
+ if (x) {
532
+ var g = y(l);
533
+ Ws(x, s.props, "prop", g, s);
534
+ } else if (l.PropTypes !== void 0 && !Ve) {
535
+ Ve = !0;
536
+ var E = y(l);
537
+ S("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", E || "Unknown");
538
538
  }
539
- typeof l.getDefaultProps == "function" && !l.getDefaultProps.isReactClassApproved && C("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.");
539
+ typeof l.getDefaultProps == "function" && !l.getDefaultProps.isReactClassApproved && S("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.");
540
540
  }
541
541
  }
542
- function Zr(r) {
542
+ function nr(s) {
543
543
  {
544
- for (var l = Object.keys(r.props), u = 0; u < l.length; u++) {
545
- var j = l[u];
546
- if (j !== "children" && j !== "key") {
547
- ae(r), C("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", j), ae(null);
544
+ for (var l = Object.keys(s.props), x = 0; x < l.length; x++) {
545
+ var g = l[x];
546
+ if (g !== "children" && g !== "key") {
547
+ me(s), S("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", g), me(null);
548
548
  break;
549
549
  }
550
550
  }
551
- r.ref !== null && (ae(r), C("Invalid attribute `ref` supplied to `React.Fragment`."), ae(null));
551
+ s.ref !== null && (me(s), S("Invalid attribute `ref` supplied to `React.Fragment`."), me(null));
552
552
  }
553
553
  }
554
- var pr = {};
555
- function gr(r, l, u, j, y, R) {
554
+ var ys = {};
555
+ function Ns(s, l, x, g, E, C) {
556
556
  {
557
- var N = D(r);
558
- if (!N) {
559
- var g = "";
560
- (r === void 0 || typeof r == "object" && r !== null && Object.keys(r).length === 0) && (g += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");
561
- var I = Hr();
562
- I ? g += I : g += xr();
563
- var E;
564
- r === null ? E = "null" : Be(r) ? E = "array" : r !== void 0 && r.$$typeof === n ? (E = "<" + (W(r.type) || "Unknown") + " />", g = " Did you accidentally export a JSX literal instead of a component?") : E = typeof r, C("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", E, g);
557
+ var R = Be(s);
558
+ if (!R) {
559
+ var v = "";
560
+ (s === void 0 || typeof s == "object" && s !== null && Object.keys(s).length === 0) && (v += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");
561
+ var q = sr();
562
+ q ? v += q : v += ps();
563
+ var A;
564
+ s === null ? A = "null" : We(s) ? A = "array" : s !== void 0 && s.$$typeof === t ? (A = "<" + (y(s.type) || "Unknown") + " />", v = " Did you accidentally export a JSX literal instead of a component?") : A = typeof s, S("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", A, v);
565
565
  }
566
- var T = Jr(r, l, u, y, R);
567
- if (T == null)
568
- return T;
569
- if (N) {
570
- var z = l.children;
571
- if (z !== void 0)
572
- if (j)
573
- if (Be(z)) {
574
- for (var ie = 0; ie < z.length; ie++)
575
- jr(z[ie], r);
576
- Object.freeze && Object.freeze(z);
566
+ var F = er(s, l, x, E, C);
567
+ if (F == null)
568
+ return F;
569
+ if (R) {
570
+ var X = l.children;
571
+ if (X !== void 0)
572
+ if (g)
573
+ if (We(X)) {
574
+ for (var fe = 0; fe < X.length; fe++)
575
+ bs(X[fe], s);
576
+ Object.freeze && Object.freeze(X);
577
577
  } else
578
- C("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
578
+ S("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
579
579
  else
580
- jr(z, r);
580
+ bs(X, s);
581
581
  }
582
- if (de.call(l, "key")) {
583
- var re = W(r), L = Object.keys(l).filter(function(as) {
584
- return as !== "key";
585
- }), Me = L.length > 0 ? "{key: someKey, " + L.join(": ..., ") + ": ...}" : "{key: someKey}";
586
- if (!pr[re + Me]) {
587
- var ts = L.length > 0 ? "{" + L.join(": ..., ") + ": ...}" : "{}";
588
- C(`A props object containing a "key" prop is being spread into JSX:
582
+ if (ve.call(l, "key")) {
583
+ var oe = y(s), M = Object.keys(l).filter(function(dr) {
584
+ return dr !== "key";
585
+ }), Ye = M.length > 0 ? "{key: someKey, " + M.join(": ..., ") + ": ...}" : "{key: someKey}";
586
+ if (!ys[oe + Ye]) {
587
+ var or = M.length > 0 ? "{" + M.join(": ..., ") + ": ...}" : "{}";
588
+ S(`A props object containing a "key" prop is being spread into JSX:
589
589
  let props = %s;
590
590
  <%s {...props} />
591
591
  React keys must be passed directly to JSX without using spread:
592
592
  let props = %s;
593
- <%s key={someKey} {...props} />`, Me, re, ts, re), pr[re + Me] = !0;
593
+ <%s key={someKey} {...props} />`, Ye, oe, or, oe), ys[oe + Ye] = !0;
594
594
  }
595
595
  }
596
- return r === a ? Zr(T) : Qr(T), T;
596
+ return s === a ? nr(F) : tr(F), F;
597
597
  }
598
598
  }
599
- function es(r, l, u) {
600
- return gr(r, l, u, !0);
599
+ function ar(s, l, x) {
600
+ return Ns(s, l, x, !0);
601
601
  }
602
- function rs(r, l, u) {
603
- return gr(r, l, u, !1);
602
+ function ir(s, l, x) {
603
+ return Ns(s, l, x, !1);
604
604
  }
605
- var ss = rs, ns = es;
606
- he.Fragment = a, he.jsx = ss, he.jsxs = ns;
607
- })()), he;
608
- }
609
- var _r;
610
- function xs() {
611
- return _r || (_r = 1, process.env.NODE_ENV === "production" ? Se.exports = us() : Se.exports = hs()), Se.exports;
612
- }
613
- var e = xs();
614
- class fe extends Error {
615
- constructor(n, t) {
616
- super(t), this.status = n, this.name = "ApiError";
605
+ var cr = ir, lr = ar;
606
+ ye.Fragment = a, ye.jsx = cr, ye.jsxs = lr;
607
+ })()), ye;
608
+ }
609
+ var Es;
610
+ function gr() {
611
+ return Es || (Es = 1, process.env.NODE_ENV === "production" ? Fe.exports = jr() : Fe.exports = pr()), Fe.exports;
612
+ }
613
+ var e = gr();
614
+ class we extends Error {
615
+ constructor(t, n) {
616
+ super(n), this.status = t, this.name = "ApiError";
617
617
  }
618
618
  }
619
- class ms {
619
+ class vr {
620
620
  baseUrl;
621
621
  headers;
622
- constructor(n = {}) {
623
- this.baseUrl = n.baseUrl ?? "", this.headers = {
622
+ constructor(t = {}) {
623
+ this.baseUrl = t.baseUrl ?? "", this.headers = {
624
624
  "Content-Type": "application/json",
625
- ...n.headers
625
+ ...t.headers
626
626
  };
627
627
  }
628
- async request(n, t, a = {}) {
629
- let d = `${this.baseUrl}${t}`;
628
+ async request(t, n, a = {}) {
629
+ let u = `${this.baseUrl}${n}`;
630
630
  if (a.params) {
631
- const f = new URLSearchParams();
632
- Object.entries(a.params).forEach(([x, o]) => {
633
- o != null && o !== "" && f.set(x, String(o));
631
+ const d = new URLSearchParams();
632
+ Object.entries(a.params).forEach(([f, h]) => {
633
+ h != null && h !== "" && d.set(f, String(h));
634
634
  });
635
- const i = f.toString();
636
- i && (d += `?${i}`);
635
+ const i = d.toString();
636
+ i && (u += `?${i}`);
637
637
  }
638
- const h = await fetch(d, {
639
- method: n,
638
+ const o = await fetch(u, {
639
+ method: t,
640
640
  headers: this.headers,
641
641
  body: a.body ? JSON.stringify(a.body) : void 0
642
642
  });
643
- if (!h.ok) {
644
- const f = await h.json().catch(() => ({ detail: "Unknown error" }));
645
- throw new fe(h.status, f.detail || h.statusText);
643
+ if (!o.ok) {
644
+ const d = await o.json().catch(() => ({ detail: "Unknown error" }));
645
+ throw new we(o.status, d.detail || o.statusText);
646
646
  }
647
- if (!(h.status === 204 || h.headers.get("content-length") === "0"))
648
- return h.json();
647
+ if (!(o.status === 204 || o.headers.get("content-length") === "0"))
648
+ return o.json();
649
649
  }
650
650
  async getCapabilities() {
651
651
  return this.request("GET", "/api/v1/capabilities");
652
652
  }
653
- async listRuns(n) {
654
- return this.request("GET", "/api/runs", { params: n });
653
+ async listRuns(t) {
654
+ return this.request("GET", "/api/runs", { params: t });
655
655
  }
656
- async getRun(n) {
657
- return this.request("GET", `/api/runs/${n}`);
656
+ async getRun(t) {
657
+ return this.request("GET", `/api/runs/${t}`);
658
658
  }
659
- async deleteRun(n) {
660
- await this.request("DELETE", `/api/runs/${n}`);
659
+ async deleteRun(t) {
660
+ await this.request("DELETE", `/api/runs/${t}`);
661
661
  }
662
- async setBaseline(n, t) {
663
- return this.request("POST", `/api/projects/${n}/baseline/${t}`, {
662
+ async setBaseline(t, n) {
663
+ return this.request("POST", `/api/projects/${t}/baseline/${n}`, {
664
664
  params: { redirect: "false" }
665
665
  });
666
666
  }
667
- async listProjects(n) {
668
- return this.request("GET", "/api/projects", { params: n });
667
+ async listProjects(t) {
668
+ return this.request("GET", "/api/projects", { params: t });
669
669
  }
670
- async listGroups(n) {
671
- return this.request("GET", "/api/groups", { params: n });
670
+ async listGroups(t) {
671
+ return this.request("GET", "/api/groups", { params: t });
672
672
  }
673
- async getGroup(n) {
674
- return this.request("GET", `/api/groups/${n}`);
673
+ async getGroup(t) {
674
+ return this.request("GET", `/api/groups/${t}`);
675
675
  }
676
- async getDiff(n, t) {
676
+ async getDiff(t, n) {
677
677
  return this.request("GET", "/api/diff", {
678
- params: { a: n, b: t }
678
+ params: { a: t, b: n }
679
679
  });
680
680
  }
681
- async getArtifact(n, t) {
682
- return this.request("GET", `/api/runs/${n}/artifacts/${t}`);
681
+ async getArtifact(t, n) {
682
+ return this.request("GET", `/api/runs/${t}/artifacts/${n}`);
683
+ }
684
+ getArtifactDownloadUrl(t, n) {
685
+ return `${this.baseUrl}/api/runs/${t}/artifacts/${n}/raw`;
686
+ }
687
+ async createExport(t) {
688
+ return this.request("POST", `/api/runs/${t}/export`);
683
689
  }
684
- getArtifactDownloadUrl(n, t) {
685
- return `${this.baseUrl}/api/runs/${n}/artifacts/${t}/raw`;
690
+ async getExportInfo(t) {
691
+ return this.request("GET", `/api/runs/${t}/export/info`);
692
+ }
693
+ getExportDownloadUrl(t) {
694
+ return `${this.baseUrl}/api/runs/${t}/export/download`;
686
695
  }
687
696
  }
688
- const fs = new ms(), Er = wr(null);
689
- function js({
690
- children: s,
691
- api: n = fs,
692
- initialWorkspace: t = null
697
+ const br = new vr(), Ts = Ps(null);
698
+ function yr({
699
+ children: r,
700
+ api: t = br,
701
+ initialWorkspace: n = null
693
702
  }) {
694
- const [a, d] = U(null), [h, f] = U(t);
695
- return We(() => {
696
- n.getCapabilities().then(d).catch(console.error);
697
- }, [n]), /* @__PURE__ */ e.jsx(Er.Provider, { value: { api: n, capabilities: a, currentWorkspace: h, setCurrentWorkspace: f }, children: s });
698
- }
699
- function Y() {
700
- const s = Rr(Er);
701
- if (!s) throw new Error("useApp must be used within AppProvider");
702
- return s;
703
- }
704
- function ne(s, n = []) {
705
- const [t, a] = U({
703
+ const [a, u] = T(null), [o, d] = T(n);
704
+ return je(() => {
705
+ t.getCapabilities().then(u).catch(console.error);
706
+ }, [t]), /* @__PURE__ */ e.jsx(Ts.Provider, { value: { api: t, capabilities: a, currentWorkspace: o, setCurrentWorkspace: d }, children: r });
707
+ }
708
+ function K() {
709
+ const r = Ss(Ts);
710
+ if (!r) throw new Error("useApp must be used within AppProvider");
711
+ return r;
712
+ }
713
+ function ue(r, t = []) {
714
+ const [n, a] = T({
706
715
  data: null,
707
716
  loading: !0,
708
717
  error: null
709
- }), d = vr(!0), h = vr(s);
710
- h.current = s;
711
- const f = me(async () => {
718
+ }), u = _s(!0), o = _s(r);
719
+ o.current = r;
720
+ const d = _e(async () => {
712
721
  a((i) => ({ ...i, loading: !0, error: null }));
713
722
  try {
714
- const i = await h.current();
715
- d.current && a({ data: i, loading: !1, error: null });
723
+ const i = await o.current();
724
+ u.current && a({ data: i, loading: !1, error: null });
716
725
  } catch (i) {
717
- d.current && a({
726
+ u.current && a({
718
727
  data: null,
719
728
  loading: !1,
720
- error: i instanceof fe ? i : new fe(500, String(i))
729
+ error: i instanceof we ? i : new we(500, String(i))
721
730
  });
722
731
  }
723
732
  }, []);
724
- return We(() => (d.current = !0, f(), () => {
725
- d.current = !1;
726
- }), n), { ...t, refetch: f };
727
- }
728
- function Sr(s) {
729
- const { api: n, currentWorkspace: t } = Y();
730
- return ne(
731
- () => n.listRuns({ ...s, workspace: t?.id }),
732
- [n, t?.id, s?.project, s?.status, s?.q, s?.limit]
733
+ return je(() => (u.current = !0, d(), () => {
734
+ u.current = !1;
735
+ }), t), { ...n, refetch: d };
736
+ }
737
+ function Ds(r) {
738
+ const { api: t, currentWorkspace: n } = K();
739
+ return ue(
740
+ () => t.listRuns({ ...r, workspace: n?.id }),
741
+ [t, n?.id, r?.project, r?.status, r?.q, r?.limit]
733
742
  );
734
743
  }
735
- function Pr(s) {
736
- const { api: n } = Y();
737
- return ne(
744
+ function As(r) {
745
+ const { api: t } = K();
746
+ return ue(
738
747
  async () => {
739
- const { run: t } = await n.getRun(s);
740
- return t;
748
+ const { run: n } = await t.getRun(r);
749
+ return n;
741
750
  },
742
- [n, s]
751
+ [t, r]
743
752
  );
744
753
  }
745
- function ze() {
746
- const { api: s, currentWorkspace: n } = Y();
747
- return ne(
754
+ function Le() {
755
+ const { api: r, currentWorkspace: t } = K();
756
+ return ue(
748
757
  async () => {
749
- const { projects: t } = await s.listProjects({ workspace: n?.id });
750
- return t;
758
+ const { projects: n } = await r.listProjects({ workspace: t?.id });
759
+ return n;
751
760
  },
752
- [s, n?.id]
761
+ [r, t?.id]
753
762
  );
754
763
  }
755
- function ps(s) {
756
- const { api: n, currentWorkspace: t } = Y();
757
- return ne(
764
+ function Nr(r) {
765
+ const { api: t, currentWorkspace: n } = K();
766
+ return ue(
758
767
  async () => {
759
- const { groups: a } = await n.listGroups({ ...s, workspace: t?.id });
768
+ const { groups: a } = await t.listGroups({ ...r, workspace: n?.id });
760
769
  return a;
761
770
  },
762
- [n, t?.id, s?.project]
771
+ [t, n?.id, r?.project]
763
772
  );
764
773
  }
765
- function gs(s) {
766
- const { api: n } = Y();
767
- return ne(
768
- () => n.getGroup(s),
769
- [n, s]
774
+ function _r(r) {
775
+ const { api: t } = K();
776
+ return ue(
777
+ () => t.getGroup(r),
778
+ [t, r]
770
779
  );
771
780
  }
772
- function vs(s, n) {
773
- const { api: t } = Y();
774
- return ne(
775
- () => t.getDiff(s, n),
776
- [t, s, n]
781
+ function wr(r, t) {
782
+ const { api: n } = K();
783
+ return ue(
784
+ () => n.getDiff(r, t),
785
+ [n, r, t]
777
786
  );
778
787
  }
779
- function bs(s, n) {
780
- const { api: t } = Y();
781
- return ne(
782
- () => t.getArtifact(s, n),
783
- [t, s, n]
788
+ function Rr(r, t) {
789
+ const { api: n } = K();
790
+ return ue(
791
+ () => n.getArtifact(r, t),
792
+ [n, r, t]
784
793
  );
785
794
  }
786
- function je(s) {
787
- const [n, t] = U(!1), [a, d] = U(null);
788
- return { mutate: me(async (...f) => {
789
- t(!0), d(null);
795
+ function Re(r) {
796
+ const [t, n] = T(!1), [a, u] = T(null);
797
+ return { mutate: _e(async (...d) => {
798
+ n(!0), u(null);
790
799
  try {
791
- return await s(...f);
800
+ return await r(...d);
792
801
  } catch (i) {
793
- const x = i instanceof fe ? i : new fe(500, String(i));
794
- throw d(x), x;
802
+ const f = i instanceof we ? i : new we(500, String(i));
803
+ throw u(f), f;
795
804
  } finally {
796
- t(!1);
805
+ n(!1);
797
806
  }
798
- }, [s]), loading: n, error: a };
807
+ }, [r]), loading: t, error: a };
799
808
  }
800
- function K(s) {
801
- return s?.slice(0, 8) ?? "";
809
+ function Q(r) {
810
+ return r?.slice(0, 8) ?? "";
802
811
  }
803
- function qe(s) {
804
- return s?.slice(0, 12) ?? "N/A";
812
+ function He(r) {
813
+ return r?.slice(0, 12) ?? "N/A";
805
814
  }
806
- function Te(s) {
807
- const n = new Date(s), a = Math.floor(((/* @__PURE__ */ new Date()).getTime() - n.getTime()) / 1e3);
815
+ function Ze(r) {
816
+ const t = new Date(r), a = Math.floor(((/* @__PURE__ */ new Date()).getTime() - t.getTime()) / 1e3);
808
817
  if (a < 60) return "just now";
809
818
  if (a < 3600) {
810
- const h = Math.floor(a / 60);
811
- return `${h} minute${h !== 1 ? "s" : ""} ago`;
819
+ const o = Math.floor(a / 60);
820
+ return `${o} minute${o !== 1 ? "s" : ""} ago`;
812
821
  }
813
822
  if (a < 86400) {
814
- const h = Math.floor(a / 3600);
815
- return `${h} hour${h !== 1 ? "s" : ""} ago`;
823
+ const o = Math.floor(a / 3600);
824
+ return `${o} hour${o !== 1 ? "s" : ""} ago`;
816
825
  }
817
826
  if (a < 2592e3) {
818
- const h = Math.floor(a / 86400);
819
- return `${h} day${h !== 1 ? "s" : ""} ago`;
827
+ const o = Math.floor(a / 86400);
828
+ return `${o} day${o !== 1 ? "s" : ""} ago`;
820
829
  }
821
830
  if (a < 31536e3) {
822
- const h = Math.floor(a / 2592e3);
823
- return `${h} month${h !== 1 ? "s" : ""} ago`;
831
+ const o = Math.floor(a / 2592e3);
832
+ return `${o} month${o !== 1 ? "s" : ""} ago`;
824
833
  }
825
- const d = Math.floor(a / 31536e3);
826
- return `${d} year${d !== 1 ? "s" : ""} ago`;
834
+ const u = Math.floor(a / 31536e3);
835
+ return `${u} year${u !== 1 ? "s" : ""} ago`;
827
836
  }
828
- function Ns(s, n = 6) {
829
- return typeof s != "number" || isNaN(s) ? String(s) : Number(s.toPrecision(n)).toString();
837
+ function Er(r, t = 6) {
838
+ return typeof r != "number" || isNaN(r) ? String(r) : Number(r.toPrecision(t)).toString();
830
839
  }
831
- function Pe(s) {
832
- return s < 1024 ? `${s} bytes` : s < 1048576 ? `${(s / 1024).toFixed(1)} KB` : `${(s / 1048576).toFixed(1)} MB`;
840
+ function Oe(r) {
841
+ return r < 1024 ? `${r} bytes` : r < 1048576 ? `${(r / 1024).toFixed(1)} KB` : `${(r / 1048576).toFixed(1)} MB`;
833
842
  }
834
- function _s(s) {
835
- return JSON.stringify(s, null, 2);
843
+ function Cr(r) {
844
+ return JSON.stringify(r, null, 2);
836
845
  }
837
- function ys(s, n = 60) {
838
- return s ? s.length <= n ? s : s.slice(0, n - 3) + "..." : "";
846
+ function kr(r, t = 60) {
847
+ return r ? r.length <= t ? r : r.slice(0, t - 3) + "..." : "";
839
848
  }
840
- function Ws(s, n) {
841
- const t = new URLSearchParams();
842
- Object.entries(n).forEach(([d, h]) => {
843
- h != null && h !== "" && t.set(d, String(h));
849
+ function rt(r, t) {
850
+ const n = new URLSearchParams();
851
+ Object.entries(t).forEach(([u, o]) => {
852
+ o != null && o !== "" && n.set(u, String(o));
844
853
  });
845
- const a = t.toString();
846
- return a ? `${s}?${a}` : s;
854
+ const a = n.toString();
855
+ return a ? `${r}?${a}` : r;
847
856
  }
848
- function A(...s) {
849
- return s.filter(Boolean).join(" ");
857
+ function $(...r) {
858
+ return r.filter(Boolean).join(" ");
850
859
  }
851
- const Rs = [
860
+ const Sr = [
852
861
  { href: "/runs", label: "Runs", matchPaths: ["/runs"] },
853
862
  { href: "/projects", label: "Projects", matchPaths: ["/projects"] },
854
863
  { href: "/groups", label: "Groups", matchPaths: ["/groups"] },
855
864
  { href: "/diff", label: "Compare", matchPaths: ["/diff"] },
856
865
  { href: "/search", label: "Search", matchPaths: ["/search"] }
857
- ], Tr = wr(null);
858
- function Vs({
859
- config: s,
860
- children: n
866
+ ], Fs = Ps(null);
867
+ function tt({
868
+ config: r,
869
+ children: t
861
870
  }) {
862
- return /* @__PURE__ */ e.jsx(Tr.Provider, { value: s, children: n });
863
- }
864
- function ws() {
865
- return Rr(Tr);
866
- }
867
- function q({ children: s, config: n }) {
868
- const t = is(), d = { ...ws(), ...n }, h = d?.navLinks ?? Rs, f = [
869
- ...d?.prependNavLinks ?? [],
870
- ...h,
871
- ...d?.appendNavLinks ?? []
872
- ], i = d?.logo ?? { text: "devqubit", icon: "⚛" }, x = (o) => o.matchPaths ? o.matchPaths.some((p) => t.pathname.startsWith(p)) : t.pathname === o.href;
873
- return /* @__PURE__ */ e.jsxs("div", { className: "min-h-screen bg-primary-bg", children: [
874
- /* @__PURE__ */ e.jsx("header", { className: "bg-gray-900 h-14 sticky top-0 z-50", children: /* @__PURE__ */ e.jsxs("div", { className: "max-w-container mx-auto px-6 h-full flex items-center justify-between", children: [
871
+ return /* @__PURE__ */ e.jsx(Fs.Provider, { value: r, children: t });
872
+ }
873
+ function Pr() {
874
+ return Ss(Fs);
875
+ }
876
+ function V({ children: r, config: t }) {
877
+ const n = ur(), u = { ...Pr(), ...t }, o = u?.navLinks ?? Sr, d = [
878
+ ...u?.prependNavLinks ?? [],
879
+ ...o,
880
+ ...u?.appendNavLinks ?? []
881
+ ], i = u?.logo ?? { text: "devqubit", icon: "⚛" }, f = (h) => h.matchPaths ? h.matchPaths.some((m) => n.pathname.startsWith(m)) : n.pathname === h.href;
882
+ return /* @__PURE__ */ e.jsxs("div", { className: "min-h-screen bg-gray-50", children: [
883
+ /* @__PURE__ */ e.jsx("header", { className: "bg-gray-900 h-14 sticky top-0 z-50 shadow-sm", children: /* @__PURE__ */ e.jsxs("div", { className: "max-w-container mx-auto px-6 h-full flex items-center justify-between", children: [
875
884
  /* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-8", children: [
876
- /* @__PURE__ */ e.jsxs(M, { to: "/", className: "text-lg font-bold text-primary hover:text-primary-light flex items-center gap-1.5", children: [
877
- i.icon && /* @__PURE__ */ e.jsx("span", { children: i.icon }),
885
+ /* @__PURE__ */ e.jsxs(z, { to: "/", className: "text-lg font-semibold text-primary hover:text-primary-light flex items-center gap-2 transition-colors", children: [
886
+ i.icon && /* @__PURE__ */ e.jsx("span", { className: "text-xl", children: i.icon }),
878
887
  i.text
879
888
  ] }),
880
- /* @__PURE__ */ e.jsx("nav", { className: "flex gap-1", children: f.map((o) => /* @__PURE__ */ e.jsx(
881
- M,
889
+ /* @__PURE__ */ e.jsx("nav", { className: "flex gap-1", children: d.map((h) => /* @__PURE__ */ e.jsx(
890
+ z,
882
891
  {
883
- to: o.href,
884
- className: A(
885
- "px-3 py-2 rounded-md text-sm font-medium transition-all",
886
- x(o) ? "text-white bg-primary/20" : "text-gray-400 hover:text-white hover:bg-white/10"
892
+ to: h.href,
893
+ className: $(
894
+ "px-3 py-2 rounded-md text-sm font-medium transition-colors duration-150",
895
+ f(h) ? "text-white bg-white/10" : "text-gray-400 hover:text-white hover:bg-white/5"
887
896
  ),
888
- children: o.label
897
+ children: h.label
889
898
  },
890
- o.href
899
+ h.href
891
900
  )) })
892
901
  ] }),
893
- /* @__PURE__ */ e.jsx("div", { className: "flex items-center gap-4", children: d?.headerRight })
902
+ /* @__PURE__ */ e.jsx("div", { className: "flex items-center gap-4", children: u?.headerRight })
894
903
  ] }) }),
895
- /* @__PURE__ */ e.jsx("main", { className: "max-w-container mx-auto p-6", children: s })
904
+ /* @__PURE__ */ e.jsx("main", { className: "max-w-container mx-auto p-6 fade-in", children: r })
896
905
  ] });
897
906
  }
898
- function pe({ title: s, subtitle: n, actions: t }) {
907
+ function Ee({ title: r, subtitle: t, actions: n }) {
899
908
  return /* @__PURE__ */ e.jsxs("div", { className: "flex items-start justify-between mb-6 gap-4 flex-wrap", children: [
900
909
  /* @__PURE__ */ e.jsxs("div", { children: [
901
- /* @__PURE__ */ e.jsx("h1", { className: "text-2xl font-semibold text-gray-900 flex items-center gap-2 flex-wrap", children: s }),
902
- n && /* @__PURE__ */ e.jsx("p", { className: "text-sm text-muted mt-1", children: n })
910
+ /* @__PURE__ */ e.jsx("h1", { className: "text-2xl font-semibold text-gray-900 flex items-center gap-2 flex-wrap", children: r }),
911
+ t && /* @__PURE__ */ e.jsx("p", { className: "text-sm text-muted mt-1", children: t })
903
912
  ] }),
904
- t && /* @__PURE__ */ e.jsx("div", { className: "flex gap-2", children: t })
913
+ n && /* @__PURE__ */ e.jsx("div", { className: "flex gap-2", children: n })
905
914
  ] });
906
915
  }
907
- function B({ variant: s = "gray", className: n, children: t, ...a }) {
908
- return /* @__PURE__ */ e.jsx("span", { className: A("badge", `badge-${s}`, n), ...a, children: t });
916
+ function Y({ variant: r = "gray", className: t, children: n, ...a }) {
917
+ return /* @__PURE__ */ e.jsx("span", { className: $("badge", `badge-${r}`, t), ...a, children: n });
909
918
  }
910
- const k = Ve(
911
- ({ variant: s = "secondary", size: n = "default", loading: t, className: a, children: d, disabled: h, ...f }, i) => /* @__PURE__ */ e.jsxs(
919
+ const D = Xe(
920
+ ({ variant: r = "secondary", size: t = "default", loading: n, className: a, children: u, disabled: o, ...d }, i) => /* @__PURE__ */ e.jsxs(
912
921
  "button",
913
922
  {
914
923
  ref: i,
915
- className: A(
924
+ className: $(
916
925
  "btn",
917
- s === "ghost-danger" ? "btn-ghost-danger" : `btn-${s}`,
918
- n === "sm" && "btn-sm",
926
+ r === "ghost-danger" ? "btn-ghost-danger" : `btn-${r}`,
927
+ t === "sm" && "btn-sm",
919
928
  a
920
929
  ),
921
- disabled: h || t,
922
- ...f,
930
+ disabled: o || n,
931
+ ...d,
923
932
  children: [
924
- t && /* @__PURE__ */ e.jsx(V, {}),
925
- d
933
+ n && /* @__PURE__ */ e.jsx(I, {}),
934
+ u
926
935
  ]
927
936
  }
928
937
  )
929
938
  );
930
- k.displayName = "Button";
931
- function v({ className: s, children: n, ...t }) {
932
- return /* @__PURE__ */ e.jsx("div", { className: A("card", s), ...t, children: n });
939
+ D.displayName = "Button";
940
+ function b({ className: r, children: t, ...n }) {
941
+ return /* @__PURE__ */ e.jsx("div", { className: $("card", r), ...n, children: t });
933
942
  }
934
- function S({ className: s, children: n, ...t }) {
935
- return /* @__PURE__ */ e.jsx("div", { className: A("card-header", s), ...t, children: n });
943
+ function W({ className: r, children: t, ...n }) {
944
+ return /* @__PURE__ */ e.jsx("div", { className: $("card-header", r), ...n, children: t });
936
945
  }
937
- function P({ className: s, children: n, ...t }) {
938
- return /* @__PURE__ */ e.jsx("h3", { className: A("card-title", s), ...t, children: n });
946
+ function G({ className: r, children: t, ...n }) {
947
+ return /* @__PURE__ */ e.jsx("h3", { className: $("card-title", r), ...n, children: t });
939
948
  }
940
- function Ys({ variant: s = "info", className: n, children: t, ...a }) {
941
- return /* @__PURE__ */ e.jsx("div", { className: A("alert", `alert-${s}`, n), ...a, children: t });
949
+ function nt({ variant: r = "info", className: t, children: n, ...a }) {
950
+ return /* @__PURE__ */ e.jsx("div", { className: $("alert", `alert-${r}`, t), ...a, children: n });
942
951
  }
943
- function V({ className: s, ...n }) {
944
- return /* @__PURE__ */ e.jsx("span", { className: A("spinner", s), ...n });
952
+ function I({ className: r, ...t }) {
953
+ return /* @__PURE__ */ e.jsx("span", { className: $("spinner", r), ...t });
945
954
  }
946
- function te({ message: s, hint: n, className: t, ...a }) {
947
- return /* @__PURE__ */ e.jsxs("div", { className: A("empty-state", t), ...a, children: [
948
- /* @__PURE__ */ e.jsx("p", { children: s }),
949
- n && /* @__PURE__ */ e.jsx("p", { className: "text-sm text-muted mt-2", children: n })
955
+ function he({ message: r, hint: t, className: n, ...a }) {
956
+ return /* @__PURE__ */ e.jsxs("div", { className: $("empty-state", n), ...a, children: [
957
+ /* @__PURE__ */ e.jsx("p", { children: r }),
958
+ t && /* @__PURE__ */ e.jsx("p", { className: "text-sm text-muted mt-2", children: t })
950
959
  ] });
951
960
  }
952
- function Ge({ items: s, className: n, ...t }) {
953
- return /* @__PURE__ */ e.jsx("dl", { className: A("kv-list", n), ...t, children: s.map(({ label: a, value: d }) => /* @__PURE__ */ e.jsxs("div", { className: "contents", children: [
961
+ function Je({ items: r, className: t, ...n }) {
962
+ return /* @__PURE__ */ e.jsx("dl", { className: $("kv-list", t), ...n, children: r.map(({ label: a, value: u }) => /* @__PURE__ */ e.jsxs("div", { className: "contents", children: [
954
963
  /* @__PURE__ */ e.jsx("dt", { children: a }),
955
- /* @__PURE__ */ e.jsx("dd", { children: d })
964
+ /* @__PURE__ */ e.jsx("dd", { children: u })
956
965
  ] }, a)) });
957
966
  }
958
- function Es({ open: s, onClose: n, title: t, children: a, actions: d }) {
959
- return s ? /* @__PURE__ */ e.jsx(
967
+ function es({ open: r, onClose: t, title: n, children: a, actions: u }) {
968
+ return r ? /* @__PURE__ */ e.jsx(
960
969
  "div",
961
970
  {
962
- className: A("modal-backdrop", s && "active"),
963
- onClick: (h) => h.target === h.currentTarget && n(),
964
- children: /* @__PURE__ */ e.jsxs("div", { className: "modal", onClick: (h) => h.stopPropagation(), children: [
965
- /* @__PURE__ */ e.jsx("h3", { className: "modal-title", children: t }),
971
+ className: $("modal-backdrop", r && "active"),
972
+ onClick: (o) => o.target === o.currentTarget && t(),
973
+ children: /* @__PURE__ */ e.jsxs("div", { className: "modal", onClick: (o) => o.stopPropagation(), children: [
974
+ /* @__PURE__ */ e.jsx("h3", { className: "modal-title", children: n }),
966
975
  /* @__PURE__ */ e.jsx("div", { className: "modal-body", children: a }),
967
- d && /* @__PURE__ */ e.jsx("div", { className: "modal-actions", children: d })
976
+ u && /* @__PURE__ */ e.jsx("div", { className: "modal-actions", children: u })
968
977
  ] })
969
978
  }
970
979
  ) : null;
971
980
  }
972
- function Ss({ message: s, variant: n = "info", visible: t, onClose: a }) {
973
- if (!t) return null;
974
- const d = {
975
- success: "bg-success-bg text-[#065f46] border-[#a7f3d0]",
976
- error: "bg-danger-bg text-[#991b1b] border-[#fecaca]",
977
- info: "bg-info-bg text-[#1e40af] border-[#bfdbfe]"
978
- }[n];
979
- return /* @__PURE__ */ e.jsx("div", { className: A("toast", d), onClick: a, children: s });
981
+ function Ce({ message: r, variant: t = "info", visible: n, onClose: a }) {
982
+ if (!n) return null;
983
+ const u = {
984
+ success: "",
985
+ error: "",
986
+ info: "i"
987
+ }[t], o = {
988
+ success: "text-[#059669]",
989
+ error: "text-[#DC4A4A]",
990
+ info: "text-[#2563EB]"
991
+ }[t];
992
+ return /* @__PURE__ */ e.jsxs("div", { className: "toast", onClick: a, children: [
993
+ /* @__PURE__ */ e.jsx("span", { className: $("mr-2 font-bold", o), children: u }),
994
+ r
995
+ ] });
980
996
  }
981
- function H({ children: s, className: n }) {
982
- return /* @__PURE__ */ e.jsx("div", { className: A("form-group", n), children: s });
997
+ function ee({ children: r, className: t }) {
998
+ return /* @__PURE__ */ e.jsx("div", { className: $("form-group", t), children: r });
983
999
  }
984
- function Z({ className: s, children: n, ...t }) {
985
- return /* @__PURE__ */ e.jsx("label", { className: A("form-label", s), ...t, children: n });
1000
+ function ie({ className: r, children: t, ...n }) {
1001
+ return /* @__PURE__ */ e.jsx("label", { className: $("form-label", r), ...n, children: t });
986
1002
  }
987
- const Ke = Ve(
988
- ({ className: s, ...n }, t) => /* @__PURE__ */ e.jsx("input", { ref: t, className: A("form-input", s), ...n })
1003
+ const ss = Xe(
1004
+ ({ className: r, ...t }, n) => /* @__PURE__ */ e.jsx("input", { ref: n, className: $("form-input", r), ...t })
989
1005
  );
990
- Ke.displayName = "Input";
991
- const se = Ve(
992
- ({ className: s, children: n, ...t }, a) => /* @__PURE__ */ e.jsx("select", { ref: a, className: A("form-input", s), ...t, children: n })
1006
+ ss.displayName = "Input";
1007
+ const de = Xe(
1008
+ ({ className: r, children: t, ...n }, a) => /* @__PURE__ */ e.jsx("select", { ref: a, className: $("form-input", r), ...n, children: t })
993
1009
  );
994
- se.displayName = "Select";
995
- function Cr({ children: s, className: n }) {
996
- return /* @__PURE__ */ e.jsx("div", { className: A("form-row", n), children: s });
1010
+ de.displayName = "Select";
1011
+ function Os({ children: r, className: t }) {
1012
+ return /* @__PURE__ */ e.jsx("div", { className: $("form-row", t), children: r });
997
1013
  }
998
- function O({ className: s, children: n, ...t }) {
999
- return /* @__PURE__ */ e.jsx("table", { className: A("table", s), ...t, children: n });
1014
+ function L({ className: r, children: t, ...n }) {
1015
+ return /* @__PURE__ */ e.jsx("table", { className: $("table", r), ...n, children: t });
1000
1016
  }
1001
- function Q({ className: s, children: n, ...t }) {
1002
- return /* @__PURE__ */ e.jsx("thead", { className: s, ...t, children: n });
1017
+ function re({ className: r, children: t, ...n }) {
1018
+ return /* @__PURE__ */ e.jsx("thead", { className: r, ...n, children: t });
1003
1019
  }
1004
- function F({ className: s, children: n, ...t }) {
1005
- return /* @__PURE__ */ e.jsx("tbody", { className: s, ...t, children: n });
1020
+ function B({ className: r, children: t, ...n }) {
1021
+ return /* @__PURE__ */ e.jsx("tbody", { className: r, ...n, children: t });
1006
1022
  }
1007
- function m({ className: s, children: n, ...t }) {
1008
- return /* @__PURE__ */ e.jsx("tr", { className: s, ...t, children: n });
1023
+ function j({ className: r, children: t, ...n }) {
1024
+ return /* @__PURE__ */ e.jsx("tr", { className: r, ...n, children: t });
1009
1025
  }
1010
- function b({ className: s, children: n, ...t }) {
1011
- return /* @__PURE__ */ e.jsx("th", { className: s, ...t, children: n });
1026
+ function N({ className: r, children: t, ...n }) {
1027
+ return /* @__PURE__ */ e.jsx("th", { className: r, ...n, children: t });
1012
1028
  }
1013
- function c({ className: s, children: n, ...t }) {
1014
- return /* @__PURE__ */ e.jsx("td", { className: s, ...t, children: n });
1029
+ function c({ className: r, children: t, ...n }) {
1030
+ return /* @__PURE__ */ e.jsx("td", { className: r, ...n, children: t });
1015
1031
  }
1016
- function Dr({ status: s }) {
1017
- const n = {
1032
+ function $s({ status: r }) {
1033
+ const t = {
1018
1034
  FINISHED: "success",
1019
1035
  FAILED: "danger",
1020
1036
  RUNNING: "warning",
1021
1037
  UNKNOWN: "gray"
1022
- }[s];
1023
- return /* @__PURE__ */ e.jsx(B, { variant: n, children: s });
1024
- }
1025
- function Je({ runs: s, onDelete: n, loading: t, emptyHint: a }) {
1026
- return s.length ? /* @__PURE__ */ e.jsxs(O, { children: [
1027
- /* @__PURE__ */ e.jsx(Q, { children: /* @__PURE__ */ e.jsxs(m, { children: [
1028
- /* @__PURE__ */ e.jsx(b, { children: "Run ID" }),
1029
- /* @__PURE__ */ e.jsx(b, { children: "Name" }),
1030
- /* @__PURE__ */ e.jsx(b, { children: "Project" }),
1031
- /* @__PURE__ */ e.jsx(b, { children: "Status" }),
1032
- /* @__PURE__ */ e.jsx(b, { children: "Created" }),
1033
- /* @__PURE__ */ e.jsx(b, { children: "Actions" })
1034
- ] }) }),
1035
- /* @__PURE__ */ e.jsx(F, { children: s.map((d) => /* @__PURE__ */ e.jsxs(m, { children: [
1036
- /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(M, { to: `/runs/${d.run_id}`, className: "font-mono", children: K(d.run_id) }) }),
1037
- /* @__PURE__ */ e.jsx(c, { children: d.run_name || "" }),
1038
- /* @__PURE__ */ e.jsx(c, { children: d.project }),
1039
- /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Dr, { status: d.status }) }),
1040
- /* @__PURE__ */ e.jsx(c, { className: "text-muted", children: Te(d.created_at) }),
1041
- /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsxs("div", { className: "flex gap-2", children: [
1042
- /* @__PURE__ */ e.jsx(M, { to: `/runs/${d.run_id}`, children: /* @__PURE__ */ e.jsx(k, { variant: "secondary", size: "sm", children: "View" }) }),
1043
- n && /* @__PURE__ */ e.jsx(
1044
- k,
1045
- {
1046
- variant: "ghost-danger",
1047
- size: "sm",
1048
- onClick: () => {
1049
- confirm(`Delete run ${K(d.run_id)}? This cannot be undone.`) && n(d.run_id);
1050
- },
1051
- disabled: t,
1052
- children: "Delete"
1053
- }
1054
- )
1055
- ] }) })
1056
- ] }, d.run_id)) })
1038
+ }[r];
1039
+ return /* @__PURE__ */ e.jsx(Y, { variant: t, children: r });
1040
+ }
1041
+ function rs({ runs: r, onDelete: t, loading: n, emptyHint: a, baselineRunId: u }) {
1042
+ const [o, d] = T(null), i = () => {
1043
+ o && t && (t(o.run_id), d(null));
1044
+ };
1045
+ return r.length ? /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
1046
+ /* @__PURE__ */ e.jsxs(L, { children: [
1047
+ /* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
1048
+ /* @__PURE__ */ e.jsx(N, { children: "Run ID" }),
1049
+ /* @__PURE__ */ e.jsx(N, { children: "Name" }),
1050
+ /* @__PURE__ */ e.jsx(N, { children: "Project" }),
1051
+ /* @__PURE__ */ e.jsx(N, { children: "Status" }),
1052
+ /* @__PURE__ */ e.jsx(N, { children: "Created" }),
1053
+ /* @__PURE__ */ e.jsx(N, { children: "Actions" })
1054
+ ] }) }),
1055
+ /* @__PURE__ */ e.jsx(B, { children: r.map((f) => /* @__PURE__ */ e.jsxs(j, { children: [
1056
+ /* @__PURE__ */ e.jsxs(c, { children: [
1057
+ /* @__PURE__ */ e.jsx(z, { to: `/runs/${f.run_id}`, className: "font-mono", children: Q(f.run_id) }),
1058
+ f.run_id === u && /* @__PURE__ */ e.jsx(Y, { variant: "info", className: "ml-2", children: "Baseline" })
1059
+ ] }),
1060
+ /* @__PURE__ */ e.jsx(c, { children: f.run_name || "—" }),
1061
+ /* @__PURE__ */ e.jsx(c, { children: f.project }),
1062
+ /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx($s, { status: f.status }) }),
1063
+ /* @__PURE__ */ e.jsx(c, { className: "text-muted", children: Ze(f.created_at) }),
1064
+ /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsxs("div", { className: "flex gap-2", children: [
1065
+ /* @__PURE__ */ e.jsx(z, { to: `/runs/${f.run_id}`, children: /* @__PURE__ */ e.jsx(D, { variant: "secondary", size: "sm", children: "View" }) }),
1066
+ t && /* @__PURE__ */ e.jsx(
1067
+ D,
1068
+ {
1069
+ variant: "ghost-danger",
1070
+ size: "sm",
1071
+ onClick: () => d(f),
1072
+ disabled: n,
1073
+ children: "Delete"
1074
+ }
1075
+ )
1076
+ ] }) })
1077
+ ] }, f.run_id)) })
1078
+ ] }),
1079
+ /* @__PURE__ */ e.jsxs(
1080
+ es,
1081
+ {
1082
+ open: !!o,
1083
+ onClose: () => d(null),
1084
+ title: "Delete Run",
1085
+ actions: /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
1086
+ /* @__PURE__ */ e.jsx(D, { variant: "secondary", onClick: () => d(null), children: "Cancel" }),
1087
+ /* @__PURE__ */ e.jsxs(D, { variant: "danger", onClick: i, disabled: n, children: [
1088
+ n && /* @__PURE__ */ e.jsx(I, {}),
1089
+ "Delete"
1090
+ ] })
1091
+ ] }),
1092
+ children: [
1093
+ /* @__PURE__ */ e.jsx("p", { children: "Are you sure you want to delete this run?" }),
1094
+ o && /* @__PURE__ */ e.jsx("p", { className: "font-mono text-sm mt-2", children: Q(o.run_id) }),
1095
+ /* @__PURE__ */ e.jsx("p", { className: "text-sm text-danger mt-2", children: "This action cannot be undone." })
1096
+ ]
1097
+ }
1098
+ )
1057
1099
  ] }) : /* @__PURE__ */ e.jsx(
1058
- te,
1100
+ he,
1059
1101
  {
1060
1102
  message: "No runs found",
1061
1103
  hint: a ?? "Try adjusting your filters"
1062
1104
  }
1063
1105
  );
1064
1106
  }
1065
- function Ps() {
1066
- const [s, n] = Ce(), { api: t } = Y(), { data: a } = ze(), [d, h] = U({
1067
- project: s.get("project") || "",
1068
- status: s.get("status") || "",
1069
- q: s.get("q") || "",
1070
- limit: parseInt(s.get("limit") || "25", 10)
1071
- }), { data: f, loading: i, refetch: x } = Sr(d), o = je((_) => t.deleteRun(_)), p = me((_, G) => {
1072
- h((ce) => ({ ...ce, [_]: G }));
1073
- const J = new URLSearchParams(s);
1074
- G ? J.set(_, String(G)) : J.delete(_), n(J, { replace: !0 });
1075
- }, [s, n]), $ = me(async (_) => {
1076
- await o.mutate(_), x();
1077
- }, [o, x]);
1078
- return /* @__PURE__ */ e.jsxs(q, { children: [
1079
- /* @__PURE__ */ e.jsx(pe, { title: "Runs" }),
1080
- /* @__PURE__ */ e.jsx(v, { className: "mb-4", children: /* @__PURE__ */ e.jsxs(Cr, { children: [
1081
- /* @__PURE__ */ e.jsxs(H, { children: [
1082
- /* @__PURE__ */ e.jsx(Z, { htmlFor: "project", children: "Project" }),
1107
+ function Tr() {
1108
+ const [r, t] = $e(), { api: n } = K(), { data: a } = Le(), [u, o] = T(null), [d, i] = T({
1109
+ project: r.get("project") || "",
1110
+ status: r.get("status") || "",
1111
+ q: r.get("q") || "",
1112
+ limit: parseInt(r.get("limit") || "25", 10)
1113
+ }), { data: f, loading: h, refetch: m } = Ds(d), p = Re((w) => n.deleteRun(w));
1114
+ je(() => {
1115
+ if (u) {
1116
+ const w = setTimeout(() => o(null), 3e3);
1117
+ return () => clearTimeout(w);
1118
+ }
1119
+ }, [u]);
1120
+ const _ = _e((w, H) => {
1121
+ i((O) => ({ ...O, [w]: H }));
1122
+ const k = new URLSearchParams(r);
1123
+ H ? k.set(w, String(H)) : k.delete(w), t(k, { replace: !0 });
1124
+ }, [r, t]), U = _e(async (w) => {
1125
+ try {
1126
+ await p.mutate(w), o({ message: "Run deleted", variant: "success" }), m();
1127
+ } catch {
1128
+ o({ message: "Failed to delete run", variant: "error" });
1129
+ }
1130
+ }, [p, m]);
1131
+ return /* @__PURE__ */ e.jsxs(V, { children: [
1132
+ /* @__PURE__ */ e.jsx(Ee, { title: "Runs" }),
1133
+ /* @__PURE__ */ e.jsx(b, { className: "mb-4", children: /* @__PURE__ */ e.jsxs(Os, { children: [
1134
+ /* @__PURE__ */ e.jsxs(ee, { children: [
1135
+ /* @__PURE__ */ e.jsx(ie, { htmlFor: "project", children: "Project" }),
1083
1136
  /* @__PURE__ */ e.jsxs(
1084
- se,
1137
+ de,
1085
1138
  {
1086
1139
  id: "project",
1087
1140
  value: d.project,
1088
- onChange: (_) => p("project", _.target.value),
1141
+ onChange: (w) => _("project", w.target.value),
1089
1142
  children: [
1090
1143
  /* @__PURE__ */ e.jsx("option", { value: "", children: "All projects" }),
1091
- a?.map((_) => /* @__PURE__ */ e.jsx("option", { value: _.name, children: _.name }, _.name))
1144
+ a?.map((w) => /* @__PURE__ */ e.jsx("option", { value: w.name, children: w.name }, w.name))
1092
1145
  ]
1093
1146
  }
1094
1147
  )
1095
1148
  ] }),
1096
- /* @__PURE__ */ e.jsxs(H, { children: [
1097
- /* @__PURE__ */ e.jsx(Z, { htmlFor: "status", children: "Status" }),
1149
+ /* @__PURE__ */ e.jsxs(ee, { children: [
1150
+ /* @__PURE__ */ e.jsx(ie, { htmlFor: "status", children: "Status" }),
1098
1151
  /* @__PURE__ */ e.jsxs(
1099
- se,
1152
+ de,
1100
1153
  {
1101
1154
  id: "status",
1102
1155
  value: d.status,
1103
- onChange: (_) => p("status", _.target.value),
1156
+ onChange: (w) => _("status", w.target.value),
1104
1157
  children: [
1105
1158
  /* @__PURE__ */ e.jsx("option", { value: "", children: "All" }),
1106
1159
  /* @__PURE__ */ e.jsx("option", { value: "FINISHED", children: "Finished" }),
@@ -1110,26 +1163,26 @@ function Ps() {
1110
1163
  }
1111
1164
  )
1112
1165
  ] }),
1113
- /* @__PURE__ */ e.jsxs(H, { children: [
1114
- /* @__PURE__ */ e.jsx(Z, { htmlFor: "q", children: "Query" }),
1166
+ /* @__PURE__ */ e.jsxs(ee, { children: [
1167
+ /* @__PURE__ */ e.jsx(ie, { htmlFor: "q", children: "Query" }),
1115
1168
  /* @__PURE__ */ e.jsx(
1116
- Ke,
1169
+ ss,
1117
1170
  {
1118
1171
  id: "q",
1119
1172
  value: d.q,
1120
- onChange: (_) => p("q", _.target.value),
1173
+ onChange: (w) => _("q", w.target.value),
1121
1174
  placeholder: "metric.fidelity > 0.9"
1122
1175
  }
1123
1176
  )
1124
1177
  ] }),
1125
- /* @__PURE__ */ e.jsxs(H, { children: [
1126
- /* @__PURE__ */ e.jsx(Z, { htmlFor: "limit", children: "Limit" }),
1178
+ /* @__PURE__ */ e.jsxs(ee, { children: [
1179
+ /* @__PURE__ */ e.jsx(ie, { htmlFor: "limit", children: "Limit" }),
1127
1180
  /* @__PURE__ */ e.jsxs(
1128
- se,
1181
+ de,
1129
1182
  {
1130
1183
  id: "limit",
1131
1184
  value: d.limit,
1132
- onChange: (_) => p("limit", parseInt(_.target.value, 10)),
1185
+ onChange: (w) => _("limit", parseInt(w.target.value, 10)),
1133
1186
  children: [
1134
1187
  /* @__PURE__ */ e.jsx("option", { value: "25", children: "25" }),
1135
1188
  /* @__PURE__ */ e.jsx("option", { value: "50", children: "50" }),
@@ -1138,567 +1191,892 @@ function Ps() {
1138
1191
  }
1139
1192
  )
1140
1193
  ] }),
1141
- /* @__PURE__ */ e.jsxs(H, { className: "flex items-end gap-2", children: [
1142
- /* @__PURE__ */ e.jsx(k, { variant: "primary", onClick: () => x(), children: "Filter" }),
1143
- i && /* @__PURE__ */ e.jsx(V, {})
1194
+ /* @__PURE__ */ e.jsxs(ee, { className: "flex items-end gap-2", children: [
1195
+ /* @__PURE__ */ e.jsx(D, { variant: "primary", onClick: () => m(), children: "Filter" }),
1196
+ h && /* @__PURE__ */ e.jsx(I, {})
1144
1197
  ] })
1145
1198
  ] }) }),
1146
- /* @__PURE__ */ e.jsx(v, { children: i && !f ? /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-8", children: /* @__PURE__ */ e.jsx(V, {}) }) : /* @__PURE__ */ e.jsx(
1147
- Je,
1199
+ /* @__PURE__ */ e.jsx(b, { children: h && !f ? /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-8", children: /* @__PURE__ */ e.jsx(I, {}) }) : /* @__PURE__ */ e.jsx(
1200
+ rs,
1148
1201
  {
1149
1202
  runs: f?.runs ?? [],
1150
- onDelete: $,
1151
- loading: o.loading
1203
+ onDelete: U,
1204
+ loading: p.loading,
1205
+ baselineRunId: d.project ? a?.find((w) => w.name === d.project)?.baseline?.run_id : void 0
1152
1206
  }
1153
- ) })
1207
+ ) }),
1208
+ u && /* @__PURE__ */ e.jsx(
1209
+ Ce,
1210
+ {
1211
+ message: u.message,
1212
+ variant: u.variant,
1213
+ visible: !!u,
1214
+ onClose: () => o(null)
1215
+ }
1216
+ )
1154
1217
  ] });
1155
1218
  }
1156
- function Ts({ projects: s, currentWorkspace: n }) {
1157
- if (!s.length)
1219
+ function Dr({ projects: r, currentWorkspace: t }) {
1220
+ if (!r.length)
1158
1221
  return /* @__PURE__ */ e.jsx(
1159
- te,
1222
+ he,
1160
1223
  {
1161
1224
  message: "No projects yet",
1162
1225
  hint: "Projects are created automatically when you log runs"
1163
1226
  }
1164
1227
  );
1165
- const t = (a) => {
1166
- const d = new URLSearchParams({ project: a });
1167
- return n && d.set("workspace", n.id), `/runs?${d}`;
1228
+ const n = (a) => {
1229
+ const u = new URLSearchParams({ project: a });
1230
+ return t && u.set("workspace", t.id), `/runs?${u}`;
1168
1231
  };
1169
- return /* @__PURE__ */ e.jsxs(O, { children: [
1170
- /* @__PURE__ */ e.jsx(Q, { children: /* @__PURE__ */ e.jsxs(m, { children: [
1171
- /* @__PURE__ */ e.jsx(b, { children: "Project" }),
1172
- /* @__PURE__ */ e.jsx(b, { children: "Runs" }),
1173
- /* @__PURE__ */ e.jsx(b, { children: "Baseline" }),
1174
- /* @__PURE__ */ e.jsx(b, {})
1232
+ return /* @__PURE__ */ e.jsxs(L, { children: [
1233
+ /* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
1234
+ /* @__PURE__ */ e.jsx(N, { children: "Project" }),
1235
+ /* @__PURE__ */ e.jsx(N, { children: "Runs" }),
1236
+ /* @__PURE__ */ e.jsx(N, { children: "Baseline" }),
1237
+ /* @__PURE__ */ e.jsx(N, {})
1175
1238
  ] }) }),
1176
- /* @__PURE__ */ e.jsx(F, { children: s.map((a) => /* @__PURE__ */ e.jsxs(m, { children: [
1239
+ /* @__PURE__ */ e.jsx(B, { children: r.map((a) => /* @__PURE__ */ e.jsxs(j, { children: [
1177
1240
  /* @__PURE__ */ e.jsxs(c, { children: [
1178
1241
  /* @__PURE__ */ e.jsx("span", { className: "font-medium", children: a.name }),
1179
- a.description && /* @__PURE__ */ e.jsx("p", { className: "text-muted text-sm", children: ys(a.description) })
1242
+ a.description && /* @__PURE__ */ e.jsx("p", { className: "text-muted text-sm", children: kr(a.description) })
1180
1243
  ] }),
1181
- /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(B, { variant: "gray", children: a.run_count ?? 0 }) }),
1244
+ /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Y, { variant: "gray", children: a.run_count ?? 0 }) }),
1182
1245
  /* @__PURE__ */ e.jsx(c, { children: a.baseline ? /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
1183
- /* @__PURE__ */ e.jsx(M, { to: `/runs/${a.baseline.run_id}`, className: "font-mono text-sm", children: K(a.baseline.run_id) }),
1246
+ /* @__PURE__ */ e.jsx(z, { to: `/runs/${a.baseline.run_id}`, className: "font-mono text-sm", children: Q(a.baseline.run_id) }),
1184
1247
  a.baseline.run_name && /* @__PURE__ */ e.jsx("p", { className: "text-muted text-sm", children: a.baseline.run_name })
1185
1248
  ] }) : /* @__PURE__ */ e.jsx("span", { className: "text-muted", children: "—" }) }),
1186
- /* @__PURE__ */ e.jsx(c, { className: "text-right", children: /* @__PURE__ */ e.jsx(M, { to: t(a.name), children: /* @__PURE__ */ e.jsx(k, { variant: "secondary", size: "sm", children: "View Runs" }) }) })
1249
+ /* @__PURE__ */ e.jsx(c, { className: "text-right", children: /* @__PURE__ */ e.jsx(z, { to: n(a.name), children: /* @__PURE__ */ e.jsx(D, { variant: "secondary", size: "sm", children: "View Runs" }) }) })
1187
1250
  ] }, a.name)) })
1188
1251
  ] });
1189
1252
  }
1190
- function Cs({ groups: s }) {
1191
- return s.length ? /* @__PURE__ */ e.jsxs(O, { children: [
1192
- /* @__PURE__ */ e.jsx(Q, { children: /* @__PURE__ */ e.jsxs(m, { children: [
1193
- /* @__PURE__ */ e.jsx(b, { children: "Group ID" }),
1194
- /* @__PURE__ */ e.jsx(b, { children: "Name" }),
1195
- /* @__PURE__ */ e.jsx(b, { children: "Project" }),
1196
- /* @__PURE__ */ e.jsx(b, { children: "Runs" }),
1197
- /* @__PURE__ */ e.jsx(b, { children: "Actions" })
1253
+ function Ar({ groups: r }) {
1254
+ return r.length ? /* @__PURE__ */ e.jsxs(L, { children: [
1255
+ /* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
1256
+ /* @__PURE__ */ e.jsx(N, { children: "Group ID" }),
1257
+ /* @__PURE__ */ e.jsx(N, { children: "Name" }),
1258
+ /* @__PURE__ */ e.jsx(N, { children: "Project" }),
1259
+ /* @__PURE__ */ e.jsx(N, { children: "Runs" }),
1260
+ /* @__PURE__ */ e.jsx(N, { children: "Actions" })
1198
1261
  ] }) }),
1199
- /* @__PURE__ */ e.jsx(F, { children: s.map((n) => /* @__PURE__ */ e.jsxs(m, { children: [
1200
- /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: K(n.group_id) }),
1201
- /* @__PURE__ */ e.jsx(c, { children: n.group_name || "—" }),
1202
- /* @__PURE__ */ e.jsx(c, { children: n.project }),
1203
- /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(B, { variant: "gray", children: n.run_count }) }),
1204
- /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(M, { to: `/groups/${n.group_id}`, children: /* @__PURE__ */ e.jsx(k, { variant: "secondary", size: "sm", children: "View Runs" }) }) })
1205
- ] }, n.group_id)) })
1262
+ /* @__PURE__ */ e.jsx(B, { children: r.map((t) => /* @__PURE__ */ e.jsxs(j, { children: [
1263
+ /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: Q(t.group_id) }),
1264
+ /* @__PURE__ */ e.jsx(c, { children: t.group_name || "—" }),
1265
+ /* @__PURE__ */ e.jsx(c, { children: t.project }),
1266
+ /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Y, { variant: "gray", children: t.run_count }) }),
1267
+ /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(z, { to: `/groups/${t.group_id}`, children: /* @__PURE__ */ e.jsx(D, { variant: "secondary", size: "sm", children: "View Runs" }) }) })
1268
+ ] }, t.group_id)) })
1206
1269
  ] }) : /* @__PURE__ */ e.jsx(
1207
- te,
1270
+ he,
1208
1271
  {
1209
1272
  message: "No groups found",
1210
1273
  hint: "Groups are created when runs have a group_id set"
1211
1274
  }
1212
1275
  );
1213
1276
  }
1214
- function Ds() {
1215
- const { runId: s } = Ye(), n = cs(), { api: t } = Y(), { data: a, loading: d, error: h, refetch: f } = Pr(s), [i, x] = U(!1), [o, p] = U(null), { mutate: $, loading: _ } = je(
1216
- () => t.setBaseline(a.project, a.run_id)
1217
- ), { mutate: G, loading: J } = je(
1218
- () => t.deleteRun(s)
1277
+ function Fr({
1278
+ runId: r,
1279
+ runName: t,
1280
+ variant: n = "secondary",
1281
+ size: a = "sm",
1282
+ className: u = "",
1283
+ apiBaseUrl: o = ""
1284
+ }) {
1285
+ const [d, i] = T({ status: "idle" }), [f, h] = T(!1), [m, p] = T(null), _ = async () => {
1286
+ i({ status: "preparing", message: "Preparing bundle..." }), h(!0);
1287
+ try {
1288
+ const k = await fetch(`${o}/api/runs/${r}/export`, {
1289
+ method: "POST",
1290
+ headers: { "Content-Type": "application/json" }
1291
+ });
1292
+ if (!k.ok) {
1293
+ const ne = await k.json().catch(() => ({ detail: "Export failed" }));
1294
+ throw new Error(ne.detail || `Export failed: ${k.statusText}`);
1295
+ }
1296
+ const O = await k.json();
1297
+ i({
1298
+ status: "packing",
1299
+ message: "Creating bundle...",
1300
+ artifactCount: O.artifact_count,
1301
+ objectCount: O.object_count
1302
+ }), i((ne) => ({
1303
+ ...ne,
1304
+ status: "downloading",
1305
+ message: "Downloading bundle..."
1306
+ }));
1307
+ const S = await fetch(`${o}/api/runs/${r}/export/download`);
1308
+ if (!S.ok)
1309
+ throw new Error("Download failed");
1310
+ const se = await S.blob(), te = t ? `${t.replace(/[^a-zA-Z0-9_-]/g, "_")}_${r.slice(0, 8)}.zip` : `run_${r.slice(0, 8)}.zip`, J = URL.createObjectURL(se), Z = document.createElement("a");
1311
+ Z.href = J, Z.download = te, document.body.appendChild(Z), Z.click(), document.body.removeChild(Z), URL.revokeObjectURL(J), i({
1312
+ status: "complete",
1313
+ message: "Export complete!",
1314
+ bundleSize: se.size,
1315
+ artifactCount: O.artifact_count,
1316
+ objectCount: O.object_count
1317
+ }), p({ message: "Bundle downloaded successfully", variant: "success" }), setTimeout(() => {
1318
+ h(!1), i({ status: "idle" });
1319
+ }, 2e3);
1320
+ } catch (k) {
1321
+ const O = k instanceof Error ? k.message : "Export failed";
1322
+ i({ status: "error", message: O }), p({ message: O, variant: "error" });
1323
+ }
1324
+ }, U = () => {
1325
+ d.status !== "preparing" && d.status !== "packing" && d.status !== "downloading" && (h(!1), i({ status: "idle" }));
1326
+ }, w = (k) => k < 1024 ? `${k} B` : k < 1024 * 1024 ? `${(k / 1024).toFixed(1)} KB` : `${(k / (1024 * 1024)).toFixed(1)} MB`, H = ["preparing", "packing", "downloading"].includes(d.status);
1327
+ return /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
1328
+ /* @__PURE__ */ e.jsxs(
1329
+ D,
1330
+ {
1331
+ variant: n,
1332
+ size: a,
1333
+ onClick: _,
1334
+ disabled: H,
1335
+ className: u,
1336
+ children: [
1337
+ H && /* @__PURE__ */ e.jsx(I, {}),
1338
+ /* @__PURE__ */ e.jsx(Or, {}),
1339
+ "Export"
1340
+ ]
1341
+ }
1342
+ ),
1343
+ /* @__PURE__ */ e.jsx(
1344
+ es,
1345
+ {
1346
+ open: f,
1347
+ onClose: U,
1348
+ title: "Export Run",
1349
+ actions: d.status === "error" || d.status === "complete" ? /* @__PURE__ */ e.jsx(D, { variant: "secondary", onClick: U, children: "Close" }) : void 0,
1350
+ children: /* @__PURE__ */ e.jsxs("div", { className: "py-4", children: [
1351
+ /* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-3 mb-4", children: [
1352
+ d.status === "error" ? /* @__PURE__ */ e.jsx("div", { className: "w-10 h-10 rounded-full bg-[var(--dq-danger-bg)] flex items-center justify-center", children: /* @__PURE__ */ e.jsx(Lr, {}) }) : d.status === "complete" ? /* @__PURE__ */ e.jsx("div", { className: "w-10 h-10 rounded-full bg-[var(--dq-success-bg)] flex items-center justify-center", children: /* @__PURE__ */ e.jsx($r, {}) }) : /* @__PURE__ */ e.jsx("div", { className: "w-10 h-10 rounded-full bg-[var(--dq-primary-bg)] flex items-center justify-center", children: /* @__PURE__ */ e.jsx(I, {}) }),
1353
+ /* @__PURE__ */ e.jsxs("div", { children: [
1354
+ /* @__PURE__ */ e.jsx("p", { className: "font-medium", children: d.message }),
1355
+ d.status === "error" && /* @__PURE__ */ e.jsx("p", { className: "text-sm text-[var(--dq-text-muted)]", children: "Please try again or contact support." })
1356
+ ] })
1357
+ ] }),
1358
+ (d.artifactCount !== void 0 || d.objectCount !== void 0 || d.bundleSize !== void 0) && /* @__PURE__ */ e.jsxs("div", { className: "flex flex-wrap gap-2 mt-4", children: [
1359
+ d.artifactCount !== void 0 && /* @__PURE__ */ e.jsxs(Y, { variant: "gray", children: [
1360
+ d.artifactCount,
1361
+ " artifacts"
1362
+ ] }),
1363
+ d.objectCount !== void 0 && /* @__PURE__ */ e.jsxs(Y, { variant: "gray", children: [
1364
+ d.objectCount,
1365
+ " objects"
1366
+ ] }),
1367
+ d.bundleSize !== void 0 && /* @__PURE__ */ e.jsx(Y, { variant: "info", children: w(d.bundleSize) })
1368
+ ] }),
1369
+ /* @__PURE__ */ e.jsxs("div", { className: "mt-4 pt-4 border-t border-[var(--dq-border-light)]", children: [
1370
+ /* @__PURE__ */ e.jsxs("p", { className: "text-sm text-[var(--dq-text-muted)]", children: [
1371
+ "Run ID: ",
1372
+ /* @__PURE__ */ e.jsx("code", { className: "text-xs", children: r })
1373
+ ] }),
1374
+ t && /* @__PURE__ */ e.jsxs("p", { className: "text-sm text-[var(--dq-text-muted)]", children: [
1375
+ "Name: ",
1376
+ t
1377
+ ] })
1378
+ ] })
1379
+ ] })
1380
+ }
1381
+ ),
1382
+ m && /* @__PURE__ */ e.jsx(
1383
+ Ce,
1384
+ {
1385
+ message: m.message,
1386
+ variant: m.variant,
1387
+ visible: !!m,
1388
+ onClose: () => p(null)
1389
+ }
1390
+ )
1391
+ ] });
1392
+ }
1393
+ function Or() {
1394
+ return /* @__PURE__ */ e.jsxs(
1395
+ "svg",
1396
+ {
1397
+ width: "16",
1398
+ height: "16",
1399
+ viewBox: "0 0 24 24",
1400
+ fill: "none",
1401
+ stroke: "currentColor",
1402
+ strokeWidth: "2",
1403
+ strokeLinecap: "round",
1404
+ strokeLinejoin: "round",
1405
+ children: [
1406
+ /* @__PURE__ */ e.jsx("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
1407
+ /* @__PURE__ */ e.jsx("polyline", { points: "7 10 12 15 17 10" }),
1408
+ /* @__PURE__ */ e.jsx("line", { x1: "12", y1: "15", x2: "12", y2: "3" })
1409
+ ]
1410
+ }
1219
1411
  );
1220
- if (We(() => {
1221
- if (o) {
1222
- const w = setTimeout(() => p(null), 3e3);
1223
- return () => clearTimeout(w);
1412
+ }
1413
+ function $r() {
1414
+ return /* @__PURE__ */ e.jsx(
1415
+ "svg",
1416
+ {
1417
+ width: "20",
1418
+ height: "20",
1419
+ viewBox: "0 0 24 24",
1420
+ fill: "none",
1421
+ stroke: "var(--dq-success)",
1422
+ strokeWidth: "2",
1423
+ strokeLinecap: "round",
1424
+ strokeLinejoin: "round",
1425
+ children: /* @__PURE__ */ e.jsx("polyline", { points: "20 6 9 17 4 12" })
1426
+ }
1427
+ );
1428
+ }
1429
+ function Lr() {
1430
+ return /* @__PURE__ */ e.jsxs(
1431
+ "svg",
1432
+ {
1433
+ width: "20",
1434
+ height: "20",
1435
+ viewBox: "0 0 24 24",
1436
+ fill: "none",
1437
+ stroke: "var(--dq-danger)",
1438
+ strokeWidth: "2",
1439
+ strokeLinecap: "round",
1440
+ strokeLinejoin: "round",
1441
+ children: [
1442
+ /* @__PURE__ */ e.jsx("circle", { cx: "12", cy: "12", r: "10" }),
1443
+ /* @__PURE__ */ e.jsx("line", { x1: "15", y1: "9", x2: "9", y2: "15" }),
1444
+ /* @__PURE__ */ e.jsx("line", { x1: "9", y1: "9", x2: "15", y2: "15" })
1445
+ ]
1446
+ }
1447
+ );
1448
+ }
1449
+ function Br() {
1450
+ const { runId: r } = Qe(), t = hr(), { api: n } = K(), { data: a, loading: u, error: o, refetch: d } = As(r), { data: i, refetch: f } = Le(), [h, m] = T(!1), [p, _] = T(null), { mutate: U, loading: w } = Re(
1451
+ () => n.setBaseline(a.project, a.run_id)
1452
+ ), { mutate: H, loading: k } = Re(
1453
+ () => n.deleteRun(r)
1454
+ ), S = i?.find((y) => y.name === a?.project)?.baseline?.run_id === r;
1455
+ if (je(() => {
1456
+ if (p) {
1457
+ const y = setTimeout(() => _(null), 3e3);
1458
+ return () => clearTimeout(y);
1224
1459
  }
1225
- }, [o]), d)
1226
- return /* @__PURE__ */ e.jsx(q, { children: /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-12", children: /* @__PURE__ */ e.jsx(V, {}) }) });
1227
- if (h || !a)
1228
- return /* @__PURE__ */ e.jsx(q, { children: /* @__PURE__ */ e.jsx(v, { children: /* @__PURE__ */ e.jsx(
1229
- te,
1460
+ }, [p]), u)
1461
+ return /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-12", children: /* @__PURE__ */ e.jsx(I, {}) }) });
1462
+ if (o || !a)
1463
+ return /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsx(b, { children: /* @__PURE__ */ e.jsx(
1464
+ he,
1230
1465
  {
1231
1466
  message: "Run not found",
1232
- hint: h?.message || `Run ${s} does not exist`
1467
+ hint: o?.message || `Run ${r} does not exist`
1233
1468
  }
1234
1469
  ) }) });
1235
- const ce = a.backend || {}, ge = a.fingerprints || {}, X = a.data?.params || {}, C = a.data?.metrics || {}, ve = a.data?.tags || {}, le = a.artifacts || [], be = a.errors || [], De = async () => {
1236
- await $(), f();
1237
- }, ke = async () => {
1238
- await G(), n("/runs");
1239
- }, Ae = async (w) => {
1470
+ const se = a.backend || {}, te = a.fingerprints || {}, J = a.data?.params || {}, Z = a.data?.metrics || {}, ne = a.data?.tags || {}, xe = a.artifacts || [], pe = a.errors || [], Be = async () => {
1240
1471
  try {
1241
- const D = t.getArtifactDownloadUrl(a.run_id, w), Ne = await fetch(D);
1242
- if (!Ne.ok) throw new Error("Download failed");
1243
- const _e = await Ne.blob(), W = document.createElement("a");
1244
- W.href = URL.createObjectURL(_e), W.download = `artifact-${w}`, W.click(), URL.revokeObjectURL(W.href), p({ message: "Download started", variant: "success" });
1472
+ await U(), await f(), d(), _({ message: "Baseline updated", variant: "success" });
1245
1473
  } catch {
1246
- p({ message: "Download failed", variant: "error" });
1474
+ _({ message: "Failed to set baseline", variant: "error" });
1475
+ }
1476
+ }, Ie = async () => {
1477
+ try {
1478
+ await H(), m(!1), _({ message: "Run deleted", variant: "success" }), setTimeout(() => t("/runs"), 1e3);
1479
+ } catch {
1480
+ _({ message: "Failed to delete run", variant: "error" }), m(!1);
1481
+ }
1482
+ }, ke = async (y) => {
1483
+ const P = xe[y];
1484
+ try {
1485
+ const ce = n.getArtifactDownloadUrl(a.run_id, y), ge = await fetch(ce);
1486
+ if (!ge.ok) throw new Error("Download failed");
1487
+ const Se = await ge.blob(), le = document.createElement("a");
1488
+ le.href = URL.createObjectURL(Se), le.download = P?.kind || `artifact-${y}`, le.click(), URL.revokeObjectURL(le.href), _({ message: "Download started", variant: "success" });
1489
+ } catch {
1490
+ _({ message: "Download failed", variant: "error" });
1247
1491
  }
1248
1492
  };
1249
- return /* @__PURE__ */ e.jsxs(q, { children: [
1493
+ return /* @__PURE__ */ e.jsxs(V, { children: [
1494
+ S && /* @__PURE__ */ e.jsxs("div", { className: "mb-4 px-4 py-3 bg-[#EFF6FF] border border-[#2563EB]/20 rounded-md text-[#2563EB] text-sm font-medium", children: [
1495
+ 'This run is the current baseline for project "',
1496
+ a.project,
1497
+ '"'
1498
+ ] }),
1250
1499
  /* @__PURE__ */ e.jsxs("div", { className: "page-header", children: [
1251
1500
  /* @__PURE__ */ e.jsxs("div", { children: [
1252
1501
  /* @__PURE__ */ e.jsx("h1", { className: "page-title", children: a.run_name || "Unnamed Run" }),
1253
1502
  /* @__PURE__ */ e.jsx("p", { className: "text-muted text-sm font-mono", children: a.run_id })
1254
1503
  ] }),
1255
1504
  /* @__PURE__ */ e.jsxs("div", { className: "flex gap-2", children: [
1256
- /* @__PURE__ */ e.jsxs(k, { variant: "secondary", size: "sm", onClick: De, disabled: _, children: [
1257
- _ && /* @__PURE__ */ e.jsx(V, {}),
1505
+ /* @__PURE__ */ e.jsx(Fr, { runId: a.run_id, runName: a.run_name }),
1506
+ !S && /* @__PURE__ */ e.jsxs(D, { variant: "secondary", size: "sm", onClick: Be, disabled: w, children: [
1507
+ w && /* @__PURE__ */ e.jsx(I, {}),
1258
1508
  "Set as Baseline"
1259
1509
  ] }),
1260
- /* @__PURE__ */ e.jsx(k, { variant: "ghost-danger", size: "sm", onClick: () => x(!0), children: "Delete" })
1510
+ /* @__PURE__ */ e.jsx(D, { variant: "ghost-danger", size: "sm", onClick: () => m(!0), children: "Delete" })
1261
1511
  ] })
1262
1512
  ] }),
1263
1513
  /* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4 mb-4", children: [
1264
- /* @__PURE__ */ e.jsxs(v, { children: [
1265
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsx(P, { children: "Overview" }) }),
1266
- /* @__PURE__ */ e.jsx(Ge, { items: [
1267
- { label: "Project", value: /* @__PURE__ */ e.jsx(M, { to: `/runs?project=${a.project}`, children: a.project }) },
1514
+ /* @__PURE__ */ e.jsxs(b, { children: [
1515
+ /* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Overview" }) }),
1516
+ /* @__PURE__ */ e.jsx(Je, { items: [
1517
+ { label: "Project", value: /* @__PURE__ */ e.jsx(z, { to: `/runs?project=${a.project}`, children: a.project }) },
1268
1518
  { label: "Name", value: a.run_name || "—" },
1269
1519
  { label: "Adapter", value: a.adapter || "N/A" },
1270
- { label: "Status", value: /* @__PURE__ */ e.jsx(Dr, { status: a.status }) },
1271
- { label: "Created", value: `${a.created_at} (${Te(a.created_at)})` },
1272
- { label: "Backend", value: ce.name || "N/A" },
1520
+ { label: "Status", value: /* @__PURE__ */ e.jsx($s, { status: a.status }) },
1521
+ { label: "Created", value: `${a.created_at} (${Ze(a.created_at)})` },
1522
+ { label: "Backend", value: se.name || "N/A" },
1273
1523
  ...a.group_id ? [{
1274
1524
  label: "Group",
1275
- value: /* @__PURE__ */ e.jsx(M, { to: `/groups/${a.group_id}`, children: a.group_name || K(a.group_id) })
1525
+ value: /* @__PURE__ */ e.jsx(z, { to: `/groups/${a.group_id}`, children: a.group_name || Q(a.group_id) })
1276
1526
  }] : []
1277
1527
  ] })
1278
1528
  ] }),
1279
- /* @__PURE__ */ e.jsxs(v, { children: [
1280
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsx(P, { children: "Fingerprints" }) }),
1281
- /* @__PURE__ */ e.jsx(Ge, { items: [
1282
- { label: "Run", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-sm truncate", children: ge.run || "N/A" }) },
1283
- { label: "Program", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-sm truncate", children: ge.program || "N/A" }) }
1529
+ /* @__PURE__ */ e.jsxs(b, { children: [
1530
+ /* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Fingerprints" }) }),
1531
+ /* @__PURE__ */ e.jsx(Je, { items: [
1532
+ { label: "Run", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-sm truncate", children: te.run || "N/A" }) },
1533
+ { label: "Program", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-sm truncate", children: te.program || "N/A" }) }
1284
1534
  ] })
1285
1535
  ] })
1286
1536
  ] }),
1287
1537
  /* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-4 mb-4", children: [
1288
- /* @__PURE__ */ e.jsxs(v, { children: [
1289
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsx(P, { children: "Parameters" }) }),
1290
- Object.keys(X).length ? /* @__PURE__ */ e.jsx(O, { children: /* @__PURE__ */ e.jsx(F, { children: Object.entries(X).map(([w, D]) => /* @__PURE__ */ e.jsxs(m, { children: [
1291
- /* @__PURE__ */ e.jsx(c, { children: w }),
1292
- /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(D) })
1293
- ] }, w)) }) }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No parameters" })
1538
+ /* @__PURE__ */ e.jsxs(b, { children: [
1539
+ /* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Parameters" }) }),
1540
+ Object.keys(J).length ? /* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsx(B, { children: Object.entries(J).map(([y, P]) => /* @__PURE__ */ e.jsxs(j, { children: [
1541
+ /* @__PURE__ */ e.jsx(c, { children: y }),
1542
+ /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(P) })
1543
+ ] }, y)) }) }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No parameters" })
1294
1544
  ] }),
1295
- /* @__PURE__ */ e.jsxs(v, { children: [
1296
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsx(P, { children: "Metrics" }) }),
1297
- Object.keys(C).length ? /* @__PURE__ */ e.jsx(O, { children: /* @__PURE__ */ e.jsx(F, { children: Object.entries(C).map(([w, D]) => /* @__PURE__ */ e.jsxs(m, { children: [
1298
- /* @__PURE__ */ e.jsx(c, { children: w }),
1299
- /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: typeof D == "number" ? Ns(D) : String(D) })
1300
- ] }, w)) }) }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No metrics" })
1545
+ /* @__PURE__ */ e.jsxs(b, { children: [
1546
+ /* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Metrics" }) }),
1547
+ Object.keys(Z).length ? /* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsx(B, { children: Object.entries(Z).map(([y, P]) => /* @__PURE__ */ e.jsxs(j, { children: [
1548
+ /* @__PURE__ */ e.jsx(c, { children: y }),
1549
+ /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: typeof P == "number" ? Er(P) : String(P) })
1550
+ ] }, y)) }) }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No metrics" })
1301
1551
  ] }),
1302
- /* @__PURE__ */ e.jsxs(v, { children: [
1303
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsx(P, { children: "Tags" }) }),
1304
- Object.keys(ve).length ? /* @__PURE__ */ e.jsx("div", { className: "flex flex-wrap gap-2", children: Object.entries(ve).map(([w, D]) => /* @__PURE__ */ e.jsxs(B, { variant: "gray", children: [
1305
- w,
1552
+ /* @__PURE__ */ e.jsxs(b, { children: [
1553
+ /* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Tags" }) }),
1554
+ Object.keys(ne).length ? /* @__PURE__ */ e.jsx("div", { className: "flex flex-wrap gap-2", children: Object.entries(ne).map(([y, P]) => /* @__PURE__ */ e.jsxs(Y, { variant: "gray", children: [
1555
+ y,
1306
1556
  ": ",
1307
- String(D)
1308
- ] }, w)) }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No tags" })
1557
+ String(P)
1558
+ ] }, y)) }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No tags" })
1309
1559
  ] })
1310
1560
  ] }),
1311
- /* @__PURE__ */ e.jsxs(v, { className: "mb-4", children: [
1312
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsxs(P, { children: [
1561
+ /* @__PURE__ */ e.jsxs(b, { className: "mb-4", children: [
1562
+ /* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsxs(G, { children: [
1313
1563
  "Artifacts (",
1314
- le.length,
1564
+ xe.length,
1315
1565
  ")"
1316
1566
  ] }) }),
1317
- le.length ? /* @__PURE__ */ e.jsxs(O, { children: [
1318
- /* @__PURE__ */ e.jsx(Q, { children: /* @__PURE__ */ e.jsxs(m, { children: [
1319
- /* @__PURE__ */ e.jsx(b, { children: "#" }),
1320
- /* @__PURE__ */ e.jsx(b, { children: "Kind" }),
1321
- /* @__PURE__ */ e.jsx(b, { children: "Role" }),
1322
- /* @__PURE__ */ e.jsx(b, { children: "Media Type" }),
1323
- /* @__PURE__ */ e.jsx(b, { children: "Digest" }),
1324
- /* @__PURE__ */ e.jsx(b, { children: "Actions" })
1567
+ xe.length ? /* @__PURE__ */ e.jsxs(L, { children: [
1568
+ /* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
1569
+ /* @__PURE__ */ e.jsx(N, { children: "#" }),
1570
+ /* @__PURE__ */ e.jsx(N, { children: "Kind" }),
1571
+ /* @__PURE__ */ e.jsx(N, { children: "Role" }),
1572
+ /* @__PURE__ */ e.jsx(N, { children: "Media Type" }),
1573
+ /* @__PURE__ */ e.jsx(N, { children: "Digest" }),
1574
+ /* @__PURE__ */ e.jsx(N, { children: "Actions" })
1325
1575
  ] }) }),
1326
- /* @__PURE__ */ e.jsx(F, { children: le.map((w, D) => /* @__PURE__ */ e.jsxs(m, { children: [
1327
- /* @__PURE__ */ e.jsx(c, { children: D }),
1328
- /* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: w.kind }),
1329
- /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(B, { variant: "gray", children: w.role }) }),
1330
- /* @__PURE__ */ e.jsx(c, { className: "text-muted text-sm", children: w.media_type }),
1331
- /* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: qe(w.digest) }),
1576
+ /* @__PURE__ */ e.jsx(B, { children: xe.map((y, P) => /* @__PURE__ */ e.jsxs(j, { children: [
1577
+ /* @__PURE__ */ e.jsx(c, { children: P }),
1578
+ /* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: y.kind }),
1579
+ /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Y, { variant: "gray", children: y.role }) }),
1580
+ /* @__PURE__ */ e.jsx(c, { className: "text-muted text-sm", children: y.media_type }),
1581
+ /* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: He(y.digest) }),
1332
1582
  /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsxs("div", { className: "flex gap-2", children: [
1333
- /* @__PURE__ */ e.jsx(M, { to: `/runs/${a.run_id}/artifacts/${D}`, children: /* @__PURE__ */ e.jsx(k, { variant: "secondary", size: "sm", children: "View" }) }),
1334
- /* @__PURE__ */ e.jsx(k, { variant: "secondary", size: "sm", onClick: () => Ae(D), children: "Download" })
1583
+ /* @__PURE__ */ e.jsx(z, { to: `/runs/${a.run_id}/artifacts/${P}`, children: /* @__PURE__ */ e.jsx(D, { variant: "secondary", size: "sm", children: "View" }) }),
1584
+ /* @__PURE__ */ e.jsx(D, { variant: "secondary", size: "sm", onClick: () => ke(P), children: "Download" })
1335
1585
  ] }) })
1336
- ] }, D)) })
1586
+ ] }, P)) })
1337
1587
  ] }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No artifacts" })
1338
1588
  ] }),
1339
- be.length > 0 && /* @__PURE__ */ e.jsxs(v, { children: [
1340
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsx(P, { className: "text-danger", children: "Errors" }) }),
1341
- be.map((w, D) => /* @__PURE__ */ e.jsxs("div", { className: "mb-2", children: [
1342
- /* @__PURE__ */ e.jsx("strong", { children: w.type }),
1589
+ pe.length > 0 && /* @__PURE__ */ e.jsxs(b, { children: [
1590
+ /* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { className: "text-danger", children: "Errors" }) }),
1591
+ pe.map((y, P) => /* @__PURE__ */ e.jsxs("div", { className: "mb-2", children: [
1592
+ /* @__PURE__ */ e.jsx("strong", { children: y.type }),
1343
1593
  ": ",
1344
- w.message,
1345
- w.traceback && /* @__PURE__ */ e.jsx("pre", { className: "mt-2", children: w.traceback })
1346
- ] }, D))
1594
+ y.message,
1595
+ y.traceback && /* @__PURE__ */ e.jsx("pre", { className: "mt-2", children: y.traceback })
1596
+ ] }, P))
1347
1597
  ] }),
1348
1598
  /* @__PURE__ */ e.jsxs(
1349
- Es,
1599
+ es,
1350
1600
  {
1351
- open: i,
1352
- onClose: () => x(!1),
1601
+ open: h,
1602
+ onClose: () => m(!1),
1353
1603
  title: "Delete Run",
1354
1604
  actions: /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
1355
- /* @__PURE__ */ e.jsx(k, { variant: "secondary", onClick: () => x(!1), children: "Cancel" }),
1356
- /* @__PURE__ */ e.jsxs(k, { variant: "danger", onClick: ke, disabled: J, children: [
1357
- J && /* @__PURE__ */ e.jsx(V, {}),
1605
+ /* @__PURE__ */ e.jsx(D, { variant: "secondary", onClick: () => m(!1), children: "Cancel" }),
1606
+ /* @__PURE__ */ e.jsxs(D, { variant: "danger", onClick: Ie, disabled: k, children: [
1607
+ k && /* @__PURE__ */ e.jsx(I, {}),
1358
1608
  "Delete"
1359
1609
  ] })
1360
1610
  ] }),
1361
1611
  children: [
1362
1612
  /* @__PURE__ */ e.jsx("p", { children: "Are you sure you want to delete this run?" }),
1363
- /* @__PURE__ */ e.jsx("p", { className: "font-mono text-sm mt-2", children: K(a.run_id) }),
1613
+ /* @__PURE__ */ e.jsx("p", { className: "font-mono text-sm mt-2", children: Q(a.run_id) }),
1364
1614
  /* @__PURE__ */ e.jsx("p", { className: "text-sm text-danger mt-2", children: "This action cannot be undone." })
1365
1615
  ]
1366
1616
  }
1367
1617
  ),
1368
- o && /* @__PURE__ */ e.jsx(
1369
- Ss,
1618
+ p && /* @__PURE__ */ e.jsx(
1619
+ Ce,
1370
1620
  {
1371
- message: o.message,
1372
- variant: o.variant,
1373
- visible: !!o,
1374
- onClose: () => p(null)
1621
+ message: p.message,
1622
+ variant: p.variant,
1623
+ visible: !!p,
1624
+ onClose: () => _(null)
1375
1625
  }
1376
1626
  )
1377
1627
  ] });
1378
1628
  }
1379
- function ks() {
1380
- const { currentWorkspace: s } = Y(), { data: n, loading: t } = ze();
1381
- return /* @__PURE__ */ e.jsxs(q, { children: [
1382
- /* @__PURE__ */ e.jsx(pe, { title: "Projects" }),
1383
- /* @__PURE__ */ e.jsx(v, { children: t ? /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-8", children: /* @__PURE__ */ e.jsx(V, {}) }) : /* @__PURE__ */ e.jsx(Ts, { projects: n ?? [], currentWorkspace: s }) })
1629
+ function Ir() {
1630
+ const { currentWorkspace: r } = K(), { data: t, loading: n } = Le();
1631
+ return /* @__PURE__ */ e.jsxs(V, { children: [
1632
+ /* @__PURE__ */ e.jsx(Ee, { title: "Projects" }),
1633
+ /* @__PURE__ */ e.jsx(b, { children: n ? /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-8", children: /* @__PURE__ */ e.jsx(I, {}) }) : /* @__PURE__ */ e.jsx(Dr, { projects: t ?? [], currentWorkspace: r }) })
1384
1634
  ] });
1385
1635
  }
1386
- function As() {
1387
- const [s, n] = Ce(), { data: t } = ze(), [a, d] = U(s.get("project") || ""), { data: h, loading: f, refetch: i } = ps({ project: a || void 0 }), x = me((o) => {
1388
- d(o);
1389
- const p = new URLSearchParams(s);
1390
- o ? p.set("project", o) : p.delete("project"), n(p, { replace: !0 });
1391
- }, [s, n]);
1392
- return /* @__PURE__ */ e.jsxs(q, { children: [
1393
- /* @__PURE__ */ e.jsx(pe, { title: "Run Groups" }),
1394
- /* @__PURE__ */ e.jsx(v, { className: "mb-4", children: /* @__PURE__ */ e.jsxs(Cr, { children: [
1395
- /* @__PURE__ */ e.jsxs(H, { children: [
1396
- /* @__PURE__ */ e.jsx(Z, { htmlFor: "project", children: "Project" }),
1636
+ function qr() {
1637
+ const [r, t] = $e(), { data: n } = Le(), [a, u] = T(r.get("project") || ""), { data: o, loading: d, refetch: i } = Nr({ project: a || void 0 }), f = _e((h) => {
1638
+ u(h);
1639
+ const m = new URLSearchParams(r);
1640
+ h ? m.set("project", h) : m.delete("project"), t(m, { replace: !0 });
1641
+ }, [r, t]);
1642
+ return /* @__PURE__ */ e.jsxs(V, { children: [
1643
+ /* @__PURE__ */ e.jsx(Ee, { title: "Run Groups" }),
1644
+ /* @__PURE__ */ e.jsx(b, { className: "mb-4", children: /* @__PURE__ */ e.jsxs(Os, { children: [
1645
+ /* @__PURE__ */ e.jsxs(ee, { children: [
1646
+ /* @__PURE__ */ e.jsx(ie, { htmlFor: "project", children: "Project" }),
1397
1647
  /* @__PURE__ */ e.jsxs(
1398
- se,
1648
+ de,
1399
1649
  {
1400
1650
  id: "project",
1401
1651
  value: a,
1402
- onChange: (o) => x(o.target.value),
1652
+ onChange: (h) => f(h.target.value),
1403
1653
  children: [
1404
1654
  /* @__PURE__ */ e.jsx("option", { value: "", children: "All projects" }),
1405
- t?.map((o) => /* @__PURE__ */ e.jsx("option", { value: o.name, children: o.name }, o.name))
1655
+ n?.map((h) => /* @__PURE__ */ e.jsx("option", { value: h.name, children: h.name }, h.name))
1406
1656
  ]
1407
1657
  }
1408
1658
  )
1409
1659
  ] }),
1410
- /* @__PURE__ */ e.jsxs(H, { className: "flex items-end gap-2", children: [
1411
- /* @__PURE__ */ e.jsx(k, { variant: "primary", onClick: () => i(), children: "Filter" }),
1412
- f && /* @__PURE__ */ e.jsx(V, {})
1660
+ /* @__PURE__ */ e.jsxs(ee, { className: "flex items-end gap-2", children: [
1661
+ /* @__PURE__ */ e.jsx(D, { variant: "primary", onClick: () => i(), children: "Filter" }),
1662
+ d && /* @__PURE__ */ e.jsx(I, {})
1413
1663
  ] })
1414
1664
  ] }) }),
1415
- /* @__PURE__ */ e.jsx(v, { children: f && !h ? /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-8", children: /* @__PURE__ */ e.jsx(V, {}) }) : /* @__PURE__ */ e.jsx(Cs, { groups: h ?? [] }) })
1665
+ /* @__PURE__ */ e.jsx(b, { children: d && !o ? /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-8", children: /* @__PURE__ */ e.jsx(I, {}) }) : /* @__PURE__ */ e.jsx(Ar, { groups: o ?? [] }) })
1416
1666
  ] });
1417
1667
  }
1418
- function Os() {
1419
- const { groupId: s } = Ye(), { api: n } = Y(), { data: t, loading: a, error: d, refetch: h } = gs(s), f = je((x) => n.deleteRun(x)), i = async (x) => {
1420
- await f.mutate(x), h();
1668
+ function Ur() {
1669
+ const { groupId: r } = Qe(), { api: t } = K(), { data: n, loading: a, error: u, refetch: o } = _r(r), [d, i] = T(null), f = Re((m) => t.deleteRun(m));
1670
+ je(() => {
1671
+ if (d) {
1672
+ const m = setTimeout(() => i(null), 3e3);
1673
+ return () => clearTimeout(m);
1674
+ }
1675
+ }, [d]);
1676
+ const h = async (m) => {
1677
+ try {
1678
+ await f.mutate(m), i({ message: "Run deleted", variant: "success" }), o();
1679
+ } catch {
1680
+ i({ message: "Failed to delete run", variant: "error" });
1681
+ }
1421
1682
  };
1422
- return a ? /* @__PURE__ */ e.jsx(q, { children: /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-12", children: /* @__PURE__ */ e.jsx(V, {}) }) }) : d || !t ? /* @__PURE__ */ e.jsx(q, { children: /* @__PURE__ */ e.jsx(v, { children: /* @__PURE__ */ e.jsx(te, { message: "Group not found", hint: d?.message }) }) }) : /* @__PURE__ */ e.jsxs(q, { children: [
1683
+ return a ? /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-12", children: /* @__PURE__ */ e.jsx(I, {}) }) }) : u || !n ? /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsx(b, { children: /* @__PURE__ */ e.jsx(he, { message: "Group not found", hint: u?.message }) }) }) : /* @__PURE__ */ e.jsxs(V, { children: [
1423
1684
  /* @__PURE__ */ e.jsx(
1424
- pe,
1685
+ Ee,
1425
1686
  {
1426
1687
  title: /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
1427
1688
  "Group ",
1428
- /* @__PURE__ */ e.jsx("span", { className: "font-mono", children: K(s) })
1689
+ /* @__PURE__ */ e.jsx("span", { className: "font-mono", children: Q(r) })
1429
1690
  ] }),
1430
- subtitle: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-muted", children: s })
1691
+ subtitle: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-muted", children: r })
1431
1692
  }
1432
1693
  ),
1433
- /* @__PURE__ */ e.jsxs(v, { children: [
1434
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsxs(P, { children: [
1694
+ /* @__PURE__ */ e.jsxs(b, { children: [
1695
+ /* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsxs(G, { children: [
1435
1696
  "Runs in Group (",
1436
- t.runs.length,
1697
+ n.runs.length,
1437
1698
  ")"
1438
1699
  ] }) }),
1439
1700
  /* @__PURE__ */ e.jsx(
1440
- Je,
1701
+ rs,
1441
1702
  {
1442
- runs: t.runs,
1443
- onDelete: i,
1703
+ runs: n.runs,
1704
+ onDelete: h,
1444
1705
  loading: f.loading
1445
1706
  }
1446
1707
  )
1447
- ] })
1708
+ ] }),
1709
+ d && /* @__PURE__ */ e.jsx(
1710
+ Ce,
1711
+ {
1712
+ message: d.message,
1713
+ variant: d.variant,
1714
+ visible: !!d,
1715
+ onClose: () => i(null)
1716
+ }
1717
+ )
1448
1718
  ] });
1449
1719
  }
1450
- function xe({ match: s, yesText: n = "✓ Match", noText: t = "✗ Different" }) {
1451
- return /* @__PURE__ */ e.jsx("span", { className: s ? "diff-match" : "diff-mismatch", children: s ? n : t });
1720
+ function Mr({ className: r = "" }) {
1721
+ return /* @__PURE__ */ e.jsx("svg", { className: r, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ e.jsx("polyline", { points: "20 6 9 17 4 12" }) });
1722
+ }
1723
+ function Wr({ className: r = "" }) {
1724
+ return /* @__PURE__ */ e.jsxs("svg", { className: r, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
1725
+ /* @__PURE__ */ e.jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
1726
+ /* @__PURE__ */ e.jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
1727
+ ] });
1728
+ }
1729
+ function Gr({ className: r = "" }) {
1730
+ return /* @__PURE__ */ e.jsxs("svg", { className: r, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
1731
+ /* @__PURE__ */ e.jsx("path", { d: "M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z" }),
1732
+ /* @__PURE__ */ e.jsx("line", { x1: "12", y1: "9", x2: "12", y2: "13" }),
1733
+ /* @__PURE__ */ e.jsx("line", { x1: "12", y1: "17", x2: "12.01", y2: "17" })
1734
+ ] });
1735
+ }
1736
+ function Ke({ className: r = "" }) {
1737
+ return /* @__PURE__ */ e.jsxs("svg", { className: r, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
1738
+ /* @__PURE__ */ e.jsx("circle", { cx: "12", cy: "12", r: "10" }),
1739
+ /* @__PURE__ */ e.jsx("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
1740
+ /* @__PURE__ */ e.jsx("line", { x1: "12", y1: "8", x2: "12.01", y2: "8" })
1741
+ ] });
1742
+ }
1743
+ function Ne({ match: r }) {
1744
+ return r ? /* @__PURE__ */ e.jsxs("span", { className: "diff-match inline-flex items-center gap-1.5", children: [
1745
+ /* @__PURE__ */ e.jsx(Mr, { className: "flex-shrink-0" }),
1746
+ /* @__PURE__ */ e.jsx("span", { className: "font-medium", children: "Match" })
1747
+ ] }) : /* @__PURE__ */ e.jsxs("span", { className: "diff-mismatch inline-flex items-center gap-1.5", children: [
1748
+ /* @__PURE__ */ e.jsx(Wr, { className: "flex-shrink-0" }),
1749
+ /* @__PURE__ */ e.jsx("span", { className: "font-medium", children: "Different" })
1750
+ ] });
1751
+ }
1752
+ function Vr({ warnings: r }) {
1753
+ return !r || r.length === 0 ? null : /* @__PURE__ */ e.jsx("div", { className: "alert alert-warning mb-4", children: /* @__PURE__ */ e.jsxs("div", { className: "flex gap-3", children: [
1754
+ /* @__PURE__ */ e.jsx(Gr, { className: "flex-shrink-0 mt-0.5" }),
1755
+ /* @__PURE__ */ e.jsxs("div", { className: "flex-1", children: [
1756
+ /* @__PURE__ */ e.jsx("p", { className: "font-semibold mb-1", children: r.length === 1 ? "Warning" : `${r.length} Warnings` }),
1757
+ /* @__PURE__ */ e.jsx("ul", { className: "space-y-1", children: r.map((t, n) => /* @__PURE__ */ e.jsx("li", { className: "text-sm", children: t }, n)) })
1758
+ ] })
1759
+ ] }) });
1760
+ }
1761
+ function Cs({
1762
+ label: r,
1763
+ run: t,
1764
+ variant: n
1765
+ }) {
1766
+ return /* @__PURE__ */ e.jsxs("div", { className: "relative", children: [
1767
+ /* @__PURE__ */ e.jsx("div", { className: `absolute top-0 left-0 w-1 h-full rounded-l ${n === "a" ? "bg-info" : "bg-primary"}` }),
1768
+ /* @__PURE__ */ e.jsxs("div", { className: "pl-4", children: [
1769
+ /* @__PURE__ */ e.jsx("p", { className: `text-xs font-semibold uppercase tracking-wider mb-2 ${n === "a" ? "text-info" : "text-primary"}`, children: r }),
1770
+ /* @__PURE__ */ e.jsx(z, { to: `/runs/${t.run_id}`, className: "text-base font-medium hover:underline", children: t.run_name || "Unnamed Run" }),
1771
+ /* @__PURE__ */ e.jsx("p", { className: "font-mono text-xs mt-1 text-muted", children: Q(t.run_id) }),
1772
+ /* @__PURE__ */ e.jsxs("p", { className: "text-sm mt-1 text-muted", children: [
1773
+ t.project,
1774
+ " · ",
1775
+ Ze(t.created_at)
1776
+ ] })
1777
+ ] })
1778
+ ] });
1452
1779
  }
1453
- function Fs() {
1454
- const [s, n] = Ce(), { data: t } = Sr({ limit: 100 }), a = t?.runs ?? [], [d, h] = U(s.get("a") || ""), [f, i] = U(s.get("b") || ""), x = (o) => {
1455
- o.preventDefault(), d && f && n({ a: d, b: f });
1780
+ function ae({
1781
+ children: r,
1782
+ badge: t
1783
+ }) {
1784
+ return /* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: /* @__PURE__ */ e.jsxs("span", { className: "flex items-center gap-2 flex-wrap", children: [
1785
+ r,
1786
+ t && /* @__PURE__ */ e.jsx(Y, { variant: t.variant, children: t.label })
1787
+ ] }) }) });
1788
+ }
1789
+ function zr({
1790
+ tvd: r,
1791
+ noiseContext: t
1792
+ }) {
1793
+ if (r === 0)
1794
+ return /* @__PURE__ */ e.jsx("p", { className: "text-sm mt-4 text-success", children: "✓ Distributions are identical (TVD = 0)" });
1795
+ if (!t) return null;
1796
+ const { p_value: n, noise_ratio: a } = t;
1797
+ return n != null ? n >= 0.1 ? /* @__PURE__ */ e.jsx("p", { className: "text-sm mt-4 text-success", children: "✓ Consistent with sampling noise — difference is not statistically significant" }) : n >= 0.05 ? /* @__PURE__ */ e.jsxs("p", { className: "text-sm mt-4 text-warning", children: [
1798
+ "⚠ Borderline (p=",
1799
+ n.toFixed(2),
1800
+ ") — consider increasing shots"
1801
+ ] }) : /* @__PURE__ */ e.jsxs("p", { className: "text-sm mt-4 text-danger", children: [
1802
+ "✗ Statistically significant difference (p=",
1803
+ n.toFixed(2),
1804
+ ") — results show meaningful divergence"
1805
+ ] }) : a != null ? a < 1.5 ? /* @__PURE__ */ e.jsx("p", { className: "text-sm mt-4 text-success", children: "✓ TVD is within expected shot noise range" }) : a < 3 ? /* @__PURE__ */ e.jsxs("p", { className: "text-sm mt-4 text-warning", children: [
1806
+ "⚠ Ambiguous (",
1807
+ a.toFixed(1),
1808
+ "× expected noise) — consider increasing shots"
1809
+ ] }) : /* @__PURE__ */ e.jsxs("p", { className: "text-sm mt-4 text-danger", children: [
1810
+ "✗ TVD exceeds expected noise (",
1811
+ a.toFixed(1),
1812
+ "×) — results show meaningful differences"
1813
+ ] }) : null;
1814
+ }
1815
+ function Yr() {
1816
+ const [r, t] = $e(), { data: n } = Ds({ limit: 100 }), a = n?.runs ?? [], [u, o] = T(r.get("a") || ""), [d, i] = T(r.get("b") || ""), [f, h] = T(""), m = (p) => {
1817
+ if (p.preventDefault(), !u || !d) {
1818
+ h("Please select both runs to compare");
1819
+ return;
1820
+ }
1821
+ if (u === d) {
1822
+ h("Please select two different runs");
1823
+ return;
1824
+ }
1825
+ h(""), t({ a: u, b: d });
1456
1826
  };
1457
1827
  return /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
1458
- /* @__PURE__ */ e.jsx(v, { children: /* @__PURE__ */ e.jsxs("form", { onSubmit: x, children: [
1828
+ /* @__PURE__ */ e.jsx(b, { children: /* @__PURE__ */ e.jsxs("form", { onSubmit: m, children: [
1459
1829
  /* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4 mb-4", children: [
1460
- /* @__PURE__ */ e.jsxs(H, { children: [
1461
- /* @__PURE__ */ e.jsx(Z, { htmlFor: "a", children: "Run A (Baseline)" }),
1462
- /* @__PURE__ */ e.jsxs(se, { id: "a", value: d, onChange: (o) => h(o.target.value), required: !0, children: [
1463
- /* @__PURE__ */ e.jsx("option", { value: "", children: "Select run..." }),
1464
- a.map((o) => /* @__PURE__ */ e.jsxs("option", { value: o.run_id, children: [
1465
- o.run_name || "Unnamed",
1466
- " (",
1467
- K(o.run_id),
1468
- ") ",
1469
- o.project
1470
- ] }, o.run_id))
1471
- ] })
1830
+ /* @__PURE__ */ e.jsxs(ee, { children: [
1831
+ /* @__PURE__ */ e.jsx(ie, { htmlFor: "a", children: "Run A (Baseline)" }),
1832
+ /* @__PURE__ */ e.jsxs(
1833
+ de,
1834
+ {
1835
+ id: "a",
1836
+ value: u,
1837
+ onChange: (p) => {
1838
+ o(p.target.value), h("");
1839
+ },
1840
+ children: [
1841
+ /* @__PURE__ */ e.jsx("option", { value: "", children: "Select run..." }),
1842
+ a.map((p) => /* @__PURE__ */ e.jsxs("option", { value: p.run_id, children: [
1843
+ p.run_name || "Unnamed",
1844
+ " (",
1845
+ Q(p.run_id),
1846
+ ") — ",
1847
+ p.project
1848
+ ] }, p.run_id))
1849
+ ]
1850
+ }
1851
+ )
1472
1852
  ] }),
1473
- /* @__PURE__ */ e.jsxs(H, { children: [
1474
- /* @__PURE__ */ e.jsx(Z, { htmlFor: "b", children: "Run B (Candidate)" }),
1475
- /* @__PURE__ */ e.jsxs(se, { id: "b", value: f, onChange: (o) => i(o.target.value), required: !0, children: [
1476
- /* @__PURE__ */ e.jsx("option", { value: "", children: "Select run..." }),
1477
- a.map((o) => /* @__PURE__ */ e.jsxs("option", { value: o.run_id, children: [
1478
- o.run_name || "Unnamed",
1479
- " (",
1480
- K(o.run_id),
1481
- ") ",
1482
- o.project
1483
- ] }, o.run_id))
1484
- ] })
1853
+ /* @__PURE__ */ e.jsxs(ee, { children: [
1854
+ /* @__PURE__ */ e.jsx(ie, { htmlFor: "b", children: "Run B (Candidate)" }),
1855
+ /* @__PURE__ */ e.jsxs(
1856
+ de,
1857
+ {
1858
+ id: "b",
1859
+ value: d,
1860
+ onChange: (p) => {
1861
+ i(p.target.value), h("");
1862
+ },
1863
+ children: [
1864
+ /* @__PURE__ */ e.jsx("option", { value: "", children: "Select run..." }),
1865
+ a.map((p) => /* @__PURE__ */ e.jsxs("option", { value: p.run_id, children: [
1866
+ p.run_name || "Unnamed",
1867
+ " (",
1868
+ Q(p.run_id),
1869
+ ") — ",
1870
+ p.project
1871
+ ] }, p.run_id))
1872
+ ]
1873
+ }
1874
+ )
1485
1875
  ] })
1486
1876
  ] }),
1487
- /* @__PURE__ */ e.jsx(k, { type: "submit", variant: "primary", disabled: !d || !f, children: "Compare" })
1877
+ f && /* @__PURE__ */ e.jsx("p", { className: "text-sm mb-3 text-danger", children: f }),
1878
+ /* @__PURE__ */ e.jsx(D, { type: "submit", variant: "primary", children: "Compare" })
1488
1879
  ] }) }),
1489
- /* @__PURE__ */ e.jsxs(v, { className: "mt-4", children: [
1490
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsx(P, { children: "Tips" }) }),
1491
- /* @__PURE__ */ e.jsxs("ul", { className: "text-muted text-sm list-disc pl-6 space-y-1", children: [
1492
- /* @__PURE__ */ e.jsx("li", { children: "Select two runs to compare their parameters, metrics, and artifacts" }),
1493
- /* @__PURE__ */ e.jsx("li", { children: "The diff will show changed values and compute TVD for result distributions" }),
1494
- /* @__PURE__ */ e.jsx("li", { children: "You can also compare from the run detail page" })
1880
+ /* @__PURE__ */ e.jsxs(b, { className: "mt-4", children: [
1881
+ /* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "How it works" }) }),
1882
+ /* @__PURE__ */ e.jsxs("div", { className: "space-y-2 text-sm text-muted", children: [
1883
+ /* @__PURE__ */ e.jsxs("div", { className: "flex items-start gap-2", children: [
1884
+ /* @__PURE__ */ e.jsx(Ke, { className: "flex-shrink-0 mt-0.5" }),
1885
+ /* @__PURE__ */ e.jsx("span", { children: "Select two runs to compare their parameters, metrics, and artifacts" })
1886
+ ] }),
1887
+ /* @__PURE__ */ e.jsxs("div", { className: "flex items-start gap-2", children: [
1888
+ /* @__PURE__ */ e.jsx(Ke, { className: "flex-shrink-0 mt-0.5" }),
1889
+ /* @__PURE__ */ e.jsx("span", { children: "The diff shows changed values and computes TVD for result distributions" })
1890
+ ] }),
1891
+ /* @__PURE__ */ e.jsxs("div", { className: "flex items-start gap-2", children: [
1892
+ /* @__PURE__ */ e.jsx(Ke, { className: "flex-shrink-0 mt-0.5" }),
1893
+ /* @__PURE__ */ e.jsx("span", { children: "You can also compare from the run detail page" })
1894
+ ] })
1495
1895
  ] })
1496
1896
  ] })
1497
1897
  ] });
1498
1898
  }
1499
- function $s({ runIdA: s, runIdB: n }) {
1500
- const { data: t, loading: a, error: d } = vs(s, n);
1501
- if (a) return /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-12", children: /* @__PURE__ */ e.jsx(V, {}) });
1502
- if (d || !t) return /* @__PURE__ */ e.jsx(v, { children: /* @__PURE__ */ e.jsx(te, { message: "Failed to load diff", hint: d?.message }) });
1503
- const { run_a: h, run_b: f, report: i } = t;
1899
+ function Kr({ runIdA: r, runIdB: t }) {
1900
+ const { data: n, loading: a, error: u } = wr(r, t);
1901
+ if (a)
1902
+ return /* @__PURE__ */ e.jsx(b, { children: /* @__PURE__ */ e.jsxs("div", { className: "flex flex-col items-center justify-center py-12 gap-3", children: [
1903
+ /* @__PURE__ */ e.jsx(I, {}),
1904
+ /* @__PURE__ */ e.jsx("p", { className: "text-sm text-muted", children: "Comparing runs..." })
1905
+ ] }) });
1906
+ if (u || !n)
1907
+ return /* @__PURE__ */ e.jsx(b, { children: /* @__PURE__ */ e.jsx(he, { message: "Failed to load diff", hint: u?.message }) });
1908
+ const { run_a: o, run_b: d, report: i } = n, f = i.device_drift?.significant_drift ? { variant: "warning", label: "Drift Detected" } : i.device_drift?.has_calibration_data ? { variant: "success", label: "Stable" } : { variant: "gray", label: "No Data" };
1504
1909
  return /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
1505
- i.warnings && i.warnings.length > 0 && /* @__PURE__ */ e.jsxs("div", { className: "alert alert-warning mb-4", children: [
1506
- /* @__PURE__ */ e.jsx("strong", { children: "Warnings:" }),
1507
- /* @__PURE__ */ e.jsx("ul", { className: "list-disc pl-6 mt-1", children: i.warnings.map((x, o) => /* @__PURE__ */ e.jsx("li", { children: x }, o)) })
1508
- ] }),
1509
- /* @__PURE__ */ e.jsx(v, { className: "mb-4", children: /* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
1510
- /* @__PURE__ */ e.jsxs("div", { children: [
1511
- /* @__PURE__ */ e.jsx("h3", { className: "text-sm text-muted uppercase tracking-wider mb-1", children: "Run A (Baseline)" }),
1512
- /* @__PURE__ */ e.jsx("p", { children: /* @__PURE__ */ e.jsx(M, { to: `/runs/${h.run_id}`, children: h.run_name || "Unnamed Run" }) }),
1513
- /* @__PURE__ */ e.jsx("p", { className: "font-mono text-sm text-muted", children: K(h.run_id) }),
1514
- /* @__PURE__ */ e.jsxs("p", { className: "text-muted text-sm", children: [
1515
- h.project,
1516
- " · ",
1517
- Te(h.created_at)
1518
- ] })
1519
- ] }),
1520
- /* @__PURE__ */ e.jsxs("div", { children: [
1521
- /* @__PURE__ */ e.jsx("h3", { className: "text-sm text-muted uppercase tracking-wider mb-1", children: "Run B (Candidate)" }),
1522
- /* @__PURE__ */ e.jsx("p", { children: /* @__PURE__ */ e.jsx(M, { to: `/runs/${f.run_id}`, children: f.run_name || "Unnamed Run" }) }),
1523
- /* @__PURE__ */ e.jsx("p", { className: "font-mono text-sm text-muted", children: K(f.run_id) }),
1524
- /* @__PURE__ */ e.jsxs("p", { className: "text-muted text-sm", children: [
1525
- f.project,
1526
- " · ",
1527
- Te(f.created_at)
1528
- ] })
1529
- ] })
1910
+ /* @__PURE__ */ e.jsx(Vr, { warnings: i.warnings || [] }),
1911
+ /* @__PURE__ */ e.jsx(b, { className: "mb-4", children: /* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
1912
+ /* @__PURE__ */ e.jsx(Cs, { label: "Run A (Baseline)", run: o, variant: "a" }),
1913
+ /* @__PURE__ */ e.jsx(Cs, { label: "Run B (Candidate)", run: d, variant: "b" })
1530
1914
  ] }) }),
1531
1915
  /* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4 mb-4", children: [
1532
- /* @__PURE__ */ e.jsxs(v, { children: [
1533
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsx(P, { children: "Metadata" }) }),
1534
- /* @__PURE__ */ e.jsx(O, { children: /* @__PURE__ */ e.jsxs(F, { children: [
1535
- /* @__PURE__ */ e.jsxs(m, { children: [
1916
+ /* @__PURE__ */ e.jsxs(b, { children: [
1917
+ /* @__PURE__ */ e.jsx(ae, { children: "Metadata" }),
1918
+ /* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
1919
+ /* @__PURE__ */ e.jsxs(j, { children: [
1536
1920
  /* @__PURE__ */ e.jsx(c, { children: "Project" }),
1537
- /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(xe, { match: i.metadata.project_match }) })
1921
+ /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Ne, { match: i.metadata.project_match }) })
1538
1922
  ] }),
1539
- /* @__PURE__ */ e.jsxs(m, { children: [
1923
+ /* @__PURE__ */ e.jsxs(j, { children: [
1540
1924
  /* @__PURE__ */ e.jsx(c, { children: "Backend" }),
1541
- /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(xe, { match: i.metadata.backend_match }) })
1925
+ /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Ne, { match: i.metadata.backend_match }) })
1542
1926
  ] }),
1543
1927
  !i.metadata.project_match && /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
1544
- /* @__PURE__ */ e.jsxs(m, { children: [
1545
- /* @__PURE__ */ e.jsx(c, { className: "text-muted text-sm", children: "Project A" }),
1928
+ /* @__PURE__ */ e.jsxs(j, { children: [
1929
+ /* @__PURE__ */ e.jsx(c, { className: "text-sm text-muted", children: "Project A" }),
1546
1930
  /* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: i.metadata.project_a || "N/A" })
1547
1931
  ] }),
1548
- /* @__PURE__ */ e.jsxs(m, { children: [
1549
- /* @__PURE__ */ e.jsx(c, { className: "text-muted text-sm", children: "Project B" }),
1932
+ /* @__PURE__ */ e.jsxs(j, { children: [
1933
+ /* @__PURE__ */ e.jsx(c, { className: "text-sm text-muted", children: "Project B" }),
1550
1934
  /* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: i.metadata.project_b || "N/A" })
1551
1935
  ] })
1552
1936
  ] }),
1553
1937
  !i.metadata.backend_match && /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
1554
- /* @__PURE__ */ e.jsxs(m, { children: [
1555
- /* @__PURE__ */ e.jsx(c, { className: "text-muted text-sm", children: "Backend A" }),
1938
+ /* @__PURE__ */ e.jsxs(j, { children: [
1939
+ /* @__PURE__ */ e.jsx(c, { className: "text-sm text-muted", children: "Backend A" }),
1556
1940
  /* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: i.metadata.backend_a || "N/A" })
1557
1941
  ] }),
1558
- /* @__PURE__ */ e.jsxs(m, { children: [
1559
- /* @__PURE__ */ e.jsx(c, { className: "text-muted text-sm", children: "Backend B" }),
1942
+ /* @__PURE__ */ e.jsxs(j, { children: [
1943
+ /* @__PURE__ */ e.jsx(c, { className: "text-sm text-muted", children: "Backend B" }),
1560
1944
  /* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: i.metadata.backend_b || "N/A" })
1561
1945
  ] })
1562
1946
  ] })
1563
1947
  ] }) })
1564
1948
  ] }),
1565
- /* @__PURE__ */ e.jsxs(v, { children: [
1566
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsx(P, { children: "Fingerprints" }) }),
1567
- /* @__PURE__ */ e.jsx(O, { children: /* @__PURE__ */ e.jsxs(F, { children: [
1568
- /* @__PURE__ */ e.jsxs(m, { children: [
1949
+ /* @__PURE__ */ e.jsxs(b, { children: [
1950
+ /* @__PURE__ */ e.jsx(ae, { children: "Fingerprints" }),
1951
+ /* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
1952
+ /* @__PURE__ */ e.jsxs(j, { children: [
1569
1953
  /* @__PURE__ */ e.jsx(c, { children: "Run A" }),
1570
- /* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: qe(i.fingerprints.a) })
1954
+ /* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: He(i.fingerprints.a) })
1571
1955
  ] }),
1572
- /* @__PURE__ */ e.jsxs(m, { children: [
1956
+ /* @__PURE__ */ e.jsxs(j, { children: [
1573
1957
  /* @__PURE__ */ e.jsx(c, { children: "Run B" }),
1574
- /* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: qe(i.fingerprints.b) })
1958
+ /* @__PURE__ */ e.jsx(c, { className: "font-mono text-sm", children: He(i.fingerprints.b) })
1575
1959
  ] }),
1576
- /* @__PURE__ */ e.jsxs(m, { children: [
1960
+ /* @__PURE__ */ e.jsxs(j, { children: [
1577
1961
  /* @__PURE__ */ e.jsx(c, { children: "Match" }),
1578
- /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(xe, { match: i.fingerprints.a === i.fingerprints.b, yesText: "✓ Yes", noText: "✗ No" }) })
1962
+ /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Ne, { match: i.fingerprints.a === i.fingerprints.b }) })
1579
1963
  ] })
1580
1964
  ] }) })
1581
1965
  ] })
1582
1966
  ] }),
1583
1967
  /* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4 mb-4", children: [
1584
- /* @__PURE__ */ e.jsxs(v, { children: [
1585
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsxs(P, { children: [
1586
- "Program",
1587
- i.program.exact_match ? /* @__PURE__ */ e.jsx(B, { variant: "success", children: "Exact Match" }) : i.program.structural_match ? /* @__PURE__ */ e.jsx(B, { variant: "info", children: "Structural Match" }) : /* @__PURE__ */ e.jsx(B, { variant: "warning", children: "Different" })
1588
- ] }) }),
1589
- /* @__PURE__ */ e.jsx(O, { children: /* @__PURE__ */ e.jsxs(F, { children: [
1590
- /* @__PURE__ */ e.jsxs(m, { children: [
1968
+ /* @__PURE__ */ e.jsxs(b, { children: [
1969
+ /* @__PURE__ */ e.jsx(
1970
+ ae,
1971
+ {
1972
+ badge: {
1973
+ variant: i.program.exact_match ? "success" : i.program.structural_match ? "info" : "warning",
1974
+ label: i.program.exact_match ? "Exact Match" : i.program.structural_match ? "Structural Match" : "Different"
1975
+ },
1976
+ children: "Program"
1977
+ }
1978
+ ),
1979
+ /* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
1980
+ /* @__PURE__ */ e.jsxs(j, { children: [
1591
1981
  /* @__PURE__ */ e.jsx(c, { children: "Exact Match" }),
1592
- /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(xe, { match: i.program.exact_match, yesText: "✓ Yes", noText: "✗ No" }) })
1982
+ /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Ne, { match: i.program.exact_match }) })
1593
1983
  ] }),
1594
- /* @__PURE__ */ e.jsxs(m, { children: [
1984
+ /* @__PURE__ */ e.jsxs(j, { children: [
1595
1985
  /* @__PURE__ */ e.jsx(c, { children: "Structural Match" }),
1596
- /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(xe, { match: i.program.structural_match, yesText: "✓ Yes", noText: "✗ No" }) })
1986
+ /* @__PURE__ */ e.jsx(c, { children: /* @__PURE__ */ e.jsx(Ne, { match: i.program.structural_match }) })
1597
1987
  ] })
1598
1988
  ] }) })
1599
1989
  ] }),
1600
- /* @__PURE__ */ e.jsxs(v, { children: [
1601
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsxs(P, { children: [
1602
- "Device Calibration",
1603
- i.device_drift?.significant_drift ? /* @__PURE__ */ e.jsx(B, { variant: "warning", children: "Drifted" }) : i.device_drift?.has_calibration_data ? /* @__PURE__ */ e.jsx(B, { variant: "success", children: "Stable" }) : /* @__PURE__ */ e.jsx(B, { variant: "gray", children: "N/A" })
1604
- ] }) }),
1605
- i.device_drift?.significant_drift ? /* @__PURE__ */ e.jsx("p", { className: "text-sm text-warning", children: "⚠ Significant calibration drift detected" }) : i.device_drift?.has_calibration_data ? /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "Calibration within acceptable thresholds" }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No calibration data available" })
1990
+ /* @__PURE__ */ e.jsxs(b, { children: [
1991
+ /* @__PURE__ */ e.jsx(ae, { badge: f, children: "Device Calibration" }),
1992
+ i.device_drift?.significant_drift ? /* @__PURE__ */ e.jsx("p", { className: "text-sm text-warning", children: "Significant calibration drift detected between runs" }) : i.device_drift?.has_calibration_data ? /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "Calibration within acceptable thresholds" }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "No calibration data available" })
1606
1993
  ] })
1607
1994
  ] }),
1608
- /* @__PURE__ */ e.jsxs(v, { className: "mb-4", children: [
1609
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsxs(P, { children: [
1610
- "Parameters ",
1611
- /* @__PURE__ */ e.jsx(B, { variant: i.params.match ? "success" : "warning", children: i.params.match ? "Match" : "Different" })
1612
- ] }) }),
1613
- i.params.match ? /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "All parameters match" }) : /* @__PURE__ */ e.jsx(e.Fragment, { children: i.params.changed && Object.keys(i.params.changed).length > 0 && /* @__PURE__ */ e.jsxs(O, { children: [
1614
- /* @__PURE__ */ e.jsx(Q, { children: /* @__PURE__ */ e.jsxs(m, { children: [
1615
- /* @__PURE__ */ e.jsx(b, { children: "Parameter" }),
1616
- /* @__PURE__ */ e.jsx(b, { children: "Run A" }),
1617
- /* @__PURE__ */ e.jsx(b, { children: "Run B" })
1995
+ /* @__PURE__ */ e.jsxs(b, { className: "mb-4", children: [
1996
+ /* @__PURE__ */ e.jsx(ae, { badge: { variant: i.params.match ? "success" : "warning", label: i.params.match ? "Match" : "Different" }, children: "Parameters" }),
1997
+ i.params.match ? /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "All parameters match" }) : /* @__PURE__ */ e.jsx(e.Fragment, { children: i.params.changed && Object.keys(i.params.changed).length > 0 && /* @__PURE__ */ e.jsxs(L, { children: [
1998
+ /* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
1999
+ /* @__PURE__ */ e.jsx(N, { children: "Parameter" }),
2000
+ /* @__PURE__ */ e.jsx(N, { children: "Run A" }),
2001
+ /* @__PURE__ */ e.jsx(N, { children: "Run B" })
1618
2002
  ] }) }),
1619
- /* @__PURE__ */ e.jsx(F, { children: Object.entries(i.params.changed).map(([x, o]) => /* @__PURE__ */ e.jsxs(m, { children: [
1620
- /* @__PURE__ */ e.jsx(c, { children: x }),
1621
- /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(o.a) }),
1622
- /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(o.b) })
1623
- ] }, x)) })
2003
+ /* @__PURE__ */ e.jsx(B, { children: Object.entries(i.params.changed).map(([h, m]) => /* @__PURE__ */ e.jsxs(j, { children: [
2004
+ /* @__PURE__ */ e.jsx(c, { children: h }),
2005
+ /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(m.a) }),
2006
+ /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(m.b) })
2007
+ ] }, h)) })
1624
2008
  ] }) })
1625
2009
  ] }),
1626
- /* @__PURE__ */ e.jsxs(v, { className: "mb-4", children: [
1627
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsxs(P, { children: [
1628
- "Metrics ",
1629
- /* @__PURE__ */ e.jsx(B, { variant: i.metrics.match ? "success" : "warning", children: i.metrics.match ? "Match" : "Different" })
1630
- ] }) }),
1631
- i.metrics.match ? /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "All metrics match" }) : /* @__PURE__ */ e.jsx(e.Fragment, { children: i.metrics.changed && Object.keys(i.metrics.changed).length > 0 && /* @__PURE__ */ e.jsxs(O, { children: [
1632
- /* @__PURE__ */ e.jsx(Q, { children: /* @__PURE__ */ e.jsxs(m, { children: [
1633
- /* @__PURE__ */ e.jsx(b, { children: "Metric" }),
1634
- /* @__PURE__ */ e.jsx(b, { children: "Run A" }),
1635
- /* @__PURE__ */ e.jsx(b, { children: "Run B" })
2010
+ /* @__PURE__ */ e.jsxs(b, { className: "mb-4", children: [
2011
+ /* @__PURE__ */ e.jsx(ae, { badge: { variant: i.metrics.match ? "success" : "warning", label: i.metrics.match ? "Match" : "Different" }, children: "Metrics" }),
2012
+ i.metrics.match ? /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "All metrics match" }) : /* @__PURE__ */ e.jsx(e.Fragment, { children: i.metrics.changed && Object.keys(i.metrics.changed).length > 0 && /* @__PURE__ */ e.jsxs(L, { children: [
2013
+ /* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
2014
+ /* @__PURE__ */ e.jsx(N, { children: "Metric" }),
2015
+ /* @__PURE__ */ e.jsx(N, { children: "Run A" }),
2016
+ /* @__PURE__ */ e.jsx(N, { children: "Run B" })
1636
2017
  ] }) }),
1637
- /* @__PURE__ */ e.jsx(F, { children: Object.entries(i.metrics.changed).map(([x, o]) => /* @__PURE__ */ e.jsxs(m, { children: [
1638
- /* @__PURE__ */ e.jsx(c, { children: x }),
1639
- /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: o.a }),
1640
- /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: o.b })
1641
- ] }, x)) })
2018
+ /* @__PURE__ */ e.jsx(B, { children: Object.entries(i.metrics.changed).map(([h, m]) => /* @__PURE__ */ e.jsxs(j, { children: [
2019
+ /* @__PURE__ */ e.jsx(c, { children: h }),
2020
+ /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: m.a }),
2021
+ /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: m.b })
2022
+ ] }, h)) })
1642
2023
  ] }) })
1643
2024
  ] }),
1644
- i.circuit_diff && /* @__PURE__ */ e.jsxs(v, { className: "mb-4", children: [
1645
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsxs(P, { children: [
1646
- "Circuit",
1647
- /* @__PURE__ */ e.jsx(B, { variant: i.circuit_diff.match ? "success" : "warning", children: i.circuit_diff.match ? "Match" : "Different" })
1648
- ] }) }),
1649
- i.circuit_diff.match ? /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "Circuit structure matches" }) : /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
1650
- i.circuit_diff.changed && Object.keys(i.circuit_diff.changed).length > 0 && /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
1651
- /* @__PURE__ */ e.jsx("h4", { className: "text-sm text-muted mb-2", children: "Changed" }),
1652
- /* @__PURE__ */ e.jsxs(O, { children: [
1653
- /* @__PURE__ */ e.jsx(Q, { children: /* @__PURE__ */ e.jsxs(m, { children: [
1654
- /* @__PURE__ */ e.jsx(b, { children: "Property" }),
1655
- /* @__PURE__ */ e.jsx(b, { children: "Run A" }),
1656
- /* @__PURE__ */ e.jsx(b, { children: "Run B" }),
1657
- /* @__PURE__ */ e.jsx(b, { children: "Delta" })
2025
+ i.circuit_diff && /* @__PURE__ */ e.jsxs(b, { className: "mb-4", children: [
2026
+ /* @__PURE__ */ e.jsx(ae, { badge: { variant: i.circuit_diff.match ? "success" : "warning", label: i.circuit_diff.match ? "Match" : "Different" }, children: "Circuit" }),
2027
+ i.circuit_diff.match ? /* @__PURE__ */ e.jsx("p", { className: "text-muted", children: "Circuit structure matches" }) : /* @__PURE__ */ e.jsxs("div", { className: "space-y-4", children: [
2028
+ i.circuit_diff.changed && Object.keys(i.circuit_diff.changed).length > 0 && /* @__PURE__ */ e.jsxs("div", { children: [
2029
+ /* @__PURE__ */ e.jsx("h4", { className: "text-sm font-medium mb-2 text-muted", children: "Changed Properties" }),
2030
+ /* @__PURE__ */ e.jsxs(L, { children: [
2031
+ /* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
2032
+ /* @__PURE__ */ e.jsx(N, { children: "Property" }),
2033
+ /* @__PURE__ */ e.jsx(N, { children: "Run A" }),
2034
+ /* @__PURE__ */ e.jsx(N, { children: "Run B" }),
2035
+ /* @__PURE__ */ e.jsx(N, { children: "Delta" })
1658
2036
  ] }) }),
1659
- /* @__PURE__ */ e.jsx(F, { children: Object.entries(i.circuit_diff.changed).map(([x, o]) => /* @__PURE__ */ e.jsxs(m, { children: [
1660
- /* @__PURE__ */ e.jsx(c, { children: o.label || x }),
1661
- /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(o.a) }),
1662
- /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(o.b) }),
1663
- /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: o.delta != null && /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
1664
- o.delta > 0 ? "+" : "",
1665
- o.delta,
1666
- o.pct != null && ` (${o.pct > 0 ? "+" : ""}${o.pct.toFixed(1)}%)`
2037
+ /* @__PURE__ */ e.jsx(B, { children: Object.entries(i.circuit_diff.changed).map(([h, m]) => /* @__PURE__ */ e.jsxs(j, { children: [
2038
+ /* @__PURE__ */ e.jsx(c, { children: m.label || h }),
2039
+ /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(m.a) }),
2040
+ /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: String(m.b) }),
2041
+ /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: m.delta != null && /* @__PURE__ */ e.jsxs("span", { className: m.delta > 0 ? "text-danger" : "text-success", children: [
2042
+ m.delta > 0 ? "+" : "",
2043
+ m.delta,
2044
+ m.pct != null && ` (${m.pct > 0 ? "+" : ""}${m.pct.toFixed(1)}%)`
1667
2045
  ] }) })
1668
- ] }, x)) })
2046
+ ] }, h)) })
1669
2047
  ] })
1670
2048
  ] }),
1671
- i.circuit_diff.is_clifford_changed && /* @__PURE__ */ e.jsxs("div", { className: "mt-4", children: [
1672
- /* @__PURE__ */ e.jsx("h4", { className: "text-sm text-muted mb-2", children: "Clifford Status" }),
1673
- /* @__PURE__ */ e.jsx(O, { children: /* @__PURE__ */ e.jsxs(F, { children: [
1674
- /* @__PURE__ */ e.jsxs(m, { children: [
2049
+ i.circuit_diff.is_clifford_changed && /* @__PURE__ */ e.jsxs("div", { children: [
2050
+ /* @__PURE__ */ e.jsx("h4", { className: "text-sm font-medium mb-2 text-muted", children: "Clifford Status" }),
2051
+ /* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
2052
+ /* @__PURE__ */ e.jsxs(j, { children: [
1675
2053
  /* @__PURE__ */ e.jsx(c, { children: "Run A" }),
1676
2054
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.circuit_diff.is_clifford_a != null ? String(i.circuit_diff.is_clifford_a) : "unknown" })
1677
2055
  ] }),
1678
- /* @__PURE__ */ e.jsxs(m, { children: [
2056
+ /* @__PURE__ */ e.jsxs(j, { children: [
1679
2057
  /* @__PURE__ */ e.jsx(c, { children: "Run B" }),
1680
2058
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.circuit_diff.is_clifford_b != null ? String(i.circuit_diff.is_clifford_b) : "unknown" })
1681
2059
  ] })
1682
2060
  ] }) })
1683
2061
  ] }),
1684
- i.circuit_diff.added_gates && i.circuit_diff.added_gates.length > 0 && /* @__PURE__ */ e.jsxs("div", { className: "mt-4", children: [
1685
- /* @__PURE__ */ e.jsx("h4", { className: "text-sm text-muted mb-2", children: "New Gate Types (in B)" }),
1686
- /* @__PURE__ */ e.jsx("p", { className: "font-mono text-sm", children: i.circuit_diff.added_gates.join(", ") })
2062
+ i.circuit_diff.added_gates && i.circuit_diff.added_gates.length > 0 && /* @__PURE__ */ e.jsxs("div", { children: [
2063
+ /* @__PURE__ */ e.jsx("h4", { className: "text-sm font-medium mb-2 text-muted", children: "New Gate Types (in B)" }),
2064
+ /* @__PURE__ */ e.jsx("div", { className: "flex flex-wrap gap-1", children: i.circuit_diff.added_gates.map((h) => /* @__PURE__ */ e.jsx(Y, { variant: "success", children: h }, h)) })
1687
2065
  ] }),
1688
- i.circuit_diff.removed_gates && i.circuit_diff.removed_gates.length > 0 && /* @__PURE__ */ e.jsxs("div", { className: "mt-4", children: [
1689
- /* @__PURE__ */ e.jsx("h4", { className: "text-sm text-muted mb-2", children: "Removed Gate Types (from A)" }),
1690
- /* @__PURE__ */ e.jsx("p", { className: "font-mono text-sm", children: i.circuit_diff.removed_gates.join(", ") })
2066
+ i.circuit_diff.removed_gates && i.circuit_diff.removed_gates.length > 0 && /* @__PURE__ */ e.jsxs("div", { children: [
2067
+ /* @__PURE__ */ e.jsx("h4", { className: "text-sm font-medium mb-2 text-muted", children: "Removed Gate Types (from A)" }),
2068
+ /* @__PURE__ */ e.jsx("div", { className: "flex flex-wrap gap-1", children: i.circuit_diff.removed_gates.map((h) => /* @__PURE__ */ e.jsx(Y, { variant: "danger", children: h }, h)) })
1691
2069
  ] })
1692
2070
  ] })
1693
2071
  ] }),
1694
- i.tvd != null && /* @__PURE__ */ e.jsxs(v, { className: "mb-4", children: [
1695
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsx(P, { children: "Results" }) }),
1696
- /* @__PURE__ */ e.jsx(O, { children: /* @__PURE__ */ e.jsxs(F, { children: [
1697
- /* @__PURE__ */ e.jsxs(m, { children: [
2072
+ i.tvd != null && /* @__PURE__ */ e.jsxs(b, { className: "mb-4", children: [
2073
+ /* @__PURE__ */ e.jsx(ae, { children: "Results Distribution" }),
2074
+ /* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
2075
+ /* @__PURE__ */ e.jsxs(j, { children: [
1698
2076
  /* @__PURE__ */ e.jsx(c, { children: "Total Variation Distance (TVD)" }),
1699
- /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.tvd.toFixed(6) })
2077
+ /* @__PURE__ */ e.jsx(c, { className: "font-mono font-medium", children: i.tvd.toFixed(6) })
1700
2078
  ] }),
1701
- i.shots && /* @__PURE__ */ e.jsxs(m, { children: [
2079
+ i.shots && /* @__PURE__ */ e.jsxs(j, { children: [
1702
2080
  /* @__PURE__ */ e.jsx(c, { children: "Total Shots (A / B)" }),
1703
2081
  /* @__PURE__ */ e.jsxs(c, { className: "font-mono", children: [
1704
2082
  i.shots.a,
@@ -1706,154 +2084,142 @@ function $s({ runIdA: s, runIdB: n }) {
1706
2084
  i.shots.b
1707
2085
  ] })
1708
2086
  ] }),
1709
- i.noise_context?.noise_p95 && /* @__PURE__ */ e.jsxs(m, { children: [
2087
+ i.noise_context?.noise_p95 && /* @__PURE__ */ e.jsxs(j, { children: [
1710
2088
  /* @__PURE__ */ e.jsx(c, { children: "Noise Threshold (p95)" }),
1711
2089
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.noise_context.noise_p95.toFixed(6) })
1712
2090
  ] }),
1713
- i.noise_context?.p_value != null && /* @__PURE__ */ e.jsxs(m, { children: [
2091
+ i.noise_context?.p_value != null && /* @__PURE__ */ e.jsxs(j, { children: [
1714
2092
  /* @__PURE__ */ e.jsx(c, { children: "p-value" }),
1715
- /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.noise_context.p_value.toFixed(3) })
2093
+ /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: i.noise_context.p_value.toFixed(4) })
1716
2094
  ] })
1717
2095
  ] }) }),
1718
- i.tvd > 0 && i.noise_context && /* @__PURE__ */ e.jsx("p", { className: "text-sm mt-4", children: i.noise_context.p_value != null ? i.noise_context.p_value >= 0.1 ? /* @__PURE__ */ e.jsx("span", { className: "text-success", children: "✓ Consistent with sampling noise — difference is not statistically significant." }) : i.noise_context.p_value >= 0.05 ? /* @__PURE__ */ e.jsxs("span", { className: "text-warning", children: [
1719
- "⚠ Borderline (p=",
1720
- i.noise_context.p_value.toFixed(2),
1721
- "). Consider increasing shots."
1722
- ] }) : /* @__PURE__ */ e.jsxs("span", { className: "text-danger", children: [
1723
- "✗ Statistically significant difference (p=",
1724
- i.noise_context.p_value.toFixed(2),
1725
- ") — results show meaningful divergence."
1726
- ] }) : i.noise_context.noise_ratio != null ? i.noise_context.noise_ratio < 1.5 ? /* @__PURE__ */ e.jsx("span", { className: "text-success", children: "✓ TVD is within expected shot noise range." }) : i.noise_context.noise_ratio < 3 ? /* @__PURE__ */ e.jsxs("span", { className: "text-warning", children: [
1727
- "⚠ Ambiguous (",
1728
- i.noise_context.noise_ratio.toFixed(1),
1729
- "× expected noise). Consider increasing shots."
1730
- ] }) : /* @__PURE__ */ e.jsxs("span", { className: "text-danger", children: [
1731
- "✗ TVD exceeds expected noise (",
1732
- i.noise_context.noise_ratio.toFixed(1),
1733
- "×) — results show meaningful differences."
1734
- ] }) : null })
2096
+ /* @__PURE__ */ e.jsx(zr, { tvd: i.tvd, noiseContext: i.noise_context })
1735
2097
  ] })
1736
2098
  ] });
1737
2099
  }
1738
- function Bs() {
1739
- const [s] = Ce(), n = s.get("a"), t = s.get("b"), a = n && t;
1740
- return /* @__PURE__ */ e.jsxs(q, { children: [
2100
+ function Hr() {
2101
+ const [r] = $e(), t = r.get("a"), n = r.get("b"), a = t && n;
2102
+ return /* @__PURE__ */ e.jsxs(V, { children: [
1741
2103
  /* @__PURE__ */ e.jsx("div", { className: "page-header", children: /* @__PURE__ */ e.jsxs("div", { children: [
1742
- /* @__PURE__ */ e.jsxs("h1", { className: "page-title", children: [
1743
- "Compare Runs",
1744
- a && /* @__PURE__ */ e.jsx(B, { variant: "info", children: "Comparing" })
1745
- ] }),
1746
- a && /* @__PURE__ */ e.jsx("p", { className: "text-muted text-sm", children: /* @__PURE__ */ e.jsx(M, { to: "/diff", children: "← Select different runs" }) })
2104
+ /* @__PURE__ */ e.jsx("h1", { className: "page-title", children: "Compare Runs" }),
2105
+ a && /* @__PURE__ */ e.jsx("p", { className: "text-sm mt-1 text-muted", children: /* @__PURE__ */ e.jsx(z, { to: "/diff", children: "← Select different runs" }) })
1747
2106
  ] }) }),
1748
- a ? /* @__PURE__ */ e.jsx($s, { runIdA: n, runIdB: t }) : /* @__PURE__ */ e.jsx(Fs, {})
2107
+ a ? /* @__PURE__ */ e.jsx(Kr, { runIdA: t, runIdB: n }) : /* @__PURE__ */ e.jsx(Yr, {})
1749
2108
  ] });
1750
2109
  }
1751
- function Is() {
1752
- const { api: s } = Y(), [n, t] = U(""), [a, d] = U(null), [h, f] = U(!1), { mutate: i, loading: x } = je(async () => {
1753
- const p = await s.listRuns({ q: n, limit: 100 });
1754
- return d(p.runs), f(!0), p;
1755
- }), o = (p) => {
1756
- p.preventDefault(), n.trim() && i();
2110
+ function Jr() {
2111
+ const { api: r } = K(), [t, n] = T(""), [a, u] = T(null), [o, d] = T(!1), [i, f] = T(""), { mutate: h, loading: m } = Re(async () => {
2112
+ const _ = await r.listRuns({ q: t, limit: 100 });
2113
+ return u(_.runs), d(!0), _;
2114
+ }), p = (_) => {
2115
+ if (_.preventDefault(), !t.trim()) {
2116
+ f("Please enter a search query");
2117
+ return;
2118
+ }
2119
+ f(""), h();
1757
2120
  };
1758
- return /* @__PURE__ */ e.jsxs(q, { children: [
2121
+ return /* @__PURE__ */ e.jsxs(V, { children: [
1759
2122
  /* @__PURE__ */ e.jsx("div", { className: "page-header", children: /* @__PURE__ */ e.jsx("h1", { className: "page-title", children: "Search Runs" }) }),
1760
- /* @__PURE__ */ e.jsx(v, { className: "mb-4", children: /* @__PURE__ */ e.jsxs("form", { onSubmit: o, children: [
1761
- /* @__PURE__ */ e.jsxs(H, { children: [
1762
- /* @__PURE__ */ e.jsx(Z, { htmlFor: "q", children: "Query" }),
2123
+ /* @__PURE__ */ e.jsx(b, { className: "mb-4", children: /* @__PURE__ */ e.jsxs("form", { onSubmit: p, children: [
2124
+ /* @__PURE__ */ e.jsxs(ee, { children: [
2125
+ /* @__PURE__ */ e.jsx(ie, { htmlFor: "q", children: "Query" }),
1763
2126
  /* @__PURE__ */ e.jsx(
1764
- Ke,
2127
+ ss,
1765
2128
  {
1766
2129
  id: "q",
1767
2130
  type: "text",
1768
- value: n,
1769
- onChange: (p) => t(p.target.value),
2131
+ value: t,
2132
+ onChange: (_) => {
2133
+ n(_.target.value), f("");
2134
+ },
1770
2135
  placeholder: "metric.fidelity > 0.95 and params.shots = 1000",
1771
2136
  className: "font-mono"
1772
2137
  }
1773
2138
  )
1774
2139
  ] }),
2140
+ i && /* @__PURE__ */ e.jsx("p", { className: "text-sm text-[#DC4A4A] mb-3", children: i }),
1775
2141
  /* @__PURE__ */ e.jsxs("div", { className: "flex gap-2 items-center", children: [
1776
- /* @__PURE__ */ e.jsxs(k, { type: "submit", variant: "primary", disabled: x || !n.trim(), children: [
1777
- x && /* @__PURE__ */ e.jsx(V, {}),
2142
+ /* @__PURE__ */ e.jsxs(D, { type: "submit", variant: "primary", disabled: m, children: [
2143
+ m && /* @__PURE__ */ e.jsx(I, {}),
1778
2144
  "Search"
1779
2145
  ] }),
1780
- x && /* @__PURE__ */ e.jsx("span", { className: "text-muted text-sm", children: "Searching..." })
2146
+ m && /* @__PURE__ */ e.jsx("span", { className: "text-muted text-sm", children: "Searching..." })
1781
2147
  ] })
1782
2148
  ] }) }),
1783
- h && a && /* @__PURE__ */ e.jsx(v, { className: "mb-4", children: a.length > 0 ? /* @__PURE__ */ e.jsx(Je, { runs: a }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted text-center py-8", children: "No runs match your query" }) }),
2149
+ o && a && /* @__PURE__ */ e.jsx(b, { className: "mb-4", children: a.length > 0 ? /* @__PURE__ */ e.jsx(rs, { runs: a }) : /* @__PURE__ */ e.jsx("p", { className: "text-muted text-center py-8", children: "No runs match your query" }) }),
1784
2150
  /* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
1785
- /* @__PURE__ */ e.jsxs(v, { children: [
1786
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsx(P, { children: "Query Syntax" }) }),
1787
- /* @__PURE__ */ e.jsxs(O, { children: [
1788
- /* @__PURE__ */ e.jsx(Q, { children: /* @__PURE__ */ e.jsxs(m, { children: [
1789
- /* @__PURE__ */ e.jsx(b, { children: "Field" }),
1790
- /* @__PURE__ */ e.jsx(b, { children: "Description" })
2151
+ /* @__PURE__ */ e.jsxs(b, { children: [
2152
+ /* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Query Syntax" }) }),
2153
+ /* @__PURE__ */ e.jsxs(L, { children: [
2154
+ /* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
2155
+ /* @__PURE__ */ e.jsx(N, { children: "Field" }),
2156
+ /* @__PURE__ */ e.jsx(N, { children: "Description" })
1791
2157
  ] }) }),
1792
- /* @__PURE__ */ e.jsxs(F, { children: [
1793
- /* @__PURE__ */ e.jsxs(m, { children: [
2158
+ /* @__PURE__ */ e.jsxs(B, { children: [
2159
+ /* @__PURE__ */ e.jsxs(j, { children: [
1794
2160
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "params.X" }),
1795
2161
  /* @__PURE__ */ e.jsx(c, { children: "Parameter value" })
1796
2162
  ] }),
1797
- /* @__PURE__ */ e.jsxs(m, { children: [
2163
+ /* @__PURE__ */ e.jsxs(j, { children: [
1798
2164
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "metric.X" }),
1799
2165
  /* @__PURE__ */ e.jsx(c, { children: "Metric value" })
1800
2166
  ] }),
1801
- /* @__PURE__ */ e.jsxs(m, { children: [
2167
+ /* @__PURE__ */ e.jsxs(j, { children: [
1802
2168
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "tags.X" }),
1803
2169
  /* @__PURE__ */ e.jsx(c, { children: "Tag value" })
1804
2170
  ] }),
1805
- /* @__PURE__ */ e.jsxs(m, { children: [
2171
+ /* @__PURE__ */ e.jsxs(j, { children: [
1806
2172
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "status" }),
1807
2173
  /* @__PURE__ */ e.jsx(c, { children: "Run status" })
1808
2174
  ] }),
1809
- /* @__PURE__ */ e.jsxs(m, { children: [
2175
+ /* @__PURE__ */ e.jsxs(j, { children: [
1810
2176
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "project" }),
1811
2177
  /* @__PURE__ */ e.jsx(c, { children: "Project name" })
1812
2178
  ] }),
1813
- /* @__PURE__ */ e.jsxs(m, { children: [
2179
+ /* @__PURE__ */ e.jsxs(j, { children: [
1814
2180
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "backend" }),
1815
2181
  /* @__PURE__ */ e.jsx(c, { children: "Backend name" })
1816
2182
  ] })
1817
2183
  ] })
1818
2184
  ] })
1819
2185
  ] }),
1820
- /* @__PURE__ */ e.jsxs(v, { children: [
1821
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsx(P, { children: "Operators" }) }),
1822
- /* @__PURE__ */ e.jsxs(O, { children: [
1823
- /* @__PURE__ */ e.jsx(Q, { children: /* @__PURE__ */ e.jsxs(m, { children: [
1824
- /* @__PURE__ */ e.jsx(b, { children: "Operator" }),
1825
- /* @__PURE__ */ e.jsx(b, { children: "Description" })
2186
+ /* @__PURE__ */ e.jsxs(b, { children: [
2187
+ /* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Operators" }) }),
2188
+ /* @__PURE__ */ e.jsxs(L, { children: [
2189
+ /* @__PURE__ */ e.jsx(re, { children: /* @__PURE__ */ e.jsxs(j, { children: [
2190
+ /* @__PURE__ */ e.jsx(N, { children: "Operator" }),
2191
+ /* @__PURE__ */ e.jsx(N, { children: "Description" })
1826
2192
  ] }) }),
1827
- /* @__PURE__ */ e.jsxs(F, { children: [
1828
- /* @__PURE__ */ e.jsxs(m, { children: [
2193
+ /* @__PURE__ */ e.jsxs(B, { children: [
2194
+ /* @__PURE__ */ e.jsxs(j, { children: [
1829
2195
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "=" }),
1830
2196
  /* @__PURE__ */ e.jsx(c, { children: "Equals" })
1831
2197
  ] }),
1832
- /* @__PURE__ */ e.jsxs(m, { children: [
2198
+ /* @__PURE__ */ e.jsxs(j, { children: [
1833
2199
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "!=" }),
1834
2200
  /* @__PURE__ */ e.jsx(c, { children: "Not equals" })
1835
2201
  ] }),
1836
- /* @__PURE__ */ e.jsxs(m, { children: [
2202
+ /* @__PURE__ */ e.jsxs(j, { children: [
1837
2203
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: ">" }),
1838
2204
  /* @__PURE__ */ e.jsx(c, { children: "Greater than" })
1839
2205
  ] }),
1840
- /* @__PURE__ */ e.jsxs(m, { children: [
2206
+ /* @__PURE__ */ e.jsxs(j, { children: [
1841
2207
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: ">=" }),
1842
2208
  /* @__PURE__ */ e.jsx(c, { children: "Greater or equal" })
1843
2209
  ] }),
1844
- /* @__PURE__ */ e.jsxs(m, { children: [
2210
+ /* @__PURE__ */ e.jsxs(j, { children: [
1845
2211
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "<" }),
1846
2212
  /* @__PURE__ */ e.jsx(c, { children: "Less than" })
1847
2213
  ] }),
1848
- /* @__PURE__ */ e.jsxs(m, { children: [
2214
+ /* @__PURE__ */ e.jsxs(j, { children: [
1849
2215
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "<=" }),
1850
2216
  /* @__PURE__ */ e.jsx(c, { children: "Less or equal" })
1851
2217
  ] }),
1852
- /* @__PURE__ */ e.jsxs(m, { children: [
2218
+ /* @__PURE__ */ e.jsxs(j, { children: [
1853
2219
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "~" }),
1854
2220
  /* @__PURE__ */ e.jsx(c, { children: "Contains" })
1855
2221
  ] }),
1856
- /* @__PURE__ */ e.jsxs(m, { children: [
2222
+ /* @__PURE__ */ e.jsxs(j, { children: [
1857
2223
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "and" }),
1858
2224
  /* @__PURE__ */ e.jsx(c, { children: "Combine conditions" })
1859
2225
  ] })
@@ -1861,26 +2227,26 @@ function Is() {
1861
2227
  ] })
1862
2228
  ] })
1863
2229
  ] }),
1864
- /* @__PURE__ */ e.jsxs(v, { className: "mt-4", children: [
1865
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsx(P, { children: "Examples" }) }),
1866
- /* @__PURE__ */ e.jsx(O, { children: /* @__PURE__ */ e.jsxs(F, { children: [
1867
- /* @__PURE__ */ e.jsxs(m, { children: [
2230
+ /* @__PURE__ */ e.jsxs(b, { className: "mt-4", children: [
2231
+ /* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Examples" }) }),
2232
+ /* @__PURE__ */ e.jsx(L, { children: /* @__PURE__ */ e.jsxs(B, { children: [
2233
+ /* @__PURE__ */ e.jsxs(j, { children: [
1868
2234
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "metric.fidelity > 0.95" }),
1869
2235
  /* @__PURE__ */ e.jsx(c, { children: "High fidelity runs" })
1870
2236
  ] }),
1871
- /* @__PURE__ */ e.jsxs(m, { children: [
2237
+ /* @__PURE__ */ e.jsxs(j, { children: [
1872
2238
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "params.shots = 1000 and status = FINISHED" }),
1873
2239
  /* @__PURE__ */ e.jsx(c, { children: "Finished runs with 1000 shots" })
1874
2240
  ] }),
1875
- /* @__PURE__ */ e.jsxs(m, { children: [
2241
+ /* @__PURE__ */ e.jsxs(j, { children: [
1876
2242
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "tags.backend ~ ibm" }),
1877
2243
  /* @__PURE__ */ e.jsx(c, { children: "Runs with IBM backends" })
1878
2244
  ] }),
1879
- /* @__PURE__ */ e.jsxs(m, { children: [
2245
+ /* @__PURE__ */ e.jsxs(j, { children: [
1880
2246
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "metric.error < 0.01" }),
1881
2247
  /* @__PURE__ */ e.jsx(c, { children: "Low error runs" })
1882
2248
  ] }),
1883
- /* @__PURE__ */ e.jsxs(m, { children: [
2249
+ /* @__PURE__ */ e.jsxs(j, { children: [
1884
2250
  /* @__PURE__ */ e.jsx(c, { className: "font-mono", children: "project = vqe and metric.energy < -2.0" }),
1885
2251
  /* @__PURE__ */ e.jsx(c, { children: "VQE runs with low energy" })
1886
2252
  ] })
@@ -1888,144 +2254,169 @@ function Is() {
1888
2254
  ] })
1889
2255
  ] });
1890
2256
  }
1891
- function Ls() {
1892
- const { runId: s, index: n } = Ye(), t = parseInt(n, 10), { api: a } = Y(), { data: d } = Pr(s), { data: h, loading: f, error: i } = bs(s, t);
1893
- if (f)
1894
- return /* @__PURE__ */ e.jsx(q, { children: /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-12", children: /* @__PURE__ */ e.jsx(V, {}) }) });
1895
- if (i || !h)
1896
- return /* @__PURE__ */ e.jsx(q, { children: /* @__PURE__ */ e.jsx(v, { children: /* @__PURE__ */ e.jsx(te, { message: "Artifact not found", hint: i?.message }) }) });
1897
- const { artifact: x, size: o, content: p, content_json: $, preview_available: _, error: G } = h, J = 10 * 1024 * 1024;
1898
- return /* @__PURE__ */ e.jsxs(q, { children: [
2257
+ function Xr() {
2258
+ const { runId: r, index: t } = Qe(), n = parseInt(t, 10), { api: a } = K(), { data: u } = As(r), { data: o, loading: d, error: i } = Rr(r, n), [f, h] = T(null);
2259
+ je(() => {
2260
+ if (f) {
2261
+ const S = setTimeout(() => h(null), 3e3);
2262
+ return () => clearTimeout(S);
2263
+ }
2264
+ }, [f]);
2265
+ const m = async () => {
2266
+ try {
2267
+ const S = a.getArtifactDownloadUrl(r, n), se = await fetch(S);
2268
+ if (!se.ok) throw new Error("Download failed");
2269
+ const te = await se.blob(), J = document.createElement("a");
2270
+ J.href = URL.createObjectURL(te), J.download = p?.kind || `artifact-${n}`, J.click(), URL.revokeObjectURL(J.href), h({ message: "Download started", variant: "success" });
2271
+ } catch {
2272
+ h({ message: "Download failed", variant: "error" });
2273
+ }
2274
+ };
2275
+ if (d)
2276
+ return /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsx("div", { className: "flex justify-center py-12", children: /* @__PURE__ */ e.jsx(I, {}) }) });
2277
+ if (i || !o)
2278
+ return /* @__PURE__ */ e.jsx(V, { children: /* @__PURE__ */ e.jsx(b, { children: /* @__PURE__ */ e.jsx(he, { message: "Artifact not found", hint: i?.message }) }) });
2279
+ const { artifact: p, size: _, content: U, content_json: w, preview_available: H, error: k } = o, O = 10 * 1024 * 1024;
2280
+ return /* @__PURE__ */ e.jsxs(V, { children: [
1899
2281
  /* @__PURE__ */ e.jsx(
1900
- pe,
2282
+ Ee,
1901
2283
  {
1902
- title: x.kind,
2284
+ title: p.kind,
1903
2285
  subtitle: /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
1904
2286
  "← Back to run ",
1905
- /* @__PURE__ */ e.jsxs(M, { to: `/runs/${s}`, children: [
1906
- K(s),
1907
- d?.run_name && ` — ${d.run_name}`
2287
+ /* @__PURE__ */ e.jsxs(z, { to: `/runs/${r}`, children: [
2288
+ Q(r),
2289
+ u?.run_name && ` — ${u.run_name}`
1908
2290
  ] })
1909
2291
  ] }),
1910
- actions: /* @__PURE__ */ e.jsx("a", { href: a.getArtifactDownloadUrl(s, t), children: /* @__PURE__ */ e.jsx(k, { variant: "primary", children: "Download" }) })
2292
+ actions: /* @__PURE__ */ e.jsx(D, { variant: "primary", onClick: m, children: "Download" })
1911
2293
  }
1912
2294
  ),
1913
- /* @__PURE__ */ e.jsx(v, { className: "mb-4", children: /* @__PURE__ */ e.jsx(Ge, { items: [
1914
- { label: "Kind", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono", children: x.kind }) },
1915
- { label: "Role", value: /* @__PURE__ */ e.jsx(B, { variant: "gray", children: x.role }) },
1916
- { label: "Media Type", value: x.media_type },
1917
- { label: "Digest", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-sm", children: x.digest }) },
1918
- { label: "Size", value: Pe(o) }
2295
+ /* @__PURE__ */ e.jsx(b, { className: "mb-4", children: /* @__PURE__ */ e.jsx(Je, { items: [
2296
+ { label: "Kind", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono", children: p.kind }) },
2297
+ { label: "Role", value: /* @__PURE__ */ e.jsx(Y, { variant: "gray", children: p.role }) },
2298
+ { label: "Media Type", value: p.media_type },
2299
+ { label: "Digest", value: /* @__PURE__ */ e.jsx("span", { className: "font-mono text-sm", children: p.digest }) },
2300
+ { label: "Size", value: Oe(_) }
1919
2301
  ] }) }),
1920
- /* @__PURE__ */ e.jsxs(v, { children: [
1921
- /* @__PURE__ */ e.jsx(S, { children: /* @__PURE__ */ e.jsx(P, { children: "Content" }) }),
1922
- G ? /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
2302
+ /* @__PURE__ */ e.jsxs(b, { children: [
2303
+ /* @__PURE__ */ e.jsx(W, { children: /* @__PURE__ */ e.jsx(G, { children: "Content" }) }),
2304
+ k ? /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
1923
2305
  /* @__PURE__ */ e.jsxs("p", { className: "text-sm text-danger", children: [
1924
- "Error loading artifact: ",
1925
- G
2306
+ "Error loading artifact: ",
2307
+ k
1926
2308
  ] }),
1927
- /* @__PURE__ */ e.jsx("p", { className: "text-muted mt-2", children: /* @__PURE__ */ e.jsx("a", { href: a.getArtifactDownloadUrl(s, t), children: /* @__PURE__ */ e.jsx(k, { variant: "primary", children: "Download to view" }) }) })
1928
- ] }) : _ ? $ ? /* @__PURE__ */ e.jsx("pre", { children: _s($) }) : p ? /* @__PURE__ */ e.jsx("pre", { children: p }) : /* @__PURE__ */ e.jsxs("p", { className: "text-muted", children: [
2309
+ /* @__PURE__ */ e.jsx("p", { className: "text-muted mt-2", children: /* @__PURE__ */ e.jsx(D, { variant: "primary", onClick: m, children: "Download to view" }) })
2310
+ ] }) : H ? w ? /* @__PURE__ */ e.jsx("pre", { children: Cr(w) }) : U ? /* @__PURE__ */ e.jsx("pre", { children: U }) : /* @__PURE__ */ e.jsxs("p", { className: "text-muted", children: [
1929
2311
  "Binary content (",
1930
- Pe(o),
2312
+ Oe(_),
1931
2313
  ") — download to view"
1932
2314
  ] }) : /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
1933
2315
  /* @__PURE__ */ e.jsxs("p", { className: "text-muted", children: [
1934
2316
  /* @__PURE__ */ e.jsx("strong", { children: "Artifact too large for preview" }),
1935
2317
  " (",
1936
- Pe(o),
2318
+ Oe(_),
1937
2319
  " exceeds ",
1938
- Pe(J),
2320
+ Oe(O),
1939
2321
  " limit)"
1940
2322
  ] }),
1941
2323
  /* @__PURE__ */ e.jsx("p", { className: "text-sm text-muted mt-2", children: "Download the artifact to view its contents." }),
1942
- /* @__PURE__ */ e.jsx("p", { className: "mt-4", children: /* @__PURE__ */ e.jsx("a", { href: a.getArtifactDownloadUrl(s, t), children: /* @__PURE__ */ e.jsx(k, { variant: "primary", children: "Download" }) }) })
2324
+ /* @__PURE__ */ e.jsx("p", { className: "mt-4", children: /* @__PURE__ */ e.jsx(D, { variant: "primary", onClick: m, children: "Download" }) })
1943
2325
  ] })
1944
- ] })
2326
+ ] }),
2327
+ f && /* @__PURE__ */ e.jsx(
2328
+ Ce,
2329
+ {
2330
+ message: f.message,
2331
+ variant: f.variant,
2332
+ visible: !!f,
2333
+ onClose: () => h(null)
2334
+ }
2335
+ )
1945
2336
  ] });
1946
2337
  }
1947
- const Us = [
1948
- { path: "/", element: /* @__PURE__ */ e.jsx(ls, { to: "/runs", replace: !0 }) },
1949
- { path: "/runs", element: /* @__PURE__ */ e.jsx(Ps, {}) },
1950
- { path: "/runs/:runId", element: /* @__PURE__ */ e.jsx(Ds, {}) },
1951
- { path: "/runs/:runId/artifacts/:index", element: /* @__PURE__ */ e.jsx(Ls, {}) },
1952
- { path: "/projects", element: /* @__PURE__ */ e.jsx(ks, {}) },
1953
- { path: "/groups", element: /* @__PURE__ */ e.jsx(As, {}) },
1954
- { path: "/groups/:groupId", element: /* @__PURE__ */ e.jsx(Os, {}) },
1955
- { path: "/diff", element: /* @__PURE__ */ e.jsx(Bs, {}) },
1956
- { path: "/search", element: /* @__PURE__ */ e.jsx(Is, {}) }
2338
+ const Qr = [
2339
+ { path: "/", element: /* @__PURE__ */ e.jsx(xr, { to: "/runs", replace: !0 }) },
2340
+ { path: "/runs", element: /* @__PURE__ */ e.jsx(Tr, {}) },
2341
+ { path: "/runs/:runId", element: /* @__PURE__ */ e.jsx(Br, {}) },
2342
+ { path: "/runs/:runId/artifacts/:index", element: /* @__PURE__ */ e.jsx(Xr, {}) },
2343
+ { path: "/projects", element: /* @__PURE__ */ e.jsx(Ir, {}) },
2344
+ { path: "/groups", element: /* @__PURE__ */ e.jsx(qr, {}) },
2345
+ { path: "/groups/:groupId", element: /* @__PURE__ */ e.jsx(Ur, {}) },
2346
+ { path: "/diff", element: /* @__PURE__ */ e.jsx(Hr, {}) },
2347
+ { path: "/search", element: /* @__PURE__ */ e.jsx(Jr, {}) }
1957
2348
  ];
1958
- function kr(s = []) {
1959
- return os([...Us, ...s]);
2349
+ function Ls(r = []) {
2350
+ return mr([...Qr, ...r]);
1960
2351
  }
1961
- const Ms = kr();
1962
- function zs({ additionalRoutes: s, ...n }) {
1963
- const t = s?.length ? kr(s) : Ms;
1964
- return /* @__PURE__ */ e.jsx(js, { ...n, children: /* @__PURE__ */ e.jsx(ds, { router: t }) });
2352
+ const Zr = Ls();
2353
+ function at({ additionalRoutes: r, ...t }) {
2354
+ const n = r?.length ? Ls(r) : Zr;
2355
+ return /* @__PURE__ */ e.jsx(yr, { ...t, children: /* @__PURE__ */ e.jsx(fr, { router: n }) });
1965
2356
  }
1966
2357
  export {
1967
- Ys as Alert,
1968
- ms as ApiClient,
1969
- fe as ApiError,
1970
- zs as App,
1971
- js as AppProvider,
1972
- Ls as ArtifactPage,
1973
- B as Badge,
1974
- k as Button,
1975
- v as Card,
1976
- S as CardHeader,
1977
- P as CardTitle,
1978
- Bs as DiffPage,
1979
- te as EmptyState,
1980
- H as FormGroup,
1981
- Cr as FormRow,
1982
- Os as GroupDetailPage,
1983
- As as GroupsPage,
1984
- Cs as GroupsTable,
1985
- Ke as Input,
1986
- Ge as KVList,
1987
- Z as Label,
1988
- q as Layout,
1989
- Vs as LayoutConfigProvider,
1990
- Es as Modal,
1991
- pe as PageHeader,
1992
- ks as ProjectsPage,
1993
- Ts as ProjectsTable,
1994
- Ds as RunDetailPage,
1995
- Ps as RunsPage,
1996
- Je as RunsTable,
1997
- Is as SearchPage,
1998
- se as Select,
1999
- V as Spinner,
2000
- Dr as StatusBadge,
2001
- O as Table,
2002
- F as TableBody,
2358
+ nt as Alert,
2359
+ vr as ApiClient,
2360
+ we as ApiError,
2361
+ at as App,
2362
+ yr as AppProvider,
2363
+ Xr as ArtifactPage,
2364
+ Y as Badge,
2365
+ D as Button,
2366
+ b as Card,
2367
+ W as CardHeader,
2368
+ G as CardTitle,
2369
+ Hr as DiffPage,
2370
+ he as EmptyState,
2371
+ ee as FormGroup,
2372
+ Os as FormRow,
2373
+ Ur as GroupDetailPage,
2374
+ qr as GroupsPage,
2375
+ Ar as GroupsTable,
2376
+ ss as Input,
2377
+ Je as KVList,
2378
+ ie as Label,
2379
+ V as Layout,
2380
+ tt as LayoutConfigProvider,
2381
+ es as Modal,
2382
+ Ee as PageHeader,
2383
+ Ir as ProjectsPage,
2384
+ Dr as ProjectsTable,
2385
+ Br as RunDetailPage,
2386
+ Tr as RunsPage,
2387
+ rs as RunsTable,
2388
+ Jr as SearchPage,
2389
+ de as Select,
2390
+ I as Spinner,
2391
+ $s as StatusBadge,
2392
+ L as Table,
2393
+ B as TableBody,
2003
2394
  c as TableCell,
2004
- Q as TableHead,
2005
- b as TableHeader,
2006
- m as TableRow,
2007
- Ss as Toast,
2008
- fs as api,
2009
- Ws as buildUrl,
2010
- A as cn,
2011
- Us as coreRoutes,
2012
- kr as createRouter,
2013
- Pe as formatBytes,
2014
- Ns as formatNumber,
2015
- _s as jsonPretty,
2016
- Ms as router,
2017
- qe as shortDigest,
2018
- K as shortId,
2019
- Te as timeAgo,
2020
- ys as truncate,
2021
- Y as useApp,
2022
- bs as useArtifact,
2023
- vs as useDiff,
2024
- gs as useGroup,
2025
- ps as useGroups,
2026
- ws as useLayoutConfig,
2027
- je as useMutation,
2028
- ze as useProjects,
2029
- Pr as useRun,
2030
- Sr as useRuns
2395
+ re as TableHead,
2396
+ N as TableHeader,
2397
+ j as TableRow,
2398
+ Ce as Toast,
2399
+ br as api,
2400
+ rt as buildUrl,
2401
+ $ as cn,
2402
+ Qr as coreRoutes,
2403
+ Ls as createRouter,
2404
+ Oe as formatBytes,
2405
+ Er as formatNumber,
2406
+ Cr as jsonPretty,
2407
+ Zr as router,
2408
+ He as shortDigest,
2409
+ Q as shortId,
2410
+ Ze as timeAgo,
2411
+ kr as truncate,
2412
+ K as useApp,
2413
+ Rr as useArtifact,
2414
+ wr as useDiff,
2415
+ _r as useGroup,
2416
+ Nr as useGroups,
2417
+ Pr as useLayoutConfig,
2418
+ Re as useMutation,
2419
+ Le as useProjects,
2420
+ As as useRun,
2421
+ Ds as useRuns
2031
2422
  };