@elevasis/ui 2.33.2 → 2.34.0

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 (73) hide show
  1. package/dist/api/index.d.ts +9 -2
  2. package/dist/api/index.js +1 -1
  3. package/dist/app/index.css +452 -0
  4. package/dist/app/index.d.ts +1250 -3
  5. package/dist/app/index.js +144 -8
  6. package/dist/charts/index.js +2 -3
  7. package/dist/{chunk-VGU4ZFYZ.js → chunk-3AJVNMY5.js} +45 -28
  8. package/dist/chunk-3QXJK5IY.js +25 -0
  9. package/dist/chunk-4O4MII5S.js +4716 -0
  10. package/dist/{chunk-KW7ZNQD7.js → chunk-5EYJ2GIN.js} +4 -8
  11. package/dist/{chunk-OIBHQH5Q.js → chunk-BPQVTIUP.js} +12 -3
  12. package/dist/{chunk-52K5RFDH.js → chunk-DTFKWZ7A.js} +1098 -2280
  13. package/dist/{chunk-EPTHX4VZ.js → chunk-HRWLKKWM.js} +11 -2
  14. package/dist/{chunk-ZMK5Z6KE.js → chunk-IGDYWFNE.js} +2 -2
  15. package/dist/{chunk-44I4LOH6.js → chunk-IVGI4GDL.js} +3 -3
  16. package/dist/{chunk-4DYOXEH6.js → chunk-LAWLB6CT.js} +1 -1
  17. package/dist/{chunk-TGVAIWIL.js → chunk-LRWTWOGP.js} +3 -3
  18. package/dist/{chunk-O56ESZCQ.js → chunk-MP3GPBPX.js} +3 -3
  19. package/dist/{chunk-T3J6U77J.js → chunk-NLBQTDOW.js} +12 -17
  20. package/dist/{chunk-IBWMR4TI.js → chunk-O6JXQ6UQ.js} +1 -2
  21. package/dist/{chunk-TBVLQRXT.js → chunk-OBBQ2JCM.js} +3 -3
  22. package/dist/{chunk-GWGQI6V4.js → chunk-PLP3NYPL.js} +80 -171
  23. package/dist/{chunk-Z2K2EAPL.js → chunk-RIAXZ6AH.js} +5 -6
  24. package/dist/chunk-SDXSB3HN.js +425 -0
  25. package/dist/{chunk-JA5ECJJB.js → chunk-VTXTZXAU.js} +156 -4
  26. package/dist/{chunk-32I2RCGC.js → chunk-W73ZABT6.js} +1 -1
  27. package/dist/{chunk-2ZZ72TAB.js → chunk-WU4FNWCW.js} +3 -3
  28. package/dist/{chunk-A4VDJJCV.js → chunk-YNWZIWJL.js} +4 -5
  29. package/dist/components/index.d.ts +0 -23
  30. package/dist/components/index.js +27 -448
  31. package/dist/components/navigation/index.js +4 -6
  32. package/dist/features/clients/index.js +7 -12
  33. package/dist/features/crm/index.js +9 -14
  34. package/dist/features/dashboard/index.d.ts +0 -23
  35. package/dist/features/dashboard/index.js +9 -14
  36. package/dist/features/delivery/index.js +8 -13
  37. package/dist/features/knowledge/index.js +5 -7
  38. package/dist/features/lead-gen/index.js +9 -14
  39. package/dist/features/monitoring/index.js +10 -15
  40. package/dist/features/monitoring/requests/index.js +7 -12
  41. package/dist/features/operations/index.d.ts +44 -35
  42. package/dist/features/operations/index.js +12 -17
  43. package/dist/features/settings/index.js +8 -13
  44. package/dist/hooks/index.d.ts +20 -27
  45. package/dist/hooks/index.js +7 -12
  46. package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +20 -27
  47. package/dist/hooks/published.d.ts +20 -27
  48. package/dist/hooks/published.js +7 -12
  49. package/dist/index.d.ts +53 -38
  50. package/dist/index.js +8 -13
  51. package/dist/knowledge/index.d.ts +30 -38
  52. package/dist/knowledge/index.js +36 -200
  53. package/dist/{knowledge-search-index-VMAW7FLR.js → knowledge-search-index-ORIJCEZX.js} +3 -3
  54. package/dist/organization/index.js +1 -2
  55. package/dist/provider/index.d.ts +24 -31
  56. package/dist/provider/index.js +6 -11
  57. package/dist/provider/published.d.ts +24 -31
  58. package/dist/provider/published.js +5 -9
  59. package/dist/test-utils/index.d.ts +2 -0
  60. package/dist/test-utils/index.js +14 -2
  61. package/dist/test-utils/setup.js +38 -0
  62. package/dist/types/index.d.ts +20 -27
  63. package/dist/utils/index.d.ts +0 -23
  64. package/dist/zustand/index.d.ts +15 -2
  65. package/dist/zustand/index.js +35 -1
  66. package/package.json +4 -4
  67. package/dist/chunk-HUJCU55S.js +0 -159
  68. package/dist/chunk-IOXOPMYS.js +0 -145
  69. package/dist/chunk-J2UD7BOH.js +0 -347
  70. package/dist/chunk-QDFJSUG3.js +0 -13
  71. package/dist/chunk-SZHARWKU.js +0 -15
  72. package/dist/chunk-WKW6B5ID.js +0 -29
  73. package/dist/chunk-XCYKC6OZ.js +0 -1
