@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.
Files changed (41) hide show
  1. package/dist/charts/index.d.ts +25 -2
  2. package/dist/charts/index.js +2 -2
  3. package/dist/{chunk-FEZ2TGSH.js → chunk-7ATCF6UL.js} +282 -14
  4. package/dist/{chunk-4NHYV42S.js → chunk-7S5FS7WW.js} +35 -4
  5. package/dist/chunk-ADSSLKKP.js +10 -0
  6. package/dist/{chunk-WY2BCL5F.js → chunk-F25DUOWI.js} +2 -2
  7. package/dist/chunk-MHW43EOH.js +47 -0
  8. package/dist/{chunk-6YIE72M2.js → chunk-NUULWBAD.js} +1 -1
  9. package/dist/{chunk-E6Q6A5TU.js → chunk-QCEUL5QG.js} +2 -6
  10. package/dist/{chunk-4NAZQ7WO.js → chunk-RYSPAQGW.js} +2 -2
  11. package/dist/{chunk-XY7VKOKI.js → chunk-UEYUPTAD.js} +80 -777
  12. package/dist/chunk-ZGK6XZVY.js +1208 -0
  13. package/dist/components/index.d.ts +511 -488
  14. package/dist/components/index.js +28 -1221
  15. package/dist/features/operations/index.css +565 -0
  16. package/dist/features/operations/index.d.ts +90 -0
  17. package/dist/features/operations/index.js +241 -0
  18. package/dist/hooks/index.d.ts +509 -488
  19. package/dist/hooks/index.js +4 -4
  20. package/dist/hooks/published.d.ts +509 -488
  21. package/dist/hooks/published.js +4 -4
  22. package/dist/index.d.ts +522 -490
  23. package/dist/index.js +6 -6
  24. package/dist/initialization/index.d.ts +508 -487
  25. package/dist/layout/index.d.ts +196 -6
  26. package/dist/layout/index.js +5 -4
  27. package/dist/profile/index.d.ts +508 -487
  28. package/dist/provider/index.d.ts +1 -1
  29. package/dist/provider/index.js +4 -4
  30. package/dist/provider/published.d.ts +1 -1
  31. package/dist/router/index.d.ts +12 -1
  32. package/dist/router/index.js +1 -1
  33. package/dist/supabase/index.d.ts +890 -851
  34. package/dist/theme/index.d.ts +1 -1
  35. package/dist/theme/index.js +3 -3
  36. package/dist/types/index.d.ts +509 -488
  37. package/package.json +5 -1
  38. package/dist/chunk-LHQTTUL2.js +0 -27
  39. package/dist/components/layout/backgrounds/CyberParticles.d.ts +0 -30
  40. package/dist/components/layout/backgrounds/CyberParticles.d.ts.map +0 -1
  41. package/dist/components/layout/backgrounds/CyberParticles.js +0 -138
