dev-inspector 1.0.4 → 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 (86) 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/logger/networkLogger.js +41 -11
  17. package/lib/storage/localStorage.d.ts +30 -0
  18. package/lib/storage/localStorage.js +166 -0
  19. package/lib/ui/logList/createLogList.d.ts +2 -0
  20. package/lib/ui/logList/createLogList.js +67 -0
  21. package/lib/ui/logList/index.d.ts +2 -0
  22. package/lib/ui/logList/index.js +5 -0
  23. package/lib/ui/logList/networkDetails/copy.d.ts +2 -0
  24. package/lib/ui/logList/networkDetails/copy.js +101 -0
  25. package/lib/ui/logList/{networkDetails.d.ts → networkDetails/createNetworkDetails.d.ts} +1 -1
  26. package/lib/ui/logList/networkDetails/createNetworkDetails.js +61 -0
  27. package/lib/ui/logList/networkDetails/index.d.ts +1 -0
  28. package/lib/ui/logList/networkDetails/index.js +5 -0
  29. package/lib/ui/logList/networkDetails/renderValue.d.ts +2 -0
  30. package/lib/ui/logList/{networkDetails.js → networkDetails/renderValue.js} +32 -32
  31. package/lib/ui/logList/shared/consoleInspect.d.ts +1 -0
  32. package/lib/ui/logList/shared/consoleInspect.js +17 -0
  33. package/lib/ui/logList/shared/index.d.ts +3 -0
  34. package/lib/ui/logList/shared/index.js +11 -0
  35. package/lib/ui/logList/shared/time.d.ts +1 -0
  36. package/lib/ui/logList/shared/time.js +10 -0
  37. package/lib/ui/logList/shared/tone.d.ts +6 -0
  38. package/lib/ui/logList/shared/tone.js +36 -0
  39. package/lib/ui/logList/types.d.ts +6 -0
  40. package/lib/ui/logList/types.js +2 -0
  41. package/lib/ui/panel/behavior/setupPanelBehavior.d.ts +4 -1
  42. package/lib/ui/panel/behavior/setupPanelBehavior.js +48 -1
  43. package/lib/ui/panel/bindings/bindStorageToPanelView.d.ts +2 -0
  44. package/lib/ui/panel/bindings/bindStorageToPanelView.js +50 -6
  45. package/lib/ui/panel/bindings/matchesQuery.d.ts +2 -0
  46. package/lib/ui/panel/bindings/matchesQuery.js +54 -0
  47. package/lib/ui/panel/bindings/types.d.ts +2 -0
  48. package/lib/ui/panel/dom/buildPanelDOM.js +65 -6
  49. package/lib/ui/panel/dom/constants.d.ts +5 -1
  50. package/lib/ui/panel/dom/constants.js +35 -20
  51. package/lib/ui/panel/dom/types.d.ts +6 -0
  52. package/lib/ui/panel/index.d.ts +4 -0
  53. package/lib/ui/panel/index.js +8 -3
  54. package/lib/ui/panel/integrations/icons.d.ts +1 -0
  55. package/lib/ui/panel/integrations/icons.js +7 -0
  56. package/lib/ui/panel/integrations/index.d.ts +1 -0
  57. package/lib/ui/panel/integrations/index.js +5 -0
  58. package/lib/ui/panel/integrations/jiraDialog.d.ts +6 -0
  59. package/lib/ui/panel/integrations/jiraDialog.js +234 -0
  60. package/lib/ui/panel/integrations/screenshot.d.ts +4 -0
  61. package/lib/ui/panel/integrations/screenshot.js +51 -0
  62. package/lib/ui/panel/localStorage/createLocalStorageView.d.ts +4 -0
  63. package/lib/ui/panel/localStorage/createLocalStorageView.js +108 -0
  64. package/lib/ui/panel/localStorage/index.d.ts +3 -0
  65. package/lib/ui/panel/localStorage/index.js +7 -0
  66. package/lib/ui/panel/localStorage/setupLocalStorageSync.d.ts +9 -0
  67. package/lib/ui/panel/localStorage/setupLocalStorageSync.js +30 -0
  68. package/lib/ui/panel/localStorage/types.d.ts +6 -0
  69. package/lib/ui/panel/localStorage/types.js +2 -0
  70. package/lib/ui/panel/state/createPanelState.d.ts +2 -1
  71. package/lib/ui/panel/state/createPanelState.js +5 -1
  72. package/lib/ui/panel/state/types.d.ts +5 -0
  73. package/lib/ui/panel/theme/applyTheme.d.ts +2 -0
  74. package/lib/ui/panel/theme/applyTheme.js +6 -0
  75. package/lib/ui/panel/theme/index.d.ts +3 -0
  76. package/lib/ui/panel/theme/index.js +9 -0
  77. package/lib/ui/panel/theme/storage.d.ts +4 -0
  78. package/lib/ui/panel/theme/storage.js +45 -0
  79. package/lib/ui/panel/theme/types.d.ts +6 -0
  80. package/lib/ui/panel/theme/types.js +2 -0
  81. package/lib/ui/panelStyles.d.ts +1 -1
  82. package/lib/ui/panelStyles.js +557 -116
  83. package/lib/ui/shared/copy.d.ts +2 -0
  84. package/lib/ui/shared/copy.js +101 -0
  85. package/lib/utils/types.d.ts +3 -0
  86. package/package.json +1 -1