@@ -1,4 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { QueryClientConfig, DefaultOptions, QueryClient } from '@tanstack/react-query';
2
3
 
3
4
  /**
4
5
  * API module types
@@ -96,5 +97,11 @@ declare function useApiClient(apiUrl: string): {
96
97
  isInitializing: boolean;
97
98
  };
98
99
 
99
- export { ApiClientProvider, useApiClient, useApiClientContext };
100
- export type { ApiClientContextValue, ApiClientProviderProps, ApiErrorDetails };
100
+ interface CreateElevasisQueryClientOptions extends Omit<QueryClientConfig, 'defaultOptions'> {
101
+ defaultOptions?: DefaultOptions;
102
+ onMutationError?: NonNullable<DefaultOptions['mutations']>['onError'];
103
+ }
104
+ declare function createElevasisQueryClient(options?: CreateElevasisQueryClientOptions): QueryClient;
105
+
106
+ export { ApiClientProvider, createElevasisQueryClient, useApiClient, useApiClientContext };
107
+ export type { ApiClientContextValue, ApiClientProviderProps, ApiErrorDetails, CreateElevasisQueryClientOptions };
package/dist/api/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import '../chunk-XCYKC6OZ.js';
1
+ export { createElevasisQueryClient } from '../chunk-3QXJK5IY.js';
2
2
  export { ApiClientProvider, useApiClient, useApiClientContext } from '../chunk-ND5TDV2J.js';
3
3
  import '../chunk-2RJMVWFJ.js';
4
4
  import '../chunk-KRWALB24.js';
@@ -195,3 +195,455 @@
195
195
  opacity: 1;
196
196
  }
197
197
  }
198
+
199
+ /* src/components/display/StatCard.module.css */
200
+ .heroCard {
201
+ background: var(--glass-background);
202
+ backdrop-filter: var(--glass-blur);
203
+ border: 1px solid var(--color-border);
204
+ }
205
+ .iconRing {
206
+ position: relative;
207
+ display: flex;
208
+ align-items: center;
209
+ justify-content: center;
210
+ width: 46px;
211
+ height: 46px;
212
+ border-radius: 50%;
213
+ background: color-mix(in srgb, var(--color-primary) 12%, transparent);
214
+ border: 1px solid color-mix(in srgb, var(--color-primary) 25%, transparent);
215
+ color: var(--color-primary);
216
+ flex-shrink: 0;
217
+ box-shadow: 0 0 12px color-mix(in srgb, var(--color-primary) 15%, transparent);
218
+ }
219
+ .iconRingSm {
220
+ position: relative;
221
+ display: flex;
222
+ align-items: center;
223
+ justify-content: center;
224
+ width: 36px;
225
+ height: 36px;
226
+ border-radius: 50%;
227
+ background: color-mix(in srgb, var(--color-primary) 12%, transparent);
228
+ border: 1px solid color-mix(in srgb, var(--color-primary) 25%, transparent);
229
+ color: var(--color-primary);
230
+ flex-shrink: 0;
231
+ box-shadow: 0 0 8px color-mix(in srgb, var(--color-primary) 12%, transparent);
232
+ }
233
+ .heroValue {
234
+ font-family: var(--elevasis-font-family-subtitle);
235
+ font-size: 1.85rem;
236
+ font-weight: 800;
237
+ line-height: 1;
238
+ letter-spacing: -0.02em;
239
+ font-variant-numeric: tabular-nums;
240
+ }
241
+ [data-mantine-color-scheme=dark] .heroValue {
242
+ text-shadow: 0 0 20px color-mix(in srgb, var(--color-primary) 20%, transparent);
243
+ }
244
+ .heroValueSm {
245
+ font-family: var(--elevasis-font-family-subtitle);
246
+ font-size: 1.35rem;
247
+ font-weight: 700;
248
+ line-height: 1;
249
+ letter-spacing: -0.02em;
250
+ font-variant-numeric: tabular-nums;
251
+ }
252
+ .heroLabel {
253
+ font-size: 0.68rem;
254
+ font-weight: 700;
255
+ text-transform: uppercase;
256
+ letter-spacing: 0.12em;
257
+ color: var(--color-text-dimmed);
258
+ }
259
+ .heroLabelSm {
260
+ font-size: 0.62rem;
261
+ font-weight: 700;
262
+ text-transform: uppercase;
263
+ letter-spacing: 0.12em;
264
+ color: var(--color-text-dimmed);
265
+ }
266
+
267
+ /* src/graph/Graph.globals.css */
268
+ .elevasis-graph-root .react-flow__node.selected,
269
+ .elevasis-graph-root .react-flow__node:focus,
270
+ .elevasis-graph-root .react-flow__node:focus-visible {
271
+ outline: none !important;
272
+ }
273
+ .elevasis-graph-root .react-flow__node.selected > * {
274
+ box-shadow: none;
275
+ }
276
+
277
+ /* src/graph/Graph.module.css */
278
+ @keyframes edgeFlow {
279
+ 0% {
280
+ stroke-dashoffset: 24;
281
+ }
282
+ 100% {
283
+ stroke-dashoffset: 0;
284
+ }
285
+ }
286
+ @keyframes edgeFlowReverse {
287
+ 0% {
288
+ stroke-dashoffset: 0;
289
+ }
290
+ 100% {
291
+ stroke-dashoffset: 24;
292
+ }
293
+ }
294
+ @keyframes pulse {
295
+ 0%, 100% {
296
+ opacity: 0.6;
297
+ }
298
+ 50% {
299
+ opacity: 1;
300
+ }
301
+ }
302
+ @keyframes livePulse {
303
+ 0%, 100% {
304
+ opacity: 1;
305
+ }
306
+ 50% {
307
+ opacity: 0.6;
308
+ }
309
+ }
310
+ .livePulse {
311
+ animation: livePulse 2s ease-in-out infinite;
312
+ }
313
+ @keyframes glowPulse {
314
+ 0%, 100% {
315
+ 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));
316
+ }
317
+ 50% {
318
+ 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));
319
+ }
320
+ }
321
+ @keyframes nodeEnter {
322
+ 0% {
323
+ opacity: 0;
324
+ transform: scale(0.8) translateY(10px);
325
+ }
326
+ 100% {
327
+ opacity: 1;
328
+ transform: scale(1) translateY(0);
329
+ }
330
+ }
331
+ @keyframes handlePulse {
332
+ 0%, 100% {
333
+ transform: scale(1);
334
+ box-shadow: 0 0 0 0 var(--handle-color, color-mix(in srgb, var(--color-primary) 40%, transparent));
335
+ }
336
+ 50% {
337
+ transform: scale(1.2);
338
+ box-shadow: 0 0 0 4px var(--handle-color, color-mix(in srgb, var(--color-primary) 0%, transparent));
339
+ }
340
+ }
341
+ @keyframes gridMove {
342
+ 0% {
343
+ background-position: 0 0;
344
+ }
345
+ 100% {
346
+ background-position: 40px 40px;
347
+ }
348
+ }
349
+ @keyframes labelFadeIn {
350
+ 0% {
351
+ opacity: 0;
352
+ transform: translate(-50%, -50%) translate(var(--label-x), var(--label-y)) scale(0.8);
353
+ }
354
+ 100% {
355
+ opacity: 1;
356
+ transform: translate(-50%, -50%) translate(var(--label-x), var(--label-y)) scale(1);
357
+ }
358
+ }
359
+ @keyframes scanLine {
360
+ 0% {
361
+ transform: translateY(-100%);
362
+ opacity: 0;
363
+ }
364
+ 50% {
365
+ opacity: 0.5;
366
+ }
367
+ 100% {
368
+ transform: translateY(100%);
369
+ opacity: 0;
370
+ }
371
+ }
372
+ .graphContainer {
373
+ position: relative;
374
+ background-image:
375
+ linear-gradient(color-mix(in srgb, var(--color-primary) 5%, transparent) 1px, transparent 1px),
376
+ linear-gradient(
377
+ 90deg,
378
+ color-mix(in srgb, var(--color-primary) 5%, transparent) 1px,
379
+ transparent 1px),
380
+ radial-gradient(
381
+ ellipse at 50% 50%,
382
+ color-mix(in srgb, var(--color-primary) 1.25%, transparent) 0%,
383
+ transparent 70%);
384
+ background-color: color-mix(in srgb, var(--color-background) 50%, var(--glass-background));
385
+ backdrop-filter: var(--glass-blur);
386
+ background-size:
387
+ 40px 40px,
388
+ 40px 40px,
389
+ 100% 100%;
390
+ animation: gridMove 20s linear infinite;
391
+ }
392
+ [data-mantine-color-scheme=dark] .graphContainer {
393
+ background-image:
394
+ linear-gradient(color-mix(in srgb, var(--color-primary) 9%, transparent) 1px, transparent 1px),
395
+ linear-gradient(
396
+ 90deg,
397
+ color-mix(in srgb, var(--color-primary) 9%, transparent) 1px,
398
+ transparent 1px),
399
+ radial-gradient(
400
+ ellipse at 50% 50%,
401
+ color-mix(in srgb, var(--color-primary) 2.25%, transparent) 0%,
402
+ transparent 70%);
403
+ background-size:
404
+ 40px 40px,
405
+ 40px 40px,
406
+ 100% 100%;
407
+ }
408
+ .node {
409
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
410
+ position: relative;
411
+ }
412
+ .node:nth-child(1) {
413
+ animation-delay: 0.05s;
414
+ }
415
+ .node:nth-child(2) {
416
+ animation-delay: 0.1s;
417
+ }
418
+ .node:nth-child(3) {
419
+ animation-delay: 0.15s;
420
+ }
421
+ .node:nth-child(4) {
422
+ animation-delay: 0.2s;
423
+ }
424
+ .node:nth-child(5) {
425
+ animation-delay: 0.25s;
426
+ }
427
+ .node:nth-child(6) {
428
+ animation-delay: 0.3s;
429
+ }
430
+ .node:nth-child(7) {
431
+ animation-delay: 0.35s;
432
+ }
433
+ .node:nth-child(8) {
434
+ animation-delay: 0.4s;
435
+ }
436
+ .node:nth-child(9) {
437
+ animation-delay: 0.45s;
438
+ }
439
+ .node:nth-child(10) {
440
+ animation-delay: 0.5s;
441
+ }
442
+ .node:nth-child(11) {
443
+ animation-delay: 0.55s;
444
+ }
445
+ .node:nth-child(12) {
446
+ animation-delay: 0.6s;
447
+ }
448
+ .nodeCard {
449
+ position: relative;
450
+ border-radius: var(--mantine-radius-md);
451
+ overflow: hidden;
452
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
453
+ }
454
+ .nodeCard::before {
455
+ content: "";
456
+ position: absolute;
457
+ inset: 0;
458
+ background:
459
+ linear-gradient(
460
+ 135deg,
461
+ var(--node-color-light, color-mix(in srgb, var(--color-primary) 10%, transparent)) 0%,
462
+ transparent 50%,
463
+ var(--node-color-light, color-mix(in srgb, var(--color-primary) 5%, transparent)) 100%);
464
+ pointer-events: none;
465
+ opacity: 0;
466
+ transition: opacity 0.3s ease;
467
+ }
468
+ .nodeCard::after {
469
+ content: "";
470
+ position: absolute;
471
+ left: 0;
472
+ right: 0;
473
+ height: 30%;
474
+ background:
475
+ linear-gradient(
476
+ 180deg,
477
+ transparent 0%,
478
+ var(--node-color-glow, color-mix(in srgb, var(--color-primary) 10%, transparent)) 50%,
479
+ transparent 100%);
480
+ pointer-events: none;
481
+ opacity: 0;
482
+ }
483
+ .nodeCard:hover::before,
484
+ .nodeCardSelected::before {
485
+ opacity: 1;
486
+ }
487
+ .nodeCard:hover::after,
488
+ .nodeCardSelected::after {
489
+ animation: scanLine 3s ease-in-out infinite;
490
+ }
491
+ .nodeCard:hover {
492
+ transform: translateY(-2px) scale(1.02);
493
+ }
494
+ .nodeCardSelected {
495
+ transform: translateY(-2px) scale(1.02);
496
+ animation: glowPulse 2s ease-in-out infinite;
497
+ }
498
+ .nodeAgent {
499
+ --glow-color: rgba(139, 92, 246, 0.4);
500
+ --node-color-light: rgba(139, 92, 246, 0.1);
501
+ --node-color-glow: rgba(139, 92, 246, 0.15);
502
+ --handle-color: rgba(139, 92, 246, 0.5);
503
+ --gradient-start: rgba(139, 92, 246, 0.15);
504
+ --gradient-end: rgba(139, 92, 246, 0.05);
505
+ }
506
+ .nodeWorkflow {
507
+ --glow-color: rgba(59, 130, 246, 0.4);
508
+ --node-color-light: rgba(59, 130, 246, 0.1);
509
+ --node-color-glow: rgba(59, 130, 246, 0.15);
510
+ --handle-color: rgba(59, 130, 246, 0.5);
511
+ --gradient-start: rgba(59, 130, 246, 0.15);
512
+ --gradient-end: rgba(59, 130, 246, 0.05);
513
+ }
514
+ .nodeTrigger {
515
+ --glow-color: rgba(249, 115, 22, 0.4);
516
+ --node-color-light: rgba(249, 115, 22, 0.1);
517
+ --node-color-glow: rgba(249, 115, 22, 0.15);
518
+ --handle-color: rgba(249, 115, 22, 0.5);
519
+ --gradient-start: rgba(249, 115, 22, 0.15);
520
+ --gradient-end: rgba(249, 115, 22, 0.05);
521
+ }
522
+ .nodeIntegration {
523
+ --glow-color: rgba(20, 184, 166, 0.4);
524
+ --node-color-light: rgba(20, 184, 166, 0.1);
525
+ --node-color-glow: rgba(20, 184, 166, 0.15);
526
+ --handle-color: rgba(20, 184, 166, 0.5);
527
+ --gradient-start: rgba(20, 184, 166, 0.15);
528
+ --gradient-end: rgba(20, 184, 166, 0.05);
529
+ }
530
+ .nodeExternal {
531
+ --glow-color: rgba(107, 114, 128, 0.4);
532
+ --node-color-light: rgba(107, 114, 128, 0.1);
533
+ --node-color-glow: rgba(107, 114, 128, 0.15);
534
+ --handle-color: rgba(107, 114, 128, 0.5);
535
+ --gradient-start: rgba(107, 114, 128, 0.15);
536
+ --gradient-end: rgba(107, 114, 128, 0.05);
537
+ }
538
+ .nodeHuman {
539
+ --glow-color: rgba(245, 158, 11, 0.4);
540
+ --node-color-light: rgba(245, 158, 11, 0.1);
541
+ --node-color-glow: rgba(245, 158, 11, 0.15);
542
+ --handle-color: rgba(245, 158, 11, 0.5);
543
+ --gradient-start: rgba(245, 158, 11, 0.15);
544
+ --gradient-end: rgba(245, 158, 11, 0.05);
545
+ }
546
+ .nodePrimary {
547
+ --glow-color: rgba(37, 99, 235, 0.4);
548
+ --node-color-light: rgba(37, 99, 235, 0.1);
549
+ --node-color-glow: rgba(37, 99, 235, 0.15);
550
+ --handle-color: rgba(37, 99, 235, 0.5);
551
+ --gradient-start: rgba(37, 99, 235, 0.15);
552
+ --gradient-end: rgba(37, 99, 235, 0.05);
553
+ }
554
+ .handle {
555
+ transition: all 0.2s ease;
556
+ }
557
+ .handle:hover {
558
+ animation: handlePulse 1s ease-in-out infinite;
559
+ }
560
+ .nodeIcon {
561
+ transition: all 0.3s ease;
562
+ }
563
+ .badge {
564
+ transition: all 0.2s ease;
565
+ backdrop-filter: blur(4px);
566
+ }
567
+ .nodeCard:hover .badge {
568
+ transform: scale(1.05);
569
+ }
570
+ .badgeProd {
571
+ box-shadow: 0 0 8px rgba(34, 197, 94, 0.3);
572
+ }
573
+ .edge {
574
+ transition: all 0.3s ease;
575
+ }
576
+ .edgeAnimated {
577
+ stroke-dasharray: 8 4;
578
+ animation: edgeFlow 1s linear infinite;
579
+ }
580
+ .edgeGlow {
581
+ filter: drop-shadow(0 0 3px var(--edge-color, color-mix(in srgb, var(--color-primary) 50%, transparent)));
582
+ }
583
+ .edgeHighlighted {
584
+ stroke-width: 3px;
585
+ }
586
+ .edgeLabel {
587
+ backdrop-filter: blur(8px);
588
+ border: 1px solid rgba(255, 255, 255, 0.1);
589
+ 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));
590
+ transition: box-shadow 0.2s ease;
591
+ }
592
+ .edgeLabel:hover {
593
+ 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));
594
+ }
595
+ .legend {
596
+ backdrop-filter: var(--glass-blur);
597
+ background: var(--glass-background);
598
+ border: 1px solid color-mix(in srgb, var(--color-primary) 20%, transparent);
599
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1), 0 0 40px color-mix(in srgb, var(--color-primary) 10%, transparent);
600
+ }
601
+ [data-mantine-color-scheme=dark] .legend {
602
+ border-color: color-mix(in srgb, var(--color-primary) 30%, transparent);
603
+ }
604
+ .legendDot {
605
+ transition: all 0.2s ease;
606
+ box-shadow: 0 0 8px currentColor;
607
+ }
608
+ .legendDot:hover {
609
+ transform: scale(1.3);
610
+ box-shadow: 0 0 12px currentColor;
611
+ }
612
+ .nodeHighlighted .nodeCard {
613
+ transform: translateY(-2px) scale(1.02);
614
+ }
615
+ .nodeHighlighted .nodeCard::before {
616
+ opacity: 1;
617
+ }
618
+ .nodeHighlighted .nodeCard::after {
619
+ animation: scanLine 3s ease-in-out infinite;
620
+ }
621
+ .nodeDimmed {
622
+ opacity: 0.3;
623
+ filter: grayscale(0.5);
624
+ transition: all 0.3s ease;
625
+ }
626
+ .edgeHighlighted {
627
+ stroke-width: 4px !important;
628
+ }
629
+ .edgeDimmed {
630
+ opacity: 0.15;
631
+ transition: all 0.3s ease;
632
+ }
633
+ .edgeLabelDimmed {
634
+ opacity: 0.15;
635
+ transition: opacity 0.3s ease;
636
+ }
637
+ @media (prefers-reduced-motion: reduce) {
638
+ .node,
639
+ .nodeCard::after,
640
+ .edgeAnimated,
641
+ .nodeIcon,
642
+ .handle:hover,
643
+ .graphContainer {
644
+ animation: none;
645
+ }
646
+ .nodeCard:hover {
647
+ transform: none;
648
+ }
649
+ }