dev-inspector 1.0.5 → 1.1.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 (64) hide show
  1. package/README.md +22 -1
  2. package/lib/init.d.ts +5 -2
  3. package/lib/init.js +5 -2
  4. package/lib/integrations/index.d.ts +2 -0
  5. package/lib/integrations/index.js +7 -0
  6. package/lib/integrations/jira/adf.d.ts +11 -0
  7. package/lib/integrations/jira/adf.js +17 -0
  8. package/lib/integrations/jira/client.d.ts +4 -0
  9. package/lib/integrations/jira/client.js +113 -0
  10. package/lib/integrations/jira/errors.d.ts +10 -0
  11. package/lib/integrations/jira/errors.js +13 -0
  12. package/lib/integrations/jira/index.d.ts +2 -0
  13. package/lib/integrations/jira/index.js +8 -0
  14. package/lib/integrations/types.d.ts +54 -0
  15. package/lib/integrations/types.js +2 -0
  16. package/lib/storage/localStorage.d.ts +30 -0
  17. package/lib/storage/localStorage.js +166 -0
  18. package/lib/ui/panel/behavior/setupPanelBehavior.d.ts +4 -1
  19. package/lib/ui/panel/behavior/setupPanelBehavior.js +48 -1
  20. package/lib/ui/panel/bindings/bindStorageToPanelView.d.ts +2 -0
  21. package/lib/ui/panel/bindings/bindStorageToPanelView.js +50 -6
  22. package/lib/ui/panel/bindings/matchesQuery.d.ts +2 -0
  23. package/lib/ui/panel/bindings/matchesQuery.js +54 -0
  24. package/lib/ui/panel/bindings/types.d.ts +2 -0
  25. package/lib/ui/panel/dom/buildPanelDOM.js +65 -6
  26. package/lib/ui/panel/dom/constants.d.ts +5 -1
  27. package/lib/ui/panel/dom/constants.js +35 -20
  28. package/lib/ui/panel/dom/types.d.ts +6 -0
  29. package/lib/ui/panel/index.d.ts +4 -0
  30. package/lib/ui/panel/index.js +8 -3
  31. package/lib/ui/panel/integrations/icons.d.ts +1 -0
  32. package/lib/ui/panel/integrations/icons.js +7 -0
  33. package/lib/ui/panel/integrations/index.d.ts +1 -0
  34. package/lib/ui/panel/integrations/index.js +5 -0
  35. package/lib/ui/panel/integrations/jiraDialog.d.ts +6 -0
  36. package/lib/ui/panel/integrations/jiraDialog.js +234 -0
  37. package/lib/ui/panel/integrations/screenshot.d.ts +4 -0
  38. package/lib/ui/panel/integrations/screenshot.js +51 -0
  39. package/lib/ui/panel/localStorage/createLocalStorageView.d.ts +4 -0
  40. package/lib/ui/panel/localStorage/createLocalStorageView.js +108 -0
  41. package/lib/ui/panel/localStorage/index.d.ts +3 -0
  42. package/lib/ui/panel/localStorage/index.js +7 -0
  43. package/lib/ui/panel/localStorage/setupLocalStorageSync.d.ts +9 -0
  44. package/lib/ui/panel/localStorage/setupLocalStorageSync.js +30 -0
  45. package/lib/ui/panel/localStorage/types.d.ts +6 -0
  46. package/lib/ui/panel/localStorage/types.js +2 -0
  47. package/lib/ui/panel/state/createPanelState.d.ts +2 -1
  48. package/lib/ui/panel/state/createPanelState.js +5 -1
  49. package/lib/ui/panel/state/types.d.ts +5 -0
  50. package/lib/ui/panel/theme/applyTheme.d.ts +2 -0
  51. package/lib/ui/panel/theme/applyTheme.js +6 -0
  52. package/lib/ui/panel/theme/index.d.ts +3 -0
  53. package/lib/ui/panel/theme/index.js +9 -0
  54. package/lib/ui/panel/theme/storage.d.ts +4 -0
  55. package/lib/ui/panel/theme/storage.js +45 -0
  56. package/lib/ui/panel/theme/types.d.ts +6 -0
  57. package/lib/ui/panel/theme/types.js +2 -0
  58. package/lib/ui/panelStyles.d.ts +1 -1
  59. package/lib/ui/panelStyles.js +514 -125
  60. package/lib/ui/shared/copy.d.ts +2 -0
  61. package/lib/ui/shared/copy.js +101 -0
  62. package/package.json +1 -1
  63. package/lib/ui/logList/networkDetails.d.ts +0 -2
  64. package/lib/ui/logList/networkDetails.js +0 -227
