@tonyclaw/agent-inspector 3.0.41 → 3.0.43

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 (60) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/{CompareDrawer-D7CEZjaX.js → CompareDrawer-BAXxwTwT.js} +1 -1
  3. package/.output/public/assets/{InspectorPet-CZC5A3d3.js → InspectorPet-xYuGV4Qz.js} +167 -167
  4. package/.output/public/assets/ProxyViewerContainer-B6GZnUWi.js +126 -0
  5. package/.output/public/assets/{ReplayDialog-O7zJrccK.js → ReplayDialog-D73pyIg3.js} +1 -1
  6. package/.output/public/assets/{RequestAnatomy-DzJwNU_L.js → RequestAnatomy-CSDta_nu.js} +1 -1
  7. package/.output/public/assets/{ResponseView-NZExNRvM.js → ResponseView-C4aIUPby.js} +1 -1
  8. package/.output/public/assets/{StreamingChunkSequence-DXcrVPst.js → StreamingChunkSequence-D4xxosLx.js} +1 -1
  9. package/.output/public/assets/{_sessionId-BOAAnQhC.js → _sessionId-CZHbJyWO.js} +1 -1
  10. package/.output/public/assets/{_sessionId-B5lQVwmL.js → _sessionId-DvuNLzSE.js} +1 -1
  11. package/.output/public/assets/{index-BlSm4bqn.js → index-B17u7JMC.js} +16 -22
  12. package/.output/public/assets/index-BWjeqxbk.css +1 -0
  13. package/.output/public/assets/{index-DswDeL6m.js → index-C0g79BAs.js} +1 -1
  14. package/.output/public/assets/{index-zdDXZ8fd.js → index-CmEO8ykj.js} +1 -1
  15. package/.output/public/assets/{index-IpdII72q.js → index-DZ_wpqQM.js} +1 -1
  16. package/.output/public/assets/{json-viewer-C_vPvztu.js → json-viewer-CuWU-H6K.js} +1 -1
  17. package/.output/public/assets/{jszip.min-BLbXONM_.js → jszip.min-DPJI_UKW.js} +1 -1
  18. package/.output/server/{_sessionId-BDR3VoGL.mjs → _sessionId-CoFyeOti.mjs} +2 -2
  19. package/.output/server/{_sessionId-XMJZJjKn.mjs → _sessionId-Cun21KZF.mjs} +1 -1
  20. package/.output/server/_ssr/{CompareDrawer-Dc10NRP-.mjs → CompareDrawer-Bgc2TZh_.mjs} +2 -2
  21. package/.output/server/_ssr/{InspectorPet-bAbBl9xU.mjs → InspectorPet-DyK2ojeh.mjs} +20 -10
  22. package/.output/server/_ssr/{ProxyViewerContainer-C833zSld.mjs → ProxyViewerContainer-hvn6oVWD.mjs} +326 -235
  23. package/.output/server/_ssr/{ReplayDialog-irE6GkCe.mjs → ReplayDialog-KpnrGtZ-.mjs} +3 -3
  24. package/.output/server/_ssr/{RequestAnatomy-CCbfr4bA.mjs → RequestAnatomy-uCsfucn8.mjs} +2 -2
  25. package/.output/server/_ssr/{ResponseView-TE4dZ2zB.mjs → ResponseView-C8UPqoPO.mjs} +2 -2
  26. package/.output/server/_ssr/{StreamingChunkSequence-C3-k9wrY.mjs → StreamingChunkSequence-BP28I9sh.mjs} +2 -2
  27. package/.output/server/_ssr/{index-CQt9ZYRA.mjs → index-BVwVoQlZ.mjs} +1 -1
  28. package/.output/server/_ssr/{index-CORKk6yP.mjs → index-Du3YNDKx.mjs} +2 -2
  29. package/.output/server/_ssr/index.mjs +2 -2
  30. package/.output/server/_ssr/{json-viewer-CPCoU-8e.mjs → json-viewer-DrE0vtlB.mjs} +2 -2
  31. package/.output/server/_ssr/{router-CzPRr1HX.mjs → router-C6nWUZHK.mjs} +18 -24
  32. package/.output/server/{_tanstack-start-manifest_v-BRb947T9.mjs → _tanstack-start-manifest_v-rshlRaiN.mjs} +1 -1
  33. package/.output/server/index.mjs +96 -96
  34. package/package.json +9 -4
  35. package/scripts/generate-theme-scales.mjs +22 -0
  36. package/src/components/ProxyViewer.tsx +217 -103
  37. package/src/components/alerts/AlertsDialog.tsx +17 -17
  38. package/src/components/ecosystem/AgentLabDialog.tsx +11 -4
  39. package/src/components/groups/GroupsDialog.tsx +41 -26
  40. package/src/components/inspector-pet/InspectorPet.tsx +9 -9
  41. package/src/components/inspector-pet/inspectorPetLogic.ts +15 -1
  42. package/src/components/pi-agent/PiAgentPanel.tsx +12 -35
  43. package/src/components/pi-agent/piAgentChatLogic.ts +0 -24
  44. package/src/components/providers/ImportWizardDialog.tsx +1 -1
  45. package/src/components/providers/ProviderCard.tsx +4 -4
  46. package/src/components/providers/ProviderForm.tsx +11 -7
  47. package/src/components/providers/ProviderTestResultsView.tsx +15 -17
  48. package/src/components/providers/ProvidersPanel.tsx +1 -1
  49. package/src/components/providers/SettingsDialog.tsx +11 -7
  50. package/src/components/proxy-viewer/LogEntryHeader.tsx +2 -2
  51. package/src/components/proxy-viewer/TurnGroup.tsx +1 -1
  52. package/src/components/ui/icon-trigger.ts +1 -1
  53. package/src/lib/themeMode.ts +1 -5
  54. package/src/lib/uiScale.ts +8 -3
  55. package/src/routes/__root.tsx +5 -10
  56. package/styles/globals.css +35 -143
  57. package/styles/theme-scales.css +50 -0
  58. package/styles/themes.css +157 -0
  59. package/.output/public/assets/ProxyViewerContainer-DoCpLJM1.js +0 -126
  60. package/.output/public/assets/index-DKwrwHsI.css +0 -1
