style(webui): add subtle automation filter tones
This commit is contained in:
@@ -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",
|
"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 &&
|
filter === option.value &&
|
||||||
"bg-background text-foreground shadow-[0_8px_20px_rgba(15,23,42,0.07)] dark:bg-background/80",
|
"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),
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<span>{option.label}</span>
|
<span>{option.label}</span>
|
||||||
<span className="min-w-5 shrink-0 rounded-full bg-orange-100/70 px-1.5 py-0.5 text-center text-[11px] tabular-nums text-orange-800/70 dark:bg-orange-300/12 dark:text-orange-200/75">
|
<span
|
||||||
|
className={cn(
|
||||||
|
"min-w-5 shrink-0 rounded-full bg-background/75 px-1.5 py-0.5 text-center text-[11px] tabular-nums text-muted-foreground",
|
||||||
|
automationFilterCountClass(option.value, option.count),
|
||||||
|
)}
|
||||||
|
>
|
||||||
{option.count}
|
{option.count}
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -4562,6 +4568,42 @@ function automationMatchesFilter(job: SessionAutomationJob, filter: AutomationFi
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const AUTOMATION_FILTER_TONES: Partial<
|
||||||
|
Record<AutomationFilter, { text: string; selectedText: string; count: string }>
|
||||||
|
> = {
|
||||||
|
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(
|
function automationStatus(
|
||||||
job: SessionAutomationJob,
|
job: SessionAutomationJob,
|
||||||
tx: (key: string, fallback: string, values?: Record<string, unknown>) => string,
|
tx: (key: string, fallback: string, values?: Record<string, unknown>) => string,
|
||||||
|
|||||||
Reference in New Issue
Block a user