@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
|
@@ -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 };
|