@elevasis/ui 1.15.3 → 1.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/charts/index.d.ts +25 -2
- package/dist/charts/index.js +2 -2
- package/dist/{chunk-FEZ2TGSH.js → chunk-7ATCF6UL.js} +282 -14
- package/dist/{chunk-4NHYV42S.js → chunk-7S5FS7WW.js} +35 -4
- package/dist/chunk-ADSSLKKP.js +10 -0
- package/dist/{chunk-WY2BCL5F.js → chunk-F25DUOWI.js} +2 -2
- package/dist/chunk-MHW43EOH.js +47 -0
- package/dist/{chunk-6YIE72M2.js → chunk-NUULWBAD.js} +1 -1
- package/dist/{chunk-E6Q6A5TU.js → chunk-QCEUL5QG.js} +2 -6
- package/dist/{chunk-4NAZQ7WO.js → chunk-RYSPAQGW.js} +2 -2
- package/dist/{chunk-XY7VKOKI.js → chunk-UEYUPTAD.js} +80 -777
- package/dist/chunk-ZGK6XZVY.js +1208 -0
- package/dist/components/index.d.ts +511 -488
- package/dist/components/index.js +28 -1221
- package/dist/features/operations/index.css +565 -0
- package/dist/features/operations/index.d.ts +90 -0
- package/dist/features/operations/index.js +241 -0
- package/dist/hooks/index.d.ts +509 -488
- package/dist/hooks/index.js +4 -4
- package/dist/hooks/published.d.ts +509 -488
- package/dist/hooks/published.js +4 -4
- package/dist/index.d.ts +522 -490
- package/dist/index.js +6 -6
- package/dist/initialization/index.d.ts +508 -487
- package/dist/layout/index.d.ts +196 -6
- package/dist/layout/index.js +5 -4
- package/dist/profile/index.d.ts +508 -487
- package/dist/provider/index.d.ts +1 -1
- package/dist/provider/index.js +4 -4
- package/dist/provider/published.d.ts +1 -1
- package/dist/router/index.d.ts +12 -1
- package/dist/router/index.js +1 -1
- package/dist/supabase/index.d.ts +890 -851
- package/dist/theme/index.d.ts +1 -1
- package/dist/theme/index.js +3 -3
- package/dist/types/index.d.ts +509 -488
- package/package.json +5 -1
- package/dist/chunk-LHQTTUL2.js +0 -27
- package/dist/components/layout/backgrounds/CyberParticles.d.ts +0 -30
- package/dist/components/layout/backgrounds/CyberParticles.d.ts.map +0 -1
- package/dist/components/layout/backgrounds/CyberParticles.js +0 -138
package/dist/charts/index.d.ts
CHANGED
|
@@ -1,6 +1,29 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* ChartFrame decouples chart width from live parent width changes by debouncing
|
|
6
|
+
* ResizeObserver callbacks. Prevents Recharts (under @mantine/charts) from firing
|
|
7
|
+
* dozens of full re-renders during the sidebar collapse/expand animation.
|
|
8
|
+
*
|
|
9
|
+
* How it works: the outer div observes its real container width. The inner div
|
|
10
|
+
* is given a fixed pixel width from React state, which Recharts' own
|
|
11
|
+
* ResponsiveContainer reads. State only updates after `debounceMs` of quiet, so
|
|
12
|
+
* the chart doesn't re-render on every frame of the sidebar transition.
|
|
13
|
+
*
|
|
14
|
+
* @repo/ui context: used wherever a @mantine/charts component renders inside
|
|
15
|
+
* a layout that has a CSS-transitioned collapsible sidebar. Without this wrapper,
|
|
16
|
+
* every frame of the sidebar animation fires ResizeObserver → Recharts scale
|
|
17
|
+
* recomputation → React reconciliation → SVG regeneration, saturating the main
|
|
18
|
+
* thread and causing animation jitter.
|
|
19
|
+
*/
|
|
20
|
+
interface ChartFrameProps {
|
|
21
|
+
h: number;
|
|
22
|
+
debounceMs?: number;
|
|
23
|
+
children: ReactNode;
|
|
24
|
+
}
|
|
25
|
+
declare function ChartFrame({ h, debounceMs, children }: ChartFrameProps): react_jsx_runtime.JSX.Element;
|
|
26
|
+
|
|
4
27
|
/**
|
|
5
28
|
* CyberAreaChart — Reusable area chart with cyber/high-tech aesthetic.
|
|
6
29
|
*
|
|
@@ -307,5 +330,5 @@ interface CombinedTrendChartProps {
|
|
|
307
330
|
}
|
|
308
331
|
declare function CombinedTrendChart({ healthData, errorData: _errorData, isLoading, error, timeRange, navigationAction }: CombinedTrendChartProps): react_jsx_runtime.JSX.Element;
|
|
309
332
|
|
|
310
|
-
export { ActivityTrendChart, CombinedTrendChart, CostTrendChart, CyberAreaChart, CyberDonut, CyberDonutTooltip, CyberLegendItem, HeroStatsRow, getSeriesColor, useCyberColors };
|
|
311
|
-
export type { ActivityTrendChartProps, CombinedTrendChartProps, CostTrendChartProps, CyberAreaChartProps, CyberColors, CyberDonutProps, CyberDonutSegment, CyberSeries, HeroStatsRowProps };
|
|
333
|
+
export { ActivityTrendChart, ChartFrame, CombinedTrendChart, CostTrendChart, CyberAreaChart, CyberDonut, CyberDonutTooltip, CyberLegendItem, HeroStatsRow, getSeriesColor, useCyberColors };
|
|
334
|
+
export type { ActivityTrendChartProps, ChartFrameProps, CombinedTrendChartProps, CostTrendChartProps, CyberAreaChartProps, CyberColors, CyberDonutProps, CyberDonutSegment, CyberSeries, HeroStatsRowProps };
|
package/dist/charts/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { ActivityTrendChart, CombinedTrendChart, CostTrendChart, CyberAreaChart, CyberDonut, CyberDonutTooltip, CyberLegendItem, HeroStatsRow, getSeriesColor, useCyberColors } from '../chunk-
|
|
1
|
+
export { ActivityTrendChart, ChartFrame, CombinedTrendChart, CostTrendChart, CyberAreaChart, CyberDonut, CyberDonutTooltip, CyberLegendItem, HeroStatsRow, getSeriesColor, useCyberColors } from '../chunk-7S5FS7WW.js';
|
|
2
2
|
import '../chunk-KBLGVZBD.js';
|
|
3
3
|
import '../chunk-LXHZYSMQ.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-MHW43EOH.js';
|
|
5
5
|
import '../chunk-ELJIFLCB.js';
|
|
6
6
|
import '../chunk-SZHARWKU.js';
|
|
7
7
|
import '../chunk-FCFLBMVI.js';
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { useComputedColorScheme } from '@mantine/core';
|
|
2
1
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { useComputedColorScheme } from '@mantine/core';
|
|
3
3
|
|
|
4
4
|
// src/components/layout/backgrounds/PerspectiveGrid.tsx
|
|
5
5
|
function PerspectiveGrid({
|
|
6
|
-
glowColor = "
|
|
6
|
+
glowColor = "color-mix(in srgb, color-mix(in srgb, var(--color-primary) 20%, var(--color-border)) 30%, transparent)",
|
|
7
7
|
lineColor: lineColorProp,
|
|
8
8
|
className
|
|
9
9
|
}) {
|
|
10
|
-
const
|
|
11
|
-
const lineColor = lineColorProp ?? (colorScheme === "dark" ? "rgba(90, 90, 90, 0.1)" : "rgba(120, 120, 120, 0.1)");
|
|
10
|
+
const lineColor = lineColorProp ?? "color-mix(in srgb, var(--color-border) 50%, transparent)";
|
|
12
11
|
return /* @__PURE__ */ jsxs(
|
|
13
12
|
"div",
|
|
14
13
|
{
|
|
@@ -272,8 +271,8 @@ function FilmGrain({ darkOpacity = 0.02, lightOpacity = 0.06, className }) {
|
|
|
272
271
|
);
|
|
273
272
|
}
|
|
274
273
|
var randRange = (min, max) => min + Math.random() * (max - min);
|
|
275
|
-
var FLUX_SPARKS = Array.from({ length:
|
|
276
|
-
const duration = randRange(
|
|
274
|
+
var FLUX_SPARKS = Array.from({ length: 32 }, () => {
|
|
275
|
+
const duration = randRange(12, 70);
|
|
277
276
|
const pulse = randRange(0.8, 2.2);
|
|
278
277
|
return {
|
|
279
278
|
left: randRange(0, 100),
|
|
@@ -281,20 +280,36 @@ var FLUX_SPARKS = Array.from({ length: 42 }, () => {
|
|
|
281
280
|
duration,
|
|
282
281
|
delay: -randRange(0, duration),
|
|
283
282
|
drift: randRange(-35, 35),
|
|
283
|
+
peak: randRange(0.18, 0.5),
|
|
284
|
+
pulse,
|
|
285
|
+
pulseDelay: -randRange(0, pulse)
|
|
286
|
+
};
|
|
287
|
+
});
|
|
288
|
+
var FLUX_MOTES = Array.from({ length: 19 }, () => {
|
|
289
|
+
const duration = randRange(18, 90);
|
|
290
|
+
const pulse = randRange(1.6, 4);
|
|
291
|
+
return {
|
|
292
|
+
left: randRange(-2, 102),
|
|
293
|
+
size: randRange(3.5, 10),
|
|
294
|
+
duration,
|
|
295
|
+
delay: -randRange(0, duration),
|
|
296
|
+
drift: randRange(-55, 55),
|
|
297
|
+
blur: randRange(1.5, 5),
|
|
298
|
+
peak: randRange(0.22, 0.55),
|
|
284
299
|
pulse,
|
|
285
300
|
pulseDelay: -randRange(0, pulse)
|
|
286
301
|
};
|
|
287
302
|
});
|
|
288
|
-
var FLUX_GLOWS = Array.from({ length:
|
|
289
|
-
const duration = randRange(
|
|
303
|
+
var FLUX_GLOWS = Array.from({ length: 10 }, () => {
|
|
304
|
+
const duration = randRange(25, 130);
|
|
290
305
|
const pulse = randRange(3.5, 7);
|
|
291
306
|
return {
|
|
292
307
|
left: randRange(-5, 105),
|
|
293
|
-
size: randRange(
|
|
308
|
+
size: randRange(3, 22),
|
|
294
309
|
duration,
|
|
295
310
|
delay: -randRange(0, duration),
|
|
296
311
|
drift: randRange(-80, 80),
|
|
297
|
-
blur: randRange(
|
|
312
|
+
blur: randRange(6, 16),
|
|
298
313
|
opacity: randRange(0.18, 0.42),
|
|
299
314
|
pulse,
|
|
300
315
|
pulseDelay: -randRange(0, pulse)
|
|
@@ -303,8 +318,8 @@ var FLUX_GLOWS = Array.from({ length: 14 }, () => {
|
|
|
303
318
|
var KEYFRAMES4 = `
|
|
304
319
|
@keyframes elevasis-cyber-spark-rise {
|
|
305
320
|
0% { transform: translate3d(0, 0, 0); opacity: 0; }
|
|
306
|
-
10% { opacity: 1; }
|
|
307
|
-
85% { opacity: 0.9; }
|
|
321
|
+
10% { opacity: var(--cy-peak, 1); }
|
|
322
|
+
85% { opacity: calc(var(--cy-peak, 1) * 0.9); }
|
|
308
323
|
100% { transform: translate3d(var(--cy-drift, 0px), -112vh, 0); opacity: 0; }
|
|
309
324
|
}
|
|
310
325
|
@keyframes elevasis-cyber-spark-pulse {
|
|
@@ -339,11 +354,11 @@ function FluxGlows() {
|
|
|
339
354
|
left: `${g.left}%`,
|
|
340
355
|
width: `${g.size}px`,
|
|
341
356
|
height: `${g.size}px`,
|
|
342
|
-
opacity: g.opacity,
|
|
343
357
|
filter: `blur(${g.blur}px)`,
|
|
344
358
|
animation: `elevasis-cyber-spark-rise ${g.duration}s linear infinite`,
|
|
345
359
|
animationDelay: `${g.delay}s`,
|
|
346
360
|
["--cy-drift"]: `${g.drift}px`,
|
|
361
|
+
["--cy-peak"]: `${g.opacity}`,
|
|
347
362
|
willChange: "transform, opacity"
|
|
348
363
|
},
|
|
349
364
|
children: /* @__PURE__ */ jsx(
|
|
@@ -365,6 +380,44 @@ function FluxGlows() {
|
|
|
365
380
|
i
|
|
366
381
|
)) });
|
|
367
382
|
}
|
|
383
|
+
function FluxMotes() {
|
|
384
|
+
return /* @__PURE__ */ jsx(Fragment, { children: FLUX_MOTES.map((m, i) => /* @__PURE__ */ jsx(
|
|
385
|
+
"div",
|
|
386
|
+
{
|
|
387
|
+
className: "elevasis-cyber-spark",
|
|
388
|
+
style: {
|
|
389
|
+
position: "absolute",
|
|
390
|
+
bottom: "-3%",
|
|
391
|
+
left: `${m.left}%`,
|
|
392
|
+
width: `${m.size}px`,
|
|
393
|
+
height: `${m.size}px`,
|
|
394
|
+
filter: `blur(${m.blur}px)`,
|
|
395
|
+
animation: `elevasis-cyber-spark-rise ${m.duration}s linear infinite`,
|
|
396
|
+
animationDelay: `${m.delay}s`,
|
|
397
|
+
["--cy-drift"]: `${m.drift}px`,
|
|
398
|
+
["--cy-peak"]: `${m.peak}`,
|
|
399
|
+
willChange: "transform, opacity"
|
|
400
|
+
},
|
|
401
|
+
children: /* @__PURE__ */ jsx(
|
|
402
|
+
"div",
|
|
403
|
+
{
|
|
404
|
+
className: "elevasis-cyber-spark-inner",
|
|
405
|
+
style: {
|
|
406
|
+
width: "100%",
|
|
407
|
+
height: "100%",
|
|
408
|
+
borderRadius: "50%",
|
|
409
|
+
background: `radial-gradient(circle, var(--color-primary) 0%, color-mix(in srgb, var(--color-primary) 70%, transparent) 55%, transparent 90%)`,
|
|
410
|
+
boxShadow: `0 0 ${m.size * 1.2}px color-mix(in srgb, var(--color-primary) 40%, transparent)`,
|
|
411
|
+
animation: `elevasis-cyber-spark-pulse ${m.pulse}s ease-in-out infinite`,
|
|
412
|
+
animationDelay: `${m.pulseDelay}s`,
|
|
413
|
+
willChange: "transform, filter"
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
)
|
|
417
|
+
},
|
|
418
|
+
i
|
|
419
|
+
)) });
|
|
420
|
+
}
|
|
368
421
|
function FluxSparks() {
|
|
369
422
|
return /* @__PURE__ */ jsx(Fragment, { children: FLUX_SPARKS.map((s, i) => /* @__PURE__ */ jsx(
|
|
370
423
|
"div",
|
|
@@ -379,6 +432,7 @@ function FluxSparks() {
|
|
|
379
432
|
animation: `elevasis-cyber-spark-rise ${s.duration}s linear infinite`,
|
|
380
433
|
animationDelay: `${s.delay}s`,
|
|
381
434
|
["--cy-drift"]: `${s.drift}px`,
|
|
435
|
+
["--cy-peak"]: `${s.peak}`,
|
|
382
436
|
willChange: "transform, opacity"
|
|
383
437
|
},
|
|
384
438
|
children: /* @__PURE__ */ jsx(
|
|
@@ -416,6 +470,7 @@ function CyberParticles({ variant: _variant, className }) {
|
|
|
416
470
|
children: [
|
|
417
471
|
/* @__PURE__ */ jsx("style", { children: KEYFRAMES4 }),
|
|
418
472
|
/* @__PURE__ */ jsx(FluxGlows, {}),
|
|
473
|
+
/* @__PURE__ */ jsx(FluxMotes, {}),
|
|
419
474
|
/* @__PURE__ */ jsx(FluxSparks, {})
|
|
420
475
|
]
|
|
421
476
|
}
|
|
@@ -430,5 +485,218 @@ function CyberBackground({ variant }) {
|
|
|
430
485
|
/* @__PURE__ */ jsx(FilmGrain, {})
|
|
431
486
|
] });
|
|
432
487
|
}
|
|
488
|
+
var MOTE_COUNT = 24;
|
|
489
|
+
var randRange2 = (min, max) => min + Math.random() * (max - min);
|
|
490
|
+
var MOTES = Array.from({ length: MOTE_COUNT }, () => {
|
|
491
|
+
const size = randRange2(2, 16);
|
|
492
|
+
return {
|
|
493
|
+
left: randRange2(0, 100),
|
|
494
|
+
size,
|
|
495
|
+
blur: size / 2,
|
|
496
|
+
duration: randRange2(28, 52),
|
|
497
|
+
delay: -randRange2(0, 35),
|
|
498
|
+
drift: randRange2(-22, 22),
|
|
499
|
+
pulse: randRange2(3, 9),
|
|
500
|
+
pulseDelay: -randRange2(0, 5)
|
|
501
|
+
};
|
|
502
|
+
});
|
|
503
|
+
var STYLE = `
|
|
504
|
+
div[style*="var(--color-background)"][style*="100vh"] {
|
|
505
|
+
background-color: transparent !important;
|
|
506
|
+
isolation: isolate;
|
|
507
|
+
}
|
|
508
|
+
.wavy-bg-root {
|
|
509
|
+
position: absolute;
|
|
510
|
+
inset: 0;
|
|
511
|
+
z-index: -1;
|
|
512
|
+
overflow: hidden;
|
|
513
|
+
pointer-events: none;
|
|
514
|
+
background: var(--color-background);
|
|
515
|
+
}
|
|
516
|
+
/* Variant palettes (light mode defaults) */
|
|
517
|
+
.wavy-bg-root[data-variant="nirvana"] {
|
|
518
|
+
--wavy-wave-front: #fde8e0;
|
|
519
|
+
--wavy-wave-back: #fef2ec;
|
|
520
|
+
--wavy-mote-core: rgba(253, 205, 170, 0.85);
|
|
521
|
+
--wavy-mote-halo: rgba(253, 205, 170, 0.3);
|
|
522
|
+
}
|
|
523
|
+
.wavy-bg-root[data-variant="wave"] {
|
|
524
|
+
--wavy-wave-front: #dbeafe;
|
|
525
|
+
--wavy-wave-back: #eef4ff;
|
|
526
|
+
--wavy-mote-core: rgba(125, 180, 255, 0.85);
|
|
527
|
+
--wavy-mote-halo: rgba(125, 180, 255, 0.3);
|
|
528
|
+
}
|
|
529
|
+
.wavy-bg-root[data-variant="honey"] {
|
|
530
|
+
--wavy-wave-front: #fbeed3;
|
|
531
|
+
--wavy-wave-back: #fdf5e0;
|
|
532
|
+
--wavy-mote-core: rgba(230, 170, 50, 0.85);
|
|
533
|
+
--wavy-mote-halo: rgba(230, 170, 50, 0.3);
|
|
534
|
+
}
|
|
535
|
+
.wavy-bg-root[data-variant="canopy"] {
|
|
536
|
+
--wavy-wave-front: #dcebdf;
|
|
537
|
+
--wavy-wave-back: #e6f0e8;
|
|
538
|
+
--wavy-mote-core: rgba(140, 205, 155, 0.85);
|
|
539
|
+
--wavy-mote-halo: rgba(140, 205, 155, 0.3);
|
|
540
|
+
}
|
|
541
|
+
/* Variant palettes (dark mode overrides) */
|
|
542
|
+
[data-mantine-color-scheme="dark"] .wavy-bg-root[data-variant="nirvana"] {
|
|
543
|
+
--wavy-wave-front: #140804;
|
|
544
|
+
--wavy-wave-back: #0a0402;
|
|
545
|
+
--wavy-mote-core: rgba(180, 110, 70, 0.4);
|
|
546
|
+
--wavy-mote-halo: rgba(180, 110, 70, 0.12);
|
|
547
|
+
}
|
|
548
|
+
[data-mantine-color-scheme="dark"] .wavy-bg-root[data-variant="wave"] {
|
|
549
|
+
--wavy-wave-front: #050e1c;
|
|
550
|
+
--wavy-wave-back: #030812;
|
|
551
|
+
--wavy-mote-core: rgba(90, 160, 230, 0.4);
|
|
552
|
+
--wavy-mote-halo: rgba(90, 160, 230, 0.12);
|
|
553
|
+
}
|
|
554
|
+
[data-mantine-color-scheme="dark"] .wavy-bg-root[data-variant="honey"] {
|
|
555
|
+
--wavy-wave-front: #120e05;
|
|
556
|
+
--wavy-wave-back: #080502;
|
|
557
|
+
--wavy-mote-core: rgba(232, 168, 32, 0.4);
|
|
558
|
+
--wavy-mote-halo: rgba(232, 168, 32, 0.12);
|
|
559
|
+
}
|
|
560
|
+
[data-mantine-color-scheme="dark"] .wavy-bg-root[data-variant="canopy"] {
|
|
561
|
+
--wavy-wave-front: #060f09;
|
|
562
|
+
--wavy-wave-back: #030805;
|
|
563
|
+
--wavy-mote-core: rgba(74, 168, 96, 0.4);
|
|
564
|
+
--wavy-mote-halo: rgba(74, 168, 96, 0.12);
|
|
565
|
+
}
|
|
566
|
+
.wavy-bg-layer {
|
|
567
|
+
position: absolute;
|
|
568
|
+
top: 0;
|
|
569
|
+
left: 0;
|
|
570
|
+
width: 200%;
|
|
571
|
+
height: 100%;
|
|
572
|
+
will-change: transform;
|
|
573
|
+
}
|
|
574
|
+
.wavy-bg-layer svg {
|
|
575
|
+
display: block;
|
|
576
|
+
width: 100%;
|
|
577
|
+
height: 100%;
|
|
578
|
+
}
|
|
579
|
+
@keyframes wavy-drift {
|
|
580
|
+
from { transform: translateX(0); }
|
|
581
|
+
to { transform: translateX(-50%); }
|
|
582
|
+
}
|
|
583
|
+
.wavy-bg-layer-back {
|
|
584
|
+
animation: wavy-drift 105s linear infinite;
|
|
585
|
+
}
|
|
586
|
+
.wavy-bg-layer-front {
|
|
587
|
+
animation: wavy-drift 63s linear infinite;
|
|
588
|
+
}
|
|
589
|
+
.wavy-bg-wave-back {
|
|
590
|
+
fill: var(--wavy-wave-back);
|
|
591
|
+
}
|
|
592
|
+
.wavy-bg-wave-front {
|
|
593
|
+
fill: var(--wavy-wave-front);
|
|
594
|
+
}
|
|
595
|
+
.wavy-bg-motes {
|
|
596
|
+
position: absolute;
|
|
597
|
+
inset: 0;
|
|
598
|
+
pointer-events: none;
|
|
599
|
+
}
|
|
600
|
+
.wavy-bg-mote {
|
|
601
|
+
position: absolute;
|
|
602
|
+
bottom: 18%;
|
|
603
|
+
opacity: 0;
|
|
604
|
+
transform: translate3d(0, 0, 0);
|
|
605
|
+
animation: wavy-mote-rise var(--mote-duration, 32s) ease-in-out infinite;
|
|
606
|
+
animation-delay: var(--mote-delay, 0s);
|
|
607
|
+
will-change: transform, opacity;
|
|
608
|
+
}
|
|
609
|
+
.wavy-bg-mote-inner {
|
|
610
|
+
width: var(--mote-size, 4px);
|
|
611
|
+
height: var(--mote-size, 4px);
|
|
612
|
+
border-radius: 50%;
|
|
613
|
+
background: radial-gradient(
|
|
614
|
+
circle,
|
|
615
|
+
var(--wavy-mote-core) 0%,
|
|
616
|
+
var(--wavy-mote-halo) 45%,
|
|
617
|
+
transparent 75%
|
|
618
|
+
);
|
|
619
|
+
filter: blur(var(--mote-blur, 2px));
|
|
620
|
+
animation: wavy-mote-pulse var(--mote-pulse, 5s) ease-in-out infinite;
|
|
621
|
+
animation-delay: var(--mote-pulse-delay, 0s);
|
|
622
|
+
will-change: transform, filter;
|
|
623
|
+
}
|
|
624
|
+
@keyframes wavy-mote-rise {
|
|
625
|
+
0% {
|
|
626
|
+
transform: translate3d(0, 0, 0);
|
|
627
|
+
opacity: 0;
|
|
628
|
+
}
|
|
629
|
+
12% {
|
|
630
|
+
opacity: 1;
|
|
631
|
+
}
|
|
632
|
+
70% {
|
|
633
|
+
opacity: 0.85;
|
|
634
|
+
}
|
|
635
|
+
100% {
|
|
636
|
+
transform: translate3d(var(--mote-drift, 0px), -85vh, 0);
|
|
637
|
+
opacity: 0;
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
@keyframes wavy-mote-pulse {
|
|
641
|
+
0%, 100% {
|
|
642
|
+
transform: scale(0.75);
|
|
643
|
+
filter: blur(var(--mote-blur, 2px)) brightness(0.8);
|
|
644
|
+
}
|
|
645
|
+
50% {
|
|
646
|
+
transform: scale(1.35);
|
|
647
|
+
filter: blur(calc(var(--mote-blur, 2px) * 1.4)) brightness(1.4);
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
@media (prefers-reduced-motion: reduce) {
|
|
651
|
+
.wavy-bg-layer-back,
|
|
652
|
+
.wavy-bg-layer-front,
|
|
653
|
+
.wavy-bg-mote,
|
|
654
|
+
.wavy-bg-mote-inner {
|
|
655
|
+
animation: none;
|
|
656
|
+
}
|
|
657
|
+
.wavy-bg-mote {
|
|
658
|
+
opacity: 0;
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
`;
|
|
662
|
+
function WaveBackground({ variant }) {
|
|
663
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
664
|
+
/* @__PURE__ */ jsx("style", { children: STYLE }),
|
|
665
|
+
/* @__PURE__ */ jsxs("div", { className: "wavy-bg-root", "data-variant": variant, children: [
|
|
666
|
+
/* @__PURE__ */ jsx("div", { className: "wavy-bg-layer wavy-bg-layer-back", children: /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 3200 900", preserveAspectRatio: "none", children: /* @__PURE__ */ jsx(
|
|
667
|
+
"path",
|
|
668
|
+
{
|
|
669
|
+
className: "wavy-bg-wave-back",
|
|
670
|
+
d: "M0,340 C260,200 520,220 820,340 C1100,480 1340,440 1600,340 C1860,200 2120,220 2420,340 C2700,480 2940,440 3200,340 L3200,900 L0,900 Z"
|
|
671
|
+
}
|
|
672
|
+
) }) }),
|
|
673
|
+
/* @__PURE__ */ jsx("div", { className: "wavy-bg-layer wavy-bg-layer-front", children: /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 3200 900", preserveAspectRatio: "none", children: /* @__PURE__ */ jsx(
|
|
674
|
+
"path",
|
|
675
|
+
{
|
|
676
|
+
className: "wavy-bg-wave-front",
|
|
677
|
+
d: "M0,640 C280,540 520,560 820,680 C1100,790 1340,760 1600,640 C1880,540 2120,560 2420,680 C2700,790 2940,760 3200,640 L3200,900 L0,900 Z"
|
|
678
|
+
}
|
|
679
|
+
) }) }),
|
|
680
|
+
/* @__PURE__ */ jsx("div", { className: "wavy-bg-motes", "aria-hidden": "true", children: MOTES.map((mote, i) => /* @__PURE__ */ jsx(
|
|
681
|
+
"div",
|
|
682
|
+
{
|
|
683
|
+
className: "wavy-bg-mote",
|
|
684
|
+
style: {
|
|
685
|
+
left: `${mote.left}%`,
|
|
686
|
+
["--mote-size"]: `${mote.size}px`,
|
|
687
|
+
["--mote-blur"]: `${mote.blur}px`,
|
|
688
|
+
["--mote-duration"]: `${mote.duration}s`,
|
|
689
|
+
["--mote-delay"]: `${mote.delay}s`,
|
|
690
|
+
["--mote-drift"]: `${mote.drift}px`,
|
|
691
|
+
["--mote-pulse"]: `${mote.pulse}s`,
|
|
692
|
+
["--mote-pulse-delay"]: `${mote.pulseDelay}s`
|
|
693
|
+
},
|
|
694
|
+
children: /* @__PURE__ */ jsx("div", { className: "wavy-bg-mote-inner" })
|
|
695
|
+
},
|
|
696
|
+
i
|
|
697
|
+
)) })
|
|
698
|
+
] })
|
|
699
|
+
] });
|
|
700
|
+
}
|
|
433
701
|
|
|
434
|
-
export { CyberBackground, CyberParticles, FilmGrain, FloatingOrbs, PerspectiveGrid, RadiantGlow };
|
|
702
|
+
export { CyberBackground, CyberParticles, FilmGrain, FloatingOrbs, PerspectiveGrid, RadiantGlow, WaveBackground };
|
|
@@ -3,15 +3,43 @@ import { ResourceStatusColors } from './chunk-ELJIFLCB.js';
|
|
|
3
3
|
import { getErrorInfo, getErrorTitle, getResourceIcon } from './chunk-FCFLBMVI.js';
|
|
4
4
|
import { useAuthContext } from './chunk-BRJ3QZ4E.js';
|
|
5
5
|
import { useRouterContext } from './chunk-Q7DJKLEN.js';
|
|
6
|
-
import {
|
|
6
|
+
import { useRef, useState, useLayoutEffect, useEffect, useMemo, useCallback } from 'react';
|
|
7
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
8
|
import { useComputedColorScheme, Group, Text, Box, Stack, Center, Title, Button, Loader, Badge, Collapse, ScrollArea, Card, Skeleton, Select, Alert, Code, ThemeIcon, Paper, Grid, NumberFormatter, Space, Tooltip as Tooltip$1, SimpleGrid, SegmentedControl } from '@mantine/core';
|
|
8
9
|
import { ResponsiveContainer, AreaChart, CartesianGrid, XAxis, YAxis, Tooltip, ReferenceLine as ReferenceLine$1, Area, PieChart, Pie, Cell } from 'recharts';
|
|
9
|
-
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
10
10
|
import { IconMinus, IconTrendingUp, IconTrendingDown, IconChevronUp, IconChevronDown, IconAlertCircle, IconClock, IconInfoCircle, IconChevronRight, IconDownload, IconChartLine, IconApps, IconPlayerPlay, IconChartBar, IconAlertTriangle, IconRocket } from '@tabler/icons-react';
|
|
11
11
|
import Markdown from 'react-markdown';
|
|
12
12
|
import { Prism } from 'react-syntax-highlighter';
|
|
13
13
|
import { oneDark } from 'react-syntax-highlighter/dist/esm/styles/prism';
|
|
14
14
|
|
|
15
|
+
function ChartFrame({ h, debounceMs = 150, children }) {
|
|
16
|
+
const ref = useRef(null);
|
|
17
|
+
const [width, setWidth] = useState(0);
|
|
18
|
+
useLayoutEffect(() => {
|
|
19
|
+
const el = ref.current;
|
|
20
|
+
if (!el) return;
|
|
21
|
+
const w = el.getBoundingClientRect().width;
|
|
22
|
+
if (w > 0) setWidth(w);
|
|
23
|
+
}, []);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
const el = ref.current;
|
|
26
|
+
if (!el) return;
|
|
27
|
+
let timeout;
|
|
28
|
+
const ro = new ResizeObserver((entries) => {
|
|
29
|
+
if (timeout !== void 0) window.clearTimeout(timeout);
|
|
30
|
+
const nextWidth = entries[0]?.contentRect.width ?? 0;
|
|
31
|
+
timeout = window.setTimeout(() => {
|
|
32
|
+
if (nextWidth > 0) setWidth(nextWidth);
|
|
33
|
+
}, debounceMs);
|
|
34
|
+
});
|
|
35
|
+
ro.observe(el);
|
|
36
|
+
return () => {
|
|
37
|
+
ro.disconnect();
|
|
38
|
+
if (timeout !== void 0) window.clearTimeout(timeout);
|
|
39
|
+
};
|
|
40
|
+
}, [debounceMs]);
|
|
41
|
+
return /* @__PURE__ */ jsx("div", { ref, style: { width: "100%", height: h, position: "relative" }, children: width > 0 && /* @__PURE__ */ jsx("div", { style: { width, height: h }, children }) });
|
|
42
|
+
}
|
|
15
43
|
var THEME_DERIVED = {
|
|
16
44
|
grid: "var(--color-border)",
|
|
17
45
|
gridLine: "var(--color-border)",
|
|
@@ -1026,6 +1054,7 @@ function ResourceCard({
|
|
|
1026
1054
|
rightSection,
|
|
1027
1055
|
topSection,
|
|
1028
1056
|
lastRunLabel,
|
|
1057
|
+
dormant = false,
|
|
1029
1058
|
style,
|
|
1030
1059
|
...rest
|
|
1031
1060
|
}) {
|
|
@@ -1105,6 +1134,7 @@ function ResourceCard({
|
|
|
1105
1134
|
}
|
|
1106
1135
|
if (layout === "row") {
|
|
1107
1136
|
const [hovered, setHovered] = useState(false);
|
|
1137
|
+
const baseBackground = dormant ? "var(--glass-background)" : "var(--color-surface)";
|
|
1108
1138
|
return /* @__PURE__ */ jsx(
|
|
1109
1139
|
Card,
|
|
1110
1140
|
{
|
|
@@ -1113,7 +1143,8 @@ function ResourceCard({
|
|
|
1113
1143
|
cursor: "pointer",
|
|
1114
1144
|
border: "1px solid var(--color-border)",
|
|
1115
1145
|
transition: "background 150ms ease",
|
|
1116
|
-
background: hovered ? "var(--active-background)" :
|
|
1146
|
+
background: hovered ? "var(--active-background)" : baseBackground,
|
|
1147
|
+
...dormant ? { backdropFilter: "var(--glass-blur)", WebkitBackdropFilter: "var(--glass-blur)" } : {},
|
|
1117
1148
|
...style
|
|
1118
1149
|
},
|
|
1119
1150
|
onClick: () => onClick(resource),
|
|
@@ -1600,4 +1631,4 @@ function CombinedTrendChart({
|
|
|
1600
1631
|
] });
|
|
1601
1632
|
}
|
|
1602
1633
|
|
|
1603
|
-
export { APIErrorAlert, ActivityTrendChart, CardHeader, CollapsibleSection, CombinedTrendChart, ContextViewer, CostTrendChart, CustomSelector, CyberAreaChart, CyberDonut, CyberDonutTooltip, CyberLegendItem, DetailCardSkeleton, EmptyState, GlowDot, HeroStatsRow, JsonViewer, ListSkeleton, PageNotFound, PageTitleCaption, ResourceCard, StatCard, StatCardSkeleton, StatsCardSkeleton, StyledMarkdown, TabCountBadge, TimeRangeSelector, TrendIndicator, catalogItemToResourceDefinition, getSeriesColor, useCyberColors };
|
|
1634
|
+
export { APIErrorAlert, ActivityTrendChart, CardHeader, ChartFrame, CollapsibleSection, CombinedTrendChart, ContextViewer, CostTrendChart, CustomSelector, CyberAreaChart, CyberDonut, CyberDonutTooltip, CyberLegendItem, DetailCardSkeleton, EmptyState, GlowDot, HeroStatsRow, JsonViewer, ListSkeleton, PageNotFound, PageTitleCaption, ResourceCard, StatCard, StatCardSkeleton, StatsCardSkeleton, StyledMarkdown, TabCountBadge, TimeRangeSelector, TrendIndicator, catalogItemToResourceDefinition, getSeriesColor, useCyberColors };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { useAppearance } from './chunk-QJ2KCHKX.js';
|
|
2
|
+
import { Center } from '@mantine/core';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
function SubshellLoader() {
|
|
6
|
+
const { loader } = useAppearance();
|
|
7
|
+
return /* @__PURE__ */ jsx(Center, { mih: "calc(100vh - 70px)", children: loader });
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { SubshellLoader };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { AppBackground } from './chunk-NUULWBAD.js';
|
|
1
2
|
import { ElevasisLoader } from './chunk-SZHARWKU.js';
|
|
2
|
-
import { PRESETS, getPreset, generateShades, mantineThemeOverride, createCssVariablesResolver, PresetsProvider } from './chunk-
|
|
3
|
-
import { AppBackground } from './chunk-6YIE72M2.js';
|
|
3
|
+
import { PRESETS, getPreset, generateShades, mantineThemeOverride, createCssVariablesResolver, PresetsProvider } from './chunk-UEYUPTAD.js';
|
|
4
4
|
import { ElevasisCoreProvider } from './chunk-53GNREDV.js';
|
|
5
5
|
import { AppearanceProvider } from './chunk-QJ2KCHKX.js';
|
|
6
6
|
import { getErrorInfo, formatErrorMessage, getErrorTitle } from './chunk-FCFLBMVI.js';
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { RouterProvider } from './chunk-Q7DJKLEN.js';
|
|
2
|
+
import { useLocation, useRouter, Link } from '@tanstack/react-router';
|
|
3
|
+
import { useCallback, useMemo, forwardRef, useRef, useEffect } from 'react';
|
|
4
|
+
import { jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
function TanStackRouterBridge({ children }) {
|
|
7
|
+
const location = useLocation();
|
|
8
|
+
const router = useRouter();
|
|
9
|
+
const navigate = useCallback((to) => router.navigate({ to }), [router]);
|
|
10
|
+
const Link$1 = useMemo(
|
|
11
|
+
() => forwardRef(function AdapterLink(props, ref) {
|
|
12
|
+
return /* @__PURE__ */ jsx(Link, { ref, ...props });
|
|
13
|
+
}),
|
|
14
|
+
[]
|
|
15
|
+
);
|
|
16
|
+
const value = useMemo(
|
|
17
|
+
() => ({
|
|
18
|
+
currentPath: location.pathname,
|
|
19
|
+
navigate,
|
|
20
|
+
Link: Link$1
|
|
21
|
+
}),
|
|
22
|
+
[location.pathname, navigate, Link$1]
|
|
23
|
+
);
|
|
24
|
+
return /* @__PURE__ */ jsx(RouterProvider, { value, children });
|
|
25
|
+
}
|
|
26
|
+
function ScrollToTop() {
|
|
27
|
+
const location = useLocation();
|
|
28
|
+
const anchorRef = useRef(null);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
const el = anchorRef.current;
|
|
31
|
+
if (!el) return;
|
|
32
|
+
let parent = el.parentElement;
|
|
33
|
+
while (parent) {
|
|
34
|
+
const overflowY = getComputedStyle(parent).overflowY;
|
|
35
|
+
const isScrollable = overflowY === "auto" || overflowY === "scroll";
|
|
36
|
+
if (isScrollable && parent.scrollHeight > parent.clientHeight) {
|
|
37
|
+
parent.scrollTo({ top: 0, behavior: "auto" });
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
parent = parent.parentElement;
|
|
41
|
+
}
|
|
42
|
+
window.scrollTo(0, 0);
|
|
43
|
+
}, [location.pathname]);
|
|
44
|
+
return /* @__PURE__ */ jsx("div", { ref: anchorRef, "aria-hidden": true, style: { display: "none" } });
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export { ScrollToTop, TanStackRouterBridge };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PerspectiveGrid, RadiantGlow, FloatingOrbs, FilmGrain } from './chunk-
|
|
1
|
+
import { PerspectiveGrid, RadiantGlow, FloatingOrbs, FilmGrain } from './chunk-7ATCF6UL.js';
|
|
2
2
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
3
3
|
|
|
4
4
|
function AppBackground({ children }) {
|
|
@@ -2,7 +2,7 @@ import { sidebarItemGap, sidebarSubLinkPaddingY, sidebarSubLinkPaddingX, sidebar
|
|
|
2
2
|
import { useAppearance } from './chunk-QJ2KCHKX.js';
|
|
3
3
|
import { useRouterContext } from './chunk-Q7DJKLEN.js';
|
|
4
4
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
5
|
-
import { Collapse, HoverCard, Stack, Group, Text, UnstyledButton, Tooltip, ScrollArea, Menu, Avatar, Container, Title, Button, Box,
|
|
5
|
+
import { Collapse, HoverCard, Stack, Group, Text, UnstyledButton, Tooltip, ScrollArea, Menu, Avatar, Container, Title, Button, Box, useMantineColorScheme, Switch, Code } from '@mantine/core';
|
|
6
6
|
import { IconLayoutSidebarLeftExpand, IconLayoutSidebarLeftCollapse, IconUser, IconLogout, IconAlertCircle, IconChevronDown, IconChevronRight, IconMoonStars, IconSun } from '@tabler/icons-react';
|
|
7
7
|
import { createContext, memo, useEffect, createElement, useContext, useRef, useLayoutEffect, useState } from 'react';
|
|
8
8
|
|
|
@@ -1214,10 +1214,6 @@ var SubshellSidebarSection = ({
|
|
|
1214
1214
|
|
|
1215
1215
|
// src/components/layout/sub-shell/constants.ts
|
|
1216
1216
|
var subsidebarWidth = 200;
|
|
1217
|
-
function SubshellLoader() {
|
|
1218
|
-
const { loader } = useAppearance();
|
|
1219
|
-
return /* @__PURE__ */ jsx(Center, { mih: "calc(100vh - 70px)", children: loader });
|
|
1220
|
-
}
|
|
1221
1217
|
var TopbarContainer = ({ children }) => {
|
|
1222
1218
|
const { isCollapsed } = useSidebar();
|
|
1223
1219
|
const actualSidebarWidth = isCollapsed ? sidebarCollapsedWidth : sidebarWidth;
|
|
@@ -1307,4 +1303,4 @@ var Topbar = ({ version, leftContent, children }) => {
|
|
|
1307
1303
|
] });
|
|
1308
1304
|
};
|
|
1309
1305
|
|
|
1310
|
-
export { AppShellCenteredContainer, AppShellContainer, AppShellContentContainer, AppShellError, AppShellLoader, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, CollapsibleSidebarGroup, LinksGroup, PageContainer, Sidebar, SidebarContext, SidebarListItem, SidebarProvider, SubshellContainer, SubshellContentContainer,
|
|
1306
|
+
export { AppShellCenteredContainer, AppShellContainer, AppShellContentContainer, AppShellError, AppShellLoader, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, CollapsibleSidebarGroup, LinksGroup, PageContainer, Sidebar, SidebarContext, SidebarListItem, SidebarProvider, SubshellContainer, SubshellContentContainer, SubshellRightSideContainer, SubshellSidebar, SubshellSidebarSection, Topbar, TopbarContainer, Vignette, subsidebarWidth, useSidebar, useSidebarCollapse };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { usePresetsContext } from './chunk-
|
|
1
|
+
import { usePresetsContext } from './chunk-UEYUPTAD.js';
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
3
|
|
|
4
4
|
var BUILT_IN_NAMES = /* @__PURE__ */ new Set([
|
|
@@ -16,7 +16,7 @@ var BUILT_IN_NAMES = /* @__PURE__ */ new Set([
|
|
|
16
16
|
"canopy",
|
|
17
17
|
"slate",
|
|
18
18
|
"cyber-strike",
|
|
19
|
-
"cyber-
|
|
19
|
+
"cyber-punk",
|
|
20
20
|
"cyber-void"
|
|
21
21
|
]);
|
|
22
22
|
function titleCase(str) {
|