@@ -316,7 +316,11 @@ function CopyableSetupValue({
316
316
  onClick={() => onCopy(id, value)}
317
317
  aria-label={copied ? `Copied ${label}` : `Copy ${label}`}
318
318
  >
319
- {copied ? <Check className="size-3.5 text-emerald-500" /> : <Copy className="size-3.5" />}
319
+ {copied ? (
320
+ <Check className="size-3.5 text-status-success" />
321
+ ) : (
322
+ <Copy className="size-3.5" />
323
+ )}
320
324
  </Button>
321
325
  </div>
322
326
  </div>
@@ -425,15 +429,15 @@ function OnboardingSettingsTab(): JSX.Element {
425
429
  </div>
426
430
  <div className="grid gap-2 rounded-md bg-muted/15 px-3 py-2 text-xs text-muted-foreground">
427
431
  <div className="flex items-center gap-2">
428
- <Check className="size-3.5 text-emerald-500" />
432
+ <Check className="size-3.5 text-status-success" />
429
433
  <span>Provider test creates a traceable memory probe session.</span>
430
434
  </div>
431
435
  <div className="flex items-center gap-2">
432
- <Check className="size-3.5 text-emerald-500" />
436
+ <Check className="size-3.5 text-status-success" />
433
437
  <span>Captured sessions can produce reviewable memory candidates.</span>
434
438
  </div>
435
439
  <div className="flex items-start gap-2">
436
- <Check className="mt-0.5 size-3.5 text-emerald-500" />
440
+ <Check className="mt-0.5 size-3.5 text-status-success" />
437
441
  <span>
438
442
  Streamable HTTP clients should use the MCP URL directly. Stdio-only clients should use
439
443
  <code className="mx-1 rounded bg-muted px-1 py-0.5 font-mono text-[11px] text-foreground">
@@ -443,7 +447,7 @@ function OnboardingSettingsTab(): JSX.Element {
443
447
  </span>
444
448
  </div>
445
449
  <div className="flex items-start gap-2">
446
- <Check className="mt-0.5 size-3.5 text-emerald-500" />
450
+ <Check className="mt-0.5 size-3.5 text-status-success" />
447
451
  <span>
448
452
  OpenCode onboarding safely merges{" "}
449
453
  <code className="rounded bg-muted px-1 py-0.5 font-mono text-[11px] text-foreground">
@@ -461,7 +465,7 @@ function OnboardingSettingsTab(): JSX.Element {
461
465
  </span>
462
466
  </div>
463
467
  <div className="flex items-start gap-2">
464
- <Check className="mt-0.5 size-3.5 text-emerald-500" />
468
+ <Check className="mt-0.5 size-3.5 text-status-success" />
465
469
  <span>
466
470
  MiMo Code onboarding safely merges{" "}
467
471
  <code className="rounded bg-muted px-1 py-0.5 font-mono text-[11px] text-foreground">
@@ -479,7 +483,7 @@ function OnboardingSettingsTab(): JSX.Element {
479
483
  </span>
480
484
  </div>
481
485
  <div className="flex items-start gap-2">
482
- <Check className="mt-0.5 size-3.5 text-emerald-500" />
486
+ <Check className="mt-0.5 size-3.5 text-status-success" />
483
487
  <span>
484
488
  If your AI tool runs in another container or host, replace localhost with an address
485
489
  reachable from that tool and verify the network/firewall path.
@@ -49,7 +49,7 @@ const STATUS_CUE_CLASSES: Record<
49
49
  }
50
50
  > = {
51
51
  success: {
52
- frame: "border-cyan-200/15 bg-white/[0.04] text-slate-100",
52
+ frame: "border-cyan-200/15 bg-white/[0.04] text-text-strong",
53
53
  },
54
54
  client_error: {
55
55
  frame: "border-amber-300/25 bg-amber-300/[0.08] text-amber-100",
@@ -580,7 +580,7 @@ export const LogEntryHeader = memo(function ({
580
580
  )}
581
581
 
582
582
  <span
583
- className="bg-white/[0.045] hover:bg-white/[0.075] inline-flex size-8 shrink-0 items-center justify-center rounded-md text-slate-200"
583
+ className="bg-white/[0.045] hover:bg-white/[0.075] inline-flex size-8 shrink-0 items-center justify-center rounded-md text-text-strong"
584
584
  aria-hidden="true"
585
585
  >
586
586
  {expanded ? (
@@ -331,7 +331,7 @@ export const TurnGroup = memo(function TurnGroup({
331
331
  <span className="flex-1 min-w-0" />
332
332
 
333
333
  <span
334
- className="bg-white/[0.045] inline-flex size-7 shrink-0 items-center justify-center rounded-md text-slate-200"
334
+ className="bg-white/[0.045] inline-flex size-7 shrink-0 items-center justify-center rounded-md text-text-strong"
335
335
  aria-hidden="true"
336
336
  >
337
337
  <ChevronRight className="size-4 shrink-0" />
@@ -1,2 +1,2 @@
1
1
  export const INSPECTOR_ICON_TRIGGER_CLASS =
2
- "relative size-8 rounded-md border-0 bg-white/[0.035] text-muted-foreground shadow-[inset_0_0_0_1px_rgba(255,255,255,0.06)] transition-colors hover:bg-white/[0.065] hover:text-accent-foreground focus-visible:ring-ring/50";
2
+ "relative size-9 rounded-md border border-border/70 bg-muted/60 text-muted-foreground transition-colors hover:bg-muted hover:text-accent-foreground focus-visible:ring-ring/50 max-lg:size-11";
@@ -19,11 +19,7 @@ export function normalizeThemeMode(value: string | null): ThemeMode {
19
19
 
20
20
  export function applyThemeMode(themeMode: ThemeMode): void {
21
21
  if (typeof document === "undefined") return;
22
- const root = document.documentElement;
23
- root.classList.toggle("dark", themeMode === "dark");
24
- root.classList.toggle("eye-care", themeMode === "eye-care");
25
- root.dataset.theme = themeMode;
26
- root.style.colorScheme = themeMode === "dark" ? "dark" : "light";
22
+ document.documentElement.dataset.theme = themeMode;
27
23
  }
28
24
 
29
25
  export function readStoredThemeMode(): ThemeMode {
@@ -10,6 +10,7 @@ export const UI_SCALE_STORAGE_KEY = "agent-inspector.uiScale";
10
10
  export const UI_SCALE_AUTO_MAX_DPR = 1.25;
11
11
  export const UI_SCALE_AUTO_MEDIUM_WIDTH = 2200;
12
12
  export const UI_SCALE_AUTO_LARGE_WIDTH = 3000;
13
+ export const UI_SCALE_MINIMUM_COMPACT_FONT_SIZE = 12;
13
14
 
14
15
  function positiveFinite(value: number, fallback: number): number {
15
16
  return Number.isFinite(value) && value > 0 ? value : fallback;
@@ -64,6 +65,10 @@ export function formatUiScale(scale: number): string {
64
65
  return `${Math.round(scale * 100)}%`;
65
66
  }
66
67
 
68
+ export function resolveCompactFontSize(baseSize: number, scale: number): number {
69
+ return Math.max(UI_SCALE_MINIMUM_COMPACT_FONT_SIZE, baseSize * scale);
70
+ }
71
+
67
72
  export function readUiScaleEnvironment(): UiScaleEnvironment {
68
73
  if (typeof window === "undefined") {
69
74
  return { viewportWidth: 1280, screenWidth: 1280, devicePixelRatio: 1 };
@@ -86,9 +91,9 @@ export function applyUiScalePreference(preference: UiScalePreference): number {
86
91
  root.dataset.uiScaleResolved = String(Math.round(scale * 100));
87
92
  root.style.setProperty("--inspector-ui-scale", String(scale));
88
93
  root.style.setProperty("--inspector-root-font-size", `${String(16 * scale)}px`);
89
- root.style.setProperty("--inspector-font-9", `${String(9 * scale)}px`);
90
- root.style.setProperty("--inspector-font-10", `${String(10 * scale)}px`);
91
- root.style.setProperty("--inspector-font-11", `${String(11 * scale)}px`);
94
+ root.style.setProperty("--inspector-font-9", `${String(resolveCompactFontSize(9, scale))}px`);
95
+ root.style.setProperty("--inspector-font-10", `${String(resolveCompactFontSize(10, scale))}px`);
96
+ root.style.setProperty("--inspector-font-11", `${String(resolveCompactFontSize(11, scale))}px`);
92
97
  root.style.setProperty("--inspector-font-13", `${String(13 * scale)}px`);
93
98
  return scale;
94
99
  }
@@ -16,6 +16,7 @@ import {
16
16
  UI_SCALE_AUTO_LARGE_WIDTH,
17
17
  UI_SCALE_AUTO_MAX_DPR,
18
18
  UI_SCALE_AUTO_MEDIUM_WIDTH,
19
+ UI_SCALE_MINIMUM_COMPACT_FONT_SIZE,
19
20
  UI_SCALE_STORAGE_KEY,
20
21
  } from "../lib/uiScale";
21
22
 
@@ -27,15 +28,9 @@ const themeModeBootstrapScript = `
27
28
  ? storedThemeMode
28
29
  : "dark";
29
30
  var root = document.documentElement;
30
- root.classList.toggle("dark", themeMode === "dark");
31
- root.classList.toggle("eye-care", themeMode === "eye-care");
32
31
  root.dataset.theme = themeMode;
33
- root.style.colorScheme = themeMode === "dark" ? "dark" : "light";
34
32
  } catch (error) {
35
- document.documentElement.classList.add("dark");
36
- document.documentElement.classList.remove("eye-care");
37
33
  document.documentElement.dataset.theme = "dark";
38
- document.documentElement.style.colorScheme = "dark";
39
34
  }
40
35
  })();
41
36
  `;
@@ -76,9 +71,9 @@ const uiScaleBootstrapScript = `
76
71
  root.dataset.uiScaleResolved = String(Math.round(resolvedUiScale * 100));
77
72
  root.style.setProperty("--inspector-ui-scale", String(resolvedUiScale));
78
73
  root.style.setProperty("--inspector-root-font-size", String(16 * resolvedUiScale) + "px");
79
- root.style.setProperty("--inspector-font-9", String(9 * resolvedUiScale) + "px");
80
- root.style.setProperty("--inspector-font-10", String(10 * resolvedUiScale) + "px");
81
- root.style.setProperty("--inspector-font-11", String(11 * resolvedUiScale) + "px");
74
+ root.style.setProperty("--inspector-font-9", String(Math.max(${String(UI_SCALE_MINIMUM_COMPACT_FONT_SIZE)}, 9 * resolvedUiScale)) + "px");
75
+ root.style.setProperty("--inspector-font-10", String(Math.max(${String(UI_SCALE_MINIMUM_COMPACT_FONT_SIZE)}, 10 * resolvedUiScale)) + "px");
76
+ root.style.setProperty("--inspector-font-11", String(Math.max(${String(UI_SCALE_MINIMUM_COMPACT_FONT_SIZE)}, 11 * resolvedUiScale)) + "px");
82
77
  root.style.setProperty("--inspector-font-13", String(13 * resolvedUiScale) + "px");
83
78
  } catch (error) {
84
79
  document.documentElement.dataset.uiScale = "auto";
@@ -158,7 +153,7 @@ function RootNotFoundComponent() {
158
153
 
159
154
  function RootDocument({ children }: Readonly<{ children: ReactNode }>) {
160
155
  return (
161
- <html lang="en" className="dark" data-theme="dark" suppressHydrationWarning={true}>
156
+ <html lang="en" data-theme="dark" suppressHydrationWarning={true}>
162
157
  <head>
163
158
  <script dangerouslySetInnerHTML={{ __html: themeModeBootstrapScript }} />
164
159
  <script dangerouslySetInnerHTML={{ __html: uiScaleBootstrapScript }} />
@@ -1,9 +1,10 @@
1
1
  @import "tailwindcss";
2
2
  @import "tw-animate-css";
3
+ @import "./themes.css";
3
4
  @plugin "@tailwindcss/typography";
4
5
 
5
- @custom-variant dark (&:is(.dark *));
6
- @custom-variant eye-care (&:is(.eye-care *));
6
+ @custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *));
7
+ @custom-variant eye-care (&:where([data-theme="eye-care"], [data-theme="eye-care"] *));
7
8
 
8
9
  @theme inline {
9
10
  --color-background: var(--background);
@@ -32,6 +33,11 @@
32
33
  --color-status-watch: var(--inspector-status-watch);
33
34
  --color-status-danger: var(--inspector-status-danger);
34
35
  --color-status-accent: var(--inspector-status-accent);
36
+ --color-text-strong: var(--inspector-text-strong);
37
+ --color-text-default: var(--inspector-text-default);
38
+ --color-text-muted: var(--inspector-text-muted);
39
+ --color-text-subtle: var(--inspector-text-subtle);
40
+ --color-text-link: var(--inspector-text-link);
35
41
  --color-accent-foreground: var(--accent-foreground);
36
42
  --color-accent: var(--accent);
37
43
  --color-muted-foreground: var(--muted-foreground);
@@ -58,128 +64,12 @@
58
64
  --radius: 0.625rem;
59
65
  --inspector-ui-scale: 1;
60
66
  --inspector-root-font-size: 16px;
61
- --inspector-minimum-font-size: 0.6875rem;
67
+ --inspector-minimum-font-size: 0.75rem;
62
68
  --inspector-font-8: var(--inspector-minimum-font-size);
63
69
  --inspector-font-9: var(--inspector-minimum-font-size);
64
70
  --inspector-font-10: var(--inspector-minimum-font-size);
65
71
  --inspector-font-11: var(--inspector-minimum-font-size);
66
72
  --inspector-font-13: 13px;
67
- --inspector-surface-low: color-mix(in oklch, var(--foreground) 3.5%, transparent);
68
- --inspector-surface-medium: color-mix(in oklch, var(--foreground) 6%, transparent);
69
- --inspector-status-cool: oklch(0.42 0.12 225);
70
- --inspector-status-info: oklch(0.42 0.15 265);
71
- --inspector-status-success: oklch(0.4 0.11 158);
72
- --inspector-status-watch: oklch(0.42 0.12 65);
73
- --inspector-status-danger: oklch(0.44 0.18 25);
74
- --inspector-status-accent: oklch(0.42 0.14 295);
75
- --background: oklch(0.976 0.004 250);
76
- --foreground: oklch(0.18 0.012 255);
77
- --card: oklch(0.995 0.002 250);
78
- --card-foreground: oklch(0.18 0.012 255);
79
- --popover: oklch(1 0 0);
80
- --popover-foreground: oklch(0.18 0.012 255);
81
- --primary: oklch(0.27 0.018 255);
82
- --primary-foreground: oklch(0.985 0 0);
83
- --secondary: oklch(0.935 0.007 250);
84
- --secondary-foreground: oklch(0.24 0.018 255);
85
- --muted: oklch(0.925 0.006 250);
86
- --muted-foreground: oklch(0.46 0.018 255);
87
- --accent: oklch(0.91 0.018 235);
88
- --accent-foreground: oklch(0.24 0.035 240);
89
- --destructive: oklch(0.5 0.2 27);
90
- --warning: oklch(0.43 0.12 70);
91
- --border: oklch(0.85 0.01 250);
92
- --input: oklch(0.78 0.015 250);
93
- --ring: oklch(0.48 0.11 230);
94
- --chart-1: oklch(0.646 0.222 41.116);
95
- --chart-2: oklch(0.6 0.118 184.704);
96
- --chart-3: oklch(0.398 0.07 227.392);
97
- --chart-4: oklch(0.828 0.189 84.429);
98
- --chart-5: oklch(0.769 0.188 70.08);
99
- --sidebar: oklch(0.955 0.006 250);
100
- --sidebar-foreground: oklch(0.18 0.012 255);
101
- --sidebar-primary: oklch(0.27 0.018 255);
102
- --sidebar-primary-foreground: oklch(0.985 0 0);
103
- --sidebar-accent: oklch(0.91 0.018 235);
104
- --sidebar-accent-foreground: oklch(0.24 0.035 240);
105
- --sidebar-border: oklch(0.85 0.01 250);
106
- --sidebar-ring: oklch(0.48 0.11 230);
107
- }
108
-
109
- .dark {
110
- --background: oklch(0.145 0 0);
111
- --foreground: oklch(0.985 0 0);
112
- --card: oklch(0.205 0 0);
113
- --card-foreground: oklch(0.985 0 0);
114
- --popover: oklch(0.205 0 0);
115
- --popover-foreground: oklch(0.985 0 0);
116
- --primary: oklch(0.922 0 0);
117
- --primary-foreground: oklch(0.205 0 0);
118
- --secondary: oklch(0.269 0 0);
119
- --secondary-foreground: oklch(0.985 0 0);
120
- --muted: oklch(0.269 0 0);
121
- --muted-foreground: oklch(0.708 0 0);
122
- --accent: oklch(0.269 0 0);
123
- --accent-foreground: oklch(0.985 0 0);
124
- --destructive: oklch(0.704 0.191 22.216);
125
- --warning: oklch(0.76 0.14 78);
126
- --border: oklch(1 0 0 / 10%);
127
- --input: oklch(1 0 0 / 15%);
128
- --ring: oklch(0.556 0 0);
129
- --chart-1: oklch(0.488 0.243 264.376);
130
- --chart-2: oklch(0.696 0.17 162.48);
131
- --chart-3: oklch(0.769 0.188 70.08);
132
- --chart-4: oklch(0.627 0.265 303.9);
133
- --chart-5: oklch(0.645 0.246 16.439);
134
- --sidebar: oklch(0.205 0 0);
135
- --sidebar-foreground: oklch(0.985 0 0);
136
- --sidebar-primary: oklch(0.488 0.243 264.376);
137
- --sidebar-primary-foreground: oklch(0.985 0 0);
138
- --sidebar-accent: oklch(0.269 0 0);
139
- --sidebar-accent-foreground: oklch(0.985 0 0);
140
- --sidebar-border: oklch(1 0 0 / 10%);
141
- --sidebar-ring: oklch(0.556 0 0);
142
- }
143
-
144
- .eye-care {
145
- --inspector-status-cool: oklch(0.38 0.08 195);
146
- --inspector-status-info: oklch(0.4 0.12 270);
147
- --inspector-status-success: oklch(0.36 0.1 155);
148
- --inspector-status-watch: oklch(0.39 0.1 65);
149
- --inspector-status-danger: oklch(0.41 0.16 25);
150
- --inspector-status-accent: oklch(0.4 0.12 295);
151
- --background: oklch(0.932 0.018 135);
152
- --foreground: oklch(0.22 0.03 150);
153
- --card: oklch(0.975 0.012 132);
154
- --card-foreground: oklch(0.22 0.03 150);
155
- --popover: oklch(0.985 0.01 132);
156
- --popover-foreground: oklch(0.22 0.03 150);
157
- --primary: oklch(0.36 0.09 154);
158
- --primary-foreground: oklch(0.985 0.006 125);
159
- --secondary: oklch(0.875 0.028 135);
160
- --secondary-foreground: oklch(0.26 0.04 150);
161
- --muted: oklch(0.885 0.022 132);
162
- --muted-foreground: oklch(0.4 0.04 150);
163
- --accent: oklch(0.84 0.045 148);
164
- --accent-foreground: oklch(0.25 0.055 151);
165
- --destructive: oklch(0.47 0.17 28);
166
- --warning: oklch(0.4 0.1 70);
167
- --border: oklch(0.76 0.028 132);
168
- --input: oklch(0.7 0.034 132);
169
- --ring: oklch(0.42 0.1 154);
170
- --chart-1: oklch(0.49 0.11 153);
171
- --chart-2: oklch(0.55 0.1 226);
172
- --chart-3: oklch(0.67 0.13 77);
173
- --chart-4: oklch(0.56 0.11 307);
174
- --chart-5: oklch(0.58 0.15 25);
175
- --sidebar: oklch(0.9 0.024 135);
176
- --sidebar-foreground: oklch(0.22 0.03 150);
177
- --sidebar-primary: oklch(0.36 0.09 154);
178
- --sidebar-primary-foreground: oklch(0.985 0.006 125);
179
- --sidebar-accent: oklch(0.84 0.045 148);
180
- --sidebar-accent-foreground: oklch(0.25 0.055 151);
181
- --sidebar-border: oklch(0.76 0.028 132);
182
- --sidebar-ring: oklch(0.42 0.1 154);
183
73
  }
184
74
 
185
75
  @keyframes crab-crawl-down {
@@ -344,19 +234,19 @@
344
234
 
345
235
  @layer utilities {
346
236
  [class~="text-[8px]"] {
347
- font-size: var(--inspector-font-8);
237
+ font-size: var(--inspector-font-8) !important;
348
238
  }
349
239
 
350
240
  [class~="text-[9px]"] {
351
- font-size: var(--inspector-font-9);
241
+ font-size: var(--inspector-font-9) !important;
352
242
  }
353
243
 
354
244
  [class~="text-[10px]"] {
355
- font-size: var(--inspector-font-10);
245
+ font-size: var(--inspector-font-10) !important;
356
246
  }
357
247
 
358
248
  [class~="text-[11px]"] {
359
- font-size: var(--inspector-font-11);
249
+ font-size: var(--inspector-font-11) !important;
360
250
  }
361
251
 
362
252
  [class~="text-[13px]"] {
@@ -411,7 +301,7 @@
411
301
 
412
302
  /* Legacy surfaces were tuned against a dark canvas. Keep them theme-aware while
413
303
  components migrate to semantic color utilities. */
414
- :root:not(.dark)
304
+ :root:not([data-theme="dark"])
415
305
  :is(
416
306
  [class~="bg-white/[0.008]"],
417
307
  [class~="bg-white/[0.025]"],
@@ -424,7 +314,7 @@
424
314
  background-color: var(--inspector-surface-low);
425
315
  }
426
316
 
427
- :root:not(.dark)
317
+ :root:not([data-theme="dark"])
428
318
  :is(
429
319
  [class~="bg-white/[0.055]"],
430
320
  [class~="bg-white/[0.06]"],
@@ -446,7 +336,7 @@
446
336
  background-color: var(--inspector-surface-medium);
447
337
  }
448
338
 
449
- :root:not(.dark)
339
+ :root:not([data-theme="dark"])
450
340
  :is(
451
341
  [class~="border-white/[0.045]"],
452
342
  [class~="border-white/[0.055]"],
@@ -457,7 +347,7 @@
457
347
  border-color: color-mix(in oklch, var(--foreground) 12%, transparent);
458
348
  }
459
349
 
460
- :root:not(.dark)
350
+ :root:not([data-theme="dark"])
461
351
  :is(
462
352
  [class~="hover:bg-white/[0.03]"],
463
353
  [class~="hover:bg-white/[0.035]"],
@@ -472,7 +362,7 @@
472
362
  background-color: color-mix(in oklch, var(--foreground) 9%, transparent);
473
363
  }
474
364
 
475
- :root:not(.dark)
365
+ :root
476
366
  :is(
477
367
  [class~="text-white/35"],
478
368
  [class~="text-white/40"],
@@ -482,10 +372,10 @@
482
372
  [class~="text-white/60"],
483
373
  [class~="text-slate-300"]
484
374
  ) {
485
- color: var(--muted-foreground);
375
+ color: var(--inspector-text-subtle);
486
376
  }
487
377
 
488
- :root:not(.dark)
378
+ :root
489
379
  :is(
490
380
  [class~="text-white/75"],
491
381
  [class~="text-slate-50"],
@@ -494,24 +384,26 @@
494
384
  [class~="text-zinc-50"],
495
385
  [class~="text-zinc-100"]
496
386
  ) {
497
- color: var(--foreground);
387
+ color: var(--inspector-text-strong);
498
388
  }
499
389
 
500
- :root:not(.dark) [class~="bg-zinc-950"] {
390
+ :root:not([data-theme="dark"]) [class~="bg-zinc-950"] {
501
391
  background-color: var(--popover);
502
392
  }
503
393
 
504
- :root:not(.dark) [class*="shadow-[inset_0_0_0_1px_rgba(255,255,255"] {
394
+ :root:not([data-theme="dark"])
395
+ [class*="shadow-[inset_0_0_0_1px_rgba(255,255,255"] {
505
396
  box-shadow: inset 0 0 0 1px color-mix(in oklch, var(--foreground) 10%, transparent) !important;
506
397
  }
507
398
 
508
- :root:not(.dark) [class*="shadow-[inset_0_1px_0_rgba(255,255,255"] {
399
+ :root:not([data-theme="dark"])
400
+ [class*="shadow-[inset_0_1px_0_rgba(255,255,255"] {
509
401
  box-shadow:
510
402
  inset 0 1px 0 color-mix(in oklch, var(--foreground) 10%, transparent),
511
403
  0 8px 24px color-mix(in oklch, var(--foreground) 8%, transparent) !important;
512
404
  }
513
405
 
514
- :root:not(.dark)
406
+ :root
515
407
  :is(
516
408
  [class~="text-cyan-100"],
517
409
  [class~="text-cyan-100/70"],
@@ -533,7 +425,7 @@
533
425
  color: var(--inspector-status-cool);
534
426
  }
535
427
 
536
- :root:not(.dark)
428
+ :root
537
429
  :is(
538
430
  [class~="text-blue-300"],
539
431
  [class~="text-blue-300/85"],
@@ -543,7 +435,7 @@
543
435
  color: var(--inspector-status-info);
544
436
  }
545
437
 
546
- :root:not(.dark)
438
+ :root
547
439
  :is(
548
440
  [class~="text-emerald-100"],
549
441
  [class~="text-emerald-200"],
@@ -558,7 +450,7 @@
558
450
  color: var(--inspector-status-success);
559
451
  }
560
452
 
561
- :root:not(.dark)
453
+ :root
562
454
  :is(
563
455
  [class~="text-amber-100"],
564
456
  [class~="text-amber-100/90"],
@@ -571,7 +463,7 @@
571
463
  color: var(--inspector-status-watch);
572
464
  }
573
465
 
574
- :root:not(.dark)
466
+ :root
575
467
  :is(
576
468
  [class~="text-red-100"],
577
469
  [class~="text-red-200"],
@@ -586,7 +478,7 @@
586
478
  color: var(--inspector-status-danger);
587
479
  }
588
480
 
589
- :root:not(.dark)
481
+ :root
590
482
  :is(
591
483
  [class~="text-violet-100"],
592
484
  [class~="text-violet-200"],
@@ -598,7 +490,7 @@
598
490
  color: var(--inspector-status-accent);
599
491
  }
600
492
 
601
- :root:not(.dark)
493
+ :root
602
494
  :is(
603
495
  [class~="hover:text-cyan-100"],
604
496
  [class~="hover:text-cyan-200"],
@@ -606,10 +498,10 @@
606
498
  [class~="hover:text-sky-100"],
607
499
  [class~="hover:text-sky-300"]
608
500
  ):hover {
609
- color: var(--inspector-status-cool);
501
+ color: var(--inspector-text-link);
610
502
  }
611
503
 
612
- :root:not(.dark)
504
+ :root:not([data-theme="dark"])
613
505
  :is(
614
506
  [class~="text-amber-500"]:not(svg),
615
507
  [class~="text-emerald-500"]:not(svg),
@@ -0,0 +1,50 @@
1
+ /* Generated by bun run themes:generate. Do not edit directly. */
2
+
3
+ :root,
4
+ :root[data-theme="light"] {
5
+ /* @radix-ui/colors: sand */
6
+ --inspector-neutral-1: #fdfdfc;
7
+ --inspector-neutral-2: #f9f9f8;
8
+ --inspector-neutral-3: #f1f0ef;
9
+ --inspector-neutral-4: #e9e8e6;
10
+ --inspector-neutral-5: #e2e1de;
11
+ --inspector-neutral-6: #dad9d6;
12
+ --inspector-neutral-7: #cfceca;
13
+ --inspector-neutral-8: #bcbbb5;
14
+ --inspector-neutral-9: #8d8d86;
15
+ --inspector-neutral-10: #82827c;
16
+ --inspector-neutral-11: #63635e;
17
+ --inspector-neutral-12: #21201c;
18
+ }
19
+
20
+ :root[data-theme="dark"] {
21
+ /* @radix-ui/colors: slateDark */
22
+ --inspector-neutral-1: #111113;
23
+ --inspector-neutral-2: #18191b;
24
+ --inspector-neutral-3: #212225;
25
+ --inspector-neutral-4: #272a2d;
26
+ --inspector-neutral-5: #2e3135;
27
+ --inspector-neutral-6: #363a3f;
28
+ --inspector-neutral-7: #43484e;
29
+ --inspector-neutral-8: #5a6169;
30
+ --inspector-neutral-9: #696e77;
31
+ --inspector-neutral-10: #777b84;
32
+ --inspector-neutral-11: #b0b4ba;
33
+ --inspector-neutral-12: #edeef0;
34
+ }
35
+
36
+ :root[data-theme="eye-care"] {
37
+ /* @radix-ui/colors: olive */
38
+ --inspector-neutral-1: #fcfdfc;
39
+ --inspector-neutral-2: #f8faf8;
40
+ --inspector-neutral-3: #eff1ef;
41
+ --inspector-neutral-4: #e7e9e7;
42
+ --inspector-neutral-5: #dfe2df;
43
+ --inspector-neutral-6: #d7dad7;
44
+ --inspector-neutral-7: #cccfcc;
45
+ --inspector-neutral-8: #b9bcb8;
46
+ --inspector-neutral-9: #898e87;
47
+ --inspector-neutral-10: #7f847d;
48
+ --inspector-neutral-11: #60655f;
49
+ --inspector-neutral-12: #1d211c;
50
+ }