@@ -0,0 +1,565 @@
1
+ /* src/components/display/StatCard.module.css */
2
+ .heroCard {
3
+ background: var(--glass-background);
4
+ backdrop-filter: var(--glass-blur);
5
+ border: 1px solid var(--color-border);
6
+ }
7
+ .iconRing {
8
+ position: relative;
9
+ display: flex;
10
+ align-items: center;
11
+ justify-content: center;
12
+ width: 46px;
13
+ height: 46px;
14
+ border-radius: 50%;
15
+ background: color-mix(in srgb, var(--color-primary) 12%, transparent);
16
+ border: 1px solid color-mix(in srgb, var(--color-primary) 25%, transparent);
17
+ color: var(--color-primary);
18
+ flex-shrink: 0;
19
+ box-shadow: 0 0 12px color-mix(in srgb, var(--color-primary) 15%, transparent);
20
+ }
21
+ .iconRingSm {
22
+ position: relative;
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: center;
26
+ width: 36px;
27
+ height: 36px;
28
+ border-radius: 50%;
29
+ background: color-mix(in srgb, var(--color-primary) 12%, transparent);
30
+ border: 1px solid color-mix(in srgb, var(--color-primary) 25%, transparent);
31
+ color: var(--color-primary);
32
+ flex-shrink: 0;
33
+ box-shadow: 0 0 8px color-mix(in srgb, var(--color-primary) 12%, transparent);
34
+ }
35
+ .heroValue {
36
+ font-family: var(--elevasis-font-family-subtitle);
37
+ font-size: 1.85rem;
38
+ font-weight: 800;
39
+ line-height: 1;
40
+ letter-spacing: -0.02em;
41
+ font-variant-numeric: tabular-nums;
42
+ }
43
+ [data-mantine-color-scheme=dark] .heroValue {
44
+ text-shadow: 0 0 20px color-mix(in srgb, var(--color-primary) 20%, transparent);
45
+ }
46
+ .heroValueSm {
47
+ font-family: var(--elevasis-font-family-subtitle);
48
+ font-size: 1.35rem;
49
+ font-weight: 700;
50
+ line-height: 1;
51
+ letter-spacing: -0.02em;
52
+ font-variant-numeric: tabular-nums;
53
+ }
54
+ .heroLabel {
55
+ font-size: 0.68rem;
56
+ font-weight: 700;
57
+ text-transform: uppercase;
58
+ letter-spacing: 0.12em;
59
+ color: var(--color-text-dimmed);
60
+ }
61
+ .heroLabelSm {
62
+ font-size: 0.62rem;
63
+ font-weight: 700;
64
+ text-transform: uppercase;
65
+ letter-spacing: 0.12em;
66
+ color: var(--color-text-dimmed);
67
+ }
68
+
69
+ /* src/components/display/ElevasisLoader.module.css */
70
+ .wrapper {
71
+ display: inline-flex;
72
+ align-items: center;
73
+ justify-content: center;
74
+ width: var(--loader-size);
75
+ height: var(--loader-size);
76
+ overflow: visible;
77
+ }
78
+ .loader {
79
+ width: 100%;
80
+ height: 100%;
81
+ display: block;
82
+ overflow: visible;
83
+ }
84
+ .chevron {
85
+ stroke: var(--loader-color);
86
+ stroke-width: 2;
87
+ stroke-linecap: square;
88
+ stroke-linejoin: miter;
89
+ fill: none;
90
+ opacity: 0.15;
91
+ animation: chevronPulse 2s ease-in-out infinite;
92
+ filter: drop-shadow(0 0 1.5px var(--loader-color));
93
+ }
94
+ .c1 {
95
+ animation-delay: 0s;
96
+ }
97
+ .c2 {
98
+ animation-delay: 0.2s;
99
+ }
100
+ .c3 {
101
+ animation-delay: 0.4s;
102
+ }
103
+ @keyframes chevronPulse {
104
+ 0%, 100% {
105
+ opacity: 0.12;
106
+ filter: drop-shadow(0 0 1px var(--loader-color));
107
+ }
108
+ 40%, 60% {
109
+ opacity: 1;
110
+ filter: drop-shadow(0 0 3px var(--loader-color));
111
+ }
112
+ }
113
+
114
+ /* src/theme/custom.css */
115
+ .mantine-Accordion-control:hover {
116
+ background-color: var(--color-surface-hover);
117
+ }
118
+ .mantine-Menu-item:hover:not([data-disabled]) {
119
+ background-color: var(--color-surface-hover);
120
+ }
121
+ .mantine-Select-option:hover {
122
+ background-color: var(--color-surface-hover) !important;
123
+ }
124
+ [data-mantine-color-scheme=dark] .mantine-Tabs-root {
125
+ --tab-border-color: var(--color-border);
126
+ }
127
+ .mantine-Tabs-tab:hover {
128
+ background-color: var(--color-surface-hover);
129
+ }
130
+ .mantine-Pagination-control:not([data-active]) {
131
+ background: var(--color-surface);
132
+ }
133
+ ::-webkit-scrollbar {
134
+ width: 5px;
135
+ height: 5px;
136
+ }
137
+ ::-webkit-scrollbar-track {
138
+ background: transparent;
139
+ }
140
+ ::-webkit-scrollbar-thumb {
141
+ background: color-mix(in srgb, var(--color-text-subtle) 50%, var(--color-border));
142
+ border-radius: 4px;
143
+ }
144
+ ::-webkit-scrollbar-thumb:hover {
145
+ background: var(--color-text-subtle);
146
+ }
147
+ .mantine-Skeleton-root[data-visible]::after {
148
+ background-color: color-mix(in srgb, var(--color-text-subtle) 30%, var(--color-surface)) !important;
149
+ }
150
+ .mantine-Checkbox-input {
151
+ background-color: var(--color-surface);
152
+ border-color: var(--color-border);
153
+ }
154
+ .mantine-Checkbox-input:checked {
155
+ background-color: var(--color-primary);
156
+ border-color: var(--color-primary);
157
+ }
158
+ .mantine-Switch-root:has(input:not(:checked)) .mantine-Switch-track {
159
+ background-color: var(--color-surface-hover);
160
+ border-color: var(--color-border);
161
+ }
162
+ .mantine-Timeline-root {
163
+ --tl-color: var(--color-primary);
164
+ }
165
+ .mantine-Timeline-item {
166
+ --item-border-color: var(--color-border);
167
+ }
168
+ .mantine-Timeline-itemBullet {
169
+ border-color: var(--color-border);
170
+ }
171
+ .mantine-Timeline-itemBullet:where([data-with-child]) {
172
+ background-color: var(--color-primary);
173
+ border-color: var(--color-primary);
174
+ }
175
+ .recharts-surface:focus {
176
+ outline: none;
177
+ }
178
+
179
+ /* src/graph/Graph.module.css */
180
+ @keyframes edgeFlow {
181
+ 0% {
182
+ stroke-dashoffset: 24;
183
+ }
184
+ 100% {
185
+ stroke-dashoffset: 0;
186
+ }
187
+ }
188
+ @keyframes edgeFlowReverse {
189
+ 0% {
190
+ stroke-dashoffset: 0;
191
+ }
192
+ 100% {
193
+ stroke-dashoffset: 24;
194
+ }
195
+ }
196
+ @keyframes pulse {
197
+ 0%, 100% {
198
+ opacity: 0.6;
199
+ }
200
+ 50% {
201
+ opacity: 1;
202
+ }
203
+ }
204
+ @keyframes livePulse {
205
+ 0%, 100% {
206
+ opacity: 1;
207
+ }
208
+ 50% {
209
+ opacity: 0.6;
210
+ }
211
+ }
212
+ .livePulse {
213
+ animation: livePulse 2s ease-in-out infinite;
214
+ }
215
+ @keyframes glowPulse {
216
+ 0%, 100% {
217
+ box-shadow: 0 0 5px var(--glow-color, color-mix(in srgb, var(--color-primary) 30%, transparent)), 0 0 15px var(--glow-color, color-mix(in srgb, var(--color-primary) 10%, transparent));
218
+ }
219
+ 50% {
220
+ box-shadow: 0 0 10px var(--glow-color, color-mix(in srgb, var(--color-primary) 50%, transparent)), 0 0 20px var(--glow-color, color-mix(in srgb, var(--color-primary) 20%, transparent));
221
+ }
222
+ }
223
+ @keyframes nodeEnter {
224
+ 0% {
225
+ opacity: 0;
226
+ transform: scale(0.8) translateY(10px);
227
+ }
228
+ 100% {
229
+ opacity: 1;
230
+ transform: scale(1) translateY(0);
231
+ }
232
+ }
233
+ @keyframes handlePulse {
234
+ 0%, 100% {
235
+ transform: scale(1);
236
+ box-shadow: 0 0 0 0 var(--handle-color, color-mix(in srgb, var(--color-primary) 40%, transparent));
237
+ }
238
+ 50% {
239
+ transform: scale(1.2);
240
+ box-shadow: 0 0 0 4px var(--handle-color, color-mix(in srgb, var(--color-primary) 0%, transparent));
241
+ }
242
+ }
243
+ @keyframes gridMove {
244
+ 0% {
245
+ background-position: 0 0;
246
+ }
247
+ 100% {
248
+ background-position: 40px 40px;
249
+ }
250
+ }
251
+ @keyframes labelFadeIn {
252
+ 0% {
253
+ opacity: 0;
254
+ transform: translate(-50%, -50%) translate(var(--label-x), var(--label-y)) scale(0.8);
255
+ }
256
+ 100% {
257
+ opacity: 1;
258
+ transform: translate(-50%, -50%) translate(var(--label-x), var(--label-y)) scale(1);
259
+ }
260
+ }
261
+ @keyframes scanLine {
262
+ 0% {
263
+ transform: translateY(-100%);
264
+ opacity: 0;
265
+ }
266
+ 50% {
267
+ opacity: 0.5;
268
+ }
269
+ 100% {
270
+ transform: translateY(100%);
271
+ opacity: 0;
272
+ }
273
+ }
274
+ .graphContainer :global(.react-flow__node.selected),
275
+ .graphContainer :global(.react-flow__node:focus),
276
+ .graphContainer :global(.react-flow__node:focus-visible) {
277
+ outline: none !important;
278
+ }
279
+ .graphContainer :global(.react-flow__node.selected > *) {
280
+ box-shadow: none;
281
+ }
282
+ .graphContainer {
283
+ position: relative;
284
+ background-image:
285
+ linear-gradient(color-mix(in srgb, var(--color-primary) 5%, transparent) 1px, transparent 1px),
286
+ linear-gradient(
287
+ 90deg,
288
+ color-mix(in srgb, var(--color-primary) 5%, transparent) 1px,
289
+ transparent 1px),
290
+ radial-gradient(
291
+ ellipse at 50% 50%,
292
+ color-mix(in srgb, var(--color-primary) 5%, transparent) 0%,
293
+ transparent 70%);
294
+ background-color: color-mix(in srgb, var(--color-background) 50%, var(--glass-background));
295
+ backdrop-filter: var(--glass-blur);
296
+ background-size:
297
+ 40px 40px,
298
+ 40px 40px,
299
+ 100% 100%;
300
+ animation: gridMove 20s linear infinite;
301
+ }
302
+ [data-mantine-color-scheme=dark] .graphContainer {
303
+ background-image:
304
+ linear-gradient(color-mix(in srgb, var(--color-primary) 9%, transparent) 1px, transparent 1px),
305
+ linear-gradient(
306
+ 90deg,
307
+ color-mix(in srgb, var(--color-primary) 9%, transparent) 1px,
308
+ transparent 1px),
309
+ radial-gradient(
310
+ ellipse at 50% 50%,
311
+ color-mix(in srgb, var(--color-primary) 9%, transparent) 0%,
312
+ transparent 70%);
313
+ background-size:
314
+ 40px 40px,
315
+ 40px 40px,
316
+ 100% 100%;
317
+ }
318
+ .node {
319
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
320
+ position: relative;
321
+ }
322
+ .node :global(.react-flow__node.selected),
323
+ .node :global(.react-flow__node:focus),
324
+ .node :global(.react-flow__node:focus-visible) {
325
+ outline: none !important;
326
+ box-shadow: none !important;
327
+ }
328
+ .node:nth-child(1) {
329
+ animation-delay: 0.05s;
330
+ }
331
+ .node:nth-child(2) {
332
+ animation-delay: 0.1s;
333
+ }
334
+ .node:nth-child(3) {
335
+ animation-delay: 0.15s;
336
+ }
337
+ .node:nth-child(4) {
338
+ animation-delay: 0.2s;
339
+ }
340
+ .node:nth-child(5) {
341
+ animation-delay: 0.25s;
342
+ }
343
+ .node:nth-child(6) {
344
+ animation-delay: 0.3s;
345
+ }
346
+ .node:nth-child(7) {
347
+ animation-delay: 0.35s;
348
+ }
349
+ .node:nth-child(8) {
350
+ animation-delay: 0.4s;
351
+ }
352
+ .node:nth-child(9) {
353
+ animation-delay: 0.45s;
354
+ }
355
+ .node:nth-child(10) {
356
+ animation-delay: 0.5s;
357
+ }
358
+ .node:nth-child(11) {
359
+ animation-delay: 0.55s;
360
+ }
361
+ .node:nth-child(12) {
362
+ animation-delay: 0.6s;
363
+ }
364
+ .nodeCard {
365
+ position: relative;
366
+ border-radius: var(--mantine-radius-md);
367
+ overflow: hidden;
368
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
369
+ }
370
+ .nodeCard::before {
371
+ content: "";
372
+ position: absolute;
373
+ inset: 0;
374
+ background:
375
+ linear-gradient(
376
+ 135deg,
377
+ var(--node-color-light, color-mix(in srgb, var(--color-primary) 10%, transparent)) 0%,
378
+ transparent 50%,
379
+ var(--node-color-light, color-mix(in srgb, var(--color-primary) 5%, transparent)) 100%);
380
+ pointer-events: none;
381
+ opacity: 0;
382
+ transition: opacity 0.3s ease;
383
+ }
384
+ .nodeCard::after {
385
+ content: "";
386
+ position: absolute;
387
+ left: 0;
388
+ right: 0;
389
+ height: 30%;
390
+ background:
391
+ linear-gradient(
392
+ 180deg,
393
+ transparent 0%,
394
+ var(--node-color-glow, color-mix(in srgb, var(--color-primary) 10%, transparent)) 50%,
395
+ transparent 100%);
396
+ pointer-events: none;
397
+ opacity: 0;
398
+ }
399
+ .nodeCard:hover::before,
400
+ .nodeCardSelected::before {
401
+ opacity: 1;
402
+ }
403
+ .nodeCard:hover::after,
404
+ .nodeCardSelected::after {
405
+ animation: scanLine 3s ease-in-out infinite;
406
+ }
407
+ .nodeCard:hover {
408
+ transform: translateY(-2px) scale(1.02);
409
+ }
410
+ .nodeCardSelected {
411
+ transform: translateY(-2px) scale(1.02);
412
+ animation: glowPulse 2s ease-in-out infinite;
413
+ }
414
+ .nodeAgent {
415
+ --glow-color: rgba(139, 92, 246, 0.4);
416
+ --node-color-light: rgba(139, 92, 246, 0.1);
417
+ --node-color-glow: rgba(139, 92, 246, 0.15);
418
+ --handle-color: rgba(139, 92, 246, 0.5);
419
+ --gradient-start: rgba(139, 92, 246, 0.15);
420
+ --gradient-end: rgba(139, 92, 246, 0.05);
421
+ }
422
+ .nodeWorkflow {
423
+ --glow-color: rgba(59, 130, 246, 0.4);
424
+ --node-color-light: rgba(59, 130, 246, 0.1);
425
+ --node-color-glow: rgba(59, 130, 246, 0.15);
426
+ --handle-color: rgba(59, 130, 246, 0.5);
427
+ --gradient-start: rgba(59, 130, 246, 0.15);
428
+ --gradient-end: rgba(59, 130, 246, 0.05);
429
+ }
430
+ .nodeTrigger {
431
+ --glow-color: rgba(249, 115, 22, 0.4);
432
+ --node-color-light: rgba(249, 115, 22, 0.1);
433
+ --node-color-glow: rgba(249, 115, 22, 0.15);
434
+ --handle-color: rgba(249, 115, 22, 0.5);
435
+ --gradient-start: rgba(249, 115, 22, 0.15);
436
+ --gradient-end: rgba(249, 115, 22, 0.05);
437
+ }
438
+ .nodeIntegration {
439
+ --glow-color: rgba(20, 184, 166, 0.4);
440
+ --node-color-light: rgba(20, 184, 166, 0.1);
441
+ --node-color-glow: rgba(20, 184, 166, 0.15);
442
+ --handle-color: rgba(20, 184, 166, 0.5);
443
+ --gradient-start: rgba(20, 184, 166, 0.15);
444
+ --gradient-end: rgba(20, 184, 166, 0.05);
445
+ }
446
+ .nodeExternal {
447
+ --glow-color: rgba(107, 114, 128, 0.4);
448
+ --node-color-light: rgba(107, 114, 128, 0.1);
449
+ --node-color-glow: rgba(107, 114, 128, 0.15);
450
+ --handle-color: rgba(107, 114, 128, 0.5);
451
+ --gradient-start: rgba(107, 114, 128, 0.15);
452
+ --gradient-end: rgba(107, 114, 128, 0.05);
453
+ }
454
+ .nodeHuman {
455
+ --glow-color: rgba(245, 158, 11, 0.4);
456
+ --node-color-light: rgba(245, 158, 11, 0.1);
457
+ --node-color-glow: rgba(245, 158, 11, 0.15);
458
+ --handle-color: rgba(245, 158, 11, 0.5);
459
+ --gradient-start: rgba(245, 158, 11, 0.15);
460
+ --gradient-end: rgba(245, 158, 11, 0.05);
461
+ }
462
+ .nodePrimary {
463
+ --glow-color: rgba(37, 99, 235, 0.4);
464
+ --node-color-light: rgba(37, 99, 235, 0.1);
465
+ --node-color-glow: rgba(37, 99, 235, 0.15);
466
+ --handle-color: rgba(37, 99, 235, 0.5);
467
+ --gradient-start: rgba(37, 99, 235, 0.15);
468
+ --gradient-end: rgba(37, 99, 235, 0.05);
469
+ }
470
+ .handle {
471
+ transition: all 0.2s ease;
472
+ }
473
+ .handle:hover {
474
+ animation: handlePulse 1s ease-in-out infinite;
475
+ }
476
+ .nodeIcon {
477
+ transition: all 0.3s ease;
478
+ }
479
+ .badge {
480
+ transition: all 0.2s ease;
481
+ backdrop-filter: blur(4px);
482
+ }
483
+ .nodeCard:hover .badge {
484
+ transform: scale(1.05);
485
+ }
486
+ .badgeProd {
487
+ box-shadow: 0 0 8px rgba(34, 197, 94, 0.3);
488
+ }
489
+ .edge {
490
+ transition: all 0.3s ease;
491
+ }
492
+ .edgeAnimated {
493
+ stroke-dasharray: 8 4;
494
+ animation: edgeFlow 1s linear infinite;
495
+ }
496
+ .edgeGlow {
497
+ filter: drop-shadow(0 0 3px var(--edge-color, color-mix(in srgb, var(--color-primary) 50%, transparent)));
498
+ }
499
+ .edgeHighlighted {
500
+ stroke-width: 3px;
501
+ }
502
+ .edgeLabel {
503
+ backdrop-filter: blur(8px);
504
+ border: 1px solid rgba(255, 255, 255, 0.1);
505
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 0 20px var(--label-glow, color-mix(in srgb, var(--color-primary) 20%, transparent));
506
+ transition: box-shadow 0.2s ease;
507
+ }
508
+ .edgeLabel:hover {
509
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2), 0 0 30px var(--label-glow, color-mix(in srgb, var(--color-primary) 30%, transparent));
510
+ }
511
+ .legend {
512
+ backdrop-filter: var(--glass-blur);
513
+ background: var(--glass-background);
514
+ border: 1px solid color-mix(in srgb, var(--color-primary) 20%, transparent);
515
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1), 0 0 40px color-mix(in srgb, var(--color-primary) 10%, transparent);
516
+ }
517
+ [data-mantine-color-scheme=dark] .legend {
518
+ border-color: color-mix(in srgb, var(--color-primary) 30%, transparent);
519
+ }
520
+ .legendDot {
521
+ transition: all 0.2s ease;
522
+ box-shadow: 0 0 8px currentColor;
523
+ }
524
+ .legendDot:hover {
525
+ transform: scale(1.3);
526
+ box-shadow: 0 0 12px currentColor;
527
+ }
528
+ .nodeHighlighted .nodeCard {
529
+ transform: translateY(-2px) scale(1.02);
530
+ }
531
+ .nodeHighlighted .nodeCard::before {
532
+ opacity: 1;
533
+ }
534
+ .nodeHighlighted .nodeCard::after {
535
+ animation: scanLine 3s ease-in-out infinite;
536
+ }
537
+ .nodeDimmed {
538
+ opacity: 0.3;
539
+ filter: grayscale(0.5);
540
+ transition: all 0.3s ease;
541
+ }
542
+ .edgeHighlighted {
543
+ stroke-width: 4px !important;
544
+ }
545
+ .edgeDimmed {
546
+ opacity: 0.15;
547
+ transition: all 0.3s ease;
548
+ }
549
+ .edgeLabelDimmed {
550
+ opacity: 0.15;
551
+ transition: opacity 0.3s ease;
552
+ }
553
+ @media (prefers-reduced-motion: reduce) {
554
+ .node,
555
+ .nodeCard::after,
556
+ .edgeAnimated,
557
+ .nodeIcon,
558
+ .handle:hover,
559
+ .graphContainer {
560
+ animation: none;
561
+ }
562
+ .nodeCard:hover {
563
+ transform: none;
564
+ }
565
+ }
@@ -0,0 +1,90 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ /**
4
+ * Time range selector for dashboard metrics
5
+ */
6
+ type TimeRange = '1h' | '24h' | '7d' | '30d';
7
+
8
+ /**
9
+ * Resource Registry type definitions
10
+ */
11
+
12
+ /**
13
+ * Environment/deployment status for resources
14
+ */
15
+ type ResourceStatus = 'dev' | 'prod';
16
+ /**
17
+ * All resource types in the platform
18
+ * Used as the discriminator field in ResourceDefinition
19
+ */
20
+ type ResourceType = 'agent' | 'workflow' | 'trigger' | 'integration' | 'external' | 'human';
21
+ /**
22
+ * Base interface for ALL platform resources
23
+ * Shared by both executable (agents, workflows) and non-executable (triggers, integrations, etc.) resources
24
+ */
25
+ interface ResourceDefinition {
26
+ /** Unique resource identifier */
27
+ resourceId: string;
28
+ /** Display name */
29
+ name: string;
30
+ /** Purpose and functionality description */
31
+ description: string;
32
+ /** Version for change tracking and evolution */
33
+ version: string;
34
+ /** Resource type discriminator */
35
+ type: ResourceType;
36
+ /** Environment/deployment status */
37
+ status: ResourceStatus;
38
+ /** Domain tags for filtering and organization */
39
+ domains?: ResourceDomain[];
40
+ /** Whether the agent supports multi-turn sessions (agents only) */
41
+ sessionCapable?: boolean;
42
+ /** Whether the resource is local (monorepo) or remote (externally deployed) */
43
+ origin?: 'local' | 'remote';
44
+ /** Whether this resource is archived and should be excluded from registration and deployment */
45
+ archived?: boolean;
46
+ }
47
+
48
+ /**
49
+ * Standard Domain Definitions
50
+ * Centralized domain constants and definitions for all organization resources.
51
+ */
52
+
53
+ declare const DOMAINS: {
54
+ readonly INBOUND_PIPELINE: "inbound-pipeline";
55
+ readonly LEAD_GEN_PIPELINE: "lead-gen-pipeline";
56
+ readonly SUPPORT: "support";
57
+ readonly CLIENT_SUPPORT: "client-support";
58
+ readonly DELIVERY: "delivery";
59
+ readonly OPERATIONS: "operations";
60
+ readonly FINANCE: "finance";
61
+ readonly EXECUTIVE: "executive";
62
+ readonly INSTANTLY: "instantly";
63
+ readonly TESTING: "testing";
64
+ readonly INTERNAL: "internal";
65
+ readonly INTEGRATION: "integration";
66
+ readonly UTILITY: "utility";
67
+ readonly DIAGNOSTIC: "diagnostic";
68
+ };
69
+ /**
70
+ * ResourceDomain - Strongly typed domain identifier
71
+ * Use this type for all domain references to ensure compile-time validation.
72
+ */
73
+ type ResourceDomain = (typeof DOMAINS)[keyof typeof DOMAINS];
74
+
75
+ interface ResourcesPageProps {
76
+ /** Initial filter type from the URL search param (caller-managed) */
77
+ initialFilter?: ResourceType;
78
+ /** Called when the user changes the tab filter — caller should update its URL */
79
+ onTypeChange: (type: ResourceType | undefined) => void;
80
+ /** Current time range value — caller passes from its own store */
81
+ timeRange: TimeRange;
82
+ /** Called when the user clicks a resource row — caller handles navigation */
83
+ onResourceClick: (resource: ResourceDefinition) => void;
84
+ /** Items per page (defaults to 20) */
85
+ pageSize?: number;
86
+ }
87
+ declare function ResourcesPage({ initialFilter, onTypeChange, timeRange, onResourceClick, pageSize }: ResourcesPageProps): react_jsx_runtime.JSX.Element;
88
+
89
+ export { ResourcesPage };
90
+ export type { ResourcesPageProps };