@@ -2,37 +2,142 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PANEL_CSS = void 0;
4
4
  exports.PANEL_CSS = `
5
+ .di-root {
6
+ --di-font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
7
+ --di-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
8
+ --di-radius-sm: 8px;
9
+ --di-radius-md: 10px;
10
+ --di-radius-lg: 14px;
11
+ --di-radius-pill: 999px;
12
+ --di-z: 2147483647;
13
+
14
+ --di-bg: #ffffff;
15
+ --di-bg-elev: #f8fafc;
16
+ --di-bg-soft: #f1f5f9;
17
+ --di-bg-hover: #e2e8f0;
18
+ --di-bg-row: #ffffff;
19
+ --di-bg-row-alt: #f8fafc;
20
+ --di-overlay: rgba(15, 23, 42, 0.04);
21
+
22
+ --di-border: #e2e8f0;
23
+ --di-border-strong: #cbd5e1;
24
+ --di-border-soft: #eef2f6;
25
+
26
+ --di-text: #0f172a;
27
+ --di-text-muted: #475569;
28
+ --di-text-faint: #94a3b8;
29
+ --di-text-on-accent: #ffffff;
30
+
31
+ --di-accent: #6366f1;
32
+ --di-accent-hover: #4f46e5;
33
+ --di-accent-soft: rgba(99, 102, 241, 0.10);
34
+
35
+ --di-success: #059669;
36
+ --di-success-bg: rgba(16, 185, 129, 0.10);
37
+ --di-success-border: rgba(16, 185, 129, 0.32);
38
+
39
+ --di-warning: #d97706;
40
+ --di-warning-bg: rgba(245, 158, 11, 0.12);
41
+ --di-warning-border: rgba(245, 158, 11, 0.36);
42
+
43
+ --di-error: #dc2626;
44
+ --di-error-bg: rgba(239, 68, 68, 0.10);
45
+ --di-error-border: rgba(239, 68, 68, 0.34);
46
+
47
+ --di-shadow: 0 8px 24px rgba(15, 23, 42, 0.10), 0 2px 6px rgba(15, 23, 42, 0.06);
48
+ --di-shadow-lg: 0 18px 48px rgba(15, 23, 42, 0.18), 0 4px 12px rgba(15, 23, 42, 0.08);
49
+ --di-ring: 0 0 0 3px rgba(99, 102, 241, 0.25);
50
+ }
51
+
52
+ .di-root[data-di-theme="dark"] {
53
+ --di-bg: #0b0e13;
54
+ --di-bg-elev: #11151c;
55
+ --di-bg-soft: #161b23;
56
+ --di-bg-hover: #1e2530;
57
+ --di-bg-row: #14181f;
58
+ --di-bg-row-alt: #181d25;
59
+ --di-overlay: rgba(255, 255, 255, 0.04);
60
+
61
+ --di-border: #232a35;
62
+ --di-border-strong: #313a48;
63
+ --di-border-soft: #1b212b;
64
+
65
+ --di-text: #f1f5f9;
66
+ --di-text-muted: #94a3b8;
67
+ --di-text-faint: #64748b;
68
+ --di-text-on-accent: #ffffff;
69
+
70
+ --di-accent: #818cf8;
71
+ --di-accent-hover: #a5b4fc;
72
+ --di-accent-soft: rgba(129, 140, 248, 0.16);
73
+
74
+ --di-success: #34d399;
75
+ --di-success-bg: rgba(16, 185, 129, 0.16);
76
+ --di-success-border: rgba(16, 185, 129, 0.40);
77
+
78
+ --di-warning: #fbbf24;
79
+ --di-warning-bg: rgba(245, 158, 11, 0.16);
80
+ --di-warning-border: rgba(245, 158, 11, 0.42);
81
+
82
+ --di-error: #f87171;
83
+ --di-error-bg: rgba(239, 68, 68, 0.16);
84
+ --di-error-border: rgba(239, 68, 68, 0.40);
85
+
86
+ --di-shadow: 0 8px 24px rgba(0, 0, 0, 0.40), 0 2px 6px rgba(0, 0, 0, 0.30);
87
+ --di-shadow-lg: 0 18px 48px rgba(0, 0, 0, 0.55), 0 4px 12px rgba(0, 0, 0, 0.35);
88
+ --di-ring: 0 0 0 3px rgba(129, 140, 248, 0.32);
89
+ }
90
+
5
91
  .di-root, .di-root * {
6
92
  box-sizing: border-box;
7
93
  }
8
94
 
95
+ .di-root {
96
+ font-family: var(--di-font);
97
+ color: var(--di-text);
98
+ }
99
+
9
100
  .di-toggle {
10
101
  position: fixed;
11
- right: 12px;
12
- bottom: 12px;
13
- z-index: 2147483647;
14
- border: 1px solid rgba(255,255,255,0.18);
15
- background: rgba(20,20,20,0.92);
16
- color: #fff;
17
- font: 12px ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
18
- padding: 8px 10px;
19
- border-radius: 10px;
102
+ right: 16px;
103
+ bottom: 16px;
104
+ z-index: var(--di-z);
105
+ border: 1px solid var(--di-border);
106
+ background: var(--di-bg);
107
+ color: var(--di-text);
108
+ font-family: var(--di-font);
109
+ font-size: 12px;
110
+ font-weight: 500;
111
+ padding: 8px 12px;
112
+ border-radius: var(--di-radius-pill);
20
113
  cursor: pointer;
21
- backdrop-filter: blur(8px);
22
- box-shadow: 0 10px 30px rgba(0,0,0,0.35);
114
+ box-shadow: var(--di-shadow);
23
115
  display: inline-flex;
24
116
  align-items: center;
25
117
  gap: 10px;
118
+ transition: transform 120ms ease, box-shadow 160ms ease, border-color 160ms ease, background 160ms ease;
119
+ }
120
+
121
+ .di-toggle:hover {
122
+ border-color: var(--di-border-strong);
123
+ box-shadow: var(--di-shadow-lg);
124
+ transform: translateY(-1px);
125
+ }
126
+
127
+ .di-toggle:focus-visible {
128
+ outline: none;
129
+ box-shadow: var(--di-shadow), var(--di-ring);
26
130
  }
27
131
 
28
132
  .di-toggleTitle {
29
133
  font-weight: 600;
134
+ letter-spacing: -0.01em;
30
135
  }
31
136
 
32
137
  .di-toggleMeta {
33
138
  display: inline-flex;
34
139
  align-items: center;
35
- gap: 8px;
140
+ gap: 6px;
36
141
  }
37
142
 
38
143
  .di-toggleBadge {
@@ -40,10 +145,11 @@ exports.PANEL_CSS = `
40
145
  align-items: center;
