From 5371d3e283b35b553284b4e5ee3086122fc9c3ca Mon Sep 17 00:00:00 2001 From: Hugh Kaznowski Date: Sun, 6 Sep 2026 02:11:33 +0100 Subject: [PATCH] Add multi-accent palettes and a brighter Light Green theme (ticket 048) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Every built-in theme now exposes three accents (--c-accent/-2/-3) instead of one, so PanelChart's series palette draws distinct colours per theme via color-mix() rather than a fixed, theme-independent hex list. Existing presets keep their current base surface/border/text/accent look — the two new accent vars are purely additive. Adds a new "Light Green" scheme (light-surfaced, same green/magenta hue family as "Green") selectable alongside the existing built-ins, both in ColorScheme (frontend + backend) and the settings picker. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01XFUNZwCvz3kcod3352ZR2o --- src/settings.rs | 3 ++ webapp/src/components/NavMenu.tsx | 10 ++++- webapp/src/components/PanelChart.tsx | 18 +++++++- webapp/src/index.css | 61 ++++++++++++++++++++++++++++ webapp/src/lib/api.ts | 1 + webapp/src/lib/themes.ts | 42 +++++++++++++++++++ webapp/src/lib/useSettingsPanel.ts | 12 +++++- 7 files changed, 142 insertions(+), 5 deletions(-) diff --git a/src/settings.rs b/src/settings.rs index 36e8169..98774c2 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -37,6 +37,9 @@ pub enum ColorScheme { Yellow, Pink, Orange, + /// Brighter, light-surfaced counterpart to `Green` (ticket 048). + #[serde(rename = "light_green")] + LightGreen, #[default] System, } diff --git a/webapp/src/components/NavMenu.tsx b/webapp/src/components/NavMenu.tsx index e9f3671..e35a974 100644 --- a/webapp/src/components/NavMenu.tsx +++ b/webapp/src/components/NavMenu.tsx @@ -27,8 +27,14 @@ const COLOR_SCHEMES: ColorScheme[] = [ 'yellow', 'pink', 'orange', + 'light_green', ] +/** Display label for a `ColorScheme`: underscores become spaces so `capitalize` (which titles each word) renders e.g. "light_green" as "Light Green". */ +function schemeLabel(scheme: ColorScheme): string { + return scheme.replace(/_/g, ' ') +} + export function NavMenu({ stats }: { stats: Stats | null }) { const [openPanel, setOpenPanel] = useState(null) const panel = useSettingsPanel() @@ -307,14 +313,14 @@ function SettingsPanel({ panel }: { panel: ReturnType } : 'border-border-soft text-text-muted hover:bg-surface-2' }`} > - {scheme} + {schemeLabel(scheme)} {scheme !== 'system' && (