@wtdlee/repomap 0.6.0 → 0.8.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 (38) hide show
  1. package/README.md +61 -13
  2. package/dist/analyzers/index.d.ts +175 -25
  3. package/dist/analyzers/index.js +1 -1
  4. package/dist/{chunk-QZWPOG5B.js → chunk-GCIRJGW3.js} +78 -45
  5. package/dist/chunk-H7VVRHQZ.js +34 -0
  6. package/dist/chunk-HPBPEGHS.js +19 -0
  7. package/dist/{chunk-WQANJ7IA.js → chunk-JDM7Y7PX.js} +34 -28
  8. package/dist/{chunk-H4YGP3GL.js → chunk-OQAXO3X2.js} +346 -22
  9. package/dist/chunk-TNUKDIO7.js +5 -0
  10. package/dist/cli.js +21 -35
  11. package/dist/dataflow-analyzer-CJ2T0cGS.d.ts +345 -0
  12. package/dist/generators/assets/docs.css +176 -46
  13. package/dist/generators/assets/favicon/apple-touch-icon.png +0 -0
  14. package/dist/generators/assets/favicon/favicon-96x96.png +0 -0
  15. package/dist/generators/assets/favicon/favicon.ico +0 -0
  16. package/dist/generators/assets/favicon/favicon.svg +3 -0
  17. package/dist/generators/assets/favicon/site.webmanifest +21 -0
  18. package/dist/generators/assets/favicon/web-app-manifest-192x192.png +0 -0
  19. package/dist/generators/assets/favicon/web-app-manifest-512x512.png +0 -0
  20. package/dist/generators/assets/page-map.css +392 -87
  21. package/dist/generators/assets/rails-map.css +221 -48
  22. package/dist/generators/index.d.ts +0 -8
  23. package/dist/generators/index.js +1 -1
  24. package/dist/index.d.ts +18 -9
  25. package/dist/index.js +1 -1
  26. package/dist/page-map-generator-3GO6GL2P.js +1 -0
  27. package/dist/{rails-FFISZ4AE.js → rails-3HNUFTQV.js} +1 -1
  28. package/dist/rails-map-generator-CAQZUBI6.js +1 -0
  29. package/dist/server/index.d.ts +2 -6
  30. package/dist/server/index.js +1 -1
  31. package/dist/types.d.ts +12 -3
  32. package/package.json +1 -5
  33. package/dist/chunk-BPV4UZSW.js +0 -2
  34. package/dist/chunk-PTR5IROV.js +0 -36
  35. package/dist/chunk-XWZH2RDG.js +0 -19
  36. package/dist/dataflow-analyzer-s6ufFkKC.d.ts +0 -215
  37. package/dist/page-map-generator-HBKSOX2E.js +0 -1
  38. package/dist/rails-map-generator-UFLCMFAT.js +0 -1
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "Repomap",
3
+ "short_name": "Repomap",
4
+ "icons": [
5
+ {
6
+ "src": "/favicon/web-app-manifest-192x192.png",
7
+ "sizes": "192x192",
8
+ "type": "image/png",
9
+ "purpose": "maskable"
10
+ },
11
+ {
12
+ "src": "/favicon/web-app-manifest-512x512.png",
13
+ "sizes": "512x512",
14
+ "type": "image/png",
15
+ "purpose": "maskable"
16
+ }
17
+ ],
18
+ "theme_color": "#0d1117",
19
+ "background_color": "#0d1117",
20
+ "display": "standalone"
21
+ }
@@ -3,18 +3,42 @@
3
3
  @import url('/common.css');
4
4
 
5
5
  /* Override body for dark theme */
6
- body { background: var(--bg); color: var(--text); }
6
+ body {
7
+ background: var(--bg);
8
+ color: var(--text);
9
+ }
7
10
 
8
11
  /* Content */
9
- .content { flex: 1; overflow: hidden; position: relative; }
12
+ .content {
13
+ flex: 1;
14
+ overflow: hidden;
15
+ position: relative;
16
+ }
10
17
 
11
18
  /* Legend */
