fix(theme): keep status-badge token contract green (CI test)

The sweep over-tokenized the neutral status badges in the three status
data modules to bg-muted/border-border, which broke
broadcast-status.test.ts ("each variant has the dark-theme class
triple") — it asserts every badge is bg-*/10 + text-* + border-*/20.

The badge system intentionally uses fixed palette colors at low opacity
(translucent fills are mode-tolerant). Restore the original slate fills
(so dark is identical and the triple contract holds) but keep
text-muted-foreground for the label, so neutral statuses stay legible in
light mode where a solid slate-400 would be too faint on white.

- broadcast-status: draft / recipient pending
- template-status: DRAFT / PENDING_DELETION
- trigger-meta: time_based / fallback

All 400 tests pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Arnas Donauskas 2026-06-17 13:08:32 +03:00
parent 1474657d03
commit 43b842efb6
No known key found for this signature in database
3 changed files with 10 additions and 7 deletions

View File

@ -33,7 +33,7 @@ export const TRIGGER_META: Record<AutomationTriggerType, TriggerMeta> = {
}, },
time_based: { time_based: {
label: 'Time-Based', label: 'Time-Based',
pillClass: 'border-border bg-muted text-muted-foreground', pillClass: 'border-slate-500/30 bg-slate-500/10 text-muted-foreground',
}, },
} }
@ -41,7 +41,7 @@ export function triggerMeta(t: AutomationTriggerType | string): TriggerMeta {
return ( return (
TRIGGER_META[t as AutomationTriggerType] ?? { TRIGGER_META[t as AutomationTriggerType] ?? {
label: t, label: t,
pillClass: 'border-border bg-muted text-muted-foreground', pillClass: 'border-slate-500/30 bg-slate-500/10 text-muted-foreground',
} }
) )
} }

View File

@ -5,7 +5,10 @@
* /broadcasts/page.tsx and /broadcasts/[id]/page.tsx with slight * /broadcasts/page.tsx and /broadcasts/[id]/page.tsx with slight
* drift risk. One source of truth now. * drift risk. One source of truth now.
* *
* Dark-theme only — bg-*-500/10 + text-*-400 + border-*-500/20. * Badge shape: bg-*-500/10 + text-*-400 + border-*-500/20. The
* translucent fills sit fine on both light and dark surfaces; neutral
* statuses use text-muted-foreground so the label stays legible in
* light mode (a solid slate-400 would be too faint on white).
*/ */
import type { BroadcastStatus, RecipientStatus } from "@/types"; import type { BroadcastStatus, RecipientStatus } from "@/types";
@ -23,7 +26,7 @@ export interface StatusDisplay {
export const broadcastStatusConfig: Record<BroadcastStatus, StatusDisplay> = { export const broadcastStatusConfig: Record<BroadcastStatus, StatusDisplay> = {
draft: { draft: {
label: "Draft", label: "Draft",
classes: "bg-muted text-muted-foreground border-border", classes: "bg-slate-500/10 text-muted-foreground border-slate-500/20",
}, },
scheduled: { scheduled: {
label: "Scheduled", label: "Scheduled",
@ -47,7 +50,7 @@ export const broadcastStatusConfig: Record<BroadcastStatus, StatusDisplay> = {
export const recipientStatusConfig: Record<RecipientStatus, StatusDisplay> = { export const recipientStatusConfig: Record<RecipientStatus, StatusDisplay> = {
pending: { pending: {
label: "Pending", label: "Pending",
classes: "bg-muted text-muted-foreground border-border", classes: "bg-slate-500/10 text-muted-foreground border-slate-500/20",
}, },
sent: { sent: {
label: "Sent", label: "Sent",

View File

@ -20,7 +20,7 @@ export const templateStatusConfig: Record<
> = { > = {
DRAFT: { DRAFT: {
label: 'Draft', label: 'Draft',
classes: 'bg-muted text-muted-foreground border-border', classes: 'bg-slate-600/20 text-muted-foreground border-slate-600/30',
}, },
PENDING: { PENDING: {
label: 'Pending', label: 'Pending',
@ -48,6 +48,6 @@ export const templateStatusConfig: Record<
}, },
PENDING_DELETION: { PENDING_DELETION: {
label: 'Pending Deletion', label: 'Pending Deletion',
classes: 'bg-muted text-muted-foreground border-border', classes: 'bg-slate-700/30 text-muted-foreground border-slate-700/40',
}, },
}; };