@tonyclaw/agent-inspector 3.0.23 → 3.0.25

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 (49) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/{CompareDrawer-CFedvZHU.js → CompareDrawer-BnvOPwpe.js} +1 -1
  3. package/.output/public/assets/ProxyViewerContainer-DcqFqo1m.js +127 -0
  4. package/.output/public/assets/{ReplayDialog-X-fRSKAu.js → ReplayDialog-BJgoQWdW.js} +1 -1
  5. package/.output/public/assets/{RequestAnatomy-S8qB5nVg.js → RequestAnatomy-CpBZEHnM.js} +1 -1
  6. package/.output/public/assets/{ResponseView-_rcOWSwJ.js → ResponseView-CWmyRb2M.js} +2 -2
  7. package/.output/public/assets/{StreamingChunkSequence-Bc15AVpN.js → StreamingChunkSequence-BWhC8bwx.js} +1 -1
  8. package/.output/public/assets/{_sessionId-Cz-HW2Wf.js → _sessionId-Cq-2OqUU.js} +1 -1
  9. package/.output/public/assets/{index-CEgwWY3E.js → index-BKi9IRtV.js} +71 -7
  10. package/.output/public/assets/index-BMYuDL5X.css +1 -0
  11. package/.output/public/assets/{index-CXYBU0j8.js → index-Cf8O0Oos.js} +1 -1
  12. package/.output/public/assets/{index-ClKXooQd.js → index-DdgTJ4QJ.js} +1 -1
  13. package/.output/public/assets/{json-viewer-QfU4qGdd.js → json-viewer-Bqu_4hmm.js} +1 -1
  14. package/.output/server/_libs/lucide-react.mjs +306 -246
  15. package/.output/server/{_sessionId-9FAmYZVf.mjs → _sessionId-Ba7H3Gjw.mjs} +2 -2
  16. package/.output/server/_ssr/{CompareDrawer-BLKjOzwD.mjs → CompareDrawer-aH59Ab6x.mjs} +3 -3
  17. package/.output/server/_ssr/{ProxyViewerContainer-Dcs2Mq8l.mjs → ProxyViewerContainer-By-I0tJv.mjs} +1791 -1259
  18. package/.output/server/_ssr/{ReplayDialog-oyiF4LIo.mjs → ReplayDialog-BO4Vy0et.mjs} +4 -4
  19. package/.output/server/_ssr/{RequestAnatomy-DkyQXSuj.mjs → RequestAnatomy-FtOr7vSS.mjs} +3 -3
  20. package/.output/server/_ssr/{ResponseView-3NTDEiDh.mjs → ResponseView-cvw6ajue.mjs} +3 -3
  21. package/.output/server/_ssr/{StreamingChunkSequence-DRq-5Bgn.mjs → StreamingChunkSequence-Oc8S2kD6.mjs} +3 -3
  22. package/.output/server/_ssr/{index-dtMiNUa1.mjs → index-BDRlQheR.mjs} +2 -2
  23. package/.output/server/_ssr/index.mjs +2 -2
  24. package/.output/server/_ssr/{json-viewer-BhUwicvp.mjs → json-viewer-Cd6trhQr.mjs} +3 -3
  25. package/.output/server/_ssr/{router-DO0OntUK.mjs → router-bofP-Ekl.mjs} +296 -91
  26. package/.output/server/{_tanstack-start-manifest_v-DO5v3BHY.mjs → _tanstack-start-manifest_v-BPuf86qB.mjs} +1 -1
  27. package/.output/server/index.mjs +76 -76
  28. package/package.json +3 -2
  29. package/src/components/ProxyViewer.tsx +138 -740
  30. package/src/components/ProxyViewerContainer.tsx +5 -47
  31. package/src/components/alerts/AlertsDialog.tsx +6 -2
  32. package/src/components/inspector-pet/InspectorPet.tsx +390 -0
  33. package/src/components/inspector-pet/inspectorPetLogic.ts +273 -0
  34. package/src/components/providers/ProviderCard.tsx +20 -579
  35. package/src/components/providers/ProviderTestResultsView.tsx +732 -0
  36. package/src/components/proxy-viewer/LogEntry.tsx +5 -0
  37. package/src/components/proxy-viewer/LogEntryHeader.tsx +7 -0
  38. package/src/components/proxy-viewer/ToolTraceEvents.tsx +33 -36
  39. package/src/components/proxy-viewer/TurnGroup.tsx +1 -5
  40. package/src/components/proxy-viewer/proxyViewerContainerLogic.ts +46 -0
  41. package/src/components/proxy-viewer/proxyViewerLogic.ts +469 -0
  42. package/src/lib/themeMode.ts +45 -0
  43. package/src/lib/uiScale.ts +112 -0
  44. package/src/lib/useThemeMode.ts +40 -0
  45. package/src/lib/useUiScale.ts +52 -0
  46. package/src/routes/__root.tsx +78 -1
  47. package/styles/globals.css +403 -24
  48. package/.output/public/assets/ProxyViewerContainer-BlCrBvdm.js +0 -127
  49. package/.output/public/assets/index-B_SIQ47i.css +0 -1