41
146
  gap: 6px;
42
147
  padding: 4px 8px;
43
- border-radius: 999px;
44
- border: 1px solid rgba(255,255,255,0.16);
45
- background: rgba(0,0,0,0.28);
148
+ border-radius: var(--di-radius-pill);
149
+ background: var(--di-bg-soft);
150
+ color: var(--di-text-muted);
46
151
  font-size: 11px;
152
+ font-weight: 500;
47
153
  line-height: 1;
48
154
  }
49
155
 
@@ -53,10 +159,11 @@ exports.PANEL_CSS = `
53
159
  gap: 4px;
54
160
  margin-left: 2px;
55
161
  padding: 2px 6px;
56
- border-radius: 999px;
57
- background: rgba(239, 68, 68, 0.95);
58
- color: #fff;
162
+ border-radius: var(--di-radius-pill);
163
+ background: var(--di-error);
164
+ color: var(--di-text-on-accent);
59
165
  font-size: 11px;
166
+ font-weight: 600;
60
167
  line-height: 1;
61
168
  }
62
169
 
@@ -73,93 +180,159 @@ exports.PANEL_CSS = `
73
180
 
74
181
  .di-panel {
75
182
  position: fixed;
76
- right: 12px;
77
- bottom: 56px;
78
- width: min(520px, calc(100vw - 24px));
79
- height: min(380px, calc(100vh - 84px));
80
- z-index: 2147483647;
81
- border: 1px solid rgba(255,255,255,0.14);
82
- background: rgba(16,16,16,0.92);
83
- color: #eaeaea;
84
- border-radius: 12px;
183
+ right: 16px;
184
+ bottom: 64px;
185
+ width: min(560px, calc(100vw - 32px));
186
+ height: min(440px, calc(100vh - 96px));
187
+ z-index: var(--di-z);
188
+ border: 1px solid var(--di-border);
189
+ background: var(--di-bg);
190
+ color: var(--di-text);
191
+ border-radius: var(--di-radius-lg);
85
192
  overflow: hidden;
86
193
  display: grid;
87
194
  grid-template-rows: auto 1fr;
88
- backdrop-filter: blur(8px);
89
- box-shadow: 0 10px 30px rgba(0,0,0,0.45);
195
+ box-shadow: var(--di-shadow-lg);
90
196
  }
91
197
 
