Unify otel-ui on ds-* theme; restore redesigned Issues view
Build and Publish / Metadata (push) Successful in 2s
Build and Publish / BuildAndDeployAmd64 (push) Successful in 56s

Restore IssuesVisualizer redesign reverted by merge 67ce419 and re-apply
Needle triage/test additions. Migrate all remaining screens off the MD3
palette, raw Tailwind colors, gradients and Material Symbols. Remove the
legacy theme block and fonts, drop the duplicate tab strip, rebuild
TelemetryFilters on FilterBar, and document status in AGENTS.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
matsandClaude Sonnet 5 committed 2026-09-19 08:56:34 +00:00
1 parent 67ce4197da
commit 1e9482ed21
23 files changed
+1583 -1648

No files matched your search

+48 -48
View File
@@ -116,36 +116,36 @@ export const GaugeMeter = ({
const statusColor = useMemo(() => {
if (percent >= dangerThreshold) {
return {
text: "text-rose-400",
stroke: "#f43f5e",
gradientStart: "#fb7185",
gradientEnd: "#e11d48",
bg: "bg-rose-500/10",
border: "border-rose-500/30",
glow: "rgba(244, 63, 94, 0.35)",
text: "text-ds-critical",
stroke: "var(--ds-critical)",
gradientStart: "var(--ds-critical)",
gradientEnd: "var(--ds-critical)",
bg: "bg-ds-critical-bg",
border: "border-ds-critical/30",
glow: "color-mix(in srgb, var(--ds-critical) 35%, transparent)",
label: "Critical",
};
}
if (percent >= warnThreshold) {
return {
text: "text-amber-400",
stroke: "#f59e0b",
gradientStart: "#fbbf24",
gradientEnd: "#d97706",
bg: "bg-amber-500/10",
border: "border-amber-500/30",
glow: "rgba(245, 158, 11, 0.35)",
text: "text-ds-warn",
stroke: "var(--ds-warn)",
gradientStart: "var(--ds-warn)",
gradientEnd: "var(--ds-warn)",
bg: "bg-ds-warn-bg",
border: "border-ds-warn/30",
glow: "color-mix(in srgb, var(--ds-warn) 35%, transparent)",
label: "Warning",
};
}
return {
text: "text-cyan-400",
stroke: "#06b6d4",
gradientStart: "#38bdf8",
gradientEnd: "#0284c7",
bg: "bg-cyan-500/10",
border: "border-cyan-500/30",
glow: "rgba(6, 182, 212, 0.35)",
text: "text-ds-accent",
stroke: "var(--ds-accent)",
gradientStart: "var(--ds-accent)",
gradientEnd: "var(--ds-accent)",
bg: "bg-ds-accent-bg",
border: "border-ds-accent/30",
glow: "color-mix(in srgb, var(--ds-accent) 35%, transparent)",
label: "Nominal",
};
}, [percent, warnThreshold, dangerThreshold]);
@@ -155,9 +155,9 @@ export const GaugeMeter = ({
if (!showTrend || history.length < 2) return null;
const prev = history[history.length - 2];
const diff = value - prev;
if (Math.abs(diff) < 0.0001) return { direction: "flat", text: "steady", color: "text-slate-500" };
if (diff > 0) return { direction: "up", text: `+${formatNumber(diff)}`, color: "text-rose-400" };
return { direction: "down", text: `${formatNumber(diff)}`, color: "text-emerald-400" };
if (Math.abs(diff) < 0.0001) return { direction: "flat", text: "steady", color: "text-ds-text-3" };
if (diff > 0) return { direction: "up", text: `+${formatNumber(diff)}`, color: "text-ds-critical" };
return { direction: "down", text: `${formatNumber(diff)}`, color: "text-ds-ok" };
}, [value, history, showTrend]);
// Dimensions
@@ -185,8 +185,8 @@ export const GaugeMeter = ({
);
return (
<div className="flex flex-col items-center justify-between rounded-2xl border border-white/10 bg-slate-900/40 p-4 shadow-lg backdrop-blur-sm transition-all hover:border-white/20">
<div className="flex w-full items-start justify-between gap-2 border-b border-white/5 pb-2">
<div className="flex flex-col items-center justify-between rounded-2xl border border-ds-line bg-ds-surface-2 p-4 shadow-lg backdrop-blur-sm transition-all hover:border-ds-line-strong">
<div className="flex w-full items-start justify-between gap-2 border-b border-ds-line pb-2">
<div className="flex flex-col min-w-0 pr-1">
<div className="flex items-center gap-1 flex-wrap mb-1">
{service && (
@@ -200,15 +200,15 @@ export const GaugeMeter = ({
)}
{podCount !== undefined && podCount > 1 && (
<span
className="inline-flex items-center gap-1 rounded bg-sky-500/15 px-1.5 py-0.5 text-[9px] font-mono font-bold text-sky-300 border border-sky-500/30"
className="inline-flex items-center gap-1 rounded bg-ds-accent-bg px-1.5 py-0.5 text-[9px] font-mono font-bold text-ds-accent border border-ds-accent/30"
title={`Sum of values across ${podCount} pods`}
>
<span className="text-[11px] font-black leading-none text-sky-400">∑</span>
<span className="text-[11px] font-black leading-none text-ds-accent">∑</span>
<span>{podCount} pods</span>
</span>
)}
</div>
<span className="truncate text-xs font-bold uppercase tracking-wider text-slate-300" title={name}>
<span className="truncate text-xs font-bold uppercase tracking-wider text-ds-text-2" title={name}>
{name}
</span>
</div>
@@ -233,7 +233,7 @@ export const GaugeMeter = ({
<path
d={bgArc}
fill="none"
stroke="rgba(255, 255, 255, 0.08)"
stroke="var(--ds-line-strong)"
strokeWidth={strokeWidth}
strokeLinecap="round"
/>
@@ -249,7 +249,7 @@ export const GaugeMeter = ({
y1={inner.y}
x2={outer.x}
y2={outer.y}
stroke="rgba(255, 255, 255, 0.2)"
stroke="var(--ds-line-strong)"
strokeWidth={1.5}
/>
);
@@ -275,7 +275,7 @@ export const GaugeMeter = ({
cx={tip.x}
cy={tip.y}
r={strokeWidth * 0.6}
fill="#ffffff"
fill="var(--ds-text)"
stroke={statusColor.stroke}
strokeWidth={2}
className="transition-all duration-300"
@@ -287,15 +287,15 @@ export const GaugeMeter = ({
{/* Center Readout */}
<div className="absolute inset-0 flex flex-col items-center justify-center pt-3 text-center pointer-events-none">
{soloPod ? (
<span className="text-[8px] font-mono uppercase font-black text-amber-400 tracking-wider truncate max-w-[100px]" title={`Solo: ${soloPod}`}>
<span className="text-[8px] font-mono uppercase font-black text-ds-warn tracking-wider truncate max-w-[100px]" title={`Solo: ${soloPod}`}>
{soloPod}
</span>
) : aggLabel ? (
<span className="text-[8.5px] font-mono uppercase font-black text-sky-400 tracking-wider">
<span className="text-[8.5px] font-mono uppercase font-black text-ds-accent tracking-wider">
{aggLabel}
</span>
) : podCount !== undefined && podCount > 1 ? (
<span className="text-[8.5px] font-mono uppercase font-black text-sky-400 tracking-wider">
<span className="text-[8.5px] font-mono uppercase font-black text-ds-accent tracking-wider">
{isSum ? "Sum (∑)" : "Avg (μ)"}
</span>
) : null}
@@ -304,20 +304,20 @@ export const GaugeMeter = ({
{formatNumber(value)}
</span>
{unit && (
<span className="text-[10px] font-bold uppercase text-slate-400">
<span className="text-[10px] font-bold uppercase text-ds-text-2">
{unit}
</span>
)}
</div>
{podCount !== undefined && podCount > 1 ? (
<span
className="text-[9px] font-mono text-slate-400 truncate max-w-[100px]"
className="text-[9px] font-mono text-ds-text-2 truncate max-w-[100px]"
title={isSum ? `Average: ${formatNumber(value / podCount)} per pod` : `Fleet average across ${podCount} pods`}
>
{isSum ? `~${formatNumber(value / podCount)}/pod` : `${podCount} pods avg`}
</span>
) : subtitle ? (
<span className="text-[10px] text-slate-500 truncate max-w-[90px]">
<span className="text-[10px] text-ds-text-3 truncate max-w-[90px]">
{subtitle}
</span>
) : null}
@@ -325,9 +325,9 @@ export const GaugeMeter = ({
</div>
{/* Footer range indicators & trend */}
<div className="flex w-full items-center justify-between border-t border-white/5 pt-2 text-[10px] text-slate-400">
<div className="flex w-full items-center justify-between border-t border-ds-line pt-2 text-[10px] text-ds-text-2">
<span className="font-mono">
<span className="text-slate-600">min</span> {formatNumber(min)}
<span className="text-ds-text-3">min</span> {formatNumber(min)}
</span>
{trend && (
<span className={`inline-flex items-center gap-0.5 font-mono text-[9px] font-bold ${trend.color}`}>
@@ -338,30 +338,30 @@ export const GaugeMeter = ({
</span>
)}
{avg !== undefined && (
<span className="font-mono text-slate-400">
<span className="text-slate-600">avg</span> {formatNumber(avg)}
<span className="font-mono text-ds-text-2">
<span className="text-ds-text-3">avg</span> {formatNumber(avg)}
</span>
)}
<span className="font-mono">
<span className="text-slate-600">max</span> {formatNumber(max)}
<span className="text-ds-text-3">max</span> {formatNumber(max)}
</span>
</div>
{/* Pod Breakdown pills if available */}
{podSummaries && podSummaries.length > 1 && (
<div className="mt-2 flex w-full flex-wrap items-center gap-1 border-t border-white/5 pt-1.5">
<div className="mt-2 flex w-full flex-wrap items-center gap-1 border-t border-ds-line pt-1.5">
{podSummaries.slice(0, 3).map((ps) => (
<div
key={ps.pod}
className="flex items-center gap-1 rounded bg-white/5 px-1.5 py-0.5 text-[8.5px] font-mono text-slate-400"
className="flex items-center gap-1 rounded bg-ds-surface-2 px-1.5 py-0.5 text-[8.5px] font-mono text-ds-text-2"
title={`${ps.pod}: ${formatNumber(ps.value)} ${unit || ""}`}
>
<span className="truncate max-w-[65px] text-slate-300">{ps.pod}</span>
<span className="font-bold text-sky-300">{formatNumber(ps.value)}</span>
<span className="truncate max-w-[65px] text-ds-text-2">{ps.pod}</span>
<span className="font-bold text-ds-accent">{formatNumber(ps.value)}</span>
</div>
))}
{podSummaries.length > 3 && (
<span className="text-[8px] font-mono text-slate-500 self-center">
<span className="text-[8px] font-mono text-ds-text-3 self-center">
+{podSummaries.length - 3}
</span>
)}