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:
@@ -68,9 +68,9 @@ public partial class MainViewModel
|
||||
|
||||
public string MeterBrush => MeterLevel switch
|
||||
{
|
||||
< 0.6 => "#38bdf8",
|
||||
< 0.8 => "#ffb95f",
|
||||
_ => "#ff5451",
|
||||
< 0.6 => ThemeBrush.Hex("Brush.Meter.Nominal"),
|
||||
< 0.8 => ThemeBrush.Hex("Brush.Meter.Caution"),
|
||||
_ => ThemeBrush.Hex("Brush.Meter.Peak"),
|
||||
};
|
||||
|
||||
/// <summary>Previewes the volume position while the slider is dragged; the
|
||||
@@ -201,7 +201,7 @@ public partial class MainViewModel
|
||||
|
||||
// ─── Mic status dot (the MIC button) ───
|
||||
|
||||
private static readonly SolidColorBrush MicProblemBrush = CreateBrush("#f1c40f");
|
||||
private static SolidColorBrush MicProblemBrush => ThemeBrush.Get("Brush.Secondary");
|
||||
|
||||
/// <summary>Mic connection state, driven by the mixer's MicConnected/MicFailed
|
||||
/// events and the startup device check (see StartMicCaptureAsync).</summary>
|
||||
@@ -283,9 +283,9 @@ public partial class MainViewModel
|
||||
|
||||
public string GameMeterBrush => GameMeterLevel switch
|
||||
{
|
||||
< 0.6 => "#38bdf8",
|
||||
< 0.8 => "#ffb95f",
|
||||
_ => "#ff5451",
|
||||
< 0.6 => ThemeBrush.Hex("Brush.Meter.Nominal"),
|
||||
< 0.8 => ThemeBrush.Hex("Brush.Meter.Caution"),
|
||||
_ => ThemeBrush.Hex("Brush.Meter.Peak"),
|
||||
};
|
||||
|
||||
public void SetGameVolumeAdjusting(bool adjusting)
|
||||
|
||||
Reference in New Issue
Block a user