@@ -0,0 +1,52 @@
1
+ import { useCallback, useEffect, useState } from "react";
2
+ import {
3
+ applyUiScalePreference,
4
+ normalizeUiScalePreference,
5
+ persistUiScalePreference,
6
+ readStoredUiScalePreference,
7
+ UI_SCALE_STORAGE_KEY,
8
+ type UiScalePreference,
9
+ } from "./uiScale";
10
+
11
+ export function useUiScale(): {
12
+ uiScalePreference: UiScalePreference;
13
+ resolvedUiScale: number;
14
+ setUiScalePreference: (preference: UiScalePreference) => void;
15
+ } {
16
+ const [uiScalePreference, setUiScalePreferenceState] = useState<UiScalePreference>(
17
+ readStoredUiScalePreference,
18
+ );
19
+ const [resolvedUiScale, setResolvedUiScale] = useState(1);
20
+
21
+ const setUiScalePreference = useCallback((nextPreference: UiScalePreference) => {
22
+ setUiScalePreferenceState(nextPreference);
23
+ persistUiScalePreference(nextPreference);
24
+ setResolvedUiScale(applyUiScalePreference(nextPreference));
25
+ }, []);
26
+
27
+ useEffect(() => {
28
+ const refreshScale = (): void => {
29
+ setResolvedUiScale(applyUiScalePreference(uiScalePreference));
30
+ };
31
+
32
+ refreshScale();
33
+ if (uiScalePreference !== "auto") return;
34
+
35
+ window.addEventListener("resize", refreshScale);
36
+ return () => window.removeEventListener("resize", refreshScale);
37
+ }, [uiScalePreference]);
38
+
39
+ useEffect(() => {
40
+ const handleStorage = (event: StorageEvent): void => {
41
+ if (event.key !== UI_SCALE_STORAGE_KEY) return;
42
+ const nextPreference = normalizeUiScalePreference(event.newValue);
43
+ setUiScalePreferenceState(nextPreference);
44
+ setResolvedUiScale(applyUiScalePreference(nextPreference));
45
+ };
46
+
47
+ window.addEventListener("storage", handleStorage);
48
+ return () => window.removeEventListener("storage", handleStorage);
49
+ }, []);
50
+
51
+ return { uiScalePreference, resolvedUiScale, setUiScalePreference };
52
+ }
@@ -5,6 +5,81 @@ import { SWRConfig } from "swr";
5
5
  import faviconSvg from "../assets/favicon.svg?url";
6
6
  import appCss from "../index.css?url";
7
7
  import { installChunkLoadRecovery } from "../lib/chunkLoadRecovery";
