@sudobility/analytics-components 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/comparison-section.d.ts +58 -0
  2. package/dist/comparison-section.d.ts.map +1 -0
  3. package/dist/container-stats.d.ts +33 -0
  4. package/dist/container-stats.d.ts.map +1 -0
  5. package/dist/empty-state.d.ts +11 -0
  6. package/dist/empty-state.d.ts.map +1 -0
  7. package/dist/feature-comparison.d.ts +33 -0
  8. package/dist/feature-comparison.d.ts.map +1 -0
  9. package/dist/feature-importance.d.ts +33 -0
  10. package/dist/feature-importance.d.ts.map +1 -0
  11. package/dist/gauge.d.ts +34 -0
  12. package/dist/gauge.d.ts.map +1 -0
  13. package/dist/index.d.ts +25 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.esm.js +1214 -0
  16. package/dist/index.umd.js +6 -0
  17. package/dist/loading-state.d.ts +11 -0
  18. package/dist/loading-state.d.ts.map +1 -0
  19. package/dist/metric-comparison.d.ts +33 -0
  20. package/dist/metric-comparison.d.ts.map +1 -0
  21. package/dist/model-prediction.d.ts +33 -0
  22. package/dist/model-prediction.d.ts.map +1 -0
  23. package/dist/progress-tracker.d.ts +33 -0
  24. package/dist/progress-tracker.d.ts.map +1 -0
  25. package/dist/qa-report.d.ts +18 -0
  26. package/dist/qa-report.d.ts.map +1 -0
  27. package/dist/report-builder.d.ts +33 -0
  28. package/dist/report-builder.d.ts.map +1 -0
  29. package/dist/sparkline.d.ts +28 -0
  30. package/dist/sparkline.d.ts.map +1 -0
  31. package/dist/stat-display.d.ts +52 -0
  32. package/dist/stat-display.d.ts.map +1 -0
  33. package/dist/support-dashboard.d.ts +18 -0
  34. package/dist/support-dashboard.d.ts.map +1 -0
  35. package/dist/trend-indicator.d.ts +46 -0
  36. package/dist/trend-indicator.d.ts.map +1 -0
  37. package/dist/typography.d.ts +50 -0
  38. package/dist/typography.d.ts.map +1 -0
  39. package/package.json +47 -0
