design: the last VM-side colours come from tokens (ThemeBrush)
The state colours the view-models hand to bindings — top bar, REC/ON-AIR dots, health banner, meter bands, toast tints — were hex literals in C#. They now resolve from Themes/Tokens.xaml through `Helpers/ThemeBrush`, so the values live in one place. Without an Application (unit tests) the helper returns a neutral grey: visibly wrong rather than silently plausible. Four tokens the code needed and the document lacked, added to DESIGN.md (so the doc-is-the-contract guard demanded their brushes): info-container #3a3b52, success-container #1d5c38, warning-container #b8860b, test-container #9c6f1c (the test-stream gold bar). Also fixed by this: the top bar still painted the RETIRED brand red #e94560 when live — the standard's #ff5451 now, and `OnAirSignTests` (which pinned the old value) says so. BarOn/BarOff became properties rather than static fields, because a static field would resolve tokens before the Application exists. Verified: DesignTokensTests, GameMeterHonestyTests, NotificationAreaIntegrationTests, OnAirSignTests, SessionTeardownTests — 38 tests green.
This commit is contained in:
@@ -20,10 +20,10 @@ public sealed class NotificationService : INotificationService
|
||||
internal static readonly IReadOnlyDictionary<AppNotificationSeverity, (string BackgroundHex, double ExpirationSeconds)> Cards
|
||||
= new Dictionary<AppNotificationSeverity, (string, double)>
|
||||
{
|
||||
[AppNotificationSeverity.Info] = ("#3a3b52", 4),
|
||||
[AppNotificationSeverity.Success] = ("#1d5c38", 4),
|
||||
[AppNotificationSeverity.Warning] = ("#b8860b", 8),
|
||||
[AppNotificationSeverity.Error] = ("#8f1f1f", 0),
|
||||
[AppNotificationSeverity.Info] = (ThemeBrush.Hex("Brush.InfoContainer"), 4),
|
||||
[AppNotificationSeverity.Success] = (ThemeBrush.Hex("Brush.SuccessContainer"), 4),
|
||||
[AppNotificationSeverity.Warning] = (ThemeBrush.Hex("Brush.WarningContainer"), 8),
|
||||
[AppNotificationSeverity.Error] = (ThemeBrush.Hex("Brush.ErrorContainer"), 0),
|
||||
};
|
||||
|
||||
private readonly NotificationManager _manager = new();
|
||||
@@ -54,7 +54,7 @@ public sealed class NotificationService : INotificationService
|
||||
.Create(title, message)
|
||||
.InArea(AreaName)
|
||||
.WithBackground(NotificationColor.FromHex(backgroundHex))
|
||||
.WithForeground(NotificationColor.FromHex("#FFFFFF"));
|
||||
.WithForeground(NotificationColor.FromHex(ThemeBrush.Hex("Brush.OnSurface")));
|
||||
|
||||
if (severity == AppNotificationSeverity.Error)
|
||||
builder.NeverExpires();
|
||||
|
||||
Reference in New Issue
Block a user