@preact/signals-devtools-ui 0.2.0 → 0.4.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.
package/src/styles.css CHANGED
@@ -7,7 +7,8 @@
7
7
  }
8
8
 
9
9
  body {
10
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
10
+ font-family:
11
+ -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
11
12
  font-size: 13px;
12
13
  line-height: 1.4;
13
14
  color: #333;
@@ -54,10 +55,10 @@ body {
54
55
  }
55
56
 
56
57
  .divider {
57
- width: 100%;
58
- height: 2px;
59
- background: #e0e0e0;
60
- margin: 8px 0;
58
+ width: 100%;
59
+ height: 2px;
60
+ background: #e0e0e0;
61
+ margin: 8px 0;
61
62
  }
62
63
 
63
64
  .status-indicator {
@@ -86,8 +87,13 @@ body {
86
87
  }
87
88
 
88
89
  @keyframes pulse {
89
- 0%, 100% { opacity: 1; }
90
- 50% { opacity: 0.5; }
90
+ 0%,
91
+ 100% {
92
+ opacity: 1;
93
+ }
94
+ 50% {
95
+ opacity: 0.5;
96
+ }
91
97
  }
92
98
 
93
99
  .header-controls {
@@ -151,9 +157,8 @@ body {
151
157
  background: white;
152
158
  border: 1px solid #d0d0d0;
153
159
  border-radius: 8px;
154
- box-shadow: 0 4px 16px rgba(0,0,0,0.15);
160
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
155
161
  z-index: 1000;
156
- max-height: 400px;
157
162
  overflow-y: auto;
158
163
  }
159
164
 
@@ -315,16 +320,40 @@ body {
315
320
  border-left: 4px solid #ff9800;
316
321
  }
317
322
 
323
+ .update-item.component {
324
+ border-left: 4px solid #4caf50;
325
+ background-color: #f8fff8;
326
+ }
327
+
328
+ .update-type-badge {
329
+ font-size: 10px;
330
+ padding: 2px 6px;
331
+ border-radius: 3px;
332
+ background: #e0e0e0;
333
+ color: #666;
334
+ margin-left: 8px;
335
+ }
336
+
337
+ .update-item.component .update-type-badge {
338
+ background: #e8f5e9;
339
+ color: #2e7d32;
340
+ }
341
+
342
+ .update-item.effect .update-type-badge {
343
+ background: #fff3e0;
344
+ color: #e65100;
345
+ }
346
+
318
347
  .component-name-header {
319
- margin-right: 8px;
348
+ margin-right: 8px;
320
349
  }
321
350
 
322
351
  .component-list {
323
- list-style: none;
324
- display: flex;
325
- padding: 0;
326
- margin: 0;
327
- font-family: monospace;
352
+ list-style: none;
353
+ display: flex;
354
+ padding: 0;
355
+ margin: 0;
356
+ font-family: monospace;
328
357
  background: #f8f9fa;
329
358
  padding: 4px 6px;
330
359
  border-radius: 3px;
@@ -346,6 +375,10 @@ body {
346
375
  margin-bottom: 4px;
347
376
  }
348
377
 
378
+ .signals-devtools {
379
+ position: relative;
380
+ }
381
+
349
382
  .update-count {
350
383
  display: inline-block;
351
384
  padding: 0 6px;
@@ -436,8 +469,7 @@ body {
436
469
  position: relative;
437
470
  background:
438
471
  linear-gradient(90deg, #e5e7eb 1px, transparent 1px),
439
- linear-gradient(180deg, #e5e7eb 1px, transparent 1px),
440
- #f8fafc;
472
+ linear-gradient(180deg, #e5e7eb 1px, transparent 1px), #f8fafc;
441
473
  background-size: 40px 40px;
442
474
  overflow: hidden;
443
475
  user-select: none;
@@ -469,7 +501,7 @@ body {
469
501
  font-size: 12px;
470
502
  font-weight: 500;
471
503
  cursor: pointer;
472
- box-shadow: 0 2px 6px rgba(0,0,0,0.08);
504
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
473
505
  transition: all 0.15s ease;
474
506
  }
475
507
 
@@ -477,7 +509,7 @@ body {
477
509
  .graph-export-button:hover {
478
510
  background: #fff;
479
511
  border-color: #cbd5e1;
480
- box-shadow: 0 4px 8px rgba(0,0,0,0.12);
512
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.12);
481
513
  transform: translateY(-1px);
482
514
  }
483
515
 
@@ -499,7 +531,7 @@ body {
499
531
  background: white;
500
532
  border: 1px solid #e0e0e0;
501
533
  border-radius: 4px;
502
- box-shadow: 0 4px 8px rgba(0,0,0,0.15);
534
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
503
535
  overflow: hidden;
504
536
  min-width: 180px;
505
537
  }
@@ -539,21 +571,23 @@ body {
539
571
  font-size: 11px;
540
572
  font-weight: 600;
541
573
  font-family: monospace;
542
- box-shadow: 0 2px 4px rgba(0,0,0,0.1);
574
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
543
575
  min-width: 48px;
544
576
  text-align: center;
545
577
  }
546
578
 
547
579
  .graph-node {
548
580
  cursor: pointer;
549
- transition: transform 0.15s ease, filter 0.15s ease;
581
+ transition:
582
+ transform 0.15s ease,
583
+ filter 0.15s ease;
550
584
  stroke: #fff;
551
585
  stroke-width: 2.5;
552
- filter: drop-shadow(0 3px 6px rgba(0,0,0,0.15));
586
+ filter: drop-shadow(0 3px 6px rgba(0, 0, 0, 0.15));
553
587
  }
554
588
 
555
589
  .graph-node-group.hovered .graph-node {
556
- filter: brightness(1.15) drop-shadow(0 4px 12px rgba(0,0,0,0.25));
590
+ filter: brightness(1.15) drop-shadow(0 4px 12px rgba(0, 0, 0, 0.25));
557
591
  stroke-width: 3;
558
592
  }
559
593
 
@@ -577,7 +611,9 @@ body {
577
611
  stroke: #94a3b8;
578
612
  stroke-width: 2;
579
613
  fill: none;
580
- transition: stroke 0.2s, stroke-width 0.2s;
614
+ transition:
615
+ stroke 0.2s,
616
+ stroke-width 0.2s;
581
617
  }
582
618
 
583
619
  .graph-link.highlighted {
@@ -592,7 +628,7 @@ body {
592
628
  font-size: 12px;
593
629
  font-weight: 600;
594
630
  pointer-events: none;
595
- text-shadow: 0 1px 3px rgba(0,0,0,0.4);
631
+ text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
596
632
  letter-spacing: 0.2px;
597
633
  }
598
634
 
@@ -604,7 +640,7 @@ body {
604
640
  padding: 10px 14px;
605
641
  border-radius: 8px;
606
642
  font-size: 12px;
607
- box-shadow: 0 8px 24px rgba(0,0,0,0.25);
643
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25);
608
644
  z-index: 1000;
609
645
  pointer-events: none;
610
646
  transform: translateY(-50%);
@@ -676,7 +712,7 @@ body {
676
712
  border-radius: 8px;
677
713
  padding: 14px 16px;
678
714
  font-size: 12px;
679
- box-shadow: 0 4px 12px rgba(0,0,0,0.08);
715
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
680
716
  }
681
717
 
682
718
  .legend-item {
@@ -694,7 +730,7 @@ body {
694
730
  width: 14px;
695
731
  height: 14px;
696
732
  border-radius: 50%;
697
- box-shadow: 0 2px 4px rgba(0,0,0,0.15);
733
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
698
734
  }
699
735
 
700
736
  .component-boundary {
@@ -730,7 +766,7 @@ body {
730
766
  border-radius: 4px;
731
767
  font-size: 13px;
732
768
  font-weight: 500;
733
- box-shadow: 0 4px 12px rgba(0,0,0,0.3);
769
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
734
770
  z-index: 1000;
735
771
  animation: slideInFade 0.3s ease-out;
736
772
  }
package/src/types.ts CHANGED
@@ -4,6 +4,7 @@
4
4
  export type {
5
5
  SignalUpdate,
6
6
  SignalDisposed,
7
+ DependencyInfo,
7
8
  Settings,
8
9
  ConnectionStatus,
9
10
  ConnectionStatusType,
@@ -16,7 +17,7 @@ export type {
16
17
  export interface GraphNode {
17
18
  id: string;
18
19
  name: string;
19
- type: "signal" | "computed" | "effect";
20
+ type: "signal" | "computed" | "effect" | "component";
20
21
  x: number;
21
22
  y: number;
22
23
  depth: number;