@@ -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;
208
394
  line-height: 1;
209
395
  }
210
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;
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;
484
+ }
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,45 +591,117 @@ 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;
292
602
  }
293
603
 
294
- .di-detailsBody {
295
- margin-top: 6px;
296
- padding: 8px 10px;
297
- border-radius: 10px;
298
- border: 1px solid rgba(255,255,255,0.10);
299
- background: rgba(0,0,0,0.22);
604
+ .di-detailsSummary:hover {
605
+ background: var(--di-bg-soft);
606
+ color: var(--di-text);
607
+ }
608
+
609
+ .di-netBodyDetails {
610
+ border: 0;
611
+ border-radius: 0;
612
+ background: transparent;
613
+ overflow: visible;
614
+ }
615
+
616
+ .di-netBodyDetails > summary.di-netDetailsSummary:hover {
617
+ background: var(--di-bg-soft);
618
+ }
619
+
620
+ .di-netBodyDetails[open] > summary.di-netDetailsSummary {
621
+ background: var(--di-bg-soft);
622
+ border-bottom: 0;
300
623
  }
301
624
 
302
- .di-netBodies {
625
+ .di-netBodyDetails[open] > .di-detailsBody {
626
+ margin-top: 1px;
627
+ }
628
+
629
+ .di-netDetailsWrap {
303
630
  display: grid;
631
+ gap: 1px;
632
+ }
633
+
634
+ .di-netDetailsSummary {
635
+ display: flex;
636
+ align-items: center;
304
637
  gap: 10px;
638
+ padding: 4px 6px;
639
+ border-radius: var(--di-radius-sm);
305
640
  }
306
641
 
307
- .di-netBodySection {
308
- display: grid;
309
- gap: 6px;
642
+ .di-netDetailsTitle {
643
+ font-family: var(--di-font-mono);
644
+ font-size: 12px;
645
+ color: var(--di-text);
310
646
  }
311
647
 
312
- .di-netBodyLabel {
313
- font: 11px ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
314
- opacity: 0.85;
648
+ .di-copyBtn {
649
+ margin-left: auto;
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);
658
+ cursor: pointer;
659
+ transition: background 160ms ease, color 160ms ease, border-color 160ms ease;
660
+ }
661
+
662
+ .di-copyBtn:hover {
663
+ background: var(--di-bg-soft);
664
+ border-color: var(--di-border-strong);
665
+ color: var(--di-text);
666
+ }
667
+
668
+ .di-copyBtn:active {
669
+ transform: translateY(1px);
670
+ }
671
+
672
+ .di-netTrunc {
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);
677
+ padding: 8px 10px;
678
+ font-family: var(--di-font-mono);
679
+ font-size: 11px;
680
+ margin-bottom: 8px;
681
+ }
682
+
683
+ .di-detailsBody {
684
+ margin-top: 6px;
685
+ padding: 10px 12px;
686
+ border-radius: var(--di-radius-md);
687
+ border: 1px solid var(--di-border);
688
+ background: var(--di-bg-elev);
315
689
  }
316
690
 
317
691
  .di-netBodyText {
318
- 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;
319
694
  white-space: pre-wrap;
320
695
  word-break: break-word;
321
- opacity: 0.95;
696
+ color: var(--di-text);
322
697
  }
323
698
 
324
699
  .di-jsonRoot {
325
- 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;
326
702
  white-space: pre-wrap;
327
703
  word-break: break-word;
704
+ color: var(--di-text);
328
705
  }
329
706
 
330
707
  .di-jsonNode {
@@ -334,7 +711,7 @@ exports.PANEL_CSS = `
334
711
  .di-jsonSummary {
335
712
  cursor: pointer;
336
713
  user-select: none;
337
- opacity: 0.95;
714
+ color: var(--di-text);
338
715
  }
339
716
 
340
717
  .di-jsonBody {
@@ -352,16 +729,80 @@ exports.PANEL_CSS = `
352
729
  }
353
730
 
354
731
  .di-jsonKey {
355
- opacity: 0.85;
356
- color: rgba(255,255,255,0.78);
732
+ color: var(--di-accent);
357
733
  }
358
734
 
359
735
  .di-jsonValue {
360
- opacity: 0.95;
361
- color: rgba(255,255,255,0.92);
736
+ color: var(--di-text);
362
737
  }
363
738
 
364
739
  .di-jsonMore, .di-jsonTrunc {
365
- 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;
366
807
  }
367
808
  `;