8
+ import { THEME_MODE_STORAGE_KEY } from "../lib/themeMode";
9
+ import {
10
+ UI_SCALE_AUTO_LARGE_WIDTH,
11
+ UI_SCALE_AUTO_MAX_DPR,
12
+ UI_SCALE_AUTO_MEDIUM_WIDTH,
13
+ UI_SCALE_STORAGE_KEY,
14
+ } from "../lib/uiScale";
15
+
16
+ const themeModeBootstrapScript = `
17
+ (function () {
18
+ try {
19
+ var storedThemeMode = window.localStorage.getItem("${THEME_MODE_STORAGE_KEY}");
20
+ var themeMode = storedThemeMode === "light" || storedThemeMode === "eye-care"
21
+ ? storedThemeMode
22
+ : "dark";
23
+ var root = document.documentElement;
24
+ root.classList.toggle("dark", themeMode === "dark");
25
+ root.classList.toggle("eye-care", themeMode === "eye-care");
26
+ root.dataset.theme = themeMode;
27
+ root.style.colorScheme = themeMode === "dark" ? "dark" : "light";
28
+ } catch (error) {
29
+ document.documentElement.classList.add("dark");
30
+ document.documentElement.classList.remove("eye-care");
31
+ document.documentElement.dataset.theme = "dark";
32
+ document.documentElement.style.colorScheme = "dark";
33
+ }
34
+ })();
35
+ `;
36
+
37
+ const uiScaleBootstrapScript = `
38
+ (function () {
39
+ try {
40
+ var storedUiScale = window.localStorage.getItem("${UI_SCALE_STORAGE_KEY}");
41
+ var uiScalePreference = storedUiScale === "100" || storedUiScale === "125" || storedUiScale === "150"
42
+ ? storedUiScale
43
+ : "auto";
44
+ var resolvedUiScale = 1;
45
+ if (uiScalePreference === "125") resolvedUiScale = 1.25;
46
+ if (uiScalePreference === "150") resolvedUiScale = 1.5;
47
+ if (uiScalePreference === "auto") {
48
+ var viewportWidth = Number.isFinite(window.innerWidth) && window.innerWidth > 0
49
+ ? window.innerWidth
50
+ : 1280;
51
+ var rawScreenWidth = typeof window.screen === "undefined"
52
+ ? viewportWidth
53
+ : window.screen.availWidth;
54
+ var screenWidth = Number.isFinite(rawScreenWidth) && rawScreenWidth > 0
55
+ ? rawScreenWidth
56
+ : viewportWidth;
57
+ var rawDevicePixelRatio = window.devicePixelRatio;
58
+ var devicePixelRatio = Number.isFinite(rawDevicePixelRatio) && rawDevicePixelRatio > 0
59
+ ? rawDevicePixelRatio
60
+ : 1;
61
+ var availableWidth = Math.min(viewportWidth, screenWidth);
62
+ if (devicePixelRatio <= ${String(UI_SCALE_AUTO_MAX_DPR)} && availableWidth >= ${String(UI_SCALE_AUTO_LARGE_WIDTH)}) {
63
+ resolvedUiScale = 1.25;
64
+ } else if (devicePixelRatio <= ${String(UI_SCALE_AUTO_MAX_DPR)} && availableWidth >= ${String(UI_SCALE_AUTO_MEDIUM_WIDTH)}) {
65
+ resolvedUiScale = 1.125;
66
+ }
67
+ }
68
+ var root = document.documentElement;
69
+ root.dataset.uiScale = uiScalePreference;
70
+ root.dataset.uiScaleResolved = String(Math.round(resolvedUiScale * 100));
71
+ root.style.setProperty("--inspector-ui-scale", String(resolvedUiScale));
72
+ root.style.setProperty("--inspector-root-font-size", String(16 * resolvedUiScale) + "px");
73
+ root.style.setProperty("--inspector-font-9", String(9 * resolvedUiScale) + "px");
74
+ root.style.setProperty("--inspector-font-10", String(10 * resolvedUiScale) + "px");
75
+ root.style.setProperty("--inspector-font-11", String(11 * resolvedUiScale) + "px");
76
+ root.style.setProperty("--inspector-font-13", String(13 * resolvedUiScale) + "px");
77
+ } catch (error) {
78
+ document.documentElement.dataset.uiScale = "auto";
79
+ document.documentElement.dataset.uiScaleResolved = "100";
80
+ }
81
+ })();
82
+ `;
8
83
 