92
198
  .di-resizeHandle {
93
- width: 18px;
94
- height: 18px;
95
- flex: 0 0 18px;
96
- border-radius: 8px;
199
+ width: 16px;
200
+ height: 16px;
201
+ flex: 0 0 16px;
202
+ border-radius: var(--di-radius-sm);
97
203
  cursor: nwse-resize;
98
204
  touch-action: none;
99
- opacity: 0.9;
100
- border: 1px solid rgba(255,255,255,0.14);
101
- background: rgba(255,255,255,0.06);
205
+ border: 1px solid var(--di-border);
206
+ background: var(--di-bg-soft);
102
207
  position: relative;
208
+ transition: background 160ms ease, border-color 160ms ease;
103
209
  }
104
210
 
105
211
  .di-resizeHandle::before {
106
212
  content: "";
107
213
  position: absolute;
108
214
  inset: 4px;
109
- border-radius: 6px;
215
+ border-radius: 4px;
110
216
  background:
111
- linear-gradient(135deg, rgba(255,255,255,0.65) 0 2px, transparent 0) 0 0 / 6px 6px,
112
- linear-gradient(135deg, rgba(255,255,255,0.35) 0 2px, transparent 0) 3px 3px / 6px 6px;
217
+ linear-gradient(135deg, var(--di-text-faint) 0 1.5px, transparent 0) 0 0 / 5px 5px,
218
+ linear-gradient(135deg, var(--di-text-faint) 0 1.5px, transparent 0) 2.5px 2.5px / 5px 5px;
219
+ opacity: 0.7;
113
220
  }
114
221
 
115
222
  .di-resizeHandle:hover {
116
- opacity: 1;
117
- border-color: rgba(255,255,255,0.24);
118
- background: rgba(255,255,255,0.10);
223
+ border-color: var(--di-border-strong);
224
+ background: var(--di-bg-hover);
119
225
  }
120
226
 
121
227
  .di-hidden {
122
- display: none;
228
+ display: none !important;
123
229
  }
124
230
 
125
231
  .di-header {
126
232
  display: grid;
127
- gap: 8px;
128
- padding: 10px 12px;
129
- border-bottom: 1px solid rgba(255,255,255,0.12);
233
+ gap: 10px;
234
+ padding: 12px 14px 10px;
235
+ border-bottom: 1px solid var(--di-border);
236
+ background: var(--di-bg-elev);
130
237
  }
131
238
 
132
239
  .di-headerRow {
133
240
  display: flex;
134
241
  align-items: center;
135
242
  justify-content: space-between;
136
- gap: 8px;
243
+ gap: 10px;
137
244
  }
138
245
 
139
246
  .di-title {
140
- font: 600 12px ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
141
- opacity: 0.95;
247
+ font-size: 13px;
248
+ font-weight: 600;
249
+ letter-spacing: -0.01em;
250
+ color: var(--di-text);
251
+ flex: 1;
252
+ min-width: 0;
253
+ overflow: hidden;
254
+ text-overflow: ellipsis;
255
+ white-space: nowrap;
142
256
  }
143
257
 
144
258
  .di-actions {
145
259
  display: flex;
146
260
  align-items: center;
147
- gap: 8px;
261
+ gap: 6px;
148
262
  }
149
263
 
150
264
  .di-btn {
151
- border: 1px solid rgba(255,255,255,0.14);
152
- background: rgba(255,255,255,0.06);
153
- color: #fff;
154
- font: 12px ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
155
- padding: 6px 8px;
156
- border-radius: 10px;
265
+ border: 1px solid var(--di-border);
266
+ background: var(--di-bg);
267
+ color: var(--di-text);
268
+ font-family: var(--di-font);
269
+ font-size: 12px;
270
+ font-weight: 500;
271
+ padding: 6px 10px;
272
+ border-radius: var(--di-radius-md);
273
+ cursor: pointer;
274
+ transition: background 160ms ease, border-color 160ms ease, color 160ms ease;
275
+ }
276
+
277
+ .di-btn:hover {
278
+ background: var(--di-bg-soft);
279
+ border-color: var(--di-border-strong);
280
+ }
281
+
282
+ .di-btn:focus-visible {
283
+ outline: none;
284
+ box-shadow: var(--di-ring);
285
+ }
286
+
287
+ .di-iconBtn {
288
+ display: inline-flex;
289
+ align-items: center;
290
+ justify-content: center;
291
+ width: 30px;
292
+ height: 30px;
293
+ padding: 0;
294
+ border: 1px solid var(--di-border);
295
+ background: var(--di-bg);
296
+ color: var(--di-text-muted);
297
+ border-radius: var(--di-radius-md);
157
298
  cursor: pointer;
299
+ transition: background 160ms ease, border-color 160ms ease, color 160ms ease;
300
+ }
301
+
302
+ .di-iconBtn:hover {
303
+ background: var(--di-bg-soft);
304
+ border-color: var(--di-border-strong);
305
+ color: var(--di-text);
306
+ }
307
+
308
+ .di-iconBtn:focus-visible {
309
+ outline: none;
310
+ box-shadow: var(--di-ring);
311
+ }
312
+
313
+ .di-iconBtn svg {
314
+ width: 16px;
315
+ height: 16px;
316
+ display: block;
317
+ }
318
+
319
+ .di-themeIcon {
320
+ display: none;
321
+ align-items: center;
322
+ justify-content: center;
323
+ }
324
+
325
+ .di-root[data-di-theme="light"] .di-themeIcon--moon {
326
+ display: inline-flex;
327
+ }
328
+
329
+ .di-root[data-di-theme="dark"] .di-themeIcon--sun {
330
+ display: inline-flex;
158
331
  }
