From d25dbf58dce7966f9aa3a1cc780e090e62e1e4d9 Mon Sep 17 00:00:00 2001 From: gramps Date: Fri, 30 Oct 2026 10:34:19 -0700 Subject: [PATCH] design: white ink on any accent fill (on-accent token) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The EDIT button's armed face used on-tertiary (#0b1326 navy) on blue — the creator read it as grey on blue and could not read it. Same problem, latent, on the armed REC/ON-AIR pills, which used the error ink. One rule instead of two exceptions: a saturated accent fill carries WHITE ink. New token on-accent #ffffff, used by the EDIT trigger and RecordPillToggle; on-tertiary stays for large blue surfaces where dark ink is right. UiShellTests pins the EDIT foreground to it. --- Controls/TopBar.xaml | 2 +- DESIGN.md | 3 ++- Themes/Controls.xaml | 2 +- Themes/Tokens.xaml | 1 + ytLive.Tests/UiShellTests.cs | 2 +- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Controls/TopBar.xaml b/Controls/TopBar.xaml index f972fc1..eb137b4 100644 --- a/Controls/TopBar.xaml +++ b/Controls/TopBar.xaml @@ -68,7 +68,7 @@ - + diff --git a/DESIGN.md b/DESIGN.md index 8e90cc5..ceb6ee9 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -43,7 +43,8 @@ | Token | Hex | Role | |---|---|---| | `tertiary` (electric blue) | `#38bdf8` | **The** interactive accent: selection, focus, sliders, primary buttons, transform handles | -| `on-tertiary` | `#0b1326` | Text/icon on a blue fill | +| `on-tertiary` | `#0b1326` | Dark ink, for large blue **surfaces** only | +| `on-accent` | `#ffffff` | Text/icon on any saturated accent fill — the blue EDIT button, the armed REC/ON-AIR pills. One rule: a coloured fill carries white ink | | `primary` (red) | `#ff5451` | **On-air / recording only** — LIVE badge, program border, End/Go Live | | `primary-container` | `#b91a24` | Red pressed/hover state | | `secondary` (amber) | `#ffb95f` | Game audio channel, Super Chat highlight | diff --git a/Themes/Controls.xaml b/Themes/Controls.xaml index 75dc73f..ee70aa7 100644 --- a/Themes/Controls.xaml +++ b/Themes/Controls.xaml @@ -770,7 +770,7 @@ - + diff --git a/Themes/Tokens.xaml b/Themes/Tokens.xaml index e76c7e4..67a1163 100644 --- a/Themes/Tokens.xaml +++ b/Themes/Tokens.xaml @@ -34,6 +34,7 @@ + diff --git a/ytLive.Tests/UiShellTests.cs b/ytLive.Tests/UiShellTests.cs index b11dda7..829f736 100644 --- a/ytLive.Tests/UiShellTests.cs +++ b/ytLive.Tests/UiShellTests.cs @@ -30,7 +30,7 @@ public class UiShellTests // 2. EDIT: resting face differs from the armed face, and the label follows it. Assert.Contains("x:Name=\"EditBody\" Background=\"{StaticResource Brush.SurfaceContainerHigh}\"", topBar); Assert.Contains("", topBar); - Assert.Contains("", topBar); + Assert.Contains("", topBar); // 3. Active scene = orange; live stays red. Assert.Contains("IsStaged}\" Value=\"True\">\n ", strip);