diff --git a/webui/src/components/settings/SettingsView.tsx b/webui/src/components/settings/SettingsView.tsx index 75282570..1b3c03a7 100644 --- a/webui/src/components/settings/SettingsView.tsx +++ b/webui/src/components/settings/SettingsView.tsx @@ -3496,10 +3496,16 @@ function AutomationsSettings({ "inline-flex h-8 min-w-0 shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-[11px] px-3 text-[12px] font-medium text-muted-foreground transition-colors", filter === option.value && "bg-background text-foreground shadow-[0_8px_20px_rgba(15,23,42,0.07)] dark:bg-background/80", + automationFilterToneClass(option.value, option.count, filter === option.value), )} > {option.label} - + {option.count} @@ -4562,6 +4568,42 @@ function automationMatchesFilter(job: SessionAutomationJob, filter: AutomationFi return true; } +const AUTOMATION_FILTER_TONES: Partial< + Record +> = { + active: { + text: "text-emerald-600 dark:text-emerald-400", + selectedText: "text-emerald-700 dark:text-emerald-300", + count: "bg-emerald-500/10 text-emerald-700 dark:text-emerald-300", + }, + paused: { + text: "text-amber-600 dark:text-amber-400", + selectedText: "text-amber-700 dark:text-amber-300", + count: "bg-amber-500/10 text-amber-700 dark:text-amber-300", + }, + failed: { + text: "text-rose-600 dark:text-rose-400", + selectedText: "text-rose-700 dark:text-rose-300", + count: "bg-rose-500/10 text-rose-700 dark:text-rose-300", + }, + system: { + text: "text-sky-600 dark:text-sky-400", + selectedText: "text-sky-700 dark:text-sky-300", + count: "bg-sky-500/10 text-sky-700 dark:text-sky-300", + }, +}; + +function automationFilterToneClass(value: AutomationFilter, count: number, selected: boolean): string { + const tone = AUTOMATION_FILTER_TONES[value]; + if (count <= 0 || !tone) return ""; + return selected ? tone.selectedText : tone.text; +} + +function automationFilterCountClass(value: AutomationFilter, count: number): string { + const tone = AUTOMATION_FILTER_TONES[value]; + return count > 0 && tone ? tone.count : ""; +} + function automationStatus( job: SessionAutomationJob, tx: (key: string, fallback: string, values?: Record) => string,