159
332
 
160
333
  .di-tabs {
161
334
  display: flex;
162
- gap: 8px;
335
+ gap: 6px;
163
336
  flex-wrap: wrap;
164
337
  }
165
338
 
@@ -167,25 +340,37 @@ exports.PANEL_CSS = `
167
340
  display: inline-flex;
168
341
  align-items: center;
169
342
  gap: 8px;
170
- border: 1px solid rgba(255,255,255,0.14);
171
- background: rgba(255,255,255,0.06);
172
- color: #fff;
173
- padding: 6px 10px;
174
- border-radius: 999px;
343
+ border: 1px solid transparent;
344
+ background: transparent;
345
+ color: var(--di-text-muted);
346
+ padding: 6px 12px;
347
+ border-radius: var(--di-radius-pill);
175
348
  cursor: pointer;
176
- font: 12px ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
177
- opacity: 0.9;
349
+ font-family: var(--di-font);
350
+ font-size: 12px;
351
+ font-weight: 500;
352
+ transition: background 160ms ease, color 160ms ease, border-color 160ms ease;
178
353
  }
179
354
 
180
355
  .di-tab:hover {
181
- background: rgba(255,255,255,0.10);
182
- border-color: rgba(255,255,255,0.22);
356
+ background: var(--di-bg-soft);
357
+ color: var(--di-text);
358
+ }
359
+
360
+ .di-tab:focus-visible {
361
+ outline: none;
362
+ box-shadow: var(--di-ring);
183
363
  }
184
364
 
185
365
  .di-tabActive {
186
- opacity: 1;
187
- background: rgba(255,255,255,0.14);
188
- border-color: rgba(255,255,255,0.28);
366
+ background: var(--di-accent-soft);
367
+ color: var(--di-accent);
368
+ border-color: transparent;
369
+ }
370
+
371
+ .di-tabActive:hover {
372
+ background: var(--di-accent-soft);
373
+ color: var(--di-accent);
189
374
  }
190
375
 
191
376
  .di-tabIcon {
@@ -201,57 +386,173 @@ exports.PANEL_CSS = `
201
386
  min-width: 18px;
202
387
  height: 18px;
203
388
  padding: 0 6px;
204
- border-radius: 999px;
205
- border: 1px solid rgba(255,255,255,0.16);
206
- background: rgba(0,0,0,0.28);
389
+ border-radius: var(--di-radius-pill);
390
+ background: var(--di-overlay);
391
+ color: inherit;
207
392
  font-size: 11px;