9
84
  export const Route = createRootRoute({
10
85
  head: () => ({
@@ -60,8 +135,10 @@ function RootNotFoundComponent() {
60
135
 
61
136
  function RootDocument({ children }: Readonly<{ children: ReactNode }>) {
62
137
  return (
63
- <html lang="en" className="dark" suppressHydrationWarning={true}>
138
+ <html lang="en" className="dark" data-theme="dark" suppressHydrationWarning={true}>
64
139
  <head>
140
+ <script dangerouslySetInnerHTML={{ __html: themeModeBootstrapScript }} />
141
+ <script dangerouslySetInnerHTML={{ __html: uiScaleBootstrapScript }} />
65
142
  <HeadContent />
66
143
  </head>
67
144
  <body suppressHydrationWarning={true}>
@@ -3,6 +3,7 @@
3
3
  @plugin "@tailwindcss/typography";
4
4
 
5
5
  @custom-variant dark (&:is(.dark *));
6
+ @custom-variant eye-care (&:is(.eye-care *));
6
7
 
7
8
  @theme inline {
8
9
  --color-background: var(--background);
@@ -50,37 +51,51 @@
50
51
 
51
52
  :root {
52
53
  --radius: 0.625rem;
53
- --background: oklch(1 0 0);
54
- --foreground: oklch(0.145 0 0);
55
- --card: oklch(1 0 0);
56
- --card-foreground: oklch(0.145 0 0);
54
+ --inspector-ui-scale: 1;
55
+ --inspector-root-font-size: 16px;
56
+ --inspector-font-9: 9px;
57
+ --inspector-font-10: 10px;
58
+ --inspector-font-11: 11px;
59
+ --inspector-font-13: 13px;
60
+ --inspector-surface-low: color-mix(in oklch, var(--foreground) 3.5%, transparent);
61
+ --inspector-surface-medium: color-mix(in oklch, var(--foreground) 6%, transparent);
62
+ --inspector-status-cool: oklch(0.42 0.12 225);
63
+ --inspector-status-info: oklch(0.42 0.15 265);
64
+ --inspector-status-success: oklch(0.4 0.11 158);
65
+ --inspector-status-watch: oklch(0.42 0.12 65);
66
+ --inspector-status-danger: oklch(0.44 0.18 25);
67
+ --inspector-status-accent: oklch(0.42 0.14 295);
68
+ --background: oklch(0.976 0.004 250);
69
+ --foreground: oklch(0.18 0.012 255);
70
+ --card: oklch(0.995 0.002 250);
71
+ --card-foreground: oklch(0.18 0.012 255);
57
72
  --popover: oklch(1 0 0);
58
- --popover-foreground: oklch(0.145 0 0);
59
- --primary: oklch(0.205 0 0);
73
+ --popover-foreground: oklch(0.18 0.012 255);
74
+ --primary: oklch(0.27 0.018 255);
60
75
  --primary-foreground: oklch(0.985 0 0);
61
- --secondary: oklch(0.97 0 0);
62
- --secondary-foreground: oklch(0.205 0 0);
63
- --muted: oklch(0.97 0 0);
64
- --muted-foreground: oklch(0.556 0 0);
65
- --accent: oklch(0.97 0 0);
66
- --accent-foreground: oklch(0.205 0 0);
67
- --destructive: oklch(0.577 0.245 27.325);
68
- --border: oklch(0.922 0 0);
69
- --input: oklch(0.922 0 0);
70
- --ring: oklch(0.708 0 0);
76
+ --secondary: oklch(0.935 0.007 250);
77
+ --secondary-foreground: oklch(0.24 0.018 255);
78
+ --muted: oklch(0.925 0.006 250);
79
+ --muted-foreground: oklch(0.46 0.018 255);
80
+ --accent: oklch(0.91 0.018 235);
81
+ --accent-foreground: oklch(0.24 0.035 240);
82
+ --destructive: oklch(0.5 0.2 27);
83
+ --border: oklch(0.85 0.01 250);
84
+ --input: oklch(0.78 0.015 250);
85
+ --ring: oklch(0.48 0.11 230);
71
86
  --chart-1: oklch(0.646 0.222 41.116);
72
87
  --chart-2: oklch(0.6 0.118 184.704);
73
88
  --chart-3: oklch(0.398 0.07 227.392);
74
89
  --chart-4: oklch(0.828 0.189 84.429);
75
90
  --chart-5: oklch(0.769 0.188 70.08);
76
- --sidebar: oklch(0.985 0 0);
77
- --sidebar-foreground: oklch(0.145 0 0);
78
- --sidebar-primary: oklch(0.205 0 0);
91
+ --sidebar: oklch(0.955 0.006 250);
92
+ --sidebar-foreground: oklch(0.18 0.012 255);
93
+ --sidebar-primary: oklch(0.27 0.018 255);
79
94
  --sidebar-primary-foreground: oklch(0.985 0 0);
80
- --sidebar-accent: oklch(0.97 0 0);
81
- --sidebar-accent-foreground: oklch(0.205 0 0);
82
- --sidebar-border: oklch(0.922 0 0);
83
- --sidebar-ring: oklch(0.708 0 0);
95
+ --sidebar-accent: oklch(0.91 0.018 235);
96
+ --sidebar-accent-foreground: oklch(0.24 0.035 240);
97
+ --sidebar-border: oklch(0.85 0.01 250);
98
+ --sidebar-ring: oklch(0.48 0.11 230);
84
99
  }
85
100
 
86
101
  .dark {
@@ -117,6 +132,46 @@
117
132
  --sidebar-ring: oklch(0.556 0 0);
118
133
  }
119
134
 
135
+ .eye-care {
136
+ --inspector-status-cool: oklch(0.38 0.08 195);
137
+ --inspector-status-info: oklch(0.4 0.12 270);
138
+ --inspector-status-success: oklch(0.36 0.1 155);
139
+ --inspector-status-watch: oklch(0.39 0.1 65);
140
+ --inspector-status-danger: oklch(0.41 0.16 25);
141
+ --inspector-status-accent: oklch(0.4 0.12 295);
142
+ --background: oklch(0.932 0.018 135);
143
+ --foreground: oklch(0.22 0.03 150);
144
+ --card: oklch(0.975 0.012 132);
145
+ --card-foreground: oklch(0.22 0.03 150);
146
+ --popover: oklch(0.985 0.01 132);
147
+ --popover-foreground: oklch(0.22 0.03 150);
148
+ --primary: oklch(0.36 0.09 154);
149
+ --primary-foreground: oklch(0.985 0.006 125);
150
+ --secondary: oklch(0.875 0.028 135);
151
+ --secondary-foreground: oklch(0.26 0.04 150);
152
+ --muted: oklch(0.885 0.022 132);
153
+ --muted-foreground: oklch(0.4 0.04 150);
154
+ --accent: oklch(0.84 0.045 148);
155
+ --accent-foreground: oklch(0.25 0.055 151);
156
+ --destructive: oklch(0.47 0.17 28);
157
+ --border: oklch(0.76 0.028 132);
158
+ --input: oklch(0.7 0.034 132);
159
+ --ring: oklch(0.42 0.1 154);
160
+ --chart-1: oklch(0.49 0.11 153);
161
+ --chart-2: oklch(0.55 0.1 226);
162
+ --chart-3: oklch(0.67 0.13 77);
163
+ --chart-4: oklch(0.56 0.11 307);
164
+ --chart-5: oklch(0.58 0.15 25);
165
+ --sidebar: oklch(0.9 0.024 135);
166
+ --sidebar-foreground: oklch(0.22 0.03 150);
167
+ --sidebar-primary: oklch(0.36 0.09 154);
168
+ --sidebar-primary-foreground: oklch(0.985 0.006 125);
169
+ --sidebar-accent: oklch(0.84 0.045 148);
170
+ --sidebar-accent-foreground: oklch(0.25 0.055 151);
171
+ --sidebar-border: oklch(0.76 0.028 132);
172
+ --sidebar-ring: oklch(0.42 0.1 154);
173
+ }
174
+
120
175
  @keyframes crab-crawl-down {
121
176
  0%, 100% {
122
177
  transform: translateY(0px);
@@ -195,12 +250,80 @@
195
250
  }
196
251
  }
197
252
 
253
+ @keyframes inspector-pet-watch {
254
+ 0%,
255
+ 100% {
256
+ filter: brightness(1);
257
+ }
258
+ 50% {
259
+ filter: brightness(1.16) drop-shadow(0 0 8px rgb(34 211 238 / 0.22));
260
+ }
261
+ }
262
+
263
+ @keyframes inspector-pet-attention {
264
+ 0%,
265
+ 82%,
266
+ 100% {
267
+ transform: rotate(0deg);
268
+ }
269
+ 88% {
270
+ transform: rotate(-4deg);
271
+ }
272
+ 94% {
273
+ transform: rotate(4deg);
274
+ }
275
+ }
276
+
277
+ @keyframes inspector-pet-sleep {
278
+ 0%,
279
+ 100% {
280
+ opacity: 0.72;
281
+ transform: translateY(0) scale(0.98);
282
+ }
283
+ 50% {
284
+ opacity: 0.9;
285
+ transform: translateY(1px) scale(1);
286
+ }
287
+ }
288
+
289
+ @keyframes inspector-pet-pat {
290
+ 0%,
291
+ 100% {
292
+ transform: translateY(0) rotate(0deg) scale(1);
293
+ }
294
+ 45% {
295
+ transform: translateY(-5px) rotate(4deg) scale(1.08);
296
+ }
297
+ 72% {
298
+ transform: translateY(1px) rotate(-2deg) scale(1.02);
299
+ }
300
+ }
301
+
302
+ @keyframes inspector-pet-heart {
303
+ 0% {
304
+ opacity: 0;
305
+ transform: translateY(3px) scale(0.65);
306
+ }
307
+ 35% {
308
+ opacity: 1;
309
+ }
310
+ 100% {
311
+ opacity: 0;
312
+ transform: translateY(-11px) scale(1.05);
313
+ }
314
+ }
315
+
198
316
  @media (prefers-reduced-motion: reduce) {
199
317
  .animate-crab-piano-pop {
200
318
  animation: none !important;
201
319
  }
202
320
  .floating-crab-body,
203
- .floating-crab-leg {
321
+ .floating-crab-leg,
322
+ .inspector-pet-active,
323
+ .inspector-pet-attention,
324
+ .inspector-pet-sleeping,
325
+ .inspector-pet-patted,
326
+ .inspector-pet-heart {
204
327
  animation: none !important;
205
328
  }
206
329
  }
@@ -217,6 +340,7 @@
217
340
  @apply border-border outline-ring/50;
218
341
  }
219
342
  html {
343
+ font-size: var(--inspector-root-font-size);
220
344
  scrollbar-color: color-mix(in srgb, var(--muted-foreground) 32%, transparent) transparent;
221
345
  scrollbar-width: thin;
222
346
  }
@@ -239,6 +363,22 @@
239
363
  }
240
364
 
241
365
  @layer utilities {
366
+ [class~="text-[9px]"] {
367
+ font-size: var(--inspector-font-9);
368
+ }
369
+
370
+ [class~="text-[10px]"] {
371
+ font-size: var(--inspector-font-10);
372
+ }
373
+
374
+ [class~="text-[11px]"] {
375
+ font-size: var(--inspector-font-11);
376
+ }
377
+
378
+ [class~="text-[13px]"] {
379
+ font-size: var(--inspector-font-13);
380
+ }
381
+
242
382
  .floating-crab-body {
243
383
  animation: var(--animate-crab-short-leg-body);
244
384
  transform-origin: 50% 74%;
@@ -259,6 +399,35 @@
259
399
  --crab-leg-step: -14deg;
260
400
  }
261
401
 
402
+ .inspector-pet-active {
403
+ animation: inspector-pet-watch 1.25s ease-in-out infinite;
404
+ }
405
+
406
+ .inspector-pet-attention {
407
+ animation: inspector-pet-attention 2.4s ease-in-out infinite;
408
+ }
409
+
410
+ .inspector-pet-sleeping {
411
+ animation: inspector-pet-sleep 3.6s ease-in-out infinite;
412
+ }
413
+
414
+ .inspector-pet-patted {
415
+ animation: inspector-pet-pat 720ms cubic-bezier(0.34, 1.56, 0.64, 1);
416
+ }
417
+
418
+ .inspector-pet-heart {
419
+ animation: inspector-pet-heart 720ms ease-out forwards;
420
+ }
421
+
422
+ [data-pet-mood="active"] .floating-crab-leg {
423
+ animation-duration: 260ms;
424
+ }
425
+
426
+ [data-pet-mood="sleeping"] .floating-crab-leg {
427
+ animation-duration: 1.8s;
428
+ opacity: 0.3;
429
+ }
430
+
262
431
  .inspector-scrollbar {
263
432
  scrollbar-color: color-mix(in srgb, var(--muted-foreground) 32%, transparent) transparent;
264
433
  scrollbar-width: thin;
@@ -284,4 +453,214 @@
284
453
  background: color-mix(in srgb, var(--muted-foreground) 42%, transparent);
285
454
  background-clip: content-box;
286
455
  }
456
+
457
+ /* Legacy surfaces were tuned against a dark canvas. Keep them theme-aware while
458
+ components migrate to semantic color utilities. */
459
+ :root:not(.dark)
460
+ :is(
461
+ [class~="bg-white/[0.008]"],
462
+ [class~="bg-white/[0.025]"],
463
+ [class~="bg-white/[0.028]"],
464
+ [class~="bg-white/[0.03]"],
465
+ [class~="bg-white/[0.035]"],
466
+ [class~="bg-white/[0.04]"],
467
+ [class~="bg-white/[0.045]"]
468
+ ) {
469
+ background-color: var(--inspector-surface-low);
470
+ }
471
+
472
+ :root:not(.dark)
473
+ :is(
474
+ [class~="bg-white/[0.055]"],
475
+ [class~="bg-white/[0.06]"],
476
+ [class~="bg-white/[0.065]"],
477
+ [class~="bg-white/[0.07]"],
478
+ [class~="bg-white/[0.075]"],
479
+ [class~="bg-white/10"],
480
+ [class~="bg-black/[0.10]"],
481
+ [class~="bg-black/[0.14]"],
482
+ [class~="bg-black/[0.16]"],
483
+ [class~="bg-black/[0.18]"],
484
+ [class~="bg-black/10"],
485
+ [class~="bg-black/15"],
486
+ [class~="bg-black/20"],
487
+ [class~="bg-black/25"],
488
+ [class~="bg-black/30"],
489
+ [class~="bg-black/40"]
490
+ ) {
491
+ background-color: var(--inspector-surface-medium);
492
+ }
493
+
494
+ :root:not(.dark)
495
+ :is(
496
+ [class~="border-white/[0.045]"],
497
+ [class~="border-white/[0.055]"],
498
+ [class~="border-white/[0.08]"],
499
+ [class~="border-white/[0.16]"],
500
+ [class~="border-white/10"]
501
+ ) {
502
+ border-color: color-mix(in oklch, var(--foreground) 12%, transparent);
503
+ }
504
+
505
+ :root:not(.dark)
506
+ :is(
507
+ [class~="hover:bg-white/[0.03]"],
508
+ [class~="hover:bg-white/[0.035]"],
509
+ [class~="hover:bg-white/[0.04]"],
510
+ [class~="hover:bg-white/[0.045]"],
511
+ [class~="hover:bg-white/[0.06]"],
512
+ [class~="hover:bg-white/[0.065]"],
513
+ [class~="hover:bg-white/[0.07]"],
514
+ [class~="hover:bg-white/[0.075]"],
515
+ [class~="hover:bg-white/10"]
516
+ ):hover {
517
+ background-color: color-mix(in oklch, var(--foreground) 9%, transparent);
518
+ }
519
+
520
+ :root:not(.dark)
521
+ :is(
522
+ [class~="text-white/35"],
523
+ [class~="text-white/40"],
524
+ [class~="text-white/45"],
525
+ [class~="text-white/50"],
526
+ [class~="text-white/55"],
527
+ [class~="text-white/60"],
528
+ [class~="text-slate-300"]
529
+ ) {
530
+ color: var(--muted-foreground);
531
+ }
532
+
533
+ :root:not(.dark)
534
+ :is(
535
+ [class~="text-white/75"],
536
+ [class~="text-slate-50"],
537
+ [class~="text-slate-100"],
538
+ [class~="text-slate-200"],
539
+ [class~="text-zinc-50"],
540
+ [class~="text-zinc-100"]
541
+ ) {
542
+ color: var(--foreground);
543
+ }
544
+
545
+ :root:not(.dark) [class~="bg-zinc-950"] {
546
+ background-color: var(--popover);
547
+ }
548
+
549
+ :root:not(.dark) [class*="shadow-[inset_0_0_0_1px_rgba(255,255,255"] {
550
+ box-shadow: inset 0 0 0 1px color-mix(in oklch, var(--foreground) 10%, transparent) !important;
551
+ }
552
+
553
+ :root:not(.dark) [class*="shadow-[inset_0_1px_0_rgba(255,255,255"] {
554
+ box-shadow:
555
+ inset 0 1px 0 color-mix(in oklch, var(--foreground) 10%, transparent),
556
+ 0 8px 24px color-mix(in oklch, var(--foreground) 8%, transparent) !important;
557
+ }
558
+
559
+ :root:not(.dark)
560
+ :is(
561
+ [class~="text-cyan-100"],
562
+ [class~="text-cyan-100/70"],
563
+ [class~="text-cyan-100/75"],
564
+ [class~="text-cyan-200"],
565
+ [class~="text-cyan-200/75"],
566
+ [class~="text-cyan-200/80"],
567
+ [class~="text-cyan-300"],
568
+ [class~="text-cyan-400"],
569
+ [class~="text-sky-100"],
570
+ [class~="text-sky-200"],
571
+ [class~="text-sky-300"],
572
+ [class~="text-sky-300/70"],
573
+ [class~="text-sky-300/80"],
574
+ [class~="text-sky-400/65"],
575
+ [class~="text-sky-400/70"],
576
+ [class~="text-sky-400/80"]
577
+ ) {
578
+ color: var(--inspector-status-cool);
579
+ }
580
+
581
+ :root:not(.dark)
582
+ :is(
583
+ [class~="text-blue-300"],
584
+ [class~="text-blue-300/85"],
585
+ [class~="text-blue-400"],
586
+ [class~="text-blue-400/80"]
587
+ ) {
588
+ color: var(--inspector-status-info);
589
+ }
590
+
591
+ :root:not(.dark)
592
+ :is(
593
+ [class~="text-emerald-100"],
594
+ [class~="text-emerald-200"],
595
+ [class~="text-emerald-300"],
596
+ [class~="text-emerald-300/90"],
597
+ [class~="text-emerald-400"],
598
+ [class~="text-emerald-400/50"],
599
+ [class~="text-green-300"],
600
+ [class~="text-green-400"],
601
+ [class~="text-teal-300"]
602
+ ) {
603
+ color: var(--inspector-status-success);
604
+ }
605
+
606
+ :root:not(.dark)
607
+ :is(
608
+ [class~="text-amber-100"],
609
+ [class~="text-amber-100/90"],
610
+ [class~="text-amber-200"],
611
+ [class~="text-amber-300"],
612
+ [class~="text-amber-300/80"],
613
+ [class~="text-amber-400"],
614
+ [class~="text-amber-400/80"]
615
+ ) {
616
+ color: var(--inspector-status-watch);
617
+ }
618
+
619
+ :root:not(.dark)
620
+ :is(
621
+ [class~="text-red-100"],
622
+ [class~="text-red-200"],
623
+ [class~="text-red-200/80"],
624
+ [class~="text-red-300"],
625
+ [class~="text-red-400"],
626
+ [class~="text-rose-100"],
627
+ [class~="text-rose-300"],
628
+ [class~="text-rose-300/90"],
629
+ [class~="text-rose-400"]
630
+ ) {
631
+ color: var(--inspector-status-danger);
632
+ }
633
+
634
+ :root:not(.dark)
635
+ :is(
636
+ [class~="text-violet-100"],
637
+ [class~="text-violet-200"],
638
+ [class~="text-violet-300"],
639
+ [class~="text-purple-300"],
640
+ [class~="text-purple-400"],
641
+ [class~="text-purple-400/90"]
642
+ ) {
643
+ color: var(--inspector-status-accent);
644
+ }
645
+
646
+ :root:not(.dark)
647
+ :is(
648
+ [class~="hover:text-cyan-100"],
649
+ [class~="hover:text-cyan-200"],
650
+ [class~="hover:text-cyan-300"],
651
+ [class~="hover:text-sky-100"],
652
+ [class~="hover:text-sky-300"]
653
+ ):hover {
654
+ color: var(--inspector-status-cool);
655
+ }
656
+
657
+ :root:not(.dark)
658
+ :is(
659
+ [class~="text-amber-500"]:not(svg),
660
+ [class~="text-emerald-500"]:not(svg),
661
+ [class~="text-green-500"]:not(svg),
662
+ [class~="text-rose-500"]:not(svg)
663
+ ) {
664
+ color: var(--foreground);
665
+ }
287
666
  }