@foldkit/devtools 0.112.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.
@@ -0,0 +1,706 @@
1
+ const overlayStyles = `:host {
2
+ position: relative;
3
+ z-index: 2147483647;
4
+
5
+ --dt-bg: #1e1e2e;
6
+ --dt-surface-selected: #282839;
7
+ --dt-border: #45475a;
8
+ --dt-text: #cdd6f4;
9
+ --dt-text-muted: #9399b2;
10
+ --dt-accent: #cba6f7;
11
+ --dt-live: #a6e3a1;
12
+ --dt-paused: #fab387;
13
+ --dt-json-string: #a6e3a1;
14
+ --dt-json-number: #89b4fa;
15
+ --dt-json-boolean: #fab387;
16
+ --dt-json-null: #9399b2;
17
+ --dt-json-key: #89dceb;
18
+ --dt-json-tag: #cba6f7;
19
+ --dt-json-preview: #9399b2;
20
+ --dt-json-arrow: #9399b2;
21
+ --dt-tree-hover: #313244;
22
+ --dt-diff-changed: #74c7ec;
23
+ }
24
+
25
+ *,
26
+ *::before,
27
+ *::after {
28
+ box-sizing: border-box;
29
+ margin: 0;
30
+ padding: 0;
31
+ }
32
+ button {
33
+ font: inherit;
34
+ color: inherit;
35
+ }
36
+ ul {
37
+ list-style: none;
38
+ }
39
+
40
+ .fixed {
41
+ position: fixed;
42
+ }
43
+ .flex {
44
+ display: flex;
45
+ }
46
+ .flex-col {
47
+ flex-direction: column;
48
+ }
49
+ .flex-1 {
50
+ flex: 1 1 0%;
51
+ }
52
+ .items-center {
53
+ align-items: center;
54
+ }
55
+ .justify-center {
56
+ justify-content: center;
57
+ }
58
+ .justify-between {
59
+ justify-content: space-between;
60
+ }
61
+ .shrink-0 {
62
+ flex-shrink: 0;
63
+ }
64
+ .inline-block {
65
+ display: inline-block;
66
+ }
67
+ .gap-0\\.5 {
68
+ gap: 2px;
69
+ }
70
+ .gap-1\\.5 {
71
+ gap: 6px;
72
+ }
73
+ .gap-2 {
74
+ gap: 8px;
75
+ }
76
+ .gap-3 {
77
+ gap: 12px;
78
+ }
79
+ .gap-px {
80
+ gap: 1px;
81
+ }
82
+ .px-1 {
83
+ padding-left: 4px;
84
+ padding-right: 4px;
85
+ }
86
+ .px-2 {
87
+ padding-left: 8px;
88
+ padding-right: 8px;
89
+ }
90
+ .px-2\\.5 {
91
+ padding-left: 10px;
92
+ padding-right: 10px;
93
+ }
94
+ .p-3 {
95
+ padding: 12px;
96
+ }
97
+ .px-3 {
98
+ padding-left: 12px;
99
+ padding-right: 12px;
100
+ }
101
+ .py-0\\.5 {
102
+ padding-top: 2px;
103
+ padding-bottom: 2px;
104
+ }
105
+ .pt-1 {
106
+ padding-top: 4px;
107
+ }
108
+ .pl-1 {
109
+ padding-left: 4px;
110
+ }
111
+ .py-1 {
112
+ padding-top: 4px;
113
+ padding-bottom: 4px;
114
+ }
115
+ .py-1\\.5 {
116
+ padding-top: 6px;
117
+ padding-bottom: 6px;
118
+ }
119
+ .py-2 {
120
+ padding-top: 8px;
121
+ padding-bottom: 8px;
122
+ }
123
+ .py-px {
124
+ padding-top: 1px;
125
+ padding-bottom: 1px;
126
+ }
127
+ .w-1\\.5 {
128
+ width: 6px;
129
+ }
130
+ .h-1\\.5 {
131
+ height: 6px;
132
+ }
133
+ .w-3 {
134
+ width: 12px;
135
+ }
136
+ .w-5 {
137
+ width: 20px;
138
+ }
139
+ .h-5 {
140
+ height: 20px;
141
+ }
142
+ .w-14 {
143
+ width: 56px;
144
+ }
145
+ .h-14 {
146
+ height: 56px;
147
+ }
148
+ .min-w-0 {
149
+ min-width: 0;
150
+ }
151
+ .min-w-5 {
152
+ min-width: 20px;
153
+ }
154
+ .min-h-0 {
155
+ min-height: 0;
156
+ }
157
+ /* Badge positions — flush against side edge */
158
+ .dt-pos-br {
159
+ bottom: 16px;
160
+ right: 0;
161
+ border-radius: 6px 0 0 6px;
162
+ }
163
+ .dt-pos-bl {
164
+ bottom: 16px;
165
+ left: 0;
166
+ border-radius: 0 6px 6px 0;
167
+ }
168
+ .dt-pos-tr {
169
+ top: 16px;
170
+ right: 0;
171
+ border-radius: 6px 0 0 6px;
172
+ }
173
+ .dt-pos-tl {
174
+ top: 16px;
175
+ left: 0;
176
+ border-radius: 0 6px 6px 0;
177
+ }
178
+ .overflow-hidden {
179
+ overflow: hidden;
180
+ }
181
+ .overflow-auto {
182
+ overflow: auto;
183
+ }
184
+ .overflow-y-auto {
185
+ overflow-y: auto;
186
+ }
187
+ .overscroll-none {
188
+ overscroll-behavior: none;
189
+ }
190
+
191
+ .truncate {
192
+ overflow: hidden;
193
+ text-overflow: ellipsis;
194
+ white-space: nowrap;
195
+ }
196
+ .rounded {
197
+ border-radius: 4px;
198
+ }
199
+ .rounded-lg {
200
+ border-radius: 8px;
201
+ }
202
+ .rounded-full {
203
+ border-radius: 9999px;
204
+ }
205
+ .border {
206
+ border-width: 1px;
207
+ border-style: solid;
208
+ border-color: var(--dt-border);
209
+ }
210
+ .border-b {
211
+ border-bottom: 1px solid var(--dt-border);
212
+ }
213
+ .border-t {
214
+ border-top: 1px solid var(--dt-border);
215
+ }
216
+ .border-r {
217
+ border-right: 1px solid var(--dt-border);
218
+ }
219
+ .border-l {
220
+ border-left: 1px solid var(--dt-border);
221
+ }
222
+ .border-none {
223
+ border: none;
224
+ }
225
+ .selected {
226
+ background-color: var(--dt-surface-selected);
227
+ }
228
+ .dt-row:hover:not(.selected) {
229
+ background-color: var(--dt-tree-hover);
230
+ }
231
+ .dt-header-button:hover {
232
+ color: var(--dt-text);
233
+ }
234
+ .dt-resume-button:hover {
235
+ opacity: 0.7;
236
+ }
237
+ .dt-scroll-pill {
238
+ display: flex;
239
+ align-items: center;
240
+ justify-content: center;
241
+ gap: 6px;
242
+ flex-shrink: 0;
243
+ padding: 4px 12px;
244
+ background-color: var(--dt-surface-selected);
245
+ border: none;
246
+ border-bottom: 1px solid var(--dt-border);
247
+ color: var(--dt-accent);
248
+ font-family:
249
+ ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;
250
+ font-size: 13px;
251
+ cursor: pointer;
252
+ }
253
+ .dt-scroll-pill-icon {
254
+ width: 12px;
255
+ height: 12px;
256
+ }
257
+ .dt-scroll-pill-text {
258
+ margin-top: 1px;
259
+ }
260
+ .dt-scroll-pill:hover {
261
+ background-color: var(--dt-tree-hover);
262
+ }
263
+ .dt-scroll-pill:focus-visible {
264
+ outline: 1px solid var(--dt-accent);
265
+ outline-offset: -1px;
266
+ }
267
+ .dt-filter-wrapper {
268
+ position: relative;
269
+ flex-shrink: 0;
270
+ border-bottom: 1px solid var(--dt-border);
271
+ }
272
+ .dt-filter-button {
273
+ width: 100%;
274
+ display: flex;
275
+ align-items: center;
276
+ justify-content: space-between;
277
+ padding: 6px 12px;
278
+ background: transparent;
279
+ border: none;
280
+ color: var(--dt-text-muted);
281
+ font-family:
282
+ ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;
283
+ font-size: 13px;
284
+ cursor: pointer;
285
+ text-align: left;
286
+ }
287
+ .dt-filter-button:hover {
288
+ color: var(--dt-text);
289
+ background-color: var(--dt-tree-hover);
290
+ }
291
+ .dt-filter-button:focus-visible {
292
+ outline: 1px solid var(--dt-accent);
293
+ outline-offset: -1px;
294
+ }
295
+ .dt-filter-button[data-open] {
296
+ color: var(--dt-text);
297
+ background-color: var(--dt-surface-selected);
298
+ }
299
+ .dt-filter-button[data-open]:hover {
300
+ background-color: var(--dt-tree-hover);
301
+ }
302
+ .dt-filter-button[data-open] .json-arrow {
303
+ transform: rotate(180deg);
304
+ }
305
+ .dt-filter-items {
306
+ position: absolute;
307
+ top: 100%;
308
+ left: 0;
309
+ right: 0;
310
+ background-color: var(--dt-bg);
311
+ border-top: 1px solid var(--dt-border);
312
+ border-bottom: 1px solid var(--dt-border);
313
+ z-index: 10;
314
+ max-height: 200px;
315
+ overflow-y: auto;
316
+ outline: none;
317
+ }
318
+ .dt-filter-item {
319
+ padding: 6px 12px;
320
+ color: var(--dt-text-muted);
321
+ cursor: pointer;
322
+ font-family:
323
+ ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;
324
+ font-size: 13px;
325
+ border-bottom: 1px solid var(--dt-border);
326
+ }
327
+ .dt-filter-item:last-child {
328
+ border-bottom: none;
329
+ }
330
+ .dt-filter-item[data-active] {
331
+ background-color: var(--dt-tree-hover);
332
+ color: var(--dt-text);
333
+ }
334
+ .dt-filter-item[data-selected] {
335
+ color: var(--dt-accent);
336
+ }
337
+ .dt-filter-check {
338
+ width: 12px;
339
+ height: 12px;
340
+ visibility: hidden;
341
+ }
342
+ .dt-filter-item[data-selected] .dt-filter-check {
343
+ visibility: visible;
344
+ color: var(--dt-accent);
345
+ }
346
+ .dt-filter-backdrop {
347
+ position: fixed;
348
+ inset: 0;
349
+ pointer-events: none;
350
+ }
351
+ .dt-tab-button {
352
+ position: relative;
353
+ background: transparent;
354
+ border: none;
355
+ border-right: 1px solid var(--dt-border);
356
+ outline: none;
357
+ flex: 1;
358
+ }
359
+ .dt-tab-button:last-child {
360
+ border-right: none;
361
+ }
362
+ .dt-tab-active {
363
+ background-color: var(--dt-surface-selected);
364
+ }
365
+ .dt-tab-button:not(.dt-tab-active):hover {
366
+ color: var(--dt-text);
367
+ background-color: rgba(49, 50, 68, 0.3);
368
+ }
369
+ .font-sans {
370
+ font-family:
371
+ system-ui,
372
+ -apple-system,
373
+ BlinkMacSystemFont,
374
+ 'Segoe UI',
375
+ Roboto,
376
+ sans-serif;
377
+ }
378
+ .font-mono {
379
+ font-family:
380
+ ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;
381
+ }
382
+ .font-medium {
383
+ font-weight: 500;
384
+ }
385
+ .font-semibold {
386
+ font-weight: 600;
387
+ }
388
+ .text-xs {
389
+ font-size: 12px;
390
+ }
391
+ .text-2xs {
392
+ font-size: 10px;
393
+ }
394
+ .text-sm {
395
+ font-size: 11px;
396
+ }
397
+ .text-base {
398
+ font-size: 13px;
399
+ }
400
+ .text-md {
401
+ font-size: 15px;
402
+ }
403
+ .text-lg {
404
+ font-size: 20px;
405
+ }
406
+ .text-xl {
407
+ font-size: 26px;
408
+ }
409
+ .italic {
410
+ font-style: italic;
411
+ }
412
+ .text-right {
413
+ text-align: right;
414
+ }
415
+ .tracking-wide {
416
+ letter-spacing: 0.025em;
417
+ }
418
+ .tracking-wider {
419
+ letter-spacing: 0.05em;
420
+ }
421
+ .leading-none {
422
+ line-height: 1;
423
+ }
424
+ .leading-snug {
425
+ line-height: 1.35;
426
+ }
427
+ .bg-dt-bg {
428
+ background-color: var(--dt-bg);
429
+ }
430
+ .bg-dt-live {
431
+ background-color: var(--dt-live);
432
+ }
433
+ .bg-transparent {
434
+ background-color: transparent;
435
+ }
436
+ .text-dt {
437
+ color: var(--dt-text);
438
+ }
439
+ .text-dt-bg {
440
+ color: var(--dt-bg);
441
+ }
442
+ .text-dt-muted {
443
+ color: var(--dt-text-muted);
444
+ }
445
+ .text-dt-accent {
446
+ color: var(--dt-accent);
447
+ }
448
+ .text-dt-live {
449
+ color: var(--dt-live);
450
+ }
451
+ .text-dt-paused {
452
+ color: var(--dt-paused);
453
+ }
454
+ .cursor-pointer {
455
+ cursor: pointer;
456
+ }
457
+ .outline-none {
458
+ outline: none;
459
+ }
460
+ .transition-colors {
461
+ transition-property: color, background-color, border-color;
462
+ transition-duration: 100ms;
463
+ transition-timing-function: ease;
464
+ }
465
+
466
+ /* Panel */
467
+ .dt-panel {
468
+ width: 360px;
469
+ height: 480px;
470
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
471
+ z-index: 99998;
472
+ }
473
+ /* Panel positions */
474
+ .dt-panel-br {
475
+ bottom: 16px;
476
+ right: 28px;
477
+ }
478
+ .dt-panel-bl {
479
+ bottom: 16px;
480
+ left: 28px;
481
+ }
482
+ .dt-panel-tr {
483
+ top: 16px;
484
+ right: 28px;
485
+ }
486
+ .dt-panel-tl {
487
+ top: 16px;
488
+ left: 28px;
489
+ }
490
+ .dt-panel-wide {
491
+ width: 720px;
492
+ }
493
+ .dt-message-pane {
494
+ width: 320px;
495
+ flex-shrink: 0;
496
+ }
497
+ .dt-badge {
498
+ z-index: 99999;
499
+ box-shadow: -2px 0 8px rgba(0, 0, 0, 0.3);
500
+ transition: background-color 150ms ease;
501
+ border: 1px solid var(--dt-border);
502
+ }
503
+ .dt-badge-accent:hover {
504
+ background-color: #252538;
505
+ }
506
+ .dt-badge-paused {
507
+ background-color: var(--dt-paused);
508
+ color: var(--dt-bg);
509
+ border: none;
510
+ }
511
+ .dt-badge-paused:hover {
512
+ background-color: #e0a070;
513
+ }
514
+ .dt-badge.dt-pos-br,
515
+ .dt-badge.dt-pos-tr {
516
+ border-right: none;
517
+ }
518
+ .dt-badge.dt-pos-bl,
519
+ .dt-badge.dt-pos-tl {
520
+ border-left: none;
521
+ }
522
+
523
+ /* JSON tree */
524
+ .tree-row {
525
+ position: relative;
526
+ white-space: nowrap;
527
+ line-height: 18px;
528
+ padding-right: 8px;
529
+ }
530
+ .tree-row-expandable:hover {
531
+ background-color: var(--dt-tree-hover);
532
+ }
533
+ .inspector-tree {
534
+ font-family:
535
+ ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;
536
+ }
537
+ .json-key {
538
+ color: var(--dt-json-key);
539
+ }
540
+ .json-string {
541
+ color: var(--dt-json-string);
542
+ }
543
+ .json-number {
544
+ color: var(--dt-json-number);
545
+ }
546
+ .json-boolean {
547
+ color: var(--dt-json-boolean);
548
+ }
549
+ .json-null {
550
+ color: var(--dt-json-null);
551
+ }
552
+ .json-tag {
553
+ color: var(--dt-json-tag);
554
+ margin-right: 4px;
555
+ }
556
+ .json-preview {
557
+ color: var(--dt-json-preview);
558
+ }
559
+ .json-arrow {
560
+ color: var(--dt-json-arrow);
561
+ width: 10px;
562
+ height: 10px;
563
+ user-select: none;
564
+ }
565
+
566
+ /* Diff */
567
+ .diff-changed {
568
+ background-color: rgba(116, 199, 236, 0.06);
569
+ }
570
+ .diff-dot {
571
+ position: absolute;
572
+ left: 3px;
573
+ width: 5px;
574
+ height: 5px;
575
+ border-radius: 9999px;
576
+ background-color: var(--dt-diff-changed);
577
+ }
578
+ .diff-dot-inline {
579
+ width: 5px;
580
+ height: 5px;
581
+ border-radius: 9999px;
582
+ background-color: var(--dt-diff-changed);
583
+ flex-shrink: 0;
584
+ }
585
+ .dot-column {
586
+ width: 5px;
587
+ flex-shrink: 0;
588
+ display: flex;
589
+ align-items: center;
590
+ justify-content: center;
591
+ }
592
+ .pause-column {
593
+ width: 8px;
594
+ flex-shrink: 0;
595
+ display: flex;
596
+ align-items: center;
597
+ justify-content: center;
598
+ }
599
+ .dt-pause-icon {
600
+ width: 8px;
601
+ height: 8px;
602
+ color: var(--dt-paused);
603
+ }
604
+
605
+ /* Interaction blocker — covers the app while time-travelling */
606
+ .dt-interaction-blocker {
607
+ position: fixed;
608
+ inset: 0;
609
+ z-index: 99997;
610
+ cursor: not-allowed;
611
+ }
612
+
613
+ /* Scrubber */
614
+ .dt-scrubber-row {
615
+ background-color: var(--dt-bg);
616
+ }
617
+ .dt-scrubber-control {
618
+ position: relative;
619
+ height: 16px;
620
+ width: 100%;
621
+ padding: 0 7px;
622
+ display: flex;
623
+ align-items: center;
624
+ }
625
+ .dt-scrubber-track {
626
+ width: 100%;
627
+ height: 4px;
628
+ background-color: var(--dt-border);
629
+ border-radius: 9999px;
630
+ cursor: pointer;
631
+ }
632
+ .dt-scrubber-track[data-disabled] {
633
+ cursor: not-allowed;
634
+ }
635
+ .dt-scrubber-fill {
636
+ height: 100%;
637
+ background-color: var(--dt-accent);
638
+ border-radius: 9999px;
639
+ }
640
+ .dt-scrubber-thumb {
641
+ width: 14px;
642
+ height: 14px;
643
+ border-radius: 9999px;
644
+ background-color: var(--dt-accent);
645
+ border: 2px solid var(--dt-bg);
646
+ cursor: grab;
647
+ outline: none;
648
+ top: 50%;
649
+ margin-top: -7px;
650
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
651
+ }
652
+ .dt-scrubber-thumb:focus-visible {
653
+ outline: 2px solid var(--dt-text);
654
+ outline-offset: 2px;
655
+ }
656
+ .dt-scrubber-thumb[data-dragging] {
657
+ cursor: grabbing;
658
+ }
659
+ .dt-scrubber-position {
660
+ width: 72px;
661
+ padding-left: 12px;
662
+ border-left: 1px solid var(--dt-border);
663
+ align-self: stretch;
664
+ margin-top: -8px;
665
+ margin-bottom: -8px;
666
+ display: flex;
667
+ align-items: center;
668
+ justify-content: center;
669
+ }
670
+
671
+ /* Mobile */
672
+ @media (max-width: 767px) {
673
+ .dt-panel {
674
+ top: 0;
675
+ left: 0;
676
+ right: 0;
677
+ bottom: 0;
678
+ width: 100%;
679
+ height: 100%;
680
+ border-radius: 0;
681
+ border: none;
682
+ }
683
+ .dt-panel-wide {
684
+ width: 100%;
685
+ }
686
+ .dt-content {
687
+ flex-direction: column;
688
+ }
689
+ .dt-message-pane {
690
+ width: 100%;
691
+ max-height: 40%;
692
+ border-bottom: 1px solid var(--dt-border);
693
+ }
694
+ .message-list > :last-child {
695
+ border-bottom: none;
696
+ }
697
+ .dt-inspector-pane {
698
+ border-left: none;
699
+ }
700
+ .dt-badge.dt-pos-br,
701
+ .dt-badge.dt-pos-bl {
702
+ bottom: 44px;
703
+ }
704
+ }
705
+ `;
706
+ export { overlayStyles };