393
+ font-weight: 600;
394
+ line-height: 1;
395
+ }
396
+
397
+ .di-tabActive .di-badge {
398
+ background: var(--di-accent);
399
+ color: var(--di-text-on-accent);
400
+ }
401
+
402
+ .di-searchRow {
403
+ display: flex;
404
+ }
405
+
406
+ .di-searchWrap {
407
+ position: relative;
408
+ display: flex;
409
+ align-items: center;
410
+ flex: 1;
411
+ background: var(--di-bg);
412
+ border: 1px solid var(--di-border);
413
+ border-radius: var(--di-radius-md);
414
+ transition: border-color 160ms ease, box-shadow 160ms ease;
415
+ }
416
+
417
+ .di-searchWrap:focus-within {
418
+ border-color: var(--di-accent);
419
+ box-shadow: var(--di-ring);
420
+ }
421
+
422
+ .di-searchIconWrap {
423
+ display: inline-flex;
424
+ align-items: center;
425
+ justify-content: center;
426
+ padding-left: 10px;
427
+ color: var(--di-text-faint);
428
+ pointer-events: none;
429
+ }
430
+
431
+ .di-searchIcon {
432
+ width: 14px;
433
+ height: 14px;
434
+ display: block;
435
+ }
436
+
437
+ .di-searchInput {
438
+ flex: 1;
439
+ border: 0;
440
+ outline: 0;
441
+ background: transparent;
442
+ color: var(--di-text);
443
+ font-family: var(--di-font);
444
+ font-size: 12px;
445
+ padding: 7px 10px;
446
+ min-width: 0;
447
+ }
448
+
449
+ .di-searchInput::placeholder {
450
+ color: var(--di-text-faint);
451
+ }
452
+
453
+ .di-searchInput::-webkit-search-cancel-button {
454
+ -webkit-appearance: none;
455
+ appearance: none;
456
+ }
457
+
458
+ .di-searchClear {
459
+ display: none;
460
+ border: 0;
461
+ background: transparent;
462
+ color: var(--di-text-faint);
463
+ cursor: pointer;
464
+ font-size: 16px;
208
465
  line-height: 1;
466
+ padding: 4px 10px;
467
+ border-radius: var(--di-radius-md);
468
+ transition: color 120ms ease;
469
+ }
470
+
471
+ .di-searchClear:hover {
472
+ color: var(--di-text);
473
+ }
474
+
475
+ .di-searchClear--visible {
476
+ display: inline-flex;
477
+ align-items: center;
478
+ justify-content: center;
479
+ }
480
+
481
+ .di-bodyWrap {
482
+ position: relative;
483
+ overflow: hidden;
209
484
  }
210
485
 
211
486
  .di-body {
487
+ height: 100%;
212
488
  overflow: auto;
489
+ background: var(--di-bg);
490
+ scrollbar-width: thin;
491
+ scrollbar-color: var(--di-border-strong) transparent;
492
+ }
493
+
494
+ .di-body::-webkit-scrollbar {
495
+ width: 10px;
496
+ height: 10px;
497
+ }
498
+
499
+ .di-body::-webkit-scrollbar-thumb {
500
+ background: var(--di-border-strong);
501
+ border-radius: var(--di-radius-pill);
502
+ border: 2px solid var(--di-bg);
503
+ }
504
+
505
+ .di-body::-webkit-scrollbar-track {
506
+ background: transparent;
213
507
  }
214
508
 
215
509
  .di-list {
216
510
  margin: 0;
217
- padding: 8px 10px;
511
+ padding: 10px 12px 14px;
218
512
  list-style: none;
219
513
  display: grid;
220
514
  gap: 6px;
221
515
  }
222
516
 
223
517
  .di-item {
224
- padding: 8px 10px;
225
- border: 1px solid rgba(255,255,255,0.10);
226
- border-radius: 10px;
227
- background: rgba(255,255,255,0.04);
518
+ padding: 10px 12px;
519
+ border: 1px solid var(--di-border);
520
+ border-radius: var(--di-radius-md);
521
+ background: var(--di-bg-row);
522
+ transition: border-color 160ms ease, background 160ms ease;
523
+ }
524
+
525
+ .di-item:hover {
526
+ border-color: var(--di-border-strong);
228
527
  }
229
528
 
230
529
  .di-itemToneNeutral {
231
- border-color: rgba(255,255,255,0.10);
232
- background: rgba(255,255,255,0.04);
530
+ border-color: var(--di-border);
531
+ background: var(--di-bg-row);
233
532
  }
234
533
 
235
534
  .di-itemToneSuccess {
236
- border-color: rgba(34, 197, 94, 0.35);
237
- background: rgba(34, 197, 94, 0.10);
535
+ border-color: var(--di-success-border);
536
+ background: var(--di-success-bg);
238
537
  }
239
538
 
240
539
  .di-itemToneWarning {
241
- border-color: rgba(245, 158, 11, 0.42);
242
- background: rgba(245, 158, 11, 0.12);
540
+ border-color: var(--di-warning-border);
541
+ background: var(--di-warning-bg);
243
542
  }
244
543
 
245
544
  .di-itemToneError {
246
- border-color: rgba(239, 68, 68, 0.45);
247
- background: rgba(239, 68, 68, 0.12);
545
+ border-color: var(--di-error-border);
546
+ background: var(--di-error-bg);
248
547
  }
249
548
 
250
549
  .di-meta {
251
550
  display: flex;
252
551
  gap: 10px;
253
- font: 11px ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
254
- opacity: 0.85;
552
+ align-items: center;
553
+ font-family: var(--di-font-mono);
554
+ font-size: 11px;
555
+ color: var(--di-text-muted);
255
556
  margin-bottom: 4px;
256
557
  }
257
558
 