12
- .legend { font-size: 12px; color: var(--text2); }
13
- .legend-item { display: flex; align-items: center; gap: 8px; padding: 4px 0; }
14
- .legend-color { width: 12px; height: 12px; border-radius: 2px; }
19
+ .legend {
20
+ font-size: 12px;
21
+ color: var(--text2);
22
+ }
23
+ .legend-item {
24
+ display: flex;
25
+ align-items: center;
26
+ gap: 8px;
27
+ padding: 4px 0;
28
+ }
29
+ .legend-color {
30
+ width: 12px;
31
+ height: 12px;
32
+ border-radius: 2px;
33
+ }
15
34
 
16
35
  /* Stats */
17
- .stats { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 16px; }
36
+ .stats {
37
+ display: grid;
38
+ grid-template-columns: 1fr 1fr;
39
+ gap: 8px;
40
+ margin-top: 16px;
41
+ }
18
42
  .stat {
19
43
  background: var(--bg3);
20
44
  padding: 10px;
@@ -24,10 +48,21 @@ body { background: var(--bg); color: var(--text); }
24
48
  transition: all 0.2s;
25
49
  border: 2px solid transparent;
26
50
  }
27
- .stat:hover { background: #475569; }
28
- .stat.active { border-color: var(--accent); background: #1e3a5f; }
29
- .stat-val { font-size: 20px; font-weight: 600; }
30
- .stat-label { font-size: 10px; color: var(--text2); }
51
+ .stat:hover {
52
+ background: #475569;
53
+ }
54
+ .stat.active {
55
+ border-color: var(--accent);
56
+ background: #1e3a5f;
57
+ }
58
+ .stat-val {
59
+ font-size: 20px;
60
+ font-weight: 600;
61
+ }
62
+ .stat-label {
63
+ font-size: 10px;
64
+ color: var(--text2);
65
+ }
31
66
 
32
67
  /* Environment filter badges */
33
68
  .env-badge {
@@ -40,15 +75,34 @@ body { background: var(--bg); color: var(--text); }
40
75
  font-size: 11px;
41
76
  transition: all 0.15s;
42
77
  }
43
- .env-badge:hover { background: #475569; }
44
- .env-badge-active, .env-badge.active { background: var(--accent); color: white; border-color: var(--accent); }
78
+ .env-badge:hover {
79
+ background: #475569;
80
+ }
81
+ .env-badge-active,
82
+ .env-badge.active {
83
+ background: var(--accent);
84
+ color: white;
85
+ border-color: var(--accent);
86
+ }
45
87
 
46
88
  /* Tree View */
47
- .tree-view { padding: 20px; overflow: auto; height: 100%; display: none; }
48
- .tree-view.active { display: block; }
89
+ .tree-view {
90
+ padding: 20px;
91
+ overflow: auto;
92
+ height: 100%;
93
+ display: none;
94
+ }
95
+ .tree-view.active {
96
+ display: block;
97
+ }
49
98
 
50
99
  /* Groups */
51
- .group { background: var(--bg2); border-radius: 8px; margin-bottom: 12px; overflow: hidden; }
100
+ .group {
101
+ background: var(--bg2);
102
+ border-radius: 8px;
103
+ margin-bottom: 12px;
104
+ overflow: hidden;
105
+ }
52
106
  .group-header {
53
107
  padding: 10px 14px;
54
108
  display: flex;
@@ -57,12 +111,36 @@ body { background: var(--bg); color: var(--text); }
57
111
  cursor: pointer;
58
112
  border-left: 3px solid var(--group-color, var(--accent));
59
113
  }
60
- .group-header:hover { background: var(--bg3); }
61
- .group-name { font-family: monospace; font-weight: 600; flex: 1; }
62
- .group-count { font-size: 11px; color: var(--text2); background: var(--bg3); padding: 2px 8px; border-radius: 10px; }
63
- .group.collapsed .group-content, .group.collapsed .group-items { display: none; }
64
- .group.collapsed .group-arrow, .group.collapsed .group-toggle { transform: rotate(-90deg); }
65
- .group-arrow, .group-toggle { font-size: 10px; color: var(--text2); transition: transform 0.2s; display: inline-block; }
114
+ .group-header:hover {
115
+ background: var(--bg3);
116
+ }
117
+ .group-name {
118
+ font-family: monospace;
119
+ font-weight: 600;
120
+ flex: 1;
121
+ }
122
+ .group-count {
123
+ font-size: 11px;
124
+ color: var(--text2);
125
+ background: var(--bg3);
126
+ padding: 2px 8px;
127
+ border-radius: 10px;
128
+ }
129
+ .group.collapsed .group-content,
130
+ .group.collapsed .group-items {
131
+ display: none;
132
+ }
133
+ .group.collapsed .group-arrow,
134
+ .group.collapsed .group-toggle {
135
+ transform: rotate(-90deg);
136
+ }
137
+ .group-arrow,
138
+ .group-toggle {
139
+ font-size: 10px;
140
+ color: var(--text2);
141
+ transition: transform 0.2s;
142
+ display: inline-block;
143
+ }
66
144
 
67
145
  /* Page Items */
68
146
  .page-item {
@@ -75,8 +153,13 @@ body { background: var(--bg); color: var(--text); }
75
153
  cursor: pointer;
76
154
  gap: 8px;
77
155
  }
78
- .page-item:hover { background: var(--bg3); }
79
- .page-item.selected { background: var(--bg3); border-left: 2px solid var(--accent); }
156
+ .page-item:hover {
157
+ background: var(--bg3);
158
+ }
159
+ .page-item.selected {
160
+ background: var(--bg3);
161
+ border-left: 2px solid var(--accent);
162
+ }
80
163
 
81
164
  .page-type {
82
165
  font-size: 9px;
@@ -89,14 +172,40 @@ body { background: var(--bg); color: var(--text); }
89
172
  text-align: center;
90
173
  flex-shrink: 0;
91
174
  }
92
- .page-info { display: flex; flex-direction: column; flex: 1; min-width: 0; }
93
- .page-path { font-family: monospace; font-size: 12px; color: var(--accent); flex: 1; }
94
- .page-tags { display: flex; gap: 4px; }
95
- .tag-repo { background: #1e293b; color: #94a3b8; font-weight: 500; text-transform: uppercase; letter-spacing: 0.5px; }
175
+ .page-info {
176
+ display: flex;
177
+ flex-direction: column;
178
+ flex: 1;
179
+ min-width: 0;
180
+ }
181
+ .page-path {
182
+ font-family: monospace;
183
+ font-size: 12px;
184
+ color: var(--accent);
185
+ flex: 1;
186
+ }
187
+ .page-tags {
188
+ display: flex;
189
+ gap: 4px;
190
+ }
191
+ .tag-repo {
192
+ background: #1e293b;
193
+ color: #94a3b8;
194
+ font-weight: 500;
195
+ text-transform: uppercase;
196
+ letter-spacing: 0.5px;
197
+ }
96
198
 
97
199
  /* Graph View */
98
- .graph-view { width: 100%; height: 100%; display: none; background: var(--bg2); }
99
- .graph-view.active { display: block; }
200
+ .graph-view {
201
+ width: 100%;
202
+ height: 100%;
203
+ display: none;
204
+ background: var(--bg2);
205
+ }
206
+ .graph-view.active {
207
+ display: block;
208
+ }
100
209
 
101
210
  .graph-container {
102
211
  width: 100%;
@@ -122,7 +231,9 @@ body { background: var(--bg); color: var(--text); }
122
231
  cursor: pointer;
123
232
  font-size: 12px;
124
233
  }
125
- .graph-btn:hover { background: var(--accent); }
234
+ .graph-btn:hover {
235
+ background: var(--accent);
236
+ }
126
237
 
127
238
  .graph-info {
128
239
  position: absolute;
@@ -140,7 +251,9 @@ body { background: var(--bg); color: var(--text); }
140
251
  height: 100%;
141
252
  cursor: grab;
142
253
  }
143
- #graph-canvas:active { cursor: grabbing; }
254
+ #graph-canvas:active {
255
+ cursor: grabbing;
256
+ }
144
257
 
145
258
  /* Detail Panel */
146
259
  .detail {
@@ -155,7 +268,9 @@ body { background: var(--bg); color: var(--text); }
155
268
  overflow-y: auto;
156
269
  z-index: 200;
157
270
  }
158
- .detail.open { right: 0; }
271
+ .detail.open {
272
+ right: 0;
273
+ }
159
274
  .detail-header {
160
275
  padding: 14px;
161
276
  background: var(--bg3);
@@ -164,12 +279,32 @@ body { background: var(--bg); color: var(--text); }
164
279
  align-items: center;
165
280
  position: sticky;
166
281
  top: 0;
282
+ gap: 4px;
283
+ }
284
+ .detail-title {
285
+ font-family: monospace;
286
+ font-size: 13px;
287
+ word-break: break-all;
288
+ }
289
+ .detail-close {
290
+ background: none;
291
+ border: none;
292
+ color: var(--text2);
293
+ font-size: 18px;
294
+ cursor: pointer;
295
+ }
296
+ .detail-body {
297
+ padding: 14px;
298
+ }
299
+ .detail-section {
300
+ margin-bottom: 16px;
301
+ }
302
+ .detail-section h4 {
303
+ font-size: 10px;
304
+ text-transform: uppercase;
305
+ color: var(--text2);
306
+ margin-bottom: 8px;
167
307
  }
168
- .detail-title { font-family: monospace; font-size: 13px; word-break: break-all; }
169
- .detail-close { background: none; border: none; color: var(--text2); font-size: 18px; cursor: pointer; }
170
- .detail-body { padding: 14px; }
171
- .detail-section { margin-bottom: 16px; }
172
- .detail-section h4 { font-size: 10px; text-transform: uppercase; color: var(--text2); margin-bottom: 8px; }
173
308
  .detail-item {
174
309
  background: var(--bg3);
175
310
  padding: 8px 10px;
@@ -182,22 +317,88 @@ body { background: var(--bg); color: var(--text); }
182
317
  overflow: hidden;
183
318
  word-break: break-all;
184
319
  }
185
- .detail-item > .tag { flex-shrink: 0; }
186
- .detail-item > span:not(.tag), .detail-item > code { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
187
- .detail-label { font-size: 9px; color: var(--text2); margin-bottom: 2px; }
188
- .detail-items { max-height: 300px; overflow-y: auto; }
189
- .more-link { color: var(--accent); font-size: 11px; padding: 6px 4px; cursor: pointer; transition: all 0.15s; }
190
- .more-link:hover { color: var(--accent-light); background: var(--bg3); border-radius: 4px; }
191
- .code-path { background: var(--bg3); padding: 10px; border-radius: 6px; font-family: monospace; font-size: 12px; word-break: break-all; }
192
- .usage-name { font-family: monospace; font-weight: 500; word-break: break-all; min-width: 0; }
193
- .line-num { margin-left: auto; font-size: 10px; color: var(--text2); flex-shrink: 0; }
320
+ .detail-item > .tag {
321
+ flex-shrink: 0;
322
+ }
323
+ .detail-item > span:not(.tag),
324
+ .detail-item > code {
325
+ overflow: hidden;
326
+ text-overflow: ellipsis;
327
+ white-space: nowrap;
328
+ min-width: 0;
329
+ }
330
+ .detail-label {
331
+ font-size: 9px;
332
+ color: var(--text2);
333
+ margin-bottom: 2px;
334
+ }
335
+ .detail-items {
336
+ max-height: 300px;
337
+ overflow-y: auto;
338
+ }
339
+ .more-link {
340
+ color: var(--accent);
341
+ font-size: 11px;
342
+ padding: 6px 4px;
343
+ cursor: pointer;
344
+ transition: all 0.15s;
345
+ }
346
+ .more-link:hover {
347
+ color: var(--accent-light);
348
+ background: var(--bg3);
349
+ border-radius: 4px;
350
+ }
351
+ .code-path {
352
+ background: var(--bg3);
353
+ padding: 10px;
354
+ border-radius: 6px;
355
+ font-family: monospace;
356
+ font-size: 12px;
357
+ word-break: break-all;
358
+ }
359
+ .usage-name {
360
+ font-family: monospace;
361
+ font-weight: 500;
362
+ word-break: break-all;
363
+ min-width: 0;
364
+ }
365
+ .line-num {
366
+ margin-left: auto;
367
+ font-size: 10px;
368
+ color: var(--text2);
369
+ flex-shrink: 0;
370
+ }
194
371
 
195
372
  /* API Items */
196
- .api-item { cursor: pointer; flex-direction: column; align-items: stretch; gap: 2px; }
197
- .api-item:hover { background: var(--bg2); }
198
- .api-row { display: flex; align-items: center; gap: 8px; }
199
- .api-url { font-family: monospace; font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
200
- .api-route { font-size: 9px; color: var(--text2); font-family: monospace; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
373
+ .api-item {
374
+ cursor: pointer;
375
+ flex-direction: column;
376
+ align-items: stretch;
377
+ gap: 2px;
378
+ }
379
+ .api-item:hover {
380
+ background: var(--bg2);
381
+ }
382
+ .api-row {
383
+ display: flex;
384
+ align-items: center;
385
+ gap: 8px;
386
+ }
387
+ .api-url {
388
+ font-family: monospace;
389
+ font-size: 11px;
390
+ overflow: hidden;
391
+ text-overflow: ellipsis;
392
+ white-space: nowrap;
393
+ }
394
+ .api-route {
395
+ font-size: 9px;
396
+ color: var(--text2);
397
+ font-family: monospace;
398
+ overflow: hidden;
399
+ text-overflow: ellipsis;
400
+ white-space: nowrap;
401
+ }
201
402
 
202
403
  /* Relation Items */
203
404
  .rel-item {
@@ -207,22 +408,72 @@ body { background: var(--bg); color: var(--text); }
207
408
  margin-bottom: 4px;
208
409
  cursor: pointer;
209
410
  }
210
- .rel-item:hover { background: #475569; }
211
- .rel-header { display: flex; align-items: center; gap: 6px; margin-bottom: 2px; }
212
- .rel-type { font-size: 8px; padding: 2px 5px; border-radius: 2px; font-weight: 600; }
213
- .rel-type-parent { background: #3b82f6; color: white; }
214
- .rel-type-child { background: #22c55e; color: white; }
215
- .rel-type-layout { background: #8b5cf6; color: white; }
216
- .rel-path { font-family: monospace; font-size: 11px; color: var(--accent); }
217
- .rel-desc { font-size: 10px; color: var(--text2); }
411
+ .rel-item:hover {
412
+ background: #475569;
413
+ }
414
+ .rel-header {
415
+ display: flex;
416
+ align-items: center;
417
+ gap: 6px;
418
+ margin-bottom: 2px;
419
+ }
420
+ .rel-type {
421
+ font-size: 8px;
422
+ padding: 2px 5px;
423
+ border-radius: 2px;
424
+ font-weight: 600;
425
+ }
426
+ .rel-type-parent {
427
+ background: #3b82f6;
428
+ color: white;
429
+ }
430
+ .rel-type-child {
431
+ background: #22c55e;
432
+ color: white;
433
+ }
434
+ .rel-type-layout {
435
+ background: #8b5cf6;
436
+ color: white;
437
+ }
438
+ .rel-path {
439
+ font-family: monospace;
440
+ font-size: 11px;
441
+ color: var(--accent);
442
+ }
443
+ .rel-desc {
444
+ font-size: 10px;
445
+ color: var(--text2);
446
+ }
218
447
 
219
- .data-op { cursor: pointer; }
220
- .data-op:hover { background: #475569 !important; }
448
+ .data-op {
449
+ cursor: pointer;
450
+ }
451
+ .data-op:hover {
452
+ background: #475569 !important;
453
+ }
221
454
 
222
455
  /* Page Map Modal */
223
- .modal-back { background: var(--accent); color: white; border: none; padding: 4px 10px; border-radius: 4px; cursor: pointer; font-size: 14px; }
224
- .modal-back:hover { opacity: 0.9; }
225
- .field-tree { font-family: monospace; font-size: 11px; background: var(--bg3); padding: 10px; border-radius: 4px; white-space: pre; overflow-x: auto; }
456
+ .modal-back {
457
+ background: var(--accent);
458
+ color: white;
459
+ border: none;
460
+ padding: 4px 10px;
461
+ border-radius: 4px;
462
+ cursor: pointer;
463
+ font-size: 14px;
464
+ }
465
+ .modal-back:hover {
466
+ opacity: 0.9;
467
+ }
468
+ .field-tree {
469
+ font-family: monospace;
470
+ font-size: 11px;
471
+ background: var(--bg3);
472
+ padding: 10px;
473
+ border-radius: 4px;
474
+ white-space: pre;
475
+ overflow-x: auto;
476
+ }
226
477
 
227
478
  /* Load More Button */
228
479
  .load-more-btn {
@@ -238,7 +489,10 @@ body { background: var(--bg); color: var(--text); }
238
489
  font-size: 11px;
239
490
  text-align: center;
240
491
  }
241
- .load-more-btn:hover { background: var(--bg2); color: var(--text); }
492
+ .load-more-btn:hover {
493
+ background: var(--bg2);
494
+ color: var(--text);
495
+ }
242
496
 
243
497
  /* Route Indicator Tags */
244
498
  .route-tag {
@@ -249,18 +503,44 @@ body { background: var(--bg); color: var(--text); }
249
503
  border-radius: 2px;
250
504
  flex-shrink: 0;
251
505
  }
252
- .route-tag-json { background: #3b82f6; }
253
- .route-tag-html { background: #22c55e; }
254
- .route-tag-redirect { background: #f59e0b; }
255
- .route-tag-view { background: #10b981; }
256
- .route-tag-svc { background: #8b5cf6; }
257
- .route-tag-grpc { background: #06b6d4; }
258
- .route-tag-db { background: #f59e0b; }
259
- .route-tag-template { background: #6b7280; }
260
- .route-tag-react { background: #61dafb; color: #222; font-weight: 600; }
261
- .route-tag-warn { background: #ef4444; }
262
- .route-tag-partials { background: #6366f1; }
263
- .route-tag-vars { background: #ec4899; }
506
+ .route-tag-json {
507
+ background: #3b82f6;
508
+ }
509
+ .route-tag-html {
510
+ background: #22c55e;
511
+ }
512
+ .route-tag-redirect {
513
+ background: #f59e0b;
514
+ }
515
+ .route-tag-view {
516
+ background: #10b981;
517
+ }
518
+ .route-tag-svc {
519
+ background: #8b5cf6;
520
+ }
521
+ .route-tag-grpc {
522
+ background: #06b6d4;
523
+ }
524
+ .route-tag-db {
525
+ background: #f59e0b;
526
+ }
527
+ .route-tag-template {
528
+ background: #6b7280;
529
+ }
530
+ .route-tag-react {
531
+ background: #61dafb;
532
+ color: #222;
533
+ font-weight: 600;
534
+ }
535
+ .route-tag-warn {
536
+ background: #ef4444;
537
+ }
538
+ .route-tag-partials {
539
+ background: #6366f1;
540
+ }
541
+ .route-tag-vars {
542
+ background: #ec4899;
543
+ }
264
544
 
265
545
  /* Route Stats Section */
266
546
  .route-stats-box {
@@ -282,13 +562,29 @@ body { background: var(--bg); color: var(--text); }
282
562
  border-radius: 6px;
283
563
  transition: background 0.2s;
284
564
  }
285
- .route-stat:hover { background: var(--bg2); }
286
- .route-stat-val { font-size: 20px; font-weight: 600; }
287
- .route-stat-val.green { color: #22c55e; }
288
- .route-stat-val.blue { color: #3b82f6; }
289
- .route-stat-val.purple { color: #8b5cf6; }
290
- .route-stat-val.cyan { color: #06b6d4; }
291
- .route-stat-label { font-size: 11px; color: var(--text2); }
565
+ .route-stat:hover {
566
+ background: var(--bg2);
567
+ }
568
+ .route-stat-val {
569
+ font-size: 20px;
570
+ font-weight: 600;
571
+ }
572
+ .route-stat-val.green {
573
+ color: #22c55e;
574
+ }
575
+ .route-stat-val.blue {
576
+ color: #3b82f6;
577
+ }
578
+ .route-stat-val.purple {
579
+ color: #8b5cf6;
580
+ }
581
+ .route-stat-val.cyan {
582
+ color: #06b6d4;
583
+ }
584
+ .route-stat-label {
585
+ font-size: 11px;
586
+ color: var(--text2);
587
+ }
292
588
 
293
589
  /* Coverage Info */
294
590
  .coverage-info {
@@ -302,6 +598,15 @@ body { background: var(--bg); color: var(--text); }
302
598
  color: var(--text2);
303
599
  cursor: help;
304
600
  }
305
- .coverage-high { color: #22c55e; font-weight: 600; }
306
- .coverage-mid { color: #f59e0b; font-weight: 600; }
307
- .coverage-low { color: #ef4444; font-weight: 600; }
601
+ .coverage-high {
602
+ color: #22c55e;
603
+ font-weight: 600;
604
+ }
605
+ .coverage-mid {
606
+ color: #f59e0b;
607
+ font-weight: 600;
608
+ }
609
+ .coverage-low {
610
+ color: #ef4444;
611
+ font-weight: 600;
612
+ }