@@ -0,0 +1,1214 @@
1
+ import M from "react";
2
+ import { cn as d, Spinner as J } from "@sudobility/components";
3
+ import { textVariants as u } from "@sudobility/design";
4
+ var S = { exports: {} }, T = {};
5
+ var q;
6
+ function de() {
7
+ if (q) return T;
8
+ q = 1;
9
+ var t = Symbol.for("react.transitional.element"), a = Symbol.for("react.fragment");
10
+ function r(n, s, l) {
11
+ var c = null;
12
+ if (l !== void 0 && (c = "" + l), s.key !== void 0 && (c = "" + s.key), "key" in s) {
13
+ l = {};
14
+ for (var g in s)
15
+ g !== "key" && (l[g] = s[g]);
16
+ } else l = s;
17
+ return s = l.ref, {
18
+ $$typeof: t,
19
+ type: n,
20
+ key: c,
21
+ ref: s !== void 0 ? s : null,
22
+ props: l
23
+ };
24
+ }
25
+ return T.Fragment = a, T.jsx = r, T.jsxs = r, T;
26
+ }
27
+ var C = {};
28
+ var B;
29
+ function ce() {
30
+ return B || (B = 1, process.env.NODE_ENV !== "production" && (function() {
31
+ function t(e) {
32
+ if (e == null) return null;
33
+ if (typeof e == "function")
34
+ return e.$$typeof === se ? null : e.displayName || e.name || null;
35
+ if (typeof e == "string") return e;
36
+ switch (e) {
37
+ case j:
38
+ return "Fragment";
39
+ case A:
40
+ return "Profiler";
41
+ case E:
42
+ return "StrictMode";
43
+ case te:
44
+ return "Suspense";
45
+ case ae:
46
+ return "SuspenseList";
47
+ case oe:
48
+ return "Activity";
49
+ }
50
+ if (typeof e == "object")
51
+ switch (typeof e.tag == "number" && console.error(
52
+ "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
53
+ ), e.$$typeof) {
54
+ case N:
55
+ return "Portal";
56
+ case ee:
57
+ return e.displayName || "Context";
58
+ case K:
59
+ return (e._context.displayName || "Context") + ".Consumer";
60
+ case re:
61
+ var i = e.render;
62
+ return e = e.displayName, e || (e = i.displayName || i.name || "", e = e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"), e;
63
+ case ne:
64
+ return i = e.displayName || null, i !== null ? i : t(e.type) || "Memo";
65
+ case O:
66
+ i = e._payload, e = e._init;
67
+ try {
68
+ return t(e(i));
69
+ } catch {
70
+ }
71
+ }
72
+ return null;
73
+ }
74
+ function a(e) {
75
+ return "" + e;
76
+ }
77
+ function r(e) {
78
+ try {
79
+ a(e);
80
+ var i = !1;
81
+ } catch {
82
+ i = !0;
83
+ }
84
+ if (i) {
85
+ i = console;
86
+ var b = i.error, v = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
87
+ return b.call(
88
+ i,
89
+ "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
90
+ v
91
+ ), a(e);
92
+ }
93
+ }
94
+ function n(e) {
95
+ if (e === j) return "<>";
96
+ if (typeof e == "object" && e !== null && e.$$typeof === O)
97
+ return "<...>";
98
+ try {
99
+ var i = t(e);
100
+ return i ? "<" + i + ">" : "<...>";
101
+ } catch {
102
+ return "<...>";
103
+ }
104
+ }
105
+ function s() {
106
+ var e = P.A;
107
+ return e === null ? null : e.getOwner();
108
+ }
109
+ function l() {
110
+ return Error("react-stack-top-frame");
111
+ }
112
+ function c(e) {
113
+ if (D.call(e, "key")) {
114
+ var i = Object.getOwnPropertyDescriptor(e, "key").get;
115
+ if (i && i.isReactWarning) return !1;
116
+ }
117
+ return e.key !== void 0;
118
+ }
119
+ function g(e, i) {
120
+ function b() {
121
+ Y || (Y = !0, console.error(
122
+ "%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://react.dev/link/special-props)",
123
+ i
124
+ ));
125
+ }
126
+ b.isReactWarning = !0, Object.defineProperty(e, "key", {
127
+ get: b,
128
+ configurable: !0
129
+ });
130
+ }
131
+ function w() {
132
+ var e = t(this.type);
133
+ return I[e] || (I[e] = !0, console.error(
134
+ "Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
135
+ )), e = this.props.ref, e !== void 0 ? e : null;
136
+ }
137
+ function x(e, i, b, v, U, V) {
138
+ var p = b.ref;
139
+ return e = {
140
+ $$typeof: f,
141
+ type: e,
142
+ key: i,
143
+ props: b,
144
+ _owner: v
145
+ }, (p !== void 0 ? p : null) !== null ? Object.defineProperty(e, "ref", {
146
+ enumerable: !1,
147
+ get: w
148
+ }) : Object.defineProperty(e, "ref", { enumerable: !1, value: null }), e._store = {}, Object.defineProperty(e._store, "validated", {
149
+ configurable: !1,
150
+ enumerable: !1,
151
+ writable: !0,
152
+ value: 0
153
+ }), Object.defineProperty(e, "_debugInfo", {
154
+ configurable: !1,
155
+ enumerable: !1,
156
+ writable: !0,
157
+ value: null
158
+ }), Object.defineProperty(e, "_debugStack", {
159
+ configurable: !1,
160
+ enumerable: !1,
161
+ writable: !0,
162
+ value: U
163
+ }), Object.defineProperty(e, "_debugTask", {
164
+ configurable: !1,
165
+ enumerable: !1,
166
+ writable: !0,
167
+ value: V
168
+ }), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
169
+ }
170
+ function y(e, i, b, v, U, V) {
171
+ var p = i.children;
172
+ if (p !== void 0)
173
+ if (v)
174
+ if (le(p)) {
175
+ for (v = 0; v < p.length; v++)
176
+ h(p[v]);
177
+ Object.freeze && Object.freeze(p);
178
+ } else
179
+ console.error(
180
+ "React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
181
+ );
182
+ else h(p);
183
+ if (D.call(i, "key")) {
184
+ p = t(e);
185
+ var R = Object.keys(i).filter(function(ie) {
186
+ return ie !== "key";
187
+ });
188
+ v = 0 < R.length ? "{key: someKey, " + R.join(": ..., ") + ": ...}" : "{key: someKey}", z[p + v] || (R = 0 < R.length ? "{" + R.join(": ..., ") + ": ...}" : "{}", console.error(
189
+ `A props object containing a "key" prop is being spread into JSX:
190
+ let props = %s;
191
+ <%s {...props} />
192
+ React keys must be passed directly to JSX without using spread:
193
+ let props = %s;
194
+ <%s key={someKey} {...props} />`,
195
+ v,
196
+ p,
197
+ R,
198
+ p
199
+ ), z[p + v] = !0);
200
+ }
201
+ if (p = null, b !== void 0 && (r(b), p = "" + b), c(i) && (r(i.key), p = "" + i.key), "key" in i) {
202
+ b = {};
203
+ for (var L in i)
204
+ L !== "key" && (b[L] = i[L]);
205
+ } else b = i;
206
+ return p && g(
207
+ b,
208
+ typeof e == "function" ? e.displayName || e.name || "Unknown" : e
209
+ ), x(
210
+ e,
211
+ p,
212
+ b,
213
+ s(),
214
+ U,
215
+ V
216
+ );
217
+ }
218
+ function h(e) {
219
+ m(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e !== null && e.$$typeof === O && (e._payload.status === "fulfilled" ? m(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
220
+ }
221
+ function m(e) {
222
+ return typeof e == "object" && e !== null && e.$$typeof === f;
223
+ }
224
+ var k = M, f = Symbol.for("react.transitional.element"), N = Symbol.for("react.portal"), j = Symbol.for("react.fragment"), E = Symbol.for("react.strict_mode"), A = Symbol.for("react.profiler"), K = Symbol.for("react.consumer"), ee = Symbol.for("react.context"), re = Symbol.for("react.forward_ref"), te = Symbol.for("react.suspense"), ae = Symbol.for("react.suspense_list"), ne = Symbol.for("react.memo"), O = Symbol.for("react.lazy"), oe = Symbol.for("react.activity"), se = Symbol.for("react.client.reference"), P = k.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, D = Object.prototype.hasOwnProperty, le = Array.isArray, $ = console.createTask ? console.createTask : function() {
225
+ return null;
226
+ };
227
+ k = {
228
+ react_stack_bottom_frame: function(e) {
229
+ return e();
230
+ }
231
+ };
232
+ var Y, I = {}, F = k.react_stack_bottom_frame.bind(
233
+ k,
234
+ l
235
+ )(), W = $(n(l)), z = {};
236
+ C.Fragment = j, C.jsx = function(e, i, b) {
237
+ var v = 1e4 > P.recentlyCreatedOwnerStacks++;
238
+ return y(
239
+ e,
240
+ i,
241
+ b,
242
+ !1,
243
+ v ? Error("react-stack-top-frame") : F,
244
+ v ? $(n(e)) : W
245
+ );
246
+ }, C.jsxs = function(e, i, b) {
247
+ var v = 1e4 > P.recentlyCreatedOwnerStacks++;
248
+ return y(
249
+ e,
250
+ i,
251
+ b,
252
+ !0,
253
+ v ? Error("react-stack-top-frame") : F,
254
+ v ? $(n(e)) : W
255
+ );
256
+ };
257
+ })()), C;
258
+ }
259
+ var G;
260
+ function ue() {
261
+ return G || (G = 1, process.env.NODE_ENV === "production" ? S.exports = de() : S.exports = ce()), S.exports;
262
+ }
263
+ var o = ue();
264
+ function Z(t) {
265
+ var a, r, n = "";
266
+ if (typeof t == "string" || typeof t == "number") n += t;
267
+ else if (typeof t == "object") if (Array.isArray(t)) {
268
+ var s = t.length;
269
+ for (a = 0; a < s; a++) t[a] && (r = Z(t[a])) && (n && (n += " "), n += r);
270
+ } else for (r in t) t[r] && (n && (n += " "), n += r);
271
+ return n;
272
+ }
273
+ function ge() {
274
+ for (var t, a, r = 0, n = "", s = arguments.length; r < s; r++) (t = arguments[r]) && (a = Z(t)) && (n && (n += " "), n += a);
275
+ return n;
276
+ }
277
+ const X = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, Q = ge, _ = (t, a) => (r) => {
278
+ var n;
279
+ if (a?.variants == null) return Q(t, r?.class, r?.className);
280
+ const { variants: s, defaultVariants: l } = a, c = Object.keys(s).map((x) => {
281
+ const y = r?.[x], h = l?.[x];
282
+ if (y === null) return null;
283
+ const m = X(y) || X(h);
284
+ return s[x][m];
285
+ }), g = r && Object.entries(r).reduce((x, y) => {
286
+ let [h, m] = y;
287
+ return m === void 0 || (x[h] = m), x;
288
+ }, {}), w = a == null || (n = a.compoundVariants) === null || n === void 0 ? void 0 : n.reduce((x, y) => {
289
+ let { class: h, className: m, ...k } = y;
290
+ return Object.entries(k).every((f) => {
291
+ let [N, j] = f;
292
+ return Array.isArray(j) ? j.includes({
293
+ ...l,
294
+ ...g
295
+ }[N]) : {
296
+ ...l,
297
+ ...g
298
+ }[N] === j;
299
+ }) ? [
300
+ ...x,
301
+ h,
302
+ m
303
+ ] : x;
304
+ }, []);
305
+ return Q(t, c, w, r?.class, r?.className);
306
+ }, xe = _("grid gap-8", {
307
+ variants: {
308
+ layout: {
309
+ grid: "grid-cols-1 md:grid-cols-2",
310
+ stacked: "grid-cols-1 space-y-8",
311
+ cards: "grid-cols-1 md:grid-cols-2 gap-6"
312
+ },
313
+ spacing: {
314
+ sm: "gap-4",
315
+ md: "gap-8",
316
+ lg: "gap-12"
317
+ }
318
+ },
319
+ defaultVariants: {
320
+ layout: "grid",
321
+ spacing: "md"
322
+ }
323
+ }), me = _("rounded-xl p-6 transition-all duration-300", {
324
+ variants: {
325
+ variant: {
326
+ traditional: "bg-red-50 dark:bg-red-900/20 border-2 border-red-100 dark:border-red-800/30 hover:border-red-200 dark:hover:border-red-700/50",
327
+ web3: "bg-green-50 dark:bg-green-900/20 border-2 border-green-100 dark:border-green-800/30 hover:border-green-200 dark:hover:border-green-700/50",
328
+ neutral: "bg-gray-50 dark:bg-gray-800/50 border-2 border-gray-100 dark:border-gray-700/30 hover:border-gray-200 dark:hover:border-gray-600/50",
329
+ elevated: "bg-white dark:bg-gray-800 shadow-lg hover:shadow-xl border border-gray-200 dark:border-gray-700"
330
+ },
331
+ animation: {
332
+ none: "",
333
+ hover: "hover:transform hover:scale-[1.02]",
334
+ float: "hover:-translate-y-1"
335
+ }
336
+ },
337
+ defaultVariants: {
338
+ variant: "traditional",
339
+ animation: "hover"
340
+ }
341
+ }), fe = _("text-lg font-bold mb-4 flex items-center gap-3", {
342
+ variants: {
343
+ variant: {
344
+ traditional: "text-red-600 dark:text-red-400",
345
+ web3: "text-green-600 dark:text-green-400",
346
+ neutral: "text-gray-900 dark:text-white",
347
+ elevated: "text-gray-900 dark:text-white"
348
+ }
349
+ },
350
+ defaultVariants: {
351
+ variant: "traditional"
352
+ }
353
+ }), be = {
354
+ traditional: "❌",
355
+ web3: "✅",
356
+ neutral: "ℹ️",
357
+ elevated: "⭐"
358
+ }, he = {
359
+ red: "bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300",
360
+ green: "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300",
361
+ blue: "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300",
362
+ gray: "bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-300"
363
+ }, Ee = ({
364
+ className: t,
365
+ layout: a = "grid",
366
+ spacing: r = "md",
367
+ title: n,
368
+ subtitle: s,
369
+ traditional: l,
370
+ web3: c,
371
+ cardAnimation: g = "hover",
372
+ animate: w = !0,
373
+ animationDelay: x = 0,
374
+ traditionalIcon: y,
375
+ web3Icon: h
376
+ }) => {
377
+ const m = (f, N) => {
378
+ const j = /* @__PURE__ */ o.jsxs(
379
+ "div",
380
+ {
381
+ className: d(
382
+ me({ variant: f.variant, animation: g })
383
+ ),
384
+ children: [
385
+ /* @__PURE__ */ o.jsxs("div", { className: d(fe({ variant: f.variant })), children: [
386
+ /* @__PURE__ */ o.jsx("span", { className: "text-2xl", children: f.icon || (N === 0 ? y : h) || be[f.variant] }),
387
+ /* @__PURE__ */ o.jsx("div", { className: "flex-1", children: /* @__PURE__ */ o.jsxs("div", { className: "flex items-center gap-2", children: [
388
+ /* @__PURE__ */ o.jsx("span", { children: f.title }),
389
+ f.badge && /* @__PURE__ */ o.jsx(
390
+ "span",
391
+ {
392
+ className: d(
393
+ "text-xs font-medium px-2 py-1 rounded-full",
394
+ he[f.badge.color || "gray"]
395
+ ),
396
+ children: f.badge.text
397
+ }
398
+ )
399
+ ] }) })
400
+ ] }),
401
+ /* @__PURE__ */ o.jsx("ul", { className: "space-y-3", children: f.items.map((E, A) => /* @__PURE__ */ o.jsxs(
402
+ "li",
403
+ {
404
+ className: d(
405
+ "flex items-start gap-3 text-sm leading-relaxed",
406
+ E.highlight && "font-medium"
407
+ ),
408
+ children: [
409
+ E.icon && /* @__PURE__ */ o.jsx("span", { className: "flex-shrink-0 mt-0.5 text-base", children: E.icon }),
410
+ /* @__PURE__ */ o.jsxs("div", { className: "flex-1", children: [
411
+ /* @__PURE__ */ o.jsx(
412
+ "span",
413
+ {
414
+ className: d(
415
+ f.variant === "traditional" || f.variant === "web3" ? "text-gray-700 dark:text-gray-300" : "text-gray-600 dark:text-gray-400"
416
+ ),
417
+ children: E.text
418
+ }
419
+ ),
420
+ E.subtext && /* @__PURE__ */ o.jsx("p", { className: "text-xs text-gray-500 dark:text-gray-500 mt-1", children: E.subtext })
421
+ ] })
422
+ ]
423
+ },
424
+ A
425
+ )) })
426
+ ]
427
+ }
428
+ );
429
+ return /* @__PURE__ */ o.jsx("div", { children: j }, f.title);
430
+ };
431
+ return /* @__PURE__ */ o.jsxs("div", { className: d("space-y-8", t), children: [
432
+ (n || s) && /* @__PURE__ */ o.jsxs("div", { className: "text-center space-y-4", children: [
433
+ n && /* @__PURE__ */ o.jsx("h2", { className: "text-2xl sm:text-3xl font-bold text-gray-900 dark:text-white", children: n }),
434
+ s && /* @__PURE__ */ o.jsx("p", { className: "text-lg text-gray-600 dark:text-gray-400 max-w-2xl mx-auto", children: s })
435
+ ] }),
436
+ /* @__PURE__ */ o.jsxs("div", { className: d(xe({ layout: a, spacing: r })), children: [
437
+ m(l, 0),
438
+ m(c, 1)
439
+ ] })
440
+ ] });
441
+ }, H = (t, a, r, n) => ({
442
+ title: t,
443
+ variant: r,
444
+ items: a.map((s) => typeof s == "string" ? { text: s } : s),
445
+ ...n
446
+ }), _e = (t) => {
447
+ const a = [
448
+ { text: "Create account with email/password", icon: "🔑" },
449
+ { text: "Remember multiple passwords", icon: "🧠" },
450
+ { text: "Verify email address", icon: "📧" },
451
+ { text: "Risk of password theft", icon: "⚠️" },
452
+ { text: "Data stored on company servers", icon: "🏢" },
453
+ { text: "Account can be locked/suspended", icon: "🔒" }
454
+ ], r = [
455
+ { text: "Connect your wallet", icon: "🔗" },
456
+ { text: "No passwords needed", icon: "🚫" },
457
+ { text: "Instant authentication", icon: "⚡" },
458
+ { text: "Cryptographically secure", icon: "🔐" },
459
+ { text: "You own your data", icon: "👑" },
460
+ { text: "Censorship resistant", icon: "🛡️" }
461
+ ];
462
+ return {
463
+ traditional: H(
464
+ t?.traditionalTitle || "Traditional Email",
465
+ t?.traditionalItems || a,
466
+ "traditional",
467
+ { badge: { text: t?.traditionalBadge || "Old Way", color: "red" } }
468
+ ),
469
+ web3: H(
470
+ t?.web3Title || "Web3 Email",
471
+ t?.web3Items || r,
472
+ "web3",
473
+ { badge: { text: t?.web3Badge || "New Way", color: "green" } }
474
+ )
475
+ };
476
+ }, Re = ({
477
+ className: t,
478
+ children: a,
479
+ disabled: r = !1,
480
+ onClick: n
481
+ }) => /* @__PURE__ */ o.jsx(
482
+ "div",
483
+ {
484
+ className: d(
485
+ "p-4 rounded-lg border transition-colors",
486
+ "bg-white dark:bg-gray-900",
487
+ "border-gray-200 dark:border-gray-700",
488
+ "text-gray-900 dark:text-white",
489
+ r && "opacity-50 cursor-not-allowed",
490
+ "hover:bg-gray-50 dark:hover:bg-gray-800",
491
+ t
492
+ ),
493
+ onClick: r ? void 0 : n,
494
+ role: "region",
495
+ "aria-label": "UcontainerUstats",
496
+ children: a || "UcontainerUstats Component"
497
+ }
498
+ ), Te = ({
499
+ icon: t,
500
+ title: a = "No data",
501
+ description: r,
502
+ action: n,
503
+ className: s
504
+ }) => /* @__PURE__ */ o.jsxs(
505
+ "div",
506
+ {
507
+ className: d(
508
+ "flex flex-col items-center justify-center py-12 px-4 text-center",
509
+ s
510
+ ),
511
+ children: [
512
+ t && /* @__PURE__ */ o.jsx("div", { className: "mb-4 text-gray-400 dark:text-gray-600", children: t }),
513
+ /* @__PURE__ */ o.jsx("h3", { className: d(u.heading.h3(), "mb-2"), children: a }),
514
+ r && /* @__PURE__ */ o.jsx(
515
+ "p",
516
+ {
517
+ className: d(
518
+ u.body.sm(),
519
+ "text-gray-600 dark:text-gray-400 max-w-sm mb-6"
520
+ ),
521
+ children: r
522
+ }
523
+ ),
524
+ n && /* @__PURE__ */ o.jsx("div", { className: "mt-4", children: n })
525
+ ]
526
+ }
527
+ ), Ce = ({
528
+ className: t,
529
+ children: a,
530
+ disabled: r = !1,
531
+ onClick: n
532
+ }) => /* @__PURE__ */ o.jsx(
533
+ "div",
534
+ {
535
+ className: d(
536
+ "p-4 rounded-lg border transition-colors",
537
+ "bg-white dark:bg-gray-900",
538
+ "border-gray-200 dark:border-gray-700",
539
+ "text-gray-900 dark:text-white",
540
+ r && "opacity-50 cursor-not-allowed",
541
+ "hover:bg-gray-50 dark:hover:bg-gray-800",
542
+ t
543
+ ),
544
+ onClick: r ? void 0 : n,
545
+ role: "region",
546
+ "aria-label": "UfeatureUcomparison",
547
+ children: a || "UfeatureUcomparison Component"
548
+ }
549
+ ), Ue = ({
550
+ className: t,
551
+ children: a,
552
+ disabled: r = !1,
553
+ onClick: n
554
+ }) => /* @__PURE__ */ o.jsx(
555
+ "div",
556
+ {
557
+ className: d(
558
+ "p-4 rounded-lg border transition-colors",
559
+ "bg-white dark:bg-gray-900",
560
+ "border-gray-200 dark:border-gray-700",
561
+ "text-gray-900 dark:text-white",
562
+ r && "opacity-50 cursor-not-allowed",
563
+ "hover:bg-gray-50 dark:hover:bg-gray-800",
564
+ t
565
+ ),
566
+ onClick: r ? void 0 : n,
567
+ role: "region",
568
+ "aria-label": "UfeatureUimportance",
569
+ children: a || "UfeatureUimportance Component"
570
+ }
571
+ ), Se = ({
572
+ value: t,
573
+ min: a = 0,
574
+ max: r = 100,
575
+ size: n = 120,
576
+ strokeWidth: s = 10,
577
+ showValue: l = !0,
578
+ label: c,
579
+ variant: g = "primary",
580
+ className: w
581
+ }) => {
582
+ const x = Math.min(r, Math.max(a, t)), y = (x - a) / (r - a) * 100, h = n / 2, m = (n - s) / 2, k = Math.PI * m, f = k - y / 100 * k, N = {
583
+ primary: "stroke-blue-600 dark:stroke-blue-500",
584
+ success: "stroke-green-600 dark:stroke-green-500",
585
+ warning: "stroke-yellow-600 dark:stroke-yellow-500",
586
+ danger: "stroke-red-600 dark:stroke-red-500"
587
+ };
588
+ return /* @__PURE__ */ o.jsxs("div", { className: d("inline-flex flex-col items-center gap-2", w), children: [
589
+ /* @__PURE__ */ o.jsxs("svg", { width: n, height: n * 0.65, className: "transform rotate-180", children: [
590
+ /* @__PURE__ */ o.jsx(
591
+ "path",
592
+ {
593
+ d: `M ${s / 2} ${h} A ${m} ${m} 0 0 1 ${n - s / 2} ${h}`,
594
+ fill: "none",
595
+ className: "stroke-gray-200 dark:stroke-gray-700",
596
+ strokeWidth: s,
597
+ strokeLinecap: "round"
598
+ }
599
+ ),
600
+ /* @__PURE__ */ o.jsx(
601
+ "path",
602
+ {
603
+ d: `M ${s / 2} ${h} A ${m} ${m} 0 0 1 ${n - s / 2} ${h}`,
604
+ fill: "none",
605
+ className: d(N[g], "transition-all duration-500"),
606
+ strokeWidth: s,
607
+ strokeDasharray: k,
608
+ strokeDashoffset: f,
609
+ strokeLinecap: "round"
610
+ }
611
+ )
612
+ ] }),
613
+ l && /* @__PURE__ */ o.jsxs("div", { className: "text-center -mt-8", children: [
614
+ /* @__PURE__ */ o.jsx("div", { className: "text-2xl font-bold text-gray-900 dark:text-white", children: Math.round(x) }),
615
+ c && /* @__PURE__ */ o.jsx("div", { className: "text-xs text-gray-600 dark:text-gray-400", children: c })
616
+ ] })
617
+ ] });
618
+ }, Ae = ({
619
+ message: t = "Loading...",
620
+ size: a = "default",
621
+ fullScreen: r = !1,
622
+ variant: n = "default",
623
+ className: s
624
+ }) => {
625
+ const c = {
626
+ small: { spinner: "small", text: "text-sm" },
627
+ default: { spinner: "default", text: "text-base" },
628
+ large: { spinner: "large", text: "text-lg" }
629
+ }[a], g = r ? "fixed inset-0 z-50 flex items-center justify-center bg-white/80 dark:bg-gray-900/80" : "flex flex-col items-center justify-center p-8", w = /* @__PURE__ */ o.jsxs("div", { className: d(g, s), children: [
630
+ /* @__PURE__ */ o.jsx(J, { size: c.spinner, variant: n, className: "mb-4" }),
631
+ t && /* @__PURE__ */ o.jsx(
632
+ "p",
633
+ {
634
+ className: d(
635
+ c.text,
636
+ "text-gray-600 dark:text-gray-400 text-center max-w-sm"
637
+ ),
638
+ children: t
639
+ }
640
+ )
641
+ ] });
642
+ return r ? /* @__PURE__ */ o.jsx("div", { className: "fixed inset-0 z-50 bg-white/80 dark:bg-gray-900/80 backdrop-blur-sm", children: /* @__PURE__ */ o.jsxs("div", { className: "flex items-center justify-center min-h-full p-4", children: [
643
+ /* @__PURE__ */ o.jsx(J, { size: c.spinner, variant: n, className: "mb-4" }),
644
+ t && /* @__PURE__ */ o.jsx("p", { className: "text-center text-gray-600 dark:text-gray-400 max-w-sm", children: t })
645
+ ] }) }) : w;
646
+ }, Oe = ({
647
+ className: t,
648
+ children: a,
649
+ disabled: r = !1,
650
+ onClick: n
651
+ }) => /* @__PURE__ */ o.jsx(
652
+ "div",
653
+ {
654
+ className: d(
655
+ "p-4 rounded-lg border transition-colors",
656
+ "bg-white dark:bg-gray-900",
657
+ "border-gray-200 dark:border-gray-700",
658
+ "text-gray-900 dark:text-white",
659
+ r && "opacity-50 cursor-not-allowed",
660
+ "hover:bg-gray-50 dark:hover:bg-gray-800",
661
+ t
662
+ ),
663
+ onClick: r ? void 0 : n,
664
+ role: "region",
665
+ "aria-label": "UmetricUcomparison",
666
+ children: a || "UmetricUcomparison Component"
667
+ }
668
+ ), Pe = ({
669
+ className: t,
670
+ children: a,
671
+ disabled: r = !1,
672
+ onClick: n
673
+ }) => /* @__PURE__ */ o.jsx(
674
+ "div",
675
+ {
676
+ className: d(
677
+ "p-4 rounded-lg border transition-colors",
678
+ "bg-white dark:bg-gray-900",
679
+ "border-gray-200 dark:border-gray-700",
680
+ "text-gray-900 dark:text-white",
681
+ r && "opacity-50 cursor-not-allowed",
682
+ "hover:bg-gray-50 dark:hover:bg-gray-800",
683
+ t
684
+ ),
685
+ onClick: r ? void 0 : n,
686
+ role: "region",
687
+ "aria-label": "UmodelUprediction",
688
+ children: a || "UmodelUprediction Component"
689
+ }
690
+ ), $e = ({
691
+ className: t,
692
+ children: a,
693
+ disabled: r = !1,
694
+ onClick: n
695
+ }) => /* @__PURE__ */ o.jsx(
696
+ "div",
697
+ {
698
+ className: d(
699
+ "p-4 rounded-lg border transition-colors",
700
+ "bg-white dark:bg-gray-900",
701
+ "border-gray-200 dark:border-gray-700",
702
+ "text-gray-900 dark:text-white",
703
+ r && "opacity-50 cursor-not-allowed",
704
+ "hover:bg-gray-50 dark:hover:bg-gray-800",
705
+ t
706
+ ),
707
+ onClick: r ? void 0 : n,
708
+ role: "region",
709
+ "aria-label": "UprogressUtracker",
710
+ children: a || "UprogressUtracker Component"
711
+ }
712
+ ), Ve = ({ className: t, children: a, disabled: r }) => /* @__PURE__ */ o.jsx(
713
+ "div",
714
+ {
715
+ className: d(
716
+ "p-4 rounded-lg border transition-colors",
717
+ "bg-white dark:bg-gray-900",
718
+ "border-gray-200 dark:border-gray-700",
719
+ "text-gray-900 dark:text-white",
720
+ r && "opacity-50 cursor-not-allowed",
721
+ t
722
+ ),
723
+ role: "region",
724
+ "aria-label": "QaReport",
725
+ children: a || "QaReport Component"
726
+ }
727
+ ), Le = ({
728
+ className: t,
729
+ children: a,
730
+ disabled: r = !1,
731
+ onClick: n
732
+ }) => /* @__PURE__ */ o.jsx(
733
+ "div",
734
+ {
735
+ className: d(
736
+ "p-4 rounded-lg border transition-colors",
737
+ "bg-white dark:bg-gray-900",
738
+ "border-gray-200 dark:border-gray-700",
739
+ "text-gray-900 dark:text-white",
740
+ r && "opacity-50 cursor-not-allowed",
741
+ "hover:bg-gray-50 dark:hover:bg-gray-800",
742
+ t
743
+ ),
744
+ onClick: r ? void 0 : n,
745
+ role: "region",
746
+ "aria-label": "UreportUbuilder",
747
+ children: a || "UreportUbuilder Component"
748
+ }
749
+ ), Me = ({
750
+ data: t,
751
+ width: a = 100,
752
+ height: r = 30,
753
+ color: n = "#3b82f6",
754
+ fill: s = !1,
755
+ className: l
756
+ }) => {
757
+ if (t.length === 0) return null;
758
+ const c = Math.max(...t), g = Math.min(...t), w = c - g || 1, x = t.map((y, h) => {
759
+ const m = h / (t.length - 1) * a, k = r - (y - g) / w * r;
760
+ return `${m},${k}`;
761
+ }).join(" ");
762
+ return /* @__PURE__ */ o.jsxs(
763
+ "svg",
764
+ {
765
+ width: a,
766
+ height: r,
767
+ className: d("inline-block", l),
768
+ children: [
769
+ s && /* @__PURE__ */ o.jsx(
770
+ "polygon",
771
+ {
772
+ points: `0,${r} ${x} ${a},${r}`,
773
+ fill: n,
774
+ opacity: "0.2"
775
+ }
776
+ ),
777
+ /* @__PURE__ */ o.jsx(
778
+ "polyline",
779
+ {
780
+ points: x,
781
+ fill: "none",
782
+ stroke: n,
783
+ strokeWidth: "2",
784
+ strokeLinejoin: "round",
785
+ strokeLinecap: "round"
786
+ }
787
+ )
788
+ ]
789
+ }
790
+ );
791
+ }, De = ({
792
+ value: t,
793
+ label: a,
794
+ variant: r = "neutral",
795
+ size: n = "md",
796
+ align: s = "center",
797
+ icon: l,
798
+ iconPosition: c = "top",
799
+ className: g,
800
+ valueClassName: w,
801
+ labelClassName: x
802
+ }) => {
803
+ const y = {
804
+ primary: {
805
+ value: "text-blue-600 dark:text-blue-400",
806
+ label: "text-blue-600/70 dark:text-blue-400/70",
807
+ icon: "text-blue-600 dark:text-blue-400"
808
+ },
809
+ success: {
810
+ value: "text-green-600 dark:text-green-400",
811
+ label: "text-green-600/70 dark:text-green-400/70",
812
+ icon: "text-green-600 dark:text-green-400"
813
+ },
814
+ warning: {
815
+ value: "text-yellow-600 dark:text-yellow-400",
816
+ label: "text-yellow-600/70 dark:text-yellow-400/70",
817
+ icon: "text-yellow-600 dark:text-yellow-400"
818
+ },
819
+ danger: {
820
+ value: "text-red-600 dark:text-red-400",
821
+ label: "text-red-600/70 dark:text-red-400/70",
822
+ icon: "text-red-600 dark:text-red-400"
823
+ },
824
+ neutral: {
825
+ value: "text-gray-900 dark:text-gray-100",
826
+ label: "text-gray-600 dark:text-gray-400",
827
+ icon: "text-gray-600 dark:text-gray-400"
828
+ },
829
+ white: {
830
+ value: "text-white",
831
+ label: "text-white/70",
832
+ icon: "text-white"
833
+ }
834
+ }, h = {
835
+ sm: {
836
+ value: u.heading.h5(),
837
+ label: u.caption.default(),
838
+ icon: "h-4 w-4"
839
+ },
840
+ md: {
841
+ value: u.heading.h4(),
842
+ label: u.body.sm(),
843
+ icon: "h-5 w-5"
844
+ },
845
+ lg: {
846
+ value: u.heading.h3(),
847
+ label: u.body.md(),
848
+ icon: "h-6 w-6"
849
+ },
850
+ xl: {
851
+ value: u.heading.h2(),
852
+ label: u.body.lg(),
853
+ icon: "h-8 w-8"
854
+ }
855
+ }, m = {
856
+ left: "text-left",
857
+ center: "text-center",
858
+ right: "text-right"
859
+ }, k = y[r], f = h[n];
860
+ return /* @__PURE__ */ o.jsxs("div", { className: d(m[s], g), children: [
861
+ l && c === "top" && /* @__PURE__ */ o.jsx(
862
+ l,
863
+ {
864
+ className: d(
865
+ f.icon,
866
+ k.icon,
867
+ "mb-2",
868
+ s === "center" && "mx-auto"
869
+ )
870
+ }
871
+ ),
872
+ /* @__PURE__ */ o.jsxs(
873
+ "div",
874
+ {
875
+ className: d(
876
+ c === "left" && l && "flex items-center gap-3",
877
+ s === "center" && c === "left" && "justify-center"
878
+ ),
879
+ children: [
880
+ l && c === "left" && /* @__PURE__ */ o.jsx(l, { className: d(f.icon, k.icon) }),
881
+ /* @__PURE__ */ o.jsxs("div", { children: [
882
+ /* @__PURE__ */ o.jsx(
883
+ "div",
884
+ {
885
+ className: d(
886
+ "font-bold",
887
+ f.value,
888
+ k.value,
889
+ w
890
+ ),
891
+ children: t
892
+ }
893
+ ),
894
+ /* @__PURE__ */ o.jsx(
895
+ "div",
896
+ {
897
+ className: d(
898
+ f.label,
899
+ k.label,
900
+ x
901
+ ),
902
+ children: a
903
+ }
904
+ )
905
+ ] })
906
+ ]
907
+ }
908
+ )
909
+ ] });
910
+ }, Ye = ({
911
+ className: t,
912
+ children: a,
913
+ disabled: r
914
+ }) => /* @__PURE__ */ o.jsx(
915
+ "div",
916
+ {
917
+ className: d(
918
+ "p-4 rounded-lg border transition-colors",
919
+ "bg-white dark:bg-gray-900",
920
+ "border-gray-200 dark:border-gray-700",
921
+ "text-gray-900 dark:text-white",
922
+ r && "opacity-50 cursor-not-allowed",
923
+ t
924
+ ),
925
+ role: "region",
926
+ "aria-label": "SupportDashboard",
927
+ children: a || "SupportDashboard Component"
928
+ }
929
+ ), Ie = ({
930
+ value: t,
931
+ previousValue: a,
932
+ format: r = "percentage",
933
+ currency: n = "$",
934
+ showArrow: s = !0,
935
+ size: l = "md",
936
+ className: c
937
+ }) => {
938
+ const g = t - a, w = a !== 0 ? g / a * 100 : 0, x = g >= 0, y = () => {
939
+ switch (r) {
940
+ case "percentage":
941
+ return `${Math.abs(w).toFixed(1)}%`;
942
+ case "currency":
943
+ return `${n}${Math.abs(g).toFixed(2)}`;
944
+ case "number":
945
+ return Math.abs(g).toFixed(0);
946
+ default:
947
+ return "";
948
+ }
949
+ }, h = {
950
+ sm: "text-xs",
951
+ md: "text-sm",
952
+ lg: "text-base"
953
+ }, m = {
954
+ sm: "w-3 h-3",
955
+ md: "w-4 h-4",
956
+ lg: "w-5 h-5"
957
+ };
958
+ return /* @__PURE__ */ o.jsxs(
959
+ "div",
960
+ {
961
+ className: d(
962
+ "inline-flex items-center gap-1 font-semibold",
963
+ x ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400",
964
+ h[l],
965
+ c
966
+ ),
967
+ children: [
968
+ s && /* @__PURE__ */ o.jsx(
969
+ "svg",
970
+ {
971
+ className: d(m[l]),
972
+ fill: "none",
973
+ stroke: "currentColor",
974
+ viewBox: "0 0 24 24",
975
+ children: x ? /* @__PURE__ */ o.jsx(
976
+ "path",
977
+ {
978
+ strokeLinecap: "round",
979
+ strokeLinejoin: "round",
980
+ strokeWidth: 2,
981
+ d: "M5 10l7-7m0 0l7 7m-7-7v18"
982
+ }
983
+ ) : /* @__PURE__ */ o.jsx(
984
+ "path",
985
+ {
986
+ strokeLinecap: "round",
987
+ strokeLinejoin: "round",
988
+ strokeWidth: 2,
989
+ d: "M19 14l-7 7m0 0l-7-7m7 7V3"
990
+ }
991
+ )
992
+ }
993
+ ),
994
+ /* @__PURE__ */ o.jsxs("span", { children: [
995
+ x ? "+" : "-",
996
+ y()
997
+ ] })
998
+ ]
999
+ }
1000
+ );
1001
+ }, ye = _("", {
1002
+ variants: {
1003
+ variant: {
1004
+ hero: u.heading.display.hero(),
1005
+ display: u.heading.display.lg(),
1006
+ h1: u.heading.h1(),
1007
+ h2: u.heading.h2(),
1008
+ h3: u.heading.h3()
1009
+ },
1010
+ responsive: {
1011
+ true: "",
1012
+ // Responsive sizing handled in variant
1013
+ false: ""
1014
+ },
1015
+ align: {
1016
+ left: "text-left",
1017
+ center: "text-center",
1018
+ right: "text-right"
1019
+ },
1020
+ color: {
1021
+ default: "text-gray-900 dark:text-white",
1022
+ muted: "text-gray-600 dark:text-gray-400",
1023
+ vibrant: "text-white",
1024
+ brand: "bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent"
1025
+ }
1026
+ },
1027
+ defaultVariants: {
1028
+ variant: "h1",
1029
+ responsive: !0,
1030
+ align: "left",
1031
+ color: "default"
1032
+ }
1033
+ }), Fe = ({
1034
+ children: t,
1035
+ variant: a = "h1",
1036
+ responsive: r = !0,
1037
+ align: n = "left",
1038
+ color: s = "default",
1039
+ className: l,
1040
+ as: c
1041
+ }) => {
1042
+ const g = c || (a === "hero" || a === "display" || a === "h1" ? "h1" : a === "h2" ? "h2" : "h3");
1043
+ return /* @__PURE__ */ o.jsx(
1044
+ g,
1045
+ {
1046
+ className: d(
1047
+ ye({ variant: a, responsive: r, align: n, color: s }),
1048
+ l
1049
+ ),
1050
+ children: t
1051
+ }
1052
+ );
1053
+ }, ve = _("", {
1054
+ variants: {
1055
+ variant: {
1056
+ h2: u.heading.h2(),
1057
+ h3: u.heading.h3(),
1058
+ h4: u.heading.h4(),
1059
+ h5: u.heading.h5(),
1060
+ h6: u.heading.h6()
1061
+ },
1062
+ spacing: {
1063
+ none: "",
1064
+ sm: "mb-2",
1065
+ md: "mb-4",
1066
+ lg: "mb-6",
1067
+ xl: "mb-8"
1068
+ },
1069
+ align: {
1070
+ left: "text-left",
1071
+ center: "text-center",
1072
+ right: "text-right"
1073
+ }
1074
+ },
1075
+ defaultVariants: {
1076
+ variant: "h2",
1077
+ spacing: "md",
1078
+ align: "left"
1079
+ }
1080
+ }), We = ({
1081
+ children: t,
1082
+ variant: a = "h2",
1083
+ spacing: r = "md",
1084
+ align: n = "left",
1085
+ className: s,
1086
+ as: l
1087
+ }) => {
1088
+ const c = l || a;
1089
+ return M.createElement(
1090
+ c,
1091
+ {
1092
+ className: d(
1093
+ ve({ variant: a, spacing: r, align: n }),
1094
+ s
1095
+ )
1096
+ },
1097
+ t
1098
+ );
1099
+ }, pe = _("", {
1100
+ variants: {
1101
+ variant: {
1102
+ body: u.body.md(),
1103
+ lead: u.body.lg(),
1104
+ large: u.body.lg(),
1105
+ small: u.body.sm(),
1106
+ caption: u.body.xs()
1107
+ },
1108
+ color: {
1109
+ default: "text-gray-700 dark:text-gray-300",
1110
+ muted: "text-gray-500 dark:text-gray-500",
1111
+ primary: "text-gray-900 dark:text-white"
1112
+ },
1113
+ align: {
1114
+ left: "text-left",
1115
+ center: "text-center",
1116
+ right: "text-right",
1117
+ justify: "text-justify"
1118
+ }
1119
+ },
1120
+ defaultVariants: {
1121
+ variant: "body",
1122
+ color: "default",
1123
+ align: "left"
1124
+ }
1125
+ }), ze = ({
1126
+ children: t,
1127
+ variant: a = "body",
1128
+ color: r = "default",
1129
+ align: n = "left",
1130
+ className: s,
1131
+ as: l = "p"
1132
+ }) => M.createElement(
1133
+ l,
1134
+ { className: d(pe({ variant: a, color: r, align: n }), s) },
1135
+ t
1136
+ ), ke = _(u.link.default(), {
1137
+ variants: {
1138
+ variant: {
1139
+ default: u.link.default(),
1140
+ subtle: u.link.subtle(),
1141
+ muted: u.link.muted(),
1142
+ button: "inline-flex items-center justify-center px-4 py-2 rounded-md bg-blue-600 text-white hover:bg-blue-700 transition-colors"
1143
+ },
1144
+ external: {
1145
+ true: "inline-flex items-center gap-1",
1146
+ false: ""
1147
+ }
1148
+ },
1149
+ defaultVariants: {
1150
+ variant: "default",
1151
+ external: !1
1152
+ }
1153
+ }), Je = ({
1154
+ children: t,
1155
+ href: a,
1156
+ variant: r = "default",
1157
+ external: n = !1,
1158
+ className: s,
1159
+ target: l,
1160
+ rel: c
1161
+ }) => /* @__PURE__ */ o.jsxs(
1162
+ "a",
1163
+ {
1164
+ href: a,
1165
+ target: l || (n ? "_blank" : void 0),
1166
+ rel: c || (n ? "noopener noreferrer" : void 0),
1167
+ className: d(ke({ variant: r, external: n }), s),
1168
+ children: [
1169
+ t,
1170
+ n && /* @__PURE__ */ o.jsx(
1171
+ "svg",
1172
+ {
1173
+ className: "w-4 h-4",
1174
+ fill: "none",
1175
+ stroke: "currentColor",
1176
+ viewBox: "0 0 24 24",
1177
+ children: /* @__PURE__ */ o.jsx(
1178
+ "path",
1179
+ {
1180
+ strokeLinecap: "round",
1181
+ strokeLinejoin: "round",
1182
+ strokeWidth: 2,
1183
+ d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"
1184
+ }
1185
+ )
1186
+ }
1187
+ )
1188
+ ]
1189
+ }
1190
+ );
1191
+ export {
1192
+ ze as BodyText,
1193
+ Ee as ComparisonSection,
1194
+ Te as EmptyState,
1195
+ Se as Gauge,
1196
+ Ae as LoadingState,
1197
+ Fe as PageTitle,
1198
+ Ve as QaReport,
1199
+ We as SectionTitle,
1200
+ Me as Sparkline,
1201
+ De as StatDisplay,
1202
+ Ye as SupportDashboard,
1203
+ Je as TextLink,
1204
+ Ie as TrendIndicator,
1205
+ Re as UcontainerUstats,
1206
+ Ce as UfeatureUcomparison,
1207
+ Ue as UfeatureUimportance,
1208
+ Oe as UmetricUcomparison,
1209
+ Pe as UmodelUprediction,
1210
+ $e as UprogressUtracker,
1211
+ Le as UreportUbuilder,
1212
+ H as createComparisonData,
1213
+ _e as createEmailComparisonData
1214
+ };