@@ -260,24 +561,28 @@ exports.PANEL_CSS = `
260
561
  align-items: center;
261
562
  justify-content: center;
262
563
  padding: 2px 8px;
263
- border-radius: 999px;
564
+ border-radius: var(--di-radius-pill);
264
565
  font-size: 11px;
566
+ font-weight: 600;
265
567
  line-height: 1;
266
- color: #fff;
568
+ color: var(--di-text-on-accent);
267
569
  }
268
570
 
269
571
  .di-statusChipSuccess {
270
- background: rgba(34, 197, 94, 0.95);
572
+ background: var(--di-success);
271
573
  }
272
574
 
273
575
  .di-statusChipError {
274
- background: rgba(239, 68, 68, 0.95);
576
+ background: var(--di-error);
275
577
  }
276
578
 
277
579
  .di-msg {
278
580
  white-space: pre-wrap;
279
581
  word-break: break-word;
280
- font: 12px ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
582
+ font-family: var(--di-font-mono);
583
+ font-size: 12px;
584
+ color: var(--di-text);
585
+ line-height: 1.55;
281
586
  }
282
587
 
283
588
  .di-details {
@@ -286,9 +591,19 @@ exports.PANEL_CSS = `
286
591
 
287
592
  .di-detailsSummary {
288
593
  cursor: pointer;
289
- font: 12px ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
290
- opacity: 0.9;
594
+ font-family: var(--di-font-mono);
595
+ font-size: 12px;
596
+ color: var(--di-text-muted);
291
597
  user-select: none;
598
+ padding: 4px 6px;
599
+ border-radius: var(--di-radius-sm);
600
+ display: inline-block;
601
+ transition: background 160ms ease, color 160ms ease;
602
+ }
603
+
604
+ .di-detailsSummary:hover {
605
+ background: var(--di-bg-soft);
606
+ color: var(--di-text);
292
607
  }
293
608
 
294
609
  .di-netBodyDetails {
@@ -298,14 +613,12 @@ exports.PANEL_CSS = `
298
613
  overflow: visible;
299
614
  }
300
615
 
301
-
302
-
303
616
  .di-netBodyDetails > summary.di-netDetailsSummary:hover {
304
- background: rgba(255,255,255,0.06);
617
+ background: var(--di-bg-soft);
305
618
  }
306
619
 
307
620
  .di-netBodyDetails[open] > summary.di-netDetailsSummary {
308
- background: rgba(255,255,255,0.08);
621
+ background: var(--di-bg-soft);
309
622
  border-bottom: 0;
310
623
  }
311
624
 
@@ -322,26 +635,34 @@ exports.PANEL_CSS = `
322
635
  display: flex;
323
636
  align-items: center;
324
637
  gap: 10px;
638
+ padding: 4px 6px;
639
+ border-radius: var(--di-radius-sm);
325
640
  }
326
641
 
327
642
  .di-netDetailsTitle {
328
- font: 12px ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
643
+ font-family: var(--di-font-mono);
644
+ font-size: 12px;
645
+ color: var(--di-text);
329
646
  }
330
647
 
331
648
  .di-copyBtn {
332
649
  margin-left: auto;
333
- border: 1px solid rgba(255,255,255,0.14);
334
- background: rgba(255,255,255,0.06);
335
- color: #fff;
336
- font: 12px ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
337
- padding: 4px 8px;
338
- border-radius: 999px;
650
+ border: 1px solid var(--di-border);
651
+ background: var(--di-bg);
652
+ color: var(--di-text-muted);
653
+ font-family: var(--di-font);
654
+ font-size: 11px;
655
+ font-weight: 500;
656
+ padding: 4px 10px;
657
+ border-radius: var(--di-radius-pill);
339
658
  cursor: pointer;
659
+ transition: background 160ms ease, color 160ms ease, border-color 160ms ease;
340
660
  }
341
661
 
342
662
  .di-copyBtn:hover {
343
- background: rgba(255,255,255,0.10);
344
- border-color: rgba(255,255,255,0.22);
663
+ background: var(--di-bg-soft);
664
+ border-color: var(--di-border-strong);
665
+ color: var(--di-text);
345
666
  }
346
667
 
347
668
  .di-copyBtn:active {
@@ -349,34 +670,38 @@ exports.PANEL_CSS = `
349
670
  }
350
671
 
351
672
  .di-netTrunc {
352
- border: 1px solid rgba(245, 158, 11, 0.42);
353
- background: rgba(245, 158, 11, 0.10);
354
- color: rgba(255,255,255,0.92);
355
- border-radius: 10px;
673
+ border: 1px solid var(--di-warning-border);
674
+ background: var(--di-warning-bg);
675
+ color: var(--di-text);
676
+ border-radius: var(--di-radius-md);
356
677
  padding: 8px 10px;
357
- font: 11px ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
678
+ font-family: var(--di-font-mono);
679
+ font-size: 11px;
358
680
  margin-bottom: 8px;
359
681
  }
360
682
 
361
683
  .di-detailsBody {
362
684
  margin-top: 6px;
363
- padding: 8px 10px;
364
- border-radius: 10px;
365
- border: 1px solid rgba(255,255,255,0.10);
366
- background: rgba(0,0,0,0.22);
685
+ padding: 10px 12px;
686
+ border-radius: var(--di-radius-md);
687
+ border: 1px solid var(--di-border);
688
+ background: var(--di-bg-elev);
367
689
  }
368
690
 
369
691
  .di-netBodyText {
370
- font: 12px ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
692
+ font-family: var(--di-font-mono);
693
+ font-size: 12px;
371
694
  white-space: pre-wrap;
372
695
  word-break: break-word;
373
- opacity: 0.95;
696
+ color: var(--di-text);
374
697
  }
375
698
 
376
699
  .di-jsonRoot {
377
- font: 12px ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
700
+ font-family: var(--di-font-mono);
701
+ font-size: 12px;
378
702
  white-space: pre-wrap;
379
703
  word-break: break-word;
704
+ color: var(--di-text);
380
705
  }
381
706
 
382
707
  .di-jsonNode {
@@ -386,7 +711,7 @@ exports.PANEL_CSS = `
386
711
  .di-jsonSummary {
387
712
  cursor: pointer;
388
713
  user-select: none;
389
- opacity: 0.95;
714
+ color: var(--di-text);
390
715
  }
391
716
 
392
717
  .di-jsonBody {
@@ -404,16 +729,80 @@ exports.PANEL_CSS = `
404
729
  }
405
730
 
406
731
  .di-jsonKey {
407
- opacity: 0.85;
408
- color: rgba(255,255,255,0.78);
732
+ color: var(--di-accent);
409
733
  }
410
734
 
411
735
  .di-jsonValue {
412
- opacity: 0.95;
413
- color: rgba(255,255,255,0.92);
736
+ color: var(--di-text);
414
737
  }
415
738
 
416
739
  .di-jsonMore, .di-jsonTrunc {
417
- opacity: 0.75;
740
+ color: var(--di-text-faint);
741
+ }
742
+
743
+ .di-jumpBtn {
744
+ position: absolute;
745
+ right: 14px;
746
+ bottom: 14px;
747
+ display: inline-flex;
748
+ align-items: center;
749
+ gap: 6px;
750
+ border: 1px solid var(--di-border-strong);
751
+ background: var(--di-bg);
752
+ color: var(--di-text);
753
+ font-family: var(--di-font);
754
+ font-size: 12px;
755
+ font-weight: 500;
756
+ padding: 6px 12px 6px 10px;
757
+ border-radius: var(--di-radius-pill);
758
+ cursor: pointer;
759
+ box-shadow: var(--di-shadow);
760
+ opacity: 0;
761
+ transform: translateY(6px);
762
+ pointer-events: none;
763
+ transition: opacity 160ms ease, transform 160ms ease, background 160ms ease, color 160ms ease, border-color 160ms ease;
764
+ }
765
+
766
+ .di-jumpBtn--visible {
767
+ opacity: 1;
768
+ transform: translateY(0);
769
+ pointer-events: auto;
770
+ }
771
+
772
+ .di-jumpBtn--hasNew {
773
+ background: var(--di-accent);
774
+ border-color: var(--di-accent);
775
+ color: var(--di-text-on-accent);
776
+ }
777
+
778
+ .di-jumpBtn--hasNew:hover {
779
+ background: var(--di-accent-hover);
780
+ border-color: var(--di-accent-hover);
781
+ }
782
+
783
+ .di-jumpBtn:hover {
784
+ background: var(--di-bg-soft);
785
+ }
786
+
787
+ .di-jumpBtn:focus-visible {
788
+ outline: none;
789
+ box-shadow: var(--di-ring);
790
+ }
791
+
792
+ .di-jumpBtnIcon {
793
+ display: inline-flex;
794
+ align-items: center;
795
+ justify-content: center;
796
+ }
797
+
798
+ .di-jumpBtnIcon svg {
799
+ width: 14px;
800
+ height: 14px;
801
+ display: block;
802
+ }
803
+
804
+ .di-jumpBtnLabel {
805
+ font-weight: 600;
806
+ letter-spacing: -0.01em;
418
807
  }
419
808
  `;